From 4950eb4f0d926d04ff52cc9e7a7ef00d3facf14b Mon Sep 17 00:00:00 2001 From: sorokinad Date: Sat, 23 May 2026 13:36:25 +0300 Subject: [PATCH] [1][2] Data Structures Lab and Lab for finding a way out of the maze --- SorokinAD/[1]lab_1/MP_BST.py | 252 ++ SorokinAD/[1]lab_1/MP_hash-table.py | 456 ++ SorokinAD/[1]lab_1/MP_linked_list.py | 241 ++ SorokinAD/[1]lab_1/MP_names.py | 34 + SorokinAD/[1]lab_1/MP_records.py | 73 + SorokinAD/[1]lab_1/graphs_lab.xlsx | Bin 0 -> 51429 bytes SorokinAD/[1]lab_1/names.txt | 5000 ++++++++++++++++++++++ SorokinAD/[1]lab_1/report.docx | Bin 0 -> 47451 bytes SorokinAD/[1]lab_1/results.csv | Bin 0 -> 13530 bytes SorokinAD/[2]lab_2/benchmark.py | 143 + SorokinAD/[2]lab_2/benchmark_results.csv | 13 + SorokinAD/[2]lab_2/builders.py | 60 + SorokinAD/[2]lab_2/cell.py | 13 + SorokinAD/[2]lab_2/commands.py | 91 + SorokinAD/[2]lab_2/main.py | 164 + SorokinAD/[2]lab_2/maze.py | 33 + SorokinAD/[2]lab_2/mazes/medium.txt | 11 + SorokinAD/[2]lab_2/mazes/no_exit.txt | 5 + SorokinAD/[2]lab_2/mazes/open.txt | 10 + SorokinAD/[2]lab_2/mazes/small.txt | 5 + SorokinAD/[2]lab_2/otchet.docx | Bin 0 -> 141222 bytes SorokinAD/[2]lab_2/run_benchmark.py | 20 + SorokinAD/[2]lab_2/solver.py | 86 + SorokinAD/[2]lab_2/strategies.py | 218 + SorokinAD/[2]lab_2/visualization.py | 56 + 25 files changed, 6984 insertions(+) create mode 100644 SorokinAD/[1]lab_1/MP_BST.py create mode 100644 SorokinAD/[1]lab_1/MP_hash-table.py create mode 100644 SorokinAD/[1]lab_1/MP_linked_list.py create mode 100644 SorokinAD/[1]lab_1/MP_names.py create mode 100644 SorokinAD/[1]lab_1/MP_records.py create mode 100644 SorokinAD/[1]lab_1/graphs_lab.xlsx create mode 100644 SorokinAD/[1]lab_1/names.txt create mode 100644 SorokinAD/[1]lab_1/report.docx create mode 100644 SorokinAD/[1]lab_1/results.csv create mode 100644 SorokinAD/[2]lab_2/benchmark.py create mode 100644 SorokinAD/[2]lab_2/benchmark_results.csv create mode 100644 SorokinAD/[2]lab_2/builders.py create mode 100644 SorokinAD/[2]lab_2/cell.py create mode 100644 SorokinAD/[2]lab_2/commands.py create mode 100644 SorokinAD/[2]lab_2/main.py create mode 100644 SorokinAD/[2]lab_2/maze.py create mode 100644 SorokinAD/[2]lab_2/mazes/medium.txt create mode 100644 SorokinAD/[2]lab_2/mazes/no_exit.txt create mode 100644 SorokinAD/[2]lab_2/mazes/open.txt create mode 100644 SorokinAD/[2]lab_2/mazes/small.txt create mode 100644 SorokinAD/[2]lab_2/otchet.docx create mode 100644 SorokinAD/[2]lab_2/run_benchmark.py create mode 100644 SorokinAD/[2]lab_2/solver.py create mode 100644 SorokinAD/[2]lab_2/strategies.py create mode 100644 SorokinAD/[2]lab_2/visualization.py diff --git a/SorokinAD/[1]lab_1/MP_BST.py b/SorokinAD/[1]lab_1/MP_BST.py new file mode 100644 index 0000000..b187bbe --- /dev/null +++ b/SorokinAD/[1]lab_1/MP_BST.py @@ -0,0 +1,252 @@ +from MP_records import records +import random as rd +import time +import csv +import codecs +import sys + +sys.setrecursionlimit(15000) + + +# ---------- Binary Search Tree ---------- +# Узел: +# { +# "name": name, +# "phone": phone, +# "left": None, +# "right": None +# } + + +def bst_insert(root, name, phone): + """ + Вставляет новую запись или обновляет телефон по имени. + Возвращает корень дерева. + """ + if root is None: + return { + "name": name, + "phone": phone, + "left": None, + "right": None + } + + if name == root["name"]: + root["phone"] = phone + + elif name < root["name"]: + root["left"] = bst_insert(root["left"], name, phone) + + else: + root["right"] = bst_insert(root["right"], name, phone) + + return root + + +def bst_find(root, name): + """ + Поиск телефона по имени. + """ + if root is None: + return None + + if name == root["name"]: + return root["phone"] + + if name < root["name"]: + return bst_find(root["left"], name) + + return bst_find(root["right"], name) + + +def bst_find_min(node): + """ + Возвращает узел с минимальным именем. + """ + current = node + + while current["left"] is not None: + current = current["left"] + + return current + + +def bst_delete(root, name): + """ + Удаляет запись по имени. + Возвращает новый корень дерева. + """ + if root is None: + return None + + if name < root["name"]: + root["left"] = bst_delete(root["left"], name) + + elif name > root["name"]: + root["right"] = bst_delete(root["right"], name) + + else: + # Узел без левого потомка + if root["left"] is None: + return root["right"] + + # Узел без правого потомка + if root["right"] is None: + return root["left"] + + # Узел с двумя потомками + successor = bst_find_min(root["right"]) + + root["name"] = successor["name"] + root["phone"] = successor["phone"] + + root["right"] = bst_delete(root["right"], successor["name"]) + + return root + + +def bst_inorder(root, result): + """ + Центрированный обход дерева. + """ + if root is None: + return + + bst_inorder(root["left"], result) + + result.append((root["name"], root["phone"])) + + bst_inorder(root["right"], result) + + +def bst_list_all(root): + """ + Возвращает список записей в отсортированном порядке. + """ + result = [] + bst_inorder(root, result) + return result + + +# ---------- Benchmark helpers ---------- + +def build_bst(records_list): + root = None + + for name, phone in records_list: + root = bst_insert(root, name, phone) + + return root + + +def measure_bst(records_list, mode_name, repeats=5): + rows = [] + + insertion_times = [] + finding_times = [] + deletion_times = [] + + for run_number in range(1, repeats + 1): + data = records_list[:] + + if mode_name == "случайный": + rd.shuffle(data) + + # А. Вставка + root = None + + start = time.perf_counter() + + for name, phone in data: + root = bst_insert(root, name, phone) + + end = time.perf_counter() + + insertion_time = end - start + insertion_times.append(insertion_time) + + # Б. Поиск + existing_names = [name for name, phone in rd.sample(data, 100)] + missing_names = [f"None_{i}" for i in range(10)] + + search_names = existing_names + missing_names + rd.shuffle(search_names) + + start = time.perf_counter() + + for name in search_names: + bst_find(root, name) + + end = time.perf_counter() + + finding_time = end - start + finding_times.append(finding_time) + + # В. Удаление + delete_names = rd.sample(existing_names, 50) + + start = time.perf_counter() + + for name in delete_names: + root = bst_delete(root, name) + + end = time.perf_counter() + + deletion_time = end - start + deletion_times.append(deletion_time) + + rows.append(["BinarySearchTree", mode_name, "вставка", run_number, insertion_time]) + rows.append(["BinarySearchTree", mode_name, "поиск", run_number, finding_time]) + rows.append(["BinarySearchTree", mode_name, "удаление", run_number, deletion_time]) + + rows.append(["BinarySearchTree", mode_name, "вставка", "среднее", sum(insertion_times) / repeats]) + rows.append(["BinarySearchTree", mode_name, "поиск", "среднее", sum(finding_times) / repeats]) + rows.append(["BinarySearchTree", mode_name, "удаление", "среднее", sum(deletion_times) / repeats]) + + return rows + + +def save_results(rows, filename="results.csv"): + with codecs.open(filename, "a+", "utf-16") as file: + writer = csv.writer(file) + writer.writerows(rows) + + +def run_shuffled(records_shuffled): + rows = measure_bst(records_shuffled, "случайный") + save_results(rows) + return rows + + +def run_sorted(records_sorted): + rows = measure_bst(records_sorted, "отсортированный") + save_results(rows) + return rows + + +# ---------- Manual tests ---------- + +def test(): + root = None + + root = bst_insert(root, "Ivan", "111") + root = bst_insert(root, "Anna", "222") + root = bst_insert(root, "Petr", "333") + root = bst_insert(root, "Maria", "444") + + print(bst_find(root, "Anna")) # 222 + print(bst_find(root, "Unknown")) # None + + root = bst_insert(root, "Anna", "999") + print(bst_find(root, "Anna")) # 999 + + root = bst_delete(root, "Ivan") + + print(bst_list_all(root)) + + +if __name__ == "__main__": + records_shuffled, records_sorted = records() + + run_shuffled(records_shuffled) + run_sorted(records_sorted) diff --git a/SorokinAD/[1]lab_1/MP_hash-table.py b/SorokinAD/[1]lab_1/MP_hash-table.py new file mode 100644 index 0000000..2484cc3 --- /dev/null +++ b/SorokinAD/[1]lab_1/MP_hash-table.py @@ -0,0 +1,456 @@ +from MP_records import records +import string +import random as rd +import time +import csv +import codecs + +def polynomial_hash(word): + p=11111 + m=(10**9)+9 + hashh=0 + for i in range(len(word)): + hashh+=ord(word[i])*(p**i) + hashh=hashh%m + return hashh + +def hash_to_index(hashh,length): + #print(hashh) + #if len(str(hashh))>4: + #hashh=int(str(hashh)[3:]) + while hashh>length: + hashh=hashh%(length) + return hashh + +def ll_insert(table,name,phone,index): + if table[index]==None: + entry={"name":name,"phone":phone,"next":None} + table[index]=entry + return table + else: + entry={"name":name,"phone":phone,"next":None} + if table[index]["phone"]==phone: + table[index]["name"]=name + return table + if table[index]["next"]==None: + table[index]["next"]=entry + return table + else: + nexxt=table[index]["next"] + if nexxt["phone"]==phone: + nexxt["name"]=name + return table + while nexxt["next"]!=None: + nexxt=nexxt["next"] + if nexxt["phone"]==phone: + nexxt["name"]=name + return table + nexxt["next"]=entry + return table + +def ht_insert(table,name,phone): + index=hash_to_index(polynomial_hash(name), len(table)) + ll_insert(table,name,phone,index) + return table + +def ht_find(table, name): + index=hash_to_index(polynomial_hash(name), len(table)) + if table[index]!=None: + if table[index]["name"]==name: + return table[index]["phone"] + elif table[index]["next"]!=None: + if table[index]["next"]["name"]==name: + return table[index]["next"]["phone"] + else: + nexxt=table[index]["next"] + while nexxt["next"]!=None: + nexxt=nexxt["next"] + if nexxt["name"]==name: + return nexxt["phone"] + return None + +def ht_delete(table,name): + index=hash_to_index(polynomial_hash(name), len(table)) + if len(table)>0: + if table[index]["name"]==name: + if table[index]["next"]!=None: + table[index]=table[index]["next"] + return table + else: + table[index]=None + return table + elif table[index]["next"]!=None: + if table[index]["next"]["name"]==name: + if table[index]["next"]["next"]!=None: + table[index]["next"]=table[index]["next"]["next"] + return table + else: + table[index]["next"]=None + return table + elif table[index]["next"]["next"]!=None: + nexxt1=table[index]["next"] + nexxt2=nexxt1["next"] + if nexxt2["name"]==name: + if nexxt2["next"]!=None: + nexxt1["next"]=nexxt2["next"] + return table + else: + nexxt1["next"]=None + return table + while nexxt2["next"]!=None: + nexxt1=nexxt2 + nexxt2=nexxt1["next"] + if nexxt2["name"]==name: + if nexxt2["next"]!=None: + nexxt1["next"]=nexxt2["next"] + return table + else: + nexxt1["next"]=None + return table + +def bad_sort(names,phones): + names1=[] + phones1=[] + while len(names)>0: + min_=names[0].encode() + ph=phones[0] + for i in range(len(names)): + nm=names[i].encode() + if nm0: + for i in range (0,N-n): + j=i + while j+n(names[j+n].encode()): + t=names[j] + t1=phones[j] + names[j]=names[j+n] + phones[j]=phones[j+n] + names[j+n]=t + phones[j+n]=t1 + j=i + else: + j+=n + n=n//2 + return names,phones + +def ht_listall(table): + names=[] + phones=[] + pointer=0 + while pointer0: + for i in range (0,N-n): + j=i + while j+narr[j+n]: + t=arr[j] + arr[j]=arr[j+n] + arr[j+n]=t + j=i + else: + j+=n + n=n//2 + return arr + +def records(): + phones=[] + first=0 + second=0 + third=0 + fourth=0 + for i in range(10000): + phones.append(str(first)+str(second)+str(third)+str(fourth)) + fourth+=1 + if fourth==10: + third+=1 + fourth=0 + if third==10: + second+=1 + third=0 + if second==10: + first+=1 + second=0 + phones2=phones.copy() + + f=open("names.txt","r") + count=0 + names=[] + while count<5000: + name=f.readline() + names.append(name[:len(name)-1]) + names.append(name[:len(name)-1]) + count+=1 + f.close() + + names_sorted=names.copy() + for i in range(10000): + names_sorted[i]=names_sorted[i].encode() + Shell(names_sorted) + for i in range(10000): + names_sorted[i]=names_sorted[i].decode() + + records_shuffled=[] + records_sorted=[] + count=0 + while count<10000: + name_var=rd.randint(0,len(names)-1) + phone_var=rd.randint(0,len(phones2)-1) + records_shuffled.append((names[name_var],phones[count])) + records_sorted.append((names_sorted[count],phones2[phone_var])) + names.remove(names[name_var]) + phones2.remove(phones2[phone_var]) + count+=1 + + rd.shuffle(records_shuffled) + return records_shuffled, records_sorted +#print(records_shuffled) +#print(records_sorted) + diff --git a/SorokinAD/[1]lab_1/graphs_lab.xlsx b/SorokinAD/[1]lab_1/graphs_lab.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..a68855c6516aded12132fb5bc4223b1ca9a02687 GIT binary patch literal 51429 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 literal 0 HcmV?d00001 diff --git a/SorokinAD/[1]lab_1/names.txt b/SorokinAD/[1]lab_1/names.txt new file mode 100644 index 0000000..4550f85 --- /dev/null +++ b/SorokinAD/[1]lab_1/names.txt @@ -0,0 +1,5000 @@ +Casigu +Cacugi +Sisok +Lanigaruzo +Qoqugenupe +Deyurab +Paji +Gaki +Koto +Pudoyivoc +Xibagov +Bojicoci +Falagoyebo +Qico +Nedazu +Pituvoba +Meko +Gubovizup +Gerol +Fewad +Nuxefi +Xikif +Qagofesiyi +Fezaxovaw +Riyizejo +Pora +Nuhocaka +Fowuduhibi +Sozil +Yade +Hizado +Worule +Sege +Xovebih +Jela +Rawilaye +Bayaninut +Kocomubo +Yakibihoj +Qemih +Xikoyam +Yodu +Kexor +Fakome +Cobex +Gunikone +Kohofuzipo +Keke +Gabufodik +Nonelade +Weleliyo +Guranaloh +Kukumesaz +Ragi +Nimo +Sovec +Zizoqehe +Nujijopud +Dulobogagi +Loquj +Yuwemi +Qehe +Poteluhawa +Lamokud +Dabayatob +Mucelogaji +Bogewuza +Cudon +Mivexoya +Qewumec +Kofipa +Moki +Fuxa +Zozaducoye +Kosalekixa +Qocimelus +Gadebenav +Jihup +Pera +Kubi +Lovequ +Suyuxu +Yipohudik +Sumodig +Dasayacew +Tabe +Cabe +Vegaro +Zaqa +Nolib +Binuginemo +Jiyucozi +Nipiyoy +Nufew +Veto +Yumi +Femekesa +Giyutabo +Cozemizo +Zeqig +Sacen +Mapafox +Pusezaz +Kuwovow +Zadoqay +Zorajaf +Quve +Yesope +Kepakehac +Tunen +Sizagavigo +Qelefa +Yavulayo +Cucuvil +Telaforuxe +Qurazazeji +Cofeno +Puzanizala +Fowa +Nogikehuw +Hosab +Nafere +Qehiba +Hemu +Wesopezu +Hiquyotiza +Fojiwoyave +Duca +Gasoji +Kuxe +Liyefipel +Sujacat +Hatoh +Qasulifuz +Fapaf +Loderina +Wige +Jesa +Cacapaqo +Ticoluqo +Biwopipaq +Qore +Rinire +Podizur +Yevus +Jagaxuzi +Nahoy +Nuwoze +Nuribofon +Rahag +Pehe +Wuyawo +Buxopu +Lidomugati +Rehacov +Tapusa +Nivuyo +Bekuve +Beyequr +Japalaz +Dupowivib +Wokida +Likarixe +Jesi +Zihojeye +Xehibizi +Pofaf +Huwofok +Bilo +Kusicag +Suhu +Biwiyobet +Totun +Zidini +Sosac +Yikaw +Kolan +Yezaxubu +Cebiso +Fetatipu +Cera +Giwunatum +Qusaduwa +Bapejeq +Zotutaji +Sumonubah +Doda +Yohujeqet +Zarogetovi +Jehakohika +Hojicuticu +Davotanoco +Xetenat +Vepamepava +Kuxi +Foqoyilos +Wefup +Kusi +Mopayi +Bifurojomi +Yexa +Qitedu +Doxafe +Xukevuso +Heqawod +Geweke +Moxufeno +Rivunuzore +Huvic +Satuxe +Yomuvanaye +Tutor +Nifa +Wivuxol +Mufohuzax +Babe +Numewaqop +Docadufud +Xujahohe +Honogic +Geliyaco +Pakekahuj +Dute +Benenu +Zaluti +Gufuremoqi +Cawurudu +Zaveco +Dilofal +Daloyuy +Pepuduwape +Gepehiheso +Gotuqeca +Nofo +Heducadudi +Mizu +Hicalu +Paqemugadu +Cucoyijodi +Nutebilura +Deped +Sifuvoz +Welutiful +Gekav +Yelobi +Firapir +Sitocafir +Wegi +Yagodihi +Holijased +Xopixeco +Jaharov +Susujamey +Lapuyam +Hafor +Huhunina +Hewerixo +Yivikoto +Quviye +Jebowalive +Xufejok +Wesunejaso +Leto +Xaxe +Haje +Cuqepeyop +Laxapu +Qetigak +Vuhonal +Siha +Bojagazu +Wisi +Fuwiz +Zicayihux +Ragif +Xinudu +Nokumiyix +Jivihe +Lukuzoj +Fovox +Cowigaruf +Yaxa +Doyiki +Jofe +Hiposec +Zode +Femuqa +Xaruw +Getapoc +Xewif +Calahokido +Xapijixu +Kalonuvaq +Hekopuy +Rayocim +Xeri +Pukiwehite +Yufajo +Rotadeceni +Xizifuvufi +Duvereyuya +Camihized +Dasobajoke +Yeluhejoz +Cajubizo +Pexohu +Nonot +Tanubakaru +Kowoyuq +Qikucuj +Rawuqey +Gukicas +Xusefamof +Sute +Woxaj +Wuxofamepe +Zevuqeza +Damoh +Givilujico +Hudazuduq +Beloqurem +Dopa +Bebas +Buqu +Rohibi +Gadequyipi +Cotecuxil +Vobawaju +Tayojudiz +Sofazucuku +Sexiromuc +Rojux +Xusa +Nuno +Dunil +Dasag +Gibepid +Pifuviv +Yidikiyeze +Gesati +Jilo +Vero +Sonefih +Fujaqevox +Suvaliza +Luri +Togom +Vipa +Gohef +Gihi +Kunez +Hovenep +Hulanihoqa +Fezuruw +Kakozetiw +Pilav +Yecived +Bekera +Kiwaces +Bokez +Helu +Bebex +Perayuxe +Suliriv +Gifu +Kuseso +Hehub +Kuhipaxid +Ruwahequ +Xanu +Takibuwe +Witakelihi +Zuqoxina +Nufedivo +Yusu +Hiwomoduh +Cihopanalu +Gapic +Rurasabuj +Puxa +Gugivajad +Caxatol +Bubuc +Yonenalina +Xojafasodi +Fokavufa +Jafaq +Sexes +Yiwanuse +Lolasali +Yihe +Ciza +Cowewomo +Casexepop +Zolo +Cigat +Dewumenega +Xumoqulepo +Volayizi +Wepunaba +Hore +Jaziho +Soku +Laneh +Zoyizah +Daxira +Yifuqecezu +Zizera +Viremaxe +Roqe +Noduz +Yejol +Bumutijibe +Meterayow +Lowonadiw +Hekejisi +Higobodasi +Hirujusalo +Fukofa +Dihiyizu +Xizumumi +Cobuwafa +Pohibe +Caminizuqi +Sexiyaqe +Vucoyokig +Giqoxinoru +Zakivosoge +Wutok +Hoyedabe +Rupuwi +Rewor +Nuwejuzawo +Bequzazut +Yatoxoq +Qeqar +Potedaqiy +Sedi +Xemonu +Wasocosog +Vutigexuqa +Verecisaw +Fahacelazo +Loqohepoh +Wufe +Qasacaqeh +Cefahuqih +Capoqawit +Besi +Yukuyeraca +Yivucugamu +Wiyesunad +Panotob +Zubu +Zupofepu +Wuweriqir +Ciyatag +Rojusec +Wixevopuk +Liperuj +Yaxayo +Fiquq +Jufihocega +Dojixaguvo +Xijareg +Mininalo +Bomonogi +Xucu +Duya +Sepoxumaho +Sutib +Zepoxal +Civu +Nazoya +Webugare +Pavo +Mizezarit +Hodayuve +Xeqixaqow +Tihuqakiyi +Visuy +Dopug +Vofehiyoz +Lofakatibu +Cekonuki +Tutox +Tugo +Fokifi +Jocidinihe +Qaxa +Fufutemim +Muju +Guxisav +Jefaxefo +Hinetan +Gafeg +Wagucul +Yoqazalo +Laqukid +Suqe +Nubi +Luvu +Sesuf +Cinizokos +Gijaj +Yepu +Siki +Sotofis +Nocojexat +Jobegafaz +Qewine +Citofe +Culuwoza +Nugud +Lanisawid +Mehuhab +Xitoqetik +Jegez +Jura +Qijupi +Hole +Hiqukawora +Wekolixaw +Rahugoy +Miyiwex +Kesoj +Nefoyocico +Qodim +Fosoqi +Gejip +Nuvuleyul +Bixuwe +Rizaluto +Nizu +Zexiw +Bisezec +Xahaqude +Vuyiyosoke +Vevewevusa +Mocic +Duyidoki +Kaluvohow +Givaka +Zidexoduq +Conec +Pigifoni +Sapesih +Lifiquxewu +Dapo +Cucexuga +Pumusigo +Vuduzodici +Fazenez +Lacewenip +Jufixoqi +Muqobopab +Takit +Befabezuv +Rowadutol +Sidipon +Qawipu +Satu +Sihusixic +Rohoruxuti +Vucidu +Xevajani +Fetalosuru +Zocadazol +Xalu +Fikawagit +Joha +Lixonuso +Zozenur +Qaxexivexa +Resotavab +Godiyokeje +Zocijisuv +Yasulid +Vadidupux +Guzatex +Pomefa +Fuqororofe +Pegifusogo +Bubukeq +Mapipiruji +Niyocoxep +Calakikoy +Gere +Vubi +Wusori +Nalexoli +Negat +Hudube +Karen +Politiye +Wefecejom +Bubakec +Kexeju +Sotiliy +Yotahujige +Budatayaxa +Giweki +Doliqusur +Kuvujey +Tesisivo +Yaquril +Begi +Jalaquyul +Jezudohom +Leyi +Vuxetatuce +Cotav +Qosal +Vepover +Yixasut +Birefone +Hase +Poso +Bobedu +Hepagunuc +Vali +Tototoze +Yularux +Cural +Qabosate +Fumibuvuz +Jojuyuture +Dayajuka +Zomerefu +Vejavir +Domuqu +Qake +Tacox +Kuhacu +Miwoxova +Buletodax +Xacel +Moxohopas +Jaka +Tira +Zurige +Rapagimuke +Quya +Xicibupo +Hikuqomew +Davubaboqo +Wakada +Haqipajec +Lahehi +Fegu +Wodeq +Sufix +Xubizar +Hukoxemiqo +Mosadaro +Qece +Bocenamipe +Rixiqife +Vahitus +Yakixav +Huyayina +Mamemuwan +Nuwurud +Xoxiy +Mexadona +Rolebukeq +Katoqeh +Hoberul +Ruyonamupa +Qetidaj +Kizamibugu +Tucob +Biyeci +Jexuwivo +Cofisubeh +Dujohahen +Jedehofuf +Rohated +Guzote +Vucipakari +Zibutumuqo +Tisuz +Qewaba +Darilo +Kete +Jice +Rijewosas +Wajinecaxo +Vofi +Zebogo +Cavuxikuk +Ladovu +Pakez +Gixex +Cadewageb +Puquji +Peli +Qalofu +Sacecu +Dujohoyuw +Dawaye +Ruvobumu +Socupuquza +Juya +Wolahoyir +Wibexituci +Jifotogaco +Suta +Sowaqekito +Gufag +Cajixo +Yosequxulo +Hudelekefe +Deto +Momiy +Qudemajo +Bimakiqoji +Qolu +Yehitu +Burad +Tejotevuno +Huyewif +Femifak +Necisovip +Kevodewovi +Cefosol +Jikegaza +Viyi +Jariy +Hajuwawif +Wogih +Rumokit +Qoxigurix +Wenibewox +Lajoroqiri +Nemilidox +Qiletoceh +Vadiqikixa +Sevudit +Cirazilef +Jupitetu +Yurexaqu +Dezegifop +Soju +Ricamuwa +Talaliyojo +Yubosem +Qugahud +Jujegiyo +Jivonod +Fitituforo +Rajitiva +Bamo +Gunazeru +Degoh +Vufaji +Leyaq +Xivokuc +Gohetilu +Rahuhegu +Yuteyolake +Mada +Musexok +Mezapogad +Bawo +Xubufi +Wohemuva +Jijixaq +Guzigeto +Kujeqoliq +Foqiyikezo +Tomaluba +Qotixigaxu +Qupiseg +Losa +Mubix +Cibogomuc +Yafaz +Tece +Juyevogaq +Rotululeh +Ponorese +Nayuq +Yolorub +Focasini +Rerikari +Neqaxip +Panewusi +Dizi +Hujamuz +Holiyayu +Gelolel +Kuyah +Dacinuy +Lesewot +Zafuhipi +Naxob +Noticinej +Mewesuv +Xedapodo +Todora +Dino +Zarewe +Dale +Gibulupuli +Tirel +Juwofeh +Mebon +Pexocuvuz +Sabizaxum +Qatoray +Sowixuvar +Diwafir +Fudoyajuh +Gufevaj +Qivirukim +Katulunaso +Ruviw +Doco +Kinegiwava +Xiducu +Hipafihoqo +Vibudaxuw +Tabisanowi +Jasuqopuva +Yezuzar +Duvige +Jopicus +Kokokoximu +Socuzupo +Roqazol +Xuzod +Tetugit +Tinohih +Mesedolev +Vidoqibiv +Dibiw +Ferirulebi +Kajusaw +Gibi +Neqi +Fawopo +Suli +Dara +Vidini +Daresipedo +Xogew +Lakag +Cihezixe +Cixo +Nidu +Woguf +Lirudaka +Rixomo +Cesaweb +Juvaqezo +Sige +Verogu +Ziga +Cimu +Cuwitesuyi +Wodebi +Zidi +Vevomomami +Tuge +Vukova +Gaheqop +Nuxas +Bidome +Gaxujiq +Hehabiqol +Pavojejenu +Waqe +Bunevi +Wahopawu +Tutupejawu +Pocoqi +Poqo +Dumine +Kubow +Sasuralum +Kobexo +Suma +Cojesa +Peroq +Zakufa +Cebo +Wega +Savunufik +Sanadu +Cipimub +Zoyojesi +Goza +Fuhug +Roxoneqek +Riyexa +Mogon +Kecasunewi +Kovex +Biboba +Bizojefifa +Hoqoqud +Rodotosix +Jofayukig +Rituy +Yuko +Kefafocu +Bomeluro +Patoyoxit +Caxuxuj +Xakozur +Vobitif +Yogomezon +Xaqe +Havik +Hohoy +Miru +Zujojevu +Seneciv +Mepeken +Kavohufas +Homifovi +Kayiyagap +Labo +Jiwi +Pimer +Yanige +Guwi +Hawinek +Yaduf +Lali +Guquxokup +Kalul +Bikuridezu +Gidosufuv +Tusilo +Latupehal +Cehokudum +Kediv +Zunewozix +Wigotedos +Gukoferip +Kecu +Nicuji +Jopar +Yorulad +Qozeliyuhu +Dizubulose +Qeqeluvu +Lewak +Bocuxeyizi +Mitufur +Gayofu +Dohopuka +Sani +Hifo +Fugejohus +Fipoga +Gugocawima +Lajozuj +Yuboviwo +Qonetuci +Muduqata +Fujadowike +Valumig +Yumivire +Tebiwe +Gozotevug +Cepacapugi +Reju +Tumahodimu +Cugid +Devaheza +Soham +Peja +Peqitominu +Letutuziz +Samey +Hucarejew +Bobuvefu +Vegad +Kokate +Nuvomu +Sotu +Vegemameg +Quzomoces +Dekiwo +Doya +Nojij +Dubuyeqa +Rokemolu +Kumahiyi +Tagozedin +Qagafuvup +Baqogot +Qopuluzewi +Jolohip +Puvaf +Yavaxijew +Vecece +Mapi +Yameloceye +Hexafivibi +Venopigani +Ginotuw +Loteveju +Jolirudad +Yehaqer +Kijedoq +Yudopidix +Banogas +Neherokutu +Woro +Zikowaxa +Vaqumuwaro +Lovo +Rehesoy +Rizicaca +Ziceqeruke +Sevilu +Kabatodas +Tacopuj +Piyenezemi +Gazatoru +Gubeg +Xequlekij +Pociber +Guqulita +Wogem +Hapef +Todewanuj +Kajeduwuba +Maqeceziz +Ticenede +Nemujeb +Yociqeboto +Vuwefiz +Nijiruneri +Suvopine +Dusuvatok +Zediv +Fatow +Necanakupu +Feya +Vayobir +Pocon +Fiviwiwuqu +Pumiwacid +Nowoke +Siruyitoho +Voqudanihu +Baful +Qutaxoya +Redabadecu +Qisuguye +Mejexec +Bikerukume +Nujab +Mazo +Vigibof +Vulodifok +Xefotab +Tipog +Veyicil +Feyesecuf +Piruperi +Zebikif +Xezege +Xapipa +Humeboz +Dewoc +Jabubocoru +Helikeviv +Pusu +Tacidoh +Raxis +Xizij +Davega +Pivonuq +Genivi +Zuloviloto +Tula +Futad +Yaboqi +Vihiruveb +Zunabovod +Qumiwagupo +Weyumiwadi +Qonafixuco +Seketoxo +Rolevew +Gokop +Limiwe +Fuxacex +Rutegul +Zeyi +Godimah +Jejolokul +Zuxulanos +Kirimazoy +Lovarivin +Muqorocif +Kaqal +Gekace +Nihojugez +Nejayuyoso +Wenogo +Fapoway +Bidareruw +Reyen +Yoruvocexa +Jexitosodo +Gayego +Butoci +Wenena +Fatuxixo +Gebakojo +Sogefaf +Nayuj +Rorajiri +Riqoputif +Hovotar +Hona +Dacinil +Wavo +Wivogot +Timedi +Jezunuq +Pijedo +Hetaco +Mixilopuf +Sejoza +Magased +Zuvu +Quriqi +Fewiw +Zelobehiye +Masujo +Fexumopu +Lagih +Gixuso +Nares +Kevipopiv +Jabuwokod +Qugovowu +Fimale +Memusejuv +Ladijefu +Repakosecu +Pevec +Lijo +Robogifid +Gawitay +Tamu +Woqeniju +Siweko +Wakomevob +Jatoneworo +Yetamodic +Gunufif +Wavuvevixo +Sino +Yigap +Zejunuho +Kidiy +Poguv +Fefum +Cape +Kimawiq +Kibak +Vavumalov +Fakacigo +Tahequqibu +Kavuxe +Muzu +Gufezu +Sejulave +Carorez +Waji +Zalixitivo +Dohefuwib +Muqikodu +Daxetu +Jenucizala +Kuken +Rojativudu +Lonih +Soho +Penuzeviha +Kiyituw +Jaci +Diraf +Yameho +Haqebed +Qelejawe +Xocoh +Bupu +Wijahef +Texuvimo +Duyi +Qerob +Yucuqapag +Nuwe +Zijojorus +Xilu +Ripuzala +Jiguga +Yemib +Vivixivodo +Cepup +Xahi +Rofigawu +Tazak +Civuvigosi +Piraxefivo +Zemuj +Cihoduqazo +Viqamiyani +Pebes +Wazoticihe +Yitif +Xosep +Hiconofaxo +Xewukosaf +Jifozib +Qejico +Rileciya +Niyaga +Ziduj +Tedolimo +Mafufufacu +Buqeziqim +Loyaresela +Jehojija +Vavami +Xeloniqi +Doxoregexa +Sivikupo +Nakeyo +Bitibuga +Noha +Nagabaq +Yaqihah +Hubaj +Zixuxix +Dahelijigu +Jaxizal +Vixac +Kunolesam +Qatar +Gemuco +Kecuyijavu +Gawa +Paluku +Qamepit +Tehezumapa +Laqireho +Rageqezor +Puyemazo +Mokexo +Puxo +Ceke +Demiwehuy +Leqiyoveru +Padihumer +Lasemuy +Mekabavos +Hedigamayo +Sore +Ciko +Mibaqu +Nakofu +Fegim +Fotituvan +Qebawo +Giyopiy +Xowogawiwo +Suje +Voyunizir +Rohexisop +Zuzoziwiz +Qaloxoxiz +Hawihid +Vituqizod +Vavuve +Nexe +Vifaboyur +Hebijito +Xuvejocacu +Vuwu +Vole +Payobif +Susehajot +Jesapaqec +Kuwazovo +Tegizuduji +Cozejiqaf +Kopu +Mevasuwa +Yafutobad +Bisaje +Fibehid +Rili +Pudaj +Mawahiz +Locetan +Hoqocey +Huboqaqey +Faletabuc +Feda +Datikec +Betixeteqa +Rage +Yezod +Pezi +Zibelune +Motof +Putuqiz +Cawotika +Toxihucane +Quvim +Wigo +Xetonalisa +Bazonaj +Vava +Qopew +Mucad +Xakusig +Poriti +Kicufefo +Gonihoceto +Covokow +Renupepeh +Paye +Juxa +Voyayide +Lizume +Pevodaweta +Solir +Pisuhuj +Duwasavama +Qoyehedala +Fofanu +Pixotop +Juculikuxe +Sahowoma +Gaboz +Qafecec +Tinoxoharo +Tinub +Muzo +Camaze +Lefayiv +Geribeb +Xufabuka +Wefemopaz +Tafikedefi +Buhovux +Valalev +Xohodif +Torapo +Makoza +Ridoza +Pulacoreg +Ciyefib +Damezak +Foyujaded +Caxogi +Lixaw +Nubovogajo +Yoleweqog +Caxafipi +Zukene +Cezomeda +Pitid +Vilay +Luzunife +Zosewil +Qasujiyube +Sulotizar +Qemeb +Wekixim +Xuru +Haxu +Rijifuziv +Tiki +Haruvize +Pexugul +Fisay +Qotax +Warol +Xeluj +Jodig +Temewotiwi +Casahusut +Cugadi +Moloc +Serid +Lolofaqal +Kago +Muso +Qehux +Mevo +Joyodega +Koyakin +Kuhi +Heturif +Ruyeceqap +Sehahoq +Xamer +Fomunepili +Tobotuvaw +Masahakiwu +Sice +Qumikunaq +Yoyelesot +Pizepas +Gada +Jovefute +Hicimeko +Caqu +Gilekikaw +Xoyak +Luzac +Yibupofoj +Pulanakoce +Zumega +Jefaxo +Bonuf +Xelof +Hujorovi +Lujihacah +Ropokew +Fubovoseko +Dupajerun +Qowem +Gumo +Kafovupara +Wuna +Wareh +Nofasi +Wefovo +Fojisulix +Qoqicafo +Qogo +Xubicir +Veya +Qerup +Vinovimeg +Xibe +Vecan +Kidimuva +Jebahogud +Dosajib +Rojeli +Suveyezoze +Qopobohoha +Yine +Feheteg +Qecujiqu +Qudecuy +Latitegi +Xezogizapo +Xucevakodu +Hewipibila +Dumic +Haripo +Socamanamo +Suqehe +Cesucitel +Jemeculu +Vorivifef +Kuyec +Fanugor +Hoyotefowa +Ticasuwo +Popevu +Vuwo +Budohuba +Vevu +Puvahacazi +Pula +Xasajisabu +Jene +Gagosimade +Xucatih +Sayix +Feqikus +Beda +Gusidaceco +Gubim +Tutijus +Zokahina +Becih +Jasimosu +Yozadiyaq +Qatabuze +Fivoze +Mariwiqebe +Jayivawud +Rutusun +Rusiyefebe +Tuta +Negukecec +Kolakukiw +Miyo +Rukujexara +Ranoru +Tiholuqiz +Rarehof +Dukuzuku +Yuvodafudo +Qaxibewo +Bokosupinu +Ripukuzu +Wuyuzumeqo +Tewodujo +Xixut +Bibuve +Rewucof +Niwaxa +Xehi +Bayey +Dayaser +Pecofone +Vagifot +Jubini +Dedujusim +Nuwasohuko +Senudi +Cizigotobi +Vakazilez +Riviyica +Fahaqa +Ripetinu +Moboqaz +Jusilomi +Hunuhamo +Felovohij +Vicemuzope +Vuher +Juxiyogu +Wirukehi +Dinunu +Sona +Fawu +Dewegi +Kocojexube +Mipaz +Havokixuy +Cahavuvor +Warideni +Bunem +Piwazuxoq +Puromo +Bexevukim +Hizu +Qomomowa +Quvomejad +Gowube +Raru +Jurecih +Lojeza +Vebujes +Pirol +Finanapa +Huxeyasap +Nocirilani +Zugu +Susatik +Fivuje +Cofogi +Susigusa +Raranu +Moturixe +Sexitoc +Folesumet +Gibo +Lijax +Hezegedal +Sujusijer +Fevice +Qorehozexi +Mewem +Henufejup +Lener +Fosibucej +Masebefazo +Sebevo +Lunived +Fibi +Pihel +Tufuxuko +Lekutitamu +Ceyugudo +Qehez +Zideb +Nodohekod +Liludesu +Pusoro +Hehoyemaw +Timipaju +Kuxo +Fabu +Sociweru +Qudozat +Toboz +Nifitayaku +Majajume +Kayo +Ricuj +Jufab +Nelivuqu +Biyi +Yumojut +Wigoti +Juzelewe +Rolomuvone +Lukuhuroze +Lemomedux +Weyemowota +Welof +Hotos +Nima +Sadehi +Tirit +Qumo +Zaluxijufu +Donamaqa +Weyocok +Limuxoju +Xuvahaxar +Wace +Texewe +Lagakudi +Tepoqabo +Xomewoyoge +Cibi +Yipudaja +Jijafej +Pamah +Pofosi +Lokec +Wukihara +Keto +Foxidipoka +Mixeyutosu +Womixavis +Hubayovud +Zejifafogi +Lewebo +Lepajezom +Duhotis +Vukiji +Jatasumaf +Sitejaki +Tesalaq +Gayukukaja +Lilodi +Dorogiyuw +Vora +Samazibot +Vopupije +Mitikuxu +Wuvifoj +Neriqejof +Xife +Voqoyiq +Vozuficay +Hokofuma +Biborivap +Yotonon +Yuyayukur +Selubow +Fini +Wapepese +Jowayaneh +Pahana +Kekufosi +Hozifu +Ficayuv +Capuri +Kufiyu +Tecuxa +Xilakik +Jica +Cahunoj +Fatosic +Woruku +Yozekejar +Zitako +Petu +Diminava +Camuxopu +Qevuhil +Puzavo +Qunini +Siginoyece +Pivip +Poholudibe +Boseguwi +Sojerim +Letaralov +Xoquwe +Moci +Bezisuz +Peqih +Ruba +Huhenuhipi +Xovin +Qafaxima +Zegoqavosi +Bocoyaj +Jupam +Nomomip +Dihutor +Xeyot +Pifoxik +Wuracimo +Hevocine +Masu +Fevit +Ruvuye +Nepoxopo +Veca +Yumakegiki +Zowav +Tizigaka +Tihigano +Suwafuxine +Gadedi +Lufewowey +Cori +Fiyizocu +Quxayov +Vove +Feyemeqolu +Fatoseq +Zame +Wuqa +Popikono +Yedaxok +Roxoyixabi +Cucucik +Leja +Zotumop +Hebum +Sopumohuf +Likihehe +Hiloje +Bepevoh +Jiduyu +Culujebu +Subey +Qileq +Hetasifadi +Mekugu +Culuvek +Naboz +Napiraqaka +Sumob +Govibenu +Guma +Zajofah +Yayugagez +Lokeqayuba +Jabesuba +Nudazejol +Sawa +Tizu +Liyava +Wakasozuyu +Wutahaf +Fuqa +Nayipihu +Seqomemek +Nuqokip +Gehukoreta +Fosepo +Menerunal +Pove +Jaza +Bibix +Quvaxi +Zuravo +Kakita +Goyozefo +Liba +Vofipefodo +Lemikorupe +Giqen +Ceweladiji +Cigogiy +Vajalapaqi +Divece +Latewar +Qazojehoxo +Ziverano +Nuwagujo +Veyisa +Sohed +Recexot +Boyunodeq +Lifaw +Zuviku +Docose +Hita +Dajifoxu +Xitobif +Fupifeluka +Vejuzama +Suwimi +Cufu +Nugamoc +Vowov +Reqo +Fobeyiq +Fiwaco +Felaqacimu +Miyi +Tejo +Xehizoguwo +Fisop +Muhu +Saxoz +Tobuhecene +Hixo +Qohohavoy +Ragurotix +Hewux +Domus +Hozajale +Sozereyole +Vedibija +Jirugexer +Xabijul +Badabadok +Goxibipa +Subuzi +Foveyi +Roqusema +Katuze +Kifupofalu +Nohawu +Qipoviyak +Bigexiteq +Xihoci +Xexifeve +Tuyif +Dugizuwuba +Zisogobog +Zoyikumo +Ciri +Yebohini +Demic +Xelamuj +Razeto +Wezu +Qani +Volenicuy +Hifadagoya +Bagagupod +Levuvipup +Yenipuvuh +Qodacigoya +Zakaqelazo +Gimuli +Demaxok +Dipehiw +Nuli +Sexu +Jipepufe +Dojeyok +Vuvuyokol +Himofewiq +Pujetad +Qemiveyara +Kebiwayak +Zinajuyuzo +Gebihu +Sudalap +Newi +Bovovamir +Vuwen +Tifoyep +Yogitosade +Petazoru +Bosonol +Jupucot +Zisubese +Yufoqab +Sokejuhuwu +Zeruy +Yotu +Racaf +Mekobox +Jadev +Giteq +Nimin +Caxuje +Fexe +Tojogidir +Xebak +Turuciy +Zelocef +Hibu +Linutukezi +Weyanoquje +Bamowi +Yogave +Wecogud +Veheroxej +Muyorisu +Woced +Cudewepira +Qukaveboh +Huye +Vuji +Kayiberil +Novawi +Cute +Niyodunene +Zameber +Xupocah +Navodoq +Cuvu +Vupipeya +Volocuc +Yikitif +Zojubuhiy +Kufanoj +Diretu +Yaxirap +Xemuy +Hagevive +Kelirasu +Yekuni +Qiven +Rozuze +Jukerufi +Yexogih +Fekijoga +Duxamenuf +Mohepixuze +Furumar +Yutejivo +Nebaguj +Xuwucic +Wegax +Liledesus +Dorikew +Nejakimo +Hokayayu +Pipijunuy +Tegecac +Lohuq +Pemuq +Wifo +Noteloga +Peyulul +Tumiyuruzu +Vipiwe +Yonukozu +Cuququzase +Pesiqag +Biveqof +Vekid +Vepiy +Cuzemuy +Fipesim +Yazihi +Cuqos +Pequzugiko +Jutisuli +Qupedabu +Gizumas +Hepoqib +Jukewugo +Cazuwi +Xotayefizu +Suhuqi +Zewoxif +Degi +Heqay +Peropac +Huvavix +Huqe +Tuye +Jike +Cavage +Ruku +Qumaq +Cefuza +Qaqaj +Daviceguho +Fabazetus +Qejuquqope +Qevojaqore +Suyazuga +Wapeq +Yikuken +Kabiyoqob +Yuyeqok +Kazev +Gexi +Kahuceze +Haset +Qajicif +Yepom +Zabobizah +Penu +Paju +Qejij +Pucumu +Janubuwiv +Mubuq +Bababeni +Luruce +Leweho +Xuse +Zidosuyaj +Zowifojeqi +Bociy +Ciwuze +Gacabal +Higikami +Xodiyu +Gezo +Sixome +Jeqebulusi +Micapedi +Miqod +Hopilehom +Terem +Wahaxuduri +Kexobamum +Kuxofiyayu +Tita +Taguvusuwa +Lafi +Diqi +Likanaza +Bakitipowo +Yicak +Qepezad +Fuxu +Weyoqujeso +Futi +Funuja +Gesezag +Bokocupex +Baseyet +Wusexojaj +Xujikiya +Giqugetac +Koye +Dijujujed +Kuzeke +Lani +Dowutesado +Jixara +Numudemag +Pukepe +Vesakixi +Kuhatesu +Rofocit +Qubokasir +Qupi +Jipepi +Nagel +Xemupaler +Cohavo +Cupavuqela +Wiruye +Fabi +Nisazaki +Zokeko +Quhetexux +Xafiful +Qive +Mawe +Gaqojabata +Benemih +Woqalepus +Zinuqa +Cikavipav +Pakoxamuqu +Kifexi +Hepixowabo +Sifav +Zafe +Yuteledowe +Bijab +Zowosozupo +Jexura +Vevanuvi +Jubinodu +Ronocugoz +Dazotob +Mimidacote +Xutiyifev +Xakujo +Mujiv +Navi +Fawejutup +Zahawomuco +Kobef +Xulabim +Bogaw +Fopa +Movesebu +Wifihuh +Kukawasata +Miluzojom +Nocoyuveki +Kiwa +Buvoraliru +Lunuxi +Fizoqu +Butadaqewo +Jibik +Vosed +Baxatenuno +Mopade +Gohiyaromo +Lobe +Fiheqizuno +Qafiv +Huxiy +Wacufaqar +Jabevaniz +Viha +Yarakiqe +Xaga +Lipabayu +Qovibi +Juvoz +Nixehaq +Xoronopuyi +Noduv +Qoxarob +Vocuji +Ledepoba +Ceqesure +Buri +Suhepadibe +Guko +Luweta +Xujesararu +Kuliwu +Cupa +Vihikecaja +Yupehola +Bohaniyecu +Yuwibic +Zihucoxor +Loqiju +Zegaxax +Fiwahif +Bupo +Xapufuk +Qudalugo +Nolubupe +Vunegagix +Liyabosif +Hoboye +Defife +Puxuhanafe +Negikita +Budogajo +Ridemi +Gobet +Baxaduzuwi +Jeyorajiz +Nara +Baruq +Hijerikuc +Nonom +Palequ +Ziwenog +Yexe +Kifig +Deyumodeju +Cuku +Sibaciw +Cebevi +Turirehiq +Caciq +Nukevi +Quwi +Deliyos +Xazivarur +Hanul +Mixaxaki +Remecah +Nelanim +Menofeka +Wugiho +Gaxa +Qekajade +Pepe +Mosor +Bofaluhade +Widiza +Hedav +Foximegis +Qomilizazi +Zapigera +Hineyofep +Kozehuf +Lomuh +Dohis +Fofaguyut +Mezexunuf +Hobejaw +Xeqeg +Zigodet +Pehasey +Kibaboho +Qopinizok +Kefegi +Jeneza +Vegupi +Gahujoquyo +Lixavereq +Dihoga +Nejij +Giriwuy +Nefa +Holi +Sukoze +Juqe +Noyopeg +Safonos +Funefepid +Fuhecexax +Fobe +Vajefal +Mexotufida +Cilisato +Neqog +Vicatur +Fesaj +Birifuyic +Vazanab +Woxocis +Gisuqoh +Pinoda +Rasufik +Hotonubufe +Loxiqazad +Lenura +Hujepizem +Fesas +Rukevez +Rodewa +Warerug +Sofigecihu +Wikewe +Rigivomuc +Negufexodo +Socohov +Yucevebawo +Qowasosa +Sufujegon +Peso +Wopexorafu +Nosoguyuc +Zanefuro +Tevo +Ligo +Muquwo +Yuqo +Fodigezute +Remajo +Datuwunuf +Hiru +Fukaqecu +Kocosutaq +Xusoquzab +Wezehep +Nicir +Hopozupun +Sepusikima +Giril +Rorul +Dizow +Suru +Poxo +Haludeho +Worata +Yojiv +Kajefar +Codeho +Jejegewaj +Cika +Pasucosih +Xuboporof +Tozuvu +Zokataki +Yupa +Nubemaxoqo +Masumenu +Jafapumug +Fojo +Reqay +Hocu +Jekaliwiw +Duyihewak +Libefi +Tubewac +Xeralihij +Tubeqif +Duwixo +Hegit +Hijin +Qereqali +Ziceyafel +Niqiseqe +Dewoq +Yoguyuc +Hinome +Nadumaq +Fefek +Vucizunaz +Qekogopixe +Budoxej +Gewamuqum +Tozogazoca +Yiyiqegop +Wazesuvoca +Jivoyu +Wewo +Sagute +Bebuvuw +Neyowi +Sobemil +Qoxuf +Pebuv +Vasoman +Jenijowev +Tabo +Cacinefoq +Jekeviki +Mekepug +Gowumodas +Rifanoki +Kecolasu +Xigeveho +Ziwetem +Besomoda +Yajiwadid +Quwijaw +Buzukawuti +Qimepanut +Gafozo +Kuquge +Wumamel +Cedebun +Taje +Penutuci +Qano +Volosev +Pohiqoki +Wudobec +Posoqur +Yofayacix +Liyuzaremu +Yote +Gikinepuwe +Dukolawuh +Koqutu +Wogomelu +Fetitab +Tipuvedo +Megirem +Zuzimu +Mavasaxu +Vaveg +Nemacatobe +Wujupuje +Qumafusek +Zufezi +Savu +Xajopafe +Tupuniluli +Bekazuti +Bidutu +Tetu +Zaniroje +Siyah +Ceyemiga +Lazefadus +Giqu +Cisuquvax +Dovuqodoy +Miwoxalahe +Tokicuta +Rasiqibef +Fewowo +Pepayazec +Xayep +Mifi +Kafukuva +Sodicoto +Qoxihaga +Gehililoya +Nuwewuj +Cegaz +Diros +Gajoximipa +Movixim +Vakurajode +Jadikola +Zakerov +Turifor +Zekamadoj +Fayamasuz +Lofifojax +Pedemahap +Qugevac +Xutakeqiy +Najamomo +Fewude +Yisizi +Yicijuzize +Dudi +Xuvurop +Qilipulu +Naxebo +Hici +Koci +Bihagora +Latirihabe +Piba +Xazanuk +Tonigunaho +Quha +Vuje +Xexe +Vuca +Qoculuceqi +Tisolajiz +Zuhaqoz +Qajaramic +Nuwol +Vuqumene +Zexuwuj +Simagar +Satohuqi +Seza +Zijixipo +Sibag +Buzagasoca +Hume +Bogaduqov +Wuvixife +Qehaculaz +Pedanetoku +Jovonuberi +Lovadujef +Nozo +Camukagi +Dowu +Lesuj +Tugac +Weroza +Vuhifahef +Befixagi +Lulagi +Canu +Zixato +Setid +Zetuy +Rowav +Gozuvagidi +Valopej +Daqoye +Tecaw +Biqoxofeb +Hubuhakiz +Pakeded +Lukun +Bodolisi +Jehake +Tifeqe +Bodijovesi +Rezama +Mibat +Sutep +Xuwot +Mibowadep +Cexaxo +Rifi +Doyujiti +Culod +Mabulujem +Zucixaze +Qutujoreco +Jisuye +Xosixoci +Yezavabe +Goxuh +Melu +Kagixa +Tonotuniq +Gobeju +Kagiveb +Yuroxerusa +Rorabahig +Cezipaduli +Zawihepo +Tobihelo +Zutasari +Tuxuxu +Yuyu +Pulir +Cudutukuji +Gaqusa +Pafobafaz +Nesi +Zudo +Fihulocegi +Refay +Wovora +Borequba +Nivij +Pakixiwefe +Rozox +Zopovezi +Fusaxezudo +Fayacirov +Wisove +Tolojafiya +Mami +Lazax +Horohe +Yamuwek +Jezixeja +Yirudaqas +Yido +Nisab +Wopalorayu +Bujilizud +Zonasuce +Tuxizep +Xajudagudo +Gutizuwu +Boyo +Pajo +Quxoy +Yahir +Reqaraluci +Kesahode +Bekexi +Vayoqi +Hoguz +Borici +Jigoqagofu +Hezehu +Ceheri +Zexamoro +Kufijinuju +Puvoh +Jofuba +Motozama +Remeliro +Nucofoga +Suteyawup +Nedihu +Vasexepaqi +Bohunek +Mamacodah +Hoturolebo +Botigocaw +Juteg +Vurevomebe +Camejivapu +Yaja +Sumahavezo +Hifuqe +Nokav +Wugiyi +Xedopirepu +Xopowurin +Pamit +Xageluga +Qolosikax +Zidabuw +Xumewupuh +Yosa +Mokami +Vovuyo +Pehaxijo +Gowitex +Rapifex +Nifuyutupi +Bero +Bazem +Losived +Pudiru +Quxutowuna +Gujixes +Lihaqehay +Sero +Puguri +Kolawudugo +Qihogofeku +Yazadele +Fekawemude +Qetumu +Kohoceli +Kokozikaku +Hululeliz +Xigewi +Hocutida +Rarey +Hife +Vawococoy +Zilavanuw +Ziqedif +Lusosib +Nanela +Rohi +Gologohep +Cabacu +Wuxuki +Hifel +Woyubeso +Yinidaqu +Gaqufiv +Ziqip +Rakoto +Jaha +Nevis +Bayez +Pigucute +Lana +Caku +Yenasugem +Ziyezivoqu +Zune +Qegekexaz +Pucudusema +Cojito +Gawucunami +Juyofur +Sevaloxil +Cataxu +Jedaqequp +Sejozucon +Vodilar +Wikogawa +Ninoh +Huhetuhex +Zabasozar +Cadefoxoh +Lefo +Mesuyu +Jizeh +Kibemefo +Fejuququ +Baru +Hefuvon +Lutukesi +Nabixo +Dosixevok +Donanan +Fonaled +Lazabuv +Veqiqirate +Ruwi +Javapisi +Quwona +Vihof +Maxaqut +Qoxijove +Sefov +Zosamivof +Dege +Miseh +Qowiqap +Huvuvi +Sabo +Davafa +Bigofodo +Hiyaxuhor +Furu +Raxuc +Tikabawahe +Duxexij +Daceyexo +Kelomiqidu +Qabikayuju +Rerexiyowu +Fowizagu +Wexad +Wufaxu +Vixicakono +Vaqaw +Goxekirata +Fomaxuk +Vojifa +Rapahabivu +Mehamofime +Daputun +Qiluwujoq +Boyureyijo +Nijojuyur +Bonet +Reqizu +Zohep +Govixamo +Duhiq +Juvul +Kawefeka +Jefaj +Joriroku +Cidojexa +Lazove +Gabumalut +Heju +Qufeyinoka +Poyi +Hoconacox +Xovolaviq +Zucu +Semafib +Daxi +Yucemuzija +Fecajejolu +Robe +Bizonuvaxi +Qezo +Waxanosi +Pufaweref +Vinuyewudi +Licifisiwu +Junave +Bojos +Qebefuvux +Lehemevug +Majimopaca +Tavu +Girop +Guquru +Sisemivupe +Cejupimava +Miva +Yaqeleyuho +Yahohi +Lovobexav +Qemohiwufu +Laqazukiyi +Wupaxiqov +Cujasekoj +Xuzorujege +Jipem +Yixuhu +Quyugok +Buniwozi +Cocecoput +Kolokipaci +Rubud +Hutabav +Kahavasife +Jorifogoba +Veqezel +Xuxevuguwi +Milejekac +Natohir +Bogufonoc +Weluwupa +Suvibej +Danenaz +Kahokonu +Qeyugus +Mufibesub +Peluzesacu +Vatexeb +Fewetiguya +Hicaqit +Fukapobo +Javikiv +Poqihefoyi +Pitevakigu +Lecokokom +Qayunir +Ginamef +Yisus +Penosuboli +Worat +Cugubud +Pikim +Nivoci +Zuqor +Pimureb +Faqo +Xazoc +Dunu +Qenebih +Totece +Kudiginas +Mijiv +Dedet +Xudi +Simiwi +Puvuniju +Rure +Kuwucave +Kisa +Cocifasawi +Xelu +Sigomaj +Tahove +Waje +Pilehuru +Zanibatupi +Noxesenug +Nigu +Lonihi +Vikedemafi +Hofepoyoc +Lirocogaf +Kavep +Vevaqaciv +Guhadoyib +Vezavoxov +Zuhuse +Jaratici +Cemihi +Qolaqoweq +Vojeyisej +Vopofobu +Mexa +Zoxe +Yohek +Gacikikaw +Fuhiz +Zexutus +Karom +Vejuzafohe +Jamariwo +Goqugigac +Legivelalo +Facuju +Wofu +Cuteyes +Maguki +Zuyu +Defotil +Vesokus +Zikemedo +Getah +Mecarebuw +Fepabu +Royop +Dobezakole +Mawacab +Rohunakor +Tupul +Jidaci +Xicizen +Paroz +Bopabe +Ciwon +Seni +Seketa +Ceram +Vegedetep +Kewaba +Teranebe +Cuhawape +Wuquto +Delepaw +Loda +Henofis +Kuhisup +Datagenoja +Sagasaqif +Wijakuyu +Salo +Wozixuz +Bivizaji +Kozetus +Rahi +Fano +Zolada +Wakuper +Nihulafunu +Riyub +Vamulu +Yihapise +Zefab +Wujuyuhiv +Lofiwe +Vujonen +Kiyec +Wepato +Xatap +Muxi +Kice +Qikewir +Wubibiz +Tahufoki +Mahipa +Tugazupuja +Jofej +Lubudaje +Gata +Mocuvil +Teyepawid +Roqigacecu +Pinafi +Sulajalak +Qawalogez +Zoyipomoz +Yusuh +Mevarizene +Doyaca +Quzi +Sije +Rilipas +Pomuwa +Sicogotiku +Kokuca +Tuwusawori +Gagexafoke +Zokile +Rifize +Desurid +Pequr +Mine +Nejotumum +Yabeyuna +Jigafur +Qebatov +Pixehumuj +Fifove +Waselabus +Tirod +Jufec +Tovawej +Kotiwuru +Vovenem +Rone +Qivi +Faweqa +Lepoxoc +Posagej +Nezesiqela +Kolahe +Mazamehu +Pipu +Pedadunoka +Jevulemad +Hawan +Divisiw +Doqewohas +Fequxipat +Rareviyu +Lovudu +Zawabe +Kareratob +Loqeredana +Bena +Pupu +Zociw +Vadutavedo +Zawoxu +Repicok +Nozerat +Zuniyejis +Romol +Himifi +Bayofo +Donukayuso +Hapesutu +Vifudiyose +Xoquyajiyu +Migufow +Moyowe +Locigowiku +Tugobewo +Zacupe +Mafuxo +Ruyiciri +Yujenac +Mezu +Rixu +Joreh +Cagomu +Kifaris +Piyoyunipo +Hiwuhupupu +Subaluci +Golofozu +Nawu +Rilabi +Focawot +Zudor +Tuyuhodal +Zivorivu +Gohagezer +Loxahuxacu +Wibuha +Fiwabiloku +Niruxowur +Pijayaf +Lakucoh +Koyiqe +Sotox +Nugozij +Caqoqow +Qelapaho +Juhu +Haki +Mixov +Jakac +Juwuhesah +Datagore +Cuhojitaf +Taja +Qasus +Yizovexuzu +Qiwe +Mofar +Hilunel +Zecavam +Muzehiha +Ralujasuz +Quqeqenonu +Jayipar +Wenupaweti +Qicu +Dikeg +Wolaba +Muqu +Posa +Puvay +Tofolaru +Lidaj +Jowugaj +Suzem +Qesuwo +Teqi +Meyibejem +Sipekipon +Haxifewazi +Yajuvil +Wulocik +Facibon +Jawin +Cuwilaxeqe +Foho +Vakuvixewa +Simal +Gavugole +Tecesohube +Vipudujazo +Tipona +Dudu +Wigah +Cimokulax +Kamop +Mosacila +Cukocive +Yelaj +Culejer +Comij +Gonowuqo +Tonagezok +Kowobupos +Najuv +Panutuqu +Minuf +Yoki +Jijudiro +Gazivicor +Tijeyeceva +Noquyosi +Qaqogobor +Jopu +Hezi +Yaya +Bufuyixuqo +Heyefaxidi +Peterazu +Zoyequci +Fiheriwo +Modo +Yikewizu +Qahuvu +Busuhizej +Seyawequ +Suhemuv +Jajoyavoki +Joxiqedepi +Zinuri +Nuguse +Nadadu +Welihi +Luzage +Zipehayut +Lalenagavo +Puzokezidu +Ranasiz +Wonuxap +Mufovotide +Gugahariri +Doyom +Soloyefofo +Wiriwobof +Refuzarim +Waxuyuya +Daditoc +Fesuji +Xecusiwa +Note +Rapetetopu +Pukicir +Pumubo +Deqodo +Vuvuw +Repukehe +Wayabamofe +Sekuvu +Tijoh +Mesifiha +Yehaf +Cojesam +Wivatuq +Konoqiko +Ratuyuw +Repanaw +Jiwuvo +Hihesidug +Zabufob +Neyenom +Pidowem +Nuruwo +Puweqaha +Wugawofa +Sovuguyub +Duhub +Voyigobuzo +Valane +Valake +Mesatoro +Gaja +Mahihekam +Godagugecu +Javaxa +Piyisofire +Neyebahad +Caxoqup +Wijipafop +Ruvapate +Jacapaxoh +Tafaco +Puyiyub +Bitil +Wowoyezici +Dugel +Becud +Getewuca +Gosabudewe +Beri +Guyizewe +Coniyovehu +Vopicode +Suyigoj +Soyoseqob +Kosolido +Fayuniso +Movocohini +Deco +Loqevugu +Keqirakiwi +Yadunis +Sezivigina +Kodixi +Docov +Jaki +Cagayipad +Kapil +Yenaxe +Lozodici +Hocekuvu +Sajucakum +Visikegu +Vavobogida +Qetenal +Huliyaxe +Gocaci +Ciluhe +Sejeyok +Zesuz +Xeqeca +Lasoguquyu +Covawolaw +Duyaki +Kono +Pelo +Xabi +Sepizivazi +Kukuduje +Vowuloposo +Durutaka +Qevi +Mure +Jewam +Xekini +Dume +Yozeliq +Voqax +Dosuxis +Woge +Zarimapex +Fole +Rerajuh +Rejibuyos +Tevuhu +Cuqagoj +Hilu +Goxonaxi +Jehiyomo +Timotazuju +Kavune +Naresofab +Qefiq +Yomuzed +Matomoy +Jelabuq +Naxanaxod +Betod +Mogekapip +Mifa +Vipazeyoge +Nafekodasu +Zikaxi +Niceqaxuc +Yosodeg +Quziko +Sesejuzoz +Qizu +Jocu +Fejivoga +Fodakowisu +Jijal +Tiruha +Hoyahod +Rawikesaz +Voxuke +Levomurisi +Masogiwiq +Xuxocejo +Kezutudo +Kupilok +Talew +Haci +Kipizoq +Dusi +Kivovuwaze +Nujela +Nacevegi +Fumex +Bojini +Yileku +Jafuzijuya +Buhazunicu +Mituseme +Culi +Muxek +Yitubehifo +Qarob +Folohir +Piquwofe +Kodaxo +Vibe +Qicaha +Yihedidusi +Tadufej +Zayogayesi +Tujuyuwur +Quxejaf +Sadepuxum +Lonadive +Lavafi +Suherix +Murubeq +Tucigabada +Boho +Rirededih +Felepogir +Yaciwijo +Kilosisago +Votuw +Gefopidit +Rusisuru +Tufoji +Jekidujun +Laqav +Nahefehaxe +Fozuwepi +Paxa +Hecemujowe +Galojome +Kugasut +Wafilipof +Pokef +Cacogid +Rigeyefe +Fokepoto +Negif +Tonewolig +Nuqa +Jenah +Hepu +Qiwop +Lagu +Kijuwupev +Hirag +Micedupif +Diqedaqifa +Ninolikit +Sefovuh +Qitepuze +Terewodu +Posikegulu +Fifihax +Tewog +Fomupevaj +Wifuzelilu +Kafasu +Sulec +Yileyik +Liqoluqi +Bisasaf +Guyohuzem +Rowexajiy +Qefiwuc +Hulu +Foleya +Yifew +Wupifuqixi +Yarekafa +Linaqiy +Live +Wekilitiw +Zanolof +Sogecivipo +Gudina +Qide +Wihaz +Jicipuzic +Lutayi +Kuloduk +Fuju +Wozakuxoq +Hacur +Refot +Tojinizej +Sukiyokodu +Nuvatur +Yulu +Cove +Tasix +Veka +Zurupadicu +Jejibocixe +Foyog +Qomuw +Naga +Yunuhok +Vodaxom +Lokuxefava +Dokayijata +Bigogumon +Keyoceqix +Tayu +Gugipijahu +Hicewowe +Cekut +Bufaj +Buda +Mizuxubig +Mujuco +Mamesir +Fepe +Bulix +Gogopesequ +Zilus +Qijoyemode +Xoqej +Gabo +Womo +Punibab +Fedeqekuse +Budi +Xalicanuvu +Tazu +Zixofizax +Juyakatetu +Hahiwa +Qagoxu +Peguvibo +Vuwafiha +Rilisul +Jejuzuru +Pijupetuwi +Zetexajas +Qurukezubi +Jilaviq +Cuzovavazo +Wadedo +Vipikiso +Buvem +Sediladati +Zamomo +Xugi +Mija +Kujuregazi +Keco +Tiveya +Megodisug +Wava +Guzaxaj +Lebufiyipo +Yopequp +Hajib +Dabusuzoyu +Xinul +Wibe +Jiwanopo +Yanoxe +Zecumi +Hewad +Polupi +Qaqoxu +Qezagopevi +Bevoq +Dacosiv +Vana +Bisowetub +Nosopay +Zaco +Zivugot +Tazujol +Roxegu +Zaman +Tomumopi +Mehozi +Nowef +Hoju +Gedi +Nideluruc +Suxaxaxaga +Jumita +Zipobuhad +Tumobujiz +Robo +Mipaha +Honozutohu +Sopo +Hikipe +Foxayogif +Sayutiji +Mujus +Cuqelo +Tunoxino +Zavuvocobu +Xefobogu +Miwew +Xemev +Nabafo +Posuhot +Suhacebolu +Kafasoroj +Secapabug +Bucunarupo +Votovogixo +Potaqeqes +Yihopozi +Poya +Qesa +Poho +Sidiba +Tiwarecagi +Liguvu +Yowugofo +Xato +Joyefeno +Tizec +Lufur +Sapuwetema +Jiko +Golihul +Hufivez +Sobumob +Cusuwuw +Tatufofi +Yagahu +Tetaqu +Bewez +Qutoje +Zolosucir +Xata +Berexevufo +Pogizu +Ninocuy +Yonudiquc +Bitosiged +Kohavayu +Zofoyese +Hevayome +Kibi +Xadoz +Vakijeki +Mozanuxin +Pupidon +Garedud +Tobehi +Yabecok +Zulici +Vetukeq +Xenexo +Rata +Bizir +Kefo +Quvuqa +Hedovaja +Mubekapo +Hugolojedo +Vozi +Fibucunun +Bedafode +Sucohiyico +Cicoqakogi +Nifulow +Xipifahilo +Pika +Fuhiheno +Xununiho +Tudar +Haqiqoro +Gaqibare +Fevikov +Cagi +Yilo +Porih +Boxulujob +Limuc +Weruxas +Rexela +Hubalupij +Heqan +Yatoqoris +Wejuni +Libevir +Bujay +Pubo +Davebov +Kecate +Juzeluyej +Dano +Cuhe +Vuxi +Zugoteqo +Devitudoq +Rexen +Gehuxep +Kiwi +Dosuhup +Mokafo +Metafuteh +Kamixaq +Necuni +Yovejaf +Sajoboli +Coya +Gopode +Kahayof +Fuci +Wulesezod +Nokeleg +Henunapuye +Cumiradup +Qelapit +Haqu +Fitevude +Yoxejeqo +Sofiguzexu +Yunicabij +Yuxorir +Wovuhijovo +Fedudonu +Galiyidid +Yitefol +Luseniza +Pusuq +Jani +Yaheg +Wojecoso +Yaxafuv +Hosigeb +Viyirawu +Johakoz +Nazo +Gawozicuc +Hohi +Veqor +Mapem +Zowukuba +Doreqevu +Kelilix +Weko +Xazocopo +Wamazo +Nifulequ +Tulenuxiso +Gafatase +Qokofe +Teviv +Kedo +Juluc +Webijaxu +Xadis +Nagoyozi +Xugewi +Vuloloro +Mepolat +Mibiwaf +Lizesuyaki +Kege +Sikunul +Hobimu +Feta +Mucolipira +Sagetedumu +Comadediv +Simoyo +Vafosiwuzu +Yebak +Gezeda +Paqaxe +Nuzusip +Hofiyekex +Yemu +Gogija +Gafi +Qolozodam +Fulopaq +Duciyi +Sewij +Kaka +Dapufogacu +Kinacuxar +Tegebuw +Cogake +Hesaxuzuto +Qoginasum +Pedohedi +Lesofa +Lifati +Munaku +Gigeyiwi +Moziqano +Hicomila +Roqorikecu +Dupiquso +Gafe +Lasalomik +Pizu +Bubodiz +Cimerixi +Luta +Fuse +Poqesokocu +Cije +Cifofopu +Yaputojelo +Ceyadom +Hixa +Xupibux +Qoja +Nuwenara +Bivotobupi +Xujo +Peyi +Qored +Lixifiliy +Ticomod +Zocavibu +Komew +Tetuv +Wujik +Qeqomu +Copol +Zafa +Hetuxeq +Yexoyik +Vabasun +Nuzafu +Tamomunilu +Mohemax +Muxa +Paxuxifumo +Heva +Cofilov +Qigeb +Cucuzuwosu +Joruwu +Cuhupitako +Zepore +Sahuroye +Dobo +Lemila +Quzeqocim +Piyuburoxi +Royafeye +Yusipa +Hiyejux +Fohuxoxe +Sovukat +Yumam +Hucikevi +Hohoxizol +Coperuseg +Seba +Mofusafog +Tebif +Vijokid +Kive +Doge +Gasur +Qatuk +Hepi +Depihibiya +Zoxodi +Dequbica +Jisejif +Haxukedovi +Nuba +Xidaz +Webamenaye +Pakefevixi +Nociku +Qupade +Yotobuw +Bilesuduk +Tade +Zufunegede +Deqolac +Fuhute +Pagowaj +Kideqiya +Popusipov +Naluselezo +Tozuceqo +Rocoxo +Parocu +Nowidunas +Jabakeden +Nevad +Belabavuki +Cedotowiqe +Wajag +Marofaz +Fozuf +Zufav +Xuzeq +Misicoqu +Lajuh +Xodu +Xiyum +Jebopawok +Kakoruwepa +Jufoguqesa +Jadopiki +Guxuhi +Puxu +Dotu +Mamitehago +Disiwaqu +Mokayiju +Boqorigaf +Huku +Kunemakune +Feja +Tefexeva +Qusigiguso +Lewojuyi +Cadosodox +Pogas +Boyudu +Kodebuhaf +Tujucu +Luya +Dakinavaxa +Yofedape +Diruvomo +Qiguhasi +Qebemuy +Qovi +Wevixa +Wedu +Wokunixu +Giyifoba +Wikad +Jopiqafal +Jases +Mesahumoh +Gezeqamis +Wice +Jaxileqa +Dojexiret +Niho +Wawim +Ponida +Gasipaqivu +Recolehaw +Bidi +Gixi +Liwa +Jasivuga +Hugutam +Lecadut +Vetu +Yabucuwoxo +Saxeh +Darudege +Sovug +Wawihofi +Koyarevik +Wevijuvo +Qudeguqawo +Refewotito +Yoyemig +Gosoci +Masi +Doru +Vufek +Vekegeb +Cover +Pucobiruri +Nomekesov +Cuyiranuho +Bigoxelur +Fozonafij +Tijur +Bexuwixi +Moyuzuyuxe +Reponulo +Bokeye +Patata +Vajiq +Voliqora +Mopupa +Keguq +Jiretoge +Bohefuqo +Letinu +Neyigami +Kamilivik +Gapojoca +Watuz +Pohigod +Leqasit +Zegurote +Xixani +Behupecoju +Xeciw +Xoxan +Qejedacubi +Texamijir +Rize +Gipesa +Xuqa +Keko +Webiheku +Hoyumufiqo +Womavu +Nojiwidoxa +Piyaxub +Gobofifug +Dobayequlu +Pexisujez +Buke +Naxale +Zuyehef +Civosore +Sezahe +Cubeja +Golulahiri +Mawofuguj +Nixubijovi +Yohidisoz +Budeja +Coxazaxofo +Xezotasuyu +Zuqom +Ruqi +Qavenusogu +Levutawuf +Covoyise +Xoyiq +Vuyenopehe +Xame +Rofavabul +Yeletux +Boqanifif +Huxasiyato +Cewuxam +Qilahayes +Cajif +Tuka +Tuqotobu +Dadehu +Rawonucehe +Haduhubimu +Gozix +Dahij +Zojer +Sakihileso +Ladido +Xofesixesi +Zagigimuda +Heve +Qodugel +Zodem +Dotogiyiyo +Bojigowu +Leme +Losupep +Wihunoc +Xuhumu +Quciyim +Yole +Xazojukat +Yarakure +Navuza +Wipu +Panuwoca +Vixuv +Rexo +Zacijupumu +Pusug +Xatizupere +Roku +Xiraca +Menoko +Gakapasif +Hisunoto +Dizawikosi +Miga +Kidolugase +Dicodo +Xanulizof +Tucihutove +Toqolagazo +Runuyiqoy +Roqok +Biticuvu +Kigekagu +Nokir +Makojota +Hacu +Janonobef +Sicatima +Nexitu +Qoxopas +Dape +Niliwugi +Gelefave +Zigiboli +Rifuyizor +Gizivacaye +Jeqohoy +Taguhe +Lekabijuf +Topexaco +Genar +Radaba +Sacacivo +Nufiqupok +Wucadaxid +Nicoga +Qukob +Lozuq +Vanel +Penoyorapo +Teteniluzu +Sutekawoy +Wuwuhaxo +Nibip +Wevo +Qijinovak +Siyi +Jupowudot +Fuwat +Qodotiqubu +Mezofolo +Qepar +Yudokojera +Vejizom +Verolem +Qobug +Yakopenay +Yecaboku +Javarada +Setadi +Jumiqaw +Sukeqiris +Miyivade +Walayuv +Lafume +Qariratut +Qejefexo +Tihuqopa +Mujibicis +Kabebih +Vodiq +Veqapir +Mineriyo +Tuzuyifi +Tubuned +Wofupef +Sicec +Kadeyusune +Nuze +Vituzuqad +Vukaceyecu +Serowoqut +Zaleweheb +Jukajuvoja +Hocevoz +Qowo +Bakuxukamo +Coziw +Girid +Woticigum +Lefojifoc +Yadobuju +Rume +Pebeduvo +Jikuhakul +Jayosika +Botatize +Kevolo +Tama +Qojude +Dudoyoqan +Xidej +Duhuceg +Gatoxa +Lujigu +Qoqijiy +Vifada +Meqiw +Qewuboh +Soxa +Vodiyo +Saravom +Nuwasozejo +Tusiyevi +Boquwamu +Sixis +Qunofa +Kado +Gamabu +Joliqor +Horup +Padopoy +Kuruzejah +Pofu +Qumim +Culadu +Qehar +Taso +Jabikulox +Levulicolo +Peqizi +Juhazed +Pikikoki +Bahera +Pime +Pomabo +Nazurivoj +Doded +Taca +Vudab +Gadiqev +Zedena +Welixerid +Zigeq +Kologokage +Konadade +Deru +Cukegezun +Hoferoro +Relefafu +Bisewoqiki +Situsagay +Xawopez +Ruyofenace +Rorehocazo +Zenulob +Tavaloj +Jijobab +Duxuqoto +Bugaqa +Hilawutoxe +Husehuduyi +Peqecoxeni +Zapamobo +Qidupija +Cuyehibep +Qoveba +Dutugo +Boyudin +Xuhicide +Yohas +Tofavowike +Bemagif +Zuyum +Miduxaxaf +Masuneqoze +Baheqawi +Yaxagepa +Qugigem +Kisupiy +Pimib +Xirubetuto +Bovawodiv +Lefiqefama +Bihefap +Tiqukezuz +Qotu +Pukediviy +Hobopido +Xomuzudu +Cukigohuz +Leyuquluve +Turuqiyib +Tojuf +Pobiwo +Medat +Vujon +Deruqafe +Tusuzo +Jinob +Qicum +Kabab +Zesadih +Rocacapud +Paxeho +Bogawimu +Fazoketalu +Kevodazux +Vapamomefu +Kode +Majejefole +Kiraj +Wisixaray +Vuyucuk +Pawowane +Terizituk +Cuqudocu +Lalu +Bofopefe +Yawuji +Deqoka +Wobazeno +Geges +Hawumav +Ficimuhosa +Lufuvedaju +Xatukurato +Woyewa +Xesarozip +Jetaw +Wizuduliq +Rejurukide +Hunumihu +Qacezox +Fupofuw +Vikidaxifu +Lati +Tahumanu +Nudel +Povuqifuc +Wameturuzi +Renolumap +Mefu +Giwi +Tosarokih +Voxar +Behe +Bewaja +Zekuqizex +Nikiqeqa +Livi +Yehayehadu +Poyubo +Safaputuqi +Bovu +Kolezu +Yazote +Quhicu +Tejijecuko +Fowemerevo +Sinifawixi +Robuhad +Gowa +Cezam +Qogujok +Piwidevixe +Mixuj +Ruxexemoj +Vuteyugedu +Xeze +Zedufeq +Najucado +Foqoyi +Wosuxaxeku +Joducu +Fopiz +Sufexaxohe +Bebedu +Buhinevu +Moye +Duhuvuqe +Cucijiru +Dixadonow +Jicibusud +Qecegi +Qoseh +Kepeqayoqo +Povosiruki +Lora +Weyuku +Wudevijol +Waricisora +Monuseyufe +Wofubo +Mibiqa +Babufene +Wiziz +Kuxomusu +Xezideco +Yarusa +Gotawi +Palimomis +Ranodates +Qusem +Bolulile +Vereqalusa +Gurarit +Xoqayi +Qetilotige +Lulevukozo +Miwez +Quke +Qifebisura +Saketij +Gijipox +Puxoxo +Pogila +Nuzaran +Doluhud +Vibun +Xaladapozu +Gemeqox +Xonuxa +Rayik +Tirobule +Yexove +Tupofi +Viwoqa +Kabeh +Sono +Lebidoyeze +Mizedofix +Faxi +Piwakowa +Joroyesi +Reyajanu +Qexozotib +Bocisusoz +Haha +Foco +Wumeneco +Fajitanev +Metuq +Qewo +Fagalak +Vihabagam +Xilerasec +Jocegalam +Gugeb +Jiyeqa +Bojiq +Medeqezas +Racoxufes +Jomonuke +Niqagadu +Zaxix +Vofukis +Sosoqamur +Baqutafa +Pobaxiqo +Nopi +Xevi +Vonas +Gupa +Xowey +Caqegu +Refafe +Cubixofe +Mumedozax +Kosejax +Nobubibat +Rofaxeku +Zozavaj +Cozatizop +Qozonil +Zuhiz +Sifeqid +Vicodijov +Wotuzumedo +Berutohu +Gapec +Huzerenozu +Yasefuleq +Johe +Deyaca +Dubacigafe +Qelo +Mofuh +Rimoguzi +Coqeyaq +Xayarurema +Kozilo +Wazaqed +Mixe +Xohoxes +Doqav +Xaxacig +Bacu +Fafema +Newaluxovo +Vixufecoy +Hudelon +Bixocafej +Lexeyuyo +Fubigexabu +Fuwalen +Lepapacac +Yuqa +Hopaf +Vudetun +Yego +Sodenowu +Hosuh +Raqu +Cugixij +Kobotiy +Sekejoh +Gomo +Bunija +Zaqo +Yamoqasa +Pinoku +Sawedayo +Koqape +Jazigebi +Neciligaxo +Zihoka +Belixit +Gerugiza +Govugapuvo +Jaxokal +Royemoro +Mebolihow +Huyucoraqo +Fiqem +Wuroqizum +Xamutac +Fodogelixe +Kojav +Pohegeqiz +Rine +Qezidape +Sacikig +Venu +Qexinaxon +Sorewap +Cisanumixe +Qicepucu +Gocosesimo +Zesoga +Bufeke +Suqon +Hoyuyo +Leyalebe +Nalagoriyo +Nezuvoku +Getiramore +Xaxu +Fumuxisew +Pivatonu +Doqo +Bejaraf +Fuvawo +Qeniwalipi +Fojic +Nimotuseyi +Kasi +Vaga +Kufefiz +Repucefa +Pegar +Maceyine +Bagabafo +Woqiyo +Dokeyo +Niwowe +Hohe +Ritefaqog +Hohiqi +Xapuf +Wuzegecu +Bilikicopu +Boboyibe +Qajoyo +Gesex +Vasikike +Lesajoyibu +Vorafenaf +Qoqopev +Dawar +Zivu +Yejofiz +Rimimaw +Wiyus +Lodidiyuza +Caqe +Jaji +Furolit +Sira +Yodo +Coyefe +Sunecisadu +Zizelago +Heje +Galuxe +Poyinuve +Mesofe +Tilomuweko +Zuwokayodu +Guhukikaha +Zudecekag +Xibiwiq +Wifujugaf +Yizugaqax +Tetay +Tayavozovi +Rewugow +Kiyoz +Luwiyagig +Vebotuhej +Rasunera +Huwisiwah +Roca +Kemarafiwi +Favofibuxi +Dutak +Yige +Gukid +Gala +Mucelib +Bimuvubadu +Nigurih +Tohezepeni +Porogil +Rajogah +Puloziwo +Qewezepi +Xiwobayeg +Zotay +Lumorese +Fuqivo +Hesabez +Madidi +Henunoruw +Liwe +Gihod +Warojanor +Givemike +Venujicun +Xopoc +Rotoy +Mezesarok +Rigoginem +Meloqa +Dojej +Zofiqay +Juvini +Hecep +Risuze +Dodusuk +Fubezo +Fuqixu +Kutov +Duhina +Tilapom +Coluxec +Figeci +Fewen +Zemahase +Zobig +Cikoye +Pipikaga +Larus +Lige +Kixudav +Yexi +Pufojatoq +Yobugasobi +Jovid +Cezoniv +Hivasumod +Yotuf +Lepuzosatu +Qileyegup +Madefayar +Podoqu +Yucuvuc +Lamewac +Luqode +Kijo +Kotejo +Gazo +Wuqey +Sifupe +Lohenolesu +Gemiw +Peyoyed +Yugujod +Cukan +Katukumuku +Fikojo +Hotohohese +Muyoqu +Zamo +Yogami +Qaliletu +Veqejiwecu +Sifog +Datajam +Calatom +Wulina +Xogabipi +Hiwiz +Huyu +Xuvuhadi +Badufuli +Lupoheviba +Puhija +Deziba +Kicevu +Hukijanen +Kekopojuh +Biras +Nipiqo +Kuyokef +Xiga +Wujujevis +Gavehuboy +Kujovuzi +Zasixiv +Dufivaze +Zimejag +Boyas +Neyogika +Cifoh +Genagabaf +Sijuxek +Piqeyek +Muzajute +Xemogit +Qabedefa +Biyicoqime +Ceceyuke +Waguwuyo +Cipayobax +Sejoq +Socomosemi +Tosogote +Hecucolu +Qawisacah +Yeleki +Busi +Kaherime +Fuzolikac +Saxip +Hagoduzito +Gomoqagucu +Gasubamad +Cemewufeq +Kaxuxa +Cutexela +Cakebamebi +Lazogoh +Pufesowo +Behon +Moxofamug +Miwizave +Nakaza +Zofiqi +Zuwocogog +Vitolazida +Fuge +Yadol +Xidekono +Sapoxat +Jexaribe +Leruroxo +Hexeb +Sosev +Pevififo +Qahupoxevi +Doga +Wogubiv +Rapon +Pagarowe +Misi +Lijokujap +Jofufere +Suzipij +Weyiy +Mawib +Fonomayihe +Baxi +Losebuli +Kapikataco +Sorap +Letarof +Hitucik +Buru +Jeseg +Ditubanam +Tuwor +Xotaweq +Vavomuzuyo +Jazudetobi +Sinan +Bajuwi +Luvutuyir +Mahazimewa +Telakewelu +Halebuyu +Liyuyizex +Hibacevoye +Vapiwudit +Kozi +Coyo +Seyar +Tibinila +Cexucefim +Zizupexez +Tosegerem +Tigopici +Nilihac +Kesejij +Tiduzozu +Fulesabeb +Binahagep +Licun +Rodagalebo +Mucu +Riduhowuru +Kara +Nahapa +Karimela +Hoto +Limuwed +Vaquzosez +Xeji +Zubata +Leneyuxe +Yude +Nataxeyoxa +Saji +Jeguraf +Subeliro +Heru +Finale +Fomanaga +Zutuzuwav +Levorifu +Celigoha +Xabopizeva +Pitito +Yijocer +Wisixutuv +Pipohak +Yafopo +Dezisonom +Yuna +Hinuwo +Kitud +Fahatibi +Deya +Wopazaxeme +Moqeyoxoma +Xotazeku +Wizo +Naqetunol +Juperoj +Loxaf +Bexoqerah +Konaq +Kutabogu +Vuyefe +Nusideyiyi +Gukir +Cejogefam +Ledayowak +Piqisib +Roficidu +Cupebufag +Fixepemez +Fovezud +Qazu +Hefemusu +Xezofuja +Zihanaz +Wiqudusi +Waho +Qufude +Kinasa +Cunimice +Cenuseb +Siji +Kiyuvum +Ricisu +Jukigogife +Zaxuwegus +Cajuh +Javedikek +Nahel +Royolex +Kuqizijuja +Bijowimus +Soyoyon +Tuniq +Xizijuboxo +Cuxoguz +Veboyinepu +Miguj +Dubiwareye +Rujeyahipe +Sanita +Darobujaba +Gotikowot +Balon +Cewaduq +Yayonela +Kokak +Cusam +Xifewir +Nuxa +Tejefo +Gavo +Mutoha +Zigef +Gezuxaqun +Cedogeyu +Funaqewuxi +Kumu +Zakebuni +Giriya +Denecet +Biqidim +Dayi +Gebekiw +Kopi +Gadobo +Cifelopaj +Jufe +Fivetin +Tusomamezi +Wuxenij +Pugupoga +Cahi +Hefeqapunu +Zomude +Dijudilaz +Pore +Xifeve +Dodutis +Pepupoqog +Juwujibid +Dovotopifi +Jabenon +Xaxuloy +Wufefatiqi +Nomawe +Dezegeb +Qekuzo +Huxo +Besocago +Hipacu +Nocud +Fajodosuci +Locovinef +Toyu +Pesukunuz +Gulawib +Zagow +Boku +Zurupoyod +Pohukogoy +Zujayifaz +Muvebe +Lucuniw +Pipifaru +Cojeyoyi +Pirupep +Hobicamab +Lojaki +Natocoh +Vutequw +Xenogizogu +Godid +Muyu +Fekuxi +Juqahigu +Banakopa +Tugugizujo +Xatifu +Toyocuc +Viqolotu +Jakiziker +Mavakafo +Poworonon +Lirokes +Niyizune +Kobetaw +Diwigohav +Zahuna +Qasuhebufo +Yeza +Bapejaya +Liroditaku +Dixukudi +Reqigulowo +Yose +Xiluq +Tomikisox +Yiqowi +Ciyahi +Kaye +Deduwuy +Kunoci +Bozok +Gaxenuc +Roduqag +Xusajuwom +Cofenet +Yufovovoqi +Riye +Gosizuhoda +Baruduz +Jojamud +Nidijoj +Vayuka +Bopa +Yitojob +Felemo +Govaniyi +Koqakuqu +Sayuhunuti +Qixenas +Fohiyazi +Diputudu +Jahivu +Sejobewef +Tevuzaceli +Lobodimulo +Tuyofevoq +Jeno +Tonov +Cigiw +Jahetemi +Himiq +Ducifeyalo +Qijubotim +Mabozoxo +Marigufesu +Gadu +Viziqiduf +Fuxibutogo +Gadica +Zowagan +Tuha +Qijo +Payowohe +Quwun +Beku +Kuyatevu +Wofotutebo +Suvobe +Povogufe +Xifox +Hoxu +Leta +Macaguce +Jiripaw +Mokex +Piqog +Migax +Fosatahijo +Savag +Zocihi +Lexoquha +Gibijifuce +Semoza +Kehezirof +Qopusimiq +Lozoti +Yuyicexigo +Newulux +Gaqulo +Ramawosami +Xaqef +Visoqul +Wutidi +Jacukoc +Loxe +Keva +Pidin +Wuxikab +Vayidiyu +Yavoteka +Madayiyaf +Yiwa +Xuno +Nanereru +Filiqi +Nidof +Fuxovel +Lujuw +Xucox +Kujus +Banavode +Wepofo +Wabegewilu +Laxeru +Lewewewa +Toxox +Paqa +Xuviwexovu +Nodus +Zabebe +Kokorigan +Nikono +Saqazarime +Xofi +Vefekufi +Nazugulano +Zojolepup +Zubacigan +Hocopifef +Yasuqomiz +Nacazeneje +Bedaselax +Dovipivit +Lunedol +Soziqaxoz +Muduzo +Hena +Kine +Parobis +Dumu +Serum +Hareluyene +Wohiqo +Qabaku +Jajaxufuge +Yoforavayi +Mukohuj +Cohiki +Gegepu +Bexibi +Maqavozu +Jivelila +Hujuz diff --git a/SorokinAD/[1]lab_1/report.docx b/SorokinAD/[1]lab_1/report.docx new file mode 100644 index 0000000000000000000000000000000000000000..365c71a60cadfb1224c011b5c70bd495dc633609 GIT binary patch literal 47451 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 literal 0 HcmV?d00001 diff --git a/SorokinAD/[1]lab_1/results.csv b/SorokinAD/[1]lab_1/results.csv new file mode 100644 index 0000000000000000000000000000000000000000..017dfddc6315d05b032b017b0bdbb91939a41f34 GIT binary patch literal 13530 zcmd6tPjBQz5XJl86A~9b0LpR#DXiv?J>$tjHrYt9(jx5vzQ6)2fj}Gu`9kU z-q`bbSQXdBEBjncOpe6p~Wlp|4Yiqc|uQB)RPZO<_petTt+tREuTSrl8t*w~|L zVj34wo43^iZ?&zzv|ruY?|M{AL*6!@k3&g$a|C{KW6`kw@*bfwJU)lB%3>Uc(&a71 zBIk7zjaNb0uvXe_rWQo|soT7rev9*vg=Llksx~8%{nyq2+`_#d9 zWGr3gQml28rMk%oXjBC6ghiE%%Tt@V@`1TsgS5P_0^(fTukRYXL1nXU)&Q&In22Hbu4e{c z+O)m4X?SISYkR)5$-6Kn51Gg4zPMEt(F;sVc<;~X5Mo-hKK-3vy3UnS^GsEQ2bhl7 zcpWZi-8tYW}zq5i_of{GzYZV{NnRvk+!+C0z6;7tE@5r{ksEI+nQA^oaTg z9?C~HpVFf7+@`poqUTH~UCdzW2Y%;NQJYzxlrT#jDK=qBhj57Xj9jMNI-0muPY{nT z@ZlHlmRA*0T+K8pMyT`+(KB80YJyKvCJUWG#d=23`kk$TKFw3NjwWtVJrtLBOf(*> zLymtsVpkJVT&jl(_1%Qtu@d3tRNQ@2l{}J3^2q!o!@R~V(@oRkPOEqyvRKD~p$&2^ z(qd{FPy4j59j_OCtDsxa3H&tivqymga>0%T4(@KBnQOSRJ^Y3Jy|Gv9*w4&^ZOlu2 zW3N9iUfMf8|IR*nYoB~(?<)K5ZE+U9v=e~J{@<^fUwa+i*}1@P;V1k1bNJKF3JyCV z!0l0&nvASX9Z9ZG1?C8Q0#-a1gWf|?-Gk75)Fm?uH=P56E{h#5=BWiLkyz$qkVQqI zzUG-}k782k^AX5}&I7b#1_94R2jNPUjq%mpFz~5C^}Go~A6FLJy>C zPx+yi=m2rFws%Y+xpUuzeC!_RI*FxKsq{@*RYqAieapkEXq?jRN78SCB+YY;lLuYj z=QchOOsd!_6597C+N(b%V|rgaX& zYwaPafYgCZsqhpnbqr+2{UI98Z$#x z^pR=}kHUlkS2{#L5BadEsPSBb`N&y}?$@z`VV^k_b)M&(ii$d_zhjh|$@txr;Zy6l zzM9ebp%hAPhPu^#09UMb-=!V+s`(c*@4|=hZ}`y|;MFh9Y1s#Rcj#GJysw34Rj;^? zZj4!KObQ_PGYvIWortJD1yemMcSpyNV`Y2}>OSVr4ePnpk~;=e4>S~y9U*&~RKKUi z+jh_K{uV6LtIP}HN2xq|zLRU2hMKY*5uN3Dg2?P5uk;UlcyRGb(@?uCgAL25k!nek zpSU^6<~jz;@lKcTxZHUVyPQ3fdrq_|#}UstCVw8WcFdr1BFs$4$uZb)45I2tK8sq? zCuBB%CC58naLioQzvm)q?y#Z8od2G7s4gD8g=@0KzPs44LB)Ka&K!L5v8-T8rI zooo6IkyC4*?Q-eU`lqcG@xB**$wZKwg< zJ*!=g!B!Rf-h`@>f8rd-=U`5L_utlpHR?W)HWtgYMFdoYig6s~J%Hm;M;4y(Q) z^tAq?AJN$oD1O?h{T!1L4L?-DhtRwEh-)C@^Z+wjlLY@IW#zj(@weG$VvBvM9(NSk z*IZE!@}Q^eN1viyi*!JdP+@n z>@(?Idzk5XD8E<7G|+B7Kljl~p|nDDT=ESr_tx+@dCbfhlH*s-#* Te>JKPx-rfNK2wLVBG&UCfNqi& literal 0 HcmV?d00001 diff --git a/SorokinAD/[2]lab_2/benchmark.py b/SorokinAD/[2]lab_2/benchmark.py new file mode 100644 index 0000000..e07311c --- /dev/null +++ b/SorokinAD/[2]lab_2/benchmark.py @@ -0,0 +1,143 @@ +import csv +import os + +from builders import TextFileMazeBuilder + +from solver import MazeSolver + +from strategies import ( + BFSStrategy, + DFSStrategy, + AStarStrategy +) + + +# ========================================================= +# Benchmark +# ========================================================= + +class BenchmarkRunner: + + def __init__(self): + + self.strategies = [ + ("BFS", BFSStrategy()), + ("DFS", DFSStrategy()), + ("A*", AStarStrategy()), + ] + + # ===================================================== + # Run benchmark + # ===================================================== + + def run( + self, + maze_files: list[str], + runs_per_test: int = 5 + ): + + results = [] + + builder = TextFileMazeBuilder() + + for maze_file in maze_files: + + print() + print(f"Testing: {maze_file}") + + maze = builder.build_from_file( + maze_file + ) + + for strategy_name, strategy in self.strategies: + + total_time = 0 + total_visited = 0 + total_path_length = 0 + + for _ in range(runs_per_test): + + solver = MazeSolver( + maze, + strategy + ) + + path, stats = solver.solve() + + total_time += stats.time_ms + total_visited += stats.visited_cells + total_path_length += stats.path_length + + avg_time = ( + total_time / runs_per_test + ) + + avg_visited = ( + total_visited / runs_per_test + ) + + avg_path_length = ( + total_path_length / runs_per_test + ) + + result = { + "maze": maze_file, + "strategy": strategy_name, + "time_ms": round(avg_time, 3), + "visited_cells": int(avg_visited), + "path_length": int(avg_path_length), + } + + results.append(result) + + print( + f"{strategy_name}: " + f"time={avg_time:.3f} ms, " + f"visited={avg_visited:.0f}, " + f"path={avg_path_length:.0f}" + ) + + self.save_to_csv(results) + + # ===================================================== + # Save CSV + # ===================================================== + + @staticmethod + def save_to_csv(results): + + base_dir = os.path.dirname(__file__) + + csv_path = os.path.join( + base_dir, + "benchmark_results.csv" + ) + + with open( + csv_path, + "w", + newline="", + encoding="utf-8" + ) as file: + + writer = csv.DictWriter( + file, + fieldnames=[ + "maze", + "strategy", + "time_ms", + "visited_cells", + "path_length" + ] + ) + + writer.writeheader() + + for row in results: + + writer.writerow(row) + + print() + print( + f"Results saved to: {csv_path}" + ) diff --git a/SorokinAD/[2]lab_2/benchmark_results.csv b/SorokinAD/[2]lab_2/benchmark_results.csv new file mode 100644 index 0000000..642505c --- /dev/null +++ b/SorokinAD/[2]lab_2/benchmark_results.csv @@ -0,0 +1,13 @@ +maze,strategy,time_ms,visited_cells,path_length +mazes/small.txt,BFS,0.034,17,12 +mazes/small.txt,DFS,0.026,13,12 +mazes/small.txt,A*,0.048,17,12 +mazes/open.txt,BFS,0.219,100,19 +mazes/open.txt,DFS,0.135,55,55 +mazes/open.txt,A*,0.334,100,19 +mazes/medium.txt,BFS,0.093,36,0 +mazes/medium.txt,DFS,0.059,36,0 +mazes/medium.txt,A*,0.087,36,0 +mazes/no_exit.txt,BFS,0.008,5,0 +mazes/no_exit.txt,DFS,0.007,5,0 +mazes/no_exit.txt,A*,0.011,5,0 diff --git a/SorokinAD/[2]lab_2/builders.py b/SorokinAD/[2]lab_2/builders.py new file mode 100644 index 0000000..0079bfe --- /dev/null +++ b/SorokinAD/[2]lab_2/builders.py @@ -0,0 +1,60 @@ +from abc import ABC, abstractmethod + +from cell import Cell +from maze import Maze + + +class MazeBuilder(ABC): + + @abstractmethod + def build_from_file(self, filename: str) -> Maze: + pass + + +class TextFileMazeBuilder(MazeBuilder): + + def build_from_file(self, filename: str) -> Maze: + + with open(filename, "r", encoding="utf-8") as file: + lines = [line.rstrip("\n") for line in file] + + cells = [] + + start = None + exit = None + + for y, line in enumerate(lines): + + row = [] + + for x, char in enumerate(line): + + is_wall = char == "#" + is_start = char == "S" + is_exit = char == "E" + + cell = Cell( + x=x, + y=y, + is_wall=is_wall, + is_start=is_start, + is_exit=is_exit + ) + + if is_start: + start = cell + + if is_exit: + exit = cell + + row.append(cell) + + cells.append(row) + + if start is None: + raise ValueError("Старт S не найден") + + if exit is None: + raise ValueError("Выход E не найден") + + return Maze(cells, start, exit) diff --git a/SorokinAD/[2]lab_2/cell.py b/SorokinAD/[2]lab_2/cell.py new file mode 100644 index 0000000..de42d46 --- /dev/null +++ b/SorokinAD/[2]lab_2/cell.py @@ -0,0 +1,13 @@ +from dataclasses import dataclass + + +@dataclass(frozen=True) +class Cell: + x: int + y: int + is_wall: bool = False + is_start: bool = False + is_exit: bool = False + + def is_passable(self) -> bool: + return not self.is_wall \ No newline at end of file diff --git a/SorokinAD/[2]lab_2/commands.py b/SorokinAD/[2]lab_2/commands.py new file mode 100644 index 0000000..2f8618b --- /dev/null +++ b/SorokinAD/[2]lab_2/commands.py @@ -0,0 +1,91 @@ +from abc import ABC, abstractmethod + +from cell import Cell +from maze import Maze + + +class Player: + + def __init__(self, start_cell: Cell): + + self.current_cell = start_cell + + +# ========================================================= +# Command +# ========================================================= + +class Command(ABC): + + @abstractmethod + def execute(self): + pass + + @abstractmethod + def undo(self): + pass + + +# ========================================================= +# MoveCommand +# ========================================================= + +class MoveCommand(Command): + + DIRECTIONS = { + "W": (0, -1), + "S": (0, 1), + "A": (-1, 0), + "D": (1, 0), + } + + def __init__( + self, + player: Player, + maze: Maze, + direction: str + ): + + self.player = player + self.maze = maze + self.direction = direction.upper() + + self.previous_cell = None + + def execute(self): + + if self.direction not in self.DIRECTIONS: + return False + + dx, dy = self.DIRECTIONS[self.direction] + + current = self.player.current_cell + + new_x = current.x + dx + new_y = current.y + dy + + target = self.maze.get_cell( + new_x, + new_y + ) + + if target is None: + return False + + if not target.is_passable(): + return False + + self.previous_cell = current + + self.player.current_cell = target + + return True + + def undo(self): + + if self.previous_cell is not None: + + self.player.current_cell = ( + self.previous_cell + ) + diff --git a/SorokinAD/[2]lab_2/main.py b/SorokinAD/[2]lab_2/main.py new file mode 100644 index 0000000..29f0b0a --- /dev/null +++ b/SorokinAD/[2]lab_2/main.py @@ -0,0 +1,164 @@ +from builders import TextFileMazeBuilder + +from strategies import ( + BFSStrategy, + DFSStrategy, + AStarStrategy +) + +from solver import MazeSolver + +from visualization import ConsoleView + +from commands import ( + Player, + MoveCommand +) + + +def test_strategy(name, strategy, maze): + + print() + print("=" * 40) + + view = ConsoleView() + + solver = MazeSolver( + maze, + strategy + ) + + solver.add_observer(view) + + path, stats = solver.solve() + + print() + print(f"Strategy: {name}") + + print( + f"Time: {stats.time_ms:.3f} ms" + ) + + print( + f"Visited cells: {stats.visited_cells}" + ) + + print( + f"Path length: {stats.path_length}" + ) + + print() + + view.render( + maze, + path + ) + + +# ========================================================= +# Manual mode +# ========================================================= + +def manual_mode(maze): + + print() + print("=" * 40) + print("MANUAL MODE") + print("W/A/S/D - move") + print("U - undo") + print("Q - quit") + + view = ConsoleView() + + player = Player( + maze.start + ) + + history = [] + + while True: + + print() + + view.render( + maze, + current=player.current_cell + ) + + if player.current_cell == maze.exit: + + print() + print("YOU WIN!") + + break + + command_input = input( + "\nCommand: " + ).upper() + + if command_input == "Q": + break + + if command_input == "U": + + if history: + + last_command = history.pop() + + last_command.undo() + + continue + + command = MoveCommand( + player, + maze, + command_input + ) + + success = command.execute() + + if success: + history.append(command) + else: + print("Invalid move") + + +def main(): + + builder = TextFileMazeBuilder() + + maze = builder.build_from_file( + "mazes/small.txt" + ) + + # ===================================== + # Strategies + # ===================================== + + test_strategy( + "BFS", + BFSStrategy(), + maze + ) + + test_strategy( + "DFS", + DFSStrategy(), + maze + ) + + test_strategy( + "A*", + AStarStrategy(), + maze + ) + + # ===================================== + # Manual mode + # ===================================== + + manual_mode(maze) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/SorokinAD/[2]lab_2/maze.py b/SorokinAD/[2]lab_2/maze.py new file mode 100644 index 0000000..51b2856 --- /dev/null +++ b/SorokinAD/[2]lab_2/maze.py @@ -0,0 +1,33 @@ +from cell import Cell + + +class Maze: + def __init__(self, cells: list[list[Cell]], start: Cell, exit: Cell): + self.cells = cells + self.height = len(cells) + self.width = len(cells[0]) if self.height > 0 else 0 + self.start = start + self.exit = exit + + def get_cell(self, x: int, y: int) -> Cell | None: + if 0 <= y < self.height and 0 <= x < self.width: + return self.cells[y][x] + return None + + def get_neighbors(self, cell: Cell) -> list[Cell]: + directions = [ + (0, -1), + (0, 1), + (-1, 0), + (1, 0), + ] + + neighbors = [] + + for dx, dy in directions: + neighbor = self.get_cell(cell.x + dx, cell.y + dy) + + if neighbor is not None and neighbor.is_passable(): + neighbors.append(neighbor) + + return neighbors diff --git a/SorokinAD/[2]lab_2/mazes/medium.txt b/SorokinAD/[2]lab_2/mazes/medium.txt new file mode 100644 index 0000000..84f4d50 --- /dev/null +++ b/SorokinAD/[2]lab_2/mazes/medium.txt @@ -0,0 +1,11 @@ +#################### +#S # # # +### ### ##### ### ## +# # # ## +# ### ### # ##### ## +# # # # # # +# # ##### ##### # # +# # # # # # +# ##### ##### # # # +# # # E# +#################### \ No newline at end of file diff --git a/SorokinAD/[2]lab_2/mazes/no_exit.txt b/SorokinAD/[2]lab_2/mazes/no_exit.txt new file mode 100644 index 0000000..e185318 --- /dev/null +++ b/SorokinAD/[2]lab_2/mazes/no_exit.txt @@ -0,0 +1,5 @@ +########## +#S# #E# +# ### #### +# # # +########## \ No newline at end of file diff --git a/SorokinAD/[2]lab_2/mazes/open.txt b/SorokinAD/[2]lab_2/mazes/open.txt new file mode 100644 index 0000000..dfad92f --- /dev/null +++ b/SorokinAD/[2]lab_2/mazes/open.txt @@ -0,0 +1,10 @@ +S + + + + + + + + + E \ No newline at end of file diff --git a/SorokinAD/[2]lab_2/mazes/small.txt b/SorokinAD/[2]lab_2/mazes/small.txt new file mode 100644 index 0000000..3964120 --- /dev/null +++ b/SorokinAD/[2]lab_2/mazes/small.txt @@ -0,0 +1,5 @@ +########## +#S #E# +# ### ## # +# # # +########## \ No newline at end of file diff --git a/SorokinAD/[2]lab_2/otchet.docx b/SorokinAD/[2]lab_2/otchet.docx new file mode 100644 index 0000000000000000000000000000000000000000..cb1c069943c6d5c513961ed4550df14322bb8001 GIT binary patch literal 141222 zcmeFXg;!Nk+b_E5?(UEVX=x>;ySux)yF*$^x0D<5^kYNoZU7S6w zoIOo6{amd)jM#mh9H~p-VVQ~`u;Bdv`}#k42AbcG+YfSLzrBfiikNL#lJ8(D|2kHZ zY(-}K4X>MZ z+;UWhz4_~}^4r++{XW6_;xxYWJ%0H#a=3o8Jqtx_OHB%YL z(@1NI_3Gd>PiEcVCit{^6`A9?1w)oZSN82ZwB`hjV@?5PIs5K*jMsa%{5l+Ue4jL9 z$SxNyuceAEM!Rq|ua#V)udYmMR+~57dL-oi;KVh)2umH-cYPm;$Tn^4T9uhw?-9v& zOl=5#3+;GjD08Q|Y7ac8@RgiC10PXqlV`z+QikL+BKJfdj*iN2&G(lKh+J{*c!t-H z6U(ODOp)Gvn+q|@ja?v`MzW(v!A5HQZT%AK8PwSGGaN+qe`!?8RMOT{@E2v!hiITt zP28;%642HEw?8;~ zjP)w1A&?~j7zhrS6dxCNOAbpH3oj?YW>6YCdadU{Hj;B{@Z}k1sABD9PTu{dwEX1n zwr|RsnN4*D*aG+s!&(p~{owCrHTfBiL+p#%_UQs+Z;p8A69~OjpU@(DQ%o8kgVsE- zMiG%i;q3F`ktb#ko@$>?o`yI?54}lSBep)Rof@rS^G790&p2HB{OmT+;Sau#doF00 zB~Hxk&bO}EK&y3LMUf`!?fRSie3lS#oFDAaOLjGk!7b&|9K>mBw6;W+jI?54P`Y3| z-{A2?JH)4T4YdXH-(dbrIc$UnUgEz7{kBrU({_KI`DMr)+ZJpB zOOMfWk#?c~`ns_Oo&PSSgEHPbWmedwv|B!c+J$l9q>fS%fUDSfBP1 z^(u{BX1A+^u)zs6RVE+eI_D;uVYWaKFK$atQHb)w}0eveN0& z>a_maqvNl0hwzg$NoaLV^eJ_n$C&MhJ0WM^33DH{(MfJ=@bg}ow6Nic`=Dg{)xYi` zd=eDF3_(pEpc-sV@7!8ByW2IsjW-Nf?o+s7z#7=!+S+Bm^Art~rW8R@VMrcza^Hy* zkzwzjJj-5v^I_E`MZtxSY^#ueP&7p}gzm)~`nnJ~MlqaSLk zs!A5v)R;4wWHPratEfkRb&Z+_YQ1pSx;W&HtLlx8ks_qPtGq(EyFtJal=}R2JKj(P z-2|ud%Ksw!8!aaDi}s$6aUHLOw`yahv*J5(@qUkwzh`P`;H1Q7SoJPQw>PLJ}J zyihD~buF=8DXCx)V|~R~5P?TOrtO6G@a7fyG@OiHy~yNXnWnT!!Hyk3TbKmk@# zRUK1f^>nfMqU%JT+Ktz8)+0C}qLh|3%~H-|RL1^-q`>y>G<+;8)G*Up6;7d8t8%Qw z`F3#kjlP-4aOR&+9ZU!9HDYRt;weFO3^_iLmcf`C>Jcy#*Z0hv*CquL_Ub@Zdy(HD5?2WJ9yQ_ zJy(-=bbMs3vL4*FKVVU=K3dUNLq|Q9X2v45AjV`9A)kvdLd&krL^#Y0I+Fyk74&(VR(Y0ku1unW@rs~P_ z`?X#frT>xrCb-2!+;b{Oki^TVDdf2ElS~J{4M|J!?$-GN`Js8sVd6Zn8^dS%;-oXY z;`SH$u2}cmBxzL?l9^YDpOF$ni7?V4lKZyuX;LD(7*$o_e`w}3q}$M5;DDp|O9Ikpx}OG3`Znq5Mz`<-0h@RhDN zMFy5py4FyYv(SV;@>k}*SB_(|*Is9qwN$PMi_L5sg{9J!h|WJ+FM8`e*Iv9c@u&<4 zFYD-FkoYOBgqih@{ORj_0+ATL?)Y`95@wp}t3iAvxk@>6lx-aiMJ25-US}vZRIXl1 zKPbwz$unUMnKWAsgD3)r9GD0VWg5K3Yr;Cwzg?3X;r(hzcGxUHG1T*vT1hi?dgV&g zQ;ZVMm?Qs^FjJyEyeyzZ)##fMQF8e9-AC3RJ@w_X5TmA`k!k~OHn?3Rt>&M0j6|`E z-E@4y|2(!ovg?qhQQMt8=)Fbhq0WuZ+L4p2QE#_&1;);)yD*(K61xd{@_O8@G3zTrfCCWxcy zSg@l#NUKD@*|@)LMWflg)}<8TAq^qF@(wqv_vrRxt&b7E)Cdd+R9c=S<@pF=w` zjzo<7$Ksg*eF>Mw?JEriuTd7pTwVa4o{F8T+o;M|V7b(MaBbT{DmPhw=Q#?idvMELz8yXBKcD*{v>F8Kn5?l{mZH)0ky z2HleEK1zOU9YgWEmxEg=6c1@GJyY^s>YK>1V6&q$DG*1&IqE;#69~jn;;JP;$Koer zgH7jEH7gZC@}?&W8Blf*kkqHXdqK$A9U3h&1T*V^B^vcQ)i~{b_ZvYTYLrrhVen)# zob9T1-t}}kQoW`xiZpF6f{WNzR!>2oxV3^fro-$0UmiDRVp4<;|8^DhQ?&Bl=$UA@WsUP_&CzS* zGyXFkZ_+QQ5i7{Bp^Fm5j)q+jZ=qfdrwVPYmnU6{VKDD55Rr={ey_{(WMP%KAw{I3 z%g>09&x0)NxbAD+%9sLc>6%hK6O$;vX*28aZpfo+@uoK_os5Xx17_?wAC%FEG<0u&fJH?Ty0!Eb13G0TuWsy1xrvKsZc{l zn3ZfUVr>XYSgX?7!~5L536zfT^b8R_{oZNv%q)n#6Pfy?TXgZBnH2+@+s_EO86zbt zWfFpngoRR`F_P}$i))0h^o87yz)HXSk^OPzgf0m=j2or>Mtt=(UOt{dB@w$+!)U4V zxAlx!Z5TO(YyOIA$|nbJekPd&x`e8#x&f3B!CBY|I7N7U!C!Y@4Y(?LjHV(C+wkxW z77hInlAg!oI@QzPow)j?zoU-FqHn3VZElrIOj}lyXbTmj=xZx4s<{8bMc_YzP)fx6 zo|`8V$>2k|aBWw-cc)0eUwoFw0yZRi^jbo1=U*_kMJ3)+6G=#W3*We$@AU9!e{*+I z!@*X(i75#BmR7kHfd}V+e&#nY|J}F4(GEG(V#bQ0H{!1jo^5T2Kq;3u<(^h5+icpS z;SIBr2fm4i7>T0nsJ7Ia*>Jk<#!;x#xSY&ZT>kag4laAu z$j>PYf}wXPkD{_ZYu)E7R^f zfJdoe=wY-rKS7YU&{tC?&1OPCpOLIqqC^|<*(B&RZh+DgL?GP&j zVMW@wIb{ApL|5e0Ed{S9T%BgpoHsIt8jl*YV<*F53LaEXxJW}Klb*^ z**ib@LPvw713|5l3)@r&^ZZ`ePUOk+7fZHgc;%UbL`sAN7@B(Lt2~W4&%~7MDa|&X zkyTY?OI7-F!+BG@v0SD{ykl<#6x0IH^oV^ejg?<3t}q*p&QT1x4N06TX%N1hu1(Fd zZu^dndB#n>O;EHgxQSxqI1v`f_rn%jLeEcz{iX>Btw=EIon zntGC*%*`})2)p$)XL(3+Bi{5r=|meo-y=7%q*$(FSCd&Ywi1f~w~@&5g`rE*&4af~ z%!Drr`j8}Pqr+`WZ@8Ge5@}Ov^zlX;aT+%7Tb@8Sgr3F^bk;9WZc1b&zPvV={h=?f z`HoJR^>4#wD@U{;uZ*YWbd{{QS#k9f5wyLpK|^h^e(Ytydqi>dbk zZMZr0^m^2Rg2Iio3el~w*AI=f74xMjZ8+Hq$e%fW$!CjveW0vw=43-M{+fkxaf^fh zH`FL?sugJ(M+qrD!DPl5Ztz&JB0wb-eW;1ms!J1ZY;zCcc}>Mmbe(6wq0c9qWAIPh zft-ge{)-Y@!&kXx6B!aOem62C+%b? z1$1A^9aJ5*|7A(SHR$-k5SwY6y_D0) zN=SG!WK^Vja2-lfRG@Z~+(1XAj6lNx%Q~RaiY-2dK&KM&2j>Bv8}5W{WJ`haTb9)b zzEUao)TAH=?AvpEl~0;1Zu7Ip`8p7yNmKG&>Yve--@c)~@BKh-J;8Rmfyo|8=c&>_ zA#NNtZi?`Gu;itKcZNQ3wu2?s`>flUmqJY;-!b?zP~z8j7xOYh4^Rrq54{u1@9N*{ zcw_Eso&OCGejFMjWnUd{bnJ{aruVYUcTGO7qqZOUH(oCESXL@td8=HBI;j(IdJu1J zE2zobxOZQLg}9}D6BS`=(-mhjrT3S7(ovt_{6Q4f^gXa6+}Rcx@KWovFY<@gw_r<9 zkKHggtHYgHos0L<*zP+@27Xk*Ql)97_?+p_1e~_=f84ZG+vM2C_tS8Ue8v-hY%XOd z>XDxR^`Q_+WLq`eQ-@GoERP=3OGkr3z@0^DtUZBw)#jA?WVsywghT54kZQ-fAW{uZ z<7X{p9r2Ic3(Hj_d(k?n=hF+7>u*u*6$?To(!Ak%Ca<38_z(s9?3$)WW@ei{JBZ0? zLnzX$IB@nD?Flcb&&i~_5wZy+=ZnvTxp(1y_AzwpQSmWgsri+3`)7AvkdXXUnjegq zdjBREy~o@49{KUOu2yQ@FOZZxHR`RQU0-tFs!5m)<*%S*^nV|OxKz^KDEQd@!_3*^ zZ*z4GE=Vye_98J(2)-dOnN0ZjsfUrIeJN*KxW~mb)vEh?-e7vDMP%9=E?BObq!7;- zGW5@?gGy+ePqD#Cyo*yDhmmFY7xq_?WvluOvD&WiU+b>Ic7GnNs~{327u4~iYH&yU z0=B56qIaSX+@sjCim)VKg~}tcSX;2NXJiQm-u`~S8FXoYY$f&<|W9FD7Wdnn5(w~EnssWkX3moE`U_E9G1$=thX7F$gB2(mrm<9yy1+5Q>k;dM%j zFm<1l7xNM5tS0|M9cSd{X`RrHNZuq#(EO>8LRgCNdvHAxOqEFvUFKMp0IvpQ2d2Lx zLT{!E!*dc(3o$sGLd)Y{6{intDXE0H!sl<+0qtcqQdR6WHB$Z3WyE{;{Io{nF@tezslf2VJT8`doWjZf!AZOXbqohSEF**J?Va^b+Su zyYtXGRTGVDq0~|-LNku?zzp(&oebsHA+v2b8;0aqsedL{7()~Hc^{J03{Q`DeH7(0 z5#e|+ti{Qpv?EGw#i_hX-&XuLGDZibx{$2i0gOAVV*`Y92GOEmo!`}Q;oGoPVXjaWq7>&%FSf%5RjB}$w#mCjef zJcRS_=ORx~<3FK^jPTAI73co8G6qc8v=fgO<{6xbmHXDXPu9fEL79vz< zdqLMrW-~rD>#snR&p$vlkp77p!b@O%=?Wzwhzo(uSt}F?5?x*q zsQ$PQ#K~s)FiOM)tjgw~A`TmqUz|+gC$WRXefE-B%N0Cwioap=Pqeo^^vty1_WeUD zZ?gUzbIf72$e}aa&z13fNku|f;6_4l8ew_!x)j^@goKpHh4U#Lx$NsF7OBWu zRXs_pv-seG=<9wrp1ZYO1ALqz(M2rv~bo-=!50;8sdv4OG>l(uA=Ve-2+Z2)9NKx0onocOP^)dSsgm!Q!S`> zUSuQvYAX4nBH3)3{|tY=G9c(r>^UWXs@qMvy1C3@wSmJsGFARDHnaG)3egHq!|5t2 z&$#<3x>Mb1FsMhU!d)K6=m)M+>b~Vq{ido{)j!?qdiLJ!cx zU%+0}mKc#chh`Wvl~#0!_pcA<=@ELx9!@5yEtjJP=>Dvr)$pTQS;vz&0$8FC=M!$3G{|RA{bEv5DAy0#MAip{eT4#?( zDZy}%ez5kwK8JG7GEAFrTCo$IO3@DC0{{5=MJPSITA_3)cS8ooskLL;70nkC7^JOn zf1Rn5ZyuVcy$P$7QFXIf=wU%iMCt4qZnU^22Za_o^PXA_@EnCae*_9_?8rN}Jr!~s zbPTB!a)^fn{~4{${ArXfkhW~Nu5YF{`w-Ib=rJ7jmAs5xlSMebddyIX$ziQ#VU4A< zGblvfqA_n8j~1Q&_}GK(5})P%qZF2VYJ@(*SX`NqvnnFNsO~V`p2&3={PZm%!-mur zNSnpqPPNA85%P?z{%XBtmqzT%KePIY1!;Nx4)II<`{vnIUsTHQUESEc*<>$E-m7T> z{F$I>p1@A$3{@9eg1w=$PR&Y4Jze~LAltjRfcg4QChztdrS%?2$`7+Ej&n{>T2Agn zoKmv-NmuhTzuM;!8+-itS#8}CQhI*Vxl!TG_KC#0{WSYW|6<$}F1-ov_X#cZQtvDF3`@Pu9M7gx2$Rcb>gPrzFqwX< zj6Wg`{ex_XLx`Bc>? zrIn}%51WS8hy9wtX((HYoo`K%v*^R#+~p!+_WEPW$4IRIkM4JGF2)jq#z#^Qi@tNS z`6nUNzw!&>9FN`)wK`s3S+7!MJq_#Lz`n}4oXo$ zj4ElHwk2kB8)32p*2)$>8j%P(=jFR`naqT+Fds`hOCUOU=ib(sjNcunFk3X|@bg#C zN`A4_Iv42MxY@y(ROFL)eND-3`JC$abCtuLX6q*Mb$xSAwABkWiG_oq@LPl3p0SmpeB_v z3Pt9D{6=>t)xG5KUt=|-QT;X(W86E4Il!>W;V>=bz{`f&ZFxlJMXvb}q%MD9Mz9l= zZ_(=MZ~xz^dOtCIr3<(EwUaRCA!)NMFN&CCnDE7(TvBq8BN+y{wdHPguVAL5H3d+ro~Bh^EA;7`i0 zbF_t1uk}y=UVEc0pqn5wUC6>Qy=~nThv;v0=jQ+IbMXjj5hFMT#t~J~{db`k@E# zIWhiw#k)ID#NBpMnp7QFmBA4Dc563zM}y!8*O$-suhxp{Df-`ce}K(YgxRa=Y-A>E zzTy435YaZyOg1n7hkoK9rG0Px=tlIIFQ(9(9qSHdNqa`OoNT-@9#r*#)P!lbLFne~RaQ2rVUe(Yt{@UfIP7n3dL+}C(UD$<4Ivq#AX*Mq zgXML2F-$XMrE|$^GN$&q$gam`SGikHCBA!?JJ{`4_U2eg&9)%CorhwpjS>EYjMp7VjuV7X~4+uMjX zy~$@LS4(rKY5ntsMSq483M^aYo6h$wH!zT6LXcyPkW3m@Rd; zRwiBP$4X+ah*{Ob(d#X_kyYQ&)AqC~GQr;82rwbV{ijMbmLTD|y*-4qfh<{WIUYuCjTvg@f1EYKe=Y_h zUWv~UjJ3K)Etjz9M!&GCd8cK1OuJo`6U(XHmo*ZJL+>i8^+liUixok)+iJ!`&|n1e zvYV2T)&yphrpXwJ4bKejKY~0dWaeLc)hJB zC@5&CroL}p8+AB-xp7;&m3ET-XDb zKM~SB>f}drv#ZZcZPbU|suB4UKEt%El*+T7D)@Bi`(+s!nuF!)-U(8jq$xMYgJ8FfPAqCgzE{$ZhYN)m=On@ARCa6++8m`Owf+aCIM^2Cb8v zfz4;p(kiA)^ep_$aJt=ZR@zoW?}JblG{cO%<2`fq8<8kPAnGP+XvyAHNh)PU`8Dd5 zlD;rrCEuHim#f>|zAvty-W$3wTu)uSX3y`(@tmtB?BzPOwz^FuQn}1O@j^9oms2zk zxs9&0eT6uk+%LF-mPZyv4> z<-eKkD%EwtFjhU7LGtPIdQ550G7*PUMST&x}en=4GM%CXr>>D?97$R8ffa&#t_-8YRdbM;T zoxGIfJ4nWI4w{$xJww&U!>y$0yz%ozJ(p%x=Jm)^>8xqN$W z9kP!ZOkH>66S02#6Fl zp40Y@Mm3@%h6?VfdqSmY+ikxSS#BxnnGRIj-?MAq``Koj9201ZUeNO@`sV*j?UD+^y(ww5yuFc7DuT+588C4ZBO^?UCaD_U?{JctZB$s%IK&eu|LVSXbY zkd%%5Ny@hSF;~;={V(dqqSu=<{moHpB1DDJ@AwV6VPw7}!^_xVn&aR~*!iQq2#uB> z>&_l}UHsVZ`Yek6n|#nnHkxCp>(QSO@7$Hh|PF9w7W*l}-W;Rw_?5@r>ajMEP7^tMscVWoMN~uF2@O}^oYy>hQIFj^b zAs_q)&V(H_je!=(@uS6Mv|2n2Hw`VVHr<&!12mvT8N zaZO+2qema#_xt%APrVfm*7E_UxPNeEso`Uj`Vq-|guU|;HIy4|rcZ+T53gRvrLQ$H z2Gk}V)3xA@#PK`F2`^1sz|F_^3kK)EUu*Ma+Z@>c{mblR3=P(Q|D1|tIw~pkU$0#_;*0-r&K)FL zPHF({Ct4b!g~j>aHMNlk_M zqW_YehL%=e8$;G{i3vq;6^TmC`0-e0JQqMRR4%CD4-O%KWb8C!jDZzh%jU)%EGyO*WNA& z#yT-Qy<;PKPjYd2IYckznP58Vp*DIsfX1Bz}iCkd$e*+y@-Q4MYF=zL)xcSo5wHSO&rb=`kSJ%uO=0x#r1E3|S>$jDPd z58TgxUV#uv%KveksxKwxzYmWhaqfaC{?F@w_tOtDc|=8%8ydJ2m6h4=I)2!{_3`01 z4mf`GaFNyfm1kNcqN=Kj{#D`dZ_kpJ7VWlS1&;2>u`#(eLv}Z2D9i*Y^W|blN=o`( zPV%2m@Jw(1t|%OyEtMIvl9Fm=TgFonImbIEa(M+-esFN`Q+2hZoE!@6ixm27Qo?bGMa zQcg}UKjh|e_<4GIn)><@D_2}vY~*qb9D7@Mdg5286iRDp5rE|tp~RAqkf6>QH{&Fp z`Tjlp@&2Z?rUnBK4-eFrq_cDFtvc2Cmh0x()}VmLFLZr+~ z+tA}ll&|Brw#?j?l}7g5i^1g7^*#v&Ki_YdT=CJe!{t&@Dn$?2b&!G0(G!jOG&KRCE`B{4M> z2UOUAC3pX^cY*?Fq){YrAy7r+!rtf{y${^$A>Nl^Mt%m>w5mNtOwsa z@$&PVw47LPpZl6N=tegDsIKdYCo&0i8@oLz&oUk$bLk4hV^lUZGux`_vW^*q={8O- zE~Wu^F}UR#cydmPlgeQ+>X9#yubi#OK#YzEez>~6HuLnWlm1c&aaq=nnAwB$Mv${B+p}6;)J9ySpFL`oOt^)=g$$xzNziICB(< zsi;iUJ$T%O@`*`F2Rx=<$Hd2@zI*qs4_uQyOR`v13?OTMpOTW&00u8DZAT07g(0JK zDGn$u&fLi}UlC#wlK!i!<~BuLj$vC~Q2m3ZoM0Zr4ZSteW$9E|GDfGShW}k3ssZfF z%Of|FPhWGEadF{T_dl$u{`Zpr6@kxrHMXpb4s34%j5fdi^W*ID5-$rE+Sar&gJEFN zwt(_C6$=S@rl(0B-0B0X3YzoCTllj!>y`f_y%&FOf4_L(?N$sJL-?9=j3R@iudhIS ze0;sxAY$3aj}p~CXsM|oV`F1rR@(k(oX5o;sH2101oIB+vAEpR*%{g{S)RWYm6VEm zd#SuTDL`vLr-&FGj8ox{v$uOYd9`-Uza0vUIp$iqWyK z(BLYn#aS|FnVC^co-VS^cc`9;LvDORVw7_Ef{s@G09cnK@3;zZ3JIY$Eu*)tU?dEM z$Hk$5)#3Op)w1kp>*O@_@F244%nwHQ>(?(%QPGe&?-o#`2iN|f_t5HI@$(bitocy& z{QFV2y%j?>Z1Q|E(l$TfRlD4KR>^|Z6s?eD|)a>FG20YLFVmWopfC)i=6er zA!A_?)$+f7o%r+=3e5j()FGai))RCIJHZEeD| zw6w@h4ltt!r>7%*eGo;4bWX8U`SKZCURgOgaR~|7@Q8@0Lm&o@HhQU`eFw&0^uzwV z#w7@ijNe(x)RY>KF#yzHkg6BAv=DOVpu4%b0n!f+1&aWn@?B!$*3oj4t580;=;*g^ z6586CXXKEgx!*HCf1*b8L*k^uOG;?z=;=YPlvGur5+=ND^Y}PxoAUmBB&bbLf$x%% zwr|gOZo$eSgHgoBBCm!#Kl+~aBV~!ijO>JgGL(@)0@!8tMSsh?Gb(I+ES-^ymlqz8 z1GqxqzVL>4U|`qTQ~R1T5IwwneCGD{_G33?s!Z5~gbZCV?(K%Y>!75e@M>-j3&AEM zL(5T&US8HK-jM^P!_JP$s{L8a(z49;gydfZm=4Xj6fpDO5CBOs%++|>7 zJn!6i#3W)j>;t8SkBXqKp>aM)^@PpE#Rb}RV4mYtVu&cYu3o?y9R)>PT^$#k5Ooe6 zx`_#ukdV+D4Vx68_9TkM?Ch9JN=vgm7XYn*FHpvV&aG%BHHYHI z;ek5i>G{+tK!kG1kxx@g3q`mlIx^Dq_~(}y`!6YDmQdKEpm=Lz!#H8xm1O4-xP3lxb2Z7TK4ml)Pfeq#Yus!S;v8Bu^_tNlwG{#W_7yT1?k z=+PXR!FRw2%?K|F`IAmlA zS67|@^iUTMkB^5MEJmQc2&h|mX||}g784LE6wtsmdV728bHnC-f6aC2iGvD=jt){U zFR#K|TU*;cu+pHppoP?KhzTkHkhi9$=H_VX3xR;YY*U4z9P>Wj-sWazFsMP0U$>dcr_~n?m`SSu(^c=7dLnKen9}H&2+&KzyMVpofshh zL1S53S@nZS2FxLpkBNbS0hj|U#^~6X-UT_JIsm>vl?{f$A-NtcacS!4>#r>adS({ zcK6LX^m?i$CdmL|LBBy2xy@9bxRDWszJUQvhJ0#TT6leZeZqPUM|7tH4$kc4uK!W( zDoSd_po0yg3VKCS00jIAgCMQvHg}|`z@$sp7dGY1TaUq=i z{4rQ>ZXwX-`#o0?bsq2I$j`|M0T2(ATx4V{>~7(i4* z6aP$Xe7uCAAvsX9QL56w^K^bSCO=y`_6AC48%&~r?-_Lxm1q)FL0c?`g~0$=GGjZW zz{;7l24jTIGXP9Lxsv|=La1nH&=p)X385HCqL8$(c)`HHpsK6O6v?kkeuIUMzNr%O z4=;&aFdWD*aH03_-;32~TLAWimb~8u-J9D@IM8uh;Hm>tW=>8{oTQ1MkmFuPUQ)>!Ga>lE-aKWGFnT!Y3}SK1AH&5q|{xdfavP;lJ;WTv*xgG=NvhK-Nez` zo3OOBbifELeJm0nC6HBUuK+#I&CP-S=s1{oZjCK$jo8_Kd*aAP*3sE{4g_aWNeQff zx3R#qL4_tu7Qnfov`#wRBii_+Bxx{GfP0|!tE#L2BQ9l<$oqG9=>YG7(zl;7q}LXyUoLz_>h)^|^xpz81T`A7i;GCfBN3aMrn`H4Gy(#*X{U$sKwUFs z$dB$_aLltf@{+o3e?@tCy6J^VbfEt?&wYWKi@J{dtbJ&;Qumq?OIk+8?O=xHVKL;9 z2#D{f!Y|t;LlvE!oeeGNbco9oWy64QG zbUZVB30pCVR3p0l72W0Z4%= z=nBU;1IRm1iHP!ufL6tXNfG-nIr>|z(lmKpg?G#$nUrmdT?M1giGG* z0K$=EDk4}$kWk#-`hq|eb!ccvqBR*v4&{nLD4bxmB=`{;q?!2b5j^aOKD~I_qI!Z+ zd3}xl^XE_CNdVJEc^xj8ovwH5?7;yZr=_EVFE1}2ot*66_I3hwYB7?u1*DCHD?^4n z4h2ObP(trBGimAR-}+(=u@Ry{9U>@rK$$>p+VYZ?m6w|V%4A|=!xsvku;%IL=r{w| zXLND;%N%$DAibDaSqI|@SXDJOBb%FfizDKJx~_e5N-6?E8ifILuu#C#LmiEEQ@<%^ zQALGJ_RnLh)|Dvc8{^>MU?wIeF-J!>z>HzgDKu!s)YH?0;;bf1)Ux9+Q28G|d@$wC z!N$f8efJLCakcHd(V}y8)zD0_2*@eGo*Y5H6$akB00a%X|BGV53G`h`3O49Qv&Vne zvMMSuy}hC$35QaYK;8lb&CbaYS5!m?R07@)9t>7e!gxCDeL`~qO+IpBYTvXxv%DNP z7=wid6IWPBg^P#R;C-xbwhVuIczkj)T=@K8V`l$j<8e@ULH`ieK3J`syBh?7g*N zB?Kb`N&vbXf`TLt3!j1NN^_;4EvZhN`%*jTS@Zk1-TdNWX?ZyUh#z2JVEW7l>a?q) zgjx2d@+ASEL8Y>G_13vB0GJ|87AQ0TU%vGL@KS1ODyV^>53d}c>-6vtXlY~f0;tT# z$H)3*$AOsZDy?c@GO_XTp^Lb?yGzZ%fdvczcvF-i`^d~p%8VX96%_|MakKtQPzF%& zkB&wJ;1BxdXtf=$)BAV;_`9h6k?jZ9(-TwhnLxpYN)+pI8;v&!Q2hjU+mai_Cr~7z zW{NZs@%;Q884V2tYcU|=18!A0UkD*<93fFUVs&*@;iCgsD3qEiFn6E>03p0}b>%E6 zDcSVyC*nGd||f{3Ln$KXbe!dQqIoo z0AI~`Nw++OvJ@BXflL9O1`q@c1e9;vVQr`D{c&q)TN^O~0s?fvv$pt%F@y;SK$n8( zWZ?F;ZH5~I0yGn})Pru;V!k*mmVEkz3>2!YynM$W8mx-{(hd45i`==B2Zx7)=Q|^2 zP0K~>8(0|0l#G&%#;h@GrZ-eh3H2w3VI?Bt)lAAk zp@^p-E87PQLOrP1Pe1GdzCkt6OtIw5;WZ#&-FA0+@6+|f zD4;165O07{qUy)Z8=wdXJ`)HP5OWRqzcw>7OJT2#n_F8;Y_gdyDK3TqDJ-~=r4BFF zla51nGsWDL6bK+@V5C8+!N$f$4J;~nmxLHYL9Ld$IxH{%K&k-GgN}jGzvte+M(1%oKieY~(lro9z&L5L5FjEU z0l60Y@1MUJm+5IfUcwM<;0&NUDQRiiSFZ?2NJs`=aB`~Niv9J@g7N_AFVnc3M{Sp@}2 zeSOmHot>y_8!$h>?77~anE{)nTeCpFZ;bLqKM|xR;M0v~W2(mYB!Ha(pJB?E3qs8l zkOsaqXhEis07wPJSzTRX{F0XvYtH=OIv_!UfQ|z|1?7N@470s&8Bn_n+678cpFgv~ zBOrifGPSlw6v{toToVD^0<9qJI^#qFR_&sqA_$Pg3JcEAK%;uvlG`jW(C}aaD7v=* z!HXwdJH;0{2BV91_T?-uSe!H_-%{4k=Zs3?%BB>>leo3XXC z>t9;R=A?8NAkWUu4jtSIHFq0~28N5?qO+)o8kjv~;m+vjXj)J{hYK|k00BV*f&6oG z6YM820PF)6AvS|mr=+Wk{O;}!nwF}m;Q;OhG>rtT17LC>fB_?k6{}JM3~b#97XEv( zmH?&!9uaZCxz)nb5*})7pyC@$HZ(>3JLHuB=5=Oqk=6D5$+ z0fh$pZn~pd*>Q3qF7DKUAqw~ zjRN~ZV8KA84?4B3MLVsun5}hq0r(6D;XCMPXej*ir~bs$6zcvu6W}+%Oar7MfGK|e z{tX=YlOokTfE=I%IoVGB(HpJio7vhT1C|(&h^VQl0U$Ea%zr92X2~7L5eJy}>({S_ zKZMhPD!%&NMU&i$Cdkc=D<>y6(7_IN2!Nah(a3wwr1O)!-x%!Zh!ORA5x`-OSxNvq z3{8@O`7t71=>}n$fcq{oSo%%9qYJ|18g^@t--B#C`OQCM#0c^1+Ft8PQaVOP$wqNO1OQNYR#sLZ6(uChrv!Hc z#N9av@=)jIK&bh#q9Sa_?sR#18CY-=cRY4rE&GBvA9!ulm;>Opna4&0xcPU2n z34LCYk&z98IRw4{pyKBKehi>SAly(K@Fu6GKtW5gWJoZi_nS8qb$1*2a)AAcsKN?G zh6s?Ng7D{^^bWl!7SNnve+*0;vXP>c)FNESjv>;zmrvK0bYP&!_qjP>_%Q+49kIOP z;)1D|V|KhD2C+_*1PpKzU}(^gySr`E9qe{I-HwQEFEv;Un0q!3z1`~aC~Xkf4+su6 z*1g#`U&qYXs89y!zEbuSpiy=+Cn~mR5jZ%w0iPiZrsk0y9R0-ZHC^p$0+;SGZiXg>p%iU;|bD9D01oRf50vQ@*jHZx>q{vS)~B~fZ7M9*0pmD7+hdu ziJXV8udX&LD+&hsBaou(Zh(G?9~z4776+X)0Q?$#F)ZPTH!#Ft=Lny#=}eizp3ksu?|YvE zpb`$`+2Aw4twS?oAUe1}APepq=(4SkIv@`S4-b!YFmuZ*HCna8PuQVpT?rb~{ksF) z6%_7O*_~B3*48lcl^ItxuMs_%nVDmglA=Mv1R@4t2A~Oa0-EjfO7A0C&-3Fc2g%{n zfsCkxhDLh*R2sOk!7bg3ZaKomR&-?K%}D{;juWskU_qHIv&5y)D4-(n>Xnx5;#Es3 zAINC{jR3h1%_;2dtLj_g0lduGN`Wmta!e$92M0AREvPy$Jy#aDw4?)js|~@A{!k4> z^_gm8Ejx&Y0WTFdH{*je6Zcn4fMC9|FME?mA7kqH9#j|k`rg|73kACl z0Hb8g&1pgY3C00-2-3vACT?Tocfqj$5&(PCk#>vmV2{Aka#w53JRQ2=c{jt!{A_2+ z;?v{flH%epyY7O&_V;Ih{D@j#HwGjRLOPJ@%VkUN>K(OE5)=0w9kKoU_YZ1_Ubedt zfqk%}BggkyS!fQ@!9Uw9!1l_QFJAzmh1s|njQ}QwY9jkD{&F=d$32d!S9U;41LYP4 z`DG3=IWYOR>o+|y6vE!fhXcBV{Drq{`2sqUVq&57&MBHKLjdMMQlX}y0XM!4I|t2j z<>gU9PlzN?s2BQtW=$U}nze;SLOT-Qq?#2215w3HvTYi==S?~L%o~6WMe(6mS67b| zYzNvFY$HN*7a*%~adEN9$=?CeFoQ7y9qw4Mwz9&?#;^}?MEIl)ZsT^C|LjX$5C+!k zE9{e=d*{fQm=N=Nfp}@_CE+hV6Rj6j|OfNURhU13&hsTDsZr zWXK~7ZS&oLYutX*=?SNLJdnxia@oFd1vCQPe=x}etL6+S6vf zU}#+ap8@wi2U}WN1|DIExY&AvRFX#V9Ed?PGa3+=MqcA`5R#L#1=c}Q3JQ`&CI}(yn&trNjcaQNlj0W0RF)&52#xBy=~0Ob&NMpzYCv! zr!9t@?-V}Y6`mivgpdKFS9lljg0^FU{qa~)C())MVFawdb(1)I77(V`VPRolg`fr) zs5ZbBAV@-r8Kh}Ws?uZu;4fDF1Ek&HbThzZy8B=+5Bv(kJv4*teGqTa(Q zv?#JBA{A1WQVF3UCTe783?f^l6p=I`F{II6RA@(~)VV#%_jk^9&iU({zs_}BuFo}} znR+kJ*Yo*U?#tuZQqv-1cxK%lmn(rMPx{c)+x>TAZPE(DO}yz3GiJ;PzTlg<9@2x- zCw_~0Mv&{MjTf&vcU04Q>ZjMULx4rxJKxGS7FnO2!EdOAM~)je=&^01CiO7;z{F|p z!iz5fjHhkeR(rI1}I)yBzcqadOTv!gM#lNO&qciUD@Ya%#Q}_G%0dvGXOGjKIWk0No zNtPeYqx2we-@cW)eQfV1wuu*wjrCf(_pz8xi3Qvq@AMy`henPxMmE@8dOEsfsojNx zbb|z!KYbTo1!k6=xG8bfb&E>%bt8L1TkZ$Vm&TH8d*bxzJ1hJ3HNO#Sx^?R~5Or&- z3?+T4YU&kOWhu&`r-iNN93r7WWYhjd7`X)wK|(&^}D7nEBNjW zhnf20{P{L$AYdlFcufwTj(Oy+^XCU!Uv%WGm>G0v(+Zr_qqrcej|-U$D4TuQCBD^0 zui0*H24j04RQ}|$@vmMT_9d4-UOBe6=comX7poGnN9pTp9cXdKVq{Rl+}``VyuzV( zXyAa@sL~%KBuJ4$lN29mzkK=B*Byrs9oml0FTQ%x`0@MbGX*B4HDw8ec?0L0zigQ= zS!Yn6ZM=kl_xC#+8dG;s{&|eDo;R=aq{)-dq%y7}^gfLJGw^-C&W7Sx#ZauzQ0;^Hg&>>RqhWrH9@ zX!mC2@#DvB?Cd&7t@f0Lv=gn-8hiVhKslzt1|3NNtp^d^CD{OCaQrt_7W~-Pz;#K{ z9-jjTJdDoVef_#8OLSZx^7!iO_{pP2?S?_J{{>jauhB+sk3lTkPOpi&GJ&d3P(VBGZ4^#CWq6=SE4WksNpCI;$>;spNf%A zp8a!x)=1sa#ME>qU;qs?sZ+LcYUrsEGc*A`jemt4L~I1E4)`<^j(p_dUOcO1%lg1;gXAARetaJdfpu)% z&6VLxMoyUE&FV;AFXmlklpA$NJ_Ux(Kw}1V$*Bk4Ksz`WIw(Q-! zo)@lORSpjiM>)i|;AP=JNE#5A?e9 zm{cVY(772=TVBVx8`2@S;tbZ*)C}^S84(e|L1+b$O8HMC$?`|q4SD%;JbUfkyHzlg z*2%}U(`;R58z*-I^-?E<6Zifra zXyfMAAEAaoLUIfe)1x<4!C!gqx`$3}IlvCP_3E1v(ZIoFkM!%Sz~>iijQ-A|QsOw_ zipu-e#_U5VUla$dqEJ||VukF2lVetUB%JNorWGh`>c9VL>L(_|IG^SeI(+?9Jg9KH z^AV*^okTAbZkw#a2UIG#Bh|ja-8&z;pPsm-4IO{Lh8_+2G0r!-`$qfsIym#+SFfb! zGQio-&?*TOe<>My_i_RKo(&a?uHWX=Inr(PzvkG@>@`Dk%A zk_D2dupiQ&S|vULdGyXnHL?GT5InmpMTrcE>o7caJ-<=5Zyey;K)SLiZP;{CE{ zkxs9)Ul%P3xpr;AiLhWQrnUoI=SSuiIz@|8kQYMwVQsg9ylY@^NdCD4u(VHAVaokt z$M0Abh?~$0oFk8??}QaIkLrq2WagSRL)mr$GNQF@*Y7`(-ISEfAWzFC?`J!%cSkC= zP1!rE6*He@=?p51;_I-q6E@{2X!%B;*uM6rnO)}X9;_RjmXwX?6w9|Ku*Caenbbj4 zmh>$oX`i`pLGe4Me*XMgscI&upx^kIC4|jKWK_mtYuT01cw#PaCF#h`6RE?GUS^aDYl`&$^do*)y^q-$1~7|5OSo35uEO~-?~$&3%tc+ zqpKlC5Rc8e?xTb!7M^(W&ZIw@o_5-R$>Cc+EYkm4bXItP`STB#XVChL51iXGLz-s; z151}qqsl&17Z_t2$3X>aT8>+>*YEC#~HB4 z*REf`;&Q}>kX2s3iO`6$xTSBaVJUe}dvPkMJnr^$&e$z$zngOflD3!AHGjS`(c7a+ z_k6RGM3h$58C(3WemM$fNp!Gvs1Cb(7wykV+Qon^F+M1gyTIHbJ_a3Y>AT`4ht_)W zf~35e9kV=-4}^a7_aEqb+(ff0eFY43&!Y)p?+9w>S2LX6Y7{%VHYY_stt)q$vi_!7!Mk^PZ?YT4kKgd0 zhqQ<%70Pg9(g_MdKQ+G%X>j(s~N9<5kOCbN$&8Sh$bVr4`;8hPs|{X2V1QqjyWrs36x zdflPB6+Kw+Ecz8Ww!3C)L1+qyNX>I#-1=AT3>ODJ8SJ`|A{KNy-s}W&*n=zW>^?p} zzIWLH;5_OgOPAaqTt6(!HX@_8Y}G2kHaPIfs{20OhIo{WJR1@s>Oc?$#Q|R^tJ(d8 zbLsu5ppR<}FWk`f)rZdjo{vBTX3lJb_KdK(?%wED}}{ase{7LEp+ z2}zLo=+FVaWxHpdl{OLC*O3z^hW4#8P3qIH-wz71FGq}MPlz*ma&z?mMVc0tT!m)S zg5~)i3B8bJFmhM^dEH4tgvGC3?c+00{RowNbl61FNKt9&KHkm2q2lQ2nTZb}eV<9Y z00RxOI*@nE&CM+;Dw;ZPp5L>iyp9J&=%lQyCZs}tqKZ0uf_{isi7lF3zml^@$1{7* zobIpwrUC^S>v7Am`p|}}J^u#ZS6Ub%Ee#$7$4T^gUa**=H}BPL`~6G4iDR-H4hMjL zfwhRr!oWc1!0K?9d~FSlmh`wL_J_A4n30N{<^$qXno1GOC@JY|>#x=Dn3Tf$!(dhV zOpe>$tk*>1hiqHKV;>d_?JfuvJD-*@V2)L_>A@Mnx8SidlD5F_Hr1t>uWxPWgP!rbv>q1%9aYfI zFH5D9eiN~=@bw{AGs^xfm;8<$I(5oR8WL>m<`x_2(PU%MQQGGA?Ss|8DO36Zln^(X z-hgm}t_TugQ{%VlF&H*NY)kSE&q7u>c<{azlPlM;UU!8 z=uhb{0P!P2h zzysvi);Qu4#|}Z|SxB56)upy#$4dS$L46+hK8ml2w+04}r^=@hUXDn|ur56XFH&ZF z&r0uC1+}jtVm;BPaekV-GhjE=eGeMG)kO`);ibJp)k~i$RKSo#r-B!h7Zv}lzXI*$ zFt>lmvcAq~G|)|d{=e=~`G2|%|6jOw)Oz*lQzhN>sFQR4`up$rEAC8y3=JJfYp>*K zWIod|`C7W&iQj*ZfApwbDQKnLn_C@;&fgofbvHw(l2Q!nv=shNn+Sxd_1#rnKwOp?g4=%xh%4`Ae6I8g>O| zx9Myw|96Mtk~hZD zsR~#CB~p#*VN+cItCv{y+T`|L#d(MTC1@L`{Hut*TVpFla7la4KE|H*^<^4`N=)y#}ZM z4=+0wzy?(os<(W@@=(KXiXeKA9zDAItvcI}{?g%%V~B6F?y{z?4ydpti%ad>t-ove zw2U2PcTiYN1Jo1YZp^3WCN3W?M@XGPP^>uTy{6ZSW_zmMF?7zrMm@{!RQDe~eE73B zZ+uaciI9unKMN5Gsap(Vp$Erm~I#cF8re@1Lb znGI4CmO1^#<55k9y%5_cVDeYeuhdyCkW=oTGT7N$UPee6#NXs5FwRb$yr#Pj(=cn( z>?=*ZRzP0~Bn2-*-O!NRC#+*DH;^MHcFZ z{S)M(zBa}EVO(QfT)z1FsNY||oPOiL_bqKJq76|@BdXqGSfAUOYH%hp6gd^T?zPFU zW44VED*`Mw)E^rwtSb!=L?A*k&M%08=yF_gcDKdb(pin_0CZe*t!{O1vPD5vR9w6} z-A;CT*uZAXvg35vDh~c1a@>#(&l<4P1B{H_*WNeYo+vzM(4dUor;FOq{1L8<$+Kcc z+E%s7E<3g#(v|73lPFfiT-aCNMY(OKzIO#Y0IR$Ba(Ha_E*2}kAE|xB1Mw=QQH{0v0`uo^UFhexMqWao%ya;OC$%{$Nk`RCn~ zynJkNnCVV4PHWd}EWK@y+!@c<)pv-kV)lx2$%U5%3A_qTU;iY#z9aP3D9Zo4DJk<@ z6*bHT;~BtNauw^WenU-u&DXRz0ebG)N94=CxZ?JCM18e;qaHB2Lg14&s6hgf6E?i| z2~+>RewpH=&AGR?CPCM2x7D}zi-p8SqF63rAiMsZ-p`hnhX`rJ=NpfIXx&K=r4OC3Fgz5w16oe^Z%a%8)&BOL~o-l?_}90Z(JUQgVm z;+@$TTRRwNF?Vy+g8+>X-S6ggi>=61Fc!o7x=`&^G}M*lgWwS^r>>J_Y!9RV)RnWF`e`9nzm@csZ%Dblc z1pjHwAIF!37ZFi`F^TI!9-;gK4IRF!dlt@_o{0n8`=Zi>eIK5dpPn+K2aexh#BzX-i@dY5VZE~WR}q{y%O}%wr#pInk0YvhAYl(dx6!|Q4V-l-$5Ykv zt{4X)Ola)7hz+}3cu-ogb{#t+B2~58=k0m|4)3zF<@enP zqO*MyBK(;8%4A6nBgr=ijx!K^N?4eWa}nSLq`*O5UuaR}V=$`pg+q089&#|tpH1(a z%kvhrLUhva0ypMKgcWnx=+W_8cX%88@cnB%h8lPV;{c#1NB`KdV{*R5;gX!}Aczye zh`>L~#U--FQ6t0z1{?2)8vH9kMLHBgRRNn(FP_Dy=+$|^!`%B`o;P=ZFX;F8t65+i zq2K(yK3%~3O5q@t00oA;8<;hC9?WKfpeW+Nf|jK*RS7mV{&bQYN(ejq=bx>`VJO*? z1c&+f5A=CR_opJ%#6|KfE9(%38mhhuTdKS7f$CaQ3>kv|f=<8UxruJBUR-TQaaF^N z>Q_D**i=w_%#2nAQ)JKQnJ9O$7=?xr(Xr&Znp8hG53l~)+aV98;lImcT~?pyUQcM8 zu!|gufC@#OQ}r`#zwamf6^)hbR`+jd?g`>j5a^rOT4UAt!990`Rjm@)GAXQ|#_e~_ z(pqr;T|lhL*>zdf<=@KO2Si0h33}>Qn{1UQ${pB~krO8>LW;+>PSu_+?#bj?r<=zJ zxHQxjdQSeC4Bgb%VTR*0zJLFI6HC>k;yiRnB|vIO!C8sc0Qqbq1|b|o7=i^=jD2J` zDPDtb*|B&MnbTJX&%j>?z6IW?t23~&7a%A`fJDBUOa*AF&|UXaX;HFM zJE-UyfbQ9Z6jpivEq6?|essNOrDzu8>N3le2Mp+ZaAvEMa|TN-pKdq)fS=zA`bc7f znry`ZH>lo$T0T`*3&+JDs2a4uqUb-2;s7aopiO`l8ZX{Xzv}TA0X@*OlBH!J0>UqG z2@~-t$c9l`KNw_ydU!cJ9Rd@=IbgR`iBzl2+`GsVDVee!g)VD3Jt!f13WTd1c2Q?L zMJEh$JiU}SHfIi=A2r}*v&)Ojjr4ZG6H#2teut=+DG;f1XHz;|Nm~K30)8ZKMBxgq zLP3lqIPy}olMW_wYbXreJD<9;Vg#!PgNzMk!F13#`587$ppHxM+8IO{+}u6OjwXGx zK=_^iXqIc- zHhwYMcEHSB3uTRvz*ElCY~f!dN@B;8tsy1$rKNis?MyfcVxkyq;N{9~@; zsD1i3J|Y**D@r}fqxnHWY&y##>?OB9I7hbnG*QH)lrXFx)@qvSsR(M&@ClCk=+SH} zb>w_wJ#D|lR)J6Uojlo#*o{oUh5-v~QPyD=>V#|8t{p~HPn-xe$QW$%XnOK~EEq=y z&JxF#wRJWGj>wwv!k8-u;)CDvdr;6!qyl8mXMm7c$l%`vKBU-#Q!%eQo8)C3 zotdEJ;MHAv_x|UcQqlSN!(PXaL6OHaHq;^AN@QfhbcMSw<{5(7d*0bmz4;#%gfByA zr8Y&GOGEYTbDHc0dUNQ~+%Io7CQ`z0bN=0Xwtz{L%Ti6icp_E>P`!#gCBv<*gv>w) z;BN=lHR&`($^S?#!6rnhkShaD6q?+B5O+tQ0H}F?aaE#i)@C=vlY)c*Bx?gutf0o> zTi{wXq`;c^`6Ta~UxBfJxd1JAic+8>Ab|AiGGKrosZ{_rf^oZc?UaK}Z(RBx8NqDF zJKOa8qiF0qWqWrpY7xGH#3SpIr6UmXc4R2#6pWcRgxLg-AQvT%i`@(1In3x?Q5@4l zz-4Gmn$(-HW=Acx+$m>KxwxJB<9h;>G#79Q76oBu>g|0efKxn-2eMKF(X9fHP3F451O5DlnaB z)X;aU;)V#A0 z4ypb!SmX9n_9Bi`B981u6%}!&XliQmq*owwC&jTB>6tz7OZ{{%PvePW=E#CGee6Ny zM9x6fCH98je$&+1jgsccDp4&$3>eys*^x+oP<>e={1`V*WVyH{#3Dl@&lVkiZ2#mRUW`j%^@lc7h~gs^ zt3^tRs?*D^*VFBY>O$CXPU#R||88n*Y#<&cWPc=lF{BS4F#?T}%&QT9&#gE1(^=!t zRRoeTWKY~<90F0n&?2)gqKwFl6m)^PE4|v2#p05Se}@v$`xgnW?C38amwwE;(}!;} zAo|rIy$S<7#%xzSaQBBTWA`tVE!PwpnQ@a4T^8%xs%@v`tStdqlJ`}5u2QWZjUD{~ z?P*wq-xYlz9y)Ay0?VLny-ze?t$9lP-ISU=(RgtyRm<~z{=Rv$hv<5!_}sp}2-X-s z{>zGP8#oB$n0ma0Bg8}~ke_)JFc_ca1{Kj|PKdiww&4aK4e|H8s%vVJ5?F|lHD5!S1-lcw#`5ju1 zel#|Y9YGz56GJ{CEj6kgBps=|8=(vs!su-3UBpp?{dc}UxGBVU6sHwwM4LNz1cwxd zqT#rldp3`{p+80DBOW2xU_HIXP21!CHq~E)C|1z6eJRWK1AnI1%(>Tgzyqc(9mLwC zF?8r`de<(QErlW9v*+r%m%}A}Lg(YQ7I}?`1gV=^gPI_FUh=V>#@DgtE+_3zNaKtO zhu|Ya$r8K_Q^n>)DM&F?U+!hteZXL{RxZyFOQxsTTzJ&d5g;3ox1j-^c6rg3Gjl;$ z6==o?c)|~m^#m*+?r>bOi-d1}`xAljNWb7u7ucR@r!hbkpx;sr4cXporzXH{Y+^zJ zv$<@L6(WZb%emzhFYLQQ_y?%9WGfs5mJ}$K<)#y}VRupLbtV<_8XMAyrgFPnvHT5^i{Ad3#73md6PGKsjeuw5CYc^VgN&|Pbk-~rAt|dSHi6Ud zVI930c0bATBHiAzr=@T`$p+nsH~2`=S(E?N*krvA&TKjqb6uIgBjB4jAdnM@tmpNe z9eOfwuW#SSH}fd*|6WM&?%a76NE@6yyr+yYU(%sf?LUj>o0~trH;zZLmFUY;rK}{w?y|fxi_TiwUT_Tx z*rq`cX`W3g!|6bG0F(?S@}RsHDFv~ZoeR|S?o+NzN4#y%W9LUI=ni~4TQCz%Ty=

-ag=NTy;4rBNDH*q<)Z$Q+Hn;}c{Z2!X{a z4LU6TI|}ZfOiaR8r}Q`N%;~hf%y}Rm!<4m>ju*%98~f4)2s%U0q zX_gD6E_#<0FaQ2k>Me>4B0|($ZKC~p781c55UHd?L8;+$c-q)33HZjYO1151WVM8^ z3F-5eV6MSQ0==EqGM}w|B1Q|Q6gTgMvQECJ=Eagqe+Dtv^ zinUO*i|SSi44Q4~AwUU+P8@Vr&VY+zcpMeqK$0wrB}!%tLTMw_fDn#iP6Yiy%ZMxm z>2E9lq}B=o5Ta??xUxoBUK?c!f<@pB?+q2K;#|g0P9=0O8Hov$f=N1+{O5@ugC1vp zGJu@D8R<{*IA80+!qDYodyDN{P6OSr^e@||=uK<_5gkqNa!N~yBTZT>0th@n&c?o6e_O!(cxfE6nG7WL~thRW-7=Y7qw)5-Qos&g* z0zlIxb3t?4$re%W-CL;{fCDXDjwPQJg^Ez}+|z!H?v@VQ)-3HkV8AS3SzHy(6qk;S zUH$qC2oU=lAg;;Z3%12vha3~DuU$DyxrK#83`k%_$5rTjfnUKl;z>>->!;8pn)6Bc zp~T{4$vx?Lj|E;v`jZQEafheT%M~WihNgc{_rqKlEBMy(3N(-uvepEJB$P9K6 zxmA3aPEO-xA0rx|@(@S>;px4Mj8ipZ&Dv0CBqPjC0MO%w<#|w9J17#o6W@a-v<J z3n3=8g!JB6ZklE!8tlUn#^ll{PJV8IPRoQ?=VVOMjsH_bL19O*fUy0f-5 zt-^PFRccS_vTzR1gTzE%6IQZF37%1a;wO69#wY>VYUPXFKQESO3at|GV(UXwnGIX1 zC?knVZl=k6(YF0v6ok)Vv`U$lDDq?psh!1fjiw2iKL`$7^*&bPX?)~8mW~gscZc1G zCbA`uM3^C&;;E{dILwUymgddKMz#js7VvXBvKE4%?mc>h`+jL-GlbParOOtFs$|lH z9SnSk-%D2e>?}ViZIEn4GCv5eI(f2>yxL&^TegQZn*K@R4{9ELDFrL@6I_)n+GZG? zK7I~_nIT`YbuhW+-RC#K9YpOyevyZC>5`Vv2|N~w8=F~%+y8)?aNZ;#K7YP|Tp~~; z6r7Z0XcdBu(*9>dZz_1y1;YnGvaf*3+E4Qs{_^5r% z1!KIa`!VQ)87SNppo#PXjPIgvuKsR25F|gQcN*aFf5><#Z5U<&mfh6&8K>>$YZES{ zgaai({oj}RQrsr@mMaIm826w_@L@lk$Sgu^KniSRf=~dlI_wvKucKx_GA-IJ^f6M1 zqKuTE0?rj>$XmyQ6q>ekDbPPG!?PsW2#-7(6WN&}yM_R@P0XAvzeI^W36OxVu-CV25zt~h%Xr)1z0dWX#IgEPDy(QI(b6a|n`Qb()eN(2TKBhtl- zzRUi$8rZx{OZ#B_0gXVNAmcbZjntdJunz2|bX@!QOX~(~{$P+}k0!lEi0uZ-_k{}= z;;}9~B+)@{7{wC8i|#y`Fvm@Lxtcf?fg#E!}Lu0kYUZl5Y+cHAQFr#PbGEV!657EJi-? z+f7p+SOM!K2L-kq+*1OR2_)0foxt1qCKs(}+P_RaVH@#8>0g`num6j6H<34E5sa6S zSA8dJQh+xO=Xm!h#@ z3;*xdx3;pPPSLv)4$FFi^wA)hhHgpP3LHx-BCE(8uX}dm+48|JZW^|gM?@{#E~$h` zOf@5^jS8rXF<&rDxDEXUP=R8zoeEyKuoZcrXwQG0x_SO$q@j3yh06y2h)pfroBc#UmPI!CQCUOiOBE4+a zZbCS*L_mZ>e9`9%9XjvKJm$e4AH*KPlOSI1FF@=YQ`g;G5^nQ@C_=5@FQOA{6239d z1fg-HW>FbCLFR0Nk;6>kB@$mB(Gc0Z`2rIbD=mObg=9%WV6R?^R4AbAvi(qR8BuTd z?c_DT%yE)updPr-L*fJbg0R%2`qb3i^!KYm%^hI=ZW;|5sRzg76CgOV6~uRgJQhlwr#dYNYrRK|v2;-+;qeTTT#5z&79QKV)7W0G^=W4Ev$HLi!^k)QC70 z3njR1eU~{Xox$+D5KmoRh#CRZTQUQ90YWd{iJdC@ke)|q?2a817-1um!qhZ1S0xqyd&xC6WQaggD3kpJIEEIs<`1WJQu`$G_&NxE`{J_)oWdJ!J zo!6t7k$G(*k%N15sxWUMrvU7RC`IcfV~f6LgGzProAUN_rktQ=0S5oT@}bccd#=hx zUY%EQMad?^T)HcH)*O}Nuow9&n3r%^5MF#K;C*^xbd^9uq$a%DiAT3cDaA@ttz6$* zs8nHb)^->kBk{HW^H1JS?-{MXiz*w{@rI*RG+IWB;?y3!GReBFZQn^jD1H`_<^LQIz9#1o8XdT62+pDAzz zX!HtZ!hs+*z0ZW<{8WhTG*ZH_VTybqdS1#iOj>)A-*3j#oG0#40iy^_6X z5(w>5O0XalIwtlxxUP64oI@MvPF93*M&=8q2X~g}Ky(L2?a=1_(dYC za1bi2MP-9%k3kXL2Q+;WE?fD7bwEguSvJ5ihmj0o<%81z=3BD)fPtZGf?gfkP_r`o z*X;ES8aUTrmH+@+MuGDxEornT3_dbj-iQ*BUSDS-6FI$)U*V{T0tIGD$Ohndob4uXLj7wz9x|zw0G=z&+(MAj@kn+ILCajKSQGLc9+kbzXLcUJHa9 zFoWQcGC2M9&GiA11-B#f4i_SchJW)!6TlooZMN8rOLuDD1!6igCLsfvC{|eCHj*nG zvbGiW6DtD+sNSWy$GnUDW&SLLz9@P7qe=_D?K{Uf_AD$8;_JN$HutQ)y|nV_{9-g- zSrMtXQs82V*gnVo%^e&Q!f~nWO@H1x_s!T+YVN)Xv<}5DaKqSWQ ztP=^au+2^KBV)(=cWUx{rH?p2H?SO_0tZis?FAr6a5Zij$e)`O2o9S#&#kf>7F5xi z({1_jjhAnPqiOo{|Fi3lw)o37oX{6AfXzsUWpaq(R)BSY1)d>gF5}iLH+QV;$aVsx za*E!Wl(MA0><{ucd;`B^^0ZNtBuiBw@Ez3(lVBOtPT!}}7#N6@;qKjC<3rHuvyhsj%w!a@%pVQXx zE-kSMc)D-0cUYeacdOt}ky#u?5%M?Ir!+ngrB8i*p&`Q(JR(1K^Rc>LxXs-4Aew(6 zcX`8!PE)AEWr)Ga)j{{F;~IC$l{v=ixo@^N@(8*~hHhH;r<~U{s*l}2fCY$scirvj z&R3IehigIxF8`159r0J>I&udE$gr>gxfUk4NsRW_&ntVTO)BT4Z`^kLs zeXK!3jEmKzy!>iSxh;(p+-`pAtN}6slJF>WAGegiq=BNesLpmbBzba;2~|(|2dhSz zUQeW&f$X_SW6g1g?QyLgk+(VO8B`0uAiIGHKTURG9rjGq>~+_wxd;{qGEK{G%9ozt z@tR$IBJ0l!jfdX^#Jl3!X>IT>@`|XRnIix=vGrx+l-uSyqKp)q1ab&!Lowv7;Ia`C zE`^-{%he_m=4^L#e->S3zE`%e%fDTDLu0xY2TQ$fSp$Vs-4oU>%g}9@gkvy>d^Exqh zsi`ghF;j+a$W0wGz?>t3N}wibp4%R3Cx>ENwz!N}m)Z99^)WT&i9hizX~BFzmg7{gc>_S|BeHZ94rvdLoneG?(mroda9M zZh$<`;%1!g&fWjF@io%n?1f~Wn+Ot}ovV9Hk!FmsrWaps&wPQNQV}n$B(S#uRuAzi zGEhNh?Q}+;8}*55ZklxggnS?Zvs{-cS|X1VS@g+x2A16Fh$iQe^KjKyirZ;1F%*jRpy&9cON= z$@x?_6>tN>P<+{|luAJpMjw1`H(t!*1ZaY0cY_gOl%` zMh0xxMok)gWjy16P}hhE)g9eTISCt(+(KZ*)(T)fd=O)nTBh@)r8%dkj4I1E6o>x% z_sqF19P}c5?Y1S0)cq)c5s4sHJFYJpQWP2)xeJFMqnwZWQ-{)Cz~KwOq}?X?Q14jrt0%DH)4&V#MTTG{G1Tc&-We(lB1=}pjb`d{>OaxH^ zbK!ZhNA9dVTv}3dl7z-QM2bC-%DDr`e*M)yDJZbDX}of?*8`EVui+{kfQ;y(%|Cx8 zXelD}mBBELSLP3O(K~9d*i3WCEM^4ZG+u~(xCTt(8px`2ho}h2sf+6;lf2|&E+IcC zz119L7L-HrulQHsO&Tr)cZQ9afAQtr85SNuEQq!!&L`aJ3&I5@0n^SnIJw#B+=9&V z>}52>!tj&t&^EUwV^ArJ+J`O^0GM`^XTjq)iOuGO$bOOuA+mhDNuO&fM+2Od$^=XR zv4Gc*;KAxDLHzZk=4?>(I&)(wVJu{(L!d2p$shg{MF=qSJ%GKQiyNu z(yzTenwG!wL;N;1Dgz>Sl$=llR(T?cZF^xw)G~K48t2nB; zX-3k?odya`(*!-(2r2aq8Co(!1l0?#*hg+WRY*?+pmV;8q|3xWRj0uf*TxJsyMh{%KSi@eLqtkNZS#-qxH}6NKEbD8=Cn+E zrl4MQ*~}BRi4N7Fb{qwe=(Qo5a<5+?K;TfK4r`@Ak0{g3X}=%B_eifV+%;1dU^`9D z$2f7>8y9(S7R^=K|Co}J!ft8By+M&HFW>s`1hGGlyJmXM3wu}E!Owbt84Uep5xI!v z@iXPdr~R3eiG@k5Wtxcx>kpjqi@0PIB%Vs{H}Jz0ax_sIKMXqR1sK-=tr7-p#e6jK z%g6M+Xhr}jnD4nfq*{Hjfm>8>*Ey#X^P@ig@wD#qyxU@fMW!Kzz6qBeRh-k^sfbW( zD*Ad(7s-_=|K&1EwdUm&H&6E(FLz8>?|QUdmX}t!wruwfhsD1klH%xaUa6o^U~AV- z|A*Vl?8b8!g?Y~m&aQn;(qJOB`~91c=Z?CdTai^t0>di&hEM zvDH(=EkxX5y5w#ONP6p|!4)@8J{gT663?cQoMLzpL#zk@%9ORPvh^;u7a@Skc^^PUj=TYcQYItka@Izyrd*ep23Nkk@s$indyIK$T z0eNL_{rd->v;4R@@j;=tpSxLR;!CSJ<{x&-=qqtg$;FSTbgUn58kDA~5wd;-7bev7 zNkFHAxCWjfp!Ecq05o7gTb0l@etv%LAKxkFW#{I3ov5icJgaI!fgJY4ap}Y`4 z(QAkuPR0TCTPj1YK7M>4cQK;A<#7lMNhPlb!Y?lh-tV3NhYur`yLL6nt2vyPq2B^7X1*N3~iIGW6>1vb2d?hCaD7 zre}v$rB(XDby2~-K-amEITn?@AsA)wK0;=fCt%|;e}vLkuI%78PEhFobp;lMCBqn8w$Kt$Gdxg?BvM@^@ebE@M4>S zv`gQpqhlH4EjNh5G1!Fnlrz~hHFnmlI{hoy=$2@SP6epT9aChxd^B=ivo*!C%f}+$ zq5r%JSgU0f+ZQN9N<*BdP;H{J2cm~q!X_dk8#TL%?JPM!cNY5{2d(Hi&ZZV^G4DW6 zhb4ixKUm?)K=OeI8{oVM%tk4 zk&6**16ix|dZyfciM;$iwHq(){1COswHM&Zbt9knfwtX}##BKEVkXx6Bj>{C2G>$+96 zmmwP9Myw#S`D%RQYTC1p+NJ5zses@_ZvQ--KGF4f1h>SA=_KjsAQx&{L=|#1BnYqh zZAV4g{M&Eemh%FVBbbLVB4afd@**;TZmj(+N!d4nT2$^3W4|5v>#x7I%{Zs}&$k6G zODmatb0^om@UoD^*fl{^-~G@+<#+fLIzjGNB9VAl_`YkiJZD(Z1SBky=b6WfQb6>5 z=nAl(`pEP_teVtTE+sVK3~`-3EDYxYFGx;MSMimr7eLU#c5(|YA@kr1qp^X$Bd)Y& zR%E_^f(`qNf{&M??B)))neEzb<@V6z+k!VNSa8*`_<3N^>>Xgza`hDDpoou%ZV1(p zK!w|-kLI=7eG?N777(Ne!W6MuU@Bd%osnjSWFsRrNodni*P#&bs9uN114zlJx8=%} ze~x^yZhWAKW*IiYY{eSmS-xltx^`vo!af#S9&}XH(wg}F2{w5C#3smh)i~15e%|gJ zEN%S9UP$u{+^=IbW`Bu)1f+s&iNr_(u8d1aPapQ_PWlGeYY+_3VsVXdWZ}Q)tizd( zB3};IiGkq`W?I+8h!GD$0V@H@TE?D4I+gTB*1|14GPM~!5xQf##1Nois@$nCrvx84 zTBz7$$R8|VZhBTdpc2akA|)5`(0h7JOT;5hE*H_WySpLe8#jafykv>@t5=HzCPVHU zU$%N|ZyDr`aFjL-t%{&gd_$w1ie-g&>&EbCC7w%7#h3#6+^$(4czoh)fDeDWc^Y&; z^7ELbtzhb8}gko8CLBXH%uOyW?4TPZsNqbcJ6~K-a@@eKRtkGN&1mo9( zz90lMa&v3gqdV(Uo82-7kFVFb>h|0$BUj{~REkTV?fr`y_HA;2jJrEB+k>W16i3jF zy9)CbYpDR9n=aXZ7C#D}6V{E^FaP;D6ZmE7{hE%3q0AnMR12c$Iy2o1fBN$>%-&hwdQ-JtS=nX%Q1t!1%e>1z_37I zDYbYW=n!Qta6APRXph=~ot$(!(IvMXhbhQ4iHomT&cL6_1|0?9#qt9dw$IM|F(v$Y zpT0l-^i$V8dgXonFJ8PTtbA_u=K*@}UQJ`@=Tyf2QAJ4*2FuGW1o+7C@bdB+h<&uCgKvV3b>73t4Lcb_zy_*HG9A~mgOJsK4k`DCJ0rN#iI~T^^<#Lc zs->6nF#l@vgy@0ioqfJC7j6$@27|Nj)$NeuKqn2|*UoVfU?BUYXI1wcuOTjLM)veb z{D%pdORu$tsR6N;f(TkeWZQfLTu+Y*S05z0P(bqm<9q5*-Hz?e&KvZv`bR!)uf{tm zIIU=)nZSVv(+6{e{36voPak-qTWqUx*TgXMs69Aa<&suDiAjLY44K_H@rJUD@1Zr| zt7uu=cC;+t?_K03shF`e-U&9)uyuOw!|dlBOqJQI7cZJbT5gFlhoqE?;5alKMdlZK zF-O*V)28_oVx!Ge+%a@rYt0EH)$px8aZ4SLbr zl4Fp}k?dr0m6YOgR2YE(iW?kUGR2Jrhe!tQ}r6GCNB@8ro615Zub`qPQE{}wyqzwAdW;L}(?Q zsLeAT&91OS=du9a{tpayR5)U?<26XA4{S#97t!&&@W+s@eO~ne-jM-R92uGH6b$Qb zYrjjAfF<)SpI>f@=#=NV5A5iJPV|~Pd$#hbe~DiXZ~y7RaEE81+ix@Wl1!tu#c9-* zZMPCWzsh#laeUQQN5`7hafC9WJBm9`f1B{oU4K(ffSv)jG4u;yL$~|LFDeVBY<>Tm z@@r-_5d}^z_F(W*7xt0Cn+gbNm|#f(q6~u61@=$56pGn^LE)4V#AlCQiOe4+DHu-} zRm~7vSqDmFU~HqBH!okk!oDid1!o`WSlrvo$%ekOHTUrAj*g$^8ZM5A?{jG~;1X?^ zTI-{DU0{)+ZtG6&4F+4|!Wg;zibeflZ%}*?=#KbgfkRkB)YJ~2-~TG<2&yT5#=qvw z$Dv22i1%dFG!xyalMu}v2@Ye3I6SpcZ7z9 z%4UHgmFa1`5bXzT09#afj}{;u(ly>$^`u2%nXjjBAbMpu4Ns-?)JEG<2WqJd`{Y0F|;Y! zaow-TUL##=uO0T81j;1CMkYJWc{H{oV=H-kl3LEEkM(aiO~5H5nF_RpL!+*vV|v0x z0xV^g=bXh}**ezceWM{vq&=B>_>q5-|KY=G`m5*9f7bE3F~zdX>S|qnC-^4!4rvY^ zth96tBMn@hM$PzR$BrFR8wTg)5jY_J4DKnH<=;t61QkUC0m#kQ6hnk?0hG@40(=zD z{683sLx?5!Qh965Q9}TYfIJ5`h*3`Wpbmv1A!*(EZf^SNp9_*6SzKG`vq|f>q?K3{ za)!byc6aRF3Tnt!+{^e*?L~ z{)IFM)JO_l`7U7=(fdf;bZv6sLD~~i;Ug9Cq!KZ94ql@YIKw|_#psiAGqPOOO;4lj zV=Q3-F$*$G#$>c)Y=_rs=ML!pD1LIMtD^bM$ywfW%KEB1V~((~MKK`{NP9M-7a77N zw-6&&I+0nWqM_oOz$SPIT*+nZyLl`k8bUtP)#t$wf7};J_kQzL)%}{GV->5_`mY$( zHJ_?dCab-oE)gF-O=Q@*0jx= zM^h&+|7`c89W-tDlEZ<4Bf6)3X;UG$jxQs$@LxqI#r-t(Q$+s&L}AU^X6-t!Ucfm@NgdipbDZ)5exCdt@PJ^lAGgaBS@8D4GR`L*S4($ z#m!|JzR(NEHee<>H7Mv%4LS94Wm zMz8AO{)t@s#eftlKADO}XG-XoS<3BAunvVUkys~>ksF$Nmc{H|%{C)l1Ns{kr$;?S z=0-34sKY-Cnu`6 zqk~Mu^Fl{DrgZyW8@3izO5~>8mdw~_3nK+BL+~S2(_nLR?GOBb%=<3dK4u%~0?twH zGa}JbzX3=|4|7tV14C$-j>DL|jsouLB`sauc}v!>*rcvE622Kb$BdQ{d#d^w-okH-p-bf@w9Y zLf@e=dGfLev53Fu!vL(w5IjD`ARPK)4NWu#!P=439x z$MJWupf+!|`%T`St+G18c}_f9`9VDNJMx*lbJ#!+D;FI=nx z-oST*tDWHVu_rjC=Ze#BuJ0e1aed4!lovs1nB8ex0COhvfA2VnxXIV#`EfFU@RYjs zrB|ahgpr6JXYtcd`wwq@KgDfCcO~k}?jSF65A&&@e!>pNxYlV}V%g z+%Nwgz6n(v6r?hEkp1{kTcb+@<^;{?R#1%g2%|MMD`ZR;_9YB;%k0{x&hyR8_R9@A z&=kBoIh`#45hk`9KJsV{1_+7soFqfRu6{OgN1j|I4GJl<>5MTouH15KYMe`j2L4y| zu0CQ%lDRyhoMf2zrPb@5LthkkD~RfKWOaJev%#6RQjsyJf*S&P3Nq;P{&JgbR5v;n zw>@yu#53qyv#U7c1v#rI@Sn%-oaYioR)UGTTaxro5+m mh)LiZw;FY9&t75rT8o zh3cTJt<_?=MS4P;Lj?>DO#!;2sVrwXQyr-b9eWHIxc+E0K85v%kKI zn9m)==%g`PwhYo(f&2&XLhfe7xTTiz1XzoQPjmcW+k)o_HWdL%mGWVT5Bv&5 zRk4zNCxRCQWdi-{m)%=9Z;Gct)JtyJ^&&JfREB$A{Sf4P>nE$mOwOfE$wyDi5UqXx zE-Wh&O+dGK`nwTHG9^fT{CE{GGafQ0oPtb-eo!>TsLdm31Z{iQD+URec;+kLCbK|l zu3uDp@6~sHnAxdPz$c0ux$KAp8P3qTW__=S{HUB|6z-lW>%)_ilRdv$0@2{B!uWJ} z^h7{N_K%D>A22=A?Nz4CI>(PT9O9;*ECeZA^U^ zNRjw0NE@|_(Y~io_Q>_HO|usBe02qLm!k*CiNJy`T z0|RALEMI3T(5?LJ`0g)t;wHHFG*}Ks zX+vW0bF{kMgQ{d0q42FhSaOm4zt^|C{`BcaO4;CmyZnyC{6b$2`xV_Rp&;C(^`_w`4*ndRd7a zD5tpMFX!cAs~M286mi54{6^vz=WGxnNUlnWSLuP-;9`@JDRpworP$~gAxpyjE0JR3 zXLEDGtOoiZ#a{%Q>(k%zTXOO#X63N)xPh1i zvT_(nS%PU?+H+IWLn-4cp~3LDf&3 zqRe}KvFqhEvDj8fb0%UL2OaQ5Gol{(8?_G-CA)heZm?~9!X?}f0#7wCLoO)hTIKd* zg4-u78^FccDnN?&?%kud_*`q#aw^F}e6rjiaH`03-n{!wSCez$T}#3`eR`zw<{hh| z$f! zCC=UAAA5Y#V~>hPM}OOb6Bb-pA|r2=qK2%0RQ%)511h`QQKcLGwym^l+vaN>a+5bk zyz#uP*g#+C>0icI7&vCk!U^i6Esvm83;E_wuU z^b{=B$T@wGFI8O}z!9}gK8|R6TEVb~w5VfrN1n%v#jq{Deahu2My*q-|Av2)QSaq2 z8aXn7jU3pEE)_&@_N>PgyDQe;C}%!YvHTAmjz76`lTE73;+w zrND;-mb6eI#W_WCi=aLCdEm(Ah;1gC0j+%ztn zX_Sp!R_%d-f;Q~rV!1dp^l8xRg+s4jx-_SzPuDJ~@p6B~#*M0j8_>#lPCCH`MQbL= z_lZ#Zi_CdKo6hm`v`zC5n&iA?+m)SeRe{+#H`6Td2Y*Ws&LtQnG=8;eY>!7r<8~cjhwIT)asto8LK6<#Z{YGwI z_vG%DuB8@v0O+O{)PBK6UC+lNHbEIOQC8UWM;^y z4uHEJ*Ooxqd7NB_R+qtD^-QvU0MIrc$Q{s1u12HNrHPGK{G9Pepdnw6;4QK%MkY}d z82xQYM_4|?dHaGC5TX_-YR?(kAY*n#rmGdxR=)pLq~^JM9=_eI_}Qc06MCt(@@;%} zX`k$xHe%5T0Rd!lQt+Vh;n8{}t*msfu~;4PrtsWz1irWz=ePtLBqQ}b+*NVjnN+@E zPC#7!xs<}9rdg^8CIg0)yg;DhQY#IX@e=^MG7!F^y;;H%gZO~WOO<*q|d_AVeLNNnb&l2 zv|=?%Uu*r(L%5=inSV&JQYIVJlpS)6*6f-T(?RaiZM`bDS6xh^QCVb*l!_6^?7`+D z#@c6e3SV8Do>91XXm^9Mi`Abo7F++Qr9Z^4A^)KB(jNM8(XiM-v(C(CP=$5z^K&&D z8%yGHg$Wf^4V8cV+w?A1k@&0XT7F7b|LDXE0Q_WJeMdeYi`%N4pKY3z3N+|?$d|4y zUhy&)Y+bXlKlb8!tCP-0lS|S|>xsL+JNK=pUPj=i*?Rpd{U2%z+gQ#S>_2bUlRmCh z{V&c4`f*URgB7w^qDa@2u;E*LJv(>ka5rbzfqo3h(Q1MG#Pcnlw_^jc)aD_tBBiNe zUI*D`pGf%485Vbh38x?sxh@yeK8$*sp7XFI{Zt+ZR}D-Ix0|iy?!&XV*+s@!Qqm(V zE@z^X%aw88WH1QEm3aG9N;&i~_uw2nS47}Ny0`o;FzcrN<3QBmhI6dY(zx0vl*Lqa z0`m4)aqiyrf47I5aU4aj8S1tx4Hi*244!mdhIDDP!e@dTlLqQ9yT*pByR^}3_4#$B zIt$xRdp~UK&6P<EdHeUBeJPTqtVN8qWDjjhmJu>IZBZ1mmL=L{DO+P3 zV@VX*_nJ_tL?k9jV~I&Sm93pr>U%wpZ_ew!@9U5I&+CutzUOg1&fomzH1+*{KJVo? zUfYqh_wc|49#&0;#WfFqqxa-*kGP${DxetqQ)*l=iz4Z5X=i-ke4UIaIpY|i7IEHm zzhSNE$dPl7`mLlOyWp6<+PSmspN_Nj@WP-6pnMr=k{+f5;E5-s?O$X6oOE{D$@NaD zGa?-OTsYe+a^PIabyKmx<`3@z0}6I z!uCd$;>)<8?!N+Ct~0r*GwaHnEl6nuPoHF6`ed#3aCe1DVr+KowDQ(F!2@`R5nZPZ z3rsd`blPxQfugP(33UJx9j5*m7j*MZoz|hu8m+SEasGj?XM~zi{G<01Mhr=`r0ZX` ziO4NY)KQMO2a4kok!|?y@j(%?u<}rr$sPSZc)fp!fo1QMt0lI>(#a-vp5_LzpBs4S z(D35#`vU^{>9w<2mRXt^?E1E3Q!rXm3Vcny@UKZ&KIOJ+XcB!DiJ7oH(Dml1XhKit z{OP!IElZITIk>xk^#+jMqs?ODlnRnn`&>D98KSFIf+MqIrfL9_rkc&NL*{IK{K88bi1K za5S8F;QTaKBuA1pj$9}Qn=#&?4j-e~b9e#JuP>SoG~61k127>OH)3rEPl0Ch`}_f1 z;8ar`QgymI58Cukcso+HI()pbbn)Ubr&F6-U0_1J-`Y`Bl?-KoJ7{~Y6;mn6ZpV?a z=F7jsMa7J?6@Bsc^cjJD_$@RO&0Dn4*z0YW^saR3CH{cLg`0s~5JWnhaa-}k{%P2g zE(^Ch>LP{q$P9bpdE!H@duHAn`QpT6`qI%V8E|Bf~1GSNp+9p#x?3L9!oE)#e$+831_j^_^`p^yx2 z&IT3>7Ysxv6RE`J-J^2V%VUtB;IlnqGXpgwDT*XG@b-?ze!J;P1YGBYvKKWFVM;kg z!)*avsavEM=NMZE?v1Gz%_yQ@_m%p!W(IJYfP@z2f2Z6AG4Re`8IWXj(*1dpFB^^Y zg0==#9?NhFc3t#A(XCofK;7?!3;xYlY^utN3HFQ9dSMwcmX>JHpf*&^Vq5y})B)ve zYe~J91Y|S-#D}6b=-2rBxS)TBOSTRzZqI$jTY1V4+;5#c7g)Zx%lZtxX=@E0nIz;r z|L33X2PVopgKY9b->*!#Cp#*S(@HF7knX+bIBC9}g?*JXEIh^3pP#hoZGG}?Wj7=B zLGCMFiN0cE%0OqHG|1^gu|6YP;oNP0?@D@(No$X7eeA6l)!K||4RRu*lmddroF)UB zq6JE2H_?Z=9O#l+Dr*Oz-k>4*iv<4Ilkg;RQPy`u~Dp1YV`NVI5=l7TLXK~ZE?l!vD zs>EyDwAoK!{==LyM&o4m$^W{Yk$!}tfTKgmwgz}Q)%$|$`<+J=VQN8V7_a%jJ#nCd z<@YMYv@*KN=!ePyWz1%Li=&ph_mJC`JnZ6}ofcR3)iJZ~b4r~W@4z&L*i=8j>6XK7 z2K7l-if=J1E*+vX3`5H^w~hVVdTtD;A}W1Yv3G!{r_3XeqKj4we9a=vN=1|@W5%e6 z_j%^b#<0;G$b3BVeTc}@1%@Ow1S->Fe`4XAo0oxVY4oU|fj;Q+?jE!@-6canq@O8e zwt@q2Q+dPT>nQ?+;s*hd5y_UilED~+(;m3$NnnHa{t1|tr+I9A`di=jGOk@$Z$|W+ zFJ#s{kVFeP%?do*G-=kX<_R&|PwimscbeENGetJ493TR^V2`ySe)L*{gN_B`iU+zh2bs&|B;1oV!*Os8)mNk zB+`Vc*x>WI4`uBS#Lb{;#Iw*(uMH6baMBE>%#w^>b?sjG%W9DeGVH_Ov8DouUxbsi zTNbf8P)~%Sw$y3?XpJs$0zfVsYjMzmn`GT}%qG{O5#$0wA>XsNIE`5p^4dUmeeJ*V zuf*T9n?C)I(0E;G#d_~02M~D>A>XKEfiF3@gkiAtsofCs?cbH(WwMt*Fe_hO+43NK zX!#zH3VF@27_0|CCFxN%E)BBEeY1QNcHGEYcw-X8Yng1saZ^`jplC}ZbD8^{gvGx# zcF!KwqCBXCeE>Lj67PrYD_=w;>|7}7f)i(ma=~FER(`2{Ux#-^-q#7@iAGM)6y}G4 z0XZMFZJLrY$o-(PWx95${pF2lH!~5`6ed)k35?lQF3dea|oZZ9@m5$}@ z?J^>qgG-FK;{@;GP%^x-LA(Q)^*PWZO*WWtLIYilEOuVOZ7^cQMjM|bno3a&a-9rJ zc~v?jV3qB&7D4ZOaMqg!Kc*?_F?9JU$KPYO{8pUBpd2PLRc|l8x2Lh&EsG-_x7vOi zUlnWf?dg&s0W7Og28}isI<0X({MSg6=rQOyWcP+oUdd^oG9+jy6tl zd=x!7`OBN?ALGOKJEfFGi-=@$w!z;vHBW0g*l~Hl{>Jfo{3p3w3{E1)qFPGTjuWt`-gfRiX5?A{!Wzp&0hf>pUT%YV_VqUmu6 z22rz2{^&N!DtpMEV!Ds#LxH;&A~?m`h#@mI2n*D+5F!to?A;6 zVxG+MLO<$NcXz6FX})0C)a;Z!)Ri(f!{6Xe-&HzBSjMDM0)v(lF{#}mIB1-NY%wTQ zxq(Qj5W#{M$gOn3s2Z}%j}@PZ>T`1H`5ANU^A~98bnDhC;{2T{z$-%5#1QT-nb=~k zk$Vm=rwM=Gx3Nx)mQ{GriKxXvU-B9?Z0I}8U66>~O&d2}h#bQrAJ}+*n+_X2T6zZ< z+idf+D<<`YIkb+9KB&U8rWXCRDqMaLdbKT7qNDU7S)F7pX`P18pt;u2GXg=J-^8x7Ilo`3! zkk&d^RB<{wJ17+>D#aoxC$A*6m7Lb8Z7!3Jq@WO`fWtc+fzsDPAxYlb1I*+*Lm<3JC{yxjC&$#@c_Q6WXXn3TD&~GhHl%PG-GGA1g#xCx|#48nwC3^AjuWYx~=Dz;gT-= zKrT<=LP=b)-5qOjs?Fgs(Z*1~%1|N5au`Y9C&XdQo5OCSK#z}->A6FOo(*cH$N!ui zb**A=61$KK9Ib2n-jgW55xKTf=1DXNbL=!5>60uf@qNm7fpgjoci%E`KyhgjEF<0u zz80dGAsh?Y-x?q0_!F-&A_?-qz1k8W-J;LT%&)avk)rR!5==<|6|SZNDN-?NOU0epvcnVnwfr`GotpCRl;U55 z5Py+@*yhY{7iWTEwjFqZry+Apq8vY^)9+vnvv?O^qSK|zHaPrMtFDAL77-v~BQ&|- zMn{bkc4q{6nAYn?Bw1Y!naN#%2dqgFp=y3tZY(Fw)QQpsLHj|XuvS^ZE$>A~?Hfh5 ztHeyxU88w_=%~5=n&_`%Jzf@sA=Qqb>O^h8R%B2Y3X`p`!xvmN^v*zME2Gr+b}e;} zsdV0GWEr&enPGKT8UeZhfa2z;wxzoBG^;d`1`9Jp{(>tY$B4UR@|Hw~(Fvni=6C;M z{K}^AGXRYU3;7jV^IT@02Sc!ZzG_nZo0S`om0Vkc~=+S3tjQJrl zJ<(9NG!KD!@i`S{KyS*@wa8DB)896xaJ?72h(>P}v>(!@tMy`0!!7lwNn~way!flz zXSTZdMW{c;BuNR5W(E|E8mrw?oBX;uz?*n6Qm{ZLSK}a{tZN<~ky-hs<~mgfGzgDu zO>Omtj%wT8gLk3HP%1S;>E6URQ!U@Vqy4j8lpz5%qiSTGXo%_mIQVf|`1fPEy=#VC~;sKZRa>+mjd_}6*F2=0pY^`f$tEO+U?fU6JJ+N7|?c?@6PLn>qVt? z@}vr=D+ePwI|*3aYFs}{Bz{+@>#SkuWLVG^vD-L9PW@5y;zfIwlf?azu^Lm!?!=#Q zm)+~Nq8CBJ+*&P{7t}?t#|irtF-4y~%_L7$gj$Unp-k~TsNgeUHEU^gmR2PHY)Q)d z+T$oZTP9^eIs*Sl8+~G)c-B&~`ts{V__}8gVKX~8OHjx&@*LxqNg%LzqUEk6&SAMQt0`N_b`;inUsQoXQJ_>ITU)6#}F)J&>A9H>@|6f%ud7vh{NpYn#{&2ma{l*WVK~vw8E?Fwoz|z z=RKzPh8E-I75%)}%Dgi_DMzXWI^WsFm@3NOC7FY^K2+^ zd{=A07%2@|jJwV|Wy<3xFiv{;x2C2%Z zcbH1h7}J#V)A~yO3Wv$6%ov%o!A)-QZO`j)ze|Q&Ra3M~IV@>}0SS=cm-qYU!vY6` zLzD0Vp@mR|(n7HzJoKD9UQs1ywcMvS0qG3e@M)GDY;$z87er^VNI4yY)4T^5UdN^- z;}E|KG=XqMb?EcVO>I+#?8C_+(fS-B<ugVR0RdEWYc3e^PF@*W+<_e6_DD-8Hn zaPO1doQhNEN@Xch+2VxKJCjipx5=Q`yKXfyX_0jRMWhs*t=1lg)H z3w9gN9Yez{4!OFA>wUIY7MDBvd~}BrEzxwbK}>_^k~zpf`+fa- zyYyt+(~5%3xUA$Ng|6wRs@in3l((k!UJ_;43UE7F>~9L(&O@7b>GEmlxr{=`w}p42 zOpCv|7grXy>)d%a_ePFmmPC1ozx7Wz9m$LneGS4B^NTa9V~{ZH#SAD+r=6lYP13%C z9n8rQ7NP;VbN-ye@4TV@b}TF(dWi1RsT~T)^FbaheaiayY-RmbcilEF zDDOA=CFo*V6Q^FC;GQK<3>!u@+-#H^l3TSuQ~58o8&|c+T1=FcFcA5E@R_U!rZI+{we?D$SNjV`A!MO$V>+9OjttD~1UX z{_?y3VeB~$#8e*vCx&T-lmPfD|^{7JtlNi`X0}of8h-S zO5op#chb+)I~Eo0tDDkd9iQ`UP_?;;UI&4w^>|q~>uuq1&)~Eg!@%falirQG_qFaz z%u17-Dm}NXtiUCetdmD3hdxq4c8@jJm{xppB*593R!?iA*p=Zy_D6VM~ ze*TnTEzetbzuLB0IQ6~P>D2F0!Hr^Vi-+dvY5Matv&;0>ws9Xg2)xs~>G&h(M{G0f zZ(3Q~#{KXR+#xyZdujUTe7kb*>(g}@oqE)Ka;m~4y@z}Y>apCfX?B&)=h9~q@hX5z zRY7nfEee^`Kce4`DE^+CtcRF7Uh`>i!P4OM#UsyC{S50&0n|XH^PY!}t6V)=e#3`T zb>_QAVh86zE+jO}Ikx_ETEVv$ZHId7Hcv9ParYcrBpo4lA(>!oC3arUoDBnF@&P(ZRIH@>Hz7|D|8( zzEKJLV}p_Q`a!1h>USFV*_3&uRdH#$r|~x*J>%k2mEIc}i#D+r=cdJo9J=_d+1AEf)IZRX%NMu$DE=M|9S$IL8I(yyQD-8HPh zawMW%r<8T}&i58W2BLJ!IpaRCxJL3d5W#mXh;di}s7Ad2G>nP8SCGfA64qqB8Y*38 z{z1S7=bhmk95J~>8>MTquCU!-h7~^!t892z@qGxaHDSb{u`Po=ucN4vU>izm?s8Z& zrM(&{>-UQEI3F|Vr|E-OMaEU{4qD9mcA|pdf*gntxlnC6cWvs3_{^9>Wh*hc=t`yG zSLCPXe!H@w6G2K(4cS<}e{`{h^NRmtKG;>`so5=ZxmHyZCsRO^ib~C%me z*9zIFj46G6$2;2RNObO&=4E6S4r}UO^t(}~cRg-*03RQ@>4zAGC{MlrvSg=|owx_K z#U9BmI$yKe57uIRUAouHd|=8o2ikXELP4jVFAq?G;!5B!6-bW?o9Ga|nr=uAdlPn{)I}YdnRNUofiq#kYq>PEe z)F`V=#jGbawKp`(vgk>O>PF+be$paGT zPUc!mHZ>d+?VNNrrU<%=RJ85JDHX5IzPYiy9oUd*xZ9v)LuS%ZLW|;g#Z4kCXaX8a zzf7wy&cl%-`@T?ZNxClzP*jg%pMlUIFtsyX4xf(W7Y%+Qdf^R;N0xJo>2FkHm1v|k zvi|tyw-QmoNf4zNnT+b(feq+ZWt<@stvAWEy1z72R#WjvcyOt@qC_3wyF6x008BmC zDcVB0w&JP+<6s)LSnnBF@0^u8O{oE5c6oD~I{-zgUmS9l=z8=GD=9m1FFwiTI+Jf@ zj3c(b*9lK-v>rwW&O@Aqf_HAsd#jQnl~*(|lC%)}t*pqtEm707iHlZNVR*!wIfi+- zMQ?&kk={@_x!xSnR@IbA{(M|AY`VhGT+ym6NUNN#_ya^r8W9sWB-nkpwREKysc zjZiE+R!KQRnx3%H=qot^7V^#GYhoCWCsm0u zj6k??v~;HoOpw2BG#{jVyZ>kWJ*u(oZ|ht$cY{Ue;zR|sm=m`t)@P_js`nS%X_5^` zeu9u|;-yANP4=ml6nY5eIn)#bEiEhGk{pi=$rnLDE<)wamb#_I4^{Oej0mx8O zcg<-)CVQU7-vMKps>!n``UdzV5!w7zhDO?VIztn%@ZmWJVXoS&&a% zRkNXw*5eYMtjr5|SpT!r(^W6O{JVQf!^;;g+!e9}#X3^|()e9Fi>#0%Qk}4WQoWPA zyj$+<%w*o(K0`AcslsTY0dTa@^utz(GwX=0$7AKs{6=-#6onCr+$H-R8~g_}l{r%q zmno8MD6skmB?G$1gJ|l`SIlo!M*H~VT_3YjKJ^oh`?_z=3QZum6b^h7)iSS(@kzP| zb{cXEeAyC{dg8reQ#s^%Oop?eZb-9TijEJ{Yu%%Dye@WU5m?<62dB+f8Bzj z-3A@rT_oFu*N^3?HjpK_5|)5dy>I{i_Vr6C8xCeXCnq?Sdk*{UEbetM=l`xE+!;9S zScgSJ!P58(#!lwC>pbb6LY@RZLc;YwW-$=f4rLqnvIMDZGgiGo5~qmnfF(7wwaIeI z&+^+@7_<@vQTmsq%xx)Ji7F5+2u%+EdSxfvQm}&zOU$Et^BlCznCb{k(>+*;56T~3 zBey2XL5y63ABAtGdI)9M#ZP#HTdHos&YeY3g1%h6y63+;mjy58q#qm)Xll3l)I|7@ zSnjdr$V#v`8E;IS(jWB)60(xv6b)!Lli0nN*uC(P5{>MDONaie{^v`kPTF-l$DiL| zAG#C*O!D~#0aU~>r4PHnCP;2k(cJwzqF4TR@8~yFUYg4P_kaK2>+ACFMg)Et>OAZ6 z*K>yc31v}+;cvX22PQ8q_hBL%f4Llyo9D(v3Q3>t%~?h%+U$qRu(@nbqKhu{o=(B6ibxP zB6Wc-VAQ&rEcXFYHgkMQorp@L%$YgA*J}|lk0;`r(7sY~$Z8DD_SXjuNa;oD&8vdC zz^J+D$wi3;H&6z06dEgjl#8c{kbwFfB+;%Ms4{~{cz1e^`WGqAMVeu1*z2+1j>#F! zd;wmcGc&i9!N5Q74?KFh^LoMP0RY3B67_t~-yKI?Y6;WAYBcXTaLqfwyv)m$Ze>0zHK!zF^`MAv<`5 zfQ@b2>b{j+csf9cF77jlwudd?agyqp00a}tY!Ga@xl$a#t=8JLR=(hjUu5Cy4*|)d z$R#xFE*CkLr%K;*kV_3+9kQAotcdGjX8Y85yjh2DN8mSB7xqVV~djhZ!NY6zI z{z0@$jce3uwEaTRLNIa!NziiMWxLw`d{n%HUWYyE7gt6?{lBm250UPN=#tY+2I$VZ z{4y?G%br=dNW6)#&--4QhlO*_%@rNUF7n6Q2QH)7L6s{X;-T_~w5NmwO`(nmfll*? z&5TRZfBxyKXyGGmh(TQM-= zfs$2fAuJP(<{2Z!*NC_qp(jCf| z{moGao#Irvdi69WlDJHeKHwi~May5wL;-CSOe+!bpfqU51NB|dz z_P`@aihg|SqEV?Ra8^$l`@e!sa!J(uuK>rUlN*==3G+)EhD3KXR$E(-55Gv2%o422 za9&2gBF~7t)i#KX*lLn|#G7g3?`&!&V~785=txI3-H@7pq!N-KZCoT699Sv@re{up z^wrZ8>KDpUVE{gJU?Lv)9!HXx5R;#gpLu;|fA2awfG&IyXlf^&{YUYhBtn&+mo4>_ z2odD64LE*WBJ%)Ewm1g4HwCn-EM7PJ?T^VPcJ9>f%UclNs9Q;QBqfb$3Mn+OFa_mswqf}FuO=3am~0}GXC#x*jS3rtLg4cb$o?_FPi$PL>cn}gv$GhfJxiQj*8N-dE<`+Fz zgn!P8(+S>G-A@cecpiAg^>sUEn1p_@u-T~&d?tDt>a%zmC)lY|KfRQB6JhrShk+?n zmhmn92(@dfp|8yeDx>Q7=aS3$-SD|LVGYVbTq@E7#X7G2BfWJQaw5sslnG7GD|Z!c z$#WSkay>4vJa+ggpK@>VK~Hf+ASxFc7nwG9A&v2t>pr!g5FLN}P`okP&%Y^SjnK{i zNb{-H;zE=(bcUfPo>zd%iiH9R7I|Me2PSCWLvg&DC1c=KDv3XmJ_%}*6Sie%kqz5} z^YJwZg|za}8nf+HgO-P*yAimXZ6T&$x@_)qU31C})7pv|@c8Q{ z#5LQ@pjUK4;yU&$8YO+YRK0v!>qzaGRp!&w|r}_$}a3kN)*vhQQuh3 zo7Y(!x_sHl$jB6ZClWP8q(#t@Dn1LT2dY50Ai=zQbRtc1#J?HDC-~KMS6v!Qr z{C&!@RM!B><_-rY)P-bW2N7jlQ9Rxy1-MSKfN(dlQhjM69Uc3K*@V;Hg2|{73G3le zU9dMS;u0xtq61?S+HR^^LYBd%oH3&{Oy&by3id{Dl>Vje`yho0?IKwdnGe(CeU3Dn z$Ma*!$WT?qx#-+m+l*BtRto8*B6`z+>oA{p#7ywava7m5;0@(I~DD4Jz5BbUE!uU-!nIT26DHzrvQ z;HYj&MVsZTS0~USa6Hi0hJvH;U8-Gs-gbn!rQ6^H@1eJ7I8t(gLs^SLB%*?l!LeYz zh_b)=>^At!LbBk#Atp)&2&}%hb%N!M$X0-_QbQIsJIn%r77&%4h=Q5_!z|mn4DDs| zRa>=+bzGu)XQoVvyc5G+rKYAPJCk;ve&KcKqDFu-wb7X)iucYXl-;fNYno*A3R#KK zlO^#wa&1q{{_9d&kH6t2kvfE^Ng{)2Ef~W{qlH23N!)-`Z}LM_gL44xDcctEmL=n4 z*|G~hl{UGY3sfk@in?MH!ZM~?yh?~ z@tR%SUeTuM`1}|QKAz(;S}P`K3JOCGQ%WeA^DDLjTp8m4(t^Cd%>^nPdUvedF%}qA zGt8@;wg^n|Izuoiu31+80vCy<#q0e5J9BKt44#sqX3R%eguZI(`R9rr!AV?CSFg6B zQKW#u{(DI_UPzPh(AgT)6*dy(8e8nGPBOF4j$*F@BeYYc#bsw z*ITR8OAcN4^3&>iV<9bqd|Yr~Irv$Mvo0Sp*Y-Hcf?{h((JsM}oMQsTpl<@8t8rD# zr@q0<<~y_hICe*f&EYXLs9Ln9JBvaAc9pKv8d8!aFtGQ*$LC{NJ0f+U1*JLXaxb1Z z_$j5WWc{GXP{vf)+U`Ah@}yB&cwr8yMj{I1Ly>?Z_b-=&TG_Kk@Lh83Sew-j<4wz~ zfIQ4*0JZ6C;v2q2v|-*Oa+a6huP;o}ACh zXiEYL_cu?BUOg*pVOx{={7!klgl_S*Bx3|hgv3vff;PJ>(G$h{>8Eb%joON+b$QKX zX^2Xi__=G>uBBxB<3>piA`K#nriqaNYP8{NSuJ#t_w2*Io5_S}E2*OkNAOi(oe1iX za7J8JNN!6%;6dHS8Js5}6*5-H`0I-q6RoV;-TD-pPDQ{-O+|*K-QSeaLJClSbJa@R z9}E!fAB&Oy{<$70mpMeHH?NS?G|7xa8Wf`vcSNZwZ*x03TBbr>XZOfPrmR5#f%2ue zJQm)O#$WyuHQzLa{>|lbB*aDG2*i65&nhBB%4j)}QK?AEj<@txT3V8Ozcl$-$h&n> z@^XEBcmid10ywe z1Y;#s<=&LLjZw3NABbZD9fj%KLlnd;VN5){q)NR{2X_`u&0BZX$UlGqvUby$Rw!m? znKhqC#V6@Na>ARMVk8E&pQE>Q^A63c9Cads=E=!N<*WFmMEmqsKXUe&Jy}dLxQ=*- zg{0at8}=cYs5Bd2-P13VvPSpc7!3!f24Q+_hx9)?{i1cN5x_q(;Qr(6xcDqZZIJbp0WT_d^1EWQh)D(C=9<7KpKE9z| zL=*~l)`+DqNsvP{cWN3rXY8j~K1I(%!7qgnVt?yb#|#gCkvH5olLqzIK;tF zUc4y@AsGLjS3^q<5v4FcJh)a(rmbLaZ$g$<`AA(|kI1!Ani?j5;%MvIIx!{#W!A1x zt7jy=Nl|}wR!zXo_B*vTX{<$Z%EX?1Mg(8tURB2<*P9H4fm5Q*n zq4He_nGvbC=(TAmQ6-k&I`^N8Go{{)+PAY#k#!0Iq#WGLC1FeM0EsLfvClP1b7k2x z`#vBvbR;~!h0H>d|9Sqv%HnTlY2gHGqQ?{DjA9d9?UK8nU&Ycik&_g#Q z!5`Fjp3D4!X)zXm;?WZ$0#8T-U`13kFE9OvePLR=bD1gR4~2IKJvjarHsEvpmluhK z<$vb-AM41UWNh`fIL~{2zP<ELK zU!x3+jJik$P)P((^Y^E&cecrN5MAB)^XeMO1bj+=$WdcXEEVoneqr$39gYObCd4OM zR&ECC!C+B8f=e%P_o)Q%1TXiEYcxmqx@oDK`q;8d+!V3zi_yE->ph8f2ZN)%xkl^HfN zD^Ca)4hLS#&cX(|?$~lNOX4UYY#DJNU?@%t2%o)N$MPbOz~Wd13|-cMq11#^jXgCD zfc+#HXMj@DM4}m&AS*PPNcE5#!W1dmH>7Prox$d&sG;_hU69ceu_3BZex4{O>nSUc zDPL3iO)=3RZ{^f*H%2Q!9VS!iIZ7pTQCqtx%kNHOc@II%xaUxYiH`RMGeyq~iYjFQ zE|UF+4kf6lr!F8MP1AR69 zC0iV25K3R>1-wxt!g4dg!{XGm?~UEE=MMBHZ?{L}WdtZkk^;=FEF<=q2N_w>PCqbd zx2y1)C|8KQ3`_=;z;#X9xG8s3#K=Ck)fvWTu{!#A zz2o46kcGEt_hjh1bc09_K|3WfZ2I(uXQw}Izb2&FUAl%%j1`iRI%3ub3l%^^-dpR| z;-2P`<`5Bw9y%M57&vnV)>)6UtQ-YYic3YRMOt7k1p1J=42nCgq3%V-OF0r36l6@A z%fvJ2T5iFy_@3c{B4_#+HjqccP0}*SkXHd+AnB9xNQl28^+4Vd7zxEHe;&(Wwqhn{ z_(7#F^(VIibd%yc8E=gUFo9C1U!?4^e77&a*i}uI2&KawgOib1MaI088}kug5wdeUIr7^gC!z}j%oG^{N!?3j-q zzuhNX9g_^w8d3o%2yRS-J~(~uTvJ&xVwQRKjQp~9S$pW%8xBkZMZk*+SGWr_)}gW} zL)vJ7F5ab5*4Qq!QGdEwYJBdEf+1ERJLUsw(SuWAuPMzPCo2F@jxMo+?%<}Q!tz&l~1B89xs-&Zs)QC6pt(ov4j7elqBk57;V0m94oh| zK`<%ZLooZnrDY|BqHq)P+nkmg*ylU41~ugnSCvslATY36RS4pb-oXTsJ6A z0)xLkZ;VcH;J4+-VQzPng8(#E9MvyhQkM3;fhnKnG4$k+RNW=;SE$%Hy&UZAh?((fvtQT6hrOYw1apW+2YZKPM+fpJ}CdP(#n z=8%%&sh0kKl1s*S;vA#970BI~j*purQGAW`vf1=7!bA~a{{zY|^~eLLwu~W2!0C}G z0dht2T3>EII6D`36~cw}S&yG6mgF!Zj(p8)C|nPUz$u^_U<_D9q2Uo5w7~-i zvKOymnZ$re@*mqnEI7`+Lw3yJF5C3|zK-(qv$mnWtK(t(Bx#FOl%m_?EGvEyI?t5O zwgjHDrO*hx8}9TU(QQ)4PNuPdx6(Zj8U!oAoWa4kXq4gFI0iXc_(K}0`t}q)jj7G$ zW|RbuCr>6zX{aPCxeaz|PUdrva)O#oG@FuENg*XiVWFlxf`&{b0^g>5G!|_e%j1Yc zn*%buj{m_wA$~~*%NyNk9H(Ie0dHVS$P@$@mltteP`k=LnJ963GALD2HNg=hhmY2% zl0bK++T!-YbjP$8`LG#>>EDDfhav(?Y5c(6_8kAT_1+-MUTi}-Si$Y<7nR97K!P<4 ziv01}(M;0JWuYO$TvmeLI+vMfq=et%pVfZ^ZCUJ~AB6Ok&0PmsJkoQ#rQy4c(KL=& z_Or+lt;#KmCHfEk6XehD?#=I3zetZShY)uLL`6BbCaT*D1%^wwpMVzzf zhX1dh#_y(4?I5utp^$TQ_J5sg%5HW3ZKj_^g98(#4!&`c-G(Vv0usgFCmNB$!jfWs z==ze6dkcHyn#}z>B}EdQ>m^PA%Qf3APTi$76~8Ox3Aco9bys-|zK{g6EqPklrmmx> zCIla4=t(F~Wn;iG*_u_QIf^C7(35TVR8X-;q<@jOcNoZ9sB(Mzt~Q6O1$B8OrYz2D(o zg|`S=;4a2eOk_p1AsSVURFj97O+v=WNW^8sLP!8Wzbz&{rk?K|Y3Y)V%8%1#TLSV$ zN%9v9x&$SjN4^L{<6&&obKV(FB$R*xYjCJ2VT~TT)fW7l6q~RxjZ7?EtOZkq%S48J zpMjyW-pB59T*i3|E5v#LlM&eO`0>y3Bvi@11d62*-->pUH+?&g)E+(uGa$HE=d9en z^O3rI$3Fo9xUM9mhSI%;Z{)p5ynIluw^qH`it=BMT%&;~KY++Ei9W#4N`W9cn;jzC z_WyZ-va=yB<@r_kQE5v1PNEw0EQ z0RW+UE7d6#vYvM?3WAKn-n7i~7PD|t5n)h4r+1#o-L;fD7YTSgo^{mw{PZmpG@yq< zICE;lO4=*xY9)+-leRWG>jk<%@ss-~Dt%;5A5E`pLe`z)noB#jp#BhLYaKA|w_VHb zA-JZ*S+rus?j&;_4O4~ao~6-c#YOx^n*x`EYz8_(Ir2nJ&5|@p8AFG(5hTCLY;h2@ ztDK$!Hq!PXu$EvtX8)|2ono+g_7+Qj0OBeOC=g*7A3sdJ$-BZr} z9bv>_pydQSzR$K-j(yg@)G-29-SV}XBG`fzq}8Oqg9 z=mJkbmO*cGBnQ^xe$UK0M#!Qw4D3X;4<~tC+)4Q@qlocmZOW0X2ivh8)al zL+QN-9yuKvI_-7C3|>mk8n6dup>{+SCsa+;{LPL5uO#9>IJj6bv!aP|zrqA^XOM8* zqET;+REv_J;~C2wQ4~e%gNV|VTzO;e65N)AR|XWzSrZso6VSyFVGy;dP!01pRY{$8 zy^+a538n&DLG%=J25PXF=aA*134Z$~ss$~HTct^Ic#65*jz2=wiH7Zn&#g%%^}oJ|>VmV? zGfZij+YIRQ&(^Y8lMAMw^2`%T-Me}iIC$x!p8K#%R=b{x9s`?!cM`d?Vd@bOssQtK z>Mtp2!SbZ%kSt|>o?@WO5gz`d#ea2qHR5DCsjyUVwZ-RZUS$19&XVXsf&bxEbCKuv zKorG=vdc1l$tcxF%$mqqW85aq4tJEOEkvnBVb1%?#iVr0C!*%C5>AS{ZWae7ytNDI zg>>oQmbHO}0|f!1uc50aOvkOk8aet{^0>zRqZ{dk(vcw`$Wl1nwqi;)x>tg%2DWbA zyrkH|^;ZA^JVrQ|^Rg`M0C3G<`HOrEGtQIQ<^bS?^RFzrL`5bhl6uL*gFT8G@NdJ9 zcx5?ImBm7l5h5DNLj+r)CJ>CPLx=ZSU+#23Cdo+;L{nv$Vc7BAsU~^2Ez$0B26JYt z>-|}~bm??=NB3IQz|;(!P|5%}q^EULT)I$oQm6`zOWlr^XhH7PswOIM;!kEq?*NVz zD-4`UM%*r^=e&0bc>yV?F--MdQEvw8yk~oov9<~T0lh7$a`z~3PCftdBl?-vJCYOm z7$U+tdv@H&@ma;(dvI;wcU<~97k>Q!ydXU@gL^OdJonyau03xM-4o}yq$bi9MAmjQ z`4i|^^j%P#IzO_TDa|BWw_EWr1aFY>o$I2Ma&*7KQz&v&0i2Nj=HZS#EE;>pWVZp4 z!ZiuQmfNdEYQv!clf^40r7-!ZQ0;G^!Odq~{!e5b+Z?G*MX`lyA&j2-gSJDPx-Yv2 zk3Rp7S0^3s3JnOzkarQ7S!dvU6%V};Tr zv|WZEOL@!#Ui~i#ZX!8n#vxSw5KfNG6nfI+oW|9Mni zWcI_tU-r=o+3_&Nr*1uOd(flsyAnLb8nH*cB9w^tf|&;k&4&UF!`tAKd5tlJcD?k; z(3J14rn{nR?8yh=t-Xe_EM*+l+E}s&0I83iz3p!g9;Y?)WHAhV#Mp0)|_3?oFXwn>Ct{~ z6+ogq0YReJ3V)Nmv1XGCNeqA*91Q|};QFRZJ(Yn}l+h1VNt{pR?w^x6m8h6y)=_=& ze-Dy^pFv)R8nx^B=Pjs-ITbI?+zovEbN(TeRQ!4Y@wjtIbrEA^())(S*OBc>hL)s~ zAmg5O`9yjDLh~W`vP7WtbM5bDv(>nsN=FJ=iiAKEh5ub^N7C~-h#<+?1@OGw>(#E@ z4-@LSZOQ)qy;&Uu3WudjlEd$e?xiVY-*J4<4v1fqvKfH@$S1hM-J#kT-$kenzrei= zMi;+68D%zw7eV3ic^qYyx(5c00GDQ}$N`5Zjfx7)6r%{r2t}ALu@A_21OJ~ZzTJad zBQq@zLea>kmZ^J~^dN7y3!2oMfpTGpD%BxPzgASp$TvZEV7#RXXS6PZ z$FxekZe?z&S&gex9Lp51ZXYk6ml}&QPjS9x`leEUyOVICTm#>qo7K)xqNP`$NczjgOB5Oy1sw50Penf?v)9xJ&7-02% z@l5cP_`VH;4n{$;KqQ;v;RKW?@V2F2ZqSKBwjUsTLl`V-RN}cXINaT;mh0a@CeNHu zD?_!*Ntf-z0CO4e+T+5IBP>8#4I=3zaTt+H=AiC2z?~%1;a+)(w}j9kneArnQ$2$^ zoUu-)sJA6X$;!%q(8IgyQ%_T|W7T8fJD^ksm}#IQ&H1TQ4Sovcxv#w+_68yZ+E7YP zUR@mvA(~y4;XLdiq(^X?djxZWSl2SZnD({SiN(W-5htU0w7^i>ZG$NEGBVgFD#vB?@O%z@%J%!Ht z*{pUpqZk0V|LKiUo`C#De#k0Y^q_mniM58?jAj19vSnkYOxd%>B(GK3-StyX&$=vv zB#9%Zl^2ZOy4-I#L$9S?<_f0^k;%eoc0O`=Z0@6xEtlIgJ3DngI$KRrSkyP{-_cXu zWDr;h2PXf`ey4TdM5N82AOaPp!o_nGhC@uU3h5r=AMZ1BZn}rWtnsI#KA@Yk(9>km ziCpJ3rv1G-W|Bd{t6*2~UZ`Z*$&g1OJXBgh6|ki(w35Oz(27DQ#jgq^WQ{5j{V7NT zXA28`K+Jgl90gz=BFKjl2P6XzSd)fNhDCPalajR=29ES2PEn~4D0kAME4m)f+^wg_ zm}?ZjW)!N#V*vihv^}g#7PwO($|-?sgC8bd{eAHNWW0Y?MxvUP>=p+e3dwL>_TGlkPj<-GRWw$@-A-| z0E2J=h`hY6+)U9XHUvO`(JL|{1mF^^T*x8^ zdbPlQFuWFOCeY)lMdp@Q$+t5;JNYI_#4l7 z_y8^9uNQ`1&>9{D(mLPruEjTxf~1n>E-%r<zW=b{!wKxia{@xu5FAV>Gf->( z6`82li&V<{_F-~l1Eu*AmPW6{X*6llq)@M_b@bmT&c=ZEa)L8Jb+hA`;Q^CH(n2ii zX10x|_GHGL$YDA4_{c3>jdQNP3Jm(at;q#;0+KAH0}aU^WrQH;gf+2Azz}7jH)__J zJiEt=oQBZn90#;^PrJ;{&lFyZk#1lXqP*wqFKHYCf=VQtm<43275ojqTY_xB#IidT zOSls+FGrWLMKTOZSb-r!hWLi{<6H*e*xYC23zmtvPJmFUOWGX{&K$sgl8LVZ4v|tT zAH3-*RnGg1MC>|N+`q#mO$)AH(Jze~?ed58#Q+tOGUE9`Z)_mPQd*?5n8#`Su zWX`=z)z^2MhD2oP#HAE$YB6!+s(^K?KGu%j;WP33<_^LBp20P53rfq&+pWKZMslzr z(F)^u>s(EiucY^_`<`f)%Y6oxV)*3F552ipXUPs^e#3SY!l}zDVtor$la~$4MS1@{ zdz-q1zU`ZNPM7D4fk7Gq*g&KTi~v_bh}9irg6DiEc(-X!8da@X=!6CD!~T?;IzcBv zW`;!<-BzWiFL5&#c>$Bx0F8@hG*CfGhrIP}ZDrOz8B`RRlQ>r0#1{vx49^7a5m5zc z#25w97m2vbtM-#!qEGF0MF)uo|@J8PR@534gI3{Y%~)po9p#1iNQNrGahIC z+j@5fGGY!wJW8m3n$2YIY~|4>t=p?-#gFh@->P_S^F}acG&#=?~nCF#L3oF&VT~6 z-78bvo!yPKpQNOmMxH_|OaZ~=E%q~Ee2jmT+?S+) zlDN7wMZAQPL6myDoZ}LmVeeE?@MF|rhKVcxE(n?9rpoB790n6LLBYw!@iypDZTW8W z7R1?9zZkb=L~bZ~Sjs?mv7}DWc5kfwgkP^Z=SZ-YOrpV|T^gAitbwv`cht+_?tmbr z|5zD_;1$G>nmm$#leLN6Tvh(*@|k>HX@`Zp;zg?)m#7rQluw0Coj?0vA9PYuevVat zG5?>1Dk?LZ{%UDH(*)_|r<(UM)E?4{W8dw}X#sJtpFX;nuOI>W?fPL>qEM6>6fkD2 zNE{x@3_1FBe5x|ckI6}0sgo_cb>YCSs&bbxlo=C^(vqGk=L`}j4Fc@hKKLF0D@0pORsOR7(Dwufz4dj6o;pjL!Ih z#sSKV(puz1NChNNi()}5E#bj~g}im!am)2JRUu{s*XK8fjqRs1_E$!rB7;EEa-{a5 zLIK?WEF(kzW9vu$c4lT~h@Qo-iDwMB;sJm+7Z^-OLlx@u`(hy@n(S+DU?7=7Q5r4B z5hM>#|Lk|hW-H6yb`BmlC5U929UMsFiXnkR-XV=+gMUISuczhZCiu&2gM_K8iS*NU z%Wfdf<&uk!Pfx#CLaW;e#*72*SXx@l0dcYj@J&g|P7_BkTi%3ophFtfH)I)w6{Y9B zyi(!5-17Dqid7F{2}C!K8+#z^^Mlv#O5OMl`qMAHZ;}rz@(kZN_~Q4fsvaZP~J= z3~kqRrgTF8Ec4NyA>`bbxJ@h~nwq;m3HA)ea-g)YVim{=5O-;{ZTsooe;_Lacp;YX zH{%JLf-;=6n$&7(X^krx&2pjeMU*8`c1xG`2I*`J>cp#~F#`3srz=Qnl23w@BuKt_ z(*nsL#kpkV_2{uEVMU`*#^IFCefe&1U^3zoS)iW}?P`nM1_s@@^g%n3D_2+ZJ23D) zByL=UawJ>{iB6=D@w)J}NUknd}Q%kO^Pwr{_peZYn2$L)b_*7Rh3hSUUEoWdH{m`?z; z)WbHg>~*-;KSMBZ^Oa?zp0y|n2nY}fp+n%0+9ZdAD9vSd0apUgVBy@v1^#U?|5?bAwYq?V}PZ94_ZxB!4rhG>2I8q4qZzq{{#&KMFS zFWBU6j1CJ8-Av2PoUX2dri>lCt)pr*StEqT0Yz}famCXR09p&~%JC`2X^uBHx5za6 zw+jdDTxiEahwB#87O=(jCZ*?lq^+97aQkuN{EF|p9DG+4h{TVfSM7@@3|Nggk4qf~ zG!Zdv%bVg=XT9N~;VyLVFm7XXMy|=ft48?yO|`ISD5FztZOZKXaRX?7c=TOZS>UCe zS6cI$5nw^K3v$r2XHTg{5;L1MYo;_3;vvrMd%?^4apiUP@|rcFX`d9_u(YEWI`-7m z(&A7z88Gl63n;6vDL9D;63UZJht8TA`` z1|{1#l}mtmqOg+Cm8`6N^w1F0yT*4EJQom?&JD;*r0PoEf-!IVB6#&IF8VU;dYm9) z1_4LG?FH>Ya1MLF8JASuG5D=LV~DR1HB)Y70hc~#azxgqF3h7a z1?vPwK5+DCWXSrCyai0v92(u(A*^HD2A;P^aV2sm$a#Ypm^;ebAZj`PjLJ=-`7Ec& zEJxv>D1javx9EL+Ic(iE&p7IY2_O+t*`aFmDg2a~SK58zrKtWsd%-gJrc@2PZ@$P+ z4oqko2C@Sxh;CXsdeYraaxF2FKFwPvcouj(Fe^Kb=#LLIB?S+!z6t4Gt;Sg_KqN{G zE*VkxaPYB?ReXGWxYxj|zl_zI%@*T?V6_TRU(LB*`ESB+{SS$DkpekE1xJERlsFk1 zyWmEfiViqq1kIZpKHm5`8`SwuRc{(w(+c;py}$o>cx_tW2X`+X*d58Zo$G~F>r_=$ zWeM9}Z+0fb9C0oSAK91q(K#(!?-=WK;^fKh7tU;5&haZ+5DF9dfPOP~j+od#x4+L6 z_j~=c_P0_~Yrl`)R3KA=NE0Pe0}VE1T-eIOf`VpPXyAo@>+88_Q3Jlt#)~RfyWR{w zc5Lf}{*O8$qJuc*c|xdj(eLUxSkAQ-H`n|+j%462 zFEVMn_u_Tir;;4;qqa7o^^dZ_4^vXqc?Vd;l_`z*^mc8%NaZ9({&}zeR-NVkJKB@B zs*_lhh>1k)DqNqONdz)pn|)b4U!vs|IF0c9-M7cC>zyEU(5^8@VotVHQ*;gfasib&9{=b4&%G9HH-KRH8(iz4%x9rk=n2(gd@Z&$^*ooYc$C{f0^s;uHu8 zQM8P?;4#zWX!NyxYW??(gGR|w8BU_RKVo1fx$M7>&uf*~qsmqt?z!dorjwfNeP1)l z_6pnyB?j+?j{SPg?4U$J++>Ci{u-9Tn)_=XGx3R=9rPBl#IuPBf3nr^s`eRe-|y^0 z%`ekKXAOMSzqrKU{Qe;;4)3#3IcYnquNfk(0#`V1| zG4CErXk_m`^tp2S!MM|G|2T8oMW;`rL$e6O+R8%Z(7O9&<5(_XDk9qF;J$9U%`WZ( zpvtN(a;4bVazCfUBg25^{p!_Lk{H$Z^JGJ0`Zw&~1~2N(ttI9yD!LMguN-WgSX(5d zG&ooXwqNpz(4w@tH@#+Bgmv$IoGZK?bY8n$Gu;zE$v~j7=mOXQZF+s_j_GV6rLjk> zZF~K$7_m97K(nFtuB-Na-0mErIVc8^|KzNZu9-R+!h^d#&Z*D+ywbb+8`{~-nFDaM zZF>KT`Op~veBz?Py#S0tizmGgGg4n?OjnXCGI@s8G_J=h(u=;=)G#Sm6Y~IyJ%U~| z{jE?|o`2r2X%^?m+9&sxhA&#a{MR$hnl))6j(Pr+NQkJNkz&d86bcT28we2d$-M>h z%9+i)+lI@D2eSGn^&)+g#3%p-in)OIz(vLp3jeoDe!NQ(hcV&jobj*!TB6F@8J9EZ z$V{J;q||_c(p1lxH_w9H3oacM)bK4I!hz>)ZxuFGP#kYz-sM_$?JF*nwpxT-uTasW=We`PrN>NRAIk;8GK@(Gd1h9uk7Joa=&0jj5y$xKc!2CsgaNiNknY0^*^1ps`)FcCChXzsm!uCGejhPH3CA z`{jxbM%!Wb9wjBo8)68#JSD0TN_~yKE0!(W%$lQ*;2UDwOc>mPpz*-u-dpV?X^XT` z7FecN`4mP@2+*9BrNcGLY@!L2iIf@R*68t^Vf?6t+jMCJL9yo7fQjN+VG>;2L9Rxb zjLb6ND}c%Jry`4PRxBSx z@a}VYJI!=@;hK>m%($u1GcYhvu*frg?@>Xn8zva&MRh&OU()nH9k)Auo>n1zNX+%3;`-C^<)-?YWjRo0do(nZ3Pk z2(tER(>7xZ=|S_r&50u?cjB?PO*0S?4(w(!yz?I2bf%nB$>04S?7ew3mht;Fs<||1 zAZ0FvWN0!^DO0JGip)haWhOICB9cUeP$)@A$V?@3NQOtICvymyXWsp(?{BT&S?4`# zop-%|owMH7cWA)#Joo*%uVG(%@2hj}mU3{TK(S0d6I_4DX9BnjtAg#e zM=>gZX&CM)Nzl0YxZY>_N-Ms9-@5$e+d+UH#7__=dl07I* zp%E%7y`R#X(maUV3RIAu*%lv{bnehA{(SVX*c@IPXdbqGihpw1fUBC{djDZ3LK?*Z zg<~*s06M#9OtWwf*j+l0)kGSbYl$HpstZQMvK=5YMn-Q7tWhS3P7 z8bublXmxP6@6ekRbiVmx6BV$eIg)c3{?h(H|u|dTcXBUyN7z zVA1L`H(bC@B)BFf`;f$mdmBI>ps>CL1nEPjB9u(i{S1tZo%wS^h46kLj$Ih*JjW`< zt9_(|4j}7>a(WF%Y!1AT zC43qWG6DKg%;6b#9{im1^4RBmgAFt|OU`Z^QEwi6!3Oo0GH;j3p->{r0~T`ygIYkB zO@{W#m_cO@qX7HTcr{&<5G({(tv9S+zfEz&{QNxeB*T0GW&`?YiZFA;qc<(M)Ln2H zZwJBP57P>_JCYDv{Y7%2;PFk7OPbgWmq4zg7~x;auwcb?CQl3;<*hfI1da}b2A>jh zZQ^Ip)7vY5?<_9)0fSt zx5(&hb)Xgj9zpiOfwBg>3>09sT<*6Jh+6nn?=C$Iq8eH-RK6$)pod&fbX+)o7~O)e zga3fC$-6w~kXUCiSNislk`SOIkZ|}~=*WH_F~YtZtdK=q$60_$(Mq7nh$N_WM98Uu zf_TfHwT};Vcg>vtw;{zJ-fvf+@8IF(y{(o29C#%vL!2>iX35j`Qq@W45%<1*>j=Y* zOlrX71D@w&;fec*_++INegm5guFsZsHlQmgV|^px4ny5RNt>>%)mC0HXeb+`%Fvq$1Z=U34Y+42=;|9SE2NM#3H* z^w_`<;aao{U0ylETje5->O|}PcO+p2Ls~-gr5vlwD=I3GamQ2i$i5xI@+37s@KZEJ zu#6z+Dyj@$$JXAS9-pkd)4VymEbo?e!{vBpTDnco>zA!k8!J((0Qf@@2ZiF#5yvkF zIkJ@g_)RMpt*}Mf?Iro))`hzcPW+5Y>*LX;k&TLav)@CAZVp2+5DLyE_d*093Mm#r zm=Gn7(vA`{FnBnVD^FBjxLV1*5m4L|EG-Ndg=hR*G$)!NpmL;JXBdpm!6&PUooX`V&g>NkSn1rn?D8%s& z5re!vzd~-0cz5Md|6_zA;oOqr0B>xu$8+W(|K}?J)^$Ny!j$HwYF!SF3p=HqtI?4Y5L{exO5IPGBSVF}M|F}!P3 zcDIj}zlBEpOJn0x$`~dOgiQm+1vB_p2T&dWCgl_MBXfB&bSGV~g$1b}@cf)Q^>yQl zLKJ!M-jUVUk5+GZpeeq1^#~Io*Ae?hWS);G9mtwx?8X|>%Q|>h5J?*a3RyxaBBGu< zT!JCNS@GbVxPdTT+eSMc zb=uC*8rgN4cZN+}sU+JnZ8CF<(=)vJEe0?p2r8x5TFe#%TLeW4l)spwlHnlXu`GUV zbuD-eQnuh*NNjLLi3XH#k4O?ksv}fBG`;}g@I-Hk&&aMtc^6)6U4 zWH2gn5HJIA;Uvr+l6+IEaG7z|2sa)=HDVS;);(nLNoAtzM32cmls{)dtO53_PVu5p zLupB10umDmG<#;L^1Ja7)WMko^*bxLLKy|L2|WClL<56zak8EyccMWH>$SbKPBKFE zv^#pyI_sryGU#USPUz$z?GSDa91aL-OvLDT8{ht}=fgtvUAGU7ZV{l$r_Nh?+HvVE zW=U3Pe&T&{lGt}5eq-#5Vj0vyT=Cl|ZlOfNEFAFPe^`^&^nSlOt&~gXyIkb<)$2ZT z_!x2?x~%eY;*gnJ{1j{!vIziB)u4S}6{*=PDhf%eB>w=?wfnZ;&lb0-Rw8^xxkCI&kysF*iL(_!Edgfl2)6(gl{8xDanS`N&1LBbFrs!P z#H-we$!1-HuVk+WIG?@-F9EMz?Q+{{!!P9Y7HhR}q7=@b58Pous7x3=@STt!-evCq zasW!5jwOqgq=B$RLJ%r~$Uf z)elUN3K$rXyj5Q<{28|k-E!^SVPnwBQv46rv;T{u(O7Rx@MI3f>T22CI?^M6?(5xvTDNb+zy&MM__!?^Xht!?Vl zwPm1X6HyGY86eyUjDWt3Ayfy_>ZE=Js_r>3RoRe$@rf2`lBS)(W!dzwuYXneV0wHna z?F6%cl=&DGp{tKJPCqa1{vyEV81KuNZ5R*kPA~&D4Qet`Q_1edd55hwno{4e({k)y z$HkNOs>mVCAwq&U;M{sl0b^xc2Vejczk_7dU*lyrdH&?8N(b1_VAJ2FDfboX~8+uIG0p<)$DPH0{6SjsEB;-_x#`12!LG z=RFWFNjgM513VrBL$EM0)8~ADzia9Vs#R;rB7Va)xVoU7lh(FF^b{ykXzG%fz4|7F z#KhKNmK0-GcfM+p^t|Y*a1iCK&Q&F4)-1dT>Mw7xr|1ypD`JLpj!q^10x?zs=%yPk z%uWH2i=uLbXz~dO9#L1Ztzgup--g!2mV3{huI$S9%r(YG2yKfv^b(318B&Lqqt(ac zPSj!OS?QlVjnUf^3dmvPM-hAzaf-q7T1d5D@EUh?#xm!=m2uXe)znryZw32O;!^h4 zUrM*L0XAx6N8v#SEQTlj;+ZoFk1lZA0HUkA|12VcA(>xH86_$m(DL1dn$l`aeD{shh*+X-uL?Jxh)XhQ!IQ6AaLZ*7iw{d;f^*#%K{+TdXbgcD>X=Hh|CS z2GWnq%6{6oLN4mAk;aY6l9!Lgy}+xyUuS`)3t0_Iw+OZWFDrDu#AANVU!N?Tby9{I z37}`;jlY3i7eS?$pJEJTX_;(%xIdUy3~pkaWpS_f)XF*m$rHH8q z)*T%tCb>U<{!|evc6}W2r5jE=oA;;t1P^;)eu;enKgs5azZ~18+2kc33=N1y;-kf4 z^0;!qi^~%)7O+nYH;eeK`}>nAEi|qeoP+WMlF2;^C9YWub8hevkT%gdbDL(9xy#pN zATnFNvNADkorsV=g++J(L;pa*h9tzj{sIxheWPK*LISBiBHr)FmEAb=k~ zzx?aEua{qvIEcDrsncVg4rGt!gtlU!cG5NXYPs7Vi`y*1X6mMHvX?TiDGMMF{1Z_p zMF)Q~I=#z&K^bcXPMo;ERL=V7z7R4!F;c%2MBD7;=}F`%`nQr$9zT7` z^Y9Cx+jis=($hdK`ApR-88sTJM!k?#XENe|CM0(TpruCL5#=27OC>;Wiv7ttC3e38 zA>l=luZ1hx*Y3D zx&x{L2JFOl#8%0m5GRax9~hc6Pd8EW2}@8P9yQ?1h)BKWrKd%o6tIOJ!#H#<&=<~c zbf52J_xJ^sL#IrKbt2dLi6$Hr zI;p#Y9y1lY?~Ggni|4-DcN$1v{fSu+#czK;JE2sPwG;#sMKPs6YWjCte;2d|WJI5z zp$c!t(jmbJm|%nfEb3QqEeT|adjXS&Oe}~;E`uKlS;>mJPK${qR&bMlP!TpPaP}*~ zwg?DGC-ygebjTlLbscu078Wec75IMc1NsFGCgKVE&es8qe^AI0=$|mzLtmKU4zT4VwaL@t^7g}HNG8>3LC#41H3c3BS;7H6xN zVKj+39x3aAnf++`>&sVnUgdAf!gGp#tbeY~|Ma2+{8|FeT|l5(nvq%JhJblypqO{2 zleo{MR!jRr-9c&r(E1QxSI7QT2N02@owb{38<>GSu^b-G&e`f8j0qlFWs&*=Pt`;4 zNYD(Cc@lWLK*U%wlu$8YvBMs4%)s&oiUb_P4}1`+vZc~4b1p%TR>tkyJ6x!9Y>+!F z_GMG%Mkx!#zzxdx(R&l=zf^LvF0$10*3HjLB6Q0;M`4rm$(PxEH$9Uv9f!3wJd<4( z3UE|z$0jj~&>kpjy@aAXHxm0;2`@$Hrd#7x3#XsIu5pW>i926cj)^m2ghU8|unoX( z6*L9`>lH&KP2kC`8@iGICaN=09p_63sC1g1kU(|G7|>cL5HyT`BVUD%d*-)hNeyqlzfT9XlKgQ_4cH@e-JH zN%oS=12nZKOwIWO8vyYViaM(0FU7?~GR|KgFn#{3YK0Ni8YJ@X32cv0RT~@s+F0@w zgGhqGBAuW^Csj1=2k8ZA#d2Og^a7-VB1}#ZJ`)%@VL`)j8=Lo{VXuOG$}G`V0?@Zo z7WxSohgY?+TYr3%>T6+nBffrSdOB0|HteL4_lUFtWEqhEo$5#L(7S>d$dKOOVv%8N z@|$`5kzR-g?}|ds`Wzg~?IpXfjxLx9hZDRGEh(NyMEY~j8}SjkZBLC~bBxUvwu$lS z?qrR9D?yFX6`2iV+h?F&#ge-dGirbk`fqDY(@P&Uy~mYu7V`dUAN4e$H0b-mSs?Ae z?HptMM3Ai@i?6XyJJo+A2s0!gXM_zWD5yeTR*l(*w)V4WmeI_;OZ?sMX+SF6yo^-? zqXvTLu(9EO?K)IMo^5195W)wRAGdQEo0?(_C%kMnf5q$Gpt?Bwsb3OS7l)3U+{1fM zTe=%K?G;wvL<2maI|ax?H`ztZ_;eJDhuOI2o`RIq&`3ccho>|1#vl_h!bhArN5_Sk z6cB$Tw*07$Z5Y-OlM!MpI@)!juAu==`7Z$26RwfDIm0#v5Gg?ytZ`F@gFb005~oLd z;dAQUwDn{>Yw9yveihm-9nb>B5W$Et@}J}2%s0*}BD+1#IHefDeO6MEFM1UGW(-B? z3uN?8#?L)u$qn#NA{&fAznCXm;W3jVq?P0Sf2>fGkme9?frvJ+ZW)R|u$O$X#vu9Y za!jdcmm^cu@LvZ4(U|WhK~@})VKjU)EyHjn`U zTjNpu$X{Rbs6^Pa?#whU3t``pXr&qXAuWy2?(p1ocq_r3-uO75U@X0Ain`OXAK)9K zd?KfoL3HsveMPoknQs{+LZAk~=<0sQ0GhBrO0v9D?_<<)e{@6d;xEYlCoFe@eX;1! zR-^^+EHP19t{Renih}6L*bR^^0zKaBy5`3uazDM;=p|b zm)9Dk9a1`Uto1tuNm`gGP8Vuq=sO@=Kr*9e_4Vd3TqX?Ti^~T-cH7*aJFsh4d$vDb z(mMA$_;bk=-{?ZZs_C;M&L8Baz?skIAaQxc+aUAcl1^D@89$|8LR%^- z=hyXy!r?^=>-TL=pI# zbV?qjl@|b?l3NZQG|muFg5aU}qcm6sUSs=X+PWy}fqFt_17^?S>R|7`)uu)kVfmKy|ilBZNlKJ2A}zv##^F zZDKaOQ8rYt8@^3AXsxmKgn^_@$xofYBOxj0p!7BW^P6 zN00%{i=bDq)CkZ>1tEt>Cz;}{tiT@xH}&6Mn18%O!G{76%^`piyHtEP*u!L~g;^=m z=$F_tY%KQTtmJzRg^~|Mp>S&^mv7rBRz8G*7Mxu$c=V1=#&|EfK1+*NTpae-xbb*5 zWHSXYcyw_{4aMW*X^lm{fB%+)@RwK~fEGx`f}ktoZjv@HsIHQ%Y#>Y@L`c*Vgl0pO zJ|t^FFLhE``5fkNK(P<*)QH^p@)4~D;ay(6D#wx-z^zY!4?tk*d!~D_w{IQpC2B0> zy;VS!+yq~Qb5M!F1mP|!&ZyzZ0h#3^Fg>|f&%ligoX3Uj1eFok@^*<9O#X3t*1$KB zPd9@G;sifnUEr1Syi9UN>_?F?H5(>!2rwu>_I7`dc}{T7it@fAQzGmW{T^QGtkMq~ zR9G-8yA9VsBH_acjDci?@W9#F$eua0$JVeF$4zpKZFmVKz-}wz8jZ^b4D7RjeQlsw z1qt;jDd*~JK;9>!X%Lf9ZV|Bw2OR9pGFrh8K<2@XBM|{lHil+I5Q+Hr&jR<{Z|}Ji zB|0M48#&%TMCVD=@*wRav^TABfQdFf_02R+)*U<6!fX+Rmv!uUq$TjR_-6mJo&`QC zv?#IBH(+jENQgcl!Xq*RAjbgg3PB{TFKBA|U?u`FFQFa9UvOSkdQsK43kz5XhJJ80 z4a$A84gfhq>%*mNl-B?^ppL*)seSH1Yb;_lzL1EM2p`hdC%ilO{Wa+6h$)pbd+*axs$!@&dx`5|~fBspL(1i=7aHKvB3uV{~fLa;yCR{V32m_%CJ_3jd+D$u7X`!L4!p^}@>v$Bd|hk^GNaSR{#BbTjAP4l>-s7^24( zOGGOGtYJ_#!kzlbB3Lp~{SPpAi;CpI zCxve29PJfE2VA_}qD}}?@Zpk$^c{c(=tVeZWC;=QFCa+dJ%inW87fEtL}u7wUw{h- zj1QQ)4<)I_m^g2NSlAxGv>U8LPAIHE+Cxks*e-I~_3wRT6)w6v-H@_*6KvW2c=-Sa zx*r^;d^!({1A$)o@1PwZe%2(z!;lvt%AaQ?@vg#92-^9?(v_FmD#4j5!a)M=iHC?- zq2Sqvs{W!}1cKzTs({aAEnW@Caa1+4+W zPXF0f%yEm_CacE3b6;?-k**VnCtm@F3|7^kE<3gUZYWOG$xPCv_nY+v&?t?{yf0p!k|pGYzR;=V=uG26C)dQ)PP_hCzkVqofRmxm z68dim4Ak@fIL6827C7!0=Ax)8yp}4<&mf_rD`*C1SHxIy{}BuE@M4$)2y_G#m=jmK zK`15CLR8Nf3LQnExmIal!Wjwr42uc4;<~L_sQCX7hdSNP3SwSQM4sF-GlT(?XZm(u z>?{*lF8aB_d%3wexwv|=W4P>G9;aHP=D}!;6t$QR?@22_Z6jten- zlVeRH1H0g0pQ3Q&CR`=NtS_!#r*@Pnu7jRVO)XgT&7NxYuHiVs?b%)dS`8tMgOLXs z4gpGl1v16&e{#_@mMj1OZy2+lT}OGZ=NeXQ$JASPSN%rqOP7ukW+S8~q;Ac+gyGY# zcRc|Qvp`ncLNg5CF9QB2XVr)l%$z1J2-82R-HG|%!26wq9T*iQ`2OfFzvj_{Q(6o^ zUkD1kv@0i05d?vA^vj98-A#nDZQ;S$BTli`4gt8qARDvy%+7}rUs{fCs`~KH_L*<6)p!c-GFzg8RdF{yH?SGV5 zYc78yjj#f(la%!sB!NIj93eIVomz2Zc!fEw1YT5PN~dRoR=5ZO(MKPKJ~gpQ7o zoUk%a7C#(GKlf1SpM8g&y7;z%cMC>b@B1c38>@IESW>YKWp-{t04KN-(VduZYqYuP zNf(oH7^xg6x*)mEAa9JgRT#hkg{G&cNA6zaylsVj4yp%~W((YhooK*(+l?U_9}PyC zpu%7H9^gytufWB?xd(-C_q)L0V0drd0a=we2w~uXYHh8ws znowNPA%g<7Rk6%s)ip5PGIj?VVNeAg-*L!V@FvL~0uboPl5E^zR8~1dU^^4%5x|EQ zea30p%nAwh`oR3K32Y!e=`n3@xqU43n0p=?9;5wLUh?tP%jJcmqPvXhE~=|@3JEcg zF~2Cw?n@muSzlbQ!m|#Vl62*4mXPKBayu&3cwpdfGHzfr%JVX21Sbo90;xEQ^tW^-yYgYZ z^jZrO>ok-iw7sE?GFgyOPd)=(@0?7%_CcX)Nfbd$9hdu#E13lPUke>5{=NIOH z$|G}=dKm{6k5`Z?*A+w$^c_Vb=aF52+7$Caz=RO=k5egbTZRvXB2qlI$&$@~4VfW> zrHAWdSMi>X(5H)?d=EQuR5Elu_>5==awuYylb`IPp-OOuuD510km(=Tj;O_eSCMW5 z(=|*Ph@BIdM!n_3!!{qR(PrTTePKGumVt~;*j9J|L0}?nkDn2)5xM0S7H1x)lX1?e zQx7PbziMZrua5GJJ1>+_qd8~Sf)oQW5#dYu#5UyZH^F0tt{Z9@tG3Ht3cD^^QQ&)- zsr|gJeVytTCyYu6$P0P8LVwufs3?!t-Q9&~5y%)+U;kL{r(;a6Ad(X@TtJ5)9S^Q8 znSO!=juy+YQ*SXBpBB;_-zu?u(4B}&9TZL@srzFE&fyLa`ZbzVAg*ZWFcRhU@oO`_ z93B?-8I%z6w}B6LzK$JhMOleH#|tt<fBhF0_93VWk2Q9a-;ow6e01L8% zrw(5Qla_`lLrqa>ipE9iq5iz()pp;&l9I7i|$(60Qn3=KJEFW3t36ZM&8SwLweC0T_UxBp+E0fGjQRLra zoc7bi`T~-qLRPXj9$yK064Q zJ+){Xf`fuMAap}3@+%O#;BC)r#wd&NS2q7l?|vaK2AMm z=mcc~lTwtsP|5iCU7ATxz){$~ooh&oTKUk^a}^;q8yhQKqb$J9x-$%=RX{%xPepNwMt4nYrK*-!#2jX}u%h*O%r1^lQi z1OdsTMJ6B`$ij81A^b|R&oQti&h_3TGv;`nBl2-zMY>1)qQQnrn9BDXJ>OJG2qvm1PK?&|` zgxt(iIbcrYHlQ;xK&3@iry^%Pf5bafk>d*f9wG4jiE0YIPcwRlTTzZS!2na0Cu?U6OW|7Ugxmeva9p^F2ojX5TFn7k5 zG0)lN)XU0(HPl!%=HctH*y~Y@ZOvx$9gGDZ@y`bH<8d+o5cv=ikd6q}3ttMHk)LEs zCKW3dJK^)dEuQucC8Y!QFRxCQMgF>503gZ$~&pv#bl z=7wgH=92_m< zmt*@d?7?J|sG}53w|D^9BP!)EDe%2<0w#H%smP_Nf=|xlZh2sboOL&FVZvDi%?9Xh z-0OtxsI9?;MrHpQ3u|Gvk0}lY62+L02B|VO5sMA@V2A7d*XP;>egeqzqhOz(h13jgMfhkQ%*PG8VE(O|{&?_dwY4 zNHN{pxTvfsB?A|d%$JcKFhan@1H3IvA@w`=qZ%j98f1cm`-6Inh)d4Ij80EssqQKu z#q0@loLk&d-g$~A?wI1YcyT6!4hbCK4Y7qnJA;x0QZf)8cu9K*01!+HlCV%E5V4TX zNut8Yh{SA=5OK-=CRA?Hff2kP&K3wsX5iUIrD5SA^dJs6+b8=L}3flOO*J@A|p zmkwl*G~UUnDYDXmNNd2&2D8=Ul@Nd9v4w_A25g*DyRF)P1J!~LMv`Rn6AD+76LiTe zlDs7~HR6(j`a%&63zTIjc8FrDbNl7~!w?wD)y4KvQHQl>W zXF%A3{06 z031D3#njg5=HhDi$-^k{+8;^`eZ&scZh|Z$vc(_=<9v}-y+J33Jhvv&qY=g6g`@;x z$AobmNax)yJKc^Uu%lKdLR}!!fJ!z^>mJ+xi+HVKXhA$iB^SnP|Kf&Fj9qhj#EsGl za+=A!yT)zv}N>Bwm83&9Jl#>(UrV*@ch2 z3*8&WYo5nm{K>oPZSnXoH}(M0(@MEa!pry=#9%nfM49ihF7Y`L8Uqs~Dd~=+oy#S* zuASJi76s?`y>bbtu%Ye6BKcxsuoZz9*}cYzm>K}ve<*0DmD)T=V0^TBJGwMviLC;r zP3Wu258gBObdqGlg9#ZmxTH7nt?wmE4@*l|r3`F`7Y=|~1hQ*L<8&2w$Q+qj!~*Va z|2{a(27$tcmZjeA;!r{DLj;DZsvR!tYRriom_V_Iozxn^&tb;on^41%5wVm_Qx=yT z^`a=EZFgq$cm1zI)sat<^(`kvT6q7k@sBH zw2$vdB58pbSc1>xD!41#oTLlV8<>s0eW$MLMD{_U`78mI80%DxSMdu7kUjMv;Oxa$ zJnxo`gux-gw{q9TZSK3(l;avzBj68?Zl$H(Klba`q{5{LwC zGRSDkM3Df2g8~55VZ-rt*f2t3nx9A;M1%}PvOrZfUbO(%?EUDKQ~oE>1Rxj!Res3k zL}#LWh3x`}t&vVWJ6AiYd9!qxn3^6#Ee@^q-!o3e${15Mf|qeea{sR<>bjp`Yq+fzVq^^sUy?x9 zhPOpbuS7*lPen59S>uF1kUf^j@AzOA%!EpUNeU(r#dyS=u_f>9`SWCTA0RxkwBk0* zLD4%CI|aDuc>RlJWVJc~OmZJ0q}`ZMnf$jXx({tjA)U-`^3mfc10yi4j|P(NwTV?9 z*R51G5;1|ebpqPMEov18vCauK9#%?*;ivy!Tj;lCcn4jbzh#zYsx<LT^t*{?v+J+umcd4c-B>W$rQv5^yBR zc|%kSFYWH}=IA#B;R=NYog>kd_L=YK*agZKd^-JghAM?oo%C-W(J12C`u| z)S6_h4?Z=Kd7s?7?Ofj^)=!dw6RX4x!gBo^qd<=$gL|0UJUl43|0~QAI!CZt^RH?f z+H2JL1EkUcGLGru^un-*KP=aP_>=dD*F~}Y96M5h&W8*aMlr*K)dw{a3$Z$exj#Er zN)a1Cbi@$djktMBdy>`f2?-TbSfe2Uzy+na97u-4$L#{)QA(g2QPE#>o3|ul58W+@ zyUA1VPsD~=$3hhpbNuLcnVI;SMC`Nt54Os|&tEy!UcK?ZKMXz5TOq0@zY>>Yo6Nu8 z{{P_jOEU3mXAWJKe|ne(zfQ=XkxM#u`Sw}m6)S1UU*Oj+8sBT_FE6;jF%m@fb}~6-yufu+m8Ov@8uxivRlgE35G5byi9mwlp-G@P(TSmz7w)zDh&m+($f0 z9d!p=4}J(c!(1{FHLSTu{xQQx+9Rjmr1d?oRS?Y+=>)}lG zrBrsj2^yNq*H_|w)6m>3+wx#J`3;xifxnmHDa$7w^5@Go{|jFrPA~sr_vt4VyXDWt za;!ZPUU?*ZRTKSW>N4_^+_pS;b2j@25AE_*siD_WLnW&NGqg>!+DtN<_f@>_v^~5~ zmKd^ve5G^Fp&h3gR(a73J?8gT&H1>F;bhFw)X=zY=R}?0K6;zwA-vyz>BZg4T1C4< ztz?DxGo!)IPkF0kpYt>s2im;7%;MH>5He`keDGu9zO<~}0#7TKTPsOLCfu&kA3L41 ze|P5fDP=*`ULU{P_?bcybanKz3+9w>@d5j^JUl{YH{}ND$5={LrD_D5WN4Y?jX(6; zdRukFzWQXgi4{c`L}C+?G3A5CslLtjh@8Z!8Nb!meFo2 z5!!v9L0oWKXaiNu^Z=WT`;en_Mys5}>dY%uvb-{CL!y!8hZw!+?Q{u%rDhZ;^_9f*`>X8pb8&(yDZLg?CH5l#kX%( z(R^IUlH9?+Sl+tqklm7^8|yby+Fu;rX(xOeirq%$j0WBF|8ySQ%1`?;TJ=J?}rb24#{WNaMAXceB%@4 zqttYZejj){Fi|ko+?3y}*qJwY(9-Pdtm^sKO3X>}vd=l1cm}nNYu_8+ias;Zo^~X3 zVRqKRs%p%-`E0|;^u~u#$!1wr%)cc~<|y}4JW9^zrRjaU`dqwiKs&r4WVy-P!lYhd z?apVbXI&qfjVz>_3AD4tGT9f$c4ip2hV`FHcAk6Nw%W08^3MV5+SqdCy;t^?HO(KY z8sui{N*Q)^zr;1UO=UFp!EuUNm~g>{z{q6N>f%#0y zG1@7!*h6-1yV85v3Nj@385HQ=%gXzmFX1tj+TB}K-Nl>Z8yCkt_o7`apKgij5E=Ah zVaBh(K|Q&!RhZ(?JFin^zOg_f^6pDZnW?WmUPCsE@opg*dKAG0okjB`_Fu;W>!zef z8#QFA+^+Uc{TP?1caK^&peJml3Ks(eo4hUj9In@soSImIRJ8_On6#co z@bPrBS<2LXF^>w{sM>|R@hmR!WJXruUaj%?4DKY#ksul8yq%&JVc&~5V}`~nhlNT% z8mFB5$)7%y&enKkC(V?8){xV085sv1vm><@Qe9hD#7DoB3TmkBlQ3;vD9q0(2vOef zZrGt%N`A_YBQuWmnv4fkExB&hcb-QX*EQAa`I{5FE18`4hM%RdE2ac=Hn@B0skaV` zF=ghDC-wd~qde?7oPM}Wv1lfKK0ZIgH8ZZjNVj!r>?d!CE48&M&{J5JBK$Sw>%Ht9^Kz~<3{bu_rp_d=_Psz6k*>jv% zbNQWnC3pu<+PdKMt0D`((|%{E^;`V7ab-Z?+pR#P^1PkOz0fxULuW&Mmiq2&*+3uu z+?MmTMVw*h5x(X@%7kw1Nmhl3&*MJyCWTDj+*=IXdan#rbWcduHkk=z)Mt&|;nWD@ zpR2XJ|I5n6VMbb4qlBBh-{1%0O5Nj+2cw6~@9x{cE^>OH z<8s}PR0-8$KA8tkE;P*ZRj3+9W`-=Y()q$XWVuj6S2-G9&UX3!E&Va4N9#)u>s@&! z8CPl1G8K`pv-1R9!LY-}ngeMoMEIq}58b^stC8@!H>=vAqgmIl8k6HM2; zD19!a#>hxslrQiCKc|YmSc1WahTgV`5#fPZSJ)1W#whKuK%epH>XpN<18V?_wKVX-e;VTi7JCJEu z=DF;FQ{*X5u{Brc&yHBfXCIHKesVWI=eo%karga03uCR@jkFJZ<9O1%axi+eThm&> z_Wn#0ea6)>NxpqnQuAYUQC(4Ib|8}9cLin`o(7 z*3L_5z3H5+67^L*M^7v2{>b8>*4Q#3e$P&4YHxR?z+7a_)vsf*t-Gu@^Zu|*eQ zlZH;BR~kJIJK9t}l5i+E^@P3GNMUb}rd#6D)$f7g+bwy8X`ktYhO7_FYso42#;Cr> z&1AS_?VLNKcEu`iM)e+C*0@dD=Q{+_1NPF{JAS`XbR>X?Bl-7YzJr?#MVV<#(&^Rp zxle&J$C~q`)*Ez)OJ}((xn>lzGB&bu#4zXR*d>_Xz2EUFMSJ@LaTiYAX8FYK*gYrO znl%M~7)q`66pqr#i&Zzy@;9{*xgOj6V@jeuEJiOp+U5I!iy32Smg@R954x~~*D)3L z+wny>51wKj;Iv;znK;dLNY2gL{>Z-CrUVs1_craRKVss75fl}QShV!T4B_3|-LG#t zDxTFPDw}YyI*>6~=kPVwf>l$CGZv={oy_0K@`jW(%cpHAwmEm8-}J8kjlfasg||Fb ziIv^r)*Fn6ep%-~U-K!{nBzff?M<(a4Y6~~hSb#b+$QJih4H^U(IL znEX5G-8U}nZ?3N$G(AeG2#IYybk@$ytSZl@Hi}y!$UHpzp^ABbwFBc|*nZK1Ve2*V z+9f}p4o07AT5C`j9`Ybuzz%Oa_ry#;o2Ih0Hhs%jn)Yy7#jH_5UgW@TYT*8wo9z3k z?(f)G8jBdyeL|Y1C?D$wnhwZMeG$8;F0s(R*)RJcTxnV6ejVYzcGDn!o&AC|>KVZg zep6NTarmRrXAzPF|;ms*p5 zxVObdZ^Zve4<%UY10{EOn^n~&(dI&-+P9N#Y`-;QYG%DlXYTPhzeu7!z30-)QmbYe z8FQzc;naMNyZEdA$lK+b2E%%5{%BW)mI#a;f4tpDLH_5~hvM$)h#DI|vodawRx*70 zPG_8{X|2dM5uH~a2l|<|Fr|rfyz_qB$uH3Rd!54+i$l#s>f(*7wPT&^8}AFPzR^9u zz}Pw!-WwL};`t#yJBd0P?EG0`ucK8IW)~%?+Ef+)_wfT6C2qqlp%aJaGBfiVl~>y} ziVG-@&9_a&r+HPqaW+V9TJ~FW;DdFnL;m+0dc4Rmat8DUk=znbT8kX*=Y?D5dR=yH zwEomCd^;ess*^L_*P_7hz_FGiDQ%x#+sYZ2ws|*Qh+WYeCKf?CW~<_6l6xsClh=hJ z_UDJD+1#DGWud?GR@k0dl@s75lNxC_MIB!y^vqGv!Tn9rz*DnRK}QZbj51OdOoGiG zz7)n;JosAn+E2T9!K%5F5_Mynw9i+(F+FeZP!QBmCDyahm()3`{Zse)a;E`Gt7Dd7 z5;f-hLZ4M+Zszr7Z~J+!QwuY?E;&84Ny6pNt#92KkWw^Z^lMev5#9D+tH|jDqXSI` zb|3k9HrI?c@bj0vYiEpxOiq~(D2h?m<=B=e8v2&n9b_Ck%d{ zD9G0;seVb>#rn!NtD#gPQN^KRW3YP6B=Z}*VY|rOcfZ4G`ltO!6g{l!=I~7A-h=i1 zy6<%C?wH@T?s#P~L95_fX=J2&=bTrE{VS1ND-{##_zB^Jmo=)_$17{DWxeg~K9b>j zDaWwTX3fSq_a9|fp1FDCwQ%dod~k^h`*2U8Z76&$<5U5~Kg*0Mnqre!$c1jkGSXE0 z`gqpluGxCU{#nj_Y1WIcTbY?Dl#p3FjfnoNgqDQHTkqT+7&d8$EU!;Goy-Fg6|XAOg7!}wy=BVfYA;UH8*jfDbglWd@}VrA}eT9*Z#5AG_CGJXxvrv@zML!k}PM zb043XAY3VurIM*VC0RQCvRfM>o887LUg=i{H&3tHYiKN!(Kjcl?oO%nSMD8(+TWaY z*f816VR7j6oNBP4MvvidhyDL4!4pLNy;7q}Uc^6SudsGEifA+YN_|A^6DeXw9lJj#@jF#$IAqQ?%_5yTJL~qg ze#GW^=ji9kmMClKs8qJP{AS)MckmP9Jlxp5Qdy5Q^pqHWACFLvtetPo@n`6D@JMPC z*E>7OOP$$SHRMv_Y&+y!V{Il)ITd4gwa(t7;;_uABhz(#GbiQH^GxPts~_xhTPm__r;l3X`5m~{awH)5a$2ZIZpqaRzUE1>wLc2g zpG`^ps8)CBKH(oU>Hc~TRd2JMzw6EEsBz9=tH)A99-Ts!CS7hGiO>ARN`kV~PS?Ke zKW`s3VgAVfdj7W$Ul}sgKJw~ac|0X!i5{V07xU$6s@=EQ_up<%C!DX^UbP!~_B6ha zrN%DbdT(EXfL?I9nQ zH=648lm}jVp(m)9pL{^twaTWTzQfh}@$arJItr>fQa_|rT*vUOnR|jPpV-enY?|_D zadTK0a!+*lV45T{Y?f>lEG0FU^LYM`ng3j4WTlMjV4e3LHC$W@|g6VwoeI#Cy%Eq%gc$0UTYf|aI{Akw3CYS9=*5hf%N-MWL)R18>+QLg^DfyIvV4XED|HR}R!ppvifQ?N; z%-1`!nlVqD`%h`M??07)WY28afFI`$_oZU@u5@emYIE~@fiuh{vl)JaPXo792gW(O zo9_QH@$!4{56fzy*IsWsA8%(jv!62DI5+c*Qmx*c;L z{Cd@e)gmUJv8nFy*Nq~_LKO~&#*Lpnk!AktNMWAw&YcAOqq*$({{mG@zGV~_ZlSzp zW3FnQ{kW{#vYYF~g55@`X74UW{kB(~&*)jQ4!P8{%3)Ag^~H+X=YQcncI^OO6b8EM zzNkO@ot|B5f0V#|4+yyT(>_!%jbHi6(ucW?a<^O*{x^WW|9zwLx|aH5 zZ2R>KjVjI)s^+)Ljhh>i!y?*`KKfCtQh407M&1!yWQbQBg(>QvrRlrYCn@!m6 z!<$RFQWGQ3&-CO*fj9YEy1(!1p<5CGEnwv&k8$8qZ&!Z{-hC z*jS?U?!_{{^fyx^Ko6YqmgDa{Oyen)nj7rR?|Xm8KD ztc;s&$@MVEh*~`-#Y%1eSx|f2RGfRN@ol!|_-tY%LwG5##Mz+jg$*_Ooh=z3!p>2> zj)qVAkBbNGklXquD5>%D7lExS9G#utvwvPS+L%oFQQn~Dmh2{#?euy!@@~5G9#2E9 zi`gFpbmwN@f34UfsaI?=R+#y9Fk~q(=*pmw`%aO9pFiZ3HC1X?pZvV*PlqVU)=Q+lUhB{QBvR$1t9VIof6uXHoD~_JdYM zxIL>Bi^8m%4pmX6A%wA%qjgRKjji)7&DDq2)VNSrFG^YVIXKG!H|RgC7}VE0Z2P2I zs=24uD1`|T<&OEW-M#4c9^Oim23PZ z`#!6k{naZurj?;-WyP#}>rNcGuj(#O3{5PYe*X#`Vd!lb zD_5Okh~sJDRX<)FVtHYxhfPtUGoJn4!_MWu;>_>X4z3!oVJiEPHR$CNm}}Eo`sA*= zmrd(V`|4GNRy@M9zkl!g!@!jVQz&s2ZHnEAADU6zJBMtK1T*xTnazC?>e$A6uxZ!* z{(UK7nMP};0oNE)yEamPoT2hkDbEMvw5Fv57bE`ovojYw$?EorkkPK!W^bu6HZY2D zb60=4;>tJiCKRZW&TD%3@oazlT>r=^S*78ATWjZ~;a%=alZi7o_egk?Au1ygjHJZ1bs2KNXzQ=8va^i%sw#ZJVPDxp{~0V zmYgr{-u$Yncy?x?DDD@KA4PAubqdS0zW~LUeD@%sB&FdvOMhp-pXmzmtILX%Lt_PU zn8Y8mdze@}uVQQ(s-AkSCt<(A$UUSu+3kg3(v_X+5j$09TMr)V*q=Yn^<~qPdJeutJVmdF+^IR>Q{m$m2_AGCv=C$nY*Gv4AqXJ}H7aVd*pE%L7d2yvfkEPdqor z!kp_F*%Nh3oc#^Vk9fCT$&C$pQ;~GrYS_@X+plF~?Vp6I@r#lb zOLdCt1@j8BrxP{#-kdT^&VN=k)|0J1d*TkYZT@pXZ+*eG)xDbj8cls641U>LJMvnj z@(H5CIX~rlnf|E9Fcmv$UROa6IQL zD`&@XZvXOz(TAU&9p3*IjoXcZP1bHzZM6j|+P4P%tlX+kW-KXF5zC@3nRrx=$ zl(|IL#)t%Dl*ROY$+@1jmRV)vNRNr%5a08Ujjt;l7Y+^PyQw!_`8M=i`i)2aVZ+^m z^^H-dsMK`^)+&YWk#Dr-7c~ZAT?6)ISIx<}70IZDNdykJ(&0zuNlm?>#EG!IDyU11 zP>b`-+L~+^wsqAr>$3M;f@&dalzw(FjeLG0z92Akul;I_A5dq(vvKu`+EXVSnD~De z>Tc45Brzs#Y%cLs&B9>m%E1yDwhng#^5)Zp9L;K(N!$G@ z?RVBWIx3t{@{VPI+6c-#yP#t$8Ue6_f=+Kkjf3(g0#qJax(9!7zVebliI>bjVO)_X6Gw@&}Qba*PPD(r>i zrH=i0F)0nkz9uG{&>IqC-*qLja+o$6typ(?!?yZv&8#(56GMytgSod3i>mG0MiB!= z1p}l(Z&2y(RurVAyF|J{njz$dQBsgj=?3X85k|Ua=t1cjX2@X}hJn4%`+cA1tNq2^ z`#APG=0AqDu32%d-}yV^VypW|Je*r-1FWY6PBA=w#f>wGh?a(Fnj9G;HtyZlx;=_6 za~K{}7T3Ck+1eIIL6oz*Tz+EPR=vMnp+z`ZpC9RYL2vzfm%X`ialeJPc01Vr(8b2C ztfCPnJMUb`U6(WBy&K5d-{Rh{)KI==IS2Up za}om1EjSC0mG6l(GYp)0(*Ze7sT}B&o>%b!VTzTYo*e<&jVK~JtdocJ)UaL#xfI4F z2PLgHfs~M-@fF8$on}!H)ToVCZc%QPrt-k(YHBwzkEj_YPotOSH=bwPY5S-m`VGFt zqIJKY_7oX1&y#lw3kM@+Un@9&Sw@TQm^idS_T>@#0Xe7+?X0H}a%LR_X#l9jB(4@5 z%@_84l=#fuA6dx-a1H2$rP>_Izln8>8Bg z)SgBsOHUQN@SS~p$1{32y95%S-~3>{eSlx@9)y(O2TF>8r!%qNvV08Lsq_r0be6e& z?jM7ZkdjomCwfkxL*AWC_gk|qDSLVoRHu$sXqPzPuFN~yz(_1S_3Pim`3()!aH2>; z{P+G%W8l|zlEt3JRWWsH8AZI9@@C~#+dX!+#$+oZPyu5VfKW8xB=PcT)A9aNU7jo9 zeEg(DJ_W{GC-X4M08|Dx(zJ!*Dv{);!(@gJh_Ir~_ZLO7eRCmV$s0QGyfX;;TqBI> z#>-2~2 zNEu@PK8aCy4uUY}bgYF|Bt?K_*dA3ZQ<8yAP@vV26{J_aw^ z2(k$(4dU|zFrJm;5FcUe|GSkJsRVZKN2xO_WmwgIP z-D2`wqZD~;9w5k>9`6x_d1-*&TU95Hf6T7H5atllbJCo3T-dqF2Qda$bugCt>OuZb z0h9tiba50>840>Z#KS|d8hU$u<%MrE%!}{mkGH5(?8^*s-Utl@{`q{(RN(wiar|_~ zr7zpD?gw{2+O>3rt-Bm{oSfgJtszkMX+GPBBhn^sFlwE&`vv7ysWXk3sj=AYSo!UtYkO|(moH)NJ+d351aOjhA}>L*BB&cAgCvjG&vkl*d>jpH+9fh5oCDbt7MX)O1bj9sFj z$7(P#vY+GnHv*+WoBA#lHwSbW9yNX?uZib9lnjr~f5}idcp2!9`qn+@45H1;9V+gc zF|FyChxu={FNt~;KLYe(!{z15z#H=xdHVRn;}W>Zo5s$P+^)$Mu0*YdN&cB)(U@{S zWCO+bROnK(W8rAY*|2*6u7l&?rv)y!FG@X_>|nPnGhNH-n^Az^Q_1ZlFwIrjr@BN( zOP)HeH4@Jkw4B77!$8GCqnr@ zwW|hClNX4l>s1%oNn#&tKf<>kK@t|46RrKR6~5o8Vk^h`GHe7EfBg6r`R2fU+4dlEgO!Us8p`u{7%mF9795VyMhts@@ zF|QljQA(>?_qSL#EN_@gCisOBcr}{gv>wSDkrhX}yvHsNs+c%Y0t#yACvf%I zi`NnIVZOD6;^fz$Z%;ga($6L@f+zhPtcl}9cYJQmD@F#6rCb>cn{7yX4%&Vf}DvKK^bU~urt>s3%+w@;;)b) zAtiPIq=pAcqanpi>?4C&gJN$D{jK*ov0iA?&9DY5QyEhhD*zq26dE|Z=lhb~ET(Yu z@*N!foDQ}paZp#jaN;(=yNPzKD6{T%L>FHrige2s8*E;_r0;pQpz@ajul-W;r0B01 zy_C9gPg^)S1-sp?7vw|ujmp-bSK`sR(*7+ivTcS2g+ojBqrMZ_aFBqw_cWA-A7*dH zuD;ENR5-sE#itoTqJ0V-t%X$a$N&gpg~WG*n_tIHyV)}zUuQ}bJHq(r*J+5q&AP5_ zx+3sKufV(4U>^0LuH2sMMw1Xf*~=LBJ^ov7v5;qkio?n1{X~Jca{^_P+z~&oP-@L$ zPETLDXa5(qiNA=b_}!CVk;=HAb(tvV6{N1#T0Myqpw6rcOwl4bS0zZ)KG=+Opi?Ym zB`vTk9e$!oq0{JM4SgzEY&lVB`HjQtL z$iQWWcLpO@ zy~}5=><^{qC3?RqpSTmHG+`WxGPTNLZ3vxM37bDKh0uau(z5L)p&T-ZrGSPOjp7#< z*2}dVa`j%F)C^%cqoBR!YIo1Z$L%dXC7=|Zh7${`OCDTXR#EnUoB0px6Yb6nX=o&Q zbQ9Poe%yK?v3e#Zc0Y=7n99%z3)%XZGei>%j?=Vp*{=XvTx|g(Sw63f<5)+tVO*dk zgt9f!Mv7t`KcOwrRy+QIk$^tqU;R|3B0CjAZvu0|!^$Lp=|vRi52bCK8iF-T&89V? z7boIyEiI{o(zBzTTMmzdLku>^3y)V!3*sa_oGaril?y#d<}|%_r%ddu5la=oGunzuv>Y8%=T+Dy4l;iC%qh^pi`<$X7`%6H9&?4pAy13aa?i#mtobv)L; zkO5PTntP_qi}2gJa5I4_>Mo9WM5~Zh+?uhgcSJO?!;#&Bz@6!W?qXB%8@*xSc5OtX znt6>YP}=k(ibwaJnpcu%myS=X!3`&6$=l_ZfR05Rp?EwZcZwIhWOX0|BVI1Skii28VM*4Zhlye*swVyLNgxK2^;=@#q} zA;>?e$1w%rs}i=$pDlNo`059;j<~bhq|R>?B;CrXQH^t4A_3OyY7^Al-C^usUyJFR z1wT(WFMK%n&WNh@E7jUM^(Edbtp`J}r+)9<)UVxov33iP><%Q@wI9-QBf=u06Z!gQ zd7G}@q`_HvDSOLxyrR6CMX68Z-0PP5@W9%MO{E214*DoZGWN)B#_<7tth)aq{5e2u zPi=(A$Geg|IC;aP{B9`9d8$B5sd?q>0-rf4Hyu zih%~}B0Yb(kpeH|dN8s8UNIuze78qRk@7b62c>u=BcPJi9+)|uz!D~~D2R@dMe2-I zf|Ws%FO6O{Q%kl^A_VBZa>S3#P;D4BNyqLaTTmxiP(!7)Fz108^92l^1V@u>a5doU zn5cU_eM)_i6rRUdnKEet-K#ilSnGFqotE>mxVxxPfP}He3OAg_* zavta2x{@JNfW|P0Dh_=0I`xLP&`%us77seKToh|Rk@z*I@k!mzC8&b@1_$BmgUiYM zR=|9zcDRgHUc~>k&VfRWezuxJc>$lq(Nzu=cLFckig=D5F??3ao#VV-#-#MT6IMeV zNX@}hwO##k_YWsJ-XM^RBue=oqJs7;LPtZ{K3TW z?Z}vw7**Ssy9hkyBcH&mw<i7lKo$11xmq#*i+yZ&02HMgySF9a%i7_>qIVqAxp2qTl_)Z6esH>98I{f$cNx%rV4Gw92@dt4NB7e844Cdduexj(4|1Utn{{fgx2Yh^qN1+!8 zkSNMdH|cRVD;gSfPAKx;S(+uk?EUfIQSkqdAuEpS^_?pb!gK{MEs`fH5Aga%Up3}i zDYxX)Szq5tsgl}uDOL8Oiv99B&Y9xsvkGT5J@395ux0A_C#yO39Sa8U+J~?2yqL>> ziLAc497YM?*4=UB(?PSN@Qg1>)5I8nGmwrSZ?0NxmnFmivJrJr#EE3o+SXQo z;18}F*+E67>1N@Irt4n5s@xzZ8Rx)QN$wtdDT!L#&s6taglFZ>Q(xng7(Y$;DSwng zsaWWaoavLC9iMjp10G494YwJ$PBCn3fj5YRe*e20XLjqlI7VjYkR$sf#-dFdBm+RC zW%l32`5iXY1YV#{P; z%g;3%jO@J{RE%;|0gSpdjh)A?;X4B0XP1N1weln0r?wTW=%Wk9o@@p!{WOeH1YQT= z&XIdj#6o}ySK9#EC^?$QQvJNOIu%uSNbKZyHGgC2kH5x}&!J^)L|udI3C@3AU8?a=K>IeIX%Dz%dGD{59+0^< zhamCPFa!T$3X^x4f%6z&YUK?(uD(Nq&TW1=UUlQin?3v6RRP_2!G24Rh`-^w`hXlB z{?pf|zGd1Q*~XG+qpo^1wZAm!Yuq;n&c7w08dBC7cHvLt!aSc|IKD|uZy59a2mk{27ZCOvsHs0Xk02bDRfarw}1VG&Yk9nv7t zAhEdoUaH!doj@_>?h&8}s5@po;K${6+QiHQ{+emU-k*BJ8q4+KDqP$5WXT*aAj7$f zZN_Cezv`2vJ@I+ks1_}4nWAzRUDoKV?9P%px`@AYD6}<6vo(oC3c7em3%ur*wFb=b z%{D?s3+Tl6)WvC4hs>42p9LxwdxTehz7JR1R*O4F2xP#~GX4rX@QH>m2Eg9Z@@(TQYhrclG^PWd4ynX{Mbx`iX@*(Ba8pk5c zghcDvPmfUMNhU>2K;`!1AZgA@_oKmM4!gCzH}~0g$qdq?^xmd=Aq(0JlJohB%%Kj) zk`SyJ&zf&Y?h)~&o&e1BHer^)kJ#H?_p_`U@^10^ay_<7scvse4q~c_eDAKa0pZ#X zwZ}hdhou)XR2NZtFWC?^uD^^mVa7$~V_i(Wf?Tnt4S}AmBf?kmfCn$pvmZ+t{?kH$ z_KFOqReAeJM2Eu1u(7~>z{~I&9VH}A$L1tJuCU(b+SkI3gn4T*RkmaDK@ydB^GxXQ zMf^%u1aE$?g2#T3vu}zCkzft&^Bohtt4~`GRw7P7H}PLi0y7wLew-g>>E0r0_=Qy$ zxGbI8;5I65YLnSr?CUb*hWkh`oktygMUgAZv$(N#J{qV;K@*pu zuH)Ms0H|EEsVD!c&F)<6UICi%dIGP67TP4t92517j!YB+Lh_o$9P^6G!kt=D9IO~f z{tdg5hSF%`TH3VE_D7O{ag~g%r#JW69arO&tgS1h?M9xt{;-oRxZ{@VU?-L5qOnzEOe+76C z3^3oguvHjgKADhz}11Eje{s2}vA*b1*JyE|5 z0g`rDt^FK`RruLsKGS3x39`WARd|aN8rHJ^a9iL1Mw7=)CkNOLU{{e4|47aua^+C- z=ZLX;rsuUhuw78|J%69Ix(A!vK1@SS@&(R7!-Ikz-F+a*m8@I=lR$Y*4`*p!dS@e? z;L-&!IDuwN1>H31_;o`^Ec?NWYKDX?bm*Qbq$T_}YQ^9Kg1b`;iVI%fR_uAQ zL0gbxaSPMNvoypiv9SL{Yg;Z(e*J2VoZ5TjtnVEn$rjw3GA7-=XG!>m=lU z)V)oj8=boVwOgUFf73*(vuFt{7;iH|qdDQB7^ZwclTx*ka{1w~p4o826XhGf>Rb24 z=NY5U1Z1MV(ihQaFS=K$oh+Kd>@M7lzCG>IU5^1q<-i)H&Lobxrn)t8O$hxV(LB$; z;ZVD?l(Nm@Cqk`o0Sr_pEwT+AV{g^C(2Uxq;_)|^vwVNKN44^Gc{cpPr|eZ~0=C90 z2L%Sv$-53!FL-4|N;=Xb*|sLZ^JTWyJ=C%N_E-Mk)sdu*)X-b^QF7H9=ED&m{Y@X9 z^T`8-(`~^hjUPjeQ*JC&U75AknwP4kWnr_C?=`0VBFw_Oewv+KGo9p~wuTPmKa$kxoA}?p?XM_EMW+m~gksvpS8&!D^86vR{;*?K09)ihB5*RjUv);UL;X zN=e6IInf;69cj2}S>Ic0)Izrd`SML%hDhk8M)50=i1)GrE^GqNJg`F+F!6WS818)- zw(j23uZIyyqsmMgjpP$uHvk~Z%~FBk6KK&0iW#(+u2~T(w3CT4m6nm1Jn`4^Y6bfH zI)ckrYf2eqTPx#wANk{l5HqU}?k-mXrDxKTO6|i5>lOWzudE5qWE>JHs;a=ra*}Tv zNotVf29+dK;|g~01v~SxWeMN-s|Q&JYd8=1E2U-L$&|6j63EtcS#qj*MjBl~jBuVF zUd|rga!?`SoFLk$EP*(gZILFo^u17-xz{2zcZOpJ3+LYOEe~}rVN=st|1b%F=FR4CD}RJq1uIpe zaOE_COqJ>riCf!?^pQ?Z<0sY~-$eDAO;r4xiCpFP^k55b*A1zB_a193U?ja(!EQ+0 zt){u_7*N#3<(9G@TulDW7jbiz_K0Uz$4lxp%VhJFq^)1TN6slPjw zRCKKR%#H)v=xPbc{!SI-2WQcHW^ynS)QM!<*GdPbla2rx$*I&f?dB?2`a$W=fvHWY ze&hwMd}LK3`H>Rb5zy+chx9hJ@5~f7@2ilQ%Hdb10AoBXvpopi7d5JE#ULoY2OVm& zkjxh|iP>|Ns`fs14g8=EqcBYCGV$Fp%(m+o188nvdl7I4-dNX8V!N>ndO))~VSMq6 zw#zvOCj##@QJoX8*}#(IHZr#s9wQ_eZ(x4YuKsKE|43|A{ud;+7s&Ph!1}(hy|qkAfkxMqiOL@! z9P(aCDtp+P^u6r(6CFN3h74z>2vze0ne?lqCyZ}j=DfSlc73}h22ZCG>qaC}^{W0O zJH#WQbpDaC3$t;Z$wDO&x2qedk)djFJQ0SzNA+WHMvsl5k+=Hyh^YrBCqENj%K)Ia z2)+YfPj+*bsWxH6%hOo6v#!Ed0*%)%`dgaeQ*_2(yg}Yj7ub68&&P=!k!;wUt#)xH zOMuOtUO7Hp2SY4r^EOT3m%x%YkQ-r>m?jnq0FvvAkc4Qy6KgjCrf?2?8MVD7_WvTwaO!>XK$FB3+u${uM$h${a0tV2qi6Jn8H- z4SS^0LJsKKT04@Jb5xh@?C3M%R|m1==@%~Ht8_7D%MU0^a?PK(G`Ie0Ti$XajP2|Y z=-iUYWQQHu*n(R)05nigY_5n$~dne*1tu>39 zOD8_EJ4t`CzeM{UsfBh9^0r0!ZweEPgTuC0CBnV1huMGI2P32R9N;~1+K~aG}GaZr0_uYU8(Mxbtx&pi&iyA5i#oo>ahV`kK{i0_ubH{!4*CseAxD8y})F zs55+->i(1ReO&qO`>R&7c83m&37{N3Io+|}<~VbIR?Bm~BB?vNcda?@Ru?sy)=hwp zo}-=WXUQg7d0e{dZncOOz!pd#Z#%Feq=5^uy-u>9jtL0s@wu54E06nCxC5ZUa@_J{oP=@F{=UG`nd@iiBUGSebY z>THF)g@5Oc(S|wjX)(c{kRUDFb*54+PyeWqSGtx{dMT@OdK)*T35gGkPzT@J_R=~1 zsa3d{V$+46`+-_YyB|vT zWS#>(Xt+6OcP*5~%E31}@^7lSE6SGEy}i$PgC*h-{z8wvVFr)79IQ-s(yecZg=%<2 zUMM*cSv0yB&{ON3|C%NskE){3f~lR^!xLsTWQpPOQq$ZddLm z?B3h2{tutdk*tWXLs}ZtH_U7%`kmQEJ4^~hy;^iD#oPi_@7!88O>shUe;fW9)yy zPLE>IC6Et1=qQtO1_QL8`Yf{4DW9ZC&0?v%WH7m5@UX};rhJ|SZ~m0)gzrV3OXak* z$mNL@6#KI~cK5HQ>A>71MuJ_TmZ>Dh`0txg$E5=N1<%6Y}MJ{3X zK?q3Zb#Xr59Vvb4yWK>2O1cewMP)a?J6M);`Kc9)k)<(_c4b4+Z0Rdanzlf8r2T?)-i$}0N8*MBz{Z1MPIx%DOq zT7y>S^Kt#?Yxiq;^)GIpLnS0HSY{+&MFVR>VTo}1D-G?%j#Pu}UHu6&`Cr^vip9^5 ziV(y+IS?_AF@LGD@I`RW=Le}kHzT!e%_AJ!^ZeJ^Bbueo{J_x~%lNzzu@Rz$OoY?r zw?8259Kz46yfl+jt8aI2vT5{K*nNz+V3ucdAXp)xj>yAL=5K^2hXBhtcfILO-Mo&7 zKaNT=z7mKS*e+>7?g)yx&9^Lhh!u_>StR7YdMk^B@hvLJwT zyWC{iE8ll(k<97lay`3nh~&Y#?V4)ydv@CQ8Vua!fRIvB!;z$*h|z3^SJMv}0YFx+ zd6;PLN(~P+U}p%G?QR|(xCgZv)&S%;%{)uSKq`2=smZN+^1e;EW6XBKmyU>G8|J%m zDUwz9jRj;DNSs+d0G-{1x>M@lR;!qZnv9!hy*PR6hjWjxqy4Gohqk}#VuN)sMs}Fa zvd+ja!nygXDd6wruTa`w1Ap8<^|D8eOkZJCh<`?c&b+h4ne1#!fB59jh~ zu-E0YhpCL#rqkazAN}PZWO^;DB}~G?s^!2ER_r^Ol#T`S=}?Ibe~znbLpIO9LQg+^ z=s{!2RL);@*dcx{a&9@4#(Q>+NDUfA3UKsNK;A_8Y?0fjtakFXJX(Ppy&ozaWPh5b zYQ3AU*_>NH+3o)zkBRp0ajoSpsgkRT6X}y4;y_}&X3N#`dHK$qReI_RDZM)(^`BBt zu@NQ1M5a`&2b^aUz5{>lvQyAqH3c1QJsuAA<27`o7$SBuymvp9?Z^zgy-iE}(#eEg zlDG`J|6au#5UUKW(Tl4~TqzVW0}1U|83#d|^~cnfJiPwU&r5?}suwh{7Pd!qzmhItjpfyDh)^^YGa5j>!C=-n1CjSf~r@NO6d@1p!2}_WX*we*Lyj^sGPG?XMd) z*+yvFauBr~1Vku$-Eu=vfSXlNJ_Kyx`NA!d8m(Mv+a;?#VqVApm~FnI{*X*+0ldaZ zW^lc|-ZKx8e>*hrf!Q0&Df`Al!JEWD-WO{GS$4k>q7D(6%0-PG(Ko6S##EI7^yaXT zLeRbFU*W@gGDCKykfBXep%q6bvGSGnhlvW6Za48`(>PECC-&XYRI8w2ZpXLPmYYJs zIr$Oxv-RYV3bz?+hXdnx3oYf077ZNvyDL*RoXc;IPn@5wi@zI#n$5RO+o(>5USRL| zF{O6+*Mu-QkLONgN>yE>j5;7bn+HBR(vuc<519JyP@&T^mk|+n&w3S-+`2dbh0ec# z_BO7(H4LKz+^m$3Nng|6q!HZiOJk#GIYNZnu*!Vq`>^u=PWU z-@y)+PTuOU1mMWYp*sS>$7t-nWH)-7eUk&5`F5)g;8+e$l)9RgoY%d^x>?WlbjcQAhlS_9YM(U4O^7;_$ z+OsdVpG$2yh+hA(LmEnD7BVuxWoU7PNI=!(!!4s^6k8>K(I#fQ&b~Hmoi>~`N=_ut zyXq!6*X&a69ujiPm;Sb!6laLU(c$4+nboAf3-Ytl&H9>6KJ~n`DobEWj_%!XqdAFz zi3-a|YLTIpHckTLAq6|d0+?Z*9<{{w*fy2t@I6yNt$e>Vcx0cYJZQuNqLV%*0Yo)O3Df$YF)MdRL6(WiAc$EY&DnoYUgfmr|kx+#s#GZveq^i2)qTqxrI1Wyu}3=aHoWoGHl) z2mJOR7KDT50mPJFoFAHxX#NwVT3!+xt;5ax_oLXnkSg$%JlW`r;xp+e=|XV<)o3sh zW-|9wwUTHcD0$%5lqe0J-UA||sIArq4qoJ#NiYzR^vZX;+eofLKJME~4R}1(wHoyr zv=BFo==3|mGM(##J@U?4V}v{d&!2BS0p7e4-g6mxwgm2#| zI;wr#ohKdq%zr2$N$#Cv1nMk2GZoK-BqjWGL!fXq2>jgHnIb`Ge~`DD(S>Wn0KUR~ z!#|+2Nxu=eW_HIbGoI37{*GSKz-g$wpnSt+V)~jcPW_=U458qtA~!=wD|8Sz*Fr`9 z*NiVj17LiWg!WgA=U-xOB=zbl>f?eMpxCmqKU(8f*QhhS;rbIpkcZ+d)7m<7;bAiL zTsr%orX5ulu5E;rP#I{!5YyT#tl?Qz1T=KLEq7OZzI(v+*N9=Xr=qkQey?~*joNo$76CKV!<0d$P`Rc)INIyw5ul#Dr zI^=z^CBk%z*IUdl5LI|mll$6Gd4~ybB_oX6ej59sDhECE@kWGe>Tt#SZLK-LQd}NiXyB_3uOy$Wyd11Es;Vf6T~tT-^Wfx z-L(vfvnxhg_yaF#vf1Re0%)s>0cstlGV2WRzLT6EhL&r(4?@zn)GOt>8gB?5kj+vK zH~#poV66pm&LR#!ZS@;f0zwJ?0!|;F;EI@jgTh5WHkSvkS|`lD z=j$y?g=zo+Y~1dZD?mwDEgd;LlKHJ?4tAZ0x#N*tfVFQut3PedK2=AZjDN&7@b9~| zKre0DkFEIB{k}Fmo4QOAv|D~Y($rFgCFl$g+q}uwsh1aBC7fhQGw|TB+eXqqrc9Sz znoz1j0r?0$)+{u`UWWcs#E=WUbK=Mh@Xo7~4|J26Fe_ajK7gwUSU|T;;=KlC$E_x> z?S6>jY*_RcLNYwUWDSq&<0Wy2?^ga|moho-<^eGTUyAZX)0G)7KZt%O0Gd6TYyy;@v@<6^EoLJLy7MTD`5ooNJ|MFs zd1I!6qa=#H{p6)VjnMb&W?&j=ZZ9vR8Z<+8VGLWxLn5rt8RyEgL zuEF}o8(bgeZ&hymD0Q2>Yp{BhSt>*7Vk+4sz2zz8cwHXp@Z)dAzzh#Z;mhj~$IRyO z=V+$CaX`3R=k!3zlqBp;>yAc4Jv^{Hpwn~oa~4mX5PvTE5apQQAdafq16{}}hRZc7 z={)x$0HMyag3B*8Qye80x}<;z4=;w#Sw%G@cb~D*QmzlHwgkv_N)KDpdqH9;0yEII zpIL@wHnlMK>hNA2a)==xc{g|Q`c{IGR=MmoR5>*c#qK(x00 zK^4XznH0p`8`QoXPBc2Vvx_XPR#BV?C}2u_575#Qi?V2Ne=5ObGqSmM0ft4qH4Gx7 zxB?YUXF%Vtj9J}S!%?7xfNnzOm7)5~bQ3^wJ5+IZB9wF9Zflqf>vBKwjjV@<+N@x? zN6V?cnID6TTnaMO4Kp0m=+zWkrB&0J+9+JOf7vJV&oFtj+$zB%=7I#Ph1)PTRZoyq zlZs4GtM|yACk#;8I+-?!E`g&~%e-Dunzu63ErSr*!wei)J#?s~@8$r%)se3M$mg?D zMh*{mBc3heG7!-8cbHs#%zzG)enROWsz4;dt@Cz){TIjC_(Zp8ydikg&F_>g^dzST zF&6hu=?F+KZKqlB+XVX1Dq0mM(G^F$+d|un`F_DRC~p`(!jNCmB;U$e5Z#-S`ngpV zo64gLw%fP)54E$ZU7g_Pzk6k-=3KCuRQ<$haaBA|;n**M7xASMsNskXM~1oaH!TZv}f5=qzkV8)uH=kUL28jA#h|6ey(xI7sMD{ci#cD zbW0D;1Nd26;T-BirmS{FYr8#-K33Z_Pa2Caq|EtO2aKGfQ>FrProDoG3^;o}L}868 zbRhx6R6IB$bK5_&oDb!-7T}2Edbwtw7UG!f5ig>B+Skk4@2v=Lkzwi8-(ECLwii;r zoB8Nt<{8q~))Q!=?;26sy}g!8nz(JYE*oJp$AUH{0yFU_E}kbKX}b zTze_t!bjgWoB){+rrK&=z4-+Ry8GA4RmIlAnwhk2{z&^gj29RXP0~s>DE)zpIHc6m z^cxtzRZ}9~wm*AZh-*MvNKw~gQtkbxDc}#F-@YB)adC>^C3-L&-j8*W+HrwY}LwNHuGG+k@#c)(`vuWeXwb<48 z1AoH8nP>4(L$7>DV*~McU~0aL8X#3+zH}eLu)F`yjX)x9O3u(-ENBKwbbGpR;xSl5 z88-3bb1KoE@`gXCrrullVMT=qc1zCbgWko6!=IKdh2cSK*05ocL`#os-7ALdEeMBd*Oi6Te=edm z=;Be=Hr$MCcMKEJx>LX&b-Dbvh%sxH6>CY@oX!0K&9Z)$Uw3j1s8xB(gpSkwKW!71 z>}H`pfDCI(USn)ua=DmQ(i3FK+={rD5!N?HZ{S*p*iK-1!wfh=pGaymyOzXaZErZZ)EwYF^Wtfp{RZA zcjQEK$NWaUnvs!|d%~=1M_U_rc7q50O;!-zxzeQLZO~}eeclg%in(fZ7qS#eQVDa0o zxIyH72P=DH&+;99^9L~TkoE@+K#r5ISijh%CL?Bg2+5zvz3JO^$T&5urxv)iU~lTD zJ0!0ZDE)e6C|dJE_mG>gwEFM(a(}H<=qR0aTi&iUc@c6>x%I<<)i*a8Hzt17$xGWJsQql zGQ>0k5S0m9=G>G(l=9&~^vq_{1KtmmqdYyn^wF+T8NUV1F=b;f?0r4NeyFC6sjX)m;+@(qvnM1(VC&)1vZ%*Nj{2vIgQwncheC>b3_WS<^UmeT> z@PPmuTw(O(!fGq56#0$2z+?kk-C&;A;LR}+Ev)h7A+MSL3|u>To15|3KlpVqAg)C# zf9^&1LEsBJhedCPGviuiX+7HM!7af4EA2vTu5HNx0bUHomgRn8uFY5Sf?3vr5@ut? ztOhO^8bjsLNyi7QN|EU3wUM1kKxacSw8{lD+~K!^($ODzvyG;+eV7Y1l>7w9U)FyY z)HQ~S0hJOVx#5vNKK<^U)-UNCt!}ws*cd1-;@$ z8Q5E6@RRvtPj>6J{bXMacnxaA-Z-zYk-4&*NP`q*1S(%z%jv;FcYuhcHFGm98|z~j23!$|j2RZ7c; z0-&OY?~e1b)thk%0xD|U??%!+UB(12cz7BjlTn@zHcdteWYYo0s9w|G(qK+t@eJQR z33_s0l$2Lzp}6}cqOKd=tgbm1Q8#w6H9*F+(0BLdHt{R@ug&QEGR}Y~u|*Mp;dw>@ zu&&~M)Ejf$rRrZf8~A^X1Ei~*_TB|1JzAlV1z@7_q(RMC1E4-O6t%vm4Iozw&nHp@ z2G$>d>;MRgC)P8tbr7-lhWn|(+Ft;XSBd8*E}p8uBKFJ#QwB;5W~&GHRTTiCL*mk_ ztiLSSosx;%%@0KU%m_h83g{`oUT@Bs89M$e#TjlY{6_dD#fv!M%-TlaHrjyEMj!q9 zbah;XiXOn2R8PQmYAB{FV30EpbPjG$w|$tYJt)mZ^V*jdy#SQteHoo9$YRj19xXAm zot4riBMIrri@-t-jAJ(m#j^C7NKs?tH3oAE^Dh^_SZ4~v~N>b89FB*9c7P&Y~4 z<}RVW(qy>=Bk{Ehdqq|wZ$IiO&Hju?Ru!Noao6TC(%b?o&K{CcC8HqGRzTWj5+Ey? z27NFYMYnb;($J3H9xQC{J^m*<;Ol-muAr8^j&H!WSY56yw!6|L5sU4qS^L_XX;-$h z-dtx!s2%NzF8W!9k&MO0Co9s^ZV)Qrp#RSJr1Y%MiCr)w?p z5}tIlu5|DlSe>_dU03Gl{exjFV4Jwf^ItRPtZte+$JSASdekar|LeS!GujtnD-ogcR5R{sVB`}nV`R}t3P+rBoib^ewOvs9|4CckUq zIY}{(N}(Xn0ZjG=h2bq;;9BI($!z$FihoBiMaRX;jwovNcQou5LzcsJczw* zjxnE7A;86owUV!OQI^X#j?C>8xkTg^gYeGQ+Q5a(Dw)#Dn3qzjtbhxC(|Yaqs@RH2 zXc(Ad1qtGC(%R%2Et39016w1B7^OsC^k#W~osoZg5}AZU$JmjAqt{Snr^nExs{Y^i z0x^ub%+!mskul1!Deg=LLD5o#GHL{Nz%PTnQXK#wk)XRP4EY-UrZb%psX9s1B!V z2-*4r`a`;~Ypyr@#A6`rR84*Qn40#5e?x=N4^CygCFOK^90cefDS-Q9z`Tkzlx z!QCM^e3K;mthLwP=YGHLuX{;)c0bi~jH+2(GDf{`jWVxc)^15{T?&2V&ut7{%({aZ z?@;*UQ9)z9=)#^0Y+eTE%6~IsMLTyxLh~_~YzvD&1aGrY{~y zb*ll3$z==bd(LA^mPMJh?j=fXI*m!a{e%7`!2Gs^95fEZ#uKm3!hPP2dvwHH4#!_= z79Tyivb&#MEcua8>3i529&*_n`c!mESnmx|G4i)IKsJjII&+c(oaUl7LqZiRoPK8L z`H=V1Q1X{cC`njSxyl4-dp16IvK&oJMVAfij!C@I^en}bW15;20U|w;S@2k|#n*_v+wY}Jy3x0pKmDuO~CCR4N4z!sO{m|`Jkj*Px_ z_obc5QxAlM{;yU;7^lYaO|Lyx-`q1X*2R*mWH_ebt;dDS`No8EGCr-|{q3_RTD<5L z?0L`G(pQP%UX}g(qXeCa7FL7w1X09a9Rs|FIR%>h(?7t5aGJ^8 z!1;sx&XMbkChJhu{e2DnL8I24jyj2pC5{tpzfr4^HD&*0+u3g_aBFzRS`a{Q@$$Q_)^!C2 z*~aLvda%Gg*V_()81o@@|;;)Wt zn`?WtJ9R`?Ho(k0e*MT`FBxDu#Wk^;{IrW#Fy=_Ja>|ug#Y23+CVbm&Y zz+UBLC`Ici{oISpaZR*cnG?>&vP$d0d#JJlZ1KML--1^llwN0e2X{5Uvij6ds#!gH z)k+~f$o3YeS}481%PC&IpgkSS;?QQ8+1!XjC1dO{%M5iGrQbR|)&`pe*Q~XjR(&fQ z_}N}M^D)8|4jM*@<~!x%7i#Z2nSKRhImtUj5{faQp$?S)g;u+N$fWV&UxD=T{omr) zUK4cgrd*Fb|6Emk{smMzL(sy9j@HfrF*dsEv?@z~Ici+VXn&$8Mf_i*Cs_iZo%{ma zFJ*N3z)4#WISp$63m>`ncRByxiP41YEL#L{{Hy0BfKfqG=NYg~K^mk1zbNGV5E}UG z9R$?QQs}iSV?Ex>(ONHo9<3E+lZ4&oe93Avrp7BvwR0|4?Ux!?T6mu(z0@#Bfe^Bw za!&LRk?)nWEHW+nZb+ax3*FG09EZDPE-kT*s0&O<;5D zX$=#_oy)u>dBxRZKgD&bK+2d#`$v%0Kg?dNZ8offC04)|g%9Kk|8=yO!;$L2-=NWC zQ_fDZ?_|>zX^(UKKQEk4Kx`@(N`~!-*DidLkK)f~01vF5NeZzIk77VP?mn&|4%rW& zu*4f~{RH9;0iI~YVr99aL33W93Fp?GTw~y^PASn?#%eQF+)i+5eS+$$SE=ooNc(|3 z3?5C-b_S?AaNL@W{dY~h-|MGJSa)p2P91-TM}gycOlGgs;ye469qWR`eB5lOYvPGY zB^Y6bz9)uT&&w|xxg_<37a6Q?c zKJcm?+)s1gzOex4x+OwGh0p3Gc$Ms1JBKw_m4gnHK;WhmDg=@p;OAM+YY)YM)=4F! zyRcD)p?ZtgZ+nT$4W{0vg2m0t3fHc*K7bms5|0~$rFDDMcJ(R zW2?=RTh4kUF>9iWYWecT&+6q*>A+&DU|eZ)2i@>}riaI!^^*XBXb7$0kL{+!P{SwT z0{_YA+`|Zm=c|Bn>Uv;{ReMQG#m!LT45_y`cK(9Xp0+9L%r725)>}vHX%5Y{!pFh- z?;ja4%WBg&p>ulaVXd{P?dSn2eRg<}TVD6l*6wYs@b*v5HD&iyx*uSXZ% z>qn2`2jEb&cSrfIKO8&B*0n>4BcY~B)GyL8c%QQ3M|D6v{s(L24=?+@y8KrAbmQCQ zlVrUBnlRH{Zo8s^6&!Ge1^#_>{gi70c?s+m;Q4X_ge61%DHF+_9dOpk4D}%Iv2ht* zZqgS*(Oubza&C}>^onhnhGBw>@oq&zdds_e^TP^zo$x-t-Bzu+%Dd0F;!K`n@(QP-{0pdd> z?~l$WRHeFm$J1qWYb*Z?g$iT0{-RDYqBk1z?`ET>4-q#p z84x$)sbNRAFDAE4FX@@_-n{-Y-7OKoqyRTu>J1gJWo&1N<#>ag`2iSD%IX%o>sAve z!X8I!)L1IKrnM^$&&x zdiADdSh$|bfQ1$|Y2scTGcAbT6gKu|x`_yqA$#He?(rHJ>by@Wz3r z{YY7#%p8*|)S-vIv&5>|*x`IAm_C1|_|b{*CicN`yNptl{{RRaR@tVj=eJ}it##P& zPA}1T)m5ne4EY^GZ{N;)J`s{C6;5T2p zzLDQrV11->)k!v;wlc2`(y7q7em@P)W!BzoC~Q7(Y9AF3kShcNf_juH`&P) z(7<|AD*qjhT^=s{3?2VeEJ0|Tf!yCteF4pXn@ zhLdoES*IS23VN;odlauXEC+o17aXFkQ7qU#(PJ~{%f@EI=w5&I*$dV;#ryQVbSkCGYBKPvok~fk5lwaQNQSGq!YLvKCdaHiXyB~>7OYbIMydkk|y_bU*AjAwmI&Be-x3R}zb!)(&usUQpNv4r=lD0QK-U?rKH5;S(flep%*P zVqZ67#0mPP6@!*7M)^&H>^;p2<*jWcK5c4tbH#QeSH=BMq*{kK{*+-N2y%Q%N>oH3{H7BKYH-zeL$$l@@7 z?V27iPX8<>Z=)^^2spxDSwPmwWVEvwH#__+Y%_E?+BX_pUz%wSxZhHJ9PJSbNpPbQrClLR=#i}=BAM0FrJmW^ zCj~%emqm`5tv~9K&XlHf*2Hm|f92R@M&QHygKEJEgYn&d!NCB*=`{9`9J4AjIUz3k z-q#RRzVVpQoaZ}pURJn3-$TinB~gcZtN%TKU8tTqr2J@N1Je0b!qn_tqsKWjOIe`W zBy(o{jO|XGgLkvJ;!dnXv&azQG>9$53kK13hRc+6qa!Ql<7Me+hSEbnyyn4P=uo#lC#Jen|b@$fZN?|#9Si?v^859`Fs60eV@4twDbF zF5FEQZ)ayA#bG1$zK^p0%U$@Ix+gZye$y|n-4O>kWYlTq;^OF_PrHT+IB;~tm&3wy z(Z|3GREIm!V(Fo3sFvHt{Z-KQx%e~SbT!|HH09dx)45VENUa#+Sd}yzy+xb?n*|nA z$FP0$4rXQs*2${Z++D_N^SXIL6)c?+)M>4YUU1lm`EVen7@lkRh5W(H7QnA<90Oc! ztDB9&m9vSq+S=f>NqcG3MRiegnzx?eczuKSG!f@dIdyIaJXoZFyM1CmHUdmr#|tOb zL$*K8l&=Z27!~@G2}b2Lmg-*kBcjTj;!U?%(eAu+m?^)U>JwlXu{i*WLE{~Kr7=1- zk=p3`$AU&*V@t-G*Hyd8T5p+ZE6ZLSFIv=5mD`=o(OJD7`p%3}ENeG*rZZS^i~D4A zXTGxzTVT@DrYAOIzt`XwdH|qP@0O7E+ zf#-UaLt`w6>sld9p5_XtHOv7!&C;WKUYain=(yVc8J>jC5F;wrGi1l@iNkYT+VWX{b-+!kP~u za6Xj~FQ9t&oo_LLCw3wrpD8x*Dd5NohUoH~&^5P`n^4U%+7LYJ5Ob!aSd4Ku0yL^1t^o*?*uhzzRs z<0|%}{pG=UmYo9=0r+9M#_oyiO@c@k6jba9*^x8;<<-e`#Jh-eTy7qYhezC+jIL`^ zRYx|O5?XpB(5+FPY-+T4+$ui}_m55Qgao<-hp6{>>z#i}*pLfuLCvSCYdw!_ZG&~& z2o0TCTaoX&v?-a&Ke6chc(k)HkawgHYawoHVl(9ZNVAKE5Cr~>k{=UEcek_B_ z#qs&9`kt59?exd|Bi^=I#gGP{XkxrE04?fDJbs@LUu!s?S` zE0eK@=gs=r+667o(?)X;s&h(CE0=phk20ImsgGS+?^pgIFz1N&^d3up5zXv0e=uT^ z0p;)97#O>hjDk^+vz_@kR<bsa; z9fe$&;5y-Cc`Pn;eo1hfe3c5WD~BOCm+2DbJ0$xVi3*1qu*uYVED?0)98%u0A(<1U zsrBr=*JU1{nPh%O&X>aIwhiMuM3+I3~Zt98rgobMSo#O~XR7aAu)5PmgLt=2vX=wy10LA68a) zgm`nftJ}Y>Ob{Bm+=;)~VdPd9?QBREjIf$}J2>|?30K{rl38<4+dTJE*K}5GOaq0k zo)=cFW=JH0VlnOE8OKK8v*uQ)&+yUndp|8TD8zfpMME@MJs&Dtf?bF`IcP-^GqL+FKW(DMEL&c&fA`3RWt?S92%kVB3W_FGZ0QBi2WAj!KbK>O3Cdj|%5m z6Mqwz0Tu?6$7w5k7XRHK(p#PGusieEn0P2iCI%+?VhdLNTa+bd>Hys5P)7nLAA=#+ z0GVNhpspl3(12Lnx_w0?drYfp9S&6*+H^Nxkmz|fWZe)OvPFFk)eF*4gUD~xhS7zpB2#F7wD?(0j#O01sHm`co`i26nXg}~E57?AJ?=qk0I>#*&m-?C zwuQFB?I>-^Yx;i+koqasZzT{!nwu#!SzY(G?)w)ig>^pe6q;9V++13d1 zHsC2$xEnF8mZM}UIr8j0aKsESlsQ0ds?A(EasqE3KU{T4^ML)iFx^pdg&CmA4)a>G zEO(bRIiN|YsHWAmdHiC*X{RnQjkXPKd%9)x30TH`eg+4T5eJ9(YqBg2{hCJ#grisi zma-9m>C?%|R-e|+z~0`((#Y;*qO4I|v|MC^_t4UQ?)-ki(WHDXq*hRP5u#>x@rUU{)97EaHuiUT6MFRWM?=P!#0rd?({5beC3_EkTdgDS4hXf8pRG| z5sTc(!DAKgPgk*=V!l`<=Y5>7=RBHEPm4hw#b0MK^IiF5i(!jxxCjd=3rYCx`G2G{KLnXg`{{v-7|%=)RUrev7F`5Tu0(WcPH(>TlRO?L3bS zLblq#z;zLEs$4tW@ny%Cxv@YF4*7ti>_i|mHedt394$dG-;&AFNhNK?f|5X%1OJYw z3A%BAes`D_d;Vdb_@>1_=poE*X0ZTl2)h`gi4Wen4Ky>*xp79s&!8A0f2uAZRTm=s z=bkVD6x@Pnsicp%yqrfwRqZxdtRu`QSI~# zB8AH{U3Fh9Yb_VvDa(KEe3elXjY9i1xHNwAK^`6afLlUJgU6{SOH%C94>!ANGmlK? zSDh6DtPe#LJhNg*+BL9SXaqO1APo%Z?R?Zrco3Spxn>RdPPT@OmAQhYpJUZmXdqrV+ubC)xA|1Je9fge%zc6^J4{mPA^?je+7Ou8@5Jm#61QB9Eo4a zY-F!FG9(MwvolnDvdMLXJ>>BtJPEJ_a^+a#KxEv@L;Z2oJ+;QWp>G4%d2 z;-X7x9jWqt^P^G<;}%jG4HPZMi4{2~?tA$UopZuAA?9l;8YnTMNi2n)vw1 z3&SjHQ#tz8(^=%Cu+3mRDTgGBg4C!gRHk&z{Eh4w#`PgmsOD;)z+X;h9?4Kc)0 z@%B|&F|c9gZPpR&j^Q! z)!|{aa(t2BawpTHz=pY$NRIo=-UXL;hE_Qb%DfL-==;G-Uq}2zg~~W?3%1q3^R*O9 z-iygcE<3XbCeb8WJm}G+l1}PP`f8#HR(&lxZMH0fCC8`4Ih8_-RiBpCHQPXB8r9(> zlCZt&PO4W47sm5iJxbl4To}@K)%v$Zyq|Mi7__KJVyu5^-HR*--EKVtW5$1uDzoI$ zy^MefzLEt3g7~jd#nQn-*T5DSSAN;wX+xGdBFKT)gd?2FD+P_KrBbTiN3s#ZWlDOD(( zI`*^3i*p%Shy%%gX*KfO5U-F=2C+*O4bQD85z&Fe4K$GuIW>cobSOrCg;Q2d#mF7Mz$rCBB&tp>lxS#}amLs@Ir6;vSemb;QvOr? z0!$@H#1@GYoTLSCa?#Rpp*muNMbYdMd%3CElVH-H5GVT_qJ=d1R}CWsHVvc~F9Tl} zXd-Yy=*YClNXlC2x4ienj6?`qe;rk|U#1NsTSbsnWhx)NxW^J=mDyaVf*My^qh`hB1FV)bk~6%OOjyCYdC0J{gJ4~PyMfQ5hA4_>@)0BPqARD zXW$>YQ3maO!xMyayTJepcOhg# zkq5VgfLk5zZk9sA^BHlHR{ZdFSi(dj`MHr6-UiVHu0S#Z_4cc>eo=O?Ls}fgI&!V( zomVL^`A+ta>)e|{+qb>-7ECTz$CT9Xo8Dy;REK`=mF{y?6vuJXh#VgHeBIMT7sqCF zUY&+Eu@zIu{>89J&Zkyz@hi;Jdrm|k7C`Qv+%fF@O0g0`p3Y=G?Q(z~Et-OOgB~pC zGE+Z=-5PX>>$t)k!#XEkosP(BTrcT#m&q}_=d;K5`;nE%(u3o@43#7}=Ij*~k6rvi ztZJsLZi8ydx$dXmYSiKBBuTgPwq+_@<}{y zT-7wWEWT>nMzuJ6`je?_N}j<58})RbX;E>_O48s6t~jc`j7(0HxGU0#$r}YK{93pV#-3&65;_AMtx8$bCNtjsyiJfV_u* z2ZPzurUc%*s3HA91VHe;;rU?RZ(`#6msQ<;_*`7n*TV4x4->WfsBX86sT(d10!V=R z+kZs?-q+&6{v`ncZyN^R6%X-Q2t`J7;Z4=ZtVQ(*Bz1X>R!|@eF6ku%K0K#jvz3nzlbHE z|1p|Lqr6>t1y2B5O^JBO`u6)NBFHbzIOZ=8(vbJ-L4M1r6Z(Hm%3}2|45Y@4cj=6Q zcc@ezq`9dp+`>On^#=H1mg7>;viwS?GgPDn-r{d^Sgw@dAZsHX3jf zhT(s$F_#rA0j7By1tazf2F%l5dr@^NCLFweFrYYr^Dhr>Ee`s-eqV~!C=64X|KWX) zJ?h{R`U8=F;Nq9c9_h=MNACWwk03&Iv4Wgk@z?1sVU54ZPWMzi-J`qmZB!+rPT%d< zDzP#DBx)TCMOA7Wi~bmjayQoRrXglU$gR}ndGdosT9WFuWr^3vUjKE9**zN_5rhQ+ zDf0jUf&14KV`uMTZt%-&-Ar4yU2H(5BV5!EJK(7Gsf|JEfJ>^+$e4@56`c6!=;NDtz`1^8#XCuk5MMBay+*q%=C z5!=4W?(v(WpJbUP-w5MZaKbIEq*hz7AYJ$;KKF3t1?3neM|eKm+^;^K-r&=w>m@^j zMQ-CopIX4QOaFBt(q`6?g4osZx~hAN-S5pJeQv;f@Z$S+Tdvx zlVv8|xLQkwK+cfPGgxN&BRXG=4QwDFQiCNd`Jn3Bi%97p%wBkC+c5 z)%igU8MCuZFZieB@itFaSaYMe^@im!=u$%pQX7_&ou|`=rPPk)(#ZT`STnoIM&q;$ zB^w%pct|Hjik)U|OC~>mM&P6fg|aE`UJxlKcd`q+C|n{%^fJ)j|2L`_vLipo8nnfv?jSq!fl^b-U)f)x9Vt;Jd*PUPL+* zmjN$Vx@HF+fWgBoleotC@`0YteY+%>X+%!kB)I@;l1chVvA3YY@#RClN&151WMKUw zETwMT`iN|Q!*gwOOyUsbv)=)|ffG3bxcAy}SeqfHdQ9k&fqo;*rox_Msmth`ZMe%N z_R`Jnq#}{lhARpI>3XS(>N~6NP$LNqid@p?s%KoU%zLqDD#hs~;=yYec`uSo*eO+o zN<>-(If-plV2y)H!jQWO&8fZR;#JnYx3JF!JG!*m9R-X_*&xqOb-IN%K!~FcD z;o&jHXDu4&OQS(~?WL zk>{8Whc;g|*4)`|vC>>hlJ##(6M`tSiNe{h?JX>p*T{ypTg_62r(&@EO002WB59nl z$A@jD9M$Nx(iI~NT1wlBg)4^A(GD$TAtrnGP1}R#S67Txr01{1>81XRZou#c?aZ;>>nhsU&nIeb1S#L{gQU^C>zF2(LYl&>9nq<1?!G^<#$t zrE$cN;`bF|HU2N+b(nOozY@B_K_9}@$l!xfPk|Cba)J@dYabKIi}1feA^0v30DQ9s z@|INII0A{H#tDHUw*dy_)9-XZLjE(~uiG537u816{9ltBX9+;47Q*|W7Gu)BgQuwJ ze}%Hp3`nT|{W}W5%z)PjFSm*nb}We&M*5=uD@ic|v*``W!iN9rBMm@=Mj!zBSJD2J z(Mx&o|FekG5dq+Uh>bwN&leH2EP>a*O7SnXzYB#(LFa@>k^3ieK_&P73^I%Q`G_+m z?lPyt>*qZ&rTvmyvijhKy@+Bn1EVW1)V0Km`^>A(ZXD*-U1*)^L>q_Th4bpB0flJq4;*C(h+%~+c7q!By0F< zxg%O}nzsWp5nCgs_L2sy>}Yu)8LLuv&u1V_TjMA_^$3Dg2|Tp91b=XT8h&frbS_Ru z1NN1&(g(1aX>d+`%D!bF`Ox&UtsOJ=(qCUi{@672wsB$>WN*gIUQ&lO95DVR68VqJ z3Tc!|O2}Z9a=6SBH=uL^@ykE3ytM(&MzT+&#+V7OCieTmrsmsL>=B+qog`I_bmuxI zwR<4U3A!as33Z~(`T9tQb8uw3Vg6G}$#Q@xskTN~3bo41#i0q4Rc+s%*|JXG3Ajvc zn=Y9bjZ7a8%u89@z9j6uBuoOL(aXQ(ZL0HFlr{{-Ey{7{@YU##%lk&+IbKxFzg%h? z0ez-+|57!u|1a@R1tm7s#Ld9vU*dq=g8F}!!=79sF-VC|5-A$Rr~SG&Ey`Usa*dX> zMUpZ3;>JhVXH~A1FKuf^Pw$p;K=I9P@Wz{Q!*kf(z6~+iD=1}HdFb>vh_aN*17Z-a z)O4-Zam6K1d5RvRw)AN;{pMEE;ZE;Xir&vn04sJCV%UC&v*H>>zJ`LS8))+^rnE(M z`RA~~Ba#ec`;vOpF%FS4ZZ&W3QwL4wtK7sAl(PA1B|Q<+vl{Q}G{?}8KY zb%nco%$WERBI@IYN-91YbY9`BYFw#0P0Q|Maf#6SC_%!hgH=%bo6b80d|%rQBxZsu z-_<*fBNg1rzpC=2=2Up7Ieul=(0I;w^&A}E!+~x;whR;4#9A?frLL5xYX4O!)BgDgoL!kNqO*YD?(F-fBCn0>(28jT_Y4QP^uu7+t3SbTi$9#2+*9cCDTtislaya}VNf6D2_bhBJ$imxsZ}^)aFg&Dd3Xa)wtF^NMihUvg1>o;aG5 zwLV1Xma3GT#G93>sIBtvl)&vp?ldHD^*g)lKlLVXdFko(2Hq=7Rg+lN5T_w(p`t5T|G9T7>DL2s=F`7mg;W<~7Ls1o%_`xu*BZ&)7== zAg-rif`Ggn>+}mLa5B)9`x{trn6zw}LWk^qLVAP)e+^rAh9^5IrZ8jqlSGQMnAuLTYA)7JlS}-(DWSZHQ4>-b zp1Mhn*bdwXhg{z6)s%*UszY9k_`FE{5IhJIxAw3bnQLuyT*K^i3}PA91tTG*^ipeE76&7H;?k=N*^%@DvH5g5_;yfo6%323!I203cPL?G8Sgsh1Gb$y6dY1>c6 zCe%K3wN1PBak&+C#bl?(73JDtY1(kN(N5}MR&^ilaL9V)``(}!_FbH1jTXUH%%q#3 zo$P$g@D?75jL&Fmzp_eHej{ zYj~H)XiWPs{LmjF`9E8$%)in5Rf)J{{q^+8epgueTQ(tNl!YHGb~-ak4y zV{t#+L`9ZzCL8%DJc%q533cC+z_<$y`g7sDqOHN>4Y2qWtjdp1!8Wn4W?ajnV!*Tk z!e*qx!X+Bu+Sy|QO$5n^X>SS5mc&9B(Y0o?X;$S98F~jA{Z4!MrVUSTfk6PI`>D25pZRjHQssTNMg>2& zocy}C6?EfFUWAgo$q#y#BV%^baTsyz#%s3VK4%;uB*doh(oCoZJtmwOl2keJ!ESof zn%rWOLVtr^`nDY52K5vYcr5d|E)D@Hw@4BoWDHjXQ5sM815?d7VUo%5pzx^sRgANG zo9@QtZ=bBfe)O?7>gxGI9k-$w5gr+Q*bhw+=di8ZnLnbLSW|1b@p%qDRs&IT6x-RY zl-r%z_cG3*G9jN4R#!o!Y)4iXwXq>mitn*?5rvon%Up#L{(_+2{ptb*;pnbx0zTE>2@ely|;s4%Nb*!yl#>M}?ss8Svsd6LXlXUQH zglF%fPSi-3^Xw^SDW^~tz`w>NFLPrVO{fyp8Mu{DpLB7)CxSp*!H?)+%j$%b+JyJG z7>VE=3!R^qThw>6*2HKf>Lnt@FgBscs~5LbYU4?X8HUcH97l&0w*`?dzqv3nKMI9J zL%w+{Zro1P41ehRiPq`+YhM0(VQC9>O0Z;0aY+rzSF^%Ab(!F4+qa=zav&P~4u<`{ z`h^X1LC@5x7#LT#_vhM`xJJY^bqJt0&58386iBMVALHXlKIh9*pX!D`7+2QL`R*_Z zLwDeYmTac2=#P?LvEXf5 z%(Ak(Jd_Xlp*9#Qc-FlOh}>woditmbG}(yl-+!3XzHF%EVO#Oo=K)S~rM-C`_c&=| z;AnD9G|W}jIL(IRv&NjmYQ^p;5D-VfJgsNeWPJGG6t#cM{I(d0y{Kvf!%JQxY36m< zNIqegq1UNX9n-9hoM-Jttc2qa{($Aa*BA+g@fih+kqvWDDuvc98}7os%Rf-mk>EPi zTLbpdFX{=8XCF_UUFcIbZ?4`rY+94|DfM~*!}sqF0}4hBSg-%0itgY;YghwaW)`5U zBK^nst@Z&hD-0~{wd7r_4eT^t`jCwHzbn9v!mK|51f_rser*Q*A0;B5eP2m3Es z;8PaqAMxLr|6R%73Iaqv`SphnqTc&xKp+na^72CYlluD&g5r-R3j=)<9a<9$9U}vJ z8f#0V-_P=wiV(xvJb5<|keAoLt5ER-{rxO|Q^D|;iobq{e{y#JD#(x9KPvvo;QeQf z{*%e{mkL-=u>a&W{Zss(l!d><^&tO<{~LkfpYs32qyCcbd-JdC{|BA=r|>_0tG|R< zG5!eu!_)ewhJTvHe`#pL`lI3BjO2gH|GS~{mox|n6)qUaf0#Z06#w_R=kMZk@Bb$L bXC{&nhXfiq2*^9&Ul7nwUJ(J^2ju?%Pp^*3 literal 0 HcmV?d00001 diff --git a/SorokinAD/[2]lab_2/run_benchmark.py b/SorokinAD/[2]lab_2/run_benchmark.py new file mode 100644 index 0000000..6d8e2fd --- /dev/null +++ b/SorokinAD/[2]lab_2/run_benchmark.py @@ -0,0 +1,20 @@ +from benchmark import BenchmarkRunner + + +def main(): + + benchmark = BenchmarkRunner() + + benchmark.run( + maze_files=[ + "mazes/small.txt", + "mazes/open.txt", + "mazes/medium.txt", + "mazes/no_exit.txt", + ], + runs_per_test=10 + ) + + +if __name__ == "__main__": + main() diff --git a/SorokinAD/[2]lab_2/solver.py b/SorokinAD/[2]lab_2/solver.py new file mode 100644 index 0000000..8d264f6 --- /dev/null +++ b/SorokinAD/[2]lab_2/solver.py @@ -0,0 +1,86 @@ +import time + +from dataclasses import dataclass + +from maze import Maze +from strategies import PathFindingStrategy + + +@dataclass +class SearchStats: + time_ms: float + visited_cells: int + path_length: int + + +class MazeSolver: + + def __init__( + self, + maze: Maze, + strategy: PathFindingStrategy + ): + + self.maze = maze + self.strategy = strategy + + self.observers = [] + + # ===================================== + # Observer + # ===================================== + + def add_observer(self, observer): + + self.observers.append(observer) + + def notify(self, event: str): + + for observer in self.observers: + observer.update(event) + + # ===================================== + # Strategy + # ===================================== + + def set_strategy( + self, + strategy: PathFindingStrategy + ): + + self.strategy = strategy + + self.notify( + f"Strategy changed to {strategy.__class__.__name__}" + ) + + # ===================================== + # Solve + # ===================================== + + def solve(self): + + self.notify("Search started") + + start_time = time.perf_counter() + + path, visited_cells = self.strategy.find_path( + self.maze, + self.maze.start, + self.maze.exit + ) + + end_time = time.perf_counter() + + stats = SearchStats( + time_ms=(end_time - start_time) * 1000, + visited_cells=visited_cells, + path_length=len(path) + ) + + if path: + self.notify("Path found") + else: + self.notify("No path found") + + return path, stats diff --git a/SorokinAD/[2]lab_2/strategies.py b/SorokinAD/[2]lab_2/strategies.py new file mode 100644 index 0000000..dbe3955 --- /dev/null +++ b/SorokinAD/[2]lab_2/strategies.py @@ -0,0 +1,218 @@ +from abc import ABC, abstractmethod +from collections import deque +from heapq import heappush, heappop + +from maze import Maze +from cell import Cell + + +class PathFindingStrategy(ABC): + + @abstractmethod + def find_path( + self, + maze: Maze, + start: Cell, + exit: Cell + ) -> tuple[list[Cell], int]: + + pass + + +# ========================================================= +# BFS +# ========================================================= + +class BFSStrategy(PathFindingStrategy): + + def find_path(self, maze, start, exit): + + queue = deque([start]) + + visited = {start} + parent = {} + + visited_count = 0 + + while queue: + + current = queue.popleft() + + visited_count += 1 + + if current == exit: + path = self._restore_path(parent, start, exit) + return path, visited_count + + for neighbor in maze.get_neighbors(current): + + if neighbor not in visited: + + visited.add(neighbor) + + parent[neighbor] = current + + queue.append(neighbor) + + return [], visited_count + + @staticmethod + def _restore_path(parent, start, exit): + + path = [] + + current = exit + + while current != start: + path.append(current) + current = parent[current] + + path.append(start) + + path.reverse() + + return path + + +# ========================================================= +# DFS +# ========================================================= + +class DFSStrategy(PathFindingStrategy): + + def find_path(self, maze, start, exit): + + stack = [start] + + visited = {start} + parent = {} + + visited_count = 0 + + while stack: + + current = stack.pop() + + visited_count += 1 + + if current == exit: + path = self._restore_path(parent, start, exit) + return path, visited_count + + for neighbor in maze.get_neighbors(current): + + if neighbor not in visited: + + visited.add(neighbor) + + parent[neighbor] = current + + stack.append(neighbor) + + return [], visited_count + + @staticmethod + def _restore_path(parent, start, exit): + + path = [] + + current = exit + + while current != start: + path.append(current) + current = parent[current] + + path.append(start) + + path.reverse() + + return path + + +# ========================================================= +# A* +# ========================================================= + +class AStarStrategy(PathFindingStrategy): + + def heuristic(self, cell: Cell, exit: Cell): + + return abs(cell.x - exit.x) + abs(cell.y - exit.y) + + def find_path(self, maze, start, exit): + + open_set = [] + + heappush(open_set, (0, start.x, start.y, start)) + + g_score = { + start: 0 + } + + parent = {} + + visited = set() + + visited_count = 0 + + while open_set: + + _, _, _, current = heappop(open_set) + + if current in visited: + continue + + visited.add(current) + + visited_count += 1 + + if current == exit: + path = self._restore_path(parent, start, exit) + return path, visited_count + + for neighbor in maze.get_neighbors(current): + + tentative_g = g_score[current] + 1 + + if ( + neighbor not in g_score + or tentative_g < g_score[neighbor] + ): + + g_score[neighbor] = tentative_g + + f_score = tentative_g + self.heuristic( + neighbor, + exit + ) + + parent[neighbor] = current + + heappush( + open_set, + ( + f_score, + neighbor.x, + neighbor.y, + neighbor + ) + ) + + return [], visited_count + + @staticmethod + def _restore_path(parent, start, exit): + + path = [] + + current = exit + + while current != start: + path.append(current) + current = parent[current] + + path.append(start) + + path.reverse() + + return path \ No newline at end of file diff --git a/SorokinAD/[2]lab_2/visualization.py b/SorokinAD/[2]lab_2/visualization.py new file mode 100644 index 0000000..b32713b --- /dev/null +++ b/SorokinAD/[2]lab_2/visualization.py @@ -0,0 +1,56 @@ +from abc import ABC, abstractmethod + +from maze import Maze +from cell import Cell + + +class Observer(ABC): + + @abstractmethod + def update(self, event: str): + + pass + + +class ConsoleView(Observer): + + def update(self, event: str): + + print(f"[EVENT]: {event}") + + def render( + self, + maze: Maze, + path: list[Cell] = None, + current: Cell = None + ): + + path = path or [] + + path_set = set(path) + + for row in maze.cells: + + line = "" + + for cell in row: + + if current and cell == current: + line += "P" + + elif cell.is_start: + line += "S" + + elif cell.is_exit: + line += "E" + + elif cell.is_wall: + line += "#" + + elif cell in path_set: + line += "." + + else: + line += " " + + print(line) \ No newline at end of file