diff --git a/Core/BookmarkOrFolder.swift b/Core/BookmarkOrFolder.swift deleted file mode 100644 index ccc8cac01d..0000000000 --- a/Core/BookmarkOrFolder.swift +++ /dev/null @@ -1,68 +0,0 @@ -// -// BookmarkOrFolder.swift -// DuckDuckGo -// -// Copyright © 2022 DuckDuckGo. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Foundation - -public class BookmarkOrFolder { - let name: String - - enum BookmarkType: String { - case bookmark - case favorite - case folder - } - - let type: BookmarkType - - let urlString: String? - - var children: [BookmarkOrFolder]? - - var url: URL? { - if let url = self.urlString { - return URL(string: url) - } - - return nil - } - - // There's no guarantee that imported bookmarks will have a URL, this is used to filter them out during import - var isInvalidBookmark: Bool { - switch type { - case .bookmark, .favorite: - return urlString == nil - default: - return false - } - } - - enum CodingKeys: String, CodingKey { - case name - case type - case urlString = "url" - case children - } - - init(name: String, type: BookmarkType, urlString: String?, children: [BookmarkOrFolder]?) { - self.name = name - self.type = type - self.urlString = urlString - self.children = children - } -} diff --git a/Core/BookmarkStore.swift b/Core/BookmarkStore.swift deleted file mode 100644 index ceadb225b5..0000000000 --- a/Core/BookmarkStore.swift +++ /dev/null @@ -1,36 +0,0 @@ -// -// BookmarkStore.swift -// DuckDuckGo -// -// Copyright © 2017 DuckDuckGo. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Foundation - -/* - This is no longer used since the switch to core data for bookmark storage - It is kept for migration from the old store - */ - -public protocol BookmarkStore: AnyObject { - - var bookmarks: [Link] { get set } - var favorites: [Link] { get set } - func addBookmark(_ bookmark: Link) - func addFavorite(_ favorite: Link) - func contains(domain: String) -> Bool - func deleteAllData() - -} diff --git a/Core/BookmarkUserDefaults.swift b/Core/BookmarkUserDefaults.swift deleted file mode 100644 index bd7823fbd8..0000000000 --- a/Core/BookmarkUserDefaults.swift +++ /dev/null @@ -1,96 +0,0 @@ -// -// BookmarkUserDefaults.swift -// DuckDuckGo -// -// Copyright © 2017 DuckDuckGo. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Foundation - -// This is no longer how bookmarks are stored. It is kept only so old data can be migrated -public class BookmarkUserDefaults: BookmarkStore { - - public struct Notifications { - public static let bookmarkStoreDidChange = Notification.Name("com.duckduckgo.bookmarks.storeDidChange") - } - - public struct Constants { - public static let groupName = "\(Global.groupIdPrefix).bookmarks" - } - - private struct Keys { - static let bookmarkKey = "com.duckduckgo.bookmarks.bookmarkKey" - static let favoritesKey = "com.duckduckgo.bookmarks.favoritesKey" - } - - private let userDefaults: UserDefaults - - public init(userDefaults: UserDefaults = UserDefaults(suiteName: Constants.groupName)!) { - self.userDefaults = userDefaults - } - - public var bookmarks: [Link] { - get { - if let data = userDefaults.data(forKey: Keys.bookmarkKey) { - return (try? NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? [Link]) ?? [] - } - return [] - } - set(newBookmarks) { - guard let data = try? NSKeyedArchiver.archivedData(withRootObject: newBookmarks, requiringSecureCoding: false) else { return } - userDefaults.set(data, forKey: Keys.bookmarkKey) - NotificationCenter.default.post(name: Notifications.bookmarkStoreDidChange, object: self) - } - } - - public var favorites: [Link] { - get { - if let data = userDefaults.data(forKey: Keys.favoritesKey) { - return (try? NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? [Link]) ?? [] - } - return [] - } - set(newFavorites) { - guard let data = try? NSKeyedArchiver.archivedData(withRootObject: newFavorites, requiringSecureCoding: false) else { return } - userDefaults.set(data, forKey: Keys.favoritesKey) - NotificationCenter.default.post(name: Notifications.bookmarkStoreDidChange, object: self) - } - } - - public func addBookmark(_ bookmark: Link) { - var newBookmarks = bookmarks - newBookmarks.append(bookmark) - bookmarks = newBookmarks - } - - public func addFavorite(_ favorite: Link) { - var newFavorites = favorites - newFavorites.append(favorite) - favorites = newFavorites - } - - public func contains(domain: String) -> Bool { - let domainMatches: (Link) -> Bool = { - $0.url.host == domain - } - return bookmarks.contains(where: domainMatches) || favorites.contains(where: domainMatches) - } - - public func deleteAllData() { - bookmarks = [] - favorites = [] - } - -} diff --git a/Core/BookmarksCachingSearch.swift b/Core/BookmarksCachingSearch.swift index 67c26f35ac..d117fb119d 100644 --- a/Core/BookmarksCachingSearch.swift +++ b/Core/BookmarksCachingSearch.swift @@ -18,97 +18,154 @@ // import Foundation +import Bookmarks +import Persistence +import CoreData +import Combine -public protocol BookmarksSearchStore { +public protocol BookmarksStringSearch { var hasData: Bool { get } - func bookmarksAndFavorites(completion: @escaping ([Bookmark]) -> Void) + func search(query: String) -> [BookmarksStringSearchResult] } -extension BookmarksCoreDataStorage: BookmarksSearchStore { - public var hasData: Bool { - !topLevelBookmarksItems.isEmpty || !favorites.isEmpty +public protocol BookmarksStringSearchResult { + var objectID: NSManagedObjectID { get } + var title: String { get } + var url: URL { get } + var isFavorite: Bool { get } + func togglingFavorite() -> BookmarksStringSearchResult +} + +public protocol BookmarksSearchStore { + + var dataDidChange: AnyPublisher { get } + + func bookmarksAndFavorites(completion: @escaping ([BookmarksCachingSearch.ScoredBookmark]) -> Void) +} + +public class CoreDataBookmarksSearchStore: BookmarksSearchStore { + + private let bookmarksStore: CoreDataDatabase + + private let subject = PassthroughSubject() + public var dataDidChange: AnyPublisher + + public init(bookmarksStore: CoreDataDatabase) { + self.bookmarksStore = bookmarksStore + self.dataDidChange = self.subject.eraseToAnyPublisher() + + registerForCoreDataStorageNotifications() } - public func bookmarksAndFavorites(completion: @escaping ([Bookmark]) -> Void) { - allBookmarksAndFavoritesFlat(completion: completion) + public func bookmarksAndFavorites(completion: @escaping ([BookmarksCachingSearch.ScoredBookmark]) -> Void) { + + let context = bookmarksStore.makeContext(concurrencyType: .privateQueueConcurrencyType) + + let fetchRequest = NSFetchRequest(entityName: "BookmarkEntity") + fetchRequest.predicate = NSPredicate(format: "%K = false", #keyPath(BookmarkEntity.isFolder)) + fetchRequest.resultType = .dictionaryResultType + fetchRequest.propertiesToFetch = [#keyPath(BookmarkEntity.title), + #keyPath(BookmarkEntity.url), + #keyPath(BookmarkEntity.isFavorite), + #keyPath(BookmarkEntity.objectID)] + + context.perform { + let result = try? context.fetch(fetchRequest) as? [Dictionary] + + let bookmarksAndFavorites = result?.compactMap(BookmarksCachingSearch.ScoredBookmark.init) ?? [] + + DispatchQueue.main.async { + completion(bookmarksAndFavorites) + } + } + } + + private func registerForCoreDataStorageNotifications() { + NotificationCenter.default.addObserver(self, + selector: #selector(coreDataDidSave), + name: NSManagedObjectContext.didSaveObjectsNotification, + object: nil) + } + + @objc func coreDataDidSave(notification: Notification) { + guard let externalContext = notification.object as? NSManagedObjectContext, + externalContext.persistentStoreCoordinator == bookmarksStore.coordinator else { return } + subject.send() } } -public class BookmarksCachingSearch { +public class BookmarksCachingSearch: BookmarksStringSearch { - private class ScoredBookmark { - let bookmark: Bookmark + public struct ScoredBookmark: BookmarksStringSearchResult { + public let objectID: NSManagedObjectID + public let title: String + public let url: URL + public let isFavorite: Bool var score: Int - init(bookmark: Bookmark, score: Int = 0) { - self.bookmark = bookmark - self.score = score + init(objectID: NSManagedObjectID, title: String, url: URL, isFavorite: Bool) { + self.objectID = objectID + self.title = title + self.url = url + self.isFavorite = isFavorite + + if isFavorite { + score = 0 + } else { + score = -1 + } + } + + init?(bookmark: [String: Any]) { + guard let title = bookmark[#keyPath(BookmarkEntity.title)] as? String, + let urlString = bookmark[#keyPath(BookmarkEntity.url)] as? String, + let url = URL(string: urlString), + let objectID = bookmark[#keyPath(BookmarkEntity.objectID)] as? NSManagedObjectID else { + return nil + } + + self.init(objectID: objectID, + title: title, + url: url, + isFavorite: (bookmark[#keyPath(BookmarkEntity.isFavorite)] as? NSNumber)?.boolValue ?? false) + } + + public func togglingFavorite() -> BookmarksStringSearchResult { + return Self.init(objectID: objectID, title: title, url: url, isFavorite: !isFavorite) } } private let bookmarksStore: BookmarksSearchStore + private var cancellable: AnyCancellable? - public init(bookmarksStore: BookmarksSearchStore = BookmarksCoreDataStorage.shared) { + public init(bookmarksStore: BookmarksSearchStore) { self.bookmarksStore = bookmarksStore + self.cancellable = bookmarksStore.dataDidChange.sink { [weak self] _ in + self?.refreshCache() + } + loadCache() - registerForNotifications() } public var hasData: Bool { - return bookmarksStore.hasData + return cachedBookmarksAndFavorites.count > 0 } - private var cachedBookmarksAndFavorites: [Bookmark]? + private var cachedBookmarksAndFavorites = [ScoredBookmark]() private var cacheLoadedCondition = RunLoop.ResumeCondition() private func loadCache() { - bookmarksStore.bookmarksAndFavorites { bookmarks in - self.cachedBookmarksAndFavorites = bookmarks + bookmarksStore.bookmarksAndFavorites { result in + self.cachedBookmarksAndFavorites = result if !self.cacheLoadedCondition.isResolved { self.cacheLoadedCondition.resolve() } - } } - private var bookmarksAndFavorites: [Bookmark] { + private var bookmarksAndFavorites: [ScoredBookmark] { RunLoop.current.run(until: cacheLoadedCondition) - return cachedBookmarksAndFavorites ?? [] - } - - public var bookmarksCount: Int { - let bookmarksAndFavorites = bookmarksAndFavorites - let bookmarksOnly = bookmarksAndFavorites.filter { !$0.isFavorite } - return bookmarksOnly.count - } - - public var favoritesCount: Int { - let bookmarksAndFavorites = bookmarksAndFavorites - let favoritesOnly = bookmarksAndFavorites.filter { $0.isFavorite } - return favoritesOnly.count - } - - public func containsDomain(_ domain: String) -> Bool { - return bookmarksAndFavorites.contains { $0.url?.host == domain } - } - - private func registerForNotifications() { - registerForCoreDataStorageNotifications() - NotificationCenter.default.addObserver(self, - selector: #selector(importDidBegin), - name: BookmarksImporter.Notifications.importDidBegin, - object: nil) - NotificationCenter.default.addObserver(self, - selector: #selector(importDidEnd), - name: BookmarksImporter.Notifications.importDidEnd, - object: nil) - } - - public func registerForCoreDataStorageNotifications() { - NotificationCenter.default.addObserver(self, - selector: #selector(dataDidChange), - name: BookmarksCoreDataStorage.Notifications.dataDidChange, - object: nil) + return cachedBookmarksAndFavorites } public func refreshCache() { @@ -117,46 +174,33 @@ public class BookmarksCachingSearch { loadCache() } - @objc func dataDidChange(notification: Notification) { - refreshCache() - } - - @objc func importDidBegin(notification: Notification) { - // pre-emptively deregisterForNotifications so that bookmarksCachingSearch is not saturated with notification events - // and constantly rebuilding while bookmarks are being imported (bookmark files could be very large) - NotificationCenter.default.removeObserver(self, - name: BookmarksCoreDataStorage.Notifications.dataDidChange, - object: nil) - } - - @objc func importDidEnd(notification: Notification) { - // force refresh of cached data and re-enable notification observer - refreshCache() - registerForCoreDataStorageNotifications() - } - // swiftlint:disable cyclomatic_complexity - private func score(query: String, results: [ScoredBookmark]) { + private func score(query: String, input: [ScoredBookmark]) -> [ScoredBookmark] { + let query = query.lowercased() let tokens = query.split(separator: " ").filter { !$0.isEmpty }.map { String($0).lowercased() } - for entry in results { - guard let title = entry.bookmark.displayTitle?.lowercased() else { continue } + var input = input + var result = [ScoredBookmark]() + + for index in 0.. 1 { var matchesAllTokens = true for token in tokens { - // Match only from the begining of the word to avoid unintuitive matches. + // Match only from the beginning of the word to avoid unintuitive matches. if !title.starts(with: token) && !title.contains(" \(token)") && !domain.starts(with: token) { matchesAllTokens = false break @@ -165,49 +209,42 @@ public class BookmarksCachingSearch { if matchesAllTokens { // Score tokenized matches - entry.score += 10 + input[index].score += 10 // Boost score if first token matches: if let firstToken = tokens.first { // domain - high score boost if domain.starts(with: firstToken) { - entry.score += 300 - } else if title.starts(with: firstToken) { // begining of the title - moderate score boost - entry.score += 50 + input[index].score += 300 + } else if title.starts(with: firstToken) { // beginning of the title - moderate score boost + input[index].score += 50 } } } } else { // High score for matching domain in the URL if let firstToken = tokens.first, domain.starts(with: firstToken) { - entry.score += 300 + input[index].score += 300 } } + if input[index].score > 0 { + result.append(input[index]) + } } + return result } // swiftlint:enable cyclomatic_complexity - public func search(query: String, sortByRelevance: Bool = true, completion: @escaping ([Bookmark]) -> Void) { + public func search(query: String) -> [BookmarksStringSearchResult] { guard hasData else { - completion([]) - return + return [] } let bookmarks = bookmarksAndFavorites - let results: [ScoredBookmark] = bookmarks.map { - let score = $0.isFavorite ? 0 : -1 - return ScoredBookmark(bookmark: $0, score: score) - } let trimmed = query.trimmingWhitespace() - self.score(query: trimmed, results: results) - - var finalResult = results.filter { $0.score > 0 } - if sortByRelevance { - finalResult = finalResult.sorted { $0.score > $1.score } - } - - DispatchQueue.main.async { - completion(finalResult.map { $0.bookmark }) - } + var finalResult = self.score(query: trimmed, input: bookmarks) + finalResult = finalResult.sorted { $0.score > $1.score } + + return finalResult } } diff --git a/Core/BookmarksCoreDataStorage.swift b/Core/BookmarksCoreDataStorage.swift index 6c7c180808..ac440f1967 100644 --- a/Core/BookmarksCoreDataStorage.swift +++ b/Core/BookmarksCoreDataStorage.swift @@ -19,38 +19,15 @@ import Foundation import CoreData +import Bookmarks import os.log -// swiftlint:disable file_length - -public enum BookmarksCoreDataStorageError: Error { - case storeDeallocated - case fetchingExistingItemFailed - case fetchingParentFailed - case insertObjectFailed - case contextSaveError -} - -public typealias BookmarkItemSavedMainThreadCompletion = ((NSManagedObjectID?, BookmarksCoreDataStorageError?) -> Void) -public typealias BookmarkExistsMainThreadCompletion = ((Bool) -> Void) - -public typealias BookmarkItemDeletedBackgroundThreadCompletion = ((Bool, BookmarksCoreDataStorageError?) -> Void) -public typealias BookmarkItemUpdatedBackgroundThreadCompletion = ((Bool, BookmarksCoreDataStorageError?) -> Void) -public typealias BookmarkItemIndexUpdatedBackgroundThreadCompletion = ((Bool, BookmarksCoreDataStorageError?) -> Void) -public typealias BookmarkConvertedBackgroundThreadCompletion = ((Bool, BookmarksCoreDataStorageError?) -> Void) - -public class BookmarksCoreDataStorage { - - public static let shared = BookmarksCoreDataStorage() - - public struct Notifications { - public static let dataDidChange = Notification.Name("com.duckduckgo.app.BookmarksCoreDataDidChange") - } +public class LegacyBookmarksCoreDataStorage { private let storeLoadedCondition = RunLoop.ResumeCondition() internal var persistentContainer: NSPersistentContainer - internal lazy var viewContext: NSManagedObjectContext = { + public lazy var viewContext: NSManagedObjectContext = { RunLoop.current.run(until: storeLoadedCondition) let context = persistentContainer.viewContext context.mergePolicy = NSMergePolicy(merge: .rollbackMergePolicyType) @@ -58,7 +35,7 @@ public class BookmarksCoreDataStorage { return context }() - internal func getTemporaryPrivateContext() -> NSManagedObjectContext { + public func getTemporaryPrivateContext() -> NSManagedObjectContext { RunLoop.current.run(until: storeLoadedCondition) let context = persistentContainer.newBackgroundContext() context.mergePolicy = NSMergePolicy(merge: .mergeByPropertyObjectTrumpMergePolicyType) @@ -77,15 +54,54 @@ public class BookmarksCoreDataStorage { return managedObjectModel } - private static var storeDescription: NSPersistentStoreDescription { - let containerURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: Constants.groupName)! - let storeURL = containerURL.appendingPathComponent("\(Constants.databaseName).sqlite") + private var storeDescription: NSPersistentStoreDescription { return NSPersistentStoreDescription(url: storeURL) } - public init() { - persistentContainer = NSPersistentContainer(name: Constants.databaseName, managedObjectModel: BookmarksCoreDataStorage.managedObjectModel) - persistentContainer.persistentStoreDescriptions = [BookmarksCoreDataStorage.storeDescription] + public static var defaultStoreURL: URL { + let containerURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: BookmarksDatabase.Constants.bookmarksGroupID)! + return containerURL.appendingPathComponent("\(Constants.databaseName).sqlite") + } + + private let storeURL: URL + + public init?(storeURL: URL = defaultStoreURL, createIfNeeded: Bool = false) { + if !FileManager.default.fileExists(atPath: storeURL.path), + createIfNeeded == false { + return nil + } + + self.storeURL = storeURL + + persistentContainer = NSPersistentContainer(name: Constants.databaseName, managedObjectModel: Self.managedObjectModel) + persistentContainer.persistentStoreDescriptions = [storeDescription] + } + + public func removeStore() { + + typealias StoreInfo = (url: URL?, type: String) + + do { + var storesToDelete = [StoreInfo]() + for store in persistentContainer.persistentStoreCoordinator.persistentStores { + storesToDelete.append((url: store.url, type: store.type)) + try persistentContainer.persistentStoreCoordinator.remove(store) + } + + for (url, type) in storesToDelete { + if let url = url { + try persistentContainer.persistentStoreCoordinator.destroyPersistentStore(at: url, + ofType: type) + } + } + } catch { + Pixel.fire(pixel: .bookmarksMigrationCouldNotRemoveOldStore, + error: error) + } + + try? FileManager.default.removeItem(atPath: storeURL.path) + try? FileManager.default.removeItem(atPath: storeURL.path.appending("-wal")) + try? FileManager.default.removeItem(atPath: storeURL.path.appending("-shm")) } public func loadStoreAndCaches(andMigrate handler: @escaping (NSManagedObjectContext) -> Void = { _ in }) { @@ -95,21 +111,12 @@ public class BookmarksCoreDataStorage { RunLoop.current.run(until: storeLoadedCondition) cacheReadOnlyTopLevelBookmarksFolder() cacheReadOnlyTopLevelFavoritesFolder() - - NotificationCenter.default.addObserver(self, - selector: #selector(contextDidSave), - name: .NSManagedObjectContextDidSave, - object: nil) - NotificationCenter.default.addObserver(self, - selector: #selector(objectsDidChange), - name: .NSManagedObjectContextObjectsDidChange, - object: nil) } internal func loadStore(andMigrate handler: @escaping (NSManagedObjectContext) -> Void = { _ in }) { - persistentContainer = NSPersistentContainer(name: Constants.databaseName, managedObjectModel: BookmarksCoreDataStorage.managedObjectModel) - persistentContainer.persistentStoreDescriptions = [BookmarksCoreDataStorage.storeDescription] + persistentContainer = NSPersistentContainer(name: Constants.databaseName, managedObjectModel: Self.managedObjectModel) + persistentContainer.persistentStoreDescriptions = [storeDescription] persistentContainer.loadPersistentStores { _, error in if let error = error { fatalError("Unable to load persistent stores: \(error)") @@ -118,7 +125,7 @@ public class BookmarksCoreDataStorage { let context = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType) context.persistentStoreCoordinator = self.persistentContainer.persistentStoreCoordinator context.name = "Migration" - context.perform { + context.performAndWait { handler(context) self.storeLoadedCondition.resolve() } @@ -147,7 +154,7 @@ public class BookmarksCoreDataStorage { } // MARK: public interface -extension BookmarksCoreDataStorage { +extension LegacyBookmarksCoreDataStorage { public var topLevelBookmarksFolder: BookmarkFolderManagedObject? { guard let folder = cachedReadOnlyTopLevelBookmarksFolder else { @@ -169,601 +176,11 @@ extension BookmarksCoreDataStorage { } return folder.children?.array as? [BookmarkItemManagedObject] ?? [] } - - public var favorites: [BookmarkManagedObject] { - return readOnlyTopLevelFavoritesItems().map { - if let fav = $0 as? BookmarkManagedObject { - return fav - } else { - fatalError("Favourites shouldn't contain folders") - } - } - } - - public func contains(url: URL, completion: @escaping BookmarkExistsMainThreadCompletion) { - containsBookmark(url: url, searchType: .bookmarksAndFavorites, completion: completion) - } - - public func containsBookmark(url: URL, completion: @escaping BookmarkExistsMainThreadCompletion) { - containsBookmark(url: url, searchType: .bookmarksOnly, completion: completion) - } - - public func containsFavorite(url: URL, completion: @escaping BookmarkExistsMainThreadCompletion) { - containsBookmark(url: url, searchType: .favoritesOnly, completion: completion) - } - - public func bookmark(forURL url: URL, completion: @escaping (BookmarkManagedObject?) -> Void) { - viewContext.perform { - - let fetchRequest = NSFetchRequest(entityName: Constants.bookmarkClassName) - fetchRequest.predicate = NSPredicate(format: "%K == %@ AND %K == false", - #keyPath(BookmarkManagedObject.url), - url as NSURL, - #keyPath(BookmarkManagedObject.isFavorite)) - - let results = try? self.viewContext.fetch(fetchRequest) - completion(results?.first) - } - } - - public func bookmark(forURL url: URL) async -> BookmarkManagedObject? { - return await withCheckedContinuation { continuation in - bookmark(forURL: url) { bookmarkManagedObject in - continuation.resume(returning: bookmarkManagedObject) - } - } - } - - public func favorite(forURL url: URL, completion: @escaping (BookmarkManagedObject?) -> Void) { - viewContext.perform { - - let fetchRequest = NSFetchRequest(entityName: Constants.bookmarkClassName) - fetchRequest.predicate = NSPredicate(format: "%K == %@ AND %K == true", - #keyPath(BookmarkManagedObject.url), - url as NSURL, - #keyPath(BookmarkManagedObject.isFavorite)) - - let results = try? self.viewContext.fetch(fetchRequest) - completion(results?.first) - } - } - - public func favorite(forURL url: URL) async throws -> BookmarkManagedObject? { - return await withCheckedContinuation { continuation in - favorite(forURL: url) { bookmarkManagedObject in - continuation.resume(returning: bookmarkManagedObject) - } - } - } - - // Just used for favicon deletion and search - public func allBookmarksAndFavoritesFlat(completion: @escaping ([BookmarkManagedObject]) -> Void) { - viewContext.perform { [weak self] in - - let fetchRequest: NSFetchRequest = BookmarkManagedObject.fetchRequest() - fetchRequest.returnsObjectsAsFaults = false - - guard let results = try? self?.viewContext.fetch(fetchRequest) else { - assertionFailure("Error fetching Bookmarks") - return - } - - completion(results) - } - } - - public func allBookmarksAndFavoritesFlat() async -> [BookmarkManagedObject] { - return await withCheckedContinuation { continuation in - allBookmarksAndFavoritesFlat { objects in - return continuation.resume(returning: objects) - } - } - } - - public func saveNewFolder(withTitle title: String, parentID: NSManagedObjectID, completion: BookmarkItemSavedMainThreadCompletion? = nil) { - createFolder(title: title, isFavorite: false, parentID: parentID, completion: completion) - } - - public func saveNewFolder(withTitle: String, parentID: NSManagedObjectID) async throws -> NSManagedObjectID { - return try await withCheckedThrowingContinuation { continuation in - saveNewFolder(withTitle: withTitle, parentID: parentID) { managedObjectID, error in - if let error = error { - assertionFailure("Saving folder failed") - return continuation.resume(throwing: error) - } - guard let managedObjectID = managedObjectID else { - assertionFailure("Saving folder failed") - return continuation.resume(throwing: BookmarksCoreDataStorageError.contextSaveError) - } - - return continuation.resume(returning: managedObjectID) - } - } - } - - public func saveNewFavorite(withTitle title: String, url: URL, completion: BookmarkItemSavedMainThreadCompletion? = nil) { - createBookmark(url: url, title: title, isFavorite: true, completion: completion) - } - - public func saveNewFavorite(withTitle title: String, - url: URL) async throws -> NSManagedObjectID { - return try await withCheckedThrowingContinuation { continuation in - saveNewFavorite(withTitle: title, url: url) { managedObjectID, error in - if let error = error { - assertionFailure("Saving favorite failed") - return continuation.resume(throwing: error) - } - guard let managedObjectID = managedObjectID else { - assertionFailure("Saving favorite failed") - return continuation.resume(throwing: BookmarksCoreDataStorageError.contextSaveError) - } - - return continuation.resume(returning: managedObjectID) - } - } - } - - public func saveNewBookmark(withTitle title: String, - url: URL, - parentID: NSManagedObjectID?, - completion: BookmarkItemSavedMainThreadCompletion? = nil) { - - createBookmark(url: url, title: title, isFavorite: false, parentID: parentID, completion: completion) - } - - public func saveNewBookmark(withTitle title: String, - url: URL, - parentID: NSManagedObjectID?) async throws -> NSManagedObjectID { - return try await withCheckedThrowingContinuation { continuation in - saveNewBookmark(withTitle: title, url: url, parentID: parentID) { managedObjectID, error in - if let error = error { - assertionFailure("Saving bookmark failed") - return continuation.resume(throwing: error) - } - guard let managedObjectID = managedObjectID else { - assertionFailure("Saving bookmark failed") - return continuation.resume(throwing: BookmarksCoreDataStorageError.contextSaveError) - } - - return continuation.resume(returning: managedObjectID) - } - } - } - - // Since we'll never need to update children at the same time, we only support changing the title and parent - public func update(folderID: NSManagedObjectID, - newTitle: String, - newParentID: NSManagedObjectID, - completion: BookmarkItemUpdatedBackgroundThreadCompletion? = nil) { - - let privateContext = getTemporaryPrivateContext() - privateContext.perform { - - let mo = try? privateContext.existingObject(with: folderID) - guard let folder = mo as? BookmarkFolderManagedObject else { - assertionFailure("Failed to get folder") - completion?(false, .fetchingExistingItemFailed) - return - } - - if folder.parent?.objectID != newParentID { - let parentMO = try? privateContext.existingObject(with: newParentID) - guard let newParentMO = parentMO as? BookmarkFolderManagedObject else { - assertionFailure("Failed to get new parent") - completion?(false, .fetchingParentFailed) - return - } - - folder.parent = newParentMO - } - folder.title = newTitle - - do { - try privateContext.save() - } catch { - assertionFailure("Updating folder failed") - completion?(false, .contextSaveError) - return - } - completion?(true, nil) - } - } - - public func update(favoriteID: NSManagedObjectID, - newTitle: String, - newURL: URL, - completion: BookmarkItemUpdatedBackgroundThreadCompletion? = nil) { - - let privateContext = getTemporaryPrivateContext() - privateContext.perform { - - let mo = try? privateContext.existingObject(with: favoriteID) - guard let favorite = mo as? BookmarkManagedObject else { - assertionFailure("Failed to get favorite") - completion?(false, .fetchingExistingItemFailed) - return - } - - favorite.title = newTitle - favorite.url = newURL - - do { - try privateContext.save() - } catch { - assertionFailure("Updating favorite failed") - completion?(false, .contextSaveError) - return - } - completion?(true, nil) - } - } - - public func update(bookmarkID: NSManagedObjectID, - newTitle: String, - newURL: URL, - newParentID: NSManagedObjectID, - completion: BookmarkItemUpdatedBackgroundThreadCompletion? = nil) { - - let privateContext = getTemporaryPrivateContext() - privateContext.perform { - - let mo = try? privateContext.existingObject(with: bookmarkID) - guard let bookmark = mo as? BookmarkManagedObject else { - assertionFailure("Failed to get bookmark") - completion?(false, .fetchingExistingItemFailed) - return - } - - if bookmark.parent?.objectID != newParentID { - let parentMO = try? privateContext.existingObject(with: newParentID) - guard let newParentMO = parentMO as? BookmarkFolderManagedObject else { - assertionFailure("Failed to get new parent") - completion?(false, .fetchingParentFailed) - return - } - - bookmark.parent = newParentMO - } - - bookmark.title = newTitle - bookmark.url = newURL - - do { - try privateContext.save() - } catch { - assertionFailure("Updating bookmark failed") - completion?(false, .contextSaveError) - return - } - completion?(true, nil) - } - } - - public func updateIndex(of bookmarkItemID: NSManagedObjectID, - newIndex: Int, - completion: BookmarkItemIndexUpdatedBackgroundThreadCompletion? = nil) { - - let privateContext = getTemporaryPrivateContext() - privateContext.perform { - - let mo = try? privateContext.existingObject(with: bookmarkItemID) - guard let item = mo as? BookmarkItemManagedObject else { - assertionFailure("Failed to get item") - completion?(false, .fetchingExistingItemFailed) - return - } - - let parent = item.parent - parent?.removeFromChildren(item) - parent?.insertIntoChildren(item, at: newIndex) - - do { - try privateContext.save() - } catch { - assertionFailure("Updating item failed") - completion?(false, .contextSaveError) - return - } - completion?(true, nil) - } - } - - public func convertFavoriteToBookmark(_ favoriteID: NSManagedObjectID, - newIndex: Int, - completion: BookmarkConvertedBackgroundThreadCompletion? = nil) { - - swapIsFavorite(favoriteID, newIndex: newIndex, completion: completion) - } - - public func convertBookmarkToFavorite(_ bookmarkID: NSManagedObjectID, - newIndex: Int, - completion: BookmarkConvertedBackgroundThreadCompletion? = nil) { - - swapIsFavorite(bookmarkID, newIndex: newIndex, completion: completion) - } - - public func delete(_ bookmarkItemID: NSManagedObjectID, completion: BookmarkItemDeletedBackgroundThreadCompletion? = nil) { - let privateContext = getTemporaryPrivateContext() - privateContext.perform { - - let mo = try? privateContext.existingObject(with: bookmarkItemID) - guard let item = mo as? BookmarkItemManagedObject else { - assertionFailure("Failed to get item") - completion?(false, .fetchingExistingItemFailed) - return - } - - privateContext.delete(item) - - do { - try privateContext.save() - } catch { - assertionFailure("Updating item failed") - completion?(false, .contextSaveError) - return - } - - completion?(true, nil) - } - } - - // MARK: Import Bookmarks - public func importBookmarks(_ bookmarks: [BookmarkOrFolder]) async throws { - guard let topLevelBookmarksFolder = topLevelBookmarksFolder else { - throw BookmarksCoreDataStorageError.fetchingExistingItemFailed - } - - try await recursivelyCreateEntities(from: bookmarks, - parent: topLevelBookmarksFolder, - in: viewContext) - } - private func recursivelyCreateEntities(from bookmarks: [BookmarkOrFolder], - parent: BookmarkItemManagedObject, - in context: NSManagedObjectContext) async throws { - for bookmarkOrFolder in bookmarks { - if bookmarkOrFolder.isInvalidBookmark { - continue - } - - switch bookmarkOrFolder.type { - case .folder: - let folderManagedObjectID = try await saveNewFolder(withTitle: bookmarkOrFolder.name, parentID: parent.objectID) - if let children = bookmarkOrFolder.children, let bookmarkFolderManagedObject = await getFolder(objectID: folderManagedObjectID) { - try await recursivelyCreateEntities(from: children, parent: bookmarkFolderManagedObject, in: context) - } - case .favorite: - if let url = bookmarkOrFolder.url, await !containsBookmark(url: url, searchType: .favoritesOnly) { - _ = try await saveNewFavorite(withTitle: bookmarkOrFolder.name, url: url) - } - case .bookmark: - if let url = bookmarkOrFolder.url { - if parent == topLevelBookmarksFolder, - await containsBookmark(url: url, searchType: .topLevelBookmarksOnly, parentId: parent.objectID) { - continue - } else { - _ = try await saveNewBookmark(withTitle: bookmarkOrFolder.name, url: url, parentID: parent.objectID) - } - } - } - } - } -} - -// MARK: Public interface for widget -extension BookmarksCoreDataStorage { - - // Widget doesn't need to care about caches - public func loadStoreOnlyForWidget() { - loadStore() - } - - public func favoritesUncachedForWidget(completion: @escaping ([BookmarkManagedObject]) -> Void) { - Task { - guard await hasTopLevelFolder() else { - completion([]) - return - } - - getTopLevelFolder(isFavorite: true, onContext: viewContext) { folder in - let children = folder.children?.array as? [BookmarkItemManagedObject] ?? [] - let favorites: [BookmarkManagedObject] = children.map { - if let fav = $0 as? BookmarkManagedObject { - return fav - } else { - fatalError("Favourites shouldn't contain folders") - } - } - completion(favorites) - } - } - } - - private func hasTopLevelFolder() async -> Bool { - return await withCheckedContinuation { continuation in - viewContext.perform { [weak self] in - let fetchRequest = NSFetchRequest(entityName: Constants.folderClassName) - let count = (try? self?.viewContext.count(for: fetchRequest)) ?? 0 - continuation.resume(returning: count > 0) - } - } - } -} - -// MARK: respond to data updates -extension BookmarksCoreDataStorage { - - @objc func contextDidSave(notification: Notification) { - guard let sender = notification.object as? NSManagedObjectContext else { return } - - if sender.name == Constants.privateContextName { - viewContext.perform { [weak self] in - self?.viewContext.mergeChanges(fromContextDidSave: notification) - } - } - } - - @objc func objectsDidChange(notification: Notification) { - guard let sender = notification.object as? NSManagedObjectContext else { return } - - if sender == viewContext { - NotificationCenter.default.post(name: BookmarksCoreDataStorage.Notifications.dataDidChange, object: nil) - } - } } // MARK: private -extension BookmarksCoreDataStorage { - - private func swapIsFavorite(_ bookmarkID: NSManagedObjectID, newIndex: Int, completion: BookmarkConvertedBackgroundThreadCompletion? = nil) { - let privateContext = getTemporaryPrivateContext() - privateContext.perform { [weak self] in - guard let self = self else { - completion?(false, .storeDeallocated) - return - } - - let mo = try? privateContext.existingObject(with: bookmarkID) - guard let bookmark = mo as? BookmarkManagedObject else { - assertionFailure("Failed to get item") - completion?(false, .fetchingExistingItemFailed) - return - } - - self.getTopLevelFolder(isFavorite: !bookmark.isFavorite, onContext: privateContext) { newParent in - - bookmark.isFavorite = !bookmark.isFavorite - newParent.insertIntoChildren(bookmark, at: newIndex) - - do { - try privateContext.save() - } catch { - assertionFailure("Updating item failed") - completion?(false, .contextSaveError) - return - } - completion?(true, nil) - } - } - } - - internal enum SearchType { - case bookmarksOnly - case favoritesOnly - case bookmarksAndFavorites - case topLevelBookmarksOnly - } - - private func containsBookmark(url: URL, - searchType: SearchType, - parentId: NSManagedObjectID? = nil, - completion: @escaping BookmarkExistsMainThreadCompletion) { - viewContext.perform { - let fetchRequest = NSFetchRequest(entityName: Constants.bookmarkClassName) - fetchRequest.fetchLimit = 1 - - switch searchType { - case .bookmarksOnly: - fetchRequest.predicate = NSPredicate(format: "%K == %@ AND %K == false", - #keyPath(BookmarkManagedObject.url), - url as NSURL, - #keyPath(BookmarkManagedObject.isFavorite)) - case .favoritesOnly: - fetchRequest.predicate = NSPredicate(format: "%K == %@ AND %K == true", - #keyPath(BookmarkManagedObject.url), - url as NSURL, - #keyPath(BookmarkManagedObject.isFavorite)) - case .bookmarksAndFavorites: - fetchRequest.predicate = NSPredicate(format: "%K == %@", - #keyPath(BookmarkManagedObject.url), - url as NSURL) - case .topLevelBookmarksOnly: - guard let parentId = parentId else { - completion(false) - return - } - fetchRequest.predicate = NSPredicate(format: "%K == %@ AND %K == false AND %K == %@", - #keyPath(BookmarkManagedObject.url), - url as NSURL, - #keyPath(BookmarkManagedObject.isFavorite), - #keyPath(BookmarkManagedObject.parent), - parentId) - } - - guard let result = try? self.viewContext.count(for: fetchRequest) else { - completion(false) - return - } - completion(result > 0) - } - } - - internal func containsBookmark(url: URL, searchType: SearchType, parentId: NSManagedObjectID? = nil) async -> Bool { - return await withCheckedContinuation({ continuation in - containsBookmark(url: url, searchType: searchType, parentId: parentId) { exists in - return continuation.resume(returning: exists) - } - }) - } - - // MainActor added - crashes when called from Favicons without using main thread - @MainActor func containsDomain(_ domain: String) async -> Bool { - let bookmarks = await allBookmarksAndFavoritesFlat() - return bookmarks.first(where: { $0.url?.host == domain }) != nil - } - - private func getTopLevelFolder(isFavorite: Bool, - onContext context: NSManagedObjectContext, - completion: @escaping (BookmarkFolderManagedObject) -> Void) { - - context.perform { - - let fetchRequest = NSFetchRequest(entityName: Constants.folderClassName) - fetchRequest.predicate = NSPredicate(format: "%K == nil AND %K == %@", - #keyPath(BookmarkManagedObject.parent), - #keyPath(BookmarkManagedObject.isFavorite), - NSNumber(value: isFavorite)) - - let results = try? context.fetch(fetchRequest) - guard (results?.count ?? 0) <= 1 else { - fatalError("There shouldn't be an orphaned folder") - } - - guard let folder = results?.first else { - fatalError("Top level folder missing. isFavorite: \(isFavorite)") - } - completion(folder) - } - } - - func getFolder(objectID: NSManagedObjectID, - onContext context: NSManagedObjectContext, - completion: @escaping (BookmarkFolderManagedObject?) -> Void) { - - context.perform { - - let fetchRequest = NSFetchRequest(entityName: Constants.folderClassName) - fetchRequest.predicate = NSPredicate(format: "SELF == %@", objectID) - - let results = try? context.fetch(fetchRequest) - - guard let folder = results?.first else { - os_log("folder not found") - completion(nil) - return - } - - completion(folder) - } - } - - func getFolder(objectID: NSManagedObjectID) async -> BookmarkFolderManagedObject? { - return await withCheckedContinuation { continuation in - getFolder(objectID: objectID, onContext: viewContext) { bookmarkFolderManagedObject in - continuation.resume(returning: bookmarkFolderManagedObject) - } - } - } +extension LegacyBookmarksCoreDataStorage { internal enum TopLevelFolderType { case favorite @@ -829,111 +246,11 @@ extension BookmarksCoreDataStorage { } self.cachedReadOnlyTopLevelFavoritesFolder = folder } - - private func readOnlyTopLevelFavoritesItems() -> [BookmarkItem] { - guard let folder = cachedReadOnlyTopLevelFavoritesFolder else { - return [] - } - return folder.children?.array as? [BookmarkItem] ?? [] - } -} -// MARK: creation -extension BookmarksCoreDataStorage { - - private func createBookmark(url: URL, - title: String, - isFavorite: Bool, - parentID: NSManagedObjectID? = nil, - completion: BookmarkItemSavedMainThreadCompletion? = nil) { - - let privateContext = getTemporaryPrivateContext() - privateContext.perform { [weak self] in - guard let self = self else { - assertionFailure("self nil when creating bookmark") - completion?(nil, .storeDeallocated) - return - } - - let managedObject = NSEntityDescription.insertNewObject(forEntityName: Constants.bookmarkClassName, into: privateContext) - guard let bookmark = managedObject as? BookmarkManagedObject else { - assertionFailure("Inserting new bookmark failed") - completion?(nil, .insertObjectFailed) - return - } - bookmark.url = url - bookmark.title = title - bookmark.isFavorite = isFavorite - - self.updateParentAndSave(of: bookmark, parentID: parentID, context: privateContext, completion: completion) - } - } - - private func createFolder(title: String, - isFavorite: Bool, - parentID: NSManagedObjectID? = nil, - completion: BookmarkItemSavedMainThreadCompletion? = nil) { - - let privateContext = getTemporaryPrivateContext() - privateContext.perform { [weak self] in - guard let self = self else { - assertionFailure("self nil when creating folder") - completion?(nil, .storeDeallocated) - return - } - - let managedObject = NSEntityDescription.insertNewObject(forEntityName: Constants.folderClassName, into: privateContext) - guard let folder = managedObject as? BookmarkFolderManagedObject else { - assertionFailure("Inserting new folder failed") - completion?(nil, .insertObjectFailed) - return - } - folder.title = title - folder.isFavorite = isFavorite - - self.updateParentAndSave(of: folder, parentID: parentID, context: privateContext, completion: completion) - } - } - - private func updateParentAndSave(of item: BookmarkItemManagedObject, - parentID: NSManagedObjectID?, - context: NSManagedObjectContext, - completion: BookmarkItemSavedMainThreadCompletion? = nil) { - - func updateParentAndSave(parent: BookmarkFolderManagedObject) { - item.parent = parent - - do { - try context.save() - } catch { - assertionFailure("Saving item failed") - completion?(nil, .contextSaveError) - return - } - - DispatchQueue.main.async { - completion?(item.objectID, nil) - } - } - - if let parentID = parentID { - let parentMO = try? context.existingObject(with: parentID) - guard let newParentMO = parentMO as? BookmarkFolderManagedObject else { - assertionFailure("Failed to get new parent") - completion?(nil, .fetchingParentFailed) - return - } - updateParentAndSave(parent: newParentMO) - } else { - self.getTopLevelFolder(isFavorite: item.isFavorite, onContext: context) { parent in - updateParentAndSave(parent: parent) - } - } - } } // MARK: Constants -extension BookmarksCoreDataStorage { +extension LegacyBookmarksCoreDataStorage { enum Constants { static let privateContextName = "EditBookmarksAndFolders" static let viewContextName = "ViewBookmarksAndFolders" @@ -942,83 +259,14 @@ extension BookmarksCoreDataStorage { static let folderClassName = "BookmarkFolderManagedObject" static let databaseName = "BookmarksAndFolders" - - static let groupName = "\(Global.groupIdPrefix).bookmarks" } } -public class BookmarksCoreDataStorageMigration { - - @UserDefaultsWrapper(key: .bookmarksMigratedFromUserDefaultsToCD, defaultValue: false) - private static var migratedFromUserDefaults: Bool - - /// Migrates bookmark data to Core Data. - /// - /// - Returns: A boolean representing whether the migration took place. If the migration has already happened and this function is called, it returns `false`. - public static func migrate(fromBookmarkStore bookmarkStore: BookmarkStore, context: NSManagedObjectContext) -> Bool { - if migratedFromUserDefaults { - return false - } - - context.performAndWait { - let countRequest = NSFetchRequest(entityName: BookmarksCoreDataStorage.Constants.folderClassName) - countRequest.fetchLimit = 1 - let result = (try? context.count(for: countRequest)) ?? 0 - - guard result == 0 else { - // Already migrated - return - } - - let favoritesFolder = BookmarksCoreDataStorage.rootFavoritesFolderManagedObject(context) - let bookmarksFolder = BookmarksCoreDataStorage.rootFolderManagedObject(context) - - func migrateLink(_ link: Link, isFavorite: Bool) { - let managedObject = NSEntityDescription.insertNewObject( - forEntityName: BookmarksCoreDataStorage.Constants.bookmarkClassName, - into: context) - guard let bookmark = managedObject as? BookmarkManagedObject else { - assertionFailure("Inserting new bookmark failed") - return - } - bookmark.url = link.url - bookmark.title = link.title - bookmark.isFavorite = isFavorite - - let folder = isFavorite ? favoritesFolder : bookmarksFolder - bookmark.parent = folder - } - - let favorites = bookmarkStore.favorites - for favorite in favorites { - migrateLink(favorite, isFavorite: true) - } - - let bookmarks = bookmarkStore.bookmarks - for bookmark in bookmarks { - migrateLink(bookmark, isFavorite: false) - } - - do { - try context.save() - } catch { - fatalError("Error creating top level bookmark folders") - } - - bookmarkStore.deleteAllData() - } - - migratedFromUserDefaults = true - return true - } -} - - // MARK: - CoreData structure fixer // https://app.asana.com/0/414709148257752/1202779945035904/f // This is a temporary workaround, do not use the following functions for anything else -extension BookmarksCoreDataStorage { +extension LegacyBookmarksCoreDataStorage { private func deleteExtraOrphanedFolders(_ orphanedFolders: [BookmarkFolderManagedObject], onContext context: NSManagedObjectContext, @@ -1083,9 +331,9 @@ extension BookmarksCoreDataStorage { // Create root folder for the specified folder type let bookmarksFolder: BookmarkFolderManagedObject if folderType == .favorite { - bookmarksFolder = BookmarksCoreDataStorage.rootFavoritesFolderManagedObject(context) + bookmarksFolder = Self.rootFavoritesFolderManagedObject(context) } else { - bookmarksFolder = BookmarksCoreDataStorage.rootFolderManagedObject(context) + bookmarksFolder = Self.rootFolderManagedObject(context) } // Assign all bookmarks to the parent folder @@ -1121,5 +369,3 @@ extension BookmarksCoreDataStorage { } } } - -// swiftlint:enable file_length diff --git a/Core/BookmarksExporter.swift b/Core/BookmarksExporter.swift index a2d0468d2a..ca46e31704 100644 --- a/Core/BookmarksExporter.swift +++ b/Core/BookmarksExporter.swift @@ -18,12 +18,19 @@ // import Foundation +import Bookmarks +import Persistence +public enum BookmarksExporterError: Error { + case brokenDatabaseStructure +} + +@MainActor public struct BookmarksExporter { - private(set) var coreDataStorage: BookmarksCoreDataStorage + private(set) var coreDataStorage: CoreDataDatabase - public init(coreDataStore: BookmarksCoreDataStorage = BookmarksCoreDataStorage.shared) { + public init(coreDataStore: CoreDataDatabase) { coreDataStorage = coreDataStore } @@ -33,29 +40,30 @@ public struct BookmarksExporter { func exportBookmarksToContent() throws -> String { var content = [Template.header] - let topLevelBookmarksAndFavorites = coreDataStorage.favorites + coreDataStorage.topLevelBookmarksItems + + let context = coreDataStorage.makeContext(concurrencyType: .mainQueueConcurrencyType) + guard let rootFolder = BookmarkUtils.fetchRootFolder(context) else { + throw BookmarksExporterError.brokenDatabaseStructure + } + + let topLevelBookmarksAndFavorites = rootFolder.childrenArray content.append(contentsOf: export(topLevelBookmarksAndFavorites, level: 2)) content.append(Template.footer) return content.joined() } - func export(_ entities: [BookmarkItemManagedObject], level: Int) -> [String] { + func export(_ entities: [BookmarkEntity], level: Int) -> [String] { var content = [String]() for entity in entities { - if let bookmark = entity as? Bookmark { - content.append(Template.bookmark(level: level, - title: bookmark.displayTitle!.escapedForHTML, - url: bookmark.url!, - isFavorite: bookmark.isFavorite)) - } - - if let folder = entity as? BookmarkFolder { - content.append(Template.openFolder(level: level, named: folder.title!)) - if let arrayChildren: [BookmarkItemManagedObject] = folder.children?.array as? [BookmarkItemManagedObject] { - content.append(contentsOf: export(arrayChildren, level: level + 1)) - } - + if entity.isFolder { + content.append(Template.openFolder(level: level, named: entity.title!)) + content.append(contentsOf: export(entity.childrenArray, level: level + 1)) content.append(Template.closeFolder(level: level)) + } else { + content.append(Template.bookmark(level: level, + title: entity.title!.escapedForHTML, + url: entity.url!, + isFavorite: entity.isFavorite)) } } return content @@ -85,9 +93,9 @@ extension BookmarksExporter { """ - static func bookmark(level: Int, title: String, url: URL, isFavorite: Bool = false) -> String { + static func bookmark(level: Int, title: String, url: String, isFavorite: Bool = false) -> String { """ - \(String.indent(by: level))
\(title) + \(String.indent(by: level))
\(title) """ } diff --git a/Core/BookmarksImporter.swift b/Core/BookmarksImporter.swift index 85dda4e54d..0a23614b09 100644 --- a/Core/BookmarksImporter.swift +++ b/Core/BookmarksImporter.swift @@ -19,6 +19,8 @@ import Foundation import SwiftSoup +import Bookmarks +import Persistence import os.log public enum BookmarksImportError: Error { @@ -29,6 +31,7 @@ public enum BookmarksImportError: Error { case unknown } +@MainActor final public class BookmarksImporter { public enum Notifications { @@ -37,10 +40,10 @@ final public class BookmarksImporter { } private(set) var importedBookmarks: [BookmarkOrFolder] = [] - private(set) var coreDataStorage: BookmarksCoreDataStorage + private(set) var coreDataStorage: BookmarkCoreDataImporter - public init(coreDataStore: BookmarksCoreDataStorage = BookmarksCoreDataStorage.shared) { - coreDataStorage = coreDataStore + public init(coreDataStore: CoreDataDatabase) { + coreDataStorage = BookmarkCoreDataImporter(database: coreDataStore) } func isDocumentInSafariFormat(_ document: Document) -> Bool { @@ -203,7 +206,7 @@ final public class BookmarksImporter { func saveBookmarks(_ bookmarks: [BookmarkOrFolder]) async throws { do { - try await coreDataStorage.importBookmarks(importedBookmarks) + try await coreDataStorage.importBookmarks(bookmarks) } catch { os_log("Failed to save imported bookmarks to core data %s", type: .debug, error.localizedDescription) throw BookmarksImportError.saveFailure diff --git a/Core/BookmarksModelsErrorHandling.swift b/Core/BookmarksModelsErrorHandling.swift new file mode 100644 index 0000000000..85217a7a8f --- /dev/null +++ b/Core/BookmarksModelsErrorHandling.swift @@ -0,0 +1,116 @@ +// +// BookmarksModelsErrorHandling.swift +// DuckDuckGo +// +// Copyright © 2022 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation +import Bookmarks +import Common +import Persistence +import CoreData + +public class BookmarksModelsErrorHandling: EventMapping { + + // swiftlint:disable:next cyclomatic_complexity + init() { + super.init { event, error, _, _ in + let domainEvent: Pixel.Event + var params = [String: String]() + switch event { + + case .bookmarkFolderExpected: + domainEvent = .bookmarkFolderExpected + case .bookmarksListIndexNotMatchingBookmark: + domainEvent = .bookmarksListIndexNotMatchingBookmark + case .bookmarksListMissingFolder: + domainEvent = .bookmarksListMissingFolder + case .editorNewParentMissing: + domainEvent = .editorNewParentMissing + case .favoritesListIndexNotMatchingBookmark: + domainEvent = .favoritesListIndexNotMatchingBookmark + case .fetchingRootItemFailed(let model): + domainEvent = .fetchingRootItemFailed(model) + case .indexOutOfRange(let model): + domainEvent = .indexOutOfRange(model) + case .saveFailed(let model): + domainEvent = .saveFailed(model) + + if let error = error as? NSError { + let processedErrors = CoreDataErrorsParser.parse(error: error) + params = processedErrors.errorPixelParameters + } + + case .missingParent(let object): + domainEvent = .missingParent(object) + } + + if let error = error { + Pixel.fire(pixel: domainEvent, error: error, withAdditionalParameters: params) + } else { + Pixel.fire(pixel: domainEvent) + } + } + } + + override init(mapping: @escaping EventMapping.Mapping) { + fatalError("Use init()") + } +} + +public extension BookmarkEditorViewModel { + + convenience init(editingEntityID: NSManagedObjectID, + bookmarksDatabase: CoreDataDatabase) { + self.init(editingEntityID: editingEntityID, + bookmarksDatabase: bookmarksDatabase, + errorEvents: BookmarksModelsErrorHandling()) + + } + + convenience init(creatingFolderWithParentID parentFolderID: NSManagedObjectID?, + bookmarksDatabase: CoreDataDatabase) { + self.init(creatingFolderWithParentID: parentFolderID, + bookmarksDatabase: bookmarksDatabase, + errorEvents: BookmarksModelsErrorHandling()) + } +} + +public extension BookmarkListViewModel { + + convenience init(bookmarksDatabase: CoreDataDatabase, + parentID: NSManagedObjectID?) { + self.init(bookmarksDatabase: bookmarksDatabase, + parentID: parentID, + errorEvents: BookmarksModelsErrorHandling()) + } +} + +public extension FavoritesListViewModel { + + convenience init(bookmarksDatabase: CoreDataDatabase) { + self.init(bookmarksDatabase: bookmarksDatabase, + errorEvents: BookmarksModelsErrorHandling()) + } +} + +public extension MenuBookmarksViewModel { + + convenience init(bookmarksDatabase: CoreDataDatabase) { + self.init(bookmarksDatabase: bookmarksDatabase, + errorEvents: BookmarksModelsErrorHandling()) + } +} diff --git a/Core/CoreDependencyProvider.swift b/Core/CoreDependencyProvider.swift deleted file mode 100644 index eb16790c0a..0000000000 --- a/Core/CoreDependencyProvider.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// CoreDependencyProvider.swift -// DuckDuckGo -// -// Copyright © 2022 DuckDuckGo. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Foundation - -public protocol CoreDependencyProvided { - var bookmarksCachingSearch: BookmarksCachingSearch { get } -} - -/// Provides dependencies for objects that are not directly instantiated -/// through `init` call -public class CoreDependencyProvider: CoreDependencyProvided { - public static var shared: CoreDependencyProvided = CoreDependencyProvider() - - public let bookmarksCachingSearch = BookmarksCachingSearch() -} diff --git a/Core/Database.swift b/Core/Database.swift index 0c40e6fe14..193faf2d58 100644 --- a/Core/Database.swift +++ b/Core/Database.swift @@ -19,7 +19,7 @@ import Foundation import CoreData -import BrowserServicesKit +import Persistence public class Database { diff --git a/Core/FaviconUserScript.swift b/Core/FaviconUserScript.swift index 638fc2bee5..6b7d48ae8d 100644 --- a/Core/FaviconUserScript.swift +++ b/Core/FaviconUserScript.swift @@ -21,11 +21,9 @@ import WebKit import UserScript public protocol FaviconUserScriptDelegate: NSObjectProtocol { - - func faviconUserScriptDidRequestCurrentHost(_ script: FaviconUserScript) -> String? - - func faviconUserScript(_ script: FaviconUserScript, didFinishLoadingFavicon image: UIImage) - + + func faviconUserScript(_ script: FaviconUserScript, didRequestUpdateFaviconForHost host: String, withUrl url: URL?) + } public class FaviconUserScript: NSObject, UserScript { @@ -92,14 +90,8 @@ public class FaviconUserScript: NSObject, UserScript { url = nil } - // Always call this even if URL was nil, so that tabs cache is populated - let host = delegate?.faviconUserScriptDidRequestCurrentHost(self) - Favicons.shared.loadFavicon(forDomain: host, fromURL: url, intoCache: .tabs) { [weak self] image in - guard let self = self, let image = image else { return } - Favicons.shared.replaceBookmarksFavicon(forDomain: host, withImage: image) - self.delegate?.faviconUserScript(self, didFinishLoadingFavicon: image) - } - + let host = message.messageHost + delegate?.faviconUserScript(self, didRequestUpdateFaviconForHost: host, withUrl: url) } } diff --git a/Core/LegacyBookmarksStoreMigration.swift b/Core/LegacyBookmarksStoreMigration.swift new file mode 100644 index 0000000000..e3b53ef139 --- /dev/null +++ b/Core/LegacyBookmarksStoreMigration.swift @@ -0,0 +1,191 @@ +// +// LegacyBookmarksStoreMigration.swift +// DuckDuckGo +// +// Copyright © 2022 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation +import CoreData +import Bookmarks + +public class LegacyBookmarksStoreMigration { + + internal enum LegacyTopLevelFolderType { + case favorite + case bookmark + } + + public static func migrate(from legacyStorage: LegacyBookmarksCoreDataStorage?, + to context: NSManagedObjectContext) { + if let legacyStorage = legacyStorage { + // Perform migration from legacy store. + let source = legacyStorage.getTemporaryPrivateContext() + source.performAndWait { + LegacyBookmarksStoreMigration.migrate(source: source, + destination: context) + } + } else { + // Initialize structure if needed + BookmarkUtils.prepareFoldersStructure(in: context) + if context.hasChanges { + do { + try context.save(onErrorFire: .bookmarksCouldNotPrepareDatabase) + } catch { + Thread.sleep(forTimeInterval: 1) + fatalError("Could not prepare Bookmarks DB structure") + } + } + } + } + + private static func fetchTopLevelFolder(_ folderType: LegacyTopLevelFolderType, + in context: NSManagedObjectContext) -> [BookmarkFolderManagedObject] { + + let fetchRequest = NSFetchRequest(entityName: LegacyBookmarksCoreDataStorage.Constants.folderClassName) + fetchRequest.predicate = NSPredicate(format: "%K == nil AND %K == %@", + #keyPath(BookmarkManagedObject.parent), + #keyPath(BookmarkManagedObject.isFavorite), + NSNumber(value: folderType == .favorite)) + + guard let results = try? context.fetch(fetchRequest) else { + return [] + } + + // In case of corruption, we can cat more than one 'root' + return results + } + + // swiftlint:disable cyclomatic_complexity + // swiftlint:disable function_body_length + + private static func migrate(source: NSManagedObjectContext, destination: NSManagedObjectContext) { + + // Do not migrate more than once + guard BookmarkUtils.fetchRootFolder(destination) == nil else { + Pixel.fire(pixel: .bookmarksMigrationAlreadyPerformed) + return + } + + BookmarkUtils.prepareFoldersStructure(in: destination) + + guard let newRoot = BookmarkUtils.fetchRootFolder(destination), + let newFavoritesRoot = BookmarkUtils.fetchFavoritesFolder(destination) else { + Pixel.fire(pixel: .bookmarksMigrationCouldNotPrepareDatabase) + Thread.sleep(forTimeInterval: 2) + fatalError("Could not write to Bookmarks DB") + } + + // Fetch all 'roots' in case we had some kind of inconsistency and duplicated objects + let bookmarkRoots = fetchTopLevelFolder(.bookmark, in: source) + let favoriteRoots = fetchTopLevelFolder(.favorite, in: source) + + var index = 0 + var folderMap = [NSManagedObjectID: BookmarkEntity]() + + var favoritesToMigrate = [BookmarkItemManagedObject]() + var bookmarksToMigrate = [BookmarkItemManagedObject]() + + // Map old roots to new one, prepare list of top level bookmarks to migrate + for folder in favoriteRoots { + folderMap[folder.objectID] = newRoot + + favoritesToMigrate.append(contentsOf: folder.children?.array as? [BookmarkItemManagedObject] ?? []) + } + + for folder in bookmarkRoots { + folderMap[folder.objectID] = newRoot + + bookmarksToMigrate.append(contentsOf: folder.children?.array as? [BookmarkItemManagedObject] ?? []) + } + + var urlToBookmarkMap = [URL: BookmarkEntity]() + + // Iterate over bookmarks to migrate + while index < bookmarksToMigrate.count { + + let objectToMigrate = bookmarksToMigrate[index] + + guard let parent = objectToMigrate.parent, + let newParent = folderMap[parent.objectID], + let title = objectToMigrate.title else { + // Pixel? + index += 1 + continue + } + + if let folder = objectToMigrate as? BookmarkFolderManagedObject { + let newFolder = BookmarkEntity.makeFolder(title: title, + parent: newParent, + context: destination) + folderMap[folder.objectID] = newFolder + + if let children = folder.children?.array as? [BookmarkItemManagedObject] { + bookmarksToMigrate.append(contentsOf: children) + } + + } else if let bookmark = objectToMigrate as? BookmarkManagedObject, + let url = bookmark.url { + + let newBookmark = BookmarkEntity.makeBookmark(title: title, + url: url.absoluteString, + parent: newParent, + context: destination) + + urlToBookmarkMap[url] = newBookmark + } + + index += 1 + } + + // Process favorites starting from the last one, so we preserve the order while adding at begining + for favorite in favoritesToMigrate.reversed() { + guard let favorite = favorite as? BookmarkManagedObject, + let title = favorite.title, + let url = favorite.url else { continue } + + let bookmark = { + if let existingBookmark = urlToBookmarkMap[url] { + return existingBookmark + } else { + return BookmarkEntity.makeBookmark(title: title, + url: url.absoluteString, + parent: newRoot, + insertAtBeginning: true, + context: destination) + } + }() + bookmark.addToFavorites(insertAtBeginning: true, + favoritesRoot: newFavoritesRoot) + } + + do { + try destination.save(onErrorFire: .bookmarksMigrationFailed) + } catch { + destination.reset() + + BookmarkUtils.prepareFoldersStructure(in: destination) + do { + try destination.save(onErrorFire: .bookmarksMigrationCouldNotPrepareDatabaseOnFailedMigration) + } catch { + Thread.sleep(forTimeInterval: 2) + fatalError("Could not write to Bookmarks DB") + } + } + } + // swiftlint:enable cyclomatic_complexity + // swiftlint:enable function_body_length + +} diff --git a/Core/Link.swift b/Core/Link.swift index 964d266005..70f7392d78 100644 --- a/Core/Link.swift +++ b/Core/Link.swift @@ -37,17 +37,17 @@ public class Link: NSObject, NSCoding { public let url: URL public let localFileURL: URL? - public var displayTitle: String? { + public var displayTitle: String { let host = url.host?.droppingWwwPrefix() ?? url.absoluteString - + var displayTitle = (title?.isEmpty ?? true) ? host : title - + if Self.appUrls.isDuckDuckGo(url: url), let title = displayTitle, title.hasSuffix(Constants.ddgSuffix) { displayTitle = String(title.dropLast(Constants.ddgSuffix.count)) } - - return displayTitle + + return displayTitle ?? url.absoluteString } public required init(title: String?, url: URL, localPath: URL? = nil) { diff --git a/Core/NSManagedObjectContextExtension.swift b/Core/NSManagedObjectContextExtension.swift index 6df1e46687..298f2c1878 100644 --- a/Core/NSManagedObjectContextExtension.swift +++ b/Core/NSManagedObjectContextExtension.swift @@ -18,6 +18,7 @@ // import CoreData +import Persistence protocol Managed: NSFetchRequestResult { static var entityName: String { get } @@ -35,3 +36,38 @@ extension NSManagedObjectContext { return obj } } + +extension Array where Element == CoreDataErrorsParser.ErrorInfo { + + var errorPixelParameters: [String: String] { + let params: [String: String] + if let first = first { + params = [PixelParameters.errorCount: "\(count)", + PixelParameters.coreDataErrorCode: "\(first.code)", + PixelParameters.coreDataErrorDomain: first.domain, + PixelParameters.coreDataErrorEntity: first.entity ?? "empty", + PixelParameters.coreDataErrorAttribute: first.property ?? "empty"] + } else { + params = [PixelParameters.errorCount: "\(count)"] + } + return params + } +} + +extension NSManagedObjectContext { + + public func save(onErrorFire event: Pixel.Event) throws { + do { + try save() + } catch { + let nsError = error as NSError + let processedErrors = CoreDataErrorsParser.parse(error: nsError) + + Pixel.fire(pixel: event, + error: error, + withAdditionalParameters: processedErrors.errorPixelParameters) + + throw error + } + } +} diff --git a/Core/Pixel.swift b/Core/Pixel.swift index 8d5891b15c..28cc065197 100644 --- a/Core/Pixel.swift +++ b/Core/Pixel.swift @@ -43,6 +43,11 @@ public struct PixelParameters { static let errorCount = "c" static let underlyingErrorCode = "ue" static let underlyingErrorDomain = "ud" + + static let coreDataErrorCode = "coreDataCode" + static let coreDataErrorDomain = "coreDataDomain" + static let coreDataErrorEntity = "coreDataEntity" + static let coreDataErrorAttribute = "coreDataAttribute" public static let tabCount = "tc" diff --git a/Core/PixelEvent.swift b/Core/PixelEvent.swift index f0c2d65a47..e0a72f3f6c 100644 --- a/Core/PixelEvent.swift +++ b/Core/PixelEvent.swift @@ -19,6 +19,7 @@ import Foundation import BrowserServicesKit +import Bookmarks // swiftlint:disable file_length // swiftlint:disable type_body_length @@ -364,6 +365,26 @@ extension Pixel { case debugMissingTopFolderFixHasBookmarks case debugCantSaveBookmarkFix + + // Errors from Bookmarks Module + case bookmarkFolderExpected + case bookmarksListIndexNotMatchingBookmark + case bookmarksListMissingFolder + case editorNewParentMissing + case favoritesListIndexNotMatchingBookmark + case fetchingRootItemFailed(BookmarksModelError.ModelType) + case indexOutOfRange(BookmarksModelError.ModelType) + case saveFailed(BookmarksModelError.ModelType) + case missingParent(BookmarksModelError.ObjectType) + + case bookmarksCouldNotLoadDatabase + case bookmarksCouldNotPrepareDatabase + case bookmarksMigrationAlreadyPerformed + case bookmarksMigrationFailed + case bookmarksMigrationCouldNotPrepareDatabase + case bookmarksMigrationCouldNotPrepareDatabaseOnFailedMigration + case bookmarksMigrationCouldNotValidateDatabase + case bookmarksMigrationCouldNotRemoveOldStore } } @@ -720,6 +741,26 @@ extension Pixel.Event { case .adAttributionLogicRequestingAttributionTimedOut: return "m_attribution_logic_requesting_attribution_timed_out" case .adAttributionLogicWrongVendorOnSuccessfulCompilation: return "m_attribution_logic_wrong_vendor_on_successful_compilation" case .adAttributionLogicWrongVendorOnFailedCompilation: return "m_attribution_logic_wrong_vendor_on_failed_compilation" + + case .bookmarkFolderExpected: return "m_d_bookmark_folder_expected" + case .bookmarksListIndexNotMatchingBookmark: return "m_d_bookmarks_list_index_not_matching_bookmark" + case .bookmarksListMissingFolder: return "m_d_bookmarks_list_missing_folder" + case .editorNewParentMissing: return "m_d_bookmarks_editor_new_parent_missing" + case .favoritesListIndexNotMatchingBookmark: return "m_d_favorites_list_index_not_matching_bookmark" + case .fetchingRootItemFailed(let modelType): return "m_d_bookmarks_fetching_root_item_failed_\(modelType.rawValue)" + case .indexOutOfRange(let modelType): return "m_d_bookmarks_index_out_of_range_\(modelType.rawValue)" + case .saveFailed(let modelType): return "m_d_bookmarks_view_model_save_failed_\(modelType.rawValue)" + case .missingParent(let objectType): return "m_d_bookmark_model_missing_parent_\(objectType.rawValue)" + + case .bookmarksCouldNotLoadDatabase: return "m_d_bookmarks_could_not_load_database" + case .bookmarksCouldNotPrepareDatabase: return "m_d_bookmarks_could_not_prepare_database" + case .bookmarksMigrationAlreadyPerformed: return "m_d_bookmarks_migration_already_performed" + case .bookmarksMigrationFailed: return "m_d_bookmarks_migration_failed" + case .bookmarksMigrationCouldNotPrepareDatabase: return "m_d_bookmarks_migration_could_not_prepare_database" + case .bookmarksMigrationCouldNotPrepareDatabaseOnFailedMigration: + return "m_d_bookmarks_migration_could_not_prepare_database_on_failed_migration" + case .bookmarksMigrationCouldNotValidateDatabase: return "m_d_bookmarks_migration_could_not_validate_database" + case .bookmarksMigrationCouldNotRemoveOldStore: return "m_d_bookmarks_migration_could_not_remove_old_store" } } diff --git a/Core/StringExtension.swift b/Core/StringExtension.swift index 5e463b2f6e..f0ad33ba90 100644 --- a/Core/StringExtension.swift +++ b/Core/StringExtension.swift @@ -63,31 +63,6 @@ extension String { } } -// MARK: - Bookmarklet - -extension String { - public func isBookmarklet() -> Bool { - return self.lowercased().hasPrefix("javascript:") - } - - public func toDecodedBookmarklet() -> String? { - guard self.isBookmarklet(), - let result = self.dropping(prefix: "javascript:").removingPercentEncoding, - !result.isEmpty else { return nil } - return result - } - - public func toEncodedBookmarklet() -> URL? { - let allowedCharacters = CharacterSet.alphanumerics.union(.urlQueryAllowed) - guard self.isBookmarklet(), - let encoded = self.dropping(prefix: "javascript:") - // Avoid double encoding by removing any encoding first - .removingPercentEncoding? - .addingPercentEncoding(withAllowedCharacters: allowedCharacters) else { return nil } - return URL(string: "javascript:\(encoded)") - } -} - // MARK: - URL extension String { diff --git a/Core/UIColorExtension.swift b/Core/UIColorExtension.swift index 4d4af9e0c4..20a49393d1 100644 --- a/Core/UIColorExtension.swift +++ b/Core/UIColorExtension.swift @@ -120,6 +120,10 @@ extension UIColor { public static var destructive: UIColor { return UIColor.systemRed } + + public static var yellow60: UIColor { + return UIColor(hex: "F9BE1A") + } } diff --git a/Core/URLExtension.swift b/Core/URLExtension.swift index d4eb80ae28..98bce2a163 100644 --- a/Core/URLExtension.swift +++ b/Core/URLExtension.swift @@ -38,14 +38,6 @@ extension URL { return scheme != nil && !absoluteString.hasPrefix(URLProtocol.http.scheme) && !absoluteString.hasPrefix(URLProtocol.https.scheme) } - public func isBookmarklet() -> Bool { - return absoluteString.isBookmarklet() - } - - public func toDecodedBookmarklet() -> String? { - return absoluteString.toDecodedBookmarklet() - } - // MARK: static public static func webUrl(from text: String) -> URL? { diff --git a/Core/UserDefaultsPropertyWrapper.swift b/Core/UserDefaultsPropertyWrapper.swift index f2599223c9..6a3e316ad8 100644 --- a/Core/UserDefaultsPropertyWrapper.swift +++ b/Core/UserDefaultsPropertyWrapper.swift @@ -51,7 +51,6 @@ public struct UserDefaultsWrapper { case fireButtonPulseDateShown = "com.duckduckgo.ios.fireButtonPulseDateShown" case notFoundCache = "com.duckduckgo.ios.favicons.notFoundCache" - case faviconsNeedMigration = "com.duckduckgo.ios.favicons.needsMigration" case faviconSizeNeedsMigration = "com.duckduckgo.ios.favicons.sizeNeedsMigration" case legacyCovidInfo = "com.duckduckgo.ios.home.covidInfo" @@ -68,7 +67,6 @@ public struct UserDefaultsWrapper { case downloadedSurrogatesCount = "com.duckduckgo.app.downloadedSurrogatesCount" case downloadedTrackerDataSetCount = "com.duckduckgo.app.downloadedTrackerDataSetCount" case downloadedPrivacyConfigurationCount = "com.duckduckgo.app.downloadedPrivacyConfigurationCount" - case bookmarksMigratedFromUserDefaultsToCD = "com.duckduckgo.app.bookmarksMigratedFromUserDefaultsToCoreData" case textSize = "com.duckduckgo.ios.textSize" case emailWaitlistShouldReceiveNotifications = "com.duckduckgo.ios.showWaitlistNotification" diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index 9db78eead5..8bbef2a2bf 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -47,7 +47,6 @@ 1EA513782866039400493C6A /* TrackerAnimationLogic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EA513772866039400493C6A /* TrackerAnimationLogic.swift */; }; 1EDE39D22705D4A200C99C72 /* FileSizeDebugViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EDE39D12705D4A100C99C72 /* FileSizeDebugViewController.swift */; }; 1EE411F12857C3640003FE64 /* TrackerAnimationImageProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EE411F02857C3640003FE64 /* TrackerAnimationImageProvider.swift */; }; - 1EE411F52857C95B0003FE64 /* CollectionExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EE411F22857C4A30003FE64 /* CollectionExtension.swift */; }; 1EE411F728587AC50003FE64 /* PrivacyIcon.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1EE411F628587AC50003FE64 /* PrivacyIcon.xcassets */; }; 1EE411FD2858B9300003FE64 /* dark-trackers-2.json in Resources */ = {isa = PBXBuildFile; fileRef = 1EE411F82858B92F0003FE64 /* dark-trackers-2.json */; }; 1EE411FE2858B9300003FE64 /* dark-shield.json in Resources */ = {isa = PBXBuildFile; fileRef = 1EE411F92858B92F0003FE64 /* dark-shield.json */; }; @@ -124,7 +123,6 @@ 31C7D71C27515A6300A95D0A /* MockVoiceSearchHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31C7D71B27515A6300A95D0A /* MockVoiceSearchHelper.swift */; }; 31CB4251273AF50700FA0F3F /* SpeechRecognizerProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31CB4250273AF50700FA0F3F /* SpeechRecognizerProtocol.swift */; }; 31CC224928369B38001654A4 /* AutofillLoginSettingsListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31CC224828369B38001654A4 /* AutofillLoginSettingsListViewController.swift */; }; - 31DB526328A94113008A7EFB /* BookmarksCoreDataFixTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31DB526228A94113008A7EFB /* BookmarksCoreDataFixTests.swift */; }; 31DD208427395A5A008FB313 /* VoiceSearchHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31DD208327395A5A008FB313 /* VoiceSearchHelper.swift */; }; 31E69A63280F4CB600478327 /* DuckUI in Frameworks */ = {isa = PBXBuildFile; productRef = 31E69A62280F4CB600478327 /* DuckUI */; }; 31EF52E1281B3BDC0034796E /* AutofillLoginListItemViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31EF52E0281B3BDC0034796E /* AutofillLoginListItemViewModel.swift */; }; @@ -179,6 +177,9 @@ 84E341961E2F7EFB00BDBA6F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84E341951E2F7EFB00BDBA6F /* AppDelegate.swift */; }; 84E3419B1E2F7EFB00BDBA6F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 84E341991E2F7EFB00BDBA6F /* Main.storyboard */; }; 84E341A01E2F7EFB00BDBA6F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 84E3419E1E2F7EFB00BDBA6F /* LaunchScreen.storyboard */; }; + 85010502292FB1000033978F /* BookmarkFaviconUpdater.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85010501292FB1000033978F /* BookmarkFaviconUpdater.swift */; }; + 85010504292FFB080033978F /* BookmarkFaviconUpdaterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85010503292FFB080033978F /* BookmarkFaviconUpdaterTests.swift */; }; + 85011867290028C400BDEE27 /* BookmarksDatabase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8501186529001D6900BDEE27 /* BookmarksDatabase.swift */; }; 850250B520D80419002199C7 /* AtbAndVariantCleanupTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 850250B420D80419002199C7 /* AtbAndVariantCleanupTests.swift */; }; 850365F323DE087800D0F787 /* UIImageViewExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 850365F223DE087800D0F787 /* UIImageViewExtension.swift */; }; 85047B861F6887D2002A95D8 /* ContentBlockerLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85047B851F6887D2002A95D8 /* ContentBlockerLoader.swift */; }; @@ -247,6 +248,7 @@ 85482D902462DCD100EDEDD1 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 85482D8E2462DCD100EDEDD1 /* MainInterface.storyboard */; }; 85482D942462DCD100EDEDD1 /* OpenAction.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 85482D882462DCD100EDEDD1 /* OpenAction.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 85482D992462F1C600EDEDD1 /* ActionIcons.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 85482D982462F1C600EDEDD1 /* ActionIcons.xcassets */; }; + 854858E32937BC550063610B /* CollectionExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EE411F22857C4A30003FE64 /* CollectionExtension.swift */; }; 8548D95E25262B1B005AAE49 /* ViewHighlighter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8548D95D25262B1B005AAE49 /* ViewHighlighter.swift */; }; 8548D96825262C33005AAE49 /* view_highlight.json in Resources */ = {isa = PBXBuildFile; fileRef = 8548D96725262C33005AAE49 /* view_highlight.json */; }; 85514FFD2372DA0100DBC528 /* ios13-home-row.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = 85514FFC2372DA0000DBC528 /* ios13-home-row.mp4 */; }; @@ -280,7 +282,7 @@ 85A313972028E78A00327D00 /* release_notes.txt in Resources */ = {isa = PBXBuildFile; fileRef = 85A313962028E78A00327D00 /* release_notes.txt */; }; 85A53ECA200D1FA20010D13F /* FileStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85A53EC9200D1FA20010D13F /* FileStore.swift */; }; 85A9C37920E0E00C00073340 /* HomeRow.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 85A9C37820E0E00C00073340 /* HomeRow.xcassets */; }; - 85AD4171292287C300610581 /* Crashes in Frameworks */ = {isa = PBXBuildFile; productRef = 85AD4170292287C300610581 /* Crashes */; }; + 85AD4171292287C300610581 /* (null) in Frameworks */ = {isa = PBXBuildFile; }; 85AE668E2097206E0014CF04 /* NotificationView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 85AE668D2097206E0014CF04 /* NotificationView.xib */; }; 85AE6690209724120014CF04 /* NotificationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85AE668F209724120014CF04 /* NotificationView.swift */; }; 85B718F51FD071E50031A14F /* HTTPSUpgrade.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 85B718F31FD071E50031A14F /* HTTPSUpgrade.xcdatamodeld */; }; @@ -301,6 +303,7 @@ 85C29708247BDD060063A335 /* DaxDialogsBrowsingSpecTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85C29706247BDCFF0063A335 /* DaxDialogsBrowsingSpecTests.swift */; }; 85C2970A247EB7AA0063A335 /* Text.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 85C29709247EB7AA0063A335 /* Text.xcassets */; }; 85C2971A248162CA0063A335 /* DaxOnboardingPadViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85C29719248162CA0063A335 /* DaxOnboardingPadViewController.swift */; }; + 85C861E628FF1B5F00189466 /* HomeViewSectionRenderersExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85C861E528FF1B5F00189466 /* HomeViewSectionRenderersExtension.swift */; }; 85C91CA224671F4C00A11132 /* AppDeepLinks.swift in Sources */ = {isa = PBXBuildFile; fileRef = F17D723B1E8BB374003E8B0E /* AppDeepLinks.swift */; }; 85CA53A824BB343700A6288C /* Favicons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85CA53A324B9F2BD00A6288C /* Favicons.swift */; }; 85CA53AA24BB376800A6288C /* NotFoundCachingDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85CA53A924BB376800A6288C /* NotFoundCachingDownloader.swift */; }; @@ -319,6 +322,7 @@ 85DFEDF724CB1CAB00973FE7 /* ShareSheet.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 85DFEDF624CB1CAB00973FE7 /* ShareSheet.xcassets */; }; 85DFEDF924CF3D0E00973FE7 /* TabsBarCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85DFEDF824CF3D0E00973FE7 /* TabsBarCell.swift */; }; 85E5603026541D9E00F4DC44 /* AutocompleteRequestTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85E5602E26541D1D00F4DC44 /* AutocompleteRequestTests.swift */; }; + 85E58C2C28FDA94F006A801A /* FavoritesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85E58C2B28FDA94F006A801A /* FavoritesViewController.swift */; }; 85EE7F55224667DD000FE757 /* WebContainer.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 85EE7F54224667DD000FE757 /* WebContainer.storyboard */; }; 85EE7F572246685B000FE757 /* WebContainerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85EE7F562246685B000FE757 /* WebContainerViewController.swift */; }; 85EE7F59224673C5000FE757 /* WebContainerNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85EE7F58224673C5000FE757 /* WebContainerNavigationController.swift */; }; @@ -349,6 +353,7 @@ 981FED76220464EF008488D7 /* AutoClearSettingsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 981FED75220464EF008488D7 /* AutoClearSettingsModel.swift */; }; 9820EAF522613CD30089094D /* WebProgressWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9820EAF422613CD30089094D /* WebProgressWorker.swift */; }; 9820FF502244FECC008D4782 /* UIScrollViewExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9820FF4F2244FECC008D4782 /* UIScrollViewExtension.swift */; }; + 9825F9DB293F2E8700F220F2 /* BookmarksTestData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9825F9DA293F2E8700F220F2 /* BookmarksTestData.swift */; }; 982686AD2600C0850011A8D6 /* ActionMessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 982686AC2600C0850011A8D6 /* ActionMessageView.swift */; }; 982686B92600C0960011A8D6 /* ActionMessageView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 982686B82600C0960011A8D6 /* ActionMessageView.xib */; }; 982C87C42255559A00919035 /* UITableViewCellExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 982C87C32255559A00919035 /* UITableViewCellExtension.swift */; }; @@ -373,6 +378,7 @@ 984D035C24AE15CD0066CFB8 /* TabSwitcherSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 984D035B24AE15CD0066CFB8 /* TabSwitcherSettings.swift */; }; 984D036124AF49B80066CFB8 /* TabPreviewsSourceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 984D035F24AF49160066CFB8 /* TabPreviewsSourceTests.swift */; }; 984D60B2222A1284003B9E3B /* FeedbackFormViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 984D60B1222A1284003B9E3B /* FeedbackFormViewController.swift */; }; + 9856A1992933D2EB00ACB44F /* BookmarksModelsErrorHandling.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9856A1982933D2EB00ACB44F /* BookmarksModelsErrorHandling.swift */; }; 985892522260B1B200EEB31B /* ProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 985892512260B1B200EEB31B /* ProgressView.swift */; }; 985AAE4524899369007A43EC /* HomeScreenTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 985AAE4424899369007A43EC /* HomeScreenTransition.swift */; }; 9865DFF922A8220D00D27829 /* FavoritesOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9865DFF822A8220D00D27829 /* FavoritesOverlay.swift */; }; @@ -381,6 +387,12 @@ 986C7FA724171C6000A3557D /* BrokenSiteCategories.swift in Sources */ = {isa = PBXBuildFile; fileRef = 986C7FA624171C6000A3557D /* BrokenSiteCategories.swift */; }; 986C7FA92417ADE700A3557D /* ReportBrokenSiteViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 986C7FA82417ADE700A3557D /* ReportBrokenSiteViewController.swift */; }; 986DA94A24884B18004A7E39 /* WebViewTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 986DA94924884B18004A7E39 /* WebViewTransition.swift */; }; + 987130C4294AAB9F00AB05E0 /* FavoriteListViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 987130BE294AAB9E00AB05E0 /* FavoriteListViewModelTests.swift */; }; + 987130C5294AAB9F00AB05E0 /* BookmarkEditorViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 987130BF294AAB9E00AB05E0 /* BookmarkEditorViewModelTests.swift */; }; + 987130C6294AAB9F00AB05E0 /* BookmarkListViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 987130C0294AAB9E00AB05E0 /* BookmarkListViewModelTests.swift */; }; + 987130C7294AAB9F00AB05E0 /* MenuBookmarksViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 987130C1294AAB9E00AB05E0 /* MenuBookmarksViewModelTests.swift */; }; + 987130C8294AAB9F00AB05E0 /* BookmarksTestHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 987130C2294AAB9E00AB05E0 /* BookmarksTestHelpers.swift */; }; + 987130C9294AAB9F00AB05E0 /* BookmarkUtilsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 987130C3294AAB9E00AB05E0 /* BookmarkUtilsTests.swift */; }; 98728E822417E3300033960E /* BrokenSiteInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98728E812417E3300033960E /* BrokenSiteInfo.swift */; }; 9872D205247DCAC100CEF398 /* TabPreviewsSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9872D204247DCAC100CEF398 /* TabPreviewsSource.swift */; }; 9874F9EE2187AFCE00CAF33D /* Themable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9874F9ED2187AFCE00CAF33D /* Themable.swift */; }; @@ -404,8 +416,11 @@ 989B337522D7EF2100437824 /* EmptyCollectionReusableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 989B337422D7EF2100437824 /* EmptyCollectionReusableView.swift */; }; 989DF82922C628F80077AA55 /* ContentBlockerLoaderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 989DF82822C628F80077AA55 /* ContentBlockerLoaderTests.swift */; }; 98A16C2D28A11D6200A6C003 /* BrowserServicesKit in Frameworks */ = {isa = PBXBuildFile; productRef = 98A16C2C28A11D6200A6C003 /* BrowserServicesKit */; }; + 98A50962294B48A400D10880 /* Bookmarks in Frameworks */ = {isa = PBXBuildFile; productRef = 98A50961294B48A400D10880 /* Bookmarks */; }; 98A54A8422AFCB2D00E541F4 /* Instruments.instrpkg in Sources */ = {isa = PBXBuildFile; fileRef = 98A54A8322AFCB2D00E541F4 /* Instruments.instrpkg */; }; 98AA92B32456FBE100ED4B9E /* SearchFieldContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98AA92B22456FBE100ED4B9E /* SearchFieldContainerView.swift */; }; + 98AAF8E4292EB46000DBDF06 /* BookmarksMigrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98AAF8E3292EB46000DBDF06 /* BookmarksMigrationTests.swift */; }; + 98B000532915C46E0034BCA0 /* LegacyBookmarksStoreMigration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98B000522915C46E0034BCA0 /* LegacyBookmarksStoreMigration.swift */; }; 98B001A4251EABB40090EC07 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 98B001A2251EABB40090EC07 /* InfoPlist.strings */; }; 98B001A7251EABB40090EC07 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 98B001A5251EABB40090EC07 /* InfoPlist.strings */; }; 98B001AA251EABB40090EC07 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 98B001A8251EABB40090EC07 /* Localizable.strings */; }; @@ -413,7 +428,14 @@ 98B001B3251EABB40090EC07 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 98B001B1251EABB40090EC07 /* InfoPlist.strings */; }; 98B31290218CCB2200E54DE1 /* MockDependencyProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98B3128F218CCB2200E54DE1 /* MockDependencyProvider.swift */; }; 98B31292218CCB8C00E54DE1 /* AppDependencyProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98B31291218CCB8C00E54DE1 /* AppDependencyProvider.swift */; }; + 98BFA911294A2086004EA636 /* bookmarks_3k.html in Resources */ = {isa = PBXBuildFile; fileRef = 98BFA910294A2086004EA636 /* bookmarks_3k.html */; }; + 98BFA913294A3DDC004EA636 /* BookmarksEditModelPerformanceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98BFA912294A3DDC004EA636 /* BookmarksEditModelPerformanceTests.swift */; }; 98D16973250CE707009513CC /* OmniBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = 98D16975250CE707009513CC /* OmniBar.xib */; }; + 98D4B7DA294407AC0068814D /* BookmarksSearchPerformanceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98D4B7D9294407AC0068814D /* BookmarksSearchPerformanceTests.swift */; }; + 98D4B7DF2944DDBD0068814D /* Core.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F143C2E41E4A4CD400CFDE3A /* Core.framework */; platformFilter = ios; }; + 98D4B7E12949C3E80068814D /* BookmarksImportPerformanceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98D4B7E02949C3E80068814D /* BookmarksImportPerformanceTests.swift */; }; + 98D4B7E32949C4270068814D /* bookmarks_30k.html in Resources */ = {isa = PBXBuildFile; fileRef = 98D4B7E22949C4270068814D /* bookmarks_30k.html */; }; + 98D4B7E52949EFCE0068814D /* BookmarksExportPerformanceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98D4B7E42949EFCE0068814D /* BookmarksExportPerformanceTests.swift */; }; 98D98A7425ED88D100D8E3DF /* BrowsingMenuEntryViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98D98A7225ED88D100D8E3DF /* BrowsingMenuEntryViewCell.swift */; }; 98D98A8225ED88E300D8E3DF /* BrowsingMenuSeparatorViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98D98A8025ED88E300D8E3DF /* BrowsingMenuSeparatorViewCell.swift */; }; 98D98A8F25ED952F00D8E3DF /* BrowsingMenuButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98D98A8E25ED952F00D8E3DF /* BrowsingMenuButton.swift */; }; @@ -499,9 +521,7 @@ B6CB93E5286445AB0090FEB4 /* Base64DownloadSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6CB93E4286445AB0090FEB4 /* Base64DownloadSession.swift */; }; C111B26927F579EF006558B1 /* BookmarkOrFolderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C111B26827F579EF006558B1 /* BookmarkOrFolderTests.swift */; }; C14882DA27F2011C00D59F0C /* BookmarksExporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C14882D727F2011C00D59F0C /* BookmarksExporter.swift */; }; - C14882DB27F2011C00D59F0C /* BookmarkOrFolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = C14882D827F2011C00D59F0C /* BookmarkOrFolder.swift */; }; C14882DC27F2011C00D59F0C /* BookmarksImporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C14882D927F2011C00D59F0C /* BookmarksImporter.swift */; }; - C14882E027F20D9100D59F0C /* BookmarksCoreDataStorageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C14882DF27F20D9100D59F0C /* BookmarksCoreDataStorageTests.swift */; }; C14882E327F20D9A00D59F0C /* BookmarksExporterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C14882E127F20D9A00D59F0C /* BookmarksExporterTests.swift */; }; C14882E427F20D9A00D59F0C /* BookmarksImporterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C14882E227F20D9A00D59F0C /* BookmarksImporterTests.swift */; }; C14882E727F20DAB00D59F0C /* HtmlTestDataLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = C14882E527F20DAA00D59F0C /* HtmlTestDataLoader.swift */; }; @@ -509,7 +529,6 @@ C14882EA27F20DD000D59F0C /* MockBookmarksCoreDataStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C14882E927F20DD000D59F0C /* MockBookmarksCoreDataStorage.swift */; }; C14882ED27F211A000D59F0C /* SwiftSoup in Frameworks */ = {isa = PBXBuildFile; productRef = C14882EC27F211A000D59F0C /* SwiftSoup */; }; C1963863283794A000298D4D /* BookmarksCachingSearch.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1963862283794A000298D4D /* BookmarksCachingSearch.swift */; }; - C196387F283AAE1500298D4D /* CoreDependencyProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = C196387E283AAE1500298D4D /* CoreDependencyProvider.swift */; }; C1B7B51C28941E980098FD6A /* HomeMessageViewModelBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1B7B51B28941E980098FD6A /* HomeMessageViewModelBuilder.swift */; }; C1B7B52328941F2A0098FD6A /* RemoteMessagingStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1B7B51F28941F2A0098FD6A /* RemoteMessagingStore.swift */; }; C1B7B52428941F2A0098FD6A /* RemoteMessageRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1B7B52028941F2A0098FD6A /* RemoteMessageRequest.swift */; }; @@ -540,9 +559,7 @@ CBD4F140279EBFB300B20FD7 /* SwiftUICollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB1AEFB02799AA940031AE3D /* SwiftUICollectionViewCell.swift */; }; EA39B7E2268A1A35000C62CD /* privacy-reference-tests in Resources */ = {isa = PBXBuildFile; fileRef = EA39B7E1268A1A35000C62CD /* privacy-reference-tests */; }; EAB19EDA268963510015D3EA /* DomainMatchingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB19ED9268963510015D3EA /* DomainMatchingTests.swift */; }; - F10307391E7C5E310059FEC7 /* NoBookmarksCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F10307381E7C5E310059FEC7 /* NoBookmarksCell.swift */; }; F103073B1E7C91330059FEC7 /* BookmarksDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = F103073A1E7C91330059FEC7 /* BookmarksDataSource.swift */; }; - F103076B1E800DC30059FEC7 /* BookmarksManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F103076A1E800DC30059FEC7 /* BookmarksManager.swift */; }; F1075C921E9EF827006BE8A8 /* UserDefaultsExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1075C911E9EF827006BE8A8 /* UserDefaultsExtension.swift */; }; F10E522D1E946F8800CE1253 /* NSAttributedStringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F10E522C1E946F8800CE1253 /* NSAttributedStringExtension.swift */; }; F1134EA61F3E2AF400B73467 /* StatisticsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1134EA51F3E2AF400B73467 /* StatisticsStore.swift */; }; @@ -584,7 +601,6 @@ F16390821E648B7A005B4550 /* HomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F16390811E648B7A005B4550 /* HomeViewController.swift */; }; F16393FF1ECCB9CC00DDD653 /* FileLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = F16393FE1ECCB9CC00DDD653 /* FileLoader.swift */; }; F1668BCE1E798081008CBA04 /* BookmarksViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1668BCD1E798081008CBA04 /* BookmarksViewController.swift */; }; - F1722BC91E8BE2AB0058AAA5 /* BookmarkStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1722BC81E8BE2AB0058AAA5 /* BookmarkStore.swift */; }; F176699F1E40BC86003D3222 /* Settings.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F176699D1E40BC86003D3222 /* Settings.storyboard */; }; F17669D71E43401C003D3222 /* MainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F17669D61E43401C003D3222 /* MainViewController.swift */; }; F17843E91F36226700390DCD /* MockFiles in Resources */ = {isa = PBXBuildFile; fileRef = F17843E81F36226700390DCD /* MockFiles */; }; @@ -610,13 +626,12 @@ F1CA3C391F045885005FADB3 /* PrivacyUserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1CA3C381F045885005FADB3 /* PrivacyUserDefaults.swift */; }; F1CA3C3B1F045B65005FADB3 /* Authenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1CA3C3A1F045B65005FADB3 /* Authenticator.swift */; }; F1CDD3F21F16911700BE0581 /* AboutViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1CDD3F11F16911700BE0581 /* AboutViewController.swift */; }; - F1CE42A61ECA0A460074A8DF /* BookmarkUserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1CE42A51ECA0A460074A8DF /* BookmarkUserDefaults.swift */; }; F1D477C61F2126CC0031ED49 /* OmniBarState.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1D477C51F2126CC0031ED49 /* OmniBarState.swift */; }; F1D477C91F2139410031ED49 /* SmallOmniBarStateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1D477C81F2139410031ED49 /* SmallOmniBarStateTests.swift */; }; F1D477CB1F2149C40031ED49 /* Type.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1D477CA1F2149C40031ED49 /* Type.swift */; }; F1D796EC1E7AB8930019D451 /* SaveBookmarkActivity.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1D796EB1E7AB8930019D451 /* SaveBookmarkActivity.swift */; }; F1D796EE1E7AF2EB0019D451 /* UIViewControllerExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F143C32C1E4A9A4800CFDE3A /* UIViewControllerExtension.swift */; }; - F1D796F01E7B07610019D451 /* BookmarkCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1D796EF1E7B07610019D451 /* BookmarkCell.swift */; }; + F1D796F01E7B07610019D451 /* BookmarksViewControllerCells.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1D796EF1E7B07610019D451 /* BookmarksViewControllerCells.swift */; }; F1D796F41E7C2A410019D451 /* BookmarksDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1D796F31E7C2A410019D451 /* BookmarksDelegate.swift */; }; F1DA2F7D1EBCF23700313F51 /* ExternalUrlSchemeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1DA2F7C1EBCF23700313F51 /* ExternalUrlSchemeTests.swift */; }; F1DE78581E5CAE350058895A /* TabViewGridCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1DE78571E5CAE350058895A /* TabViewGridCell.swift */; }; @@ -632,7 +647,6 @@ F1F533841F26ABAC00D80D4F /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = F1F533861F26ABAC00D80D4F /* Localizable.strings */; }; F1FCF3B31F3550BD00C23128 /* APIRequestTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1FCF3B11F354F7200C23128 /* APIRequestTests.swift */; }; F40F843728C939760081AE75 /* AutofillLoginListViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F40F843528C938370081AE75 /* AutofillLoginListViewModelTests.swift */; }; - F4118EC52761725800CA91CA /* BookmarkSectionDataSources.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4118EC42761725800CA91CA /* BookmarkSectionDataSources.swift */; }; F4147354283BF834004AA7A5 /* AutofillContentScopeFeatureToggles.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4147353283BF834004AA7A5 /* AutofillContentScopeFeatureToggles.swift */; }; F41C2DA326C1925700F9A760 /* BookmarksAndFolders.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = F41C2DA126C1925600F9A760 /* BookmarksAndFolders.xcdatamodeld */; }; F41C2DA526C1975E00F9A760 /* BookmarksCoreDataStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = F41C2DA426C1975E00F9A760 /* BookmarksCoreDataStorage.swift */; }; @@ -642,8 +656,6 @@ F44D279E27F331BB0037F371 /* AutofillLoginPromptViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F44D279927F331BB0037F371 /* AutofillLoginPromptViewModel.swift */; }; F44D279F27F331BB0037F371 /* AutofillLoginPromptViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F44D279A27F331BB0037F371 /* AutofillLoginPromptViewController.swift */; }; F456B3B525810BB900B79B90 /* FireButtonAnimationSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F456B3B425810BB900B79B90 /* FireButtonAnimationSettingsViewController.swift */; }; - F45B37762760183800CDCCA9 /* BookmarkItemDetailsDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = F45B37752760183800CDCCA9 /* BookmarkItemDetailsDataSource.swift */; }; - F45B37792760277500CDCCA9 /* BookmarkFoldersSectionDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = F45B37782760277500CDCCA9 /* BookmarkFoldersSectionDataSource.swift */; }; F46FEC5727987A5F0061D9DF /* KeychainItemsDebugViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F46FEC5627987A5F0061D9DF /* KeychainItemsDebugViewController.swift */; }; F47E53D9250A97330037C686 /* OnboardingDefaultBroswerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F47E53D8250A97330037C686 /* OnboardingDefaultBroswerViewController.swift */; }; F47E53DB250A9A1C0037C686 /* Onboarding.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F47E53DA250A9A1C0037C686 /* Onboarding.xcassets */; }; @@ -657,11 +669,10 @@ F4B0B796252CB35700830156 /* OnboardingWidgetsDetailsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4B0B795252CB35700830156 /* OnboardingWidgetsDetailsViewController.swift */; }; F4C9FBF528340DDA002281CC /* AutofillInterfaceEmailTruncator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4C9FBF428340DDA002281CC /* AutofillInterfaceEmailTruncator.swift */; }; F4CE6D1B257EA33C00D0A6AA /* FireButtonAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4CE6D1A257EA33C00D0A6AA /* FireButtonAnimator.swift */; }; - F4D7220E26F15529007D6193 /* AddOrEditBookmarkViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4D7220D26F15529007D6193 /* AddOrEditBookmarkViewController.swift */; }; F4D7221026F29A70007D6193 /* BookmarkDetailsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4D7220F26F29A70007D6193 /* BookmarkDetailsCell.swift */; }; F4D9C4FA25117A0F00814B71 /* HomeMessageStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4D9C4F925117A0F00814B71 /* HomeMessageStorage.swift */; }; F4E1936625AF722F001D2666 /* HighlightCutOutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4E1936525AF722F001D2666 /* HighlightCutOutView.swift */; }; - F4F6DFB226E6AEC100ED7E12 /* AddOrEditBookmarkFolderViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F6DFB126E6AEC100ED7E12 /* AddOrEditBookmarkFolderViewController.swift */; }; + F4F6DFB226E6AEC100ED7E12 /* AddOrEditBookmarkViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F6DFB126E6AEC100ED7E12 /* AddOrEditBookmarkViewController.swift */; }; F4F6DFB426E6B63700ED7E12 /* BookmarkFolderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F6DFB326E6B63700ED7E12 /* BookmarkFolderCell.swift */; }; F4F6DFB626E6B71300ED7E12 /* BookmarkFoldersTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F6DFB526E6B71300ED7E12 /* BookmarkFoldersTableViewController.swift */; }; F4F6DFB826EA9AA600ED7E12 /* BookmarksTextFieldCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F6DFB726EA9AA600ED7E12 /* BookmarksTextFieldCell.swift */; }; @@ -728,6 +739,13 @@ remoteGlobalIDString = 84E341911E2F7EFB00BDBA6F; remoteInfo = DuckDuckGo; }; + 9825F9CD293F2DE900F220F2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 84E3418A1E2F7EFB00BDBA6F /* Project object */; + proxyType = 1; + remoteGlobalIDString = 84E341911E2F7EFB00BDBA6F; + remoteInfo = DuckDuckGo; + }; F143C2E91E4A4CD400CFDE3A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 84E3418A1E2F7EFB00BDBA6F /* Project object */; @@ -892,7 +910,6 @@ 31C7D71B27515A6300A95D0A /* MockVoiceSearchHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockVoiceSearchHelper.swift; sourceTree = ""; }; 31CB4250273AF50700FA0F3F /* SpeechRecognizerProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpeechRecognizerProtocol.swift; sourceTree = ""; }; 31CC224828369B38001654A4 /* AutofillLoginSettingsListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutofillLoginSettingsListViewController.swift; sourceTree = ""; }; - 31DB526228A94113008A7EFB /* BookmarksCoreDataFixTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksCoreDataFixTests.swift; sourceTree = ""; }; 31DD208327395A5A008FB313 /* VoiceSearchHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VoiceSearchHelper.swift; sourceTree = ""; }; 31EF52E0281B3BDC0034796E /* AutofillLoginListItemViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutofillLoginListItemViewModel.swift; sourceTree = ""; }; 4B0295182537BC6700E00CEF /* ConfigurationDebugViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfigurationDebugViewController.swift; sourceTree = ""; }; @@ -960,6 +977,9 @@ 84E341A11E2F7EFB00BDBA6F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 84E341A61E2F7EFB00BDBA6F /* UnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = UnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 84E341AC1E2F7EFB00BDBA6F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 85010501292FB1000033978F /* BookmarkFaviconUpdater.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarkFaviconUpdater.swift; sourceTree = ""; }; + 85010503292FFB080033978F /* BookmarkFaviconUpdaterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarkFaviconUpdaterTests.swift; sourceTree = ""; }; + 8501186529001D6900BDEE27 /* BookmarksDatabase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BookmarksDatabase.swift; path = ../DuckDuckGo/BookmarksDatabase.swift; sourceTree = ""; }; 850250B220D803F4002199C7 /* AtbAndVariantCleanup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AtbAndVariantCleanup.swift; path = ../Core/AtbAndVariantCleanup.swift; sourceTree = ""; }; 850250B420D80419002199C7 /* AtbAndVariantCleanupTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AtbAndVariantCleanupTests.swift; sourceTree = ""; }; 850365F223DE087800D0F787 /* UIImageViewExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImageViewExtension.swift; sourceTree = ""; }; @@ -1076,6 +1096,7 @@ 85C29706247BDCFF0063A335 /* DaxDialogsBrowsingSpecTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DaxDialogsBrowsingSpecTests.swift; sourceTree = ""; }; 85C29709247EB7AA0063A335 /* Text.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Text.xcassets; sourceTree = ""; }; 85C29719248162CA0063A335 /* DaxOnboardingPadViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DaxOnboardingPadViewController.swift; sourceTree = ""; }; + 85C861E528FF1B5F00189466 /* HomeViewSectionRenderersExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewSectionRenderersExtension.swift; sourceTree = ""; }; 85CA53A324B9F2BD00A6288C /* Favicons.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Favicons.swift; path = ../DuckDuckGo/Favicons.swift; sourceTree = ""; }; 85CA53A924BB376800A6288C /* NotFoundCachingDownloader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotFoundCachingDownloader.swift; sourceTree = ""; }; 85CA53AB24BBD39300A6288C /* FaviconRequestModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FaviconRequestModifier.swift; sourceTree = ""; }; @@ -1093,6 +1114,7 @@ 85DFEDF624CB1CAB00973FE7 /* ShareSheet.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = ShareSheet.xcassets; sourceTree = ""; }; 85DFEDF824CF3D0E00973FE7 /* TabsBarCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabsBarCell.swift; sourceTree = ""; }; 85E5602E26541D1D00F4DC44 /* AutocompleteRequestTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutocompleteRequestTests.swift; sourceTree = ""; }; + 85E58C2B28FDA94F006A801A /* FavoritesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoritesViewController.swift; sourceTree = ""; }; 85EE7F54224667DD000FE757 /* WebContainer.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = WebContainer.storyboard; sourceTree = ""; }; 85EE7F562246685B000FE757 /* WebContainerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebContainerViewController.swift; sourceTree = ""; }; 85EE7F58224673C5000FE757 /* WebContainerNavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebContainerNavigationController.swift; sourceTree = ""; }; @@ -1165,6 +1187,9 @@ 9820A5D522B1C0B20024E37C /* DDG Trace.tracetemplate */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; path = "DDG Trace.tracetemplate"; sourceTree = ""; }; 9820EAF422613CD30089094D /* WebProgressWorker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebProgressWorker.swift; sourceTree = ""; }; 9820FF4F2244FECC008D4782 /* UIScrollViewExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIScrollViewExtension.swift; sourceTree = ""; }; + 9825F9D7293F2DE900F220F2 /* PerformanceTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PerformanceTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9825F9D8293F2DE900F220F2 /* IntegrationTests copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "IntegrationTests copy-Info.plist"; path = "/Users/bartek/Develop/iOS/IntegrationTests copy-Info.plist"; sourceTree = ""; }; + 9825F9DA293F2E8700F220F2 /* BookmarksTestData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksTestData.swift; sourceTree = ""; }; 982686AC2600C0850011A8D6 /* ActionMessageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionMessageView.swift; sourceTree = ""; }; 982686B82600C0960011A8D6 /* ActionMessageView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ActionMessageView.xib; sourceTree = ""; }; 982C87C32255559A00919035 /* UITableViewCellExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UITableViewCellExtension.swift; sourceTree = ""; }; @@ -1222,6 +1247,7 @@ 9852CD8D251EABCC001A1575 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = ""; }; 9852CD90251EABCC001A1575 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; }; 9852CD91251EABCC001A1575 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; }; + 9856A1982933D2EB00ACB44F /* BookmarksModelsErrorHandling.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksModelsErrorHandling.swift; sourceTree = ""; }; 985892512260B1B200EEB31B /* ProgressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProgressView.swift; sourceTree = ""; }; 9858AF7B251EAC0300025687 /* hr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hr; path = hr.lproj/InfoPlist.strings; sourceTree = ""; }; 9858AF7C251EAC0300025687 /* hr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hr; path = hr.lproj/InfoPlist.strings; sourceTree = ""; }; @@ -1666,6 +1692,12 @@ 986C7FA82417ADE700A3557D /* ReportBrokenSiteViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportBrokenSiteViewController.swift; sourceTree = ""; }; 986DA94924884B18004A7E39 /* WebViewTransition.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebViewTransition.swift; sourceTree = ""; }; 98710C7C24A518CA0049F515 /* HTTPSUpgrade 2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "HTTPSUpgrade 2.xcdatamodel"; sourceTree = ""; }; + 987130BE294AAB9E00AB05E0 /* FavoriteListViewModelTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FavoriteListViewModelTests.swift; sourceTree = ""; }; + 987130BF294AAB9E00AB05E0 /* BookmarkEditorViewModelTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarkEditorViewModelTests.swift; sourceTree = ""; }; + 987130C0294AAB9E00AB05E0 /* BookmarkListViewModelTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarkListViewModelTests.swift; sourceTree = ""; }; + 987130C1294AAB9E00AB05E0 /* MenuBookmarksViewModelTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuBookmarksViewModelTests.swift; sourceTree = ""; }; + 987130C2294AAB9E00AB05E0 /* BookmarksTestHelpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarksTestHelpers.swift; sourceTree = ""; }; + 987130C3294AAB9E00AB05E0 /* BookmarkUtilsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarkUtilsTests.swift; sourceTree = ""; }; 98728E812417E3300033960E /* BrokenSiteInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrokenSiteInfo.swift; sourceTree = ""; }; 9872D204247DCAC100CEF398 /* TabPreviewsSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabPreviewsSource.swift; sourceTree = ""; }; 9874F9ED2187AFCE00CAF33D /* Themable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Themable.swift; sourceTree = ""; }; @@ -1733,11 +1765,13 @@ 98A54A8122AFCB2C00E541F4 /* Instruments.instrdst */ = {isa = PBXFileReference; explicitFileType = com.apple.instruments.instrdst; includeInIndex = 0; path = Instruments.instrdst; sourceTree = BUILT_PRODUCTS_DIR; }; 98A54A8322AFCB2D00E541F4 /* Instruments.instrpkg */ = {isa = PBXFileReference; lastKnownFileType = "com.apple.instruments.package-definition"; path = Instruments.instrpkg; sourceTree = ""; }; 98AA92B22456FBE100ED4B9E /* SearchFieldContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchFieldContainerView.swift; sourceTree = ""; }; + 98AAF8E3292EB46000DBDF06 /* BookmarksMigrationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksMigrationTests.swift; sourceTree = ""; }; 98AC5D8B251EAC07009B7979 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/InfoPlist.strings; sourceTree = ""; }; 98AC5D8C251EAC07009B7979 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/InfoPlist.strings; sourceTree = ""; }; 98AC5D8D251EAC07009B7979 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/InfoPlist.strings; sourceTree = ""; }; 98AC5D90251EAC07009B7979 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Localizable.strings; sourceTree = ""; }; 98AC5D91251EAC07009B7979 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/InfoPlist.strings; sourceTree = ""; }; + 98B000522915C46E0034BCA0 /* LegacyBookmarksStoreMigration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyBookmarksStoreMigration.swift; sourceTree = ""; }; 98B001A3251EABB40090EC07 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/InfoPlist.strings; sourceTree = ""; }; 98B001A6251EABB40090EC07 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/InfoPlist.strings; sourceTree = ""; }; 98B001A9251EABB40090EC07 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/Localizable.strings; sourceTree = ""; }; @@ -1756,6 +1790,8 @@ 98B49051251EAC2200A1B398 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/InfoPlist.strings; sourceTree = ""; }; 98B49052251EAC2200A1B398 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/InfoPlist.strings; sourceTree = ""; }; 98B49053251EAC2200A1B398 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Localizable.strings; sourceTree = ""; }; + 98BFA910294A2086004EA636 /* bookmarks_3k.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = bookmarks_3k.html; sourceTree = ""; }; + 98BFA912294A3DDC004EA636 /* BookmarksEditModelPerformanceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksEditModelPerformanceTests.swift; sourceTree = ""; }; 98C6C992251EABFA0067A1E8 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = ""; }; 98C6C994251EABFA0067A1E8 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = ""; }; 98C6C995251EABFA0067A1E8 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = ""; }; @@ -1767,6 +1803,10 @@ 98CD35D3251EAC0B00DA7671 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = ""; }; 98CD35D4251EAC0B00DA7671 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = ""; }; 98D16974250CE707009513CC /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/OmniBar.xib; sourceTree = ""; }; + 98D4B7D9294407AC0068814D /* BookmarksSearchPerformanceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksSearchPerformanceTests.swift; sourceTree = ""; }; + 98D4B7E02949C3E80068814D /* BookmarksImportPerformanceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksImportPerformanceTests.swift; sourceTree = ""; }; + 98D4B7E22949C4270068814D /* bookmarks_30k.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = bookmarks_30k.html; sourceTree = ""; }; + 98D4B7E42949EFCE0068814D /* BookmarksExportPerformanceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksExportPerformanceTests.swift; sourceTree = ""; }; 98D7ED1C251EABB8000DF39A /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/InfoPlist.strings; sourceTree = ""; }; 98D7ED1D251EABB8000DF39A /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/InfoPlist.strings; sourceTree = ""; }; 98D7ED1F251EABB8000DF39A /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/InfoPlist.strings; sourceTree = ""; }; @@ -1868,16 +1908,13 @@ B6CB93E4286445AB0090FEB4 /* Base64DownloadSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Base64DownloadSession.swift; sourceTree = ""; }; C111B26827F579EF006558B1 /* BookmarkOrFolderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarkOrFolderTests.swift; sourceTree = ""; }; C14882D727F2011C00D59F0C /* BookmarksExporter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarksExporter.swift; sourceTree = ""; }; - C14882D827F2011C00D59F0C /* BookmarkOrFolder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarkOrFolder.swift; sourceTree = ""; }; C14882D927F2011C00D59F0C /* BookmarksImporter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarksImporter.swift; sourceTree = ""; }; - C14882DF27F20D9100D59F0C /* BookmarksCoreDataStorageTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarksCoreDataStorageTests.swift; sourceTree = ""; }; C14882E127F20D9A00D59F0C /* BookmarksExporterTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarksExporterTests.swift; sourceTree = ""; }; C14882E227F20D9A00D59F0C /* BookmarksImporterTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarksImporterTests.swift; sourceTree = ""; }; C14882E527F20DAA00D59F0C /* HtmlTestDataLoader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HtmlTestDataLoader.swift; sourceTree = ""; }; C14882E627F20DAB00D59F0C /* TestDataLoader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestDataLoader.swift; sourceTree = ""; }; C14882E927F20DD000D59F0C /* MockBookmarksCoreDataStorage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockBookmarksCoreDataStorage.swift; sourceTree = ""; }; C1963862283794A000298D4D /* BookmarksCachingSearch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarksCachingSearch.swift; sourceTree = ""; }; - C196387E283AAE1500298D4D /* CoreDependencyProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreDependencyProvider.swift; sourceTree = ""; }; C1B7B51B28941E980098FD6A /* HomeMessageViewModelBuilder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HomeMessageViewModelBuilder.swift; sourceTree = ""; }; C1B7B51F28941F2A0098FD6A /* RemoteMessagingStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RemoteMessagingStore.swift; sourceTree = ""; }; C1B7B52028941F2A0098FD6A /* RemoteMessageRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RemoteMessageRequest.swift; sourceTree = ""; }; @@ -1905,9 +1942,7 @@ CBF14FC627970C8A001D94D0 /* HomeMessageCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeMessageCollectionViewCell.swift; sourceTree = ""; }; EA39B7E1268A1A35000C62CD /* privacy-reference-tests */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "privacy-reference-tests"; path = "submodules/privacy-reference-tests"; sourceTree = SOURCE_ROOT; }; EAB19ED9268963510015D3EA /* DomainMatchingTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DomainMatchingTests.swift; sourceTree = ""; }; - F10307381E7C5E310059FEC7 /* NoBookmarksCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NoBookmarksCell.swift; sourceTree = ""; }; F103073A1E7C91330059FEC7 /* BookmarksDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarksDataSource.swift; sourceTree = ""; }; - F103076A1E800DC30059FEC7 /* BookmarksManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarksManager.swift; sourceTree = ""; }; F1075C911E9EF827006BE8A8 /* UserDefaultsExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserDefaultsExtension.swift; sourceTree = ""; }; F10E522C1E946F8800CE1253 /* NSAttributedStringExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSAttributedStringExtension.swift; sourceTree = ""; }; F1134EA51F3E2AF400B73467 /* StatisticsStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StatisticsStore.swift; sourceTree = ""; }; @@ -1953,7 +1988,6 @@ F16393F41ECCA85900DDD653 /* DomainsProtectionUserDefaultsStoreTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DomainsProtectionUserDefaultsStoreTests.swift; sourceTree = ""; }; F16393FE1ECCB9CC00DDD653 /* FileLoader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileLoader.swift; sourceTree = ""; }; F1668BCD1E798081008CBA04 /* BookmarksViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarksViewController.swift; sourceTree = ""; }; - F1722BC81E8BE2AB0058AAA5 /* BookmarkStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarkStore.swift; sourceTree = ""; }; F176699E1E40BC86003D3222 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Settings.storyboard; sourceTree = ""; }; F17669A71E412A12003D3222 /* MockBundle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockBundle.swift; sourceTree = ""; }; F17669D61E43401C003D3222 /* MainViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainViewController.swift; sourceTree = ""; }; @@ -1988,12 +2022,11 @@ F1CA3C3A1F045B65005FADB3 /* Authenticator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Authenticator.swift; sourceTree = ""; }; F1CB8EA21F26B39000A7171B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; F1CDD3F11F16911700BE0581 /* AboutViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AboutViewController.swift; sourceTree = ""; }; - F1CE42A51ECA0A460074A8DF /* BookmarkUserDefaults.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarkUserDefaults.swift; sourceTree = ""; }; F1D477C51F2126CC0031ED49 /* OmniBarState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OmniBarState.swift; sourceTree = ""; }; F1D477C81F2139410031ED49 /* SmallOmniBarStateTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SmallOmniBarStateTests.swift; sourceTree = ""; }; F1D477CA1F2149C40031ED49 /* Type.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Type.swift; sourceTree = ""; }; F1D796EB1E7AB8930019D451 /* SaveBookmarkActivity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SaveBookmarkActivity.swift; sourceTree = ""; }; - F1D796EF1E7B07610019D451 /* BookmarkCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarkCell.swift; sourceTree = ""; }; + F1D796EF1E7B07610019D451 /* BookmarksViewControllerCells.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarksViewControllerCells.swift; sourceTree = ""; }; F1D796F31E7C2A410019D451 /* BookmarksDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarksDelegate.swift; sourceTree = ""; }; F1D934021E610DCE00A6F0D6 /* Point.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Point.swift; path = ../Core/Point.swift; sourceTree = ""; }; F1DA2F7C1EBCF23700313F51 /* ExternalUrlSchemeTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExternalUrlSchemeTests.swift; sourceTree = ""; }; @@ -2011,7 +2044,6 @@ F1F5337B1F26A9EF00D80D4F /* UserText.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserText.swift; sourceTree = ""; }; F1FCF3B11F354F7200C23128 /* APIRequestTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = APIRequestTests.swift; sourceTree = ""; }; F40F843528C938370081AE75 /* AutofillLoginListViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutofillLoginListViewModelTests.swift; sourceTree = ""; }; - F4118EC42761725800CA91CA /* BookmarkSectionDataSources.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarkSectionDataSources.swift; sourceTree = ""; }; F4147353283BF834004AA7A5 /* AutofillContentScopeFeatureToggles.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutofillContentScopeFeatureToggles.swift; sourceTree = ""; }; F41C2DA226C1925700F9A760 /* BookmarksAndFolders.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = BookmarksAndFolders.xcdatamodel; sourceTree = ""; }; F41C2DA426C1975E00F9A760 /* BookmarksCoreDataStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksCoreDataStorage.swift; sourceTree = ""; }; @@ -2021,8 +2053,6 @@ F44D279927F331BB0037F371 /* AutofillLoginPromptViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutofillLoginPromptViewModel.swift; sourceTree = ""; }; F44D279A27F331BB0037F371 /* AutofillLoginPromptViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutofillLoginPromptViewController.swift; sourceTree = ""; }; F456B3B425810BB900B79B90 /* FireButtonAnimationSettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FireButtonAnimationSettingsViewController.swift; sourceTree = ""; }; - F45B37752760183800CDCCA9 /* BookmarkItemDetailsDataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarkItemDetailsDataSource.swift; sourceTree = ""; }; - F45B37782760277500CDCCA9 /* BookmarkFoldersSectionDataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarkFoldersSectionDataSource.swift; sourceTree = ""; }; F46FEC5627987A5F0061D9DF /* KeychainItemsDebugViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeychainItemsDebugViewController.swift; sourceTree = ""; }; F47E53D8250A97330037C686 /* OnboardingDefaultBroswerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingDefaultBroswerViewController.swift; sourceTree = ""; }; F47E53DA250A9A1C0037C686 /* Onboarding.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Onboarding.xcassets; sourceTree = ""; }; @@ -2032,11 +2062,10 @@ F4B0B795252CB35700830156 /* OnboardingWidgetsDetailsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingWidgetsDetailsViewController.swift; sourceTree = ""; }; F4C9FBF428340DDA002281CC /* AutofillInterfaceEmailTruncator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutofillInterfaceEmailTruncator.swift; sourceTree = ""; }; F4CE6D1A257EA33C00D0A6AA /* FireButtonAnimator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FireButtonAnimator.swift; sourceTree = ""; }; - F4D7220D26F15529007D6193 /* AddOrEditBookmarkViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddOrEditBookmarkViewController.swift; sourceTree = ""; }; F4D7220F26F29A70007D6193 /* BookmarkDetailsCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarkDetailsCell.swift; sourceTree = ""; }; F4D9C4F925117A0F00814B71 /* HomeMessageStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeMessageStorage.swift; sourceTree = ""; }; F4E1936525AF722F001D2666 /* HighlightCutOutView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HighlightCutOutView.swift; sourceTree = ""; }; - F4F6DFB126E6AEC100ED7E12 /* AddOrEditBookmarkFolderViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddOrEditBookmarkFolderViewController.swift; sourceTree = ""; }; + F4F6DFB126E6AEC100ED7E12 /* AddOrEditBookmarkViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddOrEditBookmarkViewController.swift; sourceTree = ""; }; F4F6DFB326E6B63700ED7E12 /* BookmarkFolderCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarkFolderCell.swift; sourceTree = ""; }; F4F6DFB526E6B71300ED7E12 /* BookmarkFoldersTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarkFoldersTableViewController.swift; sourceTree = ""; }; F4F6DFB726EA9AA600ED7E12 /* BookmarksTextFieldCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksTextFieldCell.swift; sourceTree = ""; }; @@ -2078,7 +2107,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 85AD4171292287C300610581 /* Crashes in Frameworks */, + 85AD4171292287C300610581 /* (null) in Frameworks */, F486D3362506A037002D07D7 /* OHHTTPStubs in Frameworks */, F486D3382506A225002D07D7 /* OHHTTPStubsSwift in Frameworks */, ); @@ -2118,10 +2147,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 9825F9D2293F2DE900F220F2 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 98D4B7DF2944DDBD0068814D /* Core.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; F143C2E01E4A4CD400CFDE3A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 98A50962294B48A400D10880 /* Bookmarks in Frameworks */, 1E60989B290009C700A508F9 /* Common in Frameworks */, 1E60989D290011E600A508F9 /* ContentBlocking in Frameworks */, 4B82E98025B634B800656FE7 /* TrackerRadarKit in Frameworks */, @@ -2623,6 +2661,7 @@ 85482D892462DCD100EDEDD1 /* OpenAction */, 8512EA5224ED30D20073EE19 /* Widgets */, 025CCFE32582601C001CD5BB /* FingerprintingUITests */, + 9825F9D9293F2E5F00F220F2 /* PerformanceTests */, 85D33FCC25C97B6E002B91A6 /* IntegrationTests */, F1AA545F1E48D90700223211 /* Frameworks */, 31E69A60280F4BAD00478327 /* LocalPackages */, @@ -2630,6 +2669,7 @@ 83ED3B8D1FA8E63700B47556 /* README.md */, 83ED3B8C1FA8E61D00B47556 /* ManualTestsScript.md */, 85A313962028E78A00327D00 /* release_notes.txt */, + 9825F9D8293F2DE900F220F2 /* IntegrationTests copy-Info.plist */, ); sourceTree = ""; }; @@ -2646,6 +2686,7 @@ 8512EA4D24ED30D20073EE19 /* WidgetsExtension.appex */, 025CCFE22582601C001CD5BB /* FingerprintingUITests.xctest */, 85D33FCB25C97B6E002B91A6 /* IntegrationTests.xctest */, + 9825F9D7293F2DE900F220F2 /* PerformanceTests.xctest */, ); name = Products; sourceTree = ""; @@ -3020,6 +3061,20 @@ name = AutoClear; sourceTree = ""; }; + 9825F9D9293F2E5F00F220F2 /* PerformanceTests */ = { + isa = PBXGroup; + children = ( + 98BFA910294A2086004EA636 /* bookmarks_3k.html */, + 98D4B7E22949C4270068814D /* bookmarks_30k.html */, + 9825F9DA293F2E8700F220F2 /* BookmarksTestData.swift */, + 98D4B7D9294407AC0068814D /* BookmarksSearchPerformanceTests.swift */, + 98D4B7E02949C3E80068814D /* BookmarksImportPerformanceTests.swift */, + 98D4B7E42949EFCE0068814D /* BookmarksExportPerformanceTests.swift */, + 98BFA912294A3DDC004EA636 /* BookmarksEditModelPerformanceTests.swift */, + ); + path = PerformanceTests; + sourceTree = ""; + }; 982E562C222C39E2008D861B /* Model */ = { isa = PBXGroup; children = ( @@ -3056,6 +3111,19 @@ name = ContentBlocker; sourceTree = ""; }; + 987130BD294AAB8200AB05E0 /* BSK */ = { + isa = PBXGroup; + children = ( + 987130BF294AAB9E00AB05E0 /* BookmarkEditorViewModelTests.swift */, + 987130C0294AAB9E00AB05E0 /* BookmarkListViewModelTests.swift */, + 987130C3294AAB9E00AB05E0 /* BookmarkUtilsTests.swift */, + 987130BE294AAB9E00AB05E0 /* FavoriteListViewModelTests.swift */, + 987130C1294AAB9E00AB05E0 /* MenuBookmarksViewModelTests.swift */, + 987130C2294AAB9E00AB05E0 /* BookmarksTestHelpers.swift */, + ); + name = BSK; + sourceTree = ""; + }; 989DF82722C628DC0077AA55 /* API */ = { isa = PBXGroup; children = ( @@ -3216,7 +3284,6 @@ C14882D627F2010700D59F0C /* ImportExport */ = { isa = PBXGroup; children = ( - C14882D827F2011C00D59F0C /* BookmarkOrFolder.swift */, C14882D727F2011C00D59F0C /* BookmarksExporter.swift */, C14882D927F2011C00D59F0C /* BookmarksImporter.swift */, ); @@ -3226,9 +3293,9 @@ C14882DD27F20D7300D59F0C /* Bookmarks */ = { isa = PBXGroup; children = ( + 987130BD294AAB8200AB05E0 /* BSK */, + 98AAF8E3292EB46000DBDF06 /* BookmarksMigrationTests.swift */, 98983095255B5019003339A2 /* BookmarksCachingSearchTests.swift */, - C14882DF27F20D9100D59F0C /* BookmarksCoreDataStorageTests.swift */, - 31DB526228A94113008A7EFB /* BookmarksCoreDataFixTests.swift */, C14882DE27F20D7E00D59F0C /* ImportExport */, ); name = Bookmarks; @@ -3429,13 +3496,12 @@ F12D98401F266B30003C2EE3 /* DuckDuckGo */ = { isa = PBXGroup; children = ( - 317045BE2858C69A0016ED1F /* Utils */, - 31C138A127A334F600FFD4B2 /* Downloads */, F17669A21E411D63003D3222 /* Application */, 981FED7222045FFA008488D7 /* AutoClear */, 85E5602D26541D0900F4DC44 /* AutoComplete */, F40F843228C92B1C0081AE75 /* Autofill */, 98559FD0267099F400A83094 /* ContentBlocker */, + 31C138A127A334F600FFD4B2 /* Downloads */, 83134D7F20E2E013006CE65D /* Feedback */, 8588026724E4249800C24AB6 /* iPad */, 851DFD88212C5ED600D95F20 /* Main */, @@ -3446,6 +3512,7 @@ 98EA2C3A218B9A880023E1DC /* Themes */, F12790DD1EBBDDF3001D3AEC /* Tutorials */, F194FAF91F14E605009B4DF8 /* UserInterface */, + 317045BE2858C69A0016ED1F /* Utils */, 4B6484F927FFCF520050A7A1 /* Waitlist */, ); name = DuckDuckGo; @@ -3479,6 +3546,7 @@ 85058365219AE9EA00ED4EDB /* HomePageConfiguration.swift */, F16390811E648B7A005B4550 /* HomeViewController.swift */, 85058367219C49E000ED4EDB /* HomeViewSectionRenderers.swift */, + 85C861E528FF1B5F00189466 /* HomeViewSectionRenderersExtension.swift */, 85B9CB8321AEBD72009001F1 /* Cells */, 85374D3621AC417200FF5A1E /* Renderers */, ); @@ -3526,6 +3594,7 @@ 31B524562715BB23002225AB /* WebJSAlert.swift */, B60DFF062872B64B0061E7C2 /* JSAlertController.swift */, B6BA95E728924730004ABA20 /* JSAlertController.storyboard */, + 85010501292FB1000033978F /* BookmarkFaviconUpdater.swift */, ); name = UI; sourceTree = ""; @@ -3533,11 +3602,12 @@ F13B4BF71F18C9E800814661 /* Tabs */ = { isa = PBXGroup; children = ( - F13B4BF81F18CA0600814661 /* TabsModelTests.swift */, - F13B4BFA1F18E3D900814661 /* TabsModelPersistenceExtensionTests.swift */, - F189AED61F18F6DE001EBAE1 /* TabTests.swift */, + 85010503292FFB080033978F /* BookmarkFaviconUpdaterTests.swift */, 8565A34C1FC8DFE400239327 /* LaunchTabNotificationTests.swift */, 984D035F24AF49160066CFB8 /* TabPreviewsSourceTests.swift */, + F13B4BFA1F18E3D900814661 /* TabsModelPersistenceExtensionTests.swift */, + F13B4BF81F18CA0600814661 /* TabsModelTests.swift */, + F189AED61F18F6DE001EBAE1 /* TabTests.swift */, ); name = Tabs; sourceTree = ""; @@ -3560,7 +3630,6 @@ F1134EA71F3E2B3500B73467 /* Statistics */, F143C3191E4A99DD00CFDE3A /* Utilities */, F143C3311E4A9A6A00CFDE3A /* Web */, - C196387E283AAE1500298D4D /* CoreDependencyProvider.swift */, CBAA195B27C3982A00A4BD49 /* PrivacyFeatures.swift */, ); path = Core; @@ -3635,20 +3704,17 @@ F1668BCC1E798025008CBA04 /* Bookmarks */ = { isa = PBXGroup; children = ( - F1D796EF1E7B07610019D451 /* BookmarkCell.swift */, - F1E4A4431EE89460006F2EAE /* Bookmarks.storyboard */, - F4F6DFB326E6B63700ED7E12 /* BookmarkFolderCell.swift */, - F4F6DFB726EA9AA600ED7E12 /* BookmarksTextFieldCell.swift */, + F4F6DFB126E6AEC100ED7E12 /* AddOrEditBookmarkViewController.swift */, F4D7220F26F29A70007D6193 /* BookmarkDetailsCell.swift */, - F4118EC32761721D00CA91CA /* BookmarkDataSources */, - F45B37772760275E00CDCCA9 /* BookmarkDetailsDataSources */, + F4F6DFB326E6B63700ED7E12 /* BookmarkFolderCell.swift */, + F4F6DFB526E6B71300ED7E12 /* BookmarkFoldersTableViewController.swift */, + F1E4A4431EE89460006F2EAE /* Bookmarks.storyboard */, + F103073A1E7C91330059FEC7 /* BookmarksDataSource.swift */, F1D796F31E7C2A410019D451 /* BookmarksDelegate.swift */, - F103076A1E800DC30059FEC7 /* BookmarksManager.swift */, + F4F6DFB726EA9AA600ED7E12 /* BookmarksTextFieldCell.swift */, F1668BCD1E798081008CBA04 /* BookmarksViewController.swift */, - F4D7220D26F15529007D6193 /* AddOrEditBookmarkViewController.swift */, - F4F6DFB126E6AEC100ED7E12 /* AddOrEditBookmarkFolderViewController.swift */, - F4F6DFB526E6B71300ED7E12 /* BookmarkFoldersTableViewController.swift */, - F10307381E7C5E310059FEC7 /* NoBookmarksCell.swift */, + F1D796EF1E7B07610019D451 /* BookmarksViewControllerCells.swift */, + 85E58C2B28FDA94F006A801A /* FavoritesViewController.swift */, F1D796EB1E7AB8930019D451 /* SaveBookmarkActivity.swift */, ); name = Bookmarks; @@ -3889,23 +3955,24 @@ F1CE42A71ECA0A520074A8DF /* Bookmarks */ = { isa = PBXGroup; children = ( + 8501186529001D6900BDEE27 /* BookmarksDatabase.swift */, + 9856A1982933D2EB00ACB44F /* BookmarksModelsErrorHandling.swift */, C14882D627F2010700D59F0C /* ImportExport */, - F1CE42A81ECA0A660074A8DF /* Store */, + F1CE42A81ECA0A660074A8DF /* LegacyStore */, ); name = Bookmarks; sourceTree = ""; }; - F1CE42A81ECA0A660074A8DF /* Store */ = { + F1CE42A81ECA0A660074A8DF /* LegacyStore */ = { isa = PBXGroup; children = ( C1963862283794A000298D4D /* BookmarksCachingSearch.swift */, - F1722BC81E8BE2AB0058AAA5 /* BookmarkStore.swift */, - F1CE42A51ECA0A460074A8DF /* BookmarkUserDefaults.swift */, F41C2DA126C1925600F9A760 /* BookmarksAndFolders.xcdatamodeld */, F41C2DA426C1975E00F9A760 /* BookmarksCoreDataStorage.swift */, F4F6DFB926EFF28A00ED7E12 /* BookmarkObjects.swift */, + 98B000522915C46E0034BCA0 /* LegacyBookmarksStoreMigration.swift */, ); - name = Store; + name = LegacyStore; sourceTree = ""; }; F1D477C71F2139210031ED49 /* OmniBar */ = { @@ -4023,15 +4090,6 @@ name = Autofill; sourceTree = ""; }; - F4118EC32761721D00CA91CA /* BookmarkDataSources */ = { - isa = PBXGroup; - children = ( - F103073A1E7C91330059FEC7 /* BookmarksDataSource.swift */, - F4118EC42761725800CA91CA /* BookmarkSectionDataSources.swift */, - ); - name = BookmarkDataSources; - sourceTree = ""; - }; F44D279327F331930037F371 /* Autofill */ = { isa = PBXGroup; children = ( @@ -4048,15 +4106,6 @@ name = Autofill; sourceTree = ""; }; - F45B37772760275E00CDCCA9 /* BookmarkDetailsDataSources */ = { - isa = PBXGroup; - children = ( - F45B37752760183800CDCCA9 /* BookmarkItemDetailsDataSource.swift */, - F45B37782760277500CDCCA9 /* BookmarkFoldersSectionDataSource.swift */, - ); - name = BookmarkDetailsDataSources; - sourceTree = ""; - }; F4A96BDA284518CE0025C8E0 /* FeatureFlagging */ = { isa = PBXGroup; children = ( @@ -4201,7 +4250,6 @@ packageProductDependencies = ( F486D3352506A037002D07D7 /* OHHTTPStubs */, F486D3372506A225002D07D7 /* OHHTTPStubsSwift */, - 85AD4170292287C300610581 /* Crashes */, ); productName = DuckDuckGoTests; productReference = 84E341A61E2F7EFB00BDBA6F /* UnitTests.xctest */; @@ -4283,6 +4331,26 @@ productReference = 85F21DAD210F5E32002631A6 /* AtbUITests.xctest */; productType = "com.apple.product-type.bundle.ui-testing"; }; + 9825F9CB293F2DE900F220F2 /* PerformanceTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9825F9D4293F2DE900F220F2 /* Build configuration list for PBXNativeTarget "PerformanceTests" */; + buildPhases = ( + 9825F9CE293F2DE900F220F2 /* Sources */, + 9825F9D2293F2DE900F220F2 /* Frameworks */, + 9825F9D3293F2DE900F220F2 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9825F9CC293F2DE900F220F2 /* PBXTargetDependency */, + ); + name = PerformanceTests; + packageProductDependencies = ( + ); + productName = IntegrationTests; + productReference = 9825F9D7293F2DE900F220F2 /* PerformanceTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; 98A54A8022AFCB2C00E541F4 /* Instruments */ = { isa = PBXNativeTarget; buildConfigurationList = 98A54A8522AFCB2D00E541F4 /* Build configuration list for PBXNativeTarget "Instruments" */; @@ -4321,6 +4389,7 @@ 1E60989C290011E600A508F9 /* ContentBlocking */, 1E60989E290011E600A508F9 /* PrivacyDashboard */, 1E6098A0290011E600A508F9 /* UserScript */, + 98A50961294B48A400D10880 /* Bookmarks */, ); productName = Core; productReference = F143C2E41E4A4CD400CFDE3A /* Core.framework */; @@ -4381,6 +4450,9 @@ ProvisioningStyle = Automatic; TestTargetID = 84E341911E2F7EFB00BDBA6F; }; + 9825F9CB293F2DE900F220F2 = { + LastSwiftMigration = 1410; + }; 98A54A8022AFCB2C00E541F4 = { CreatedOnToolsVersion = 10.2; ProvisioningStyle = Automatic; @@ -4453,6 +4525,7 @@ 84E341A51E2F7EFB00BDBA6F /* UnitTests */, 025CCFE12582601C001CD5BB /* FingerprintingUITests */, 85D33FCA25C97B6E002B91A6 /* IntegrationTests */, + 9825F9CB293F2DE900F220F2 /* PerformanceTests */, ); }; /* End PBXProject section */ @@ -4636,6 +4709,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 9825F9D3293F2DE900F220F2 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 98BFA911294A2086004EA636 /* bookmarks_3k.html in Resources */, + 98D4B7E32949C4270068814D /* bookmarks_30k.html in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; F143C2E21E4A4CD400CFDE3A /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -4828,7 +4910,7 @@ 314C92BA27C3E7CB0042EC96 /* QuickLookContainerViewController.swift in Sources */, 855D914D2063EF6A00C4B448 /* TabSwitcherTransition.swift in Sources */, 4B6484F027FD1E350050A7A1 /* FontExtension.swift in Sources */, - F4F6DFB226E6AEC100ED7E12 /* AddOrEditBookmarkFolderViewController.swift in Sources */, + F4F6DFB226E6AEC100ED7E12 /* AddOrEditBookmarkViewController.swift in Sources */, F44D279F27F331BB0037F371 /* AutofillLoginPromptViewController.swift in Sources */, F1F5337C1F26A9EF00D80D4F /* UserText.swift in Sources */, 1E8AD1C727BE9B2900ABA377 /* DownloadsListDataSource.swift in Sources */, @@ -4907,7 +4989,6 @@ 85EE7F59224673C5000FE757 /* WebContainerNavigationController.swift in Sources */, F4C9FBF528340DDA002281CC /* AutofillInterfaceEmailTruncator.swift in Sources */, 6AC6DAB328804F97002723C0 /* BarsAnimator.swift in Sources */, - F10307391E7C5E310059FEC7 /* NoBookmarksCell.swift in Sources */, B60DFF072872B64B0061E7C2 /* JSAlertController.swift in Sources */, 981FED6E22025151008488D7 /* BlankSnapshotViewController.swift in Sources */, 98F3A1DC217B373E0011A0D4 /* DarkTheme.swift in Sources */, @@ -4970,6 +5051,7 @@ 8531A08E1F9950E6000484F0 /* UnprotectedSitesViewController.swift in Sources */, CBD4F13C279EBF4A00B20FD7 /* HomeMessage.swift in Sources */, 3132FA2C27A07A1B00DD7A12 /* FilePreview.swift in Sources */, + 85C861E628FF1B5F00189466 /* HomeViewSectionRenderersExtension.swift in Sources */, F1D477C61F2126CC0031ED49 /* OmniBarState.swift in Sources */, 85F2FFCD2211F615006BB258 /* MainViewController+KeyCommands.swift in Sources */, 858650D9246B0D3C00C36F8A /* DaxOnboardingViewController.swift in Sources */, @@ -4992,7 +5074,7 @@ AA4D6A6A23DB87B1007E8790 /* AppIconManager.swift in Sources */, 8563A03C1F9288D600F04442 /* BrowserChromeManager.swift in Sources */, 980891A32237146B00313A70 /* Feedback.swift in Sources */, - F1D796F01E7B07610019D451 /* BookmarkCell.swift in Sources */, + F1D796F01E7B07610019D451 /* BookmarksViewControllerCells.swift in Sources */, 85058369219F424500ED4EDB /* UIColorExtension.swift in Sources */, 85058368219C49E000ED4EDB /* HomeViewSectionRenderers.swift in Sources */, F456B3B525810BB900B79B90 /* FireButtonAnimationSettingsViewController.swift in Sources */, @@ -5000,17 +5082,16 @@ B6CB93E5286445AB0090FEB4 /* Base64DownloadSession.swift in Sources */, 1EEF387D285B1A1100383393 /* TrackerImageCache.swift in Sources */, 3151F0EC27357FEE00226F58 /* VoiceSearchFeedbackViewModel.swift in Sources */, + 85010502292FB1000033978F /* BookmarkFaviconUpdater.swift in Sources */, F1C4A70E1E57725800A6CA1B /* OmniBar.swift in Sources */, 981CA7EA2617797500E119D5 /* MainViewController+AddFavoriteFlow.swift in Sources */, 9872D205247DCAC100CEF398 /* TabPreviewsSource.swift in Sources */, F130D73A1E5776C500C45811 /* OmniBarDelegate.swift in Sources */, 85DFEDEF24C7EA3B00973FE7 /* SmallOmniBarState.swift in Sources */, 4B0295192537BC6700E00CEF /* ConfigurationDebugViewController.swift in Sources */, - F4118EC52761725800CA91CA /* BookmarkSectionDataSources.swift in Sources */, 984D035C24AE15CD0066CFB8 /* TabSwitcherSettings.swift in Sources */, 98B31292218CCB8C00E54DE1 /* AppDependencyProvider.swift in Sources */, 02C57C4B2514FEFB009E5129 /* DoNotSellSettingsViewController.swift in Sources */, - F4D7220E26F15529007D6193 /* AddOrEditBookmarkViewController.swift in Sources */, 8540BBA22440857A00017FE4 /* PreserveLoginsWorker.swift in Sources */, 85DFEDF924CF3D0E00973FE7 /* TabsBarCell.swift in Sources */, F17922DB1E717C8D006E3D97 /* Suggestion.swift in Sources */, @@ -5025,10 +5106,8 @@ 1EEF124E2850EADE003DDE57 /* PrivacyIconView.swift in Sources */, F159BDA41F0BDB5A00B4A01D /* TabViewController.swift in Sources */, F44D279C27F331BB0037F371 /* AutofillLoginPromptView.swift in Sources */, - F103076B1E800DC30059FEC7 /* BookmarksManager.swift in Sources */, CBD4F13E279EBFAB00B20FD7 /* HomeMessageView.swift in Sources */, 851DFD87212C39D300D95F20 /* TabSwitcherButton.swift in Sources */, - F45B37792760277500CDCCA9 /* BookmarkFoldersSectionDataSource.swift in Sources */, 8505836A219F424500ED4EDB /* UIAlertControllerExtension.swift in Sources */, 983EABB8236198F6003948D1 /* DatabaseMigration.swift in Sources */, 314C92B827C3DD660042EC96 /* QuickLookPreviewView.swift in Sources */, @@ -5042,7 +5121,6 @@ F1D796EE1E7AF2EB0019D451 /* UIViewControllerExtension.swift in Sources */, 1EE411F12857C3640003FE64 /* TrackerAnimationImageProvider.swift in Sources */, F15D43201E706CC500BF2CDC /* AutocompleteViewController.swift in Sources */, - F45B37762760183800CDCCA9 /* BookmarkItemDetailsDataSource.swift in Sources */, 98728E822417E3300033960E /* BrokenSiteInfo.swift in Sources */, 31EF52E1281B3BDC0034796E /* AutofillLoginListItemViewModel.swift in Sources */, 1E4FAA6627D8DFC800ADC5B3 /* CompleteDownloadRowViewModel.swift in Sources */, @@ -5060,6 +5138,7 @@ 3151F0EA27357FBA00226F58 /* SpeechRecognizer.swift in Sources */, F17922E21E71CD67006E3D97 /* NoSuggestionsTableViewCell.swift in Sources */, 985AAE4524899369007A43EC /* HomeScreenTransition.swift in Sources */, + 85E58C2C28FDA94F006A801A /* FavoritesViewController.swift in Sources */, 1E8AD1CF27C000A000ABA377 /* CompleteDownloadRow.swift in Sources */, 98D98A8F25ED952F00D8E3DF /* BrowsingMenuButton.swift in Sources */, 9865DFF922A8220D00D27829 /* FavoritesOverlay.swift in Sources */, @@ -5115,10 +5194,10 @@ 8536A1C8209AF2410050739E /* MockVariantManager.swift in Sources */, C1B7B53428944EFA0098FD6A /* CoreDataTestUtilities.swift in Sources */, 85C271E61FD065D8007216B4 /* AppHTTPSUpgradeStoreTests.swift in Sources */, - C14882E027F20D9100D59F0C /* BookmarksCoreDataStorageTests.swift in Sources */, 85C11E4120904BBE00BFFEB4 /* VariantManagerTests.swift in Sources */, F1134ECE1F40EA9C00B73467 /* AtbParserTests.swift in Sources */, F189AEE41F18FDAF001EBAE1 /* LinkTests.swift in Sources */, + 987130C7294AAB9F00AB05E0 /* MenuBookmarksViewModelTests.swift in Sources */, 858650D32469BFAD00C36F8A /* DaxDialogTests.swift in Sources */, 31C138B227A4097800FFD4B2 /* DownloadTestsHelper.swift in Sources */, 98EA2C41218BB5400023E1DC /* SettingsViewControllerTests.swift in Sources */, @@ -5129,16 +5208,19 @@ F198D78E1E39762C0088DA8A /* StringExtensionTests.swift in Sources */, 31B1FA87286EFC5C00CA3C1C /* XCTestCaseExtension.swift in Sources */, 1E8146AE28C8ABF400D1AF63 /* PrivacyIconLogicTests.swift in Sources */, + 987130C4294AAB9F00AB05E0 /* FavoriteListViewModelTests.swift in Sources */, 8565A34D1FC8DFE400239327 /* LaunchTabNotificationTests.swift in Sources */, F1134EC41F40E25800B73467 /* AppVersionExtensionTests.swift in Sources */, 4B62C4BA25B930DD008912C6 /* AppConfigurationFetchTests.swift in Sources */, 31C7D71C27515A6300A95D0A /* MockVoiceSearchHelper.swift in Sources */, 8598F67B2405EB8D00FBC70C /* KeyboardSettingsTests.swift in Sources */, + 98AAF8E4292EB46000DBDF06 /* BookmarksMigrationTests.swift in Sources */, 85D2187224BF24F2004373D2 /* NotFoundCachingDownloaderTests.swift in Sources */, C111B26927F579EF006558B1 /* BookmarkOrFolderTests.swift in Sources */, F4A96BE328479DE30025C8E0 /* FeatureFlaggingTests.swift in Sources */, 851CD674244D7E6000331B98 /* UserDefaultsExtension.swift in Sources */, 850559D223CF710C0055C0D5 /* WebCacheManagerTests.swift in Sources */, + 987130C5294AAB9F00AB05E0 /* BookmarkEditorViewModelTests.swift in Sources */, 8341D807212D5E8D000514C2 /* HashExtensionTest.swift in Sources */, C1D21E2F293A599C006E5A05 /* AutofillLoginSessionTests.swift in Sources */, 85D2187924BF6B8B004373D2 /* FaviconSourcesProviderTests.swift in Sources */, @@ -5154,7 +5236,6 @@ 4BC21A2F27238B7500229F0E /* RunLoopExtensionTests.swift in Sources */, 314A3EFC293905EC00D3D4C8 /* BrokenSiteReportingTests.swift in Sources */, 851B1283221FE65E004781BC /* ImproveOnboardingExperiment1Tests.swift in Sources */, - 31DB526328A94113008A7EFB /* BookmarksCoreDataFixTests.swift in Sources */, F194FAFB1F14E622009B4DF8 /* UIFontExtensionTests.swift in Sources */, F40F843728C939760081AE75 /* AutofillLoginListViewModelTests.swift in Sources */, C14882E827F20DAB00D59F0C /* TestDataLoader.swift in Sources */, @@ -5164,7 +5245,10 @@ 98DDF9F322C4029D00DE38DB /* InitHelpers.swift in Sources */, B6AD9E3628D4510A0019CDE9 /* ContentBlockerRulesManagerMock.swift in Sources */, F1E092C11E92A72E00732CCC /* UIColorExtensionTests.swift in Sources */, + 85010504292FFB080033978F /* BookmarkFaviconUpdaterTests.swift in Sources */, F1D477C91F2139410031ED49 /* SmallOmniBarStateTests.swift in Sources */, + 987130C9294AAB9F00AB05E0 /* BookmarkUtilsTests.swift in Sources */, + 987130C8294AAB9F00AB05E0 /* BookmarksTestHelpers.swift in Sources */, F198D7981E3A45D90088DA8A /* WKWebViewConfigurationExtensionTests.swift in Sources */, 8521FDE6238D414B00A44CC3 /* FileStoreTests.swift in Sources */, F14E491F1E391CE900DC037C /* URLExtensionTests.swift in Sources */, @@ -5175,6 +5259,7 @@ 9847C00527A41A0A00DB07AA /* WebViewTestHelper.swift in Sources */, 3170048227A9504F00C03F35 /* DownloadMocks.swift in Sources */, 317045C02858C6B90016ED1F /* AutofillInterfaceEmailTruncatorTests.swift in Sources */, + 987130C6294AAB9F00AB05E0 /* BookmarkListViewModelTests.swift in Sources */, F1134ED21F40EF3A00B73467 /* JsonTestDataLoader.swift in Sources */, 850250B520D80419002199C7 /* AtbAndVariantCleanupTests.swift in Sources */, 834DF992248FDE1A0075EA48 /* UserAgentTests.swift in Sources */, @@ -5241,6 +5326,18 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 9825F9CE293F2DE900F220F2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 98D4B7E52949EFCE0068814D /* BookmarksExportPerformanceTests.swift in Sources */, + 98D4B7DA294407AC0068814D /* BookmarksSearchPerformanceTests.swift in Sources */, + 98D4B7E12949C3E80068814D /* BookmarksImportPerformanceTests.swift in Sources */, + 9825F9DB293F2E8700F220F2 /* BookmarksTestData.swift in Sources */, + 98BFA913294A3DDC004EA636 /* BookmarksEditModelPerformanceTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 98A54A7F22AFCB2C00E541F4 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -5277,11 +5374,10 @@ F143C3271E4A9A0E00CFDE3A /* Logging.swift in Sources */, 85372447220DD103009D09CD /* UIKeyCommandExtension.swift in Sources */, 85A1B3B220C6CD9900C18F15 /* CookieStorage.swift in Sources */, - 1EE411F52857C95B0003FE64 /* CollectionExtension.swift in Sources */, + 9856A1992933D2EB00ACB44F /* BookmarksModelsErrorHandling.swift in Sources */, 850559D023CF647C0055C0D5 /* PreserveLogins.swift in Sources */, C1CCCBA7283E101500CF3791 /* FaviconsHelper.swift in Sources */, 9813F79822BA71AA00A80EDB /* StorageCache.swift in Sources */, - C196387F283AAE1500298D4D /* CoreDependencyProvider.swift in Sources */, F1134EB51F40AEEA00B73467 /* StatisticsLoader.swift in Sources */, CB2A7EF4285383B300885F67 /* AppLastCompiledRulesStore.swift in Sources */, 4B75EA9226A266CB00018634 /* PrintingUserScript.swift in Sources */, @@ -5295,6 +5391,7 @@ 4B60ACA1252EC0B100E8D219 /* FullScreenVideoUserScript.swift in Sources */, F1A886781F29394E0096251E /* WebCacheManager.swift in Sources */, C14882DA27F2011C00D59F0C /* BookmarksExporter.swift in Sources */, + 854858E32937BC550063610B /* CollectionExtension.swift in Sources */, 8331AEDE20AA37560024962B /* APIHeaders.swift in Sources */, 98F6EA472863124100720957 /* ContentBlockerRulesLists.swift in Sources */, 9896632422C56716007BE4FE /* EtagStorage.swift in Sources */, @@ -5304,6 +5401,7 @@ 4BE2756827304F57006B20B0 /* URLRequestExtension.swift in Sources */, 85BA79911F6FF75000F59015 /* ContentBlockerStoreConstants.swift in Sources */, 85BDC3142434D8F80053DB07 /* DebugUserScript.swift in Sources */, + 85011867290028C400BDEE27 /* BookmarksDatabase.swift in Sources */, 85D2187B24BF9F85004373D2 /* FaviconUserScript.swift in Sources */, 85047B861F6887D2002A95D8 /* ContentBlockerLoader.swift in Sources */, 85F21DC621145DD5002631A6 /* global.swift in Sources */, @@ -5313,12 +5411,10 @@ 85CA53A824BB343700A6288C /* Favicons.swift in Sources */, F143C3181E4A99D200CFDE3A /* Link.swift in Sources */, 1E61BC2A27074BED00B2854D /* TextSizeUserScript.swift in Sources */, - F1CE42A61ECA0A460074A8DF /* BookmarkUserDefaults.swift in Sources */, CB2A7EF128410DF700885F67 /* PixelEvent.swift in Sources */, 85D2187624BF6164004373D2 /* FaviconSourcesProvider.swift in Sources */, + 98B000532915C46E0034BCA0 /* LegacyBookmarksStoreMigration.swift in Sources */, 85200FA11FBC5BB5001AF290 /* DDGPersistenceContainer.swift in Sources */, - C14882DB27F2011C00D59F0C /* BookmarkOrFolder.swift in Sources */, - F1722BC91E8BE2AB0058AAA5 /* BookmarkStore.swift in Sources */, 1E4DCF4C27B6A4CB00961E25 /* URLFileExtension.swift in Sources */, 85F45B2A1F875DFF00DB1978 /* ContentBlockerRequest.swift in Sources */, F1D477CB1F2149C40031ED49 /* Type.swift in Sources */, @@ -5381,6 +5477,11 @@ target = 84E341911E2F7EFB00BDBA6F /* DuckDuckGo */; targetProxy = 85F21DB2210F5E32002631A6 /* PBXContainerItemProxy */; }; + 9825F9CC293F2DE900F220F2 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 84E341911E2F7EFB00BDBA6F /* DuckDuckGo */; + targetProxy = 9825F9CD293F2DE900F220F2 /* PBXContainerItemProxy */; + }; F143C2EA1E4A4CD400CFDE3A /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = F143C2E31E4A4CD400CFDE3A /* Core */; @@ -6734,6 +6835,66 @@ }; name = Release; }; + 9825F9D5293F2DE900F220F2 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = "IntegrationTests copy-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 14.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.duckduckgo.mobile.ios.IntegrationTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/DuckDuckGo.app/DuckDuckGo"; + }; + name = Debug; + }; + 9825F9D6293F2DE900F220F2 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = "IntegrationTests copy-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 14.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.duckduckgo.mobile.ios.IntegrationTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/DuckDuckGo.app/DuckDuckGo"; + }; + name = Release; + }; 98A54A8622AFCB2D00E541F4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -6908,6 +7069,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 9825F9D4293F2DE900F220F2 /* Build configuration list for PBXNativeTarget "PerformanceTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9825F9D5293F2DE900F220F2 /* Debug */, + 9825F9D6293F2DE900F220F2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 98A54A8522AFCB2D00E541F4 /* Build configuration list for PBXNativeTarget "Instruments" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -6950,7 +7120,7 @@ repositoryURL = "https://github.com/DuckDuckGo/BrowserServicesKit"; requirement = { kind = exactVersion; - version = 41.1.0; + version = 42.0.0; }; }; C14882EB27F211A000D59F0C /* XCRemoteSwiftPackageReference "SwiftSoup" */ = { @@ -7022,11 +7192,6 @@ package = 4B82E97E25B634B800656FE7 /* XCRemoteSwiftPackageReference "TrackerRadarKit" */; productName = TrackerRadarKit; }; - 85AD4170292287C300610581 /* Crashes */ = { - isa = XCSwiftPackageProductDependency; - package = 98A16C2928A11BDE00A6C003 /* XCRemoteSwiftPackageReference "BrowserServicesKit" */; - productName = Crashes; - }; 85D598862927F84C00FA3B1B /* Crashes */ = { isa = XCSwiftPackageProductDependency; package = 98A16C2928A11BDE00A6C003 /* XCRemoteSwiftPackageReference "BrowserServicesKit" */; @@ -7037,6 +7202,11 @@ package = 98A16C2928A11BDE00A6C003 /* XCRemoteSwiftPackageReference "BrowserServicesKit" */; productName = BrowserServicesKit; }; + 98A50961294B48A400D10880 /* Bookmarks */ = { + isa = XCSwiftPackageProductDependency; + package = 98A16C2928A11BDE00A6C003 /* XCRemoteSwiftPackageReference "BrowserServicesKit" */; + productName = Bookmarks; + }; C14882EC27F211A000D59F0C /* SwiftSoup */ = { isa = XCSwiftPackageProductDependency; package = C14882EB27F211A000D59F0C /* XCRemoteSwiftPackageReference "SwiftSoup" */; diff --git a/DuckDuckGo.xcodeproj/xcshareddata/xcschemes/DuckDuckGo.xcscheme b/DuckDuckGo.xcodeproj/xcshareddata/xcschemes/DuckDuckGo.xcscheme index a75b113084..97425477a9 100644 --- a/DuckDuckGo.xcodeproj/xcshareddata/xcschemes/DuckDuckGo.xcscheme +++ b/DuckDuckGo.xcodeproj/xcshareddata/xcschemes/DuckDuckGo.xcscheme @@ -43,6 +43,10 @@ argument = "testing" isEnabled = "YES"> + + + + + + + + + + + + + + + + + + + + + + diff --git a/DuckDuckGo/AddOrEditBookmarkFolderViewController.swift b/DuckDuckGo/AddOrEditBookmarkFolderViewController.swift deleted file mode 100644 index 2ff9479366..0000000000 --- a/DuckDuckGo/AddOrEditBookmarkFolderViewController.swift +++ /dev/null @@ -1,117 +0,0 @@ -// -// AddOrEditBookmarkFolderViewController.swift -// DuckDuckGo -// -// Copyright © 2021 DuckDuckGo. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import UIKit -import Core - -class AddOrEditBookmarkFolderViewController: UIViewController { - - weak var createdNewFolderDelegate: BookmarkItemDetailsDataSourceDidSaveDelegate? - - private var foldersViewController: BookmarkFoldersViewController? - - private var existingFolder: BookmarkFolder? - private var initialParentFolder: BookmarkFolder? - - override func viewDidLoad() { - super.viewDidLoad() - setUpTitle() - setUpSaveButton() - - applyTheme(ThemeManager.shared.currentTheme) - } - - func setUpTitle() { - if existingFolder != nil { - title = UserText.editFolderScreenTitle - } else { - title = UserText.addFolderScreenTitle - } - } - - func setUpSaveButton() { - guard let saveButton = navigationItem.rightBarButtonItem else { return } - if let title = existingFolder?.title, title.trimmingWhitespace().count > 0 { - saveButton.isEnabled = true - } else { - saveButton.isEnabled = false - } - } - - func setExistingFolder(_ existingFolder: BookmarkFolder?, initialParentFolder: BookmarkFolder?) { - self.existingFolder = existingFolder - self.initialParentFolder = initialParentFolder - foldersViewController?.dataSource = BookmarkFolderDetailsDataSource( - delegate: self, - addFolderDelegate: nil, - existingFolder: existingFolder, - initialParentFolder: initialParentFolder) - setUpTitle() - } - - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - if segue.identifier == "EmbedFoldersTableViewControllerSegue" { - foldersViewController = segue.destination as? BookmarkFoldersViewController - foldersViewController?.dataSource = BookmarkFolderDetailsDataSource( - delegate: self, - addFolderDelegate: nil, - existingFolder: existingFolder, - initialParentFolder: initialParentFolder) - } - } - - @IBAction func onCancelPressed(_ sender: Any) { - dismiss(animated: true, completion: nil) - } - - @IBAction func onSavePressed(_ sender: Any) { - foldersViewController?.save(delegate: createdNewFolderDelegate) - dismiss(animated: true, completion: nil) - } -} - -extension AddOrEditBookmarkFolderViewController: BookmarkFolderDetailsDataSourceDelegate { - - func bookmarkFolderDetailsDataSource(_ dataSource: BookmarkFolderDetailsDataSource, titleTextFieldDidChange textField: UITextField) { - - guard let saveButton = navigationItem.rightBarButtonItem else { return } - let title = textField.text?.trimmingWhitespace() ?? "" - saveButton.isEnabled = !title.isEmpty - } - - func bookmarkFolderDetailsDataSourceTextFieldDidReturn(dataSource: BookmarkFolderDetailsDataSource) { - - guard let saveButton = navigationItem.rightBarButtonItem else { return } - if saveButton.isEnabled { - DispatchQueue.main.async { - self.onSavePressed(self) - } - } - } -} - -extension AddOrEditBookmarkFolderViewController: Themable { - - func decorate(with theme: Theme) { - decorateNavigationBar(with: theme) - decorateToolbar(with: theme) - - overrideSystemTheme(with: theme) - } -} diff --git a/DuckDuckGo/AddOrEditBookmarkViewController.swift b/DuckDuckGo/AddOrEditBookmarkViewController.swift index 562a147530..a079277c93 100644 --- a/DuckDuckGo/AddOrEditBookmarkViewController.swift +++ b/DuckDuckGo/AddOrEditBookmarkViewController.swift @@ -20,131 +20,145 @@ import UIKit import Core import CoreData +import Bookmarks +import Persistence +import Combine +import WidgetKit + +protocol AddOrEditBookmarkViewControllerDelegate: AnyObject { + + func finishedEditing(_: AddOrEditBookmarkViewController, entityID: NSManagedObjectID) + +} class AddOrEditBookmarkViewController: UIViewController { - + + weak var delegate: AddOrEditBookmarkViewControllerDelegate? + private var foldersViewController: BookmarkFoldersViewController? + private let viewModel: BookmarkEditorViewModel + private let bookmarksDatabase: CoreDataDatabase + + private var viewModelCancellable: AnyCancellable? + + init?(coder: NSCoder, + editingEntityID: NSManagedObjectID, + bookmarksDatabase: CoreDataDatabase) { + + self.bookmarksDatabase = bookmarksDatabase + self.viewModel = BookmarkEditorViewModel(editingEntityID: editingEntityID, + bookmarksDatabase: bookmarksDatabase) + + super.init(coder: coder) + } - var isFavorite = false - - private var existingBookmark: Bookmark? - private var initialParentFolder: BookmarkFolder? - + init?(coder: NSCoder, + parentFolderID: NSManagedObjectID?, + bookmarksDatabase: CoreDataDatabase) { + + self.bookmarksDatabase = bookmarksDatabase + self.viewModel = BookmarkEditorViewModel(creatingFolderWithParentID: parentFolderID, + bookmarksDatabase: bookmarksDatabase) + + super.init(coder: coder) + } + + // If you hit this constructor you probably decided to try and instanciate this VC directly. + // However, if it is part of a navigation controller stack this construct gets called. + // Check the segue actions defined in the storyboard. + required init?(coder: NSCoder) { + fatalError("Not implemented") + } + override func viewDidLoad() { super.viewDidLoad() - setUpTitle() - setUpDoneButton() - + + updateTitle() + updateSaveButton() + applyTheme(ThemeManager.shared.currentTheme) - } - - private func setUpTitle() { - if let bookmark = existingBookmark { - if bookmark.isFavorite { - title = UserText.editFavoriteScreenTitle - } else { - title = UserText.editBookmarkScreenTitle - } - } else { - if isFavorite { - title = UserText.addFavoriteScreenTitle - } else { - title = UserText.addBookmarkScreenTitle - } + + viewModelCancellable = viewModel.externalUpdates.sink { [weak self] _ in + self?.foldersViewController?.refresh() } } - - func setUpDoneButton() { - guard let doneButton = navigationItem.rightBarButtonItem else { return } - if let bookmark = existingBookmark, - let title = bookmark.title, - title.trimmingWhitespace().count > 0, - let url = bookmark.url, - url.absoluteString.count > 0 { - - doneButton.isEnabled = true + + func updateTitle() { + if viewModel.isNew { + title = UserText.addFolderScreenTitle } else { - doneButton.isEnabled = false + title = viewModel.bookmark.isFolder ? UserText.editFolderScreenTitle : UserText.editBookmarkScreenTitle } } - func setExistingBookmark(_ existingBookmark: Bookmark?, initialParentFolder: BookmarkFolder?) { - self.existingBookmark = existingBookmark - self.initialParentFolder = initialParentFolder - setUpTitle() - setUpDataSource() - } - - private func setUpDataSource() { - if existingBookmark?.isFavorite ?? isFavorite { - foldersViewController?.dataSource = FavoriteDetailsDataSource(delegate: self, existingBookmark: existingBookmark) + func updateSaveButton() { + guard let saveButton = navigationItem.rightBarButtonItem else { return } + if viewModel.canSave { + saveButton.isEnabled = true } else { - foldersViewController?.dataSource = BookmarkDetailsDataSource(delegate: self, addFolderDelegate: self, existingBookmark: existingBookmark) + saveButton.isEnabled = false } } - + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - if segue.identifier == "EmbedFoldersTableViewControllerSegue" { - foldersViewController = segue.destination as? BookmarkFoldersViewController - setUpDataSource() - } - if segue.identifier == "AddFolderFromBookmark", - let viewController = segue.destination.children.first as? AddOrEditBookmarkFolderViewController { - - viewController.createdNewFolderDelegate = self + if let controller = segue.destination as? BookmarkFoldersViewController { + controller.delegate = self + controller.viewModel = viewModel + foldersViewController = controller } } - + @IBAction func onCancelPressed(_ sender: Any) { dismiss(animated: true, completion: nil) } @IBAction func onSavePressed(_ sender: Any) { - foldersViewController?.save() - dismiss(animated: true, completion: nil) + saveAndDismiss() } -} -extension AddOrEditBookmarkViewController: BookmarkOrFavoriteDetailsDataSourceDelegate { - - func bookmarkOrFavoriteDetailsDataSource(_ dataSource: BookmarkOrFavoriteDetailsDataSource, - textFieldDidChangeWithTitleText titleText: String?, - urlText: String?) { - - guard let doneButton = navigationItem.rightBarButtonItem else { return } - let title = titleText?.trimmingWhitespace() ?? "" - let url = urlText?.trimmingWhitespace() ?? "" - - doneButton.isEnabled = !title.isEmpty && !url.isEmpty + func saveAndDismiss() { + viewModel.save() + WidgetCenter.shared.reloadAllTimelines() + self.delegate?.finishedEditing(self, entityID: viewModel.bookmark.objectID) + dismiss(animated: true, completion: nil) } - - func bookmarkOrFavoriteDetailsDataSourceTextFieldDidReturn(dataSource: BookmarkOrFavoriteDetailsDataSource) { - - guard let doneButton = navigationItem.rightBarButtonItem else { return } - if doneButton.isEnabled { - DispatchQueue.main.async { - self.onSavePressed(self) - } + + @IBSegueAction func onCreateEditor(_ coder: NSCoder, sender: Any?, segueIdentifier: String?) -> AddOrEditBookmarkViewController? { + guard let controller = AddOrEditBookmarkViewController(coder: coder, + parentFolderID: viewModel.bookmark.parent?.objectID, + bookmarksDatabase: bookmarksDatabase) else { + fatalError("Failed to create controller") } + controller.delegate = self + return controller } } -extension AddOrEditBookmarkViewController: BookmarkItemDetailsDataSourceDidSaveDelegate { - - func bookmarkItemDetailsDataSource(_ bookmarkItemDetailsDataSource: BookmarkItemDetailsDataSource, - createdNewFolderWithObjectID objectID: NSManagedObjectID) { - - if let viewController = foldersViewController, let dataSource = viewController.dataSource as? BookmarkDetailsDataSource { - dataSource.refreshFolders(viewController.tableView, section: 0, andSelectFolderWithObjectID: objectID) +extension AddOrEditBookmarkViewController: BookmarkFoldersViewControllerDelegate { + + func textDidChange(_ controller: BookmarkFoldersViewController) { + updateSaveButton() + } + + func textDidReturn(_ controller: BookmarkFoldersViewController) { + if viewModel.canSave { + saveAndDismiss() } } + + func addFolder(_ controller: BookmarkFoldersViewController) { + performSegue(withIdentifier: "AddFolder", sender: nil) + } + } -extension AddOrEditBookmarkViewController: BookmarkFoldersSectionDataSourceAddFolderDelegate { - - func bookmarkFoldersSectionDataSourceDidRequestAddNewFolder(_ bookmarkFoldersSectionDataSource: BookmarkFoldersSectionDataSource) { - performSegue(withIdentifier: "AddFolderFromBookmark", sender: nil) +extension AddOrEditBookmarkViewController: AddOrEditBookmarkViewControllerDelegate { + + func finishedEditing(_ controller: AddOrEditBookmarkViewController, entityID: NSManagedObjectID) { + viewModel.setParentWithID(entityID) + foldersViewController?.refresh() } + } extension AddOrEditBookmarkViewController: Themable { diff --git a/DuckDuckGo/AppDelegate.swift b/DuckDuckGo/AppDelegate.swift index 932e7a10f7..bb82e974f0 100644 --- a/DuckDuckGo/AppDelegate.swift +++ b/DuckDuckGo/AppDelegate.swift @@ -25,6 +25,8 @@ import Kingfisher import WidgetKit import BackgroundTasks import BrowserServicesKit +import Bookmarks +import Persistence import Crashes // swiftlint:disable file_length @@ -45,8 +47,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate { var overlayWindow: UIWindow? var window: UIWindow? - private lazy var bookmarkStore: BookmarkStore = BookmarkUserDefaults() private lazy var privacyStore = PrivacyUserDefaults() + private var bookmarksDatabase: CoreDataDatabase = BookmarksDatabase.make() private var autoClear: AutoClear? private var showKeyboardIfSettingOn = true private var lastBackgroundDate: Date? @@ -78,8 +80,16 @@ class AppDelegate: UIResponder, UIApplicationDelegate { if testing { _ = DefaultUserAgentManager.shared Database.shared.loadStore { _, _ in } - BookmarksCoreDataStorage.shared.loadStoreAndCaches { context in - _ = BookmarksCoreDataStorageMigration.migrate(fromBookmarkStore: self.bookmarkStore, context: context) + bookmarksDatabase.loadStore { context, error in + guard let context = context else { + fatalError("Error: \(error?.localizedDescription ?? "")") + } + + let legacyStorage = LegacyBookmarksCoreDataStorage() + legacyStorage?.loadStoreAndCaches() + LegacyBookmarksStoreMigration.migrate(from: legacyStorage, + to: context) + legacyStorage?.removeStore() } window?.rootViewController = UIStoryboard.init(name: "LaunchScreen", bundle: nil).instantiateInitialViewController() return true @@ -112,11 +122,26 @@ class AppDelegate: UIResponder, UIApplicationDelegate { } DatabaseMigration.migrate(to: context) } - - BookmarksCoreDataStorage.shared.loadStoreAndCaches { context in - if BookmarksCoreDataStorageMigration.migrate(fromBookmarkStore: self.bookmarkStore, context: context) { - WidgetCenter.shared.reloadAllTimelines() + + bookmarksDatabase.loadStore { context, error in + guard let context = context else { + if let error = error { + Pixel.fire(pixel: .bookmarksCouldNotLoadDatabase, + error: error) + } else { + Pixel.fire(pixel: .bookmarksCouldNotLoadDatabase) + } + + Thread.sleep(forTimeInterval: 1) + fatalError("Could not create Bookmarks database stack: \(error?.localizedDescription ?? "err")") } + + let legacyStorage = LegacyBookmarksCoreDataStorage() + legacyStorage?.loadStoreAndCaches() + LegacyBookmarksStoreMigration.migrate(from: legacyStorage, + to: context) + legacyStorage?.removeStore() + WidgetCenter.shared.reloadAllTimelines() } Favicons.shared.migrateFavicons(to: Favicons.Constants.maxFaviconSize) { @@ -133,11 +158,21 @@ class AppDelegate: UIResponder, UIApplicationDelegate { DaxDialogs.shared.primeForUse() } - if let main = mainViewController { - autoClear = AutoClear(worker: main) - autoClear?.applicationDidLaunch() + let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: Bundle.main) + + guard let main = storyboard.instantiateInitialViewController(creator: { coder in + MainViewController(coder: coder, bookmarksDatabase: self.bookmarksDatabase) + }) else { + fatalError("Could not load MainViewController") } + window = UIWindow(frame: UIScreen.main.bounds) + window?.rootViewController = main + window?.makeKeyAndVisible() + + autoClear = AutoClear(worker: main) + autoClear?.applicationDidLaunch() + clearLegacyAllowedDomainCookies() AppDependencyProvider.shared.voiceSearchHelper.migrateSettingsFlagIfNecessary() @@ -146,7 +181,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { // Having both in `didBecomeActive` can sometimes cause the exception when running on a physical device, so registration happens here. AppConfigurationFetch.registerBackgroundRefreshTaskHandler() MacBrowserWaitlist.shared.registerBackgroundRefreshTaskHandler() - RemoteMessaging.registerBackgroundRefreshTaskHandler() + RemoteMessaging.registerBackgroundRefreshTaskHandler(bookmarksDatabase: bookmarksDatabase) UNUserNotificationCenter.current().delegate = self @@ -274,7 +309,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { private func refreshRemoteMessages() { Task { - try? await RemoteMessaging.fetchAndProcess() + try? await RemoteMessaging.fetchAndProcess(bookmarksDatabase: self.bookmarksDatabase) } } diff --git a/DuckDuckGo/Assets.xcassets/AppIcon.appiconset/Contents.json b/DuckDuckGo/Assets.xcassets/AppIcon.appiconset/Contents.json index 53b9689080..affbe23b1d 100644 --- a/DuckDuckGo/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/DuckDuckGo/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -136,12 +136,6 @@ "scale" : "2x", "size" : "83.5x83.5" }, - { - "filename" : "1024pt.png", - "idiom" : "ios-marketing", - "scale" : "1x", - "size" : "1024x1024" - }, { "filename" : "60pt@2x-1.png", "idiom" : "car", @@ -154,6 +148,62 @@ "scale" : "3x", "size" : "60x60" }, + { + "filename" : "1024pt.png", + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "16x16" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "16x16" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "32x32" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "32x32" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "512x512" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "512x512" + }, { "idiom" : "watch", "role" : "notificationCenter", @@ -222,6 +272,13 @@ "size" : "51x51", "subtype" : "45mm" }, + { + "idiom" : "watch", + "role" : "appLauncher", + "scale" : "2x", + "size" : "54x54", + "subtype" : "49mm" + }, { "idiom" : "watch", "role" : "quickLook", @@ -251,59 +308,16 @@ "subtype" : "45mm" }, { - "idiom" : "watch-marketing", - "scale" : "1x", - "size" : "1024x1024" - }, - { - "idiom" : "mac", - "scale" : "1x", - "size" : "16x16" - }, - { - "idiom" : "mac", - "scale" : "2x", - "size" : "16x16" - }, - { - "idiom" : "mac", - "scale" : "1x", - "size" : "32x32" - }, - { - "idiom" : "mac", - "scale" : "2x", - "size" : "32x32" - }, - { - "idiom" : "mac", - "scale" : "1x", - "size" : "128x128" - }, - { - "idiom" : "mac", - "scale" : "2x", - "size" : "128x128" - }, - { - "idiom" : "mac", - "scale" : "1x", - "size" : "256x256" - }, - { - "idiom" : "mac", + "idiom" : "watch", + "role" : "quickLook", "scale" : "2x", - "size" : "256x256" + "size" : "129x129", + "subtype" : "49mm" }, { - "idiom" : "mac", + "idiom" : "watch-marketing", "scale" : "1x", - "size" : "512x512" - }, - { - "idiom" : "mac", - "scale" : "2x", - "size" : "512x512" + "size" : "1024x1024" } ], "info" : { diff --git a/DuckDuckGo/Assets.xcassets/BookmarkFavoriteIcon.imageset/Contents.json b/DuckDuckGo/Assets.xcassets/BookmarkFavoriteIcon.imageset/Contents.json new file mode 100644 index 0000000000..f70d97a6ba --- /dev/null +++ b/DuckDuckGo/Assets.xcassets/BookmarkFavoriteIcon.imageset/Contents.json @@ -0,0 +1,16 @@ +{ + "images" : [ + { + "filename" : "Favorite-24.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true, + "template-rendering-intent" : "template" + } +} diff --git a/DuckDuckGo/Assets.xcassets/BookmarkFavoriteIcon.imageset/Favorite-24.svg b/DuckDuckGo/Assets.xcassets/BookmarkFavoriteIcon.imageset/Favorite-24.svg new file mode 100644 index 0000000000..ad30f0153c --- /dev/null +++ b/DuckDuckGo/Assets.xcassets/BookmarkFavoriteIcon.imageset/Favorite-24.svg @@ -0,0 +1,3 @@ + + + diff --git a/DuckDuckGo/Assets.xcassets/BookmarksEmpty.imageset/Bookmarks-128.pdf b/DuckDuckGo/Assets.xcassets/BookmarksEmpty.imageset/Bookmarks-128.pdf new file mode 100644 index 0000000000..4b958ee854 Binary files /dev/null and b/DuckDuckGo/Assets.xcassets/BookmarksEmpty.imageset/Bookmarks-128.pdf differ diff --git a/DuckDuckGo/Assets.xcassets/BookmarksEmpty.imageset/Contents.json b/DuckDuckGo/Assets.xcassets/BookmarksEmpty.imageset/Contents.json new file mode 100644 index 0000000000..824a27a475 --- /dev/null +++ b/DuckDuckGo/Assets.xcassets/BookmarksEmpty.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "Bookmarks-128.pdf", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DuckDuckGo/Assets.xcassets/Edit.imageset/Contents.json b/DuckDuckGo/Assets.xcassets/Edit.imageset/Contents.json new file mode 100644 index 0000000000..a98ae6967b --- /dev/null +++ b/DuckDuckGo/Assets.xcassets/Edit.imageset/Contents.json @@ -0,0 +1,16 @@ +{ + "images" : [ + { + "filename" : "Edt-24.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true, + "template-rendering-intent" : "template" + } +} diff --git a/DuckDuckGo/Assets.xcassets/Edit.imageset/Edt-24.svg b/DuckDuckGo/Assets.xcassets/Edit.imageset/Edt-24.svg new file mode 100644 index 0000000000..fc44f46baf --- /dev/null +++ b/DuckDuckGo/Assets.xcassets/Edit.imageset/Edt-24.svg @@ -0,0 +1,4 @@ + + + + diff --git a/DuckDuckGo/Assets.xcassets/FavoritesEmpty.imageset/Bookmarks-Favorite-128.pdf b/DuckDuckGo/Assets.xcassets/FavoritesEmpty.imageset/Bookmarks-Favorite-128.pdf new file mode 100644 index 0000000000..17483f8224 Binary files /dev/null and b/DuckDuckGo/Assets.xcassets/FavoritesEmpty.imageset/Bookmarks-Favorite-128.pdf differ diff --git a/DuckDuckGo/Assets.xcassets/FavoritesEmpty.imageset/Contents.json b/DuckDuckGo/Assets.xcassets/FavoritesEmpty.imageset/Contents.json new file mode 100644 index 0000000000..afb11b0f6b --- /dev/null +++ b/DuckDuckGo/Assets.xcassets/FavoritesEmpty.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "Bookmarks-Favorite-128.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/DuckDuckGo/Assets.xcassets/Folder.imageset/Contents.json b/DuckDuckGo/Assets.xcassets/Folder.imageset/Contents.json index 6cb42a23d7..012ad19e68 100644 --- a/DuckDuckGo/Assets.xcassets/Folder.imageset/Contents.json +++ b/DuckDuckGo/Assets.xcassets/Folder.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "folder.pdf", + "filename" : "Folder-24.svg", "idiom" : "universal" } ], @@ -10,6 +10,7 @@ "version" : 1 }, "properties" : { + "preserves-vector-representation" : true, "template-rendering-intent" : "template" } } diff --git a/DuckDuckGo/Assets.xcassets/Folder.imageset/Folder-24.svg b/DuckDuckGo/Assets.xcassets/Folder.imageset/Folder-24.svg new file mode 100644 index 0000000000..3a2b39a067 --- /dev/null +++ b/DuckDuckGo/Assets.xcassets/Folder.imageset/Folder-24.svg @@ -0,0 +1,3 @@ + + + diff --git a/DuckDuckGo/Assets.xcassets/Folder.imageset/folder.pdf b/DuckDuckGo/Assets.xcassets/Folder.imageset/folder.pdf deleted file mode 100644 index 9971d5e44f..0000000000 Binary files a/DuckDuckGo/Assets.xcassets/Folder.imageset/folder.pdf and /dev/null differ diff --git a/DuckDuckGo/Assets.xcassets/FolderWithPlus.imageset/Add-folder.pdf b/DuckDuckGo/Assets.xcassets/FolderWithPlus.imageset/Add-folder.pdf deleted file mode 100644 index 39296ae90c..0000000000 Binary files a/DuckDuckGo/Assets.xcassets/FolderWithPlus.imageset/Add-folder.pdf and /dev/null differ diff --git a/DuckDuckGo/Assets.xcassets/FolderWithPlus.imageset/Contents.json b/DuckDuckGo/Assets.xcassets/FolderWithPlus.imageset/Contents.json index 621f8104ee..a16e533838 100644 --- a/DuckDuckGo/Assets.xcassets/FolderWithPlus.imageset/Contents.json +++ b/DuckDuckGo/Assets.xcassets/FolderWithPlus.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "Add-folder.pdf", + "filename" : "Folder-Add-24.svg", "idiom" : "universal" } ], @@ -10,6 +10,7 @@ "version" : 1 }, "properties" : { + "preserves-vector-representation" : true, "template-rendering-intent" : "template" } } diff --git a/DuckDuckGo/Assets.xcassets/FolderWithPlus.imageset/Folder-Add-24.svg b/DuckDuckGo/Assets.xcassets/FolderWithPlus.imageset/Folder-Add-24.svg new file mode 100644 index 0000000000..5132ae5f3a --- /dev/null +++ b/DuckDuckGo/Assets.xcassets/FolderWithPlus.imageset/Folder-Add-24.svg @@ -0,0 +1,4 @@ + + + + diff --git a/DuckDuckGo/Assets.xcassets/RemoveFavoriteIcon.imageset/Contents.json b/DuckDuckGo/Assets.xcassets/RemoveFavoriteIcon.imageset/Contents.json new file mode 100644 index 0000000000..0535b07584 --- /dev/null +++ b/DuckDuckGo/Assets.xcassets/RemoveFavoriteIcon.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "RemoveIcon.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/DuckDuckGo/Assets.xcassets/RemoveFavoriteIcon.imageset/RemoveIcon.svg b/DuckDuckGo/Assets.xcassets/RemoveFavoriteIcon.imageset/RemoveIcon.svg new file mode 100644 index 0000000000..1291b22545 --- /dev/null +++ b/DuckDuckGo/Assets.xcassets/RemoveFavoriteIcon.imageset/RemoveIcon.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/DuckDuckGo/Assets.xcassets/RemoveFavoriteMenuIcon.imageset/Contents.json b/DuckDuckGo/Assets.xcassets/RemoveFavoriteMenuIcon.imageset/Contents.json new file mode 100644 index 0000000000..8c18cf81fb --- /dev/null +++ b/DuckDuckGo/Assets.xcassets/RemoveFavoriteMenuIcon.imageset/Contents.json @@ -0,0 +1,16 @@ +{ + "images" : [ + { + "filename" : "Favorite-Remove-24.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true, + "template-rendering-intent" : "template" + } +} diff --git a/DuckDuckGo/Assets.xcassets/RemoveFavoriteMenuIcon.imageset/Favorite-Remove-24.svg b/DuckDuckGo/Assets.xcassets/RemoveFavoriteMenuIcon.imageset/Favorite-Remove-24.svg new file mode 100644 index 0000000000..fc17b4cff0 --- /dev/null +++ b/DuckDuckGo/Assets.xcassets/RemoveFavoriteMenuIcon.imageset/Favorite-Remove-24.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/DuckDuckGo/Assets.xcassets/Trash.imageset/Contents.json b/DuckDuckGo/Assets.xcassets/Trash.imageset/Contents.json new file mode 100644 index 0000000000..29ec5dab5c --- /dev/null +++ b/DuckDuckGo/Assets.xcassets/Trash.imageset/Contents.json @@ -0,0 +1,16 @@ +{ + "images" : [ + { + "filename" : "Trash-24.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true, + "template-rendering-intent" : "template" + } +} diff --git a/DuckDuckGo/Assets.xcassets/Trash.imageset/Trash-24.svg b/DuckDuckGo/Assets.xcassets/Trash.imageset/Trash-24.svg new file mode 100644 index 0000000000..75390726d9 --- /dev/null +++ b/DuckDuckGo/Assets.xcassets/Trash.imageset/Trash-24.svg @@ -0,0 +1,3 @@ + + + diff --git a/DuckDuckGo/AutocompleteViewController.swift b/DuckDuckGo/AutocompleteViewController.swift index 6c8cb65191..36dc31b737 100644 --- a/DuckDuckGo/AutocompleteViewController.swift +++ b/DuckDuckGo/AutocompleteViewController.swift @@ -40,7 +40,7 @@ class AutocompleteViewController: UIViewController { fileprivate var suggestions = [Suggestion]() fileprivate var selectedItem = -1 - private var bookmarksSearch: BookmarksCachingSearch! + private var bookmarksSearch: BookmarksStringSearch! var showBackground = true { didSet { @@ -60,12 +60,12 @@ class AutocompleteViewController: UIViewController { @IBOutlet weak var tableView: UITableView! var shouldOffsetY = false - static func loadFromStoryboard(bookmarksCachingSearch: BookmarksCachingSearch) -> AutocompleteViewController { + static func loadFromStoryboard(bookmarksSearch: BookmarksStringSearch) -> AutocompleteViewController { let storyboard = UIStoryboard(name: "Autocomplete", bundle: nil) guard let controller = storyboard.instantiateInitialViewController() as? AutocompleteViewController else { fatalError("Failed to instatiate correct Autocomplete view controller") } - controller.bookmarksSearch = bookmarksCachingSearch + controller.bookmarksSearch = bookmarksSearch return controller } @@ -156,12 +156,16 @@ class AutocompleteViewController: UIViewController { lastRequest!.execute { [weak self] (suggestions, error) in guard let strongSelf = self else { return } - - strongSelf.bookmarksSearch.search(query: query) { matches in - let notQueryMatches = matches.filter { $0.url?.absoluteString != query } - let filteredMatches = notQueryMatches.filter { $0.displayTitle != nil }.prefix(Constants.maxLocalItems) - let localSuggestions = filteredMatches.map { Suggestion(source: .local, suggestion: $0.displayTitle!, url: $0.url) } - + + Task { @MainActor in + let matches = strongSelf.bookmarksSearch.search(query: query) + let notQueryMatches = matches.filter { $0.url.absoluteString != query } + let filteredMatches = notQueryMatches.prefix(Constants.maxLocalItems) + let localSuggestions = filteredMatches.map { Suggestion(source: .local, + suggestion: $0.title, + url: $0.url) + } + guard let suggestions = suggestions, error == nil else { os_log("%s", log: generalLog, type: .debug, error?.localizedDescription ?? "Failed to retrieve suggestions") self?.updateSuggestions(localSuggestions) diff --git a/DuckDuckGo/Base.lproj/Bookmarks.storyboard b/DuckDuckGo/Base.lproj/Bookmarks.storyboard index d75638cb43..deddff9a30 100644 --- a/DuckDuckGo/Base.lproj/Bookmarks.storyboard +++ b/DuckDuckGo/Base.lproj/Bookmarks.storyboard @@ -1,10 +1,11 @@ - + - + + @@ -16,11 +17,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -32,208 +87,286 @@ + + - + - + - + - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - + + - + - - - - - + + + + + + + + + - - + + - + @@ -248,17 +381,17 @@ - + - + - + @@ -294,6 +427,9 @@ + + + @@ -303,21 +439,20 @@ - + - - + - + - + @@ -328,7 +463,7 @@ - + - + - + - + @@ -380,10 +515,10 @@ - + - + @@ -394,25 +529,25 @@ - + - + - + - + - + @@ -443,6 +578,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -453,84 +665,23 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + - + + + + + + + + @@ -540,9 +691,6 @@ - - - @@ -555,11 +703,11 @@ - - - + + + diff --git a/DuckDuckGo/Base.lproj/Main.storyboard b/DuckDuckGo/Base.lproj/Main.storyboard index fcfec570b7..25ad2d224a 100644 --- a/DuckDuckGo/Base.lproj/Main.storyboard +++ b/DuckDuckGo/Base.lproj/Main.storyboard @@ -20,7 +20,7 @@ - + @@ -47,28 +47,28 @@ - + - + - + - + @@ -77,14 +77,14 @@ - + - + @@ -124,7 +124,7 @@ - + @@ -161,13 +161,13 @@ - + @@ -354,7 +354,7 @@ - + @@ -425,15 +425,15 @@ - + - + - + @@ -470,7 +470,7 @@ - + diff --git a/DuckDuckGo/BookmarkCell.swift b/DuckDuckGo/BookmarkCell.swift deleted file mode 100644 index 8d717fbee2..0000000000 --- a/DuckDuckGo/BookmarkCell.swift +++ /dev/null @@ -1,107 +0,0 @@ -// -// BookmarkCell.swift -// DuckDuckGo -// -// Copyright © 2017 DuckDuckGo. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import UIKit -import Core - -class BookmarkCell: UITableViewCell { - - static let reuseIdentifier = "BookmarkCell" - - @IBOutlet weak var itemImage: UIImageView! - @IBOutlet weak var title: UILabel! - @IBOutlet weak var numberOfChildrenLabel: UILabel! - @IBOutlet weak var disclosureEditView: UIImageView! - @IBOutlet weak var editSeperatorView: UIView! - @IBOutlet weak var mainContentStackView: UIStackView! - @IBOutlet weak var stackViewTrailingConstraint: NSLayoutConstraint! - @IBOutlet weak var editSeperatorViewWidthConstraint: NSLayoutConstraint! - - @IBOutlet weak var imageWidthConstraint: NSLayoutConstraint! - @IBOutlet weak var imageHeightConstraint: NSLayoutConstraint! - - var bookmarkItem: BookmarkItem? { - didSet { - if let bookmark = bookmarkItem as? Bookmark { - numberOfChildrenLabel.isHidden = true - imageWidthConstraint.constant = 24 - imageHeightConstraint.constant = 24 - if let linkTitle = bookmark.title?.trimmingWhitespace(), !linkTitle.isEmpty { - title.text = linkTitle - } else { - title.text = bookmark.url?.host?.droppingWwwPrefix() ?? "" - } - - accessoryView = nil - - itemImage.loadFavicon(forDomain: bookmark.url?.host, usingCache: .bookmarks) - } else if let folder = bookmarkItem as? BookmarkFolder { - imageWidthConstraint.constant = 22 - imageHeightConstraint.constant = 20 - numberOfChildrenLabel.isHidden = false - title.text = folder.title - numberOfChildrenLabel.text = folder.children?.count.description - itemImage.image = #imageLiteral(resourceName: "Folder") - - let theme = ThemeManager.shared.currentTheme - let accesoryImage = UIImageView(image: UIImage(named: "DisclosureIndicator")) - accesoryImage.frame = CGRect(x: 0, y: 0, width: 8, height: 13) - accesoryImage.tintColor = theme.tableCellAccessoryColor - accessoryView = accesoryImage - } - } - } - - override func awakeFromNib() { - super.awakeFromNib() - showsReorderControl = true - disclosureEditView.isHidden = true - editSeperatorView.isHidden = true - editSeperatorViewWidthConstraint.constant = 1.0 / UIScreen.main.scale - } - - var currentState: UITableViewCell.StateMask = [] - - override func willTransition(to state: UITableViewCell.StateMask) { - super.willTransition(to: state) - currentState = state - } - - override func setEditing(_ editing: Bool, animated: Bool) { - super.setEditing(editing, animated: animated) - - // require current state to make sure this doesn't happen when swiping cells - if editing && currentState.contains(.showingEditControl) { - numberOfChildrenLabel.isHidden = true - disclosureEditView.isHidden = false - editSeperatorView.isHidden = false - stackViewTrailingConstraint.constant = 32 + editSeperatorViewWidthConstraint.constant - mainContentStackView.setCustomSpacing(8, after: itemImage) - } else { - disclosureEditView.isHidden = true - editSeperatorView.isHidden = true - stackViewTrailingConstraint.constant = 0 - if bookmarkItem as? BookmarkFolder != nil { - numberOfChildrenLabel.isHidden = false - } - mainContentStackView.setCustomSpacing(16, after: itemImage) - } - } - -} diff --git a/DuckDuckGo/BookmarkFaviconUpdater.swift b/DuckDuckGo/BookmarkFaviconUpdater.swift new file mode 100644 index 0000000000..ce26b120c6 --- /dev/null +++ b/DuckDuckGo/BookmarkFaviconUpdater.swift @@ -0,0 +1,93 @@ +// +// BookmarkFaviconUpdater.swift +// DuckDuckGo +// +// Copyright © 2022 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Core +import Persistence +import Bookmarks +import CoreData + +protocol TabNotifying { + func didUpdateFavicon() +} + +extension Tab: TabNotifying {} + +protocol FaviconProviding { + + func loadFavicon(forDomain domain: String, fromURL url: URL?, intoCache cacheType: Favicons.CacheType, completion: ((UIImage?) -> Void)?) + func replaceBookmarksFavicon(forDomain domain: String?, withImage: UIImage) + +} + +extension Favicons: FaviconProviding { + + func loadFavicon(forDomain domain: String, fromURL url: URL?, intoCache cacheType: CacheType, completion: ((UIImage?) -> Void)?) { + self.loadFavicon(forDomain: domain, fromURL: url, intoCache: cacheType, fromCache: nil, completion: completion) + } + +} + +class BookmarkFaviconUpdater: NSObject, FaviconUserScriptDelegate { + + let context: NSManagedObjectContext + let tab: TabNotifying + let favicons: FaviconProviding + + init(bookmarksDatabase: CoreDataDatabase, tab: TabNotifying, favicons: FaviconProviding) { + self.context = bookmarksDatabase.makeContext(concurrencyType: .mainQueueConcurrencyType) + self.tab = tab + self.favicons = favicons + } + + func faviconUserScript(_ script: FaviconUserScript, didRequestUpdateFaviconForHost host: String, withUrl url: URL?) { + assert(Thread.isMainThread) + + favicons.loadFavicon(forDomain: host, fromURL: url, intoCache: .tabs) { [weak self] image in + guard let self = self else { return } + self.tab.didUpdateFavicon() + + guard self.bookmarkExists(for: host), + let image = image else { return } + + self.favicons.replaceBookmarksFavicon(forDomain: host, withImage: image) + } + + } + + private func bookmarkExists(for domain: String) -> Bool { + let domainPredicate = NSCompoundPredicate(orPredicateWithSubpredicates: [ + NSPredicate(format: "%K BEGINSWITH[c] %@", #keyPath(BookmarkEntity.url), "http://\(domain)"), + NSPredicate(format: "%K BEGINSWITH[c] %@", #keyPath(BookmarkEntity.url), "https://\(domain)"), + NSPredicate(format: "%K BEGINSWITH[c] %@", #keyPath(BookmarkEntity.url), "http://www.\(domain)"), + NSPredicate(format: "%K BEGINSWITH[c] %@", #keyPath(BookmarkEntity.url), "https://www.\(domain)") + ]) + + let notFolderPredicate = NSPredicate(format: "%K = NO", #keyPath(BookmarkEntity.isFolder)) + + let request = BookmarkEntity.fetchRequest() + request.fetchLimit = 1 + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + notFolderPredicate, + domainPredicate + ]) + let result = (try? context.count(for: request)) ?? 0 > 0 + return result + } + +} diff --git a/DuckDuckGo/BookmarkFolderCell.swift b/DuckDuckGo/BookmarkFolderCell.swift index 5e5a094eaf..c849770927 100644 --- a/DuckDuckGo/BookmarkFolderCell.swift +++ b/DuckDuckGo/BookmarkFolderCell.swift @@ -19,6 +19,7 @@ import UIKit import Core +import Bookmarks class BookmarkFolderCell: UITableViewCell { @@ -29,10 +30,19 @@ class BookmarkFolderCell: UITableViewCell { @IBOutlet weak var leadingPaddingConstraint: NSLayoutConstraint! - var folder: BookmarkFolder? { + var folder: BookmarkEntity? { didSet { guard let folder = folder else { return } - title.text = folder.title + + if folder.uuid == BookmarkEntity.Constants.rootFolderID { + title.text = UserText.sectionTitleBookmarks + } else if folder.uuid == BookmarkEntity.Constants.favoritesFolderID { + title.text = "Favorites" + assertionFailure("Favorites folder in UI") + } else { + title.text = folder.title + } + folderImageView.image = UIImage(named: "Folder") } } @@ -59,11 +69,5 @@ class BookmarkFolderCell: UITableViewCell { accessoryType = isSelected ? .checkmark : .none } } - - func setUpAddFolderCell() { - depth = 0 - title.text = UserText.addbookmarkFolderButton - folderImageView.image = UIImage(named: "FolderWithPlus") - } - + } diff --git a/DuckDuckGo/BookmarkFoldersSectionDataSource.swift b/DuckDuckGo/BookmarkFoldersSectionDataSource.swift deleted file mode 100644 index bed7780cc6..0000000000 --- a/DuckDuckGo/BookmarkFoldersSectionDataSource.swift +++ /dev/null @@ -1,158 +0,0 @@ -// -// BookmarkFoldersSectionDataSource.swift -// DuckDuckGo -// -// Copyright © 2021 DuckDuckGo. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import UIKit -import Core -import CoreData - -protocol BookmarkFoldersSectionDataSourceAddFolderDelegate: AnyObject { - func bookmarkFoldersSectionDataSourceDidRequestAddNewFolder(_ bookmarkFoldersSectionDataSource: BookmarkFoldersSectionDataSource) -} - -class BookmarkFoldersSectionDataSource { - - typealias PresentableFolder = (folder: BookmarkFolder, depth: Int) - - weak var delegate: BookmarkFoldersSectionDataSourceAddFolderDelegate? - - private let bookmarksManager: BookmarksManager - - private lazy var presentableFolders: [PresentableFolder] = { - guard let folder = bookmarksManager.topLevelBookmarksFolder else { - return [] - } - return visibleFolders(for: folder, depthOfFolder: 0) - }() - - private var selectedRow = 0 - private let existingItem: BookmarkItem? - private let shouldShowAddFolderCell: Bool - - init(existingItem: BookmarkItem?, - initialParentFolder: BookmarkFolder?, - delegate: BookmarkFoldersSectionDataSourceAddFolderDelegate?, - bookmarksManager: BookmarksManager) { - - self.existingItem = existingItem - self.delegate = delegate - self.bookmarksManager = bookmarksManager - self.shouldShowAddFolderCell = delegate != nil - - if let parent = existingItem?.parentFolder ?? initialParentFolder { - let parentIndex = presentableFolders.firstIndex { - $0.folder.objectID == parent.objectID - } - selectedRow = parentIndex ?? 0 - } - } - - var numberOfRows: Int { - return presentableFolders.count + (shouldShowAddFolderCell ? 1 : 0) - } - - func title() -> String? { - UserText.bookmarkFolderSelectTitle - } - - func cell(_ tableView: UITableView, forIndex index: Int) -> UITableViewCell { - guard let cell = tableView.dequeueReusableCell(withIdentifier: BookmarkFolderCell.reuseIdentifier) as? BookmarkFolderCell else { - fatalError("Failed to dequeue \(BookmarkFolderCell.reuseIdentifier) as BookmarkFolderCell") - } - - if let folder = folder(at: index) { - cell.folder = folder.folder - cell.depth = folder.depth - cell.isSelected = index == selectedRow - - if index == 0 { - cell.titleString = UserText.bookmarkTopLevelFolderTitle - - } - } else { - cell.setUpAddFolderCell() - cell.isSelected = false - } - - return cell - } - - func select(_ tableView: UITableView, row: Int, section: Int) { - if shouldShowAddFolderCell && row == numberOfRows - 1 { - tableView.deselectRow(at: IndexPath(row: row, section: section), animated: true) - delegate?.bookmarkFoldersSectionDataSourceDidRequestAddNewFolder(self) - } else { - let previousSelected = selectedRow - selectedRow = row - - let indexesToReload = [IndexPath(row: row, section: section), IndexPath(row: previousSelected, section: section)] - tableView.reloadRows(at: indexesToReload, with: .none) - } - } - - func selected() -> BookmarkFolder? { - return folder(at: selectedRow)?.folder - } - - func refreshFolders(_ tableView: UITableView, section: Int, andSelectFolderWithObjectID objectID: NSManagedObjectID) { - - guard let folder = bookmarksManager.topLevelBookmarksFolder else { - return - } - presentableFolders = visibleFolders(for: folder, depthOfFolder: 0) - let newIndex = presentableFolders.firstIndex { - $0.folder.objectID == objectID - } - if let index = newIndex { - selectedRow = index - } - - tableView.reloadData() - } -} - -private extension BookmarkFoldersSectionDataSource { - - func folder(at index: Int) -> PresentableFolder? { - if presentableFolders.count <= index { - return nil - } - return presentableFolders[index] - } - - func visibleFolders(for folder: BookmarkFolder, depthOfFolder: Int) -> [PresentableFolder] { - let array = folder.children?.array as? [BookmarkItem] ?? [] - let folders: [BookmarkFolder] = array.compactMap { - // If a folder has subfolders and we edit the location, hide the subfolders in the folder structure (so you can't insert a folder into itself - if let folder = existingItem as? BookmarkFolder, - folder.objectID == $0.objectID { - return nil - } else { - return $0 as? BookmarkFolder - } - } - - var visibleItems = [PresentableFolder(folder, depthOfFolder)] - - visibleItems.append(contentsOf: folders.map { folder -> [PresentableFolder] in - return visibleFolders(for: folder, depthOfFolder: depthOfFolder + 1) - }.flatMap { $0 }) - - return visibleItems - } -} diff --git a/DuckDuckGo/BookmarkFoldersTableViewController.swift b/DuckDuckGo/BookmarkFoldersTableViewController.swift index 445c6ac7cf..7de73537b7 100644 --- a/DuckDuckGo/BookmarkFoldersTableViewController.swift +++ b/DuckDuckGo/BookmarkFoldersTableViewController.swift @@ -19,25 +19,221 @@ import UIKit import Core +import Bookmarks + +protocol BookmarkFoldersViewControllerDelegate: AnyObject { + + func textDidChange(_ controller: BookmarkFoldersViewController) + func textDidReturn(_ controller: BookmarkFoldersViewController) + func addFolder(_ controller: BookmarkFoldersViewController) + +} class BookmarkFoldersViewController: UITableViewController { - var dataSource: BookmarkItemDetailsDataSource? { - didSet { - tableView.dataSource = dataSource + weak var delegate: BookmarkFoldersViewControllerDelegate? + + var viewModel: BookmarkEditorViewModel? + var selected: IndexPath? + + var locationCount: Int { + guard let viewModel = viewModel else { return 0 } + return viewModel.locations.count + } + + override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + guard indexPath.section != 0 else { return } + guard let viewModel = viewModel else { + assertionFailure("No view model") + return + } + + if indexPath.row >= viewModel.locations.count { + delegate?.addFolder(self) + } else { + viewModel.selectLocationAtIndex(indexPath.row) + if let selected = selected { + tableView.reloadRows(at: [ + selected, + indexPath + ], with: .automatic) + } + } + } + + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + + if viewModel?.bookmark.isFolder == true { + switch indexPath.section { + case 0: + return detailCellForFolder(tableView) + + case 1: + return folderSelectorCell(tableView, forIndexPath: indexPath) + + default: + fatalError("Unexpected section") + } + } else { + switch indexPath.section { + case 0: + return titleAndUrlCellForBookmark(tableView) + + case 1: + return favoriteCellForBookmark(tableView) + + case 2: + return indexPath.row >= locationCount ? + tableView.dequeueReusableCell(withIdentifier: "AddFolderCell")! : + folderSelectorCell(tableView, forIndexPath: indexPath) + + default: + fatalError("Unexpected section") + } } } - - override func viewDidLoad() { - super.viewDidLoad() - tableView.dataSource = dataSource + + func folderSelectorCell(_ tableView: UITableView, forIndexPath indexPath: IndexPath) -> UITableViewCell { + guard let cell = tableView.dequeueReusableCell(withIdentifier: BookmarkFolderCell.reuseIdentifier) else { + fatalError("Failed to dequeue cell for BookmarkFolder") + } + if let viewModel = viewModel, let folderCell = cell as? BookmarkFolderCell { + folderCell.folder = viewModel.locations[indexPath.row].bookmark + folderCell.depth = viewModel.locations[indexPath.row].depth + folderCell.isSelected = viewModel.isSelected(viewModel.locations[indexPath.row].bookmark) + if folderCell.isSelected { + selected = indexPath + } + } + return cell } - - override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - dataSource?.select(tableView, indexPath: indexPath) + + override func numberOfSections(in tableView: UITableView) -> Int { + return viewModel?.bookmark.isFolder == true ? 2 : 3 } - - func save(delegate: BookmarkItemDetailsDataSourceDidSaveDelegate? = nil) { - dataSource?.save(tableView, delegate: delegate) + + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + guard let viewModel = viewModel else { + assertionFailure() + return 0 + } + + let locationCount = self.locationCount + (viewModel.canAddNewFolder ? 1 : 0) + if viewModel.bookmark.isFolder { + switch section { + case 0: return 1 + case 1: return locationCount + default: fatalError("Unexpected section") + } + } else { + switch section { + case 0: return 1 + case 1: return 1 + case 2: return locationCount + default: fatalError("Unexpected section") + } + } + } + + override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { + if viewModel?.bookmark.isFolder == true { + return section == 1 ? UserText.bookmarkFolderSelectTitle : nil + } else { + return section == 2 ? UserText.bookmarkFolderSelectTitle : nil + } } + + func favoriteCellForBookmark(_ tableView: UITableView) -> UITableViewCell { + guard let cell = tableView.dequeueReusableCell(withIdentifier: FavoriteCell.reuseIdentifier) as? FavoriteCell else { + fatalError("Failed to dequeue \(FavoriteCell.reuseIdentifier) as FavoriteCell") + } + + cell.favoriteToggle.isOn = viewModel?.bookmark.isFavorite == true + cell.favoriteToggle.removeTarget(self, action: #selector(favoriteToggleDidChange(_:)), for: .valueChanged) + cell.favoriteToggle.addTarget(self, action: #selector(favoriteToggleDidChange(_:)), for: .valueChanged) + cell.favoriteToggle.onTintColor = ThemeManager.shared.currentTheme.buttonTintColor + + return cell + } + + func titleAndUrlCellForBookmark(_ tableView: UITableView) -> UITableViewCell { + guard let cell = tableView.dequeueReusableCell(withIdentifier: BookmarkDetailsCell.reuseIdentifier) as? BookmarkDetailsCell else { + fatalError("Failed to dequeue \(BookmarkDetailsCell.reuseIdentifier) as BookmarkDetailsCell") + } + cell.titleTextField.removeTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged) + cell.titleTextField.removeTarget(self, action: #selector(textFieldDidReturn), for: .editingDidEndOnExit) + cell.titleTextField.becomeFirstResponder() + cell.titleTextField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged) + cell.titleTextField.addTarget(self, action: #selector(textFieldDidReturn), for: .editingDidEndOnExit) + + cell.urlTextField.removeTarget(self, action: #selector(urlTextFieldDidChange(_:)), for: .editingChanged) + cell.urlTextField.removeTarget(self, action: #selector(urlTextFieldDidReturn), for: .editingDidEndOnExit) + cell.urlTextField.becomeFirstResponder() + cell.urlTextField.addTarget(self, action: #selector(urlTextFieldDidChange(_:)), for: .editingChanged) + cell.urlTextField.addTarget(self, action: #selector(urlTextFieldDidReturn), for: .editingDidEndOnExit) + + cell.faviconImageView.loadFavicon(forDomain: viewModel?.bookmark.urlObject?.host, usingCache: .bookmarks) + + cell.selectionStyle = .none + cell.title = viewModel?.bookmark.title + cell.urlString = viewModel?.bookmark.url + return cell + } + + func detailCellForFolder(_ tableView: UITableView) -> BookmarksTextFieldCell { + guard let cell = tableView.dequeueReusableCell(withIdentifier: BookmarksTextFieldCell.reuseIdentifier) as? BookmarksTextFieldCell else { + fatalError("Failed to dequeue \(BookmarksTextFieldCell.reuseIdentifier) as BookmarksTextFieldCell") + } + cell.textField.removeTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged) + cell.textField.removeTarget(self, action: #selector(textFieldDidReturn), for: .editingDidEndOnExit) + cell.textField.becomeFirstResponder() + cell.textField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged) + cell.textField.addTarget(self, action: #selector(textFieldDidReturn), for: .editingDidEndOnExit) + + cell.selectionStyle = .none + cell.title = viewModel?.bookmark.title + return cell + } + + @objc func favoriteToggleDidChange(_ toggle: UISwitch) { + if toggle.isOn { + viewModel?.addToFavorites() + } else { + viewModel?.removeFromFavorites() + } + } + + @objc func textFieldDidChange(_ textField: UITextField) { + viewModel?.bookmark.title = textField.text?.trimmingWhitespace() + delegate?.textDidChange(self) + } + + @objc func textFieldDidReturn() { + if viewModel?.bookmark.isFolder == true { + delegate?.textDidReturn(self) + } + } + + @objc func urlTextFieldDidChange(_ textField: UITextField) { + viewModel?.bookmark.url = textField.text?.trimmingWhitespace() + delegate?.textDidChange(self) + } + + @objc func urlTextFieldDidReturn() { + delegate?.textDidReturn(self) + } + + func refresh() { + viewModel?.refresh() + tableView.reloadData() + } + +} + +class FavoriteCell: UITableViewCell { + + static let reuseIdentifier = "FavoriteCell" + + @IBOutlet var favoriteToggle: UISwitch! + } diff --git a/DuckDuckGo/BookmarkItemDetailsDataSource.swift b/DuckDuckGo/BookmarkItemDetailsDataSource.swift deleted file mode 100644 index 70538e5481..0000000000 --- a/DuckDuckGo/BookmarkItemDetailsDataSource.swift +++ /dev/null @@ -1,309 +0,0 @@ -// -// BookmarkItemDetailsDataSource.swift -// DuckDuckGo -// -// Copyright © 2021 DuckDuckGo. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import UIKit -import Core -import CoreData - -protocol BookmarkItemDetailsDataSource: UITableViewDataSource { - func select(_ tableView: UITableView, indexPath: IndexPath) - func save(_ tableView: UITableView, delegate: BookmarkItemDetailsDataSourceDidSaveDelegate?) -} - -protocol BookmarkItemDetailsDataSourceDidSaveDelegate: AnyObject { - func bookmarkItemDetailsDataSource( - _ bookmarkItemDetailsDataSource: BookmarkItemDetailsDataSource, - createdNewFolderWithObjectID objectID: NSManagedObjectID) -} - -protocol BookmarkFolderDetailsDataSourceDelegate: AnyObject { - func bookmarkFolderDetailsDataSource(_ dataSource: BookmarkFolderDetailsDataSource, titleTextFieldDidChange textField: UITextField) - func bookmarkFolderDetailsDataSourceTextFieldDidReturn(dataSource: BookmarkFolderDetailsDataSource) -} - -class BookmarkFolderDetailsDataSource: NSObject, BookmarkItemDetailsDataSource { - - weak var delegate: BookmarkFolderDetailsDataSourceDelegate? - - private let bookmarksManager: BookmarksManager - - private let existingFolder: BookmarkFolder? - private let bookmarkFoldersSectionDataSource: BookmarkFoldersSectionDataSource - - private var currentTitle: String? - - init(delegate: BookmarkFolderDetailsDataSourceDelegate, - addFolderDelegate: BookmarkFoldersSectionDataSourceAddFolderDelegate?, - bookmarksManager: BookmarksManager = BookmarksManager(), - existingFolder: BookmarkFolder? = nil, - initialParentFolder: BookmarkFolder? = nil) { - self.delegate = delegate - self.bookmarksManager = bookmarksManager - self.existingFolder = existingFolder - self.currentTitle = existingFolder?.title - self.bookmarkFoldersSectionDataSource = BookmarkFoldersSectionDataSource( - existingItem: existingFolder, - initialParentFolder: initialParentFolder, - delegate: addFolderDelegate, - bookmarksManager: bookmarksManager) - super.init() - } - - func numberOfSections(in tableView: UITableView) -> Int { - return 2 - } - - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - section == 0 ? 1 : bookmarkFoldersSectionDataSource.numberOfRows - } - - func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { - section == 1 ? bookmarkFoldersSectionDataSource.title() : nil - } - - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - indexPath.section == 0 ? detailsCell(tableView) : bookmarkFoldersSectionDataSource.cell(tableView, forIndex: indexPath.row) - } - - func select(_ tableView: UITableView, indexPath: IndexPath) { - if indexPath.section != 1 { return } - - bookmarkFoldersSectionDataSource.select(tableView, row: indexPath.row, section: indexPath.section) - } - - func save(_ tableView: UITableView, delegate: BookmarkItemDetailsDataSourceDidSaveDelegate?) { - - guard let selectedParent = bookmarkFoldersSectionDataSource.selected() else { - assertionFailure("BookmarkFoldersSectionDataSource selected folder nil, this shouldn't be possible. Folder will not be saved") - return - } - let title = currentTitle ?? "" - - if let folder = existingFolder { - bookmarksManager.update(folderID: folder.objectID, newTitle: title, newParentID: selectedParent.objectID) - } else { - bookmarksManager.saveNewFolder(withTitle: title, parentID: selectedParent.objectID) { folderID, _ in - guard let folderID = folderID else { return } - delegate?.bookmarkItemDetailsDataSource(self, createdNewFolderWithObjectID: folderID) - } - } - } - - @objc func textFieldDidChange(_ textField: UITextField) { - currentTitle = textField.text - delegate?.bookmarkFolderDetailsDataSource(self, titleTextFieldDidChange: textField) - } - - @objc func textFieldDidReturn() { - delegate?.bookmarkFolderDetailsDataSourceTextFieldDidReturn(dataSource: self) - } -} - -private extension BookmarkFolderDetailsDataSource { - - func detailsCell(_ tableView: UITableView) -> BookmarksTextFieldCell { - guard let cell = tableView.dequeueReusableCell(withIdentifier: BookmarksTextFieldCell.reuseIdentifier) as? BookmarksTextFieldCell else { - fatalError("Failed to dequeue \(BookmarksTextFieldCell.reuseIdentifier) as BookmarksTextFieldCell") - } - cell.textField.removeTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged) - cell.textField.removeTarget(self, action: #selector(textFieldDidReturn), for: .editingDidEndOnExit) - - cell.title = currentTitle - cell.textField.becomeFirstResponder() - cell.textField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged) - cell.textField.addTarget(self, action: #selector(textFieldDidReturn), for: .editingDidEndOnExit) - cell.selectionStyle = .none - - return cell - } -} - -protocol BookmarkOrFavoriteDetailsDataSourceDelegate: AnyObject { - func bookmarkOrFavoriteDetailsDataSource(_ dataSource: BookmarkOrFavoriteDetailsDataSource, - textFieldDidChangeWithTitleText titleText: String?, - urlText: String?) - func bookmarkOrFavoriteDetailsDataSourceTextFieldDidReturn(dataSource: BookmarkOrFavoriteDetailsDataSource) -} - -class BookmarkOrFavoriteDetailsDataSource: NSObject, BookmarkDetailsCellDelegate { - - weak var delegate: BookmarkOrFavoriteDetailsDataSourceDelegate? - - var existingBookmark: Bookmark? { - didSet { - currentTitle = existingBookmark?.title - currentURLString = existingBookmark?.url?.absoluteString - } - } - - var currentTitle: String? - var currentURLString: String? - - func bookmarkDetailsCellDelegate(_ cell: BookmarkDetailsCell, textFieldDidChangeWithTitleText titleText: String?, urlText: String?) { - currentTitle = titleText - currentURLString = urlText - delegate?.bookmarkOrFavoriteDetailsDataSource(self, textFieldDidChangeWithTitleText: titleText, urlText: urlText) - } - - func bookmarkDetailsCellDelegateTextFieldDidReturn(cell: BookmarkDetailsCell) { - delegate?.bookmarkOrFavoriteDetailsDataSourceTextFieldDidReturn(dataSource: self) - } - - func detailsCell(_ tableView: UITableView) -> BookmarkDetailsCell { - guard let cell = tableView.dequeueReusableCell(withIdentifier: BookmarkDetailsCell.reuseIdentifier) as? BookmarkDetailsCell else { - fatalError("Failed to dequeue \(BookmarkDetailsCell.reuseIdentifier) as BookmarkDetailsCell") - } - - cell.title = currentTitle - cell.setUrlString(currentURLString) - cell.setUp() - cell.delegate = self - return cell - } - - func url() -> URL? { - var urlString = currentURLString ?? "" - - if !urlString.hasPrefix("http://") && !urlString.hasPrefix("https://") && !urlString.isBookmarklet() { - urlString = "http://\(urlString)" - } - - let optionalURL: URL? - if urlString.isBookmarklet() { - optionalURL = urlString.toEncodedBookmarklet() - guard URL.isValidBookmarklet(url: optionalURL) else { return nil } - } else { - optionalURL = URL(trimmedAddressBarString: urlString) - } - - return optionalURL - } -} - -class BookmarkDetailsDataSource: BookmarkOrFavoriteDetailsDataSource, BookmarkItemDetailsDataSource { - - private let bookmarksManager: BookmarksManager - - private let bookmarkFoldersSectionDataSource: BookmarkFoldersSectionDataSource - - init(delegate: BookmarkOrFavoriteDetailsDataSourceDelegate, - addFolderDelegate: BookmarkFoldersSectionDataSourceAddFolderDelegate, - bookmarksManager: BookmarksManager = BookmarksManager(), - existingBookmark: Bookmark? = nil, - initialParentFolder: BookmarkFolder? = nil) { - - self.bookmarksManager = bookmarksManager - self.bookmarkFoldersSectionDataSource = BookmarkFoldersSectionDataSource( - existingItem: existingBookmark, - initialParentFolder: initialParentFolder, - delegate: addFolderDelegate, - bookmarksManager: bookmarksManager) - super.init() - self.existingBookmark = existingBookmark - self.delegate = delegate - } - - func numberOfSections(in tableView: UITableView) -> Int { - return 2 - } - - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - section == 0 ? 1 : bookmarkFoldersSectionDataSource.numberOfRows - } - - func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { - section == 1 ? bookmarkFoldersSectionDataSource.title() : nil - } - - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - indexPath.section == 0 ? detailsCell(tableView) : bookmarkFoldersSectionDataSource.cell(tableView, forIndex: indexPath.row) - } - - func select(_ tableView: UITableView, indexPath: IndexPath) { - if indexPath.section != 1 { return } - - bookmarkFoldersSectionDataSource.select(tableView, row: indexPath.row, section: indexPath.section) - } - - func refreshFolders(_ tableView: UITableView, section: Int, andSelectFolderWithObjectID objectID: NSManagedObjectID) { - bookmarkFoldersSectionDataSource.refreshFolders(tableView, section: section, andSelectFolderWithObjectID: objectID) - } - - func save(_ tableView: UITableView, delegate: BookmarkItemDetailsDataSourceDidSaveDelegate?) { - - guard let selectedParent = bookmarkFoldersSectionDataSource.selected() else { - assertionFailure("BookmarkFoldersSectionDataSource selected folder nil, this shouldn't be possible. Folder will not be saved") - return - } - - let title = currentTitle ?? "" - - guard let url = url() else { return } - - if let bookmark = existingBookmark { - bookmarksManager.update(bookmark: bookmark, newTitle: title, newURL: url, newParentID: selectedParent.objectID) - } else { - bookmarksManager.saveNewBookmark(withTitle: title, url: url, parentID: selectedParent.objectID) - } - } -} - -class FavoriteDetailsDataSource: BookmarkOrFavoriteDetailsDataSource, BookmarkItemDetailsDataSource { - - private let bookmarksManager: BookmarksManager - - init(delegate: BookmarkOrFavoriteDetailsDataSourceDelegate, - bookmarksManager: BookmarksManager = BookmarksManager(), - existingBookmark: Bookmark? = nil) { - self.bookmarksManager = bookmarksManager - super.init() - self.existingBookmark = existingBookmark - self.delegate = delegate - } - - func numberOfSections(in tableView: UITableView) -> Int { - return 1 - } - - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return 1 - } - - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - return detailsCell(tableView) - } - - func select(_ tableView: UITableView, indexPath: IndexPath) { - - } - - func save(_ tableView: UITableView, delegate: BookmarkItemDetailsDataSourceDidSaveDelegate?) { - - let title = currentTitle ?? "" - - guard let url = url() else { return } - - if let bookmark = existingBookmark { - bookmarksManager.update(favorite: bookmark, newTitle: title, newURL: url) - } else { - bookmarksManager.saveNewFavorite(withTitle: title, url: url) - } - } - -} diff --git a/DuckDuckGo/BookmarkSectionDataSources.swift b/DuckDuckGo/BookmarkSectionDataSources.swift deleted file mode 100644 index 55f5173028..0000000000 --- a/DuckDuckGo/BookmarkSectionDataSources.swift +++ /dev/null @@ -1,248 +0,0 @@ -// -// BookmarkSectionDataSources.swift -// DuckDuckGo -// -// Copyright © 2021 DuckDuckGo. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import UIKit -import Core -import CoreData - -protocol BookmarkItemsSectionDataSource { - - var numberOfRows: Int { get } - var isEmpty: Bool { get } - - func bookmarkItem(at index: Int) -> BookmarkItem? - - func cell(_ tableView: UITableView, forIndex index: Int) -> UITableViewCell - func title() -> String? - - func canEditRow(_ tableView: UITableView, at index: Int) -> Bool - func canMoveRow(_ tableView: UITableView, at index: Int) -> Bool - func commit(_ tableView: UITableView, editingStyle: UITableViewCell.EditingStyle, forRowAt index: Int, section: Int) -} - -extension BookmarkItemsSectionDataSource { - - func cell(_ tableView: UITableView, forIndex index: Int) -> UITableViewCell { - if isEmpty { - return createEmptyCell(tableView, forIndex: index) - } else { - return createCell(tableView, withItem: bookmarkItem(at: index)) - } - } - - func title() -> String? { - return nil - } - - func canEditRow(_ tableView: UITableView, at index: Int) -> Bool { - return bookmarkItem(at: index) != nil - } - - func canMoveRow(_ tableView: UITableView, at index: Int) -> Bool { - return !isEmpty - } - - func createCell(_ tableView: UITableView, withItem item: BookmarkItem?) -> UITableViewCell { - BookmarkCellCreator.createCell(tableView, withItem: item) - } - - func createEmptyCell(_ tableView: UITableView, forIndex index: Int) -> NoBookmarksCell { - BookmarkCellCreator.createEmptyCell(tableView, forIndex: index) - } -} - -class FavoritesSectionDataSource: BookmarkItemsSectionDataSource { - - private let bookmarksManager: BookmarksManager - - var numberOfRows: Int { - return max(1, bookmarksManager.favoritesCount) - } - - var isEmpty: Bool { - bookmarksManager.favoritesCount == 0 - } - - init(bookmarksManager: BookmarksManager) { - self.bookmarksManager = bookmarksManager - } - - func bookmarkItem(at index: Int) -> BookmarkItem? { - bookmarksManager.favorite(atIndex: index) - } - - func cell(_ tableView: UITableView, forIndex index: Int) -> UITableViewCell { - if isEmpty { - return createEmptyCell(tableView, forIndex: index) - } else { - return createCell(tableView, withItem: bookmarkItem(at: index)) - } - } - - func createEmptyCell(_ tableView: UITableView, forIndex index: Int) -> NoBookmarksCell { - let cell = (self as BookmarkItemsSectionDataSource).createEmptyCell(tableView, forIndex: index) - cell.label.text = UserText.emptyFavorites - return cell - } - - func title() -> String? { - return UserText.sectionTitleFavorites - } - - func commit(_ tableView: UITableView, editingStyle: UITableViewCell.EditingStyle, forRowAt index: Int, section: Int) { - - guard editingStyle == .delete else { return } - - guard let item = bookmarkItem(at: index) else { return } - bookmarksManager.delete(item) - } - -} - -protocol BookmarksSectionDataSourceDelegate: AnyObject { - func bookmarksSectionDataSourceDidRequestViewControllerForDeleteAlert(_ bookmarksSectionDataSource: BookmarksSectionDataSource) -> - UIViewController -} - -class BookmarksSectionDataSource: BookmarkItemsSectionDataSource { - - private let bookmarksManager: BookmarksManager - - private let parentFolder: BookmarkFolder? - weak var delegate: BookmarksSectionDataSourceDelegate? - - private func bookmarkItems() -> [BookmarkItem] { - if let folder = parentFolder { - return folder.children?.array as? [BookmarkItem] ?? [] - } else { - return bookmarksManager.topLevelBookmarkItems - } - } - - var numberOfRows: Int { - return max(1, bookmarkItems().count) - } - - var isEmpty: Bool { - bookmarkItems().count == 0 - } - - init(parentFolder: BookmarkFolder?, delegate: BookmarksSectionDataSourceDelegate?, bookmarksManager: BookmarksManager) { - self.parentFolder = parentFolder - self.delegate = delegate - self.bookmarksManager = bookmarksManager - } - - func bookmarkItem(at index: Int) -> BookmarkItem? { - let items = bookmarkItems() - if items.count <= index { - return nil - } - return items[index] - } - - func cell(_ tableView: UITableView, forIndex index: Int) -> UITableViewCell { - if isEmpty { - tableView.separatorColor = parentFolder != nil ? .clear : UIColor(named: "BookmarksCellSeperatorColor") - return createEmptyCell(tableView, forIndex: index) - } else { - tableView.separatorColor = UIColor(named: "BookmarksCellSeperatorColor") - return createCell(tableView, withItem: bookmarkItem(at: index)) - } - } - - func navigationTitle() -> String? { - return parentFolder?.title - } - - func title() -> String? { - return parentFolder == nil ? UserText.sectionTitleBookmarks : nil - } - - func commit(_ tableView: UITableView, editingStyle: UITableViewCell.EditingStyle, forRowAt index: Int, section: Int) { - guard editingStyle == .delete else { return } - - guard let item = bookmarkItem(at: index) else { return } - if let delegate = delegate, - let folder = item as? BookmarkFolder, - (folder.children?.count ?? 0) > 0 { - - let title = String(format: UserText.deleteBookmarkFolderAlertTitle, folder.title ?? "") - let count = folder.numberOfChildrenDeep - let message = UserText.deleteBookmarkFolderAlertMessage(numberOfChildren: count) - let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) - alertController.addAction(title: UserText.deleteBookmarkFolderAlertDeleteButton, style: .default) { - self.bookmarksManager.delete(item) - } - alertController.addAction(title: UserText.actionCancel, style: .cancel) - let viewController = delegate.bookmarksSectionDataSourceDidRequestViewControllerForDeleteAlert(self) - viewController.present(alertController, animated: true) - - } else { - bookmarksManager.delete(item) - } - } - - private func createEmptyCell(_ tableView: UITableView, forIndex index: Int) -> UITableViewCell { - if parentFolder != nil { - guard let cell = tableView.dequeueReusableCell(withIdentifier: NoBookmarksInSubfolderCell.reuseIdentifier) - as? NoBookmarksInSubfolderCell else { - - fatalError("Failed to dequeue \(NoBookmarksInSubfolderCell.reuseIdentifier) as NoBookmarksInSubfolderCell") - } - cell.separatorInset = UIEdgeInsets(top: 0, left: .greatestFiniteMagnitude, bottom: 0, right: 0) - return cell - } else { - let cell = (self as BookmarkItemsSectionDataSource).createEmptyCell(tableView, forIndex: index) - cell.label.text = UserText.emptyBookmarks - return cell - } - } -} - -class BookmarkCellCreator { - - static func createCell(_ tableView: UITableView, withItem item: BookmarkItem?) -> UITableViewCell { - guard let cell = tableView.dequeueReusableCell(withIdentifier: BookmarkCell.reuseIdentifier) as? BookmarkCell else { - fatalError("Failed to dequeue \(BookmarkCell.reuseIdentifier) as BookmarkCell") - } - - cell.bookmarkItem = item - - let theme = ThemeManager.shared.currentTheme - cell.backgroundColor = theme.tableCellBackgroundColor - cell.title.textColor = theme.tableCellTextColor - cell.setHighlightedStateBackgroundColor(theme.tableCellHighlightedBackgroundColor) - - return cell - } - - static func createEmptyCell(_ tableView: UITableView, forIndex index: Int) -> NoBookmarksCell { - guard let cell = tableView.dequeueReusableCell(withIdentifier: NoBookmarksCell.reuseIdentifier) as? NoBookmarksCell else { - fatalError("Failed to dequeue \(NoBookmarksCell.reuseIdentifier) as NoBookmarksCell") - } - - let theme = ThemeManager.shared.currentTheme - cell.backgroundColor = theme.tableCellBackgroundColor - cell.label.textColor = theme.tableCellTextColor - cell.setHighlightedStateBackgroundColor(theme.tableCellHighlightedBackgroundColor) - - return cell - } -} diff --git a/DuckDuckGo/BookmarksDataSource.swift b/DuckDuckGo/BookmarksDataSource.swift index 8be994208e..4d3c190783 100644 --- a/DuckDuckGo/BookmarksDataSource.swift +++ b/DuckDuckGo/BookmarksDataSource.swift @@ -18,209 +18,91 @@ // import UIKit +import Bookmarks import Core -import CoreData - -protocol MainBookmarksViewDataSource: UITableViewDataSource { - var isEmpty: Bool { get } - var showSearch: Bool { get } - var favoritesSectionIndex: Int? { get } - var navigationTitle: String? { get } - var folder: BookmarkFolder? { get } - var bookmarksManager: BookmarksManager { get } - - func item(at indexPath: IndexPath) -> BookmarkItem? -} -extension MainBookmarksViewDataSource { - var folder: BookmarkFolder? { - return nil +class BookmarksDataSource: NSObject, UITableViewDataSource { + + let viewModel: BookmarkListInteracting + + var isEmpty: Bool { + viewModel.bookmarks.isEmpty } -} -class BookmarksDataSource: NSObject, UITableViewDataSource { - - fileprivate var sectionDataSources: [BookmarkItemsSectionDataSource] = [] - - func numberOfSections(in tableView: UITableView) -> Int { - return sectionDataSources.count + init(viewModel: BookmarkListInteracting) { + self.viewModel = viewModel + super.init() } - + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return sectionDataSources[section].numberOfRows + return viewModel.bookmarks.count } - - func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { - return sectionDataSources[section].title() - } - + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let dataSource = sectionDataSources[indexPath.section] - return dataSource.cell(tableView, forIndex: indexPath.row) - } -} + guard let bookmark = viewModel.bookmark(at: indexPath.row) else { + fatalError("No bookmark at index \(indexPath.row)") + } -class DefaultBookmarksDataSource: BookmarksDataSource, MainBookmarksViewDataSource { - - let bookmarksManager: BookmarksManager - - var parentFolder: BookmarkFolder? - - init(alertDelegate: BookmarksSectionDataSourceDelegate?, - parentFolder: BookmarkFolder? = nil, - bookmarksManager: BookmarksManager = BookmarksManager()) { - - self.parentFolder = parentFolder - self.bookmarksManager = bookmarksManager - super.init() - let bookmarksDataSource = BookmarksSectionDataSource(parentFolder: parentFolder, delegate: alertDelegate, bookmarksManager: bookmarksManager) - if parentFolder != nil { - self.sectionDataSources = [bookmarksDataSource] + if bookmark.isFolder { + let cell = BookmarksViewControllerCellFactory.makeFolderCell(tableView, forIndexPath: indexPath) + cell.titleLabel.text = bookmark.title + cell.childrenCountLabel.text = "\(bookmark.childrenArray.count)" + return cell } else { - let favoritesDataSource = FavoritesSectionDataSource(bookmarksManager: bookmarksManager) - self.sectionDataSources = [favoritesDataSource, bookmarksDataSource] - } - } - - var favoritesSectionIndex: Int? { - return parentFolder == nil ? 0 : nil - } - - var folder: BookmarkFolder? { - return parentFolder - } - - var isEmpty: Bool { - let isSectionsEmpty = sectionDataSources.map { $0.isEmpty } - return !isSectionsEmpty.contains(where: { !$0 }) - } - - var showSearch: Bool { - return sectionDataSources.count > 1 - } - - var navigationTitle: String? { - let bookmarksDataSource = sectionDataSources.first { - $0.self is BookmarksSectionDataSource - } as? BookmarksSectionDataSource - return bookmarksDataSource?.navigationTitle() - } - - func item(at indexPath: IndexPath) -> BookmarkItem? { - if sectionDataSources.count <= indexPath.section { - return nil + let cell = BookmarksViewControllerCellFactory.makeBookmarkCell(tableView, forIndexPath: indexPath) + cell.faviconImageView.loadFavicon(forDomain: bookmark.urlObject?.host, usingCache: .bookmarks) + cell.titleLabel.text = bookmark.title + cell.favoriteImageViewContainer.isHidden = !bookmark.isFavorite + return cell } - return sectionDataSources[indexPath.section].bookmarkItem(at: indexPath.row) } - + func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { - return !sectionDataSources[indexPath.section].isEmpty + return !viewModel.bookmarks.isEmpty } func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool { - return !sectionDataSources[indexPath.section].isEmpty - } - - func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { - - sectionDataSources[indexPath.section].commit(tableView, editingStyle: editingStyle, forRowAt: indexPath.row, section: indexPath.section) + return !viewModel.bookmarks.isEmpty } - - func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) { - guard let item = item(at: sourceIndexPath) else { - assertionFailure("Item does not exist") - return - } - - if sourceIndexPath.section == destinationIndexPath.section { - bookmarksManager.updateIndex(of: item.objectID, newIndex: destinationIndexPath.row) - } else if sourceIndexPath.section == 0 && destinationIndexPath.section == 1 { - bookmarksManager.convertFavoriteToBookmark(item.objectID, newIndex: destinationIndexPath.row) - } else if sourceIndexPath.section == 1 && destinationIndexPath.section == 0 { - guard let bookmark = item as? Bookmark else { - fatalError("Folders aren't allowed in favorites. We shouldn't be able to get here") - } - bookmarksManager.convertBookmarkToFavorite(bookmark.objectID, newIndex: destinationIndexPath.row) - } + func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) { + guard let bookmark = viewModel.bookmark(at: sourceIndexPath.row) else { return } + viewModel.moveBookmark(bookmark, fromIndex: sourceIndexPath.row, toIndex: destinationIndexPath.row) } + } -class SearchBookmarksDataSource: BookmarksDataSource, MainBookmarksViewDataSource { - - let bookmarksManager: BookmarksManager - - init(bookmarksManager: BookmarksManager = BookmarksManager()) { - self.bookmarksManager = bookmarksManager - } - - var searchResults = [Bookmark]() - - var favoritesSectionIndex: Int? { - return nil - } - - var isEmpty: Bool { - return searchResults.isEmpty - } - - var showSearch: Bool { - sectionDataSources.count > 1 - } - - var navigationTitle: String? - - func performSearch(query: String, searchEngine: BookmarksCachingSearch, completion: @escaping () -> Void) { - let query = query.lowercased() - searchEngine.search(query: query, sortByRelevance: false) { results in - self.searchResults = results - completion() - } - } - - func item(at indexPath: IndexPath) -> BookmarkItem? { - return item(at: indexPath.row) - } - - func item(at index: Int) -> Bookmark? { - guard index < searchResults.count else { - return nil - } - return searchResults[index] - } - - func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { - return item(at: indexPath.row) != nil - } - - override func numberOfSections(in tableView: UITableView) -> Int { - return 1 - } - - override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return max(1, searchResults.count) +class SearchBookmarksDataSource: NSObject, UITableViewDataSource { + + let searchEngine: BookmarksStringSearch + var results = [BookmarksStringSearchResult]() + + init(searchEngine: BookmarksStringSearch) { + self.searchEngine = searchEngine } - - override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { - return nil + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return max(1, results.count) } - - override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - if isEmpty { - return createEmptyCell(tableView, forIndex: indexPath.row) - } else { - let item = item(at: indexPath.row) - return createCell(tableView, withItem: item) + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + if results.isEmpty { + return BookmarksViewControllerCellFactory.makeNoResultsCell(tableView) } + + let cell = BookmarksViewControllerCellFactory.makeBookmarkCell(tableView, forIndexPath: indexPath) + cell.faviconImageView.loadFavicon(forDomain: results[indexPath.row].url.host, usingCache: .bookmarks) + cell.titleLabel.text = results[indexPath.row].title + cell.favoriteImageViewContainer.isHidden = !results[indexPath.row].isFavorite + return cell } - - func createCell(_ tableView: UITableView, withItem item: Bookmark?) -> UITableViewCell { - BookmarkCellCreator.createCell(tableView, withItem: item) + + func performSearch(_ text: String) { + results = searchEngine.search(query: text) } - - func createEmptyCell(_ tableView: UITableView, forIndex index: Int) -> NoBookmarksCell { - let cell = BookmarkCellCreator.createEmptyCell(tableView, forIndex: index) - cell.label.text = UserText.noMatchesFound - return cell + + func toggleFavorite(at index: Int) { + results[index] = results[index].togglingFavorite() } + } diff --git a/DuckDuckGo/BookmarksDatabase.swift b/DuckDuckGo/BookmarksDatabase.swift new file mode 100644 index 0000000000..a62ee6a411 --- /dev/null +++ b/DuckDuckGo/BookmarksDatabase.swift @@ -0,0 +1,62 @@ +// +// BookmarksDatabase.swift +// DuckDuckGo +// +// Copyright © 2022 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation +import CoreData +import Persistence +import Bookmarks +import os + +public class BookmarksDatabase { + + public enum Constants { + public static let bookmarksGroupID = "\(Global.groupIdPrefix).bookmarks" + } + + // Used only in debug screen + public static var globalReferenceForDebug: CoreDataDatabase? + + private init() { } + + public static var defaultDBLocation: URL = { + guard let url = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: Constants.bookmarksGroupID) else { + os_log("BookmarksDatabase.make - OUT, failed to get location %{public}s", Constants.bookmarksGroupID) + fatalError("Failed to get location") + } + return url + }() + + public static func make(location: URL = defaultDBLocation, readOnly: Bool = false) -> CoreDataDatabase { + os_log("BookmarksDatabase.make - IN - %@", location as CVarArg) + let bundle = Bookmarks.bundle + guard let model = CoreDataDatabase.loadModel(from: bundle, named: "BookmarksModel") else { + os_log("BookmarksDatabase.make - OUT, failed to loadModel") + fatalError("Failed to load model") + } + + let db = CoreDataDatabase(name: "Bookmarks", + containerLocation: location, + model: model, + readOnly: readOnly) + os_log("BookmarksDatabase.make - OUT") + globalReferenceForDebug = db + return db + } + +} diff --git a/DuckDuckGo/BookmarksDelegate.swift b/DuckDuckGo/BookmarksDelegate.swift index f497c730dd..e2e115d0b6 100644 --- a/DuckDuckGo/BookmarksDelegate.swift +++ b/DuckDuckGo/BookmarksDelegate.swift @@ -18,11 +18,11 @@ // import Foundation -import Core +import Bookmarks protocol BookmarksDelegate: AnyObject { - func bookmarksDidSelect(bookmark: Bookmark) + func bookmarksDidSelect(url: URL) func bookmarksUpdated() diff --git a/DuckDuckGo/BookmarksManager.swift b/DuckDuckGo/BookmarksManager.swift deleted file mode 100644 index 9cb6fe49a3..0000000000 --- a/DuckDuckGo/BookmarksManager.swift +++ /dev/null @@ -1,238 +0,0 @@ -// -// BookmarksManager.swift -// DuckDuckGo -// -// Copyright © 2017 DuckDuckGo. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Core -import WidgetKit -import CoreData - -class BookmarksManager { - - public struct Notifications { - public static let bookmarksDidChange = Notification.Name("com.duckduckgo.app.BookmarksDidChange") - } - - private(set) var coreDataStorage: BookmarksCoreDataStorage - - init(coreDataStore: BookmarksCoreDataStorage = BookmarksCoreDataStorage.shared) { - self.coreDataStorage = coreDataStore - NotificationCenter.default.addObserver(self, - selector: #selector(dataDidChange), - name: BookmarksCoreDataStorage.Notifications.dataDidChange, - object: nil) - } - - @objc func dataDidChange(notification: Notification) { - NotificationCenter.default.post(name: BookmarksManager.Notifications.bookmarksDidChange, object: nil) - } - - var topLevelBookmarkItemsCount: Int { - return coreDataStorage.topLevelBookmarksItems.count - } - - var topLevelBookmarkItems: [BookmarkItemManagedObject] { - return coreDataStorage.topLevelBookmarksItems - } - - var topLevelBookmarksFolder: BookmarkFolderManagedObject? { - return coreDataStorage.topLevelBookmarksFolder - } - - var favorites: [BookmarkManagedObject] { - return coreDataStorage.favorites - } - - var favoritesCount: Int { - return favorites.count - } - - func favorite(atIndex index: Int) -> BookmarkManagedObject? { - if favorites.count <= index { - return nil - } - return favorites[index] - } - - func contains(url: URL, completion: @escaping (Bool) -> Void) { - coreDataStorage.contains(url: url, completion: completion) - } - - func containsBookmark(url: URL, completion: @escaping (Bool) -> Void) { - coreDataStorage.containsBookmark(url: url, completion: completion) - } - - @MainActor - func containsBookmark(url: URL) async -> Bool { - await withCheckedContinuation { continuation in - containsBookmark(url: url) { result in - continuation.resume(returning: result) - } - } - } - - func containsFavorite(url: URL, completion: @escaping (Bool) -> Void) { - coreDataStorage.containsFavorite(url: url, completion: completion) - } - - @MainActor - func containsFavorite(url: URL) async -> Bool { - await withCheckedContinuation { continuation in - coreDataStorage.containsFavorite(url: url) { result in - continuation.resume(returning: result) - } - } - } - - func bookmark(forURL url: URL, completion: @escaping (BookmarkManagedObject?) -> Void) { - coreDataStorage.bookmark(forURL: url, completion: completion) - } - - func favorite(forURL url: URL, completion: @escaping (BookmarkManagedObject?) -> Void) { - coreDataStorage.favorite(forURL: url, completion: completion) - } - - func saveNewFolder(withTitle title: String, parentID: NSManagedObjectID, completion: BookmarkItemSavedMainThreadCompletion? = nil) { - coreDataStorage.saveNewFolder(withTitle: title, parentID: parentID, completion: completion) - Pixel.fire(pixel: .bookmarksFolderCreated) - } - - func saveNewFavorite(withTitle title: String, url: URL, completion: BookmarkItemSavedMainThreadCompletion? = nil) { - coreDataStorage.saveNewFavorite(withTitle: title, url: url) { objectID, error in - self.reloadWidgets() - completion?(objectID, error) - } - Favicons.shared.loadFavicon(forDomain: url.host, intoCache: .bookmarks, fromCache: .tabs) - } - - func saveNewBookmark(withTitle title: String, url: URL, parentID: NSManagedObjectID?, completion: BookmarkItemSavedMainThreadCompletion? = nil) { - coreDataStorage.saveNewBookmark(withTitle: title, url: url, parentID: parentID, completion: completion) - Favicons.shared.loadFavicon(forDomain: url.host, intoCache: .bookmarks, fromCache: .tabs) - if parentID != nil { - Pixel.fire(pixel: .bookmarkCreatedInSubfolder) - } else { - Pixel.fire(pixel: .bookmarkCreatedAtTopLevel) - } - } - - func update(folderID: NSManagedObjectID, - newTitle: String, - newParentID: NSManagedObjectID, - completion: BookmarkItemUpdatedBackgroundThreadCompletion? = nil) { - - coreDataStorage.update(folderID: folderID, newTitle: newTitle, newParentID: newParentID, completion: completion) - } - - func update(favorite: Bookmark, newTitle: String, newURL: URL, completion: BookmarkItemUpdatedBackgroundThreadCompletion? = nil) { - updateFaviconIfNeeded(favorite, newURL) - coreDataStorage.update(favoriteID: favorite.objectID, newTitle: newTitle, newURL: newURL) { success, error in - self.reloadWidgets() - completion?(success, error) - } - } - - func update(bookmark: Bookmark, - newTitle: String, - newURL: URL, - newParentID: NSManagedObjectID, - completion: BookmarkItemUpdatedBackgroundThreadCompletion? = nil) { - - coreDataStorage.update(bookmarkID: bookmark.objectID, newTitle: newTitle, newURL: newURL, newParentID: newParentID, completion: completion) - updateFaviconIfNeeded(bookmark, newURL) - if newParentID == topLevelBookmarksFolder?.objectID { - Pixel.fire(pixel: .bookmarkEditedAtTopLevel) - } else { - Pixel.fire(pixel: .bookmarkEditedInSubfolder) - } - } - - func updateIndex(of bookmarkItemID: NSManagedObjectID, newIndex: Int, completion: BookmarkItemIndexUpdatedBackgroundThreadCompletion? = nil) { - coreDataStorage.updateIndex(of: bookmarkItemID, newIndex: newIndex) { success, error in - self.reloadWidgets() - completion?(success, error) - } - } - - func convertFavoriteToBookmark(_ favoriteID: NSManagedObjectID, newIndex: Int, completion: BookmarkConvertedBackgroundThreadCompletion? = nil) { - coreDataStorage.convertFavoriteToBookmark(favoriteID, newIndex: newIndex) { success, error in - self.reloadWidgets() - completion?(success, error) - } - } - - func convertBookmarkToFavorite(_ bookmarkID: NSManagedObjectID, newIndex: Int, completion: BookmarkConvertedBackgroundThreadCompletion? = nil) { - coreDataStorage.convertBookmarkToFavorite(bookmarkID, newIndex: newIndex) { success, error in - self.reloadWidgets() - completion?(success, error) - } - } - - func delete(_ bookmarkItem: BookmarkItem, completion: BookmarkItemDeletedBackgroundThreadCompletion? = nil) { - var reloadWidget = false - var bookmarkURL: URL? - if let bookmark = bookmarkItem as? Bookmark { - if bookmark.isFavorite { - reloadWidget = true - } - bookmarkURL = bookmark.url - } - coreDataStorage.delete(bookmarkItem.objectID) { [weak self] success, error in - guard let self = self else { return } - if reloadWidget { - self.reloadWidgets() - } - self.removeFavicon(forBookmarkURL: bookmarkURL) - completion?(success, error) - } - } - - private func removeFavicon(forBookmarkURL url: URL?) { - guard let domain = url?.host else { return } - - coreDataStorage.allBookmarksAndFavoritesFlat { bookmarks in - let matchesDomain: ((Bookmark) -> Bool) = { $0.url?.host == domain } - if !bookmarks.contains(where: matchesDomain) { - print("culprit?") - Favicons.shared.removeBookmarkFavicon(forDomain: domain) - } - } - } - - private func updateFaviconIfNeeded(_ old: Bookmark, _ newURL: URL) { - guard old.url?.host != newURL.host else { return } - removeFavicon(forBookmarkURL: old.url) - Favicons.shared.loadFavicon(forDomain: newURL.host, intoCache: .bookmarks) - } - - func reloadWidgets() { - WidgetCenter.shared.reloadAllTimelines() - } - -} - -// MARK: Debug menu methods (used in ImageCacheDebugViewController) - -extension BookmarksManager { - - func allBookmarksAndFavoritesFlat(completion: @escaping ([BookmarkManagedObject]) -> Void) { - coreDataStorage.allBookmarksAndFavoritesFlat(completion: completion) - } - - func allBookmarksAndFavoritesFlat() async -> [BookmarkManagedObject] { - return await coreDataStorage.allBookmarksAndFavoritesFlat() - } -} diff --git a/DuckDuckGo/BookmarksViewController.swift b/DuckDuckGo/BookmarksViewController.swift index 83d96c88a2..45ddab1590 100644 --- a/DuckDuckGo/BookmarksViewController.swift +++ b/DuckDuckGo/BookmarksViewController.swift @@ -22,11 +22,16 @@ import Core import MobileCoreServices import os.log import UniformTypeIdentifiers +import Bookmarks +import CoreData +import Combine +import Persistence +import WidgetKit // swiftlint:disable file_length // swiftlint:disable type_body_length -class BookmarksViewController: UITableViewController { +class BookmarksViewController: UIViewController, UITableViewDelegate { private enum Constants { static var saveToFiles = "com.apple.DocumentManagerUICore.SaveToFiles" @@ -35,10 +40,19 @@ class BookmarksViewController: UITableViewController { static var exportBookmarkImage = "BookmarksExport" } + @IBOutlet weak var tableView: UITableView! @IBOutlet weak var editButton: UIBarButtonItem! - @IBOutlet weak var doneButton: UIBarButtonItem! + @IBOutlet weak var favoritesContainer: UIView! + @IBOutlet weak var selectorControl: UISegmentedControl! @IBOutlet weak var importFooterButton: UIButton! + // Need to retain these as we're going to add/remove them from the view hierarchy + @IBOutlet var doneButton: UIBarButtonItem! + @IBOutlet var emptyStateContainer: UIView! + @IBOutlet var searchBar: UISearchBar! + + private let bookmarksDatabase: CoreDataDatabase + /// Creating left and right toolbar UIBarButtonItems with customView so that 'Edit' button is centered private lazy var addFolderButton: UIButton = { let button = UIButton(type: .system) @@ -69,115 +83,208 @@ class BookmarksViewController: UITableViewController { private var searchController: UISearchController? weak var delegate: BookmarksDelegate? - - fileprivate lazy var dataSource: MainBookmarksViewDataSource = DefaultBookmarksDataSource(alertDelegate: self) - fileprivate var searchDataSource = SearchBookmarksDataSource() - private lazy var bookmarksCachingSearch: BookmarksCachingSearch = CoreDependencyProvider.shared.bookmarksCachingSearch - + + fileprivate var viewModelCancellable: AnyCancellable? + fileprivate let viewModel: BookmarkListInteracting + + fileprivate lazy var dataSource: BookmarksDataSource = { + return BookmarksDataSource(viewModel: viewModel) + }() + + var searchDataSource: SearchBookmarksDataSource + + var isNested: Bool { + viewModel.currentFolder?.uuid != BookmarkEntity.Constants.rootFolderID + } + + var favoritesController: FavoritesViewController? + fileprivate var onDidAppearAction: () -> Void = {} - + + init?(coder: NSCoder, + bookmarksDatabase: CoreDataDatabase, + bookmarksSearch: BookmarksStringSearch, + parentID: NSManagedObjectID? = nil) { + self.bookmarksDatabase = bookmarksDatabase + self.searchDataSource = SearchBookmarksDataSource(searchEngine: bookmarksSearch) + self.viewModel = BookmarkListViewModel(bookmarksDatabase: bookmarksDatabase, parentID: parentID) + super.init(coder: coder) + } + + required init?(coder: NSCoder) { + fatalError("Not implemented") + } + override func viewDidLoad() { super.viewDidLoad() + + viewModelCancellable = viewModel.externalUpdates.sink { [weak self] _ in + self?.tableView.reloadData() + self?.refreshAll() + } + + tableView.delegate = self + registerForNotifications() + configureSelector() configureTableView() - configureSearchIfNeeded() configureBars() - + applyTheme(ThemeManager.shared.currentTheme) + + selectorControl.removeFromSuperview() + if !isNested { + let stack = UIStackView(arrangedSubviews: [selectorControl]) + stack.alignment = .center + stack.axis = .vertical + + navigationController?.navigationBar.topItem?.titleView = stack + + onViewSelectorChanged(selectorControl) + } else { + navigationItem.title = viewModel.currentFolder?.title + } + } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) - + onDidAppearAction() onDidAppearAction = {} - } - - @objc func dataDidChange(notification: Notification) { + tableView.reloadData() - if currentDataSource.isEmpty && isEditingBookmarks { - finishEditing() + } + + @IBAction func onViewSelectorChanged(_ segment: UISegmentedControl) { + switch selectorControl.selectedSegmentIndex { + case 0: + showBookmarksView() + + case 1: + showFavoritesView() + + default: assertionFailure("Invalid selected segment index") } + + refreshFooterView() + } + + private func refreshAll() { refreshEditButton() refreshFooterView() refreshMoreButton() + refreshAddFolderButton() } - - func openEditFormWhenPresented(bookmark: Bookmark) { + + private func showBookmarksView() { + tableView.isHidden = false + favoritesContainer.isHidden = true + addFolderButton.isHidden = false + moreButton.isHidden = false + refreshAll() + } + + private func showFavoritesView() { + searchBar.resignFirstResponder() + tableView.isHidden = true + favoritesContainer.isHidden = false + addFolderButton.isHidden = true + moreButton.isHidden = true + refreshAll() + } + + func openEditFormWhenPresented(bookmark: BookmarkEntity) { onDidAppearAction = { [weak self] in - self?.performSegue(withIdentifier: "AddOrEditBookmark", sender: bookmark) + self?.performSegue(withIdentifier: "AddOrEditBookmarkFolder", sender: bookmark.objectID) } } - - func openEditFormWhenPresented(link: Link) { - onDidAppearAction = { [weak self] in - self?.dataSource.bookmarksManager.bookmark(forURL: link.url) { bookmark in - if let bookmark = bookmark { - self?.performSegue(withIdentifier: "AddOrEditBookmark", sender: bookmark) - } - } + + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + if tableView.dataSource === searchDataSource { + didSelectScoredBookmarkAtIndex(indexPath.row) + } else { + didSelectBookmarkAtIndex(indexPath.row) } + + tableView.deselectRow(at: indexPath, animated: true) } - - override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - guard let item = currentDataSource.item(at: indexPath) else { return } - + + private func didSelectScoredBookmarkAtIndex(_ index: Int) { + guard searchDataSource.results.indices.contains(index) else { return } + dismiss() + delegate?.bookmarksDidSelect(url: searchDataSource.results[index].url) + } + + private func didSelectBookmarkAtIndex(_ index: Int) { + guard let bookmark = viewModel.bookmark(at: index) else { return } + if isEditingBookmarks { - tableView.deselectRow(at: indexPath, animated: true) - if let bookmark = item as? Bookmark { - performSegue(withIdentifier: "AddOrEditBookmark", sender: bookmark) - } else if let folder = item as? BookmarkFolder { - performSegue(withIdentifier: "AddOrEditBookmarkFolder", sender: folder) - } + performSegue(withIdentifier: "AddOrEditBookmarkFolder", sender: bookmark.objectID) + } else if bookmark.isFolder { + drillIntoFolder(bookmark) } else { - if let bookmark = item as? Bookmark { - select(bookmark: bookmark) - } else if let folder = item as? BookmarkFolder { - let storyboard = UIStoryboard(name: "Bookmarks", bundle: nil) - guard let viewController = storyboard.instantiateViewController(withIdentifier: "BookmarksViewController") - as? BookmarksViewController else { - - return - } - viewController.dataSource = DefaultBookmarksDataSource(alertDelegate: viewController, parentFolder: folder) - viewController.delegate = delegate - navigationController?.pushViewController(viewController, animated: true) - } + select(bookmark: bookmark) } + + } + + private func drillIntoFolder(_ parent: BookmarkEntity) { + let storyboard = UIStoryboard(name: "Bookmarks", bundle: nil) + let viewController = storyboard.instantiateViewController(identifier: "BookmarksViewController", creator: { coder in + let controller = BookmarksViewController(coder: coder, + bookmarksDatabase: self.bookmarksDatabase, + bookmarksSearch: self.searchDataSource.searchEngine, + parentID: parent.objectID) + controller?.delegate = self.delegate + return controller + }) + + navigationController?.pushViewController(viewController, animated: true) } - override func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? { - guard let item = currentDataSource.item(at: indexPath), - item as? BookmarkFolder == nil else { + func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? { + guard let bookmark = bookmarkForSwipeAtIndexPath(indexPath), + !bookmark.isFolder else { return nil } - - let shareContextualAction = UIContextualAction(style: .normal, title: UserText.actionShare) { (_, _, completionHandler) in - self.showShareSheet(for: indexPath) + + let cell = tableView.cellForRow(at: indexPath) + cell?.tintColor = .black + + let title = bookmark.isFavorite ? UserText.actionRemoveFavorite : UserText.favorite + let iconName = bookmark.isFavorite ? "RemoveFavoriteMenuIcon" : "BookmarkFavoriteIcon" + + let toggleFavoriteAction = UIContextualAction(style: .normal, title: title) { [weak self] (_, _, completionHandler) in completionHandler(true) + self?.toggleFavoriteAfterSwipe(bookmark, indexPath) + tableView.reloadRows(at: [indexPath], with: .automatic) } - shareContextualAction.backgroundColor = UIColor.cornflowerBlue - return UISwipeActionsConfiguration(actions: [shareContextualAction]) + toggleFavoriteAction.image = UIImage(named: iconName)?.withTintColor(.black, renderingMode: .alwaysOriginal) + toggleFavoriteAction.backgroundColor = UIColor.yellow60 + return UISwipeActionsConfiguration(actions: [toggleFavoriteAction]) } - - override func tableView(_ tableView: UITableView, - targetIndexPathForMoveFromRowAt sourceIndexPath: IndexPath, - toProposedIndexPath proposedDestinationIndexPath: IndexPath) -> IndexPath { - - // Can't move folders into favorites - if let item = currentDataSource.item(at: sourceIndexPath), - item as? BookmarkFolder != nil && - proposedDestinationIndexPath.section == currentDataSource.favoritesSectionIndex { - return sourceIndexPath + + func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? { + guard let bookmark = bookmarkForSwipeAtIndexPath(indexPath) else { + return nil } - - // Check if the proposed section is empty, if so we need to make sure the proposed row is 0, not 1 - let sectionIndexPath = IndexPath(row: 0, section: proposedDestinationIndexPath.section) - if currentDataSource.item(at: sectionIndexPath) == nil { - return sectionIndexPath + + let deleteAction = UIContextualAction(style: .destructive, title: + UserText.deleteBookmarkFolderAlertDeleteButton) { _, _, completion in + self.deleteBookmarkAfterSwipe(bookmark, indexPath, completion) } - - return proposedDestinationIndexPath + deleteAction.image = UIImage(named: "Trash") + return UISwipeActionsConfiguration(actions: [deleteAction]) + } + + private func bookmarkForSwipeAtIndexPath(_ indexPath: IndexPath) -> BookmarkEntity? { + if tableView.dataSource is BookmarksDataSource { + return viewModel.bookmark(at: indexPath.row) + } else if let dataSource = tableView.dataSource as? SearchBookmarksDataSource { + return viewModel.bookmark(with: dataSource.results[indexPath.row].objectID) + } + return nil } private func registerForNotifications() { @@ -185,18 +292,83 @@ class BookmarksViewController: UITableViewController { selector: #selector(onApplicationBecameActive), name: UIApplication.didBecomeActiveNotification, object: nil) - NotificationCenter.default.addObserver(self, selector: - #selector(dataDidChange), - name: BookmarksManager.Notifications.bookmarksDidChange, - object: nil) + } + + private func toggleFavoriteAfterSwipe(_ bookmark: BookmarkEntity, _ indexPath: IndexPath) { + self.viewModel.toggleFavorite(bookmark) + WidgetCenter.shared.reloadAllTimelines() + + if let dataSource = tableView.dataSource as? SearchBookmarksDataSource { + dataSource.toggleFavorite(at: indexPath.row) + } + + } + + private func deleteBookmarkAfterSwipe(_ bookmark: BookmarkEntity, + _ indexPath: IndexPath, + _ completion: @escaping (Bool) -> Void) { + + func delete() { + let oldCount = viewModel.bookmarks.count + viewModel.deleteBookmark(bookmark) + let newCount = viewModel.bookmarks.count + + // Make sure we are animating only single removal + if newCount > 0 && newCount + 1 == oldCount { + tableView.deleteRows(at: [indexPath], with: .fade) + } else { + tableView.reloadSections([indexPath.section], with: .none) + } + refreshFooterView() + } + + func countAllChildrenInFolder(_ folder: BookmarkEntity) -> Int { + var count = 0 + folder.childrenArray.forEach { bookmark in + count += 1 + if bookmark.isFolder { + count += countAllChildrenInFolder(bookmark) + } + } + return count + } + + if let dataSource = tableView.dataSource as? SearchBookmarksDataSource { + dataSource.results.remove(at: indexPath.row) + delete() + return + } + + if bookmark.isFolder, bookmark.children?.count ?? 0 > 0 { + let title = String(format: UserText.deleteBookmarkFolderAlertTitle, bookmark.title ?? "") + let count = countAllChildrenInFolder(bookmark) + let message = UserText.deleteBookmarkFolderAlertMessage(numberOfChildren: count) + let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) + alertController.addAction(title: UserText.deleteBookmarkFolderAlertDeleteButton, style: .default) { + delete() + completion(true) + } + alertController.addAction(title: UserText.actionCancel, style: .cancel) { + completion(true) + } + present(alertController, animated: true) + } else { + delete() + completion(true) + } + } + + private func configureSelector() { + favoritesContainer.backgroundColor = tableView.backgroundColor + selectorControl.setTitle(UserText.sectionTitleBookmarks, forSegmentAt: 0) } private func configureTableView() { - tableView.dataSource = dataSource - if dataSource.folder != nil { - tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: CGFloat.leastNormalMagnitude)) + if isNested { + tableView.tableHeaderView = nil } - + + tableView.dataSource = dataSource importFooterButton.setTitle(UserText.importBookmarksFooterButton, for: .normal) importFooterButton.setTitleColor(UIColor.cornflowerBlue, for: .normal) importFooterButton.titleLabel?.textAlignment = .center @@ -205,52 +377,18 @@ class BookmarksViewController: UITableViewController { self?.presentDocumentPicker() }, for: .touchUpInside) - refreshFooterView() - } - - private func configureSearchIfNeeded() { - guard dataSource.showSearch else { - // Don't show search for sub folders - return - } - let searchController = UISearchController(searchResultsController: nil) - navigationItem.searchController = searchController - - searchController.obscuresBackgroundDuringPresentation = false - searchController.searchBar.delegate = self - searchController.searchResultsUpdater = self - searchController.automaticallyShowsScopeBar = false - searchController.searchBar.searchTextField.font = UIFont.semiBoldAppFont(ofSize: 16.0) - - // Add separator - if let nv = navigationController?.navigationBar { - let separator = UIView() - separator.backgroundColor = .greyish - nv.addSubview(separator) - separator.translatesAutoresizingMaskIntoConstraints = false - separator.widthAnchor.constraint(equalTo: nv.widthAnchor).isActive = true - separator.leadingAnchor.constraint(equalTo: nv.leadingAnchor).isActive = true - separator.bottomAnchor.constraint(equalTo: nv.bottomAnchor, constant: 1.0 / UIScreen.main.scale).isActive = true - separator.heightAnchor.constraint(equalToConstant: 1.0 / UIScreen.main.scale).isActive = true - } - self.searchController = searchController - - // Initially puling down the table to reveal search bar will result in a glitch if content offset is 0 and we are using `isModalInPresentation` set to true - tableView.setContentOffset(CGPoint(x: 0, y: 1), animated: false) - } - - private var currentDataSource: MainBookmarksViewDataSource { - if tableView.dataSource === dataSource { - return dataSource + if viewModel.totalBookmarksCount == 0 { + tableView.tableHeaderView?.removeFromSuperview() } - return searchDataSource + + refreshFooterView() } @objc func onApplicationBecameActive(notification: NSNotification) { tableView.reloadData() } - private func configureBars() { + func configureBars() { self.navigationController?.setToolbarHidden(false, animated: true) toolbarItems?.insert(addFolderBarButtonItem, at: 0) let flexibleSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.flexibleSpace, target: self, action: nil) @@ -258,14 +396,13 @@ class BookmarksViewController: UITableViewController { // Edit button is at position 2 configureToolbarMoreItem() - if let dataSourceTitle = dataSource.navigationTitle { - title = dataSourceTitle + if isNested, let title = viewModel.currentFolder?.title { + self.title = title } refreshEditButton() } private func configureToolbarMoreItem() { - if isEditingBookmarks { if toolbarItems?.count ?? 0 >= 5 { toolbarItems?.remove(at: 4) @@ -282,7 +419,16 @@ class BookmarksViewController: UITableViewController { } private func refreshEditButton() { - if (currentDataSource.isEmpty && !isEditingBookmarks) || currentDataSource === searchDataSource { + if isEditingBookmarks { + changeEditButtonToDone() + return + } + + editButton.title = UserText.actionGenericEdit + if !favoritesContainer.isHidden { + editButton.isEnabled = favoritesController?.isEditing == true || (favoritesController?.hasFavorites ?? false) + editButton.title = UserText.actionManageFavorites + } else if (dataSource.isEmpty && !isEditingBookmarks) || dataSource === searchDataSource { disableEditButton() } else if !isEditingBookmarks { enableEditButton() @@ -290,7 +436,7 @@ class BookmarksViewController: UITableViewController { } private func refreshAddFolderButton() { - if currentDataSource === searchDataSource { + if dataSource === searchDataSource { disableAddFolderButton() } else { enableAddFolderButton() @@ -298,7 +444,7 @@ class BookmarksViewController: UITableViewController { } private func refreshMoreButton() { - if isEditingBookmarks || currentDataSource === searchDataSource || dataSource.folder != nil { + if isNested || isEditingBookmarks || dataSource === searchDataSource || viewModel.currentFolder?.isRoot == false { disableMoreButton() } else { enableMoreButton() @@ -306,10 +452,13 @@ class BookmarksViewController: UITableViewController { } private func refreshFooterView() { - if dataSource.folder == nil && dataSource.isEmpty && currentDataSource !== searchDataSource { - enableFooterView() + if !isNested && + dataSource.isEmpty && + dataSource !== searchDataSource && + selectorControl.selectedSegmentIndex == 0 { + showEmptyState() } else { - disableFooterView() + hideEmptyState() } } @@ -329,6 +478,36 @@ class BookmarksViewController: UITableViewController { dismiss() } + @IBSegueAction func onCreateEditor(_ coder: NSCoder, sender: Any?, segueIdentifier: String?) -> AddOrEditBookmarkViewController? { + if let id = sender as? NSManagedObjectID { + guard let controller = AddOrEditBookmarkViewController(coder: coder, + editingEntityID: id, + bookmarksDatabase: bookmarksDatabase) else { + assertionFailure("Failed to create controller") + return nil + } + + return controller + } else { + guard let controller = AddOrEditBookmarkViewController(coder: coder, + parentFolderID: viewModel.currentFolder?.objectID, + bookmarksDatabase: bookmarksDatabase) else { + assertionFailure("Failed to create controller") + return nil + } + + return controller + } + } + + @IBSegueAction func onCreateFavoritesView(_ coder: NSCoder, sender: Any?, segueIdentifier: String?) -> FavoritesViewController { + guard let controller = FavoritesViewController(coder: coder, bookmarksDatabase: bookmarksDatabase) else { + fatalError("Failed to create controller") + } + + return controller + } + // MARK: Import bookmarks func importAction() -> UIAction { @@ -348,19 +527,20 @@ class BookmarksViewController: UITableViewController { } func importBookmarks(fromHtml html: String) { + + let bookmarkCountBeforeImport = dataSource.viewModel.totalBookmarksCount + let bookmarksDatabase = bookmarksDatabase Task { - let bookmarkCountBeforeImport = await dataSource.bookmarksManager.allBookmarksAndFavoritesFlat().count - let result = await BookmarksImporter().parseAndSave(html: html) + let result = await BookmarksImporter(coreDataStore: bookmarksDatabase).parseAndSave(html: html) switch result { case .success: - dataSource.bookmarksManager.reloadWidgets() - - let bookmarkCountAfterImport = await dataSource.bookmarksManager.allBookmarksAndFavoritesFlat().count - let bookmarksImported = bookmarkCountAfterImport - bookmarkCountBeforeImport - Pixel.fire(pixel: .bookmarkImportSuccess, - withAdditionalParameters: [PixelParameters.bookmarkCount: "\(bookmarksImported)"]) - DispatchQueue.main.async { + WidgetCenter.shared.reloadAllTimelines() + DispatchQueue.main.async { [weak self] in + let bookmarkCountAfterImport = self?.dataSource.viewModel.totalBookmarksCount ?? 0 + let bookmarksImported = bookmarkCountAfterImport - bookmarkCountBeforeImport + Pixel.fire(pixel: .bookmarkImportSuccess, + withAdditionalParameters: [PixelParameters.bookmarkCount: "\(bookmarksImported)"]) ActionMessageView.present(message: UserText.importBookmarksSuccessMessage) } case .failure(let bookmarksImportError): @@ -378,7 +558,7 @@ class BookmarksViewController: UITableViewController { func exportAction() -> UIAction { return UIAction(title: UserText.exportBookmarksActionTitle, image: UIImage(named: Constants.exportBookmarkImage), - attributes: currentDataSource.isEmpty ? .disabled : []) { [weak self] _ in + attributes: dataSource.isEmpty ? .disabled : []) { [weak self] _ in self?.exportHtmlFile() } } @@ -387,7 +567,7 @@ class BookmarksViewController: UITableViewController { // create file to export let tempFileUrl = FileManager.default.temporaryDirectory.appendingPathComponent(Constants.bookmarksFileName) do { - try BookmarksExporter().exportBookmarksTo(url: tempFileUrl) + try BookmarksExporter(coreDataStore: bookmarksDatabase).exportBookmarksTo(url: tempFileUrl) } catch { os_log("bookmarks failed to export %s", type: .debug, error.localizedDescription) ActionMessageView.present(message: UserText.exportBookmarksFailedMessage) @@ -446,7 +626,9 @@ class BookmarksViewController: UITableViewController { // necessary in case a cell is swiped (which would mean isEditing is already true, and setting it again wouldn't do anything) tableView.isEditing = false - tableView.isEditing = true + tableView.setEditing(true, animated: true) + favoritesController?.isEditing = true + self.isEditingBookmarks = true changeEditButtonToDone() configureToolbarMoreItem() @@ -454,11 +636,13 @@ class BookmarksViewController: UITableViewController { } private func finishEditing() { + favoritesController?.isEditing = false + guard tableView.isEditing else { return } - tableView.isEditing = false + tableView.setEditing(false, animated: true) self.isEditingBookmarks = false refreshEditButton() enableDoneButton() @@ -488,11 +672,14 @@ class BookmarksViewController: UITableViewController { private func changeEditButtonToDone() { editButton.title = UserText.navigationTitleDone doneButton.title = "" + + navigationItem.rightBarButtonItem = nil doneButton.isEnabled = false } private func enableDoneButton() { doneButton.title = UserText.navigationTitleDone + navigationItem.rightBarButtonItem = doneButton doneButton.isEnabled = true } @@ -505,14 +692,18 @@ class BookmarksViewController: UITableViewController { moreButton.isEnabled = false } - private func enableFooterView() { + private func showEmptyState() { + emptyStateContainer.isHidden = false importFooterButton.isHidden = false importFooterButton.isEnabled = true + searchBar.removeFromSuperview() } - private func disableFooterView() { + private func hideEmptyState() { + emptyStateContainer.isHidden = true importFooterButton.isHidden = true importFooterButton.isEnabled = false + tableView.tableHeaderView = searchBar } private func prepareForSearching() { @@ -528,72 +719,25 @@ class BookmarksViewController: UITableViewController { enableEditButton() enableAddFolderButton() } - - fileprivate func showShareSheet(for indexPath: IndexPath) { - if let item = currentDataSource.item(at: indexPath), - let bookmark = item as? Bookmark { - presentShareSheet(withItems: [bookmark], fromView: self.view) - } else { - os_log("Invalid share link found", log: generalLog, type: .debug) - } - } - - fileprivate func select(bookmark: Bookmark) { + fileprivate func select(bookmark: BookmarkEntity) { + guard let url = bookmark.urlObject else { return } dismiss() - delegate?.bookmarksDidSelect(bookmark: bookmark) + delegate?.bookmarksDidSelect(url: url) } private func dismiss() { delegate?.bookmarksUpdated() - - if let searchController = searchController, searchController.isActive { - searchController.dismiss(animated: false) { - self.dismiss(animated: true, completion: nil) - } - } else { - dismiss(animated: true, completion: nil) - } + dismiss(animated: true, completion: nil) } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - if let viewController = segue.destination.children.first as? AddOrEditBookmarkFolderViewController { - viewController.hidesBottomBarWhenPushed = true - viewController.setExistingFolder(sender as? BookmarkFolder, initialParentFolder: dataSource.folder) - } else if let viewController = segue.destination.children.first as? AddOrEditBookmarkViewController { - viewController.hidesBottomBarWhenPushed = true - viewController.setExistingBookmark(sender as? Bookmark, initialParentFolder: dataSource.folder) - } - } - - override func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { - if (searchController?.searchBar.bounds.height ?? 0) == 0 { - // Disable drag-to-dismiss if we start scrolling and search bar is still hidden - isModalInPresentation = true - } - } - - override func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { - guard let searchController = searchController else { - return - } - - if isModalInPresentation, searchController.searchBar.bounds.height > 0 { - // Re-enable drag-to-dismiss if needed - isModalInPresentation = false + if let viewController = segue.destination as? FavoritesViewController { + viewController.delegate = self + favoritesController = viewController } } - override func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { - guard let searchController = searchController else { - return - } - - if isModalInPresentation, searchController.searchBar.bounds.height > 0 { - // Re-enable drag-to-dismiss if needed - isModalInPresentation = false - } - } } extension BookmarksViewController: UISearchBarDelegate { @@ -606,14 +750,13 @@ extension BookmarksViewController: UISearchBarDelegate { return } - if currentDataSource !== searchDataSource { + if dataSource !== searchDataSource { prepareForSearching() tableView.dataSource = searchDataSource } - searchDataSource.performSearch(query: searchText, searchEngine: bookmarksCachingSearch) { - self.tableView.reloadData() - } + searchDataSource.performSearch(searchText) + tableView.reloadData() } func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { @@ -627,14 +770,6 @@ extension BookmarksViewController: UISearchResultsUpdating { } } -extension BookmarksViewController: BookmarksSectionDataSourceDelegate { - func bookmarksSectionDataSourceDidRequestViewControllerForDeleteAlert( - _ bookmarksSectionDataSource: BookmarksSectionDataSource) -> UIViewController { - - return self - } -} - extension BookmarksViewController: Themable { func decorate(with theme: Theme) { @@ -643,7 +778,8 @@ extension BookmarksViewController: Themable { overrideSystemTheme(with: theme) searchController?.searchBar.searchTextField.textColor = theme.searchBarTextColor - + + tableView.backgroundColor = theme.backgroundColor tableView.separatorColor = theme.tableCellSeparatorColor navigationController?.view.backgroundColor = tableView.backgroundColor @@ -663,5 +799,17 @@ extension BookmarksViewController: UIDocumentPickerDelegate { } } +extension BookmarksViewController: FavoritesViewControllerDelegate { + + func favoritesViewController(_ controller: FavoritesViewController, didSelectFavorite favorite: BookmarkEntity) { + select(bookmark: favorite) + } + + func favoritesViewController(_ controller: FavoritesViewController, didRequestEditFavorite favorite: BookmarkEntity) { + performSegue(withIdentifier: "AddOrEditBookmarkFolder", sender: favorite.objectID) + } + +} + // swiftlint:enable type_body_length // swiftlint:enable file_length diff --git a/DuckDuckGo/BookmarksViewControllerCells.swift b/DuckDuckGo/BookmarksViewControllerCells.swift new file mode 100644 index 0000000000..8e28ef77bd --- /dev/null +++ b/DuckDuckGo/BookmarksViewControllerCells.swift @@ -0,0 +1,96 @@ +// +// BookmarksViewControllerCells.swift +// DuckDuckGo +// +// Copyright © 2017 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import UIKit +import Bookmarks +import Core + +class BookmarkCell: UITableViewCell { + + static let reuseIdentifier = "BookmarkCell" + + @IBOutlet weak var faviconImageView: UIImageView! + @IBOutlet weak var titleLabel: UILabel! + @IBOutlet weak var favoriteImageViewContainer: UIView! + +} + +class FolderCell: UITableViewCell { + + static let reuseIdentifier = "FolderCell" + + @IBOutlet weak var titleLabel: UILabel! + @IBOutlet weak var childrenCountLabel: UILabel! + + override func setEditing(_ editing: Bool, animated: Bool) { + super.setEditing(editing, animated: animated) + childrenCountLabel.isHidden = editing + } + +} + +class NoResultsCell: UITableViewCell { + + @IBOutlet var label: UILabel! + + static let reuseIdentifier = "NoResultsCell" +} + +class BookmarksViewControllerCellFactory { + + static func makeNoResultsCell(_ tableView: UITableView) -> UITableViewCell { + guard let cell = tableView.dequeueReusableCell(withIdentifier: NoResultsCell.reuseIdentifier) as? NoResultsCell else { + fatalError("Failed to dequeue no results cell") + } + + let theme = ThemeManager.shared.currentTheme + cell.backgroundColor = theme.tableCellBackgroundColor + cell.label.textColor = theme.tableCellTextColor + + return cell + } + + static func makeBookmarkCell(_ tableView: UITableView, forIndexPath indexPath: IndexPath) -> BookmarkCell { + guard let cell = tableView.dequeueReusableCell(withIdentifier: BookmarkCell.reuseIdentifier, for: indexPath) as? BookmarkCell else { + fatalError("Failed to dequeue bookmark item") + } + + let theme = ThemeManager.shared.currentTheme + cell.backgroundColor = theme.tableCellBackgroundColor + cell.titleLabel.textColor = theme.tableCellTextColor + cell.setHighlightedStateBackgroundColor(theme.tableCellHighlightedBackgroundColor) + cell.editingAccessoryType = .disclosureIndicator + return cell + } + + static func makeFolderCell(_ tableView: UITableView, forIndexPath indexPath: IndexPath) -> FolderCell { + guard let cell = tableView.dequeueReusableCell(withIdentifier: FolderCell.reuseIdentifier, for: indexPath) as? FolderCell else { + fatalError("Failed to dequeue folder cell") + } + + let theme = ThemeManager.shared.currentTheme + cell.backgroundColor = theme.tableCellBackgroundColor + cell.titleLabel.textColor = theme.tableCellTextColor + cell.childrenCountLabel.textColor = theme.tableCellTextColor + cell.setHighlightedStateBackgroundColor(theme.tableCellHighlightedBackgroundColor) + cell.editingAccessoryType = .disclosureIndicator + return cell + } + +} diff --git a/DuckDuckGo/BrowsingMenu/BrowsingMenu.xcassets/MenuFavorite.imageset/Contents.json b/DuckDuckGo/BrowsingMenu/BrowsingMenu.xcassets/MenuFavorite.imageset/Contents.json index 89678fcebc..44a8b9a6fa 100644 --- a/DuckDuckGo/BrowsingMenu/BrowsingMenu.xcassets/MenuFavorite.imageset/Contents.json +++ b/DuckDuckGo/BrowsingMenu/BrowsingMenu.xcassets/MenuFavorite.imageset/Contents.json @@ -10,6 +10,7 @@ "version" : 1 }, "properties" : { + "preserves-vector-representation" : true, "template-rendering-intent" : "template" } } diff --git a/DuckDuckGo/Favicons.swift b/DuckDuckGo/Favicons.swift index 61f04500f7..882d1b3e76 100644 --- a/DuckDuckGo/Favicons.swift +++ b/DuckDuckGo/Favicons.swift @@ -87,7 +87,7 @@ public class Favicons { private func baseCacheURL() -> URL? { switch self { case .bookmarks: - let groupName = BookmarkUserDefaults.Constants.groupName + let groupName = BookmarksDatabase.Constants.bookmarksGroupID return FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: groupName) case .tabs: @@ -99,56 +99,23 @@ public class Favicons { public static let shared = Favicons() - @UserDefaultsWrapper(key: .faviconsNeedMigration, defaultValue: true) - var needsMigration: Bool - @UserDefaultsWrapper(key: .faviconSizeNeedsMigration, defaultValue: true) var sizeNeedsMigration: Bool let sourcesProvider: FaviconSourcesProvider - let bookmarksStore: BookmarkStore - let bookmarksCachingSearch: BookmarksCachingSearch let downloader: NotFoundCachingDownloader let userAgentManager: UserAgentManager = DefaultUserAgentManager.shared init(sourcesProvider: FaviconSourcesProvider = DefaultFaviconSourcesProvider(), - bookmarksStore: BookmarkStore = BookmarkUserDefaults(), - bookmarksCachingSearch: BookmarksCachingSearch = CoreDependencyProvider.shared.bookmarksCachingSearch, downloader: NotFoundCachingDownloader = NotFoundCachingDownloader()) { self.sourcesProvider = sourcesProvider - self.bookmarksStore = bookmarksStore - self.bookmarksCachingSearch = bookmarksCachingSearch self.downloader = downloader // Prevents the caches being cleaned up NotificationCenter.default.removeObserver(Constants.bookmarksCache) NotificationCenter.default.removeObserver(Constants.tabsCache) } - - public func migrateIfNeeded(afterMigrationHandler: @escaping () -> Void) { - guard needsMigration else { return } - - DispatchQueue.global(qos: .utility).async { - ImageCache.default.clearDiskCache() - - let links = ((self.bookmarksStore.bookmarks + self.bookmarksStore.favorites).compactMap { $0.url.host }) - + PreserveLogins.shared.allowedDomains - - let group = DispatchGroup() - Set(links).forEach { domain in - group.enter() - self.loadFavicon(forDomain: domain, intoCache: .bookmarks) { _ in - group.leave() - } - } - group.wait() - - self.needsMigration = false - afterMigrationHandler() - } - - } public func migrateFavicons(to size: CGSize, afterMigrationHandler: @escaping () -> Void) { guard sizeNeedsMigration else { return } @@ -195,17 +162,12 @@ public class Favicons { } } - func replaceBookmarksFavicon(forDomain domain: String?, withImage image: UIImage) { + public func replaceBookmarksFavicon(forDomain domain: String?, withImage image: UIImage) { guard let domain = domain, let resource = defaultResource(forDomain: domain), let options = kfOptions(forDomain: domain, usingCache: .bookmarks) else { return } - if !isFaviconCachedForBookmarks(forDomain: domain, resource: resource) { - loadFaviconForBookmarks(forDomain: domain) - return - } - let faviconImage = scaleDownIfNeeded(image: image, toFit: Constants.maxFaviconSize) let replace = { @@ -213,14 +175,16 @@ public class Favicons { Constants.bookmarksCache.store(faviconImage, forKey: resource.cacheKey, options: .init(options)) } - // only replace if it exists and new one is bigger Constants.bookmarksCache.retrieveImageInDiskCache(forKey: resource.cacheKey, options: [.onlyFromCache ]) { result in switch result { case .success(let cachedImage): - if let cachedImage = cachedImage, cachedImage.size.width < faviconImage.size.width { - replace() - } else if self.bookmarksStore.contains(domain: domain) { + if let cachedImage = cachedImage { + // it's in the cache so only replace if the new one is bigger + if cachedImage.size.width < faviconImage.size.width { + replace() + } + } else { // Nothing in the cache so 'add' it replace() } @@ -231,16 +195,7 @@ public class Favicons { } func isFaviconCachedForBookmarks(forDomain domain: String, resource: ImageResource) -> Bool { - return Constants.bookmarksCache.isCached(forKey: resource.cacheKey) || bookmarksStore.contains(domain: domain) - } - - func loadFaviconForBookmarks(forDomain domain: String) { - // If the favicon is not cached for bookmarks, we need to: - // 1. check if a bookmark exists for the domain - // 2. if it does, we need to load the favicon for the domain - if bookmarksCachingSearch.containsDomain(domain) { - loadFavicon(forDomain: domain, intoCache: .bookmarks, fromCache: .tabs) - } + return Constants.bookmarksCache.isCached(forKey: resource.cacheKey) } public func clearCache(_ cacheType: CacheType) { @@ -260,10 +215,7 @@ public class Favicons { } public func removeFireproofFavicon(forDomain domain: String) { - - guard !bookmarksStore.contains(domain: domain) else { return } - removeFavicon(forDomain: domain, fromCache: .bookmarks) - + removeFavicon(forDomain: domain, fromCache: .bookmarks) } private func copyFavicon(forDomain domain: String, fromCache: CacheType, toCache: CacheType, completion: ((UIImage?) -> Void)? = nil) { diff --git a/DuckDuckGo/FavoriteHomeCell.swift b/DuckDuckGo/FavoriteHomeCell.swift index 2d89f561c3..2f304b4535 100644 --- a/DuckDuckGo/FavoriteHomeCell.swift +++ b/DuckDuckGo/FavoriteHomeCell.swift @@ -19,6 +19,7 @@ import UIKit import Core +import Bookmarks class FavoriteHomeCell: UICollectionViewCell { @@ -32,28 +33,32 @@ class FavoriteHomeCell: UICollectionViewCell { @IBOutlet weak var iconImage: UIImageView! @IBOutlet weak var highlightMask: UIView! @IBOutlet weak var iconSize: NSLayoutConstraint! - + @IBOutlet weak var deleteButton: UIButton! + static let appUrls = AppUrls() - - var isReordering = false { + + var isEditing = false { didSet { - let scale: CGFloat = isReordering ? 1.2 : 1.0 - transform = CGAffineTransform.identity.scaledBy(x: scale, y: scale) - contentView.alpha = isReordering ? 0.5 : 1.0 + deleteButton.isHidden = !isEditing } } - - var onDelete: (() -> Void)? - var onEdit: (() -> Void)? - - private var favorite: Bookmark? - private var theme: Theme? - - struct Actions { - static let delete = #selector(FavoriteHomeCell.doDelete(sender:)) - static let edit = #selector(FavoriteHomeCell.doEdit(sender:)) + + var truncatedUrlString: String? { + guard let url = favorite?.url else { return nil } + let urlString = url.prefix(100).description + let ellipsis = url.count != urlString.count ? "…" : "" + return urlString + ellipsis } - + + var title: String? { + favorite?.title + } + + var onRemove: (() -> Void)? + + var favorite: BookmarkEntity? + private var theme: Theme? + override var isHighlighted: Bool { didSet { highlightMask.isHidden = !isHighlighted @@ -67,43 +72,49 @@ class FavoriteHomeCell: UICollectionViewCell { override func awakeFromNib() { super.awakeFromNib() FavoriteHomeCell.applyDropshadow(to: iconBackground) + FavoriteHomeCell.applyDropshadow(to: deleteButton) + layer.cornerRadius = 8 } - - @objc func doDelete(sender: Any?) { - onDelete?() - } - - @objc func doEdit(sender: Any?) { - onEdit?() + + override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { + if deleteButton.frame.contains(point) { + return deleteButton + } + return super.hitTest(point, with: event) } - - override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool { - return [ Actions.delete, Actions.edit ].contains(action) + + @IBAction func onRemoveAction() { + self.onRemove?() } - - func updateFor(favorite: Bookmark) { + + func updateFor(favorite: BookmarkEntity) { self.favorite = favorite - let host = favorite.url?.host?.droppingWwwPrefix() ?? "" + let host = favorite.host + let color = UIColor.forDomain(host) isAccessibilityElement = true accessibilityTraits = .button - accessibilityLabel = "\(favorite.displayTitle ?? "")). \(UserText.favorite)" + accessibilityLabel = "\(favorite.displayTitle). \(UserText.favorite)" titleLabel.text = favorite.displayTitle - iconBackground.backgroundColor = UIColor.forDomain(host) - - if let domain = favorite.url?.host?.droppingWwwPrefix(), - let fakeFavicon = FaviconsHelper.createFakeFavicon(forDomain: favorite.url?.host ?? "", - backgroundColor: UIColor.forDomain(domain), - bold: false) { - iconImage.image = fakeFavicon - } + iconBackground.backgroundColor = color + + let iconImage = self.iconImage + let domain = favorite.host + let fakeFavicon = FaviconsHelper.createFakeFavicon(forDomain: domain, + size: iconImage?.frame.width ?? 64, + backgroundColor: color, + bold: false) + iconImage?.image = fakeFavicon - iconImage.loadFavicon(forDomain: favorite.url?.host, usingCache: .bookmarks, useFakeFavicon: false) { image, _ in - guard let image = image else { return } + iconImage?.loadFavicon(forDomain: domain, usingCache: .bookmarks, useFakeFavicon: false) { image, _ in + guard let image = image else { + iconImage?.image = fakeFavicon + return + } - let useBorder = Self.appUrls.isDuckDuckGo(domain: favorite.url?.host) || image.size.width < Constants.largeFaviconSize + let useBorder = Self.appUrls.isDuckDuckGo(domain: domain) || image.size.width < Constants.largeFaviconSize self.useImageBorder(useBorder) self.applyFavicon(image) } @@ -133,6 +144,27 @@ class FavoriteHomeCell: UICollectionViewCell { } +private extension BookmarkEntity { + + var displayTitle: String { + if let title = title?.trimmingWhitespace() { + return title + } + + if let host = urlObject?.host?.droppingWwwPrefix() { + return host + } + + assertionFailure("Unable to create display title") + return "" + } + + var host: String { + return urlObject?.host ?? "" + } + +} + extension FavoriteHomeCell: Themable { func decorate(with theme: Theme) { diff --git a/DuckDuckGo/FavoriteHomeCell.xib b/DuckDuckGo/FavoriteHomeCell.xib index dbaf699406..4a9fe1842e 100644 --- a/DuckDuckGo/FavoriteHomeCell.xib +++ b/DuckDuckGo/FavoriteHomeCell.xib @@ -1,9 +1,9 @@ - + - + @@ -14,7 +14,7 @@ - + @@ -53,7 +53,7 @@ + + + diff --git a/DuckDuckGo/FavoritesHomeViewSectionRenderer.swift b/DuckDuckGo/FavoritesHomeViewSectionRenderer.swift index c084060210..4e82f5db31 100644 --- a/DuckDuckGo/FavoritesHomeViewSectionRenderer.swift +++ b/DuckDuckGo/FavoritesHomeViewSectionRenderer.swift @@ -19,18 +19,23 @@ import UIKit import Core +import Bookmarks +import WidgetKit protocol FavoritesHomeViewSectionRendererDelegate: AnyObject { func favoritesRenderer(_ renderer: FavoritesHomeViewSectionRenderer, - didSelect favorite: Bookmark) + didSelect favorite: BookmarkEntity) + func favoritesRenderer(_ renderer: FavoritesHomeViewSectionRenderer, - didRequestEdit favorite: Bookmark) - + didRequestEdit favorite: BookmarkEntity) + + func favoritesRenderer(_ renderer: FavoritesHomeViewSectionRenderer, + favoriteDeleted favorite: BookmarkEntity) } class FavoritesHomeViewSectionRenderer: NSObject, HomeViewSectionRenderer { - + struct Constants { static let searchWidth: CGFloat = 380 @@ -41,12 +46,14 @@ class FavoritesHomeViewSectionRenderer: NSObject, HomeViewSectionRenderer { } - let bookmarksManager: BookmarksManager + let viewModel: FavoritesListInteracting private weak var controller: (UIViewController & FavoritesHomeViewSectionRendererDelegate)? private weak var reorderingCell: FavoriteHomeCell? - + + var isEditing = false + private let allowsEditing: Bool private let cellWidth: CGFloat private let cellHeight: CGFloat @@ -55,40 +62,36 @@ class FavoritesHomeViewSectionRenderer: NSObject, HomeViewSectionRenderer { return controller?.traitCollection.horizontalSizeClass == .regular } - init(allowsEditing: Bool = true, bookmarksManager: BookmarksManager = BookmarksManager()) { + init(allowsEditing: Bool = true, viewModel: FavoritesListInteracting) { guard let cell = (UINib(nibName: "FavoriteHomeCell", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as? UIView) else { fatalError("Failed to load FavoriteHomeCell") } self.allowsEditing = allowsEditing - self.bookmarksManager = bookmarksManager self.cellHeight = cell.frame.height self.cellWidth = cell.frame.width + self.viewModel = viewModel } private var numberOfItems: Int { - return bookmarksManager.favoritesCount + return viewModel.favorites.count } private var headerHeight: CGFloat { return Constants.defaultHeaderHeight } - + func install(into controller: HomeViewController) { self.controller = controller + if numberOfItems > 0 { + controller.hideLogo() + } } - + func install(into controller: UIViewController & FavoritesHomeViewSectionRendererDelegate) { self.controller = controller } - - func endReordering() { - if let cell = reorderingCell { - cell.isReordering = false - reorderingCell = nil - } - } - + func sectionMargin(in collectionView: UICollectionView) -> CGFloat { if controller is FavoritesOverlay { return Constants.largeModeMargin @@ -132,50 +135,40 @@ class FavoritesHomeViewSectionRenderer: NSObject, HomeViewSectionRenderer { } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { - guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "favorite", for: indexPath) as? FavoriteHomeCell else { fatalError("not a FavoriteCell") } - guard let favorite = bookmarksManager.favorite(atIndex: indexPath.row) else { + guard let favorite = viewModel.favorite(at: indexPath.row) else { return cell } - cell.updateFor(favorite: favorite) - - // can't use captured index path because deleting items can change it - cell.onDelete = { [weak self, weak collectionView, weak cell] in - guard let collectionView = collectionView else { return } - guard let cell = cell else { return } - - self?.deleteFavorite(cell, collectionView) - } - cell.onEdit = { [weak self, weak collectionView, weak cell] in - guard let collectionView = collectionView else { return } - guard let cell = cell else { return } - - self?.editFavorite(cell, collectionView) + cell.onRemove = { [weak self] in + self?.removeFavorite(cell, collectionView) } + + cell.updateFor(favorite: favorite) + cell.isEditing = isEditing return cell } - private func deleteFavorite(_ cell: FavoriteHomeCell, _ collectionView: UICollectionView) { + private func removeFavorite(_ cell: FavoriteHomeCell, _ collectionView: UICollectionView) { guard let indexPath = collectionView.indexPath(for: cell), - let favorite = bookmarksManager.favorite(atIndex: indexPath.row) else { return } + let favorite = viewModel.favorite(at: indexPath.row) else { return } Pixel.fire(pixel: .homeScreenDeleteFavorite) - bookmarksManager.delete(favorite) - collectionView.performBatchUpdates({ + viewModel.removeFavorite(favorite) + WidgetCenter.shared.reloadAllTimelines() + collectionView.performBatchUpdates { collectionView.deleteItems(at: [indexPath]) - }) + self.controller?.favoritesRenderer(self, favoriteDeleted: favorite) + } } private func editFavorite(_ cell: FavoriteHomeCell, _ collectionView: UICollectionView) { guard let indexPath = collectionView.indexPath(for: cell), - let favorite = bookmarksManager.favorite(atIndex: indexPath.row) else { return } - + let favorite = viewModel.favorite(at: indexPath.row) else { return } Pixel.fire(pixel: .homeScreenEditFavorite) - controller?.favoritesRenderer(self, didRequestEdit: favorite) } @@ -188,32 +181,6 @@ class FavoritesHomeViewSectionRenderer: NSObject, HomeViewSectionRenderer { func supportsReordering() -> Bool { return true } - - func collectionView(_ collectionView: UICollectionView, canMoveItemAt indexPath: IndexPath) -> Bool { - guard allowsEditing else { - return false - } - - if let cell = collectionView.cellForItem(at: indexPath) as? FavoriteHomeCell { - cell.isReordering = true - reorderingCell = cell - return true - } - return false - } - - func collectionView(_ collectionView: UICollectionView, moveItemAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) { - guard let favorite = bookmarksManager.favorite(atIndex: sourceIndexPath.row) else { - return - } - bookmarksManager.updateIndex(of: favorite.objectID, newIndex: destinationIndexPath.row) - } - - func collectionView(_ collectionView: UICollectionView, targetIndexPathForMoveFromItemAt originalIndexPath: IndexPath, - toProposedIndexPath proposedIndexPath: IndexPath) -> IndexPath? { - guard originalIndexPath.section == proposedIndexPath.section else { return originalIndexPath } - return proposedIndexPath - } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, @@ -227,25 +194,125 @@ class FavoritesHomeViewSectionRenderer: NSObject, HomeViewSectionRenderer { return CGSize(width: 1, height: Constants.defaultHeaderHeight) } - func menuItemsFor(itemAt: Int) -> [UIMenuItem]? { - return [ - UIMenuItem(title: UserText.favoriteMenuDelete, action: FavoriteHomeCell.Actions.delete), - UIMenuItem(title: UserText.favoriteMenuEdit, action: FavoriteHomeCell.Actions.edit) - ] - } - func collectionView(_ collectionView: UICollectionView, shouldSelectItemAt indexPath: IndexPath) -> Bool { return true } func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { - launchFavorite(in: collectionView, at: indexPath) + if isEditing { + guard let cell = collectionView.cellForItem(at: indexPath) as? FavoriteHomeCell else { return } + editFavorite(cell, collectionView) + } else { + launchFavorite(in: collectionView, at: indexPath) + } + } + + func collectionView(_ collectionView: UICollectionView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { + return previewForConfiguration(configuration, inCollectionView: collectionView) + } + + func collectionView(_ collectionView: UICollectionView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { + return previewForConfiguration(configuration, inCollectionView: collectionView) + } + + func previewForConfiguration(_ configuration: UIContextMenuConfiguration, inCollectionView collectionView: UICollectionView) -> UITargetedPreview? { + guard let indexPath = configuration.identifier as? IndexPath, + let cell = collectionView.cellForItem(at: indexPath) as? FavoriteHomeCell else { + return nil + } + + let targetedPreview = UITargetedPreview(view: cell.iconBackground) + targetedPreview.parameters.backgroundColor = .clear + return targetedPreview + } + + func collectionView(_ collectionView: UICollectionView, + contextMenuConfigurationForItemAt indexPath: IndexPath, + point: CGPoint) -> UIContextMenuConfiguration? { + + guard allowsEditing else { return nil } + + guard let cell = collectionView.cellForItem(at: indexPath) as? FavoriteHomeCell else { return nil } + + let edit = UIAction(title: UserText.favoriteMenuEdit, + image: UIImage(named: "Edit")) { [weak self] _ in + self?.editFavorite(cell, collectionView) + } + + let remove = UIAction(title: UserText.favoriteMenuRemove, + image: UIImage(named: "RemoveFavoriteMenuIcon")) { [weak self] _ in + self?.removeFavorite(cell, collectionView) + } + + let context = UIContextMenuConfiguration(identifier: indexPath as NSIndexPath) { + return nil + } actionProvider: { _ in + + let title = [ + cell.title, + cell.truncatedUrlString + ].compactMap { $0 }.joined(separator: "\n") + + return UIMenu(title: title, options: .displayInline, children: [ + edit, + remove + ]) + } + + return context } private func launchFavorite(in: UICollectionView, at indexPath: IndexPath) { - guard let favorite = bookmarksManager.favorite(atIndex: indexPath.row) else { return } + guard let favorite = viewModel.favorite(at: indexPath.row) else { return } UISelectionFeedbackGenerator().selectionChanged() controller?.favoritesRenderer(self, didSelect: favorite) } - + + func collectionView(_ collectionView: UICollectionView, performDropWith coordinator: UICollectionViewDropCoordinator) { + guard coordinator.proposal.operation == .move, + let dragItem = coordinator.items.first?.dragItem, + let sourcePath = coordinator.items.first?.sourceIndexPath, + let destinationPath = coordinator.destinationIndexPath, + let cell = self.collectionView(collectionView, cellForItemAt: sourcePath) as? FavoriteHomeCell, + let favorite = cell.favorite + else { return } + + collectionView.performBatchUpdates { + viewModel.moveFavorite(favorite, fromIndex: sourcePath.row, toIndex: destinationPath.row) + WidgetCenter.shared.reloadAllTimelines() + collectionView.deleteItems(at: [sourcePath]) + collectionView.insertItems(at: [destinationPath]) + } + + coordinator.drop(dragItem, toItemAt: destinationPath) + + } + + func collectionView(_ collectionView: UICollectionView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem] { + guard let cell = self.collectionView(collectionView, cellForItemAt: indexPath) as? FavoriteHomeCell else { return [] } + + if let size = cell.iconImage.image?.size.width, size <= 32 { + cell.iconBackground.backgroundColor = ThemeManager.shared.currentTheme.backgroundColor + } + + let item = viewModel.favorite(at: indexPath.row) + // Using the URL allows this item to be dragged into other apps + let dragItem = UIDragItem(itemProvider: NSItemProvider(object: (item?.url ?? "") as NSString)) + dragItem.previewProvider = { () -> UIDragPreview? in + return UIDragPreview(view: cell.iconBackground) + } + return [ dragItem ] + } + + func collectionView(_ collectionView: UICollectionView, + dropSessionDidUpdate session: UIDropSession, + withDestinationIndexPath destinationIndexPath: IndexPath?) -> UICollectionViewDropProposal { + + guard collectionView.hasActiveDrag else { + return UICollectionViewDropProposal(operation: .forbidden) + } + + return UICollectionViewDropProposal(operation: .move, intent: .insertAtDestinationIndexPath) + } + } diff --git a/DuckDuckGo/FavoritesOverlay.swift b/DuckDuckGo/FavoritesOverlay.swift index b712281ba6..913ae7c438 100644 --- a/DuckDuckGo/FavoritesOverlay.swift +++ b/DuckDuckGo/FavoritesOverlay.swift @@ -19,10 +19,12 @@ import UIKit import Core +import Bookmarks +import Persistence protocol FavoritesOverlayDelegate: AnyObject { - func favoritesOverlay(_ overlay: FavoritesOverlay, didSelect favorite: Bookmark) + func favoritesOverlay(_ overlay: FavoritesOverlay, didSelect favorite: BookmarkEntity) } class FavoritesOverlay: UIViewController { @@ -40,6 +42,16 @@ class FavoritesOverlay: UIViewController { weak var delegate: FavoritesOverlayDelegate? + init(viewModel: FavoritesListInteracting) { + renderer = FavoritesHomeViewSectionRenderer(allowsEditing: false, + viewModel: viewModel) + super.init(nibName: nil, bundle: nil) + } + + required init?(coder: NSCoder) { + fatalError("Not implemented") + } + override func viewDidLoad() { super.viewDidLoad() @@ -52,7 +64,6 @@ class FavoritesOverlay: UIViewController { view.addSubview(collectionView) - renderer = FavoritesHomeViewSectionRenderer(allowsEditing: false) renderer.install(into: self) registerForKeyboardNotifications() @@ -103,13 +114,17 @@ class FavoritesOverlay: UIViewController { extension FavoritesOverlay: FavoritesHomeViewSectionRendererDelegate { - func favoritesRenderer(_ renderer: FavoritesHomeViewSectionRenderer, didSelect favorite: Bookmark) { + func favoritesRenderer(_ renderer: FavoritesHomeViewSectionRenderer, didSelect favorite: BookmarkEntity) { delegate?.favoritesOverlay(self, didSelect: favorite) } - func favoritesRenderer(_ renderer: FavoritesHomeViewSectionRenderer, didRequestEdit favorite: Bookmark) { + func favoritesRenderer(_ renderer: FavoritesHomeViewSectionRenderer, didRequestEdit favorite: BookmarkEntity) { // currently can't edit favorites from overlay } + + func favoritesRenderer(_ renderer: FavoritesHomeViewSectionRenderer, favoriteDeleted favorite: BookmarkEntity) { + // currently can't delete favorites from overlay + } } diff --git a/DuckDuckGo/FavoritesViewController.swift b/DuckDuckGo/FavoritesViewController.swift new file mode 100644 index 0000000000..b2f550dbd4 --- /dev/null +++ b/DuckDuckGo/FavoritesViewController.swift @@ -0,0 +1,256 @@ +// +// FavoritesViewController.swift +// DuckDuckGo +// +// Copyright © 2022 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation +import UIKit +import Core +import Bookmarks +import Persistence +import Combine + +protocol FavoritesViewControllerDelegate: NSObjectProtocol { + + func favoritesViewController(_ controller: FavoritesViewController, didSelectFavorite: BookmarkEntity) + func favoritesViewController(_ controller: FavoritesViewController, didRequestEditFavorite: BookmarkEntity) + +} + +class FavoritesViewController: UIViewController { + + @IBOutlet weak var emptyStateContainer: UIView! + + struct Constants { + static let margin: CGFloat = 12 + static let footerPadding: CGFloat = 50 + } + + private let layout = UICollectionViewFlowLayout() + var collectionView: UICollectionView! + private var renderer: FavoritesHomeViewSectionRenderer! + + private var theme: Theme? + + weak var delegate: FavoritesViewControllerDelegate? + + private let bookmarksDatabase: CoreDataDatabase + + fileprivate var viewModelCancellable: AnyCancellable? + + var hasFavorites: Bool { + renderer.viewModel.favorites.count > 0 + } + + override var isEditing: Bool { + didSet { + renderer.isEditing = isEditing + collectionView.reloadData() + } + } + + init?(coder: NSCoder, bookmarksDatabase: CoreDataDatabase) { + self.bookmarksDatabase = bookmarksDatabase + super.init(coder: coder) + } + + required init?(coder: NSCoder) { + fatalError("Not implemented") + } + + override func viewDidLoad() { + super.viewDidLoad() + theme = ThemeManager.shared.currentTheme + + collectionView = UICollectionView(frame: view.bounds, collectionViewLayout: layout) + + collectionView.register(UINib(nibName: "FavoriteHomeCell", bundle: nil), forCellWithReuseIdentifier: "favorite") + collectionView.delegate = self + collectionView.dataSource = self + collectionView.dragDelegate = self + collectionView.dropDelegate = self + collectionView.backgroundColor = .clear + + view.addSubview(collectionView) + + renderer = FavoritesHomeViewSectionRenderer(allowsEditing: true, + viewModel: FavoritesListViewModel(bookmarksDatabase: bookmarksDatabase)) + renderer.install(into: self) + + // Has to happen after the renderer is installed + collectionView.contentInset = .init(top: 8, left: 0, bottom: 0, right: 0) + + viewModelCancellable = renderer.viewModel.externalUpdates.sink { [weak self] _ in + self?.collectionView.reloadData() + self?.updateHeroImage() + } + + registerForKeyboardNotifications() + + updateHeroImage() + + applyTheme(ThemeManager.shared.currentTheme) + } + + override func viewDidLayoutSubviews() { + super.viewDidLayoutSubviews() + + if AppWidthObserver.shared.isLargeWidth { + layout.minimumInteritemSpacing = 32 + } else { + layout.minimumInteritemSpacing = 10 + } + + collectionView.frame = view.bounds + collectionView.setNeedsLayout() + } + + private func updateHeroImage() { + emptyStateContainer.isHidden = renderer.viewModel.favorites.count > 0 + } + + private func registerForKeyboardNotifications() { + NotificationCenter.default.addObserver(self, + selector: #selector(keyboardDidShow), + name: UIResponder.keyboardDidShowNotification, + object: nil) + + NotificationCenter.default.addObserver(self, + selector: #selector(keyboardWillHide), + name: UIResponder.keyboardWillHideNotification, + object: nil) + } + + @objc private func keyboardDidShow(notification: NSNotification) { + guard !AppWidthObserver.shared.isLargeWidth else { return } + guard let keyboardFrame = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect else { return } + let keyboardSize = keyboardFrame.size + let contentInsets = UIEdgeInsets(top: 0.0, left: 0.0, bottom: keyboardSize.height + Constants.margin * 2, right: 0.0) + collectionView.contentInset = contentInsets + collectionView.scrollIndicatorInsets = contentInsets + } + + @objc private func keyboardWillHide(notification: NSNotification) { + let contentInsets = UIEdgeInsets.zero + collectionView.contentInset = contentInsets + collectionView.scrollIndicatorInsets = contentInsets + } +} + +extension FavoritesViewController: FavoritesHomeViewSectionRendererDelegate { + + func favoritesRenderer(_ renderer: FavoritesHomeViewSectionRenderer, didSelect favorite: BookmarkEntity) { + delegate?.favoritesViewController(self, didSelectFavorite: favorite) + } + + func favoritesRenderer(_ renderer: FavoritesHomeViewSectionRenderer, didRequestEdit favorite: BookmarkEntity) { + delegate?.favoritesViewController(self, didRequestEditFavorite: favorite) + } + + func favoritesRenderer(_ renderer: FavoritesHomeViewSectionRenderer, favoriteDeleted favorite: BookmarkEntity) { + updateHeroImage() + } + +} + +extension FavoritesViewController: UICollectionViewDelegate { + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + renderer.collectionView(collectionView, didSelectItemAt: indexPath) + } + + func collectionView(_ collectionView: UICollectionView, + layout collectionViewLayout: UICollectionViewLayout, + referenceSizeForFooterInSection section: Int) -> CGSize { + return CGSize(width: 1, height: Constants.footerPadding) + } + +} + +extension FavoritesViewController: UICollectionViewDragDelegate, UICollectionViewDropDelegate { + + func collectionView(_ collectionView: UICollectionView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem] { + return renderer.collectionView(collectionView, itemsForBeginning: session, at: indexPath) + } + + func collectionView(_ collectionView: UICollectionView, performDropWith coordinator: UICollectionViewDropCoordinator) { + renderer.collectionView(collectionView, performDropWith: coordinator) + } + + func collectionView(_ collectionView: UICollectionView, dropSessionDidUpdate session: UIDropSession, withDestinationIndexPath destinationIndexPath: IndexPath?) -> UICollectionViewDropProposal { + return renderer.collectionView(collectionView, dropSessionDidUpdate: session, withDestinationIndexPath: destinationIndexPath) + } + +} + +extension FavoritesViewController: UICollectionViewDataSource { + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return renderer.collectionView(collectionView, numberOfItemsInSection: section) + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = renderer.collectionView(collectionView, cellForItemAt: indexPath) + if let themable = cell as? Themable, + let theme = theme { + themable.decorate(with: theme) + } + return cell + } + + func collectionView(_ collectionView: UICollectionView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { + return renderer.collectionView(collectionView, previewForHighlightingContextMenuWithConfiguration: configuration) + } + + func collectionView(_ collectionView: UICollectionView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { + return renderer.collectionView(collectionView, previewForHighlightingContextMenuWithConfiguration: configuration) + } + + func collectionView(_ collectionView: UICollectionView, contextMenuConfigurationForItemAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { + return renderer.collectionView(collectionView, contextMenuConfigurationForItemAt: indexPath, point: point) + } + +} + + +extension FavoritesViewController: UICollectionViewDelegateFlowLayout { + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) + -> CGSize { + return renderer.collectionView(collectionView, layout: collectionViewLayout, sizeForItemAt: indexPath) + } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) + -> UIEdgeInsets { + + var insets = renderer.collectionView(collectionView, layout: collectionViewLayout, insetForSectionAt: section) ?? UIEdgeInsets.zero + + insets.top += Constants.margin + return insets + } +} + +extension FavoritesViewController: Themable { + + func decorate(with theme: Theme) { + self.theme = theme + view.backgroundColor = theme.backgroundColor + collectionView.backgroundColor = .clear + emptyStateContainer.backgroundColor = .clear + + collectionView.reloadData() + } +} diff --git a/DuckDuckGo/FileSizeDebugViewController.swift b/DuckDuckGo/FileSizeDebugViewController.swift index c6a9a72817..b57d21c41f 100644 --- a/DuckDuckGo/FileSizeDebugViewController.swift +++ b/DuckDuckGo/FileSizeDebugViewController.swift @@ -80,7 +80,7 @@ class FileSizeDebugViewController: UITableViewController { } private var sharedBookmarksContainerURL: URL? { - let identifier = "\(Global.groupIdPrefix).bookmarks" + let identifier = BookmarksDatabase.Constants.bookmarksGroupID return FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: identifier) } diff --git a/DuckDuckGo/HomeCollectionView.swift b/DuckDuckGo/HomeCollectionView.swift index e949db505f..94bfda02e1 100644 --- a/DuckDuckGo/HomeCollectionView.swift +++ b/DuckDuckGo/HomeCollectionView.swift @@ -18,6 +18,7 @@ // import UIKit +import Bookmarks class HomeCollectionView: UICollectionView { @@ -65,17 +66,19 @@ class HomeCollectionView: UICollectionView { UIMenuController.shared.hideMenu() } - func configure(withController controller: HomeViewController, andTheme theme: Theme) { + func configure(withController controller: HomeViewController, + favoritesViewModel: FavoritesListInteracting, + andTheme theme: Theme) { self.controller = controller renderers = HomeViewSectionRenderers(controller: controller, theme: theme) - homePageConfiguration.components().forEach { component in + homePageConfiguration.components(favoritesViewModel: favoritesViewModel).forEach { component in switch component { case .navigationBarSearch(let fixed): renderers.install(renderer: NavigationSearchHomeViewSectionRenderer(fixed: fixed)) case .favorites: - renderers.install(renderer: FavoritesHomeViewSectionRenderer()) + renderers.install(renderer: FavoritesHomeViewSectionRenderer(viewModel: favoritesViewModel)) case .homeMessage: renderers.install(renderer: HomeMessageViewSectionRenderer(homePageConfiguration: homePageConfiguration)) @@ -85,6 +88,9 @@ class HomeCollectionView: UICollectionView { dataSource = renderers delegate = renderers + dropDelegate = renderers + dragDelegate = renderers + collectionViewReorderingGesture.delegate = self addGestureRecognizer(collectionViewReorderingGesture) } diff --git a/DuckDuckGo/HomeControllerDelegate.swift b/DuckDuckGo/HomeControllerDelegate.swift index 0098a255f2..2955e0bdb7 100644 --- a/DuckDuckGo/HomeControllerDelegate.swift +++ b/DuckDuckGo/HomeControllerDelegate.swift @@ -19,12 +19,13 @@ import UIKit import Core +import Bookmarks protocol HomeControllerDelegate: AnyObject { func home(_ home: HomeViewController, didRequestUrl url: URL) - func home(_ home: HomeViewController, didRequestEdit favorite: Bookmark) + func home(_ home: HomeViewController, didRequestEdit favorite: BookmarkEntity) func home(_ home: HomeViewController, didRequestQuery query: String) diff --git a/DuckDuckGo/HomePageConfiguration.swift b/DuckDuckGo/HomePageConfiguration.swift index 3c5f3c833f..c9a2fd6d7f 100644 --- a/DuckDuckGo/HomePageConfiguration.swift +++ b/DuckDuckGo/HomePageConfiguration.swift @@ -21,6 +21,7 @@ import Foundation import BrowserServicesKit import Core import os.log +import Bookmarks final class HomePageConfiguration { @@ -29,9 +30,9 @@ final class HomePageConfiguration { case favorites case homeMessage } - - func components(bookmarksManager: BookmarksManager = BookmarksManager()) -> [Component] { - let fixed = bookmarksManager.favoritesCount == 0 + + func components(favoritesViewModel: FavoritesListInteracting) -> [Component] { + let fixed = favoritesViewModel.favorites.count == 0 return [ .navigationBarSearch(fixed: fixed), .homeMessage, @@ -46,7 +47,8 @@ final class HomePageConfiguration { var homeMessages: [HomeMessage] = [] - init(variantManager: VariantManager? = nil, remoteMessagingStore: RemoteMessagingStore = RemoteMessagingStore()) { + init(variantManager: VariantManager? = nil, + remoteMessagingStore: RemoteMessagingStore = RemoteMessagingStore()) { homeMessageStorage = HomeMessageStorage(variantManager: variantManager) self.remoteMessagingStore = remoteMessagingStore homeMessages = buildHomeMessages() diff --git a/DuckDuckGo/HomeViewController.swift b/DuckDuckGo/HomeViewController.swift index b3c09920cf..106cf8b200 100644 --- a/DuckDuckGo/HomeViewController.swift +++ b/DuckDuckGo/HomeViewController.swift @@ -20,6 +20,7 @@ import UIKit import Core import os.log +import Bookmarks class HomeViewController: UIViewController { @@ -58,20 +59,25 @@ class HomeViewController: UIViewController { private var viewHasAppeared = false private var defaultVerticalAlignConstant: CGFloat = 0 - private(set) var tabModel: Tab + private let tabModel: Tab + private let favoritesViewModel: FavoritesListInteracting - static func loadFromStoryboard(model: Tab) -> HomeViewController { + static func loadFromStoryboard(model: Tab, favoritesViewModel: FavoritesListInteracting) -> HomeViewController { let storyboard = UIStoryboard(name: "Home", bundle: nil) - guard let controller = storyboard.instantiateViewController(withIdentifier: "HomeViewController") as? HomeViewController else { - fatalError("Failed to instantiate correct view controller for Home") - } - controller.tabModel = model + let controller = storyboard.instantiateViewController(identifier: "HomeViewController", creator: { coder in + HomeViewController(coder: coder, tabModel: model, favoritesViewModel: favoritesViewModel) + }) return controller } - required init?(coder aDecoder: NSCoder) { - tabModel = Tab(link: nil) - super.init(coder: aDecoder) + required init?(coder: NSCoder, tabModel: Tab, favoritesViewModel: FavoritesListInteracting) { + self.tabModel = tabModel + self.favoritesViewModel = favoritesViewModel + super.init(coder: coder) + } + + required init?(coder: NSCoder) { + fatalError("Not implemented") } override func viewDidLoad() { @@ -82,10 +88,6 @@ class HomeViewController: UIViewController { configureCollectionView() applyTheme(ThemeManager.shared.currentTheme) - NotificationCenter.default.addObserver(self, - selector: #selector(bookmarksDidChange), - name: BookmarksManager.Notifications.bookmarksDidChange, - object: nil) NotificationCenter.default.addObserver(self, selector: #selector(remoteMessagesDidChange), @@ -104,7 +106,9 @@ class HomeViewController: UIViewController { } func configureCollectionView() { - collectionView.configure(withController: self, andTheme: ThemeManager.shared.currentTheme) + collectionView.configure(withController: self, + favoritesViewModel: favoritesViewModel, + andTheme: ThemeManager.shared.currentTheme) } func enableContentUnderflow() -> CGFloat { @@ -248,17 +252,21 @@ class HomeViewController: UIViewController { extension HomeViewController: FavoritesHomeViewSectionRendererDelegate { - func favoritesRenderer(_ renderer: FavoritesHomeViewSectionRenderer, didSelect favorite: Bookmark) { - guard let url = favorite.url else { return } + func favoritesRenderer(_ renderer: FavoritesHomeViewSectionRenderer, didSelect favorite: BookmarkEntity) { + guard let url = favorite.urlObject else { return } Pixel.fire(pixel: .homeScreenFavouriteLaunched) Favicons.shared.loadFavicon(forDomain: url.host, intoCache: .bookmarks, fromCache: .tabs) delegate?.home(self, didRequestUrl: url) } - func favoritesRenderer(_ renderer: FavoritesHomeViewSectionRenderer, didRequestEdit favorite: Bookmark) { + func favoritesRenderer(_ renderer: FavoritesHomeViewSectionRenderer, didRequestEdit favorite: BookmarkEntity) { delegate?.home(self, didRequestEdit: favorite) } + func favoritesRenderer(_ renderer: FavoritesHomeViewSectionRenderer, favoriteDeleted favorite: BookmarkEntity) { + delegate?.home(self, didRequestHideLogo: renderer.viewModel.favorites.count > 0) + } + } extension HomeViewController: HomeMessageViewSectionRendererDelegate { diff --git a/DuckDuckGo/HomeViewSectionRenderers.swift b/DuckDuckGo/HomeViewSectionRenderers.swift index 1dfc817909..8e1b28628f 100644 --- a/DuckDuckGo/HomeViewSectionRenderers.swift +++ b/DuckDuckGo/HomeViewSectionRenderers.swift @@ -41,24 +41,11 @@ protocol HomeViewSectionRenderer: AnyObject { func omniBarCancelPressed() func openedAsNewTab() - - func menuItemsFor(itemAt: Int) -> [UIMenuItem]? - + func launchNewSearch() func supportsReordering() -> Bool - func collectionView(_ collectionView: UICollectionView, - canMoveItemAt indexPath: IndexPath) -> Bool - - func collectionView(_ collectionView: UICollectionView, - moveItemAt sourceIndexPath: IndexPath, - to destinationIndexPath: IndexPath) - - func collectionView(_ collectionView: UICollectionView, - targetIndexPathForMoveFromItemAt originalIndexPath: IndexPath, - toProposedIndexPath proposedIndexPath: IndexPath) -> IndexPath? - func collectionView(_ collectionView: UICollectionView, shouldSelectItemAt indexPath: IndexPath) -> Bool func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) @@ -80,82 +67,34 @@ protocol HomeViewSectionRenderer: AnyObject { func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets? - - func endReordering() - -} -extension HomeViewSectionRenderer { - - func install(into controller: HomeViewController) { } - - func remove(from controller: HomeViewController) { } - - func omniBarCancelPressed() { } - - func openedAsNewTab() { } - - func menuItemsFor(itemAt: Int) -> [UIMenuItem]? { - return nil - } - - func launchNewSearch() { } - - func supportsReordering() -> Bool { return false } - func collectionView(_ collectionView: UICollectionView, - canMoveItemAt indexPath: IndexPath) -> Bool { - return false - } - - func collectionView(_ collectionView: UICollectionView, - moveItemAt sourceIndexPath: IndexPath, - to destinationIndexPath: IndexPath) { } - - func collectionView(_ collectionView: UICollectionView, - targetIndexPathForMoveFromItemAt originalIndexPath: IndexPath, - toProposedIndexPath proposedIndexPath: IndexPath) -> IndexPath? { - return nil - } - - func collectionView(_ collectionView: UICollectionView, shouldSelectItemAt indexPath: IndexPath) -> Bool { - return false - } - - func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { } - - func collectionView(_ collectionView: UICollectionView, - layout collectionViewLayout: UICollectionViewLayout, - referenceSizeForHeaderInSection section: Int) -> CGSize? { - return nil - } - - func scrollViewDidScroll(_ scrollView: UIScrollView) { } - - func collectionView(_ collectionView: UICollectionView, - layout collectionViewLayout: UICollectionViewLayout, - referenceSizeForFooterInSection section: Int) -> CGSize? { - return nil - } - + contextMenuConfigurationForItemAt indexPath: IndexPath, + point: CGPoint) -> UIContextMenuConfiguration? + func collectionView(_ collectionView: UICollectionView, - viewForSupplementaryElementOfKind kind: String, - at indexPath: IndexPath) -> UICollectionReusableView { - return collectionView.dequeueReusableSupplementaryView(ofKind: kind, - withReuseIdentifier: EmptyCollectionReusableView.reuseIdentifier, - for: indexPath) - } - + previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? + func collectionView(_ collectionView: UICollectionView, - layout collectionViewLayout: UICollectionViewLayout, - insetForSectionAt section: Int) -> UIEdgeInsets? { - return nil - } + previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? + + func collectionView(_ collectionView: UICollectionView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem] + + func collectionView(_ collectionView: UICollectionView, performDropWith coordinator: UICollectionViewDropCoordinator) + + func collectionView(_ collectionView: UICollectionView, dropSessionDidUpdate session: UIDropSession, withDestinationIndexPath destinationIndexPath: IndexPath?) -> UICollectionViewDropProposal + + func endReordering() - func endReordering() { } } -class HomeViewSectionRenderers: NSObject, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout { +/// Each renderer added becomes a section in the containing collection view. +class HomeViewSectionRenderers: NSObject, + UICollectionViewDelegate, + UICollectionViewDelegateFlowLayout, + UICollectionViewDataSource, + UICollectionViewDragDelegate, + UICollectionViewDropDelegate { struct Constants { @@ -260,15 +199,7 @@ class HomeViewSectionRenderers: NSObject, UICollectionViewDataSource, UICollecti } return cell } - - func collectionView(_ collectionView: UICollectionView, canMoveItemAt indexPath: IndexPath) -> Bool { - return renderers[indexPath.section].collectionView(collectionView, canMoveItemAt: indexPath) - } - - func collectionView(_ collectionView: UICollectionView, moveItemAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) { - renderers[sourceIndexPath.section].collectionView(collectionView, moveItemAt: sourceIndexPath, to: destinationIndexPath) - } - + func collectionView(_ collectionView: UICollectionView, shouldSelectItemAt indexPath: IndexPath) -> Bool { return renderers[indexPath.section].collectionView(collectionView, shouldSelectItemAt: indexPath) } @@ -276,16 +207,9 @@ class HomeViewSectionRenderers: NSObject, UICollectionViewDataSource, UICollecti func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { renderers[indexPath.section].collectionView(collectionView, didSelectItemAt: indexPath) } - + // MARK: UICollectionViewDelegate - - func collectionView(_ collectionView: UICollectionView, targetIndexPathForMoveFromItemAt originalIndexPath: IndexPath, - toProposedIndexPath proposedIndexPath: IndexPath) -> IndexPath { - return renderers[originalIndexPath.section].collectionView(collectionView, - targetIndexPathForMoveFromItemAt: originalIndexPath, - toProposedIndexPath: proposedIndexPath) ?? originalIndexPath - } - + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize { @@ -299,7 +223,27 @@ class HomeViewSectionRenderers: NSObject, UICollectionViewDataSource, UICollecti return renderers[section].collectionView(collectionView, layout: collectionViewLayout, referenceSizeForFooterInSection: section) ?? CGSize.zero } - + + func collectionView(_ collectionView: UICollectionView, contextMenuConfigurationForItemAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { + return renderers[indexPath.section].collectionView(collectionView, + contextMenuConfigurationForItemAt: indexPath, + point: point) + } + + func collectionView(_ collectionView: UICollectionView, + previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { + guard let indexPath = configuration.identifier as? IndexPath else { return nil } + return renderers[indexPath.section].collectionView(collectionView, + previewForDismissingContextMenuWithConfiguration: configuration) + } + + func collectionView(_ collectionView: UICollectionView, + previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { + guard let indexPath = configuration.identifier as? IndexPath else { return nil } + return renderers[indexPath.section].collectionView(collectionView, + previewForHighlightingContextMenuWithConfiguration: configuration) + } + // MARK: UICollectionViewDelegateFlowLayout func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) @@ -313,7 +257,25 @@ class HomeViewSectionRenderers: NSObject, UICollectionViewDataSource, UICollecti return renderers[section].collectionView(collectionView, layout: collectionViewLayout, insetForSectionAt: section) ?? UIEdgeInsets(top: 0, left: Constants.sideInsets, bottom: 0, right: Constants.sideInsets) } - + + // MARK: Drag and Drop + + func collectionView(_ collectionView: UICollectionView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem] { + return renderers[indexPath.section].collectionView(collectionView, itemsForBeginning: session, at: indexPath) + } + + func collectionView(_ collectionView: UICollectionView, performDropWith coordinator: UICollectionViewDropCoordinator) { + guard let section = coordinator.destinationIndexPath?.section else { return } + renderers[section].collectionView(collectionView, performDropWith: coordinator) + } + + func collectionView(_ collectionView: UICollectionView, dropSessionDidUpdate session: UIDropSession, withDestinationIndexPath destinationIndexPath: IndexPath?) -> UICollectionViewDropProposal { + guard let section = destinationIndexPath?.section else { + return UICollectionViewDropProposal(operation: .forbidden) + } + return renderers[section].collectionView(collectionView, dropSessionDidUpdate: session, withDestinationIndexPath: destinationIndexPath) + } + } extension HomeViewSectionRenderers: Themable { diff --git a/DuckDuckGo/HomeViewSectionRenderersExtension.swift b/DuckDuckGo/HomeViewSectionRenderersExtension.swift new file mode 100644 index 0000000000..12f0a790fa --- /dev/null +++ b/DuckDuckGo/HomeViewSectionRenderersExtension.swift @@ -0,0 +1,119 @@ +// +// HomeViewSectionRenderersExtension.swift +// DuckDuckGo +// +// Copyright © 2022 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import UIKit + +/// An extension that implements the protocol so that other classes don't need to implement everything. +extension HomeViewSectionRenderer { + + func install(into controller: HomeViewController) { } + + func remove(from controller: HomeViewController) { } + + func omniBarCancelPressed() { } + + func openedAsNewTab() { } + + func menuItemsFor(itemAt: Int) -> [UIMenuItem]? { + return nil + } + + func launchNewSearch() { } + + func supportsReordering() -> Bool { return false } + + func collectionView(_ collectionView: UICollectionView, + canMoveItemAt indexPath: IndexPath) -> Bool { + return false + } + + func collectionView(_ collectionView: UICollectionView, + moveItemAt sourceIndexPath: IndexPath, + to destinationIndexPath: IndexPath) { } + + func collectionView(_ collectionView: UICollectionView, + targetIndexPathForMoveFromItemAt originalIndexPath: IndexPath, + toProposedIndexPath proposedIndexPath: IndexPath) -> IndexPath? { + return nil + } + + func collectionView(_ collectionView: UICollectionView, shouldSelectItemAt indexPath: IndexPath) -> Bool { + return false + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { } + + func collectionView(_ collectionView: UICollectionView, + layout collectionViewLayout: UICollectionViewLayout, + referenceSizeForHeaderInSection section: Int) -> CGSize? { + return nil + } + + func scrollViewDidScroll(_ scrollView: UIScrollView) { } + + func collectionView(_ collectionView: UICollectionView, + layout collectionViewLayout: UICollectionViewLayout, + referenceSizeForFooterInSection section: Int) -> CGSize? { + return nil + } + + func collectionView(_ collectionView: UICollectionView, + viewForSupplementaryElementOfKind kind: String, + at indexPath: IndexPath) -> UICollectionReusableView { + return collectionView.dequeueReusableSupplementaryView(ofKind: kind, + withReuseIdentifier: EmptyCollectionReusableView.reuseIdentifier, + for: indexPath) + } + + func collectionView(_ collectionView: UICollectionView, + layout collectionViewLayout: UICollectionViewLayout, + insetForSectionAt section: Int) -> UIEdgeInsets? { + return nil + } + + func collectionView(_ collectionView: UICollectionView, + contextMenuConfigurationForItemAt indexPath: IndexPath, + point: CGPoint) -> UIContextMenuConfiguration? { + return nil + } + + + func collectionView(_ collectionView: UICollectionView, + previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { + return nil + } + + func collectionView(_ collectionView: UICollectionView, + previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { + return nil + } + + func collectionView(_ collectionView: UICollectionView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem] { + return [] + } + + func collectionView(_ collectionView: UICollectionView, performDropWith coordinator: UICollectionViewDropCoordinator) { + } + + func collectionView(_ collectionView: UICollectionView, dropSessionDidUpdate session: UIDropSession, withDestinationIndexPath destinationIndexPath: IndexPath?) -> UICollectionViewDropProposal { + return UICollectionViewDropProposal(operation: .forbidden) + } + + func endReordering() { } +} diff --git a/DuckDuckGo/ImageCacheDebugViewController.swift b/DuckDuckGo/ImageCacheDebugViewController.swift index 817cb3237c..966dfc864c 100644 --- a/DuckDuckGo/ImageCacheDebugViewController.swift +++ b/DuckDuckGo/ImageCacheDebugViewController.swift @@ -20,6 +20,7 @@ import UIKit import Core import WidgetKit +import Bookmarks class ImageCacheDebugViewController: UITableViewController { @@ -37,10 +38,11 @@ class ImageCacheDebugViewController: UITableViewController { let imageNotFound = UIImage(systemName: "exclamationmark.circle") let imageError = UIImage(systemName: "exclamationmark.triangle") - let bookmarksManager = BookmarksManager() let tabsModel = TabsModel.get() ?? TabsModel(desktop: false) - - private var bookmarksAndFavorites = [Bookmark]() + + private let bookmarksContext = BookmarksDatabase.globalReferenceForDebug!.makeContext(concurrencyType: .mainQueueConcurrencyType) + + private var bookmarksAndFavorites = [BookmarkEntity]() override func viewDidLoad() { super.viewDidLoad() @@ -51,11 +53,17 @@ class ImageCacheDebugViewController: UITableViewController { action: #selector(presentClearCachePrompt(_:))) clearCacheItem.tintColor = .systemRed navigationItem.rightBarButtonItem = clearCacheItem - - bookmarksManager.allBookmarksAndFavoritesFlat { bookmarks in - self.bookmarksAndFavorites = bookmarks - self.tableView.reloadData() - } + + loadAllBookmarks() + } + + // Access core data directly because this is just a debug view + private func loadAllBookmarks() { + let request = BookmarkEntity.fetchRequest() + request.sortDescriptors = [ .init(keyPath: \BookmarkEntity.title, ascending: true) ] + request.predicate = .init(format: "isFolder == false") + request.returnsObjectsAsFaults = false + bookmarksAndFavorites = (try? bookmarksContext.fetch(request)) ?? [] } override func numberOfSections(in tableView: UITableView) -> Int { @@ -73,8 +81,8 @@ class ImageCacheDebugViewController: UITableViewController { case .bookmarks: let bookmark = bookmarksAndFavorites[indexPath.row] - cell.textLabel?.text = bookmark.url?.host - cell.imageView?.loadFavicon(forDomain: bookmark.url?.host, usingCache: .bookmarks) { + cell.textLabel?.text = bookmark.urlObject?.host + cell.imageView?.loadFavicon(forDomain: bookmark.urlObject?.host, usingCache: .bookmarks) { cell.imageView?.image = $1 ? self.imageNotFound : $0 ?? self.imageError cell.detailTextLabel?.text = self.describe($1 ? nil : $0) } @@ -110,7 +118,7 @@ class ImageCacheDebugViewController: UITableViewController { let host: String? switch Sections(rawValue: indexPath.section) { - case .bookmarks: host = bookmarksAndFavorites[indexPath.row].url?.host + case .bookmarks: host = bookmarksAndFavorites[indexPath.row].urlObject?.host case .tabs: host = tabsModel.get(tabAt: indexPath.row).link?.url.host default: host = nil } diff --git a/DuckDuckGo/Info.plist b/DuckDuckGo/Info.plist index 9c243f27f9..b0aae1ba02 100644 --- a/DuckDuckGo/Info.plist +++ b/DuckDuckGo/Info.plist @@ -166,6 +166,8 @@ LSRequiresIPhoneOS + LSSupportsOpeningDocumentsInPlace + NSAppTransportSecurity NSAllowsArbitraryLoads @@ -181,6 +183,8 @@ This is required to use voice features. DuckDuckGo never records what you say. NSPhotoLibraryAddUsageDescription Allows you to save images to your device + NSSpeechRecognitionUsageDescription + This is required to use voice search. DuckDuckGo never records what you say. NSUserActivityTypes ConfigurationIntent @@ -209,18 +213,14 @@ fetch processing + UIFileSharingEnabled + UILaunchStoryboardName LaunchScreen - UIMainStoryboardFile - Main UIRequiredDeviceCapabilities arm64 - UIFileSharingEnabled - - LSSupportsOpeningDocumentsInPlace - UIStatusBarHidden UIStatusBarStyle @@ -232,8 +232,6 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight - NSSpeechRecognitionUsageDescription - This is required to use voice search. DuckDuckGo never records what you say. UIViewControllerBasedStatusBarAppearance diff --git a/DuckDuckGo/MainViewController+KeyCommands.swift b/DuckDuckGo/MainViewController+KeyCommands.swift index 7f8eb9fe3a..8238f31370 100644 --- a/DuckDuckGo/MainViewController+KeyCommands.swift +++ b/DuckDuckGo/MainViewController+KeyCommands.swift @@ -218,13 +218,17 @@ extension MainViewController { } @objc func keyboardAddBookmark() { - currentTab?.saveAsBookmark(favorite: false) + saveBookmark(favorite: false) } @objc func keyboardAddFavorite() { - currentTab?.saveAsBookmark(favorite: true) + saveBookmark(favorite: true) } @objc func keyboardNoOperation() { } - + + private func saveBookmark(favorite: Bool) { + currentTab?.saveAsBookmark(favorite: favorite, viewModel: menuBookmarksViewModel) + } + } diff --git a/DuckDuckGo/MainViewController.swift b/DuckDuckGo/MainViewController.swift index e3a522d0b0..dd73286cdb 100644 --- a/DuckDuckGo/MainViewController.swift +++ b/DuckDuckGo/MainViewController.swift @@ -24,6 +24,8 @@ import Lottie import Kingfisher import os.log import BrowserServicesKit +import Bookmarks +import Persistence import PrivacyDashboard // swiftlint:disable type_body_length @@ -96,14 +98,18 @@ class MainViewController: UIViewController { var tabManager: TabManager! private let previewsSource = TabPreviewsSource() - fileprivate lazy var bookmarkStore: BookmarkUserDefaults = BookmarkUserDefaults() fileprivate lazy var appSettings: AppSettings = AppUserDefaults() private var launchTabObserver: LaunchTabNotification.Observer? + + private let bookmarksDatabase: CoreDataDatabase + private let favoritesViewModel: FavoritesListInteracting + + lazy var menuBookmarksViewModel: MenuBookmarksInteracting = MenuBookmarksViewModel(bookmarksDatabase: bookmarksDatabase) weak var tabSwitcherController: TabSwitcherViewController? let tabSwitcherButton = TabSwitcherButton() - /// Do not referecen directly, use `presentedMenuButton` + /// Do not reference directly, use `presentedMenuButton` let menuButton = MenuButton() var presentedMenuButton: MenuButton { AppWidthObserver.shared.isLargeWidth ? omniBar.menuButtonContent : menuButton @@ -113,7 +119,7 @@ class MainViewController: UIViewController { private lazy var fireButtonAnimator: FireButtonAnimator = FireButtonAnimator(appSettings: appSettings) - private lazy var bookmarksCachingSearch: BookmarksCachingSearch = CoreDependencyProvider.shared.bookmarksCachingSearch + private var bookmarksCachingSearch: BookmarksCachingSearch fileprivate lazy var tabSwitcherTransition = TabSwitcherTransitionDelegate() var currentTab: TabViewController? { @@ -126,17 +132,23 @@ class MainViewController: UIViewController { // Skip SERP flow (focusing on autocomplete logic) and prepare for new navigation when selecting search bar private var skipSERPFlow = true + required init?(coder: NSCoder, + bookmarksDatabase: CoreDataDatabase) { + self.bookmarksDatabase = bookmarksDatabase + self.favoritesViewModel = FavoritesListViewModel(bookmarksDatabase: bookmarksDatabase) + self.bookmarksCachingSearch = BookmarksCachingSearch(bookmarksStore: CoreDataBookmarksSearchStore(bookmarksStore: bookmarksDatabase)) + super.init(coder: coder) + } + + required init?(coder: NSCoder) { + fatalError("Use init?(code:") + } + fileprivate var tabCountInfo: TabCountInfo? override func viewDidLoad() { super.viewDidLoad() - Favicons.shared.migrateIfNeeded { - DispatchQueue.main.async { - self.homeController?.collectionView.reloadData() - } - } - attachOmniBar() view.addInteraction(UIDropInteraction(delegate: self)) @@ -308,54 +320,20 @@ class MainViewController: UIViewController { } Pixel.fire(pixel: .tabBarBookmarksLongPressed) - - currentTab!.saveAsBookmark(favorite: true) + currentTab?.saveAsBookmark(favorite: true, viewModel: menuBookmarksViewModel) } - // swiftlint:disable cyclomatic_complexity - // swiftlint:disable function_body_length override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if !DaxDialogs.shared.shouldShowFireButtonPulse { ViewHighlighter.hideAll() } - - if let controller = segue.destination as? SuggestionTrayViewController { - controller.dismissHandler = dismissSuggestionTray - controller.autocompleteDelegate = self - controller.favoritesOverlayDelegate = self - suggestionTrayController = controller - return - } if let controller = segue.destination as? TabsBarViewController { controller.delegate = self tabsBarController = controller return } - - if segue.destination.children.count > 0, - let controller = segue.destination.children[0] as? BookmarksViewController { - controller.delegate = self - - if segue.identifier == "BookmarksEditCurrent", - let link = currentTab?.link { - controller.openEditFormWhenPresented(link: link) - } else if segue.identifier == "BookmarksEdit", - let bookmark = sender as? Core.Bookmark { - controller.openEditFormWhenPresented(bookmark: bookmark) - } - return - } - - if let controller = segue.destination as? TabSwitcherViewController { - controller.transitioningDelegate = tabSwitcherTransition - controller.delegate = self - controller.tabsModel = tabManager.model - controller.previewsSource = previewsSource - tabSwitcherController = controller - return - } if let navController = segue.destination as? UINavigationController, let brokenSiteScreen = navController.topViewController as? ReportBrokenSiteViewController { @@ -380,8 +358,56 @@ class MainViewController: UIViewController { } } - // swiftlint:enable cyclomatic_complexity - // swiftlint:enable function_body_length + + @IBSegueAction func onCreateSuggestionTray(_ coder: NSCoder, sender: Any?, segueIdentifier: String?) -> SuggestionTrayViewController { + guard let controller = SuggestionTrayViewController(coder: coder, + favoritesViewModel: favoritesViewModel, + bookmarksSearch: bookmarksCachingSearch) else { + fatalError("Failed to create controller") + } + + controller.dismissHandler = dismissSuggestionTray + controller.autocompleteDelegate = self + controller.favoritesOverlayDelegate = self + suggestionTrayController = controller + + return controller + } + + @IBSegueAction func onCreateBookmarksList(_ coder: NSCoder, sender: Any?, segueIdentifier: String?) -> BookmarksViewController { + guard let controller = BookmarksViewController(coder: coder, + bookmarksDatabase: self.bookmarksDatabase, + bookmarksSearch: bookmarksCachingSearch) else { + fatalError("Failed to create controller") + } + controller.delegate = self + + if segueIdentifier == "BookmarksEditCurrent", + let link = currentTab?.link, + let bookmark = menuBookmarksViewModel.favorite(for: link.url) ?? menuBookmarksViewModel.bookmark(for: link.url) { + controller.openEditFormWhenPresented(bookmark: bookmark) + } else if segueIdentifier == "BookmarksEdit", + let bookmark = sender as? BookmarkEntity { + controller.openEditFormWhenPresented(bookmark: bookmark) + } + + return controller + } + + @IBSegueAction func onCreateTabSwitcher(_ coder: NSCoder, sender: Any?, segueIdentifier: String?) -> TabSwitcherViewController { + guard let controller = TabSwitcherViewController(coder: coder, + bookmarksDatabase: bookmarksDatabase) else { + fatalError("Failed to create controller") + } + + controller.transitioningDelegate = tabSwitcherTransition + controller.delegate = self + controller.tabsModel = tabManager.model + controller.previewsSource = previewsSource + tabSwitcherController = controller + + return controller + } override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { super.traitCollectionDidChange(previousTraitCollection) @@ -424,6 +450,7 @@ class MainViewController: UIViewController { } tabManager = TabManager(model: tabsModel, previewsSource: previewsSource, + bookmarksDatabase: bookmarksDatabase, delegate: self) } @@ -478,7 +505,7 @@ class MainViewController: UIViewController { removeHomeScreen() let tabModel = currentTab?.tabModel - let controller = HomeViewController.loadFromStoryboard(model: tabModel!) + let controller = HomeViewController.loadFromStoryboard(model: tabModel!, favoritesViewModel: favoritesViewModel) homeController = controller controller.chromeDelegate = self @@ -1146,7 +1173,7 @@ extension MainViewController: OmniBarDelegate { } } } else { - tryToShowSuggestionTray(.autocomplete(query: updatedQuery, bookmarksCachingSearch: bookmarksCachingSearch)) + tryToShowSuggestionTray(.autocomplete(query: updatedQuery)) } } @@ -1185,7 +1212,7 @@ extension MainViewController: OmniBarDelegate { private func launchBrowsingMenu() async { guard let tab = currentTab else { return } - let entries = await tab.buildBrowsingMenu() + let entries = tab.buildBrowsingMenu(with: menuBookmarksViewModel) let controller = BrowsingMenuViewController.instantiate(headerEntries: tab.buildBrowsingMenuHeaderContent(), menuEntries: entries) @@ -1248,7 +1275,7 @@ extension MainViewController: OmniBarDelegate { guard homeController == nil else { return } if !skipSERPFlow, isSERPPresented, let query = omniBar.textField.text { - tryToShowSuggestionTray(.autocomplete(query: query, bookmarksCachingSearch: bookmarksCachingSearch)) + tryToShowSuggestionTray(.autocomplete(query: query)) } else { tryToShowSuggestionTray(.favorites) } @@ -1292,8 +1319,8 @@ extension MainViewController: OmniBarDelegate { extension MainViewController: FavoritesOverlayDelegate { - func favoritesOverlay(_ overlay: FavoritesOverlay, didSelect favorite: Core.Bookmark) { - guard let url = favorite.url else { return } + func favoritesOverlay(_ overlay: FavoritesOverlay, didSelect favorite: BookmarkEntity) { + guard let url = favorite.urlObject else { return } Pixel.fire(pixel: .homeScreenFavouriteLaunched) homeController?.chromeDelegate = nil dismissOmniBar() @@ -1375,7 +1402,7 @@ extension MainViewController: HomeControllerDelegate { } } - func home(_ home: HomeViewController, didRequestEdit favorite: Core.Bookmark) { + func home(_ home: HomeViewController, didRequestEdit favorite: BookmarkEntity) { performSegue(withIdentifier: "BookmarksEdit", sender: favorite) } @@ -1649,14 +1676,12 @@ extension MainViewController: TabSwitcherDelegate { } extension MainViewController: BookmarksDelegate { - func bookmarksDidSelect(bookmark: Core.Bookmark) { + func bookmarksDidSelect(url: URL) { dismissOmniBar() - if let url = bookmark.url { - if url.isBookmarklet() { - executeBookmarklet(url) - } else { - loadUrl(url) - } + if url.isBookmarklet() { + executeBookmarklet(url) + } else { + loadUrl(url) } } diff --git a/DuckDuckGo/NoBookmarksCell.swift b/DuckDuckGo/NoBookmarksCell.swift deleted file mode 100644 index d3aa241720..0000000000 --- a/DuckDuckGo/NoBookmarksCell.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// NoBookmarksCell.swift -// DuckDuckGo -// -// Copyright © 2017 DuckDuckGo. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import UIKit - -class NoBookmarksCell: UITableViewCell { - - @IBOutlet var label: UILabel! - - static let reuseIdentifier = "NoBookmarskCell" -} - -class NoBookmarksInSubfolderCell: UITableViewCell { - - static let reuseIdentifier = "NoBookmarksInSubfolderCell" -} diff --git a/DuckDuckGo/RemoteMessaging.swift b/DuckDuckGo/RemoteMessaging.swift index 1c03bfb9df..b8c7f02124 100644 --- a/DuckDuckGo/RemoteMessaging.swift +++ b/DuckDuckGo/RemoteMessaging.swift @@ -22,6 +22,8 @@ import Core import BackgroundTasks import BrowserServicesKit import os.log +import Persistence +import Bookmarks struct RemoteMessaging { @@ -41,14 +43,14 @@ struct RemoteMessaging { return Date().timeIntervalSince(Self.lastRemoteMessagingRefreshDate) > Constants.minimumConfigurationRefreshInterval } - static func registerBackgroundRefreshTaskHandler() { + static func registerBackgroundRefreshTaskHandler(bookmarksDatabase: CoreDataDatabase) { BGTaskScheduler.shared.register(forTaskWithIdentifier: Constants.backgroundRefreshTaskIdentifier, using: nil) { task in guard shouldRefresh else { task.setTaskCompleted(success: true) scheduleBackgroundRefreshTask() return } - backgroundRefreshTaskHandler(bgTask: task) + backgroundRefreshTaskHandler(bgTask: task, bookmarksDatabase: bookmarksDatabase) } } @@ -74,10 +76,10 @@ struct RemoteMessaging { #endif } - static func backgroundRefreshTaskHandler(bgTask: BGTask) { + static func backgroundRefreshTaskHandler(bgTask: BGTask, bookmarksDatabase: CoreDataDatabase) { let fetchAndProcessTask = Task { do { - try await Self.fetchAndProcess() + try await Self.fetchAndProcess(bookmarksDatabase: bookmarksDatabase) Self.lastRemoteMessagingRefreshDate = Date() scheduleBackgroundRefreshTask() bgTask.setTaskCompleted(success: true) @@ -94,14 +96,25 @@ struct RemoteMessaging { } /// Convenience function - static func fetchAndProcess() async throws { - let bookmarksCachingSearch: BookmarksCachingSearch = CoreDependencyProvider.shared.bookmarksCachingSearch - let bookmarksCount = await MainActor.run { - return bookmarksCachingSearch.bookmarksCount - } - let favoritesCount = await MainActor.run { - return bookmarksCachingSearch.favoritesCount + static func fetchAndProcess(bookmarksDatabase: CoreDataDatabase) async throws { + + var bookmarksCount = 0 + var favoritesCount = 0 + let context = bookmarksDatabase.makeContext(concurrencyType: .privateQueueConcurrencyType) + context.performAndWait { + let bookmarksCountRequest = BookmarkEntity.fetchRequest() + bookmarksCountRequest.predicate = NSPredicate(format: "%K == false AND %K == false", + #keyPath(BookmarkEntity.isFavorite), + #keyPath(BookmarkEntity.isFolder)) + bookmarksCount = (try? context.count(for: bookmarksCountRequest)) ?? 0 + + let favoritesCountRequest = BookmarkEntity.fetchRequest() + bookmarksCountRequest.predicate = NSPredicate(format: "%K == true AND %K == false", + #keyPath(BookmarkEntity.isFavorite), + #keyPath(BookmarkEntity.isFolder)) + favoritesCount = (try? context.count(for: favoritesCountRequest)) ?? 0 } + let isWidgetInstalled = await AppDependencyProvider.shared.appSettings.isWidgetInstalled() try await Self.fetchAndProcess(bookmarksCount: bookmarksCount, diff --git a/DuckDuckGo/SaveBookmarkActivity.swift b/DuckDuckGo/SaveBookmarkActivity.swift index eb339aa2ae..86e61a481d 100644 --- a/DuckDuckGo/SaveBookmarkActivity.swift +++ b/DuckDuckGo/SaveBookmarkActivity.swift @@ -19,10 +19,11 @@ import UIKit import Core +import Bookmarks class SaveBookmarkActivity: UIActivity { - private let bookmarksManager: BookmarksManager + private let viewModel: MenuBookmarksViewModel private var bookmarkURL: URL? private weak var controller: TabViewController? @@ -30,8 +31,8 @@ class SaveBookmarkActivity: UIActivity { private var activityViewControllerAccessed = false - init(controller: TabViewController, isFavorite: Bool = false, bookmarksManager: BookmarksManager = BookmarksManager()) { - self.bookmarksManager = bookmarksManager + init(controller: TabViewController, isFavorite: Bool = false, viewModel: MenuBookmarksViewModel) { + self.viewModel = viewModel self.controller = controller self.isFavorite = isFavorite super.init() @@ -60,42 +61,8 @@ class SaveBookmarkActivity: UIActivity { override var activityViewController: UIViewController? { guard !activityViewControllerAccessed else { return nil } activityViewControllerAccessed = true - - guard let bookmarkURL = bookmarkURL else { - activityDidFinish(true) - return nil - } - - bookmarksManager.contains(url: bookmarkURL) { contains in - if contains { - DispatchQueue.main.async { - ActionMessageView.present(message: UserText.webBookmarkAlreadySaved) - self.activityDidFinish(true) - } - } else { - let linkForTitle: Link - // Get the proper title from the webview if we can - if let link = self.controller?.link, link.url == bookmarkURL { - linkForTitle = link - } else { - linkForTitle = Link(title: nil, url: bookmarkURL) - } - let title = linkForTitle.displayTitle ?? bookmarkURL.absoluteString - if self.isFavorite { - self.bookmarksManager.saveNewFavorite(withTitle: title, url: bookmarkURL) - DispatchQueue.main.async { - ActionMessageView.present(message: UserText.webSaveFavoriteDone) - self.activityDidFinish(true) - } - } else { - self.bookmarksManager.saveNewBookmark(withTitle: title, url: bookmarkURL, parentID: nil) - DispatchQueue.main.async { - ActionMessageView.present(message: UserText.webSaveBookmarkDone) - self.activityDidFinish(true) - } - } - } - } + controller?.saveAsBookmark(favorite: isFavorite, viewModel: viewModel) + activityDidFinish(true) return nil } } diff --git a/DuckDuckGo/SuggestionTrayViewController.swift b/DuckDuckGo/SuggestionTrayViewController.swift index 06b569a89a..228fc39de8 100644 --- a/DuckDuckGo/SuggestionTrayViewController.swift +++ b/DuckDuckGo/SuggestionTrayViewController.swift @@ -19,6 +19,7 @@ import UIKit import Core +import Bookmarks class SuggestionTrayViewController: UIViewController { @@ -36,11 +37,12 @@ class SuggestionTrayViewController: UIViewController { var dismissHandler: (() -> Void)? private let appSettings = AppUserDefaults() - private let bookmarkManager = BookmarksManager() private var autocompleteController: AutocompleteViewController? private var favoritesOverlay: FavoritesOverlay? private var willRemoveAutocomplete = false + private let bookmarksSearch: BookmarksStringSearch + private let favoritesModel: FavoritesListInteracting var selectedSuggestion: Suggestion? { autocompleteController?.selectedSuggestion @@ -48,7 +50,7 @@ class SuggestionTrayViewController: UIViewController { enum SuggestionType: Equatable { - case autocomplete(query: String, bookmarksCachingSearch: BookmarksCachingSearch) + case autocomplete(query: String) case favorites func hideOmnibarSeparator() -> Bool { @@ -60,7 +62,7 @@ class SuggestionTrayViewController: UIViewController { static func == (lhs: SuggestionTrayViewController.SuggestionType, rhs: SuggestionTrayViewController.SuggestionType) -> Bool { switch (lhs, rhs) { - case let (.autocomplete(queryLHS, _), .autocomplete(queryRHS, _)): + case let (.autocomplete(queryLHS), .autocomplete(queryRHS)): return queryLHS == queryRHS case (.favorites, .favorites): return true @@ -69,6 +71,16 @@ class SuggestionTrayViewController: UIViewController { } } } + + required init?(coder: NSCoder, favoritesViewModel: FavoritesListInteracting, bookmarksSearch: BookmarksStringSearch) { + self.favoritesModel = favoritesViewModel + self.bookmarksSearch = bookmarksSearch + super.init(coder: coder) + } + + required init?(coder: NSCoder) { + fatalError("Not implemented") + } override func viewDidLoad() { super.viewDidLoad() @@ -84,7 +96,7 @@ class SuggestionTrayViewController: UIViewController { func canShow(for type: SuggestionType) -> Bool { var canShow = false switch type { - case .autocomplete(let query, _): + case .autocomplete(let query): canShow = canDisplayAutocompleteSuggestions(forQuery: query) case.favorites: canShow = canDisplayFavorites @@ -94,8 +106,8 @@ class SuggestionTrayViewController: UIViewController { func show(for type: SuggestionType) { switch type { - case .autocomplete(let query, let bookmarksCachingSearch): - displayAutocompleteSuggestions(forQuery: query, bookmarksCachingSearch: bookmarksCachingSearch) + case .autocomplete(let query): + displayAutocompleteSuggestions(forQuery: query) case .favorites: if isPad { removeAutocomplete() @@ -192,7 +204,7 @@ class SuggestionTrayViewController: UIViewController { } private var canDisplayFavorites: Bool { - bookmarkManager.favoritesCount != 0 + favoritesModel.favorites.count > 0 } private func displayFavoritesIfNeeded(onInstall: @escaping () -> Void = {}) { @@ -202,7 +214,7 @@ class SuggestionTrayViewController: UIViewController { } private func installFavoritesOverlay(onInstall: @escaping () -> Void = {}) { - let controller = FavoritesOverlay() + let controller = FavoritesOverlay(viewModel: favoritesModel) controller.delegate = favoritesOverlayDelegate install(controller: controller, completion: onInstall) favoritesOverlay = controller @@ -216,19 +228,15 @@ class SuggestionTrayViewController: UIViewController { return canDisplay } - private func displayAutocompleteSuggestions(forQuery query: String, bookmarksCachingSearch: BookmarksCachingSearch) { - installAutocompleteSuggestionsIfNeeded(with: bookmarksCachingSearch) - autocompleteController?.updateQuery(query: query) - } - - private func installAutocompleteSuggestionsIfNeeded(with bookmarksCachingSearch: BookmarksCachingSearch) { + private func displayAutocompleteSuggestions(forQuery query: String) { if autocompleteController == nil { - installAutocompleteSuggestions(with: bookmarksCachingSearch) + installAutocompleteSuggestions() } + autocompleteController?.updateQuery(query: query) } - private func installAutocompleteSuggestions(with bookmarksCachingSearch: BookmarksCachingSearch) { - let controller = AutocompleteViewController.loadFromStoryboard(bookmarksCachingSearch: bookmarksCachingSearch) + private func installAutocompleteSuggestions() { + let controller = AutocompleteViewController.loadFromStoryboard(bookmarksSearch: bookmarksSearch) install(controller: controller) controller.delegate = autocompleteDelegate controller.presentationDelegate = self diff --git a/DuckDuckGo/TabManager.swift b/DuckDuckGo/TabManager.swift index 86994b7eda..6ddcfc87e0 100644 --- a/DuckDuckGo/TabManager.swift +++ b/DuckDuckGo/TabManager.swift @@ -21,6 +21,7 @@ import Core import WebKit import os.log import BrowserServicesKit +import Persistence class TabManager { @@ -28,12 +29,17 @@ class TabManager { private var tabControllerCache = [TabViewController]() + private let bookmarksDatabase: CoreDataDatabase private var previewsSource: TabPreviewsSource weak var delegate: TabDelegate? - init(model: TabsModel, previewsSource: TabPreviewsSource, delegate: TabDelegate) { + init(model: TabsModel, + previewsSource: TabPreviewsSource, + bookmarksDatabase: CoreDataDatabase, + delegate: TabDelegate) { self.model = model self.previewsSource = previewsSource + self.bookmarksDatabase = bookmarksDatabase self.delegate = delegate let index = model.currentIndex let tab = model.tabs[index] @@ -52,7 +58,7 @@ class TabManager { private func buildController(forTab tab: Tab, url: URL?, inheritedAttribution: AdClickAttributionLogic.State?) -> TabViewController { let configuration = WKWebViewConfiguration.persistent() - let controller = TabViewController.loadFromStoryboard(model: tab) + let controller = TabViewController.loadFromStoryboard(model: tab, bookmarksDatabase: bookmarksDatabase) controller.applyInheritedAttribution(inheritedAttribution) controller.attachWebView(configuration: configuration, andLoadRequest: url == nil ? nil : URLRequest.userInitiated(url!), @@ -113,7 +119,7 @@ class TabManager { model.insert(tab: tab, at: model.currentIndex + 1) model.select(tabAt: model.currentIndex + 1) - let controller = TabViewController.loadFromStoryboard(model: tab) + let controller = TabViewController.loadFromStoryboard(model: tab, bookmarksDatabase: bookmarksDatabase) controller.attachWebView(configuration: configCopy, andLoadRequest: request, consumeCookies: !model.hasActiveTabs, diff --git a/DuckDuckGo/TabSwitcherViewController.swift b/DuckDuckGo/TabSwitcherViewController.swift index 0a6bb979bb..5d1fcd5a91 100644 --- a/DuckDuckGo/TabSwitcherViewController.swift +++ b/DuckDuckGo/TabSwitcherViewController.swift @@ -21,6 +21,8 @@ import UIKit import Core import WebKit import os.log +import Bookmarks +import Persistence // swiftlint:disable file_length class TabSwitcherViewController: UIViewController { @@ -32,7 +34,10 @@ class TabSwitcherViewController: UIViewController { static let cellMaxHeight: CGFloat = 209.0 } - typealias BookmarkAllResult = (newBookmarksCount: Int, existingBookmarksCount: Int) + struct BookmarkAllResult { + let newCount: Int + let existingCount: Int + } @IBOutlet weak var titleView: UILabel! @IBOutlet weak var collectionView: UICollectionView! @@ -55,6 +60,8 @@ class TabSwitcherViewController: UIViewController { weak var tabsModel: TabsModel! weak var previewsSource: TabPreviewsSource! + private var bookmarksDatabase: CoreDataDatabase + weak var reorderGestureRecognizer: UIGestureRecognizer? override var canBecomeFirstResponder: Bool { return true } @@ -64,6 +71,18 @@ class TabSwitcherViewController: UIViewController { private var tabSwitcherSettings: TabSwitcherSettings = DefaultTabSwitcherSettings() private var isProcessingUpdates = false + let favicons = Favicons.shared + + required init?(coder: NSCoder, + bookmarksDatabase: CoreDataDatabase) { + self.bookmarksDatabase = bookmarksDatabase + super.init(coder: coder) + } + + required init?(coder: NSCoder) { + fatalError("Not implemented") + } + override func viewDidLoad() { super.viewDidLoad() refreshTitle() @@ -206,50 +225,15 @@ class TabSwitcherViewController: UIViewController { } fileprivate func displayBookmarkAllStatusMessage(with results: BookmarkAllResult, openTabsCount: Int) { - if results.newBookmarksCount == openTabsCount { + if results.newCount == openTabsCount { ActionMessageView.present(message: UserText.bookmarkAllTabsSaved) } else { - let failedToSaveCount = openTabsCount - results.newBookmarksCount - results.existingBookmarksCount + let failedToSaveCount = openTabsCount - results.newCount - results.existingCount os_log("Failed to save %d tabs", log: generalLog, type: .debug, failedToSaveCount) ActionMessageView.present(message: UserText.bookmarkAllTabsFailedToSave) } } - - fileprivate func bookmarkAll(tabsToBookmark: [Tab], - newBookmarksCount: Int = 0, - existingBookmarksCount: Int = 0, - bookmarksManager: BookmarksManager, - completion: @escaping (BookmarkAllResult) -> Void) { - - if tabsToBookmark.count == 0 { - completion((newBookmarksCount: newBookmarksCount, existingBookmarksCount: existingBookmarksCount)) - return - } - - let tab = tabsToBookmark[0] - if let link = tab.link { - bookmarksManager.contains(url: link.url) { contains in - if contains { - self.bookmarkAll(tabsToBookmark: Array(tabsToBookmark.dropFirst()), - newBookmarksCount: newBookmarksCount, - existingBookmarksCount: existingBookmarksCount + 1, - bookmarksManager: bookmarksManager, - completion: completion) - } else { - bookmarksManager.saveNewBookmark(withTitle: link.title ?? "", url: link.url, parentID: nil) { _, _ in - self.bookmarkAll(tabsToBookmark: Array(tabsToBookmark.dropFirst()), - newBookmarksCount: newBookmarksCount + 1, - existingBookmarksCount: existingBookmarksCount, - bookmarksManager: bookmarksManager, - completion: completion) - } - } - } - } else { - os_log("no valid link found for tab %s", log: generalLog, type: .debug, String(describing: tab)) - } - } - + @IBAction func onBookmarkAllOpenTabsPressed(_ sender: UIButton) { let alert = UIAlertController(title: UserText.alertBookmarkAllTitle, @@ -258,14 +242,27 @@ class TabSwitcherViewController: UIViewController { alert.overrideUserInterfaceStyle() alert.addAction(UIAlertAction(title: UserText.actionCancel, style: .cancel)) alert.addAction(title: UserText.actionBookmark, style: .default) { - self.bookmarkAll(tabsToBookmark: self.tabsModel.tabs, bookmarksManager: BookmarksManager()) { bookmarkAllResult in - - self.displayBookmarkAllStatusMessage(with: bookmarkAllResult, openTabsCount: self.tabsModel.tabs.count) - } + let model = MenuBookmarksViewModel(bookmarksDatabase: self.bookmarksDatabase) + let result = self.bookmarkAll(viewModel: model) + self.displayBookmarkAllStatusMessage(with: result, openTabsCount: self.tabsModel.tabs.count) } present(alert, animated: true, completion: nil) } + + private func bookmarkAll(viewModel: MenuBookmarksInteracting) -> BookmarkAllResult { + let tabs = self.tabsModel.tabs + var newCount = 0 + tabs.forEach { tab in + guard let link = tab.link else { return } + if viewModel.bookmark(for: link.url) == nil { + viewModel.createBookmark(title: link.displayTitle, url: link.url) + favicons.loadFavicon(forDomain: link.url.host, intoCache: .bookmarks, fromCache: .tabs) + newCount += 1 + } + } + return .init(newCount: newCount, existingCount: tabs.count - newCount) + } @IBAction func onDisplayModeButtonPressed(_ sender: UIButton) { tabSwitcherSettings.isGridViewEnabled = !tabSwitcherSettings.isGridViewEnabled diff --git a/DuckDuckGo/TabViewController.swift b/DuckDuckGo/TabViewController.swift index f972467b2d..2d3be83cbf 100644 --- a/DuckDuckGo/TabViewController.swift +++ b/DuckDuckGo/TabViewController.swift @@ -24,6 +24,9 @@ import LocalAuthentication import os.log import BrowserServicesKit import SwiftUI +import Bookmarks +import Persistence +import Common import PrivacyDashboard import UserScript import ContentBlocking @@ -71,6 +74,7 @@ class TabViewController: UIViewController { set { findInPageScript?.findInPage = newValue } } + let favicons = Favicons.shared let progressWorker = WebProgressWorker() private(set) var webView: WKWebView! @@ -84,8 +88,6 @@ class TabViewController: UIViewController { internal lazy var featureFlagger = AppDependencyProvider.shared.featureFlagger private lazy var featureFlaggerInternalUserDecider = AppDependencyProvider.shared.featureFlaggerInternalUserDecider - lazy var bookmarksManager = BookmarksManager() - private(set) var tabModel: Tab private(set) var privacyInfo: PrivacyInfo? private var previousPrivacyInfosByURL: [URL: PrivacyInfo] = [:] @@ -125,6 +127,9 @@ class TabViewController: UIViewController { private var blobDownloadTargetFrame: WKFrameInfo? let userAgentManager: UserAgentManager = DefaultUserAgentManager.shared + + let bookmarksDatabase: CoreDataDatabase + lazy var faviconUpdater = BookmarkFaviconUpdater(bookmarksDatabase: bookmarksDatabase, tab: tabModel, favicons: Favicons.shared) public var url: URL? { willSet { @@ -240,12 +245,13 @@ class TabViewController: UIViewController { private var rulesCompiledCondition: RunLoop.ResumeCondition? = RunLoop.ResumeCondition() private let rulesCompilationMonitor = RulesCompilationMonitor.shared - static func loadFromStoryboard(model: Tab) -> TabViewController { + static func loadFromStoryboard(model: Tab, bookmarksDatabase: CoreDataDatabase) -> TabViewController { let storyboard = UIStoryboard(name: "Tab", bundle: nil) - guard let controller = storyboard.instantiateViewController(withIdentifier: "TabViewController") as? TabViewController else { - fatalError("Failed to instantiate controller as TabViewController") - } - controller.tabModel = model + let controller = storyboard.instantiateViewController(identifier: "TabViewController", creator: { coder in + TabViewController(coder: coder, + tabModel: model, + bookmarksDatabase: bookmarksDatabase) + }) return controller } @@ -260,10 +266,17 @@ class TabViewController: UIViewController { private var userContentController: UserContentController { (webView.configuration.userContentController as? UserContentController)! } + + required init?(coder aDecoder: NSCoder, + tabModel: Tab, + bookmarksDatabase: CoreDataDatabase) { + self.tabModel = tabModel + self.bookmarksDatabase = bookmarksDatabase + super.init(coder: aDecoder) + } required init?(coder aDecoder: NSCoder) { - tabModel = Tab(link: nil) - super.init(coder: aDecoder) + fatalError("Not implemented") } override func viewDidLoad() { @@ -286,9 +299,13 @@ class TabViewController: UIViewController { } override func buildActivities() -> [UIActivity] { - var activities: [UIActivity] = [SaveBookmarkActivity(controller: self)] + let viewModel = MenuBookmarksViewModel(bookmarksDatabase: bookmarksDatabase) + var activities: [UIActivity] = [SaveBookmarkActivity(controller: self, + viewModel: viewModel)] - activities.append(SaveBookmarkActivity(controller: self, isFavorite: true)) + activities.append(SaveBookmarkActivity(controller: self, + isFavorite: true, + viewModel: viewModel)) activities.append(FindInPageActivity(controller: self)) return activities @@ -1951,7 +1968,7 @@ extension TabViewController: UserContentControllerDelegate { updateEvent: ContentBlockerRulesManager.UpdateEvent) { guard let userScripts = userScripts as? UserScripts else { fatalError("Unexpected UserScripts") } - userScripts.faviconScript.delegate = self + userScripts.faviconScript.delegate = faviconUpdater userScripts.debugScript.instrumentation = instrumentation userScripts.surrogatesScript.delegate = self userScripts.contentBlockerUserScript.delegate = self @@ -2033,19 +2050,6 @@ extension TabViewController: SurrogatesUserScriptDelegate { } -// MARK: - FaviconUserScriptDelegate -extension TabViewController: FaviconUserScriptDelegate { - - func faviconUserScriptDidRequestCurrentHost(_ script: FaviconUserScript) -> String? { - return webView.url?.host - } - - func faviconUserScript(_ script: FaviconUserScript, didFinishLoadingFavicon image: UIImage) { - tabModel.didUpdateFavicon() - } - -} - // MARK: - PrintingUserScriptDelegate extension TabViewController: PrintingUserScriptDelegate { diff --git a/DuckDuckGo/TabViewControllerBrowsingMenuExtension.swift b/DuckDuckGo/TabViewControllerBrowsingMenuExtension.swift index 1aa07f9622..6226abf407 100644 --- a/DuckDuckGo/TabViewControllerBrowsingMenuExtension.swift +++ b/DuckDuckGo/TabViewControllerBrowsingMenuExtension.swift @@ -20,7 +20,9 @@ import UIKit import Core import BrowserServicesKit +import Bookmarks import simd +import WidgetKit // swiftlint:disable file_length extension TabViewController { @@ -64,11 +66,10 @@ extension TabViewController { var favoriteEntryIndex: Int { 1 } - @MainActor - func buildBrowsingMenu() async -> [BrowsingMenuEntry] { + func buildBrowsingMenu(with bookmarksInterface: MenuBookmarksInteracting) -> [BrowsingMenuEntry] { var entries = [BrowsingMenuEntry]() - let linkEntries = await buildLinkEntries() + let linkEntries = buildLinkEntries(with: bookmarksInterface) entries.append(contentsOf: linkEntries) if let domain = self.privacyInfo?.domain { @@ -107,20 +108,15 @@ extension TabViewController { return entries } - @MainActor - private func buildLinkEntries() async -> [BrowsingMenuEntry] { + private func buildLinkEntries(with bookmarksInterface: MenuBookmarksInteracting) -> [BrowsingMenuEntry] { guard let link = link, !isError else { return [] } var entries = [BrowsingMenuEntry]() - if let bookmarkEntry = await buildBookmarkEntry(for: link) { - entries.append(bookmarkEntry) - } - - if let favoriteEntry = await self.buildFavoriteEntry(for: link) { - assert(self.favoriteEntryIndex == entries.count, "Entry index should be in sync with entry placement") - entries.append(favoriteEntry) - } + let bookmarkEntries = buildBookmarkEntries(for: link, with: bookmarksInterface) + entries.append(bookmarkEntries.bookmark) + assert(self.favoriteEntryIndex == entries.count, "Entry index should be in sync with entry placement") + entries.append(bookmarkEntries.favorite) entries.append(BrowsingMenuEntry.regular(name: UserText.actionOpenBookmarks, image: UIImage(named: "MenuBookmarks")!, @@ -180,10 +176,27 @@ extension TabViewController { self?.requestFindInPage() }) } + + private func buildBookmarkEntries(for link: Link, + with bookmarksInterface: MenuBookmarksInteracting) -> (bookmark: BrowsingMenuEntry, + favorite: + BrowsingMenuEntry) { + let existingFavorite = bookmarksInterface.favorite(for: link.url) + let existingBookmark = existingFavorite ?? bookmarksInterface.bookmark(for: link.url) + + return (bookmark: buildBookmarkEntry(for: link, + bookmark: existingBookmark, + with: bookmarksInterface), + favorite: buildFavoriteEntry(for: link, + bookmark: existingFavorite, + with: bookmarksInterface)) + } - @MainActor - private func buildBookmarkEntry(for link: Link) async -> (BrowsingMenuEntry?) { - if await bookmarksManager.containsBookmark(url: link.url) { + private func buildBookmarkEntry(for link: Link, + bookmark: BookmarkEntity?, + with bookmarksInterface: MenuBookmarksInteracting) -> BrowsingMenuEntry { + + if bookmark != nil { return BrowsingMenuEntry.regular(name: UserText.actionEditBookmark, image: UIImage(named: "MenuBookmarkSolid")!, action: { [weak self] in @@ -194,13 +207,16 @@ extension TabViewController { return BrowsingMenuEntry.regular(name: UserText.actionSaveBookmark, image: UIImage(named: "MenuBookmark")!, action: { [weak self] in - self?.performSaveBookmarkAction(for: link) + self?.performSaveBookmarkAction(for: link, + with: bookmarksInterface) }) } - private func performSaveBookmarkAction(for link: Link) { + private func performSaveBookmarkAction(for link: Link, + with bookmarksInterface: MenuBookmarksInteracting) { Pixel.fire(pixel: .browsingMenuAddToBookmarks) - bookmarksManager.saveNewBookmark(withTitle: link.title ?? "", url: link.url, parentID: nil) + bookmarksInterface.createBookmark(title: link.title ?? "", url: link.url) + favicons.loadFavicon(forDomain: link.url.host, intoCache: .bookmarks, fromCache: .tabs) ActionMessageView.present(message: UserText.webSaveBookmarkDone, actionTitle: UserText.actionGenericEdit, onAction: { @@ -214,12 +230,13 @@ extension TabViewController { delegate?.tabDidRequestEditBookmark(tab: self) } - @MainActor - private func buildFavoriteEntry(for link: Link) async -> BrowsingMenuEntry? { - if await bookmarksManager.containsFavorite(url: link.url) { + private func buildFavoriteEntry(for link: Link, + bookmark: BookmarkEntity?, + with bookmarksInterface: MenuBookmarksInteracting) -> BrowsingMenuEntry { + if bookmark?.isFavorite ?? false { let action: () -> Void = { [weak self] in Pixel.fire(pixel: .browsingMenuRemoveFromFavorites) - self?.performRemoveFavoriteAction(for: link) + self?.performRemoveFavoriteAction(for: link, with: bookmarksInterface) } let entry = BrowsingMenuEntry.regular(name: UserText.actionRemoveFavorite, @@ -236,37 +253,30 @@ extension TabViewController { image: UIImage(named: "MenuFavorite")!, action: { [weak self] in Pixel.fire(pixel: addToFavoriteFlow ? .browsingMenuAddToFavoritesAddFavoriteFlow : .browsingMenuAddToFavorites) - self?.performSaveFavoriteAction(for: link) + self?.performAddFavoriteAction(for: link, with: bookmarksInterface) }) return entry } - private func performSaveFavoriteAction(for link: Link) { - bookmarksManager.saveNewFavorite(withTitle: link.title ?? "", url: link.url) { _, _ in - DispatchQueue.main.async { - ActionMessageView.present(message: UserText.webSaveFavoriteDone, actionTitle: UserText.actionGenericUndo, onAction: { - self.performRemoveFavoriteAction(for: link) - }) - } - } + private func performAddFavoriteAction(for link: Link, + with bookmarksInterface: MenuBookmarksInteracting) { + bookmarksInterface.createOrToggleFavorite(title: link.title ?? "", url: link.url) + favicons.loadFavicon(forDomain: link.url.host, intoCache: .bookmarks, fromCache: .tabs) + WidgetCenter.shared.reloadAllTimelines() + + ActionMessageView.present(message: UserText.webSaveFavoriteDone, actionTitle: UserText.actionGenericUndo, onAction: { + self.performRemoveFavoriteAction(for: link, with: bookmarksInterface) + }) } - private func performRemoveFavoriteAction(for link: Link) { - let bookmarksManager = BookmarksManager() - bookmarksManager.favorite(forURL: link.url) { bookmark in - guard let bookmark = bookmark else { - return - } - - bookmarksManager.delete(bookmark) { _, _ in - - DispatchQueue.main.async { - ActionMessageView.present(message: UserText.webFavoriteRemoved, actionTitle: UserText.actionGenericUndo, onAction: { - self.performSaveFavoriteAction(for: link) - }) - } - } - } + private func performRemoveFavoriteAction(for link: Link, + with bookmarksInterface: MenuBookmarksInteracting) { + bookmarksInterface.createOrToggleFavorite(title: link.title ?? "", url: link.url) + WidgetCenter.shared.reloadAllTimelines() + + ActionMessageView.present(message: UserText.webFavoriteRemoved, actionTitle: UserText.actionGenericUndo, onAction: { + self.performAddFavoriteAction(for: link, with: bookmarksInterface) + }) } private func buildUseNewDuckAddressEntry(forLink link: Link) -> BrowsingMenuEntry? { diff --git a/DuckDuckGo/TabViewControllerLongPressBookmarkExtension.swift b/DuckDuckGo/TabViewControllerLongPressBookmarkExtension.swift index e2dacf14ba..3d2e3964c2 100644 --- a/DuckDuckGo/TabViewControllerLongPressBookmarkExtension.swift +++ b/DuckDuckGo/TabViewControllerLongPressBookmarkExtension.swift @@ -20,36 +20,32 @@ import Foundation import Core import os.log +import Bookmarks +import WidgetKit extension TabViewController { - func saveAsBookmark(favorite: Bool) { - + func saveAsBookmark(favorite: Bool, viewModel: MenuBookmarksInteracting) { guard let link = link, !isError else { - os_log("Invalid bookmark link found on bookmark long press", log: generalLog, type: .debug) + assertionFailure() return } - let bookmarksManager = BookmarksManager() - bookmarksManager.contains(url: link.url) { contains in + if favorite && nil == viewModel.favorite(for: link.url) { + viewModel.createOrToggleFavorite(title: link.displayTitle, url: link.url) + WidgetCenter.shared.reloadAllTimelines() - if contains { - DispatchQueue.main.async { - ActionMessageView.present(message: UserText.webBookmarkAlreadySaved) - } - } else { - if favorite { - bookmarksManager.saveNewFavorite(withTitle: link.title ?? "", url: link.url) - DispatchQueue.main.async { - ActionMessageView.present(message: UserText.webSaveFavoriteDone) - } - } else { - bookmarksManager.saveNewBookmark(withTitle: link.title ?? "", url: link.url, parentID: nil) - DispatchQueue.main.async { - ActionMessageView.present(message: UserText.webSaveBookmarkDone) - } - } + DispatchQueue.main.async { + ActionMessageView.present(message: UserText.webSaveFavoriteDone) + } + } else if nil == viewModel.bookmark(for: link.url) { + viewModel.createBookmark(title: link.displayTitle, url: link.url) + DispatchQueue.main.async { + ActionMessageView.present(message: UserText.webSaveBookmarkDone) + } + } else { + DispatchQueue.main.async { + ActionMessageView.present(message: UserText.webBookmarkAlreadySaved) } - } } } diff --git a/DuckDuckGo/TabViewControllerLongPressMenuExtension.swift b/DuckDuckGo/TabViewControllerLongPressMenuExtension.swift index bbed751fe1..59cd9d4f95 100644 --- a/DuckDuckGo/TabViewControllerLongPressMenuExtension.swift +++ b/DuckDuckGo/TabViewControllerLongPressMenuExtension.swift @@ -97,7 +97,7 @@ extension TabViewController { fileprivate func buildOpenLinkPreview(for url: URL) -> UIViewController? { let tab = Tab(link: Link(title: nil, url: url)) - let tabController = TabViewController.loadFromStoryboard(model: tab) + let tabController = TabViewController.loadFromStoryboard(model: tab, bookmarksDatabase: bookmarksDatabase) tabController.isLinkPreview = true tabController.decorate(with: ThemeManager.shared.currentTheme) let configuration = WKWebViewConfiguration.nonPersistent() diff --git a/DuckDuckGo/TabViewGridCell.swift b/DuckDuckGo/TabViewGridCell.swift index 86128c6b46..5fd74402ec 100644 --- a/DuckDuckGo/TabViewGridCell.swift +++ b/DuckDuckGo/TabViewGridCell.swift @@ -135,8 +135,8 @@ class TabViewGridCell: TabViewCell { border.layer.borderWidth = isCurrent ? Constants.selectedBorderWidth : Constants.unselectedBorderWidth if let link = tab.link { - removeButton.accessibilityLabel = UserText.closeTab(withTitle: link.displayTitle ?? "", atAddress: link.url.host ?? "") - title.accessibilityLabel = UserText.openTab(withTitle: link.displayTitle ?? "", atAddress: link.url.host ?? "") + removeButton.accessibilityLabel = UserText.closeTab(withTitle: link.displayTitle, atAddress: link.url.host ?? "") + title.accessibilityLabel = UserText.openTab(withTitle: link.displayTitle, atAddress: link.url.host ?? "") title.text = tab.link?.displayTitle } diff --git a/DuckDuckGo/TabViewListCell.swift b/DuckDuckGo/TabViewListCell.swift index 2a6dc42651..8a6808ccc5 100644 --- a/DuckDuckGo/TabViewListCell.swift +++ b/DuckDuckGo/TabViewListCell.swift @@ -55,8 +55,8 @@ class TabViewListCell: TabViewCell { decorate(with: ThemeManager.shared.currentTheme) if let link = tab.link { - removeButton.accessibilityLabel = UserText.closeTab(withTitle: link.displayTitle ?? "", atAddress: link.url.host ?? "") - title.accessibilityLabel = UserText.openTab(withTitle: link.displayTitle ?? "", atAddress: link.url.host ?? "") + removeButton.accessibilityLabel = UserText.closeTab(withTitle: link.displayTitle, atAddress: link.url.host ?? "") + title.accessibilityLabel = UserText.openTab(withTitle: link.displayTitle, atAddress: link.url.host ?? "") title.text = tab.link?.displayTitle } diff --git a/DuckDuckGo/UserText.swift b/DuckDuckGo/UserText.swift index 108d9a5015..22ba51fd8b 100644 --- a/DuckDuckGo/UserText.swift +++ b/DuckDuckGo/UserText.swift @@ -61,6 +61,8 @@ public struct UserText { public static let actionEditBookmark = NSLocalizedString("action.title.edit.bookmark", value: "Edit Bookmark", comment: "Edit Bookmark action") public static let actionRemoveFavorite = NSLocalizedString("action.title.remove.favorite", value: "Remove Favorite", comment: "Remove Favorite action") + public static let actionManageFavorites = NSLocalizedString("action.manage.favorites", value: "Manage", comment: "Button label for managing favorites") + public static let voiceoverSuggestionTypeWebsite = NSLocalizedString("voiceover.suggestion.type.website", value: "Open website", comment: "Open suggested website action accessibility title") public static let voiceoverSuggestionTypeBookmark = NSLocalizedString("voiceover.suggestion.type.bookmark", value: "Bookmark", comment: "Voice-over title for a Bookmark suggestion. Noun") public static let voiceoverSuggestionTypeSearch = NSLocalizedString("voiceover.suggestion.type.search", value: "Search at DuckDuckGo", comment: "Search for suggestion action accessibility title") @@ -117,11 +119,10 @@ public struct UserText { public static let sectionTitleBookmarks = NSLocalizedString("section.title.bookmarks", value: "Bookmarks", comment: "") public static let sectionTitleFavorites = NSLocalizedString("section.title.favorites", value: "Favorites", comment: "") - public static let favoriteMenuDelete = NSLocalizedString("favorite.menu.delete", value: "Delete", comment: "") + public static let favoriteMenuRemove = NSLocalizedString("favorite.menu.remove", value: "Remove", comment: "") public static let favoriteMenuEdit = NSLocalizedString("favorite.menu.edit", value: "Edit", comment: "") public static let emptyBookmarks = NSLocalizedString("empty.bookmarks", value: "No bookmarks added yet", comment: "Empty list state placholder") - public static let emptyFavorites = NSLocalizedString("empty.favorites", value: "No favorites added yet", comment: "Empty list state placholder") public static let noMatchesFound = NSLocalizedString("empty.search", value: "No matches found", comment: "Empty search placeholder on bookmarks search") public static let bookmarkTitlePlaceholder = NSLocalizedString("bookmark.title.placeholder", value: "Website title", comment: "Placeholder in the add bookmark form") diff --git a/DuckDuckGo/bg.lproj/Bookmarks.strings b/DuckDuckGo/bg.lproj/Bookmarks.strings index 211f317f16..243656381c 100644 --- a/DuckDuckGo/bg.lproj/Bookmarks.strings +++ b/DuckDuckGo/bg.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Готово"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Етикет"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Все още няма добавени отметки"; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Етикет"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Етикет"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Етикет"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Добавяне на папка"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Заглавие"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Етикет"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Редактиране"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Все още няма добавени отметки"; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Любим"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Редактиране"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Всички отметки"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Импортиране на файл с отметки от друг браузър"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Любими"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Добави отметка"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Отметки"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Добавяне на папка"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Импортиране на файл с отметки от друг браузър"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Заглавие"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Отметки"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Готово"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Все още няма добавени отметки"; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Етикет"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "Все още няма добавени любими"; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "URL"; diff --git a/DuckDuckGo/bg.lproj/Localizable.strings b/DuckDuckGo/bg.lproj/Localizable.strings index e99ff364c5..3ee72ad96b 100644 --- a/DuckDuckGo/bg.lproj/Localizable.strings +++ b/DuckDuckGo/bg.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Отмяна"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Управление"; + /* Add action - button shown in alert */ "action.title.add" = "Добавяне"; @@ -656,10 +659,10 @@ "favorite" = "Любим"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Изтриване"; +"favorite.menu.edit" = "Редактиране"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Редактиране"; +"favorite.menu.remove" = "Премахване"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Блокиране на реклами и изскачащи прозорци"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Активирана защита на поверителността за %@"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "Възникна неизвестна грешка."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Предложение за автоматично довършване"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Отметка"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "Търсене в DuckDuckGo"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Отваряне на уебсайта"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Настройки"; diff --git a/DuckDuckGo/cs.lproj/Bookmarks.strings b/DuckDuckGo/cs.lproj/Bookmarks.strings index 0830805cad..c11261c171 100644 --- a/DuckDuckGo/cs.lproj/Bookmarks.strings +++ b/DuckDuckGo/cs.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Hotovo"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Štítek"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Zatím nebyly přidány žádné záložky."; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Štítek"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Štítek"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Štítek"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Přidat složku"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Název"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Štítek"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Upravit"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Zatím nebyly přidány žádné záložky."; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Oblíbené"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Upravit"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Všechny záložky"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Import souboru se záložkami z jiného prohlížeče"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Oblíbené"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Přidat záložku"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Záložky"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Přidat složku"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Import souboru se záložkami z jiného prohlížeče"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Název"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Záložky"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Hotovo"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Zatím nebyly přidány žádné záložky."; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Štítek"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "Zatím nebyly přidány žádné oblíbené položky"; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "URL adresa"; diff --git a/DuckDuckGo/cs.lproj/Localizable.strings b/DuckDuckGo/cs.lproj/Localizable.strings index 71d0439072..7758e2b0b8 100644 --- a/DuckDuckGo/cs.lproj/Localizable.strings +++ b/DuckDuckGo/cs.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Vrátit"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Spravovat"; + /* Add action - button shown in alert */ "action.title.add" = "Přidat"; @@ -656,10 +659,10 @@ "favorite" = "Oblíbené"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Smazat"; +"favorite.menu.edit" = "Upravit"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Upravit"; +"favorite.menu.remove" = "Odstranit"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Blokování reklam a vyskakovacích oken"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Ochrana aktivována u domény %@"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "Vyskytla se neznámá chyba."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Použít návrh automatického doplňování"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Záložka"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "Hledat na DuckDuckGo"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Otevřít webovou stránku"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Nastavení"; diff --git a/DuckDuckGo/da.lproj/Bookmarks.strings b/DuckDuckGo/da.lproj/Bookmarks.strings index 9bd64e5506..a66dcacd18 100644 --- a/DuckDuckGo/da.lproj/Bookmarks.strings +++ b/DuckDuckGo/da.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Færdig"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Etiket"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Ingen bogmærker tilføjet endnu"; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Etiket"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Etiket"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Etiket"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Tilføj mappe"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Titel"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Etiket"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Rediger"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Ingen bogmærker tilføjet endnu"; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Favorit"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Rediger"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Alle bogmærker"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Importér bogmærkefil fra en anden browser"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Favoritter"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Tilføj bogmærke"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Bogmærker"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Tilføj mappe"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Importér bogmærkefil fra en anden browser"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Titel"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Bogmærker"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Færdig"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Ingen bogmærker tilføjet endnu"; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Etiket"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "Ingen favoritter tilføjet endnu"; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "URL"; diff --git a/DuckDuckGo/da.lproj/Localizable.strings b/DuckDuckGo/da.lproj/Localizable.strings index 06b407c20d..0933cbf185 100644 --- a/DuckDuckGo/da.lproj/Localizable.strings +++ b/DuckDuckGo/da.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Fortryd"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Administrer"; + /* Add action - button shown in alert */ "action.title.add" = "Tilføj"; @@ -656,10 +659,10 @@ "favorite" = "Favorit"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Slet"; +"favorite.menu.edit" = "Rediger"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Rediger"; +"favorite.menu.remove" = "Fjern"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Blokering af annoncer og pop op-vinduer"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Beskyttelse af privatlivet aktiveret for %@"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "Der opstod en ukendt fejl."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Autoudfyld forslaget"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Bogmærke"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "Søg på DuckDuckGo"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Åbn websted"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Indstillinger"; diff --git a/DuckDuckGo/de.lproj/Bookmarks.strings b/DuckDuckGo/de.lproj/Bookmarks.strings index 153f9a298f..f974733788 100644 --- a/DuckDuckGo/de.lproj/Bookmarks.strings +++ b/DuckDuckGo/de.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Fertig"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Label"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Noch keine Lesezeichen hinzugefügt"; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Label"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Label"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Label"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Ordner hinzufügen"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Titel"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Label"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Bearbeiten"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Noch keine Lesezeichen hinzugefügt"; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Favorit"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Bearbeiten"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Alle Lesezeichen"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Lesezeichendatei aus einem anderen Browser importieren"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Favoriten"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Lesezeichen hinzufügen"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Lesezeichen"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Ordner hinzufügen"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Lesezeichendatei aus einem anderen Browser importieren"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Titel"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Lesezeichen"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Fertig"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Noch keine Lesezeichen hinzugefügt"; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Label"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "Noch keine Favoriten hinzugefügt"; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "URL"; diff --git a/DuckDuckGo/de.lproj/Localizable.strings b/DuckDuckGo/de.lproj/Localizable.strings index 03075f06e5..6d2bd3944f 100644 --- a/DuckDuckGo/de.lproj/Localizable.strings +++ b/DuckDuckGo/de.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Rückgängig machen"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Verwalten"; + /* Add action - button shown in alert */ "action.title.add" = "Hinzufügen"; @@ -656,10 +659,10 @@ "favorite" = "Favorit"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Löschen"; +"favorite.menu.edit" = "Bearbeiten"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Bearbeiten"; +"favorite.menu.remove" = "Entfernen"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Blockieren von Werbungen und Pop-ups"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Datenschutz für %@ aktivieren"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "Ein unbekannter Fehler ist aufgetreten."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Vorschläge für die Autovervollständigung"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Lesezeichen"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "Suche bei DuckDuckGo"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Website öffnen"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Einstellungen"; diff --git a/DuckDuckGo/el.lproj/Bookmarks.strings b/DuckDuckGo/el.lproj/Bookmarks.strings index 95dc50f11e..f72b469932 100644 --- a/DuckDuckGo/el.lproj/Bookmarks.strings +++ b/DuckDuckGo/el.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Ολοκληρώθηκε"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Label"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Δεν προστέθηκαν σελιδοδείκτες ακόμα"; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Label"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Label"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Label"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Προσθήκη φακέλου"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Τίτλος"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Label"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Επεξεργασία"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Δεν προστέθηκαν σελιδοδείκτες ακόμα"; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Αγαπημένο"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Επεξεργασία"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Όλοι οι σελιδοδείκτες"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Εισαγωγή αρχείου με σελιδοδείκτες από άλλο πρόγραμμα περιήγησης"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Αγαπημένα"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Προσθήκη σελιδοδείκτη"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Σελιδοδείκτες"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Προσθήκη φακέλου"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Εισαγωγή αρχείου με σελιδοδείκτες από άλλο πρόγραμμα περιήγησης"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Τίτλος"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Σελιδοδείκτες"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Ολοκληρώθηκε"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Δεν προστέθηκαν σελιδοδείκτες ακόμα"; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Label"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "Δεν έχουν προστεθεί ακόμα αγαπημένα"; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "Διεύθυνση URL"; diff --git a/DuckDuckGo/el.lproj/Localizable.strings b/DuckDuckGo/el.lproj/Localizable.strings index a6030cd323..673279ea58 100644 --- a/DuckDuckGo/el.lproj/Localizable.strings +++ b/DuckDuckGo/el.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Αναίρεση"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Διαχείριση"; + /* Add action - button shown in alert */ "action.title.add" = "Προσθήκη"; @@ -656,10 +659,10 @@ "favorite" = "Αγαπημένο"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Διαγραφή"; +"favorite.menu.edit" = "Επεξεργασία"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Επεξεργασία"; +"favorite.menu.remove" = "Αφαίρεση"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Αποκλεισμός διαφημίσεων και αναδυόμενων παραθύρων"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Η Προστασία προσωπικών δεδομένων ενεργοποιήθηκε για το %@"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "Προέκυψε άγνωστο σφάλμα."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Πρόταση αυτόματης συμπλήρωσης"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Σελιδοδείκτης"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "Αναζήτηση στο DuckDuckGo"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Άνοιγμα ιστότοπου"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Ρυθμίσεις"; diff --git a/DuckDuckGo/en.lproj/Localizable.strings b/DuckDuckGo/en.lproj/Localizable.strings index eb119f3c43..ffc720033f 100644 --- a/DuckDuckGo/en.lproj/Localizable.strings +++ b/DuckDuckGo/en.lproj/Localizable.strings @@ -7,6 +7,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Undo"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Manage"; + /* Add action - button shown in alert */ "action.title.add" = "Add"; @@ -643,9 +646,6 @@ /* Empty list state placholder */ "empty.bookmarks" = "No bookmarks added yet"; -/* Empty list state placholder */ -"empty.favorites" = "No favorites added yet"; - /* Empty search placeholder on bookmarks search */ "empty.search" = "No matches found"; @@ -653,10 +653,10 @@ "favorite" = "Favorite"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Delete"; +"favorite.menu.edit" = "Edit"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Edit"; +"favorite.menu.remove" = "Remove"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Ad and pop-up blocking"; diff --git a/DuckDuckGo/es.lproj/Bookmarks.strings b/DuckDuckGo/es.lproj/Bookmarks.strings index 0115c9b05f..1e134303ca 100644 --- a/DuckDuckGo/es.lproj/Bookmarks.strings +++ b/DuckDuckGo/es.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Hecho"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Etiqueta"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Aún no se han añadido marcadores"; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Etiqueta"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Etiqueta"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Etiqueta"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Añadir carpeta"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Título"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Etiqueta"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Editar"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Aún no se han añadido marcadores"; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Favorito"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Editar"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Todos los marcadores"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Importar archivo de marcador desde otro navegador"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Favoritos"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Añadir marcador"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Marcadores"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Añadir carpeta"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Importar archivo de marcador desde otro navegador"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Título"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Marcadores"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Hecho"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Aún no se han añadido marcadores"; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Etiqueta"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "Todavía no se han añadido favoritos"; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "URL"; diff --git a/DuckDuckGo/es.lproj/Localizable.strings b/DuckDuckGo/es.lproj/Localizable.strings index 341a826d01..e3b8722170 100644 --- a/DuckDuckGo/es.lproj/Localizable.strings +++ b/DuckDuckGo/es.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Deshacer"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Gestionar"; + /* Add action - button shown in alert */ "action.title.add" = "Añadir"; @@ -656,10 +659,10 @@ "favorite" = "Favorito"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Eliminar"; +"favorite.menu.edit" = "Editar"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Editar"; +"favorite.menu.remove" = "Eliminar"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Bloquear anuncios y mensajes emergentes"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Protección de privacidad activada para %@"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "Se ha producido un error desconocido."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Autocompletar sugerencia"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Marcador"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "Buscar en DuckDuckGo"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Abrir sitio web"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Ajustes"; diff --git a/DuckDuckGo/et.lproj/Bookmarks.strings b/DuckDuckGo/et.lproj/Bookmarks.strings index 92845abbe8..4074b624b5 100644 --- a/DuckDuckGo/et.lproj/Bookmarks.strings +++ b/DuckDuckGo/et.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Valmis"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Label"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Järjehoidjaid pole veel lisatud"; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Label"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Label"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Silt"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Lisa kaust"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Pealkiri"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Label"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Redigeeri"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Järjehoidjaid pole veel lisatud"; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Lemmik"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Redigeeri"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Kõik järjehoidjad"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Järjehoidja faili importimine teisest brauserist"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Lemmikud"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Lisa järjehoidja"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Järjehoidjad"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Lisa kaust"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Järjehoidja faili importimine teisest brauserist"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Pealkiri"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Järjehoidjad"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Valmis"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Järjehoidjaid pole veel lisatud"; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Silt"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "Lemmikuid pole veel lisatud"; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "URL"; diff --git a/DuckDuckGo/et.lproj/Localizable.strings b/DuckDuckGo/et.lproj/Localizable.strings index 708ad79169..68ceae1b77 100644 --- a/DuckDuckGo/et.lproj/Localizable.strings +++ b/DuckDuckGo/et.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Võta tagasi"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Halda"; + /* Add action - button shown in alert */ "action.title.add" = "Lisa"; @@ -656,10 +659,10 @@ "favorite" = "Lemmik"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Kustuta"; +"favorite.menu.edit" = "Redigeeri"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Redigeeri"; +"favorite.menu.remove" = "Eemaldage"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Reklaami ja hüpikakende blokeerimine"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "%@ privaatsuse kaitse on lubatud"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "Tekkis tundmatu tõrge."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Kasuta ettepaneku automaatteksti"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Järjehoidja"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "Otsing DuckDuckGo's"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Ava veebisait"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Seaded"; diff --git a/DuckDuckGo/fi.lproj/Bookmarks.strings b/DuckDuckGo/fi.lproj/Bookmarks.strings index cae94bd161..2db52de55c 100644 --- a/DuckDuckGo/fi.lproj/Bookmarks.strings +++ b/DuckDuckGo/fi.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Valmis"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Label"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Kirjanmerkkejä ei ole vielä lisätty"; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Label"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Label"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Label"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Lisää kansio"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Otsikko"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Label"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Muokkaa"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Kirjanmerkkejä ei ole vielä lisätty"; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Suosikki"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Muokkaa"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Kaikki kirjanmerkit"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Tuo kirjanmerkkitiedosto toisesta selaimesta"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Suosikit"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Lisää kirjanmerkki"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Kirjanmerkit"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Lisää kansio"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Tuo kirjanmerkkitiedosto toisesta selaimesta"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Otsikko"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Kirjanmerkit"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Valmis"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Kirjanmerkkejä ei ole vielä lisätty"; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Label"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "Suosikkeja ei ole vielä lisätty"; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "URL"; diff --git a/DuckDuckGo/fi.lproj/Localizable.strings b/DuckDuckGo/fi.lproj/Localizable.strings index fe30241beb..32ce304b8a 100644 --- a/DuckDuckGo/fi.lproj/Localizable.strings +++ b/DuckDuckGo/fi.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Kumoa"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Hallitse"; + /* Add action - button shown in alert */ "action.title.add" = "Lisää"; @@ -656,10 +659,10 @@ "favorite" = "Suosikki"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Poista"; +"favorite.menu.edit" = "Muokkaa"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Muokkaa"; +"favorite.menu.remove" = "Poista"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Mainosten ja ponnahdusikkunoiden esto"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Yksityisyydensuoja otettu käyttöön osoitteessa %@"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "Tapahtui tuntematon virhe."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Automaattisen täydennyksen ehdotus"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Kirjanmerkki"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "Hae DuckDuckGosta"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Avaa verkkosivusto"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Asetukset"; diff --git a/DuckDuckGo/fr.lproj/Bookmarks.strings b/DuckDuckGo/fr.lproj/Bookmarks.strings index e6a13f088f..37268bd999 100644 --- a/DuckDuckGo/fr.lproj/Bookmarks.strings +++ b/DuckDuckGo/fr.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Terminé"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Label"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Aucun signet ajouté pour le moment"; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Label"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Label"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Label"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Ajouter le dossier"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Titre"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Label"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Modifier"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Aucun signet ajouté pour le moment"; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Favori"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Modifier"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Tous les signets"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Importer un fichier de signets à partir d'un autre navigateur"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Favoris"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Ajouter un signet"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Signets"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Ajouter le dossier"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Importer un fichier de signets à partir d'un autre navigateur"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Titre"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Signets"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Terminé"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Aucun signet ajouté pour le moment"; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Label"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "Aucun favori ajouté pour le moment"; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "URL"; diff --git a/DuckDuckGo/fr.lproj/Localizable.strings b/DuckDuckGo/fr.lproj/Localizable.strings index 10c239dccc..755c7f4ec3 100644 --- a/DuckDuckGo/fr.lproj/Localizable.strings +++ b/DuckDuckGo/fr.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Annuler"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Gérer"; + /* Add action - button shown in alert */ "action.title.add" = "Ajouter"; @@ -656,10 +659,10 @@ "favorite" = "Favori"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Supprimer"; +"favorite.menu.edit" = "Modifier"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Modifier"; +"favorite.menu.remove" = "Supprimer"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Bloquer les publicités et les fenêtres contextuelles"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Protection de la confidentialité activée pour %@"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "Une erreur inconnue s'est produite."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Saisie semi-automatique de la suggestion"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Signet"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "Rechercher sur DuckDuckGo"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Ouvrir le site Web"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Paramètres"; diff --git a/DuckDuckGo/hr.lproj/Bookmarks.strings b/DuckDuckGo/hr.lproj/Bookmarks.strings index dcfc105cac..f5f2c7f87a 100644 --- a/DuckDuckGo/hr.lproj/Bookmarks.strings +++ b/DuckDuckGo/hr.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Gotovo"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Label"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Još nema dodanih knjižnih oznaka"; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Label"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Label"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Label"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Dodaj mapu"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Naslov"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Label"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Uredi"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Još nema dodanih knjižnih oznaka"; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Omiljeno"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Uredi"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Sve knjižne oznake"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Uvezite datoteku oznaka iz drugog preglednika"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Omiljeno"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Dodaj knjižnu oznaku"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Knjižne oznake"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Dodaj mapu"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Uvezite datoteku oznaka iz drugog preglednika"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Naslov"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Knjižne oznake"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Gotovo"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Još nema dodanih knjižnih oznaka"; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Label"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "Još uvijek nema omiljenih stavki"; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "URL"; diff --git a/DuckDuckGo/hr.lproj/Localizable.strings b/DuckDuckGo/hr.lproj/Localizable.strings index 82f2bf557b..4f55f629d5 100644 --- a/DuckDuckGo/hr.lproj/Localizable.strings +++ b/DuckDuckGo/hr.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Poništi"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Upravljanje"; + /* Add action - button shown in alert */ "action.title.add" = "Dodaj"; @@ -656,10 +659,10 @@ "favorite" = "Omiljeno"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Izbriši"; +"favorite.menu.edit" = "Uredi"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Uredi"; +"favorite.menu.remove" = "Ukloni"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Blokiranje oglasa i skočnih prozora"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Zaštita privatnosti je omogućena za %@"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "Došlo je do nepoznate pogreške."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Prijedlog za automatsko ispunjavanje"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Knjižna oznaka"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "Pretraži na DuckDuckGou"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Otvori web lokaciju"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Postavke"; diff --git a/DuckDuckGo/hu.lproj/Bookmarks.strings b/DuckDuckGo/hu.lproj/Bookmarks.strings index 9d4d45dcc3..fb4e5641e7 100644 --- a/DuckDuckGo/hu.lproj/Bookmarks.strings +++ b/DuckDuckGo/hu.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Kész"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Címke"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Még nincsenek könyvjelzők hozzáadva"; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Címke"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Címke"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Címke"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Mappa hozzáadása"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Cím"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Címke"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Szerkesztés"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Még nincsenek könyvjelzők hozzáadva"; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Kedvenc"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Szerkesztés"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Minden könyvjelző"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Könyvjelzőfájl importálása másik böngészőből"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Kedvencek"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Könyvjelző mentése"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Könyvjelzők"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Mappa hozzáadása"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Könyvjelzőfájl importálása másik böngészőből"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Cím"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Könyvjelzők"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Kész"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Még nincsenek könyvjelzők hozzáadva"; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Címke"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "Még nincsenek hozzáadva kedvencek."; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "URL"; diff --git a/DuckDuckGo/hu.lproj/Localizable.strings b/DuckDuckGo/hu.lproj/Localizable.strings index cb5c792da6..b416ac2372 100644 --- a/DuckDuckGo/hu.lproj/Localizable.strings +++ b/DuckDuckGo/hu.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Visszavonás"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Kezelés"; + /* Add action - button shown in alert */ "action.title.add" = "Hozzáadás"; @@ -656,10 +659,10 @@ "favorite" = "Kedvenc"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Törlés"; +"favorite.menu.edit" = "Szerkesztés"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Szerkesztés"; +"favorite.menu.remove" = "Eltávolítás"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Hirdetések és felugró ablakok letiltása"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Adatvédelem engedélyezve a következőhöz: %@"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "Ismeretlen hiba történt."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Automatikus kiegészítési javaslat"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Könyvjelző"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "Keresés a DuckDuckGón"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Webhely megnyitása"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Beállítások"; diff --git a/DuckDuckGo/it.lproj/Bookmarks.strings b/DuckDuckGo/it.lproj/Bookmarks.strings index c10bd14bf2..7750394b17 100644 --- a/DuckDuckGo/it.lproj/Bookmarks.strings +++ b/DuckDuckGo/it.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Fatto"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Etichetta"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Non è ancora stato aggiunto nessun segnalibro"; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Etichetta"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Etichetta"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Etichetta"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Aggiungi cartella"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Titolo"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Etichetta"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Modifica"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Non è ancora stato aggiunto nessun segnalibro"; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Preferito"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Modifica"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Tutti i segnalibri"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Importa file segnalibro da un altro browser"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Preferiti"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Aggiungi ai segnalibri"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Segnalibri"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Aggiungi cartella"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Importa file segnalibro da un altro browser"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Titolo"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Segnalibri"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Fatto"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Non è ancora stato aggiunto nessun segnalibro"; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Etichetta"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "Non è stato ancora aggiunto alcun preferito"; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "URL"; diff --git a/DuckDuckGo/it.lproj/Localizable.strings b/DuckDuckGo/it.lproj/Localizable.strings index 3a3370113b..8fe290de58 100644 --- a/DuckDuckGo/it.lproj/Localizable.strings +++ b/DuckDuckGo/it.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Annulla"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Gestisci"; + /* Add action - button shown in alert */ "action.title.add" = "Aggiungi"; @@ -656,10 +659,10 @@ "favorite" = "Preferito"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Cancella"; +"favorite.menu.edit" = "Modifica"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Modifica"; +"favorite.menu.remove" = "Rimuovi"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Blocco di annunci e popup"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Tutela della privacy attivata per %@"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "Si è verificato un errore sconosciuto."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Mostra suggerimenti di completamento automatico"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Segnalibro"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "Cerca su DuckDuckGo"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Apri il sito web"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Impostazioni"; diff --git a/DuckDuckGo/lt.lproj/Bookmarks.strings b/DuckDuckGo/lt.lproj/Bookmarks.strings index 680d9e5385..465490dd82 100644 --- a/DuckDuckGo/lt.lproj/Bookmarks.strings +++ b/DuckDuckGo/lt.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Atlikta"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Etiketė"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Žymių dar nepridėta"; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Etiketė"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Etiketė"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Etiketė"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Pridėti aplanką"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Pavadinimas"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Etiketė"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Redaguoti"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Žymių dar nepridėta"; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Mėgstamas"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Redaguoti"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Visos žymelės"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Importuoti žymelės failą iš kitos naršyklės"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Mėgstami"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Pridėti žymę"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Žymės"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Pridėti aplanką"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Importuoti žymelės failą iš kitos naršyklės"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Pavadinimas"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Žymės"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Atlikta"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Žymių dar nepridėta"; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Etiketė"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "Mėgstamų dar nepridėta"; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "URL"; diff --git a/DuckDuckGo/lt.lproj/Localizable.strings b/DuckDuckGo/lt.lproj/Localizable.strings index 0b2ae93ef8..23f46ca51d 100644 --- a/DuckDuckGo/lt.lproj/Localizable.strings +++ b/DuckDuckGo/lt.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Anuliuoti"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Tvarkyti"; + /* Add action - button shown in alert */ "action.title.add" = "Papildyti"; @@ -656,10 +659,10 @@ "favorite" = "Mėgstamas"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Trinti"; +"favorite.menu.edit" = "Redaguoti"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Redaguoti"; +"favorite.menu.remove" = "Pašalinti"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Reklamų ir iššokančiųjų langų blokavimas"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Privatumo apsauga įjungta %@"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "Įvyko nežinoma klaida."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Automatinio užbaigimo pasiūlymas"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Žymė"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "Ieškoti „DuckDuckGo“"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Atidaryti svetainę"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Nustatymai"; diff --git a/DuckDuckGo/lv.lproj/Bookmarks.strings b/DuckDuckGo/lv.lproj/Bookmarks.strings index 3a59d18d51..e68c3d5315 100644 --- a/DuckDuckGo/lv.lproj/Bookmarks.strings +++ b/DuckDuckGo/lv.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Gatavs"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Etiķete"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Vēl nav pievienota neviena grāmatzīme"; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Etiķete"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Etiķete"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Etiķete"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Pievienot mapi"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Nosaukums"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Etiķete"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Rediģēt"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Vēl nav pievienota neviena grāmatzīme"; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Izlase"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Rediģēt"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Visas grāmatzīmes"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Importēt grāmatzīmju failu no citas pārlūkprogrammas"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Izlase"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Pievienot grāmatzīmi"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Grāmatzīmes"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Pievienot mapi"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Importēt grāmatzīmju failu no citas pārlūkprogrammas"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Nosaukums"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Grāmatzīmes"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Gatavs"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Vēl nav pievienota neviena grāmatzīme"; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Etiķete"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "Vēl nav pievienota neviena izlase"; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "Vietrādis URL"; diff --git a/DuckDuckGo/lv.lproj/Localizable.strings b/DuckDuckGo/lv.lproj/Localizable.strings index 8519b89fc2..91d4f06d53 100644 --- a/DuckDuckGo/lv.lproj/Localizable.strings +++ b/DuckDuckGo/lv.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Atsaukt"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Pārvaldīt"; + /* Add action - button shown in alert */ "action.title.add" = "Pievienot"; @@ -656,10 +659,10 @@ "favorite" = "Izlase"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Dzēst"; +"favorite.menu.edit" = "Rediģēt"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Rediģēt"; +"favorite.menu.remove" = "Noņemt"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Reklāmu un uznirstošo logu bloķēšana"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "%@ ir iespējota privātuma aizsardzība"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "Radās nezināma kļūda."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Automātiski pabeigt ieteikumu"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Grāmatzīme"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "Meklēt vietnē DuckDuckGo"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Atvērt tīmekļa vietni"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Iestatījumi"; diff --git a/DuckDuckGo/nb.lproj/Bookmarks.strings b/DuckDuckGo/nb.lproj/Bookmarks.strings index f7eb71ba94..11b77e06b7 100644 --- a/DuckDuckGo/nb.lproj/Bookmarks.strings +++ b/DuckDuckGo/nb.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Ferdig"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Etikett"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Ingen bokmerker lagt til ennå"; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Etikett"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Etikett"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Etikett"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Legg til mappe"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Tittel"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Etikett"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Rediger"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Ingen bokmerker lagt til ennå"; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Favoritt"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Rediger"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Alle bokmerker"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Importer bokmerkefil fra en annen nettleser"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Favoritter"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Legg til bokmerke"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Bokmerker"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Legg til mappe"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Importer bokmerkefil fra en annen nettleser"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Tittel"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Bokmerker"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Ferdig"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Ingen bokmerker lagt til ennå"; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Etikett"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "Ingen favoritter ennå"; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "URL"; diff --git a/DuckDuckGo/nb.lproj/Localizable.strings b/DuckDuckGo/nb.lproj/Localizable.strings index 3684813d2f..70d2129268 100644 --- a/DuckDuckGo/nb.lproj/Localizable.strings +++ b/DuckDuckGo/nb.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Angre"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Administrere"; + /* Add action - button shown in alert */ "action.title.add" = "Legg til"; @@ -656,10 +659,10 @@ "favorite" = "Favoritt"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Slett"; +"favorite.menu.edit" = "Rediger"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Rediger"; +"favorite.menu.remove" = "Fjern"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Blokkering av reklame og popups"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Personvern er aktivert for %@"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "Det oppstod en ukjent feil."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Forslag fra autofullfør"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Bokmerke"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "Søk med DuckDuckGo"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Åpne nettsted"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Innstillinger"; diff --git a/DuckDuckGo/nl.lproj/Bookmarks.strings b/DuckDuckGo/nl.lproj/Bookmarks.strings index c88d1e9374..8b8f8fc875 100644 --- a/DuckDuckGo/nl.lproj/Bookmarks.strings +++ b/DuckDuckGo/nl.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Klaar"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Label"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Nog geen bladwijzers toegevoegd"; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Label"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Label"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Label"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Map toevoegen"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Titel"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Label"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Bewerken"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Nog geen bladwijzers toegevoegd"; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Favoriet"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Bewerken"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Alle bladwijzers"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Bladwijzerbestand importeren vanuit een andere browser"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Favorieten"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Bladwijzer toevoegen"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Bladwijzers"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Map toevoegen"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Bladwijzerbestand importeren vanuit een andere browser"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Titel"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Bladwijzers"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Klaar"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Nog geen bladwijzers toegevoegd"; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Label"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "Nog geen favorieten toegevoegd"; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "URL"; diff --git a/DuckDuckGo/nl.lproj/Localizable.strings b/DuckDuckGo/nl.lproj/Localizable.strings index 75a6888291..44d171c38c 100644 --- a/DuckDuckGo/nl.lproj/Localizable.strings +++ b/DuckDuckGo/nl.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Ongedaan maken"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Beheren"; + /* Add action - button shown in alert */ "action.title.add" = "Toevoegen"; @@ -656,10 +659,10 @@ "favorite" = "Favoriet"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Verwijderen"; +"favorite.menu.edit" = "Bewerken"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Bewerken"; +"favorite.menu.remove" = "Verwijderen"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Advertentie- en pop-upblokkering"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Privacybescherming ingeschakeld voor %@"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "Er is een onbekende fout opgetreden."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Suggestie automatisch aanvullen"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Bladwijzer"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "Zoeken op DuckDuckGo"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Website openen"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Instellingen"; diff --git a/DuckDuckGo/pl.lproj/Bookmarks.strings b/DuckDuckGo/pl.lproj/Bookmarks.strings index c726b29aab..cd96d1da19 100644 --- a/DuckDuckGo/pl.lproj/Bookmarks.strings +++ b/DuckDuckGo/pl.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Gotowe"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Etykieta"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Nie dodano jeszcze żadnych zakładek"; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Etykieta"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Etykieta"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Etykieta"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Dodaj folder"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Tytuł"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Etykieta"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Edytuj"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Nie dodano jeszcze żadnych zakładek"; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Ulubione"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Edytuj"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Wszystkie zakładki"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Importuj plik z zakładkami z innej przeglądarki"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Ulubione"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Dodaj zakładkę"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Zakładki"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Dodaj folder"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Importuj plik z zakładkami z innej przeglądarki"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Tytuł"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Zakładki"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Gotowe"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Nie dodano jeszcze żadnych zakładek"; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Etykieta"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "Nie dodano jeszcze ulubionych"; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "Adres URL"; diff --git a/DuckDuckGo/pl.lproj/Localizable.strings b/DuckDuckGo/pl.lproj/Localizable.strings index 444d6c95f0..c60a0b0a3e 100644 --- a/DuckDuckGo/pl.lproj/Localizable.strings +++ b/DuckDuckGo/pl.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Cofnij"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Zarządzaj"; + /* Add action - button shown in alert */ "action.title.add" = "Dodaj"; @@ -656,10 +659,10 @@ "favorite" = "Ulubione"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Usuń"; +"favorite.menu.edit" = "Edytuj"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Edytuj"; +"favorite.menu.remove" = "Usuń"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Blokowanie reklam i wyskakujących okienek"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Ochrona prywatności włączona dla %@"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "Wystąpił nieznany błąd."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Propozycja autouzupełniania"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Zakładka"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "Szukaj w DuckDuckGo"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Otwórz witrynę internetową"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Ustawienia"; diff --git a/DuckDuckGo/pt.lproj/Bookmarks.strings b/DuckDuckGo/pt.lproj/Bookmarks.strings index 101f614cad..c30300cc77 100644 --- a/DuckDuckGo/pt.lproj/Bookmarks.strings +++ b/DuckDuckGo/pt.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Feito"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Rótulo"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Ainda não foram adicionados marcadores"; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Rótulo"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Rótulo"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Rótulo"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Adicionar pasta"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Título"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Rótulo"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Editar"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Ainda não foram adicionados marcadores"; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Favorito"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Editar"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Todos os marcadores"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Importar ficheiro de marcador de outro navegador"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Favoritos"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Adicionar marcador"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Marcadores"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Adicionar pasta"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Importar ficheiro de marcador de outro navegador"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Título"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Marcadores"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Feito"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Ainda não foram adicionados marcadores"; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Rótulo"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "Ainda sem favoritos adicionados"; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "URL"; diff --git a/DuckDuckGo/pt.lproj/Localizable.strings b/DuckDuckGo/pt.lproj/Localizable.strings index 853f640aef..7d4f4ed58d 100644 --- a/DuckDuckGo/pt.lproj/Localizable.strings +++ b/DuckDuckGo/pt.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Anular"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Gerir"; + /* Add action - button shown in alert */ "action.title.add" = "Adicionar"; @@ -656,10 +659,10 @@ "favorite" = "Favorito"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Eliminar"; +"favorite.menu.edit" = "Editar"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Editar"; +"favorite.menu.remove" = "Remover"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Bloquear anúncios e pop-ups"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Proteção de privacidade ativada para %@"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "Ocorreu um erro desconhecido."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Sugestão de preenchimento automático"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Marcador"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "Pesquisar no DuckDuckGo"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Abrir website"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Definições"; diff --git a/DuckDuckGo/ro.lproj/Bookmarks.strings b/DuckDuckGo/ro.lproj/Bookmarks.strings index 3b1584625f..eb002a4706 100644 --- a/DuckDuckGo/ro.lproj/Bookmarks.strings +++ b/DuckDuckGo/ro.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Terminat"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Label"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Nu s-a adăugat niciun semn de carte"; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Label"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Label"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Label"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Adaugă folder"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Titlu"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Label"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Editați"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Nu s-a adăugat niciun semn de carte"; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Preferință"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Editați"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Toate marcajele"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Importă fișierul de marcaje dintr-un alt browser"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Preferințe"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Adăugare semn de carte"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Semne de carte"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Adaugă folder"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Importă fișierul de marcaje dintr-un alt browser"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Titlu"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Semne de carte"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Terminat"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Nu s-a adăugat niciun semn de carte"; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Label"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "Nicio preferință adăugată încă"; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "URL"; diff --git a/DuckDuckGo/ro.lproj/Localizable.strings b/DuckDuckGo/ro.lproj/Localizable.strings index f0eaed5bb1..06f25153ed 100644 --- a/DuckDuckGo/ro.lproj/Localizable.strings +++ b/DuckDuckGo/ro.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Anulați"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Gestionează"; + /* Add action - button shown in alert */ "action.title.add" = "Adăugați"; @@ -656,10 +659,10 @@ "favorite" = "Preferință"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Ștergere"; +"favorite.menu.edit" = "Editați"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Editați"; +"favorite.menu.remove" = "Elimină"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Blocarea anunțurilor și ferestrelor pop-up"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Protecția confidențialității este activată pentru %@"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "A apărut o eroare necunoscută."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Sugestie de completare automată"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Marchează"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "Caută pe DuckDuckGo"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Deschide site-ul"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Setări"; diff --git a/DuckDuckGo/ru.lproj/Bookmarks.strings b/DuckDuckGo/ru.lproj/Bookmarks.strings index 49dc9437aa..46116c9cdf 100644 --- a/DuckDuckGo/ru.lproj/Bookmarks.strings +++ b/DuckDuckGo/ru.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Готово"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Метка"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Закладок пока нет"; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Метка"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Метка"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Метка"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Добавить папку"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Название"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Метка"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Редактировать"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Закладок пока нет"; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Избранное"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Редактировать"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Все закладки"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Импортировать закладки из другого браузера"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Избранное"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Добавить закладку"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Закладки"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Добавить папку"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Импортировать закладки из другого браузера"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Название"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Закладки"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Готово"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Закладок пока нет"; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Метка"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "В избранное пока ничего не добавлено"; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "URL"; diff --git a/DuckDuckGo/ru.lproj/Localizable.strings b/DuckDuckGo/ru.lproj/Localizable.strings index 8cd28731a2..1232770ec4 100644 --- a/DuckDuckGo/ru.lproj/Localizable.strings +++ b/DuckDuckGo/ru.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Отменить"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Настроить"; + /* Add action - button shown in alert */ "action.title.add" = "Добавить"; @@ -656,10 +659,10 @@ "favorite" = "Избранное"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Удалить"; +"favorite.menu.edit" = "Редактировать"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Редактировать"; +"favorite.menu.remove" = "Удалить"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Блокировка рекламы и всплывающих окон"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Защита конфиденциальности на %@ включена"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "Произошла неизвестная ошибка."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Предложение для автозаполнения"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Закладка"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "Поиск в DuckDuckGo"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Открыть сайт"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Настройки"; diff --git a/DuckDuckGo/sk.lproj/Bookmarks.strings b/DuckDuckGo/sk.lproj/Bookmarks.strings index ff75a77f58..050e063822 100644 --- a/DuckDuckGo/sk.lproj/Bookmarks.strings +++ b/DuckDuckGo/sk.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Hotovo"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Označenie"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Zatiaľ neboli pridané žiadne záložky"; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Označenie"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Označenie"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Označenie"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Pridanie priečinka"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Názov"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Označenie"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Upraviť"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Zatiaľ neboli pridané žiadne záložky"; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Obľúbené položky"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Upraviť"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Všetky záložky"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Importujte súbor so záložkami z iného prehliadača"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Obľúbené položky"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Pridať záložku"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Záložky"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Pridať priečinok"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Importujte súbor so záložkami z iného prehliadača"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Názov"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Záložky"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Hotovo"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Zatiaľ neboli pridané žiadne záložky"; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Označenie"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "Zatiaľ neboli pridané žiadne obľúbené položky"; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "URL adresa"; diff --git a/DuckDuckGo/sk.lproj/Localizable.strings b/DuckDuckGo/sk.lproj/Localizable.strings index bba14db500..5f34502976 100644 --- a/DuckDuckGo/sk.lproj/Localizable.strings +++ b/DuckDuckGo/sk.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Vrátenie späť"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Spravujte stránku"; + /* Add action - button shown in alert */ "action.title.add" = "Pridať"; @@ -656,10 +659,10 @@ "favorite" = "Obľúbené položky"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Vymazať"; +"favorite.menu.edit" = "Upraviť"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Upraviť"; +"favorite.menu.remove" = "Odstrániť"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Blokovanie reklám a automaticky otváraných okien"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Ochrana súkromia na doméne %@ bola zapnutá"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "Vyskytla sa neznáma chyba."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Zobraziť návrhy automatického dopĺňania"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Záložka"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "Vyhľadávať na DuckDuckGo"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Otvoriť webovú lokalitu"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Nastavenia"; diff --git a/DuckDuckGo/sl.lproj/Bookmarks.strings b/DuckDuckGo/sl.lproj/Bookmarks.strings index 6a8706efec..b3e27250b2 100644 --- a/DuckDuckGo/sl.lproj/Bookmarks.strings +++ b/DuckDuckGo/sl.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Končano"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Oznaka"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Zaznamki še niso dodani"; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Oznaka"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Oznaka"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Oznaka"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Dodaj mapo"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Naslov"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Oznaka"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Uredi"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Zaznamki še niso dodani"; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Priljubljeni"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Uredi"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Vsi zaznamki"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Uvoz datoteke z zaznamki iz drugega brskalnika"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Priljubljeni"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Dodaj zaznamek"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Zaznamki"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Dodaj mapo"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Uvoz datoteke z zaznamki iz drugega brskalnika"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Naslov"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Zaznamki"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Končano"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Zaznamki še niso dodani"; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Oznaka"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "Priljubljeni še niso dodani"; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "URL"; diff --git a/DuckDuckGo/sl.lproj/Localizable.strings b/DuckDuckGo/sl.lproj/Localizable.strings index ed340577de..7d09874ede 100644 --- a/DuckDuckGo/sl.lproj/Localizable.strings +++ b/DuckDuckGo/sl.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Prekliči spremembe"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Upravljanje"; + /* Add action - button shown in alert */ "action.title.add" = "Dodaj"; @@ -656,10 +659,10 @@ "favorite" = "Priljubljeni"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Izbriši"; +"favorite.menu.edit" = "Uredi"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Uredi"; +"favorite.menu.remove" = "Odstrani"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Blokiranje oglasov in pojavnih oken"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Zaščita zasebnosti je omogočena za %@"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "Prišlo je do neznane napake."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Pokaži predlog za samodokončanje"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Zaznamek"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "Iskanje v DuckDuckGo"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Odpri spletno mesto"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Nastavitve"; diff --git a/DuckDuckGo/sv.lproj/Bookmarks.strings b/DuckDuckGo/sv.lproj/Bookmarks.strings index 9d1f6aca13..31267b354c 100644 --- a/DuckDuckGo/sv.lproj/Bookmarks.strings +++ b/DuckDuckGo/sv.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Klart"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Etikett"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Inga bokmärken har lagts till ännu"; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Etikett"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Etikett"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Etikett"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Lägg till mapp"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Rubrik"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Etikett"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Redigera"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Inga bokmärken har lagts till ännu"; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Favorit"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Redigera"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Alla bokmärken"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Importera bokmärkesfil från en annan webbläsare"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Favoriter"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Lägg till bokmärke"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Bokmärken"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Lägg till mapp"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Importera bokmärkesfil från en annan webbläsare"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Rubrik"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Bokmärken"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Klart"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Inga bokmärken har lagts till ännu"; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Etikett"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "Inga favoriter har lagts till ännu"; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "Webbadress"; diff --git a/DuckDuckGo/sv.lproj/Localizable.strings b/DuckDuckGo/sv.lproj/Localizable.strings index d930243b02..c881add1da 100644 --- a/DuckDuckGo/sv.lproj/Localizable.strings +++ b/DuckDuckGo/sv.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Återställ"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Hantera"; + /* Add action - button shown in alert */ "action.title.add" = "Lägg till"; @@ -656,10 +659,10 @@ "favorite" = "Favorit"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Ta bort"; +"favorite.menu.edit" = "Redigera"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Redigera"; +"favorite.menu.remove" = "Ta bort"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Blockering av annonser och poppuppfönster"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Integritetsskydd aktiverat för %@"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "Ett okänt fel uppstod."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Komplettera automatiskt-förslag"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Bokmärk"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "Sök på DuckDuckGo"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Öppna webbplatsen"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Inställningar"; diff --git a/DuckDuckGo/tr.lproj/Bookmarks.strings b/DuckDuckGo/tr.lproj/Bookmarks.strings index 9c1ab0a0ca..40febb265b 100644 --- a/DuckDuckGo/tr.lproj/Bookmarks.strings +++ b/DuckDuckGo/tr.lproj/Bookmarks.strings @@ -1,41 +1,53 @@ -/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "1oZ-re-yKW"; */ -"1oZ-re-yKW.title" = "Bitti"; +/* Class = "UILabel"; text = "Label"; ObjectID = "7VM-DV-W3e"; */ +"7VM-DV-W3e.text" = "Label"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "Buv-ez-2Lr"; */ -"Buv-ez-2Lr.text" = "Henüz yer imi eklenmedi"; +/* Class = "UILabel"; text = "Label"; ObjectID = "061-pX-T9z"; */ +"061-pX-T9z.text" = "Label"; + +/* Class = "UILabel"; text = "Label"; ObjectID = "cV4-pj-JNb"; */ +"cV4-pj-JNb.text" = "Label"; /* Class = "UILabel"; text = "Label"; ObjectID = "K2O-E5-pyF"; */ "K2O-E5-pyF.text" = "Label"; +/* Class = "UILabel"; text = "Add Folder"; ObjectID = "K8e-rz-6qx"; */ +"K8e-rz-6qx.text" = "Klasör Ekle"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "KiU-Wb-7jj"; */ "KiU-Wb-7jj.placeholder" = "Title"; -/* Class = "UILabel"; text = "Label"; ObjectID = "Lqe-Wh-Evj"; */ -"Lqe-Wh-Evj.text" = "Label"; +/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "Ksa-Pd-Mv5"; */ +"Ksa-Pd-Mv5.title" = "Düzenle"; -/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "N2X-jQ-cbU"; */ -"N2X-jQ-cbU.text" = "Henüz yer imi eklenmedi"; +/* Class = "UILabel"; text = "Favorite"; ObjectID = "mRK-XI-Rr8"; */ +"mRK-XI-Rr8.text" = "Favori"; -/* Class = "UIBarButtonItem"; title = "Edit"; ObjectID = "pwj-Ie-VbJ"; */ -"pwj-Ie-VbJ.title" = "Düzenle"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[0] = "All Bookmarks"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[0]" = "Tüm Yer İşaretleri"; -/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "pyc-rk-XMJ"; */ -"pyc-rk-XMJ.normalTitle" = "Başka bir tarayıcıdan yer işaretleri dosyasını içeri aktarma"; +/* Class = "UISegmentedControl"; NJH-oV-DbS.segmentTitles[1] = "Favorites"; ObjectID = "NJH-oV-DbS"; */ +"NJH-oV-DbS.segmentTitles[1]" = "Favoriler"; -/* Class = "UINavigationItem"; title = "Add Bookmark"; ObjectID = "qA0-bu-lRC"; */ -"qA0-bu-lRC.title" = "Yer İmi ekle"; +/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "oMv-60-GGW"; */ +"oMv-60-GGW.title" = "Yer İmleri"; /* Class = "UINavigationItem"; title = "Add Folder"; ObjectID = "qaZ-4Z-o70"; */ "qaZ-4Z-o70.title" = "Klasör Ekle"; +/* Class = "UIButton"; normalTitle = "Import bookmark file from another browser"; ObjectID = "R7T-q4-qHz"; */ +"R7T-q4-qHz.normalTitle" = "Başka bir tarayıcıdan yer işaretleri dosyasını içeri aktarma"; + /* Class = "UITextField"; placeholder = "Title"; ObjectID = "rT4-Yr-P8D"; */ "rT4-Yr-P8D.placeholder" = "Title"; -/* Class = "UINavigationItem"; title = "Bookmarks"; ObjectID = "tVt-jc-YaY"; */ -"tVt-jc-YaY.title" = "Yer İmleri"; +/* Class = "UIBarButtonItem"; title = "Done"; ObjectID = "RuZ-zV-tu8"; */ +"RuZ-zV-tu8.title" = "Bitti"; + +/* Class = "UILabel"; text = "No bookmarks added yet"; ObjectID = "SrQ-51-yie"; */ +"SrQ-51-yie.text" = "Henüz yer imi eklenmedi"; -/* Class = "UILabel"; text = "Label"; ObjectID = "vil-gw-sgh"; */ -"vil-gw-sgh.text" = "Label"; +/* Class = "UILabel"; text = "No favorites added yet"; ObjectID = "y8y-oO-xBm"; */ +"y8y-oO-xBm.text" = "Henüz hiç favori eklenmedi"; /* Class = "UITextField"; placeholder = "URL"; ObjectID = "YqY-sP-hhb"; */ "YqY-sP-hhb.placeholder" = "URL"; diff --git a/DuckDuckGo/tr.lproj/Localizable.strings b/DuckDuckGo/tr.lproj/Localizable.strings index 224093f2c5..9259cf9577 100644 --- a/DuckDuckGo/tr.lproj/Localizable.strings +++ b/DuckDuckGo/tr.lproj/Localizable.strings @@ -10,6 +10,9 @@ /* Button label for Undo action */ "action.generic.undo" = "Geri al"; +/* Button label for managing favorites */ +"action.manage.favorites" = "Yönet"; + /* Add action - button shown in alert */ "action.title.add" = "Ekle"; @@ -656,10 +659,10 @@ "favorite" = "Favori"; /* No comment provided by engineer. */ -"favorite.menu.delete" = "Sil"; +"favorite.menu.edit" = "Düzenle"; /* No comment provided by engineer. */ -"favorite.menu.edit" = "Düzenle"; +"favorite.menu.remove" = "Kaldır"; /* No comment provided by engineer. */ "feedback.browserFeatures.ads" = "Reklam ve pop-up engelleme"; @@ -1150,6 +1153,24 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Gizlilik Koruması %@ için etkinleştirildi"; +<<<<<<< HEAD +/* No comment provided by engineer. */ +"unknown.error.occurred" = "Bilinmeyen bir hata oluştu."; + +/* Autocomplete selected suggestion into the Address Bar button accessibility label */ +"voiceover.action.suggestion.autocomplete" = "Otomatik tamamlama önerisi"; + +/* Voice-over title for a Bookmark suggestion. Noun */ +"voiceover.suggestion.type.bookmark" = "Yer imi"; + +/* Search for suggestion action accessibility title */ +"voiceover.suggestion.type.search" = "DuckDuckGo'da ara"; + +/* Open suggested website action accessibility title */ +"voiceover.suggestion.type.website" = "Web sitesini aç"; + +======= +>>>>>>> develop /* No microphone permission alert action button to open the settings app */ "voiceSearch.alert.no-permission.action.settings" = "Ayarlar"; diff --git a/DuckDuckGoTests/BookmarkEditorViewModelTests.swift b/DuckDuckGoTests/BookmarkEditorViewModelTests.swift new file mode 100644 index 0000000000..cd08d384b5 --- /dev/null +++ b/DuckDuckGoTests/BookmarkEditorViewModelTests.swift @@ -0,0 +1,205 @@ +// +// BookmarkEditorViewModelTests.swift +// +// Copyright © 2022 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation +import XCTest +import Bookmarks +import Persistence +import Common +import DuckDuckGo + +class BookmarkEditorViewModelTests: XCTestCase { + + var db: CoreDataDatabase! + + override func setUp() { + super.setUp() + + let model = CoreDataDatabase.loadModel(from: Bookmarks.bundle, named: "BookmarksModel")! + + db = CoreDataDatabase(name: "Test", containerLocation: tempDBDir(), model: model) + db.loadStore() + + let mainContext = db.makeContext(concurrencyType: .mainQueueConcurrencyType, name: "TestContext") + BasicBookmarksStructure.populateDB(context: mainContext) + } + + override func tearDown() { + super.tearDown() + + try? db.tearDown(deleteStores: true) + } + + func errorValidatingHandler() -> EventMapping { + return EventMapping.init { event, _, _, _ in + XCTFail("Found error: \(event)") + } + } + + func testWhenCreatingFolderWithoutParentThenModelCanSave() { + let model = BookmarkEditorViewModel(creatingFolderWithParentID: nil, + bookmarksDatabase: db, + errorEvents: errorValidatingHandler()) + + XCTAssertFalse(model.canAddNewFolder) + XCTAssert(model.isNew) + + XCTAssertFalse(model.canSave) + model.bookmark.title = "New" + XCTAssert(model.canSave) + model.save() + } + + func testWhenCreatingFolderWithParentThenModelCanSave() { + let context = db.makeContext(concurrencyType: .mainQueueConcurrencyType) + let root = BookmarkUtils.fetchRootFolder(context) + XCTAssertNotNil(root) + let model = BookmarkEditorViewModel(creatingFolderWithParentID: root?.objectID, + bookmarksDatabase: db, + errorEvents: errorValidatingHandler()) + + XCTAssertFalse(model.canAddNewFolder) + XCTAssert(model.isNew) + + XCTAssertFalse(model.canSave) + model.bookmark.title = "New" + XCTAssert(model.canSave) + model.save() + } + + func testWhenEditingBookmarkThenModelCanSave() { + let context = db.makeContext(concurrencyType: .mainQueueConcurrencyType) + let root = BookmarkUtils.fetchRootFolder(context) + guard let firstBookmark = root?.childrenArray[0] else { + XCTFail("Missing bookmark") + return + } + + XCTAssertFalse(firstBookmark.isFolder) + + let model = BookmarkEditorViewModel(editingEntityID: firstBookmark.objectID, + bookmarksDatabase: db, + errorEvents: errorValidatingHandler()) + + XCTAssertFalse(model.isNew) + XCTAssert(model.canAddNewFolder) + XCTAssert(model.canSave) + model.save() + } + + func testWhenEditingFolderThenModelCanSave() { + let context = db.makeContext(concurrencyType: .mainQueueConcurrencyType) + let root = BookmarkUtils.fetchRootFolder(context) + guard let firstBookmark = root?.childrenArray[1] else { + XCTFail("Missing bookmark") + return + } + + XCTAssert(firstBookmark.isFolder) + + let model = BookmarkEditorViewModel(editingEntityID: firstBookmark.objectID, + bookmarksDatabase: db, + errorEvents: errorValidatingHandler()) + + XCTAssertFalse(model.isNew) + XCTAssertFalse(model.canAddNewFolder) + XCTAssert(model.canSave) + model.save() + } + + func testWhenEditingBookmarkThenFolderCanBeChanged() { + let context = db.makeContext(concurrencyType: .mainQueueConcurrencyType) + + guard let root = BookmarkUtils.fetchRootFolder(context), + let firstBookmark = root.childrenArray.first else { + XCTFail("Missing bookmark") + return + } + + XCTAssertFalse(firstBookmark.isFolder) + + let model = BookmarkEditorViewModel(editingEntityID: firstBookmark.objectID, + bookmarksDatabase: db, + errorEvents: errorValidatingHandler()) + + let folders = model.locations + + let fetchFolders = BookmarkEntity.fetchRequest() + fetchFolders.predicate = NSPredicate(format: "%K == true AND %K != %@", #keyPath(BookmarkEntity.isFolder), + #keyPath(BookmarkEntity.uuid), + BookmarkEntity.Constants.favoritesFolderID) + let allFolders = (try? context.fetch(fetchFolders)) ?? [] + + XCTAssertEqual(folders.count, allFolders.count) + + let editedBookmark = model.bookmark + + XCTAssert(editedBookmark.parent != folders[1].bookmark) + XCTAssert(model.isSelected(root)) + model.selectLocationAtIndex(1) + XCTAssert(model.isSelected(folders[1].bookmark)) + XCTAssert(model.canSave) + XCTAssert(editedBookmark.parent == folders[1].bookmark) + + model.setParentWithID(root.objectID) + XCTAssert(model.isSelected(root)) + XCTAssert(model.canSave) + XCTAssert(editedBookmark.parent == folders[0].bookmark) + model.save() + } + + func testWhenSettingFavoriteThenObjectIsUpdated() { + let context = db.makeContext(concurrencyType: .mainQueueConcurrencyType) + + guard let root = BookmarkUtils.fetchRootFolder(context), + let firstBookmark = root.childrenArray.first else { + XCTFail("Missing bookmark") + return + } + + XCTAssertFalse(firstBookmark.isFolder) + + let model = BookmarkEditorViewModel(editingEntityID: firstBookmark.objectID, + bookmarksDatabase: db, + errorEvents: errorValidatingHandler()) + + XCTAssert(model.bookmark.isFavorite) + model.removeFromFavorites() + XCTAssertFalse(model.bookmark.isFavorite) + XCTAssert(model.canSave) + model.save() + } + + // MARK: Errors + + func testWhenSavingInBrokenStateThenErrorIsReported() { + let errorReported = expectation(description: "Error reported") + let model = BookmarkEditorViewModel(creatingFolderWithParentID: nil, + bookmarksDatabase: db, + errorEvents: .init(mapping: { event, _, _, _ in + XCTAssertEqual(event, .saveFailed(.edit)) + errorReported.fulfill() + })) + + XCTAssert(model.isNew) + model.bookmark.uuid = nil + model.save() + + waitForExpectations(timeout: 1) + } +} diff --git a/DuckDuckGoTests/BookmarkFaviconUpdaterTests.swift b/DuckDuckGoTests/BookmarkFaviconUpdaterTests.swift new file mode 100644 index 0000000000..89c7b2d0c6 --- /dev/null +++ b/DuckDuckGoTests/BookmarkFaviconUpdaterTests.swift @@ -0,0 +1,146 @@ +// +// BookmarkFaviconUpdaterTests.swift +// DuckDuckGo +// +// Copyright © 2022 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation +import XCTest +@testable import DuckDuckGo +import Persistence +import Core +import Bookmarks + +class BookmarkFaviconUpdaterTests: XCTestCase, TabNotifying, FaviconProviding { + + var db: CoreDataDatabase! + + var didUpdateFaviconCalled = false + var replaceFaviconCalled = false + + var loadFaviconDomain: String? + var loadFaviconURL: URL? + var loadFaviconCache: Favicons.CacheType? + + var image: UIImage? + + override func setUpWithError() throws { + try super.setUpWithError() + + let model = CoreDataDatabase.loadModel(from: Bookmarks.bundle, named: "BookmarksModel")! + + db = CoreDataDatabase(name: "Test", containerLocation: tempDBDir(), model: model) + db.loadStore() + + let context = db.makeContext(concurrencyType: .mainQueueConcurrencyType) + BookmarkUtils.prepareFoldersStructure(in: context) + try context.save() + } + + override func tearDownWithError() throws { + try super.tearDownWithError() + try db.tearDown(deleteStores: true) + } + + func testWhenBookmarkDoesNotExist_ThenImageNotReplacement() { + let updater = BookmarkFaviconUpdater(bookmarksDatabase: db, tab: self, favicons: self) + updater.faviconUserScript(FaviconUserScript(), didRequestUpdateFaviconForHost: "example.com", withUrl: nil) + + XCTAssertEqual(loadFaviconDomain, "example.com") + XCTAssertEqual(loadFaviconURL, nil) + XCTAssertEqual(loadFaviconCache, .tabs) + + XCTAssertTrue(didUpdateFaviconCalled) + XCTAssertFalse(replaceFaviconCalled) + } + + func testWhenBookmarkExistsButNoImage_ThenImageNotReplacement() throws { + try createBookmark() + + let updater = BookmarkFaviconUpdater(bookmarksDatabase: db, tab: self, favicons: self) + updater.faviconUserScript(FaviconUserScript(), didRequestUpdateFaviconForHost: "example.com", withUrl: nil) + + XCTAssertEqual(loadFaviconDomain, "example.com") + XCTAssertEqual(loadFaviconURL, nil) + XCTAssertEqual(loadFaviconCache, .tabs) + + XCTAssertTrue(didUpdateFaviconCalled) + XCTAssertFalse(replaceFaviconCalled) + } + + func testWhenBookmarkExistsButAnddImageExists_ThenImageIsReplaced() throws { + try createBookmark() + + image = UIImage() + let url = URL(string: "https://example.com/favicon.ico")! + + let updater = BookmarkFaviconUpdater(bookmarksDatabase: db, tab: self, favicons: self) + updater.faviconUserScript(FaviconUserScript(), didRequestUpdateFaviconForHost: "example.com", withUrl: url) + + XCTAssertEqual(loadFaviconDomain, "example.com") + XCTAssertEqual(loadFaviconURL, url) + XCTAssertEqual(loadFaviconCache, .tabs) + + XCTAssertTrue(didUpdateFaviconCalled) + XCTAssertTrue(replaceFaviconCalled) + } + + func testWhenBookmarkExistsWithWWWPrefixButAnddImageExists_ThenImageIsReplaced() throws { + try createBookmark() + + image = UIImage() + let url = URL(string: "https://example.com/favicon.ico")! + + let updater = BookmarkFaviconUpdater(bookmarksDatabase: db, tab: self, favicons: self) + updater.faviconUserScript(FaviconUserScript(), didRequestUpdateFaviconForHost: "www.example.com", withUrl: url) + + XCTAssertEqual(loadFaviconDomain, "www.example.com") + XCTAssertEqual(loadFaviconURL, url) + XCTAssertEqual(loadFaviconCache, .tabs) + + XCTAssertTrue(didUpdateFaviconCalled) + XCTAssertTrue(replaceFaviconCalled) + } + + func didUpdateFavicon() { + didUpdateFaviconCalled = true + } + + func loadFavicon(forDomain domain: String, fromURL url: URL?, intoCache cacheType: Favicons.CacheType, completion: ((UIImage?) -> Void)?) { + loadFaviconDomain = domain + loadFaviconURL = url + loadFaviconCache = cacheType + completion?(image) + } + + func replaceBookmarksFavicon(forDomain domain: String?, withImage: UIImage) { + replaceFaviconCalled = true + } + + func createBookmark() throws { + let context = db.makeContext(concurrencyType: .mainQueueConcurrencyType) + guard let root = BookmarkUtils.fetchRootFolder(context) else { + fatalError("failed to fetch root folder") + } + _ = BookmarkEntity.makeBookmark(title: "Test", url: "https://www.example.com", parent: root, context: context) + try context.save() + } + +} + +func tempDBDir() -> URL { + FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString) +} diff --git a/DuckDuckGoTests/BookmarkListViewModelTests.swift b/DuckDuckGoTests/BookmarkListViewModelTests.swift new file mode 100644 index 0000000000..8b391b9737 --- /dev/null +++ b/DuckDuckGoTests/BookmarkListViewModelTests.swift @@ -0,0 +1,309 @@ +// +// BookmarkListViewModelTests.swift +// +// Copyright © 2021 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import XCTest +import CoreData +import Common +import Persistence +import Bookmarks +import DuckDuckGo + +private extension BookmarkListViewModel { + + convenience init(bookmarksDatabase: CoreDataDatabase, + parentID: NSManagedObjectID?) { + self.init(bookmarksDatabase: bookmarksDatabase, + parentID: parentID, + errorEvents: .init(mapping: { event, _, _, _ in + XCTFail("Unexpected error: \(event)") + })) + } +} + +class BookmarkListViewModelTests: XCTestCase { + + var db: CoreDataDatabase! + var mainContext: NSManagedObjectContext! + + override func setUpWithError() throws { + try super.setUpWithError() + + let model = CoreDataDatabase.loadModel(from: Bookmarks.bundle, named: "BookmarksModel")! + + db = CoreDataDatabase(name: "Test", containerLocation: tempDBDir(), model: model) + db.loadStore() + + self.mainContext = db.makeContext(concurrencyType: .mainQueueConcurrencyType, name: "TestContext") + BasicBookmarksStructure.populateDB(context: mainContext) + } + + override func tearDownWithError() throws { + try super.tearDownWithError() + + mainContext.reset() + mainContext = nil + + try db.tearDown(deleteStores: true) + } + + func testWhenFolderIsSetThenBookmarksFetchedFromThatLocation() { + + let viewModel = BookmarkListViewModel(bookmarksDatabase: db, + parentID: nil) + let context = db.makeContext(concurrencyType: .mainQueueConcurrencyType) + XCTAssertNotNil(viewModel.currentFolder?.objectID) + XCTAssertEqual(viewModel.currentFolder?.objectID, BookmarkUtils.fetchRootFolder(context)?.objectID) + let result = viewModel.bookmarks + + XCTAssertEqual(result[1], viewModel.bookmark(at: 1)) + + let names = result.map { $0.title } + XCTAssertEqual(names, BasicBookmarksStructure.topLevelTitles) + + let nestedViewModel = BookmarkListViewModel(bookmarksDatabase: db, + parentID: result[1].objectID) + XCTAssertEqual(nestedViewModel.currentFolder?.objectID, result[1].objectID) + + let result2 = nestedViewModel.bookmarks + + let names2 = result2.map { $0.title } + XCTAssertEqual(names2, BasicBookmarksStructure.nestedTitles) + } + + func testWhenDeletingABookmarkItIsRemoved() { + + let viewModel = BookmarkListViewModel(bookmarksDatabase: db, + parentID: nil) + let result = viewModel.bookmarks + let idSet = Set(result.map { $0.objectID }) + + let bookmark = result[0] + XCTAssertFalse(bookmark.isFolder) + + viewModel.deleteBookmark(bookmark) + + let newViewModel = BookmarkListViewModel(bookmarksDatabase: db, + parentID: nil) + let newResult = newViewModel.bookmarks + let newIdSet = Set(newResult.map { $0.objectID }) + + let diff = idSet.subtracting(newIdSet) + + XCTAssertEqual(diff.count, 1) + XCTAssert(diff.contains(bookmark.objectID)) + } + + func testWhenDeletingABookmarkFolderItIsRemovedWithContents() { + + let viewModel = BookmarkListViewModel(bookmarksDatabase: db, + parentID: nil) + let result = viewModel.bookmarks + let idSet = Set(result.map { $0.objectID }) + + let folder = result[1] + XCTAssert(folder.isFolder) + + let totalCount = viewModel.totalBookmarksCount + let expectedCountAfterRemoval = totalCount - folder.childrenArray.filter { !$0.isFolder }.count + + viewModel.deleteBookmark(folder) + + let newViewModel = BookmarkListViewModel(bookmarksDatabase: db, + parentID: nil) + let newResult = newViewModel.bookmarks + let newIdSet = Set(newResult.map { $0.objectID }) + + let diff = idSet.subtracting(newIdSet) + + XCTAssertEqual(diff.count, 1) + XCTAssertEqual(newViewModel.totalBookmarksCount, expectedCountAfterRemoval) + XCTAssert(diff.contains(folder.objectID)) + } + + func testWhenGettingTotalCountThenFoldersAreNotTakenIntoAccount() { + + let viewModel = BookmarkListViewModel(bookmarksDatabase: db, + parentID: nil) + + XCTAssertEqual(viewModel.totalBookmarksCount, 5) + } + + func testWhenMovingBookmarkItGoesToNewPosition() { + + let viewModel = BookmarkListViewModel(bookmarksDatabase: db, + parentID: nil) + let result = viewModel.bookmarks + + let first = result[0] + let second = result[1] + + viewModel.moveBookmark(first, + fromIndex: 0, + toIndex: 1) + + let newViewModel = BookmarkListViewModel(bookmarksDatabase: db, + parentID: nil) + let newResult = newViewModel.bookmarks + let newFirst = newResult[0] + let newSecond = newResult[1] + + XCTAssertEqual(first.objectID, newSecond.objectID) + XCTAssertEqual(second.objectID, newFirst.objectID) + XCTAssertEqual(result.count, newResult.count) + } + + func testWhenContextSavesThenChangesArePropagated() { + + let viewModel = BookmarkListViewModel(bookmarksDatabase: db, + parentID: nil) + let listeningViewModel = BookmarkListViewModel(bookmarksDatabase: db, + parentID: nil) + + let expectation = expectation(description: "Changes propagated") + + withExtendedLifetime(listeningViewModel.externalUpdates.sink { _ in + expectation.fulfill() + }) { + let startState = viewModel.bookmarks + viewModel.deleteBookmark(startState[0]) + + waitForExpectations(timeout: 1) + + let otherResults = listeningViewModel.bookmarks + XCTAssertEqual(otherResults.count + 1, startState.count) + XCTAssertEqual(otherResults.count, viewModel.bookmarks.count) + } + } + + // MARK: Errors + + func testWhenUsingWrongIndexesNothingHappens() { + + var expectedEvents: [BookmarksModelError] = [.bookmarksListIndexNotMatchingBookmark, + .indexOutOfRange(.bookmarks), + .indexOutOfRange(.bookmarks)].reversed() + + let expectation = expectation(description: "Errors reported") + expectation.expectedFulfillmentCount = 3 + let viewModel = BookmarkListViewModel(bookmarksDatabase: db, + parentID: nil, + errorEvents: .init(mapping: { event, _, _, _ in + let expectedEvent = expectedEvents.popLast() + XCTAssertEqual(event, expectedEvent) + expectation.fulfill() + })) + + let result = viewModel.bookmarks + + let first = result[0] + let second = result[1] + + // Wrong indexes + viewModel.moveBookmark(first, + fromIndex: 1, + toIndex: 0) + + // Out of bounds `from` + viewModel.moveBookmark(first, + fromIndex: 10, + toIndex: 1) + + // Out of bounds `to` + viewModel.moveBookmark(first, + fromIndex: 0, + toIndex: 10) + + let newViewModel = BookmarkListViewModel(bookmarksDatabase: db, + parentID: nil) + let newResult = newViewModel.bookmarks + let newFirst = newResult[0] + let newSecond = newResult[1] + + XCTAssertEqual(first.objectID, newFirst.objectID) + XCTAssertEqual(second.objectID, newSecond.objectID) + XCTAssertEqual(result.count, newResult.count) + + waitForExpectations(timeout: 1) + } + + func testWhenFolderIsNotAFolderThenErrorIsReported() { + + let viewModel = BookmarkListViewModel(bookmarksDatabase: db, + parentID: nil) + + let result = viewModel.bookmarks + let bookmark = result[0] + XCTAssertFalse(bookmark.isFolder) + + let errorReported = expectation(description: "Error reported") + let brokenViewModel = BookmarkListViewModel(bookmarksDatabase: db, + parentID: bookmark.objectID, + errorEvents: .init(mapping: { event, _, _, _ in + errorReported.fulfill() + XCTAssertEqual(event, .bookmarkFolderExpected) + })) + + XCTAssertEqual(brokenViewModel.bookmarks.map { $0.objectID }, viewModel.bookmarks.map { $0.objectID }) + + waitForExpectations(timeout: 1) + } + + func testWhenFolderIsMissingThenErrorIsReported() { + + let viewModel = BookmarkListViewModel(bookmarksDatabase: db, + parentID: nil) + + let result = viewModel.bookmarks + let bookmark = result[0] + XCTAssertFalse(bookmark.isFolder) + + // Create local object: + let context = db.makeContext(concurrencyType: .mainQueueConcurrencyType) + let tmpFolder = BookmarkEntity.makeFolder(title: "tmp", + parent: BookmarkUtils.fetchRootFolder(context)!, + context: context) + + let errorReported = expectation(description: "Error reported") + let brokenViewModel = BookmarkListViewModel(bookmarksDatabase: db, + parentID: tmpFolder.objectID, + errorEvents: .init(mapping: { event, _, _, _ in + errorReported.fulfill() + XCTAssertEqual(event, .bookmarksListMissingFolder) + })) + + XCTAssertEqual(brokenViewModel.bookmarks.map { $0.objectID }, viewModel.bookmarks.map { $0.objectID }) + + waitForExpectations(timeout: 1) + } + + func testWhenRootIsMissingThenErrorIsReported() throws { + let context = db.makeContext(concurrencyType: .mainQueueConcurrencyType) + context.deleteAll(entityDescriptions: [BookmarkEntity.entity(in: context)]) + try context.save() + + let expectation = expectation(description: "Error reported") + _ = BookmarkListViewModel(bookmarksDatabase: db, + parentID: nil, + errorEvents: .init(mapping: { event, _, _, _ in + XCTAssertEqual(event, .fetchingRootItemFailed(.bookmarks)) + expectation.fulfill() + })) + + waitForExpectations(timeout: 1) + } +} diff --git a/DuckDuckGoTests/BookmarkOrFolderTests.swift b/DuckDuckGoTests/BookmarkOrFolderTests.swift index 0d8e165f45..755c58e58f 100644 --- a/DuckDuckGoTests/BookmarkOrFolderTests.swift +++ b/DuckDuckGoTests/BookmarkOrFolderTests.swift @@ -18,7 +18,7 @@ // import XCTest -@testable import Core +import Bookmarks class BookmarkOrFolderTests: XCTestCase { diff --git a/DuckDuckGoTests/BookmarkUtilsTests.swift b/DuckDuckGoTests/BookmarkUtilsTests.swift new file mode 100644 index 0000000000..b704fa0b61 --- /dev/null +++ b/DuckDuckGoTests/BookmarkUtilsTests.swift @@ -0,0 +1,64 @@ +// +// BookmarkUtilsTests.swift +// +// Copyright © 2021 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import XCTest +import Persistence +import CoreData +import Bookmarks +import DuckDuckGo + +class BookmarkUtilsTests: XCTestCase { + + var db: CoreDataDatabase! + + override func setUpWithError() throws { + try super.setUpWithError() + let model = CoreDataDatabase.loadModel(from: Bookmarks.bundle, named: "BookmarksModel")! + + db = CoreDataDatabase(name: "Test", containerLocation: tempDBDir(), model: model) + db.loadStore() + } + + override func tearDownWithError() throws { + try super.tearDownWithError() + + try db.tearDown(deleteStores: true) + } + + func testWhenStructureIsEmptyThenItIsPrepared() throws { + + let context = db.makeContext(concurrencyType: .mainQueueConcurrencyType, name: "Test") + + let countRequest = NSFetchRequest(entityName: "BookmarkEntity") + countRequest.predicate = NSPredicate(value: true) + + var count = try context.count(for: countRequest) + XCTAssertEqual(count, 0) + + BookmarkUtils.prepareFoldersStructure(in: context) + + count = try context.count(for: countRequest) + XCTAssertEqual(count, 2) + + BookmarkUtils.prepareFoldersStructure(in: context) + + count = try context.count(for: countRequest) + XCTAssertEqual(count, 2) + } + +} diff --git a/DuckDuckGoTests/BookmarksCachingSearchTests.swift b/DuckDuckGoTests/BookmarksCachingSearchTests.swift index b5cd342014..7885ce8e8e 100644 --- a/DuckDuckGoTests/BookmarksCachingSearchTests.swift +++ b/DuckDuckGoTests/BookmarksCachingSearchTests.swift @@ -19,49 +19,33 @@ import XCTest import CoreData +import Combine +import Bookmarks @testable import Core -class MockBookmarkSearchStore: BookmarksSearchStore { - var hasData: Bool { - return true - } - - func bookmarksAndFavorites(completion: @escaping ([Bookmark]) -> Void) { - completion(bookmarks + favorites) - } +public class MockBookmarksSearchStore: BookmarksSearchStore { - var bookmarks = [Bookmark]() - var favorites = [Bookmark]() -} + let subject = PassthroughSubject() + public var dataDidChange: AnyPublisher -class MockBookmark: Bookmark { - - var title: String? - var url: URL? - var isFavorite: Bool + var dataSet = [BookmarksCachingSearch.ScoredBookmark]() - init(title: String, url: URL, isFavorite: Bool) { - self.title = title - self.url = url - self.isFavorite = isFavorite + init() { + dataDidChange = subject.eraseToAnyPublisher() } - var objectID: NSManagedObjectID { - fatalError("objectID should exist") + public func bookmarksAndFavorites(completion: @escaping ([BookmarksCachingSearch.ScoredBookmark]) -> Void) { + completion(dataSet) } - - var parentFolder: BookmarkFolder? } class BookmarksCachingSearchTests: XCTestCase { - + let url = URL(string: "http://duckduckgo.com")! - let simpleStore = MockBookmarkSearchStore() - let urlStore = MockBookmarkSearchStore() - - private var storage: MockBookmarksCoreDataStore! + let simpleStore = MockBookmarksSearchStore() + let urlStore = MockBookmarksSearchStore() enum Entry: String { case b1 = "bookmark test 1" @@ -79,281 +63,175 @@ class BookmarksCachingSearchTests: XCTestCase { case urlDDG = "Test D 1" } + private var mockObjectID: NSManagedObjectID! + private var inMemoryStore: NSPersistentContainer! + override func setUp() { super.setUp() - simpleStore.bookmarks = [MockBookmark(title: Entry.b1.rawValue, url: url, isFavorite: false), - MockBookmark(title: Entry.b2.rawValue, url: url, isFavorite: false), - MockBookmark(title: Entry.b12.rawValue, url: url, isFavorite: false), - MockBookmark(title: Entry.b12a.rawValue, url: url, isFavorite: false)] - - simpleStore.favorites = [MockBookmark(title: Entry.f1.rawValue, url: url, isFavorite: true), - MockBookmark(title: Entry.f2.rawValue, url: url, isFavorite: true), - MockBookmark(title: Entry.f12.rawValue, url: url, isFavorite: true), - MockBookmark(title: Entry.f12a.rawValue, url: url, isFavorite: true)] - - urlStore.favorites = [ - MockBookmark(title: Entry.urlExample1.rawValue, url: URL(string: "https://example.com")!, isFavorite: true), - MockBookmark(title: Entry.urlExample2.rawValue, url: URL(string: "https://example.com")!, isFavorite: true), - MockBookmark(title: Entry.urlNasa.rawValue, url: URL(string: "https://www.nasa.gov")!, isFavorite: true), - MockBookmark(title: Entry.urlDDG.rawValue, url: url, isFavorite: true)] - - storage = MockBookmarksCoreDataStore() - _ = BookmarksCoreDataStorage.rootFolderManagedObject(storage.viewContext) - _ = BookmarksCoreDataStorage.rootFavoritesFolderManagedObject(storage.viewContext) - storage.saveContext() - storage.loadStoreAndCaches { _ in } - } - - func testWhenSearchingThenOnlyBeginingsOfWordsAreMatched() throws { - - let engine = BookmarksCachingSearch(bookmarksStore: simpleStore) - let expectations = [ - expectation(description: "test for correct number of search results"), - expectation(description: "test for correct number of search results"), - expectation(description: "test for correct number of search results"), - expectation(description: "test for correct number of search results"), - expectation(description: "test for correct number of search results"), - expectation(description: "test for correct number of search results")] - - engine.search(query: "t") { bookmarks in - XCTAssertEqual(bookmarks.count, 8) - expectations[0].fulfill() - } - engine.search(query: "b") { bookmarks in - XCTAssertEqual(bookmarks.count, 4) - expectations[1].fulfill() - } - engine.search(query: "1") { bookmarks in - XCTAssertEqual(bookmarks.count, 6) - expectations[2].fulfill() - } - engine.search(query: "a") { bookmarks in - XCTAssertEqual(bookmarks.count, 2) - expectations[3].fulfill() - } - engine.search(query: "k") { bookmarks in - XCTAssertEqual(bookmarks.count, 0) - expectations[4].fulfill() - } - engine.search(query: "e") { bookmarks in - XCTAssertEqual(bookmarks.count, 0) - expectations[5].fulfill() - } - - waitForExpectations(timeout: 5) + inMemoryStore = CoreData.createInMemoryPersistentContainer(modelName: "BookmarksModel", + bundle: Bookmarks.bundle) + BookmarkUtils.prepareFoldersStructure(in: inMemoryStore.viewContext) + mockObjectID = BookmarkUtils.fetchRootFolder(inMemoryStore.viewContext)?.objectID + XCTAssertNotNil(mockObjectID) + + simpleStore.dataSet = [BookmarksCachingSearch.ScoredBookmark(objectID: mockObjectID, title: Entry.b1.rawValue, url: url, isFavorite: false), + BookmarksCachingSearch.ScoredBookmark(objectID: mockObjectID, title: Entry.b2.rawValue, url: url, isFavorite: false), + BookmarksCachingSearch.ScoredBookmark(objectID: mockObjectID, title: Entry.b12.rawValue, url: url, isFavorite: false), + BookmarksCachingSearch.ScoredBookmark(objectID: mockObjectID, title: Entry.b12a.rawValue, url: url, isFavorite: false), + BookmarksCachingSearch.ScoredBookmark(objectID: mockObjectID, title: Entry.f1.rawValue, url: url, isFavorite: true), + BookmarksCachingSearch.ScoredBookmark(objectID: mockObjectID, title: Entry.f2.rawValue, url: url, isFavorite: true), + BookmarksCachingSearch.ScoredBookmark(objectID: mockObjectID, title: Entry.f12.rawValue, url: url, isFavorite: true), + BookmarksCachingSearch.ScoredBookmark(objectID: mockObjectID, title: Entry.f12a.rawValue, url: url, isFavorite: true)] + + urlStore.dataSet = [ + BookmarksCachingSearch.ScoredBookmark(objectID: mockObjectID, title: Entry.urlExample1.rawValue, url: URL(string: "https://example.com")!, isFavorite: true), + BookmarksCachingSearch.ScoredBookmark(objectID: mockObjectID, title: Entry.urlExample2.rawValue, url: URL(string: "https://example.com")!, isFavorite: true), + BookmarksCachingSearch.ScoredBookmark(objectID: mockObjectID, title: Entry.urlNasa.rawValue, url: URL(string: "https://www.nasa.gov")!, isFavorite: true), + BookmarksCachingSearch.ScoredBookmark(objectID: mockObjectID, title: Entry.urlDDG.rawValue, url: url, isFavorite: true)] } - func testWhenSearchingThenBeginingOfTitlesArePromoted() throws { + override func tearDown() { + mockObjectID = nil + inMemoryStore = nil + super.tearDown() + } + + func testWhenSearchingThenOnlyBeginingsOfWordsAreMatched() async throws { + let engine = BookmarksCachingSearch(bookmarksStore: simpleStore) - let expectation1 = expectation(description: "t") - engine.search(query: "t") { resultSingleLetter in - XCTAssertEqual(resultSingleLetter[0].title, Entry.f2.rawValue) - XCTAssertEqual(resultSingleLetter[1].title, Entry.f12a.rawValue) - - XCTAssertEqual(resultSingleLetter[2].title, Entry.b2.rawValue) - XCTAssertEqual(resultSingleLetter[3].title, Entry.b12a.rawValue) - - XCTAssertEqual(resultSingleLetter[4].title, Entry.f1.rawValue) - XCTAssertEqual(resultSingleLetter[5].title, Entry.f12.rawValue) - - XCTAssertEqual(resultSingleLetter[6].title, Entry.b1.rawValue) - XCTAssertEqual(resultSingleLetter[7].title, Entry.b12.rawValue) - - expectation1.fulfill() - } - - let expectation2 = expectation(description: "tes") - engine.search(query: "tes") { resultWord in - - XCTAssertEqual(resultWord[0].title, Entry.f2.rawValue) - XCTAssertEqual(resultWord[1].title, Entry.f12a.rawValue) - - XCTAssertEqual(resultWord[2].title, Entry.b2.rawValue) - XCTAssertEqual(resultWord[3].title, Entry.b12a.rawValue) - - XCTAssertEqual(resultWord[4].title, Entry.f1.rawValue) - XCTAssertEqual(resultWord[5].title, Entry.f12.rawValue) - - XCTAssertEqual(resultWord[6].title, Entry.b1.rawValue) - XCTAssertEqual(resultWord[7].title, Entry.b12.rawValue) - - expectation2.fulfill() - } - - let expectation3 = expectation(description: "bookmark") - engine.search(query: "bookmark") { resultFullWord in + var bookmarks = engine.search(query: "t") + XCTAssertEqual(bookmarks.count, 8) - XCTAssertEqual(resultFullWord[0].title, Entry.b1.rawValue) - XCTAssertEqual(resultFullWord[1].title, Entry.b12.rawValue) - XCTAssertEqual(resultFullWord[2].title, Entry.b2.rawValue) - XCTAssertEqual(resultFullWord[3].title, Entry.b12a.rawValue) - - expectation3.fulfill() - } + bookmarks = engine.search(query: "b") + XCTAssertEqual(bookmarks.count, 4) - let expectation4 = expectation(description: "tes fav") - engine.search(query: "tes fav") { resultSentence in + bookmarks = engine.search(query: "1") + XCTAssertEqual(bookmarks.count, 6) - XCTAssertEqual(resultSentence[0].title, Entry.f2.rawValue) - XCTAssertEqual(resultSentence[1].title, Entry.f12a.rawValue) - XCTAssertEqual(resultSentence[2].title, Entry.f1.rawValue) - XCTAssertEqual(resultSentence[3].title, Entry.f12.rawValue) - - expectation4.fulfill() - } + bookmarks = engine.search(query: "a") + XCTAssertEqual(bookmarks.count, 2) + + bookmarks = engine.search(query: "k") + XCTAssertEqual(bookmarks.count, 0) - waitForExpectations(timeout: 5) + bookmarks = engine.search(query: "e") + XCTAssertEqual(bookmarks.count, 0) } - func testWhenSearchingFullStringThenExactMatchesAreFirst() throws { - + func testWhenSearchingThenBeginingOfTitlesArePromoted() async throws { let engine = BookmarksCachingSearch(bookmarksStore: simpleStore) - let expectation1 = expectation(description: "fav 1") - engine.search(query: "fav 1") { result in + let resultSingleLetter = engine.search(query: "t") + XCTAssertEqual(resultSingleLetter[0].title, Entry.f2.rawValue) + XCTAssertEqual(resultSingleLetter[1].title, Entry.f12a.rawValue) - XCTAssertEqual(result.count, 3) - XCTAssertEqual(result[0].title, Entry.f12a.rawValue) - XCTAssertEqual(result[1].title, Entry.f1.rawValue) - XCTAssertEqual(result[2].title, Entry.f12.rawValue) - - expectation1.fulfill() - } + XCTAssertEqual(resultSingleLetter[2].title, Entry.b2.rawValue) + XCTAssertEqual(resultSingleLetter[3].title, Entry.b12a.rawValue) - waitForExpectations(timeout: 5) - } - - func testWhenSearchingThenFavoritesAreFirst() throws { + XCTAssertEqual(resultSingleLetter[4].title, Entry.f1.rawValue) + XCTAssertEqual(resultSingleLetter[5].title, Entry.f12.rawValue) - let engine = BookmarksCachingSearch(bookmarksStore: simpleStore) + XCTAssertEqual(resultSingleLetter[6].title, Entry.b1.rawValue) + XCTAssertEqual(resultSingleLetter[7].title, Entry.b12.rawValue) + + + let resultWord = engine.search(query: "tes") - let expectation1 = expectation(description: "1") - engine.search(query: "1") { result in - XCTAssertEqual(result.count, 6) - XCTAssertEqual(result[0].title, Entry.f1.rawValue) - XCTAssertEqual(result[1].title, Entry.f12.rawValue) - XCTAssertEqual(result[2].title, Entry.f12a.rawValue) - XCTAssertEqual(result[3].title, Entry.b1.rawValue) - XCTAssertEqual(result[4].title, Entry.b12.rawValue) - XCTAssertEqual(result[5].title, Entry.b12a.rawValue) - - expectation1.fulfill() - } + XCTAssertEqual(resultWord[0].title, Entry.f2.rawValue) + XCTAssertEqual(resultWord[1].title, Entry.f12a.rawValue) - waitForExpectations(timeout: 5) - } - - func testWhenSearchingMultipleWordsThenAllMustBeFound() throws { + XCTAssertEqual(resultWord[2].title, Entry.b2.rawValue) + XCTAssertEqual(resultWord[3].title, Entry.b12a.rawValue) - let engine = BookmarksCachingSearch(bookmarksStore: simpleStore) + XCTAssertEqual(resultWord[4].title, Entry.f1.rawValue) + XCTAssertEqual(resultWord[5].title, Entry.f12.rawValue) - let expectation1 = expectation(description: "te bo") - engine.search(query: "te bo") { result in - XCTAssertEqual(result.count, 4) - // Prioritize if first word match the begining of the title - XCTAssertEqual(result[0].title, Entry.b2.rawValue) - XCTAssertEqual(result[1].title, Entry.b12a.rawValue) - XCTAssertEqual(result[2].title, Entry.b1.rawValue) - XCTAssertEqual(result[3].title, Entry.b12.rawValue) + XCTAssertEqual(resultWord[6].title, Entry.b1.rawValue) + XCTAssertEqual(resultWord[7].title, Entry.b12.rawValue) - expectation1.fulfill() - } + let resultFullWord = engine.search(query: "bookmark") + + XCTAssertEqual(resultFullWord[0].title, Entry.b1.rawValue) + XCTAssertEqual(resultFullWord[1].title, Entry.b12.rawValue) + XCTAssertEqual(resultFullWord[2].title, Entry.b2.rawValue) + XCTAssertEqual(resultFullWord[3].title, Entry.b12a.rawValue) + + let resultSentence = engine.search(query: "tes fav") - waitForExpectations(timeout: 5) + XCTAssertEqual(resultSentence[0].title, Entry.f2.rawValue) + XCTAssertEqual(resultSentence[1].title, Entry.f12a.rawValue) + XCTAssertEqual(resultSentence[2].title, Entry.f1.rawValue) + XCTAssertEqual(resultSentence[3].title, Entry.f12.rawValue) } - func testWhenSearchingThenNotFindingAnythingIsAlsoValid() throws { + func testWhenSearchingFullStringThenExactMatchesAreFirst() async throws { + let engine = BookmarksCachingSearch(bookmarksStore: simpleStore) + + let result = engine.search(query: "fav 1") + XCTAssertEqual(result.count, 3) + XCTAssertEqual(result[0].title, Entry.f12a.rawValue) + XCTAssertEqual(result[1].title, Entry.f1.rawValue) + XCTAssertEqual(result[2].title, Entry.f12.rawValue) + } + + func testWhenSearchingThenFavoritesAreFirst() async throws { let engine = BookmarksCachingSearch(bookmarksStore: simpleStore) - let expectation1 = expectation(description: "testing") - engine.search(query: "testing") { result in - XCTAssertEqual(result.count, 0) - - expectation1.fulfill() - } + let result = engine.search(query: "1") + XCTAssertEqual(result.count, 6) + XCTAssertEqual(result[0].title, Entry.f1.rawValue) + XCTAssertEqual(result[1].title, Entry.f12.rawValue) + XCTAssertEqual(result[2].title, Entry.f12a.rawValue) + XCTAssertEqual(result[3].title, Entry.b1.rawValue) + XCTAssertEqual(result[4].title, Entry.b12.rawValue) + XCTAssertEqual(result[5].title, Entry.b12a.rawValue) + } + + func testWhenSearchingMultipleWordsThenAllMustBeFound() async throws { + let engine = BookmarksCachingSearch(bookmarksStore: simpleStore) - waitForExpectations(timeout: 5) + let result = engine.search(query: "te bo") + XCTAssertEqual(result.count, 4) + // Prioritize if first word match the beginning of the title + XCTAssertEqual(result[0].title, Entry.b2.rawValue) + XCTAssertEqual(result[1].title, Entry.b12a.rawValue) + XCTAssertEqual(result[2].title, Entry.b1.rawValue) + XCTAssertEqual(result[3].title, Entry.b12.rawValue) } - func testWhenMatchingURLThenDomainMatchesArePromoted() throws { + func testWhenSearchingThenNotFindingAnythingIsAlsoValid() async throws { + let engine = BookmarksCachingSearch(bookmarksStore: simpleStore) + let result = engine.search(query: "testing") + XCTAssertEqual(result.count, 0) + } + + func testWhenMatchingURLThenDomainMatchesArePromoted() async throws { let engine = BookmarksCachingSearch(bookmarksStore: urlStore) - let expectation1 = expectation(description: "exam") - engine.search(query: "exam") { result in - XCTAssertEqual(result.count, 2) - XCTAssertEqual(result[0].title, Entry.urlExample1.rawValue) - XCTAssertEqual(result[1].title, Entry.urlExample2.rawValue) - - expectation1.fulfill() - } - - let expectation2 = expectation(description: "exam 2") - engine.search(query: "exam 2") { result2 in - - XCTAssertEqual(result2.count, 1) - XCTAssertEqual(result2[0].title, Entry.urlExample2.rawValue) - - expectation2.fulfill() - } - - let expectation3 = expectation(description: "test") - engine.search(query: "test") { result3 in + let result = engine.search(query: "exam") + XCTAssertEqual(result.count, 2) + XCTAssertEqual(result[0].title, Entry.urlExample1.rawValue) + XCTAssertEqual(result[1].title, Entry.urlExample2.rawValue) - XCTAssertEqual(result3.count, 4) + let result2 = engine.search(query: "exam 2") + + XCTAssertEqual(result2.count, 1) + XCTAssertEqual(result2[0].title, Entry.urlExample2.rawValue) - expectation3.fulfill() - } + let result3 = engine.search(query: "test") - let expectation4 = expectation(description: "duck") - engine.search(query: "duck") { result4 in + XCTAssertEqual(result3.count, 4) - XCTAssertEqual(result4.count, 2) - XCTAssertEqual(result4[0].title, Entry.urlDDG.rawValue) - XCTAssertEqual(result4[1].title, Entry.urlNasa.rawValue) - - expectation4.fulfill() - } + let result4 = engine.search(query: "duck") - waitForExpectations(timeout: 5) - } - - func testWhenBookmarkExistsThenContainsDomain() throws { - let engineUrlStore = BookmarksCachingSearch(bookmarksStore: urlStore) - XCTAssertTrue(engineUrlStore.containsDomain("duckduckgo.com")) - - let engineSimpleStore = BookmarksCachingSearch(bookmarksStore: simpleStore) - XCTAssertTrue(engineSimpleStore.containsDomain("duckduckgo.com")) - } - - func testWhenBookmarkSavedThenContainsDomain() async throws { - let bookmarksCachingSearch = BookmarksCachingSearch(bookmarksStore: storage) - - guard let topLevelBookMarksFolder = storage.topLevelBookmarksFolder else { - XCTFail("must have topLevelBookMarkFolder") - return - } - - let managedObjectID = try await storage.saveNewBookmark(withTitle: Constants.bookmarkTitle, - url: Constants.bookmarkURL, - parentID: topLevelBookMarksFolder.objectID) - XCTAssertNotNil(managedObjectID) - - guard let bookmarkManagedObject = await storage.bookmark(forURL: Constants.bookmarkURL) else { - XCTFail("bookmark should exist") - return - } - - XCTAssertNotNil(bookmarkManagedObject) - XCTAssertEqual(bookmarkManagedObject.title, Constants.bookmarkTitle) - XCTAssertEqual(bookmarkManagedObject.parentFolder?.objectID, topLevelBookMarksFolder.objectID) - XCTAssertEqual(bookmarkManagedObject.url, Constants.bookmarkURL) - - XCTAssertTrue(bookmarksCachingSearch.containsDomain("www.apple.com")) + XCTAssertEqual(result4.count, 2) + XCTAssertEqual(result4[0].title, Entry.urlDDG.rawValue) + XCTAssertEqual(result4[1].title, Entry.urlNasa.rawValue) } } diff --git a/DuckDuckGoTests/BookmarksCoreDataFixTests.swift b/DuckDuckGoTests/BookmarksCoreDataFixTests.swift deleted file mode 100644 index cc00f80af7..0000000000 --- a/DuckDuckGoTests/BookmarksCoreDataFixTests.swift +++ /dev/null @@ -1,165 +0,0 @@ -// -// BookmarksCoreDataFixTests.swift -// DuckDuckGo -// -// Copyright © 2022 DuckDuckGo. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import XCTest -import CoreData -@testable import Core - -class BookmarksCoreDataFixTests: XCTestCase { - private var storage: MockBookmarksCoreDataStore! - - override func setUpWithError() throws { - try super.setUpWithError() - storage = MockBookmarksCoreDataStore() - storage.saveContext() - } - - override func tearDownWithError() throws { - storage = nil - - try super.tearDownWithError() - } - - - func test_WhenThereAreMultipleBookmarksOrphanedFolder_ThenTheyAreDeleted() { - _ = BookmarksCoreDataStorage.rootFolderManagedObject(storage.viewContext) - _ = BookmarksCoreDataStorage.rootFolderManagedObject(storage.viewContext) - _ = BookmarksCoreDataStorage.rootFolderManagedObject(storage.viewContext) - - let expectedExceedingCount = 3 - let expectedFinalCount = 1 - - let fetchRequest = NSFetchRequest(entityName: "BookmarkFolderManagedObject") - fetchRequest.predicate = NSPredicate(format: "%K == nil AND %K == false", - #keyPath(BookmarkManagedObject.parent), - #keyPath(BookmarkManagedObject.isFavorite)) - - guard let results = try? storage.viewContext.fetch(fetchRequest) else { - XCTFail("Must have folders") - return - } - - // The structure is compromised, it should return nil - var topLevelFolder = storage.fetchReadOnlyTopLevelFolder(withFolderType: .bookmark) - XCTAssertNil(topLevelFolder) - - XCTAssertEqual(results.count, expectedExceedingCount) - - storage.fixFolderDataStructure(withFolderType: .bookmark) - - guard let results = try? storage.viewContext.fetch(fetchRequest) else { - XCTFail("Must have folders") - return - } - - XCTAssertEqual(results.count, expectedFinalCount) - - topLevelFolder = storage.fetchReadOnlyTopLevelFolder(withFolderType: .bookmark) - XCTAssertNotNil(topLevelFolder) - } - - func test_WhenThereAreMultipleFavoritesOrphanedFolder_ThenTheyAreDeleted() { - _ = BookmarksCoreDataStorage.rootFavoritesFolderManagedObject(storage.viewContext) - _ = BookmarksCoreDataStorage.rootFavoritesFolderManagedObject(storage.viewContext) - _ = BookmarksCoreDataStorage.rootFavoritesFolderManagedObject(storage.viewContext) - - let expectedExceedingCount = 3 - let expectedFinalCount = 1 - - let fetchRequest = NSFetchRequest(entityName: "BookmarkFolderManagedObject") - fetchRequest.predicate = NSPredicate(format: "%K == nil AND %K == true", - #keyPath(BookmarkManagedObject.parent), - #keyPath(BookmarkManagedObject.isFavorite)) - - guard let results = try? storage.viewContext.fetch(fetchRequest) else { - XCTFail("Must have folders") - return - } - - // The structure is compromised, it should return nil - var topLevelFolder = storage.fetchReadOnlyTopLevelFolder(withFolderType: .favorite) - XCTAssertNil(topLevelFolder) - - XCTAssertEqual(results.count, expectedExceedingCount) - - storage.fixFolderDataStructure(withFolderType: .favorite) - - guard let results = try? storage.viewContext.fetch(fetchRequest) else { - XCTFail("Must have folders") - return - } - - XCTAssertEqual(results.count, expectedFinalCount) - - topLevelFolder = storage.fetchReadOnlyTopLevelFolder(withFolderType: .favorite) - XCTAssertNotNil(topLevelFolder) - } - - func test_WhenThereTheresNoBookmarkRootLevelFolder_ThenTheyCreated() { - let fetchRequest = NSFetchRequest(entityName: "BookmarkFolderManagedObject") - fetchRequest.predicate = NSPredicate(format: "%K == nil AND %K == false", - #keyPath(BookmarkManagedObject.parent), - #keyPath(BookmarkManagedObject.isFavorite)) - - guard let results = try? storage.viewContext.fetch(fetchRequest) else { - XCTFail("Must have folders") - return - } - - let expectedInitialCount = 0 - let expectedFinalCount = 1 - - XCTAssertEqual(results.count, expectedInitialCount) - - storage.fixFolderDataStructure(withFolderType: .bookmark) - - guard let results = try? storage.viewContext.fetch(fetchRequest) else { - XCTFail("Must have folders") - return - } - - XCTAssertEqual(results.count, expectedFinalCount) - } - - func test_WhenThereTheresNoFavoriteRootLevelFolder_ThenTheyAreCreated() { - let fetchRequest = NSFetchRequest(entityName: "BookmarkFolderManagedObject") - fetchRequest.predicate = NSPredicate(format: "%K == nil AND %K == true", - #keyPath(BookmarkManagedObject.parent), - #keyPath(BookmarkManagedObject.isFavorite)) - - guard let results = try? storage.viewContext.fetch(fetchRequest) else { - XCTFail("Must have folders") - return - } - - let expectedInitialCount = 0 - let expectedFinalCount = 1 - - XCTAssertEqual(results.count, expectedInitialCount) - - storage.fixFolderDataStructure(withFolderType: .favorite) - - guard let results = try? storage.viewContext.fetch(fetchRequest) else { - XCTFail("Must have folders") - return - } - - XCTAssertEqual(results.count, expectedFinalCount) - } -} diff --git a/DuckDuckGoTests/BookmarksCoreDataStorageTests.swift b/DuckDuckGoTests/BookmarksCoreDataStorageTests.swift deleted file mode 100644 index 9070f91c10..0000000000 --- a/DuckDuckGoTests/BookmarksCoreDataStorageTests.swift +++ /dev/null @@ -1,255 +0,0 @@ -// -// BookmarksCoreDataStorageTests.swift -// DuckDuckGo -// -// Copyright © 2022 DuckDuckGo. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import XCTest -@testable import Core - -class BookmarksCoreDataStorageTests: XCTestCase { - - private var storage: MockBookmarksCoreDataStore! - - override func setUpWithError() throws { - try super.setUpWithError() - - storage = MockBookmarksCoreDataStore() - _ = BookmarksCoreDataStorage.rootFolderManagedObject(storage.viewContext) - _ = BookmarksCoreDataStorage.rootFavoritesFolderManagedObject(storage.viewContext) - storage.saveContext() - storage.loadStoreAndCaches { _ in } - } - - override func tearDownWithError() throws { - storage = nil - - try super.tearDownWithError() - } - - func test_WhenBookmarksCoreDataStoreExists_ThenTopLevelBookmarksFolderMustExist() throws { - XCTAssertNotNil(storage.topLevelBookmarksFolder) - } - - func test_WhenBookmarksCoreDataStoreExists_ThenTopLevelFavoritesFolderMustExist() throws { - XCTAssertNotNil(storage.topLevelFavoritesFolder) - } - - func test_WhenSaveNewFavorite_ThenNewFavoriteExists() async throws { - guard let favorites = storage.topLevelFavoritesFolder else { - XCTFail("must have topLevelFavoritesFolder") - return - } - - let managedObjectID = try await storage.saveNewFavorite(withTitle: Constants.bookmarkTitle, - url: Constants.bookmarkURL) - - XCTAssertNotNil(managedObjectID) - - guard let favoriteManagedObject = try await storage.favorite(forURL: Constants.bookmarkURL) else { - XCTFail("favorite should exist") - return - } - - XCTAssertNotNil(favoriteManagedObject) - XCTAssertEqual(favoriteManagedObject.title, Constants.bookmarkTitle) - XCTAssertEqual(favoriteManagedObject.parentFolder?.objectID, favorites.objectID) - XCTAssertEqual(favoriteManagedObject.url, Constants.bookmarkURL) - } - - func test_WhenRootFolderAndSaveNewFolder_ThenNewFolderExists() async throws { - guard let topLevelBookMarksFolder = storage.topLevelBookmarksFolder else { - XCTFail("must have topLevelBookMarkFolder") - return - } - - let title = "AFolder" - let managedObjectID = try await storage.saveNewFolder(withTitle: "AFolder", parentID: topLevelBookMarksFolder.objectID) - guard let bookmarkFolderManagedObject = await storage.getFolder(objectID: managedObjectID) else { - XCTFail("Folder should exist") - return - } - - XCTAssertNotNil(bookmarkFolderManagedObject) - XCTAssertNotNil(storage.topLevelBookmarksItems) - XCTAssertEqual(storage.topLevelBookmarksItems.count, 1) - XCTAssertEqual(bookmarkFolderManagedObject.parent?.objectID, topLevelBookMarksFolder.objectID) - XCTAssertEqual(bookmarkFolderManagedObject.title, title) - } - - func test_WhenSaveNewBookmarkAtRoot_ThenNewBookmarkExists() async throws { - guard let topLevelBookMarksFolder = storage.topLevelBookmarksFolder else { - XCTFail("must have topLevelBookMarkFolder") - return - } - - let managedObjectID = try await storage.saveNewBookmark(withTitle: Constants.bookmarkTitle, - url: Constants.bookmarkURL, - parentID: topLevelBookMarksFolder.objectID) - XCTAssertNotNil(managedObjectID) - - guard let bookmarkManagedObject = await storage.bookmark(forURL: Constants.bookmarkURL) else { - XCTFail("bookmark should exist") - return - } - - XCTAssertNotNil(bookmarkManagedObject) - XCTAssertEqual(bookmarkManagedObject.title, Constants.bookmarkTitle) - XCTAssertEqual(bookmarkManagedObject.parentFolder?.objectID, topLevelBookMarksFolder.objectID) - XCTAssertEqual(bookmarkManagedObject.url, Constants.bookmarkURL) - } - - func test_WhenSaveNestedFoldersAtRoot_ThenNestedFoldersExist() async throws { - guard let topLevelBookMarksFolder = storage.topLevelBookmarksFolder else { - XCTFail("must have topLevelBookMarkFolder") - return - } - - let titleOuterFolder = "OuterFolder" - let managedObjectID1 = try await storage.saveNewFolder(withTitle: titleOuterFolder, parentID: topLevelBookMarksFolder.objectID) - - guard let bookmarkFolderManagedObject1 = await storage.getFolder(objectID: managedObjectID1) else { - XCTFail("Folder should exist") - return - } - - XCTAssertNotNil(bookmarkFolderManagedObject1) - XCTAssertEqual(bookmarkFolderManagedObject1.parent?.objectID, topLevelBookMarksFolder.objectID) - XCTAssertEqual(bookmarkFolderManagedObject1.title, titleOuterFolder) - - let titleInnerFolder = "InnerFolder" - let managedObjectID2 = try await storage.saveNewFolder(withTitle: titleInnerFolder, parentID: managedObjectID1) - - guard let bookmarkFolderManagedObject2 = await storage.getFolder(objectID: managedObjectID2) else { - XCTFail("Folder should exist") - return - } - - XCTAssertNotNil(bookmarkFolderManagedObject2) - XCTAssertEqual(bookmarkFolderManagedObject2.parent?.objectID, managedObjectID1) - XCTAssertEqual(bookmarkFolderManagedObject2.title, titleInnerFolder) - } - - func test_WhenSaveBookmarkInFolder_ThenBookmarkExistsInFolder() async throws { - guard let topLevelBookMarksFolder = storage.topLevelBookmarksFolder else { - XCTFail("must have topLevelBookMarkFolder") - return - } - - let folderManagedObjectID = try await storage.saveNewFolder(withTitle: "AFolder", parentID: topLevelBookMarksFolder.objectID) - XCTAssertNotNil(folderManagedObjectID) - - let bookmarkManagedObjectID = try await storage.saveNewBookmark(withTitle: Constants.bookmarkTitle, - url: Constants.bookmarkURL, - parentID: folderManagedObjectID) - XCTAssertNotNil(bookmarkManagedObjectID) - - guard let bookmarkManagedObject = await storage.bookmark(forURL: Constants.bookmarkURL) else { - XCTFail("bookmark should exist") - return - } - - XCTAssertNotNil(bookmarkManagedObject) - XCTAssertEqual(bookmarkManagedObject.title, Constants.bookmarkTitle) - XCTAssertEqual(bookmarkManagedObject.parentFolder?.objectID, folderManagedObjectID) - XCTAssertEqual(bookmarkManagedObject.url, Constants.bookmarkURL) - } - - func test_WhenSaveTopLevelBookmark_AndBookmarkAlreadySavedInFolder_ThenBookmarkSaves() async throws { - guard let topLevelBookMarksFolder = storage.topLevelBookmarksFolder else { - XCTFail("must have topLevelBookMarkFolder") - return - } - - let folderManagedObjectID = try await storage.saveNewFolder(withTitle: "AFolder", parentID: topLevelBookMarksFolder.objectID) - XCTAssertNotNil(folderManagedObjectID) - - let bookmarkManagedObjectID = try await storage.saveNewBookmark(withTitle: Constants.bookmarkTitle, - url: Constants.bookmarkURL, - parentID: folderManagedObjectID) - XCTAssertNotNil(bookmarkManagedObjectID) - - guard let bookmarkManagedObject = await storage.bookmark(forURL: Constants.bookmarkURL) else { - XCTFail("bookmark should exist") - return - } - - if let url = bookmarkManagedObject.url, - await storage.containsBookmark(url: url, searchType: .topLevelBookmarksOnly, parentId: topLevelBookMarksFolder.objectID) { - XCTFail("bookmark should not already exist at top level") - return - } - - let topLevelBookmarkManagedObjectID = try await storage.saveNewBookmark(withTitle: Constants.bookmarkTitle, - url: Constants.bookmarkURL, - parentID: topLevelBookMarksFolder.objectID) - XCTAssertNotNil(topLevelBookmarkManagedObjectID) - } - - func test_WhenSaveBookmarkInFolder_ThenAllBookmarksCountIsCorrect() async throws { - guard let topLevelBookMarksFolder = storage.topLevelBookmarksFolder else { - XCTFail("must have topLevelBookMarkFolder") - return - } - - let allBookmarksBefore = await storage.allBookmarksAndFavoritesFlat() - XCTAssertEqual(allBookmarksBefore.count, 0) - - let folderManagedObjectID = try await storage.saveNewFolder(withTitle: "AFolder", parentID: topLevelBookMarksFolder.objectID) - XCTAssertNotNil(folderManagedObjectID) - - let bookmarkManagedObjectID = try await storage.saveNewBookmark(withTitle: Constants.bookmarkTitle, - url: Constants.bookmarkURL, - parentID: folderManagedObjectID) - XCTAssertNotNil(bookmarkManagedObjectID) - - let allBookmarksAfter = await storage.allBookmarksAndFavoritesFlat() - XCTAssertEqual(allBookmarksAfter.count, 1) - } - - func test_WhenSaveBookmarkInFolder_ThenDomainExists() async throws { - guard let topLevelBookMarksFolder = storage.topLevelBookmarksFolder else { - XCTFail("must have topLevelBookMarkFolder") - return - } - - let allBookmarksBefore = await storage.allBookmarksAndFavoritesFlat() - XCTAssertEqual(allBookmarksBefore.count, 0) - - let folderManagedObjectID = try await storage.saveNewFolder(withTitle: "AFolder", parentID: topLevelBookMarksFolder.objectID) - XCTAssertNotNil(folderManagedObjectID) - - let bookmarkManagedObjectID = try await storage.saveNewBookmark(withTitle: Constants.bookmarkTitle, - url: Constants.bookmarkURL, - parentID: folderManagedObjectID) - XCTAssertNotNil(bookmarkManagedObjectID) - - guard let host = Constants.bookmarkURL.host else { - XCTFail("Must have host") - return - } - - let contains = await storage.containsDomain(host) - XCTAssertTrue(contains) - } -} - -private extension BookmarksCoreDataStorageTests { - enum Constants { - static let bookmarkTitle = "my bookmark" - static let bookmarkURL = URL(string: "https://duckduckgo.com")! - } -} diff --git a/DuckDuckGoTests/BookmarksExporterTests.swift b/DuckDuckGoTests/BookmarksExporterTests.swift index 57fdfcd7eb..a32f2b9296 100644 --- a/DuckDuckGoTests/BookmarksExporterTests.swift +++ b/DuckDuckGoTests/BookmarksExporterTests.swift @@ -20,9 +20,10 @@ import XCTest @testable import Core +@MainActor class BookmarksExporterTests: XCTestCase { - private var storage: MockBookmarksCoreDataStore! + private var storage = MockBookmarksDatabase.make() private var htmlLoader: HtmlTestDataLoader! private var importer: BookmarksImporter! private var exporter: BookmarksExporter! @@ -31,23 +32,18 @@ class BookmarksExporterTests: XCTestCase { try super.setUpWithError() htmlLoader = HtmlTestDataLoader() - storage = MockBookmarksCoreDataStore() - _ = BookmarksCoreDataStorage.rootFolderManagedObject(storage.viewContext) - _ = BookmarksCoreDataStorage.rootFavoritesFolderManagedObject(storage.viewContext) - - storage.saveContext() - storage.loadStoreAndCaches { _ in } importer = BookmarksImporter(coreDataStore: storage) exporter = BookmarksExporter(coreDataStore: storage) } override func tearDownWithError() throws { - htmlLoader = nil - storage = nil importer = nil exporter = nil - + htmlLoader = nil + + try storage.tearDown(deleteStores: true) + try super.tearDownWithError() } @@ -83,7 +79,7 @@ class BookmarksExporterTests: XCTestCase { content.append(BookmarksExporter.Template.openFolder(level: 2, named: "Favourites")) content.append(BookmarksExporter.Template.bookmark(level: 3, title: "Apple", - url: URL(string: "https://www.apple.com/uk")!)) + url: "https://www.apple.com/uk")) content.append(BookmarksExporter.Template.closeFolder(level: 2)) content.append(BookmarksExporter.Template.openFolder(level: 2, named: "Bookmarks Menu")) content.append(BookmarksExporter.Template.closeFolder(level: 2)) @@ -108,22 +104,22 @@ class BookmarksExporterTests: XCTestCase { content.append(BookmarksExporter.Template.openFolder(level: 2, named: "Mozilla Firefox")) content.append(BookmarksExporter.Template.bookmark(level: 3, title: "Get Help", - url: URL(string: "https://support.mozilla.org/en-US/products/firefox")!)) + url: "https://support.mozilla.org/en-US/products/firefox")) content.append(BookmarksExporter.Template.bookmark(level: 3, title: "Customize Firefox", - url: URL(string: "https://support.mozilla.org/en-US/kb/customize-firefox-controls-buttons-and-toolbars?utm_source=firefox-browser&utm_medium=default-bookmarks&utm_campaign=customize")!)) + url: "https://support.mozilla.org/en-US/kb/customize-firefox-controls-buttons-and-toolbars?utm_source=firefox-browser&utm_medium=default-bookmarks&utm_campaign=customize")) content.append(BookmarksExporter.Template.bookmark(level: 3, title: "Get Involved", - url: URL(string: "https://www.mozilla.org/en-US/contribute/")!)) + url: "https://www.mozilla.org/en-US/contribute/")) content.append(BookmarksExporter.Template.bookmark(level: 3, title: "About Us", - url: URL(string: "https://www.mozilla.org/en-US/about/")!)) + url: "https://www.mozilla.org/en-US/about/")) content.append(BookmarksExporter.Template.closeFolder(level: 2)) content.append(buildCommonContent()) content.append(BookmarksExporter.Template.openFolder(level: 2, named: "Bookmarks Toolbar")) content.append(BookmarksExporter.Template.bookmark(level: 3, title: "Getting Started", - url: URL(string: "https://www.mozilla.org/en-US/firefox/central/")!)) + url: "https://www.mozilla.org/en-US/firefox/central/")) content.append(BookmarksExporter.Template.closeFolder(level: 2)) content.append(BookmarksExporter.Template.footer) @@ -163,14 +159,14 @@ class BookmarksExporterTests: XCTestCase { } var content = [BookmarksExporter.Template.header] - content.append(BookmarksExporter.Template.bookmark(level: 2, - title: "Apple (United Kingdom)", - url: URL(string: "https://www.apple.com/uk/")!, - isFavorite: true)) content.append(BookmarksExporter.Template.openFolder(level: 2, named: "DuckDuckGo Bookmarks")) content.append(buildCommonContent(level: 3)) content.append(BookmarksExporter.Template.closeFolder(level: 2)) content.append(BookmarksExporter.Template.openFolder(level: 2, named: "DuckDuckGo Favorites")) + content.append(BookmarksExporter.Template.bookmark(level: 3, + title: "Apple (United Kingdom)", + url: "https://www.apple.com/uk/", + isFavorite: true)) content.append(BookmarksExporter.Template.closeFolder(level: 2)) content.append(BookmarksExporter.Template.footer) @@ -189,11 +185,11 @@ class BookmarksExporterTests: XCTestCase { } var content = [BookmarksExporter.Template.header] + content.append(buildCommonContent()) content.append(BookmarksExporter.Template.bookmark(level: 2, title: "Apple (United Kingdom)", - url: URL(string: "https://www.apple.com/uk/")!, + url: "https://www.apple.com/uk/", isFavorite: true)) - content.append(buildCommonContent()) content.append(BookmarksExporter.Template.footer) XCTAssertEqual(exportedHtml, content.joined()) @@ -210,60 +206,60 @@ class BookmarksExporterTests: XCTestCase { BookmarksExporter.Template.openFolder(level: level + 2, named: "FolderA-Level3"), BookmarksExporter.Template.bookmark(level: level + 3, title: "News, sport and opinion from the Guardian\'s global edition | The Guardian", - url: URL(string: "https://www.theguardian.com/international")!), + url: "https://www.theguardian.com/international"), BookmarksExporter.Template.closeFolder(level: level + 2), BookmarksExporter.Template.bookmark(level: level + 2, title: "Digg - What the Internet is talking about right now", - url: URL(string: "https://digg.com/")!), + url: "https://digg.com/"), BookmarksExporter.Template.closeFolder(level: level + 1), BookmarksExporter.Template.bookmark(level: level + 1, title: "Wikipedia", - url: URL(string: "https://www.wikipedia.org/")!), + url: "https://www.wikipedia.org/"), BookmarksExporter.Template.closeFolder(level: level), BookmarksExporter.Template.openFolder(level: level, named: "FolderB-Level1"), BookmarksExporter.Template.openFolder(level: level + 1, named: "FolderB-Level2"), BookmarksExporter.Template.openFolder(level: level + 2, named: "FolderB-Level3-a"), BookmarksExporter.Template.bookmark(level: level + 3, title: "Bloomberg.com", - url: URL(string: "https://www.bloomberg.com/europe")!), + url: "https://www.bloomberg.com/europe"), BookmarksExporter.Template.closeFolder(level: level + 2), BookmarksExporter.Template.openFolder(level: level + 2, named: "FolderB-Level3-b"), BookmarksExporter.Template.bookmark(level: level + 3, title: "TechCrunch – Startup and Technology News", - url: URL(string: "https://techcrunch.com/")!), + url: "https://techcrunch.com/"), BookmarksExporter.Template.closeFolder(level: level + 2), BookmarksExporter.Template.bookmark(level: level + 2, title: "The Verge", - url: URL(string: "https://www.theverge.com/")!), + url: "https://www.theverge.com/"), BookmarksExporter.Template.closeFolder(level: level + 1), BookmarksExporter.Template.bookmark(level: level + 1, title: "Techmeme", - url: URL(string: "https://techmeme.com/")!), + url: "https://techmeme.com/"), BookmarksExporter.Template.closeFolder(level: level), BookmarksExporter.Template.openFolder(level: level, named: "EmptyFolder"), BookmarksExporter.Template.closeFolder(level: level), BookmarksExporter.Template.openFolder(level: level, named: "DuplicateFolderName"), BookmarksExporter.Template.bookmark(level: level + 1, title: "Breaking News | Irish & International Headlines | The Irish Times", - url: URL(string: "https://www.irishtimes.com/")!), + url: "https://www.irishtimes.com/"), BookmarksExporter.Template.closeFolder(level: level), BookmarksExporter.Template.openFolder(level: level, named: "DuplicateFolderName"), BookmarksExporter.Template.bookmark(level: level + 1, title: "The Wall Street Journal - Breaking News, Business, Financial & Economic News, World News and Video", - url: URL(string: "https://www.wsj.com/?mod=wsjheader_logo")!), + url: "https://www.wsj.com/?mod=wsjheader_logo"), BookmarksExporter.Template.closeFolder(level: level), BookmarksExporter.Template.bookmark(level: level, title: "DuckDuckGo — Privacy, simplified.", - url: URL(string: "https://duckduckgo.com/")!), + url: "https://duckduckgo.com/"), BookmarksExporter.Template.openFolder(level: level, named: "DupeFolderNameContents"), BookmarksExporter.Template.bookmark(level: level + 1, title: "MacRumors: Apple News and Rumors", - url: URL(string: "https://www.macrumors.com/")!), + url: "https://www.macrumors.com/"), BookmarksExporter.Template.closeFolder(level: level), BookmarksExporter.Template.openFolder(level: level, named: "DupeFolderNameContents"), BookmarksExporter.Template.bookmark(level: level + 1, title: "MacRumors: Apple News and Rumors", - url: URL(string: "https://www.macrumors.com/")!), + url: "https://www.macrumors.com/"), BookmarksExporter.Template.closeFolder(level: level) ].joined() } diff --git a/DuckDuckGoTests/BookmarksImporterTests.swift b/DuckDuckGoTests/BookmarksImporterTests.swift index 4054ce39fa..18cc72ca53 100644 --- a/DuckDuckGoTests/BookmarksImporterTests.swift +++ b/DuckDuckGoTests/BookmarksImporterTests.swift @@ -20,10 +20,12 @@ import XCTest import SwiftSoup @testable import Core +import Bookmarks +@MainActor class BookmarksImporterTests: XCTestCase { - private var storage: MockBookmarksCoreDataStore! + private var storage = MockBookmarksDatabase.make() private var importer: BookmarksImporter! private var htmlLoader: HtmlTestDataLoader! @@ -31,20 +33,14 @@ class BookmarksImporterTests: XCTestCase { try super.setUpWithError() htmlLoader = HtmlTestDataLoader() - storage = MockBookmarksCoreDataStore() - _ = BookmarksCoreDataStorage.rootFolderManagedObject(storage.viewContext) - _ = BookmarksCoreDataStorage.rootFavoritesFolderManagedObject(storage.viewContext) - - storage.saveContext() - storage.loadStoreAndCaches { _ in } - importer = BookmarksImporter(coreDataStore: storage) } override func tearDownWithError() throws { htmlLoader = nil - storage = nil importer = nil + + try storage.tearDown(deleteStores: true) try super.tearDownWithError() } @@ -127,13 +123,59 @@ class BookmarksImporterTests: XCTestCase { XCTAssertNotNil(createdBookmark) XCTAssertEqual(createdBookmark.type, .bookmark) } + + func test_WhenImportingBookmarks_ThenDuplicatesAreSkipped() async throws { + let existingBookmarkURL = "https://first.com/1.png" + let existingFavoriteURL = "https://second.com/1.png" + let otherURL = "https://third.com/1.png" + + let initialBookmarks = [BookmarkOrFolder(name: "first", + type: .bookmark, + urlString: existingBookmarkURL, + children: nil), + BookmarkOrFolder(name: "second", + type: .favorite, + urlString: existingFavoriteURL, + children: nil)] + + try await importer.saveBookmarks(initialBookmarks) + + let countRequest = BookmarkEntity.fetchRequest() + countRequest.predicate = NSPredicate(format: "%K == false", #keyPath(BookmarkEntity.isFolder)) + + let count = try storage.makeContext(concurrencyType: .mainQueueConcurrencyType).count(for: countRequest) + XCTAssertEqual(count, 2) + + // One duplicates existing bookmark, another two are duplicates in imported data set + let importedBookmarks = [BookmarkOrFolder(name: "first", + type: .favorite, + urlString: existingBookmarkURL, + children: nil), + BookmarkOrFolder(name: "other", + type: .favorite, + urlString: otherURL, + children: nil), + BookmarkOrFolder(name: "another", + type: .favorite, + urlString: otherURL, + children: nil)] + + try await importer.saveBookmarks(importedBookmarks) + let newCount = try storage.makeContext(concurrencyType: .mainQueueConcurrencyType).count(for: countRequest) + XCTAssertEqual(newCount, 3) + } func test_WhenSaveBookmarks_ThenDataSaved() async throws { try await importer.parseHtml(htmlLoader.fromHtmlFile("MockFiles/bookmarks_safari.html")) try await importer.saveBookmarks(importer.importedBookmarks) // Note: exhaustive hierarchy is tested in BookmarksExporterTests.testExportHtml - XCTAssertEqual(storage.topLevelBookmarksItems.count, 10) + let context = storage.makeContext(concurrencyType: .mainQueueConcurrencyType) + guard let topLevelFolder = BookmarkUtils.fetchRootFolder(context) else { + XCTFail("Root folder missing") + return + } + XCTAssertEqual(topLevelFolder.children?.count ?? 0, 10) } func test_WhenParseHtmlAndSave_ThenDataSaved() async { diff --git a/DuckDuckGoTests/BookmarksMigrationTests.swift b/DuckDuckGoTests/BookmarksMigrationTests.swift new file mode 100644 index 0000000000..3f345969e6 --- /dev/null +++ b/DuckDuckGoTests/BookmarksMigrationTests.swift @@ -0,0 +1,367 @@ +// +// BookmarksMigrationTests.swift +// DuckDuckGo +// +// Copyright © 2022 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import XCTest +import CoreData +import Bookmarks +@testable import Core +@testable import DuckDuckGo + +@MainActor +class BookmarksMigrationTests: XCTestCase { + + let destinationStack = MockBookmarksDatabase.make(prepareFolderStructure: false) + var sourceStack: LegacyBookmarksCoreDataStorage! + + override func setUp() async throws { + try await super.setUp() + + destinationStack.loadStore() + + let containerLocation = MockBookmarksDatabase.tempDBDir() + try FileManager.default.createDirectory(at: containerLocation, withIntermediateDirectories: true) + + sourceStack = LegacyBookmarksCoreDataStorage(storeURL: containerLocation.appendingPathComponent("OldBookmarks.sqlite"), + createIfNeeded: true) + sourceStack.loadStoreAndCaches() + try await prepareDB(with: sourceStack) + } + + override func tearDown() async throws { + try await super.tearDown() + + try destinationStack.tearDown(deleteStores: true) + } + + private func url(for title: String) -> URL { + URL(string: "https://\(title).com")! + } + + func prepareDB(with bookmarksDB: LegacyBookmarksCoreDataStorage) async throws { + + guard let topLevelBookmarksFolder = bookmarksDB.topLevelBookmarksFolder else { + XCTFail("Missing folder structure") + return + } + + // Bookmarks: + // One + // Folder A / + // - Two + // - Folder B/ + // - Three + + _ = try await bookmarksDB.saveNewBookmark(withTitle: "One", url: url(for: "one"), parentID: nil) + let fAId = try await bookmarksDB.saveNewFolder(withTitle: "Folder A", parentID: topLevelBookmarksFolder.objectID) + + _ = try await bookmarksDB.saveNewBookmark(withTitle: "Two", url: url(for: "two"), parentID: fAId) + let fBId = try await bookmarksDB.saveNewFolder(withTitle: "Folder B", parentID: fAId) + + _ = try await bookmarksDB.saveNewBookmark(withTitle: "Three", url: url(for: "three"), parentID: fBId) + + // Favorites: + // First + // Two (duplicate) + // Third + + _ = try await bookmarksDB.saveNewFavorite(withTitle: "First", url: url(for: "first")) + _ = try await bookmarksDB.saveNewFavorite(withTitle: "Two", url: url(for: "two")) + _ = try await bookmarksDB.saveNewFavorite(withTitle: "Third", url: url(for: "third")) + + bookmarksDB.viewContext.refreshAllObjects() + XCTAssert((topLevelBookmarksFolder.children?.count ?? 0) > 0) + } + + func testWhenThereIsNoDatabaseThenLegacyStackIsNotCreated() { + let tempURL = MockBookmarksDatabase.tempDBDir().appendingPathComponent("OldBookmarks.sqlite") + let legacyStore = LegacyBookmarksCoreDataStorage(storeURL: tempURL) + XCTAssertNil(legacyStore) + } + + func testWhenNothingToMigrateFromThenNewStackIsInitialized() throws { + + let context = destinationStack.makeContext(concurrencyType: .mainQueueConcurrencyType) + XCTAssertNil(BookmarkUtils.fetchRootFolder(context)) + + LegacyBookmarksStoreMigration.migrate(from: nil, to: context) + + XCTAssertNotNil(BookmarkUtils.fetchRootFolder(context)) + XCTAssertNotNil(BookmarkUtils.fetchFavoritesFolder(context)) + + // Simulate subsequent app instantiations + LegacyBookmarksStoreMigration.migrate(from: nil, to: context) + LegacyBookmarksStoreMigration.migrate(from: nil, to: context) + + let countRequest = BookmarkEntity.fetchRequest() + countRequest.predicate = NSPredicate(value: true) + + let count = try context.count(for: countRequest) + XCTAssertEqual(count, 2) + } + + func testWhenRegularMigrationIsNeededThenItIsDoneAndDataIsDeduplicated() { + + let context = destinationStack.makeContext(concurrencyType: .mainQueueConcurrencyType) + LegacyBookmarksStoreMigration.migrate(from: sourceStack, to: context) + + XCTAssertNotNil(BookmarkUtils.fetchRootFolder(context)) + XCTAssertNotNil(BookmarkUtils.fetchFavoritesFolder(context)) + + let topLevel = BookmarkListViewModel(bookmarksDatabase: destinationStack, parentID: nil) + XCTAssertEqual(topLevel.bookmarks.count, 4) + + let topLevelNames = topLevel.bookmarks.map { $0.title } + // Order matters: first favorites (minus duplicates), then bookmarks + XCTAssertEqual(topLevelNames, ["First", "Third", "One", "Folder A"]) + + let favFirst = topLevel.bookmarks[0] + XCTAssertEqual(favFirst.isFolder, false) + XCTAssertEqual(favFirst.isFavorite, true) + XCTAssertEqual(favFirst.title, "First") + XCTAssertEqual(favFirst.url, url(for: "first").absoluteString) + + let favThird = topLevel.bookmarks[1] + XCTAssertEqual(favThird.isFolder, false) + XCTAssertEqual(favThird.isFavorite, true) + XCTAssertEqual(favThird.title, "Third") + + let bookOne = topLevel.bookmarks[2] + XCTAssertEqual(bookOne.isFolder, false) + XCTAssertEqual(bookOne.isFavorite, false) + XCTAssertEqual(bookOne.title, "One") + + let folderA = topLevel.bookmarks[3] + XCTAssertEqual(folderA.title, "Folder A") + XCTAssertTrue(folderA.isFolder) + + let folderAContents = folderA.childrenArray + XCTAssertEqual(folderAContents[0].isFolder, false) + XCTAssertEqual(folderAContents[0].isFavorite, true) + XCTAssertEqual(folderAContents[0].title, "Two") + + let folderB = folderAContents[1] + XCTAssertEqual(folderB.title, "Folder B") + XCTAssertTrue(folderB.isFolder) + + let folderBContents = folderB.childrenArray + XCTAssertEqual(folderBContents.count, 1) + XCTAssertEqual(folderBContents[0].isFolder, false) + XCTAssertEqual(folderBContents[0].isFavorite, false) + XCTAssertEqual(folderBContents[0].title, "Three") + } + +} + +public enum LegacyBookmarksCoreDataStorageError: Error { + case storeDeallocated + case fetchingExistingItemFailed + case fetchingParentFailed + case insertObjectFailed + case contextSaveError +} + +public typealias BookmarkItemSavedMainThreadCompletion = ((NSManagedObjectID?, LegacyBookmarksCoreDataStorageError?) -> Void) + +extension LegacyBookmarksCoreDataStorage { + + public func saveNewFolder(withTitle title: String, parentID: NSManagedObjectID, completion: BookmarkItemSavedMainThreadCompletion? = nil) { + createFolder(title: title, isFavorite: false, parentID: parentID, completion: completion) + } + + public func saveNewFolder(withTitle: String, parentID: NSManagedObjectID) async throws -> NSManagedObjectID { + return try await withCheckedThrowingContinuation { continuation in + saveNewFolder(withTitle: withTitle, parentID: parentID) { managedObjectID, error in + if let error = error { + assertionFailure("Saving folder failed") + return continuation.resume(throwing: error) + } + guard let managedObjectID = managedObjectID else { + assertionFailure("Saving folder failed") + return continuation.resume(throwing: LegacyBookmarksCoreDataStorageError.contextSaveError) + } + + return continuation.resume(returning: managedObjectID) + } + } + } + + public func saveNewFavorite(withTitle title: String, url: URL, completion: BookmarkItemSavedMainThreadCompletion? = nil) { + createBookmark(url: url, title: title, isFavorite: true, completion: completion) + } + + public func saveNewFavorite(withTitle title: String, + url: URL) async throws -> NSManagedObjectID { + return try await withCheckedThrowingContinuation { continuation in + saveNewFavorite(withTitle: title, url: url) { managedObjectID, error in + if let error = error { + assertionFailure("Saving favorite failed") + return continuation.resume(throwing: error) + } + guard let managedObjectID = managedObjectID else { + assertionFailure("Saving favorite failed") + return continuation.resume(throwing: LegacyBookmarksCoreDataStorageError.contextSaveError) + } + + return continuation.resume(returning: managedObjectID) + } + } + } + + public func saveNewBookmark(withTitle title: String, + url: URL, + parentID: NSManagedObjectID?, + completion: BookmarkItemSavedMainThreadCompletion? = nil) { + + createBookmark(url: url, title: title, isFavorite: false, parentID: parentID, completion: completion) + } + + public func saveNewBookmark(withTitle title: String, + url: URL, + parentID: NSManagedObjectID?) async throws -> NSManagedObjectID { + return try await withCheckedThrowingContinuation { continuation in + saveNewBookmark(withTitle: title, url: url, parentID: parentID) { managedObjectID, error in + if let error = error { + assertionFailure("Saving bookmark failed") + return continuation.resume(throwing: error) + } + guard let managedObjectID = managedObjectID else { + assertionFailure("Saving bookmark failed") + return continuation.resume(throwing: LegacyBookmarksCoreDataStorageError.contextSaveError) + } + + return continuation.resume(returning: managedObjectID) + } + } + } + + private func createBookmark(url: URL, + title: String, + isFavorite: Bool, + parentID: NSManagedObjectID? = nil, + completion: BookmarkItemSavedMainThreadCompletion? = nil) { + + let privateContext = getTemporaryPrivateContext() + privateContext.perform { [weak self] in + guard let self = self else { + assertionFailure("self nil when creating bookmark") + completion?(nil, .storeDeallocated) + return + } + + let managedObject = NSEntityDescription.insertNewObject(forEntityName: Constants.bookmarkClassName, into: privateContext) + guard let bookmark = managedObject as? BookmarkManagedObject else { + assertionFailure("Inserting new bookmark failed") + completion?(nil, .insertObjectFailed) + return + } + bookmark.url = url + bookmark.title = title + bookmark.isFavorite = isFavorite + + self.updateParentAndSave(of: bookmark, parentID: parentID, context: privateContext, completion: completion) + } + } + + private func createFolder(title: String, + isFavorite: Bool, + parentID: NSManagedObjectID? = nil, + completion: BookmarkItemSavedMainThreadCompletion? = nil) { + + let privateContext = getTemporaryPrivateContext() + privateContext.perform { [weak self] in + guard let self = self else { + assertionFailure("self nil when creating folder") + completion?(nil, .storeDeallocated) + return + } + + let managedObject = NSEntityDescription.insertNewObject(forEntityName: Constants.folderClassName, into: privateContext) + guard let folder = managedObject as? BookmarkFolderManagedObject else { + assertionFailure("Inserting new folder failed") + completion?(nil, .insertObjectFailed) + return + } + folder.title = title + folder.isFavorite = isFavorite + + self.updateParentAndSave(of: folder, parentID: parentID, context: privateContext, completion: completion) + } + } + + + private func getTopLevelFolder(isFavorite: Bool, + onContext context: NSManagedObjectContext, + completion: @escaping (BookmarkFolderManagedObject) -> Void) { + + context.perform { + + let fetchRequest = NSFetchRequest(entityName: Constants.folderClassName) + fetchRequest.predicate = NSPredicate(format: "%K == nil AND %K == %@", + #keyPath(BookmarkManagedObject.parent), + #keyPath(BookmarkManagedObject.isFavorite), + NSNumber(value: isFavorite)) + + let results = try? context.fetch(fetchRequest) + guard (results?.count ?? 0) <= 1 else { + fatalError("There shouldn't be an orphaned folder") + } + + guard let folder = results?.first else { + fatalError("Top level folder missing. isFavorite: \(isFavorite)") + } + completion(folder) + } + } + + private func updateParentAndSave(of item: BookmarkItemManagedObject, + parentID: NSManagedObjectID?, + context: NSManagedObjectContext, + completion: BookmarkItemSavedMainThreadCompletion? = nil) { + + func updateParentAndSave(parent: BookmarkFolderManagedObject) { + item.parent = parent + + do { + try context.save() + } catch { + assertionFailure("Saving item failed") + completion?(nil, .contextSaveError) + return + } + + DispatchQueue.main.async { + completion?(item.objectID, nil) + } + } + + if let parentID = parentID { + let parentMO = try? context.existingObject(with: parentID) + guard let newParentMO = parentMO as? BookmarkFolderManagedObject else { + assertionFailure("Failed to get new parent") + completion?(nil, .fetchingParentFailed) + return + } + updateParentAndSave(parent: newParentMO) + } else { + self.getTopLevelFolder(isFavorite: item.isFavorite, onContext: context) { parent in + updateParentAndSave(parent: parent) + } + } + } +} diff --git a/DuckDuckGoTests/BookmarksTestHelpers.swift b/DuckDuckGoTests/BookmarksTestHelpers.swift new file mode 100644 index 0000000000..84644f61d1 --- /dev/null +++ b/DuckDuckGoTests/BookmarksTestHelpers.swift @@ -0,0 +1,93 @@ +// +// BookmarksTestHelpers.swift +// +// Copyright © 2022 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation +import Bookmarks +import CoreData +import XCTest + +struct BasicBookmarksStructure { + + static let topLevelTitles = ["1", "Folder", "2", "3"] + static let nestedTitles = ["Nested", "F1", "F2"] + static let favoriteTitles = ["1", "2", "F1", "3"] + + static func urlString(forName name: String) -> String { + "https://\(name).com" + } + + static func createBookmarksList(usingNames names: [String], + parent: BookmarkEntity, + in context: NSManagedObjectContext) -> [BookmarkEntity] { + + let bookmarks: [BookmarkEntity] = names.map { name in + let b = BookmarkEntity(context: context) + b.uuid = UUID().uuidString + b.title = name + b.url = urlString(forName: name) + b.isFolder = false + b.parent = parent + return b + } + return bookmarks + } + + static func populateDB(context: NSManagedObjectContext) { + + // Structure: + // Bookmark 1 + // Folder Folder -> + // - Folder Nested + // - Bookmark F1 + // - Bookmark F2 + // Bookmark 2 + // Bookmark 3 + // + // Favorites: 1 -> 2 -> F1 -> 3 + + BookmarkUtils.prepareFoldersStructure(in: context) + + guard let rootFolder = BookmarkUtils.fetchRootFolder(context), + let favoritesFolder = BookmarkUtils.fetchFavoritesFolder(context) else { + XCTFail("Couldn't find required folders") + return + } + + let topLevel = createBookmarksList(usingNames: topLevelTitles, parent: rootFolder, in: context) + + let parent = topLevel[1] + parent.url = nil + parent.isFolder = true + + let nestedLevel = createBookmarksList(usingNames: nestedTitles, parent: parent, in: context) + + nestedLevel[0].url = nil + nestedLevel[0].isFolder = true + + topLevel[0].addToFavorites(favoritesRoot: favoritesFolder) + topLevel[2].addToFavorites(favoritesRoot: favoritesFolder) + nestedLevel[1].addToFavorites(favoritesRoot: favoritesFolder) + topLevel[3].addToFavorites(favoritesRoot: favoritesFolder) + + do { + try context.save() + } catch { + XCTFail("Couldn't populate db: \(error.localizedDescription)") + } + } +} diff --git a/DuckDuckGoTests/BrokenSiteReportingTests.swift b/DuckDuckGoTests/BrokenSiteReportingTests.swift index 174b600c84..212bfaf5bc 100644 --- a/DuckDuckGoTests/BrokenSiteReportingTests.swift +++ b/DuckDuckGoTests/BrokenSiteReportingTests.swift @@ -36,6 +36,11 @@ final class BrokenSiteReportingTests: XCTestCase { private enum Resource { static let tests = "privacy-reference-tests/broken-site-reporting/tests.json" } + + override func tearDown() { + HTTPStubs.removeAllStubs() + super.tearDown() + } func testBrokenSiteReporting() throws { let testJSON = data.fromJsonFile(Resource.tests) diff --git a/DuckDuckGoTests/DatabaseMigrationTests.swift b/DuckDuckGoTests/DatabaseMigrationTests.swift new file mode 100644 index 0000000000..30cc1e506d --- /dev/null +++ b/DuckDuckGoTests/DatabaseMigrationTests.swift @@ -0,0 +1,157 @@ +// +// DatabaseMigrationTests.swift +// DuckDuckGo +// +// Copyright © 2019 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import XCTest +import CoreData +import BrowserServicesKit +@testable import Core +@testable import DuckDuckGo +import Persistence + +class DatabaseMigrationTests: XCTestCase { + + static var tempDBDir: URL { + FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString) + } + + static var mergedModel: NSManagedObjectModel = { + let mainBundle = Bundle.main + + return CoreDataDatabase.loadModel(from: mainBundle, named: "NetworkLeaderboard")! + }() + + let sourceDB = CoreDataDatabase(name: "Source", + containerLocation: tempDBDir, + model: mergedModel) + + let destinationDB = CoreDataDatabase(name: "Destination", + containerLocation: tempDBDir, + model: mergedModel) + + override func setUp() { + super.setUp() + + sourceDB.loadStore { _, error in + if let e = error { + XCTFail("Could not load store: \(e.localizedDescription)") + } + } + destinationDB.loadStore { _, error in + if let e = error { + XCTFail("Could not load store: \(e.localizedDescription)") + } + } + } + + override func tearDown() { + super.tearDown() + + cleanup(database: destinationDB) + cleanup(database: sourceDB) + } + + private func cleanup(database: CoreDataDatabase) { + let context = database.makeContext(concurrencyType: .mainQueueConcurrencyType) + context.deleteAll(entityDescriptions: [PPTrackerNetwork.entity(), + PPPageStats.entity()]) + try? context.save() + } + + private func populate(context: NSManagedObjectContext) { + let tn1 = PPTrackerNetwork(context: context) + tn1.name = "1" + let tn2 = PPTrackerNetwork(context: context) + tn2.name = "2" + + _ = PPPageStats(context: context) + + do { + try context.save() + } catch { + XCTFail("Could not save context: \(error.localizedDescription)") + } + } + + func testWhenDestinationIsEmptyThenMigrateAndClean() { + let destination = destinationDB.makeContext(concurrencyType: .mainQueueConcurrencyType) + let source = sourceDB.makeContext(concurrencyType: .mainQueueConcurrencyType) + + populate(context: source) + + var result = (try? destination.fetch(PPTrackerNetwork.fetchRequest())) ?? [] + XCTAssert(result.isEmpty) + + result = (try? source.fetch(PPTrackerNetwork.fetchRequest())) ?? [] + XCTAssert(result.count == 2) + + let migrated = expectation(description: "Migration finished") + DatabaseMigration.migrate(from: source, + to: destination, + with: { (source: PPTrackerNetwork, dest: PPTrackerNetwork) in + dest.name = source.name + }, + completion: { _ in migrated.fulfill() }) + + result = (try? destination.fetch(PPTrackerNetwork.fetchRequest())) ?? [] + XCTAssert(result.count == 2) + XCTAssert(destination.hasChanges == false) + + result = (try? source.fetch(PPTrackerNetwork.fetchRequest())) ?? [] + XCTAssert(result.isEmpty) + XCTAssert(source.hasChanges == false) + + wait(for: [migrated], timeout: 1) + } + + func testWhenDestinationIsNotEmptyThenSkipAndClean() { + let destination = destinationDB.makeContext(concurrencyType: .mainQueueConcurrencyType) + let source = sourceDB.makeContext(concurrencyType: .mainQueueConcurrencyType) + + populate(context: source) + populate(context: destination) + + var result: [PPTrackerNetwork] = (try? destination.fetch(PPTrackerNetwork.fetchRequest())) ?? [] + XCTAssert(result.count == 2) + + // Update name here, this change should be unsaved after migration + result.last?.name = "Updated" + + result = (try? source.fetch(PPTrackerNetwork.fetchRequest())) ?? [] + XCTAssert(result.count == 2) + + let migrated = expectation(description: "Migration finished") + DatabaseMigration.migrate(from: source, + to: destination, + with: { (source: PPTrackerNetwork, dest: PPTrackerNetwork) in + dest.name = source.name + }, + completion: { _ in migrated.fulfill() }) + + result = (try? destination.fetch(PPTrackerNetwork.fetchRequest())) ?? [] + XCTAssert(result.count == 2) + XCTAssert(destination.hasChanges) + let modified = destination.updatedObjects.first(where: { ($0 as? PPTrackerNetwork)?.name == "Updated" }) + XCTAssertNotNil(modified) + + result = (try? source.fetch(PPTrackerNetwork.fetchRequest())) ?? [] + XCTAssert(result.isEmpty) + + wait(for: [migrated], timeout: 1) + } +} diff --git a/DuckDuckGoTests/FaviconsTests.swift b/DuckDuckGoTests/FaviconsTests.swift index 05a394cca3..4a48a8c70b 100644 --- a/DuckDuckGoTests/FaviconsTests.swift +++ b/DuckDuckGoTests/FaviconsTests.swift @@ -20,27 +20,26 @@ import XCTest @testable import Core import Kingfisher +import CoreData +import Bookmarks class FaviconsTests: XCTestCase { private var favicons: Favicons! + + private var mockObjectID: NSManagedObjectID! + private var inMemoryStore: NSPersistentContainer! override func setUp() { super.setUp() - setupUserDefault(with: #file) - - BookmarkUserDefaults().bookmarks = [] - BookmarkUserDefaults().favorites = [] - - let url = URL(string: "http://duckduckgo.com")! - let simpleStore = MockBookmarkSearchStore() - simpleStore.bookmarks = [MockBookmark(title: "bookmark test 1", url: url, isFavorite: false)] - let engine = BookmarksCachingSearch(bookmarksStore: simpleStore) + inMemoryStore = CoreData.createInMemoryPersistentContainer(modelName: "BookmarksModel", + bundle: Bookmarks.bundle) + BookmarkUtils.prepareFoldersStructure(in: inMemoryStore.viewContext) + mockObjectID = BookmarkUtils.fetchRootFolder(inMemoryStore.viewContext)?.objectID + XCTAssertNotNil(mockObjectID) favicons = Favicons(sourcesProvider: DefaultFaviconSourcesProvider(), - bookmarksStore: BookmarkUserDefaults(), - bookmarksCachingSearch: engine, downloader: NotFoundCachingDownloader()) Favicons.Constants.tabsCache.clearDiskCache() @@ -53,19 +52,11 @@ class FaviconsTests: XCTestCase { override func tearDownWithError() throws { favicons = nil + mockObjectID = nil + inMemoryStore = nil try super.tearDownWithError() } - - func testWhenFreshInstallThenNeedsMigration() { - XCTAssertTrue(favicons.needsMigration) - let migrationExpectation = expectation(description: "migrateIfNeeded") - favicons.migrateIfNeeded { - migrationExpectation.fulfill() - } - waitForExpectations(timeout: 5.0, handler: nil) - XCTAssertFalse(favicons.needsMigration) - } func testWhenGeneratingKingfisherOptionsThenOptionsAreConfiguredCorrectly() { diff --git a/DuckDuckGoTests/FavoriteListViewModelTests.swift b/DuckDuckGoTests/FavoriteListViewModelTests.swift new file mode 100644 index 0000000000..f8c704050e --- /dev/null +++ b/DuckDuckGoTests/FavoriteListViewModelTests.swift @@ -0,0 +1,185 @@ +// +// FavoriteListViewModelTests.swift +// +// Copyright © 2022 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import XCTest +import CoreData +import Common +import Persistence +import Bookmarks +import DuckDuckGo + +private extension FavoritesListViewModel { + + convenience init(bookmarksDatabase: CoreDataDatabase) { + self.init(bookmarksDatabase: bookmarksDatabase, + errorEvents: .init(mapping: { event, _, _, _ in + XCTFail("Unexpected error: \(event)") + })) + } +} + +class FavoriteListViewModelTests: XCTestCase { + + var db: CoreDataDatabase! + + override func setUpWithError() throws { + try super.setUpWithError() + + let model = CoreDataDatabase.loadModel(from: Bookmarks.bundle, named: "BookmarksModel")! + + db = CoreDataDatabase(name: "Test", containerLocation: tempDBDir(), model: model) + db.loadStore() + + let mainContext = db.makeContext(concurrencyType: .mainQueueConcurrencyType, name: "TestContext") + BasicBookmarksStructure.populateDB(context: mainContext) + } + + override func tearDownWithError() throws { + try super.tearDownWithError() + + try db.tearDown(deleteStores: true) + } + + func testWhenFavoritesExistThenTheyAreFetched() { + + let viewModel = FavoritesListViewModel(bookmarksDatabase: db) + + let result = viewModel.favorites + + let names = result.map { $0.title } + XCTAssertEqual(names, BasicBookmarksStructure.favoriteTitles) + } + + func testWhenDeletingAFavoriteThenItIsRemoved() { + + let viewModel = FavoritesListViewModel(bookmarksDatabase: db) + + let result = viewModel.favorites + viewModel.removeFavorite(result[1]) + + let newModel = FavoritesListViewModel(bookmarksDatabase: db) + let newResult = newModel.favorites + + var oldNames = result.map { $0.title } + _ = oldNames.remove(at: 1) + let newNames = newResult.map { $0.title } + XCTAssertEqual(oldNames, newNames) + } + + func testWhenMovingFavoriteThenItGoesToNewPosition() { + + let viewModel = FavoritesListViewModel(bookmarksDatabase: db) + let result = viewModel.favorites + + viewModel.moveFavorite(result[1], fromIndex: 1, toIndex: 3) + + let newModel = FavoritesListViewModel(bookmarksDatabase: db) + let newResult = newModel.favorites + + XCTAssertEqual(result[0].objectID, newResult[0].objectID) + XCTAssertEqual(result[1].objectID, newResult[3].objectID) + XCTAssertEqual(result[2].objectID, newResult[1].objectID) + XCTAssertEqual(result[3].objectID, newResult[2].objectID) + XCTAssertEqual(result.count, newResult.count) + } + + func testWhenContextSavesThenChangesArePropagated() { + + let viewModel = FavoritesListViewModel(bookmarksDatabase: db) + let listeningViewModel = FavoritesListViewModel(bookmarksDatabase: db) + + let expectation = expectation(description: "Changes propagated") + + withExtendedLifetime(listeningViewModel.externalUpdates.sink { _ in + expectation.fulfill() + }) { + let startState = viewModel.favorites + viewModel.removeFavorite(startState[0]) + + waitForExpectations(timeout: 1) + + let otherResults = listeningViewModel.favorites + XCTAssertEqual(otherResults.count + 1, startState.count) + XCTAssertEqual(otherResults.count, viewModel.favorites.count) + } + } + + // MARK: Errors + + func testWhenUsingWrongIndexesThenNothingHappens() { + + var expectedEvents: [BookmarksModelError] = [.favoritesListIndexNotMatchingBookmark, + .indexOutOfRange(.favorites), + .indexOutOfRange(.favorites)].reversed() + + let expectation = expectation(description: "Errors reported") + expectation.expectedFulfillmentCount = 3 + let viewModel = FavoritesListViewModel(bookmarksDatabase: db, + errorEvents: .init(mapping: { event, _, _, _ in + let expectedEvent = expectedEvents.popLast() + XCTAssertEqual(event, expectedEvent) + expectation.fulfill() + })) + + let result = viewModel.favorites + + let first = result[0] + let second = result[1] + + // Wrong indexes + viewModel.moveFavorite(first, + fromIndex: 1, + toIndex: 0) + + // Out of bounds `from` + viewModel.moveFavorite(first, + fromIndex: 10, + toIndex: 1) + + // Out of bounds `to` + viewModel.moveFavorite(first, + fromIndex: 0, + toIndex: 10) + + let newViewModel = FavoritesListViewModel(bookmarksDatabase: db) + let newResult = newViewModel.favorites + let newFirst = newResult[0] + let newSecond = newResult[1] + + XCTAssertEqual(first.objectID, newFirst.objectID) + XCTAssertEqual(second.objectID, newSecond.objectID) + XCTAssertEqual(result.count, newResult.count) + + waitForExpectations(timeout: 1) + } + + func testWhenRootIsMissingThenErrorIsReported() throws { + let context = db.makeContext(concurrencyType: .mainQueueConcurrencyType) + context.deleteAll(entityDescriptions: [BookmarkEntity.entity(in: context)]) + try context.save() + + let expectation = expectation(description: "Error reported") + _ = FavoritesListViewModel(bookmarksDatabase: db, + errorEvents: .init(mapping: { event, _, _, _ in + XCTAssertEqual(event, .fetchingRootItemFailed(.favorites)) + expectation.fulfill() + })) + + waitForExpectations(timeout: 1) + } +} diff --git a/DuckDuckGoTests/MenuBookmarksViewModelTests.swift b/DuckDuckGoTests/MenuBookmarksViewModelTests.swift new file mode 100644 index 0000000000..f101cde3c6 --- /dev/null +++ b/DuckDuckGoTests/MenuBookmarksViewModelTests.swift @@ -0,0 +1,143 @@ +// +// MenuBookmarksViewModelTests.swift +// +// Copyright © 2022 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation +import XCTest +import Bookmarks +import Persistence +import DuckDuckGo + +private extension MenuBookmarksViewModel { + + convenience init(bookmarksDatabase: CoreDataDatabase) { + self.init(bookmarksDatabase: bookmarksDatabase, + errorEvents: .init(mapping: { event, _, _, _ in + XCTFail("Unexpected error: \(event)") + })) + } +} + +class MenuBookmarksViewModelTests: XCTestCase { + + let url = URL(string: "https://test.com")! + var db: CoreDataDatabase! + + override func setUpWithError() throws { + try super.setUpWithError() + + let model = CoreDataDatabase.loadModel(from: Bookmarks.bundle, named: "BookmarksModel")! + + db = CoreDataDatabase(name: "Test", containerLocation: tempDBDir(), model: model) + db.loadStore() + + let mainContext = db.makeContext(concurrencyType: .mainQueueConcurrencyType, name: "TestContext") + BasicBookmarksStructure.populateDB(context: mainContext) + } + + override func tearDownWithError() throws { + try super.tearDownWithError() + + try db.tearDown(deleteStores: true) + } + + private func validateNewBookmark(_ bookmark: BookmarkEntity?) { + guard let bookmark = bookmark else { XCTFail("Missing bookmark"); return} + XCTAssertNotNil(bookmark) + XCTAssertFalse(bookmark.isFavorite) + XCTAssertNil(bookmark.favoriteFolder) + XCTAssertEqual(bookmark, bookmark.parent?.childrenArray.last) + } + + private func validateNewFavorite(_ favorite: BookmarkEntity?) { + guard let favorite = favorite else { XCTFail("Missing favorite"); return } + XCTAssert(favorite.isFavorite) + XCTAssertNotNil(favorite.favoriteFolder) + XCTAssertEqual(favorite, favorite.parent?.childrenArray.last) + XCTAssertEqual(favorite, favorite.favoriteFolder?.favorites?.lastObject as? BookmarkEntity) + } + + func testWhenCheckingBookmarkStatusThenReturnOneIfFound() { + let model = MenuBookmarksViewModel(bookmarksDatabase: db) + + XCTAssertNil(model.bookmark(for: URL(string: BasicBookmarksStructure.urlString(forName: "0"))!)) + XCTAssertNotNil(model.bookmark(for: URL(string: BasicBookmarksStructure.urlString(forName: "1"))!)) + XCTAssertNotNil(model.bookmark(for: URL(string: BasicBookmarksStructure.urlString(forName: "F2"))!)) + + XCTAssertNil(model.favorite(for: URL(string: BasicBookmarksStructure.urlString(forName: "F2"))!)) + XCTAssertNotNil(model.favorite(for: URL(string: BasicBookmarksStructure.urlString(forName: "1"))!)) + } + + func testWhenAddingBookmarkThenNewEntryIsCreated() { + let model = MenuBookmarksViewModel(bookmarksDatabase: db) + + XCTAssertNil(model.bookmark(for: url)) + model.createBookmark(title: "test", url: url) + validateNewBookmark(model.bookmark(for: url)) + + // Validate if other context will reflect same state + let anotherModel = MenuBookmarksViewModel(bookmarksDatabase: db) + validateNewBookmark(anotherModel.bookmark(for: url)) + } + + func testWhenAddingNewAsFavoriteThenNewEntryIsCreated() { + let model = MenuBookmarksViewModel(bookmarksDatabase: db) + + XCTAssertNil(model.bookmark(for: url)) + model.createOrToggleFavorite(title: "test", url: url) + validateNewFavorite(model.bookmark(for: url)) + + // Validate if other context will reflect same state + let anotherModel = MenuBookmarksViewModel(bookmarksDatabase: db) + validateNewFavorite(anotherModel.bookmark(for: url)) + } + + func testWhenAddingExistingAsFavoriteThenBookmarkIsUpdated() { + let model = MenuBookmarksViewModel(bookmarksDatabase: db) + + XCTAssertNil(model.bookmark(for: url)) + model.createBookmark(title: "test", url: url) + let newBookmark = model.bookmark(for: url) + let topLevelCount = newBookmark?.parent?.childrenArray.count ?? 0 + validateNewBookmark(newBookmark) + model.createOrToggleFavorite(title: "test", url: url) + validateNewFavorite(newBookmark) + + // Validate if other context will reflect same state + let anotherModel = MenuBookmarksViewModel(bookmarksDatabase: db) + let anotherBookmark = anotherModel.bookmark(for: url) + let anotherLevelCount = newBookmark?.parent?.childrenArray.count ?? 0 + validateNewFavorite(anotherBookmark) + + XCTAssertEqual(topLevelCount, anotherLevelCount) + } + + func testWhenRemovingFavoriteThenBookmarkIsUpdated() { + let model = MenuBookmarksViewModel(bookmarksDatabase: db) + + XCTAssertNil(model.bookmark(for: url)) + model.createOrToggleFavorite(title: "test", url: url) + let newBookmark = model.bookmark(for: url) + validateNewFavorite(newBookmark) + model.createOrToggleFavorite(title: "test", url: url) + validateNewBookmark(newBookmark) + + // Validate if other context will reflect same state + let anotherModel = MenuBookmarksViewModel(bookmarksDatabase: db) + validateNewBookmark(anotherModel.bookmark(for: url)) + } +} diff --git a/DuckDuckGoTests/MockBookmarksCoreDataStorage.swift b/DuckDuckGoTests/MockBookmarksCoreDataStorage.swift index 4319b3b1c0..b47d424fee 100644 --- a/DuckDuckGoTests/MockBookmarksCoreDataStorage.swift +++ b/DuckDuckGoTests/MockBookmarksCoreDataStorage.swift @@ -19,59 +19,33 @@ import Foundation import CoreData -import os.log +import Bookmarks +import Persistence @testable import DuckDuckGo @testable import Core -class MockBookmarksCoreDataStore: BookmarksCoreDataStorage { - - override init() { - super.init() - - persistentContainer = NSPersistentContainer( - name: BookmarksCoreDataStorage.Constants.databaseName, - managedObjectModel: BookmarksCoreDataStorage.managedObjectModel - ) - - let storeDescription = NSPersistentStoreDescription() - storeDescription.type = NSInMemoryStoreType - storeDescription.url = URL(fileURLWithPath: "/dev/null") - - persistentContainer.persistentStoreDescriptions = [storeDescription] - - persistentContainer.loadPersistentStores { _, error in - if let error = error as NSError? { - // We'll throw a fatalError() because we can't really proceed without loading the PersistentStore - fatalError("loadPersistentStore failed \(error), \(error.userInfo)") - } - } - - viewContext = persistentContainer.viewContext +class MockBookmarksDatabase { + + static func tempDBDir() -> URL { + FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString) } - - func saveContext() { - viewContext.performAndWait { - if viewContext.hasChanges { + + static func make(prepareFolderStructure: Bool = true) -> CoreDataDatabase { + let db = BookmarksDatabase.make(location: tempDBDir()) + db.loadStore() + + if prepareFolderStructure { + let context = db.makeContext(concurrencyType: .privateQueueConcurrencyType) + context.performAndWait { do { - try viewContext.save() + BookmarkUtils.prepareFoldersStructure(in: context) + try context.save() } catch { - os_log("Failed to save context %s", log: generalLog, type: .error, error.localizedDescription) + fatalError("Could not setup mock DB") } } } - } - - override func getTemporaryPrivateContext() -> NSManagedObjectContext { - return viewContext - } - - override func loadStoreAndCaches(andMigrate handler: @escaping (NSManagedObjectContext) -> Void) { - cacheReadOnlyTopLevelBookmarksFolder() - cacheReadOnlyTopLevelFavoritesFolder() - - NotificationCenter.default.addObserver(self, - selector: #selector(objectsDidChange), - name: .NSManagedObjectContextObjectsDidChange, - object: nil) + + return db } } diff --git a/DuckDuckGoTests/bookmarks_30k.html b/DuckDuckGoTests/bookmarks_30k.html new file mode 100644 index 0000000000..8f00095951 --- /dev/null +++ b/DuckDuckGoTests/bookmarks_30k.html @@ -0,0 +1,32765 @@ + + + + Bookmarks +

Bookmarks

+

+

abcd

+

+

efgh

+

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

cdefghijklmn

+

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

ghij

+

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

noprstuw

+

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

lmnoprst

+

+

wxyzabcdefgh

+

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

abcd

+

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

ijkl

+

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

prstuwxy

+

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+ \ No newline at end of file diff --git a/DuckDuckGoTests/bookmarks_3k.html b/DuckDuckGoTests/bookmarks_3k.html new file mode 100644 index 0000000000..8f00095951 --- /dev/null +++ b/DuckDuckGoTests/bookmarks_3k.html @@ -0,0 +1,32765 @@ + + + + Bookmarks +

Bookmarks

+

+

abcd

+

+

efgh

+

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

cdefghijklmn

+

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

ghij

+

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

noprstuw

+

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

lmnoprst

+

+

wxyzabcdefgh

+

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

abcd

+

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

ijkl

+

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

prstuwxy

+

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+ \ No newline at end of file diff --git a/IntegrationTests copy-Info.plist b/IntegrationTests copy-Info.plist new file mode 100644 index 0000000000..64d65ca495 --- /dev/null +++ b/IntegrationTests copy-Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/PerformanceTests/BookmarksEditModelPerformanceTests.swift b/PerformanceTests/BookmarksEditModelPerformanceTests.swift new file mode 100644 index 0000000000..5b064bb9c4 --- /dev/null +++ b/PerformanceTests/BookmarksEditModelPerformanceTests.swift @@ -0,0 +1,62 @@ +// +// BookmarksEditModelPerformanceTests.swift +// DuckDuckGo +// +// Copyright © 2022 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import XCTest +import Bookmarks +import Persistence +import CoreData +@testable import Core +@testable import DuckDuckGo + +class BookmarksEditModelPerformanceTests: XCTestCase { + + var db: CoreDataDatabase! + + override func setUpWithError() throws { + try super.setUpWithError() + let model = CoreDataDatabase.loadModel(from: Bookmarks.bundle, named: "BookmarksModel")! + + let dir = tempDBDir() + db = CoreDataDatabase(name: "Test", containerLocation: dir, model: model) + db.loadStore() + try populateData() + } + + override func tearDownWithError() throws { + try super.tearDownWithError() + + try db.tearDown(deleteStores: true) + } + + func populateData() throws { + let context = db.makeContext(concurrencyType: .mainQueueConcurrencyType) + // 30k+ entries + try BookmarksTestData().generate(bookmarksPerFolder: 21, foldersPerFolder: 4, levels: 5, in: context) + } + + func testRefreshPerformance() { + + measure { + let time = CACurrentMediaTime() + let e = BookmarkEditorViewModel(creatingFolderWithParentID: nil, bookmarksDatabase: db) + print("==============================") + print("Completed in \(CACurrentMediaTime() - time)") + } + } +} diff --git a/PerformanceTests/BookmarksExportPerformanceTests.swift b/PerformanceTests/BookmarksExportPerformanceTests.swift new file mode 100644 index 0000000000..791cd2f122 --- /dev/null +++ b/PerformanceTests/BookmarksExportPerformanceTests.swift @@ -0,0 +1,83 @@ +// +// BookmarksExportPerformanceTests.swift +// DuckDuckGo +// +// Copyright © 2022 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import XCTest +import Bookmarks +import Persistence +import CoreData +@testable import Core +@testable import DuckDuckGo + +class BookmarksExportPerformanceTests: XCTestCase { + + var db: CoreDataDatabase! + + override func setUp() async throws { + try await super.setUp() + let model = CoreDataDatabase.loadModel(from: Bookmarks.bundle, named: "BookmarksModel")! + + let dir = tempDBDir() + db = CoreDataDatabase(name: "Test", containerLocation: dir, model: model) + db.loadStore() + + let context = db.makeContext(concurrencyType: .mainQueueConcurrencyType) + BookmarkUtils.prepareFoldersStructure(in: context) + try? context.save() + + let html = loadHtmlFile("bookmarks_3k.html") + + let importer = await BookmarksImporter(coreDataStore: db) + _ = await importer.parseAndSave(html: html) + } + + override func tearDown() { + super.tearDown() + + try? db.tearDown(deleteStores: true) + } + + func loadHtmlFile(_ fileName: String) -> String { + guard let data = try? FileLoader().load(fileName: fileName, fromBundle: Bundle(for: type(of: self))), + let html = String(data: data, encoding: .utf8) else { + fatalError("Unable to load \(fileName)") + } + + return html + } + + func testExportPerformance() { + + measure { + let time = CACurrentMediaTime() + let expectation = expectation(description: "Exported") + Task { + let exporter = await BookmarksExporter(coreDataStore: db) + _ = try await exporter.exportBookmarksToContent() + expectation.fulfill() + } + + wait(for: [expectation], timeout: 30) + print("==============================") + print("Completed in \(CACurrentMediaTime() - time)") + } + + } + +} + diff --git a/PerformanceTests/BookmarksImportPerformanceTests.swift b/PerformanceTests/BookmarksImportPerformanceTests.swift new file mode 100644 index 0000000000..b7a5298751 --- /dev/null +++ b/PerformanceTests/BookmarksImportPerformanceTests.swift @@ -0,0 +1,94 @@ +// +// BookmarksImportPerformanceTests.swift +// DuckDuckGo +// +// Copyright © 2022 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import XCTest +import Bookmarks +import Persistence +import CoreData +@testable import Core +@testable import DuckDuckGo + +class BookmarksImportPerformanceTests: XCTestCase { + + var model: NSManagedObjectModel! + + var databasesToTearDown = [CoreDataDatabase]() + + override func setUpWithError() throws { + try super.setUpWithError() + model = CoreDataDatabase.loadModel(from: Bookmarks.bundle, named: "BookmarksModel")! + } + + override func tearDownWithError() throws { + try super.tearDownWithError() + + for db in databasesToTearDown { + try db.tearDown(deleteStores: true) + } + } + + func loadHtmlFile(_ fileName: String) -> String { + guard let data = try? FileLoader().load(fileName: fileName, fromBundle: Bundle(for: type(of: self))), + let html = String(data: data, encoding: .utf8) else { + fatalError("Unable to load \(fileName)") + } + + return html + } + + func testImportPerformance() { + + let html = loadHtmlFile("bookmarks_30k.html") + + measureMetrics(XCTestCase.defaultPerformanceMetrics, automaticallyStartMeasuring: false) { + + let dir = tempDBDir() + let db = CoreDataDatabase(name: "Test", containerLocation: dir, model: model) + db.loadStore() + databasesToTearDown.append(db) + + let context = db.makeContext(concurrencyType: .mainQueueConcurrencyType) + BookmarkUtils.prepareFoldersStructure(in: context) + try? context.save() + + let expectation = expectation(description: "Import completed") + let time = CACurrentMediaTime() + startMeasuring() + + Task { + let importer = await BookmarksImporter(coreDataStore: db) + let result = await importer.parseAndSave(html: html) + switch result { + case .failure: + XCTFail("Could not import bookmarks") + default: + break + } + expectation.fulfill() + } + + wait(for: [expectation], timeout: 120) + stopMeasuring() + print("==============================") + print("Completed in \(CACurrentMediaTime() - time)") + } + } + + +} diff --git a/PerformanceTests/BookmarksSearchPerformanceTests.swift b/PerformanceTests/BookmarksSearchPerformanceTests.swift new file mode 100644 index 0000000000..312ebfe8f8 --- /dev/null +++ b/PerformanceTests/BookmarksSearchPerformanceTests.swift @@ -0,0 +1,83 @@ +// +// BookmarksSearchPerformanceTests.swift +// DuckDuckGo +// +// Copyright © 2022 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import XCTest +import Bookmarks +import Persistence +import CoreData +@testable import Core +@testable import DuckDuckGo + +func tempDBDir() -> URL { + FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString) +} + +class BookmarksSearchPerformanceTests: XCTestCase { + + var db: CoreDataDatabase! + + override func setUpWithError() throws { + try super.setUpWithError() + let model = CoreDataDatabase.loadModel(from: Bookmarks.bundle, named: "BookmarksModel")! + + let dir = tempDBDir() + db = CoreDataDatabase(name: "Test", containerLocation: dir, model: model) + db.loadStore() + try populateData() + } + + override func tearDownWithError() throws { + try super.tearDownWithError() + + try db.tearDown(deleteStores: true) + } + + func populateData() throws { + let context = db.makeContext(concurrencyType: .mainQueueConcurrencyType) + // 30k+ entries + try BookmarksTestData().generate(bookmarksPerFolder: 21, foldersPerFolder: 4, levels: 5, in: context) + } + + func testCacheCreationPerformance() { + _ = BookmarksCachingSearch(bookmarksStore: CoreDataBookmarksSearchStore(bookmarksStore: db)) + + measure { + Thread.sleep(forTimeInterval: 1) + _ = BookmarksCachingSearch(bookmarksStore: CoreDataBookmarksSearchStore(bookmarksStore: db)) + } + } + + func testSimpleSearchPerformance() { + let search = BookmarksCachingSearch(bookmarksStore: CoreDataBookmarksSearchStore(bookmarksStore: db)) + + measure { + let result = search.search(query: "ab") + XCTAssertFalse(result.isEmpty) + } + } + + func testComplexSearchPerformance() { + let search = BookmarksCachingSearch(bookmarksStore: CoreDataBookmarksSearchStore(bookmarksStore: db)) + + measure { + let result = search.search(query: "a ab abc abcd") + XCTAssertFalse(result.isEmpty) + } + } +} diff --git a/PerformanceTests/BookmarksTestData.swift b/PerformanceTests/BookmarksTestData.swift new file mode 100644 index 0000000000..3b347a1db6 --- /dev/null +++ b/PerformanceTests/BookmarksTestData.swift @@ -0,0 +1,181 @@ +// +// BookmarksTestData.swift +// DuckDuckGo +// +// Copyright © 2022 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation +import Bookmarks +import CoreData + +class BookmarksTestData { + + let baseStringsSet = ["abcd", + "bcde", + "cdef", + "defg", + "efgh", + "fghi", + "ghij", + "hijk", + "ijkl", + "jklm", + "jklmnopr", + "klmnoprs", + "lmnoprst", + "mnoprstu", + "noprstuw", + "oprstuwx", + "prstuwxy", + "rstuwxyz", + "stuwxyza", + "tuwxyzab", + "tuwxyzabcdef", + "uwxyzabcdefg", + "wxyzabcdefgh", + "xyzabcdefghi", + "yzabcdefghij", + "zabcdefghijk", + "abcdefghijkl", + "bcdefghijklm", + "cdefghijklmn", + "defghijklmno"] + + func generateBookmarksData(number: Int, subdomains: Int, pathSuffixes: Int) -> [(title: String, url: String)] { + + var it = 0 + var result = [(title: String, url: String)]() + + // Mark last used suffix/subdomain component + var subdomainMark = 0 + var suffixesMark = 10 + + while it < number { + guard result.count < number else { break } + + let tld = baseStringsSet[it] + it += 1 + + var title = tld + + var path = "/" + var addSuffixes = pathSuffixes + while addSuffixes > 0 { + + path += baseStringsSet[suffixesMark] + suffixesMark += 1 + addSuffixes -= 1 + } + + var host = tld + ".com" + var addSubdomains = subdomains + while addSubdomains > 0 { + + host = baseStringsSet[subdomainMark] + "." + host + subdomainMark += 1 + addSubdomains -= 1 + } + + result.append((title: title, url: "https://\(host)\(path)")) + + if suffixesMark >= baseStringsSet.count { + suffixesMark = 0 + } + if subdomainMark >= baseStringsSet.count { + subdomainMark = 0 + } + if it >= baseStringsSet.count { + it = 0 + } + } + + return result + } + + func generateFoldersData(number: Int) -> [String] { + + var it = 0 + var result = [String]() + + while it < number { + guard result.count < number else { break } + + let title = baseStringsSet[it] + it += 1 + result.append(title) + + if it >= baseStringsSet.count { + it = 0 + } + } + + return result + } + + func generate(bookmarksPerFolder: Int, foldersPerFolder: Int, levels: Int, in context: NSManagedObjectContext) throws { + + var totalFolders = 0 + + for level in 1...levels { + totalFolders += Int(pow(Double(foldersPerFolder), Double(level))) + } + + let totalBookmarks = (totalFolders + 1) * bookmarksPerFolder + + let bookmarksData = generateBookmarksData(number: totalBookmarks, subdomains: 2, pathSuffixes: 2) + let foldersData = generateFoldersData(number: totalFolders) + + BookmarkUtils.prepareFoldersStructure(in: context) + + var bookmarksDataReference = 0 + var foldersDataReference = 0 + var foldersToPopulate = [ BookmarkUtils.fetchRootFolder(context)! ] + let favoritesRoot = BookmarkUtils.fetchFavoritesFolder(context)! + while let folder = foldersToPopulate.first { + foldersToPopulate.removeFirst() + + var addedFolders = 0 + while foldersDataReference < foldersData.count, addedFolders < foldersPerFolder { + let title = foldersData[foldersDataReference] + foldersDataReference += 1 + + let newFolder = BookmarkEntity.makeFolder(title: title, + parent: folder, + context: context) + + foldersToPopulate.append(newFolder) + addedFolders += 1 + } + + var addedBookmarks = 0 + while bookmarksDataReference < bookmarksData.count, addedBookmarks < bookmarksPerFolder { + let data = bookmarksData[bookmarksDataReference] + bookmarksDataReference += 1 + + let bookmark = BookmarkEntity.makeBookmark(title: data.title, + url: data.url, + parent: folder, context: context) + + if data.title.starts(with: "a") { + bookmark.addToFavorites(favoritesRoot: favoritesRoot) + } + addedBookmarks += 1 + } + } + + try context.save() + } +} diff --git a/PerformanceTests/bookmarks_30k.html b/PerformanceTests/bookmarks_30k.html new file mode 100644 index 0000000000..8f00095951 --- /dev/null +++ b/PerformanceTests/bookmarks_30k.html @@ -0,0 +1,32765 @@ + + + + Bookmarks +

Bookmarks

+

+

abcd

+

+

efgh

+

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

cdefghijklmn

+

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

ghij

+

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

noprstuw

+

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

lmnoprst

+

+

wxyzabcdefgh

+

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

abcd

+

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

ijkl

+

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

prstuwxy

+

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

prstuwxy

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

cdef

+

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

noprstuw

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

oprstuwx

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

prstuwxy

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

rstuwxyz

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

stuwxyza

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzab

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

tuwxyzabcdef

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

uwxyzabcdefg

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

wxyzabcdefgh

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

yzabcdefghij

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

zabcdefghijk

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

abcdefghijkl

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

bcdefghijklm

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

xyzabcdefghi

+

+

ghij

+

+

cdefghijklmn

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

abcd

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

bcde

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

cdef

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

defg

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

efgh

+

+

oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

fghi

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

ghij

+

+

bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

hijk

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +

+

ijkl

+

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

jklm

+

+

jklmnopr

+

+

uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

klmnoprs

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +

+

lmnoprst

+

+

defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

mnoprstu

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +

+ \ No newline at end of file diff --git a/PerformanceTests/bookmarks_3k.html b/PerformanceTests/bookmarks_3k.html new file mode 100644 index 0000000000..f0ba6e4c78 --- /dev/null +++ b/PerformanceTests/bookmarks_3k.html @@ -0,0 +1,3756 @@ + + + + Bookmarks +

Bookmarks

+

+

abcd

+

+

efgh

+

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +

+

zabcdefghijk

+

+

cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

abcdefghijkl

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +

+

bcdefghijklm

+

+

noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +

+

abcd

+

+

ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +

+

bcde

+

+

prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +

+

wxyzabcdefgh

+

+

cdef

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +

+

defg

+

+

cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +

+

efgh

+

+

jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

fghi

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +

+

efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

xyzabcdefghi

+

+

ghij

+

+

abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +

+

hijk

+

+

efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

ijkl

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +

+

jklm

+

+

tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +

+

jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

fghi

+

+

yzabcdefghij

+

+

jklmnopr

+

+

cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

klmnoprs

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +

+

lmnoprst

+

+

noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +

+

mnoprstu

+

+

wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +

+

zabcdefghijk

+

+

noprstuw

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +

+

oprstuwx

+

+

ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +

+

prstuwxy

+

+

prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

rstuwxyz

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +

+

cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

abcdefghijkl

+

+

stuwxyza

+

+

cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +

+

tuwxyzab

+

+

jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

tuwxyzabcdef

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +

+

uwxyzabcdefg

+

+

abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

xyzabcdefghi

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +

+

yzabcdefghij

+

+

tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +

+

zabcdefghijk

+

+

cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +

+

ghij

+

+

cdefghijklmn

+

+

abcdefghijkl

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +

+

bcdefghijklm

+

+

noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +

+

cdefghijklmn

+

+

wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +

+

wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +

+

bcde

+

+

prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

cdef

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +

+

defg

+

+

cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +

+

abcd

+

+

efgh

+

+

jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

fghi

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +

+

ghij

+

+

abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +

+

hijk

+

+

efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +

+

bcde

+

+

ijkl

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +

+

jklm

+

+

tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +

+

jklmnopr

+

+

cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

klmnoprs

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +

+

prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +

+

hijk

+

+

cdef

+

+

lmnoprst

+

+

noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +

+

mnoprstu

+

+

wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

noprstuw

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +

+

oprstuwx

+

+

ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +

+

defg

+

+

prstuwxy

+

+

prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

rstuwxyz

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +

+

stuwxyza

+

+

cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +

+

tuwxyzab

+

+

jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +

+

efgh

+

+

tuwxyzabcdef

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +

+

uwxyzabcdefg

+

+

abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +

+

wxyzabcdefgh

+

+

efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

xyzabcdefghi

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +

+

jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

fghi

+

+

yzabcdefghij

+

+

tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +

+

zabcdefghijk

+

+

cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

abcdefghijkl

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +

+

bcdefghijklm

+

+

noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +

+

efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +

+

bcde

+

+

ijkl

+

+

ghij

+

+

cdefghijklmn

+

+

wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +

+

abcd

+

+

ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +

+

bcde

+

+

prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +

+

hijk

+

+

cdef

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +

+

defg

+

+

cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +

+

efgh

+

+

jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

fghi

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +

+

efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

ijkl

+

+

ghij

+

+

abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +

+

hijk

+

+

efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

ijkl

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +

+

jklm

+

+

tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +

+

jklm

+

+

jklmnopr

+

+

cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

klmnoprs

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +

+

lmnoprst

+

+

noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +

+

mnoprstu

+

+

wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +

+

jklm

+

+

jklmnopr

+

+

noprstuw

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +

+

oprstuwx

+

+

ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +

+

prstuwxy

+

+

prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

rstuwxyz

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +

+

cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

klmnoprs

+

+

stuwxyza

+

+

cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +

+

tuwxyzab

+

+

jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

tuwxyzabcdef

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +

+

uwxyzabcdefg

+

+

abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +

+

lmnoprst

+

+

wxyzabcdefgh

+

+

efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

xyzabcdefghi

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +

+

yzabcdefghij

+

+

tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +

+

zabcdefghijk

+

+

cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +

+

mnoprstu

+

+

abcdefghijkl

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +

+

bcdefghijklm

+

+

noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +

+

cdefghijklmn

+

+

wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +

+

wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +

+

jklmnopr

+

+

noprstuw

+

+

abcd

+

+

ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +

+

bcde

+

+

prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

cdef

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +

+

defg

+

+

cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +

+

oprstuwx

+

+

efgh

+

+

jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

fghi

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +

+

ghij

+

+

abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +

+

hijk

+

+

efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +

+

prstuwxy

+

+

ijkl

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +

+

jklm

+

+

tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +

+

jklmnopr

+

+

cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

klmnoprs

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +

+

prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

rstuwxyz

+

+

lmnoprst

+

+

noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +

+

mnoprstu

+

+

wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

noprstuw

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +

+

oprstuwx

+

+

ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +

+

cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

klmnoprs

+

+

stuwxyza

+

+

prstuwxy

+

+

prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

rstuwxyz

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +

+

stuwxyza

+

+

cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +

+

tuwxyzab

+

+

jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +

+

uwxyzabcdefg

+

+

abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +

+

wxyzabcdefgh

+

+

efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

xyzabcdefghi

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +

+

jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +

+

zabcdefghijk

+

+

cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

abcdefghijkl

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +

+

bcdefghijklm

+

+

noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +

+

abcd

+

+

ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +

+

bcde

+

+

prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +

+

prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

cdef

+

+

lmnoprst

+

+

wxyzabcdefgh

+

+

cdef

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +

+

defg

+

+

cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +

+

efgh

+

+

jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

fghi

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +

+

efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

xyzabcdefghi

+

+

ghij

+

+

abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +

+

hijk

+

+

efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

ijkl

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +

+

jklm

+

+

tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +

+

yzabcdefghij

+

+

jklmnopr

+

+

cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

klmnoprs

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +

+

lmnoprst

+

+

noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +

+

mnoprstu

+

+

wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +

+

zabcdefghijk

+

+

noprstuw

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +

+

oprstuwx

+

+

ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +

+

prstuwxy

+

+

prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

rstuwxyz

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +

+

cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +

+

mnoprstu

+

+

abcdefghijkl

+

+

stuwxyza

+

+

cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +

+

tuwxyzab

+

+

jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

tuwxyzabcdef

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +

+

uwxyzabcdefg

+

+

abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +

+

bcdefghijklm

+

+

wxyzabcdefgh

+

+

efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

xyzabcdefghi

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +

+

yzabcdefghij

+

+

tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +

+

zabcdefghijk

+

+

cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +

+

cdefghijklmn

+

+

abcdefghijkl

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +

+

bcdefghijklm

+

+

noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +

+

cdefghijklmn

+

+

wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +

+

wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd

+

+

ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +

+

bcde

+

+

prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

cdef

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +

+

defg

+

+

cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +

+

wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

noprstuw

+

+

abcd

+

+

efgh

+

+

jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

fghi

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +

+

ghij

+

+

abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +

+

hijk

+

+

efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +

+

bcde

+

+

ijkl

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +

+

jklm

+

+

tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +

+

jklmnopr

+

+

cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

klmnoprs

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +

+

prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

cdef

+

+

lmnoprst

+

+

noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +

+

mnoprstu

+

+

wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

noprstuw

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +

+

oprstuwx

+

+

ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +

+

defg

+

+

prstuwxy

+

+

prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

rstuwxyz

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +

+

stuwxyza

+

+

cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +

+

tuwxyzab

+

+

jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +

+

oprstuwx

+

+

efgh

+

+

tuwxyzabcdef

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +

+

uwxyzabcdefg

+

+

abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +

+

wxyzabcdefgh

+

+

efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

xyzabcdefghi

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +

+

jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

fghi

+

+

yzabcdefghij

+

+

tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +

+

zabcdefghijk

+

+

cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

abcdefghijkl

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +

+

bcdefghijklm

+

+

noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +

+

ghij

+

+

cdefghijklmn

+

+

wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +

+

abcd

+

+

ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +

+

bcde

+

+

prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +

+

hijk

+

+

cdef

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +

+

defg

+

+

cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +

+

efgh

+

+

jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

fghi

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +

+

efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +

+

defg

+

+

prstuwxy

+

+

ijkl

+

+

ghij

+

+

abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +

+

hijk

+

+

efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

ijkl

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +

+

jklm

+

+

tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +

+

jklm

+

+

jklmnopr

+

+

cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

klmnoprs

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +

+

lmnoprst

+

+

noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +

+

mnoprstu

+

+

wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +

+

jklmnopr

+

+

noprstuw

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +

+

oprstuwx

+

+

ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +

+

prstuwxy

+

+

prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

rstuwxyz

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +

+

cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

klmnoprs

+

+

stuwxyza

+

+

cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +

+

tuwxyzab

+

+

jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

tuwxyzabcdef

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +

+

uwxyzabcdefg

+

+

abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +

+

prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

rstuwxyz

+

+

lmnoprst

+

+

wxyzabcdefgh

+

+

efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

xyzabcdefghi

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +

+

yzabcdefghij

+

+

tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +

+

zabcdefghijk

+

+

cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +

+

mnoprstu

+

+

abcdefghijkl

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +

+

bcdefghijklm

+

+

noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +

+

cdefghijklmn

+

+

wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +

+

wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

noprstuw

+

+

abcd

+

+

ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +

+

bcde

+

+

prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

cdef

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +

+

defg

+

+

cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +

+

oprstuwx

+

+

efgh

+

+

jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

fghi

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +

+

ghij

+

+

abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +

+

hijk

+

+

efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +

+

stuwxyza

+

+

prstuwxy

+

+

ijkl

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +

+

jklm

+

+

tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +

+

jklmnopr

+

+

cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

klmnoprs

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +

+

prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

rstuwxyz

+

+

lmnoprst

+

+

noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +

+

mnoprstu

+

+

wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

noprstuw

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +

+

oprstuwx

+

+

ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +

+

stuwxyza

+

+

prstuwxy

+

+

prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

rstuwxyz

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +

+

stuwxyza

+

+

cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +

+

tuwxyzab

+

+

jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +

+

uwxyzabcdefg

+

+

abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +

+

wxyzabcdefgh

+

+

efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

xyzabcdefghi

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +

+

jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +

+

tuwxyzab

+

+

tuwxyzabcdef

+

+

yzabcdefghij

+

+

tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +

+

zabcdefghijk

+

+

cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +
efgh +
fghi +

+

abcdefghijkl

+

+

ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +

+

bcdefghijklm

+

+

noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +

+

uwxyzabcdefg

+

+

cdefghijklmn

+

+

wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +

+

defghijklmno

+

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +

+

abcd

+

+

ijkl +
jklm +
jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +

+

bcde

+

+

prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +

+

abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +

+

wxyzabcdefgh

+

+

cdef

+

+

yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +

+

defg

+

+

cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +

+

efgh

+

+

jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

fghi

+

+

stuwxyza +
tuwxyzab +
tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +

+

efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

xyzabcdefghi

+

+

ghij

+

+

abcdefghijkl +
bcdefghijklm +
cdefghijklmn +
defghijklmno +
abcd +
bcde +
cdef +
defg +

+

hijk

+

+

efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +
jklmnopr +
klmnoprs +

+

ijkl

+

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +

+

jklm

+

+

tuwxyzabcdef +
uwxyzabcdefg +
wxyzabcdefgh +
xyzabcdefghi +
yzabcdefghij +
zabcdefghijk +
abcdefghijkl +
bcdefghijklm +

+

lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +
stuwxyza +
tuwxyzab +

+

jklmnopr +
klmnoprs +
lmnoprst +
mnoprstu +
noprstuw +
oprstuwx +
prstuwxy +
rstuwxyz +

+

cdef +
defg +
efgh +
fghi +
ghij +
hijk +
ijkl +
jklm +

+

abcd +
bcde +
cdef +
defg +
efgh +
fghi +
ghij +
hijk +

+ \ No newline at end of file diff --git a/Widgets/Widgets.swift b/Widgets/Widgets.swift index affaa17306..015dcdaece 100644 --- a/Widgets/Widgets.swift +++ b/Widgets/Widgets.swift @@ -22,6 +22,9 @@ import SwiftUI import Core import CoreData import Kingfisher +import Bookmarks +import os +import Persistence struct Favorite { @@ -42,10 +45,12 @@ struct Favorite { } -struct Provider: TimelineProvider { +class Provider: TimelineProvider { typealias Entry = FavoritesEntry + var bookmarksDB: CoreDataDatabase? + func getSnapshot(in context: Context, completion: @escaping (FavoritesEntry) -> Void) { createEntry(in: context) { entry in completion(entry) @@ -63,29 +68,23 @@ struct Provider: TimelineProvider { } } - private func coreDataFavoritesToFavorites(_ coreDataFavorites: [Bookmark], returningNoMoreThan maxLength: Int) -> [Favorite] { + private func coreDataFavoritesToFavorites(_ coreDataFavorites: [BookmarkEntity], returningNoMoreThan maxLength: Int) -> [Favorite] { - let coreDataFavorites: [Favorite] = coreDataFavorites.compactMap { - guard let url = $0.url, - !url.isBookmarklet() else { return nil } + let favorites: [Favorite] = coreDataFavorites.compactMap { favorite -> Favorite? in + guard let url = favorite.urlObject, + !url.isBookmarklet(), + let domain = url.host?.droppingWwwPrefix() + else { return nil } + return Favorite(url: DeepLinks.createFavoriteLauncher(forUrl: url), - domain: url.host?.droppingWwwPrefix() ?? "", - title: $0.displayTitle ?? "", + domain: domain, + title: favorite.title ?? domain, favicon: loadImageFromCache(forDomain: url.host) ) } - return Array(coreDataFavorites.prefix(maxLength)) + return Array(favorites.prefix(maxLength)) } - - private func getCoreDataFavorites(completion: @escaping ([Bookmark]) -> Void) { - - let coreData = BookmarksCoreDataStorage() - coreData.loadStoreOnlyForWidget() - coreData.favoritesUncachedForWidget { favorites in - completion(favorites) - } - } private func createEntry(in context: Context, completion: @escaping (FavoritesEntry) -> Void) { let maxFavorites: Int @@ -101,13 +100,27 @@ struct Provider: TimelineProvider { maxFavorites = 0 } - if maxFavorites > 0 { - getCoreDataFavorites { coreDataFavorites in - let favorites = coreDataFavoritesToFavorites(coreDataFavorites, returningNoMoreThan: maxFavorites) - - let entry = FavoritesEntry(date: Date(), favorites: favorites, isPreview: favorites.isEmpty && context.isPreview) - completion(entry) + if bookmarksDB == nil { + let db = BookmarksDatabase.make(readOnly: true) + os_log("BookmarksDatabase load store started") + db.loadStore { _, error in + guard error == nil else { return } + self.bookmarksDB = db } + os_log("BookmarksDatabase store loaded") + } + + if maxFavorites > 0, + let db = bookmarksDB { + let model = FavoritesListViewModel(bookmarksDatabase: db) + os_log("model created") + let dbFavorites = model.favorites + os_log("dbFavorites loaded %d", dbFavorites.count) + let favorites = coreDataFavoritesToFavorites(dbFavorites, returningNoMoreThan: maxFavorites) + os_log("favorites converted %d", favorites.count) + let entry = FavoritesEntry(date: Date(), favorites: favorites, isPreview: favorites.isEmpty && context.isPreview) + os_log("entry created") + completion(entry) } else { let entry = FavoritesEntry(date: Date(), favorites: [], isPreview: context.isPreview) completion(entry) diff --git a/Widgets/WidgetsExtension.entitlements b/Widgets/WidgetsExtension.entitlements index 4713024708..2dd2c82001 100644 --- a/Widgets/WidgetsExtension.entitlements +++ b/Widgets/WidgetsExtension.entitlements @@ -5,6 +5,7 @@ com.apple.security.application-groups $(GROUP_ID_PREFIX).bookmarks + $(GROUP_ID_PREFIX).database