From 4cf4726e5763d9556fb2035de982af31fecdc136 Mon Sep 17 00:00:00 2001 From: Caiyishuai <39987654+Caiyishuai@users.noreply.github.com> Date: Tue, 28 Nov 2023 17:50:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=86=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../retrieval/retrieval_lm/fix_questions.txt | 37 +- robowaiter/behavior_lib/_base/Behavior.py | 29 + robowaiter/behavior_lib/act/DealChat.py | 206 ++- robowaiter/llm_client/tool_register.py | 90 +- robowaiter/scene/outputs/current_bt.dot | 199 +++ robowaiter/scene/outputs/current_bt.svg | 1171 +++++++++++++++++ robowaiter/scene/scene.py | 162 ++- robowaiter/scene/ui/pyqt5.py | 73 +- robowaiter/scene/ui/scene_ui.py | 45 +- robowaiter/scene/ui/window.py | 172 +-- robowaiter/scene/ui/window.ui | 299 +++-- robowaiter/utils/draw_bt/Default.ptml | 30 +- robowaiter/utils/draw_bt/Default_bracket.ptml | 49 +- robowaiter/utils/draw_bt/test.png | Bin 34381 -> 103625 bytes tasks_no_ui/OT/Open_tasks_test.py | 29 +- 15 files changed, 2249 insertions(+), 342 deletions(-) create mode 100644 robowaiter/scene/outputs/current_bt.dot create mode 100644 robowaiter/scene/outputs/current_bt.svg diff --git a/robowaiter/algos/retrieval/retrieval_lm/fix_questions.txt b/robowaiter/algos/retrieval/retrieval_lm/fix_questions.txt index cc7a19b..9b2196a 100644 --- a/robowaiter/algos/retrieval/retrieval_lm/fix_questions.txt +++ b/robowaiter/algos/retrieval/retrieval_lm/fix_questions.txt @@ -112,14 +112,18 @@ get_object_info 给我来杯酸奶和冰红茶,我坐在对面的桌子那儿。 好的,请稍等。 create_sub_task -{"goal":"On(Chips,WaterTable),On(NFCJuice,WaterTable)"} +{"goal":"On(BottledDrink,WaterTable),On(Yogurt,WaterTable)"} 给我来份薯片和果汁,我坐在对面的桌子那儿。 好的,请稍等。 create_sub_task -{"goal":"On(BottledDrink,WaterTable),On(Yogurt,WaterTable)"} +{"goal":"On(Chips,WaterTable),On(NFCJuice,WaterTable)"} +给我来份薯片和果汁,我坐在对面的水杯桌那儿。 +好的,请稍等。 +create_sub_task +{"goal":"On(Chips,WaterTable),On(NFCJuice,WaterTable)"} 好热呀,想开空调,想要温度调低点! 抱歉,我马上去开空调并调低空调温度。 @@ -131,6 +135,9 @@ create_sub_task 我想坐高脚凳子。 没问题,大厅里就有这样的位置呢! +get_object_info +{"obj":"高脚凳子的空位"} + 你带我去吧。 OK,请跟我来! @@ -164,6 +171,9 @@ create_sub_task 你好呀,你们这有啥好吃的? 我们咖啡厅有咖啡,还有饮料和点心蛋糕呢?您想点什么不? +get_object_info +{"obj":"饮料,水果,点心"} + 听起来都好甜呀,我女朋友爱吃水果。 没问题,我们也提供草莓、橘子和苹果等水果呢。 @@ -205,5 +215,26 @@ create_sub_task 水杯 好的 create_sub_task -{"goal":"On(Glass,Bar)"} +{"goal":"On(Water,Bar)"} +点心 +好的 +create_sub_task +{"goal":"On(Dessert,Bar)"} + +酸奶 +好的 +create_sub_task +{"goal":"On(Yogurt,Bar)"} + + +做一杯咖啡 +好的,我马上做咖啡 +create_sub_task +{"goal":"On(Coffee,CoffeeTable)"} + + +把盒装冰红茶放到水桌 +好的 +create_sub_task +{"goal":"On(Softdrink,WaterTable)"} \ No newline at end of file diff --git a/robowaiter/behavior_lib/_base/Behavior.py b/robowaiter/behavior_lib/_base/Behavior.py index 7051e10..5bfcff3 100644 --- a/robowaiter/behavior_lib/_base/Behavior.py +++ b/robowaiter/behavior_lib/_base/Behavior.py @@ -56,6 +56,35 @@ class Bahavior(ptree.behaviour.Behaviour): 'BrightTable6': (5, -315, 116.5), } + place_have_obj_xyz_dic = { + 'QuietTable1': (480, 1300, 70), + 'QuietTable2': (250, -240, 70), + 'BrightTable1': (230, 1200, 35), + 'BrightTable2': (65, 1000, 35), + 'BrightTable3': (-80, 850, 35), + 'BrightTable4': (-270, 520, 70), + 'BrightTable5': (-270, 420, 35) + } + place_have_obj_xyz_dic.update(place_xyz_dic) + + place_en2zh_name={ + 'Bar': "吧台", + 'Bar2': "另一侧的吧台", + 'WaterTable': "大厅的茶水桌", + 'CoffeeTable': "咖啡桌", + 'Table1': "前门的斜桌子", + 'Table2': "大厅长桌子", + 'Table3': "大厅长桌子", + 'BrightTable6': "后门靠窗边圆桌", + 'QuietTable1': "前门角落双人圆桌", + 'QuietTable2': "后门角落三人圆桌", + 'BrightTable1': "靠窗边第一个四人矮桌", + 'BrightTable2': "靠窗边第二个四人矮桌", + 'BrightTable3': "靠窗边第三个四人矮桌", + 'BrightTable4': "大厅里靠窗边长桌子", + 'BrightTable5': "大厅里靠窗边多人矮桌", + } + place_xy_yaw_dic={ 'Bar': (247.0, 520.0, 180), # (247.0, 520.0, 100.0) 'Bar2': (240.0, 40.0, 100.0), diff --git a/robowaiter/behavior_lib/act/DealChat.py b/robowaiter/behavior_lib/act/DealChat.py index 8a4f087..1980488 100644 --- a/robowaiter/behavior_lib/act/DealChat.py +++ b/robowaiter/behavior_lib/act/DealChat.py @@ -5,9 +5,17 @@ from robowaiter.llm_client.multi_rounds_retri import ask_llm, new_history import random from collections import deque +from translate import Translator + + +translator = Translator(to_lang="zh") +translator.from_lang = 'en' +translator.to_lang = 'zh-cn' import spacy nlp = spacy.load('en_core_web_lg') +nlp_zh = spacy.load('zh_core_web_lg') + class History(deque): def __init__(self,scene,customer_name): @@ -29,7 +37,8 @@ class DealChat(Act): "create_sub_task": self.create_sub_task, "stop_serve": self.stop_serve, "get_object_info": self.get_object_info, - "find_location": self.find_location + # "find_location": self.find_location, + "get_number_of_objects": self.get_number_of_objects, } def _update(self) -> ptree.common.Status: @@ -63,6 +72,12 @@ class DealChat(Act): return ptree.common.Status.RUNNING + def obj_name_en2zh(self,obj): + obj = obj.replace("_", " ") + obj = translator.translate(obj) #转成中文 + print("====obj:=======",obj) + return obj + def create_sub_task(self, **args): try: goal = args['goal'] @@ -84,76 +99,173 @@ class DealChat(Act): def get_object_info(self,**args): try: obj = args['obj'] - self.function_success = True except: obj = None print("参数解析错误") - d = {"保温杯": "二号桌子"} - if obj in d.keys(): - result = d[obj] - else: - result = "None" - return result + near_object = None + d = {"保温杯": "二号桌子","洗手间":"前门","卫生间":"前门"} - # max_similarity = 0.02 - # similar_word = None + # 先把 obj 转成中文 + + # 写死的内容 + if obj in d.keys(): + near_object = d[obj] + near_object = f"{obj}在{near_object}附近" + obj_id = 0 + else: # 根据相似性查找物品位置 + obj = self.obj_name_en2zh(obj) + + max_similarity = 0.02 + similar_word = None + + # 场景中现有物品 + cur_things = set() + for item in self.scene.status.objects: + cur_things.add(self.scene.objname_en2zh_dic[item.name]) + # obj与现有物品进行相似度匹配 中文的匹配 + print("==========obj==========:",obj) + query_token = nlp_zh(obj) + for w in cur_things: + word_token = nlp_zh(w) + similarity = query_token.similarity(word_token) + print("similarity:", similarity, w) + if similarity > max_similarity: + max_similarity = similarity + similar_word = w + if similar_word: + print("max_similarity:",max_similarity,"similar_word:",similar_word) + + if similar_word: # 存在同义词说明场景中存在该物品 + # near_object = random.choices(list(cur_things), k=5) # 返回场景中的5个物品 + # 找到距离最近的物品 + similar_word_en = self.scene.objname_zh2en_dic[similar_word] + obj_dict = self.scene.status.objects + if len(obj_dict)!=0: + + for id, obji in enumerate(obj_dict): + if obji.name == similar_word_en: + obj_info = obj_dict[id] + objx,objy,objz = obj_info.location.X, obj_info.location.Y, obj_info.location.Z + break + + # 获取离它最近的物品 + # min_dis = float('inf') + # obj_id = -1 + # near_object = None + # for id,obji in enumerate(obj_dict): + # if obji.name != similar_word_en: + # obj_info = obj_dict[id] + # dis = self.scene.getDistanc3D((obj_info.location.X, obj_info.location.Y, obj_info.location.Z),(objx,objy,objz)) + # if dis max_similarity: # max_similarity = similarity # similar_word = w + # print("similarity:", max_similarity, "similar_word:", similar_word) + # # 存在同义词说明客户咨询的地点有效 # if similar_word: - # print("max_similarity:",max_similarity,"similar_word:",similar_word) - # - # if similar_word: # 存在同义词说明场景中存在该物品 - # near_object = random.choices(list(cur_things), k=5) # 返回场景中的5个物品 - # - # if obj == "洗手间": - # near_object = "Door" - # - # return near_object - # - def find_location(self, **args): + # mp = list(self.scene.loc_map_en[similar_word]) + # near_location = random.choice(mp) + # return near_location + + def get_number_of_objects(self,**args): try: - location = args['obj'] + obj = args['obj'] self.function_success = True + obj = self.obj_name_en2zh(obj) except: obj = None print("参数解析错误") - d = {"保温杯": "二号桌子"} - if location in d.keys(): - result = d[obj] + # 找到最近的中文 + max_similarity = 0.02 + similar_word = None + + # obj 是中文 + # obj = translator.translate(obj) #转成中文 + # print("obj:",obj) + query_token = nlp_zh(obj) + for real_obj_name in self.scene.objname_zh2en_dic.keys(): # 在中文名字里面找 + word_token = nlp_zh(real_obj_name) + similarity = query_token.similarity(word_token) + # print("similarity:",similarity,real_obj_name) + if similarity > max_similarity: + max_similarity = similarity + similar_word = real_obj_name + if similar_word: + print("max_similarity:",max_similarity,"similar_word:",similar_word) + + count = 0 + similar_word_en = self.scene.objname_zh2en_dic[similar_word] + if similar_word_en != "Customer": + for item in self.scene.status.objects: + if item.name == similar_word_en: + count+=1 else: - result = "None" - return result - # 用户咨询的地点 - # query_token = nlp(location) - # max_similarity = 0 - # similar_word = None - # # 到自己维护的地点列表中找同义词 - # for w in self.scene.all_loc_en: - # word_token = nlp(w) + count = len(self.scene.status.walkers) + + # obj 是英文 + # query_token = nlp(obj) + # for real_obj_name in self.scene.objname_en2zh_dic.keys(): # 在中文名字里面找 + # word_token = nlp(real_obj_name) # similarity = query_token.similarity(word_token) + # print("similarity:",similarity,real_obj_name) # if similarity > max_similarity: # max_similarity = similarity - # similar_word = w - # print("similarity:", max_similarity, "similar_word:", similar_word) - # # 存在同义词说明客户咨询的地点有效 + # similar_word = real_obj_name # if similar_word: - # mp = list(self.scene.loc_map_en[similar_word]) - # near_location = random.choice(mp) - # return near_location + # print("max_similarity:",max_similarity,"similar_word:",similar_word) + return count + + def stop_serve(self,**args): customer = self.scene.state["attention"]["customer"] diff --git a/robowaiter/llm_client/tool_register.py b/robowaiter/llm_client/tool_register.py index f15a927..a16ee1d 100644 --- a/robowaiter/llm_client/tool_register.py +++ b/robowaiter/llm_client/tool_register.py @@ -160,14 +160,40 @@ def stop_serve( @register_tool def get_object_info( - obj: Annotated[str, '需要获取信息的物体名称', True] + obj: Annotated[str, '需要获取位置的物体名称', True] ) -> str: """ - 获取场景中指定物体 `object` 在哪里,不涉及到具体的执行任务 - 如果`object` 是一个地点,例如洗手间,则输出大门。 - 如果`object`是咖啡,则输出桌子,咖啡在桌子上。 - 如果`object` 是空桌子,则输出一号桌 + 获取场景中`object`的位置信息。在询问物品位置时调用该函数,以辅助场景交互,不执行动作 + 例如: + `object`在哪里? + 哪有`object` + 哪里有`object`? + `object`在哪里 + 哪里有`object` + `object`放在哪里 + 我在哪儿能找到`object` + 你们这儿有`object`吗? + 你们这里有`object` + 你看见`object`了吗? + `object`在你们这里吗 + `object`,你看见过吗? + 遇到上述问题时,调用该函数,并根据返回的结果回复物体位置信息,例如 + 回答: + `object`在输出的物品附近 + 如果`object` 是一个地点,例如洗手间,则输出大门。 + 如果`object`是咖啡,输出桌子,则咖啡在桌子上。 + 如果`object`是酸奶,输出冰红茶,则酸奶在冰红茶附近。 + 如果`object` 是空桌子,则输出一号桌 """ + + # 桌上有 + # `object` + # 吗? + # 咖啡厅里哪里有 + # `object` + # `object` + # 放在哪里? + near_object = None # if obj == "Table": # near_object = "Bar" @@ -192,22 +218,44 @@ def get_object_info( # 获取的location为英文 # 用户想找某个地点 # """ -# near_location = None -# query_token = nlp(location) -# max_similarity = 0 -# similar_word = None -# for w in find_obj_utils.all_loc_en: -# word_token = nlp(w) -# similarity = query_token.similarity(word_token) -# -# if similarity > max_similarity: -# max_similarity = similarity -# similar_word = w -# print("similarity:", max_similarity, "similar_word:", similar_word) -# if similar_word: -# mp = list(find_obj_utils.loc_map_en[similar_word]) -# near_location = random.choice(mp) -# return near_location + # near_location = None + # query_token = nlp(location) + # max_similarity = 0 + # similar_word = None + # for w in find_obj_utils.all_loc_en: + # word_token = nlp(w) + # similarity = query_token.similarity(word_token) + # + # if similarity > max_similarity: + # max_similarity = similarity + # similar_word = w + # print("similarity:", max_similarity, "similar_word:", similar_word) + # if similar_word: + # mp = list(find_obj_utils.loc_map_en[similar_word]) + # near_location = random.choice(mp) + # return near_location + + +@register_tool +def get_number_of_objects( + obj: Annotated[str, '需要获取数量的物体名称', True] +) -> str: + """ + 当询问场景中的物体数量时,需要调用这个工具。 + 例如询问: + `obj`有多少? + 有多少`obj` + 你们还有`obj` + '桌子有几张' + `obj`还有多的吗? + `obj`有几个 + `obj`有多少个 + 这个工具用于获取场景中指定物体 `obj` 的数量,返回一个整数,不涉及到具体的执行任务。 + 如果`obj`是咖啡,如果场景中有5杯咖啡,就返回 5 + 如果`obj`是桌子,如果场景中有7张桌子,就返回 7 + 如果`obj`是行人,如果场景中有10个顾客,就返回 10 + """ + if __name__ == "__main__": print(dispatch_tool("get_weather", {"city_name": "beijing"})) diff --git a/robowaiter/scene/outputs/current_bt.dot b/robowaiter/scene/outputs/current_bt.dot new file mode 100644 index 0000000..10484f2 --- /dev/null +++ b/robowaiter/scene/outputs/current_bt.dot @@ -0,0 +1,199 @@ +digraph pastafarianism { +ordering=out; +graph [fontname="times-roman"]; +node [fontname="times-roman"]; +edge [fontname="times-roman"]; +"a582faee-7147-4195-81ba-85add86624b4" [fillcolor=cyan, fontcolor=black, fontsize=20, height=0.01, label=Selector, shape=diamond, style=filled, width=0.01]; +"52d9dd56-2854-495c-820a-d4f291507f33" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"a582faee-7147-4195-81ba-85add86624b4" -> "52d9dd56-2854-495c-820a-d4f291507f33"; +"252a809b-7f62-49ae-addc-2191835a3544" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Chatting()", shape=ellipse, style=filled]; +"52d9dd56-2854-495c-820a-d4f291507f33" -> "252a809b-7f62-49ae-addc-2191835a3544"; +"39c31e0a-dd14-4477-a2e9-01754d4f25ca" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="DealChat()", shape=box, style=filled]; +"52d9dd56-2854-495c-820a-d4f291507f33" -> "39c31e0a-dd14-4477-a2e9-01754d4f25ca"; +"b938e131-cc32-4d66-a769-0b4539bbd4e9" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"a582faee-7147-4195-81ba-85add86624b4" -> "b938e131-cc32-4d66-a769-0b4539bbd4e9"; +"0e243f89-91ee-4b48-8a2b-a685f90589d3" [fillcolor=yellow, fontcolor=black, fontsize=20, label="HasSubTask()", shape=ellipse, style=filled]; +"b938e131-cc32-4d66-a769-0b4539bbd4e9" -> "0e243f89-91ee-4b48-8a2b-a685f90589d3"; +"38ed4e08-f4ae-4250-ad32-eff42d5ab471" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"b938e131-cc32-4d66-a769-0b4539bbd4e9" -> "38ed4e08-f4ae-4250-ad32-eff42d5ab471"; +"057834e6-77b3-416b-bebe-0e1690ea7b77" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"38ed4e08-f4ae-4250-ad32-eff42d5ab471" -> "057834e6-77b3-416b-bebe-0e1690ea7b77"; +"89809d74-1aa6-4401-b296-b10cb96a0017" [fillcolor=cyan, fontcolor=black, fontsize=20, height=0.01, label=Selector, shape=diamond, style=filled, width=0.01]; +"057834e6-77b3-416b-bebe-0e1690ea7b77" -> "89809d74-1aa6-4401-b296-b10cb96a0017"; +"428ce8be-6e76-4032-865e-ed767f6d9cd9" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"89809d74-1aa6-4401-b296-b10cb96a0017" -> "428ce8be-6e76-4032-865e-ed767f6d9cd9"; +"416609ed-eb10-4d93-a8bf-389b30c8a489" [fillcolor=yellow, fontcolor=black, fontsize=20, label="On(Coffee,WaterTable)", shape=ellipse, style=filled]; +"428ce8be-6e76-4032-865e-ed767f6d9cd9" -> "416609ed-eb10-4d93-a8bf-389b30c8a489"; +"4fc84dda-929f-42f0-b845-2caf0dd9de9b" [fillcolor=yellow, fontcolor=black, fontsize=20, label="On(Water,WaterTable)", shape=ellipse, style=filled]; +"428ce8be-6e76-4032-865e-ed767f6d9cd9" -> "4fc84dda-929f-42f0-b845-2caf0dd9de9b"; +"8dbb1cc4-46f0-4a7f-bd41-bf4918faad0f" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"89809d74-1aa6-4401-b296-b10cb96a0017" -> "8dbb1cc4-46f0-4a7f-bd41-bf4918faad0f"; +"c4db186e-044d-4992-a6d0-dc0cf95aa3af" [fillcolor=yellow, fontcolor=black, fontsize=20, label="On(Coffee,WaterTable)", shape=ellipse, style=filled]; +"8dbb1cc4-46f0-4a7f-bd41-bf4918faad0f" -> "c4db186e-044d-4992-a6d0-dc0cf95aa3af"; +"670d06c4-42a3-4e25-803f-43c8d6bc704c" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled]; +"8dbb1cc4-46f0-4a7f-bd41-bf4918faad0f" -> "670d06c4-42a3-4e25-803f-43c8d6bc704c"; +"8ae61657-5b87-400a-b508-c99eac28f0b1" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="Make(Water)", shape=box, style=filled]; +"8dbb1cc4-46f0-4a7f-bd41-bf4918faad0f" -> "8ae61657-5b87-400a-b508-c99eac28f0b1"; +"499ad5e8-a924-45b2-8f9e-e376e12cc23f" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"89809d74-1aa6-4401-b296-b10cb96a0017" -> "499ad5e8-a924-45b2-8f9e-e376e12cc23f"; +"933d9099-d8cb-439a-a194-5ee422cccd64" [fillcolor=yellow, fontcolor=black, fontsize=20, label="On(Coffee,WaterTable)", shape=ellipse, style=filled]; +"499ad5e8-a924-45b2-8f9e-e376e12cc23f" -> "933d9099-d8cb-439a-a194-5ee422cccd64"; +"1d582953-04bd-4d6e-b57e-cc516073a5f2" [fillcolor=yellow, fontcolor=black, fontsize=20, label="At(Robot,WaterTable)", shape=ellipse, style=filled]; +"499ad5e8-a924-45b2-8f9e-e376e12cc23f" -> "1d582953-04bd-4d6e-b57e-cc516073a5f2"; +"5da03831-1168-4a0b-b5c4-e1545eae332f" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Holding(Water)", shape=ellipse, style=filled]; +"499ad5e8-a924-45b2-8f9e-e376e12cc23f" -> "5da03831-1168-4a0b-b5c4-e1545eae332f"; +"41cde1a8-35f2-47ec-8eb9-04bd6f7c6879" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="PutDown(Water,WaterTable)", shape=box, style=filled]; +"499ad5e8-a924-45b2-8f9e-e376e12cc23f" -> "41cde1a8-35f2-47ec-8eb9-04bd6f7c6879"; +"508b6d47-b448-452f-bb2a-3d214c4b33ad" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"89809d74-1aa6-4401-b296-b10cb96a0017" -> "508b6d47-b448-452f-bb2a-3d214c4b33ad"; +"c1bb3e26-8883-42ea-b6c3-57b6b989609a" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Holding(Coffee)", shape=ellipse, style=filled]; +"508b6d47-b448-452f-bb2a-3d214c4b33ad" -> "c1bb3e26-8883-42ea-b6c3-57b6b989609a"; +"d92346dd-2191-41a5-9536-f82022404c75" [fillcolor=yellow, fontcolor=black, fontsize=20, label="At(Robot,WaterTable)", shape=ellipse, style=filled]; +"508b6d47-b448-452f-bb2a-3d214c4b33ad" -> "d92346dd-2191-41a5-9536-f82022404c75"; +"86966885-d2be-4e6e-9946-8cfe42a7220c" [fillcolor=yellow, fontcolor=black, fontsize=20, label="On(Water,WaterTable)", shape=ellipse, style=filled]; +"508b6d47-b448-452f-bb2a-3d214c4b33ad" -> "86966885-d2be-4e6e-9946-8cfe42a7220c"; +"df497c9e-356b-4304-9fd0-921db828e93f" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="PutDown(Coffee,WaterTable)", shape=box, style=filled]; +"508b6d47-b448-452f-bb2a-3d214c4b33ad" -> "df497c9e-356b-4304-9fd0-921db828e93f"; +"1ccd2c59-53f0-42cb-ae43-54478ae1c64b" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"89809d74-1aa6-4401-b296-b10cb96a0017" -> "1ccd2c59-53f0-42cb-ae43-54478ae1c64b"; +"8342fd0e-0596-496c-9534-8770a064b59e" [fillcolor=yellow, fontcolor=black, fontsize=20, label="On(Coffee,WaterTable)", shape=ellipse, style=filled]; +"1ccd2c59-53f0-42cb-ae43-54478ae1c64b" -> "8342fd0e-0596-496c-9534-8770a064b59e"; +"04e4b336-479a-4bb3-972d-f186a3d03759" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="FreeHands()", shape=box, style=filled]; +"1ccd2c59-53f0-42cb-ae43-54478ae1c64b" -> "04e4b336-479a-4bb3-972d-f186a3d03759"; +"55980925-a4d9-4fde-b08a-b2dcffbec659" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"89809d74-1aa6-4401-b296-b10cb96a0017" -> "55980925-a4d9-4fde-b08a-b2dcffbec659"; +"f246a574-4935-4646-a474-d866d7f8355b" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Holding(Coffee)", shape=ellipse, style=filled]; +"55980925-a4d9-4fde-b08a-b2dcffbec659" -> "f246a574-4935-4646-a474-d866d7f8355b"; +"d33b539f-f3ac-4934-b0d2-c538d3bde390" [fillcolor=yellow, fontcolor=black, fontsize=20, label="At(Robot,WaterTable)", shape=ellipse, style=filled]; +"55980925-a4d9-4fde-b08a-b2dcffbec659" -> "d33b539f-f3ac-4934-b0d2-c538d3bde390"; +"95c3881e-ad7c-4a6e-b758-683834718b67" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="PutDown(Coffee,WaterTable)", shape=box, style=filled]; +"55980925-a4d9-4fde-b08a-b2dcffbec659" -> "95c3881e-ad7c-4a6e-b758-683834718b67"; +"c9d033ba-b2a5-406f-8d7b-c644ee5e8a13" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"89809d74-1aa6-4401-b296-b10cb96a0017" -> "c9d033ba-b2a5-406f-8d7b-c644ee5e8a13"; +"8483c080-80c2-4f0d-9787-4a8ab035c8f7" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Holding(Coffee)", shape=ellipse, style=filled]; +"c9d033ba-b2a5-406f-8d7b-c644ee5e8a13" -> "8483c080-80c2-4f0d-9787-4a8ab035c8f7"; +"696baf79-2e67-4225-84f9-4db8cb5a7877" [fillcolor=yellow, fontcolor=black, fontsize=20, label="On(Water,WaterTable)", shape=ellipse, style=filled]; +"c9d033ba-b2a5-406f-8d7b-c644ee5e8a13" -> "696baf79-2e67-4225-84f9-4db8cb5a7877"; +"71f49725-d34c-4990-8956-94b0d7076872" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="MoveTo(WaterTable)", shape=box, style=filled]; +"c9d033ba-b2a5-406f-8d7b-c644ee5e8a13" -> "71f49725-d34c-4990-8956-94b0d7076872"; +"ae1795ad-99ad-4a19-ae19-3dfac64b96d5" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"89809d74-1aa6-4401-b296-b10cb96a0017" -> "ae1795ad-99ad-4a19-ae19-3dfac64b96d5"; +"3f5584f5-98e4-4d97-ada4-518fd930efe1" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Holding(Coffee)", shape=ellipse, style=filled]; +"ae1795ad-99ad-4a19-ae19-3dfac64b96d5" -> "3f5584f5-98e4-4d97-ada4-518fd930efe1"; +"feb9d0bd-81ef-4de4-a011-554cfab12dfc" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="MoveTo(WaterTable)", shape=box, style=filled]; +"ae1795ad-99ad-4a19-ae19-3dfac64b96d5" -> "feb9d0bd-81ef-4de4-a011-554cfab12dfc"; +"0304536e-fa59-485d-a452-47a668dfe2ea" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"89809d74-1aa6-4401-b296-b10cb96a0017" -> "0304536e-fa59-485d-a452-47a668dfe2ea"; +"4a75fcc7-7c99-4d64-8150-add03da82ef7" [fillcolor=yellow, fontcolor=black, fontsize=20, label="At(Robot,Coffee)", shape=ellipse, style=filled]; +"0304536e-fa59-485d-a452-47a668dfe2ea" -> "4a75fcc7-7c99-4d64-8150-add03da82ef7"; +"911690ee-a827-4fde-9846-5f291ef0ff6e" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled]; +"0304536e-fa59-485d-a452-47a668dfe2ea" -> "911690ee-a827-4fde-9846-5f291ef0ff6e"; +"c35cb7a2-15d2-4440-bbf8-7667b5711653" [fillcolor=yellow, fontcolor=black, fontsize=20, label="On(Water,WaterTable)", shape=ellipse, style=filled]; +"0304536e-fa59-485d-a452-47a668dfe2ea" -> "c35cb7a2-15d2-4440-bbf8-7667b5711653"; +"7baadc46-e643-4db4-bbd7-d8f109ea6c06" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="PickUp(Coffee)", shape=box, style=filled]; +"0304536e-fa59-485d-a452-47a668dfe2ea" -> "7baadc46-e643-4db4-bbd7-d8f109ea6c06"; +"b7923c0f-0992-4266-868d-558efbd07716" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"89809d74-1aa6-4401-b296-b10cb96a0017" -> "b7923c0f-0992-4266-868d-558efbd07716"; +"d5c99c51-2edc-4d41-b2db-0068f92aa77c" [fillcolor=yellow, fontcolor=black, fontsize=20, label="At(Robot,Coffee)", shape=ellipse, style=filled]; +"b7923c0f-0992-4266-868d-558efbd07716" -> "d5c99c51-2edc-4d41-b2db-0068f92aa77c"; +"89129311-b249-4eab-83a7-c5cf21a35c00" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled]; +"b7923c0f-0992-4266-868d-558efbd07716" -> "89129311-b249-4eab-83a7-c5cf21a35c00"; +"711d4b2e-0087-4520-9528-ad5b252aadd5" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="PickUp(Coffee)", shape=box, style=filled]; +"b7923c0f-0992-4266-868d-558efbd07716" -> "711d4b2e-0087-4520-9528-ad5b252aadd5"; +"6de54193-aa93-4d1a-b3f3-d04adb06a7ac" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"89809d74-1aa6-4401-b296-b10cb96a0017" -> "6de54193-aa93-4d1a-b3f3-d04adb06a7ac"; +"55153a6f-cb38-4bd1-8602-d6960b6bdbfa" [fillcolor=yellow, fontcolor=black, fontsize=20, label="At(Robot,Coffee)", shape=ellipse, style=filled]; +"6de54193-aa93-4d1a-b3f3-d04adb06a7ac" -> "55153a6f-cb38-4bd1-8602-d6960b6bdbfa"; +"88c8b174-727b-4249-8768-17630e6e37e0" [fillcolor=yellow, fontcolor=black, fontsize=20, label="On(Water,WaterTable)", shape=ellipse, style=filled]; +"6de54193-aa93-4d1a-b3f3-d04adb06a7ac" -> "88c8b174-727b-4249-8768-17630e6e37e0"; +"c7f0187c-a4c8-4b76-8da1-4ac790e56ee5" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="FreeHands()", shape=box, style=filled]; +"6de54193-aa93-4d1a-b3f3-d04adb06a7ac" -> "c7f0187c-a4c8-4b76-8da1-4ac790e56ee5"; +"acc92740-05eb-4963-b01b-63b41cf20140" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"89809d74-1aa6-4401-b296-b10cb96a0017" -> "acc92740-05eb-4963-b01b-63b41cf20140"; +"5508c6dc-6c58-4d91-a2f7-81b19be0f22d" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled]; +"acc92740-05eb-4963-b01b-63b41cf20140" -> "5508c6dc-6c58-4d91-a2f7-81b19be0f22d"; +"ed0d3415-95b4-4ce5-9341-b7352f78eff1" [fillcolor=yellow, fontcolor=black, fontsize=20, label="On(Water,WaterTable)", shape=ellipse, style=filled]; +"acc92740-05eb-4963-b01b-63b41cf20140" -> "ed0d3415-95b4-4ce5-9341-b7352f78eff1"; +"248b5d9a-5160-4154-a747-35c180c26788" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Exist(Coffee)", shape=ellipse, style=filled]; +"acc92740-05eb-4963-b01b-63b41cf20140" -> "248b5d9a-5160-4154-a747-35c180c26788"; +"96ea24c5-198d-46ff-88e6-375a310463c2" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="MoveTo(Coffee)", shape=box, style=filled]; +"acc92740-05eb-4963-b01b-63b41cf20140" -> "96ea24c5-198d-46ff-88e6-375a310463c2"; +"370f4fa8-1789-47cf-86d4-43c1fcaec40d" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"89809d74-1aa6-4401-b296-b10cb96a0017" -> "370f4fa8-1789-47cf-86d4-43c1fcaec40d"; +"3b4e2601-a215-4c53-9725-024a7272ca01" [fillcolor=yellow, fontcolor=black, fontsize=20, label="At(Robot,Coffee)", shape=ellipse, style=filled]; +"370f4fa8-1789-47cf-86d4-43c1fcaec40d" -> "3b4e2601-a215-4c53-9725-024a7272ca01"; +"5207249d-7ed3-4374-8c35-551323aa6e6f" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="FreeHands()", shape=box, style=filled]; +"370f4fa8-1789-47cf-86d4-43c1fcaec40d" -> "5207249d-7ed3-4374-8c35-551323aa6e6f"; +"adb07734-f041-4c2e-9e4c-360fc7932ec9" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"89809d74-1aa6-4401-b296-b10cb96a0017" -> "adb07734-f041-4c2e-9e4c-360fc7932ec9"; +"c050928b-ea79-40c0-b9ba-fdf1cb60a773" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled]; +"adb07734-f041-4c2e-9e4c-360fc7932ec9" -> "c050928b-ea79-40c0-b9ba-fdf1cb60a773"; +"07b147ab-23b5-48ae-9449-c810c93e28b4" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Exist(Coffee)", shape=ellipse, style=filled]; +"adb07734-f041-4c2e-9e4c-360fc7932ec9" -> "07b147ab-23b5-48ae-9449-c810c93e28b4"; +"59f2afe9-173b-41f8-921e-29cfd4ecc1c4" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="MoveTo(Coffee)", shape=box, style=filled]; +"adb07734-f041-4c2e-9e4c-360fc7932ec9" -> "59f2afe9-173b-41f8-921e-29cfd4ecc1c4"; +"fcbee6e1-0e5e-41c3-9db5-5bf808bac68b" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"89809d74-1aa6-4401-b296-b10cb96a0017" -> "fcbee6e1-0e5e-41c3-9db5-5bf808bac68b"; +"f0843e6c-a65a-4d9f-971d-06766e94df66" [fillcolor=yellow, fontcolor=black, fontsize=20, label="On(Water,WaterTable)", shape=ellipse, style=filled]; +"fcbee6e1-0e5e-41c3-9db5-5bf808bac68b" -> "f0843e6c-a65a-4d9f-971d-06766e94df66"; +"6dab056a-a232-4212-af57-5c1c1465db99" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Exist(Coffee)", shape=ellipse, style=filled]; +"fcbee6e1-0e5e-41c3-9db5-5bf808bac68b" -> "6dab056a-a232-4212-af57-5c1c1465db99"; +"0c2f54f1-85e8-486d-9c81-3d18f5f12ae8" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="MoveTo(Coffee)", shape=box, style=filled]; +"fcbee6e1-0e5e-41c3-9db5-5bf808bac68b" -> "0c2f54f1-85e8-486d-9c81-3d18f5f12ae8"; +"1c873ce0-8037-40a0-9394-037257e6ef1f" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"89809d74-1aa6-4401-b296-b10cb96a0017" -> "1c873ce0-8037-40a0-9394-037257e6ef1f"; +"4c2f06f6-fa4b-41a2-a50d-cbd4f2370b5b" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled]; +"1c873ce0-8037-40a0-9394-037257e6ef1f" -> "4c2f06f6-fa4b-41a2-a50d-cbd4f2370b5b"; +"e311ac9a-4505-442e-9ec9-47c2a0fd2ac8" [fillcolor=yellow, fontcolor=black, fontsize=20, label="On(Water,WaterTable)", shape=ellipse, style=filled]; +"1c873ce0-8037-40a0-9394-037257e6ef1f" -> "e311ac9a-4505-442e-9ec9-47c2a0fd2ac8"; +"b3880316-85f0-4124-a18a-fa84896d3485" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="Make(Coffee)", shape=box, style=filled]; +"1c873ce0-8037-40a0-9394-037257e6ef1f" -> "b3880316-85f0-4124-a18a-fa84896d3485"; +"96e46656-34ac-47aa-83b1-902ec66e53b5" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"89809d74-1aa6-4401-b296-b10cb96a0017" -> "96e46656-34ac-47aa-83b1-902ec66e53b5"; +"41ad97fa-7ea9-48e4-8cd3-187dc53fe992" [fillcolor=yellow, fontcolor=black, fontsize=20, label="At(Robot,WaterTable)", shape=ellipse, style=filled]; +"96e46656-34ac-47aa-83b1-902ec66e53b5" -> "41ad97fa-7ea9-48e4-8cd3-187dc53fe992"; +"7e7163b1-eadd-4f81-99c5-5cd238252a79" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Holding(Water)", shape=ellipse, style=filled]; +"96e46656-34ac-47aa-83b1-902ec66e53b5" -> "7e7163b1-eadd-4f81-99c5-5cd238252a79"; +"18b63af1-2803-4a7d-95c2-c701dff29a51" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Exist(Coffee)", shape=ellipse, style=filled]; +"96e46656-34ac-47aa-83b1-902ec66e53b5" -> "18b63af1-2803-4a7d-95c2-c701dff29a51"; +"1f492236-0a16-4e47-bca0-d6cda8fc1e79" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="PutDown(Water,WaterTable)", shape=box, style=filled]; +"96e46656-34ac-47aa-83b1-902ec66e53b5" -> "1f492236-0a16-4e47-bca0-d6cda8fc1e79"; +"26396b01-8762-46f0-be46-224b590173ce" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"89809d74-1aa6-4401-b296-b10cb96a0017" -> "26396b01-8762-46f0-be46-224b590173ce"; +"bee79c41-c84d-427a-a0b4-fe732ab6e448" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Exist(Coffee)", shape=ellipse, style=filled]; +"26396b01-8762-46f0-be46-224b590173ce" -> "bee79c41-c84d-427a-a0b4-fe732ab6e448"; +"7845d148-bef6-4b74-959b-5e13fbe75330" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="MoveTo(Coffee)", shape=box, style=filled]; +"26396b01-8762-46f0-be46-224b590173ce" -> "7845d148-bef6-4b74-959b-5e13fbe75330"; +"eee68ac0-f125-4074-a523-dcd9b1d25e42" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"89809d74-1aa6-4401-b296-b10cb96a0017" -> "eee68ac0-f125-4074-a523-dcd9b1d25e42"; +"bc97fe9a-8eeb-4d4f-8865-025bf8ab1d0e" [fillcolor=yellow, fontcolor=black, fontsize=20, label="Holding(Nothing)", shape=ellipse, style=filled]; +"eee68ac0-f125-4074-a523-dcd9b1d25e42" -> "bc97fe9a-8eeb-4d4f-8865-025bf8ab1d0e"; +"e631843b-92d8-4612-8dcf-7dd66b86a531" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="Make(Coffee)", shape=box, style=filled]; +"eee68ac0-f125-4074-a523-dcd9b1d25e42" -> "e631843b-92d8-4612-8dcf-7dd66b86a531"; +"1c7e5f57-89fe-40d3-a5fe-45d7fa2e7f90" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="DelSubTree()", shape=box, style=filled]; +"057834e6-77b3-416b-bebe-0e1690ea7b77" -> "1c7e5f57-89fe-40d3-a5fe-45d7fa2e7f90"; +"deb5f50b-93ac-4601-a5f1-af68f0f9d50a" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"a582faee-7147-4195-81ba-85add86624b4" -> "deb5f50b-93ac-4601-a5f1-af68f0f9d50a"; +"8d9e0427-c7c4-4c8a-b6a1-d3cf0a7ae4c6" [fillcolor=yellow, fontcolor=black, fontsize=20, label="FocusingCustomer()", shape=ellipse, style=filled]; +"deb5f50b-93ac-4601-a5f1-af68f0f9d50a" -> "8d9e0427-c7c4-4c8a-b6a1-d3cf0a7ae4c6"; +"a8ab831b-5e89-41c6-9a6a-15441aa1d32b" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="ServeCustomer()", shape=box, style=filled]; +"deb5f50b-93ac-4601-a5f1-af68f0f9d50a" -> "a8ab831b-5e89-41c6-9a6a-15441aa1d32b"; +"cc071d28-4cb6-4bbd-a866-38f48b77efda" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"a582faee-7147-4195-81ba-85add86624b4" -> "cc071d28-4cb6-4bbd-a866-38f48b77efda"; +"e227e659-1432-4fba-8b6a-a9364e51076c" [fillcolor=yellow, fontcolor=black, fontsize=20, label="NewCustomer()", shape=ellipse, style=filled]; +"cc071d28-4cb6-4bbd-a866-38f48b77efda" -> "e227e659-1432-4fba-8b6a-a9364e51076c"; +"d3a930dc-8300-4510-a83c-5f070170bb5b" [fillcolor=cyan, fontcolor=black, fontsize=20, height=0.01, label=Selector, shape=diamond, style=filled, width=0.01]; +"cc071d28-4cb6-4bbd-a866-38f48b77efda" -> "d3a930dc-8300-4510-a83c-5f070170bb5b"; +"85295be4-2eed-4dac-98f6-040450241204" [fillcolor=yellow, fontcolor=black, fontsize=20, label="At(Robot,Bar)", shape=ellipse, style=filled]; +"d3a930dc-8300-4510-a83c-5f070170bb5b" -> "85295be4-2eed-4dac-98f6-040450241204"; +"5a775c24-2a6b-445c-87e9-9eeab2b6882c" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="MoveTo(Bar)", shape=box, style=filled]; +"d3a930dc-8300-4510-a83c-5f070170bb5b" -> "5a775c24-2a6b-445c-87e9-9eeab2b6882c"; +"3b8f863e-eef0-43e9-8ccc-4086c59af2a1" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="GreetCustomer()", shape=box, style=filled]; +"cc071d28-4cb6-4bbd-a866-38f48b77efda" -> "3b8f863e-eef0-43e9-8ccc-4086c59af2a1"; +"16c9b1ee-9159-4816-92a4-37c149d0233a" [fillcolor=orange, fontcolor=black, fontsize=20, height=0.01, label=Sequence, shape=octagon, style=filled, width=0.01]; +"a582faee-7147-4195-81ba-85add86624b4" -> "16c9b1ee-9159-4816-92a4-37c149d0233a"; +"967d7a51-f3e2-4b8f-9331-dc75660d7136" [fillcolor=yellow, fontcolor=black, fontsize=20, label="AnomalyDetected()", shape=ellipse, style=filled]; +"16c9b1ee-9159-4816-92a4-37c149d0233a" -> "967d7a51-f3e2-4b8f-9331-dc75660d7136"; +"9b9909d3-e999-4706-b4de-1c60dfe53a14" [fillcolor=lawngreen, fontcolor=black, fontsize=20, label="ResolveAnomaly()", shape=box, style=filled]; +"16c9b1ee-9159-4816-92a4-37c149d0233a" -> "9b9909d3-e999-4706-b4de-1c60dfe53a14"; +} diff --git a/robowaiter/scene/outputs/current_bt.svg b/robowaiter/scene/outputs/current_bt.svg new file mode 100644 index 0000000..d400a88 --- /dev/null +++ b/robowaiter/scene/outputs/current_bt.svg @@ -0,0 +1,1171 @@ + + + + + + +pastafarianism + + + +a582faee-7147-4195-81ba-85add86624b4 + +Selector + + + +52d9dd56-2854-495c-820a-d4f291507f33 + +Sequence + + + +a582faee-7147-4195-81ba-85add86624b4->52d9dd56-2854-495c-820a-d4f291507f33 + + + + + +b938e131-cc32-4d66-a769-0b4539bbd4e9 + +Sequence + + + +a582faee-7147-4195-81ba-85add86624b4->b938e131-cc32-4d66-a769-0b4539bbd4e9 + + + + + +deb5f50b-93ac-4601-a5f1-af68f0f9d50a + +Sequence + + + +a582faee-7147-4195-81ba-85add86624b4->deb5f50b-93ac-4601-a5f1-af68f0f9d50a + + + + + +cc071d28-4cb6-4bbd-a866-38f48b77efda + +Sequence + + + +a582faee-7147-4195-81ba-85add86624b4->cc071d28-4cb6-4bbd-a866-38f48b77efda + + + + + +16c9b1ee-9159-4816-92a4-37c149d0233a + +Sequence + + + +a582faee-7147-4195-81ba-85add86624b4->16c9b1ee-9159-4816-92a4-37c149d0233a + + + + + +252a809b-7f62-49ae-addc-2191835a3544 + +Chatting() + + + +52d9dd56-2854-495c-820a-d4f291507f33->252a809b-7f62-49ae-addc-2191835a3544 + + + + + +39c31e0a-dd14-4477-a2e9-01754d4f25ca + +DealChat() + + + +52d9dd56-2854-495c-820a-d4f291507f33->39c31e0a-dd14-4477-a2e9-01754d4f25ca + + + + + +0e243f89-91ee-4b48-8a2b-a685f90589d3 + +HasSubTask() + + + +b938e131-cc32-4d66-a769-0b4539bbd4e9->0e243f89-91ee-4b48-8a2b-a685f90589d3 + + + + + +38ed4e08-f4ae-4250-ad32-eff42d5ab471 + +Sequence + + + +b938e131-cc32-4d66-a769-0b4539bbd4e9->38ed4e08-f4ae-4250-ad32-eff42d5ab471 + + + + + +057834e6-77b3-416b-bebe-0e1690ea7b77 + +Sequence + + + +38ed4e08-f4ae-4250-ad32-eff42d5ab471->057834e6-77b3-416b-bebe-0e1690ea7b77 + + + + + +89809d74-1aa6-4401-b296-b10cb96a0017 + +Selector + + + +057834e6-77b3-416b-bebe-0e1690ea7b77->89809d74-1aa6-4401-b296-b10cb96a0017 + + + + + +1c7e5f57-89fe-40d3-a5fe-45d7fa2e7f90 + +DelSubTree() + + + +057834e6-77b3-416b-bebe-0e1690ea7b77->1c7e5f57-89fe-40d3-a5fe-45d7fa2e7f90 + + + + + +428ce8be-6e76-4032-865e-ed767f6d9cd9 + +Sequence + + + +89809d74-1aa6-4401-b296-b10cb96a0017->428ce8be-6e76-4032-865e-ed767f6d9cd9 + + + + + +8dbb1cc4-46f0-4a7f-bd41-bf4918faad0f + +Sequence + + + +89809d74-1aa6-4401-b296-b10cb96a0017->8dbb1cc4-46f0-4a7f-bd41-bf4918faad0f + + + + + +499ad5e8-a924-45b2-8f9e-e376e12cc23f + +Sequence + + + +89809d74-1aa6-4401-b296-b10cb96a0017->499ad5e8-a924-45b2-8f9e-e376e12cc23f + + + + + +508b6d47-b448-452f-bb2a-3d214c4b33ad + +Sequence + + + +89809d74-1aa6-4401-b296-b10cb96a0017->508b6d47-b448-452f-bb2a-3d214c4b33ad + + + + + +1ccd2c59-53f0-42cb-ae43-54478ae1c64b + +Sequence + + + +89809d74-1aa6-4401-b296-b10cb96a0017->1ccd2c59-53f0-42cb-ae43-54478ae1c64b + + + + + +55980925-a4d9-4fde-b08a-b2dcffbec659 + +Sequence + + + +89809d74-1aa6-4401-b296-b10cb96a0017->55980925-a4d9-4fde-b08a-b2dcffbec659 + + + + + +c9d033ba-b2a5-406f-8d7b-c644ee5e8a13 + +Sequence + + + +89809d74-1aa6-4401-b296-b10cb96a0017->c9d033ba-b2a5-406f-8d7b-c644ee5e8a13 + + + + + +ae1795ad-99ad-4a19-ae19-3dfac64b96d5 + +Sequence + + + +89809d74-1aa6-4401-b296-b10cb96a0017->ae1795ad-99ad-4a19-ae19-3dfac64b96d5 + + + + + +0304536e-fa59-485d-a452-47a668dfe2ea + +Sequence + + + +89809d74-1aa6-4401-b296-b10cb96a0017->0304536e-fa59-485d-a452-47a668dfe2ea + + + + + +b7923c0f-0992-4266-868d-558efbd07716 + +Sequence + + + +89809d74-1aa6-4401-b296-b10cb96a0017->b7923c0f-0992-4266-868d-558efbd07716 + + + + + +6de54193-aa93-4d1a-b3f3-d04adb06a7ac + +Sequence + + + +89809d74-1aa6-4401-b296-b10cb96a0017->6de54193-aa93-4d1a-b3f3-d04adb06a7ac + + + + + +acc92740-05eb-4963-b01b-63b41cf20140 + +Sequence + + + +89809d74-1aa6-4401-b296-b10cb96a0017->acc92740-05eb-4963-b01b-63b41cf20140 + + + + + +370f4fa8-1789-47cf-86d4-43c1fcaec40d + +Sequence + + + +89809d74-1aa6-4401-b296-b10cb96a0017->370f4fa8-1789-47cf-86d4-43c1fcaec40d + + + + + +adb07734-f041-4c2e-9e4c-360fc7932ec9 + +Sequence + + + +89809d74-1aa6-4401-b296-b10cb96a0017->adb07734-f041-4c2e-9e4c-360fc7932ec9 + + + + + +fcbee6e1-0e5e-41c3-9db5-5bf808bac68b + +Sequence + + + +89809d74-1aa6-4401-b296-b10cb96a0017->fcbee6e1-0e5e-41c3-9db5-5bf808bac68b + + + + + +1c873ce0-8037-40a0-9394-037257e6ef1f + +Sequence + + + +89809d74-1aa6-4401-b296-b10cb96a0017->1c873ce0-8037-40a0-9394-037257e6ef1f + + + + + +96e46656-34ac-47aa-83b1-902ec66e53b5 + +Sequence + + + +89809d74-1aa6-4401-b296-b10cb96a0017->96e46656-34ac-47aa-83b1-902ec66e53b5 + + + + + +26396b01-8762-46f0-be46-224b590173ce + +Sequence + + + +89809d74-1aa6-4401-b296-b10cb96a0017->26396b01-8762-46f0-be46-224b590173ce + + + + + +eee68ac0-f125-4074-a523-dcd9b1d25e42 + +Sequence + + + +89809d74-1aa6-4401-b296-b10cb96a0017->eee68ac0-f125-4074-a523-dcd9b1d25e42 + + + + + +416609ed-eb10-4d93-a8bf-389b30c8a489 + +On(Coffee,WaterTable) + + + +428ce8be-6e76-4032-865e-ed767f6d9cd9->416609ed-eb10-4d93-a8bf-389b30c8a489 + + + + + +4fc84dda-929f-42f0-b845-2caf0dd9de9b + +On(Water,WaterTable) + + + +428ce8be-6e76-4032-865e-ed767f6d9cd9->4fc84dda-929f-42f0-b845-2caf0dd9de9b + + + + + +c4db186e-044d-4992-a6d0-dc0cf95aa3af + +On(Coffee,WaterTable) + + + +8dbb1cc4-46f0-4a7f-bd41-bf4918faad0f->c4db186e-044d-4992-a6d0-dc0cf95aa3af + + + + + +670d06c4-42a3-4e25-803f-43c8d6bc704c + +Holding(Nothing) + + + +8dbb1cc4-46f0-4a7f-bd41-bf4918faad0f->670d06c4-42a3-4e25-803f-43c8d6bc704c + + + + + +8ae61657-5b87-400a-b508-c99eac28f0b1 + +Make(Water) + + + +8dbb1cc4-46f0-4a7f-bd41-bf4918faad0f->8ae61657-5b87-400a-b508-c99eac28f0b1 + + + + + +933d9099-d8cb-439a-a194-5ee422cccd64 + +On(Coffee,WaterTable) + + + +499ad5e8-a924-45b2-8f9e-e376e12cc23f->933d9099-d8cb-439a-a194-5ee422cccd64 + + + + + +1d582953-04bd-4d6e-b57e-cc516073a5f2 + +At(Robot,WaterTable) + + + +499ad5e8-a924-45b2-8f9e-e376e12cc23f->1d582953-04bd-4d6e-b57e-cc516073a5f2 + + + + + +5da03831-1168-4a0b-b5c4-e1545eae332f + +Holding(Water) + + + +499ad5e8-a924-45b2-8f9e-e376e12cc23f->5da03831-1168-4a0b-b5c4-e1545eae332f + + + + + +41cde1a8-35f2-47ec-8eb9-04bd6f7c6879 + +PutDown(Water,WaterTable) + + + +499ad5e8-a924-45b2-8f9e-e376e12cc23f->41cde1a8-35f2-47ec-8eb9-04bd6f7c6879 + + + + + +c1bb3e26-8883-42ea-b6c3-57b6b989609a + +Holding(Coffee) + + + +508b6d47-b448-452f-bb2a-3d214c4b33ad->c1bb3e26-8883-42ea-b6c3-57b6b989609a + + + + + +d92346dd-2191-41a5-9536-f82022404c75 + +At(Robot,WaterTable) + + + +508b6d47-b448-452f-bb2a-3d214c4b33ad->d92346dd-2191-41a5-9536-f82022404c75 + + + + + +86966885-d2be-4e6e-9946-8cfe42a7220c + +On(Water,WaterTable) + + + +508b6d47-b448-452f-bb2a-3d214c4b33ad->86966885-d2be-4e6e-9946-8cfe42a7220c + + + + + +df497c9e-356b-4304-9fd0-921db828e93f + +PutDown(Coffee,WaterTable) + + + +508b6d47-b448-452f-bb2a-3d214c4b33ad->df497c9e-356b-4304-9fd0-921db828e93f + + + + + +8342fd0e-0596-496c-9534-8770a064b59e + +On(Coffee,WaterTable) + + + +1ccd2c59-53f0-42cb-ae43-54478ae1c64b->8342fd0e-0596-496c-9534-8770a064b59e + + + + + +04e4b336-479a-4bb3-972d-f186a3d03759 + +FreeHands() + + + +1ccd2c59-53f0-42cb-ae43-54478ae1c64b->04e4b336-479a-4bb3-972d-f186a3d03759 + + + + + +f246a574-4935-4646-a474-d866d7f8355b + +Holding(Coffee) + + + +55980925-a4d9-4fde-b08a-b2dcffbec659->f246a574-4935-4646-a474-d866d7f8355b + + + + + +d33b539f-f3ac-4934-b0d2-c538d3bde390 + +At(Robot,WaterTable) + + + +55980925-a4d9-4fde-b08a-b2dcffbec659->d33b539f-f3ac-4934-b0d2-c538d3bde390 + + + + + +95c3881e-ad7c-4a6e-b758-683834718b67 + +PutDown(Coffee,WaterTable) + + + +55980925-a4d9-4fde-b08a-b2dcffbec659->95c3881e-ad7c-4a6e-b758-683834718b67 + + + + + +8483c080-80c2-4f0d-9787-4a8ab035c8f7 + +Holding(Coffee) + + + +c9d033ba-b2a5-406f-8d7b-c644ee5e8a13->8483c080-80c2-4f0d-9787-4a8ab035c8f7 + + + + + +696baf79-2e67-4225-84f9-4db8cb5a7877 + +On(Water,WaterTable) + + + +c9d033ba-b2a5-406f-8d7b-c644ee5e8a13->696baf79-2e67-4225-84f9-4db8cb5a7877 + + + + + +71f49725-d34c-4990-8956-94b0d7076872 + +MoveTo(WaterTable) + + + +c9d033ba-b2a5-406f-8d7b-c644ee5e8a13->71f49725-d34c-4990-8956-94b0d7076872 + + + + + +3f5584f5-98e4-4d97-ada4-518fd930efe1 + +Holding(Coffee) + + + +ae1795ad-99ad-4a19-ae19-3dfac64b96d5->3f5584f5-98e4-4d97-ada4-518fd930efe1 + + + + + +feb9d0bd-81ef-4de4-a011-554cfab12dfc + +MoveTo(WaterTable) + + + +ae1795ad-99ad-4a19-ae19-3dfac64b96d5->feb9d0bd-81ef-4de4-a011-554cfab12dfc + + + + + +4a75fcc7-7c99-4d64-8150-add03da82ef7 + +At(Robot,Coffee) + + + +0304536e-fa59-485d-a452-47a668dfe2ea->4a75fcc7-7c99-4d64-8150-add03da82ef7 + + + + + +911690ee-a827-4fde-9846-5f291ef0ff6e + +Holding(Nothing) + + + +0304536e-fa59-485d-a452-47a668dfe2ea->911690ee-a827-4fde-9846-5f291ef0ff6e + + + + + +c35cb7a2-15d2-4440-bbf8-7667b5711653 + +On(Water,WaterTable) + + + +0304536e-fa59-485d-a452-47a668dfe2ea->c35cb7a2-15d2-4440-bbf8-7667b5711653 + + + + + +7baadc46-e643-4db4-bbd7-d8f109ea6c06 + +PickUp(Coffee) + + + +0304536e-fa59-485d-a452-47a668dfe2ea->7baadc46-e643-4db4-bbd7-d8f109ea6c06 + + + + + +d5c99c51-2edc-4d41-b2db-0068f92aa77c + +At(Robot,Coffee) + + + +b7923c0f-0992-4266-868d-558efbd07716->d5c99c51-2edc-4d41-b2db-0068f92aa77c + + + + + +89129311-b249-4eab-83a7-c5cf21a35c00 + +Holding(Nothing) + + + +b7923c0f-0992-4266-868d-558efbd07716->89129311-b249-4eab-83a7-c5cf21a35c00 + + + + + +711d4b2e-0087-4520-9528-ad5b252aadd5 + +PickUp(Coffee) + + + +b7923c0f-0992-4266-868d-558efbd07716->711d4b2e-0087-4520-9528-ad5b252aadd5 + + + + + +55153a6f-cb38-4bd1-8602-d6960b6bdbfa + +At(Robot,Coffee) + + + +6de54193-aa93-4d1a-b3f3-d04adb06a7ac->55153a6f-cb38-4bd1-8602-d6960b6bdbfa + + + + + +88c8b174-727b-4249-8768-17630e6e37e0 + +On(Water,WaterTable) + + + +6de54193-aa93-4d1a-b3f3-d04adb06a7ac->88c8b174-727b-4249-8768-17630e6e37e0 + + + + + +c7f0187c-a4c8-4b76-8da1-4ac790e56ee5 + +FreeHands() + + + +6de54193-aa93-4d1a-b3f3-d04adb06a7ac->c7f0187c-a4c8-4b76-8da1-4ac790e56ee5 + + + + + +5508c6dc-6c58-4d91-a2f7-81b19be0f22d + +Holding(Nothing) + + + +acc92740-05eb-4963-b01b-63b41cf20140->5508c6dc-6c58-4d91-a2f7-81b19be0f22d + + + + + +ed0d3415-95b4-4ce5-9341-b7352f78eff1 + +On(Water,WaterTable) + + + +acc92740-05eb-4963-b01b-63b41cf20140->ed0d3415-95b4-4ce5-9341-b7352f78eff1 + + + + + +248b5d9a-5160-4154-a747-35c180c26788 + +Exist(Coffee) + + + +acc92740-05eb-4963-b01b-63b41cf20140->248b5d9a-5160-4154-a747-35c180c26788 + + + + + +96ea24c5-198d-46ff-88e6-375a310463c2 + +MoveTo(Coffee) + + + +acc92740-05eb-4963-b01b-63b41cf20140->96ea24c5-198d-46ff-88e6-375a310463c2 + + + + + +3b4e2601-a215-4c53-9725-024a7272ca01 + +At(Robot,Coffee) + + + +370f4fa8-1789-47cf-86d4-43c1fcaec40d->3b4e2601-a215-4c53-9725-024a7272ca01 + + + + + +5207249d-7ed3-4374-8c35-551323aa6e6f + +FreeHands() + + + +370f4fa8-1789-47cf-86d4-43c1fcaec40d->5207249d-7ed3-4374-8c35-551323aa6e6f + + + + + +c050928b-ea79-40c0-b9ba-fdf1cb60a773 + +Holding(Nothing) + + + +adb07734-f041-4c2e-9e4c-360fc7932ec9->c050928b-ea79-40c0-b9ba-fdf1cb60a773 + + + + + +07b147ab-23b5-48ae-9449-c810c93e28b4 + +Exist(Coffee) + + + +adb07734-f041-4c2e-9e4c-360fc7932ec9->07b147ab-23b5-48ae-9449-c810c93e28b4 + + + + + +59f2afe9-173b-41f8-921e-29cfd4ecc1c4 + +MoveTo(Coffee) + + + +adb07734-f041-4c2e-9e4c-360fc7932ec9->59f2afe9-173b-41f8-921e-29cfd4ecc1c4 + + + + + +f0843e6c-a65a-4d9f-971d-06766e94df66 + +On(Water,WaterTable) + + + +fcbee6e1-0e5e-41c3-9db5-5bf808bac68b->f0843e6c-a65a-4d9f-971d-06766e94df66 + + + + + +6dab056a-a232-4212-af57-5c1c1465db99 + +Exist(Coffee) + + + +fcbee6e1-0e5e-41c3-9db5-5bf808bac68b->6dab056a-a232-4212-af57-5c1c1465db99 + + + + + +0c2f54f1-85e8-486d-9c81-3d18f5f12ae8 + +MoveTo(Coffee) + + + +fcbee6e1-0e5e-41c3-9db5-5bf808bac68b->0c2f54f1-85e8-486d-9c81-3d18f5f12ae8 + + + + + +4c2f06f6-fa4b-41a2-a50d-cbd4f2370b5b + +Holding(Nothing) + + + +1c873ce0-8037-40a0-9394-037257e6ef1f->4c2f06f6-fa4b-41a2-a50d-cbd4f2370b5b + + + + + +e311ac9a-4505-442e-9ec9-47c2a0fd2ac8 + +On(Water,WaterTable) + + + +1c873ce0-8037-40a0-9394-037257e6ef1f->e311ac9a-4505-442e-9ec9-47c2a0fd2ac8 + + + + + +b3880316-85f0-4124-a18a-fa84896d3485 + +Make(Coffee) + + + +1c873ce0-8037-40a0-9394-037257e6ef1f->b3880316-85f0-4124-a18a-fa84896d3485 + + + + + +41ad97fa-7ea9-48e4-8cd3-187dc53fe992 + +At(Robot,WaterTable) + + + +96e46656-34ac-47aa-83b1-902ec66e53b5->41ad97fa-7ea9-48e4-8cd3-187dc53fe992 + + + + + +7e7163b1-eadd-4f81-99c5-5cd238252a79 + +Holding(Water) + + + +96e46656-34ac-47aa-83b1-902ec66e53b5->7e7163b1-eadd-4f81-99c5-5cd238252a79 + + + + + +18b63af1-2803-4a7d-95c2-c701dff29a51 + +Exist(Coffee) + + + +96e46656-34ac-47aa-83b1-902ec66e53b5->18b63af1-2803-4a7d-95c2-c701dff29a51 + + + + + +1f492236-0a16-4e47-bca0-d6cda8fc1e79 + +PutDown(Water,WaterTable) + + + +96e46656-34ac-47aa-83b1-902ec66e53b5->1f492236-0a16-4e47-bca0-d6cda8fc1e79 + + + + + +bee79c41-c84d-427a-a0b4-fe732ab6e448 + +Exist(Coffee) + + + +26396b01-8762-46f0-be46-224b590173ce->bee79c41-c84d-427a-a0b4-fe732ab6e448 + + + + + +7845d148-bef6-4b74-959b-5e13fbe75330 + +MoveTo(Coffee) + + + +26396b01-8762-46f0-be46-224b590173ce->7845d148-bef6-4b74-959b-5e13fbe75330 + + + + + +bc97fe9a-8eeb-4d4f-8865-025bf8ab1d0e + +Holding(Nothing) + + + +eee68ac0-f125-4074-a523-dcd9b1d25e42->bc97fe9a-8eeb-4d4f-8865-025bf8ab1d0e + + + + + +e631843b-92d8-4612-8dcf-7dd66b86a531 + +Make(Coffee) + + + +eee68ac0-f125-4074-a523-dcd9b1d25e42->e631843b-92d8-4612-8dcf-7dd66b86a531 + + + + + +8d9e0427-c7c4-4c8a-b6a1-d3cf0a7ae4c6 + +FocusingCustomer() + + + +deb5f50b-93ac-4601-a5f1-af68f0f9d50a->8d9e0427-c7c4-4c8a-b6a1-d3cf0a7ae4c6 + + + + + +a8ab831b-5e89-41c6-9a6a-15441aa1d32b + +ServeCustomer() + + + +deb5f50b-93ac-4601-a5f1-af68f0f9d50a->a8ab831b-5e89-41c6-9a6a-15441aa1d32b + + + + + +e227e659-1432-4fba-8b6a-a9364e51076c + +NewCustomer() + + + +cc071d28-4cb6-4bbd-a866-38f48b77efda->e227e659-1432-4fba-8b6a-a9364e51076c + + + + + +d3a930dc-8300-4510-a83c-5f070170bb5b + +Selector + + + +cc071d28-4cb6-4bbd-a866-38f48b77efda->d3a930dc-8300-4510-a83c-5f070170bb5b + + + + + +3b8f863e-eef0-43e9-8ccc-4086c59af2a1 + +GreetCustomer() + + + +cc071d28-4cb6-4bbd-a866-38f48b77efda->3b8f863e-eef0-43e9-8ccc-4086c59af2a1 + + + + + +85295be4-2eed-4dac-98f6-040450241204 + +At(Robot,Bar) + + + +d3a930dc-8300-4510-a83c-5f070170bb5b->85295be4-2eed-4dac-98f6-040450241204 + + + + + +5a775c24-2a6b-445c-87e9-9eeab2b6882c + +MoveTo(Bar) + + + +d3a930dc-8300-4510-a83c-5f070170bb5b->5a775c24-2a6b-445c-87e9-9eeab2b6882c + + + + + +967d7a51-f3e2-4b8f-9331-dc75660d7136 + +AnomalyDetected() + + + +16c9b1ee-9159-4816-92a4-37c149d0233a->967d7a51-f3e2-4b8f-9331-dc75660d7136 + + + + + +9b9909d3-e999-4706-b4de-1c60dfe53a14 + +ResolveAnomaly() + + + +16c9b1ee-9159-4816-92a4-37c149d0233a->9b9909d3-e999-4706-b4de-1c60dfe53a14 + + + + + diff --git a/robowaiter/scene/scene.py b/robowaiter/scene/scene.py index bcf6e01..02c3c80 100644 --- a/robowaiter/scene/scene.py +++ b/robowaiter/scene/scene.py @@ -16,7 +16,7 @@ from robowaiter.proto import GrabSim_pb2_grpc import copy import os -from robowaiter.scene.ui import scene_ui +# from robowaiter.scene.ui import scene_ui from robowaiter.utils import get_root_path from sklearn.cluster import DBSCAN from matplotlib import pyplot as plt @@ -39,7 +39,143 @@ channel = grpc.insecure_channel( animation_step = [4, 5, 7, 3, 3] loc_offset = [-700, -1400] - +objname_en2zh_dic_goal = { +'Customer':'顾客', +'Banana': '香蕉', +'Toothpaste': '牙膏', +'Bread': '面包', +'Softdrink': '盒装饮料', +'Yogurt': '酸奶', +'ADMilk': '安佳牛奶', +'VacuumCup': '真空杯', +'Bernachon': '贝尔纳松', +'BottledDrink': '瓶装饮料', +'PencilVase': '铅笔花瓶', +'Teacup': '茶杯', +'Dictionary': '字典', +'Cake': '蛋糕', +'Stapler': '订书机', +'LunchBox': '午餐盒', +'Bracelet': '手镯', +'CoconutWater': '椰水', +'Walnut': '核桃', +'HamSausage': '火腿肠', +'GlueStick': '胶棒', +'AdhesiveTape': '胶带', +'Calculator': '计算器', +'Chess': '棋', +'Orange': '橙子', +'Glass': '玻璃杯', +'Washbowl': '洗碗盆', +'Durian': '榴莲', +'Gum': '口香糖', +'Towel': '毛巾', +'OrangeJuice': '橙汁', +'Cardcase': '卡包', +'RubikCube': '魔方', +'StickyNotes': '便签', +'NFCJuice': 'NFC果汁', +'SpringWater': '矿泉水', +'Apple': '苹果', +'Coffee': '咖啡', +'Gauze': '纱布', +'Mangosteen': '山竹', +'SesameSeedCake': '芝麻糕', +'Glove': '手套', +'Mouse': '鼠标', +'Kettle': '水壶', +'Atomize': '喷雾器', +'Chips': '薯片', +'SpongeGourd': '丝瓜', +'Garlic': '大蒜', +'Potato': '土豆', +'Tray': '托盘', +'Hemomanometer': '血压计', +'TennisBall': '网球', +'ToyDog': '玩具狗', +'ToyBear': '玩具熊', +'TeaTray': '茶盘', +'Sock': '袜子', +'Scarf': '围巾', +'ToiletPaper': '卫生纸', +'Milk': '牛奶', +'Novel': '小说', +'Watermelon': '西瓜', +'Tomato': '番茄', +'CleansingFoam': '洁面泡沫', +'CoconutMilk': '椰奶', +'SugarlessGum': '无糖口香糖', +'MedicalAdhesiveTape': '医用胶带', +'PaperCup': '纸杯', +'Caddy': '茶匙', +'Date': '日期', +'MilkDrink': '牛奶饮品', +'CocountWater': '椰水', +'AdhensiveTape': '胶带', +'Towl': '毛巾', +'Soap': '肥皂', +'CocountMilk': '椰奶', +'MedicalAdhensiveTape': '医用胶带', +'SourMilkDrink': '酸奶饮品', +'Tissue': '纸巾', +'YogurtDrink': '酸奶饮品', +'Newspaper': '报纸', +'Box': '盒子', +'PaperCupStarbucks': '星巴克纸杯', +'CoffeeMachine': '咖啡机', +'GingerLHand': '机器人左手', +'GingerRHand': '机器人右手', +'Straw': '吸管', +'Door': '门', +'Machine': '机器', +'PackagedCoffee': '包装咖啡', +'CubeSugar': '方糖', +'Spoon': '勺子', +'Drinks': '饮料', +'Drink': '饮料', +'Take-AwayCup': '外带杯', +'Saucer': '茶杯', +'TrashBin': '垃圾桶', +'Knife': '刀', +'Ginger': '姜', +'Floor': '地板', +'Roof': '屋顶', +'Wall': '墙', +'Broom':'扫帚', +'CoffeeCup': '咖啡杯', +'Mug': '马克杯', +'ZhuZi': '著子', +'LaJiTong': '垃圾桶', +'ZaoTai': '灶台', +'Sofa': '沙发', +'ChaTou': '插头', +'Plate': '盘子', +'CoffeeBag': '咖啡袋', +'TuoBu': '拖布', +'KaiGuan': '开关', +'ChaZuo': '插座', +'Sugar': '糖', +'BaTai': '吧台', +'BaoJing': '报警', +'DrinkMachine': '饮料机', +'KongTiao': '空调', +'Desk': '桌子', +'Clip': '夹子', +'TuoPan': '托盘', +'BoJi': '簸箕', +'ZhiBeiHe': '纸杯盒', +'WaterCup': '水杯', +'Chair': '椅子', +'Hand': '手', +'XiGuan': '吸管', +'Container': '容器', +'IceMachine': '制冰机', +'KaoXiang': '烤箱', +'SaoBa': '扫把', +'XiangGui': '香柜', +} +objname_zh2en_dic_goal = dict(zip(objname_en2zh_dic_goal.values(), objname_en2zh_dic_goal.keys())) +# print(objname_zh2eh_dic) def show_image(camera_data): print('------------------show_image----------------------') @@ -66,6 +202,9 @@ class Scene: # camera_interval = 1.5 output_path = os.path.join(os.path.dirname(__file__), "outputs") + objname_en2zh_dic = objname_en2zh_dic_goal + objname_zh2en_dic = objname_zh2en_dic_goal + default_state = { "map": { "2d": None, @@ -124,7 +263,7 @@ class Scene: # 是否展示UI self.show_ui = False # 图像分割 - self.take_picture = False + self.take_picture = True self.map_ratio = 5 self.map_map = np.zeros((math.ceil(950 / self.map_ratio), math.ceil(1850 / self.map_ratio))) self.db = DBSCAN(eps=self.map_ratio, min_samples=int(self.map_ratio / 2)) @@ -880,6 +1019,8 @@ class Scene: scene = self.stub.AddObjects(GrabSim_pb2.ObjectList(objects=obj_list, scene=self.sceneID)) time.sleep(1.0) + + # 实现抓握操作 def grasp_obj(self, obj_id, hand_id=1): print('------------------adjust_joints----------------------') @@ -1142,6 +1283,10 @@ class Scene: def getDistance(self, pos1, pos2): return math.sqrt((pos1[0] - pos2[0]) ** 2 + (pos1[1] - pos2[1]) ** 2) + def getDistanc3D(self, pos1, pos2): + return math.sqrt((pos1[0] - pos2[0]) ** 2 + (pos1[1] - pos2[1]) ** 2+ (pos1[2] - pos2[2]) ** 2) + + def getNearestFrontier(self, cur_pos, frontiers): dis_min = sys.maxsize frontier_best = None @@ -1456,7 +1601,16 @@ class Scene: # plt.text(0, 0.1, f'已存语义信息:{self.infoCount}', fontsize=10) # 元组传参 pyqt5中的函数名, 四个参数 - self.ui_func(("get_info", walker_detect_count, obj_detect_count, update_info_count, self.infoCount)) + # self.ui_func(("get_info", walker_detect_count, obj_detect_count, update_info_count, self.infoCount)) + semantic_info_str="" + semantic_info_str+= f'检测行人数量:{walker_detect_count}'+"\n" + semantic_info_str += f'检测物体数量:{obj_detect_count}' + "\n" + semantic_info_str += f'更新语义信息:{update_info_count}' + "\n" + semantic_info_str += f'已存语义信息:{self.infoCount}' + "\n" + + # print("======semantic_info_str===========") + + self.ui_func(("get_semantic_info", semantic_info_str)) # draw figures diff --git a/robowaiter/scene/ui/pyqt5.py b/robowaiter/scene/ui/pyqt5.py index 05d5041..754db44 100644 --- a/robowaiter/scene/ui/pyqt5.py +++ b/robowaiter/scene/ui/pyqt5.py @@ -1,9 +1,11 @@ import importlib import os +from PyQt5.QtSvg import QGraphicsSvgItem, QSvgWidget from PyQt5.QtWidgets import QApplication, QMainWindow, QListWidgetItem, QGraphicsView, QGraphicsScene, \ - QGraphicsPixmapItem + QGraphicsPixmapItem, QGraphicsProxyWidget from PyQt5.QtCore import QTimer, QPoint, QRectF +from PyQt5 import QtCore import sys from robowaiter.scene.ui.window import Ui_MainWindow @@ -11,7 +13,7 @@ from robowaiter.utils.basic import get_root_path from PyQt5.QtCore import QThread import queue import numpy as np -from PyQt5.QtGui import QImage, QPixmap, QDrag +from PyQt5.QtGui import QImage, QPixmap, QDrag, QPainter from PyQt5.QtCore import Qt from PyQt5.QtCore import QThread, pyqtSignal from robowaiter.scene.ui.scene_ui import SceneUI @@ -56,6 +58,29 @@ def run_scene(scene_cls,robot_cls,scene_queue,ui_queue): # print("Robot system error:", str(e)) example_list = ("AEM","VLN","VLM",'GQA',"OT","AT","reset") +more_example_list = ("VLM_AC","CafeDaily") +dic_more2zh={ + "VLM_AC":"开空调并调节空调温度", + "CafeDaily":"咖啡厅的一天" +} +more_example_list_zh = [value for value in dic_more2zh.values()] + +class GraphicsView(QGraphicsView): + def __init__(self, parent=None): + super(GraphicsView, self).__init__(parent) + self.setRenderHint(QPainter.Antialiasing) + self.setOptimizationFlag(QGraphicsView.DontAdjustForAntialiasing, True) + self.setViewportUpdateMode(QGraphicsView.FullViewportUpdate) + self.setDragMode(QGraphicsView.ScrollHandDrag) + self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) + self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) + + def wheelEvent(self, event): + factor = 1.15 + if event.angleDelta().y() > 0: + self.scale(factor, factor) + else: + self.scale(1.0 / factor, 1.0 / factor) class UI(QMainWindow, Ui_MainWindow): scene = None @@ -78,6 +103,10 @@ class UI(QMainWindow, Ui_MainWindow): # 绑定说话按钮 self.btn_say.clicked.connect(self.btn_say_on_click) + self.verticalLayout_2.removeWidget(self.img_view_bt) + self.img_view_bt = GraphicsView(self.centralwidget) + self.img_view_bt.setObjectName("img_view_bt") + self.verticalLayout_2.addWidget(self.img_view_bt) self.img_view_bt.setDragMode(QGraphicsView.ScrollHandDrag) @@ -90,12 +119,12 @@ class UI(QMainWindow, Ui_MainWindow): # self.drag_start_position = QPoint() # 记录鼠标按下时的位置 self.cb_task.setCurrentIndex(-1) - self.cb_task.setPlaceholderText("请选择城市") + self.cb_task.setPlaceholderText("请选择更多任务") # 多个添加条目 - self.cb_task.addItems(['Java', 'C#', 'PHP']) + self.cb_task.addItems(more_example_list_zh) # 当下拉索引发生改变时发射信号触发绑定的事件 - self.cb_task.currentIndexChanged.connect(self.selectionchange) + self.cb_task.currentIndexChanged.connect(self.cb_selectionchange) # 绑定任务演示按钮 for example in example_list: @@ -116,24 +145,15 @@ class UI(QMainWindow, Ui_MainWindow): sys.exit(app.exec_()) - def selectionchange(self, i): + def cb_selectionchange(self, i): print(i) - # self.create_example_click(dic[i]) - # 标签用来显示选中的文本 - # currentText():返回选中选项的文本 - # self.btn1.setText(self.cb.currentText()) - # print('Items in the list are:') - # # 输出选项集合中每个选项的索引与对应的内容 - # # count():返回选项集合中的数目 - # for count in range(self.cb.count()): - # print('Item' + str(count) + '=' + self.cb.itemText(count)) - # print('current index', i, 'selection changed', self.cb.currentText()) + self.create_example_click(more_example_list[i])() - def get_info(self, walker_detect_count, obj_detect_count, update_info_count, infoCount): - print(obj_detect_count) - self.textEdit_5.clear() - self.textEdit_5.append(str(obj_detect_count)) - # self.textEdit_5.setText(walker_detect_count + "_" + obj_detect_count + "_" + update_info_count + "_" + infoCount) + def get_semantic_info(self, semantic_info_str): + # self.textEdit_5.clear() + # self.textEdit_5.append(semantic_info_str) + self.textBrowser_5.clear() + self.textBrowser_5.append(semantic_info_str) def new_history(self,customer_name,chat): role = chat["role"] @@ -246,6 +266,17 @@ class UI(QMainWindow, Ui_MainWindow): self.img_view_bt.setScene(scene) pixmap_item = QGraphicsPixmapItem(pixmap) scene.addItem(pixmap_item) + + + # widget = QSvgWidget(file_name) + # # widget.resize(10000, 1600) + # svg_width = widget.width() + # widget.resize(svg_width*2, 1600) + # proxy = QGraphicsProxyWidget() + # proxy.setWidget(widget) + # scene.addItem(+proxy) + + elif control_name == "img_label_obj": return # self.label.setPixmap(pixmap) diff --git a/robowaiter/scene/ui/scene_ui.py b/robowaiter/scene/ui/scene_ui.py index f97b158..b070a3a 100644 --- a/robowaiter/scene/ui/scene_ui.py +++ b/robowaiter/scene/ui/scene_ui.py @@ -10,13 +10,15 @@ import pickle import time import os +from robowaiter.scene.scene import Scene + plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号 from robowaiter.utils import get_root_path root_path = get_root_path() -from robowaiter.scene.scene import Scene + from robowaiter.utils.bt.draw import render_dot_tree @@ -160,20 +162,30 @@ class SceneUI(Scene): self.new_event_list = [ (5, self.customer_say, (0, "请问哪里有空位啊?")), - (13, self.customer_say, (0, "我想坐高凳子。")), + (13, self.customer_say, (0, "我想坐高脚凳子。")), (3, self.customer_say, (0, "你带我去吧。")), - (45, self.control_walker, (0, False, 100, -250, 480, -90)), + (60, self.control_walker, (0, False, 100, -250, 480, -90)), #45 (-1, self.customer_say, (0, "谢谢你!这儿还不错!")), ] def run_VLM(self): + # 场景一 拿放物品 self.gen_obj() + self.state["condition_set"]={'At(Robot,Bar)', 'Is(AC,Off)', + 'Holding(Nothing)', 'Exist(Yogurt)', 'Exist(BottledDrink)', + 'Exist(Softdrink)', + 'Exist(Chips)', 'Exist(NFCJuice)', 'Exist(Bernachon)', 'Exist(ADMilk)', 'Exist(SpringWater)' + 'Exist(VacuumCup)', 'On(VacuumCup,Table2)', + 'Is(HallLight,Off)', 'Is(TubeLight,On)', 'Is(Curtain,On)', + 'Is(Table1,Dirty)', 'Is(Floor,Dirty)', 'Is(Chairs,Dirty)'} + self.add_walkers([[4,1, 880], [31,250, 1200],[6,-55, 750],[10,70, -200],[27,-290, 400, 180],[26, 60,-320,90]]) - self. control_walkers(walker_loc=[[-55, 750], [70, -200], [250, 1200], [0, 880]],is_autowalk = True) + # self.control_walkers(walker_loc=[[-55, 750], [70, -200], [250, 1200], [0, 880]],is_autowalk = True) + self.control_walkers(walker_loc=[[-55, 750]], is_autowalk=True) self.signal_event_list = [ (3, self.add_walker, (20,0,700)), (1, self.control_walker, (6, False,100, 60, 520,0)), - (1, self.customer_say, (6, "给我来份薯片和果汁,我坐在对面的桌子那儿。")), + (1, self.customer_say, (6, "给我来份薯片和果汁,我坐在对面的水杯桌那儿。")), #给我来份薯片和果汁,我坐在对面的桌子那儿。 (5, self.control_walker, (6, False, 100, -250, 480, 0)), ] pass @@ -220,6 +232,26 @@ class SceneUI(Scene): ] pass + + def run_VLM_AC(self): + # 开关空调 + # 场景二 开和调节空调温度 + self.gen_obj() + self.add_walkers([[4,1, 880], [31,250, 1200],[6,-55, 750],[10,70, -200],[27,-290, 400, 180],[26, 60,-320,90]]) + self.control_walkers(walker_loc=[[-55, 750]],is_autowalk = True) + self.signal_event_list = [ + (3, self.add_walker, (0,0,700)), + (1, self.control_walker, (6, False,100, 60, 520,0)), #[walkerID,autowalk,speed,X,Y,Yaw] + (2, self.customer_say, (6, "好热呀,想开空调,想要温度调低点!")), + (6, self.control_walker, (6, False, 200, 60, 80, 0)), + (-1, self.customer_say, (6, "谢谢!这下凉快了!")), #(-100,600) + ] + pass + + def run_CafeDaily(self): + pass + + def run_reset(self): pass @@ -232,8 +264,9 @@ class SceneUI(Scene): self.draw_current_bt() def draw_current_bt(self): - render_dot_tree(self.robot.bt.root,target_directory=self.output_path,name="current_bt") + render_dot_tree(self.robot.bt.root,target_directory=self.output_path,name="current_bt",png_only=True) self.ui_queue.put(('draw_from_file',"img_view_bt", f"{self.output_path}/current_bt.png")) + # self.ui_queue.put(('draw_from_file', "img_view_bt", f"{self.output_path}/current_bt.svg")) def ui_func(self,args): # _,_,output_path = args diff --git a/robowaiter/scene/ui/window.py b/robowaiter/scene/ui/window.py index 6bc8b79..9d5c4d9 100644 --- a/robowaiter/scene/ui/window.py +++ b/robowaiter/scene/ui/window.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'window.ui' # -# Created by: PyQt5 UI code generator 5.15.7 +# Created by: PyQt5 UI code generator 5.15.10 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. @@ -101,45 +101,6 @@ class Ui_MainWindow(object): self.gridLayout_3.addLayout(self.verticalLayout_2, 1, 0, 1, 1) self.gridLayout_2 = QtWidgets.QGridLayout() self.gridLayout_2.setObjectName("gridLayout_2") - self.horizontalLayout_5 = QtWidgets.QHBoxLayout() - self.horizontalLayout_5.setObjectName("horizontalLayout_5") - self.img_label_map = QtWidgets.QLabel(self.centralwidget) - self.img_label_map.setEnabled(True) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.img_label_map.sizePolicy().hasHeightForWidth()) - self.img_label_map.setSizePolicy(sizePolicy) - self.img_label_map.setMinimumSize(QtCore.QSize(345, 200)) - self.img_label_map.setStyleSheet("border: 2px solid black;") - self.img_label_map.setText("") - self.img_label_map.setObjectName("img_label_map") - self.horizontalLayout_5.addWidget(self.img_label_map) - self.img_label_seg = QtWidgets.QLabel(self.centralwidget) - self.img_label_seg.setEnabled(True) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.img_label_seg.sizePolicy().hasHeightForWidth()) - self.img_label_seg.setSizePolicy(sizePolicy) - self.img_label_seg.setMinimumSize(QtCore.QSize(250, 200)) - self.img_label_seg.setStyleSheet("border: 2px solid black;") - self.img_label_seg.setText("") - self.img_label_seg.setObjectName("img_label_seg") - self.horizontalLayout_5.addWidget(self.img_label_seg) - self.img_label_obj = QtWidgets.QLabel(self.centralwidget) - self.img_label_obj.setEnabled(True) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.img_label_obj.sizePolicy().hasHeightForWidth()) - self.img_label_obj.setSizePolicy(sizePolicy) - self.img_label_obj.setMinimumSize(QtCore.QSize(250, 200)) - self.img_label_obj.setStyleSheet("border: 2px solid black;") - self.img_label_obj.setText("") - self.img_label_obj.setObjectName("img_label_obj") - self.horizontalLayout_5.addWidget(self.img_label_obj) - self.gridLayout_2.addLayout(self.horizontalLayout_5, 1, 0, 1, 1) self.horizontalLayout_4 = QtWidgets.QHBoxLayout() self.horizontalLayout_4.setContentsMargins(0, -1, -1, -1) self.horizontalLayout_4.setSpacing(0) @@ -184,14 +145,92 @@ class Ui_MainWindow(object): self.label_8.setObjectName("label_8") self.horizontalLayout_4.addWidget(self.label_8) self.gridLayout_2.addLayout(self.horizontalLayout_4, 0, 0, 1, 1) + self.horizontalLayout_5 = QtWidgets.QHBoxLayout() + self.horizontalLayout_5.setObjectName("horizontalLayout_5") + self.img_label_map = QtWidgets.QLabel(self.centralwidget) + self.img_label_map.setEnabled(True) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.img_label_map.sizePolicy().hasHeightForWidth()) + self.img_label_map.setSizePolicy(sizePolicy) + self.img_label_map.setMinimumSize(QtCore.QSize(345, 200)) + self.img_label_map.setStyleSheet("border: 2px solid black;") + self.img_label_map.setText("") + self.img_label_map.setObjectName("img_label_map") + self.horizontalLayout_5.addWidget(self.img_label_map) + self.img_label_seg = QtWidgets.QLabel(self.centralwidget) + self.img_label_seg.setEnabled(True) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.img_label_seg.sizePolicy().hasHeightForWidth()) + self.img_label_seg.setSizePolicy(sizePolicy) + self.img_label_seg.setMinimumSize(QtCore.QSize(250, 200)) + self.img_label_seg.setStyleSheet("border: 2px solid black;") + self.img_label_seg.setText("") + self.img_label_seg.setObjectName("img_label_seg") + self.horizontalLayout_5.addWidget(self.img_label_seg) + self.img_label_obj = QtWidgets.QLabel(self.centralwidget) + self.img_label_obj.setEnabled(True) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.img_label_obj.sizePolicy().hasHeightForWidth()) + self.img_label_obj.setSizePolicy(sizePolicy) + self.img_label_obj.setMinimumSize(QtCore.QSize(250, 200)) + self.img_label_obj.setStyleSheet("border: 2px solid black;") + self.img_label_obj.setText("") + self.img_label_obj.setObjectName("img_label_obj") + self.horizontalLayout_5.addWidget(self.img_label_obj) + self.gridLayout_2.addLayout(self.horizontalLayout_5, 1, 0, 1, 1) self.gridLayout_3.addLayout(self.gridLayout_2, 0, 0, 1, 1) self.gridLayout.addLayout(self.gridLayout_3, 6, 0, 1, 3) self.verticalLayout_3 = QtWidgets.QVBoxLayout() self.verticalLayout_3.setObjectName("verticalLayout_3") - self.textEdit_5 = QtWidgets.QTextEdit(self.centralwidget) - self.textEdit_5.setObjectName("textEdit_5") - self.verticalLayout_3.addWidget(self.textEdit_5) + self.textBrowser_5 = QtWidgets.QTextBrowser(self.centralwidget) + font = QtGui.QFont() + font.setFamily("黑体") + font.setPointSize(13) + font.setBold(False) + font.setWeight(50) + self.textBrowser_5.setFont(font) + self.textBrowser_5.setLayoutDirection(QtCore.Qt.LeftToRight) + self.textBrowser_5.setStyleSheet("text-align:center;") + self.textBrowser_5.setMarkdown("") + self.textBrowser_5.setObjectName("textBrowser_5") + self.verticalLayout_3.addWidget(self.textBrowser_5) self.gridLayout.addLayout(self.verticalLayout_3, 5, 0, 1, 1) + self.label_9 = QtWidgets.QLabel(self.centralwidget) + font = QtGui.QFont() + font.setFamily("等线") + font.setPointSize(10) + font.setBold(True) + font.setWeight(75) + self.label_9.setFont(font) + self.label_9.setObjectName("label_9") + self.gridLayout.addWidget(self.label_9, 0, 0, 1, 1) + self.btn_say = QtWidgets.QPushButton(self.centralwidget) + font = QtGui.QFont() + font.setFamily("黑体") + font.setPointSize(14) + self.btn_say.setFont(font) + self.btn_say.setObjectName("btn_say") + self.gridLayout.addWidget(self.btn_say, 0, 2, 1, 1) + self.edit_say = QtWidgets.QLineEdit(self.centralwidget) + font = QtGui.QFont() + font.setFamily("Times New Roman") + font.setPointSize(14) + self.edit_say.setFont(font) + self.edit_say.setObjectName("edit_say") + self.gridLayout.addWidget(self.edit_say, 0, 1, 1, 1) + self.label = QtWidgets.QLabel(self.centralwidget) + font = QtGui.QFont() + font.setFamily("黑体") + font.setPointSize(14) + self.label.setFont(font) + self.label.setObjectName("label") + self.gridLayout.addWidget(self.label, 4, 0, 1, 1) self.verticalLayout = QtWidgets.QVBoxLayout() self.verticalLayout.setObjectName("verticalLayout") self.btn_reset = QtWidgets.QPushButton(self.centralwidget) @@ -250,42 +289,16 @@ class Ui_MainWindow(object): sizePolicy.setHeightForWidth(self.cb_task.sizePolicy().hasHeightForWidth()) self.cb_task.setSizePolicy(sizePolicy) self.cb_task.setMinimumSize(QtCore.QSize(0, 25)) + font = QtGui.QFont() + font.setFamily("黑体") + font.setPointSize(14) + self.cb_task.setFont(font) self.cb_task.setEditable(True) self.cb_task.setCurrentText("") self.cb_task.setInsertPolicy(QtWidgets.QComboBox.InsertAtBottom) self.cb_task.setObjectName("cb_task") self.verticalLayout.addWidget(self.cb_task) self.gridLayout.addLayout(self.verticalLayout, 1, 0, 1, 1) - self.label_9 = QtWidgets.QLabel(self.centralwidget) - font = QtGui.QFont() - font.setFamily("等线") - font.setPointSize(10) - font.setBold(True) - font.setWeight(75) - self.label_9.setFont(font) - self.label_9.setObjectName("label_9") - self.gridLayout.addWidget(self.label_9, 0, 0, 1, 1) - self.btn_say = QtWidgets.QPushButton(self.centralwidget) - font = QtGui.QFont() - font.setFamily("黑体") - font.setPointSize(14) - self.btn_say.setFont(font) - self.btn_say.setObjectName("btn_say") - self.gridLayout.addWidget(self.btn_say, 0, 2, 1, 1) - self.label = QtWidgets.QLabel(self.centralwidget) - font = QtGui.QFont() - font.setFamily("黑体") - font.setPointSize(14) - self.label.setFont(font) - self.label.setObjectName("label") - self.gridLayout.addWidget(self.label, 4, 0, 1, 1) - self.edit_say = QtWidgets.QLineEdit(self.centralwidget) - font = QtGui.QFont() - font.setFamily("Times New Roman") - font.setPointSize(14) - self.edit_say.setFont(font) - self.edit_say.setObjectName("edit_say") - self.gridLayout.addWidget(self.edit_say, 0, 1, 1, 1) MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") @@ -311,6 +324,15 @@ class Ui_MainWindow(object): self.label_6.setText(_translate("MainWindow", "可达性地图")) self.label_7.setText(_translate("MainWindow", "实例分割")) self.label_8.setText(_translate("MainWindow", "目标检测")) + self.textBrowser_5.setHtml(_translate("MainWindow", "\n" +"\n" +"


")) + self.label_9.setText(_translate("MainWindow", "任务演示:(播放动画时需等待动画播放完毕才会重置场景)")) + self.btn_say.setText(_translate("MainWindow", "说话")) + self.edit_say.setText(_translate("MainWindow", "Is(AC,On)")) + self.label.setText(_translate("MainWindow", "语义信息")) self.btn_reset.setText(_translate("MainWindow", "重置场景")) self.btn_AEM.setText(_translate("MainWindow", "环境主动探索")) self.btn_VLN.setText(_translate("MainWindow", "视觉语言导航")) @@ -319,10 +341,6 @@ class Ui_MainWindow(object): self.btn_OT.setText(_translate("MainWindow", "开放具身任务")) self.btn_AT.setText(_translate("MainWindow", "自主具身任务")) self.cb_task.setPlaceholderText(_translate("MainWindow", "其他任务")) - self.label_9.setText(_translate("MainWindow", "任务演示:(播放动画时需等待动画播放完毕才会重置场景)")) - self.btn_say.setText(_translate("MainWindow", "说话")) - self.label.setText(_translate("MainWindow", "语义信息")) - self.edit_say.setText(_translate("MainWindow", "Is(AC,On)")) if __name__ == "__main__": diff --git a/robowaiter/scene/ui/window.ui b/robowaiter/scene/ui/window.ui index 6e34ef4..1372957 100644 --- a/robowaiter/scene/ui/window.ui +++ b/robowaiter/scene/ui/window.ui @@ -153,85 +153,6 @@ - - - - - - true - - - - 0 - 0 - - - - - 345 - 200 - - - - border: 2px solid black; - - - - - - - - - - true - - - - 0 - 0 - - - - - 250 - 200 - - - - border: 2px solid black; - - - - - - - - - - true - - - - 0 - 0 - - - - - 250 - 200 - - - - border: 2px solid black; - - - - - - - - @@ -317,6 +238,85 @@ + + + + + + true + + + + 0 + 0 + + + + + 345 + 200 + + + + border: 2px solid black; + + + + + + + + + + true + + + + 0 + 0 + + + + + 250 + 200 + + + + border: 2px solid black; + + + + + + + + + + true + + + + 0 + 0 + + + + + 250 + 200 + + + + border: 2px solid black; + + + + + + + + @@ -324,10 +324,89 @@ - + + + + 黑体 + 13 + 50 + false + + + + Qt::LeftToRight + + + text-align:center; + + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'黑体'; font-size:13pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"><br /></p></body></html> + + + + + + + 等线 + 10 + 75 + true + + + + 任务演示:(播放动画时需等待动画播放完毕才会重置场景) + + + + + + + + 黑体 + 14 + + + + 说话 + + + + + + + + Times New Roman + 14 + + + + Is(AC,On) + + + + + + + + 黑体 + 14 + + + + 语义信息 + + + @@ -435,6 +514,12 @@ 25 + + + 黑体 + 14 + + true @@ -454,60 +539,6 @@ - - - - - 等线 - 10 - 75 - true - - - - 任务演示:(播放动画时需等待动画播放完毕才会重置场景) - - - - - - - - 黑体 - 14 - - - - 说话 - - - - - - - - 黑体 - 14 - - - - 语义信息 - - - - - - - - Times New Roman - 14 - - - - Is(AC,On) - - - diff --git a/robowaiter/utils/draw_bt/Default.ptml b/robowaiter/utils/draw_bt/Default.ptml index 55a6f88..d5ec102 100644 --- a/robowaiter/utils/draw_bt/Default.ptml +++ b/robowaiter/utils/draw_bt/Default.ptml @@ -1,10 +1,26 @@ +selector{ +cond On(Yogurt,Bar) sequence{ -cond Holding(Nothing) -sequence{ -cond Is(Curtain,Off) -act Turn(Curtain,On) +cond Holding(Yogurt) + cond At(Robot,Bar) +act PutDown(Yogurt,Bar) } sequence{ -cond Is(AC,Off) -act Turn(AC,On) -}} \ No newline at end of file +cond Holding(Yogurt) +act MoveTo(Bar) +} +sequence{ +cond Holding(Nothing) + cond At(Robot,Yogurt) +act PickUp(Yogurt) +} +sequence{ +cond At(Robot,Yogurt) +act FreeHands() +} +sequence{ +cond Holding(Nothing) + cond Exist(Yogurt) +act MoveTo(Yogurt) +} +} diff --git a/robowaiter/utils/draw_bt/Default_bracket.ptml b/robowaiter/utils/draw_bt/Default_bracket.ptml index 844db49..7eed65e 100644 --- a/robowaiter/utils/draw_bt/Default_bracket.ptml +++ b/robowaiter/utils/draw_bt/Default_bracket.ptml @@ -1,29 +1,38 @@ -selector +Selector { - sequence + cond On(Yogurt,Bar) + Sequence { - cond Chatting() - act DealChat() - } sequence + cond Holding(Yogurt) + cond At(Robot,Bar) + act PutDown(Yogurt,Bar) + } Sequence { - cond HasSubTask() - sequence + cond Holding(Yogurt) + act MoveTo(Bar) + } Sequence { - act SubTaskPlaceHolder() - } } sequence + cond Holding(Nothing) + cond At(Robot,Yogurt) + cond At(Robot,Bar) + act PickUp(Yogurt) + } Sequence { - cond FocusingCustomer() - act ServeCustomer() - } sequence + cond Holding(Nothing) + cond At(Robot,Yogurt) + act PickUp(Yogurt) + } Sequence { - cond NewCustomer() - selector + cond At(Robot,Yogurt) + cond At(Robot,Bar) + act FreeHands() + } Sequence { - cond At(Robot,Bar) - act MoveTo(Bar) - } act GreetCustomer() - } sequence + cond At(Robot,Yogurt) + act FreeHands() + } Sequence { - cond AnomalyDetected() - act ResolveAnomaly() + cond Holding(Nothing) + cond Exist(Yogurt) + act MoveTo(Yogurt) }} \ No newline at end of file diff --git a/robowaiter/utils/draw_bt/test.png b/robowaiter/utils/draw_bt/test.png index 15a318306236680878cf9f06b1cd9ab3e943fdd5..dce3fe06cc9c01584e0e12d6e26fd9355195fabc 100644 GIT binary patch literal 103625 zcma%j2Rzp6|NbLIgoczNDrJ_HQLYzGjtNyhH^_-#HV<$7<;Yp z`LD;~P3Fbp`D(Go(WJpKC*3YbGrkY9C=@^s8rv_>J6o1on{+;?ADr+07I7ztLtj|s zg;hulp0#=Mu-P9;F|_s^kF z6R5v`@{E*}l-*pb(%c+wHQaKtcwyvLy!;$bh{cG10okc0dp`z)*`KK|bM9qvGl)8` z_S3euw(4TrcYhq^Y5C*U_FKPGmM}QGbXQI;%E9vnq4O-2ZIQaA?t|}-vc;1X#k8~p zGx>BN|&W>C0&8a{6Sn>P!pI=#G9XV3sV)?V=_Qg#fb%?8K175y7 zdhBEpw-0|*{J0hDY|R5sQuM7|pNZ;~{`;Y~hc*|_4~su|N-n-WKFynCDMeAQm6_>+ z;p3i$@pr@rC?-r3`WK&krKi`Q{r1XkBr%@Lq`N56k!|;0@Ikd4t+mPF;0@D-U|a$sg+YNYYJ;Yqf8;dA;-TrHTx_WJt1#KcE8S6(Z9yWw5R zg@HeR9ntPB-JcjuzH>HRM(XKG zm9I}V!@>y<()i~lOQ@YVG4pF&&aU7A=Lvz|4gb@^ACuAUJ|1t;ol;<3Gu#|MV0t-= zMMy(wWaQ|(cX85%YSlmd<0Lukiu#_+r&#p5{IIp1xqJ7qm~wDfc4xr*_lZpX1KT;c z@vQ6?&v(*?F&}MAaqO6W;OEGLuW19XaNG%dMHL$#<~vw>$&SB&(Lqk^#dT`3_i%F0 z>*Kjkoaivj)}I?`B_<{1w!6M-=`M{fjEAVseUN^1~lN zT3Cx+4~n8A-8mzYXPx7UT3V4ihfY55EANio2$NnnKZH@SgJ5FJO?uB8XZ|^O{Z?iV z504W9XLfyR*=^ySQ_Ah1v$Gs)=NSK9t8nMe+k)#i2JHVFw)}hY?M+=5C@8ANEUM*I zQ-bm?>zZ`Lq^jiVmp|S2@9H(rMG0^Hki39TpE$3CN{|1j@mpy+@4>1PCmkZyk$2~% zHc*{-Gcsgx47^I= z{_mEx6YN$Gg`s|#aqS7vnoT|7U@P22n|lkgv8p8OgP zkt@wjS*`jCii+Bjic}UW9oiL4iCr2 z+D~xU@pmzW%kVw9P9HCSCcQN6O`UYAYQCI`A&Yu<*Bl$gU>Z72 zN>lmc;zRm{@=QXuqeMs*#SIf0gg~f6sqP zVW&V*7FJhR|FPi9Hm|42XVXx`e9|4s`W2IML2u?kbmeE$gcSez$-t#nrGcg22hic~ z;!+ipKYjYdW$^PtbUgm2PZ{IT+bzeZ6 z`!x2KGYW=V{C0<(zdk?iSJmHG9l#P`lsVieN*nOYkmuhWa6L`D6%y>r*}1u+q1N4Z z!kQB|f`Ch`o7>uOKD+f{^UqWjic_bI{tbfS zor*%Krf*=NAS)XYYHQ29vZ&+1rke1YA>2R5@a~l+mSXdF;4>{$2ktqz>eowBaA**Zk+a zG!5yt155KmQl8o+vm^AJsf=1UozsO6A}_T-0V51nrGk95kn^m z9rpXmN{_)zOJYZ!Q*oHnvYz9(fyO1fe|~tuPDbR}i%UoZOqzb5ULMtdQb_Sh+oMP^ zImkpIPtk8=Pds69TDCK~Apo@3~^nY@aK8mMUu?)YQ3=2{hkq6$2-m^11rK+NQx; zIl~nAvBlg5u$JY61F*ez6Zws_`v~@kI;A)~5|_}eu2uNHzBW?eq}HQcqFUcRu3Tu9 zTJibwf5iOX231m!lf!fBirLM=Q)Fv>skskcdfy!)m$|K&jIA{}DbS6kc#dUej){pW z@nK>MJjP1BcBfbN+pGTjDj^nso>x$l**fFwrNa0WsM^v4TlHIcE0-sa?>fpUg}=LL z4jEf*eff{gnq@W@H`9Y9Guu=}y)`?%-!}nX&=8W{e*a!hT+HQsKMU|Y#^JBmM?Ghqk3pc#OwjQAjBPTB(9gbTa z5?9X_KS46!gx(>~%{5>mITDn+yR#s(Vib(O2{U!I8<5@Rbe?aw=| zj_z?H;s&)7CQ#foqRc66NdZBcJw%HIt7bT z5@3!~r%s8;5bfGFkwa0!Ti@ndt}R=RqYIU4l+x~M%lWF?Oy6?+s2^}wnOWxkd#qph z?T;TteDpqquSwd?O5tYVk!kUXR;0uH0j}TjT1`(+c=ND!hR}wsh<))2fqls{0$fU4 znpk?#?}Nu#m}7>*{Eo3=!)1J(R{O*5=qLr^`YVM>mOemUsTE;_M3n+tTFzb6mLCTd8qX72;1+#0 zvikgaF~wxulF(XnFAqU?)smUns`;Y_U5mqBm&8aZ$g|Yw63jfnsjEDH&4rbq>*xel5g0w!WTgXHr$FU^?7XQhz+dJl>f_ z^T|h{qtxGREB%_}-cyr#OrTjb%ri@}9rD9Ic4k|RD|>i)QvKTnPjoYE7YozMT_s9S zU+(+Nz>IQg)AC%?mlq;FkBSB#I+HARne%$O*7MViw?A1i$F3iqNZnIV9yaN5e6N z>~sDB(k^d3cN)G@+s~hIbfT{x=YEb9Dw=yI`S$II!*8N0{eY4ssp!f}>ZgNhY6HUT zs&Uy@N&AfFkVld3E-h^%!8$me;_Z$q%i)1U^teJjv%bC%%x{^*lcvFz+?r%Ev$9** z!TRj{$Of}~Rptv9T9ON`M}IJce=mCcmOq470{%vFgBL4FpO`2X%rpM8@~)z|`QT#i zzLKTES8Zas&PE!O3}`-LYRuA}%C@$ic6FQhNr9jR+WI@1dWn+x`NY3UHPqVDM^$P9 zM^6;08MLJ-*x2O#yY|MuU4j;S&X=!WhdqT>Bc;Rn6Aucl%62NHwPb0m%f&6)c%-Q^ zU7>E88x`@nlEtb%hHLZlUG))t-L=>;KfYdh>Cv*2lzArh$0hu5t&E`q)Xses4Mn)w z`W0G}h2l4>ROFRja3VuON;cvzvAu4=xJscB+{z?QEt@q^e0_>ARiiZQ^zIBJA>ILu zh4dFMO5sKa0u?mmqj|}w8+vZuWVGny@%UOPAtQ8gZQ4h~=Q3BfqqSz`zKSbi%Rh5h zeQ^EGSVu#>L@wv`vPYC-OUBl#_LE{7D;;G$&P!%E9p@e|s3!ewrGitluSHT*<+LIz z6w~~DeYpmXmo~hkV7aTToHX-^bL|g<(48N`xtF#?rHxF(YLCDdr`@*V*Y8;~AP4l* zY+LJ1LaWpQ_SST=vp+oJS;u`ey|`Kx4JYGOS>ve?5;mB&{W|e zckAn`i=J!6)@7IKZ(p^#Jz2`O7LT)-O{cwlIv`+ai1Iu4E1uX`&VfPZ2RJ87wbHbN z1jdWE#Tqr%S~c{3rrZza&=Cozz4WN=fy(Kv>Vf=1nebPV>!L8uRbdU3fPZFZXXiSo ztEr_D`Oy#8ygT+UW<5_LdHS(m%yA8WPEO-5Hnp|uq>ix25R+x+)IvXo*jR}b!O8Wt zCO?_^RpryH{>!fq5!#oO)8LvUn#}9b&)3(n48zSbpjOP_>~6UE`_Y}c@;jXEqEs+X zEzZ$qQee2=x#Y_JF()Z>bX8;2e}e{Laccu?&W!;qN-gc}l&g7W125Cm3ay&;&eGAX zc<(czI7|>G6U1Kb;)UqX+g}7{w~G-wds~{CyrX0B$mpo$aMO8iF0KSnfftK%aufqu z)rg%ec(p3_-VzmMp{E!5`0*pJfQ*cclAd1T%m-5K)6ewDl_JsCw{i0(>#44;=1vQRye0>!G2E}XQd656 zqls&36&^kL7$G-U4IfB!)`-pqPZu{nT+`2NT1>d6Yr-3u{Qev`{9_(@5= z^W*Z1b)h4R8`Oar^r?ZNAz;*Usi~>uH*~bM{eyxMVq(snKYv~i#K`h`a&mIrkM~Fl zy|2C?qB?o<&zzn82hX70rRnnyFr-t{;HXaxTj<{ZQ=m5=Em9g3M2SdBHnF)s{|k4t zZA-ZmSW6!pFG26uNT+>4&nVzEjlw# zQ7WryUc`aptk}gOP_ik1LQ6Fm{PF&!mzTVmnc385?T?IbMj*F+KGI1h(%U2CMnvq% zNuPD^0_XI~E-BY#V*7|uba`lFkoXfLBd>9Da~D_)`$93htE3bUKRL0aL~yaFxVX5| z;8AUGEC%x!iFqC##mq`mbz>A?Z-L#nq*e z@72ElH_}}a-E3uHfteYo$@L}>S{b{<&C5&ZbI{!s{keQ1y#D__Vj*^Kf^k zG#%KL3nY}={jVW>e%?wg-z-)%s7XL}c%6GAIni$Z6I$Yv>A->+FI@N$!9sn7@9I^B z`}Y$;UkrHnZUj5rj4bI_=A(hxrK2=7X-l(1EYL{3jn9y!Q&0Kx=Yb_0!gy|v z;(w#?9HIK$peEsEv6xZuK^kHA4-Hd3{Y+P~vdVeKs-};%;GMSNFE6v=XjgRZ z^H}@pj>f4;Np3erSP!MvcHprK=A$PBKbLfCB*PKa4;?5;v%X-K+|I_q@ubTLOGOe` zL*cz%KU)wLlu;Tn z1>rYi!_OPaGF5sI5(kDb0)u;`{+>da+IEP!e55<{6`NaIKVXK=I+c{3D(iU5nTUv} zpWgojGjvE@U0s1aWioKlxhqrX#@;;u~|4P2j?iKf=JkuazE2M%(%VFxU+XC+&L{S zF0OaF|4C=B<{|Q3XoTeEmSFAj_TnM+F4p`>EDG4y~l0pj>Q&6XJ*O=1O$|0*bbq>1nfcIlj-a03l?&A@=0|@ zBHYaEQ)4tCHxJK9Z@JrYPkKp`3~uJQ$NBS#moCYF>Wn?i#X#^kU`EqfVlw4f0PY?O zk@69kr##bgh;l5a{Q2|eG>xY_2`0P7wJS=VR=9q1$0s6wu}dz~yt%D@lr`i#EPaAf z`o}E)sSotYBq)z+YN1ek?gEo%D_#9mISNyZNXT|1X`yUG6?*yVRq?O^{L9{RpT7^7 z&9yHdx9J8J0@6HmBqna|Y*AF+3Z2(8UpE|=Z!G7l7=-sy$=0sC;K*3hG5Cq)Vu(egLVG8{iUt`k|f7@MDl6=$G>PdSoNR0S0i{%tUU@SCAP4uh+|% z=lgAeqy#!}Tq;MQHoX8l?J}xx@L^)Y?T7L5VZXI+sa&Z3XWWoSn%jBGdoN+3QHDKN z(1#Bx(9okY3pFD+v=$;vGdQ%IuW3Q|`tdLmPidEg8og($#+KO(S{1r+d`qQ)E@RT7ex26oD_P-LSLjHdwW+g)%>u1Jd_3?E?N#$2ZZb?o#5>S-kKB@ zbzME3cd?+1CvN?EX_?d_<*&_#aKd|i4_@y-ePE$|8Oi$d4_=O?(>i@#P=y6OcugyQ(|_zxebVbsegDAvFV^6d=Q4)B{87|7qd7v$^f`&0!7 z>x{bP)&BeP?X8*Z>n>Fa3W`J)uDd0oGP1gD^b9H9ziI|AGJNktO{xD$2hdppXjr95}e1ywFsa4o>Sha z1HpBgag62_K^H6i7z^V$`o98==8hB=y|2P!J!d&zl@$SAD?VlrKE{QuCIC2JJ_z|0 z)N54;gRY-+D1O_Sn3B~Q2{GTV+C(DGX#BDlmL@Ao}(W-brhaVo}6Biy|?=B zXu$jMw&-Ooq47~;vU0mJqsO&N^YSjAr>CzrrpGt`kLmZPRK@$L zinT!;{jX*0*H>+e=Q|8KitTexQc-0)ESZ6|L|}cf9|qZ{3YIt?LgB4~9^IHz-rcAP zT>y5Pr067xN7>K8@^9|NIBi0`UZg6#*#+s#aNB~6W(I_8xU0s(xD(P|NR55Dppe1O zj_yfydh+B+@TEs&AFD6-P21d6SEnJt?ePK35CHxikX8ok!+Uf_d)y8RGJ1X0#$qsT zZKJIpbtKpBk!xtp_McX|W4FPV9*i-h?q?(2?YT z*dh}$d3id(SVixJruxkCTN)Y~bXXexRQXZR(xyXsV1bSV)vmlDeWgFNR(u3_`dhq4~k(~NgyO8{bO?Z`IJ&Fu^b3u7hkqn~&>(Me!0>UNw} zRd$p5O)YK&YUN^+<1AKKr(${8Zpop9X6S^WBqfB`;-U>wH6vL5`b-)QZtVd3Jc1tf zuYoTF2to45h(3~oNlD_s6$Ff{!+DI9*=G*ibat(Dci)RN<}+umy?y(ZK>dWsNkG~< zqZ&Z-rNj77be+`uc<*VW#%Yvlkqt+u{kIH|PZ))SG|~r#M$ObhE1H^G^l~NMzi;wq z0_l#w?!#L!w*2)m)OU23Xxl2wt0&1PfgYB;vcPKZ(o?Ent!CIFMma+SHuoxT?jZdpqC7aIC1IW z-rOZiXOb?}dc~t%(h?G0b>Tuibg0#-&j%Hhlo+Z?hqqt_3~A3cJxNJOxJ|`l*x;st zD-c|qx?x*b&=TSrNLIBqH2g!tJ1VySYAqlx*SEmaK?5b0*- z=Gi7af|gcR%ye`&tP0h7*5`9y(U9iR8B%?@-6}v&{aChLNs|TSjXU`s`rDgN_8s+Zp-m3#Z@(4LO z1sph}q11=Vjb$vK??KnwBrL5}ehhO1fg0kz7mi7=FC#kuAphn~_i{fSuHli9CK;z0 z^5VtcUdtc@Ceq>-E7xcyH;sA%WMEh0i;)hOL2O$vx*ln5y50Gy?SBaB#-j0zz+|O# zecbw5$44Dc!DS5HMdhs9A-pC(rj%s0#`Y9>l=D zWQ~rEwKU5Jr54*SFhiLFa{4Diy{Dxm=IPTt<5rikL*xucj~!>IkCST3F_IInRtvU6 z6{!!mb9nGkHg6B?r>C+PY4RiT8E zbgy>UOL%|PZtTi8=eC`B;FeC(@9}?1caj3D@!+578tDt&_A+43YxxZO5m0A6KX(7r zWmDm+0BVyGWbY{l^Q9`n6z3UBilC#i+2sdyHS$BT5_XS&aT;a*@<*(7@^K{fBy_i- zT9Q#;j?lm@xA6fKYieqGklUI4q+cXT+uI%z;9jeeq)p*p;b2r+y8>yQ7BNPoJIb=l z+btwZS!34|guc2Aq@t-cS;?)E(73KdVeB{{<}2odrZ<>L`pxoT&;T@o-*UtsTD~q% zNPw^J5d>I(>Y+_{;Mpy(_Hc4?S|Cdju)7N*EUHiDD-MDI{{D>h04#2JwhYfEve4ZS zOjc0N7AHPH^=ZNPTs|5ZXq+Omq!vnR|8mo)JMWH+z?}bJZ3u7HB=^gGIfN51mj#Ip z=}4FA`J+KDJ1KCI{VX_sfandr>m*=dX10Lt+&c}+er&y|msoN1X+FLFSA=un@Y<|p zE{zFLp;!Zxdq|xDaL?Ekm$%)#b!(1l1%9GTbG!`iRFVr7U@M^KFiS`Fb{EXm)6-Kf zviXQeQqQ07cVnou0d$Xrelt8^IH zgHu&v_Z^s6{jyok&CFw?&U$z})32rT!RQsL4G#~y^R7MK^n^OiC2Jts9#r-F_wO6l z?IRdg>?FVscb@)w999|BrXgvQ95Ds%s1Xb%Z&($rQ{hVB@x^^7bLnWdLYYp=+&nWW zIT_L000l!|g)h4+N8r3@x`3+}h;m`pP7)9hatLUbB%~ar8C7mlq1uB-@o_FE<34p1!6fDd}DD z%+8);XD61gZ>mmZh~Kt=Y4HGmI@B*v!A!}6&)pIc0jDq%<=Vb5!VP8sA~KcDtuoLG zX@El$el9KR-{hlQmLqp#V`8xTQM7iLGhe@bJ1M}|kS>Hl(Y82BL9ekzX zkje9<&7kjrpzm1~p-ETTs^>`xa+6e8v~gmF>|mFwEqF=9#C3+OSIGORmt}H$BkQ$f5F{@4jHuWOL@Op;fZyFg-l8xNVhw60u8NL;{esM2$ zt0@2S9})?{mh;dhvZW6f_rW0{Zk3`pZ|*hmCh2nMYBSf&dIGcE zix}@7J&2fkSW?3nbZ6M9YM`^rqU@9%?-m^5))=d3=P{?*SO} z+Y~^NApYug++h0m*O$+qv)h>UCU+KErz4snxVRA>M`u-73rxU2JUksO9Y2zstV>MP zn5&r5kW(8nx7hEK`O!EC-~$tavP+heN}$8{&I>2E@@YrOp_~k<_D+O>CWm(0U6W|G zs&Ag!lr_*r=#_hYCRr9o*Z7&4tIJsSJX74vIohseB}K)!za7-Pz+_EALZTUF2XL`K zZ|YAOdU~dYZFCa1J~@}`ypp@z=DgN+=i{mBq1oXc+*%Km>L{2*MOU6!fVK_b3`lk| zf|r6hbzg#Kd3|DXU3zxIfsMj9h2V0nuMfRinR89^IVnB;7|l^YnP`i&b?pk3eIB5d z$^nbqB~Y1?M+qYdSJwU$nl=y@g}ZkXl9HGg0Vg1;C?KrF>}+nERgn4v-n@wb(d%nv zB@6JE7cX9v4~dD1xl2=K^3(WK*VMT6Y4lG2cz+4lU=vh8c=9GXlmjNx^C%US0Txr1 zfk8l&^RoQfOkimXo740GfrTz}5g&Js2pFr7dEU5cH70xOmPb=_Gw`%IFvNWNx}S1j z;z6h8oDVr237~_S+EK7_lI#F15!bz{x2zocf-QUN`Ga3+>9?2 zmM;JBVO%4fmiKV6fGJGAJBn;G5&s<8yk0=Whp?A551msES_KVGz#M=*4^AjIK?S$H0AaEa%uw9Rlj3?d+i5GIki? zAp2^UaV}{2KvHO(S3kl`nqKVFy$j%c89j{Zw(fE4av-)a2b&c5AJlQvw75vb%G~Ek z%VT%W`w8@u4#*d$wNZ^^z|ky6uOf zSFHw+kH3BUcCFGKfZ@oRGx{JG5^G0xh6e1cTUgz@5rpsQ>w<;IWYftAo5R zU%Yq=_jC|=0dNOUv&-R#=;#}e&ycv^o(u1n{HtvmyKMpqb}XPE5Gu@TsN{FXfv{^^9GBL2KNwkeyzA17e3dLu1~P+*4-qXe-HH$YnF zwzJS|fsg?qECA~B+@*)x^ZnsJ}%3BzE6_Ce+>@CN< zMTxDaYTmkatGc#U;mMPa03Bd%MK7>2mI+0M(~ch%-4JR>HFk>hlhGl{P-PVr1r?R6 z2@x5{^!8G?3kY4V5dg%i{|X|SEnB1mYXQ-wR%CMr^sS_X1X*BZFe7l&00uHLHs*iM zI01^5l9 z2nZT7h-7GErfIm`>vk{;F4iFEuXF`Hxj~&p_bgldZ~7fLwNX0X$8$&(@811BIw$T6 z_D`s5Wl%3k42+BdI>%}5%3i*U9LKiEs`+7aSuWFYk&$O8m-lIxPE7X<)C9U!N{8|( zKnV=KYMq9N!?dnb$m|zJrDe%@B7uX04;|-!Jwj%7+cB=9w8@|j@=v+Y%Y+$1{a>7h zwmC9gN!zA@o6{IAbHxuv477B3xvenX=k0O0lqbM0D5#EHe8{X9tkGydY2LHgoNEh2 zl~45bLNK&8H67tENjGvs3q9&Q&Cat=yP|xr2aHn6F_(Kc)Pb{pRSz0kx6S?RF`Jb| zGv!Gk+OgZ+79v*A>F(zomVucDBF1|NYqB>8zc(rm$w*L~=64kmsY{>YYeVau__|R=;o1@r` z8*WfgJB-4xG_YbQ@xH7@FF3(la_!nR0-ybu75J|XkwTjuafAiJybCG0l9JecxT4&| z#6&~Jy>{;(g*z$=t@a&6BxG=qIsfTlTrPTt#?LkUh4gg9LsNiTUqOI?g)OQjgMm zvK3IKtBcdb`}ecwnW2XIr){t;@-o9prON@}1L_%O0CR5Rc|7z4GUe>-S&s_@Yc>3N zh#UK-wa^}V}O4TbaX<%@)!#0Y}RkNgH>Ydj!CrWWn(Gq)Dlb<~!C|(*2 zDVcBum|iehvI4%qgUtN=U6>hEudiA{rzV(7fMYrO#6x6EwA=}ry6##r>p}FnqN3m^ z&@PlfxXa3fVd+>CfHEK>mZUj% zqcq`C7oekOWT%q8eEFh?S4Kom|F}IvOC*pif(o)q4-#(~KqyqoSQurWP&?8Pji`!X zOBz9hkk5TnmItAJ$2G>{mFeEfy@o2T&987DI&f4`QL(zuH0x?0uVj0Ga9@Vj=l#N4 z=`GxIV>2H3YWhqQva;@e{rZ*9VKHNpk(pTzYW-^(fsxM3l$4YSAnU(6aVf6#Flb^x z7)fabyLuZ@_!3|yV8afPq6P;Cs|U=gpr~f&$6hqMhk9R6&@JxW7Q*w~x;&s^JWI zLO{Zb25nPJ4o0u(qv5=$%TB8{`}Xcd!XnHJF4m#VYA%9Tpv8W&I3D(%5;oYtrjQVZ zN6H`}n-Bhov_Flqh$ty3L3dqKDj?1IAawioZQ0wmpO@3^VSl5_DA|4|VhUIeloNgH zv>dI9y1m5FQBeyx#=uw;?J!$QOibK_JmQ^b5hMm!LP10VzftP}wxS5o*7N~&*e&*X zBA1>(Y(9Z(qMZfR-UeE=3HCmZJs$4cGHC?Gbyp-%mjfq=*WheL=>4kTNKHYruBn-| zT$?38dA)oI^XH>Sjv%V&zabg;3*<=S!f_smm|?`T19${--|=a#eXl`!F}<_1^Tqq0 zZu$r=Cm`+1LJ!ptpFPgg&dJqoMTQu~&Ypd0?1oy7sdFdlBp{Xv<%#@ zk+Y#x3678O*kBsY01;TC5qjJZp*Tx}Y+josk7PS%Pbo{!wiiIQy_LOhY1ejQ%{EUK z%UbC}s|3jmt|1jPjiAFl(bv?|9_s`LX;L_JzAe6Pj26u;kO^duSopM4XS<745Zx51 zvlpYY?dsKBtthreixYsO9gXP zVVY2y!jYY)QCV#P>{>O#S~qUoC^Qdcle9?_)`BwvBDk}$>}7{G3T;Cs0IX)_u{Ivm zJq-;uu}{jWC!wtX&~p&2nd+J9`%FqhAt z-?3?=Asx+vh@jv;jLqPV_}o}#ef7i4r2;}$l^pNaA5aYvP#83BXC$KuRGty^_xFR~ z&H{6b-p8oknPL5)2IE|~otM(OlF;T+;eKi#G0`?_z?|KT-2#nH(nlA4z>H|?OiFa% zz^u^)1AA{80p<1ebpoHg!jCRflMM_EEETNV;=6P^Po6n*M*Q~e#}ud!>{@$H3E-*n z(D;ZVTI7Zp_x@2>Be@K}mW7yb=|UAlIOf-*@YXn~kfTulKq48o?^y}^=0j@&!R#`N zsWWzi+sF!!A16TmyM$SCXjQ=XRmQowSCt-BxEtZ`q?!w!*Jc2xUDd#(4?O(1Rj4SJ zCB(($OieS&>F^pTpvXWjefnjXy2m9yKOZ{P7Esto#eR5Sz|hbmizO7ne&Dl+{ALF} z!8w3jBd&xr>;>mEg|9sM?XGS+K!MyT1>-05G6;02)niEARM?+BHw371QN z+QY@fEMn9|XRZtchHr2WzOvPtgp^e4-%{)H6LeE9>j_l^ubGrA#ibR`D?`JY3V`z+ zo^-|)syj^I0%dFT8)oA_zaEcSbCf9EYdvoyq7N2Rbv_$R5cnds+L- ze$ta%-y_~`_1?838?7s%6j5mbTtG5`q!I(M+|veu0CzHdV*n?>zb^5u*qRh;kgwt` zd&b2fmf@9+fCf$mhC#4G-?@JMI&_OKFUUde*0mT$nO;NQ5dfAwfKQRgI0B(U1?Nzw z9{&F?{um+G+qDA3t3(zP<0tr#M3^k&o zVV9p&Sod8^PkV-7o}=XCHwf<|{R4%H(AnJdk}=qHScap|RgK(ID0biBl?0cGQD|iJ zmX~*rCnQw?#SU^HggOv4(1kXU4~&;rS697RX;B4Z4Usnr0Eg*jE6;V?PcrfF{KWX8 zEUp90P^_&RGk+R$GI(SZ8gTZ)=aYPYFgJ#Jh#9>1nnkF z$36s@1>496fYVbH+y^m(x2C}gp+DCC5vswIqX6K@S2O~_QrW^np!^ITShqE?p6pJA zx#7~v3J6k-;!;vZ6evkCvA3nArH!%p!nun;9xP!PzzjYGlhU;u7$ADH5(yvA9;3vGYkkghsF_m2YTx_B$^#>*BHAQ-Ef1{1R*v60Gq(N1Dc?C0S_fm4;WZHBBQ7X z+FEj}Eh~>C<*8G(Uz;~KxZ(I_q4xd>w$o@)AFKA^`iGf_XZi?w-NiKp)P5K%&RDM1 z)Ybj$F1Cjk1e{4+T8q?eD{X1H3);agXnh2r76jJACEJ)SMF`Q`pSrodVkIg&k8G-9 zx_T;DJJo>`KR2a$JI-$mg!X}VX@jM=Gimm?s zy#a<@N(E=}*CgfT{km=XNjL7t=Nc;jYMUroF-GpmBT`BMKT23g1b`u>jq)?1t5iD` zz(w6EM!1|`cYdOP%{8d zr#sr(Q5ygefO;jtVHAG%Y`qZNFjRcJG&8XLnRZ<`_d!H>O?`b^l0q`Jt#n->UOKdi zw{%HL09*|P{jab7nVd91DlQ)8I+_6L6zk*>hs~ph0nABm{iDb8P%eT=MnM^uTq|C_ zB)$?_XEijlUW5^kFkPJL`|)D))JY6C)2a?i0ixVzbZSUTzlN#xc`-aZJkYcBjxR&y zQUG5Olw_ob_#tewTxfE9s}chUgSb`(mI*xtW*~-Ugf2WlGQ!|x6l)_&rA^N3L(U`6 z>A0Xa2qYLSl);q&glyW4eXPU;lb|pPb!|o&V9J97R)l%*os;cA{LYwG<>5g0p;PSqob2TWz+ zY$c0PG!9eO@R|2EsQeii7*2Oy+jyY_4Ejbv#A-t-G?huw+q7!fbyp}DE@^y9K~oN{ z71h<^SEygZ-ajKMJinRd3)Z3r=Dqinm6?4i z>44e1I?0{%xuFM`DaDZ^+E{iJWz1H*PxaJ=UJVEhO+|1CKMlBL!NwB_;{(y_734`x)i7a>mb;{Nvb>>5!4_AulRrw?IKT& z%|VbNy1G;~Dofu{Jp_pf%=vL3ZNvMJSQr_<_ufIV`z|71*lLSaih@1-ijVJ&WS z8|V{;S@>2O)xOG>@CAH>Mpw9re+=57`q1(3q}Wz!>}On~~gke4iwnV`VT z?7>2fFU-3%ZsMG*u|5+BkvTIv>j%jX@_d-Xj9BR9C)eTSRAKbeA0Au0M=iVjZ~6cV z!?B5yFjopmj~zdroRjl&!KQ$8531nvCUCv_kHkSKyb)Xxh|p3JAzjnk1CBfdIVCzy z)l;p9uxmYqI!Qu<=h7VorJazB8W3w2Xzws@J|_leUD6xAU{&qUq zgYs_+0wx$f9v($R-A6Px=7Ykt?;sA55hj8bTU%QGjM7|2oI?`$s0gLYO1al2*C0xf zXSKVziCUqW$?53m6q;Ker7x0=VCUqNJLdJ(Wec{ba%~`Q%&8(O*^Xy8I9~^)6f#oM zR>*@+4;*+Dj>5Y!ruM^0!kfOTp-Mt7fCzKoz=89jjzZG_wqU3gBj$G$v@A$!_9=ew zOTzv8p+BaVl^uI}dNe@aLA);Cyie#zK0z&ez;Fr4dL+-SpeqBYL<0fdEfb)Me}1*1 zGNd{g1H`A-Y}ha;LpLHLS*v39FK58t5S4`MrwMTI+>p->p;~}=xuEw$Y05r;1BCEV zZ?7;545LBHD_J-SnG$-{nt2niC?+d_-*=;xot|WXT67d9n;aY;)lN6mfI|J{`Qhc& z*?Mln_6(XdGGXT|^P!DbyMT8Gu1+<9E`y=jk19Kl5zj5(ME@T$J9{CGxDa|Tx)(*c zzu*W0#(ii6ItJML@^_e}Fz-f9b(ugMiGhI|?&hH(7MMW-y@&l>*oWJLkB>~;Kq%~a zyE%E=kY^5~Fv!gfWy>|-RA6ZggzJQ0=|Egf;D7}>4?79?h6-A6FE!F!fg?|Rh!jq| zLWyW2Fz3O^$;!$eR3wZLx(Y8z`kAJdd|ch;8gi!_?(EPwEovdXq6pr8)$pnaP0$Gv zT6sALUNDIHwymW zb1>CkdFtHV3Fa9_cJ>BjNUZh|ykqbVwbAR%et%Y$2{+vftx# zUjxXh8*f~IYx+Fprl{iU|Ba3z3CMcLaRNrNNF_ngYHp8{{Xqp16pF72jV7q{K0yZu z+4~%Y%Hs#$J|v_amn4St=xa)j>uv<3oR9x(1QYhkMyp;X2Ol~VQ8G7YU~qmG6KT#c zVcgURPz_3V6%>YH?gMDfetrxLF0tpB`1m@Gug-Q$zvmoyN)?ZXTGN0QcI=|^Ie;ht zzL^*qZ}%+KSz|*d9YldT@BnhY9FJTLs~22J;W6q!I3{8#gt23rI}tgb!zwtA=DySU z0C^im@L`t2(hN-+B?@KX!MnE+^gC$U-7BDy0~AD&Fv3KZ4^|$y$Adxo!_=DL+=zY< z`-KaVa0dr@o!i#(D4!vbCam#ie7TKt(K-?o@AUkq94={y8Oq721eEMw%&2?!?lFqN zpHcwF67bo-UBadNd!Om!uDmC};og7*vvDlSaM@);+yHG+4}N$9GCc*P1aAUq08I~u zWyW((Jn)_*gvUc7J2^QimpJ6FFIEc8Tm?ba5pF{Hy{5im21*W;8n8T03xokYM5*2b zk~n5%4{JhG&{K10yCYQi&tk4K&I!Q^a60Tl6bQcqF7&a zj{iiM8iM=ag=;4{A3Q(Cs+s`W!wSqGnqmH`EYJ;g3$8f*1grD@8~CUO8Os)l*~TNsz4Hh%CyD2X<+M8w!?Fz1L3h+sFcrb_`MMA8-Q6R)pCk%&PAImGJfR z1E?6YAuq4%wgKTpJSn4XkA`1KQQcK={D$#e&ceRXQ_e7b0T)yv;M!(%jq5dpc|-~U zwt`E;5E5W60-84Gu?`TEd(&3+9eO*gI6?``Rz8SLa_)UP3vcOnjM;Kl!gF@?N6oj$ z=Z&V9hJ{~2Eq{Pu)o)EwSgz4nkAk|7T$BaH2Fgk*%_A@-hJ_(-!y5Wz)g}nC7msmQ z!rXgU!F*5@gFimkNznvYqoCSIW$w>iJL?Jt_!!gKtAN<)33XWj{qz9gEJ&N_tQs+{( z)kh#Y1EEdA59D3tZQ$F_#l?kzx6ZXK&)v5(pQR5?OKjy9JBGH6y%AmUDlKi&EI-zn z#-C?`YxHJ-Jb9CEmS&%ta)zcW?9(gOgMqGS;{{8qx$X&=yg}7M6k&|w+{bm2opOUQjf=>vBx>SHiH)`FS(dqSgMUWwwhQY8crs6la2+A3ZyE;d=uq zZ`WyP{>aQw4@4KlSr6Ape+J}Y$T+00Nn7!*nS*&v*PDxq{`v>in#6^HMa{+ z1sBoLD$Qu(EUV5MlFJH~O@nImj(Hk0-(#puR^yI6xbU;cc6NJG6G1y7o_lR`&J~u~ zsR{RGL0cfDIox2Mv2J0Tu?{8x-Jpz2*NWE_?oGcMgkXe&Q3-M`=Ks69SZ8p_`9h65 z?^78KQXRZSvS%E5HzoK|;kHP8GgEx?uMy^yi?;QR2pff~_AoB%=$i$!%vU5g3S&p^ z$8bq{Ms0wei|a1rdx^@VIj~P=Aj10y2{W1IkAVD#c>(W511~3=#MIY~saKZTp&_WM z`i6#M83zIvtWFa?fp&w1aWJTN@+O8I374`h3+Ss-t_+juN(TOp_D;*dncByU+sgeM zYFa+^Fd)>7+35#kZP-5HlEl5qf26w>kKhC=MUi zLO3mNyCDwd!lx^Cf%?o>j$L0U;^5s{Ea5or~W2I=ln!Jwp(kS-|+Ndb#a2?0?$ zrTff{&+~ro?>mQoyu};6_Fikv7;}uVp6SB@R;Wk2Z@cTspDQzJ@rDJi=cC%Z`C zxXLViaC&25X>lO7+_4-oNH)@*8?m5F13qZhw7`?VsA&x8YaV1gJjtIgJH@OVfw4%U zoEcEDQq(Q$odMreVpV*;pnZ;G9H-y}s5T$l^q8Ge0Q`&q%DvuDy?`cM8*oaPejr^V ztS>NZX6uV#3I_Sr+B)gQKyD#?E32Sj0H(TeszXEcO>>I__5d=BuWGrv9w|?5;SmvOJ8qD|+FLF3!Y|=m z!ou<}1i&XI9){A!w+8Ak8VQ#?*g(*a^w4*|?p1;HQiC3*=LCH35jwr+m_T7VMsKxj)3O6@B1Zack}TgB@Q<3}2`bO_`-`$TQ=igGYdhOF1!IjFe_nJc$j(;yhm%49 z3`y%>-vLZp>%zS>Xw+ez8X(h2i|KPxr5Ed;cP}f8x6b!{Fq0_>_qEG*6HcN`)Z|hM z&U4*59j!O(7T+abBqcRp)Ig>nbx1^D=e!iZ>N z<7ySt{dPmK_0{T_hl-zDF-%@lqiG$VHP@SBvpcX3{@NjMqC53_*G^OagX3F(`J(vA zP=d|KbR34o>*&}nvz{2mL;vgg-Sk^`c`~iW_5A3MMF&fPR!^Bkj{9ktbNGCJG4j%CU% zEq*i-y7+ibJZzuxr%hi31?RlIkuz<2nYZX**fw5Xo-HQ-py&9c$8XA;_9DU z13Fpn+)4cymt9IjUwzovIdFV3keic~RB_9-O81WWU9~7c9Q+FMHy5_8Y6=R*G>-2V zTYxSUCY6R{WZ;NO_ZF-s;2S(FEb>5C1{vdDzC$m`OS?B=hy;z^@C(0fRuBLJ*aCcN zgt3TF4J2Ko;UQtpXaXF-0Z3cC9pE@3|HAu$6kOW4ocm3Fyyl($@{%&DuSqP))JDq*; zXw6Qu9p!R3sDx(NC#&oJLvJ&+qaxow=D*%-{B}FL(kwi-s;y|XR-K69Vg{}KoBZdY z1g>DLX#M#mvtj}+>UB0kLlUz1zOX%ea(oPPr(C4(dm;7r^EF02@Y;@|72~#A0D>aa z3U}YOlt9PsnQkAvKy=T4X%cpfR|jA{JUl#LMLd@J?Hmwy1Omk0y*)A0-zZ0`H~y<1 z&yz(10-x|3LG`AdA`aEEHodH$Axv5O0MvKcUO>oXdC*P(7jR^8z_mDyip)$)Aw+p* zhT*1yI0eJnUESD=WKO%dBnd36IXopVe6Yh@p0(75uDN&IQ_4G*Q+#vuH@t1&qAo{s=d|6nYt06FgckACVJD;rT{w}1c^gK zcgM@C4yIvVE{48pkmnGJa?$syu@6qcOUtybu9?c01`O}JR0*eqjv9ZdmpeMNy!$6X z#A-W_tj_loo$_&g;-q~7pxQf)6|mU=^-+2ahjrYQE*0WPsdp1rK;!3CHyhZHuoV5W z?}wKb%Ad3oRXkSrawgrVdz8haa4S0H_338l_OS6Ynd)oM@42=SiE%%iVVQL5r1ufU zG0lT4qvwA#J~eg@+5mZ=M*rvR=I7bX$}yL{t@JZP*hH1 z5mB+Is13K4&F4(_(H3af2)fM?lhVCANzMt9NMO9|OE^N>@I5`4htKwMknWS!k3buk zYP!rU1;rDTLzSj^qwPoNX#0p#oBZ<XN5NbN}&TnxNUkk1+swGJ$GMSp_ z=(B#Txb=0+tk2s!1&YDC&5p#c_dY1W*hdd0(tYgc)TR)Q5wi%uT9B+=QlbvONI1_u z2imp^a9q#J0ZS;^5Tyx7>Hyzu+>CPIf_7qAXryvH;>ni6mocFM?geZ z4PrRedRJ<38Yv6R;N9EN}OLNXcA76Q1JGx zr+l}yh}C!M!e75qOz5=@Q!ZX`7TvI{qLCuq=BhD(#l9wf?=A-gg$QG4DEyLmNB1`X z*jsTAx-9%*g;xq+nmz?GDnh!45gTBKuHPON17?8Ga7>PWQ2~EvY2&Ml9TqmWHE`xs zG&DwFJSzg-s2T`yn3;=c++Z#hhk*NVv=2Ah_@J|C3>{?`%I4z7oDlG!dOYH5rqxXr zuGp?%b(;DNiTWV-+pe1~I;ULLLc$(qE&T`G{5mJS%>Dii$NC%iY#`%?1#$4#fq|2> zHY18q0jmFWze6a!-XmGQGg^K zkU=cE4%`=AORbJ9B`GL>myY)veSI_6#}~s!;5~lWpcuY={TUJWP!)epw5oPTD?2j6 zASWk(4pl+Gw@jdQw6(Pvgkmp>;tC9>V}~_XpJGn`GCC(pl~ur`;+!AlwGuRpdfs_# zbJlsxgEB=SgGG#}fkhZyzXCK3=~)pw2TAW2PoDgR{V1UPG@^{_n*P%l?p!j)0ELSk zcN$986*L^%-YdH%$OVfPm+qjgth|+NCl_$@%a=_R<-|OvS#5-12J#**cJ`YvKTGvW z1-x^qe(IzIpnsquNbaN{!wlew8A`8_12YBT1AhH#SO|h%O~1bjHkbQXToU5DU$W>& ztd2AgR3@6-bJ>Wv!Fo$!Y52#Mi1)57qMP1mj|IRCTgO!T+VGAvVw&@H%~SC=J>{rage4I#8gGnqEc5#ajGlr~W6h4Jw6+MXJDt=f$3{z$-Qv>qRCDV0SNRQ!kh8{u6r=0b*f3zBdA=|3R3 zmQWB*Qig0{etsWPx&VBJXymk+znUmPkGs9MH-aD}Kpk0sLR2~>0n$W7b2cSk^ra^&arPwkN>~1P zt_pLYq8=_QoSLaIo1yL-YEM6~C{)-d7e0UfoWUf6kBh4pm_2WyZ~-7z14^4-h|N#> z=3xT!k8uOJ5Mh`8!_y9JE}`h8JRIGL@KC*Ye8BG}4s9$E{@uJ@y>2VjLp3riGf-*n<85rVOBMKoCr=;>ZITiB};A5F-ZDZ7%u z^w-5|nC;7V#aOi5KiF}u>B+9GYns+7uc1)tgWfzgCB+sgl&DLPYVPrWxKWFuqetbZ zA<^6Kb~pixwrmUG!wCJKK}{;pZI4E||Bp6@O*v=MN4ZrB6KG@@zD?y;KS^~8wMeep z`l;c;LHm<>X?&6z>#rAIyu0o6_}Ig0Lj3YIeSG|@b=K1pNlDPP&SjXoRabh~DA&6k z6lQ;7R;IajRU0(!IxgEvzJI@P!q|K>)EV*`%+=|LJ3TRipiw~zMDs<4Va8M`Pi=%0 z@&4+_(#f9e%O>TdYsL^c`Wtw1-abn2l{c&1p5wo~{0(I%IhwaoMmi}`?-{roZ(v_* z`-}lH3c}LgMnp}olS+m8l%ZpTR%3 z;zt7Cm8HAuU>-5BXuJ0Y!HA&1ea!}A8kq9{vH^hK|L#+PHVzfYWf_^%*EU!v!@7^p)!L(6Q;3dX3A@wiQ$$_h1%dHIzz+ zs%xz$GoMTviH&hr%3{F~_E*We`c75oHCs$N{BX^do#ufd)Gx#3I_gu{aiIiM+z4xo z91XRgGX|~2B^q8{UR}7!$U*(bIoAfDD;Gy^x^;(gm^lvf+ z48H#vOKlU*nK4^ilI*Tp-R?ZCy!d_e|%w4WqZp?>@frws07hV-aBRzZj z5+u(djW0+|kXu}y8)yBIU-4ddc-8LX#=IL{n9W4_zzL67Psw2=_PyJ^D(M>Kw>N@? zz1O77AMp-$f%Ze|*#(5E*0}d^J-@PYyJ7PBdefO76l}=60F*mGH+l)s66M?+3Z|vUzRs(jYj6AeaTnOo_-5G&_l^F-U5`#s}R7d zk6Yc6UVD>bJ6|}*bq&TdJ}W)5`0lu9W8%C#W&;uxc7A)D%K1$t91@ju9~R%gk?ArA zpTOmWBeCnW?(bI@$mM#Vf<*L*?8*QoV#pjj|NcyNGRt_@Ymh7ke!=ri6sDU4MESg* ze*NVxi52y|Y`$9d*t;a_8$l%q6njbhHZbg_8jUz&78?TPfGd%a!2}hC8bZgBK*0?e zAL_%gQ41W9U;Y=y_`HzrzM#=lJfS-I?OS{pL9|WVI=(UE@Wv}2zbf4lM0tp1Hk^*} ze3jKL>eHf}l=;!3c+pT4D(vG~)r#me7jFA)rLNi&V)I9j%C2KUA(mI_PMZS4BZOQs z>AN?1*e>Ar76{!8o<_szrXi|E{^$XXa}QcWeiHv*bHeD;=mWiNVWhY6B?Z3X0v{k- zJD@@Gr@)*jx)H8&k;b~Ortwd|npiEYsyoQzH68(9~Az$d%`nGXwPlZZQKr@kZ@ai7r4oX0D!^-m=`b?AoCEUP1%YrBh)+K zNxNPPhj4%m^N6wc=Fh;2vdU@}duVv*C@26BRx(VqzTl}M2Lp^2|PRwz5o1@k^b(adI){fo+@GDu*HRT{+-E=9@@A3PLx z|Cx%=*Q!R0C8q^~uuyUu2)W~>sa`!%H6c+4C}E*3g0^tnnihE7phtkj30yw}W<>}n zG-CFKH6O#MAeX4sy+6f7VW`0j6I5eEKn4KhZpdxi>0j1|?M?>i-9Qjfv;|f`LIPgF zSP_}0MA42c&%QXz4+~R-%R7dO^wp9?RO{ww@@YrBP?cp4>Dz1d{q^ffRd&g$3@_3l zRTR}aQ$2?JVGy==AGON&%1u~cgC^GthA!Y+(xSiJ>9WVh3axRuN=QYfeTyN015k`0g%7F!; z|2?Yh`1FaCW98Nx|C=T)(4u4{ut19B3^G?&Q(i3hPqW%$O3L#QC;r?S4sr`cZp2M23l;gsNG+_Phr@JB9fE& z2= z4sxrjiMOSt2~l!5(5F|rF5fjbFG0}V!CpsE+z$)ZR^r#?wjU4?FSeaPJQs6Ia+xb6 z4gv)F1_32+FT6GYb(`5Y>=nKMHgx#Cid)jSWPgUTEA5lw#ciUWMBFwqHQeiuV;q?mD5{NROR!NG4U*=sJ*QW%gR^^vde z(%)AvYXB!h?5DWSB?79&XvsC8n!JP)C)f1o(HlqL)6fV%etDhsmMT193=)${Ad%fQyB_m}4V1<}gBM-I2nd9Vw9<3S;^WR7Ez+(GjgI~%K<95%q@jG^ z5-K-RMTlz;kcVrrYX0nNn5aY|JPxQovQ#mlr4Y+}WM0x&K1%^D#hs2jYWF>=Vrd?_ zgf_Qt+H2|`)!wYVMNdO}Fw|Iw>z*s`Rr5d(*U!n%)MhaS>ionOjt4QJtPR?dQ)C=(TZlQ%m(wh8FyymdRn z231TC%hx{45`&GbazDgGSQr;%pbgV~#B-~p;jcLC zU%^#Rxly$5b+xSYynF&EZ`%z9Eoxsqd(_vna@qc8#(TeT0Oh)9b=U5dDIiwa+Iqlp z==DbEmT__UFv9E2#{x|6W zm|#bB=guRidrhT?Z3O}-Ts2ooNb5P~!6ru%GB(0_NoWIM;WnslKt)0I+fjHS&D-#P zd23cSTNV$7V>w)v633Gxd-5eyCs*n|R1kjKS&Tf=(vu7QK8Qp|&*Zcs-e_63!)4Lt z3-6}~rg`F%4RZBf^-ZU)y*I@m;hUcx^!P8qM;)6Wj_5{_*xE< zJ58qS`~9VNY)+2nWyR`vQFesS@b%v8RIYvO&c_sSy@@$YVPGzpy@yCIXl(>k_))dE-e+74ucH51kqyHHaaFho-?_kiEP>h=5*uz z3ztwC1Bm8#*+e!6=3X}y50@i3leRyz_9IHeO984B6znIR{z@QWy;0i44lUkJX;@305IvP}SZIRdK95ZG` zJ+y7QLj5`sqdJkvEdM`OhzPdtGrWlJaj`y7Q=~%QE{ZJg3UB)}h{L`{APbbOZG9-l zfiW>ph;?{$bR_C&P<$65?IRln5lb5R?hGC7l=^oaUchF9M$>efM#`fM5tKo)~%JfC*_f<24p^s&|6yr*#tBo;(K^+ z{M%9ONK(r!qs2niwZOUB`5kkXbEoh$^YOR_%$!U{JV(%xU3M&>|cr*@G_{(A#|Ck3!7m6QTk9FhmC~fu4!)9ofUaJz)>W zk8r(14TDEBpT9pGklqUx-LV$kF4p6si;DFTFQD~UvJn78!kBs zf2W>m4NA5Deo;3gjB~ghq6t6;okvyoqkw1x602q)0Kq_$jEv043&i}3x^FfBs75Lb zNH+o=-5@wp?gz7?eCV(dV&Gxl3%_h2pr2)SfX7%sHv-pE%^(I0nK#|Jd5aX&{nv)U zb5d_mTIT3B+;0nUzsC<;YfJ#QJ~59j#>wbA|bzxsjOyY`D`KL&lyWapFzI#f(FUeToXm#r(M4Rs8I zBRn>TOfCxL#p9<42XNX4@sM}H3!4>!+l%CcfI5fFd8MQpbY5tH@dOCVa~W)|CIa&j zw%j|{<>4ZYz%4&*V&v(}dkiz`Z>7 z6|<+5<%?_1N%ebOspE8G^@h7^al@qvr+fYe;d>1JhRDbvWueN|#@UV@i$a>gswZu( zbpE^5>DcV0(LlMym8tpRV#_8y!->Q7u~{qPM;z?RO$Sjfdy@%!>kT>CY>WB1&`P|Y zH{N=3>59D9nQwyMu26X6R_d)C#4kcIVbJpUs_J1EZGX^WSB!buQ2(BNyftl3Z+H@C zAMAwZ&GQ%GS=xKJ;5XC9``>}W=(q`9qn_QeTYGy6KPD!UEubz##POB(lM(<{EP&0# z0N|>9I_AcrKJmwAKkB#gxJnv)r!{T_6QFZ{{uLA?$#2Wg^+Eo2Z-DA!EDB5Vz$|^g zE0Hl@EaH`a-sUJx6r;I7m2%}5`ctPU4(>cHIfWm>T;#zK_?XwNH03ht{rzJn1JLws z^Xxrj=C?0{G0@@N;Nd?%y_U$y$X=Dq-VRhy=mOP@+4ppTw)f`TMMi}|*CiwF=H{Sv zcQ+3e$_p+#-3Y@a(bF?s&}4p;yP7!h5OZ4cdOgjc8@CAHRXHWc#Poe(bgZZ-L?0tCtSzayYU&O3jC-cE$0GZ5{krZx#HLNa zf+CEf)yFRh@TSt>221=vE2OG2l2(8(Yuj8>c>BMuK@y3GSokt(!2yq9T?_tiS#@Mh@(w38o6WFb9$~zoBhz#YmO6y#p42^I>u#JW1Xkn0c0g3CGH0Jr&5)ly2Yt1X#y&@V%Djj(cikT=?+c zr$@U1`%cXfYy-d_n->^XG#woe^s?x!teW56Xf`?RZ&-bF)vUf!cy(}dXQXw-U+vEt zvCl>z>203|>{>c;pAVkvxemZtwddMWh7FlRoj(6gO-@&Le7&a1XEPKZ|K??|hhlZR zEWz{Zj@iM|p4@filhR8M#x4GkLaeqb`+t9YUOv7}5Q>|D4=xBTsp?ZiJFD5?|6jxi zLywF|GCkV0dn4Y5`>^w=QRFTg2mZI8ACqe)Gp@VVBzz0~anRa|ip-v?{j6kq@MPwi zY}28o@3-$4(ZjM7MM}e7lA6_;-I$ygb12atc@u(ZI>h}}CQ@O)t~_y(K^88QoVjPC z)0BR=`5|n0WbYaW+u+K2FY|O^DN3MJwrNDqL}c|%GAk#J$BtHK$5V=(QWAm-GU1%Q zVQSY(4hiYFj(voLs@!isSn9*r|7KE9=6mGd&VSPq>o!W}4eNyYH!shw$!dn&F|D&L zEOxoy`pxS+a_@2PotjK59LDS=#$$w}UNkQK$uX0((O^>S54IRfowGCsQ-g=U&09~0 zMDo+0N%1rozgHSPu7nR9pvja zGx`fRIK<(9aGLGuY1&es?Ah#PZf-&I*fTQyag{mbVA!B_w`xi?hdga0{`+m_mC>dq z%^M0K8x=(`BEBbUebI5lbn@Zu-vZigo3Bnox9DZ=oJCjS^vDn#?~W6J@hyHhlx0(C(y$dKF1<;MS@VWW>#o=^di=Y9k@@BVY>SlRCEPM*nm1Q(FQn+KqJD0m z$;hI_n+$4LHL5W7ANsZ(>8+CP9#rlW%MjX16NT7QHfnspPU%Lydx08mVq3ACQ824N zlt~C8pAqujD4W}XznsS%bwdx|Rcdu!Q9)r)t2`A6q35yZ-`VxLTAldgU;MdT&Hf{v zjfJJ(l@N=ZOys)XDg9`5MgC9Pq_@Sjk(r>N$9*N_9EA>C!Y7A-%89AyOF1Fdpl5`zfqqF&P{%-rq zQ?)Dj#xFx$44uzQvh$2SkBx_AU54=O??~9}YO8+KRsHWIFr0^!=Kl9MYZGMk_>*@e z2j_neZX9+7M=X)*tI7w?%{4!zXdO8@!eC~Oa)^n?_SwB8=F6MrL!AFG^$bL-|NxQE-bBU@^IxJjivX8?5qVZ$(Ym!ul)X#R66h^q+X40tHghb z$Tgx$*LhiJ{r*;!jx^eXox?HrGxQMk(i>lzZEIv5F8sdiQZnS%G&cq$FD`Hfw-Z&)q z73kPF7|CKIKK3tq);JR|^h$6mM6}z~(=ZQrD#D;a9L-rEat%*l{*mORsDRq$F#(1iA zlA>2HvSe1bJL?W?(jgB!c%{5+!sTC_8)~n9G*Hf`4Br){#%E)(4hkg*W{O$ujN@tE zm_ah!lBTJ;`T)AC^^*Rqp;7v=gwbHE{(KlASv;*MYI%gfl- z8X7CsNx;OytKeY}-sIJg)=Sdqs*#Y9{`9ywG=pktvzgYW2&1RQSJ&|y zM0EDO{t!>gk&|9k+xNTiyi9lX@tAk0eTipJb??OC{iTYNE^l9hA^7xzKg(15#jAB9 zB0jY^>&|+dZ`q~MQ44#ze>-;Pp}~8n^9@@?gz;~&Ks6B-GoaLPSa4A#XLRUs=Le_O zt9-?t6 z=$Ijxl~KALV`;jwAain&i%+B@*`X2Y7zx$)xGxi=4@BN?w*J-pn?52^T|7Eg&=~Z3 z?xXRDtQedtqh`0KZb%l-_LaJ2h0~)2E1|GTHU539MN|m(o2!DYsx{8|Yxr*Qv$t|A znH++Gg3Vz>XV(o=FxNkFx`~X<{ARDJfR{NCKv^1IFD9YXJ=A2aBDp*G;^M76x$k=Vj3%6>!m`snKkIPHeV1h7+Ut`8EHjXx?5dt}opcB$#dV zZ3bKOji$3B|FY_8%6hugc%%K_J8qP%@7->VT@^6%WUo23`)%I*_iXsg$KbJ*FW;ob zU5vAIna1?$f@e@beKeK)v$)p=AzEvB`q~ow=XomCI_ePJ8dwiMFL#&nM&o@BPs+}> zS>5?I%LMA?gV_#2pMxCCvn^RQrh%lBe6c;(>;?Dogq%@iMPXINQl_NKU=?@~WOR zYu2H=g2~A~YuV#h%z(#+!EB)XTc2lNljy1|q1}lV;ek6y1*H73CpG@Tz$p(P1d1z9 zwp+i_H%D%VjTDYxc@9g7`G%B9#qv%NaSN4N7~Ln{*y#z_`Yi_G!QR_|X&oApdf0@eXc2k3sNe=h0_&!!h z=+Jk<-1x-HQcchyc)3oNrQBal#9mHzEql8I{T=hiDSrq3)u`1PnRFlY{X_H%9Ju3o z!FEq-Nsm=Es4O&#RufD@a;ij_UJaf_JTIz`YHBK*XsESdgf}Jg^_z|HUbkec<=Orf zsZ-}XyB%w@d}2`!He6X&IS>Cx%zKRu7Q=00*6XaCxu>Qk7VjLThKF1Cfb*S7c7-ML z9r4btm6eDHN+jLVIl8b~H6bKDMyC7XJ#BPeW8Ri;pfou>DlBt)NKHsY)XuN!;NeT` z(m(Sy+6*pC=H8C@eh7Vm^oY=x6I^XoqP>*PPIml=BnmiAjS@7#ITTy-&uK z*mh(~W$J~iPe0+Ay=$FIiK6l9>6|)JCZY1>lmLy9v3bH!JWMS)Kr1U?rVaY?WItY5v6WCBJ^Z&SiMQWi zk)aw7RXk3ENdj8sO;5aL4mxBi#^U)fu!+3>_DEkP$0fYjcsh;2jJXKW663~=(5d8% zj3iSto#;YQSy|Ker%AK@R5-*am{x>*{c1m2%|{OOu*U-@O<=CIzca{@;#FFpwpU2> z`lj4wmg!=gArrsOhjB{OejWY`%UdI>gav%LxZ+-9xRbm-XDxK5Ne{b>vKbN*acrMa zNTi}nbp!?NGkQJQ^x33x$2R9z$xF}-Gzd~P8cXEEV_wAczGByBYv{@IYu@fDvD z@o}m%fBCVk?~S8P#wo|#d(N_AMhOs(w$L0`$3zI}#5Gr*K+pZk#P0wLAl{p&?g3S` zqeH@sLG>Vd3NlL3%(>Lz7IA8418rxXopT5_P z%a(J@?FQAJLUxw;=_gU=TMk0b$B{@EJbL!E`q3>1)%Ry{5fS%)=p&V0n!LF=J9u6b z0Geq@ElRjQ(p0dqQt?19$3I@6l-71YBr#F$$&<-u6FV#{`43kF%RFZ~hB;m>+?7_# zA=W9th&r4eF$rusnE(tOwv6-qK(fuY3T%l0K(6nuGu9_z6`#b&j(-zR%sxAraHj$HQ@krV* zxnU_N9DawpcNzWmnfv?s&6)!&Hz%9}YHBWCx$;2ooykvMy*GSi8FDKsr?>g3EPi@x zoA!Mzm}$G0T~SGL*s-1-&x@S0k+zJ0V-SMr9TM)) zd9aoL25ui4{eu*z|M!=cWTz$**(*vYAw;x0~zX zjDiHIpW?pPU%}?aSNihGQY3`|=>q8KjIm6=Wwnp@V(}+!Q_Fuv)lC2SgT>0qTCU2* zl6mX<_wT*M24Zxo-`f&oFFu&P%zB(wszCKHqlw+L*~U64WcA|7D=&8OvFo>i4lp z-CBGRL~d%pyU}fb+4#gbbat`hji4)~vB@SSY-nyb&;LYvyz!D zuJJI@=C)R3p*_qWrC8#q)^Ra8`V|3I0|ER-pGscl&1!K4IL`;L-U^WRe(tzqO@U2Z z+148Bf8ErS3DipbZjpTNbh*hG8DGGK8>y$G}eh?cGk;E%0NegOnxxtdu2o3QUYm?a?KWmfF zuJ_X}F_|g^kzI8zG#weCah~G~fSX^#!*STi)q|C@OMwwedf`HF-sG#%dUpYCZU$?9 zO}sa#d&$p?nEPUe8cF}m4_Z@$MGU_}qL>2%+)2rStd&Ccy!ffYVf3s9{P!=jGoD3B zBo4eHHbdg>?WU7mTG*9k4kj0Y<=9tSf%fk9E7Q5}*8BUYh8a4o<;z?sztcxZZXGsJ+hL`F@G>+bGet~yvZhEXZ2aPya&G1^LT)bz3;)(;Qj-q&kfrI?xi zzCKKDypISdTc@TNeGfO>+F+lnsjCz3u8!y8;U*<3%`CHEVp={&m$(#Z#QaK*9&;km z^!d~ip1vj%hwo|2Jxokml6Q~L<9v^HGaDM_(BrVy0$`TS!$v+)M{xWSS0Odwm+d?B zRLM&Z4_yR4&j~bxo&*KzCnO56WV$__)yNirHvlifd-P1@FzBQd$=*l{)lUJYk^2Yp z>6-%@x4@>k=jAs>(~W8MjZM#pOF}3Tk_^eS&+OLaPw}UZJ((nE;3crKvEOO?{FyX{ z!?U%slS)QL#!H&jR5d#{mzA3vf4uGN*;MJ&Cln9sel0FWCBqGranEhLd<&*w(xaFF zoGR=G=2tIy?XB^hpCU#3pAC`VpTT0ShxzLQxtTpnyAUgd$4~u8stz=cRM?RcG_ItM zo%#*( zi^X)^b4EUPzi>!UOr%9fD6MU)(XW9NsRb0E7U*aH7mOHJ{Mn7#PW2!zVITnDVkS&e zKDD>cz)jk%J+h3S+Miu|sT4rQ`drXTn_WseP&p=`(YL)MR>^&`9_Ld#T6wvgZ4nvV z^EW+ngZ*%?CiF#*EnJb){O#K_{}kCwhK$MD6Yt~QBckn^tF5-gz1loHg_sW*h(4{= zGhO%0Azz#Aye=w>0v=TW*aVES!_NF{KUo(FWeA!q!$f#YQ_6KtR=jtT1rS|6HI&QM zbi)I#zS73}WQl*hnUP<~sXmWp_vEP6eOC&Yz#d*+PmNf}7ExVT+*nC8XV&)C=uFW^$czUI>!*U1l<^2Z^+5K20oD5P!JSQMawMaXDRqM_jcANc`XK1MBQ z8Zi22NoogW_bJ-(k#Rk-WTE<-*}pF_Dzho7a31WX;cyq|CIyay8_hifgJM|#N89@Ukhk>)5FJ#>U zpOX2c^32E*Q-79qUbt*Ng+|OaWEjyuSwx$*mmECh-y`qiBV}uAJH5D=?w?!Gj8-@3IR8%|vE2xH<&-YRm&_~%gIgxo* zd3i1=tv7aiJBjI|M*%ItL^E@DvBbohyNDcJvFh9?>L0MILhyY~IQ`e0Nt#|s<*K55 z5PoRrotG*^Grxt=85neC78fJICO;Ey7z$k2#zOgHB_bR2Am>i>cZ9gw z7Y2#Z6;l&f*6l^;!ij=xTUfrQ%Q8ksMH z4-3mjFHnCX(9Mf1nIb!lkCt$FzF!!(&^Jj~k+xUp%&g+-Dgq&ul$Q1xvPq;o$$`QJ zIX$qVLP$zl8syM{py6o)*P)dg5P@0x;l)~Ebf&{QmSEUzdR>idIt%NdG|G?D%gf>5 zXVm=jr|}9oEJ9KclF)WDU~Z^aVt5@c6$A^CSFfKijurVMa}%u#?#ZI zP>jY5Bf>b`Cabs3?3nyWU|7q7iPF&y`2C0#?wpeItR+vCP`>iyH|d8uujcl4tdf!v zYH2UwI+sNjw;!v+(7VDo&SZ8z{l)a!rwsb~NiR)pZF%`k8VU1t@i{p; zJv=-%6z?NxzDHp1zJ zdy!^s(1VADf0Q=;97tjPu*QL4Ms|mlwGB5x0K@-S3k$U{TuhLXqS(@IPG@LjGy_+0 z13^i6QJ%}X7EB#Kb#~4IwM5+WFB>Q)-)eGAFDyjB`3DLotM!PwVfQ{!{G8&(r90;- z*X@z}I)?1KLBdZo)YPrx;{;H)y#XU8OLiuf%)9P;Yeq=v4;5e}s8ZVGGK2P%@E*+; zTp1@4oabGlf6amWhO4E-S^L?8qR?# z(+Z|}#jq6j`W^7hb{GeqzuNX@=k-o%vy69ShAY!Zvb7g=KKjEgyI`v)a=itd)41YP z#KpxQ%Lg$qFi?X|2zh# zpZplKFe0Ijm&_zH(-}b@rG;Odo}iub-Qatxi{H|;JQ7&MYvy?(;kZ)(rWV|AH6IE^ zNonEeLicp0%?Q~9;t~=MKv`c_Q4y@bLUzD4CL1arh&aXOh8=d_suCbizUItvxVvg# zSr5c|ItdqCtykk@365x#7TVwGjEH`COkd+{j=-o~z2E0My^$3-nne{SC>#sRMEm{# z?G4;Z3=PXCBzj8ZfmsHgUFZWZizt4jgw~PYccos`-SLv zi$iNZ+9N4#IQb)Bj$-}VQrLj>HL>Q&#NZ|zV=hSev303 zGc#sjxI}{QI-R5&AzV-ZF|7q`u!Nbf>*?tkk3*1sfSis9OyI_U@Y>;qGx!|gUI+S$d2npF1268XZ(V@JLo=OC^H2R_$7(fbsMG^vMALW0HHcL$M-@%o|qCcNYO!T8Noz(?<}#e1-b|V>;@sRZ(?#` ze{+_LpFgasN(9{W2^}09kaJvCQ{%Ax@ghDJ@(94nA%@G&g7s_EBP6}i0CRcsrzpTS z;@@6f8SCE6b$fnZ^=I3y_^*nO6`YCi@TfYsoxsu|)|lN@ZlKnYPnS7vheBDj z4ZsgFku@-B`TX^(yuCd?7(Tv?iwgyI-6L}&xDt?(K`O7eq52ldWm`L<-g}7@nST_V$zJcjM8XI7huq;JmKheM47oMEJ7TwqR&*Fa{l6 znAH7YDQrS&rm>sqx-}1f<)#ww{Fe&=!4B@x2+GM}pO~D4jQ?Y$p6Udcw4?9M3EWmj z1A$3?JMk)(z{hQJaC>-}ni_?HL(F77Li~x-P>w|BvcG#EpK6T6uS?2TVtK~ zj%G}||9T@Qrg$I(^`9I;M?Yfna5jvHi?<;d)cR_2f~M%EcKmLkgLFs-r`q~F04Iis z$v>kP6D>F>NYHUw4rwT?ujXh+f~O1^F`MCLCnx%sm(-LT;i@s9p_10?LM&Sf z5I-Gk927epEKa_ZVq~}hhB~z1<#n-M0shpQbM$QNG-C3sK$GibQc^)J(KxN`HQRhkku5BNDk3{XK8Uq^|3_iH> zXb6D;C^ao@bE`bQswy5YZ*1B7f}k9BQ!BiC_Xc^3i!waZ#NG}^e+92?QZ8=tc=t8j zZ(}_a6v|qfrV*|36!-)bTmpKJtJnM6seKRcwGCH`9qzh9HBWT7vy5Y4U;xBT9N)w3 z>r;)sW{_2XX}wO;&i@2=JUJb1TOq|WsB-1~{A3{h3Bv92x6@_l!H2jrPb({F2v6J4 z@cCrDJFAow9k}T(jMoT&{wL(+%a_;!b&XE5*t_dfFY=5e$s_8S@`Y{sze5*tIa3)>>SS-34R2HLRUXODHfS$l;<1xl|<{+hg3Zj z4lS$Hx-O(+#syIHJb7{zCMGk#e`n+2ff$NH`|_D4GYd=cc}O1X0Eo$PYfeqgu`DkS z7Yb51ZSvP!7`b@A-_q)%zeq{>Hcu(Kfcs|ZYQ4*qkiof|B-%*kG;0S%pDugt#$vt(fkQJIUX-xmzh}~MtuB7Q!_InRaKtt zr6Gd&`1rEQ$`E8D?XD6a8)@Z-PPRr+5;*+ggZo|t93`;ABBP=TuXkT>9UQy}b;X;j z=J+7f3WG$}T$VWC3gB9bxDz^5+oKhhB)Z%bKEA$WG&J}E0;LwNdB1=EHic~&F-8%% zAENLEK_fB)N}rKe7zUJlkA1piK~}aWMe1t&6#D3e{@M%gH1@)5PkkD|Qy;P(8FD5w zEtJ*OJ369h%YBdBlybB&F)^oM$-=X;9;S|f`z))3#G#g)BjeYvJc4Es7vGoPd9zMD zdX zx3Rkwi<{v_h@SxYi$nQXddny$zEX0GmBVI-ZUPA>W)&M`_da-#$-$P_h*1p}G(w{x za{W47SZw@34K|it*sMlfaqX-IekeM)|FnQSm+Zm?4A_AnZe$V{eLgPK2LZQ4D5|FrK!s(JE#aG%re+2n z38WD!$p1jK4>jb!<>Yh)sL@*5Pe^id+PN;jy1}1tgJ0mL@|R%QP<-0{kM$SHBQfXZ zup!CGhg4N)8`W|3)o!KNEcf3G>`sl-@L6B7##2!}^U+Hv;D+m}>ZsZ#>N$CzJ&V)K zN7XjasF)9^_ep!X1Sck52C0IXwKcX-#hRedawOQgx50O|1Vuz(w_}08*%UOC`b$fU z?Smh{2MJW3>du>YG*Cn& zQz9WsrA+^|b?$xdd+&Sy@6-D{r+Yg2{l4GNXYaMwUVH5W2iUl{^gsz3ZQ2z7Tlk+O z&SB;kGSZ0;G8u2H%P#;G%Gt#bWo%N!>EeG~(r#z!Da%8f`A2_0Kjk_(XDbl)XmoxuYan&8ybRANvxt}v_clV9rOT116 zLo+UA-`v7De6=KUQAr$U)##dZzQ1Xc*kYbr$`>zPTA-?$_rld5hVlV-?=B+GPX&`TliWS15qICPs?+Uc$ zdj-Jd-D$6b!wkfIk_F4i$XK!OK0o>R*)v_d)U9aoeYUD<}R3YnUf#mRsQYdA&IEx)lhzO?%MT!c{Cu1 z3F;zjM;yi+x`d|YeDH`q6W<$S);w_E51&7HNv|flp=9zz?$iwWuuHch!*rt|uAb0Ln0T?p#7AuNL)jZjtnM)%%#`+O*xPY+iJ5q1LTA z$x6DRYBT$dFG^1BP@cy+LLX=WHdlT6w8%SD4bMSBN@^WH-*|WQP9Oy)bWms?5I^4s zJw0#HD6e259qhGMyZKp^l`w$JU-%b3}(MBK@gmFLTJ z-&0rF#PHzyrJ?zE0#Br?EV*TS*PKE2)u}Z?XU|>O%2E^e@yeLL=J-U{n; zFc)0EVM7`0VR=MELWv2$*sH>hlfQO1y?wjaOB1h#=;F*hCIZ}I8h&H5pSG{H*?nFo8#}n&yc-(Gw@mN}Yufmrb`WSPtGs|k~=G%|vtIukX{Sw<$-5Lvlb$&P_OY{oU72~z+o1jDXVu<44eZ~lGp4@pZD^e8)AU^cGG(5aSfyh6 z^LNF*^I_u-WMOX3m+w7r2JgT{#~&=wQPp*zAhYDD(+w>dtSEyXK3sWS(^tIbWxRod zgCy48-!PS{g=?Q0qt>cbt5RRIUxpe2mVn2nCVoPCd-`LuJL(_qLeI|s zMXa^&hk?J@x*z?aWu;7Gri+W)`o>&eo(;e0^HJpBXpNv9+={qfvIK9jT6?Z#u~sI=65spx2P0i&v)

