From cf4c6c13510a18c15b228585f6f7ae859969cbd2 Mon Sep 17 00:00:00 2001 From: Tanisha Ray Date: Sat, 1 Nov 2025 13:57:14 +0530 Subject: [PATCH 01/33] setup file deleted --- setup_cpp.sh | 40 ---------------------------------------- 1 file changed, 40 deletions(-) delete mode 100755 setup_cpp.sh diff --git a/setup_cpp.sh b/setup_cpp.sh deleted file mode 100755 index a66ca3e..0000000 --- a/setup_cpp.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -# === Smart Autocomplete (C++) Project Scaffolder === -# Run: bash setup_cpp.sh - -ROOT="smart_autocomplete" -echo "๐Ÿ“ Creating C++ project: $ROOT" -mkdir -p $ROOT/{include,src,data,tests} - -# --- Header files --- -touch $ROOT/include/{tst.h,minheap.h,lru.h,kmp.h,stack.h,graph.h,freq_store.h,ranker.h} - -# --- Source files --- -touch $ROOT/src/{main.cpp,tst.cpp,minheap.cpp,lru.cpp,kmp.cpp,stack.cpp,graph.cpp,freq_store.cpp,ranker.cpp} - -# --- Data + Tests --- -touch $ROOT/data/seeds.txt -touch $ROOT/tests/{tst_test.cpp,lru_test.cpp,heap_test.cpp} - -# --- README + Makefile --- -touch $ROOT/README.md -cat << 'EOF' > $ROOT/Makefile -CXX = g++ -CXXFLAGS = -std=c++17 -O2 -Wall -Iinclude -SRC = $(wildcard src/*.cpp) -OBJ = $(SRC:.cpp=.o) -TARGET = smart_autocomplete - -all: \$(TARGET) - -\$(TARGET): \$(OBJ) - \$(CXX) \$(CXXFLAGS) -o \$@ \$(OBJ) - -clean: - rm -f \$(OBJ) \$(TARGET) -EOF - -echo "โœ… C++ Smart Autocomplete project scaffold created!" -tree $ROOT - From d92b1f82db7133f13d060732e09fd512d19a5f15 Mon Sep 17 00:00:00 2001 From: Tanisha Ray Date: Wed, 5 Nov 2025 02:46:00 +0530 Subject: [PATCH 02/33] tst.h file added --- smart_autocomplete/.gitignore | 3 ++ .../data/{seeds.txt => frequency.txt} | 0 smart_autocomplete/data/words.txt | 0 smart_autocomplete/include/tst.h | 39 +++++++++++++++++++ 4 files changed, 42 insertions(+) create mode 100644 smart_autocomplete/.gitignore rename smart_autocomplete/data/{seeds.txt => frequency.txt} (100%) create mode 100644 smart_autocomplete/data/words.txt diff --git a/smart_autocomplete/.gitignore b/smart_autocomplete/.gitignore new file mode 100644 index 0000000..4b5c2de --- /dev/null +++ b/smart_autocomplete/.gitignore @@ -0,0 +1,3 @@ +#virtual environments +venv/ +env/ \ No newline at end of file diff --git a/smart_autocomplete/data/seeds.txt b/smart_autocomplete/data/frequency.txt similarity index 100% rename from smart_autocomplete/data/seeds.txt rename to smart_autocomplete/data/frequency.txt diff --git a/smart_autocomplete/data/words.txt b/smart_autocomplete/data/words.txt new file mode 100644 index 0000000..e69de29 diff --git a/smart_autocomplete/include/tst.h b/smart_autocomplete/include/tst.h index e69de29..6d58560 100644 --- a/smart_autocomplete/include/tst.h +++ b/smart_autocomplete/include/tst.h @@ -0,0 +1,39 @@ +#ifndef TST_H +#define TST_H + +#include +#include +#include + +struct TSTNode { + char data; + bool isEndOfString; + std::shared_ptr left; + std::shared_ptr eq; + std::shared_ptr right; + + TSTNode(char c) : data(c), isEndOfString(false), + left(nullptr), eq(nullptr), right(nullptr) {} +}; + +class TST { +private: + std::shared_ptr root; + + std::shared_ptr insertUtil(std::shared_ptr node, + const std::string& word, int index); + + void collectWords(std::shared_ptr node, + std::string prefix, + std::vector& results); + + std::shared_ptr searchPrefix(const std::string& prefix); + +public: + TST(); + void insert(const std::string& word); + std::vector prefixSearch(const std::string& prefix, int k = 10); + bool search(const std::string& word); + void getAllWords(std::vector& results); +}; +#endif \ No newline at end of file From 9775e182b539bf3d96398268a8221709e2b1922e Mon Sep 17 00:00:00 2001 From: Tanisha Ray Date: Wed, 5 Nov 2025 02:50:09 +0530 Subject: [PATCH 03/33] tst.cpp file added --- smart_autocomplete/src/tst.cpp | 130 +++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) diff --git a/smart_autocomplete/src/tst.cpp b/smart_autocomplete/src/tst.cpp index e69de29..c3ad6aa 100644 --- a/smart_autocomplete/src/tst.cpp +++ b/smart_autocomplete/src/tst.cpp @@ -0,0 +1,130 @@ +#include "../include/tst.h" +#include + +TST::TST() : root(nullptr) {} + +std::shared_ptr TST::insertUtil(std::shared_ptr node, + const std::string& word, int index) { + if (node == nullptr) { + node = std::make_shared(word[index]); + } + + if (word[index] < node->data) { + node->left = insertUtil(node->left, word, index); + } else if (word[index] > node->data) { + node->right = insertUtil(node->right, word, index); + } else { + if (index < word.length() - 1) { + node->eq = insertUtil(node->eq, word, index + 1); + } else { + node->isEndOfString = true; + } + } + + return node; +} + +void TST::insert(const std::string& word) { + if (word.empty()) return; + root = insertUtil(root, word, 0); +} + +std::shared_ptr TST::searchPrefix(const std::string& prefix) { + if (prefix.empty()) return root; + + auto node = root; + int i = 0; + + while (node != nullptr && i < prefix.length()) { + if (prefix[i] < node->data) { + node = node->left; + } else if (prefix[i] > node->data) { + node = node->right; + } else { + i++; + if (i < prefix.length()) { + node = node->eq; + } + } + } + + return (i == prefix.length()) ? node : nullptr; +} + +void TST::collectWords(std::shared_ptr node, + std::string prefix, + std::vector& results) { + if (node == nullptr) return; + + collectWords(node->left, prefix, results); + + std::string current = prefix + node->data; + + if (node->isEndOfString) { + results.push_back(current); + } + + collectWords(node->eq, current, results); + collectWords(node->right, prefix, results); +} + +std::vector TST::prefixSearch(const std::string& prefix, int k) { + std::vector results; + + if (prefix.empty()) { + getAllWords(results); + if (results.size() > k) { + results.resize(k); + } + return results; + } + + auto node = searchPrefix(prefix); + + if (node == nullptr) { + return results; + } + + std::string base = prefix.substr(0, prefix.length() - 1); + + if (node->isEndOfString) { + results.push_back(prefix); + } + + collectWords(node->eq, prefix, results); + + if (results.size() > k) { + results.resize(k); + } + + return results; +} + +bool TST::search(const std::string& word) { + if (word.empty()) return false; + + auto node = root; + int i = 0; + + while (node != nullptr && i < word.length()) { + if (word[i] < node->data) { + node = node->left; + } else if (word[i] > node->data) { + node = node->right; + } else { + i++; + if (i < word.length()) { + node = node->eq; + } + } + } + + return (node != nullptr && i == word.length() && node->isEndOfString); +} + + +void TST::getAllWords(std::vector& results) { + collectWords(root, "", results); +} + + From 0b946dd54d1f7ed3af9f69c84374dc64556cf97a Mon Sep 17 00:00:00 2001 From: Anika438 Date: Tue, 11 Nov 2025 00:32:33 +0530 Subject: [PATCH 04/33] Update minheap.cpp --- smart_autocomplete/src/minheap.cpp | 67 ++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/smart_autocomplete/src/minheap.cpp b/smart_autocomplete/src/minheap.cpp index e69de29..4cf913d 100644 --- a/smart_autocomplete/src/minheap.cpp +++ b/smart_autocomplete/src/minheap.cpp @@ -0,0 +1,67 @@ +#include"../include/minheap.h" +#include +#include +using namespace std; +MinHeap::MinHeap(int k):maxSize(k){} +void MinHeap::heapifyUp(int index){ + while(index>0 && heap[parent(index)].first>heap[index].first){ + swap(heap[parent(index)],heap[index]); + index=parent(index); + } +} +void MinHeap::heapifyDown(int index) { + int smallest=index; + int left=leftChild(index); + int right=rightChild(index); + if(leftheap[0].first){ + heap[0]={score, word}; + heapifyDown(0); + } +} +pair MinHeap::extractMin(){ + if(heap.empty()){ + throw runtime_error("Heap is empty"); + } + auto minElement=heap[0]; + heap[0]=heap.back(); + heap.pop_back(); + if(!heap.empty()){ + heapifyDown(0); + } + return minElement; +} +pair MinHeap::getMin(){ + if (heap.empty()){ + throw runtime_error("Heap is empty"); + } + return heap[0]; +} +struct Comparator{ + bool operator()(const pair& a,const pair& b) const{ + return a.first>b.first; + } +}; +vector> MinHeap::getAll(){ + vector> result=heap; + sort(result.begin(),result.end(),Comparator()); + return result; +} +void MinHeap::clear() { + heap.clear(); +} From fdb041469c7b80d7d389f7753c2eca357f6285b2 Mon Sep 17 00:00:00 2001 From: AkshitaM1234 Date: Tue, 11 Nov 2025 18:47:45 +0530 Subject: [PATCH 05/33] Updated lru.cpp --- smart_autocomplete/src/lru.cpp | 90 ++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/smart_autocomplete/src/lru.cpp b/smart_autocomplete/src/lru.cpp index e69de29..f2b3c25 100644 --- a/smart_autocomplete/src/lru.cpp +++ b/smart_autocomplete/src/lru.cpp @@ -0,0 +1,90 @@ +#include "../include/lru.h" +using namespace std; + +lru_cache::lru_cache(int cap){ + this->cap = cap; + head = nullptr; + tail = nullptr; +} + +void lru_cache::addNodeToFront(Node* node){ + if(node == nullptr) return; + node->next = head; + node->prev = nullptr; + + if(head != nullptr) head->prev = node; + head = node; + + if(tail == nullptr) tail = node; +} + +void lru_cache::removeNode(Node* node){ + if(node == nullptr) return; + if(node == head){ + head = node->next; + if(head) head->prev = nullptr; + } + else if(node == tail){ + tail = node->prev; + if(tail) tail->next = nullptr; + } + else{ + node->prev->next = node->next; + node->next->prev = node->prev; + } + node->prev = nullptr; + node->next = nullptr; +} + +void lru_cache::moveNodeToFront(Node* node){ + removeNode(node); + addNodeToFront(node); +} + +void lru_cache::removeLRUNode(){ + if(tail == nullptr) return; + + cacheMap.erase(tail->key); + Node* old_tail = tail; + removeNode(old_tail); + delete old_tail; +} + +vector lru_cache::get(const string& key){ + if(cacheMap.find(key) == cacheMap.end()) return {}; + Node* node = cacheMap[key]; + moveNodeToFront(node); + return node->val; +} + +void lru_cache::put(const string& key, const vector& val){ + if(cacheMap.find(key) != cacheMap.end()){ + Node* node = cacheMap[key]; + node->val = val; + moveNodeToFront(node); + } + else{ + Node* new_node = new Node(key,val); + addNodeToFront(new_node); + cacheMap[key] = new_node; + + if((int)cacheMap.size()>cap) removeLRUNode(); + } +} + +bool lru_cache::exists(const string& key) { + return cacheMap.find(key) != cacheMap.end(); +} + +void lru_cache::clear() { + Node* curr = head; + while (curr != nullptr) { + Node* next = curr->next; + delete curr; + curr = next; + } + + head = nullptr; + tail = nullptr; + cacheMap.clear(); +} From 19f5c0257d1f8ecde7527b3e72ad37b26e979b92 Mon Sep 17 00:00:00 2001 From: AkshitaM1234 Date: Tue, 11 Nov 2025 18:48:31 +0530 Subject: [PATCH 06/33] Updated lru.h --- smart_autocomplete/include/lru.h | 43 ++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/smart_autocomplete/include/lru.h b/smart_autocomplete/include/lru.h index e69de29..3f1b4d8 100644 --- a/smart_autocomplete/include/lru.h +++ b/smart_autocomplete/include/lru.h @@ -0,0 +1,43 @@ +#ifndef LRU_H +#define LRU_H + +#include +#include +#include +using namespace std; + +struct Node{ + string key; + vector val; + Node* prev; + Node* next; + + Node(string k, vectorv){ + key=k; + val=v; + prev=nullptr; + next=nullptr; + } +}; + +class lru_cache{ +private: + int cap; + unordered_mapcacheMap; + Node* head; + Node* tail; + + void addNodeToFront(Node* node); + void removeNode(Node* node); + void moveNodeToFront(Node* node); + void removeLRUNode(); + +public: + lru_cache(int cap); + vectorget(const string& key); + void put(const string& key, const vector& val); + bool exists(const string& key); + void clear(); +}; + +#endif From 54de5d8e4d158c393fcc0a5a272d75e098fa8235 Mon Sep 17 00:00:00 2001 From: Maahi Ratanpara Date: Tue, 11 Nov 2025 18:56:45 +0530 Subject: [PATCH 07/33] Updated graph.h --- smart_autocomplete/include/graph.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/smart_autocomplete/include/graph.h b/smart_autocomplete/include/graph.h index e69de29..16f9414 100644 --- a/smart_autocomplete/include/graph.h +++ b/smart_autocomplete/include/graph.h @@ -0,0 +1,19 @@ +#ifndef GRAPH_H +#define GRAPH_H + +#include +#include +#include + +class CooccurrenceGraph { +private: + std::unordered_map> adjacencyList; + +public: + void addEdge(const std::string& from, const std::string& to); + double getBoost(const std::string& from, const std::string& to); + void display(); + int getEdgeWeight(const std::string& from, const std::string& to); +}; + +#endif \ No newline at end of file From f4ed409eb0115d4d253a1f0f86514d5ed6495ac1 Mon Sep 17 00:00:00 2001 From: AkshitaM1234 Date: Tue, 11 Nov 2025 18:59:22 +0530 Subject: [PATCH 08/33] Updated lru_test.cpp --- smart_autocomplete/tests/lru_test.cpp | 77 +++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/smart_autocomplete/tests/lru_test.cpp b/smart_autocomplete/tests/lru_test.cpp index e69de29..0cff96a 100644 --- a/smart_autocomplete/tests/lru_test.cpp +++ b/smart_autocomplete/tests/lru_test.cpp @@ -0,0 +1,77 @@ +#include +#include +#include "../include/lru.h" + +void testLRU() { + lru_cache cache(3); + + cache.put("a", {"apple", "apricot"}); + cache.put("b", {"banana", "berry"}); + cache.put("c", {"cherry", "coconut"}); + + assert(cache.exists("a")); + assert(cache.exists("b")); + assert(cache.exists("c")); + + auto result = cache.get("a"); + assert(result.size() == 2); + assert(result[0] == "apple"); + + std::cout << "LRU Basic Operations tests passed" << std::endl; +} + +void testLRUEviction() { + lru_cache cache(2); + + cache.put("a", {"apple"}); + cache.put("b", {"banana"}); + cache.put("c", {"cherry"}); + + assert(!cache.exists("a")); + assert(cache.exists("b")); + assert(cache.exists("c")); + + std::cout << "LRU Eviction tests passed" << std::endl; +} + +void testLRUUpdate() { + lru_cache cache(3); + + cache.put("a", {"apple"}); + cache.put("b", {"banana"}); + cache.put("c", {"cherry"}); + + cache.get("a"); + + cache.put("d", {"date"}); + + assert(cache.exists("a")); + assert(!cache.exists("b")); + assert(cache.exists("c")); + assert(cache.exists("d")); + + std::cout << "LRU Update tests passed" << std::endl; +} + +void testLRUEmpty() { + lru_cache cache(5); + + auto result = cache.get("nonexistent"); + assert(result.empty()); + assert(!cache.exists("test")); + + std::cout << "LRU Empty tests passed" << std::endl; +} + +int main() { + std::cout << "\nRunning LRU Cache Tests...\n" << std::endl; + + testLRU(); + testLRUEviction(); + testLRUUpdate(); + testLRUEmpty(); + + std::cout << "\n All LRU Cache tests passed!\n" << std::endl; + + return 0; +} From 231831c3ec8235af36c576c32f313186f5e4730c Mon Sep 17 00:00:00 2001 From: AkshitaM1234 Date: Tue, 11 Nov 2025 19:29:39 +0530 Subject: [PATCH 09/33] Updated kmp.cpp --- smart_autocomplete/src/kmp.cpp | 83 ++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/smart_autocomplete/src/kmp.cpp b/smart_autocomplete/src/kmp.cpp index e69de29..dc88c99 100644 --- a/smart_autocomplete/src/kmp.cpp +++ b/smart_autocomplete/src/kmp.cpp @@ -0,0 +1,83 @@ +#include "../include/kmp.h" +using namespace std; + +vector KMP::computeLPS (const string& pattern){ + int n = pattern.length(); + vector lps(n,0); + + int len = 0; + int i=1; + + while(i lps = computeLPS(pattern); + + while(i KMP::findAll (const string& text, const string& pattern){ + vectorpos; + + int n = text.length(); + int m = pattern.length(); + + vector lps = computeLPS(pattern); + + int i=0; + int j=0; + + while(i Date: Tue, 11 Nov 2025 19:30:08 +0530 Subject: [PATCH 10/33] Updated kmp.h --- smart_autocomplete/include/kmp.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/smart_autocomplete/include/kmp.h b/smart_autocomplete/include/kmp.h index e69de29..f04ccac 100644 --- a/smart_autocomplete/include/kmp.h +++ b/smart_autocomplete/include/kmp.h @@ -0,0 +1,15 @@ +#ifndef KMP_H +#define KMP_H +using namespace std; + +#include +#include + +class KMP { +private: + static vector computeLPS(const string& pattern); +public: + static bool contains(const string& text, const string& pattern); + static vector findAll(const string& text, const string& pattern); +}; + From a70b6f5debc521d156599773240ddc183483fd1e Mon Sep 17 00:00:00 2001 From: Anika438 Date: Wed, 12 Nov 2025 00:25:57 +0530 Subject: [PATCH 11/33] Update heap_test.cpp --- smart_autocomplete/tests/heap_test.cpp | 76 ++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/smart_autocomplete/tests/heap_test.cpp b/smart_autocomplete/tests/heap_test.cpp index e69de29..0acdb4a 100644 --- a/smart_autocomplete/tests/heap_test.cpp +++ b/smart_autocomplete/tests/heap_test.cpp @@ -0,0 +1,76 @@ +#include +#include +#include "../include/minheap.h" +using namespace std; + +void test1(){ + MinHeap heap(5); + heap.insert(3.0,"three"); + heap.insert(1.0,"one"); + heap.insert(5.0,"five"); + heap.insert(2.0,"two"); + assert(heap.size()==4); + auto minele=heap.getMin(); + assert(minele.first==1.0); + assert(minele.second=="one"); + cout<<"Heap insert and extract tests passed"<= all[1].first); + assert(all[1].first >= all[2].first); + assert(all[2].first >= all[3].first); + + std::cout << "โœ“ Heap GetAll tests passed\n"; +} + +// Test basic empty checks +void testHeapEmpty() { + MinHeap heap(5); + + assert(heap.isEmpty()); + assert(heap.size() == 0); + + heap.insert(1.0, "one"); + + assert(!heap.isEmpty()); + + std::cout << "โœ“ Heap Empty tests passed\n"; +} + +int main() { + std::cout << "\nRunning MinHeap Tests...\n\n"; + + testHeapInsertAndExtract(); + testHeapFixedSize(); + testHeapGetAll(); + testHeapEmpty(); + + std::cout << "\nโœ… All MinHeap tests passed!\n"; + return 0; +} From f5a79a0a5af07e46ece0c2beedfe2192ed8ab11d Mon Sep 17 00:00:00 2001 From: Anika438 Date: Wed, 12 Nov 2025 00:26:46 +0530 Subject: [PATCH 12/33] Update minheap.cpp --- smart_autocomplete/src/minheap.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/smart_autocomplete/src/minheap.cpp b/smart_autocomplete/src/minheap.cpp index 4cf913d..e13db0d 100644 --- a/smart_autocomplete/src/minheap.cpp +++ b/smart_autocomplete/src/minheap.cpp @@ -30,7 +30,7 @@ void MinHeap::insert(double score,const string& word) { heapifyUp(heap.size()-1); } else if(score>heap[0].first){ - heap[0]={score, word}; + heap[0]={score,word}; heapifyDown(0); } } @@ -65,3 +65,4 @@ vector> MinHeap::getAll(){ void MinHeap::clear() { heap.clear(); } + From d59c28c7a1dfbdd5655c532d9da6811509b19300 Mon Sep 17 00:00:00 2001 From: Maahi Ratanpara Date: Tue, 11 Nov 2025 19:05:49 +0530 Subject: [PATCH 13/33] Implement CooccurrenceGraph class with methods for adding edges, calculating boost, retrieving edge weights, and displaying the graph. --- smart_autocomplete/src/graph.cpp | 48 ++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/smart_autocomplete/src/graph.cpp b/smart_autocomplete/src/graph.cpp index e69de29..c8cf135 100644 --- a/smart_autocomplete/src/graph.cpp +++ b/smart_autocomplete/src/graph.cpp @@ -0,0 +1,48 @@ +#include "../include/graph.h" +#include +#include + +void CooccurrenceGraph::addEdge(const std::string& from, const std::string& to) { + adjacencyList[from][to]++; +} + +double CooccurrenceGraph::getBoost(const std::string& from, const std::string& to) { + if (adjacencyList.find(from) == adjacencyList.end()) { + return 0.0; + } + + auto& neighbors = adjacencyList[from]; + + if (neighbors.find(to) == neighbors.end()) { + return 0.0; + } + + int weight = neighbors[to]; + return std::log(1 + weight) * 0.5; +} + +int CooccurrenceGraph::getEdgeWeight(const std::string& from, const std::string& to) { + if (adjacencyList.find(from) == adjacencyList.end()) { + return 0; + } + + auto& neighbors = adjacencyList[from]; + + if (neighbors.find(to) == neighbors.end()) { + return 0; + } + + return neighbors[to]; +} + +void CooccurrenceGraph::display() { + std::cout << "\n=== Co-occurrence Graph ===" << std::endl; + + for (const auto& [from, neighbors] : adjacencyList) { + std::cout << from << " -> "; + for (const auto& [to, weight] : neighbors) { + std::cout << to << "(" << weight << ") "; + } + std::cout << std::endl; + } +} \ No newline at end of file From 330b5540a095f90a1195899222e63aaf4c3ffef5 Mon Sep 17 00:00:00 2001 From: Anika438 Date: Wed, 12 Nov 2025 00:30:42 +0530 Subject: [PATCH 14/33] Update heap_test.cpp --- smart_autocomplete/tests/heap_test.cpp | 54 +++++++++++--------------- 1 file changed, 23 insertions(+), 31 deletions(-) diff --git a/smart_autocomplete/tests/heap_test.cpp b/smart_autocomplete/tests/heap_test.cpp index 0acdb4a..7579440 100644 --- a/smart_autocomplete/tests/heap_test.cpp +++ b/smart_autocomplete/tests/heap_test.cpp @@ -31,46 +31,38 @@ void test2() { cout << "Heap fixed size tests passed"<= all[1].first); - assert(all[1].first >= all[2].first); - assert(all[2].first >= all[3].first); + auto all=heap.getAll(); - std::cout << "โœ“ Heap GetAll tests passed\n"; + assert(all.size()==4); + assert(all[0].first>=all[1].first); + assert(all[1].first>=all[2].first); + assert(all[2].first>=all[3].first); + cout << "Heap getall tests passed"< Date: Wed, 12 Nov 2025 16:53:42 +0530 Subject: [PATCH 15/33] update stack.h --- smart_autocomplete/include/stack.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/smart_autocomplete/include/stack.h b/smart_autocomplete/include/stack.h index e69de29..66c00ed 100644 --- a/smart_autocomplete/include/stack.h +++ b/smart_autocomplete/include/stack.h @@ -0,0 +1,22 @@ +#ifndef STACK_H +#define STACK_H + +#include +#include +#include + +class UndoRedoStack { +private: + std::stack> undoStack; + std::stack> redoStack; + +public: + void pushInsert(int position, const std::string& text); + std::pair undo(); + std::pair redo(); + bool canUndo() const { return !undoStack.empty(); } + bool canRedo() const { return !redoStack.empty(); } + void clearRedo(); +}; + +#endif \ No newline at end of file From 2d6ee76cf6b971e2c5fd5fa6233c2430b080a944 Mon Sep 17 00:00:00 2001 From: Anika438 Date: Wed, 12 Nov 2025 20:32:23 +0530 Subject: [PATCH 16/33] Update ranker.h --- smart_autocomplete/include/ranker.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/smart_autocomplete/include/ranker.h b/smart_autocomplete/include/ranker.h index e69de29..0f0c46d 100644 --- a/smart_autocomplete/include/ranker.h +++ b/smart_autocomplete/include/ranker.h @@ -0,0 +1,22 @@ +#ifndef RANKER_H +#define RANKER_H + +#include +#include +#include "freq_store.h" +#include "graph.h" + +class Ranker { + private: + FreqStore* freqStore; + CooccurrenceGraph* graph; + std::string lastToken; + + public: + Ranker(FreqStore *fs,CooccurrenceGraph *g); + void setLastToken(const std::string &token); + double computeScore(const std::string &token); + std::vector> rankResults(const std::vector &candidates,int k); +}; + +#endif From c342b7d65a59babee3aa3835ca0bded61c907c41 Mon Sep 17 00:00:00 2001 From: Anika438 Date: Wed, 12 Nov 2025 20:35:10 +0530 Subject: [PATCH 17/33] Update ranker.h --- smart_autocomplete/include/ranker.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/smart_autocomplete/include/ranker.h b/smart_autocomplete/include/ranker.h index 0f0c46d..53d3b98 100644 --- a/smart_autocomplete/include/ranker.h +++ b/smart_autocomplete/include/ranker.h @@ -3,6 +3,7 @@ #include #include +#include #include "freq_store.h" #include "graph.h" @@ -20,3 +21,4 @@ class Ranker { }; #endif + From 0116a57de2bdbdd8f242bedbc097c2e78b5e23d7 Mon Sep 17 00:00:00 2001 From: Maahi Ratanpara Date: Wed, 12 Nov 2025 16:54:58 +0530 Subject: [PATCH 18/33] update stack.cpp --- smart_autocomplete/src/stack.cpp | 39 ++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/smart_autocomplete/src/stack.cpp b/smart_autocomplete/src/stack.cpp index e69de29..7755bc1 100644 --- a/smart_autocomplete/src/stack.cpp +++ b/smart_autocomplete/src/stack.cpp @@ -0,0 +1,39 @@ +#include "../include/stack.h" +#include + +void UndoRedoStack::pushInsert(int position, const std::string& text) { + undoStack.push({position, text}); + while (!redoStack.empty()) { + redoStack.pop(); + } +} + +std::pair UndoRedoStack::undo() { + if (undoStack.empty()) { + throw std::runtime_error("Nothing to undo"); + } + + auto action = undoStack.top(); + undoStack.pop(); + redoStack.push(action); + + return action; +} + +std::pair UndoRedoStack::redo() { + if (redoStack.empty()) { + throw std::runtime_error("Nothing to redo"); + } + + auto action = redoStack.top(); + redoStack.pop(); + undoStack.push(action); + + return action; +} + +void UndoRedoStack::clearRedo() { + while (!redoStack.empty()) { + redoStack.pop(); + } +} \ No newline at end of file From 7fd8ef3aac70448d6e37dc3d0da636f2ad584dfe Mon Sep 17 00:00:00 2001 From: Maahi Ratanpara Date: Wed, 12 Nov 2025 16:57:07 +0530 Subject: [PATCH 19/33] updated freq store --- smart_autocomplete/include/freq_store.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/smart_autocomplete/include/freq_store.h b/smart_autocomplete/include/freq_store.h index e69de29..ee3b13b 100644 --- a/smart_autocomplete/include/freq_store.h +++ b/smart_autocomplete/include/freq_store.h @@ -0,0 +1,21 @@ +#ifndef FREQ_STORE_H +#define FREQ_STORE_H + +#include +#include + +class FreqStore { +private: + std::unordered_map frequencies; + std::string filePath; + +public: + FreqStore(const std::string& path); + void load(); + void save(); + int get(const std::string& token); + void bump(const std::string& token, int amount = 1); + void set(const std::string& token, int freq); +}; + +#endif \ No newline at end of file From 323e1eb6ec92e9410a368431a930c7a42b664a5f Mon Sep 17 00:00:00 2001 From: Maahi Ratanpara Date: Wed, 12 Nov 2025 17:01:07 +0530 Subject: [PATCH 20/33] update freq store cpp --- smart_autocomplete/src/freq_store.cpp | 57 +++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/smart_autocomplete/src/freq_store.cpp b/smart_autocomplete/src/freq_store.cpp index e69de29..ae0e641 100644 --- a/smart_autocomplete/src/freq_store.cpp +++ b/smart_autocomplete/src/freq_store.cpp @@ -0,0 +1,57 @@ +#include "../include/freq_store.h" +#include +#include + +FreqStore::FreqStore(const std::string& path) : filePath(path) { + load(); +} + +void FreqStore::load() { + std::ifstream file(filePath); + + if (!file.is_open()) { + return; + } + + std::string line; + while (std::getline(file, line)) { + std::istringstream iss(line); + std::string token; + int freq; + + if (iss >> token >> freq) { + frequencies[token] = freq; + } + } + + file.close(); +} + +void FreqStore::save() { + std::ofstream file(filePath); + + if (!file.is_open()) { + return; + } + + for (const auto& [token, freq] : frequencies) { + file << token << " " << freq << "\n"; + } + + file.close(); +} + +int FreqStore::get(const std::string& token) { + auto it = frequencies.find(token); + return (it != frequencies.end()) ? it->second : 0; +} + +void FreqStore::bump(const std::string& token, int amount) { + frequencies[token] += amount; + save(); +} + +void FreqStore::set(const std::string& token, int freq) { + frequencies[token] = freq; + save(); +} \ No newline at end of file From 2f95c7a4c1eac3c56be68b3236ae5d64ed681a93 Mon Sep 17 00:00:00 2001 From: Tanisha Ray Date: Wed, 12 Nov 2025 23:04:35 +0530 Subject: [PATCH 21/33] add minheap code --- smart_autocomplete/.gitignore | 3 +- smart_autocomplete/README.md | 45 ++++++++++++++++ smart_autocomplete/include/minheap.h | 45 ++++++++++++++++ smart_autocomplete/src/minheap.cpp | 79 ++++++++++++++++++++++++++++ 4 files changed, 171 insertions(+), 1 deletion(-) diff --git a/smart_autocomplete/.gitignore b/smart_autocomplete/.gitignore index 4b5c2de..e4a0744 100644 --- a/smart_autocomplete/.gitignore +++ b/smart_autocomplete/.gitignore @@ -1,3 +1,4 @@ #virtual environments venv/ -env/ \ No newline at end of file +env/ +dsavenv/ \ No newline at end of file diff --git a/smart_autocomplete/README.md b/smart_autocomplete/README.md index e69de29..09e99bc 100644 --- a/smart_autocomplete/README.md +++ b/smart_autocomplete/README.md @@ -0,0 +1,45 @@ +# Smart Code Autocomplete Engine (C++) + +A simple data-structures-based project demonstrating how modern IDE autocomplete systems work using: + +- **Trie** โ†’ Prefix-based search +- **Hashing** โ†’ Frequency tracking of code suggestions +- **Heap (Priority Queue)** โ†’ Top-K ranked autocomplete results +- **Snippet Expansion** โ†’ Replace short keywords with full code templates + +## Features +Insert code keywords or phrases +Autocomplete suggestions based on prefix +Suggestions ranked by frequency +Snippet support (e.g., `fori` โ†’ `for (int i = 0; i < n; i++)`) +Practical demonstration of Trie + Hash Map + Heap working together + +## Tech Used +- C++ +- STL (unordered_map, priority_queue, vector) + +## How It Works +1. User enters keywords (e.g., `print`, `printf`, `private`, etc.) +2. Trie stores all words for fast prefix lookup +3. Hash map tracks how often each word is used +4. Heap finds the most frequent matches for a prefix +5. Snippets expand small abbreviations into full code blocks + +## Example Usage +- Type: `pri` +- Suggestions: `print`, `printf`, `private` (ranked) +- Type: `fori` +- Expanded snippet: `for (int i = 0; i < n; i++)` + +## Applications +- Code Editors (VS Code, JetBrains) +- Search Engines +- Chatbots +- AI-assisted development tools + +--- + +This project demonstrates a **real-world data structure application** integrating **string algorithms, hashing, and priority queues** into a single practical system. + +```md +Run the program โ†’ Start typing prefixes โ†’ View ranked predictions diff --git a/smart_autocomplete/include/minheap.h b/smart_autocomplete/include/minheap.h index e69de29..4b1133f 100644 --- a/smart_autocomplete/include/minheap.h +++ b/smart_autocomplete/include/minheap.h @@ -0,0 +1,45 @@ +#ifndef MINHEAP_H +#define MINHEAP_H + +#include +#include +#include + +class MinHeap { +private: + std::vector> heap; + int maxSize; + + void heapifyUp(int index); + void heapifyDown(int index); + int parent(int i){ + return (i - 1) / 2; + } + int leftChild(int i){ + return 2 * i + 1; + } + int rightChild(int i){ + return 2 * i + 2; + } + + public: + MinHeap(int k); + void insert(double score, const std::string& word); + + std::pair extractMin(); + std::pair getMin(); + int size() const{ + return heap.size(); + } + bool isEmpty() const { + return heap.empty(); + } + bool isFull() const { + return heap.size() >= maxSize; + } + std::vector> getAll(); + void clear(); +}; + +#endif + diff --git a/smart_autocomplete/src/minheap.cpp b/smart_autocomplete/src/minheap.cpp index e69de29..9b14ec3 100644 --- a/smart_autocomplete/src/minheap.cpp +++ b/smart_autocomplete/src/minheap.cpp @@ -0,0 +1,79 @@ +#include "../include/minheap.h" +#include +#include + +MinHeap::MinHeap(int k) : maxSize(k) {} + +void MinHeap::heapifyUp(int index) { + while (index>0 && heap[parent(index)].first > heap[index].first) { + std::swap(heap[parent(index)], heap[index]); + index = parent(index); + } +} + +void MinHeap::heapifyDown(int index){ + int smallest = index; + int left =leftChild(index); + int right =rightChild(index); + + if (left< heap.size() && heap[left].first < heap[smallest].first) { + smallest = left; + } + + if (right < heap.size() && heap[right].first < heap[smallest].first) { + smallest = right; + } + + if (smallest!= index) { + std::swap(heap[index], heap[smallest]); + heapifyDown(smallest); + } +} +void MinHeap::insert(double score, const std::string& word) { + if (heap.size() heap[0].first){ + heap[0] = {score, word}; + heapifyDown(0); + } +} + +std::pair MinHeap::extractMin() { + if (heap.empty()) { + throw std::runtime_error("Heap is empty"); + } + + auto minElement = heap[0]; + heap[0] = heap.back(); + heap.pop_back(); + + if (!heap.empty()) { + heapifyDown(0); + } + + return minElement; +} + +std::pair MinHeap::getMin() { + if (heap.empty()) { + throw std::runtime_error("Heap is empty"); + } + return heap[0]; +} + +std::vector> MinHeap::getAll(){ + std::vector> result = heap; + std::sort(result.begin(), result.end(), + [](const auto& a, const auto& b){ + return a.first > b.first; + }); + return result; +} + +void MinHeap::clear() { + heap.clear(); +} + + From f922dd05ce7d588ef55d6e4983a10057148327f3 Mon Sep 17 00:00:00 2001 From: Tanisha Ray Date: Wed, 12 Nov 2025 23:22:06 +0530 Subject: [PATCH 22/33] added testing code for tst --- smart_autocomplete/tests/tst_test.cpp | 82 +++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/smart_autocomplete/tests/tst_test.cpp b/smart_autocomplete/tests/tst_test.cpp index e69de29..7d9d242 100644 --- a/smart_autocomplete/tests/tst_test.cpp +++ b/smart_autocomplete/tests/tst_test.cpp @@ -0,0 +1,82 @@ +#include +#include +#include "../include/tst.h" + +void testTSTInsertAndSearch() { + TST tst; + + tst.insert("hello"); + tst.insert("world"); + tst.insert("help"); + tst.insert("hell"); + + assert(tst.search("hello") == true); + assert(tst.search("world") == true); + assert(tst.search("help") == true); + assert(tst.search("hell") == true); + assert(tst.search("he") == false); + assert(tst.search("worlds") == false); + + std::cout << "โœ“ TST Insert and Search tests passed" << std::endl; +} + +void testTSTPrefixSearch() { + TST tst; + + tst.insert("print"); + tst.insert("printf"); + tst.insert("println"); + tst.insert("private"); + tst.insert("protected"); + + auto results = tst.prefixSearch("pri", 10); + + assert(results.size() >= 3); + bool foundPrint = false; + bool foundPrintf = false; + bool foundPrivate = false; + + + for (const auto& word : results) { + if (word=="print"){ + foundPrint = true; + } + + if (word=="printf"){ + foundPrintf = true; + } + if (word=="private"){ + foundPrivate = true; + } + } + + assert(foundPrint && foundPrintf && foundPrivate); + + std::cout << "โœ“ TST Prefix Search tests passed" << std::endl; +} + +void testTSTEmptyCases(){ + TST tst; + + assert(tst.search("") == false); + auto results = tst.prefixSearch("test", 5); + assert(results.empty()); + + tst.insert("test"); + assert(tst.search("test") == true); + + std::cout << "โœ“ TST Empty Cases tests passed" << std::endl; +} + +int main() { + std::cout << "\nRunning TST Tests...\n" << std::endl; + + testTSTInsertAndSearch(); + testTSTPrefixSearch(); + testTSTEmptyCases(); + + std::cout << "\n All TST tests passed!\n" << std::endl; + + return 0; +} + From 5bd6a241073298683ba495d2f33b1553169d9708 Mon Sep 17 00:00:00 2001 From: Tanisha Ray Date: Wed, 12 Nov 2025 23:33:12 +0530 Subject: [PATCH 23/33] added main.cpp code --- smart_autocomplete/tests/tst_test.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/smart_autocomplete/tests/tst_test.cpp b/smart_autocomplete/tests/tst_test.cpp index 7d9d242..25dd7c2 100644 --- a/smart_autocomplete/tests/tst_test.cpp +++ b/smart_autocomplete/tests/tst_test.cpp @@ -10,12 +10,12 @@ void testTSTInsertAndSearch() { tst.insert("help"); tst.insert("hell"); - assert(tst.search("hello") == true); - assert(tst.search("world") == true); - assert(tst.search("help") == true); - assert(tst.search("hell") == true); - assert(tst.search("he") == false); - assert(tst.search("worlds") == false); + assert(tst.search("hello")==true); + assert(tst.search("world")==true); + assert(tst.search("help")==true); + assert(tst.search("hell")==true); + assert(tst.search("he")==false); + assert(tst.search("worlds")==false); std::cout << "โœ“ TST Insert and Search tests passed" << std::endl; } @@ -41,7 +41,6 @@ void testTSTPrefixSearch() { if (word=="print"){ foundPrint = true; } - if (word=="printf"){ foundPrintf = true; } From 06a0c9a272c4886228a8a10af9b74b579625db8c Mon Sep 17 00:00:00 2001 From: Tanisha Ray Date: Wed, 12 Nov 2025 23:39:15 +0530 Subject: [PATCH 24/33] added ranker.cpp code --- smart_autocomplete/src/ranker.cpp | 45 +++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/smart_autocomplete/src/ranker.cpp b/smart_autocomplete/src/ranker.cpp index e69de29..b2e41b2 100644 --- a/smart_autocomplete/src/ranker.cpp +++ b/smart_autocomplete/src/ranker.cpp @@ -0,0 +1,45 @@ +#include "../include/ranker.h" +#include "../include/minheap.h" +#include + +Ranker::Ranker(FreqStore* fs, CooccurrenceGraph* g) + : freqStore(fs), graph(g), lastToken("") {} + +void Ranker::setLastToken(const std::string& token) { + lastToken = token; +} + +double Ranker::computeScore(const std::string& token){ + double freqScore = freqStore->get(token); + double graphBoost = 0.0; + + if (!lastToken.empty()){ + graphBoost = graph->getBoost(lastToken, token); + } + + return freqScore + graphBoost; +} + +std::vector> Ranker::rankResults( + const std::vector& candidates, int k){ + + if (candidates.empty()){ + return std::vector>(); + } + + MinHeap heap(k); + + for (const auto& token : candidates){ + double score = computeScore(token); + heap.insert(score, token); + } + + auto sortedResults = heap.getAll(); + + std::vector> result; + for (const auto& [score, token] : sortedResults){ + result.push_back({token, score}); + } + + return result; +} \ No newline at end of file From 583ff4d0046e988d4b7aa70a1ce33b07fdced652 Mon Sep 17 00:00:00 2001 From: Tanisha Ray Date: Wed, 12 Nov 2025 23:40:07 +0530 Subject: [PATCH 25/33] code modification done --- smart_autocomplete/include/ranker.h | 20 +- smart_autocomplete/src/main.cpp | 271 ++++++++++++++++++++++++++++ 2 files changed, 281 insertions(+), 10 deletions(-) diff --git a/smart_autocomplete/include/ranker.h b/smart_autocomplete/include/ranker.h index 53d3b98..b08a397 100644 --- a/smart_autocomplete/include/ranker.h +++ b/smart_autocomplete/include/ranker.h @@ -8,16 +8,16 @@ #include "graph.h" class Ranker { - private: - FreqStore* freqStore; - CooccurrenceGraph* graph; - std::string lastToken; - - public: - Ranker(FreqStore *fs,CooccurrenceGraph *g); - void setLastToken(const std::string &token); - double computeScore(const std::string &token); - std::vector> rankResults(const std::vector &candidates,int k); + private: + FreqStore* freqStore; + CooccurrenceGraph* graph; + std::string lastToken; + + public: + Ranker(FreqStore *fs,CooccurrenceGraph *g); + void setLastToken(const std::string &token); + double computeScore(const std::string &token); + std::vector> rankResults(const std::vector &candidates,int k); }; #endif diff --git a/smart_autocomplete/src/main.cpp b/smart_autocomplete/src/main.cpp index e69de29..c363341 100644 --- a/smart_autocomplete/src/main.cpp +++ b/smart_autocomplete/src/main.cpp @@ -0,0 +1,271 @@ +#include +#include +#include +#include +#include +#include +#include "../include/tst.h" +#include "../include/minheap.h" +#include "../include/lru.h" +#include "../include/kmp.h" +#include "../include/stack.h" +#include "../include/graph.h" +#include "../include/freq_store.h" +#include "../include/ranker.h" + +class AutocompleteEngine { +private: + TST tst; + LRUCache cache; + FreqStore freqStore; + CooccurrenceGraph graph; + Ranker ranker; + UndoRedoStack undoRedo; + std::string lastAccepted; + bool useSubstringSearch; + + void loadSeeds(const std::string& filename) { + std::ifstream file(filename); + if (!file.is_open()){ + std::cerr << "Warning: Could not open " << filename << std::endl; + return; + } + + std::string word; + int count = 0; + while (file >> word) { + if (!word.empty()) { + tst.insert(word); + count++; + } + } + file.close(); + std::cout << "Loaded " << count << " tokens from seed file." << std::endl; + } + + std::vector substringSearch(const std::string& prefix){ + std::vector allWords; + tst.getAllWords(allWords); + + std::vector results; + for (const auto& word : allWords) { + if (KMP::contains(word, prefix)) { + results.push_back(word); + } + } + + return results; + } + + +public: + AutocompleteEngine() + : cache(50), + freqStore("data/frequencies.txt"), + ranker(&freqStore, &graph), + useSubstringSearch(false){ + + loadSeeds("data/seeds.txt"); + } + + std::vector> getSuggestions(const std::string& prefix, int k = 5){ + if (prefix.empty()) { + return std::vector>(); + } + + if (cache.exists(prefix)) { + auto cached = cache.get(prefix); + std::vector> result; + for (const auto& token : cached) { + result.push_back({token, freqStore.get(token)}); + } + return result; + } + + std::vector candidates = tst.prefixSearch(prefix, k * 2); + + if (candidates.size()<3 && useSubstringSearch) { + auto substringResults = substringSearch(prefix); + candidates.insert(candidates.end(), substringResults.begin(), substringResults.end()); + + std::sort(candidates.begin(), candidates.end()); + candidates.erase(std::unique(candidates.begin(), candidates.end()), candidates.end()); + } + + ranker.setLastToken(lastAccepted); + auto ranked = ranker.rankResults(candidates, k); + + std::vector toCache; + for (const auto& [token, score] : ranked){ + toCache.push_back(token); + } + cache.put(prefix, toCache); + + return ranked; + } + + void acceptSuggestion(const std::string& token){ + freqStore.bump(token, 1); + + if (!lastAccepted.empty()){ + graph.addEdge(lastAccepted, token); + } + + undoRedo.pushInsert(0, token); + lastAccepted = token; + + std::cout << "Accepted: "<< token << std::endl; + } + + void bumpToken(const std::string& token) { + freqStore.bump(token, 5); + std::cout << "Bumped frequency of '" << token << "' by 5" << std::endl; + } + + void performUndo() { + if (undoRedo.canUndo()) { + auto [pos, token] = undoRedo.undo(); + std::cout << "Undo: Removed '" << token << "'" << std::endl; + } else { + std::cout << "Nothing to undo" << std::endl; + } + } + + void performRedo() { + if (undoRedo.canRedo()) { + auto [pos, token] = undoRedo.redo(); + std::cout << "Redo: Restored '" << token << "'" << std::endl; + } else { + std::cout << "Nothing to redo" << std::endl; + } + } + + void toggleSubstringSearch() { + useSubstringSearch = !useSubstringSearch; + std::cout << "Substring search: " << (useSubstringSearch ? "ON" : "OFF") << std::endl; + } + + void displayGraph() { + graph.display(); + } + + void showHelp() { + std::cout << "\n=== Smart Autocomplete Engine ===" << std::endl; + std::cout << "\nCommands:" << std::endl; + std::cout << ":help - Show this help message" << std::endl; + std::cout << ":exit or :q - Exit the program" << std::endl; + std::cout << " :bump - Increase frequency of a token" << std::endl; + std::cout << ":undo - Undo last accepted token" << std::endl; + std::cout << ":redo - Redo last undone token" << std::endl; + std::cout << ":toggle_contains- Toggle substring search" << std::endl; + std::cout << ":graph - Display co-occurrence graph" << std::endl; + std::cout << "\nUsage:" << std::endl; + std::cout << " - Type a prefix to get suggestions" << std::endl; + std::cout << " - Select by number or type the full token" << std::endl; + std::cout << std::endl; + } +}; + +int main() { + AutocompleteEngine engine; + + std::cout << "\n=== Smart Autocomplete Engine ===" << std::endl; + std::cout << "Type ':help' for commands" << std::endl; + std::cout << "Type ':exit' or ':q' to quit\n" << std::endl; + + std::string input; + + while (true) { + std::cout << "> "; + std::getline(std::cin, input); + + if (input.empty()) { + continue; + } + + if (input == ":exit" || input == ":q") { + std::cout << "Goodbye!" << std::endl; + break; + } + + + if (input == ":help") { + engine.showHelp(); + continue; + } + + if (input == ":undo") { + engine.performUndo(); + continue; + } + + if (input == ":redo") { + engine.performRedo(); + continue; + } + + if (input == ":toggle_contains") { + engine.toggleSubstringSearch(); + continue; + } + + if (input == ":graph") { + engine.displayGraph(); + continue; + } + + if (input.substr(0, 6) == ":bump ") { + std::string token = input.substr(6); + engine.bumpToken(token); + continue; + } + + auto suggestions = engine.getSuggestions(input, 5); + + if (suggestions.empty()) { + std::cout << "No suggestions found for '" << input << "'" << std::endl; + continue; + } + + std::cout << "\nSuggestions:" << std::endl; + for (size_t i = 0; i < suggestions.size(); i++) { + std::cout << " " << (i + 1) << ". " << suggestions[i].first + << " (score=" << suggestions[i].second << ")" << std::endl; + } + + std::cout << "\nAccept by number or token (or press Enter to skip): "; + std::string choice; + std::getline(std::cin, choice); + + if (choice.empty()) { + continue; + } + + if (isdigit(choice[0]) && choice.length() == 1) { + int num = choice[0] - '0'; + if (num >= 1 && num <= suggestions.size()) { + engine.acceptSuggestion(suggestions[num - 1].first); + } + else{ + std::cout << "Invalid selection" << std::endl; + } + } + else{ + bool found = false; + for (const auto& [token, score] : suggestions) { + if (token == choice) { + engine.acceptSuggestion(token); + found = true; + break; + } + } + if (!found) { + std::cout << "Token not in suggestions" << std::endl; + } + } + + std::cout << std::endl; + } + + return 0; +} \ No newline at end of file From 5ada1c66adb611708b13061aa3bbc5790e35b19f Mon Sep 17 00:00:00 2001 From: Tanisha Ray Date: Wed, 12 Nov 2025 23:47:49 +0530 Subject: [PATCH 26/33] some modifications done --- smart_autocomplete/.gitignore | 3 +- smart_autocomplete/data/words.txt | 88 +++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+), 1 deletion(-) diff --git a/smart_autocomplete/.gitignore b/smart_autocomplete/.gitignore index e4a0744..d0a107e 100644 --- a/smart_autocomplete/.gitignore +++ b/smart_autocomplete/.gitignore @@ -1,4 +1,5 @@ #virtual environments venv/ env/ -dsavenv/ \ No newline at end of file +dsavenv/ + diff --git a/smart_autocomplete/data/words.txt b/smart_autocomplete/data/words.txt index e69de29..c6c8503 100644 --- a/smart_autocomplete/data/words.txt +++ b/smart_autocomplete/data/words.txt @@ -0,0 +1,88 @@ +for +while +if +else +switch +case +break +continue +return +int +float +double +char +bool +void +string +vector +map +set +list +queue +stack +auto +const +static +class +struct +namespace +public +private +protected +virtual +override +template +typename +include +iostream +std +cout +cin +endl +printf +scanf +main +new +delete +try +catch +throw +this +nullptr +true +false +array +deque +unordered_map +unordered_set +algorithm +sort +find +push_back +pop_back +size +empty +clear +begin +end +iterator +function +lambda +constexpr +inline +extern +typedef +using +enum +union +operator +friend +mutable +volatile +register +sizeof +typeid +dynamic_cast +static_cast +reinterpret_cast +const_cast \ No newline at end of file From c36b5e826241e4abcc68f21bc61f6cb60222ab7a Mon Sep 17 00:00:00 2001 From: Maahi Date: Thu, 13 Nov 2025 00:21:14 +0530 Subject: [PATCH 27/33] final running code --- smart_autocomplete/Makefile | 8 ++++---- smart_autocomplete/include/kmp.h | 4 +++- smart_autocomplete/include/lru.h | 6 ++++-- smart_autocomplete/smart_autocomplete | Bin 0 -> 128656 bytes smart_autocomplete/src/freq_store.o | Bin 0 -> 22136 bytes smart_autocomplete/src/graph.o | Bin 0 -> 21120 bytes smart_autocomplete/src/kmp.o | Bin 0 -> 6520 bytes smart_autocomplete/src/lru.o | Bin 0 -> 19840 bytes smart_autocomplete/src/main.cpp | 10 +++++----- smart_autocomplete/src/main.o | Bin 0 -> 69840 bytes smart_autocomplete/src/minheap.o | Bin 0 -> 20480 bytes smart_autocomplete/src/ranker.o | Bin 0 -> 9104 bytes smart_autocomplete/src/stack.o | Bin 0 -> 11088 bytes smart_autocomplete/src/tst.o | Bin 0 -> 29512 bytes 14 files changed, 16 insertions(+), 12 deletions(-) create mode 100755 smart_autocomplete/smart_autocomplete create mode 100644 smart_autocomplete/src/freq_store.o create mode 100644 smart_autocomplete/src/graph.o create mode 100644 smart_autocomplete/src/kmp.o create mode 100644 smart_autocomplete/src/lru.o create mode 100644 smart_autocomplete/src/main.o create mode 100644 smart_autocomplete/src/minheap.o create mode 100644 smart_autocomplete/src/ranker.o create mode 100644 smart_autocomplete/src/stack.o create mode 100644 smart_autocomplete/src/tst.o diff --git a/smart_autocomplete/Makefile b/smart_autocomplete/Makefile index bc55677..2eaf783 100644 --- a/smart_autocomplete/Makefile +++ b/smart_autocomplete/Makefile @@ -4,10 +4,10 @@ SRC = $(wildcard src/*.cpp) OBJ = $(SRC:.cpp=.o) TARGET = smart_autocomplete -all: \$(TARGET) +all: $(TARGET) -\$(TARGET): \$(OBJ) - \$(CXX) \$(CXXFLAGS) -o \$@ \$(OBJ) +$(TARGET): $(OBJ) + $(CXX) $(CXXFLAGS) -o $@ $(OBJ) clean: - rm -f \$(OBJ) \$(TARGET) + rm -f $(OBJ) $(TARGET) diff --git a/smart_autocomplete/include/kmp.h b/smart_autocomplete/include/kmp.h index f04ccac..51a7cfb 100644 --- a/smart_autocomplete/include/kmp.h +++ b/smart_autocomplete/include/kmp.h @@ -1,10 +1,11 @@ #ifndef KMP_H #define KMP_H -using namespace std; #include #include +using namespace std; + class KMP { private: static vector computeLPS(const string& pattern); @@ -13,3 +14,4 @@ class KMP { static vector findAll(const string& text, const string& pattern); }; +#endif diff --git a/smart_autocomplete/include/lru.h b/smart_autocomplete/include/lru.h index 3f1b4d8..eb7078c 100644 --- a/smart_autocomplete/include/lru.h +++ b/smart_autocomplete/include/lru.h @@ -26,12 +26,12 @@ class lru_cache{ unordered_mapcacheMap; Node* head; Node* tail; - + void addNodeToFront(Node* node); void removeNode(Node* node); void moveNodeToFront(Node* node); void removeLRUNode(); - + public: lru_cache(int cap); vectorget(const string& key); @@ -40,4 +40,6 @@ class lru_cache{ void clear(); }; +using LRUCache = lru_cache; + #endif diff --git a/smart_autocomplete/smart_autocomplete b/smart_autocomplete/smart_autocomplete new file mode 100755 index 0000000000000000000000000000000000000000..a8921c1bf7c7efa04a35ce61fe75dbe56c2d118a GIT binary patch literal 128656 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%0Aawve%+Hi- z3q}S*aUeXH7t?gR&%fs-0OCkd-`atMz0W@us4Vlrh;X*}cfJVNEn~A#)PwI#emgQ3 zT$AjsB|qu)iMIFz52#}Bl?S0@;ex`1zrwx^Kr?2kblq2j9kUP#dUEj+=$MG_T0py5 zsoRCg!0j<#{Ji9N89jsg2LxJ2E0@Obi0X`ppwA2f+X@qfYAW7*L8_u}1dZDemn3&r zjzuzPqK1e^0{etLhIUAB%Q5rm^U}bNQFE}=rXSBvU_o#Eb^jtyJm44S&&3G8`CD3}`0W^I@elazEfndF-&W(@El^%>lT2q_ zEMWc;nOtAd&vQETQ>i--$jQFON-~3i#_+e)mfqwT^xbTSRwwO7sf~-+*U+g3Q=IFe z%=kMq8xpa%Tt0EFkW0hFo`f1WrPTceps0ka#sxwBqzb*-xD-+W>(Cc!&bzdXb$Qf& zv$A3pS;T-eHJHN%M!sIp%MMmNXARRb1W^1X1az8Cro%s{@0Ovl8?ta>5b>nXk#YyT zk^Rz~U7aQC>`;~K*9W~Dsg1yEu`!&R;Lq-87zRTjY9>ny%<%gnxKIP$fnd)Pa1ufd zkf6sq&DN2r@?*ld_k0rY!FJ0=Yq23c9X|{4-Os@#ba6iL)dEK%(85Z5A)^9>g2x3@ zz}Jy#`I)S7xp@(qZ3sqBc*9lTu?PlW1AN03n97^75Vd(J0(p)obz?ZV zMmc>=py*v_V1%a6@T2(?%AzJJYnhmC@Tm*}gCzFg*&-H2IfYJ%ONk}6*|Hd+5`UQd zfPm57D@!usKXCfBdM_HnXSp0Jid(r6BhF)89YHnFRuGQ0Nn8gZgPvmY-sTAg{u;jA zUXQw%2d&Rq^8m#tcR>|eEHJdt6Df6HX8}1hI%1=|0;7{*-t4vqpvyY{4H(zics2ViG&gnGmqHJw>lcVh_%7Mbo5>eqPgo=V!y-(MS5l6h=T(=q&{y zAPG=b#;cMNh=Sq8RqG)etb=i4INbMEWDK@I5Nl*B0VM?xg9Q{^SS4pe3AmF=z}y0* z?x>t6#s1kYEo`j--^1evjNkC)t1e2MP=Z+mGgo1BoaP8Ze04@;Bn#P)?gt z_d9~-%%dRfIH*s_R^i_gW0SxDn`HIz`~v(QpWz5YBSyjk4mi2uW*-Ew;~eFIi~{-w z@LkGwaPAI@HN%AQr$BuECD4Sov9K8tS40%rDn=E|#FNyV3Bi^U0OYz>A`vfC`jvoL zF+ar{zXu%=KAgpy!Bm9EXNX%Nu*isVGnYm4HFz!I-YiD*T-%Lj&>*CB;LGsEkdKHr z3&w83`u|S2FFbSh`p+`a7Wht1Md0Q;U>P}}P^-}JilYQ<?l>_Qk?kAM zni{{K-E+ZA7bT#K*o!|Fb8j#kA>Zt0NmWTeb5ks(@w%qinuSJ|ycm0X@n3t>Q+82!O~&7FR_TV@y5bD!98rI9Q16Nf1K_hEI@h z8W{dA6%Z=G@N~&YolWxY<&_XcEk)7+qV($-p6F&&QFSK==9f=nVD$B5%k`@FZN_Ag zHBp>u8`fdit709esa^z;NwqGgLwOJYscR+dPqnkXnhtE`dzUJlC@+IyV4oTbur$CT`yhOEa(%%~Po4DDmw|&z ze;9~!IPZrCSl6jZ!Abnh`%tQZPp&rI{v)W*98h5U|8sojuHQ)2??1F3_-)zxzqcPa z|JVPy{lN9W+r1z75pemx?Fatf<5fokr+;fd@PC24X!w;gby~!ecuwpG?gv;~Scwt8 zWfOZuHNG+bq&)hU<5gEZWsjTO4@`+yb?pcKyYZ@*pgYMWuZ7|ba;B?z)e{HNotA$T zu=*6>CHDPN16FbSCV+E^Oa`n5p@~^~75DwRh*wSS`~6e#s=pB%hyoY-gvx<<)q9g8 z=IrQgK)mYy|4rCMt>QA2=~xjvdIJEBI#CQS6Y;8^&Lw5M>Pi&0hrd(2sx|&D7hZPf z$TqsV1ILuQ1}-A{3HtD$eL#nNGyW~!1QYoVwAm8R%AySFgDvQ?V?U4I8d&HMS9b2c2Uxg-uH3k0>Zg5b^KBxkuSY zoHCG>$Wx*(sOxfP%xp-kS$2eP??aq=Ao>jqgN2$BKHrIiz3&NtiefRxsNH71`AaEJ zs5!}X~U_)FALm>n+D8w!0Agp^R5tHzM6t)PIx^tvD2s@N#$Y}z! z6iJo7xi>7rW+ld8ix8m4D*aw9cI%Zm)$nPrP^`LL^CEB-d&E-!5cdQ$eVnd&;V&Bx zpZ$nn05=0~#op!)244-56H}vEfmSs}LaH>(Dt|%xz=zFvL7a>yhV(XMM!u!#+hnjR z_ap;{l-MuGIqPWB;y)(Vp=D>Gf)Z>GD#5MTh5sO=1djxpK1mOGKX_ z7~u;@2yj>m8T1jR7f>5u+A4L&NDnw>&R3(yaZ=?GMj7f`(F5^&iSBqATGZfN1NX3@5{WI8@zyp54nWJh}--J)ePY4(kfL;p?qY z-KK7DLtuhZ_W;@q8JBSTr8F2Dn-MZ_JtRn10Cx%AvYs&kbezFsZMc~+h;5=+Nqb2D z3qu8vqXwH=uZ6GCvdz3Lh0S9#Ji+at8eSdtm#Gf9b-WYHC zCRBqbW8lHyw{*dq?1g5vvlN(8_!Y40*lNPn z8=DZ9%FS=dEgPgS#266@BqCBT0HHO?M#&)Kf9@~{a4Qywa@^EFT&a5p zouGk~P4A9UHyadyCq`uy189vcori#=)e*$PLjaIyaQS3`f<4WhGz1;_E&a)o<|jfh z)hrsIlop$mp>c0(4uA&(Zz*-BqtTf`8u7+>AoeZgY?#POKNv?Gg%oA+yl>ugMXJisRj1po*C?- z24mm#26YIjrsyf35`7a$=Cv0bZB7fHZUhSTYhDA_d64cAKC@VPd0=2>i9QhF*)2Vy z`@CTv_Lc*MEBjmnJJ!4c(8!O(h6a!} z#6SxQ9eB*ZhLvDLGQq>>r6lxEfRiM22O@K>$=L_4HXpTyuo(1+RbGksXKCaG_0KJF zvk`7+c@#?Om~e_9>izc|An<41d^u8sIf|-2320KnQPNWK{u(cX5J;3I88p4+bVZC0 zM6Y=Q9e@y&dLy>eX(UTzY(?Gs3`e~X{&l59{S^bn%VSj1C%G{$( zxF2^hGG&*^Vo;>y>2b>V0&}yZpQ^W+yxiUyU+5@i+wo+Ys!|r27M!Yjzc!13Q=xtY zo2t=|+w?c0O%V0{^EJKyHN}B+nCbJg^=Hlx5%g~s4ugoO7A`Fjg65Zd1 zV|wTdyh*3yG3;xD&kNiW%voRTHKQN4MUVTG6(cYm@toJFH%A-cl}*E9k~TcBxvJI7 z;!IrykSl=)M%L_)40m0{r)DDi zl=(f>7Ked=6%UeX-@~GBpJvBzcktgs<78YM8D#^cfz%YC_+(1WQHp_Cb~butWm_`( z3_BYAQi zigEfNQ``pf!pP;Z0@e6lmKwVbTG$)B6KPB?cfX|zZ}U$%`2GEM%=bIuWn=(GWG%ME z;0wGl7eFD2rAu#YuB`I_ir9N{$HYBWd8LkmKBOO%VQmbS!cv|K#8KDU_Oa?tb?Q=C z9*+d|%duculY$@l$;K~urvbkE(;5| z8ja(KaFN_*Z7#~fx-r9_8K1!QL=Eg#>gWJ~bb?v~a8M6)o?TqL&TpKrHKMV%LJP);yEc)%OqZnK}X>ox592+cPlIRi) zNhbMHGCi}v#PIO{MpDHchosb(P$ES)s&3wp^A_^9aAmKq(Z7}RgIL}JEVzPi?1-Vn zf{0}#IR{%E<`miOI#go6C;KstpvE1Feuedv`$Kt0kFHM(pJwFh!`G!DeRRF0ucYP9 zEXKlvaI7BDkG$dD%Br;7l}Ljnd}ckk8{(N7C*=l0MCRFlNf>$ zgCV#CLjby&o29UT5^&V~AwU%B+wu^=xVH@#C2-ba!NUqQ461NmaiFovWYC(oMe`oA zPME_@BFSUJjz1v`w3YO6ciazF$(5aE620rpc(p15w_t?E7|*M|2GTFbe~eq( zGO4GZ$ChL`JERo^xU_H1hHi>0+QF_fn2CdV@`ON%Clss5;+Z$Di_XTA+?ry**S$Zo zU}1hV26HyY$8vtaM^KHp8%*5NHpao?8Bz>DOS5R=jaPN`5RGab$M*~D=`OOGd%$vr zn*AzzfCyR;0X2=%Ln^LCc$zRTOu%%((+dDiYkO43-C&=CppScS!#9W5RB1WuL`cUvW+NR15h1(CXyE&~XOsr6BA$gQPu& zTR5oo&<2B$Yl7F3=+|)n4iX%~@H!yC$%6=b#I5MVoEbirhDLaSoIf1q?6 zK#Y;(h2!xbHYlqyR${s1*kKghL<)fjJP(u`)HkSl9Z zTY@=%@@}^j$*QxdMDEacM%ROV`wtH3{qq7_t8h}e3+SzKI@A8hEm)aH39w7w0hKO; zDqX)*5*ySri#Zhf7YX~0B6zGNf_c`v7$K_BcF2|WNEAl*W8l99dL!6opt7pxN-u38 zr4E<*d6bun2LpC--YJkwj#fxtMtvP#GU@>4U9!Ky*!8fmc7e^H8dr~psA{5dHKWvzSIHIq9gc1IG_qQCsm+=4D`&)hoaG39MpAX*_{xV3Nd$-)Ug*`k?i~X_@d?NZn zLr|lC+>B@ZlEfeI7vffp{V@v}xHWF~JY>Yq|CPynM3*8y9>_q7IzOf`5eu|f$sR}_ z9e?m*kEmf9lLp%q9j{#o&z5%+oacCC+kePwc`&K5J6Qz4QckrBRl-a9V>hoRe9IrZ zIpL38XX)LsKd!d0=1%iEoF+1_!N7|lk_^`PNq1*TtdeTnQ;I&SfqQU;n@6epn*_2~ zjlImSqt7o0_PIs8KL?j^DSV6TFdt#w9`P`VAnj~OIk=Jbh^4eS!hTk`$#5DgI`VW-Vf5jGz&7L6ssiq1jmX{=6Yy!hxFDlTqrWzgq?)VSBm& z=;8OvWUD2>ctGrBa2f(|I1;%O%s)=hPq*oJ{+9j89{%iMtA{VimeQZWt4_$HdlvG8 z9pr~w$Wv%1QInAkh>XaFY zi^9&CJH-{qwDwCj#Gm0vT@K>7^cTMChCd#+_@lOK{`m1eQmREs6dXxA5$sZGB!GDH7-qJ1p7)Vlg#~*)?FWrOCC4UH6O!CLPm;Nz-{N~dn ze>{f34EFFr2_pSoy!t2j;~We5ZulekgB1QyZT#%}M+R(Wq@~Tjo%mx!r#^!}_5ox{ zYjJT=r;?GKq7O1V@W&bC)l1IX<}a8Y zKN!v-j{gk$2Md0bL`dSg8Z7DIf0Y+#1=fdiYDcaAn7Cvhm{Q{6BQ9e$G^nxbeNG$R z_-D{(h|kUgz^7%LbOr)1^k-`X*OCCiSl_LDhx91=j2g_Zu`W_B^ZXvPVqZIAb@7FQ zzhFUtv-_oV=vOY(`a*$|)nk+6Lklbzdu%U- z2K_<|)P_e2BX4=5EJ5B2Nbnag@Y9Hq5Af?#gi^Ip3qV&=>L6G!u=GOUr#7cL`ULDE zY{1AB0Y`4|KvQ=ey3SuYlotp@-lz5+zQS%7gG80ZT0?j@oK?jjwW2smin4Z`t94&l z_zpIj0VN6kk*V2gYz}&gUI*gU*~$LFySa{?!;ZO6T+8MI@hThwlr{71ZycsY3s~84 zruR9>-;J*cyHWVe*vi#yA@jl+`7Z4 zh}m^C*Dqdzt7UkhE$+v>WEX4|M4s_p+bkMdM&EM0Rd~xVlKke4mGTxzfa7QiUay*o zOn#hwy0n7CP7O6i+%vpKe21NlrGJekG;FYzl6`>-g7>UT#fhJ&uczM?8XoTFW_fV2 zeY0?@$iX|VW(9E05u$Vq`_VEK#NSKc_7Ce?cLimL*-`6SVP45gH72*2F{d~xjLi)i zUt~r6kp^Ej(T@*E>IYHWdk$4JOsdJBkq}E{`(RA_&fxI-z+N0#0j#)FMHe-$D(|@m zt5k0Q<3(IQB1w*kRuCE%5+D6Qbj>-|>(lWXOE+9K;x8xx?VoE{$XMHp%9M0xj|I@e z+U5M^K>QXbe?Mn&5y6DmDpvgm(M8I^EONXx#rTvfXJs~kg5vr+!~*^c(A!OHyjq1< z%r6yJ5Fh|$i1qAdEZx}2F07S5-DnlrB5~x1qnytgYNKxv#uEYvBOXiN54XC*8wmyw z7fH|-E4mcM-;%O-ZzRXMykU+%S*rQR#KntfPPTZ>8Y%t@(2;iWEIJ*O>)^28cT^jc zx;-d|GS*#RJ7lF=5YuB{XIhUwm~X=7#Yp{xBbAAF7^&NFV2pGvk@Vy?KW{lWCWbQ2 zNMlTelwZE%#;g40yYN^Hi}hoEt7=)iMVz`@(og{nyP^C@l2=mxdDJm^{F?2(4O)>8 zVgqh@x?|VEKgWCP#k#j90Z)JS%_Q51Bg?zMAyP|auMGfc`yH}Tfn^ha$UhM>nxHXQ8LUZ<@Qv4!&9m0j31~wMx6vAa545x~&hv&Q{d>7_8gwgll zj)0zU-61uw9ru^QZNk08=npZw;4)F_PvHUnzb0kXH3ch2%gxen5NTA5Kb@q9`r2NL z7R%*g3s{`yDz!ROxJbVLvC8Qs-*7ax$&ZuA$=WceGPIa8~z|Ch#ya(}SJiQ7L zYYYLq4!Ez+;_r%t;GM)y!WgdbaAV=5>mlO(T`&A7)ivBiSL&w`>7(I|IG61!S?QBI z=`ZU?v6rspo`S;%f8)Qh@W?q3^0spKMIMU-mE-}9D<$e_{tz6&Aue`m(_X~vz+*}U zA=>%APt8CtH-vOwq5j1LW3sR9dL4hX*u>0W^rN;=&bDH2b0}wn@r|-3y&tfhV8$SJL3AUx-PCP-9o-l7f zX?=_G@=|W-Eo|eV&r{yD4?G zU^m())_F>3Ah#k445N==RO^baUw+6oy1Sxl09urrb`*O)Bv3bkO&@SbS4!$WbYa~z zG)b}ZuI$f&NL|nvi@kx-u5*vO?}Vtc&pYCqW_V&zgF6KJH#=$BAHf(d;Rk;+$Q^Uw zwMIPCzk*8$trv3bu0&(O*joQWycK(nScxnqb}(VAl{fAaR))L2Oi&}g!mhs>n20}M zTv>$)RuTNhmHLhNX4BTCzsK1LlzPN2MX{7XOeP5UOldkhhRizZWK9=7Vjq2JC! z9KeZCRv`>fa0j??b={Vayy^QZ%cC@UX z_?@Jrt^2qG+RQ(M8g@IdOWjti(L4U@q%g+(mXl)j?|y523U5@8?Q^aQ!~s|Y(e=bF zv){&jq3dxl1RHwyyg;G=RUf`zE5IM|4Ukg0Lm9A{^Pal>Gn@z97K&Z58yCV<)P=T^P%qNCwENvo$M2}$3#__SVCy~UqOi8Yz?b&`pj?zdD3BuSu8>!S4L(GVi zi<5GsUk!#eu)F$yFz2Mr2aDAw#slTJ5XI=EBS0Quhao`rqB2ZVESw1Kiw)UC*y22t zr``ct=q0#6z*TRWU61u0{Zr1@q&;r!*Sjn$Y)awk%U;ufH6pav4Pp~h8__OI3+$o| zm>Px9h|Pdv9;?ES6X8_u4D6@J=1vo1-XfMTaazSaGRhK4H?KaIVQeUlIko^j)?$C; zG=(vwwnQ88gh4=CQO;pax1G)F;UcH4fFhgm#Sb30Sx=sp=q~xh>j0vA?MyrpEX=F?&?WT6er#g-@^WQmq&w*3g1t@MlLB89I4>#NlInuaei9;<*nv=oajL|TI3 zgAJy}dDL4_zZNNcHCSJdTVK!Oi|dN;02F$1pE?;6T5u=W?VQZ9(7aD;UFDNIZfyLGe#TC0aFaN80V*u;&A>vQPZjxpZ374TY`Ot8s;pb$^NV zTjy&ATOVi*i1-YpaR86NV}UC`g47-5@7u@vLzu5uR?xo1PO?(p8|BtygJgMIV5{RI z`{4+M^9OOh5-J{utHo4knmA95pu@MJ%4#}x>x(hQdO-$%$eb2EbmbsaKdu`-K=KsA z^w01dR{9k{YlYta0rH^VQ(+w}*Jo9Sz6yOB3abXc=wT(J0Gc*_Tt|n#9$lY}s$<&Z zZL0E!aqN4T%<#YJxHT+S3p7VwW35n3^%hF?o3{fMO8vVB%!U#u;J=41+pBnGZ{+p} zKU$)18G~KcGf&MNqlcAKtQ_lF!rKC7|PY{nn% z#>#HtA1m5L(qp?4p&q?UWjrr7Q9$us*b9$e>G<#T(J&l=__7RFAF&4xFCh9j7Jb}= zbB#v67P}E$1f_wRrk||^-iT~S_U|szRQ8YIyX@a{=--7UE6F1W{f0|&-xDd+vjB}x^&xEr636%AZO1#^(oOig%D~Dr6KM<6ng*hd8J4*C7 z3#03O*BNOSLR}wNg1uj;>uG+u`D)o+8aAi(-X;2G7z4f9Cg_uU1O6Dm-;3S$mO}4w z+%%Mg&z~A#Di3ijUqxGd6O4gpU#}0$C=R?)b-?@`OWgb3Z*=yV$)DRa^qOYG|+82Fp7^^LA?pVKzA=k1@h$o*>VkAY+*ipiT)<1p39maxAEQf*m*^uU%7D zCnd;w&}tiKb-$$5ZsHglRd6T7ZoxuJgz=0CEW9sp%p|8x2HHVYqE~b!h$lPLVF9nn zYYax)vXpzbV6tj@qYVDgAZ7~i;~vuNN5B_;U8@qmJI&f5ih4Ak90SE z1Y3wMxY(`dWSETAxA+LZx_1VCKX4nv*@yyefT-N=1l%?E#40!$CnW-hF|ZI6EKxdB z*{PvP%mIj1kVZ;mI1h2@3$=)Rh_V7e--#bO694;WkO4xmls`cwH3;Ae4dP0Wg!#GB zi}*6o2}WDJJPRNT705z97DCJ);sXx>&mzqI_mukUFjsJTd0Asf2gdKIkZFj2rcXfy zhIvN|j<$dw`J-xhLg@8Z5CGBrIOOpm9-N*bLW1kaVf2t^c1mUan@}Kci)Gv*khKYzBGetNL+JQ?6cW;456H0Xot0WWXklj^h!W zf#V$Pc~I}=9D$(%I?aw;$|WGM2Ev!tvPYmqDa)h1VsaQX4RRQ0c}&Hfaivh&@M5aO zl>Xa%@Qp{Zn;5y(W;C@UqiqBcB%|Sa1Ep>i<(q7Pl;q$%Dc_T}pz8|$zOC)oLaCaB znxoX;NSfTeku%k?4{(u0a(pC5N>;KMOS0wbWUCdwfqbFt-Jx%TP)8JDub{p(-NS$$ z*o6bYa+>$Bj0Ee_+63(z;t% z@lUXq60t>R$$}ohafcvb9@Mn~PW&Bvy-h|e$=Oo3gDRVh)5D2xh|8Vmh zxvo0|8S(r4>segiGZT$wpBTBMHcMjnZoSvDLQJ+LpHZDQ&H#wpK*t zV%1{3QF{@qt-D19@6-$XeZFSqz1f6~`nmjmpMTuPBboR6yl2kLoH=vm%$YMY>KKK| zL5Awcg-GX=0Cpwo9~NrY9M6!V^)krN`Z+^_A3!;u1mDy%<+JTo73*)^TSY1DyG}k~ zNJP7j^qpbZR?_ivpt~RKC0&gg<~!+j&P;bTo!_SGYG=9Q!JKC>?;qu2AG%>axXEKp17ThHli+qG4RsttS1@BS z`cC3D5DTXY)RCu7LLx1Lsv)2XGsIGAWqro!EMYcA8gE`-4~K5Lu`Eu>=I8G|(pXr{ zpn+|F1?S)H!%O~joh`);KGf)6>`R?ezQ^}K<}jkOID#s17{#DgPfjV_Bf~%&iI;O9 z#vIL(uHJ=_bobFt-u@bvH2D2Nshs8l`4X7&3{F*^QvM3L_=Kcco=c*Ol|E@m#ej76(OqQM_;kbB6jRqCgw~AWsXK3>j5*#aPJA1zYW-qpfBcl#3kKno z(kE)mAGo@-3n#B?%55~|p{9cxz8C;mlP{Wz>P$<{>lWaT2GD&_tj{_q%EO)!V=!qs z)AOHG&{%iL)KpYfR(EvJ?1*@6e(QAvnQMXJu0UL}=C928cPIy?JbBMq@D> zI<-wBb3=Pj2AF)NhJ#CL^6!28?I)R>)wrXZ)B) zRK`XaKW1qKW|Qc^5yCmbI5JC%Ff;pm`j23v=m;}9F^JOau|IG&M5v=vnK0{av^%$7 z19xn@vRP^D!103G7-w|%Lxqe-3mAH}?XZ(`)mg5Jl)ll~|M1$<9^T^5GCbie&dKZp z&th<5{Ds@mK~YDUelq~~qw!B0l01~0ndE9?qgNj`Bzo`#L`!$bk-fr znP|ym2#HV`d&9-FTPXXFL3tl%BEDK@BR-M*Dk!Dvv~rws^!m^}r&g>PDP^VuGiVAc zNr8OP`=Mk|qT~X>xUb7hfh*VO7PLWzG~G(Mh~5-GH8zsk<8s}P(NJkmCT-%}+327L zo;QTNK$>@(AQu0Be}2cPIqIX?&hHp{vDiq)x@2CU4HT!K%Y-k`t zkMlbg@|~S6{y3lQ{EqEu6z=?v8D!+kcj4Bmy6>N)Y4}bf2u>S<_gyyjQqOxA)!NtWK0*}i@Nv_w!A*WLCdwBXd#F~ zZL%m%T>lf}3$&_=AsSlrm;5wm!bzb<)`WGUG6U)z7ikEu!Z~56=1J}QDlR{`?KiuS z2RH*=$ArKrJe{`~t9$2$O?=Q$dGsj4P9{}!QgE}82V^XcYCctzxJF-DscbL?avF8M zoTk=-Q@>DY$B;I{y3RXHD95omBQ}j-3BUq&kHP;^JCx$n=#fz5R9))v+`Y6~dxvq* zLB<&`GVTyz0neB_Ae%B^ovf8@BUmpuX87eq@OdRNadj^!t7c{p*`K)nr<$29F@}e# zAyT8;m-;J1Iij!eG%;!3tmC<0B4JR>ofjBLo=k+AVmfJC8lfjc| z%Z=S_8?OCf+5ofn?Zois-#Q)SwZzRU=;xhx+8fE)JHec)GWL)zVqYh0xIu~67H<@H z=*BsV5HtHp4`D8Ld7fz-Gqh@AO4uydLK$(~gD;CHwvrgBLLFFZ0Qh&HQ!tqcuD%E$ zC0vC(G+*0H?&k7uI0E~Il8CY4JCq-{EG!DZETz5h--*I%Y&yHee_}1Q>yO@79$mcR z5iNN$K((tQsGDTBoNbKU!)Pu|g1*K`6}soQhFTSCRuq|0stsUldnIlY2g_}u-~Qxc zMf3UB#+JdIu{&NhZXX7zF^tA5immI%dx0lvOP|JoVT>7a*f7QnHb}N_#`U8v=uM6F z@2mM@a!?mupUToGdvY2|p)XSsr(K{{v;xMq;BA&A(AP}oHl5iTIq`EV-`QH2Y@oI} z%#{X-&O*;O8Z{$P;_z=vh(=$O#x`F{VoBu8x*^S>j;T^qJ1b#FT<3HGyvD5<=SNuf zImK+Os3N+XHqKAanbP85*C6Lf+? zg^uGbmjnccS&XA7wBxAseY1^oXK1CaT-R2fC*LJ$?o5|TgGq#&;LP$>%Jj$Gk*%9) zmsDNpZmqRod1NDa=)O&nTR0Y*er;BIuhv53weQ<$^=(kAw)0zhVdkSz=d6eM47HD> zb9TVwP!ll*=O!MK(u?@y49hxlrl=Kl@a9WKTli>Ccd zA-`Y>xs$VfF~RNB`NXtI{OVnjn9TB?OZ;($ndLo>MTH3?D(iE#<&T9rjyD-plL3Cw z+QX<>CEfrRl`*R{#%L_4oQP}`_1*K*E;l&Ab=*qLYRjJwb!;|O#2F`k9utB^CB~Xl zU1m;t_%h!jv8(pVp1IX-KxdAu882soU@+B~##U{PDJnA66K8RX&L#WUB+XXvr(3Vr zzEcj$=4|2E{zQSP2IpkOs}U(zquyinJjCR&)f`Y{PC&NTPD?3qEKK+hMhy4RNglBOP{=B~sV;L!A zn6PwzVj0nrw*gL%FMKW$Tl$K`#Ak`oh}~(eIcMnwO`%7tx0Glejj4#r!4J$QL9OEH z8q@6tHb^jS9zIwP0X#7ttkc!BkL|89vaV+IAdBCETR%2TrRp0nuU<(ck5_1=E|sZ@Bnsv?>@z} zZ>*m#PKiyTaj#?^h%csgaZ4U=t&k?|ZK>F$?6K{3;<0o#Lad=V!k2{9Lv#xu4I8`_Huqr9g*PwW-<6b_eO@ zh!HhUiE+^U=QKs^=rIB7m_>?2zv<3dG~ag?1^su#?HdiR%UKkLgn_w~Wg_xM^l&bt zXDeDyyc{^tIj-!Bpk6}x?Bw*p-AB0xU*Xw3!EjIF!XK)hFDIrE3KCA#nx~$HwFita zMZ1^s$`kdg)JX{^xuw&hL{YYc(cdSJpdNlP(w^=&Ded2WU^6XB|I(8du@ob)E zNjvtWoJTX}&@8aYxs8K~+TROZK0XpZTVk|zggM5^%ys1p7rO{qDIJ&S>G^c)c;6=x zhdd*KpWS`r+DPo5BmS89x=Nb$yvOS~`M}4!`v-{+dF^)IBjwyrIkm|fJ@=K-Oi<2A z=xnfVh1OLK@tVC_vn-ZT4!@fL{c)sc=>D^~5}sion!q>A7oeE1lc5OdWsbcGtLJQ) zP{NGn6gn~sQkPFlYQK&h&)$q)r7iv`$8Kqi%)sr2Hayb}9S^rdnQZ5Ynf0QV zu*gk$8mGJ-ZpVkqX?-K_7&ALtAQAOI`6H*vSlf5nIh%wT>Kn#X9g4r#R6uI>(ldSz1@g)UvLP6Ulj0SoVy{fSgU*W0ZJ34h6;Js~VU& z&OOtL*I->=FW(ljiEYBOr7vP;dT_rz=qa|(pIuY4Fxu}7FiwJd6X0gQj) z9fg8bOWXp?x@Bn9pG6--VzZJywP;ITJ^;#|{DU&u%$<2C7l&&EIBcKshS5?3elVOF zVP<4g;)fkYAIA0~c{IGo(lvwI?i=gJDx6QSs4+I{;V#R5=@s%LVR*a7dJ;x&xHutJg^n2Jv;j%`92D2`9>`vFAwAi0+z zfzQQS?>o$__a#qI%3swT2ANoqO=^fr%$=%vyYwt~?o`&hQaBfNA=$t@D-hykD4zX&}cZ2F0J(%-n%n2rRXb!b8 zXWN+mjI3Ek4%qRy4l8}OO$le)n1cz`|0sS1eTxfnJ0tYwdi7*&pZ-JZx5*)TTpD`@ zW_QZXoz89);hdZ8QO>y$uT7!uW(|H04@MsvOm$JOS4~5UQ-6*{=;I*>#5p(8$6b9A zFG|na-!}s*=YPTsIoRpmKmLHavm#MMREqJq<39_R5neODN^9 zg*r~7Jf;WA;tf{6y!WgLW$EEk%rIi@Gk$mjbIyqk4B&?MT2|zbs{h8`KpxSy z5!<%ADKHBg@_5opnUN*t(8+hA$Fb~C?XAf%o=Y9aLTk)ERio%~RU=uSpp{GmnNu#U zWTDE*Z>XiMyj$A9*^WlUjKu$;YLpc*FVdSOVo)ddwr|0Eus@}ih}nXO*}})UYw@nk z!F$vgoJP_T+NLvI+jORf*ro%?AYJl0Y9m>C7sXaf$4MHxhqG{6J&Drgyh@ZtbN0`z zj75>9UosJB<~2FC;HpA$9QZj04S{eaCWVAifMYqaZEVR1BHN-l{CkE@%8sSL<90_> zj{|TR!TKL=55N(^mmxq^JjXZy#;3CnX?lo#NUqTGh{5Y(Q)R5xi$`-lP{}?>?!X*Z zNf}}}mGP=kA3$H$aD?kta3yZ2g(h9hNI#LPWbI&f^&oaRgJRzY*ZTGpeP8v?iZ2@d zDfT8RN&fDmP5&Bz2hbLDimg&UChkitjbIP?bM)lM><2Mhc%3t7yS%n1-e)Jl=E&^d z(;*A-LX5F#;SrwuqANUb`LF4;`HYy|^RxSXBKJM^sQpdb-O^=W0EPPYBazvU*XemY z+Q%bC@wf^FBh>yA+K`Oz2b8zDl6w$QIOeKM6vh;#Gf!pMY|29gR2El>bN1Pqtf$My z{)WG%6(F61Pp|5nz-68}kd)g=gH+^Cl z%DbPOOmU$x#R**}Bd&`kaiRmD9!yGTWYXK*SITDAGtmV)R!vbSxIkJQ(&x>(&UyKf z7<)f->H`~E;>{vISD(EsdvoF2MCOtuUiuz&b@^R*f|5K0{c|+Dn zg}nr2Lq-9(IIVBBMx=aWH*~~gEPOTk)b69#8k3Jy@Izro6jz9~H4>N97b;Hp|7YSL zLk4o?p19rX5?Aut)g@HD^q5bfxVIfo4`$fI8R9W?DG{2j*)pyPwiWd6RFfG)yey7? zonppx!`NmtI^h03hhIwmE2AUv!y~iLVU024EK952=SS}MdjO2*SPqlNw$Mt+S2!x? za)$HnBjIEEz#sb?jg zlSPN&9Nru8j$NlrzUZ$rnEFV;!ujAOQ!h*ywpLV06;rM9Os&-XTOwypD2iTgtED=| zBJ>Z6XDi7_D=!oj83UynI{(j@x9LaiTS`!pU^Mlq?vx&-LJmcTHs!=9m3!eu3*J$S zsny$G3nVw8vKYUu=M$|3M9wmkxNm}L-;%%kyT05gPip>U+?Oe*IhYUy)|ATdm7Vha zD|rWfQu>mL>N~xM+BJe%$9LHpjN|)gNtb&@R;+0*wqEa_0f5^$`zWR}ppBQ;yNY1^ z4&WE?)y7`n)&XNLH#TJEeoS_CY^anHJoRyyXqV;8cv`Lskrfk$BkY8s5J$(*D*00y z=VD2yI@w{lHEbC@c??C?;QkV0t||XWIHwBbh#!HjI>m8IUEodK zt5wT_jMkxX8H+E1B#T&hz#RG^jmiecE_ow_vC8GxmEkP z+8-{F_ya}jl=0yr{bruB;{()>YTr4Bd}_nz&y%GTs7-Np*#ue}pbaJ)g6#|CRV(-7>D zZW5hMkCD#tG{WXuZs({CY_5Icy*k~_@n}#>vv2KQ;P?N|W=UU60M(CPNpdGfr;0Ze*TrVQSF)ruBYU@pIu@D9Bll~>X2bJOF^`-3xZ3j2rBL3bYT6HH7|o9_Em=1q1F4;@=`O*^`hsgg60STPLSf12Q`COfpc(R1%@Wc*NozEDY@_O zMbWvxgQj{gdhQf@T2(Cvi*f!2C8^@vMq^6a$%`E{L_CE35q8fVr;lo*%AZ70*gzaO zMZ4lyr>-bsrH1833QPl=tx9fPN?sa!#G;G{$5}(33>Ipt{KO4oDY*oRv?ys7Dz-K0 zQDn0VLMoQjQkWXSD9yFNwCnpqg5rVZ^*HC{l7lA4o4`aXx0v~HiLo+D1(9E$+MZ7` z$z#q71My_pU|;~nAMAb}xCkeT(WX>Y8QVugtA4IZw|CpsYV8?VrFGkbFHfjFqg%4X zjAq!2oZZh=F|&3%i87b-YES39ShWfY6ujdInUu%8UvazFg2KhDsLd&^gJr z>ZtEB3)pI#u3$O_qm#A-x%QC1b2&}TFmslybLGtcIiZy?w60XWI#T+0Rp5C>L*oTG zkYezR?_uosxF}AI4>{(X*pTA#e>1%9qXKKs>70Y~p!vkOtNoHNJer zKG=99hEWzE(a5E_$cXTIV2gjO%0;v{&+a5$6qW&Xu{>i)NTO?K7hx5rWa8s=q`#U@>JSdm6pE0VcJIB^#x>QY|d8>2t{&-Pzmlqb&3+<*P9{yK!V zVHdNn0#`Iy;@uAH67`E1-pO%B|JYK-UQDy?X74rOW@e)g;!~nFV?~zH6SK6C!$sC= zkfROQzf-EN4a$$g>~@3l03_fi*??W74cKfqNo$@uMu);jV(h~yg+OH;5kz55gH zzy6NOtdZs!Z8~e?jaMn|nsUnjOLb)BMzb@vUC&nCj5y_>M$x#A^&M3U68F&t?9E;E zyB=J&emc$R6Kuft^Z%s#uy>DAjWx8zKWZPgKYnE2kInQa>wfGUI&&oU@%yo#ql;L% zlzl%o__OZEzLzf5`+n@(_zLaWk6oxP*z11m_tY_+KbAi=Jzzif;Y2d~v5VP{?PjLA zg7w&st+T%2FI`PXyVe)?+>eb?*V}&VyGd#c5t=c6^8MIXlPueQY%OSI-;Z5n++DOE zo8oCdc5%jj?BOa!ulund*VoQ*8^*ELxnZQ8X>>bPjm@4JmZA9(Hh+}vi;UBJD0IWO zH8jQEM+spHVvH|86{J&Zw{O>`4XEmh0O^wAOKg{Pn8{pL_DX<<^LEx^$>iZE-7ROV zqvu;tcv)|3e2WrNIki7Wt$fn}3{UcN^W&)-?wIdOw>yR63VcQILN>FNo^+k82f zi$61^{N0u_h(F-)TJCx0`T*3KttA2!CSDoA4#F>Y4FPOqDIxw+Zpms>d5k^AoRg{D z6Y|tA-D#=0V!H0;Sjv{J#1 zTbyXpr@iVW2=)1Cvt?-26U_I}E0_86OE&AOL9~6IE%S5O)ssFU1OxMC&a1_ZRO81J zADTG>2CoOPIhwu59K2vnSImN>5k3+cGzG7CHqAw1i}r4*RwHSGw6$8(393G4NQ9Cb zS4d`;a!C?LL=+2#sUvfA=6WNqwH1n`pXr(mM}@;zp&5(4M4#7fr6cJBcxD()`n56( z*NsrzDMbdg?XPxipSSAvc13D`wS;!9PB0rlD^(8hDSJ)fn8qbTt4_o``gYM}_faRxIXW_#@ zZrqS!@3wDY-0gqXlvw|<922)EDKDh-c7I#mBPg%j)jKCJ5x<0^EcO)XSSYm$dQeH| z#v|w$W`B}q#I`jFv*NcFJhib4 z^qKLWq^w`p#tzrLZ0Y%OK+|AjFe0CBEy~2S@ya`H;8*KhS=3eoqQU5hxN$mryGQ) z?N2@m$d^BAi%yzM_o5*2LLHa#QA+R}JGs^FKC|;Xv{GxxXsvWKq}1VN`}SdQUESdv zEprb2=)DL`hdDD+`fT70YinfHm5G3JhnpH77~;IbgUX-Lsw;O%3B@^k#R~T7m&y6b zHyMPuH8mauX)HQuU+3piW=`=H;6i0hmf9~}8ykDNFqY4t5pz|qhNCi$3X+h@qDu_v{^YZpX)>C zB&R8K@Q|6$*(Njg(n^RaV|7t-muaF3=G*iUh*YUnaNBLtwAu=8nuAit2F0fz%nIpr zo#S}kKDSDGy1tw?q*6z#s0JS-KVSw@89&^lsEo7PYLXZRI}K!&@j-A(Y#>RdpRRAG zeUMxSJaPIkU*D>XQ}9@*Ql?*(Rwm&hbKjp?d1j}B;aO9PNzlvKd%0LC5<9~z>&4iv zw6&&K9dJuc*t5%R?OThI-#aP2-eyg}X88!Qd3GYdPPy;d9%;X-m=SuYS4$N;3RY%*WI$SlrDGa$i*7b!`P^;kE5;>aq0Ga5#e485eo zI66k+oJl&K9%Amp?d%xRMkVBO7kirx+cHrhF%$6@q$JGFkHn9{tvj^pb~=sZrWw*S zOK>qu5`m;-OqHY=`wmnujY7>JWsuYE2NYpEr$QZTWvd~-b$r3zJL1pE31c-Do%9wR zAmOCuLatw%n_5>*C3ASK?;5+U#>}hkFdKs~Z-pgltNG`)>(rIMY5hcugDu|oahs*t zV>A=_647ZS{vIP4csdL!V=-@Maj^Yijd^zO4_GHKHn86*Qa)@*sAC8v(cOdo4x&1y z(Gu^YDQGCPngvv7VRpzfePns_H1>^0VzvOH7<3w~_YG9hZB09_RFnpVU(n>SU`fk0 zok!maA3T>>bD=n32Go=uBe(4HUj#c2!)6DVA<_GG z|3rGaZi&2`&WR9Awq)j~B`rB`3jaTUuIi*WH$}O@$4g zzew^LjfUDbIM3cWY&wetBC*dyu1kwJZYFB{wl&R0HDub1St@F-R77n8`DBpW^Yj1F z`kdh`EgjQXX205=Na<^d5|e-Ty?do%GxLo3uc zr6w$P+cPt?!*qK&X0nHvw47t4vkoZIAgTKo;p0}%-vPV^fR)bLTg4{eq(%YCZ@ZE8 z^m^pr0EyZb3ZvK(Iy(W@Ny1i=SY-z=FWgw#}Jc_ek>EF}<$uP0> zkRd+*kNk-zifyv`6OYAxF~gtuE?y7tH!%Lh@%!7<6lY%5&{~lc-#EKvXU$IBOZIX? zr1>7N*(Jw5`orbGwi=I+Vw1;j{PfY~k@DZH0YmF%bF64$-w>6d{T4u&X;E7%;GUc8 zt33oYzHyT{Jl3vcd|PXxuH9&WH?`R}b8aR37H*EjH<)L6quge2r}J*@xbVRP>Sz6B zCYD9YCl+DWWh}9G1?UINIJ<8L!`2*V%-WcsX_+<<#PkHrLcAu!il@O6GA! zyj)cVjYy)gB9bP~gfjfC52Va~*3u*KxT#Lu60q}gJ4L`66c2f_#t?e-WF_wc8A@9@ z#r%!LJ#>;tyGc;uJJz`Nh>zbF3GRY0Nt_3{pSts^dhIvWag2UUtxs9XuQ2&fh;)&C z8qeKnK4CQG_6neu+SAH-bfo46U-HN#_sJkM2f+J%?NG*<439Cp|6l$-@zti;$|p83 z??5++#J_G@+);hCS~}G6eg1ze;n&mgBXQTphOZ;rn)rXR@vcm~iS)}JUtEn_;zvNH$g$2dA1+X5^&(mBk$Y`kRLf%+xrp_Ya) zM|%>&>@X`$nv2C{Ia&$>FU^m!6G~d5+<@LTJ$Diq%?hlXEn<^UMrnlDl~`+ZHHrF+ zZPapv&Y8)d)1>h8$IF}bVU;J{=MRuKYs~lmEvk2yH^aK;-P)mnEYsEaCMkOD^7A*& zU6Eh=GiY`aMYOAJ=(G~fU&+;0w@CXRQ<0%`K)DNc4m_7BH9Nuvu7yrv;4BXtH^K)Z zfgRnfsiBSm%7rC$gYZz{lM9%ZtyVt*8SUxQ&Bvn3a40ivR~AQm>-=1?G@;J{kZnS$ zu~95yl?FodnDMPr?G%ZiEtypXWCx$Q(khmg9cFpaSd?%Tc>qmybn;|3-;#=$_BU$z zyj?av6>c!TMkx*c_XO6AcLv?vyjxczu6)GRsHzXMw+Us*XMtOJH{y@lwMXB2KJhso zM8xDVrWa6?@%RO8!Y?R*iKwm*3zw6eU(n-~0nDJUcliaa1flT@vUk99=llrk7qp2v zW)mN6-8&}+Snq2YqqRQyLde;7k7{<$)u>Kan2i(09)P#+@}QOvbM_}6CqkDzFpBUM z#b!a(?MY`r)fv<`(~#^*-(}sCWs~5Ud9MzMp&sK*g`g~qm>>&oAk zu{AW|L0tE8@$kS6C^0s)>J?&4>Kywjfrp8zKdZhhT@FdyOr7drYUE3QT$iMpm1HZ5 zoSQZL<>S|+@|a@$6l5yKPoar*xW_7;KGD1u)b@Uhg%XJzASlJ#jJfh#;(XxU0)@>d zZCkekYWGfo)lM_6_8vE4FlH?uDzjkzifYU}iIXV-cy{0Fk0W@fZ^mrSx(K+Hof?TQSo zK`!k>E`5Mp+JSL(AcJO28E`9~(y|F-#L$|LkWEH2;uZjz(uZQ`#2Xs%6nooAsLK{w z>GVe`#y~7mLgfi%P7^{W>ZuK_*MVDcqz^-tSj$QtYn>1OK>);8|_ONFlEF~AJpy2^2y zu5xtlV(ky*TQ_>SC+eJ5_RnmxU4QrAjXbE6R}crPBP_8u$!F`G=pk+6?yzV-3);%| ziK^qDqo`N7Vs=s(c@g}ceA~t?xABfSAbZ_gk7K7~um(Mrr;v=0C%Kz}1^Gk1CFILI z-sJn7%XgT?_ia+A^WB)00MRLJ9|0d{rxy*>x6`W+Hw#H&dybweLNejqu#TYOurY~?g5RqZR{ zDDeS<#^>)^P76BUj>b=+xicES8Crs4`?>j{L$)F2R{Wk7hSpQ*6l&-JwEq&y9O^jB zXK}_ITFUC6hLim9MTs{l(c-poOKhUoVFp*L)<*R;#;(48{H$#m>bRPW+QtpH2zK`1 zCVQ*c?O&!^*1`vU4OcZwYfU$g>3ROWR-qfE{-=A`)1j69z^Wd$B2xZz%N05`(RRtw ztDm&4NX^K+ZR!Mna?JRh#fAtANSJ2E?w#OqBD9UW+{U}2N3la4*CaTWt&(Ea@wgV%xZbRI%t{ zaai&{55Sv~Tq(Ti3wc!!)h97~jfkt7b(OxsKdDtkTMZqD;0BLm5@;=_ zF)&iBl5a_5YhU4E)9o|o}UBE_CI*Z-I=Pno@oWfcENfEkhaA>Ag<5hl)Bj9LUo za|2u?9vDA*Y&g`p2u7i+(oaiuR-NXC;$eDd&O&kvbqrGvtw2Cy>c${Jq(qFoX+}1eXu%T4$actGpyhfwT{#N&(<>6F1r+aooY<7R6`Fmt% zE~&`Yx?!@z4}$EDS9U)%yzOln9|$B9=DCd;czcB|`FOhD+#dm07cZ?sZ5}K?I)tFQ zOGikxI&9Q2R#0*E=9P`=C48%bj6}uqQlCE|bkFh=n1s|9F_T79BK?+%0nBZe=^D5Q zi&kvkP{BkC{xEdvpdD7NSu9~iC{t=-9i+N#<4P7#q)>;EbKDMP81FpGce9BQi65H$ z6P>T8Jb71jTH7UGruBI5H1D-6=^6g0jqCK{ml^5PPsPclieu!^N5|7u8J{HH&I8KX z*IdxpC7*1245ooBKKuTyG=7ShSl>>2c7jTJ6Ysa^U5m}`eU07&B;j5AflXVQ%`4`N z3f4IBarX5ZMc|th8#)UOMynCcG%AuOdF}gVEzR+Rk03FGJV;>MUI|Q6C8#Gs;`;}u zXEwgA?weEp5G5vzo^%@4D_d}(em0~4c(LBQ! zV~Ak-MC^45J^1zSTzaBazP0a(iby>QcZoW`k$gzKTrIh+z#xwLI;AJmon)Bq7jq5r zU-IAb9L9Ph>TWeGHS&;x{*(MUH51w>mvv*yeN5l zn<*a(?kzke@3iubvLx2%eFpD|V+y)h?{9}Hez*CZ{0Z!$0poTC|Jf5O#e!!ccnU;W zR&uaWVZTO4Hm5GiW3IV2_9)9KbRYQ_H6&7djp&D6D;S^|ZOu7v<^XiLF}97nXbwTB z<2nYK%Jv#YX{{31#a@t^6?}+L1ZH9el*i`-iP+;7MC_?~LNmysDH0lc9bzS0vc;aO zen18~Eve%gXdn|~di_?SyeqrJo6tw^4QUUmX0ty1lY=b0!cg8UUhApee7wPYwB*Sc zIG@qLdF?|YWw$ATX+LUc>gK9xYIs>MnGZMkbLD)XzDya|afOe5ap)d4C|w@FU|bIX zzp^z@H^TCIy?iZ7^shqR85+I3#Nqv@gW+T-d3Izda9yUd@?4b@5f@g)nZUf4IJs}P znB~M|1BZ)d=v90#&F>}h6fvILwk+U9PqB;pXCiDu9T%bju&6*>`Mv3sUoIlj8rvJM zNg-r(Avb~a-RBg2|0CbQ2(v_rokqr?fG|t+lD2WDT}-B&-$>q$QD{C#K{aCHG{k!^ zJW@)D+Qz-nXfWv9q3%4=dYt%U&eiy-9>s(MCU)6F}Rz1-2lv513h?GR&-r&a&u51iJBG2%@KV6M?HL!Hpb9+_oG( z7cm^4cge3;!J9Gu@7`wQN!NF|b(#4_x*tN=(Fd^V?-|b2gIB4X$r_Urd~N49Y2ukm z+gc^QK?>D>70dUj{Vax3q~tX!SJ!+6wqf;azs7mC#-)-! zH6>tN=gbA}uC3`B#|4no{hlh`HNWmve(xvSwI6}!9db(iC8*Zv(c@ba7&+qu=oVMA zxAnl!+xfgupTEdwf9SuluE{QN-$*|{oV+*v{9tl?#`6T8GggP8 zvz71iM(-T;MhMlNpny~_FOQ_?!h*5hrEfSD9GQ**UCx)gXCOb$X zmZ{4*`hf!~&2@JO#_!xEyTqqKtqL)$&5n=@;lPdu`M3{+&NPvbC=?)S-4NZ{Zf(eDp2u?!tVo03*AngdCH zm)dXSyKbkMgYG8jtLJ+69N}u)&u2Vekn#Klo~=Hf>E9*{=A!rH@!+=K?fW6=_ef{( zTZOuay>k|Pvn6^0XDY(eqjnq&yK~#%VQpuh6dja!fCQ^HZB*--MPm-@d2p?qa|zS@ zr2Kr}6=uFmDl|33-j;Q0_)}1|jk{$A0r&bH&?y?!^WvA3eH4nD4T|$Dif4K0#(o_K z8x$9Yd!HCauSWm3$u}r@w~6KNfG{TLNGo4Xe-!_mlOfMPD&Che<7L$+aNy9qjf~yA zt&7EQpv%x_y5N%ye|NqATD-efNbLM>^HTE;zis3x`A@@xh_gM3^?JX_zN`HrtWnL& zytIVHVCQ0>)w&vNQDUV9a z;4H@S1m*3#2H%)zMN?uAa8`EfF}oYr*2b7*VlwB9|Mson+SsM+ReJ!r`d+lUw)1n$ zS}td!1n$oq=F0J?+@xeZRGQ_XvK?;1)UqXX&l&jjauVID+r?ib+5K~09&5gG1Q)uY z(jya@?bMa-Pt1FNKVzp}VlPbL3Wx_@2-XE2m=Z|nuAeDp=j;J~3vu=zu-&{aKJyH` zZDx*S&&s96wel%5S04p-)RsQ!JGP*AILDSJ+jTkLu%jZeVaMRtvd0|bYtG8kv7;QA zr_v@FO;YhQaA@IPAr9i?usQ?&7c8XJ`aWo?cmLZ;GP~aUQ2v9|^wZy`6!??^pHkre zPYMLQ9IxNFapS@hmYlp~_UzWBOPdzYZVJ~dZET(&2JVGVJ}c~%c%@PQ znKfnB(x%3R3zy8EwP0~e)6%F{IeT_fbF^vBn6P)=;yFvkgwJhSwB)j;IpGt%sY{~s z7c8C^jxGte^2s~5$$oDERnG_jmUtI5E?rE5F%+nE;hgZ|CDHJb=BCAAuWm`>98!3o zx}<4wOL*?mC5yr>O@QVuSlBe&o6{I=JZ0|Erb}C?!4<=!%c2%^`I4n`TFh%^1sWI6 zYx0YK&cun{Ia9sqS2Q<;PaHG9X<_q;;kiqehG#EXw5W0MoEHB})3OE86T^Hsam=MB zsz#T#E{OK?#t81!ELk$=;wzet^9%y7-vpO!RkcH=h5ht6#zJlDUxg#PG#e zghxT;a7*jFc}*?R1xrMlC1ho)aH7|5TGxj$UO4OxhlC|9vmyUDuhgqud|Bhd1#`%C zA24DCBByQzF+1W;ZStXf_-dZ3?$U=ZqO+n=!nwap}CK zrQzuO#>L@9jmu`WEV#0%q}1;_hNq`3YFru(SGGo%(3H&!o4`=Lc;14=O@^~gRMT4F zlf%>IFS#6CltAqtUewg0M)Pdrs?En-N~~&HnpjQY=A}z$9XtWTwt2=HraX%%wTo5O zmZt74)o8gEd}0Ekou^=7V@ovL=sJ%d!`8sC3GvilY&<2TIaQfv1#stWn%MrP0?`iHxVUxE z#WV#}iYl!LG*|8E%BuMNtc>Up+pt;*>By|5g~o}hMPcSk7BrXA1w1cH`_EAq|LEr5 zB}=ZSziH7CBW6u$jW#Wt1q(LS)=e#+HEZ7D)>*TcEgLa%R^5`>m&|HjvT(udE2>9U zSDX0dv!*rATGV(+)2x>Hjr7)8(MGNOW&eTybj6=dmqP-6vP?2iO^c2^H8Xv4bSYwq z2AbVed&cx>)2A+((=@HI_Oj}aD|iM@JqC`-JyRzI+{AMP#d9amk=OR8yrAdJAS@<~ za60155aghlV}PpvuH^G+vhU;%#xVe_$`*Jt1U)cUaJH4x?>$KgSQ^9gqm zwta^D(TQInTuV4}i02LDaDp9#;|YIz0_7kqBEORUsnjOwQ;fB*ih67#+(DQqN~Lb5 zK5GV~Qo5UL#u2I1PQnD?FzQu|*XDG>2w@rVXAmwU+(#H8-7QCfhj8cMRH}${JC9*K zf%t2VO{I1b&NwcWY8GACgR_@#K2y!HoZGk!_wzM`^Vzj_H}SR+4m*gj1pI{aOH-+b z2uGikN)7DidCP`U4#M>(r&4zimT(OL6^DwY|2Zx z57+7{+H-Uj--$P$a4_Lc!s&#|s#B?Tgb|i@8%V#VhIfUv;3Z5#HL&49E zq6)%|gbf3!CpW5WPfg}F6Aa1Juj7dO5X|l4;`>E#c_fDJNm^ z52?>lyc4b=Tu*qn!u8OHaK?|IFa4tA$Enn9glh=H^pB1InM&;=oUwuSCf>eZQ6Ijq z|1ISQe#=APqyKCqyp3=h;ReFd57R#Mr=8nVsh4<jWezxzAl$Y;`r&6iYfRBC#z672iEIyw6o`p_?>k025T=N{|C(QpFd``bC zevx)3T=Nh3gnl`HH~oV!|J77#;R$@_l$15#DaGK{S*=hXE$79jU81qU&>N3X50gRuzWZ^J)sqa_agOhARt;D+`Op7v@(Ln6f=Z)SUxUsc$LG zM5U=xno6a~S<$bsxZ1>y6r>Y+p6aS!;L7?sLy5k(wpMxGQ9eED`KG$>r7SwBEH5`~ zaNn3SzOeX)-0_9s&b;x3CD#Wl3(HpbsVp4b-gi>r-n`tBoPLF)fmIfk5Qn(bfs#%{ ze0gB-mhm_EmHnyP3G;Tt93*P*ySmTy!OpxJa&OFu0KbFwSWkVv#R^%)u z$EpKzoKWD6CV7Itx_*{6c{h?@Px?flkEQ0Mg3AkwCz#@T-dNHNp&Xki$2h{g3vAj> z)&F|Yc6DA=VM%*Xjq*sp!V(~m*VdMHsU!UyrKf%0QuH;xP~YT%9wau(&<9rZ7C!v`1xOKC?j2+d#bEeoQ=}P&xlX-1QC&tt?+s*6eLLwXh=h_&`?D*A@uZ8gSiA zzA2u2=kaQ_V-bKV&Y3ed#yJTho?9{t+# zd;>fWB+c^^3YK*T*giBLe1pTT5AB9Cy6}CXKD1ux(SuHeaq_m>^x6B6;d#-j*FGe= zd+1vqpif<%Zo_Q-$H=p)!iJnjE#2wqnbK^0fwvq~b>J!+l1j}JQ&X=Sa~K*9;D>a% zzL%99Y6^1R`ok}Jqh+RSYtC)R-XA8K{%{Mph7_k#)4JnAz8o;lR24So=4HoKT_7HQ z30$Mm!N1-eSJ#-;yr&QXbH;n~sK3=X8*X znL3)hm5<2&cC19|O`IYg1EHIDu{-koLgy_wrSx%Z} zVPT%(^h@fp$aeaw!hA8f@ZUz)v+8bCFlbPtj4*Yx9$my5ZzT}==9)5Ae^ zK~>f!tSnIbJxU(oY5%n`wVrezK$jV$JDm=ncN7M~F1g($^9*mgdGy*~?$5K^HEMm{ ztfwqhGtiYJM^6N2{m01e`rMbg>YO>bm}uJ_6gOk1{5|DW`LgRDId}I^KfDH_zeL)S zndmN(38ZzpMy>c7QJ&jL#$86FNI^^HYi+?fnXje=x*{|4q0i`#Jl?tpd$Z*9g;bvU zW|one#_C{1I+BspnX?YlpVbZ>;3%7wN*yGcO#nw%J7kj)M&|q@JJF2YLGo}HUF4NU z?1qv#+3-!xkP-E{bF(*VrI|+zL&>SY_Is@4jlmU3%bPCSm*bI5f!rVGW@T2iX)C{$ zgRf{&DplBBer2yK`0mV(&(u}&`XTDN0~@o^KhB1!v(-0K#(s?cF_7}@il$OikvVw< z-SGA37fwG~o09{xWKn3U3e>)Hz_*EmWGBhGF2!dxC|vY~`q7)_*|{ z))`-ra~~iYFsY&lawW*YD_sKid*6Rl8>~6ki#sV6S`SM`(3Y6dU2wx?} z>IRuqPzxk;z!38cA)mX+=kc95jj9e?`k#cdXh3ji%_azTUNWsJ^PL7G>7+>6dJCC%^Ene+I1^3uAV z^1nrGe=KFE?LT5}S5vq)C$}+s-#7DN(c>X-_JJPP@tpTBh(w}HSqRw7E8e2a>nZd1 z1YnNvacfGD*(<^1H{>U&)RRgBDcW;#9+OTe+E?){{}=cur**qt*EG;?xy3N+uvk@~ zHqiR!op*DJop|RI>VO{M))rs^^zfZ&nzEu}ZOU2;oln`czLNJDpgrZz@6u^%3b0c< zNn!L3^^XrofBv&h2EEPN_Jt@%Uu z`RqPm9l(%`=BIf5G4Ho!z|B*|Z*A^-I>-g_BD*Mn3n6@4DttOjmNY+g6~%A{dvXUup`L^ITwuXcC}95bHYpX%T_?^1Bc zw(1NWD(_o-Z@xd3T1?&ZKF{|q8mgbxfHt@w~}tnchQRPOkw)vYB7d#U6d^@jpZ$Va7^$?)dB^sWNkuO_c5Ct@LNfkO`E{ z(Ae1R4F4H>NEiQ2f?PTCd*MK;;1%(2#Z&lQ@tk+0>e`*YfW6eM<$0>Kx8-UET) zsy^PMfsy|XdJpDI*dFw@=LVk+2A<0c0{M?%@YP`8-e3^8`l?AgAaKwzFhnfCKMPEy z0^mF%FrfU|z}lR^9XY`t<#-!&y1w6fLSXRM6#xD}aAj`br9e$Q*SjY-n8@{B%uPoF z$AUn^qk-T*3cU{k!9Nvx*X4|QtkC;iZt%lGZ&zOM^+KBH9ZIo2zFwt)<4nDN8whU74SX1wxINcwM>TyIq#2yWLuhyPaS zb|kN72RG#ex?uT-1P}KqI`n#bf@z_0uy_oGi|jx z5bVeaY|aU8&GDY>(N;GEeo1z4!jr+kI@RH4dBLs0zy9~fsQ=yo}4x?|0_4hb1IkF0?|I|v*Fo`0@HsM2wr!P_e>xd>*u`? z7}?g(dn4x?fw%Kjn6LH={4;na&-e5R^5L02b+`8Ow)YM0&ksD)_jsOf%n$PQ&io+H z51HpT4?+W_Ao`_lJuYxKWcYKR!1r=C(vjcl6O8xuzS);TyC}pd4IDcjz@lJ#PGG;t z^~0RtojJMB=LBEM@!oVTaJ9jg3Y@M+Kb79+eV*><%?Uml^pY@H(A$s`{Atj8KPUKu zpm%R>@S8#J;oRU2K`)`kQCU8!Z5sm@+!#O%z83h*6GwY5)rw$9q2sKAiK5A!#lYcwzW1<$`TXKxclQPK&7=d4V91aq5OL%*L7ctOSib8nMIKm5qY>(z8|M1{Q?_@?io`bijDJ*cjH_ih4 zear9ee`KesclGov!Z8MHLmPG86kzI%|jBQLo7 zAn#XV1=aU>rq_hQ3xj{BmkGcJ%J~WSJQbKRlgQr-1ixJ1t;q@gXMwjWH+Xx2_fqbR zEd^dO?}YvRysg3Dy#?O7KEXHoc{}<9fgsYqUf^xWSE|3~>-naG6z4Yw>FeYDhLBbT zIoX!5NX-yeGk7=T1m81t&ijo0_L(WcmHFx|@AO3ijrdnzZ*6YyZ~X5Q{9|A5^*%u$ zsvHu~koD7lpHkpc3Vcd|Pbu)pu=uAp=E`0p3>c%Rqfz16+Dz#5)G z;oIAnpJ_2+vNpf`HTE4-rhRuIrdjhVa^Gdw(hqBn`MteAwL}l{3)jzA#kRSOaa%RN z8BC}2!#Zky(_BGhL)K3=Ed5w2?DlhLy-l6Ad@}3kmv9-e{AhkyNX!q7+x&K6kI~PE zhh4$_a&K~oaltb`KYvVC=I6(IKV|Dj?gq5qz3*^@Nx64dJ#VjjAMC#W+r9gCUWfjF zEm+rse|*GcGW7DRaACa*8(i4z!ZsJKb>TV}ZgAly7w&N3E*I`~p*O5ce>%w&|+~C4ZF5Kb5T`t_~LT{wY--TfpmbtLPh4n6MaAC6x+g!NT zh3j0n!G)V#xWk3JT)5YT-l;Bs7lvI}=E4dW*1NF5h0QK(bKzPSu5;lA7jAOl4j1ln z;a(S-MKFp`q(#;L!Ov{E%1B=`VZxYj$$1yEtF<*e;?&`%4lg_T^j7maa>dBghL@dI z>cAO^vOKES=6SE1Z55fH)$am)x!(1|u={u@VYc|k1DAK;-g9ll@45JE9XveR0&aKk zA3OMF2iJZY{T|{^c*c$~uW7lX<7_`F-wktYd_UhKi7z}Ai!A)}Ht>Gq;AQhHKzjl7 z+m7H;{OK;=p%!fR$Yjg+CFr8~Z7%*PF8-+qnr!iX`h<<;iFvz=e|LO2Ff5pO^ZQ$*7 z@Ldk>$M@;H?wdB^Yp(pW7+6%EwcoOE<0HxAKm@+vd)HaG@pa_!AqQXkRSP#hi#%S1 zR9F0>M=jj=0`YhX3@Z3GS6|0=UODiOs_%{$Egrx8)ecYFOBQbYS$I5zfzafeuyDVe z&pCM6I~H#IQh59k1Eu00Io85`e*1%iM;*Mye)hCKS@9DNeu9HnFfI#TIL-nh4&Den zTfG*#_~*O$*SYvl_7XqMhw4!Ld^-Hq;rW}xMXF4^Nu-gFIg^^x?ggU;D}f?B?BgiJzmNB71!Y5#RF;^>#Xa*N_>pNn(2pMhemr#c=ckAf^ZO46Z_BaeF}^i?nK^*I=i+1rQ3FTb9&O{B z^=Km83taejI00#VcYz-al5BV`>;--e@Z%V5>YW}PcA5XIm-u^nfgjBPsq)lsvIy28 zul2hZc#(IMSFFv`8NUaBgX)0a2L@i`H4L@!wKl9@D+;ynH{597<;$qwK`7>e`}2KY zpS{?@8?LhPj&^W=GF@8{N~k z50!K8Ll$6sMR`2pbk7SzAFl^}u4lrK4gXJo3(tm-B|wwIpUXsHfKpUgxFf%J2=Hup z&M@#IuUXgs@C%#&_+kP-juiep&{yAX>jlpi;405rM>l^SRd9rbd(Qsiw~MxN9YXxJ z*KCG&xqPp3@Ct3{;3pq3{dO9-ea`&Gcq;C*k>z`=-}icne~*C|dEpf{o*PcQKlc)UC`~RpY^bpD<@>5%nS*aS-@bp# z2Hq70?p`v2Z}kG->f^b>M%Lau{RS}K%vRsI1`dCg*ocdrK67U;@$UydAm=Err+)q@ zaKry@{s()QU*6HSzU!vhcbyfW-x0vYKbxdb@$<#*4JN(;b^G^y7k|h1E%-k7^;ZtQ z;ma2AH3#2yj4jV5*B{#){D@<1d7775K*Z5!j)U)5W8sb+Sp>B4*S=-pK7Vfa<2$|L zNrzwOSsVv_id?@&oio3@aCZ6+?FC-l3;bH(j%B>e-_L<(Yu`Wj0zc`v?C~c7SG!a= zdiwq7784)6eWWFr{7Urur{FmQJl}p}q4+?W`2Jg0cn}JZ@Rv1M*tguLfuFJMRS~oJ z!wy~tT>WL!Dhtp)H2v-bE<8Qu{KF=`jg$F*UoY^!LoA*RKeDm42S>l*4&HF5ecxaM zuLXEEI~;6+Xl`gG9YBC1#Yr8b`Swd;3EiG_z7 z%xl_?Gzqxq6F$^tDEA2cF7e|##`MR{4^4a|E zZ`mvx(bvO|W?U28JJ-Ugj`@u~$>M2qc>M9P8F)5&-rWm)i-9wKU2gI2clZYkwfU}f z{;hAc(SeUh5@$0SZjckXZt z@7W(OIwgDgml-(aX|o6r`{wtM;5q%%c3lVd9s#cLqNg7COfUFHmSxZPV&H~uKd_iT za2Y(?1$sA?9}XdrUM_qe5%5YFRqy0Wxd2t zxcF@@evwPCAGqpUR&D{tKaqSdLh&15i_-1?SAb`$*FS-aZ~gTIn$`S{7?nN##Rkqe z;uur@tom)~CH~>a6U`%f>d8ZZs~!FIK)=5<16RFz&cE(Acm{hr-8|IhiXFzq?>XKb za)!!}o~HY^_{kSrzXiZmUw>UBV!_@ofgAqp(XXE{cwD56;H6&RfzcMvxzsV{`{P{>-m_oa2VC^*IX*r%R{YS#|9%#K0&e0rTZmt;L(j5& zvcru#Z7#ti;G$1M*b>0_X!GqqT>SbkTX?;T{|6J_y<`Ljot>R-qk4gN05^Pcl|{13 z(f@A_-gAC;dWDU@Zn2I3HJA5_N(=Ybz3+2)o&|2|wZcZ6?c(nKcL3NpIL43?CpX72L|pUWdyJF0uRy= zlyA@Z<8iT~8=1eIb?{M&nFIl)b4~NGOfh*q~#g-A0 zjvwYy!LW_m?f**P+4B8HFYs4@3x7}juo3}i`0WCVUT2T#cRp~%4_|NJ{r-4qt%dg- z@3sNgxVG*qw&1QB-d}-dE9ZY#paNn^SRTMVB@%h_=+uuI6ys+11q? zr8`B3S=&>cYwH1BHhtE#GiGtVZ5d~2U*5QM&a4HT?%PN{%60gHmZgou%amLBL<%rX z`JdL(cv(~RWy5DLSvaT1mxY}Eo%PFvk=5r;{%@4H+U8=;J?^Ua=vn7pOx>EAYX3VZ zr$tX|Zd|amcJj1QvldiCtFl@4kmM09(b{RFX8}5GAqO4T@?C@zsCqP%gDx#i)%Bz} z)i1!T#hmt|rEDqzXq`ffn(%C$tg=2Jv%QZ4`IXe-el3A5Ty3boWM` z%U4F_Xl>c6z!&NPFah#0?}kfP}Fd>& z2Phtd?+$wC5>=n^fEQA6#z*i9${Tnizdf5L6~}{!UEUtALCcq3rmPVhm|n3FUE5?3 zOwEvkW8h%@aT(`zPl;b>{v2Z6`Gd(}U-esHEgSi3=WZ3!EE!a6Y!ny*7xR`_G z<3RK=j@yU4(3v6*?bFxMt7#Zb2IFj%cdK#TbXp*9FfGJyT=%5cQs_xIi=B>of>wz0 za#JjuFisi$VIVh@=_7I=s5p$0kEyTg>JVbG(AnMtn%7)^+YsQxAI;-LjgXh&qwMS$ z18fa$X@}9<-ht{ns=t=+HV<78<3Fufl-Eo38^4OscY%7A88q^8xW|3$xpA*<)T1aykx zd#t!BUdT&~F(Eez?RhUktL4#+)pD|V984+ciqrD1pl^E#zVEJ6;tI!7h2^OYNS)_D zpn0%6yoP4YP(O~-2k3?bEIOVU7L$^=;7#U$=68^BbV~KugOw z8F){nL8ncbRVZspk8XD;Yf7Pqc!lCql#^%aQ%-9(k4J}`^2iPDGKfi>NPpYN@!_=e z%sftlFJw&&@XFNChM|DF^xahDtied5ltJ%MdZmTEt}?w)Yf=UW zjRTWSW>TtW@rXGfcF>+~+$vC|Jt3!j3u`+6O^>rN-EH(?amUFVd5OKo(2x9!ASMZ) zOq4f9MxPj__%Ku#mTVf0{(sjdP?V z^3`xYnOviY^$n^`fK*J@qe?wE-8puZd$O+-9zHmEtlWp@=EMEdhT8xB$v@6=R$Jq>>jx&K`22jscZJZ%ut=EU@PecFNS}w#=Nx@g3iEW60(Ki-9I=w z+}(TkUDa-O=svGLo!P4*E$Iu9n6q?c@Kqa_FdAW@k-qU0881)+(VLz&*r=I5oQ*0GuZqFfeBL)ZYFqD~`U8C3wh zYBPvo82HnhPg}glfH_rI%8=0=vO|D%6w~D$zNIac%Vow89%J2(agT=bDZ`y1gN_-& zb7S|F4I?eA;$SfI{HR$s(-|39U~_3c<5V`lF@R}DDC`JTW0O1n2uHkX`VGBgh3kbO7joAUE0$9kBiID=ZKYf1Y zFWowFx-s$7YdKqX#yg$x&gnp4TA2VVGNC{Z+p2iNHU>!N0d%{MyopVe%{2#g_Mh0R zOxOcP6bTU*Q#i&Jz(kH+=<0}JD7K50&TF`o)a>SO33=Ogm`!OnrAHok0P$%vQ;%gz z5c{PBA%t{CNoP5%wGf&|~~43Zp%TNaiNRV8T{zplqSm!U6VMdfkg< zRBEu%biXj&6&jp(HBe_zE~h{`6K`b6U1^zEjwZSyRaGJXOvVxAnhroEMLN-+_wY zTdZ9tgEMHcRr)3`Mh;57YPh#MFayc82rUNLh{tFqbz4HpZ6V((EYl>^Zp)-If`-qZ zPkMU_#=&t2gMkw&(=QO&sBKSykoQdvVE%E4X^ThlQ#T?OANh1o60mZ0o7pRhllkb( zagWYg_;(1{cZmAPw*__w*Rsz>i8~=b7SQA0u} zn7&eObtj&&7;K|P3MkgL2P-ck=nG7A|D7iC_coF1_UcN_{3s5IF(=pRl6~&IkOom3 ze1{VkuB5P^U&Y(JBEt3aF(~+ks)`}bjKY9Y9!~&4EU*;|;|ygF6h`p{h(Ne>NcZqy znZ}Be2cu8tp<85%m~x|^jKd3$V70PL5Z3f3L+jfR#%ai>@4CXJBxV< z|5VOPP~CD~Vhpo>A7f!`>hO6sb%B&mGOeV3&oVE-l)}W4)H)pW1h8vMWoKw_>OX_y zkhF%J_TF6EZeZQ$zLQSIYrE7;bigXWQzwRtfXQHBR#oI#&yJ8C9GH{Q=VsSw>yDwl zRNR0Q4Q6Z;-%+M**fMRGWSUwm%HTkNG}NLDpXu3hNw%2y=$CTZy9Md7Fbl50dbU_% zlugGrMLqR=9{_tb$X=5W2H_#Z?5A995H@QmIyF*WFKJKUhKFA&09olEFCsBEyvc(B z6bP|T`1;@_BTVR>>mG?_fGt}<@SX)j0HLp_YJl;h4OQM&&K2{7YlRV%9LYh9yfrdnT zq^vtFa+1vx|ENnLW%j7u(vWqjDsfV;!P-26i=-bu1%+3xZ#eE==G-1yl?El{kgX!* zKs_OH%N!Mp>=r^v3WLn%Hlrt~1uHg%L2fw?8}a-M#*zzvjpeyY(bP=WANnil`lVpB zC|v{+B7$WG-SnxijME#j!88&jxT3?R)bPT8#}6(>RU_<-fmX1c@^J#xflRZ5V+nQ@ z6d651p9xd2)(+X<&|S2(i+QYbR9;F$LSvvDi=w>IQ*{m?MXx1j+^q6u6t&@BAqJqj zQb#T{Sa<#7J?Ikbzc->b)PRQ=_GMnd61JNLjdmaP+RF4=Ls3oUUA77Ud3daK01hh1 zbE2k0-kj1!?`#Y_f;=-PRCNvuddoOchCUENmfffLc^1hwN2A^eO2194mo#8p z(m>qhPHA{33BpVP%re8p5j&ECv4nH3DwDud;8zvTrag-WVwQ=7R%0BKwc@wNU;t6U zb)A{o9yEl4_%%2Skk7GCPx=EyKBtSny@t8#B~fXx1C&+xFs(%i#$ZQsW2?kswFama zW(}by($LVryT-Mv!PgwNN6w5mSOV|a@0a1W7|aFwj~+5wBk}dr zbGu%d(!w6d6<0I(M+!=moA!t#KUPy1%1&)P-3)iSeW*Zy4 zPte3tO;+eiM7hnKZfQ)pmTO!GH(J(&vpxwg{YCEUPrV*ZZYk{*gh%fYL<)OhBA?}N z-YsO~8cua((wZ9>&_u|8x?Z7{k`yEi-a-Y|Y zC8k~Gw*a2PR{d5U0q9}Q!w+j=!BRH%Qz$*_at?3j;XdCUhwuBc>cyHfZb z0}rWTRHM&K<9yh?_!2p4Ssj59QWj*%_g!o^Wc^cjhKOyz7A}l2_Ohf=OS}lvvrO7>Cf#KcmhO@12Y$jL#HxR&u^&Jm7d_eOMMiFap{kiPN2?4T%n08zg#ygwBOH8t>R#RzS& zO<}zZ)t)ufVV|~y$X-7H^|aHkPjQf){Bw>;%)bw}(w)Iw)^tw;iny_~X#B zds;xEM9-+xJuSv;O5`1VERPluwWA$=WKsfJ+_F=Z4HQ5bu(q=26P$ou4uQ#^D;M>FLFjo|35J8%k_Oz{`2Nq?Ee7wzleV+FL^iRIx_`m zjA-nnyqq%{;2t$8@`2QGpDJQ0smpqtq{j(`2{g>zDO2;Tuj!pS4 zc{b(RH4Re#Y3!u`rrO3Y%zY_;&k&4UCGV%SFXiR^e`U(=nhGV4s9YuQD3wRbnY4W= z|9jk{E=v6kAvkj-`nLay^Z#4?XqUfd%E^^q+N$6+^I5KcESAT4@$`4kT;(}^m(KRq ze{%f*U+wl=rkq?qH1xQrJRQewmzTVZa{b{e^lSDf?aH0M;)7jY@|?)^%krSP7RT@J zro7C*GzfE_r95LQ0PzY{<~2A zFHd!OxqgWV-})=I|3Ccp75vLIN&dE1O@f7Dd-7ebG(BIn%1geu*KS#!(q&PPrF}Vn z`*l^3MlSU5u_oo6p&V3p!+@d$K>R7 zrj+_8+|TFDyYG9?IrrRi&pr3Yd&yTKv2!Xs9z!RO@i}AiNu!3*v~n`vBC;*UJR>A% zXW*H5X5yNq^2g%-5tTm<_m8Ul$8bMh<72na(fG;a6(9 z&3xs&I#8KTd#E}*W;(}(%;CQVHY_vqXCvdug#$mGc3qX3pA$0kSAy)4>W3>&Hq1Q8 zyUkBa=G-!K_@SDME@{2^!2rreciT@-d}6EV{4uNQaK|IBM%X{s;`rt?Us4nTM;R=6`% z3p>RM-JxL2IS_LiLsEXhN5XmnuZ@NGo6d-!3Xk<5_h-q-@pRI;y!E_I49&`RzNZKKwd=^T+ChKu_Dgsq+{sc(Q-J^AUGjJ6-o?#Zq z&x{^3FtEEP(Dztiek=qXpwQa{2htbgQCgeKpiB^$e{m=%>&aiC8lk96nC&uZTAeBv zU18>BZTZi_RYVW8petgPLCwW&Yv!c`6df@znkQASd5HXk{IT_t)=OJ0cqQ2d#?5aC z4nI*TDjfgLy9W;jPHsWVM9t6|ZIw!>N>mB8c@NtBP+&eZlFX+cB<8D88|*Fg9NG)l z;PUrEz91$?Hk}8@iCE@$viyy!h7-vFXy(@o%6qC(ft`XZ zyxVl1Go1&_1KDcRc`D{SFJO3qU2W!T$#3qyC_F}SU~A9R@hf7^HLsYJu$Oa1s3}&s zH`L(8L*eF713C-VpE9nSKuF;T?h^yODJzma72Z$dnOsarkYl*VxieHl(xn51_XlQU z6at`oov0S{VsOKwFrce}Q8Jy)l@gbpha&PGQIv1pYkHo+z~R+XuxTMdq<~QUfFAXv zPt37HErLGg?AN2n%;%c!sfNtSSny4$jrT(M_j6((t$_2f(Z5~PAx3|vkVm6`DQL{X zNa$+FdRX3|NPFl4`Wd7FA=0odxsLnz)F zxNl9HnYR(kFjV!RMI>3ZcYk|L&=(l}vFI;Y69I+#?+&U!g(vEyT5hHAZrM#e&NoBV z)Dqb*I>gdFsEkPR%zT^Z6$-;rubY+p&6T1abj#0V5oo`Rv8F<(8oY(G1Q)0t(NyRj z!HI|*E6fwch1B;pk@Eyb zpG2;eCSWYcyRaI0Conkt~Q|QG6AXS6+ZY9M5 z))Mor^Z>3KaHk}^_BKHS2fLLZ!ALz_utUA_AwTIDxf2iodr4jscwvJ^L6VP!8Xbg% zdxfZ2^K15Oa!(Ry76v_1jO;xkB8zBaQUBE5jpNThMJadX)v1~ z35@&%ME42AdF|k?z*4W`u-Ss7}J zg^u$wY%LTfH-q&h-T3d`Ve`@zDiDe2au$h!B@iSiTr}^L{c&~4{s1RcC1QzM(a30x z@Il&)hzO_*c11|WCp|@@2}3ZJi%N1r0n^N@(8Db4+*~Oto9rD?A9_az<6`g7)WBx^ zoutq;57EprWyUx1*~z*7w!gyM+S%Sm>wva80n}L{;{*8PTce7Vcc~znfYlbsv&4+M-ap4Y}4}}rt>hs20@3xbm^NkAf6K@ z5bF@CF6ul~)KurU>h%c`tZ{xV^ca4nT5v*wrw*Hu>WeNJzZVkS`-u|tj;7xXdeTNG zlJD$$P(K#eTW@2%l}}@p^{Ty8tgoC2Gv80MQnguVtEG`O3)5L`F-YCl1R1(*V9Wg? ziXkZ0R^k28;fET`!f`vO8qtI(hRCicCXi>Mn8hW8%pM|$HNRxnTx34*M=#b`!ZKI~ z3Tp)o#2UTgCr6}>QE`;yj@Q)-dE!T~i`?WQMU7Fp5Q5hR#ri=kziG)hIXEc>3EuZv zm8*J+M=eUu)VlRh!}3L~&%%!)C!zsynM@gq6h&pG48XuB^{8(9A=AuzPbo3yRV5j- zN^v?-;p=8Gq0lOIf?^#_BcvLT*9{fn~;6V@Yk9%e}KkeCC z;rT&@??)BJ&nhO%Z<^v_S`k@p%u_4@XDjX!vcWRQ{aT=uxf_oCl; z+vEF<-?+A7@h|+weO})?eq&Fi?{&X1Qsw(z!1zX$@A`o8Sk+=DVCI{W9F-3`Ovo+?@Z?r^FXdT+WhO>nWpn*toilav(fzd)#jO9HMuA0_ymh9+NGT>IuV<*dnu&F zoIPxU>)9F!zcBHV>;~~G^rN#9dA{=|&UdQK;decOk;hPOI{Tu|ugnMbel{?=8_%)A zg13lGFA`(U%XC7r6Jb`=8Y`@6z^)0XYmzeq12J^t1(L&{~%zTqMdN7Ckl{ofkHl3C5S7_C2*p(}snGZ#sU0}`a5NAvI zTy?DZX?r@wH=zTaHpQHzAp<(?=IMMXRye;w&m1eAUyYw9rsx*Kd|=`%+b0;s57`3^ z68UIe96iYqC<`7`RmkB0OUV8eyIpzcB)8T$cN%`BR&R#cCKVw(JSK#QeKBTL+84*1 z@u=7u>-8D!jvLK<9nBXD%tEBj%&!(_XUBSE@rX=c$pg9C~+A z%;|4fUYNPx%zH@9vqWcNL5oM47Tan)dd#s~(#8q=41@sTbUwF(+@NpY0BV(&^%!(gVom5_T#*5bVjM`-20yzP?~88yra6!S(UJ zR5vk|N*!%&X9Vlktj!JBxnOuv{i6DY)0gDLtt=nN`(W(V@hn&vvT>g<;S#iY`jur=Mm1n#~m*{@P96 zc7JfVvcum{5j(~oZ1vZ+`fHZ?tJ`N7jUdx)xrKPnA)a>PX(gVDtBMg+AvqsTZ} zx93ZpF`-%2O~ieI)~^!}AwrO5qcPMblD(y3nZNey-evw^p>mnOZnLk|->_*~tG{Wu zYPo-3rMIr)7=IJ6R(~C6K#Mj&({tzyJcw%u7o}~ugiJ6ES8bZM*;lCix_3*33A~XU z9_f1eIeeY%{+5aX)YyJVjcqfG;?RQ_vW;%T6#JO4kF@6U85{hyZ9-kc_$=r{N)Os} zY2E_0e>2&3Q)RoqZrDei^4Kx{Iv_BwY%TgF2L5iv|0l-3h5D1*51K3cb@)3g66LH% z{c)#~w*wBN^(oyS?bII~{;Q{ZFPv6VA~cl!L8m&DHfkNg#QTH%ae<<_7I{(ca`G{> zc9SYr`SoRrr&jY2;U@29f_hOYfK)L0ZH&Te(A%Ozlh@GEWont%ptnd<(+zke`C2aZH>IE8B76?(FHwLWukmr6 zE#BW1Ie+n4XS_n5AF`$i#0|QuY41 z3{K1RQuNEq;9JVz|6T?kFN2>xt#rMqGI+iW{+lxRAIjh#g#(moZ%Y~cqB8h(W$+uz z;JeD$|F$yp&z8YoE`z^a2A>JXDAnFGfX`)dK+KKsp-ZQircVMVKisAKPy6S;l%d}N zd@hS8H0M!z7AF#=^!a@m+=tLvivFZB_yXW_S-hgTl2Q|fXel|FGWbt{Q+o%|Zdd72lU6249M)jEFO}FRio#1LTc^7* zwl*Azt!=;+jv%!!j;tqBtmv{AC+v-bNpx{jciP&J>P`+s64FZV*F~DiLo&&@os6vN z?>G9B{fWVih6T@yCoZ=Vy_Z`(u*`=&AbVh;=z;FO&h^4n*`)oUWu#@o(l-x@8bB4&_(uRgEKZkF*4C8dH}gs4^{ z=ru~RbPov>4;>A+Rwukg_A45V^P*Ss`$3t_L#1mZ%VFy^jjRi=?2QR9{kx zIV46$+LX~C_z0*Q(}Ni1ohvBXFS4RA+UEiEr@NEV2j8QKixYjxcm`n%lL9g0vN7t3 z7Xbwz^#P8QNMQt)rKzkXDx@w!`4YUgu7eSE-fykl<4V0yGY7e(w9!e`;v;A zrVMzd@Y#0hvw)7sH>89$0~=BU-PWpPHrJ01z?>ep)+X1b2CPKfPV_1y2@>^8bN`XF zS}RB$`az#9!!)z?ke$~ivD8Ug0~jfh{#980$Z4)$EUG30)}nPu`zRMJ@Df-&EM{