oRgaSdqHL!lLZW8w-BEk&%%PLDRR$W%cAuTZeE>Ecn>< z`AzC5)@-;#T25#ej+%g`J7U^K&>sp>JB^JZ%z#xdUU1*~D*2<><<#rs4q?^iIY2p8 zQ{ykE+OZAFAJ466cc{FQ(rox5t@iBYfi1ItVxpww_U-oAb3lX@HUr-IKKBDC^&JjW zkcT8MS#)WGqmz?MnJ>K}kXbNnXF~+d&C9cgRkZM`1M{jP#KKNa{N7u{nr9P%cG&`4 zHz3R2)`C@nN;}TNb8i+5RX&fszKxHQh*|9Z<)R$0raT*NeCxAwS8>08|9)s_s05=I zb$2(*X4WjEo)J)ziGfg6Ja__ns`v_$GBT`y=WOik+HP*}>Rzmy0?AfLb0jMA% z8A%F>n({FuP@+rc3??s$seI5uK&Q9{3R&;MKK^K z{Nu+Dz?n)sL;JmZ7kM91`-0O&>_5V>0!dwNvJ_8Es_U#0(^4Gg;A1(JKHhZ})|11NNpZ!^MwZPBsA(@$E` zWh(+z+<(G}RquV6uz!oEU?mdEtIZ&pEFU`a!b4~X8%X)nizoA&7G_za1|Sgy);q$} z;3$B1i0y?Jih$c2N}k;p_#Wd`m;7w=jhwscK*{sxTo`V{ejCXe(7pCSX_xe7I}(k zW+x_m3)L|mJwbY{y75^W;Xer?0*B)Kgn70j|M?DF)@)xRP+qiW#UiH zm?ji%dZ!l_&co~@H`Y{y!D;0<90tKh$29H!bWi>8U_0JjNJK;x;2YdgxvpHfVh8t| zYv*pn#NdzMjD9BR4x-9J%=Nor19?SNm5Yua?3_*IFJ)w9H3UxKDYkcX)ZJ#(KrjJQ zV~0h{A)%q#U)~pG`V2cPw#^qnL3-eUnwli{Q;dr2H9+}_pc*pJlCw_!lB9$L175b; zbSm1Uv)Bao2crcIULM$X5@Mclk8 zZIkQ9ID7uuz`Q(F{fK#Y^XC3S+O*rhzxAW?zf`u+10YoWK|{>*=g&91^-3lEu2koZ z#Sr1wVE(cbjz)ym(KKF$m2Qi7KAHzhgXt1hqo|5hPm_3uWyMny2Wcozc!kp}*esq! zE)BC4R89oBFohKW8Ca=_Hi`s}DNH};(SD&1Y-m{fOa`03g2C9MF}VxR#_RVN;lJp7 zo+ulZ9eDEcWi>$aFybKODJ@slo=`(LS$6Qf29Wz1TXB5#Pa#;vve+hxVnHT%q%SS!=05x z$z^3ngaq72#C#qd9UVM0Hx&KPgEH=W-TaUuI2T2AnxjT%ZeN^XRw;sy}06V~XBL zwHV|+v!m!}=rkHW&kAu+BhXzYRA;Wu57}WcPB;V$&Q4)#afq!bLFNQ_n@GyZA#AXZ zeuy#|$|;@*FO?IEx_B`Vt<1z5H!!J@ZlI;**R=3ck>=zm6JV{rr{_w{xSwswIavPc z6(3l-fSjCFNE@f7p|}jL^x5e%*e47gA{by$jj;s5Txyu}w5!{wx(Piew zv~_p4NUmKgju=@UA*OC>Ys-bHYMjQ>>gt*3H1_kclhRYt#Yj(&1x`WXfI1w2zkx_s zxKEjmPxw3s-)-;z+Ps7y`A9WN2dZ1anU7;Jkq*`_8^5~|61U^%Q8gT)^Y~_PLF1<< zj!ArJ@9ko!&HwLiom%5Iv~_gFIIH8E_5WA4S^xU52ud&n<&f!%oRvsnaP?|oG~5v| z{T@7c(6rEu303~^3-vE{IFbZRzzpNmOL}h~(6_L->?Bx<%@v6^Z!%N<{qf_C#?g`9 z1w<=tq0Sz@@lG5)ylqh4XTpS(B$3&%Oy%+O=WyE;Udn)41odJ-N{Rx4u015T9t~VI zXr`eb$O}w__g4NVX_JNx*sVe_QoLMyJMP$T09-D-czsJtVemgC1^aWB(X;c6w^6J{ zwkEjw?3ywsy?XG3m5N~xjc%DQKmf#BBxVxcU~5Lh)lC_Ri8EAG zR1iha%1F~*DDi>7CBtAV85Q*~@r-Q?cWnSme;lN5v2?+@;{M4(krya(c zUqbCzNhiK`d}tlY&9DN=BUx&i zFAo`6hejBTVBLOw-Ay7dM6o~kX6cF*?jV#N|-QPK4qP|TRKr1p_D*f6VTu93JQ9) zsw!H9;BA9Jc{X(eT9~Pq;(0;^N?IYTKG!ocnuQY)f@+Q#OFmi+07CYlye1$B5by=t zjc34s=QQ9V-c{DQ-#x!jua>`l%?~0SUE9c}-Ck@kYQ>LjShe}V{rhDw$Y@6f0r(jC z+-TCjJT#rwL;t@@-ASW)5<|p?DKYV8cnfmgd&R^li{#5f zh=)xc9I&w!X8qhw)d5nmYfE-`hv^zP$EUEfS3y^R7=l6x0SAB*%^{z)2 z>3c1#4>eu9#`fZypth6a=^}fRVom3C>5@f`%ihI*wrY$M^!#$a`{?N}-+*V0`VH%= z9$GCSh66B;J_O985cnLb`!2&1Zm347m`%?gEt6A5GV72?O{G`k>7($?OycA9@?K2M zk3{tv=ao81b!*K{P;4S z!l0tp?8dDbsKyMBJ3SD=1+RpZsvTnsP~DsrQ@7~1tS^NfS_c|aM9hg}58*w_%o)(0 z3aSfE=y`d0fzdXMYGuaiK>LFSBk`6w_55+yX{1qoI&*132{H;sj|zSQQMf!1Ay{VE zF^*46R7TLC`M{^|M+s?^SsyG4l8y73fh6tb;lZaa*s6`gtPI2d_QAmjRNA|+Hp9W7 z?+0=1hrjFq^WXn2k6%?))ym_>sefnzptUIn=vNY8M;mNQ{}o-`Sl%$=8j}Z*8Hibc zF6!pc6=)Q&E`$N2Dy!)63J6GRaEmNw#wnDPEj|PXt4#ZHR**~UlIn;srBe?q-0|_F zjJJl%E{ev9X@kvAmVlndc1hNc&#sm~=@XkrKdRzZoih*Q-gr_kA$88W78Zi_F3QxD9vSfjmtBSd3#^DLe|%mlNQ@;fN)G3r z5l_+xxSwLb^umP;K;a?ctpnvE?mO-d4Qpl>K?QYq2$w>0MpP{oWg(G~Lh5{3QHY+@ zJ|Z%ZcwN*MKQg@~M8ox)^oEetbdi9eks{!OBGxEQLj)9;L$$PI-z-bi&$_xfRn99V zp+Tp=9<`HuU;QHLkP@8Tw26zMrX>iVBP^Uj!ICi^rr|$i-irIgLr{DHn+^RQ!Tpi z^3H9z#Wrh}00%R2Y#0H3F$&$fCBt`KR6DP9!2gP>v;?2DHs|0@&=Qg=DuO_X4%LV; zeS*M7OTpCvS)=2_mHRoZpdvzd;F+t6)Pe8{X@mY;O1J$L1_u}9DHIgouB})No zOYN3QU`bY!-ck*X>xcMJVOAwh!_)0sx6Yx)5~id(@#)IGp&6I-=#e-B{S^XJpoZ;h zZ)gjzc9TGw(KT+HG?L*z`Kw##o^633R#*7#NUw%k37yygY_JpH2-4{fspnoT2lb@w z6BHlxByf@I-@NHOZy;VuDoH9BlIoT?m`U)Ojj02j#raMi0kb>JXA{ASP9{B5PrLsj2Ix$xpFgWY@}3{xcOfS5;6Vaitl4Wuc%T}o zh*+;HEhtE|lGjWqrYj-i4eG+WY4j-O(NWFMS7Y!iC{TwE%MZ6q0>+g-gI~VPzG@`% zbycq=av|YPqU52FLpHD2Y_cW@1*HR3J$s)3F3 z=W4p~^ov9E0LccV6cjj#nL!8**j;nEqhZ_5-SHe*cTvlA1_|vbLDP=Na{|5Bb6;&j z8X;*RzMo5$D1M>s=H}*B0w3mJgf!|T;InmY7{w8_WvGtNk2`yI7ExL_iT=<{0NYYe z6tzrd5(Ux?cz5U&sk}cqw%_R5N_K2I_fJVlY06AyYR>mk=cl}WP#kqpn$Grp@@Rb{HV4U6`d)4XNMs=O0RA*R%GHZ2eUVNi zeFGwtq@XB&gX#DO?GL;j+6XNzGeyRQ~?ydu_3pH0kSH+$Dz4uwn zs@Wjv91N0FDiCH8)i!A zhlbh((GYP!*rxGJAYq7T7 zI5sx6X}Fi$4zaT?HpwD|7Ycn`sqwM4Daz`y*G&sZY=z4*EqsUAsua^OPxXqE*~9gj z-~x!SIgWl0mDzY#C~J8H1yAE~;yez$jrO4{ zstkPo$fonjQA=ZaO%oTy5)!$HLXmV%7! zSk2ArweZiuG=$&y`RM4G;rg#T?cWZYC`MENoQ;jm*@HqTG&UZ2HXjbY%KNvZ4!DR7 zAAIOQ=r}tkHw`B7P9WdwTF+PVblLP!0k!$Vl92TmkW0}1TeP398iiL)T zQrT#cW<#BGeCGTFs)9iqEWK((u3&JzTi`9-cLMCC*;hTGNixN#t<`khU0b?V&WVpK^yOF?XM5~=mO#gt0jP^ z*oE^Wr=YM7O-`&!k@S{!SvQT5OmCSdfM<-0ixXCM5da6X3>t%o0UonG^mQ;*;kZ;7 zP4+PKGL_X4(;#P(xc>R$$J5wm$QE2&tV!n*DF6d)@j%b|({yhlUH%u&4O*PemI;aGQkgBK$ zauL2SnaSZI;reK4u(SAM@XX-Ei8b_tZJFmIWkK2>f*03oL3Kz-aw@cMIr*=5V%BdK zD-**Ftd<-4{(XOT%T6sV1}yDWgrfe;_@?||FllxZzrR!816YSDe%$A0*H!t^oI!vz zK0O^E&3Zl6T;CUpz*CSHg<%!DRO>WCZ`Q{w9F=WQL_n0g00hl+;+NzjKRQT8p@=J` zo*Vj+gKV2trJ|t0zU`EZs2f(Pr;YCfL`MsuvjS=aR5%&di9w!|Y~3-+Z(A@FgLwmV zB0{%6a4Ll@Y`-&sqN;!5#0sGL^OrBPg7g5^61orLa13mex3-FbFRVVdU>#uPVbHi@ zg!K{(hw#VGJ#i$&e1;j1BH5r&>>V#LniEB7~NaiYWNgZ(nYWt>VG%S?RPiEuY`6;ia(!r4dr z!4$({2I5DUF=JN(W7vuaeMv$)bvu6|4|h}w?F@uM4}CA%x|b=%n}wgwO`SDj%}52c za3Krc4?j?l4l*e|co1qo4wnBZ6{UbX&{YvuaTT5>ZqdF-R1EJjaWsR(7R%ct@KVq; zA$0+gMld>H?t_d7EPG)WNEH`|Cvr@7z-}3vharO@;6z{>KuHVPq$57-04(2yF%yBG zTSoT;{~r2+4$x-?XeW^J1?f|C=QAWTN4$P|lUZYMcX5 z3(2$MtiBX*kyO9r=(m@eUEuQ2!O;UR0=WP$@(Q}I<)x+C{kep8II81&U*bO?DLi-z zdi$tL^Z;csWYf{tCr@`eQRO>)DD4nT0WnKKwdV=Tx4QejzvO`h9r(_3)CIFvgzM8! z#Gq3mqejY{=Bx0FL z0o0J_ZOh|f>Z}wE&j`cKt^)fa5nV%E3n+Y?;$4upT)zU<&xjBPzS4Riej-|nbSH=` zBsBG{H6h_jG8(Kam zz$^=g>ofRWx-ph!1KD>tjbTM9=Xokb!8{yfq-??6!3a#EZ)YZcwZz?*r3I~Ut zC3;WDoW0rDL&XO{5!U*afb%*FAx1!0Y@HagAVZeb5&;glF_$?mXIF5x_U0S;_Kja1 zdNZ>-VC(ZmusNqG*If!Up!@i!`#);`h=|iP*gFi&aNr5}hT)&ZQ)0M{WqaaJoW}2w zZSoiWN4BZvWcyQF`I$;%#RVe-j==rw(^!Yv`uMS4CkXB&zChQou+pJ;U)uw8L=IRC z9Uj;R=nop4x0ov{3#9=SF(6oyQ&P$y^P%beMVoJzpmM=U`$Mb^UOau8l@{oL-#ESD zmJYPNPA}uad*XfL6dYc0O+T}bpy_VjzTJ6g+m2H}0hB92k(l6a@9%8ZYy-(ch!n>F zxYyPOgaAk@=1Ut`fENKnu`P)UVO$?(;-+%K0s9o?oNV4zRGzBCU45kVcFAZj)W6+U%{MT~&XT()t7$ydQ+T+KMW5Va) z=-3!x$Fh!|o|))HragYO=|gw7Js4*qykEp?M*hbYUom~fvuV15LjS*0m2Ae>Zp9F7 zk~ml0cTxkCAaSd1vdVq00JbQHwF7MH5S~N&fnqTXKr$5f2n7oHe|$EOaQ0$(nO8{_ay*>k)U)Rw}n(BzWzi~ zLh!jAz$d{NjUtT>6yT^N0326M6BjNDpi3-KU8B(`eeZ(?s^m0rgPb5Lt5a79&myKR z18fC6j(Bz+A7OTXXjxJng=RdpE5$%cvw@-12Np&bg4#-0V-YGAnyd$Y8mFCfTl52Q zL`oVPw}GENg=)n9{7OjX5Wfti`7qjNDaSVt7`???*Rx>y;O;j_Z%jg)7=&7_^UCKD z=obmkVr2-|^CiI>8=DrOCC!I+bx9Tez;KSde7zCyIgSHqqtJ(PfaU`{YBjo5O>&9c zr|2<`Z2Jea^c`OoA-?9!zf&|`4isoy-XaqZqXHx1*)rQzWXFl`TZydQ#hVoa-DTmA z=6zIy<0THg-4kC5g#^A8;bj_e!kINqX`m4loHF};`@%3!Z!cSl+>}l8@-=5dLunY} zVBb3gtXU$dpw zLcs909zhLHSbLMK6fy?_)%dQ!p|QHC{1HZ&@PJ7qh{n=s$OeH210_o_K4+NBSX=9dBMf1Bab;OCk~C+E;ACF!mzP1li+?A@0N4kkg<}tPY&EX%-;^6QvtGa6 z-0!2iX*$~-sQ&*jmu5nx6asDo$b#{m?sf{VJ-*s}^JdtJ$ayc8tfTu0I#nMf#@f+# zCcuagu~5Ssb9%{G9-Bu>5I`G>EwFJ$;MWKLZ)Q_ zuh-W9ouCxW(e)fq1QU)nOx0U98b;#$ynSlqK@yk))! z0K;(_V6aW*rET<~+cK|3|ASU-uuNEdeR>HPn zpT%-=e%eJ_*bf5+At>=6iSnvVG6`W zqB(?P=qlkct3Zq@&aQG4{v`3hTjUWDuCF~Iii#W(AyPyT0_Ei`wPnExeZ5?G7C@X9 zaC}M+VnB!QWRLFT23q%3*KmWL@l3V~{jGBVgJU-es3F30{YnUxsjJV%cL!>V$8?{W^#N2vJ|cS%L~G24@&ZkcL)18s zj(K0wF^7WmW+2LyaHOCHZj0Y9ADk$&*|b)0*TuNql-{(riC|4}_@Q{NB~R*mt&+p}o- z%tOzDZt}GgJHW*V?L5v)^(S%izEfjufF!|e>qDC@pk#o|gF4G-+S;MmO8s$FW#!5n zfBkhPjO8^~1KJDVaps(1j-01D12#=)QW9MnC2OLOa%8M0G=CN4Ixl5B1;~__2u|1* z`tX9BEz3g*O8nAy376TZ1V*t~hGG^O+Edd58-2HHU@{dcn;!TQdn$ReWLB);N0g~R zfr4R_ArNZ2AehD6lc2h&7ZVP1Vj4!Pj>ti;gR0Sb{CLlcSf7p{Ar#c%SROVT_;uj= zx#UB2E?GXf?j$d22QN&u2T1MO&O9Q=5%B_MYmR5cZsyCnhq1w6ZZSS@J`Kp_LB{?e zP39jT(jGhthEwbs>IT&4*5gK!=iA{Wp$!d_`klnVoBu;4W@4T1$Uut_ATlbzAfl0h zY?GO+!H}TLA@+(48#Z}AP{YrlK}3*L_jVMCLSQ1WY>`>ZihuHZu-q`jErI{qqvtQI zkq<#@oW_!nI8LS7C5z-H|sCtFf5g9>P0ewu1`L5{JKcc)?FY?J# z%_i3^;fXuQIj4dN)V^6(LyZ7%fHvog*}b+=?k}Di(*)Xp|5YrtR*BHZBsglLFtNzq z+oUZ4xtROI`!~{#o0r%A`xl}RT{mpt7%cj^W0?cW;E=S~)&CcnnjF@gxoakxOOg*c zPgS*UM#ucx;z>zJ)%Q2ATx|8w@GP3Q`#(ZiqD0I#LkU7t06;ifJT_w3q1FQK*59&4 z074r8S4E30iN-xRwp3$-aU=qa5E&0T> zjz)DJnKc4ZAozCBWC#>K)2(f>XW${JnEd_wC}z?yfiQ>4t0#_S@CKhxsh=dXfbC2u z-!i-ST9=WX8D5f^g~jRm`g)lzL4c$(bm8n(Vn}$Wdgx=wm5XZXf68!_>$rs+D8uoA z1-Kyw1)EV9TS+-GqOZBE82!Xmix{3ge?I4oDaj`b2J<<=$?UTj?dj~4{F)=-BL5#z z4k8Bfq=FC)2_%0ZMD{cga=82(#u`m+Y@X@3f+V~Nkt@kE(VYSEB7sN1{wXQ=u7DW^}X)ySqQ$)R^rNXnw{tr93tXj>^B_~mxhToivQ-Ajy z`>rGy*6V6-iBs&CL4z$&QoH5=@!j@gkYnp+;ba^K^;P@%`=Wd89HK?dm1oHhnXYhOyO6IOfm37~a}@&~;dyafM@DRYRf%++P2K-1rcY6{Dyr66iq<#iIM7`x0O zuv?WX07}@n^r-R<2S@QKEAM?J4L!z#CkIaXe(dWz19bb?@xHf_zHYrY7AP*o{0Rtz z^>Tq0asob`p|W;Mg~|WAmYf*P-#-g77NQC;bf{?E5V_e4*zq+yUeSbE3LI6?j#W8gf{_4dFVVo| zUo^)|3Z*qjFcLuP>>T|Uz`^$f9Vp5ND@9`NFV23AL+ASTJ`0pg4wX`T&!P0j%=paN zvuC5X;(*Vm({T^s0BumrtuUgAcRtE|8^)Xi{vKEuMF|8*0DWW_+HP8Md>_i3b!}(R z%N$&Z1{+FfOc8UFo&xv4ZSb8c&A`EhidG-rl!GaR6V z9R+-X06O?i+))m&>;MMnUzx=m0riMs@*kfED;^-4P3Fl0LJngqX9eb1mOEw5g`rYr~w ztQ1mEbXtgnEh{Udx8{Cdke9dB9WpeSt@Z>pF271bSzS!Agxn38#6}K3bhQ3Q^HN@T z#yeY-E6X*rG&mH3(PVqQG)cB!B ziJqZ;YbY+GH}AudBS(FF>_&R)2#;fU^bf-2t4k${-OPF#DV7!Ethb}PR;Fl9E<`{l zFl=kP*&7+;ThF^6rv&L3-b59frv6bmf?mOQrSUjY4q*(F-P*cE{mNy-d03TLiY(gD z7kCU|AH;}zZCFS$|FW3pKHZnL(M>2ruK@iv9F4u+?@@+81?c}TN)FA*;n^BPB}|ex zWnBIO>kf$uBo?W0had<*genxBGd_+L%FdZfWTwq8gMbe)9B3TqscYMYYm2}1 zRi~~}sIGsc=Ak1{kf<2}6Y4)>k^59ay2WJ0l~tQjF`8nQ?8bS2687Wli#+gQK#(i2A=C#Tz{|47(UAUq*pLjNof+X|b^ zLVK&GIdui#G?dHAes0Vh~QWwuCfx0Z7Mvn!bm1+XcF*!DO7+U2LGif!zUm|3Pgf3PyiJl zbe|*0a^a}#b)T7v|3Xq$HaKcuNb+Xvi<3Zwm0qx`0Cx>#(PJ^Q&_O@Mx_6*qmIyLi zfy1QthCbyM#Bdi)>R+xOLi@jj$aqsZdbVup>=B~MXQG@?MJN^c3`>&f%7eGFFmHuF zD2$pCjhi~JSa1*&I#3)if;sqGON@T}5SMQ@W*Z=hu0&jX+heR-zaD}i2eb-M=CFv4 zg^_FqPb+8h^27-3^u}G#>Y}pN4eQF*+SPFnPYb7vYtNn@Z)3yy+}Tvd6N!C< z*vr9}C9wsB8JV=e0(%=e%A_Hh7BlRQ`u1-z6+=GDy!y5f0MgK~xjCZS2?bgyz_?X^ zE;jViAOzc8JTD6>dBA;F<6K@da=Tp9O$}_BP1gcV*8XC~rG-dIm=uj$SV)+mCpM6b)`o^JgjlG5WI!0w{xfHq%k?)?L(!{KgRXZ$H7e=VLkD3*5M z!N%C$g_yjDiyN?1d3E(2F@C;KDGaC)L3DQuI3hv=|5O#o^vgV6Z;M{H`srCB{x}*8 zSZ6VpYNfF2s2VX-NOkmdrve4Ww7M}e(g2JFtQ)PyuMz`*ZqqvO+32z1!n}QP7c_ze zwGko#2Dn~E8A?NOfTmC-G^cOZ-afD!iWZuGIbgXu1s4GSL}H79i)WL)VCV6-hYHPJ zgM0hC2`6-h8D&+o%+x(lBH&=Mo_vw)yG^&Z)%wVhyo|24tVl3+41T~tH=u(pi}1bN zI)$)18#KrH*Zf(j&^C}z5tvy}6!nDwF_}~}GL)blo#{PbbSv?6iElA#hb5Y|{S&aoBNa&?cy&+clAaEMEP(JRrJ>;$=J%Ez`e;O>_z)YQYV3Uj zjS(3OV5sEn9#ZQPiqnyoOl;YM{td=8FsoxR^(Y%>4`+?i1ct|O3nINYtgp{1!YQ!4 z@Aza>ES?d`7tw2u=G<$Vv-wY(q+iAdd+*5%hLx3r#UE~a6Ey{G8dKxnKuSr*0W+y= zKr2eD4pjFUXv9mJn?*tMKNmc-uy59X=lr1#0xeXl#!tTiQK|1c`nOryA7n~!} z|G>G3-j91%irNd661#@K2{=LUw;D!FJgqsIjwL<`)leS66%YD227F&iT!i`VCe%1sRQNYsq*Dvmi**-M;WYaUvSSKK7Pz@W>*5Q04|~vA$%ValJ9eXL>fVXCY$XG7btVg(()~v!&^6S1XBdV zxZ2sd>uzk357L!91r1nitQdyaf-w9_EFZdTY@8QDnjfP@ON;*O(EOBBQVOk?X)r1HMp07j2mvh-#}QsQAP1ml@jg zgaDzRfr6ESAX}Na-dq#f1`rzalIk2lwZ7A1ao+}^;iMteRiIz z`G*f+w)gmswX_YP1E~B-sIM+*CgLQ{@NC==JMdpQwsJc4Tb;A4Ag!gT0itaH(HMes z7y$wA-LQ~6U-IUSpsY#UheD&i478nbTfi0rnqmNm5h7s{gVMK}#uA_BPNtz4nS~js zptr76YX*ZRy*T#=PpcYuBeO=tdDx3c^^e~9lgyzbNq`!I0hQz8{vUge%;M%gos*OE z_)}=b1CSo5!SQ1f8umkrJ#Q(91X4W%ZXWCj)D>$(?;VD_?`}T$hJOMh5D$PE(yMQL zeKovg*e*s#x4CUyi$YpJK)~(Jg1#+e34kZhmOh7rg?c{3N)(zx4Q-EV0^j5Q(q*PH zQH-NW5)Sw|#I)!~iiaN?%%jP>XSuqq{sc00TEKI_P!0J?BI?Ptk!2gC`Nq-E)Z4P< zV#wZ5HOvaQkSpLH=^}Y+|KTqE{xqR6;N72J&^Zs18w6FRTA%pzE%KRg=FpfJc|Gu5 z8BCHGjP^*x`|$;P{cfC7EKf+K9sqT1C_Un?f%bN}FMJNi)JUcrFn$P&u|uz1f%D%b zz)MusXo$RnQlseT_cCa%VA(7~=a=YC)rDr&P&ZQF={Qb2(hY(Iq?%>NSzu>LcMq~2 zp(>pawfktfjiWx%Id6wr5eJJHQK&C<_4OrJu6$UTSwNB!b?<&ZToj!Il9B>H1Y;-B znW0S~YD)xJ%nuPY_<;i)C4376U#6s|8`#>mZkjMgZ6bH+sh}oi0|Rstcy_3(sd>C& zwcQ3C6Cqa6@zi4}>p}^U(D)frLed!Y|5!!gW9H0V;83Y@R9`#6;`?Y2uX>d_MBg0h zT00`~L1JTVAN+(75-FSty}i93J%1Qmjy;;0cBL~6r7t)sytG90T)d-D7_Ae~ds2NG zsA%X2-*CTg4WbiDEnQsoK1df{ ze&QHA`Ti&jCde!bck5tZTjUn`O7wBSdp-0vG^kg3=ClH{wbVVoF+8;!@3KMCj%6HdTT6OyYFA@K79MK4}IS2Dq2fR{CoSb?+YXFNfhU0utDI@Jh94+FJIp|DYQCrId5A_vDa_)2Ha$9_j^75Y zZGik|KG^QUE)ih#y4qTX8{hYt0~w?o+PK6j|Ks?PxKK1wImHT2{f|f*)44RzMAK#< z|8amjsmeeP9}x{>R51@DQEsAIA|=EV+4zT6$8@NNmGL0clfh!kmK(Qkvx4+bzI#_2 zqZRTB3NeM-uxs0B@?J`c{)r+%wOB!`{js&5oL62m-MW?Qfk<+4GVj=DWmNV|K{~9~ z)^kUC?H3C4$q871b`3U?L93V3uPRXtCJyLtm&4`-|L5lEDX^mjzpbm|#c$zL+Vg@t zXMK8OPIGc0KR&7AjzYqWU6fj(_oqMyR z=7@2!vhPnkEZ?UjC-bCj26Ml4>+YqZTqpp*UP2L7`K7T?wD-GyeZ8~Zn4LlPWa^c>iSs5w5#`T(w@8U>UVnbsg7-#)nXzZmkT654&6FhtOEY&YPT?qnV z%ZHol>Bb{>(Oe7G*rM6E02o>c)HUCEiE?H{5p5K$v?oCVE@!{al;40&HRmQ6!8q`EI~11i zaMjG2){h;{(Vj1F&Nql+|7~oXcFvID)+5E5poXU3^ zTu5X}I!fHZa+sEwZre5!OvhP~6|716;p9_-Zqj>Koy&;3col0WM|Z)pInymJq*ra^ zXwlM~(?4YkH5a)5-QD69)Np z@CZPe(8mvFlz&z%udY}w)M!4}Zch)P8d=#@j~zYi-={)NhQom>OirWt2hTBaMca5# z`G7_!J_s&h$_U)AB$%53R<1G#wXMcgVHpIS=e?c9JDQSDg;;@`&jgQbQ*<<|k|YU; zLAgh>n75@1cJwuv+Z0(v^z~UeXK|%Y8qb`m+TVXO<3Uu(dvP~!6-@qzh_5lq$VOJh z$bi;e<_{kDH+UNxc^^e>?%FqVW_z>F@nd6E-=>UY_G$cds&8QYp88IG{78~g&F8=5 zOPrZqTo{TbBiqb&wvF1P9~^(?eDTI#8(`bX?&2bye0Nz=e)HL{U*D*o5#SK%AJ`9J zAS@GB<>nt9KbgxB{KwrUun{_B5buxjl-^a6J3Y{VKg7Gkgit2P7wE47 zTDlvrKf!s3mxsp>E_hUQ_+SFXw?J@__a3yC$aNAUMM(3e7(zugCopGD0ub=Rg+Zu@ zX&6>sAq6HKEuCL7?_VgZGh;O{STs)zFNA-d7}vQc&)htjZ5g;uY!eiGB+iBOn`|QJF~DQ^<45la zB~MN?l$ODK7T|5@wrnX=3H({k0xv$?&J7*L)I{-AFr^;&2@$Ugl-hJYB$=zep#g6@ zg=FTC72&V2cCMb&)z=_-@$zLXEBTtww08Mbm>PJjR@-2|XJ*setGME)qoN+IKlbbe zx2c?Hi~E~5T9M*@sr$Q*d3%TdRBKf18}Dgsygwch16!zv^&64mY#vs5vrbpV?{j8&Xtk)X&oTMl#l-u3^y+U{gUpIp7&-A}4-G`%Yr*)$d zDy-%yC(Xx>j`&iTghLwasV@7HlC&TkG_a!If zE>H5-oG8sIuJ)L3_i5wa{(WXQZtMFuTd}+BJN4B=%4OdsXJ_XVWpHVlLvppwPG%vY zZMnI*QzvsD9);ZK>lfEVmD`PdM@R4cmOuJ)pQFgrr}76@FL>0w@5B57>6-5^ zUuhm6Xu5ohYxmxtmcK8g@6L|3QYyIN7MG39b>Cv+qYyk~HGEF$R+a5P%#HjC zDug<>85nCtUBww?Vhy}VOgnKHCr_RnxN5tIrX)mh4iU={#}GG4GLWj&;@(=c_5mJM8{^4tQZv^4$P ze9`tkj*g6+gRVBKSFco&7L`4x@~F)!DWM?c?ys)odlg^!P3A`SxwQ8+?3?}eOEB}T zTQV0fDIa8(zw`!*x>J#nN`-|-CnkGYcJACsUCqWuA#?!1BnWi0WEX){A?FLsRN+?8 zs3derMa3iPP`L;BYu0ojIgp3x4fk7DK{}JT6|-3oA7fNTE{EY!0Hh^u-B0JhP#7BM zFV}ja-MgRe{?I)KUd4NRQnIoH4jl0CIl7^}!ycs)@8F0iKC0!;>FQ5 z?VYcDVnIuu$~mk=nXJ0nK={ko;o(y#y>SC`zxvJutX+V<(fH{e%(H-gB%4YfAl%Wm z$PhKI_wkU0f=1EoYP5wC6;Dm%#4?Q?3_SoR6fscqWUB&I zFr8|ep-|eXW&C2dfWSqqJNwjRD_ddKt z*?+HY&h|8IU#yCq+tV&6I73g*TtKMC%u-I<>^x)h)XVorf(^Dhag9eWXJ-?3Nxplo zb_TnIm<^krSw3gtK3mSQ)RfPOpL^1pTAICmXT{6@Lko}^pPcb#H}4jnbBcP47CaQt zS+8Trs1wY2DTuv~iC~OZF+xeqpVa?4xR4%WJb!H(cA>dd-8~ zH`S^kPERRUDC(|5`&}#J>waZAHGGEl37XXrBDo%wE*T(3`9z!jBg9%>r`fKC@Ee6H zpNPnMU0r548b5S>YhIp`auwK$P&VN-zzrH#{`G5_(=%aMX6TD%&qT$>ZrbtQK4RVzDa|Ri z%E~ui{Tg@9H?+JGVH~?9rr|EXXFpp)LhWs?-J!m76ht^)RNI-Je){RP+t-^e$BbjK z=X3Q@frxqR(wc4YWjZIevj{*e4jP2|C$VaJb$N$o#i}2^jb@zZr&mF^8Z`d}%P3vY zjoZ7=!aO~C;zX-gBk%Flk&T!?eEMe9!S~m3Dwo3}Zu~C=>qTrc5GEWUu%ULTRhT3j z*EQ(UF28k!9RxCsiN8 zZRwYD-Wtbaw9Q-H`&oQh83PArM+G~Reo_M$HgHL)dAV$C$sYJrzv#@+P{@Yt80ncD zk4mUD2X1R1`x8rP3|5NBz&qYmBJ0KtKM2h6gFVJad9hBU@<~+pM(I_1`LxDLUA}U+zn)c=dFcZG!)_h^%Do?+iG03OnPYCrCTqfKZrNKM%3tNN z*4EcoQ)ituk7)C6t7W;^9$fDr!ov+&K&#e}JVua>!MScPSr0M;vXZkn;$NFofhjNW&KdDO+VZ9ts7_Q5rv)?TW8g79{6x~^Izc_ zC*Q?K$uh0>o@E@j(%jr(zbw;?ap(q)-12_Kx0+v25N00C;oS*ts$>oc5_cu*y6-D& z-gbWZVuCvK7rLUKnzK^EZt*i~CyUgX1fB^wDT%&22`13DvlR5(zx*oFXu}K98MVc} zz5tc$6-07*nIrYbbNrWd7SB0;9zBusSFdi*#_78d?|Wr@dG_tMqx zW9MAKBj^*E}>w>hw#({qN2zmA;X?Jb8NNJX4xOQ#8 z2oe-?-TnrL4$a2kY|Y)x7F|hO6~tiGp{v{bss4#!OZH!f4zviWd6~yP5ZH0hQee)a z-5sOumog4@2Aa={n7{4Jx&vwRgM!{%Elw+bw2YTmEcEQz1@iK@7q_omzWf3P8n5lW z=#>SbzW9+3G{0zZ_W>xjZb${YsTGChQqA-6==0}G(es3UVCB9yXTclXuh6X7nFJ! zy!XVv?~9Z{du;;4{Ri0UP*hV|s+O3jhJH!TzKud^hX;)?+K2pF00zr-nY zFQD`GovCTm&92_$qKVLHc_^a&woam>safZogXxztxhe-!qnqDXBadM>_IvavB zfx^TH?WpZ`MZeV}{rzn?I3g}>z53%@fcJnu`|M!j*bTU`aANptlWU7b)+I5u;1_p`*qkjKO0(Fu0+`G{%b#+ z1Fk}fg|C7S z2fz^s;Yf^6z}v$Ra^vmW$KZOesNmu;@%>aq6)O+_<_$i%SBKo#W(S9`&53C#%&QVw zuqCYYM)Q?IjXB3+;?pm%9`YD}@@$s0l1XHpbJfe2kr^2(6&0QfRa7EyieclsA?H9V z#;`ApTF)GX!UgV;g{>`PV`I_3bWr*{g}^`?*v)2PoP^I@t`&=h(4GN&xVUg>_XkHL zva-^EyxkA<0I&_mew@UMl~8Lo@?5!lW6z6Ms+?X)54SAr`|!bX-i5v|*RR`oc#J=; zQCJj{1=h%^k*~M2#(&eXkzQ?l2Ak!kIp`A6&?=gTPrc&iT*X3Iqyso@f|Y_<1Gj$C z`S$kq`+>!n{l%bB@7o8m_yoq$SqsoZ1dddSIpW^-sL0W=zoX<-`4uCl8B7ywvm1HE z_7`Sbwxk_st=Rj@RQ2$SS8tjW!yi8xmXb9PxdnuWxqrRllL6AF8W}M*^=#9s$jZPI zbFQ+qRlBN$ol>^z{3ImqJT`D(Ed z?fRv_JqfQ__yp!vd|%M`I{Ca~6C2k|-xpZ_R11rIRzWHS{j(YqvRpOUa@0uAlt?)ZPcHBw68=;#aYc4>Py z>w8ykw(e^f11$H^CxZ1vU!IX9fFI^#MVUi$o|Gu*d0zD;PHQN2D{Ks;S_}}#v2NX> zeV+a#9rtPa!0im&r+4qk{^0lmzIu8^-`-IFoK+1;8Yqpp0hId3KuiZ60^nvzewe(d z*keH7-?z7Kjq$%98Bwcn<{cC zX$L(Vy>|^N4^cB@u!iX^e`^K?TvQTffU=>+z27ChB~WCjTl}Ik@E@SQXY=hDfu62j zEx9KXn2Cv0qAn;58N@b!+GH1J>L2cV(EIoxnwrpv?rO{D8Mc=#4=Ug#w(ZaQ(#MNp zV&XsY5LutZB_s1mP1hff*UHIF2XF&sKY^gL-~tjAn8I>s`sX=-Q5BeBd?X{Fo7GdG z$MQ`NFYXK*Z<*);nqLuVa|&qW0AGXa2Qf_Cgx%~VG4bEPL|Dcmb2UuF<<>7NZC-=Q zsQ%(CRu@8|6l7-5CcSz6$)5c(;Tuy{1Nl)~5qKb4KWqnAJ)jUhF15vWS{p)9Kw%7l zjfXd=tGzFY%Q(5!Zu?MWU_zl|28TNZ1j)(dw`uayUG3-Rwm9?)7v`g406p+R*HWn$_7B11;c`;OFmu9X13^a~{EJAJ*jMmj|2x)z-l1 zz$236Y1ZTP0hC|cF38?R&vwbh098YMW_)~SDAgYZW;;-%5EPCo>gW*e>|o5zDekYL zi+esk+9V`SE&l7v`F1zeCYd%h9Wy-Ea-p4s9(aAfjB0Cub>n~iCI)IFG&EBDTAJc< zb7)oRJz>g8yNy;qpu@%Sg`#mYyq<{ybv@J5iw)U`>YS>^gmJ;QAGF>Tt^}!8+Ty@K zTNw)BIm_`mYeeI0u-3XM&nicFxTXEU@Ni=f)DUXdM4Zf(-n}!Ln?LIZRXD79V2os{ zhu<|afkiJg=^#EYIiPn(DkD*R@8x{NS7IG1ptsy-XGc*$f&QSNH>S+PgKvN0h<$m9 zc=`cjeZ)0Qmj89QFHl*(^QJFKqHnh-%H1jK}t+4d$h?7zxk&&=b$oB(;|Skk<)yngIX>}`Vw=A zIccbiUaTVncFjE|IUjzy(;!+6>3yOl`u{E8u~=BXv^ux1Y#LE^lE7GxfHaA(--;*G9-@A|oa!Q&Cda;s~u9#n=wdEhZmlXGG z;c?rx14bkl%zVHvu0*O!nFFC9l|jLOEL`etV1pm=rwM>vl)xG$%FK)=m|#hfp88bf z`4>qC2dSpkXf8xmj6Ygr%yd;bAGz<*Kr;F*$_&yE*bm@vkIaXg2Z@@xE3kFj1*gB4 zyYCzv7y~)f+EFGd2oJ{N|#fZ(sY(yvQj+>>;yw~GR z&PCo;WHasyYnAs+n?0y+$J>ESf+(Br0h-% z49DE>+*rI%i5M7QQo-aT(&ve`)zYJa_c0)_@jG`^v1Ln#diu9U*Pg_I)L*%;PIeEf zE=q3u)hk9Yg)9$diF%zrsO*|MCP9S4jNQC`m)o$_nq`so1B@aCOf8%zu z=k5nyIyw&=9IzP}_JQ;M7mA||$5Z?7FdRp*h`=>MPHyyx$0_yi!nfSyN@$p811U0u z4i1c;$xVJ~bAAl=%jfbNGRE~C-#LP=xcD=*jc!&;oxHq8+D5e}9!x)zii-Sz{%}8( zQuPDJlgGLA9J!*=9u{7_)3LObtX7;5$z5{)UKWc$)IbNQ- zgRduQqSOiD3bHEGVf8Ol!JYzxKmc6EWA5=`ogVPsCT1vL_1)Xv^IJAAR*bpP9`ztC zpYZEfMe9iq@K*nQyxY-J<}vs*OAE#5!)go+djmWrsCTle7E*+i4fAF=Rd96xk2;jo zt<5-sk%c8FIoUW?0BK?wnPEVx+`hJ@{fL9N6QWRak&%6m*9cX8OhAo{^(Ej>pZ8!|DoQjiARY|a-e_ISN zfpJRP=|L7~VH&1sP7emS&7ZTtdc1;20kxZ~$F#=)+va-;GB7`J{7qAPNe-x2B3NJY zzB>*9rdlj`SV2S(O%mnumrnt{w11yI$$AtM7w4Iitak?n31Iep)308(HB{;rr8zBK zy@qKee=oKv`p-MsdC2>mEG(9zg)+e4l?JG}@0ZeB3_S9NnfgW)TMtg*JQpT6qbH^~ z#8o~4BI+~1$_A-fO^G!&AR?!aBkr zPSxLkJ_5hK-p@mki5JL?JTL1A;b`lG<7x$DXmA7!>MdZX01+9?)yhfV)Fx1gmVjYE z;HWjz!-pR!Y`F;Unz7>Mh6P>EOlQP$UYZbAcut*~CZ!h}`i&T_j}#UF*MK_Yr}q_| z$#r);hZgG0GIp#_0b=SuU?I&IK9$TQBh$V+q4b0zy_oh=U&@|fuJ%9?(7#crM8FPv z4ffUR6EVJ{*1znGs2T$zdEB^efkSpDAF_8-(@5y|y4C54}=+I&Ozs zuUjUXfR+v2;a@$C^!xv-b6v#C4st$lXrRO?;PD!iqwoD{y2cM~M$iXvzma9}!;HJf z^OTHn?h7$mYg@ao&G_Hn&RLcoh@W8IpNb8-R~UaqL`FV??#_w* zk1vc%z!Fk0BlFXmuVJ1USWbZhtuG$M(3hwZ0!c{-k>ECd%0e$)7b4hBJnw7gICIT< z0*gZ6xWM7{HD(oZbI2ZS44iKJ&OHw-ZQq`ItUPXXSdW#CPhYA7Lk&D{7eT%HYP_V2 zm^ATm`W`c#6jT&OcoI(nWN-YS6_U5ebUbIR>bDEv8zY;%iyNSoh0!D{^Fz!!8ohk8E5QF;y;3JSjLrpiUyG8^ne7dGLHE5_G z$Jb6>15MPm;c(+i{JM(cZ^;iIFaRrA=}Y0gi80XzK!=>7qP2Z}nw~uvqkxG=4?vr; z%2SUmR}G=}X4hL@o~FUL)oXP2?V6~R{ap+{oHljz^_Q*qYeG8XCG5-7-h=?Hy#kFd z%I6^=OglDmhFt17A2eXl($((~UNn9BoQ1pDGTdsx4(%MF80OBjB}zqya=g#dx@ZFO z`vZ;|c_$~X6q#r)(_0Kok2|9D6j-nhUkPO0pkEuRA1l6oe#-Wu#+reNDZVeo&IIE8 zz+Jk1Z3AORALsGp_Ht?+pwECOqVmyn3jZ-fmv)D62FUu?Z&7EPEkD1IkzMM31)fTYFl+*I3nf6!fw5)=2OEkr4MJo<<7MF37lP)f4yeUo zZpR1<*(NazdxU5pxVm-L~aykuHR$N?aoAOhzW?v+g zD6Q~lSdP9k3|>$uHPCL_+rnSVDk`Qz_a*UKMfVG8H5@yt{Z}y(_%tq_whW@X&Rfj` z0O8GsHTB`x&H!a(Kka=bKJ8umJ~h>V&x#a6ub8C61h_r;oHnzI{e5RB<>g;?kVZ0; znTCW;Rvz#{0!$E5y8XCKtqJr7K)tkL|JC?$T8(fupp_Bb)Xc09sH=d<{{aA>1y+}$ zBG>EIC@z2;HFptdEM|LKh29zf38}WD)e&7N3 z-VFS{AL{OkgG*|IIUmnEH`)lMNFIm#PoG(^|D<&z^$@onLzBG3Qixt{>lp@ky1glA z04TdWuy6N~^>}1eglIpRs=V_5nDhOHh!3qiExGrVuIUB?csI#JOTKZxh7+(ZIMzmL zo2)y&KqFASL|@7$k(51_$MUaEOK5crFuYOeUpdX$y#MX~nyEDqnHUjPg|AyH+!mD-u*OztjzchCa=bohbS%vLP{1Ir)TfnOnHl8F1Y z7aLBt<%^_wa)iXSX|#Xw!enteJ33G{><{(!X-aG-fkAwEi~No0xmyH7H*{eQmHxArvi4_xFN~lZdP$AMY#QAi0Rt zv9Gj3kEJml8sT?Dp%*$^VZ%{lI#wj=4$`lc!K~<^xxr8W+rLvnBX4+OP(Bx6sBhet zd;)cyNkrshUy1^mIC;zG@R%_4dZIsnRONivhR}a|@V_W~`NOEz4TOUTD0k9;Mi!Cw z(J`<*-^QpCWZ_wf!<4EO5*jh`iO@q7#UKcV1YoA0(m@S?&ga@pKK_e{u=xX3!Q_?s`S z5Ji^wV$bQp^?2bFW}e^lM9fnyAVdT`A)1fjy;p4Y{JuZ75C1FLKVQuSp9cL`v?>0t zXp`g5)#i{{#c#@-Z#SwvetcejphZ9ME2eyf2@9uR@3B;GsCxR#MR}bf*;b^cbgV#i z=*qy>0$5a_WbJyv+Vpd!#QqgOb=6+NUPnE&*@hF;I#?SL`K8Ry3$`OeFCm{eR^Wi5s8W2zzgUG`A~ff?-H4~$d|LNVP5y& zLi%X+WN*wG!Hy={XcZ38y565R%dRd10q!R65_7_N^?!TOB>&G>Eb~mHmW~_b@c4e0 zsQ$JxKqsJOg$>Wx|LYx{LJU%l{nsmM-W&!z-0zNG{!*%p01K5;LvDKpIUira85=nt z(3HS~AONcN$Atxh7p?}^N+*ns+lh%vCvFTI2fQzi7?d94$4A#u~U zOxnMV$3S%eY~-)rQT3O|1d7agXPZl9m37Zezj9Zgk^g3rv*eH>p}H-0eGSqv4mW#-`l^Qp`FN!KJ= zaVj1jdG||qIV@r{qhwY3?_%(j1s!%%!|iJMZ{It{Eu9pI1Y16Lkkbo$9%c_2to}tHD%>phR{91-`?x7pYu=jz8dfJ$G-FYK9(=e!z2lV6C)TW=R0M_ zbSJp(G!c1264dj}s<#+m%iXW1m=5%AU2t3krRlFHfiCA4TZI6#MOQuQ?+g~~eT3LU1IvZ&SG=%Q zbqzgj1p4}3Rb3p8zo=O+Z?;93%Ah$=#+iVN6|box>glOSdie!XizwLU2BG7A{!D=> zlEB*ppRT^M=jU^C_Tp%^?KZt#jcx;H?K?RTgpmn5-a~a+Oc8Qc+#A1&ioSu<2beT9 z-z1oT*}3qWH{W%O+S=?8DY@E&Xh(g&8O09oy)j*l5gl#|rJBBTcQ^u?1{i217rOzX zV2I+CqFjjtCkT7s9wF>xj{SCt{7(<(V(~C7GzO@8${#|}Xj5AMi9{Nol8e`(pWD!L zV+%qF6QN3=^!7Q=h|zvhgFlQ9Di^V-MVi~9AHwB_whxA-ad7e8opUoVA$@422>p?8 z4B`=cUlhkQJf^34_XCC^G^oQ18(Ta^(2g3gzd^lD5eJBRMA;Dl?B4*6PhgEAxwDdv zf%;XKejyJAg`bAEpNbzesj>TJu0!*}YM!@){PEUho4f-)PkP z!|Hy#Pb9TXjp|h&du?l8Z2->pU0_21td^e`PRS$A`xG62CuXWM9z7ylRnWOtbqLX= z)(c0ql0CSbVoFQhvsIwTG#o|s{k+b~IEp}mZ18sgA2t8=b;ftcKf@aX72HoumV4`C zV1vxC^I2hpiQPCmT01$=HXmRLBIErxHZTmNr<29CDFVZ$xm4y zH=FC=RB~GTRs6=677YW^2f(!6BkCb{M09C9d|O9wR(U(ugq_n2oQQ25*fwzfCd-6z zh@Ee51%*y^j1_;0f6*>}Bx@f;%co&%JTvL4`6?PjrzU5Ic3?C161JF}lG31_7@#>b za2BArTR>-+D_^>7&rm%{O>d0l$1v^u@~I#CjP8TsMn8gv5*rVgT>IQ4*j`TI1z~R+ z7?{lRN50`StU~>x)SEZVi5{yC7`KEJEm^H6%x9)Ne_E*LFv0?kTNx#q^1#Kx*@tPg zbSU*jIOrd^tw(6#YWfdsYJ6$U{ZK$w*&WmklNW`wVs*FNJud|k*uM{V6Cp0d?QqMe zrF1%Wv{<3XA6rj>39CjXOKUsK`;l#KIJmksf(5SJix=9!P0A@Yhi`p5FyaP$;&%ZX zR=CbCOq4rA>n!TJ>VEu6)7g*^?fT0RE}gPoS&xb!!)iyk=(}Lxt+v8QqL?)24(g)N zpSlCugMhL!%HO{g-yKB8e7~2&NQCzD{^cbIx2>mh%`V^ZQV1dxhI12O!6ptRV?#Bh z1Z*HpChQ*KsFLh6wU_^sK*fhI%#HWWQ9oO+Zazj#jku?#u5dDo$y;7-1-K3;ubBkO z@u!$nh0ve8%;SI+l|uUJ)dm#DQL)S8XE->Y-|YtB+<=#Dj{#ob%t_zd{%|`E8<@GD zESi1%gfkDLTJTSV^EFautW`N-4BloT7<=GSiX+dft39pQ6KJt&q@NQi#$m(>u7N+a z`IysP0Nvg!_xgZAh6Q^fEf%%!e{X>3zc&DF1})ZR9mPc{*jKZOdo*odp5^Uao`JjJ zKKv2{;=dQ5v^K;lyj^!4#x*pHFzfhtR9hPcyekX#SXwOQy3N!_fMSboRXsV{EJ*!z z*|fWu?_TH=PH(^hpEspkY73r@OfFjj17!{(@Q!A}WiFSwKQ%!Eg@STDk8;5cgVD;Z zY)B2;_c;Xu!Sx!0Qs~FhY+$fE2*d!Gp@fAoq{k;kh}I>KdnXOIh$Y2t{9~rPjWB}V0Vz9>1mQ&$e9MU&nkF`_NK$DXLi^x!Ifqb)Rvn0*nbl}mc z34Ey7=@wmeJwl(GhlhOA2w`E`ms}2MYH>j3vtSDQ^9E``;%iU@D<-~p3J>l!Js(l4 z)pn|Dg~UeYb80(VtK3R_=q?0ocp?%n0eae}gP2jP0yLWBV+Mu`bt@J$*NAP z4q)%l)OtiKd?Ev}B3reBgj6}j8dE_dw!ZXkg%T#gwUQIg(X3VWO9^+Ozdr+)ZV^<3 zt{z`K?lx2PAN{jaz}MeyRlCA@!w`Tk4jJkgrab{L@Qdp748NQzbO_jz>6ot5-oL3o zRs;tRZvTLi)AE<*5JCK<%=E-LkWIw4JHsU#)gho-4+^`747}>-<8o&@u40+hgp&Do z^T9SISC{#S>TntaVBj^(9Jv(WrJFNkTpkkAla-eHjkvyVBj1dp>dvxQc~L{$I)h4+ zzKtNjVI;svE5n72^V9N0TDs=n=&JIoyH`1TP{+*ZFZFvG)h|jx$uWC4p1yOs#<_QS z#ze{~aEBb3DN7wvIgM*)$eZQt6iRXRnCy(57IX~BUzcNzbv00h- zp6&_8&dHLIBLq-YXrd-j&`4DQ0J{?_dWQQ+j5r1PqeJGX3FD23L?O8wFVoNF@ zzYghT%a6=c(p)eVefqFHOSm3jR%aM^u`KvgSH^sjYV6P@M=`M>h;QTq`__rkT1BdN zLq$4r>N2;OQ1=z-#_Hx)iZEgSHK&->{G;+UK_We;fc&4m6>*+Z*zZSn@-Me~U4OZX zZ=oVY3QaFQWU5~r@2eA`E;6c2hj72+|DDZg4XnYKkz8MLQ10AT`uL8qJ=q#3XRjGeiGzn(fOp0Ye zdrM*YZrqBA*8O^^9&{JgX9XKu!+C+KDcRFX-+ydAQ}Wy9zra5@!Lw`_-*kBPPDwI9 z%}QIRyuU5^8Q0r?mEb}CHBCVq1knFnbb+}LBjiA-otOCX&zcK=OI;JK29JK?@Wm2Gsz3-ZU?A_>Y?eaI&Dcf+3l>dT)*Zv2kTP&!1eC&eB* zL{$UD?sPt+gaUYAH~{w3Bqs?4EHfwiq#ui~eWE{=GjJkfA30Pha~$Iq&k;cOM^_c2 zma^Bl$fsjFlDS%Eyqbw6&#zY{sj2=!M0T%+bGxz)ZFY}?L|4`K8#T9L*}`?gPv^UA zYO+$QQc$L7`F&w;kP=cqNW~6_UpHOJlyws!f_|Q2^(bgX8+!~5g(4Ygii_#A> zdUw(lBPm1g>o>G0N*|l?m%X%0)@xYLo(-+cP-)&+EzA>@Q~Iz~;}>m|dp`Lm0@_Ng zw4bbuKj#YW+|g(Sw&>Kb#ZYtv^K3n)*VdR4liM7&+m)9jw2)6O!K|oaV*+*DY8zd| zH3x@Gyek}6UQ@Fk57=8uNK(`q5VcwRm@&ek`#As{jaSqTs6~nFEQr`grm~Qq6VKl{ zgXMtY#a8#xl=fI`zuI>R@%MNXzPh!Scfkl}sejJ^+Fk(mH;=JJrr%s4$|+{zxL3Do zDgBs+DP0+#*-H=zNTgrV?0h|=oGjrHkG&c4INOJc@!9itH*k*X=B8O1Ek~w*%s)D6 z`-RTj|MKdHYp%I{nk318-!5BPNmE*}`L)-O_N1We<*%tn%}cq-KHA?1mtnK66JRl&-Q`@Er1j*k zUFvPi|LEtoMby5Nv~xvID@8%DOVSqlCENGlcD=SM@@+eg~! zk+u6@W1!0+l04t`)9;2{KuQ$Y)bODuf)ESb(}#RM8&s}O=anoGSbC>hsU6PG&(4QM zzBZnFYJw(A#6I@ab5qwDwPBDy`~&sJD?_OUJ-609K@HtMgoa+<@Ie{_|KV)OIFlos z$2rfCcl4V}gF>DN2|Z=;EamiB6JM_$d?)Aan?1fyyPEbLGnRLEyn*P5D3@J0*V znYS}tXk$A+FSJAd_J03p^T)4C2?4ExgKK$JH*iV+BE*928e^_A@*fmT*@sy*Xdm3v zuW*7gckAiXcvC>r7AjXBm%`9%;SbSwv2y>xEDGs5@sBhk34dD&9+qghlOx$pI>1cW zy%2moyUq_w)gQ1sKUD2WFrTf=l{GM43(SmZF% z?bnN!mlc!U7`M1ha39gVYre9S&BO9MZ07qsrjc^wpD|Q%(7o8hv)A8g5;Y)loz9V{y{y=5-6mcyH#=bD`zyj& zDY_MtSHv$RwLN`B&K;u+4o_2YRIka(+H~jR=M#F~c00uSBat+XiK>Md)RUX>^B#Bf zr{DW{=XyO)S=wlqJu&@^oKvL|l~8McM?^Dd5`SPl_%!1A+Www}3we0A$d-ZCAn$A@ z__W387G5@3<;8TI>PzL{EtsTCp&PgDimeZmBsZTp<~y1?6U}MPjO?>Ru9`9TuTL*M zB`@0hUHBiMc7#Ql>BQXT*410j`mtHJ%&@ftKW%T5{BlK06_viqs#f59i5r8K!`+YjA za2mvk@$Ho7a9Lrh_bT{G%N}E{b}$htT;;eou042Bf$c7fp<8`Zh+xIJQ|ukG%wn`f zhhI62hknU)BLr}LcFhGdz59tC$XIJt0;xHv_`)12m5YkLnb2&!a z@@a-}ZMd;7x?|t|aJy!mp2WaNqvdsd_Xr3~7m7MRs;Gf0(c4 z`uD1i=l0-l;1T-5gS<2%i6BQmOZVU9nGrupc{Tp~u|!Fk>6O)wA(}~fRcf{KZZ{5V z3J;ojB7RiEP0>f`KIp_|AXDYZ))n){0#?0Y#t6aTiVQ5oTKCYdZD=$T2UPX#A@ zgX&pU{jJKVy0}ZF!D*UFe5$jvT)Lax-X+LJwH?#FtWDvh4`7J1Ms#59b{~w;xSj-_ z?)_EQQ@HO&VO%M!{G@bJuf(6Trgv|zhXST)TScVl(iK-)USnDwSs{&Uv>w@33l5Bh zc$=f?tdxUsmQPMk+ri%JEzE>`?P|DDgh4)E!8uv)tAz;5mq(*!R@5WT=$pI6=0SO@ zm?eC6__(CYz}1-ri%rLs^2^g)>3-xTVl#$BpGpcM| zHG8xDy}L8*fsgmI$2I+mbcW{2EuqAw>-->(Lo)K8zyJHu>|$cAcpIyri(dQnz%PVu z2b$uL*NdmCtE(5R&VGkr?%WIc7`nrhw4_2cwI8F_|K`J{&HgFUtEzU3hWB#09T`x@ z`q=c+YBn$YVP+Ez4E_Wu9+aYqr3DDDg8@$MX0XCcewG^{!$!{U8*SLX*GQlMAsS^0 z-3|wauk`lHN91PvX>8|62G=kuI^+ndv3ziCPpEMy-9WB@#NnZV%60p2_RK zJ=-88%bd3|dT^nu;wV@r!pwY&A6s((Va9%xGkT-67PDa9YP$PztB>VSle3Cuu7tW8 znl4+rioupu+1w}+zvJ7A-b9c7QXPVz(|Z&$aOC7Fp%J}xd}6^KGGp^`J4+ z0NNmeJ{8vauG2qkcn@xmYujrW?f$(q0+kgn;6-MAgs1OZkL|95eGKm1?xisA{c4@b zPi}hIp={Rd1vKPQ7xt}G;00F)cw;eXnjQl+tRmE=KYXhtk0S=jrZD=Ra0uK}o?ByJ z%*3HYAS~Svb(h|_r~hgY-O>p=8#NoW)7MB{0E?f(sA#QvAl>}ASC(cx1Ao4<>K`AZcKTMHkOWNw}zH$Bz99=z*_ z%A9ujo6+9tv6QfCvN@qUnXV`*!fp4up8*TUS2IhieBl^4kV|vTY>M&AUmLC3&rb+x z@-9n+uKnxGEXPR^?=do%UP0!!?XIL3+vz94NT7JPrns8(Ffor~%h~|Q9+DSw7Z=C# zn%-BVX2=bsoUP|rGIBezq@{;|N%4URxIya$t1&-pY0I}NjH|h$gUFP1o@TyKSL!fu zs7&=9GHN*-{-wb=qIPfu?PtqU&eFv3yTL(r)^=MqZ_Vk^c0&g*xp0xK#PXr}Z^Tk9 zrTM$Ji#NyrXm&UVs51%&h>UC=xIgmJ%9bcJOFXC?%Re$4RojW>snHy^R4_=2LvGIZ zZ4B+1u)A&)YKAAj(>eHl>N%5?b&2SC;Y?#$5qS7QTeE1{x|Y5^0hL7gR2qZZEq~~% z8v(4_CYQq8yW?FBn^glq`_V6R+escu{`;|6I7U}#+_vL#D|>KZy*?39`JmQPyd`;F z>fjXb(T?0;ss3q6WLQ}Z`EUADS%ZULt6yqrcpyjso^;2AS1J5w zRWkI5ncbxwCdvE}wZ*W(=Qb?32m}}h1CqW|*Jdi3xm+25blyR>O}-rLVK4bo?cwI^ z62+UjD)R8~V-C9-cRo670{pAr%wx82_$@OJ?E%np8dN%$b1LV+&ub#QO7HadZq|n_ z($yvUV%MsPC?X4_QAxa2&qQo#k6v!5m9WdspZ3!y22dL}pf>8eHhE{kUOB9ldPe>@ zi6HlA`UZ-bq@LdWwu7BR^n=Xv$?OD@1I=+WG0ACeuc0WDj=#J%?wHDn4{Hi=SIO$eG=ie${0=pu?B4-Eh8>)i zpT@!@wOXt9lo{yRoBZ{+Nq+ds!b zt}aV=`8F~$SI-QqA(Ucw1FX&#i7wVHf{_i;W3e0tw34-tthiU365Uq|kGB3US>HTg z)HxXM5vWTMjvOY4)kMf|k75+xiq-Tc({DlcR2i{)m+rU=CE@zzC0ym1(K`C8A!-v| zAikIar&|OINiO@$-6k(9c|FR;&M0}v?uSy4&N+a zEs=H0E$3s3=Ir`L>63;**OY0Et7#D#8#~X$Q4Er&p2K6i7fV5WI+t8Uo4KbYGH-u4 zSUHD=^o)CAQZ}l3rRI95KTFNaO9U@hND@reWXoaP;Yh8`^Y%{qp0Q9h9~yhpJ*zRY zChF7C+PV92mmRXkC~=!YqbVA0Ngn&xK!*h>XA58FX+)epE-ybK7j*eED^9v|Q-4Pq zwZ(^C^S{w=k17)q@;tl`9F;-6Zz8IFu6U6bze!jmGOcmF3IVUgpUR%DIqW zV+WpiF2_I69}Sy>>kag_s$0o??>! zKQ2Hp3LAhXsM;+Bp=R(hgI?mXj8}o)u`T;j@vw|u(vBmp+?D^ubk>Z80?lOd+k@fn z#gtA;->geHuTMH}=dq4$S1c{9{UfjsjB{0 z5)yLl1R6_hhOT;&N-wFXbDc)9iT(Y~H^NqXZLyEX!a1#urT?{6%IP=jX5L^{Fso?_AZ*CyOT^By zS36BRpKJC!@?v6oEdObhmik?U5uBGP2mA>pje7O5E<612_!hCObv z)*7Oov{j>znErq}$S-!1dT`p%ILKWe``LJ9`=RbelnvFZQzypZ3{~VE-|7ME;YC6F z{R-Gmi$dCdVysnr7s!;6L+`l&+%i6)cG43yGUsh1_U&~$HwREP=AOR##=-L@u2h5$K$YI&*GKCvU1h14vOq6u&6f>JD;~pw2c98R=Y|TW7VAoQ@}e zj)9R3I+PEdgyTwdC2=FRiH|HYPn{w+{wbbzYb42(Xx4Ux+Z<|tcw01$k6$2iBF~}W z{bHP-j7OJuTsqunT>?&qqk`+yjnV>NE}36WvNBn31`nY<(G$~xaBzmdSoIjM)x`bxyxENRH&d=3h_{<4R9 zDZVbEzzK_=eK0&0`D-?jFLQNkeqK}S{I^M{l3ij_9`OfB4fSUQMzyO)Ik^!f26k&7 zvyZDc*418iA@bZ_ba1mO7ud?lW(NNzymKQ=GWRm{W4@ipY{ex;sG+t&=0?phdhnca z`EX5B`P(mXS)5jW@k)?`gW)%tMUsPrZG^|F(bON1ZD?@xdU!FRgx>=^Azt?Ory+mK zC~f&ntf%AJ?pfU;NZyFstjaxVS94BHj*qe` zrrOUWD4vutd(BlPPZ~#}!;2LUF@7$R?GS_DR!-%} ziV)qP$%XBzdc<~B-CEFQq!82B&)I)meOKl6*r8VQP0}l6VQn@wHMEo35pA8H5+dC> zZ;`prT?L3l4moQ%JR?N{Z0s?=5tMXI>Qq)8stvCpgQpn0s$Zi-q66s%3;!(HgU-HO z)|?;d9UlF_NR4I(8`FF{PuF8T%L=2n|1_=)l-3MR{_l8mS%1C-(6)hr<2m5m;SnjV z!AyDfICGe}R4Q=#5$d-~kjv|X`?%98u{@|5;Qk~{d0?PzMzdi1+{07TMJBIO?%RC|VbL3ujhRe>EhyYF!w-t3o#HY&Tl6 z+PJ>rc6&JBKqHR)95yz_p?YQ zHFDQ=Gz&>!n<49UYSVH0iDY#bkx6+k+&hQxv65!8V6A0R=iv;iSJQ3i&SHVd6Au3R zFzVG)n4^;Q-a1Ec^AVTWsQVR@V8&)OM0l}pK6WB%W==W=-rEg>3MYp@J9gEYD|CDR z$``h&gN}VR8Y#}}j1{ndoDV_29V)t6rVW@zvu=%*0<8ip)rjXNxEk83RidPBIS`TwyNJF|EvE3q3WS+^8&WHjq$L zsQ3GKThrSpf!b}2lH~Kn#v7|Iw)V1JKz<56wxfD-UJ9}$w5QY0%f`HMk#)`*8ZxAu zE~6}BH}nlEM3@wx^P)?fq{h-3FZYg_6=!`?k<^syC1Tc#SbF@}Qn}3q-B|KiLOZu^ zb?|cH-CmAfu<_kH1Zuo`&8YFq1=MUb0G_>LB#ju!uryz*V3ek@f*BbHvaw&)-B-#u z)A&oQ9-_M0LEl0CwX6E@blpH+7M+1jtUy7brnF4-P{#Zd>A1OWoxQ z#I{S7Ti=q6CifSj4&N-wA9a{Ih&|Ldofch03XmXk@fX_ngd-}qv>dOFUoUR$?rAo| z-vZRrXZmC&Ig`@&W&@wUSnn}#olGl!Aki^uRhU<@_S(QqWf4cgB*K7%azW{_=7+}Y z#i7?X*RKr8WTPx;nEU^pe!XAjSaE1kEgo4h#ilT*(BYN;GSiLswCl9vU*`U0f(Hgq zwAN+r1DeB5O{vGxDw&VyjF?$jKLPb|_piE0F7Wiod!AVfZrD&3Ouh?z77SV(dhe6q zqi@B*l$pL-Y^0?58XpP;Gm0cclsj}78|S7YCB0Rp7HM%hYMgWKZ9F(A=g_A0s*Z&8 zsl<1?cIRtGm+Rx{#e9ij`$xGecQNtQma6AN+m~`amLBV^`YkgR16G><(kCW8$;IFR z2_YKWBd-hHP8J{S?!Is#4|{xGcR1UHm|2CwDd@iQOvshviwwmV^;!v^hr(9K+`1fo z(xjp&AI3SOLrPSmkSg+2vLKh}qN#94>ms%0nG4lHbH%u;K1uFjxE>C*kcZuwm^oF) zmFZ`B{A{7OKl11<^;_X0e{47DvrJJuj}Nr$vrW(Mkk_*xqce%j7cAcjV%Bh+i5Kqu zZ8F(?(EDVF>;SZ~e|!!Z(5ym62&P(PXngwawOy6EF1>PyTAFLEZS2hVr@C|F6&|)6 z1H&7}EG;~4jv&=Ay=Y6pQp+%loDw~8y;2S>EAjM04Smn-v833tR3;8?zMxqDrjK;E z438N6(Xd1t??lDCLU@Z+an(I~f348oJJ%|g?E9kEly2e?V)IBB+?z$r?wUMGm6W}D zks~Q<#L(luNr{hBH5)*oQ@(3#Tk&T^I5^7Qy39=AZCc-&;Ka2sv1F|z)=i!Mzi-qq z2l%c2J|foU8tJJsIJC;4(~5V#ZYBv#Jh^U;&{o#*yj-fBzf0zFhd#0uRcBU$nvd+WEom(Zy}ltbbF)Gl z{)X$mbkV>&td2dg;dgUvO)==`E{&z#BS88Hclfo|TZV|*thg%Gn-)*JTPEf&bnCY~ zqIxKz!&$Y>tehkOlsdx{iJRXm!%O1!XdT*=BdN@!5A$7XlUo|ERRO$HSm z2mAEknAv4;hnB25{4sPka4uro1g`0=L32BBrq15l1Vcv?$di2WHYB`V-YmLByln^Z zrc__m;jp#RBX{wItaX2_?+pNP=!XrCXkNVS;-|030h4?G<71W=&XM626}Kn94aiYL zgtzA;gAGeh0YY4C?{lbG(gi)lL3VR=XIPOxde}EGF|NU}e-Vc%z{O=zTtTf!VRlJ4 z7LfaNwYiw~8p%#D4oT=HAh%of#T=w&=Oh^RZO@h%IWJ9n~=OcXoL zJU4#iN_R3|A923XW~;qhddF_xjBl^>n&inJ6)y6dC!;+RwRyJQ82u{g$;npyRcBi? zBX)z~<92~W%zxjPE5%i4;Zv@zg)mu2mIcnY&St{Vw7`5sG%HQ@HBGW@v|Qf%OJTU! zQtyF#k=J}kDc8N^@^eRvA|c3$Tdl}gUJvs+S@fyhjOAY))5Pz;I!Pj=!mB+AiS65n z(ucX<@%Xd{!J|IusW7e4o<-h!orv=LDlv<7)&W~yJ;9xd^jD|DGV~?#KbRgo_y|$* zS@fC0$#LWky1LtwTZtDAW1q>!zRvn_Q`TD8L`AUW`JbQH&&h2USN?OxZ(nFC2ry`_;^%+noQv;tV?)dwl(Bpogw5 z;VnBnrGlXJCd|W7>JJJW++V+N1p|kjhQ3A|Y^fpG?Xjljy=Vi|?d7*RUookLR61_@ z6{U%FogUbCup2_6l*s0?Fwu{|fiYp{R;p?55|{1|VOdq%6l|V7rxOuT3bte~G4H4s ztm;T=9NJ+0;S8hJwyN}LVh)vkcYi0Si87(Npl*oIrghKUCS)PORbXyoV`Kfkd$t!Ra_!k##g*jjV`s0br0M7(9echXJ7-u3se5;3-*8gJ6vw|Bv^9AAL`? zI29X~`E^!VW{ZiC*wHi7nKFeHFJ3Hb4A~9^9fnkw7s!qD2T6RY9)H6=$E?NzlP_t& z(lb3j@>su~0em0SHua@s%2`-z{1a7g!a`Q!;lD3w(jh*+iEU^Ut^i6)LIgcG5^B^$ z;73s?MBI%(qVRSJu?ev{r&93ZUZ*L&_*0p!A=qkXt21>%+BQLdb~?$Id-#0lf+VX# zD)gWh04K$E>vz@E=B1=LiY<~5(u=W+jx%RF%}zC8{-5cR6mraJ4t^}ORY-$ZjyE-% zm)h~H4HNQe4Z?xOH9x@l5_ouAy&wDJ>MB4?ob+CmH=yJ>)!0}{@z{Ghr&&*%6#+}_ zRHh~3TqVc-_Xn52CG^;xwDGXC|0XdtHqP6soyjHVp#({@tS!fqs~-CCb%pqk+dtC} zNu%S13fsm9QR&8om3KR-dLt)3J>HR$#Y_5c6Rd|HixZnM+n3msA4*V3VzTDxz0>*F zGn;ty{nuGG`Q`n>MIk%>g%!;!iq|!ZYi%CwGk1d*EnI}PcFUV(cgsV089cBGLHdB) z{rJPb8u>O~oRl)vjM2iI%npUmM%68{s-8U&J2(QO<)ufCTmNcRK^YO`$a(wh1n&(f z>n~R7X%0+cn~snGMd~XKDcAh^`ufHboWOmw)wrAkwAG+R-d@f6^<9}5_AgV_NB1B6 zX!5$_D;h$3WJ{!t4MFJLbeBUO_pUN?lkYAjYYo~Cn`(Box?dJjQ!lP0oS$yNUPPc{ zmwbY09!&~y|`q5s{{v<0=QDX!sf`)tk&rvgCSg>y)naT z72w!pe!7BFb_qBIE1qb!=YJ*nx|ZKho%2p0(3ZQsbz(w)s=|HH z%Ieu;$Rpla3tcPwmM#C5)-HLqo4Z=rBDIVgHfj}#*?3Xo^s8a+e`+J3f@N$hp{Aw_ zI$uP9%j{tu@b5EdwJcF6yI^dmDqVDdnR!QSdm)^1k14kX^2`{Fm6@#YvvKRcf`sPE zXZ<5)jB2xW3;p?@wegYtSqqyvr`o!1^d&c{598+Crs}W{YWenkOzDvwcPE_sHRWNJu*gP{b;~`{q6Xt0ee#P zI2`vYmx|e2EDsn}pu4vES|JY+#HlaOqBx>me_L{zcrw?LRe-H$LmhcQ%5bK&sS>wT zse_2Ung9D!c>b=piGB4iTb0dDI3K9zX?cf_m?$YdySm&`Q#BfjKWYhF@~ANOFh`nx zTX3^zcB_$nt9X(Cmv+~B{zbJObKi_8RWpL|xaZdS^$UMHw|86GJ@Z;1@9h;(*glaqe)UZ-Dt;3MWP`#&T zR|kyJJ491g!+fHqIlmhE=4l*wE~PIIH>f=(;ubCZk`^thZN8i{HC(IV2_BtClUfWV z3}QOvoAr_(OsEa%ZC}Dpx@mUk-TbLSwDkU`nxd^4U2UPOnzI?T>W%zr)Ju{9W$|%b zK}Cgzmqf&WdJb0xWy>SJe_w>X6aah4#U+1$B2_qiMZn?WF5D|&w`sc;`9T;EwdJnd zhE!hXW&4~)tQqN6ykmwogb+O3X+xr4(nt^Km7;uUPrWO_%WHxfdZ|@zxXbaxtA}{u zQ+3|i#mUK3)QQ`65-DET;RpZf!8lTYrh%(ZhWt zceXCWfj*j3;Foksz+BT8G=@+PPe|Y}VYq!*0s@oMZbzEaj?Gb6%&cFdR=(?Ek9(p( z;Z0lkc-FQxaN17QW2WBoG97JqLKBg0T4|m4X+0*G*d!r)6VB=(LC4-+Woh3T+X$04 z2e$bWHv5U@e9?x1-PPD0sAVYgg)coITE}gw0}2G_XtAIKKDV z(QhFGLaBTAB8GBKubY7MEi8=R_EA!^*B$3XcM>)A z1kLPU5oHq%omA%K%-}G{K?eN`5sBmR2SLD2l3uq(gRWq_W-el2%~7)LgE{AXZq#gz z>6wSSc7atsTd3Q{fHK(<#V=Z|8;ZlibPkVZuJ~m0VqME_AL{6Z|JoQ4Spctrn*?po zLYIyV*HPl})K*Q5@C?sinaKQCp+_hzy{{f^m6~HOo~151oU-Fp{y@}fAI^M9JmNp& z_}f0UfZ_s)L4*OZ(|VrB<;;~!1We-KK%klNod#r8gM%NPpN{kb9a7=}^Ydc2uays! zshwu03pQn(X6s(5XRnXTPsqjomMA^#iRX159}jQu81FSNpIY9~#radYn1AM+FKemH zZ@4lzwHNClqr~Q68NaYH?r;ku4s~WMTldP1<#38^!K>{ty&4WV z*65W3J2DbDyXh+@8o$@qw6ZXUf4N_)x9m?h{T4)9^ELq&ta-6Go+HKEJEthFCFL&x6S}aM%j=pdxFE}38 zmz!w>Kd_~`zF^FrHS;HgTkQ4gtrbnzqAIQ8R0p@QnWL)?hU!xvv5}+7m7fiBMy3ZZ z$8j}B68qdoOQo5b-YaqjfVyM&+I&hAT+td1^>_}YcjNy>tqhHsaZQL&)Bw8;Bo6LE z{{e8U^3L}&W>MXmZrI)U8+K968r|l_r{lVR|9pvMZA+5elOg||^u^s0GC^%b@~z7Q zmWqYD2S=I?jdmkhIwBeJ9NFEmcUBTIB+hW{2WZV*E+SVNZraTvaG#LDs9V1Ha+&$F zU;Nt^$k`bSNz^@J?2q*#k6NyFa7#ltO%-k(6?axmdz|$`Ze;dM?)@*4pGPw@7dG~b z9Sn1H!mDTQ${$Oi*Rru0m(O(f%=5qD@oTfU+XPhYd9;nr|m(v`Z9L|gPGqdHSqnc;e{#O6<%98&uR$SM)4I@|_ z{DQmwCVi>t*}lJ_Q}gKHhk6z2gG1XgXJo=!?73^j*(a1Fx8a@_xPo2R1nfqghoze% zBO~}^WL+T?P2Uv_J6nqJy~mZ9qrKHi-Gx?V?8XC0o()E&ax)?*{a)Rc8+wW|?+|9xns@tyPCdvob!vXy zelRm~R_E3IuDI8VDyQJ0e|iEjrCp-gJ5*8??iP(K@Kdu~4T7Fjgh9CRf1#OMmaa}z>uSN42cg{p7 zg;Gd)075Zkt+{&W$YI!_3Y8RFA2Pjegp6tP;; z=n_hobWYgczbUZyhE!RL_n6BY@oJ)b=P-4181BS4N!iaF*Pc4=ynF<*^K&d7POVSz zD|0nUy|VwB=l-MmHZAYbMtH_It$>|0i8V9Lv%PZUio;X>(C})efxqyKZT!AG8-aUv zsNOgi9`nYPifukyyUtNgeT6Y2+4@oaE&hK;DMgoE4N1@6K%epPs_fPh0OCGus-egV zeE4uknD9OD|MUVpHsrVE;+^K7o;D)iI%8N6*+r#r?K`??jx^<+SQ(tT$loO%wHY~X zmZsCp{tO{~UVp2nm-qbnO5*w@`OB3`kFPmFnS!g)sF=YXh5hl%rZE zS4YVnN9(`SjFOyl!2svJs1-t+K`wW_Ya%caKau7-I+fn8%x zd$Kgw&2seod)Y*m;P#p|sL$JXfPO~OKJ89>Upd|N#r(zGvz>OML}iLs8oCyRm7|^l z?yO4`fA#zrB>BD`Wn?A0U=JZYM0+pMWr-Cg6=G794BDNgBCQU)YtJ5Fb7@(Z@0C10 znYbj!`d=?68J@FZadlAOvC~Z99)*G5vwc(_r&`=HMzdy~d0`@SEYg}2s?~hSt*(K+ zvs0TiGqWXDT~MR(_Fwe}@6!t**j+38WUlti=6Q9m&KeQpxOsViECy|kzZDzBoyTW0 zSJ$%GlICa4G3DPcA8Se=g#WyXv?^TsE?}6^C5nT2+sM>(0frqH%In=oD3Z8f!maC( z!{_=d9j%uY-si5zr>1Q;Su?$1P~Su+@S^;$r109+=M}RTQ!IvqUXchI@YG1mtvakQ zL4(CnHU{DIIb5gH)ft|T#JiWkMRSKa_`Qjl%h>h^bAhXx7)6v0z8tb#o+dYhwi|j!3+FW9u-tCJH(;)8aYIE5^o%Hr zGi}xUhbKFhllMjV@_wR+R&Rw>qrgs!1td5pws&`}Upt}l)4$^h%V~Ry!ZxH=%Yk;s zth~>Re_~zME&k zv=C!>d96N*2pZ0~=CYzu)Ff?eyvS8eS&6DIDK@%6XWGV>#p3&$aIazD2Z>uqNH*dE zI$E=GOROf$9kz3{1%cgi&9HpImodgaRg94`qw zq=l|oaz0{?Y6bbF*7LXYKi9+u)E@l9uP%pAs6E!nPbL6W?7r>275=R#1X7h5No8}o zQvq$jPIF1UV70!yu&7uer=p=jbq6_P8&LEJJG~_wUT#YP$sS^=uPa?-wp+}Ap(A(x zOBqVRviz^wqg^lTgv~hIlYh&HN)q+Vq)9R6jfuF62imzmdK=oLAGsU?eZN${m?NRn zoi_sB>}9Dl)Ct;e!)&mWlmy%p+HzHu!y{~b>d%)xMv>k_*LhCjv{BUdr=7Q{#5kv7 zUrwdCfAcm`SO{6D^rnGN0zC)(zGX^9h8wLidmOJlPaFU+6xi4gh@6ij4 z3}|Pn%EW3EPMdNz4ksPW^zDZ6oSAW?VW zn09wsR8ugqgqEXd0``MM(eY0y%ITh#evTblTI9Lv8B|~VLnpdlBfpcd5tfsm&2jmRM1nrg3fMg8}H z!f0)6D7P{zYdTluCJ+=)X1#IYYMs$(Pv5U$-A)65SW%%1TLwZxn`?O-M%LZk&c4Zw zje$z$EEd$>|1lFyUf%6lZ@&5YU_b|a>twkCCd#7~Sr6y_ERczyoPTW^>>zfqZ;P_J%IbDXv$#mMl<4x0_~52zQ|+rno8u4#e#1Y4HBC)T z$H)SApmBVJjf8MLHGcl|DW6jQP^Sn9F6eD$eRQCDa_SM^p88{^l!ypzYzzd>@`+gE z!7>IBy-g9a*+;{X9}Sxm9M+=n-`5POEA6 zhVxvaE$Vn1!#vLQuzeA^yi6^R@3b{;YBw+QYZQngt_Wdn?@CoSMkzw=aFQ@OaLy5x zv95QFhPb9nxZ#Uz=9Uk?w3O6`i_;?>>qYb^EoY+o^EBN4eiPlONe#m&nRo`{YN-kH z!tn{DOSN^H=U$I@m~iMy{pGqbfJ0j?JkHbsB^$3PJ}05U`-ucymUlQK~+`D^8oki22Wxq3>5Z`Gydlxcsy~2K5u5Ce?^n#EO4_)f?XaHu#SS3dU zr|B?HwWD`9i0>OLE4yBvth|XS{y}l2BC8Sq&2C-i%H1%k=irqa8&7^L+K;lKKX6Tr z((*dl3rS6FNPjC2@(6}N5?n}&(t1Km`+Mvqfy{EpCbdHsi}%WPTp!UGeync^vAq^v z5;~hTDjti|_;qle_;$CvhweoEsB>l-l;vFa-m=LG>@c#_61>)k_e7)k-sqXq8o5qx zER0dt`2TWx!}ZDpW6K2#BJ#x0_}6Rx|p$V$&9iJNIi2V_!#O9Q{}Cz!~yHfiK^q zuvpB_u?;3I4`fmoqG2ics(n6Bgr^=rX@jiD5>9l^t>13Kayps{A$UN(ayUVudvPk& z6^{}0fEeZm=oxM8F}+~!@UgQT5)6JJ06#N zSL`t7Xh^gZAMbH_0<$lu0LM@*|My<#k|)t=?=h!hLR&|>l|6>0-w+YXLWh%%v2;lA zvH`r&+3Fc2FdSwxgb!$GmQd>;wzIb0g_4=O7}V|%K~FXObIKwnnd&#P%(=fF>$8GM zJp}g@)jnw&P{yDSF=o3`lbzAw#^Tz#Qm6@Cry&C8Qw6d_CUQ zLnHNGRQ>rE9Mb93FZRay)!L7gJqoGM*c1@i22$X!QQ*{n5$E*Qk-R zD?vEYhU#*t$^A_0B|2?-8=1;0BvdyP6&ugCphQJFTGSj^P=ISXtkJ$%KGXh^NORGu z6N89=U>kJfcZb!lQY$NC81nmeF1FMwH`pJVVtub1w@|~zRn9Se{d%@^WEQDh+um!T z2lSFjw{b>L>zdiKb>YFr<8pZeQD^gSYfe3ixZ?4ll9tm_4C)VZdXg|+r{6c^=%0b z)9pY&PSC6o%KP7o#bpjc`Uz??az6bMyRFFmilK19U6^FO7hAj0SJlOZ|9V*DU_@IF z)DDM+h9Y9unvu%o*4><}rautU^r#*3VMqV;>61Kjexv=Q)ji#nhUO2LPp7(b2UKsH zDwktPkLPeb{=h~}&}_N?5ivFj6GPW}Fr?gdFPxk>ftzH5R5aIc<4jHS9O0GCTAfa< zv($zdN~p9nd#~$vh_leiZ8f!V)fz`3?nz6A@=0qfN=nKeX5D%?#D%7(4xW_%`($JP zep062-cc{D>LMZUt7U(mb|-RN>faA-^3eYq{nK)B*&kzacTo%R@(0LHMnSCAmau@& zTflrez@bILuwpC<4pIDn9AYovHYuO?pQf(mnS^4?oz|7T29$bz;bt|E=B^>qFKVJhf4T-E;5_oNVL7y%P)Bs5N?OjF1eZHxG zGG5@H@f;)P;*Y$Sl9z=cbbjx02Uk$NtOOqq?@u?kN7$Cf)fuy3+_(6edp&(7Uh^zJ z^(i)7)h<|!Ip3(~k+3Cl=_T{q_(i;pt*YYtAGvCa@NYX7`_2^`>=l>J3^_`kjE|Sc z1xiB}vd%ce&A51MU%j0#2IY}S4GuOo{EEZzIGEB~hgVpn{$?Il;tRi}pQz^{;{z-Z zGoQUUnlW7X?Lg0zr?aMjY=ry=GJqqce=LpQ;@d*w`a&C$abc^zU(a^W@s2FA38wG?TNa&ubL z>n9Tao|)NRP#f%yJ8(TO3gs}&y&~NVodH1D+t}aleJ!JfPI(@^&L4Rt<>efPp`QD;9ILCAjdx~svC1*o(iN4OLLYto_G@7wEF@lF?Dz2wrH1_& z38br(nCp&p%lSpA|9k)CqMm|Fi;IPz)-&yXW*17%q(8|cC>yG0_7!UGqOecKN z!p+KZ9vEZ-&9B|1St#+zVN&`^J5{dfeE;@KZ(WJ1Ev%gFQ#>w_c8%A1{uvjvsnYQ9 zKwX>+Z&icJXFk;XmJ5_B{fk=V|8orzan*?#$XAz2=)H6&6Q2F2t8gan#S5s)SQmS) z=OaLhmsQUft_MCgDtTXHFi5%nI<7NO5fYkrB?s5-JH?cR$8y#IN# z5VExY`SX}+flBDiEXwvdVbdLg2PPrdf=RBoaB!6H@KdB@>%D+I0ZiMM@7{ey1g%<^ zh(pzE>szFqe<3RsgOZABZB;@}{w=3YpTB^@i{ols?v}9MDAZwns8Z+33w#L>fhmB- zwvMrvWCXlUlsUTi7$hOc7y~ULE)0keOeX0TqkK}s!CB(GvUjhKde2%S5F28S?0o}nZcDe zj_VbH_t{4c6)m6)|e=vX9wls`VK=1v) z)!gV^XhXL#o(9gQCNq;29~8g85NUPAaw->_AfEw+BtcW591w_B*OGu-7Vb&CLK6Yq z!^|9WrFDDZ_rie4B#ef1ZTBvCd6xq8r4pa-VanOT7uE5xigrHJ-}F zaOp{F`@eO6eu~W96)=9MBYW6(791>_m1j=PGYX@vTtAo)>>fglTG;rsJk_aU!RB^$ z+eqbS5`Q|_zs6(%EWPV^rx9dkgO@s49)qTn)82B($ylnNG>9)&+iyOh(ql++Ee@EU zAB2}%6D>T`b$*h)CuLo1+k)Rj7~TCfseo^EYch+9p))Q;a)OUmQHl~C4wUqMm)9LI zg~i{K=Nm!)ep7Am(y@3?PEh}Hz=|r0V9u-6S>Wze6HkJoIW1m_F; za~HNh9}Fv9Q#Lp_BD%VIpVHGebxOB6tvDg{r5L26n!;&74Vaqw%frk8xzSp6O?HkD z*Nf7~vNHQ8RLv^I`n;V#G#da3qFShP)46tftn~mrGBWZS*JnOa27>LVZDBbvBvH%< z^T|P78n*W#@@bsi2*+e|?dbf_c6YSyQJDpIc#_5Mwl)w^!m9Y2Ed2@$9TcU><$M3M zV^NBG2%PBSi>RxU#>B+9?z9qtR!2}**Azr(9G~J7?_kxaR1I|vq*)J0`8OI__{EbU zpMpGC=@cer*CXC;>oTw71~`DRyZQR+zAKfl-fA^z`#JotQXd#b8?kucn_x- zeWDP3AsrmbmXGj~Z0S~ztwwwMdnF|8GnjKEkSh}yztIRaL7(8@u#>eMvxeX2ClX5e zW_nAnIj2R|gy-&dbPSn%Rxe)zj|9M^nCIo{jBhjWwy5*m zFypbjahI$wA|Y>Ov7Kw*nFSi98;d^@6+zhYgIN=#&XW;A0tNs|FLFDxFSD5WU1qLM z|1^vGu?Ps1X+eDWPv9n15C^71|3LCutlOE+jL@UAL#K$S5%7YBb4`^Rw*55l{Uz|X zzk?DxZ*>Kg*ncNBhms7Ju^AVsWEeRO7&5%nh?o;%$xv7CZUemz0*d7>wuspA=`s6= zXvttZCML_{!r@Qe8)mTXqnQQe_a6Rj18$&7)&8vqELvTlVTg`_VP*eKG6Wlw;Ga$| zHl{7yzPzBzp?IM<4&X*|$|L^eH(t}3Nzu5Pt}Ftj&BI|FU5@c-Ho z_`lfZ-xnh`{oez74&6mas~#YShl`;s2ukf8!+8{PDvp>Q z9)iZkd_NeA3LT5ym@#R1BQYy0$MyRQ4a2gfU0s72)ysU~^Z_&_4b*CYLEkyn`ba6f zoIuxT(j8nVM1eq0fld)EIOcgRXBj|RUd%M7GG%8T;9v|{SzL1RA9~2paqR4~zC3g{ z?8%f#9UB{eEP~>9cg)DBFnPq~+jjyY9GVJQetYjP0(n=o9Q73GZhU}PlHh7p{0Z5n&M!X8~i zoc|pgNky*3Qu6BR(*IE|Rmph1zO_FT!o-sOfEYu^;S7(>*6WEc>+$sBFzmoKZ{moI zGDW#65&ew1yPK=R$aQ|<7Q?wNASXW<4a~?OA{HPjwdyG;kz-zm1dS@>1fvn%22{er zNnjk|powR_t;6MqOOaYqatl>G33`0&9qHMNVH<|8?vcMPB&(UmAj zni6bqGu0;KUTl#Necyd>CJ*@_nIUt1zR<21S3}t6{|lNh4e1#f7iX?6xvL$v05HV@ zT+J2(&@5VPo^Lg0)G`AxcEv4X>>lR4ZG9vX?4$~0iNT4%%LK{?s7+ykg!(Ordt8~J zxhYKZ^9!o~!ifdcJAArDD%V_Oh+;uDl$mJ$Fw0TVM69#RC*>YjN@T zYl8W&toFcuBb~zy{U1!#g@`&S85s#~iQd~C{~bY#`Vo3S;ayx=nJAsIk4SKfPEUV; zjrz#SN&*j`iJG=7BL0ox*;~FubY(-X=Jtr}?qQ_+9wl9yglf!d17Ba%@c8(q^Ajw7 zy)2OW3|_tYIrP6EME~9F7!rxJf|M};uiD$&DY?1hHa1Wc6k|T;yPE4Jr%kYVoZ3F5 z+UxRX`&mjD`Uugxo_+kYurH{o$>4^U_XSA9d|2*M0C-gluMI7Pt{-Z;@Ro}JKyz|( zVt=qeX>DE1>%7mixye;iTk9Xt?=Tcr)^p0nb{`L~p_%s113e9O(s(|kqGWd2_is&N zEP;XJeD3(D=`smj&^!%`Y;e8E@lXqipbHzT*%x`WLPAMEOu)kmxz+xc^AX=DuTP_h zy%IyntWrY#<^ghK#AbU|6j+0;&<6`i5F$=aoQEM=)HJKmS~58%tgJ*p@Ip~7`*b?{ zvfSC)8b~JtUfrng-{Y&)ovVY#i3gB+#E&1oM-Sr!HFtlAVRuJABp8h>fl7Q&{Ri>F{|CPmbT_pDR!NA!HK)pJXW_tDg6FJ zkMHgVFRqk3^f2RrmPv`RJnvSG0w5rIKxGLuSwYDEJzfxbc6N3ksKN%qc7}Cro@+j9 z@9s`XOT%Gdc?5x0SM0|R%WoJE23e=3YYOO?*7ogRa!f6h={SHge9-;t#n%YE**?n5 z9K;PcSS4O}n888V))m76Lc`=wpFVx4uNE&e-X0Xdfph%jwIHL<-+Y0#ju2%JSs5;z z&qxy*@Fp+(?gC#Lg#9GjJNe(ZU$T*q4Cw@cLxCI;o1O&eV8%o=*IOKd;4r^!OS-Mk z4>`IF2wx=d{FrPOsuMAXyxV%;eBVxFiV)lCY!@&Fio%oE-57lTX z+xC!bwC9*wssnulsWL6IXG}q|9v81kP%f{aAP!huSY-kN0?Q2*p*wdZd7X-b5A8|$ z9<{U_hkqaH8Ok!JrmD&y^aA&~&|T|NHJ`?xbV5Rb zsj0-&Gzo1b#)BZ~OaeR`YCgX4c9+K*FWuY(0eVX&=vo(&-7edNsP%VtP(eY2gBUs*T##-*QxnWudyUc->SVR6Ps&9Kjfc9rzd7vI zo`;7Uu-mOEfcB{WjDFDXz}SiTvM09?1lo=izX5+*N_ycTcKZb??cI z8~FdE#6=Zcp9n;@(51-!uSfKg*)4Ax1h=@KQCpiZIXT%QR0SYXE0Ffh&OzQ-^|?)9 z&|AjpQWiO+5Y2@X9^TN~+kS_L`B(0n1CV#WU5uCm5nw;u35db}?=dGQzjB?hh6oQm z>aNW7LF#|nZsUCUv!Sk}tjroz>%kQ~Wn`qLTVbuN9D}6^24`~veE;vT5f0<bQ_z4=0Y$l8kBK!Wvw)=<11lRC7 z5519(Ah9GP+vo)_3fvT@c!NH?evNqzNS;O+85tO8f~3~ghAuj##wc8vD_7IOhOo<( z)YT{0_|r_P2_Gy+MA&?;sdLy3FwAka}Q$BnBcK=BZc3>lGoTA@7 zq!yyyQC=l8rJ@2S=w;e_2teM%gg11>WWfhnHLHG`B$RL?=E*_)Ib?chxuK)B_1=8$ z`T6-V2xY=EI0l!MaRDD3X;s6r!E;IRvvB+2%a>^-<)#M(&w z(ASZi;>nvhVKJ7(sXv-_0j^jXZ}mg5ir|by=Rjz_GbCzGfl{Xi7+=0rPY#yh*S(Tv zX)r!QsY|6`g1n^HN=gq@RkgpxRfA{PH8Pc-$>@9cqU~9>rXE&!1kxm%J--1F{l-MZ zN_pn~BVJx1K*X+^Dc`;mqBorT{S!k#ZvsCN)F$Ynra7gi<@{|H9{2Lvqun`dH9)*q zQu@8K(8g;ue;aV(k4D<)pPl;R)4k?Ln|g@Nmz)yP(juat8uQnP^xL;*PQ=6*{rzid z2EsdLI5^oK-fQJ61^;z7U)(ol2@L8kDapLsiRzvB_b)mg9xXnFa3q`>5x`l627C+* zjFy%bsFo+xC^tQV^qLi<0swIT8}J>?p#05a&lm<=5jh0~ud&=b9%G$deL*%hgZcUK zfKcD)hn#)9v=T^7At9M*Vz$RfWOf~|lbq)3*Ci7YGKu>jsLx@5$aZOJx)sA`hbf;P zKf)U{2lg7n{t*+z(rtGW(J6iId5?^bzXlC1_@MTiWlsVFcb`6cmYkcLy|)+vnbc#) z&Bch;57kV3B)>y!c4Y$Y>mfv6eu>2>b~x(}3dBTdZGER?@b7#&m~`cZm>4z&hP>3P z=z%eV!F(EDJTd?N!GQrW_~+?l6H_ZHqUYyzp@!Pn9?|xcSxCmpikOMXJRvMBaF_NO zCK#f)xC(qSe{{R9uwaGql$5l+b`>S%488ybh0ME89G% z9`ObEnO=h#IsAGW78Xc0ivenXe?UNlcYnCx`QVki#xaZ>GP2X%axN|&uoC2joZ-$+ zf6H&$d!+m^qoXPSxAqSS*{nJ4Ad*I>{Czt>w&m5=V{zE>QHvI>mJ#Q9mM_P3#UbW^ z1H)EhB|Iuh(#Z+u=QuY2bOOT4@kmW6neT$i?~H~yr`-uj)sMBce8rZaz!DHA4uTrs zcxL9igW&RV&z2UIbXi%-r^b9RDo+JyO6Wt!hx_Sd!acEIJ9c`@Lb&IFbo@WE=Z^5! zJ32b(nV8aYH>lInGUyp{HirFoc6LC}l!}cFm{w*~&$1K#!`K(H@>%%#<%kl@7s4?rSKzWBp)NWTp+(fR)UAwA2{{LoVd!yXm>B-7_>0siPTfIa{7MX;Ho3+@X|+X-)nSgha)9KuGvrP7dBVWrhr)yqw%LZx9CT7ViFjEpf@XfRIvl z_nPb^T9|Gp+T6mxkFSs?&rW-Z6eJ|fj&N3tJgu&&$r*H(3P_ySW$5nSOz6eJ!lLGL zeqv=M?;r4+%d{407_7*c4P_h%#i? zpFZ^r#KbbNQ9jk11gpG6uvh|}G&21rr_=F!f{u&KP=P zpQ(wN&-nP|dV9xfmX6MY??1#orbP}9=Q|JR^f?SiynoL&wI-FPr)g%!xbX3Z0<0_;7RO4pZ2XjW*_i7cJvQ2U5_WA zd6u2y@ku|miV4dlKCX(-{MLOtO|5CphKkgdAbdJ($QGq#Wtn1&h>N3JS@lDG61YrY z<}E#q9^e!IevEOU^f3(=^`uHGEBgT!(Ku1PL$@ud zK78P7YBmRLUUXawI{H`L?s)fphDUpPuG#DStn%@(y|Bp5x9lHISNg{h^RrHC>XX^V zYkCt8?&q1(cBP?fCMZaxmV)v`W`3EiG_{wBf{z~>J~{bo$79FeVPU{?3Nm&nv*>u>!6@5A_=WnbOd_R8aaMuc-Lq<44W%mDK|n z&SwRK55>SA4+wsakC%+f?dQ|yG|^AP+9$=&kIDEz5jW;d_P_p5M>Ru8QN>82$Vk*@ z40iEC=D&*i$2Uu_6C13Q-~IhDz%t(2+LE!c0r)w~G;i;;qDXBA3*OU8gGs5JmKNl4 z5EkW;KN6F(*PbJhiVDgjuwJsg%ZQ|;#BEE#xj9&35)c8V=jSyTxVVst4&L6z0Je%n z`B?ePEkWLggpi4*3u+YuyI*D03jg3`vu9Xn^oLI;z zc>Thf#xbxs@E@dyZe3ok;gO8nsq_DvxO#+_EOQ=eraGrom#fsTa*sMz2_)=2pPe}B+f1K;$DRwn*WsuUox z{Q(Sv;ppVVJNM{bQ)x*_$vZ7A8OTdRI`(^Hq!kcyLaTNOkjSN>Aq9DPd1-U=7v=42 zprq>?$`{_lC&%xQhV-VSycmg*le9Pfq;!y!QYDu|8W*dOsLD^I1kYlg=NU_)DJf|D zD=)8h#1swf3=oTN936S)=I+0VzV}jG{5BZPn`l-~c&_B+WWIGN-Xj{HdridDLRNxs zU8MARC8967p0(I1Cj#s`^KE2ubrF-4SP!LU1W?hzXjme`ui8M zStZ93yj+hUB^gHwm#?%AqDq1}AAY%j?Q%2|8R^{7i30|dQe1qdaw9>e%?E>0Ts+ut zzC}u0GN(Pcl<=h<9FJjPZL$WaL}C?m!~}maNk~bv^7GTHs$$`;*E2DmmY(jrwr0Jy zz77SWpTB;2R#iEZki-_LIHPsl(9+`b^2WK1<}$a0M2-#3)IYMY*ghzoU&;7%c9wH? z3q?_nmO6Fa?$)gaqm7Hxy1G#1*1mP5X=&MET|wU4J6D2ZW@|qu58OYGVMF?B#MoT1 zyxZVWNQiIfZ(qz^Q&XhPn{;~;lH9xaezARhH*TSzprdcov9kI%G(2uaP`ZzpSr}-$O$F8Wyj+9eYmekY~q?MO1 zCv<$SCP+w;P~?9f3(q+v|x0qj<>;9GIs1|vc__KsQE*&D%MNJvPGjEqu?cCcw9 zynWxHX=}6GLOHmNYTqh;gOXAS%5S2g5B8na4JW#KWm~z_;%~dPiS!*cybu=VWJpN~ z7LkuIsXx%C;2$erC~?gCCHgkBZzwe*uRCbj;1Ls3RZrQ^R^60ejS}X0l}AAi+lO5D z?#)WRdUa1!RP^@k+js;7uN@u53%DkruekbxDT4aiC_m-pno+mPp+ zobT05lZ%Ro5o1>FH-;ETE-$riqh<>j8fBh(=;-jHzEHkY>YNZ$HY7NU&vQHPi+I4z z134%jWh_l6Rml?9TxSoM@#>-MBP24~`5cH+V`QOxl+{);I5gx|wvq_;%J?Y*){tIfOFPb2Z|&uf+q zkUaxK$gHx6;ok$}64`=jYgxXij~)c&!_}u64m!d6fwiA+2m_6H`-lP-3>awF3wED` zuTDAPAqmO&y2n5aL;}}s0jb=OJiI67$lgA4NDE1yNo8;-Z8sWsd+I93H;aqqOiZ5f zoh=Oy$7bf3u5lJ|W}Y%oi-#2y95Sr17mQ%iYezDgHj+Gvi1($-QCZhKkpkIePwQLzG9BNS?W0+N!f@;A+(AC0*=V2g@nb+}%K{0#Z9S8`02tQbitTJ4;5=r1 z$H^`xCdOxBdPOA0Bde!JMH`W|C#S6qoSwCZJSvjVd1Pm2mtgl5xZFiW--d?`dg6_L zR-RxpF?E9>_7C^JsI9BJpHu20sL!QtY-UDoSqaq@FE3{YatiJqTnY-#kFUXuP`y28 zXW!M->;n{F%n!CE+e7TzsHiY09#UT~Tvt~ITwaH2A75YlX|7;o+Glu!=+_~RSq>)` z*R{`Zb8}mn2?+^NVSE7Fv~bL9$S$}dCnu*FE{WRO-bj;QSy|u8%9LW`;*3}S6ql98 z7@MpK4tlQr>F4=de0uzln7b!qiJMJekMU40S4MfKtvwTiZ)|S9&_&!<`Sp@Eay_iP{HBLTTkU(WUN#a%_hzH#c=zu0 zeJj90dCba6;N9q7P!Nbw!gFIo&rjt1;sOI5{ckXq^Cc560i}Spsi~NIsDqHoBm5Q0S!KXqXELMlTw{giG+l#JOBz|Wcjqu?@?0TbhBOLzV~p{ zj+~L69=%p8ENOeC@Gp9?TP}vKJTf%o6BZV>-v%Ml$YW@G0qeT{ zWB>0TxWBC~ZQ%XCzy5#zwyuu;yPyAm|ImMbaE=yR#20ZLA^!jTm)BqQM|50V+5a@8 U*ql=KxB=g!Udo8)i|Kg%f8rS8jsO4v literal 34381 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