p*C4WsG9P(*|Luk&XYNX6vXNC{vB38|SOKk+ z8y_r3uymVTrA)?(L_BLNyjjPPzVte*agv!#I)jyzsGvA=AJ*IS)OytZrUgt+I7hul zCbgNE@X^m&Oibh2T>s!vN)p{OsnH_ri;h~7Iu}{5?sU9Gr~dd1QKYR5r*Hc;{tpbN zw*ea8$M6#wen8oA2v`Tx*#rH?`lSW3UK}A zBE#tCGWshS&gFca;ioeCe`YwH8R>fOXZSpZKdo?T7mluq^#8+f97PpzeJ)AuI*s8~ zBml{cAItDhqFn1Um*HH_LWa|OFHL`j!s&*iz#`tt@cF>C{gVto1vtIOr1T|)lb&4u z2*W>xGF@+;$@w&JE&n@=egUKZ9;4@eLf^krq8s5_&I1hR{`Q2zNzc=9X?

K_K~&v{<|gKJ_k*+J9r=Ph{Rp9TTvxuP%4?t z4(ENTTsoOg`$qG$ zXk(ehY=(oIT#tOz8WcAt+@Z>EPc%=QRfygQTz$lCXDZ5B_9`N2%^+z7?G>{#Sc`qf znilznyWOx-?A*iZF0wb!aj|TzjGyw%8h3Mq|A;+ivxuw(d*+|G#_WSa~zCyNlSZ(LhXus$MldZgTJqgey+&pR{ z)@L{(JM4XC8}yQlcV@oHnQ_K1v2ps7)4VVgw%X!RiJPu)54U4}-mz*M9Pv+%8&5km zwA`21Hfo!$gX_@Kg`UHXt?w@DS>1}B^R7}&$xVzk>(N|7?X9g_eg2-^g>1gy3vCW; z4g@#dP~gqRuQYB61h+H@n2Ximmt0J0+IRG5IA>=FbKxOcYZsd1ft{LT-0N7sW~F-? zix&ibh3NYmDkC26L1(+CZpsz)_=+{{o}klMrw%6YfuvoI2RaRI^-9`u+IrRYdNEcEW6^xIPO=}?PPxKlzw`7eX?ZKX1K*72 zi^K=&l`^n#iOdTNGVQB(E!1NqPd3r}0MT7|_?R@%lX0G*b0iF^roWE-3R;K3`S`HEl6(wwJi;K*WayJwec0G{;&f;()VhF6pRFADi< zP`B;hRji$=Ip`|U3@Q_e)M&q#>39i~%hs|4BVRccoX3{naA^pX3gqHnDVBG*_*aWc zxV{_&;?gczhED)-YK#2jTcYpaA^dLMvVBg~mjwQg0w-S)UB!L3%5EsXU*Nb$LG0>A zfz#epDG0nAqyBsq{J|>tLExW;pAQM;d_SW8{VM!F1b(&Rf4)b-e+8Dll0EfR@N28! zJF4LQz^_);m-Z{suYh0Wq_0sn$;gq_D$ z7HUjvPo##k;47r^@lHTv-HEOn6J7bnVBc_VPcqk=7|f@0$^0;cll_6g(OfbRq|ri~ zdvLYbiR(lc8L@>f8jw>D|>sgdj`?knI0_+k;6VX zwuStHztiKX^hkbiIBWYUv^j@c;^0u)HmEfe<2JP$w?)E6;I54~*qOEzr<|9l+#m8Y{Yk=7`^ z(d_`=C^$_kIOR==(|v)6`017*@jns>BAotLk@#AXPs{OFWb4mPb0w;6VEBLn*TwTY%7VAQKXeg=YE#Xgz$IwUg8R0jH-(kbrL&852 zmvQr?VkhZ8B>2@hq_<%?u6&mub*dlU7jlHF{FhdVtA`X^<^QIFVyA0W>t`~j4B_dvRy;dpXs_S)`g3~*U)bCetHU2j#_~#V;BAV~#@kpF>5?zbu8axvJ0)ZgXLv@J<2n3Oy zKgT0+{$*6)eg&8DNc^h(+tDT>yaA8Y(?cMroPQTbZCssizre{(ddrb|atgmXUwYpn zDxdE@jxL|?0fCp#_nQi?&R6cIa{K>Q;aBHNpH7L&`PKcU@}IETm+`-<;A-9wF#jIr zlMR%zPJW|DQn#o`T;_oh1t(i29Tyei|EvU2{z}0`D&@$3D7cJag1jQm<+$>FW}SkI z6vZ`kD)>sFlZv|(ocQINuRPbJe)(Q8QN}Ola7e*PzkCn>k%E(cT6>}s3Ql9l_mkHY zocOm8GssI!ASy_|%v0+WocLSua0-l04CRx%wE*5w>~cWXa_LMmkWY{2wLot&pVR`o zM@KbW83h{n1TL+WFWQ0JFd6Vk4EUk9Wb#WW(DVt<`$Nsp0{y9!xQF63ad#&Df8q_e z!CngP6}!jk$mASDV(yCw8jLf%!TU{1)(@g#qFI}N!?>vu?8tmQh9{q!|i%1itkV*K(rlNT4- zUn)uaW%(T;ukuj+I(hLa>yUC1eg^V%|3I;Xfi+VFCJ?khfcl XaWC6+_EeG|zslyof3HiZ-2eXrkl{Lj literal 0 HcmV?d00001 diff --git a/smart_autocomplete/src/tst.o b/smart_autocomplete/src/tst.o new file mode 100644 index 0000000000000000000000000000000000000000..704ca0f6ec1db0ee7fddc4c1d61f194ed49d9406 GIT binary patch literal 29512 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 literal 0 HcmV?d00001 From a6e4460d816abcb0f4c1b71db8d19f1acb536d64 Mon Sep 17 00:00:00 2001 From: Tanisha Ray Date: Thu, 13 Nov 2025 00:58:46 +0530 Subject: [PATCH 28/33] Readme.md written --- smart_autocomplete/README.md | 169 ++++++++++++++++++++++++-- smart_autocomplete/data/frequency.txt | 4 + smart_autocomplete/smart_autocomplete | Bin 128656 -> 119472 bytes smart_autocomplete/src/freq_store.o | Bin 22136 -> 20120 bytes smart_autocomplete/src/graph.o | Bin 21120 -> 23600 bytes smart_autocomplete/src/kmp.o | Bin 6520 -> 6456 bytes smart_autocomplete/src/lru.o | Bin 19840 -> 19568 bytes smart_autocomplete/src/main.o | Bin 69840 -> 63056 bytes smart_autocomplete/src/minheap.o | Bin 20480 -> 18592 bytes smart_autocomplete/src/ranker.o | Bin 9104 -> 8616 bytes smart_autocomplete/src/stack.o | Bin 11088 -> 11296 bytes smart_autocomplete/src/tst.o | Bin 29512 -> 27032 bytes 12 files changed, 162 insertions(+), 11 deletions(-) diff --git a/smart_autocomplete/README.md b/smart_autocomplete/README.md index 09e99bc..a63d50d 100644 --- a/smart_autocomplete/README.md +++ b/smart_autocomplete/README.md @@ -1,11 +1,83 @@ # Smart Code Autocomplete Engine (C++) -A simple data-structures-based project demonstrating how modern IDE autocomplete systems work using: +The Smart Code Autocomplete Engine is a C++ project designed to suggest intelligent code completions in real time โ€” similar to how modern IDEs like VS Code or IntelliJ offer autocomplete suggestions. +It applies core Data Structures and Algorithms (DSA) concepts such as Tries, Heaps, and LRU (Least Recently Used) caching to efficiently predict the next most probable code tokens based on user input frequency and context. -- **Trie** โ†’ Prefix-based search -- **Hashing** โ†’ Frequency tracking of code suggestions -- **Heap (Priority Queue)** โ†’ Top-K ranked autocomplete results -- **Snippet Expansion** โ†’ Replace short keywords with full code templates +## Idea +When a programmer starts typing part of a keyword or function name, the engine quickly: +Searches through a Trie (prefix tree) for all words starting with that prefix. +Uses a Heap to rank suggestions by frequency or relevance. +Employs an LRU Cache to prioritize recently used or selected completions, making the system adaptive over time. + +This results in fast, memory-efficient, and intelligent autocomplete suggestions that simulate the logic behind real-world code editors โ€” but built purely from scratch using fundamental DSA concepts. + + +## DSA Concepts used + +### 1. Trie (Prefix Tree) + +- Files: tst.h, tst.cpp, tst_test.cpp +- Used for storing and retrieving words efficiently based on their prefixes. +- Enables O(L) time complexity lookups (where L = length of prefix). +- Supports real-time suggestions as the user types each character. + +๐Ÿ”น Concepts used: String manipulation, recursion, tree traversal, prefix-based searching. + +### 2. Min-Heap / Max-Heap + +- Files: minheap.h, minheap.cpp, heap_test.cpp +- Maintains the top N most frequent or relevant words efficiently. +- Provides constant-time access to the best-ranked suggestion. +- Used during ranking and sorting of autocomplete results. + +๐Ÿ”น Concepts used: Binary heap operations, priority queue logic, partial sorting. + +### 3. LRU (Least Recently Used) Cache +- Files: lru.h, lru.cpp, lru_test.cpp +- Stores recently used suggestions for quick access. +- Improves responsiveness by avoiding repetitive Trie lookups. +- Implemented using a combination of doubly linked list + hash map. + +๐Ÿ”น Concepts used: Linked lists, hashing, cache eviction policy. + +### 4. KMP (Knuthโ€“Morrisโ€“Pratt) Algorithm +- Files: kmp.h, kmp.cpp +- Used for efficient substring pattern matching between typed input and stored code tokens. +- Ensures fast lookup of partial matches even in large word lists. + +๐Ÿ”น Concepts used: Prefix table computation, linear-time pattern searching. + +### 5. Graph Data Structure + +- Files: graph.h, graph.cpp +- Represents relationships between tokens or code components. +- Can model transitions between function calls or variable dependencies for context-aware suggestions. + +๐Ÿ”น Concepts used: Adjacency list representation, graph traversal (BFS/DFS). + +### 6. Stack + +- Files: stack.h, stack.cpp +- Used internally for recursive operations, backtracking, or maintaining function call hierarchies. +- Simplifies control flow during traversal or undo operations in text editing logic. + +๐Ÿ”น Concepts used: LIFO operations, template-based generic stack implementation. + +### 7. Ranking System +- Files: ranker.h, ranker.cpp +- Combines frequency and recency scores from Trie, Heap, and LRU cache to rank autocomplete suggestions. +- Implements a weighted scoring system for realistic, adaptive predictions. + +๐Ÿ”น Concepts used: Comparator functions, dynamic sorting, frequency-based ranking. + +### 8. Frequency Storage +- Files: freq_store.h, freq_store.cpp, frequency.txt +- Keeps track of how often each word is used. +- Updates dynamically after every suggestion selection, making the model โ€œlearnโ€ over time. + +๐Ÿ”น Concepts used: File handling, hash mapping, frequency analysis. + +--- ## Features Insert code keywords or phrases @@ -14,9 +86,20 @@ Suggestions ranked by frequency Snippet support (e.g., `fori` โ†’ `for (int i = 0; i < n; i++)`) Practical demonstration of Trie + Hash Map + Heap working together -## Tech Used -- C++ -- STL (unordered_map, priority_queue, vector) +## Tech Stack Used + +| Category | Technologies / Tools | Description | +|-----------|----------------------|--------------| +| **Language** | C++ (C++17 Standard) | Core implementation of all modules, data structures, and algorithms. | +| **Build System** | GNU Make (Makefile) | Used for compiling multiple source files and linking into a single executable. | +| **Compiler** | GCC / G++ | To compile and build the C++ source files efficiently. | +| **Version Control** | Git + GitHub | For code management, versioning, and collaboration among team members. | +| **Testing Framework** | Custom test files (`tests/`) | Unit testing for core modules like Trie, LRU, and Heap. | +| **Data Storage** | Text files (`data/words.txt`, `data/frequency.txt`) | Stores training words and their frequency for suggestion ranking. | +| **Editor / IDE** | VS Code | Primary development environment for coding, debugging, and project organization. | + +--- + ## How It Works 1. User enters keywords (e.g., `print`, `printf`, `private`, etc.) @@ -31,6 +114,58 @@ Practical demonstration of Trie + Hash Map + Heap working together - Type: `fori` - Expanded snippet: `for (int i = 0; i < n; i++)` +## Setup Instructions +--- +### 1. Clone the repository +git clone https://github.com/maahi271005/Smart-Code-Autocomplete-Engine-DSA-Project +cd smart_autocomplete + +--- + + +### 2. (Optional) Create and activate virtual environment + +If your project uses Python utilities or scripts (e.g., preprocessing): + +python3 -m venv dsavenv +source dsavenv/bin/activate + +--- + +### 3. Install build tools (for Linux/Ubuntu) +sudo apt update +sudo apt install build-essential + +--- +### 4. Build the project + +Use the provided Makefile: + +make clean +make + + +This will generate the executable: + +./smart_autocomplete + +--- +### 5. Run the program +./smart_autocomplete + + +If you encounter GLIBCXX_3.4.32 not found, simply rebuild the project on your machine (make clean && make) to link against your local C++ standard library. + +--- +## Running Tests + +To verify components: + +- g++ tests/heap_test.cpp -o heap_test && ./heap_test +- g++ tests/lru_test.cpp -o lru_test && ./lru_test +- g++ tests/tst_test.cpp -o tst_test && ./tst_test + +--- ## Applications - Code Editors (VS Code, JetBrains) - Search Engines @@ -39,7 +174,19 @@ Practical demonstration of Trie + Hash Map + Heap working together --- -This project demonstrates a **real-world data structure application** integrating **string algorithms, hashing, and priority queues** into a single practical system. -```md -Run the program โ†’ Start typing prefixes โ†’ View ranked predictions +## Contributors +| Name | GitHub | +|------|---------| +| Tanisha Ray | [![GitHub](https://img.shields.io/badge/-@tanisharay-181717?logo=github&style=flat)](https://github.com/coderTanisha22) | +| Maahi Ratanpara | [![GitHub](https://img.shields.io/badge/-@maahiratanpara-181717?logo=github&style=flat)](https://github.com/maahi271005) | +| Anika Sharma | [![GitHub](https://img.shields.io/badge/-@anikasharma-181717?logo=github&style=flat)](https://github.com/Anika438) | +| Akshita Maheshwari | [![GitHub](https://img.shields.io/badge/-@akshitamaheshwari-181717?logo=github&style=flat)](https://github.com/AkshitaM1234) | + + +--- +## Educational Purpose +This project demonstrates the application of DSA in a real-world scenario โ€” showing how core structures like tries, heaps, and caches can combine to form an intelligent system used in everyday developer tools. + + + diff --git a/smart_autocomplete/data/frequency.txt b/smart_autocomplete/data/frequency.txt index e69de29..decef56 100644 --- a/smart_autocomplete/data/frequency.txt +++ b/smart_autocomplete/data/frequency.txt @@ -0,0 +1,4 @@ +for 1 +const_cast 1 +continue 1 +delete 1 diff --git a/smart_autocomplete/smart_autocomplete b/smart_autocomplete/smart_autocomplete index a8921c1bf7c7efa04a35ce61fe75dbe56c2d118a..ec7b9f1eee540631db599118844c27f783bcf797 100755 GIT binary patch literal 119472 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 UHi?H!=?j0XW6n!UkoIc*Kg4E6>;M1& literal 128656 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%0Aawve%+Hi- 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 Hr~dyR-7)WZ literal 22136 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

p*C4WsG9P(*|Luk&XYNX6vXNC{vB38|SOKk+ z8y_r3uymVTrA)?(L_BLNyjjPPzVte*agv!#I)jyzsGvA=AJ*IS)OytZrUgt+I7hul zCbgNE@X^m&Oibh2T>s!vN)p{OsnH_ri;h~7Iu}{5?sU9Gr~dd1QKYR5r*Hc;{tpbN zw*ea8$M6#wen8oA2v`Tx*#rH?`lSW3UK}A zBE#tCGWshS&gFca;ioeCe`YwH8R>fOXZSpZKdo?T7mluq^#8+f97PpzeJ)AuI*s8~ zBml{cAItDhqFn1Um*HH_LWa|OFHL`j!s&*iz#`tt@cF>C{gVto1vtIOr1T|)lb&4u z2*W>xGF@+;$@w&JE&n@=egUKZ9;4@eLf^krq8s5_&I1hR{`Q2zNzc=9X?

b8Nyx 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 diff --git a/smart_autocomplete/src/graph.o b/smart_autocomplete/src/graph.o index 15bcb84b9c0f45d1d074cc424c78d8d5e2c5b547..965dc5f1bc268d52edb7e2195c564170d6f252cd 100644 GIT binary patch literal 23600 zcmeHPdvqJsnIBsTF>#O_9>w7mB?zz!ajiTpNWhM*cqSPIH%>@+goz?6v5IXOX%ss& z&tp4>=^)7NwtIToo-Mod?6!L-P|6kxlsZj9SlVsVl=3Wv?ed7%l!O4`jraH6xmUU# zOOU{x@=xwLqnY{5{T}!G?)~m}=Z?KKtS>4pDN#fzQ7%{VcLG(E!%Oqm_3W}&%$vwzdr}(b8(!<@2BGI=hxG4p3bi? z#`zK)qBJbmtS45e*4wSB^?};=T1A^`kGr4>k5#KFP!=3i2M(Ags{==U{o4R))vxJR zAfWYq=<8`x?aOdcl9}cESy;Jwf^G)_fOIQXw(!w$7b&U@25sua4!cZ?+PA0T+SLu$ z?eScX|%fmFZVjX?Bl4M-Ocj-FltuV(n$*4R%kx zY8`Uem$JvN2-dna!f*}MLok2lZq@dv?#6x-MATR_$Q#ON1doV4ml`$@92psb&nn4h z4XYcjZ!mVRgTEZXsvTAynaJ993Vz}2`dT&gn0YTMjO_P4a(MWM1*%fd=2iFm`oHrr z1n}xZS==x+*5!@io65YYS$}L;F8b&%RbqjT%G!z8K{k9I|BZQWd{7J-BPAo zhg7>(Eje;<%10w34f~n`^(0)k{uiA}SQjP*bL!&r)a;V7Uy`xafk88YYP$7`W0t`u=@<*+(Zk38Ytl9H15Kj+0 zI3eNNH!3bv1_zlo!2|H0YVA_r$)LwSi4p54IWXw!pAKWHeKevfaRqDU`@=Z_HQNq? zeVVmLwf?MH9inxiy}o|ZFanEIL}*}oh}fQ`+g~pmE?>7ZVs};oHMGrOU$Zy+ z_0R_}*&oP_lXUASQ(<5*GflOgd4TMpSHGu*c5OaGeSl1bV+6Nb{=<4~V6gXY-TEtd zlB~>~Y6yz>`o9Gt-R>mzDvTcqeWY=Zfc-my{n-)gy-4+tw*5Wgy0roqBy7_)O^k7? z9j;&JJ2cogSaQVoWyf4cd{?vRGki*}|4r`tw36KJN6?dR+uc>f+0anZp2+Y3z zSC|DZCZj(@jT$~x^w)^p7Jvg@GM7;xbUc7g8VP+28$HQg-~?^B;2hn0gIWI>xApI5 zM*4|vy-XZo{+BX$G4q=#)$uHueza$u$OE=ydae4IF{YpAn7+0zTwg*)t;!p90gPHV z%BW7f=5~bxR17wlfLRvZ+<1AHtbgp|qjEBcD9x)z> z<$cU=R6SS7f7apM%Gzi;5i`Xl(eYN42<~tH)A5EE?0qxu#$RD8RijRe}=uj??J!_3wf>aw-KoU;pduE`u8+99N^BW-kKKpm~i7zN$4Ya4<$; z4VjaMXl&Ob2ifS?vR}oV{FHe%=~JoM4f*Mbg&f_U6kwB-ZvBq&pe7OzaL)WIM1ac{ z3z?`Ix4Jzl&I}4LwFVh5dDiZLEc5g;?B(nVHe$ z5&+Ptsx>^cfr+h$+|96C7*aD1Ez%1YEiwx(6V6zUW=5>Hhpq>`W^V;;b1mE}Xq(5- zI!O+^ZNU9{$45Q8zKo5NO5NUy39Bto#)iOt)Yk199Vx~yaJg;xw0z1J zvA5DVF?ARbv&#`Z^ro2G(Hpn=kqWccqlZq>tKU>Z!=q=G-CKTPJ&k$&{)qJ-c&}NY2!uJ}6 zLuGCxROWj0wa5ilKe7gTHeAQjJB%Ni>UIN>{lR>Jjz%lB!=&8xntcue#&41IY1Z4C z^^|HaSv4G>c}}%wVbN!{sP@uT!2_E0C)Ik4vOF#H$INA_^`;(rBlDbQuPjq9Ypuxq zo+f^Dw={CbD};X@hM~$v8*1IoaPXz!SD}|EOh2sGoW#?56Hyfg{DaOYTK-O*0SdScPfJtU))% zYGFA`wwyWJH{gW=uu`o^xbo|zU#@{-EW)r>X_zWB5SOX@n8KL2)ogE>nx#oJTt>?` z!kwYgiX1JCXNc}rxc=wVNL;9@-B`6R%q$DP*RlHh!Y%BKm4!1KJ8Y~c`v)_Zpl|C| z=c>ioNk>(?gc=iKz7NCa2#r;0Ut?v-PyimndKbAiRw^$rdfhq*yTBqa$MDa2Ufu}* zW1g`<4NhK6z8El6NwqF{64MYKl?>m>=(%%;Pj)W$4xhNR0j{RXnaKXX}@yf@nJ;4U*+FaQ3P;p8mbO>n%n)~X|)!@1lmBPWJ zL%q0W{19=5ZomzJl#)62Rr zv0jImx0px%iJETxR=4)i^hGZNMp;C6UJCdIZe{ge)T(96g4r+Z{Dizfi-mUqX&|#j<$Jf5CRY*(eJ%DN(e%<~Wyf{<0 zV^#Df2#F#r4Z%;)1a`6{^fhfe*46Z4Wiu1{Arm^G$$D{MaAPOg08)a3k|CV_gm(JP z7ss@-8|~~yJNHIHuZV>*+BrYh&Mz?o9_H4c#N9RxZadfM-ydTbbxfvAxyQY)1kM#zFN()SAI-g!d&IWD{??{W8`Z{@9?gVo^%hd9maX^Er z+c+J)ODm{@Y@7Phu7Wx=mgjs`a#M@WJUQXJ#PMw5&-u6s5Q4G*GN})cye#?R7SeOa zxF&B^-*|H34<>r6fIwBp^b5Dvx?x2+`n?OFudG*kl@zO^32ga+(>02$O z4;JhWYI*4qJXkcwxy|LJEAap}ad{om6=fBUUhcoEgiT( zgEgLQg~!AqHYO^VAVs0+_EUV*?CtiH73QUtlWyPSzWM2~>vnx%erh?zqC2^6WDh0m zt=Lg|jkk=hKcP@F#wl;GA?~i`QD|dkZ1E^;t7gmtk3u_;qYL$eQi;!?^w`6qs0840 zBaTuDXEBji@vvRY(e>%h!*)6g;k45^ws@2&V?iJuwhKD;ktY{DMnChgUDDAQ-FcL$ zV?l;bD}tXt20sgqA-mnq`v{F6Q9Q~8;xc!xLcLNY&xiE^{?wyfn5!o)F2e*@D&eC3 z9l%Q@{|d490>^%)AkUreXZWePdvWnF$EOQ`pLcOQ;KCo}__;3p*9`x%3ssc;4Cls? zo}PkG)`F_06X*`Ko!F8JDKqO_+|4y z>VJrkG+i3MG*?rZJ4sQdm5N@hC?f7H171j42;Nr&|6URNt|IuuMeyGg!50+4 zp94N!ic6GpP$@?UF4W%XMeyr@PnY5q%Q?X3ts?aU2m#ZTX-pRVu)G52{{~)2?qq<4 z@K%5{E}V%Qf= zv0+AOD^g!sPcOD>V%^<}am~_JbDm+udV7Px;7oa^NQ%E>WpP;!7(1! zK7;6Rt2w(nnn-C&TIU!E+y!fm)_6xeW(L!y)>>y!g^qYSt>HPTOHjBD`a+v@Jlq0` zSwaD$E7=xjHNI#CXOczZo!uSLSlnn&beTq`D{*5ct}R}+1V#;ZC*rYqPa+-9Z`~PY zt2xKabazlC*ghO?U2JHJ!&K17dAUXkM{w)R%r~EH1LhpXo;P)0x!gEmjbv(!HELqX zjyA<;)~{UHpc_Uyv)0fI44>e<#$SgL z6I}^YsnHv2=_g1(v*>3w{mi7FdCsuHKv1LUb~CybJ>oNol}1*pIjb|;O=BqG9#3-( z4ZSVFx*3L7*a$-yG;NEU(L{$l9MKKy;x}fZ9fp~7hNC&V9V)WxrLE0I5aTl0W~8EB z>(T4+1pCwA)@;nIHJak8`&fD`J4qr$kNva z!}{7<96{0;k*hV9?2fmwq2Dwoyn&2|AvPywZtRXDxYe~Kjh;kXyek}Y?0USxF+{O3 z6_1*5e`lxC8SjjBZ)E-qh77}OPbGVdj^ui5$j4KuWU6He~B78%wCu1YJ<5j9?6ZJ ze7Za_(vE+m&E#E&=Ih)bJrSmkEldR+4V(%}V6tx}zij${lEuoQ{HaqAOZi2i1*og=9@tIF@< za4vtkqN|5oy)2&2bh0@{%0|$HXg8aDK4++zi=~Z|5zUn{qPflrV;(Z1x_m~oh%zFh zcp^kpA`!wh)h(O{6;FfcN#QK$7#zz|p+qm{wK^xy3 z>-+ipEW+vUv;_YPI8J=3Bz%U1S4((E;zNJyCHPz?)tB{Ym+I5rlBh4<54!dLUJ*Wb z7r`HraC*Bh`2SkMWqtl2;q;bQ)Sp0xL2=uGK93f-Y=_wrehDfFK202_6Ybsz+$d5% zS)@MOcmzG^GehF@ki=(>gugH0jS_wy+uv~bge82rga;(Ntq6Xngnvb-5LZ>Tm zi1vO}!e>f&Qo=8n@NYzme*nFX10Z zxUA<&>{n26%e|`ze$j+{eVPB)BwV)Jb_tj5_I(ML^?6XjWxI{z8y9XpjUxC95-#g` zg!`TBhF8@&yX|(G#q1D}@aK!*Wzx8l>z`2sZ!Ur_FM{tVg8xGioP9e8UCBPOK62cU z@%M}Hk>iG3f37qhWxTNnF7`jhx%Amlr2emq;LjGp+a$lpK00cM*Jh5nN2fZhbD5>dSF&v4qdXwb1j25+0E736dY@N%$lQr%!eT zANpHCDx^;chrs1|lXMe!P^y2Kgo}BT_{^7Z`lg8r;c^`KDnlJyjsxs#BVJ#&!>@RK z@)sRKpOYnh>Lpy0@L3XWNw^#bZkKS`4nLM~+0OS$xNM(?B|Ip}-6P?$eZ+nq*+;hL z(?#lk4fUu{eYrnB#L%%geMU-!>Mz70?6#Uf6gQvmJMb9%OGWs|ewX#ROR6v9A4_-> zWC?wykyBCJ`mB=h20Rz_IU81A_LrA&argwJ`t*1GREWRquc-`maM}JBNx1AUK8>(G zNK=Q^ze;Ts_7d!KmyXg`>9oJN-c@Z3dL`VKfJ8klvjxIBMGPar}GDUB%HD4PWvwjr}|aA{^|U=&`0d|uW{jGzds@2#D`)Nm3t(7 zRKKc8Z|uZIo>GI&9Ov9Fu2S)iXbo1C*b{7vno*@@Z91(mpvJYoBJX6?q>@yd_yud~ z6uijeT!`okdCzgoTk@k+$NuLRue!7?6dmc6GW7wzfjm5i7e8+?@E1YS)9CiG+7Bi?STOGUAZT(drvghHRU zY{%kBUVjLF_54Dt-RK<*t%dn=Aa^cCuX1{^ej)nvj)VR>PA}GQL|=0p^z8-ciN~?( zZ*qFE#v|HU$3fp;fS%r4AFKRta(cP_4aY%$dja~!^jZ`kgLGt-Bm>^c}kY6qc z5NG~+ActInE80P5+{$dap zl3&kXdWpXa5^A{Rhe2OR{?lCk)0~jxPbnb(8yMdtztq+LwsAq{aC&hfS#o&}fv1rE zw{!YG(L<@Y^?wrdh4jCNzbtLx^rS!O;0 z^lt@yA^q8A3IwZMIO$LGw_E=Yipcl#iCgT;aW-S($I&A4)hir|K~6~Wr{QqR-;JQo z+Ry8W)3@m#?xN)X63w}HbrbeKPg(n&$GP9KdgoFef9C^o%Rj*7yZP?n@_87{@pb!e zsEGdJPww3MyZhfupf9BVwgURoT<6xG{*I4Ag?s+00e6%9@eS%30{Xt%%@arw1^AwR2J zKINQpp|(;H=PNnAgXVuXaQZyrTnRdX8=$8g!PR`Fm(%-2MSd3g3%G~Nchi5H(?90w zux|Pk=nM6~DsI1e&X~q8*+|d}`%!z`vPri!JaD)31c-9yLh%RTV@%&A`p0OnqTJ|O ZoVe{rkKKKr=-M0US5a<8`{d%L|36d2+kF54 literal 21120 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 l`>0bM&!n^V03fcJOj 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 N_D?DK?$hM{{|8lUG#CH? literal 19840 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 O@3-!q8|(U-&i@CCC}n#9 diff --git a/smart_autocomplete/src/main.o b/smart_autocomplete/src/main.o index e3ba1d47b8a62d58778fc41b21985e11b7b51002..24f8ec2801a810c83de0459727efa0f77100c22d 100644 GIT binary patch literal 63056 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 literal 69840 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 diff --git a/smart_autocomplete/src/minheap.o b/smart_autocomplete/src/minheap.o index 2697773e14c3a2402422bab266a317ec52ce9981..815670cfc9f27877b410a3526dcc0a38a0b8ed2e 100644 GIT binary patch literal 18592 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 literal 20480 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 AN&o-= diff --git a/smart_autocomplete/src/ranker.o b/smart_autocomplete/src/ranker.o index 00899be83322660596bb1b86e55e792d87763a2e..71dc2b89c1f563050a246bb4a2b49db4e815f8f4 100644 GIT binary patch literal 8616 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 QPs{PI5eDumF|L&VKT)P=RsaA1 literal 9104 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 diff --git a/smart_autocomplete/src/stack.o b/smart_autocomplete/src/stack.o index 8f06cdf58ba66a7783f1ab25840048bc8c73c5f3..150f5cb43e9c2db1fd92272fe824fd9a9a13b4be 100644 GIT binary patch literal 11296 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

K_K~&v{<|gKJ_k*+J9r=Ph{Rp9TTvxuP%4?t z4(ENTTsoOg`$qG$ zXk(ehY=(oIT#tOz8WcAt+@Z>EPc%=QRfygQTz$lCXDZ5B_9`N2%^+z7?G>{#Sc`qf znilznyWOx-?A*iZF0wb!aj|TzjGyw%8h3Mq|A;+ivxuw(d*+|G#_WSa~zCyNlSZ(LhXus$MldZgTJqgey+&pR{ z)@L{(JM4XC8}yQlcV@oHnQ_K1v2ps7)4VVgw%X!RiJPu)54U4}-mz*M9Pv+%8&5km zwA`21Hfo!$gX_@Kg`UHXt?w@DS>1}B^R7}&$xVzk>(N|7?X9g_eg2-^g>1gy3vCW; z4g@#dP~gqRuQYB61h+H@n2Ximmt0J0+IRG5IA>=FbKxOcYZsd1ft{LT-0N7sW~F-? zix&ibh3NYmDkC26L1(+CZpsz)_=+{{o}klMrw%6YfuvoI2RaRI^-9`u+IrRYdNEcEW6^xIPO=}?PPxKlzw`7eX?ZKX1K*72 zi^K=&l`^n#iOdTNGVQB(E!1NqPd3r}0MT7|_?R@%lX0G*b0iF^roWE-3R;K3`S`HEl6(wwJi;K*WayJwec0G{;&f;()VhF6pRFADi< zP`B;hRji$=Ip`|U3@Q_e)M&q#>39i~%hs|4BVRccoX3{naA^pX3gqHnDVBG*_*aWc zxV{_&;?gczhED)-YK#2jTcYpaA^dLMvVBg~mjwQg0w-S)UB!L3%5EsXU*Nb$LG0>A zfz#epDG0nAqyBsq{J|>tLExW;pAQM;d_SW8{VM!F1b(&Rf4)b-e+8Dll0EfR@N28! zJF4LQz^_);m-Z{suYh0Wq_0sn$;gq_D$ z7HUjvPo##k;47r^@lHTv-HEOn6J7bnVBc_VPcqk=7|f@0$^0;cll_6g(OfbRq|ri~ zdvLYbiR(lc8L@>f8jw>D|>sgdj`?knI0_+k;6VX zwuStHztiKX^hkbiIBWYUv^j@c;^0u)HmEfe<2JP$w?)E6;I54~*qOEzr<|9l+#m8Y{Yk=7`^ z(d_`=C^$_kIOR==(|v)6`017*@jns>BAotLk@#AXPs{OFWb4mPb0w;6VEBLn*TwTY%7VAQKXeg=YE#Xgz$IwUg8R0jH-(kbrL&852 zmvQr?VkhZ8B>2@hq_<%?u6&mub*dlU7jlHF{FhdVtA`X^<^QIFVyA0W>t`~j4B_dvRy;dpXs_S)`g3~*U)bCetHU2j#_~#V;BAV~#@kpF>5?zbu8axvJ0)ZgXLv@J<2n3Oy zKgT0+{$*6)eg&8DNc^h(+tDT>yaA8Y(?cMroPQTbZCssizre{(ddrb|atgmXUwYpn zDxdE@jxL|?0fCp#_nQi?&R6cIa{K>Q;aBHNpH7L&`PKcU@}IETm+`-<;A-9wF#jIr zlMR%zPJW|DQn#o`T;_oh1t(i29Tyei|EvU2{z}0`D&@$3D7cJag1jQm<+$>FW}SkI z6vZ`kD)>sFlZv|(ocQINuRPbJe)(Q8QN}Ola7e*PzkCn>k%E(cT6>}s3Ql9l_mkHY zocOm8GssI!ASy_|%v0+WocLSua0-l04CRx%wE*5w>~cWXa_LMmkWY{2wLot&pVR`o zM@KbW83h{n1TL+WFWQ0JFd6Vk4EUk9Wb#WW(DVt<`$Nsp0{y9!xQF63ad#&Df8q_e z!CngP6}!jk$mASDV(yCw8jLf%!TU{1)(@g#qFI}N!?>vu?8tmQh9{q!|i%1itkV*K(rlNT4- zUn)uaW%(T;ukuj+I(hLa>yUC1eg^V%|3I;Xfi+VFCJ?khfcl XaWC6+_EeG|zslyof3HiZ-2eXrkl{Lj diff --git a/smart_autocomplete/src/tst.o b/smart_autocomplete/src/tst.o index 704ca0f6ec1db0ee7fddc4c1d61f194ed49d9406..467628adccaf13ef64a015fe4d65ef715b7fe03e 100644 GIT binary patch literal 27032 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 From 0b5b60c0556c25ba4244626efd15b7da1f4a0fe3 Mon Sep 17 00:00:00 2001 From: Tanisha Ray Date: Thu, 13 Nov 2025 01:00:33 +0530 Subject: [PATCH 29/33] Readme.md written --- smart_autocomplete/.gitignore | 5 +++++ smart_autocomplete/smart_autocomplete | Bin 119472 -> 0 bytes smart_autocomplete/src/freq_store.o | Bin 20120 -> 0 bytes smart_autocomplete/src/graph.o | Bin 23600 -> 0 bytes smart_autocomplete/src/kmp.o | Bin 6456 -> 0 bytes smart_autocomplete/src/lru.o | Bin 19568 -> 0 bytes smart_autocomplete/src/main.o | Bin 63056 -> 0 bytes smart_autocomplete/src/minheap.o | Bin 18592 -> 0 bytes smart_autocomplete/src/ranker.o | Bin 8616 -> 0 bytes smart_autocomplete/src/stack.o | Bin 11296 -> 0 bytes smart_autocomplete/src/tst.o | Bin 27032 -> 0 bytes 11 files changed, 5 insertions(+) delete mode 100755 smart_autocomplete/smart_autocomplete delete mode 100644 smart_autocomplete/src/freq_store.o delete mode 100644 smart_autocomplete/src/graph.o delete mode 100644 smart_autocomplete/src/kmp.o delete mode 100644 smart_autocomplete/src/lru.o delete mode 100644 smart_autocomplete/src/main.o delete mode 100644 smart_autocomplete/src/minheap.o delete mode 100644 smart_autocomplete/src/ranker.o delete mode 100644 smart_autocomplete/src/stack.o delete mode 100644 smart_autocomplete/src/tst.o diff --git a/smart_autocomplete/.gitignore b/smart_autocomplete/.gitignore index d0a107e..8d89da1 100644 --- a/smart_autocomplete/.gitignore +++ b/smart_autocomplete/.gitignore @@ -3,3 +3,8 @@ venv/ env/ dsavenv/ +# Ignore object files and binaries +*.o +*.out +*.exe +smart_autocomplete diff --git a/smart_autocomplete/smart_autocomplete b/smart_autocomplete/smart_autocomplete deleted file mode 100755 index ec7b9f1eee540631db599118844c27f783bcf797..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119472 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 UHi?H!=?j0XW6n!UkoIc*Kg4E6>;M1& diff --git a/smart_autocomplete/src/freq_store.o b/smart_autocomplete/src/freq_store.o deleted file mode 100644 index 5187f47a9eca58351288401e84738043d06dae0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20120 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 Hr~dyR-7)WZ diff --git a/smart_autocomplete/src/graph.o b/smart_autocomplete/src/graph.o deleted file mode 100644 index 965dc5f1bc268d52edb7e2195c564170d6f252cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23600 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 ZoVe{rkKKKr=-M0US5a<8`{d%L|36d2+kF54 diff --git a/smart_autocomplete/src/kmp.o b/smart_autocomplete/src/kmp.o deleted file mode 100644 index ad36ea1a82f20928aedc35050a924345282d5cc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6456 zcmcIoZ)_CD6`!*YxCV3UMuw6?<0HMMwn|pF4h=p6)NAfwF08@A7*GRj&g->(;{I6Y zJ!23A+T#+o8v|{nDsA&2A6ltVzw|>zQQ9IC0w(=Sfm9TK09E}1byH}n5QGBmdvh~* zz4o;dQJ%azGrxKN=FOWodp;1?)>ip^M39fHCX*w95;FAYWWR-VTgW2vS;qS*7(W6J z%GJO#kM}g#1T({I0rH-J*7?n>(rfK?g1VGoU%yK*Bgf?X&dMzg9`5>%d4y z=OBN={zw~MR>CeFT^HbOEo)07(xD$fPqROa+2bfgHVm(fBy4{;VUM)g`@*$a^o~`l z+3zd2sXfX#_)I`8-t)cKLY)G66a7|3#^+1*Eu=JJ#fsN`^i|dIAB@ZdZ4xJ5~L(RDTd1QAhoUu?61o z6H>ic4y>W%P-kbLn>zk4Gyp{HSa_i_LQ7+o zq&Wuy3HyFr`Ab`Aq7b1DOm)*Ql^LbdD6$vdZir2BvPYKc55Wwo`aA4G+`h*gh?gd$ zBS!$%oH$81tCbPug67nOmD|cY;~|Vs^t81dV$>&M^tD*@AN%X6af=11MpBz=B84mE zAOUYgjlO$eJ#+3I>5x7#F+m**w#ELv*7!SS^2T!jPWn?`^Z0q;AI9%BbYc9Lj2+B? zv6ytcPKr0zMJ(q=c8a`+AB05hOxPc&n-lgW7Q$^9LTdkUN))Lw;vY_A~nuP$Nj!$|AN9rm@c07MNwp(8oenU{XXuDvkxqnCaifFvKHES zzZ?MAVESN#3pv=_ZJK>+N(ROVv9Bkb!9e3>Si{o9vxBwPllE*{JnK)`g8|HuNO9ap zjWK8Ot2eqZfFj=1*^Jxs;R9PP#walIO*li1i*P1Ur_O zW3^CodZGG!1&*-Rc!!?4Q$?far9)4^xuc~KRu~dCl#Y8;il2uX;yVwuq(%DHS*`Id zE!~z%KLjhlDU~ikM;VJN@3q<29ADe8Hs9aYcuTco^U22Hu#c8599RmAIH2PxjcIlU zs+I}qxT6*}aN(5QJBXfZ_I=I1sloO^eW?kvuxqey;B8G96)k|$1<{z$cwUVEn8ic0 z-_q>caK4xX7_+`T{w~&^pMO+d{sC%VrM4CZ+jV8N)Ts+o2atq)hWbw5SOJWa`Ear< zHc?Nbx2Ux4EFE6Vs`2>G+?9)E>%y{^B6;kaY&B}tUX%Q8eDj!x-}RY_O}KbUYVr^BQMR4 z1)Ga=V!@WGlaBb-hs4GNZ2bbJ<#c z%5^Q_E&6(n_j@1c-#CM>Tz`Aj%b*{;pYE$zvu|&^#v(EYYYbT=;-bMI%x!%KY+)>2 zv58}B;usr<#Dn!5^Hp7$aY1Y6qAq>};VXgb3m)?o=e#ugm0837Bh^P?%PJEt*H8XE zF%w61*}G{|)dasprc*WhDwzonP6q+0X1g(U3N=@eNq$@t(l+)Eu($iQgAL}oA=d9= zZ(Q9}`Z^3Bb*+o#CSbpXhkY?jWhWOa;8!Z(cK}EIA#R%GD`0D2Jd^(Q74YqVKjDh= z63~IPuLAxW!||)IOe~L~dmHeX?B1_{&w^}0|6kx)gE@+{5ynfZ@Jq8yVkfo$K9l}k z6>zdE(=QwS{Y3xjhNsuJwJ+~UWxLgMI=*TBh7N1Ft{X!`ilQ`iB?nT5K49fj+1`ZF zVJV8ym(1%{KAExx5=Oiu39op(W4SIHxpX&?wKWlZDX19OoAfR0+S5UinMeV9Djtu0 zIX);1D-k1?=`UEO*52`u#z9qfcZOul%z$aZpu=j4=(^RH&+XRJX13Sr)6IN7mv3Kh z2&>ITE^8&>;(SPxuwGEroo*k@5FNskGCBIchdU-Tkm z%JOL!e&RU@Wqfc$RM&g61-4QHnDdH=@EI)*5d8#J*s z`uB)neEhv9v8{66?2*Bfp&`BB%n#(U$#lxvqYp-i-kIGE$)#^H2MQUJ=k4>n#kz~9 zh2Pc_`&~Hxt`c}1&wo4)nDYXEjN_;WtChgN=fbfn349(Z078B|F9Kib!trzo{GsiGwUay`vTsYpzLeD7|?$-Y|j-wg8+h@ar^u7lddOlO0p60)}H_@N@@Cg3DR^Y$u z!WX#s>s@hk@5@eC{PAuO`VAMqJN{xF=nwuT7X0Ey@#5$M65@E*2!6zn(9C13SAK_ zza%E)fjt>3*+pcix#hM`^zvppDO=`{Mda?Jl_YZ4zyOi+IUFFnA~(ZOFvGiE*3BdlnlR~l4<#W6)(8e zG8r=qA%~xHrVO9nPqAvx$543X{(KH9o(1Mu?9D#CC!d5uC->%ag?_QGAG7^6WeC#9l1reuNif5hrZ1z6<*T z-v!uA{-5IZ#qR@PVlUe=(Q6{;vk( z%s%H64dn^x_1_aF5(QyqUkLKHj~8yr$7mm2^4f3X_Pu($xP5W2b2ZFY(Z{x%%U638 z9OUxCo{;g5b>Y89{wLgjvCr6Ioe}Z^$Nwe3ABhM9ygkhA%N`tgkwp7lE?-6`-^aQ9 zBvS4PIf1_c0RDsA<32gTfcJOj z&B)iXL?NX67juq0^M3Eny?5^1xpQZvYFRe9}5i3?2^-YzJu0c`0s}mz(`3f}84vvltCeW`6Mg zn6YDO+$k>y6t`RaOCBz{&=3w7w2F&ec9|y8zb|y{n%e9324_W$#=+lN2S(4?CG6h_ z`-RApN5C8+eZn4w0_DQ43&ri{h5d?rp;(W8Q)DkELJ7)0wX17a)vl~vv9cM;S5HvB z0?OCC9UOQF9pcVLzi`eq?YB((&vEAp;j9M#qhij}@i~8`k%mOgL%}aSNJ=;jeqlc( zhfhNY5k<`t!CO89`-{P$8*7BUztKJ+_PkZv2K}Fl+kX)Kd&6e`zOXxr{+B(OKgg~> z4im${ArZXl3Da{hUbD5_Z&lFvP3HOxd^B#qEnmeQ3{*hFk^h#wT>F{M8fe>Ph?-IBqTnnjuni`IPBiht zK|@bG=>n?EuO<25%T~~IG9l7?j=Km*Xc=6=5IzhSjnK$%X&i%(ZYh--jQ`=wGE*l2X`9qwq?rMA*I6qW>lVF`J^65A?VAcKv~6icxlv?o9mAbAc1Izds+-frTo#ybN-BXg5EuVce3y3 z4|cVUi_hsFmHIoYg{XPh`mAu4Lyf1bEpf1q+qF^C7S(c8T9e%9Ffa<4;k~YXixbhn zF@C0Rv(}e)8ofu(ld!LX-j7<}7sItuZ(;w8lhL9dyaB77EW3AnKrod{t`r@)7BqSG zu3cr?Z@WP>?({?(2VV{j+zz|SIBmbw=yXL*=eqI=6U&QS)SAcmzZ-w1ZgA+3iN#dK zJlb?FD>o5>(A;#^mYHfusHNA5!9&&}?LWf)wQ$bH zD)VENmFZQ6K&Qg%gX9po)jW78^SJ3Ogay}5PwfZ}%b^HoO$hNM3k4CXUq5Er2V@XY zYg~qJtDOcAcf!lFC9j&!g7QYkAFp{NIPf-fz+P;f3Ad>N7j&;VV1d*0gG6Q`y8FqX z2QE;I&Ofe^=NOcTxh@h}$nHJ41IHLjM2f8+(}_s>x}0_cR%?2zDQ_y&+yr z8hvnJiuC&F2Wi61nmur{VVWw8VL|!G2x76YGi9SMj>kL7dHyVCL?u1gTsI<0Usf)S zK(lj$J3D=dzfWO$Bp#z=Xb9Hsug11`#}KJjZx3CIjAnd2NPj?1qE=Kq+vZ1hbpV2n zAwj7SP8!0t8B+R$Y^5wRq@+_mL9QW%3;RV0)A}CxK6w?S2M7LD`qwMDxkMJ_ROoDp z)*2+$A^yfx{EbCPb;RFx#NQhz{%(i{2R0EGXHA8;cum+Go+6DlywtC1N;@Iy$N0-L ziM_#Fgp~dpS25a#X>0Ne&tB7>V%kgnro9$9!8Yj76*g;L4Gze>%HB)q1}s`qK8mey zfY?)h5i@qwA;G{-jLeaCewARL->oD&djpsu^{^Mmv605@BPzi_lzJTRDZvQIg!Fuw zTzrp`i+e}stN4rkTn=dD8n_9?+XdycoonUYgj1>|GtPJ};{;b^vm-6&Cim^@%KfM@ zG&$O`Tq>5i298jHWRhiKAV#*6a}FNj+c)32rG4dw zsJ8E2?*2+SZ#=unU%L{)Lwb_*X!zM%lm)kIZ=T>^*D(KjUHTU#7dhva{&f?X8~%lT z&VC_ozb+MkMTCPGazpsYZGWc4^c)MHSduAb- z9P>AB^^rw?!MYgFpX@baq)8^Q+i8&CFGhDutGJ%HpCyu$+s3+NUq?%#&q{Z6uV1t% z(U@rI>Bdv0#R_+4Iy=MNJyv*Qva_Sroh-2!8M{?Y_Qe9%i}GpFKNObJJ^GwGA!L8b zJT9d3B0_{jM_=Z8xr8cDFZx3CZ$*A@1WJ5JjxyisB}=;Uju z45VJWt4FUD=})df-IIjMZ}hRk9lB<&dl|;qopU@NztwX9r@i}1O7EKDd9kGQ-=}zP znR2>ed~FIfv5vM8W1^kyIjg?ZG_EN%j5Vd}d|6NFKY5IQ@!(NY5x?*{0JgXE%RbMW zUhvuJqvk$e>7zd5u+Jry{Kh=S7=7;isAopaLC-F)=Ud*=d%VUEy*VP{H~S8f@PMcE zWv}OXk9pi{{G+dQkI#63cs()Bkn}tA^V^}yJ-*Uklz8qhf$-rHY65f1*qt*x{tHXz z8g)4lq{BH~yFqfhxAe^t<7?j1TS|??-Wj)-8ec5|8QzyfP*b5fh&xjo5rt+7XA{D} zaD2|g(r0D*KSgdby1=3;JbiCS`k}YcY2?vEfuM zh0;RfGNrun{J_0=k%_@t+?BAa7vuxt;&a9DR8kcOEWfJNu6z#6k+&>sD^0r;?ydU34J>FqI{wCg!@5g8G{rG&f@4eUkx9@N6zn9bg zJ08$fo|xPBkH7m(R<2y}{uetirILoR= z%jG=;E-H}dH{s-oMBlWZ74{?I^$f0P4rCT1nT*%`F>}atR{O=`=1}GrbmT-h>q8cM zg&f7;Q04*H1>x#2GfmsBSmbx3f6&UImip2CnM@vJl8PMcZBKCEXLu{@qqrUvdyZTd z9DEYb@$B5!s55p|DJ5>dh+~sIY})(W=j_TVLAMse*k)0XGRL!xAsWeCVgC_{m$Ohf zwN-R*$(H;|IMuWhE*8#N!k!@<$n%3XgBQ3ZaWXjc9K_}0o)>)X%-Cx%o)o1G`b@A3 zlt>J4CD(|h4$W%}Yx**K`aaWsVswYh*Pa;Njyj%QUxig9_xVQq`H@x9t)hn5GkUqj zu20Aw7?6}_I&={ktB?=wi~ULwcla2gJHKucCNCm!v_L44cd2Cs6EWPWN+vQ3rDWyx zK8$L_l(|^kKJH3D{8~UMJ>tq-9BhzgAtyrmH1mQANDU6Yguk#u8Jk=g-+oGom}KD| z2xTUjS;sW2XnIfz$>nKmkhhaOH*3-69?+ z-^NGs3-tC+y?M&c(rn4CzT3QV?7x!~hOu1LWREvg`x1stCs#x1b1T_5tgzoJjNF;- zvZ>6YdTAhZt2Y)X%aZ;(OQ7Y=q<{Yu-!xC4qBan|Qfhot?c3e<^zVu7E}rrgS7dvGqVe zgweXl(rJcK0iM?@{Z^r^$Gg*O2Fm(<4T12MKv})ClW`f|?^Lvx7m;62^2v$6l_zY; zG-=zPtNsUA|J%F`6a5tWD?e=rGa=C+DgmaJ}ytnybkM zUN$X^@pUSGG;fk$;Q9%E-wu42qWQ*TnM=t(uB5dl$DsUUx5xXvf`f=n^R*V%<|@n$ z>2pHKTA0&kw`YPvzzY?a7yAEktk653;hzMb2E@zoAx7adKE$5f<|b4`KcwDJ+|k8n z1a&i4KY^B)@u9e)i%+g#{WMW z3#5hcPZYuHir_1N&-Usa$;f#?ZxQT}j3W5zB6z9@ zo+*M40RJ#q1vM4D*L}GNez(G#6usUDA5-`)h3mcW6@`b?xmNFoGx03tPI2YRJrT`| zfETg@or}+7Z)UsQjGK$#ha^tFGH^>u)pH>4JhtvMzDeRbt1%4P8>u{61V0<++4ItV`5`Y!`cFQ}frSEC@dt?F(`1&73SZ7{JoDgi*9*>agvb80#QO(4AU1p?I zvahdWeK!qlK?3@;b~bJ7LfyTI{$jaRYwgx0TNBB2I=Lm$or12Z?)6qXO%_G~x$X!g zO=o9M3tnKwCll*Z>pQyP)>cb9NKeA0BUR9`wWF`Mr!PgmA-SegQk;59b+>8>E4w#! z;OXjAU#2TX0>@WX-Mm;w9umn%A`6nOt;>5_Q!9FwrhB@rSknS}n%FH;l}>f_Y)sLc z!UUJ-*YCvUl9tX?GL0d@75Y+^Yn@ZMl;-KBbSjxfG*cZHPGU-PF}6OZ;wj;FN_B&~ z$oTKh%c;<>E;7y$ffbG|l6~z~a$V<1#!PELZ?Yq8E<3ncUNEh>XmW`tYy*5s;* zb>(~P`$z&Oy8irAp8v`8-d1To9pC5_bOLwZRPJKvbh)H#Ld>9^h*&oZ2DF*N=f!|C_n8rSEPd_EWByiFy4TuT|w$8|Hqx!ms* z!5?8b-7;u>9%J~&8U7^0xgDNSc)mTKWAxmftJJxf#>MsAQUt%F2!2-){G}rJUy9%# zQRiCH=OQ-VE{4;cwYHDL@Cd_47|zFaya;}}Iv@Sr*$ z6MwG%g$(EVXBp1vzr}D){}973W%@tCa6Ycfah|6_`f&gME5rHvovF_8M9=;F7KU@b z-N|t7x3?=i-#@>?=(&G>jp5wSUuHPBPl>u>Bt5x(&Sf~aPc_52efBZD3cR$xJjPlhYetQp_ zFXE%)_DMxx^Z6XZIiEDcxt=z|xj)>>aL)gq8P56N#c;0Y zcNos){wKr3XzOu3&TuaGe;Cf?KF{!r86Q2LG%sAAV~oC%(Z9*?FvGRK5Fc(I?O%j* zK4l&ND1?Xc(c=m;oa;ktgi1dDg)Te^zpe=0!f+l3PG@p?{48fUkDv5?2^G?Z$ImY^ zoX5`{3ipDZ=Sw`#;qeo{caw$q^Z4*}hI2pp0mH-SqwTq$;ju6Unx-+zX)wje>cOq|4e22a69Yo+=)N8GxsZQp9>hD z*-UPP;oJ^24CmwJ{>JyOW~M*izrM_HZik;Jocw`4+77>E^z@qnjbF(0AssZ{!Eo*; z+ZoR7!2ONenfu#p#{X`{htuCz1pf)cx!oRRIJYzRLr$;EU{JSn^#kg#YHPdcR|$sm zZ$q_zYWg8Xw~f)OlvX197*4*W%VVlRe29LodOpH%dM6zo)rmY@e_y8Kq1H!#U#8=X z#`X7Q)yi%fm%_o@Vz^2Hq(mNPR0=8aAx3|?(v2!TFT|h5)kGjlhyWC-R4O5#uVXkh z_4ipRh7+HylG-rtWjHnU_gOz;IMHuc^v^O}rEK!e?-@??1Bzb%K7wAWR7<|Oz~>SW zPV~Fo$K3B92&a$!{wtG5|8qtE0K>^2zOC^63@83a6@HlE#9x1pHo|bCFH!RmS58K> z)O-aWDk~XI^x8j+%DydKxMW0arQNz+x6-N3WTlnbY#EiUNh@houIuYFD$_mmK;)6i zYCLM9%1n1>$A(nr7Nc@~3%;h<+>+|G@ZB5kFFBRGNVStbC`hPVs$q zS68YVQ4s$~Csm1GuYOW~@v5HJcV{Yl(>?gU)k5f#;V{*nXiF#Y4P)i{bWf&N2H^Mk zXKktbe_iCWi7G(vZRg{820kj>=jvkp;|2QDuUy`3|7!~LKjS_0Z!OTD^4)hUUmKT? zpYqvv+h6Auy#J-|q5qBo`cuA`FFy>7wrJXWdD*QVt_pC}J=1Z7a(&_%fRTKaHlXE}SM%g*T%{BGQRb(_^JM$eoDxqu)A4dt$)~d$FIs=C z2i@OLJKugEQ$L-|Gd~LrKz)1ciz9E1pbG4%G zV{ZP{qp<-Esec}WURtauv)wB9SFz1Kx1lBV&+ETk9U!%yq(Ak|*Z;qO6_USO$xq=u zFZuEx#>+zTzoO(&y;zz!Gnx8`QLqv?Ce;?;QP4<8KFI5W3e?-Y|BIYP0ekbM2q*gL2*EBWK6`AB!s9Ft2_91Al>Yqnu zyrTN&O)4)CW^j!&WWM|THsp~>Yu7kZXo3INKtABCwx{dZjM N_D?DK?$hM{{|8lUG#CH? diff --git a/smart_autocomplete/src/main.o b/smart_autocomplete/src/main.o deleted file mode 100644 index 24f8ec2801a810c83de0459727efa0f77100c22d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63056 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 diff --git a/smart_autocomplete/src/minheap.o b/smart_autocomplete/src/minheap.o deleted file mode 100644 index 815670cfc9f27877b410a3526dcc0a38a0b8ed2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18592 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 diff --git a/smart_autocomplete/src/ranker.o b/smart_autocomplete/src/ranker.o deleted file mode 100644 index 71dc2b89c1f563050a246bb4a2b49db4e815f8f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8616 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 QPs{PI5eDumF|L&VKT)P=RsaA1 diff --git a/smart_autocomplete/src/stack.o b/smart_autocomplete/src/stack.o deleted file mode 100644 index 150f5cb43e9c2db1fd92272fe824fd9a9a13b4be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11296 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 Date: Thu, 13 Nov 2025 01:03:42 +0530 Subject: [PATCH 30/33] updated README.md --- smart_autocomplete/README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/smart_autocomplete/README.md b/smart_autocomplete/README.md index a63d50d..8ca517a 100644 --- a/smart_autocomplete/README.md +++ b/smart_autocomplete/README.md @@ -80,11 +80,11 @@ This results in fast, memory-efficient, and intelligent autocomplete suggestions --- ## Features -Insert code keywords or phrases -Autocomplete suggestions based on prefix -Suggestions ranked by frequency -Snippet support (e.g., `fori` โ†’ `for (int i = 0; i < n; i++)`) -Practical demonstration of Trie + Hash Map + Heap working together +- Insert code keywords or phrases +- Autocomplete suggestions based on prefix +- Suggestions ranked by frequency +- Snippet support (e.g., `fori` โ†’ `for (int i = 0; i < n; i++)`) +- Practical demonstration of Trie + Hash Map + Heap working together ## Tech Stack Used @@ -117,8 +117,8 @@ Practical demonstration of Trie + Hash Map + Heap working together ## Setup Instructions --- ### 1. Clone the repository -git clone https://github.com/maahi271005/Smart-Code-Autocomplete-Engine-DSA-Project -cd smart_autocomplete +- git clone https://github.com/maahi271005/Smart-Code-Autocomplete-Engine-DSA-Project +- cd smart_autocomplete --- @@ -127,27 +127,27 @@ cd smart_autocomplete If your project uses Python utilities or scripts (e.g., preprocessing): -python3 -m venv dsavenv -source dsavenv/bin/activate +- python3 -m venv dsavenv +- source dsavenv/bin/activate --- ### 3. Install build tools (for Linux/Ubuntu) -sudo apt update -sudo apt install build-essential +- sudo apt update +- sudo apt install build-essential --- ### 4. Build the project Use the provided Makefile: -make clean -make +- make clean +- make This will generate the executable: -./smart_autocomplete +- ./smart_autocomplete --- ### 5. Run the program From 6f908afd0b387c52680868dc490cc85ade2cf472 Mon Sep 17 00:00:00 2001 From: Tanisha Ray Date: Thu, 13 Nov 2025 01:09:39 +0530 Subject: [PATCH 31/33] added README.md file at correct place --- README.md | 192 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..8ca517a --- /dev/null +++ b/README.md @@ -0,0 +1,192 @@ +# Smart Code Autocomplete Engine (C++) + +The Smart Code Autocomplete Engine is a C++ project designed to suggest intelligent code completions in real time โ€” similar to how modern IDEs like VS Code or IntelliJ offer autocomplete suggestions. +It applies core Data Structures and Algorithms (DSA) concepts such as Tries, Heaps, and LRU (Least Recently Used) caching to efficiently predict the next most probable code tokens based on user input frequency and context. + +## Idea +When a programmer starts typing part of a keyword or function name, the engine quickly: +Searches through a Trie (prefix tree) for all words starting with that prefix. +Uses a Heap to rank suggestions by frequency or relevance. +Employs an LRU Cache to prioritize recently used or selected completions, making the system adaptive over time. + +This results in fast, memory-efficient, and intelligent autocomplete suggestions that simulate the logic behind real-world code editors โ€” but built purely from scratch using fundamental DSA concepts. + + +## DSA Concepts used + +### 1. Trie (Prefix Tree) + +- Files: tst.h, tst.cpp, tst_test.cpp +- Used for storing and retrieving words efficiently based on their prefixes. +- Enables O(L) time complexity lookups (where L = length of prefix). +- Supports real-time suggestions as the user types each character. + +๐Ÿ”น Concepts used: String manipulation, recursion, tree traversal, prefix-based searching. + +### 2. Min-Heap / Max-Heap + +- Files: minheap.h, minheap.cpp, heap_test.cpp +- Maintains the top N most frequent or relevant words efficiently. +- Provides constant-time access to the best-ranked suggestion. +- Used during ranking and sorting of autocomplete results. + +๐Ÿ”น Concepts used: Binary heap operations, priority queue logic, partial sorting. + +### 3. LRU (Least Recently Used) Cache +- Files: lru.h, lru.cpp, lru_test.cpp +- Stores recently used suggestions for quick access. +- Improves responsiveness by avoiding repetitive Trie lookups. +- Implemented using a combination of doubly linked list + hash map. + +๐Ÿ”น Concepts used: Linked lists, hashing, cache eviction policy. + +### 4. KMP (Knuthโ€“Morrisโ€“Pratt) Algorithm +- Files: kmp.h, kmp.cpp +- Used for efficient substring pattern matching between typed input and stored code tokens. +- Ensures fast lookup of partial matches even in large word lists. + +๐Ÿ”น Concepts used: Prefix table computation, linear-time pattern searching. + +### 5. Graph Data Structure + +- Files: graph.h, graph.cpp +- Represents relationships between tokens or code components. +- Can model transitions between function calls or variable dependencies for context-aware suggestions. + +๐Ÿ”น Concepts used: Adjacency list representation, graph traversal (BFS/DFS). + +### 6. Stack + +- Files: stack.h, stack.cpp +- Used internally for recursive operations, backtracking, or maintaining function call hierarchies. +- Simplifies control flow during traversal or undo operations in text editing logic. + +๐Ÿ”น Concepts used: LIFO operations, template-based generic stack implementation. + +### 7. Ranking System +- Files: ranker.h, ranker.cpp +- Combines frequency and recency scores from Trie, Heap, and LRU cache to rank autocomplete suggestions. +- Implements a weighted scoring system for realistic, adaptive predictions. + +๐Ÿ”น Concepts used: Comparator functions, dynamic sorting, frequency-based ranking. + +### 8. Frequency Storage +- Files: freq_store.h, freq_store.cpp, frequency.txt +- Keeps track of how often each word is used. +- Updates dynamically after every suggestion selection, making the model โ€œlearnโ€ over time. + +๐Ÿ”น Concepts used: File handling, hash mapping, frequency analysis. + +--- + +## Features +- Insert code keywords or phrases +- Autocomplete suggestions based on prefix +- Suggestions ranked by frequency +- Snippet support (e.g., `fori` โ†’ `for (int i = 0; i < n; i++)`) +- Practical demonstration of Trie + Hash Map + Heap working together + +## Tech Stack Used + +| Category | Technologies / Tools | Description | +|-----------|----------------------|--------------| +| **Language** | C++ (C++17 Standard) | Core implementation of all modules, data structures, and algorithms. | +| **Build System** | GNU Make (Makefile) | Used for compiling multiple source files and linking into a single executable. | +| **Compiler** | GCC / G++ | To compile and build the C++ source files efficiently. | +| **Version Control** | Git + GitHub | For code management, versioning, and collaboration among team members. | +| **Testing Framework** | Custom test files (`tests/`) | Unit testing for core modules like Trie, LRU, and Heap. | +| **Data Storage** | Text files (`data/words.txt`, `data/frequency.txt`) | Stores training words and their frequency for suggestion ranking. | +| **Editor / IDE** | VS Code | Primary development environment for coding, debugging, and project organization. | + +--- + + +## How It Works +1. User enters keywords (e.g., `print`, `printf`, `private`, etc.) +2. Trie stores all words for fast prefix lookup +3. Hash map tracks how often each word is used +4. Heap finds the most frequent matches for a prefix +5. Snippets expand small abbreviations into full code blocks + +## Example Usage +- Type: `pri` +- Suggestions: `print`, `printf`, `private` (ranked) +- Type: `fori` +- Expanded snippet: `for (int i = 0; i < n; i++)` + +## Setup Instructions +--- +### 1. Clone the repository +- git clone https://github.com/maahi271005/Smart-Code-Autocomplete-Engine-DSA-Project +- cd smart_autocomplete + +--- + + +### 2. (Optional) Create and activate virtual environment + +If your project uses Python utilities or scripts (e.g., preprocessing): + +- python3 -m venv dsavenv +- source dsavenv/bin/activate + +--- + +### 3. Install build tools (for Linux/Ubuntu) +- sudo apt update +- sudo apt install build-essential + +--- +### 4. Build the project + +Use the provided Makefile: + +- make clean +- make + + +This will generate the executable: + +- ./smart_autocomplete + +--- +### 5. Run the program +./smart_autocomplete + + +If you encounter GLIBCXX_3.4.32 not found, simply rebuild the project on your machine (make clean && make) to link against your local C++ standard library. + +--- +## Running Tests + +To verify components: + +- g++ tests/heap_test.cpp -o heap_test && ./heap_test +- g++ tests/lru_test.cpp -o lru_test && ./lru_test +- g++ tests/tst_test.cpp -o tst_test && ./tst_test + +--- +## Applications +- Code Editors (VS Code, JetBrains) +- Search Engines +- Chatbots +- AI-assisted development tools + +--- + + +## Contributors +| Name | GitHub | +|------|---------| +| Tanisha Ray | [![GitHub](https://img.shields.io/badge/-@tanisharay-181717?logo=github&style=flat)](https://github.com/coderTanisha22) | +| Maahi Ratanpara | [![GitHub](https://img.shields.io/badge/-@maahiratanpara-181717?logo=github&style=flat)](https://github.com/maahi271005) | +| Anika Sharma | [![GitHub](https://img.shields.io/badge/-@anikasharma-181717?logo=github&style=flat)](https://github.com/Anika438) | +| Akshita Maheshwari | [![GitHub](https://img.shields.io/badge/-@akshitamaheshwari-181717?logo=github&style=flat)](https://github.com/AkshitaM1234) | + + +--- +## Educational Purpose +This project demonstrates the application of DSA in a real-world scenario โ€” showing how core structures like tries, heaps, and caches can combine to form an intelligent system used in everyday developer tools. + + + From ffa9985fddfad7afa71ba68c9de0a1c94ac9088f Mon Sep 17 00:00:00 2001 From: Tanisha Ray Date: Thu, 13 Nov 2025 01:13:15 +0530 Subject: [PATCH 32/33] Removed README.md from inside project folder --- smart_autocomplete/README.md | 192 ----------------------------------- 1 file changed, 192 deletions(-) delete mode 100644 smart_autocomplete/README.md diff --git a/smart_autocomplete/README.md b/smart_autocomplete/README.md deleted file mode 100644 index 8ca517a..0000000 --- a/smart_autocomplete/README.md +++ /dev/null @@ -1,192 +0,0 @@ -# Smart Code Autocomplete Engine (C++) - -The Smart Code Autocomplete Engine is a C++ project designed to suggest intelligent code completions in real time โ€” similar to how modern IDEs like VS Code or IntelliJ offer autocomplete suggestions. -It applies core Data Structures and Algorithms (DSA) concepts such as Tries, Heaps, and LRU (Least Recently Used) caching to efficiently predict the next most probable code tokens based on user input frequency and context. - -## Idea -When a programmer starts typing part of a keyword or function name, the engine quickly: -Searches through a Trie (prefix tree) for all words starting with that prefix. -Uses a Heap to rank suggestions by frequency or relevance. -Employs an LRU Cache to prioritize recently used or selected completions, making the system adaptive over time. - -This results in fast, memory-efficient, and intelligent autocomplete suggestions that simulate the logic behind real-world code editors โ€” but built purely from scratch using fundamental DSA concepts. - - -## DSA Concepts used - -### 1. Trie (Prefix Tree) - -- Files: tst.h, tst.cpp, tst_test.cpp -- Used for storing and retrieving words efficiently based on their prefixes. -- Enables O(L) time complexity lookups (where L = length of prefix). -- Supports real-time suggestions as the user types each character. - -๐Ÿ”น Concepts used: String manipulation, recursion, tree traversal, prefix-based searching. - -### 2. Min-Heap / Max-Heap - -- Files: minheap.h, minheap.cpp, heap_test.cpp -- Maintains the top N most frequent or relevant words efficiently. -- Provides constant-time access to the best-ranked suggestion. -- Used during ranking and sorting of autocomplete results. - -๐Ÿ”น Concepts used: Binary heap operations, priority queue logic, partial sorting. - -### 3. LRU (Least Recently Used) Cache -- Files: lru.h, lru.cpp, lru_test.cpp -- Stores recently used suggestions for quick access. -- Improves responsiveness by avoiding repetitive Trie lookups. -- Implemented using a combination of doubly linked list + hash map. - -๐Ÿ”น Concepts used: Linked lists, hashing, cache eviction policy. - -### 4. KMP (Knuthโ€“Morrisโ€“Pratt) Algorithm -- Files: kmp.h, kmp.cpp -- Used for efficient substring pattern matching between typed input and stored code tokens. -- Ensures fast lookup of partial matches even in large word lists. - -๐Ÿ”น Concepts used: Prefix table computation, linear-time pattern searching. - -### 5. Graph Data Structure - -- Files: graph.h, graph.cpp -- Represents relationships between tokens or code components. -- Can model transitions between function calls or variable dependencies for context-aware suggestions. - -๐Ÿ”น Concepts used: Adjacency list representation, graph traversal (BFS/DFS). - -### 6. Stack - -- Files: stack.h, stack.cpp -- Used internally for recursive operations, backtracking, or maintaining function call hierarchies. -- Simplifies control flow during traversal or undo operations in text editing logic. - -๐Ÿ”น Concepts used: LIFO operations, template-based generic stack implementation. - -### 7. Ranking System -- Files: ranker.h, ranker.cpp -- Combines frequency and recency scores from Trie, Heap, and LRU cache to rank autocomplete suggestions. -- Implements a weighted scoring system for realistic, adaptive predictions. - -๐Ÿ”น Concepts used: Comparator functions, dynamic sorting, frequency-based ranking. - -### 8. Frequency Storage -- Files: freq_store.h, freq_store.cpp, frequency.txt -- Keeps track of how often each word is used. -- Updates dynamically after every suggestion selection, making the model โ€œlearnโ€ over time. - -๐Ÿ”น Concepts used: File handling, hash mapping, frequency analysis. - ---- - -## Features -- Insert code keywords or phrases -- Autocomplete suggestions based on prefix -- Suggestions ranked by frequency -- Snippet support (e.g., `fori` โ†’ `for (int i = 0; i < n; i++)`) -- Practical demonstration of Trie + Hash Map + Heap working together - -## Tech Stack Used - -| Category | Technologies / Tools | Description | -|-----------|----------------------|--------------| -| **Language** | C++ (C++17 Standard) | Core implementation of all modules, data structures, and algorithms. | -| **Build System** | GNU Make (Makefile) | Used for compiling multiple source files and linking into a single executable. | -| **Compiler** | GCC / G++ | To compile and build the C++ source files efficiently. | -| **Version Control** | Git + GitHub | For code management, versioning, and collaboration among team members. | -| **Testing Framework** | Custom test files (`tests/`) | Unit testing for core modules like Trie, LRU, and Heap. | -| **Data Storage** | Text files (`data/words.txt`, `data/frequency.txt`) | Stores training words and their frequency for suggestion ranking. | -| **Editor / IDE** | VS Code | Primary development environment for coding, debugging, and project organization. | - ---- - - -## How It Works -1. User enters keywords (e.g., `print`, `printf`, `private`, etc.) -2. Trie stores all words for fast prefix lookup -3. Hash map tracks how often each word is used -4. Heap finds the most frequent matches for a prefix -5. Snippets expand small abbreviations into full code blocks - -## Example Usage -- Type: `pri` -- Suggestions: `print`, `printf`, `private` (ranked) -- Type: `fori` -- Expanded snippet: `for (int i = 0; i < n; i++)` - -## Setup Instructions ---- -### 1. Clone the repository -- git clone https://github.com/maahi271005/Smart-Code-Autocomplete-Engine-DSA-Project -- cd smart_autocomplete - ---- - - -### 2. (Optional) Create and activate virtual environment - -If your project uses Python utilities or scripts (e.g., preprocessing): - -- python3 -m venv dsavenv -- source dsavenv/bin/activate - ---- - -### 3. Install build tools (for Linux/Ubuntu) -- sudo apt update -- sudo apt install build-essential - ---- -### 4. Build the project - -Use the provided Makefile: - -- make clean -- make - - -This will generate the executable: - -- ./smart_autocomplete - ---- -### 5. Run the program -./smart_autocomplete - - -If you encounter GLIBCXX_3.4.32 not found, simply rebuild the project on your machine (make clean && make) to link against your local C++ standard library. - ---- -## Running Tests - -To verify components: - -- g++ tests/heap_test.cpp -o heap_test && ./heap_test -- g++ tests/lru_test.cpp -o lru_test && ./lru_test -- g++ tests/tst_test.cpp -o tst_test && ./tst_test - ---- -## Applications -- Code Editors (VS Code, JetBrains) -- Search Engines -- Chatbots -- AI-assisted development tools - ---- - - -## Contributors -| Name | GitHub | -|------|---------| -| Tanisha Ray | [![GitHub](https://img.shields.io/badge/-@tanisharay-181717?logo=github&style=flat)](https://github.com/coderTanisha22) | -| Maahi Ratanpara | [![GitHub](https://img.shields.io/badge/-@maahiratanpara-181717?logo=github&style=flat)](https://github.com/maahi271005) | -| Anika Sharma | [![GitHub](https://img.shields.io/badge/-@anikasharma-181717?logo=github&style=flat)](https://github.com/Anika438) | -| Akshita Maheshwari | [![GitHub](https://img.shields.io/badge/-@akshitamaheshwari-181717?logo=github&style=flat)](https://github.com/AkshitaM1234) | - - ---- -## Educational Purpose -This project demonstrates the application of DSA in a real-world scenario โ€” showing how core structures like tries, heaps, and caches can combine to form an intelligent system used in everyday developer tools. - - - From b3c59da19365b040d20d8ccd1f0168b8f7fd95a4 Mon Sep 17 00:00:00 2001 From: AkshitaM1234 Date: Sun, 16 Nov 2025 08:58:36 +0530 Subject: [PATCH 33/33] Updated README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8ca517a..8dd6763 100644 --- a/README.md +++ b/README.md @@ -187,6 +187,7 @@ To verify components: --- ## Educational Purpose This project demonstrates the application of DSA in a real-world scenario โ€” showing how core structures like tries, heaps, and caches can combine to form an intelligent system used in everyday developer tools. +//test

b8Nyx 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 literal 0 HcmV?d00001 diff --git a/smart_autocomplete/src/graph.o b/smart_autocomplete/src/graph.o new file mode 100644 index 0000000000000000000000000000000000000000..15bcb84b9c0f45d1d074cc424c78d8d5e2c5b547 GIT binary patch literal 21120 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 l`>0bM&!n^V035x{s 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 O@3-!q8|(U-&i@CCC}n#9 literal 0 HcmV?d00001 diff --git a/smart_autocomplete/src/main.cpp b/smart_autocomplete/src/main.cpp index c363341..ecaedf5 100644 --- a/smart_autocomplete/src/main.cpp +++ b/smart_autocomplete/src/main.cpp @@ -59,13 +59,13 @@ class AutocompleteEngine { public: - AutocompleteEngine() - : cache(50), - freqStore("data/frequencies.txt"), + AutocompleteEngine() + : cache(50), + freqStore("data/frequency.txt"), ranker(&freqStore, &graph), useSubstringSearch(false){ - - loadSeeds("data/seeds.txt"); + + loadSeeds("data/words.txt"); } std::vector> getSuggestions(const std::string& prefix, int k = 5){ diff --git a/smart_autocomplete/src/main.o b/smart_autocomplete/src/main.o new file mode 100644 index 0000000000000000000000000000000000000000..e3ba1d47b8a62d58778fc41b21985e11b7b51002 GIT binary patch literal 69840 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 literal 0 HcmV?d00001 diff --git a/smart_autocomplete/src/minheap.o b/smart_autocomplete/src/minheap.o new file mode 100644 index 0000000000000000000000000000000000000000..2697773e14c3a2402422bab266a317ec52ce9981 GIT binary patch literal 20480 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 AN&o-= literal 0 HcmV?d00001 diff --git a/smart_autocomplete/src/ranker.o b/smart_autocomplete/src/ranker.o new file mode 100644 index 0000000000000000000000000000000000000000..00899be83322660596bb1b86e55e792d87763a2e GIT binary patch literal 9104 zcmd5>eQ+Dcbw3ak2}?2#ie;CP6cg^CEt%Q~LCKQfnK}dsh>Q40aYV`=wOkkmL6IYp zfPsTd$x0guFtO?57prix3uU0diWRMUK)S!j2N zW{0*)`?R3-pnnY>;#-DixorDTufXFhALuuJ$jaS*#y2p2mxu9gA3NUNL?p+${o1q` zFCO<*2st!#i27R@|F3?=|C<%xYhu>t&(hG4e*PpYKHNl&sSEmNPZX|a#h05d=yxBv z_rB?&px#^}GL2aedssQ|WBflZ=qrqXM{r-zeP|NHz4sBz^dUu0`XYBl?u=}W3~cRZ zkG^-Bgz!Cqra@-a|3QoBl>#S(=sFhe^ysCh+#o5J0{g_^cQIT39mbC{9+m10E9GI< zY9stpee!SMCA}H+(Le{YOw7WjY!MS-E#c6*${3E@ToFmKmXX z*+a`F*>Hgs>5eYY$Eh&|8xnd*D?zYB~&bN_)OuuIO$5pFfkVX4f6Q8y;r4zR zWPfaLAboNPR-cS&VvoK|8|>cuBHJSOMgA<3n7*`LGMLKDRs6Llzxm>kdVTUm&`zGz zOMms7`FX@~LF+i!e(^}1UOEVXpN!})n%B+^adYWhWhW5K-`+;uJ}_$fipEMtED`yu zp!M*xjJNaez<0MIHutp8u=2xAtoZH>YyHsmTD-gQe21M2%pnSXCPi=!4J=^)tjRER^IJ1${irTjah9*_*mheiK_=e8==4{ehbD#MCjHbX~!l{ntvD7 zUucLPYy?_oJ{{vHI}xT|?=&Z7Oy{&5D8it-5KuQD#qiRA$iF3ehv%mpNl zJXr2)VXh;Uw-90W{L5XZ$@RszXX537#y&7HdWMx_r`eISZdM*R+R}q$bW_~giB&t#I33D-WdLy@EhWHO8R+4+ z$N8NwxYuVN+LzLWVKw*gRWbhUUTd&An&QQu&GfXs6LY<0wEiH1tt*ye z{|Y#i@%jKEvC!)={@n=n^B1i8<~w-(niw|pdpP9-l?vR6Erob6tOkQO#`uX|YoKAK zmk%^TekbI=J!7;UkGOu#TIUwzpF}dCUT8kTKP(>i^jd3f*v!}XqTyF_?^nK#QN)r< z-+v=zcIU2OdiPOQUcQeV`H8!-R4ir*u7&<`H$rK~lfON3aS9pm2f$*JQ+jC?gvIn1 zaLPmv_W3Y~EZ9I8pW39qIM6UR)XfK6bCnCoGIUN^pfq@&FUF7dTH9`btG2CxDSb_G zY{lX`@YZWF*NL9iZ%1GnY1H?>2v)`i0v>|m{74j@i-o45d@53$^2Du`?l@mr2Y*Gv zQ@IL*21Lk-%093~t!6BJjIZjn_UN;;_Oq2IFuSPL06fYYJ1x^YOEEu7fmL||JTaOg zrXR&DH^JMpWWa1CM6>wjLIybsU!8)lzASw87LAtwgj^*<2KNQgqNDPD1Bd3Y!GDf4 zWBSFRUXJyO2dt&+bh z>T^fu=UuD&mT21UCHt>BN-?l!c)U%%u(JsO7V^B8uN?yj!e{4HA_D2$s0 ze`sxRZLsZ@^###w|6=>PVB5M@2@59VMvV>^64KqfRm1L^A`DqZl$Ek}?cSofCVZ~d z%Nsq1kc^0DjU4mKny@z6zE;-MNBE1fo!&98??7GD+f;OSd)pFAy-ffjUe6uN?)NrD zL{nP_vI)VVX=$oAd3}!&&jEMD>o3;V^?(huonB9DSwuCFnn3!T4xxUle^4OAIZ`*-}h<9VLG3xDe57jO8Zj5-_BHk8|fV5MHjVx2Pxpwy%!tzGC z1Z%66{e9>J2tj!Yx=7uk`XF5D>-HY1b0^)4DrEG%UZsq+I{F z`%74!#S4}M^uL;4Y}9Q_x?;$!d9J_+aEq_6D~H^gTGh+P+?swlfF6Cj)j8yLRYq{k3j&v@V%4W61 zpZ2cbBD$dv!CTV#!l;>#ZMmc0TyNi1fM^cHrnHw439#8d~ zp-^f#nM;_t*G?IC9 zAhRPq4)W-MDU)BP#f`&-Ov!D(x^r_J9& z&>}A12#KAUO#W)c_HPg-f9#>tE<$H;v~TB_y)Y`?Kc>(O*`aymyssv71}}wtXu}ns zj`1(RN7!^bd&7yu_VI$)s|d64Ol~YWniw(Dxg<73ybomkVcIs?%>(4r@rTItezUzT zkuZmInTHai>GAF6a3Y<{WpaIYq@1z#$>awudRH))9tvXO6BCJSI+xFkCr3xjU5TA- zqx^pXhrM!sKd_LvCAFP2tQ3F3#13zB__u)LHLV9n+qvq2}APV7h zw^H~TNl#`_Q{gRD_-2ezSyzQO*s!)<*46fItARh_SjX!@qx6nA{OR=DlO!00hUxC3 z=%1E2RW~?rH7~;b4!j+0Dug@bEBgq)4v&(55870!ar_h}3gI{5QS`fP_zM3&>cE|P zB`p3sX;vN7e%U5_rAq`t-&j->?iW4#8_J2dNqmp2iC%_`K%RHtWP>WpTy~4-n-qxJ z@4#v7upDc3;L7JTWIAveGJ<2T11I`RHV5;&#?0gcS`gPZyB=1pTzWJaG}9BN7932P zNiFz5KCdAmOEmaN+}Y^h4dybWZ*looks)KBzyV3_3I#*|r#pT}rt6$%VSIFCM|yOZ z7TlgnCDIeAbkfFodYRW+yotqgrot@4?XD`X>aDr$L zQ*uUmTke0dpXk(gtjaZi2#iRaxe8tFnJT@6QIX>84&FE8A(>apPv@AhpOT!TJSX+1 z9T+vM?GFJH_E+&UX<(b=C;Mrh)%HIDjP$E>3QbY2mkUC79%oVZt2%}TwHvDRw@LoP zYN4f&>iKtod9nFV$obzd`Dp(1Ye)6`-&gu2ovKdBpN`b;NeZu;rgm28R|K*?E%iSm z`=p=lG1dBKrT%KUcgde-{z&qx3gnlS>%d5uyGp=5$*=S&rs}>Ie2e*SA6;TmRGicN z$@hw1;h&fKRh$qHm4i}0#kaGl`Ky{qekTpJpO^gAxZ+dz-QaIT2i0Zeo08vu8M-ik z1!txHYW~xbpMHaO7G=M}c7Rd%PXV%iO8W1YvQPe_d!yo4{v+|#x`}02{-D?<69dsx mNLKSxPOi=!fV8LNMmbfLhpNmGxqmVKgL30OS~a<9{{I2^je$G> literal 0 HcmV?d00001 diff --git a/smart_autocomplete/src/stack.o b/smart_autocomplete/src/stack.o new file mode 100644 index 0000000000000000000000000000000000000000..8f06cdf58ba66a7783f1ab25840048bc8c73c5f3 GIT binary patch literal 11088 zcmdT}4{%$>nSYY(L``yfqNLz7ln82iG9ent319~}ELpNw@k=nV4dve{iY)&*WZ9J^ z$A+|IkmJegi@-DV4;?zw>D|zSYiGz^?|`;5;3OrvW7Tuf-3`abKlI%V4|DeXM4K#w@V+vW>QIA;OA3 z_1<$|_}-&B`u3m9pE~#1X=eT=bn+~X&deB|;~1+RRWCFD)i8f!_Xxe`zQ>!>eSHCa z!z8zO`fdHn_h9FFX1%zNl-%^-u0qS~bEx*|8=?S8?WbAk&bOFZbUm_v;56DgnH%bI_302&HMUN{4viT>i_fLN(>j#({p%zVslP7?>So}Zz@ERq=d zra9~M^BjC^pWQk^t>#ntuQBTouU8nmFnQ0>W%CPn_jECGsp)z;=rU8F!mrxCBFWVyGT?wcw_qo_!xf6}f<)nP>T;i}kP~ zbF7w}Hrp{jKR?Y%4|X#1cealOr@o;@Q$63x7Tw;3`cj{_HZilS1*q-qt{|$y)%xVE z7^B?Xv)2NoxMAkeS$IJ!k0;yTQ~St6&277+%fG=_TzGwoR$8BY62Bkn_@^$A5hA{L zWa*RNCguO@*z9Ow7M4i(zT*RZzm-NSwgwj*Z|{RezZ;l77Q@~^@I5nMFLOWkjq3l8 zEAsWp#!Acaxw7S09{)XjMXZ!|4QMt&qCE8;e{)ElMVdW2vjD`o2Ium_l#LEC{n ze&nqGJo%q|h~OyB!Z9aU^UM0A4^e2Xsb{4e0yyV3S24?gQ1h%l`3~Q?+n~{?uVdEU zdM`7#p@Ky)AMmo`43yBGu@|)&N#~~7f54I=p5>PMf0Az~N&6R)w7&l_Cjzth(VU*MGlMlF; z$%X8pPhLW!SgpubPbz;o?lJ{7&z7D&La#M>NSwiNHKBi}9=;!4= zJ#$#Uq_t^w6Otq49lq8^sofDS&bdeL3jg;^jlO>~Mv3j8(I@AT*Ysx{2O@RoaO#ui z(2kii5&gNS<6>XLjIOvyF*17!xSj7pCtrXt&IEgpkrQXH^*&8E?5 z&%M;GYR(k+;S9S1xZ)TB*4AcDeo znyevF5k+qML%O_?}yTq>qQ2NSBst_PemaUT35E zykX8Uz4fS3%D9{c4R!Wreg7Na*jBpvw`8kn)UPqjbB0+{&!=M`sF7dR#LZ)Igs#7m zDRG249e-}a@iy7R&3FdNWJD2zJ8s>K?Xl%08ilLgj+D5ar$EaU$E~f-K6B&dz4d