[小北De编程手记] : Lesson 08 - Selenium For C# 之 PageFactory & 团队构建
本文想跟大家分享的是Selenium对PageObject模式的支持和自动化测试团队的构建。《Selenium For C#》系列的文章写到这里已经接近尾声了,如果之前的文章你是一篇篇的读下来并动手实践的话,我相信你应该可以模拟日常工作中80%常见的手动测试用例了。请注意:我的用词是模拟用例,而不是书写自动化测试用例。一个企业级的自动化测试的构建不是单靠Selenium一种技术就能Hold住的。所谓模拟指的是只能实现自动化的某个Case,但是不能工程化的使用。在本人所接触过几家公司的自动化测试的实践中,有很多没有或着不是很合理分层和封装的自动化测试框架。Test Case中操作页面驱动的Code随处看见,无法根据人员的技术能力来分工,无法切换测试环境,只能使用单一的浏览器测试,对QA的使用门槛要求较高… …等等问题。
本文将会介绍如下内容:
- PageObject设计模式介绍。
- Selenium对PageObject模式的支持。
- 简单的测试结构
- 自动化测试Team成员分工
- Demo:博客园个人首页的实现(这个是骗你的... ...)
(一)PageObject设计模式介绍
Page Object是业界比较流行的自动化测试设计模式,能够有效的提高自动化测试的可维护性和代码的复用率。几乎所有的自动化测试驱动框架都提供了对该模式的支持(Appium ,QTP ,White等)。当然,即使你使用的驱动不支持,我们也完全可以编写代码来实现它。毕竟所谓设计模式不过代码的组织和协作方式而已。
什么是Page Object模式呢?简单的说,就是把待测试应用程序的页面封装成一个对象,暴露相关的属性和方法给使用者(具体测试用例的编写人员)。下图是针对页面的封装:
aaarticlea/png;base64,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4f13a4kWAADIQK5ocefO7bUvrSnIpgH40c4dm7/+uoFoAQCADOSKFoqivBvaefHihUJtHYCP9PX1bFz/YrtDofcLAIAiJV20uHnj+pZNL01NThZqBwD4hWuXBdECAIBCkS5aKMy4AJCBxsaGXe8FnbmCaAEAQKHIGC0URdm/973GxobC7gMAaV28eOH17a+45opoNFrovQMAoEhJGi2mJicPH/rg8KEP4vGxwu4JANl82XBs544tkUuX6LIAAEAqkkYL1elvGzduePH0t41MvQCgKMqF8+de+n/P7fngHddQQZcFAACFJXW0UBRlODZ0+NAHf19T9W5o54njn1w4f66jo50qwmq/9H3B94EqSF28eOHE8U9273rrhecr33xjW1PTd1654vLly4U+YgEAUNRkjxaqqcnJixcv7N3z7ptvbHttyzqqCOujNf9W8H2gClI11Zv37nm37rOPf/zxB69QwVAoAABk4I9oYejo6EjdtsD96uhzDxd6FyAv+isAAJCBz6KFoii9vb2FbsagAIgW8ML8CgAAJOG/aKHq7++/fPlyoZs0mD9ECzj19vYW+lAEAACS/BotUGyOPvdwoXcBAAAAqRAt4A9ECwAAAMkRLeAPRAsAAADJES3gD0QLAAAAyREt4A9ECwAAAMkRLeAPRAsAAADJES3gD0QLAAAAyREt4A9ECwAAAMkRLeAPRAsAAADJES3gD0QLAAAAyREt4A9ECwAAAMkRLeAPRAsAAADJES3gD0QLAAAAyREt4A9ECwAAAMkRLeAPRAsAAADJES3gD0QLAAAAyREt4A9ECwAAAMkRLeAPRAsAAADJES3gD0QLAAAAyREt4A9ECwAAAMkRLeAPRAsAAADJES3gD0QLAAAAyREt4A9ECwAAAMkRLeAPRAsAAADJES3gD0QLAAAAyREt4A9ECwAAAMkRLeAPRAsAAADJES3gD0QLAAAAyREt4A9ECwAAAMkRLeAPRAsAAADJES3gD0QLAAAAyREt4A9ECwAAAMkRLeAPRAsAAADJES3gD0QLAAAAyREt4A9ECwAAAMkRLeAPRAsAAADJES3gD0QLAAAAyREt4A9ECwAAAMkRLeAPRAsAAADJES3gD0QLAAAAyREt4A9ECwAAAMkRLeAPRAsAAADJES3gD0QLAAAAyREt4A9ECwAAAMkRLeAPRAsAAADJES3gD0QLAAAAyREt4A9ECwAAAMkRLeAPRAsAAADJES3gD0QLAAAAyREt4A9ECwAAAMkRLeAPRAsAAADJES3gD0QLAAAAyREt4A9ECwAAAMkRLeAPRAsAAADJES3gD0QLAAAAyREt4A9ECwAAAMkRLeAPRAsAAADJES3gD0QLAAAAyREt4A9ECwAAAMkRLeAPRAsAAADJES3gD0QLAAAAyREt4A9ECwAAAMkRLeymp6e9PpSZmZlC713xIloAAABIjmhhMTU1NTg4ePHixcOHD7/33nvvvPPOp59+GolEYrFYLBYbHx+fnp4u9D4WKaIFAACA5IgWSTMzM7FY7Mcff6ytrf3973//i1/84te//vU//vGPU6dOxXSTk5OF3s0iRbQAAACQHNEiaXx8vKOj4+233y4vLy8rK1uyZEllZeXx48cHBweJFgVHtAAAAJAc0SIpHo+fOHHiL3/5y5IlS5YsWbJixYqPP/44Go3GYrHr168fO3bs+vXrWUWLcEAIEQhnvyfRULkQ5aFoli8LB+ybCwfs69Gfk2oT4cAsNj7XiBYAAACSI1poJicnR0dHP/jgg4ceekiNFn//+9/Pnz8fi8V6e3tPnDjx3HPPdXR0ZBMtwgFRXl6eYbbIS3Peni2ioXJhDRDRUAY7lOu+5OG9dDd9ZXvEGS2czwEAAEABES00o6OjsVjs7bffXqL729/+Fg6Hu7u7Gxsbn3322dLS0osXL2YRLcIBEQhn1JTXnp17tIiGys1riYbKbeHG9oQ52pc8vJeWT0NXTn1qfsQWLa5dOntu14actgEAAIC8IlponNHil7/85d///vcdO3b813/91y9/+cslS5ZkFS3CAWPgkaOdrfYmqAJhdeCU6XfTi+z9EKbfTa8ynmHZmhprLGtINvrt+5VcWyBsiwYZLXLZK/0xtx1NJzE8+MXG5TNTE8YjtmgR3v7MUP/VDNcGAACAeUC00DijxZIlSx555JE//OEPjz766NKlSx999NFIJJJptEj2VjiyRTRUnmxjR0Mh9SdLm930Gmu2MJ5lfti8BXMvifZk05pNr7LslmVKRjggRMaL3PbB8l6sOxcy3kl6V0592vJpyPjVHC1siwAAACADooWiKMrk5OTIyMiPP/748ssvL3Hz61//+n/+5386OzszjBbmFr4tW3iMFvKKFpYGvP4k+zAr1/RgjiHqDx575Qg/3n0btkXe+2DrOkn9abmbmZr4YuPyxPCg+qsRLWyPAwAAQBJEC2V6ejoWi924cWPbtm2PPPKImiVKS0uNHx588MEnnnji1KlTN2/enJqaymCV1va0o4PArantGS08woKDKX6IQNgtBFj2yrNjxLIvaRZ57IPjvYjZXO9KUZS+H042792i/mxEi9bju3/6+sPsVwYAAIC5VezRYmpqamRkJBaL1dTUPP7440uXLl2yZElZWdmvfvUr9dYWv/nNb5599tnPPvvsxo0bExMT9+7dS79S81QKnVsnhJl3tDAWpWjxO9dk76FQp3RkMOZKJ5JqfgAAIABJREFUySJaeOyDS8eMFkSy778w5lSo0cI5BwMAAACSKOpoMTU1NTY21t/fv2/fvv/8z/988MEHlyxZ8tBDD61evXrfvn0ffPDB7t27Dxw48NVXX3V1dSUSiYxyhesYoGQ73OsaTSmihbZMmxeeaiXJhYGAeR/CASECAUuDP8WAqNkt8nov1h3LOlsMdrefrHlO0aNF894tfT+czHIdAAAAmA9FHS0SiUQsFrt8+fIf//jHX/ziF0uWLPnVr35VVVV19OjRoaEh9fbbIyMjY2Nj8Xg847W6fp1vv7KT2zRujws9qb/b7pBhvRdeNBSwtf9tQ5DUTgOPkGC9fZ71XhgpFnnvg3V6iPnyVLOadnFu14Zrl84efe7hof6r4e3PZL8CAAAAzAeiRSwSiagzK0pLS5ctW3bo0KGYycRElmNvPBrQ9mvA2gdKGaOoXK9Ya7mqlPX5LgONXO607bgxuMstMIwdCjv6N9Iusq7d9F7MT5nlzS5GbvaGtz9z9LmHvw3+163OltmsAgAAAHOPaJGMFsuWLdu7d29XV9fIyMj09PTU1NTU1NTMzEyhd1Mis7/eU25aPg198tzD3CMPAABAZkSLWE9PzxtvvLFz584jR45EIpHR0dGseyqKhEvfyVz58aM3zXO1E8ODR597eORmr/HIzNTEjx+9OR+7AgAAgMwUdbRQb2dhHv40MjKSSCQKvV8SsV7sapYjmmah5dPQlVOfmh+x3Y2bu+YBAADIpqijhaIok5OT5mhBrpCE8yKz5mjBXfMAAAAkVOzRYmZmZtKEmRXysHVcmKMFXRYAAAASKvZoAWnZOi6MaEGXBQAAgJyIFpCXuePCiBZ0WQAAAMiJaAF5mTsu1GhBlwUAAIC0iBaQmtFxoUYLuiwAAACkRbSA1IyOi6PPPUyXBQAAgMyIFpCd2nFx9LmH6bIAAACQGdECslM7Lo4+9zBdFgAAADIjWsAHWj4NHX3uYbosAAAAZOaPaHHnzu3GxoZg7fadOzavfWnN6lXLqKKq55958uPnHn7+mScLvifUPNfal9bs3LF5547NXzYcu3njeqEPRUAanK2o4imOz3Ale7To6+sJ1m5f+9Kaox8daGtt6ehoH7h1ezQ+ZanxqdHxqbE5rrizEtNzUeOpa2L2lchXTTprxlYT+aopl5qcs5py1nS2dS/zms6wZrKumdzrnntlScm6FEvdvTvY0dHe0dFe99mRjRte3LLppY6O9kIflgAXnmer/J2h8n4Oyv0sk4+TSD7OHXNwjsj+RJDbMX/uju1ZH8MzPVZzfIYrqaPFieOfbNn0Ultry8jYZP/AWFvX0KXOu5c670Y6hyx1dShydajVo9rU6rJUe1fMXtFYezR22bW6Y5e7Yz85q2fYXB1q9brXld7hK3326uwbsVf/yFWP6lLrmqWi10btdX00en2026161Lphr94bY5a6OdZ7c6zPu/oHnBW31bVbnnX9tkvduDPuWjcHXWpArbv2unU3YamhxK2hxG2PujOUuBOz12Bswl7DE4PDE3e9a2jEVpO2io161rBaY/YaGZuyVHxqxBanTTWmlr0JMm0v75aE67nf6xSe6kyc7lyb0SnTfhbUTmOKoty7p/T19ezcsXn3rremJicLfXwCkmxnq/auWOozlPPEZDsfuZ6JUpyDXM8+tvOO7VzjPN04zzJpTy7O04rtbJLBSST9uSPt+SLtOSLtqcF5RrCdCDI4/qc/8tsO+GmP887Du+2onsnxPJNjuNdxO8NjtcLxGSaSRot4fCxYu/3E8U+mpmei10fVRGEU0YJoQbQotmhhzhgXzp/bvm1DPD5W2MMUoHicrdKeoYgWRIv7KVpwfIaZpNFi547NFy9euDs80XZ1yJYriBZEC6JFMUcLdaBUX1/P9m0b+G4MBZc8W3UNuZ+kiBZEi6KJFuohmuNzkZMxWtR9duTLhmODwxOXrty9dMWeK4gWRAuiBdFCUZQL58+9+84bBTxSAZazlddJimhBtCiyaKFwfC5u0kWLvr6eLZtempqeab06RLQgWhAtiBZe0UJRlHdDO0+cqLt161ahjlcoZvazFdGCaEG0MB2iOT4XLemixc4dmzs62qPXRlvUXEG0IFoQLYomWkxPz8Tj8UQikWG0GLh5Y+P6FyOXLl29erVQhywULfvZimhBtLivo8XU9Ew8Hh9PJDKMFhyfi5Zc0eLmjesbN7wYG51suXKXaEG0IFoUVbRQc8Xo6Ojo6KiRLlJHC0VRgrXbG7443t7e3tHRUZCjFoqTy9mKaEG0uH+jxZTt+JxBtFA4PhcruaLFieOfnDj+Sc+NMaIF0YJoUVTRYnJqemxsLBqNrl27tra2dnh4eGJiYnpmJm20OHfu9Fu11e3t7e3t7Z2dnQU5cKEIuZytiBZEi/s0WqjH5+7ubtvxOW204PhcnOSKFsHa7W2tLZc6h4gWRAuiRfFEC+O89cILLzz44IOPPPLIW2+9NTQ0lJiYSBst+vtvrn15Tbuuv7+/IMcuFBuXsxXRgmhxP0YL2/H53/7t34zjs5EuvA7RHJ+Lk1zRYsuml65f71eP1Omjxd5KoVpU3TCbaFH3pBBCiCf3Zx0t9lQIIYQoqWnUD+t7nlZ3pWz9We2Y3ri5THtOb/0yIYQQyw45o8Wx5UIIIZYfyne0OLJKmC3eebow0eLESiGEECs/JloQLdxzxdT0jNpf8cILLzzyyCOvv/76yy+//Nvf/vatt94aHBxUe95TRIs7d0dfeL6y3aQgxy4UG5ezVYposS95tvpyNtGi7ikhhBBPHcw6WuxZoZ2tvtGjxd4V2tlq4znt5HJqS5kQQiyu+bZfPyV96DzFHFfPexVH8hUt2rY8IIQQi7e1z3m0+OwZywmx9M0LhYkWDVVCCCGqTvgmWqjHZzVXqMfntWvXGsfn8URCTRdeh2iOz8VJrmjx9zVVicR4htHiveXJ48TLpzKIFt9WLxRCLKr+Kudo0fhqqXp82KMd1iPrS7RdWXZIO6arYWPh5kjHnEaL73aWqMkhGS1aX10s7HKJFuffKBFCPPDGWaIF0SLf0cLIFWvWrHn00Ud37dp148aN9vb2devWPfbYY2+//fbt27ft6cIaLQaHJ1avWmY+dfX29hbk8IWi4nK28o4W5rPV2lMZRIvTOxYKIUp2fJ1ztPhG/ZJLVO3RokVko362Wn5YO7nsWyGEEIu2RLrmNFqYTiXu0eL8G4uFEA+88V0+o8XlbaWOE2Iu0SJSWyqEKKu9WAzRYsryvc/777/vcnx2jlw1HaI5PhcnuaLF6lXLFEXJLFrU/UkIIUp/vkgIIX6+sSVttPjqlVJhiRY5DIhSj/uibP2Z4Z96hn86U7PQOGY9Xd/RO2yOEykHROUaLU5vLRPWaHFgpbYjJVtb9aN/66srZx8tzm4rE0QLosUcRIvJqel4PN7d3a3mivfffz8Sibz44ouvv/76pUuX1q1b97vf/S4UCt26dWvCPDIqXbS4fPlyQQ5fKCouZyvPaOFytkodLb5Sv71KRoscBkSdrVkkhBBlG84Od/aNdGq/CiGEWHHsav/IVSNOHE49ICrXaGE+lbhGi3P6E/IYLT7Wu4seqL6snxoub6ucfbS4WLNUFEe0mJxMHp/VXNHa2up+fJ6c9Pr2h+NzcfJttFBHQy2qbtB/+NKaKL7caPqmYnndruSXRkIIsfCVS6Zei0vr1GNtRZ16BP9a75TYHY1djsZ2VyRfqH9ppH2HtHBT5Kee4cZNZUKIhSXGCKjhjrNq2KjaY40ZV/qGr/RFNuhfGi3aXGONFpGNi/VFW2qMw70aLfavML2hD0e6ro3sXynMSra2Gkd/U66wnAPOqFFEtXjnGe1McEIdz/X0R22b9R1Y8fFY382xQ3+2bmJbW9/NEyu0J5xYIYR44I1zA2PJs4IqeW4gWhAtPKOFer2RdevWPfLII7t27YpEIoFA4KGHHnrsscdef/31H374Yf369U888cThw4fj8fjk5GSG0YI+d8yDLKLFPv0ktS95tjJHC+1rL+3gXrfbdrZ69ZKp1+KS1kNeUadGC/Xso3ahG73lwjjj9A5f6dNOQIs2Rzr7Rk5uLhNCLCrRRkCd6h+5ek4NG1X7+kccvRYRow+8ZOtOa7RoNS/SzyBatDhkOje5nkoWb2uzRYvD9ie0q+eLD/+SfHDlJ+r5Qj+tfHL5tQfUJUu3/Th+0xj1VPrmee0c8bm6VlOusJwavq9emlx76Zs/aCeCz/8qhBDir3Udr+t/mb/WT9wdnvisyrKTpTUdQyMNanipPNZQKYQoq20ZmRwamWypMa25rPaSD6OF1/H53//9343j83/8x38cOnTIcnxOFy04PhcDv0YLtX/55xtbIierfy6E0cus1vvWQ3O6aBHTj+zWLFFRZ8sVKjVdaNMtnq43JlosO6gewav29A53HKoSQo8Z1mixZ4V9hUKLFsl+asuiw8kOa8vjH7pFiw/VKRZlrza5TOM+uNK+EiFWHTRFC9uiQymjheaBN84NjNnOCkIIIZ75kGhBtEgZLcYTidHR0VAoZJy3Hn/88VAotHXr1t/97nfV1dXnz58PhUJffPHF+Pj45OQU0QLyyDxaGGer1lPJs5URLXY5zlYpo4VpOG53LDnN7+n6jh5LrlBZTjor6o2JFssPqRGial//yNXDVUJoMcMWLfa7nDLUaOE27FaPFoccr1rx8SyjhTlXqFZ+kowWKTzw+uWBQWOKxdJtF12mcX9S6Xzd6k9M0cK26LOU0UJTVtsyMllnfZoQQoi/1fkvWowbx+fW1lbj+Pzaa6+Zj8+ff/655fhMtIBvo4XWv/zyyaFIZ8vLtjFR2uHb6HduWbexzm1AlGmuxbfqACfx1AHTqNYDscvawKfS9adNUywq6pI/l9Q09tQ/JYQQVXv0GRfLDmlzuBdujtgGR+l909oRv/OQdgRafijZT611UxzWFx02vlUqe+XcSNe1kW/VnoeVx5wDorRfxaqDzitENe1Uk4t69O9p1n4tea01GS1Wnui9Mdb7sZZPNp93HRClRwutv2JMGyArxIqPTeNltXMD0YJokWquRTweHxsbi0Qizz777B/+8IcjR47E4/H+/v7XXnvt8ccf37FjR19fX4qvxBROXSiQjKOFdrZae2qo9WrLWv1spUULdQagEAtfaWnvirV3XVr3Sp3bgCjTXIvT+tnqYOwn7ewjnjo43KGNy9UuJaJdR+Tp+it9+nSLkpqT2hDcqr16D/nyw9oc7kVbIldt0eI77ZRU8eFo9Nqo/r2VqDiSPJtUHBntuT7ao1815OmPjDNL2ebmsd4b+unjzydmMyDqgnoqKdt6IX79drxpe5kQQvzlRDJa/PXzG3fGm7dr/QN//mz85qA+s+Kvnw8Mjp/XOiWe+dh5haiWN9UOj7/UJW4PJW7rvz6w43IyWlQ1DMYmButWCyGEWFodcR0QpUcLvb9iSJ2MIUTV8cnY6GSsVfu1dOcVf0ULtePCOD4//vjjH374oevxecJ8fCZawK/RQrs2VOV7nUORzqGGjVpm0MZEadfiqHw/zVwL8zTuS+tKhFC/HzpQlTymH3D58kGU7GhMTreo2qMe0EtqGo2RUZsjWj+GNtHCFC20LFG1R5trofVULD80oseMqn3a5Irkod+IGRaLa751zrVI0WuhHv31QVA9N/ROjJXHTQOi1NGx2q9qR7ZXtFjxsT7RQo0iD7xxTp9ooX3/9JcTRAuiRcq5FlPxeLy1tVU9b6m5IjExkUgkent7X3vttT/+8Y81NTW9vb0TExPT0zNEC8gj02ix13I++lI/W32lnpj2a0t3pZlrYZ7GrY2JWvjqpZ8O6t3jPcMdB13PVjXf9BlfaVXtVX8oqTnZN3JSTxRql7j6lZYlWnyornDVAW2uhdZTUXHEuALhqoPaXIvWTYvVM8hoz0fWixOqHnjj7CyixcfPuK6qKTkgavzGnfEbn6hPe+bjwfGbg+Mfa4OZPk/Ta6EGhtI3v9fPCFonRtXnpgFR6lmgQf21sj5VtKg8ph/8j/1NfYI+CGqyTvu0GvwVLdS5cOrx+fe//712fE5MjDuOz4mJicznWnB8Lga+jBbv2XqQNdqYqC+tSSOzaJE8lO9+tVRofdCmSRcu97VQj/VlTz1dJoRYuCnSYRzcS8pMEy0s0cL49ugbxzRudQisNvjVOrVOuzKgqNqfdhr3d3pfhGOuhfHMvEcL43xAtCBazG6uRTJXJCZm7t2bmp5OJBI9PT3btm1btmwZcy0goQyjhdfZat2pobarnhcXSRktjD7zHXs2aWcfy6QLl/taqOegsuUryoQ+6aJTGwdVZky0sEWLb+3XCElO406ed7RocdyYa3HmNa3n/FDO07i/0+bvPfOh/ayRcbS4qPdFOOZaXFA7NOYgWrToT/B7tLAdn8fHxxOJCfWyfsbx+amnnmKuBZz8GC0++5PrsVoIsbxulgOijIv9idKFJUIdAXXZ1Gux8NVL+mVnq9TBUT91x8wDW586qN4yr36Z0KOFNtHCtdfCbUDUIdMIKNuAKP3nRVsiaqL4dmvVK9+5XiHKPLXOSBfHKxbvPO0xIOrpj0Zz7bXwGBC18mPmWhAtUs61GE+MjY0dOHDAOG/NzGj3dlXTRTQaPXDgwMmTJ8fHx6empokWkEdm0aIuxdlqlgOikn3m6tlKu1Ch0WuhD8QdbtxcteGsdjVC8xw/7aohaopQo4X+lZZbr4XbgKgjyZ/tA6L0XouS19rUaHF22yrn2Nqsei0Wb2tXTxNN25/Z+n020cJ05VlTuvj8L6VvXvAYEPXXukSuvRYeA6KqjvtsrkUiMWEcn9XvfZIXDZ9KHp+/+eYby/GZaAFfRgutf1mdaGG7arjW6eycxt3WZXQ9q8fxS477WmhjoqwH9Evr7VOrS41ooX9LJLSrc/QMd5hucGEc363TuLWfbdJN405eOUpXpkYL43AvtCtEjUb1CGGxeOdp12nci3eeuZEmWvR9bNqE5QpRyYvPukzj1k4PRAuiRaq5FonERDwe1/orZu4Z0WLm3r3pmZlEIhGPx1OctxROXSiQjKKFcbZyucpI5S6PadztXbF201hc2zTun7qTY6KESN651Xz2MU4TRrTQ724hhKjaq13o3HxBwshVZ7S4dsy1xyXdNO7WzfZF2rQ986nEOY27fyDebxoBtXhb+7Vb7VsfsK8qy2iR7LiwKH3zgus0bu0iUamixd361cmnW64QlTz4u0zj1jox/BQt1HShHp8nJibNx+2ZmXvT0+bj8xRzLWDmu2hxUZ20LRZVN7jd6/TJfS4XiVq4sUW9xp9xEHeLFvoXRfpoKKMsF4lSL/mnlnE7C3Woa8+w+Rodxh0tHBefTaYL/TIdxsVnjUN52cZzyQFRzovPqnO41YuOm29kYdyN+6Dj4lHqxWctj6883mO/+KxbtDBdJ8orWtiv7/HnE9zXgmiR4d24JyYm1fOWLVqofReTk5OWa48QLfD/2zv37rbKA1/vT3BmOl+hHyH/ZhGQncF0hjLTNWt6VqfnuFAiCh07eI6g6dCWCSkOJOHmGLCophQ6ISGUQMEmbgyRcr8pl9rxJbGTyPElxIkTS74ovmWfP7a0te/akmVpb73Ps36ry9K+aMsp7/s+fm/ewIVa9ORqK+3a6JraylAxZeum5ICm3rFSC3WdqMxoKHVfC90iUU915PZTUrezWNd6OLuHUnZb7lwtY1p89iu19gv+ybCvxf7sodptZ/Y7LD6rzOE2VCXWaqGpRywXn5V+3lnYgKhs1fCZ3iIearl0SzsISqHhL9mKwFEtNOtE2amF0S42dvlxXwslavlsUIvl5fuLS0vzCwsLCwsOu3FTPouJ79TCtGS4ohY2++VZ7kxk3Pe0iC3zTNsVXc6qhXnTIsct86aNGdNtj6qZ1W2zG3duPyN1N+6ZhHl5KJu9jVztxm1KIVvmWQS1QC0sY1YLY42FWoBnKGTLPIsaKs9u3DY1UTFb5tnVOGMWO7Q6bplnXblo/mK18WPn3bhtK5H8dccKduO2qh2sqga3u3E7lf/5S35Dge99tXBZVqMWoAW18I5aWAyIUvupUQvUArVALcA7iK0WFgOi1r3e57wbN2qBWlA+CwJq4Vm1qN16Kk+hj1qgFqgFVRdUBNRCW1tti9tUKKgFakH5LB6ohXfUQjcgyhzUArVALVAL8Ahiq4VTtYJaoBaoheCgFqgFaoFaoBYAhYFaoBaoBWoBlqAWqAVqgVqgFgCFgVqgFqgFagGWoBaoBWqBWqAWAIWBWqAWqAVqAZagFqgFaoFaoBYAhYFaoBaoBWoBlqAWqAVqgVqgFgCFgVqgFqgFagGWoBaoBWqBWqAWAIWBWqAWqAVqAZZUk1q0PyE1/AG1QC1QC9QCYJVZmVq0PyE1fIBaoBaoBVQj/lWL9sdz+/U0vI9aoBaoBWpB1QXlohC10NVWf0AtUAvUAqoaf6rFrgZJqnnpcLbgPtLy+NYe1AK1QC1QC6ouKA9u1UKprY5kq6QjLU9kayvUArVALaAq8aNafPm41iusBkR9vbVG/RPRB1m1+GBD9r0N7Urx/aH2HdQCtUAtUAsAd7hTi/bHpZqXjjgNiPrmFbW2avwwqxYfBrPvBduVakj7DmqBWqAW4GV8qBa7GqQHWrqc5lr0bNnQ8vXVqb6rU3/YIK3d2tN/dap/d4P0QMs32r8P7W6UHtj5Db0WqAVqgVoAFIgrtVBqK6e5Fj2/3ZCpmD7cIK195WKmblq386C2DtrTKK3beZBeC9QCtQA/4E+12NDudhr3Rw3Shvb+q1P9R1vWSg0faNXi6M61mr8SoRaoBWqBWgC4xK1abGh3O417d2OmR12pm7R10LGda6XGD1EL1AK1AD9QpWrxUUNu1pyiFtem+nc3ZIZIqaNadzfmuqFRC9QCtUAtANxRMrXYrautMnXTnmzdpO24kCRJavwf1AK1QC3A2/hQLfLOtfioQXogMyAq12uh/nEoMzJKM2FOGRmFWqAWqAVqAeCO0sy10IzUzfVaqNO49+hHRg0nL3/cKK3bGUMtUAvUAjyMH9XibtfWGocVor7eWiNtaO/LzrUwqsXRlrUGtTi6cy1qgVqgFqgFgGtcrhCVqa1sVoj65pUaaUN7f3auhVEtju1ca1CLYzvXohaoBWoB3saXapFd0S/LAy1dhmncD2SOPLEh22uR63Su+e3RKc1oKOUdBkShFqgFagHglgL2tfhIV1t9bZjGnautsr0Wmrrp5WPa0VCZdxgQhVqgFuBlfKsWefY6ZV8L1AK1QC0AVouV7cZtUTGxrwVqgVpAdYBaoBaoBWqBWgAUBmqBWqAWqAVYglqgFqgFaoFaABQGaoFaoBaoBViCWqAWqAVqgVoAFAZqgVqgFqgFWIJaoBaoBWqBWgAUBmqBWqAWqAVYglqgFqgFaoFaABQGaoFaoBaoBViCWqAWqAVqgVoAFAZqgVqgFqgFWIJaoBaoBWqBWgAUBmqBWqAWqAVYglqgFqgFalExtRgdG7t67drF69fPjI3Fh8fi8Uxi8YEv4/EvT8a//PLsl1+eHRu7g1qAp0AtUAvUArUAS1AL1AK1QC0qphZnz507f/788f7+/ZcudXQPfPll3yftg59+3vu7Px3f8nHnf37w5fPPf/xvT0eOnR5CLcBToBaoBWqBWoAlqAVqgVqgFhVTi8uXBycmJtLp9Ozs7OTk5NjY2Jkb985dHY9fvHng1PQHB0bfeuvo/92870j3MGoBnqIItThx7tpzv9wijFp0PiVt3ItaoBaUz+KBWqAWqAVqUcm5Fr29fUNDQ3fv3r18+XI8Hv/09MTvzwy8F4+Hu86+1XL0qafeGxmZXF5mrgV4iyLU4i+x8//rb/5WsQsrtbj42wcklbWvXiypWnQ8mbt3467C1WLP01Lw0+LUon/7Q7nPXvdGP2qBWkB1g1qgFqgFalFJtZidS5+7PhIbGpqYmOjt7T0R794TPxfeH9/+1sGXXto3PHx7fn6JadzgNYpTi7/7u797actvn/vlFhu1qPntUaU+uvjyOpNdFK0Wexslqbb5ZLbGOdm6YXtvedWidvtZpfro/JlUu/0saoFaQDWDWqAWqAVqUeEVom7NzPaPjF68eHFkZOTChQt7v4q/2vL1zp1d3dpxUKgFeAmXarHh6f9QEnz6P374b09897vfvXPnTs4ubNUieWlPoxRsv5RIHny1Ru1t+J9cBdT+U/XNjxulpzqytY/aO1H78kml3ul4UqptPmk5IOqrDWpvws++ytYyX22QGnefbs30oDy9PzHe9+qD6nkbP76xPyht/PjTjZIkrXut7/qNmes39j+lHn96v6NaZH4em5g99UZt9ppnP8lWHJ88k33v553ZKqPz6ew3eu08aoFagA9ALVAL1AK1qPzis6nU9NDQld7e3suXL7/++9iOtuipU4MsPguexaVaPBv6zbPPZfL4hobvfve7k5OTv9j0yxe3vO5OLS6+HNx5MJG8lEh+GJTWvnrx8nDy8vDFl9dJP/1YqYM6fipJWbXofXmd9OTe1OBIavBk69p1rYdGUkN7G6V1rYcs5lr0bn1Q2vCJUr/0bn1QemBHb1YtJOnB1qPj09fGvwpKUvBPhl6L/UFJkp7en61W+rY9KD21T6lN+rY9KK17vd9WLc6+s+6hd07enB2b6N/xzDunJmbHJmY/eUZ68I2BsYm5sc+elR5657Suvhh47SHp6c/mbtyeu3H+nQcfeucMaoFagOdBLVAL1AK1qLxaLC3fn56eicViIyMjz7a0t30RZ18L8DLFDYj6zne+k/MKJ7Vo/6kk/XSPvib6uFEKtl8eTl7+uFFatzOm1kFqr8XeRmldayxT6fS+vK62+WRqaG+j9LMOixrnk0bpwdYjahVzqvWBB1uPZtSi9pXTmSpmz9PSutf6TGpR++qZbLVABngMAAAgAElEQVTy6UbpwbePqxVK/O11D75z0n6uxc8+M1Uinz0rPdM5NjE3dvadB6Vn/6StL7KyceP23I3bA689lOm4QC1QC/AyqAVqgVqgFqgFQGEUpxZ/87ffeXHL626mcee8Yk9j7l1VLZQfzGqh58m9jmrxs680VcxXG6TG3eqAqGwVc+y1Wiu12PjxDY1aPL1fU6Hsf0rauNd2QNTs3mekdW/0j03Mjn22MfegilooHReSJKmCkXmZ4+k/oxaoBXgd1AK1QC1QC9QCoDCKUIuT5xOKV9irhWZAlOoV6zIDonS9Fhq1iG2rzanFUx2mesdmroVTr0WBapG/1yKnFqOfbZSe6Rz7bKP0UGZAVK7XQq071JFRnz2rTLpgGjdqAT4CtUAtUAvUwhNqMTkz+4fTpw+dPLlh68eoBXicVdgyz0ItDr5ao0zmVuZaZIxiuP2nkuVci44npexcC029c2h7rdUKUV9tkOzmWlirxbrX+izU4sb+pyTXcy2yvRan3qiVnukcy861MKrFuXcezEy66Hxays61QC1QC/AJqAVqgVqgFp5Qi9t3Z8OfxF/Z8en3n/1v1AI8TnnU4lLi4svrskOkgtnOiuHk5WM711quEHWyda06eEiZxj2qrj+be/+waYWoB3b06laIMqlF4vTb67QrROmqldwKUete73Pe10J6pnNUmcadffNnz2R7LXLDn2pfO5etMs6986B6LdO4UQvwA6gFaoFaoBaeUIvZ2YXTp8c6vrrw/p/PnOobQS3Ay6yCWhS5G3dsW+3abb3e2407U5uwGzdqQfksGqgFaoFaoBaeUAtzdYVagGfxilocb10r1b58PO9u3KgFaoFaQJlALVAL1AK1QC0ACqOiaqHulydJUu3Lx/Ptxo1aoBaoBZQR1AK1QC1QC9QCoDC80muhrYBQC9SipGpxb35xfmHx3sJiWsk9NQuz9+Zn783Pzs3Pzs0vLi2jFqDFc2qxvLw8eH1KyZCSEWOujCR1GU1eGU1eLSTXRlPGjKWujaUSlhlPJcZTw+bcmHaf6zemr39rzIg5N6dHnTOhy9jEjGXGrXJDyS1zZnW5PXvj9uy39rk5ac6cIRMOuWORW3etc3vKIpO2SeuSTE8m03dscjeZvpsyZip1z5jpPEkaM29IasY200pm82VufnpufsYms1aZm1swJm2b9D2L3JtftMy8QxbMWdJmYdEpi0qWdMnL3VSaqgvKD2qBWlS9Wly48NeTJ0/uP3t2V3f3rjPdu3Zl8saurzft2rXp97s2bdq1adOuCxeuoRagxXNqMTMz0w0A4I47d+5QdUH5QS1QCxHUIpFIjE9ODk1MDIyO9/RcP9R75/jZ4W+OXtn9zbWd7T3btx/8/r+//83pQdQCtHhOLWRZnkrNE0KImyjlBlUXlBnUArWoerW4OXHrWiIxMTGRSqVGR0cvXbr0zaXU/t5E+4XBTw4Pv7e799e//jzyefzqjTuoBWhBLQghPo6MWkAlQC1Qi6pXi8Wl+yOjoxevXbs0Pj48PHzhwoW/nLn24Zme8OF4y+5j27YdeP8PsduT00zjBgOoBSHEx5FRC6gEqAVqIYJaLC3f75uYODw0NDY2Njg4eO7cub3H4q17Tmzf3vXe775eWl5mhSgwg1oQQnwcGbWASoBaoBaCqMXS8v2bExOnTp369ttvu7u7d398ZvNL7ZHIQRafBTtQC0KIjyOjFlAJUAvUQhy1mF9YvHP37vHjx4eHhze909n6yalkcg61ADtQC0KIjyMLphbpdHrOioWFhUo/mligFqiFOGqxtHw/NT1z6NChkZGRpp0d7/45zpZ54ID/1OLzwz2b2jrM+fxwT8VbOYSQMkcWRi3u37+/sLAwMjJy5MiRTz/99KOPPtq7d68ySiGZTM7Ozi4uLlb6GQUCtUAtUAvUAizxn1psauuwvHZTW0fFWzmEkDJHFkYtFhYWJiYm/vKXv7zwwguPPfbY+vXr//Vf//WDDz5IJBLJZFKxi0o/o0CgFqiFUGoxNTP7xbFjPX19//76Z6gFOONLtVhaWlxeXlxeXpQkaWlpcWlpIT03bacW7Y2SjsauqdRgS60k1bb1OH3QYEutVNM6aHdPu0OEkHJGFkMtFhcXJycnT548+cwzzzzyyCO1tbU/+MEPtm3bNjw8fPfuXdSi/KAWqIVQanF7eu69Q/GPP+/68W/+iFqAM75Ui3R6Np2eTadnJEmam5tJTt0aG77spBaNXYU3WVALQnwQWRi1GB8f37Zt2z//8z8HAoF/+Zd/aW5uPnv27J07d5LJ5IULF7q7u92pRSJSJ9VFEqv+xNUOaoFaCKUWk3fm3n///PPP7/5+4+//u+McagEO+FItZmeT+p4I6dpgN2pBiICRBVCL5eXldDo9PDxcX1//93//94FAoL6+/o9//KPSWdHT0xMOhz/99NMi1CIRqZNC0dV89qoFtUAthFKLhcXlqeS9W7enx2+lkjP3UAtwwJdqkUrdmZq6PTl5Q5KkiZsjI4lLg33xQtTCqA2aQVNN7XnPaezSqUVHk3pxQ0flW1qECBVZALW4d+9eMpm8du3a97///UAgEAgEfvzjH//ud7+7cePGjRs33n333R/96Eevv/46alFOUAvUQii10GZZCWoBNvhSLUaHLw0NnB/oOSVJUt9fj3fHY+dPdhWtFtoTelrXZ+dgmM5R52Z0NElS9lBvW420vqV3Xvm5BbUgpLyRhVSLhx9++Iknnmhra2tra6uvr3/44YcLV4tEpC7X8ZuVDc2buVFT0ZAkhaLRUOZAKJp5z3Ca9cXVCmqBWqAWqAVY4ku16I5Hjx/cd7hzz6HO3Yc6d8f2f3TkwF6X07gbOuZ12tDbVpPrqZifSnU1ZFTBcE7WH7L3tLmcEFLWyEKqRSAQ+N73vveTn/zkJz/5ySOPPPKP//iP77777op7LXSHFJ9Qf9S9qKur07wy/yhHI6gFaoFaoBaohZj4Ty0K3dciT6+FZjiTrX50NEl6f9AMiBpsqZVynRiEkPJGrna1WF5enpubGx8fP3DgwD/8wz8ErNiwYcO+fftWqhbRkK6zIXdMKw0ZtzD0aFhcXu00bXwynU4PXrmeP1evD169PlSKXDHk2sgKc9UyiQJyrbgMazOqTaK4XNdluBS5rs2Im4zlzYhDRl1ltIiM6eKCcVcZz8WOu1PJ6i6fwRL/qUWhcaEWlt0OLtVCSVcDcy0IqUTkaleLdDp99+7dU6dOPf7447W1tQapqKmpWb9+/ZtvvtnX17dCtdANkNKNa9KrhbmnQ9e5IcrcjaaNTy4sLKSm04QQu9y7d6+6y2ewRHi1MA12cnGO9eJRPa3ri1qKihBSfOSqVot0Op1KpY4cOfKLX/zie9/7njrR4uGHHw4EArW1tT/84Q/feuut06dPT01NLS8vu7ilo1pYdzu4VAv1tUBzLSr+/39CvBy5qstnsEN4tTBM0U4NtjSap3HrttjraV2fGwHV0aT2VBS7yi0hpPjIVVp13b9/f35+fnp6+sSJE83NzY899pi6NtTWrVsjkUg4HH7vvfc++uijs2fP3rp1a3Fx0d2NHQdEWXc5FKIW2Quq3i1QC0LyRq7S8hmcQS3m1fkS+gVkbc+paR3UT+POkmd7b0JI6SNXadW1vLycSqWSyWRbW5uyTV5tbe0//dM/7dix48KFC8qOFqlUamZmZmZmZmFhwfWNTWqRk4BEpE4/qcJigratWiQiIeu7VimoBSF5I1dp+QzOVL9aEEKqOHKVVl2qWrz66qs1NTWBQOCRRx558cUXL168ePfuXUUtpqen79+/f//+/fy3y2Fo92cmSGTfUdeU1Q5qctdrob1UgPkW1FaE5I1cpeUzOINaEEJ8HLlKqy5VLV555ZVAIPDYY4+98MILp0+fvnnz5tzc3MLCwsLCgutBUFB6qK0IyRu5SstncAa1IIT4OHKVVl2qWnR0dLz22mvvvvvugQMHJicnZ2dnMQovQG1FSN7IVVo+gzOoBSHEx5GrtOpaXl6emZlJ6pmenl5aWqr0o4Esr84uTIRUWeQqLZ/BGdSCEOLjyNVbdd2/f19rF9PT0+6Wl4Vy4Ka22tTWYXntpraOiv+HQ0gZIldv+QwOoBaEEB9Hruqqa2FhYT5LIctAwarjUi2WlhaXlzNZWlpcWlpIz03bqUV7o27DQg/swapbeJ2QQiNXdfkMdqAWhBAfR6bqgkrgUi3S6dl0ejadnkmnZ+bmZpJTt8aGLzuphbpUem9bTUXsoqMJlyClikz5LCSoBSHEx5GpuqASuFSL2dmkpOfaYLcrtVC2Zy1/Kx+1IKWLTPksJKgFIcTHkam6oECundg/euGwwwl9+z+8daXH+SYu1SKVujM1dXty8sbtW+MTN0dGEpcG++IFqoWyf2tXS60kSetberOHshi2dlU2dbXcyFUz4KqpXXdJ5uY1mt1jpcYu09axlneYn+po8tIgLuKhyJTPQoJaEEJ8HJmqCwrkXupOfNeO6JvP2vnDneGBo+EXjoZfcBAMl2oxOnxpaOD8QM+p/u4TfX893h2PnT/Z5VItsi8HtVKReT/Xsu9qyNmFcqbavh9sqc3dUHtzTX+I8eb6XgudWljfobetRr28t60FtSCayJTPQoJaEEJ8HJmqC4piauzq0fALpz5onr45YnnCrSs9DoLhUi2649HjB/cd7txzqHP3oc7dsf0fHTmw15VadDRlW/w6Q9A15XNnKqahP1N7qLetRtvPkOpqsLx5yl4t7O5gfJ+QXGTKZyHxoloAALiHqguKZvziyW92/Lzni8jC3IzlCXaCsRr7WuhXiFL9QT8qKScS2eRkwzh+KXdIM2ZJP3jJdImdWjjeQT8ui5BMZMpnIfGiWszMLRJCiJvIVF2wYoaOfHFg64bLB/+0vDhveYJZMFajj90wICqbFapFU7vlVZY3TzmrhUPvRFcDcy2IKTLls5B4US0q/h8DIcQvkam6oBQszM307f/wmx0/d5jhrRWMiqmF5YAozcQJa08wX2V585TzgCjLO+TS07re6vmJuJEpn4UEtSCE+DiyLL/7//73gTeatFHaf4QUmkNvP9/x4o++2vx/HM6JvvXsl//5L3ue+0HJaytXaqGclmv9dzUY5m3nBEA7w9tw1WBLo72NGNePcrxDR5PaU2Hz/ETcyKiFkKAWhBAfR5blF579ybnYV9rcutJDSKEZ7zl+6g8vH9j65NDRL+zOGTr6RfTNZ6NvPru16cclr61cqsWUflaGZgySdiVZ8/yHwZZa81Xmm2dPs1h81uoOvW016ltsiEH0kVELIUEtCCE+jkzVBStmeXG+/8Dub3b8/NqJ/Xbn3NJPt/BkbWUhIYRUMDLls5CgFoQQH0em6oKVMXrh8IGtG/oP7C5okShP1laoBfFWZMpnIUEtCCE+jkzVBcVy60pP9M1n47t23EvdsTvBLBUKnqytUAvirciUz0LiP7UodKVwQkgVR6bqgsKZvjly6oPmo+EXpsauWp7gIBUKnlQLQrwVmfJZSPynFpvaOiyvtdvflBBSxZGpuqBArp3Y/82On49fPGl3QnzXDgepUEAtCMkbmfJZSHypFktLi8vLmSwtLS4tLaTnpu3UQr+/qRc29BlsqWUlDUJKE5mqCwrEbviT+xNk1IIQF5Epn4XEl2qRTs+m07Pp9Ew6PTM3N5OcujU2fNlJLdTl/HrbaipiF7pNiAghJYtM1QWVALUgJG9kymch8aVazM4mJT3XBrtdqYWyXWj5W/moBSGrE5mqCyoBakFI3siUz0LiS7VIpe5MTd2enLxx+9b4xM2RkcSlwb54gWqh3Voos3dpT+t61VUMmwTVtA7mBlbpJUEz4Mqwg2nm5jWaPYasNiGyvIOyJap3BnER4tHIVF1QCVALQvJGpnwWEl+qxejwpaGB8wM9p/q7T/T99Xh3PHb+ZJdLtci+HNRKReb9XMu+qyFnF5n9R7V7l6o31N5c0x9ivLm+10KnFtZ36G2rUS/vbWtBLQixiUzVBZUAtSAkb2TKZyHxpVp0x6PHD+473LnnUOfuQ527Y/s/OnJgryu16GjKtvh1hqBryufOVExDf6b2UG9bjbafIdXVYHnzlL1a2N3B+D4hxDoyVRdUAqW2Wly6Twixi0z5LCT+U4tC97XQrxCl+oN+VFJOJLLJyYZpEyL1kGbMkn7wkukSO7VwvIN+XBYhxCIyVRdUAqW2AgBnKJ8FxH9qUWgMA6KyWaFaNLVbXmV585SzWjj0TnQ1MNeCEMfIVF1QCVALADdQPgsIajE/lbIZEKWZOGHtCearLG+ech4QZXmHXHpa11s9PyFkfgq1gAqBWgC4gfJZQFALzWm51n9Xg2Hedk4AtDO8DVcNtjTa24hx/SjHO3Q0qT0VNs9PCJmfQi2gQpRTLZJWlO3TAVYC5bOAoBb6My3We9WuJGue/zDYUmu+ynzz7GkWi89a3aG3rUZ9iw0xCLGPTNUFlaBsapFMJmOxWH19fSAQCAQC4XAYuwAfQfksINWvFiuOhYQQQjwSmaoLKkF51ELxikCW5ubmlXRcREOaBUNCUcdzE5E6qS6SKPbBCyYaKuvHQdmgfBYQ1CJvUAtCvBuZqgsqQdnUQu2v0HqF0ndRyJ0SkTqdTkQjzg35FahFUZaAWlQrlM8CglrkDWpBiHcjU3VBJSiDWigWYe6yaG5uDgQChalFwaaAWkBpoHwWENSCEOLjyFRdUAnKrxaKXSheUbBayNGQ/RgozUAp9RSjWlidkz1Pc8ByzJXdtbn3Q1HUolqhfBYQ1IIQ4uPIVF1QCSqiFir19fWFzrVQHMDcfNc6h8YndGphc45+lFUiEolmz9Z8jN210ZCk/wDUojqhfBYQ1IIQ4uPIVF1QCVZbLRSvCAaDlmoRi8WKWSEq28WQa8QnInW6ngRVCwyWYXmOTU+D9m27a03jrei1qFYonwUEtSCE+DgyVRdUglVVC7NXPProo2p/RZFeoaKMQ1Ia/LoBTNpBS5q2v905dmOstJbg+lrUolqhfBYQ1IIQ4uPIVF1QCVZPLcxeYVhztgQ7WqjiYDsFw6AWNgrhSi1cXYtaVCuUzwKCWhBCfByZqgsqwWqrRan2srAh27S3XQjKbtqF9SnGe+sGRLm5ttzbaEDZoHwWENSCEOLjyFRdUAnKoxaqV6z0polInaaTQDv9WjedWk5EQjbTuC3OUYY7WU3j1vRIONxfPx0ctahOKJ8FxItqAQDgHqouKD+rrRal7qnQT3rQteK168daLuZkd47hvrquCs15dtfm3q+LJBgQVa1QPgsIagEA/oaqC8pPGaZxl3QEFEBloHwWENQCAPwNVReUH2orADdQPgsIagEA/oaqC8oPtRWAGyifBURctTCPZ6XrGcCPUHVB+UEtANxA+SwggqpFMpmMxWL19fXKKhzhcBi7APApVF1QflALADdQPguIiGqheEVJVg037jRa/AoXDqt6F7PgN6ttgDhQdUH5QS0A3ED5LCCCqoXaX6H1CqXvoqBb2e5kWjCoBUCRUHVB+UEtANxA+SwgwqmF3Uanzc3NgUAAtQDwHVRdUH5QCwA3UD4LiOhqodiF4hWlU4uMDKjDpWy3J8pda7xEt32pXi00o7B0n517PxRFLUAcqLqg/KAWAG6gfBYQ1CJHfX19CdUi1/CPhvSiEMr+rL1af4nyUrOVaZ3dNdkDug+JhlY07wPAV1B1QflBLQDcQPksIGKpheIVwWDQUi1isdgKp3FnW/NaMci8tBw2pelbMFyidQiNQRjvlL2BacwUvRYgDlRdUH5YKh3ADZTPAiKQWpi94tFHH1X7K4rwCjnfgCiblzoh0aqFadyU8obmkHFFqmxHh+k5UAsQB6ouKD8slQ7gBspnARFFLcxeYVhztrhiunC1iIY0w54MvRYmtTD1WthNG0ctQGCouqD8+GupdKu/SlFHQDmgfBYQsdSiJHtZaClYLfQXOKlF7phhQJRVdWB8v5hFpQB8ClUXlB/fLZWusNK/OvFXKygQymcBEVEt1AJ65bctWC1MHRi6uRb6idiW1mEzJzwRqbO9F0B1Q9UF5cd3S6UroBZQZiifBUQstSj5HDhTL7NpCJPpZW7tWd0Ssco5UfWg/VQN7eK1Wq9JaK+l/AdxoOqC8uO7pdIVLKsG84Lm+nVFMn/R0tV3pdnQCaofymcBEUUtZL1drN6nAECZoeqC8uO7pdIVzGphs6C5fiERrWXwVysoBMpnARFILQCgKqHqgvLju6XSFYxqYLegee6Q/grUAgqE8llAUAsA8DdUXVB+fLdUuoJRDewWNNccZMskWAmUzwKCWgCAv6HqgvLju6XSFazUwnbahMWKIKgFFAjls4CgFgDgb6i6oPz4bql0BasBUTauoAyIMoyYQi2gQCifBQS1AAB/Q9UF5cd3S6UrWE/jtlnQXHlb17Hh2MsBYIbyWUBQCwDwN1RdUH58t1S6glWvg8WC5nrfMO6zxOKz4B7KZwFBLQDA31B1QflhqXQAN1A+CwhqAQD+hqoLyg+1FYAbKJ8FBLUAAH9D1QXlh9oKwA2UzwIirlqYx7PS9QzgR6i6oPygFgBuoHwWEEHVIplMxmKx+vp6ZRWOcDiMXQD4FKouKD+oBYAbKJ8FRES1ULyiJKuGG3cyrdyC36w2DsJC1QXlB7UAcAPls4AIqhZqf4XWK5S+i4Ju5Z01vlELEBaqLig/qAWAGyifBUQ4tbDb6LS5uTkQCKAWAL6DqgvKD2oB4AbKZwERXS0Uu1C8olRqkYjUGTYvrYsk1M1Nc2OotCqg3bMod0PjJRa7qGYvQS1AWKi6oPwotdVUap4QYheZ8llIUIsc9fX1Jeq1yChB5qfMCRl7yJ6uE5BEJJT1Au0t9ZfY74+qSAZqAWJC1QXlB7UgJG9kymchEUstFK8IBoOWahGLxVY4jTvXuM8ohbYvQd+ZIdt6ieYawyUGT9GpBL0WICxUXVB+UAtC8kamfBYSgdTC7BWPPvqo2l9RhFfIjnMtFOvQNPdNNqB/Q2spWrWwvoPpg1ELEBaqLig/qAUheSNTPguJKGph9grDmrPF7WjhoBbKYKZ8aqFcHA1pRkoZei1QCwBnqLqg/KAWhOSNTPksJGKpRUn2stBiqxaKNmhGMDmNYdLfxZVaGG9mujmAMFB1QflBLQjJG5nyWUhEVAvVK1Z+27zTuDUnGLoxNNOwtV6gm5BtrxbK3XQvUAsQFKouKD9u1OLzwz2b2jrM+fxwT8XbfISUITLls5CIpRYl6anQYtyNWwpFbVdyUsQgqq4ya732rG4ZWQe10F2kLFCLWoCYUHVB+XGjFpvaOiyv3dTWUfE2HyFliEz5LCSiqIWst4vV+xR7GLMEsCpQdUH5cakWS0uLy8uLy8uLkiQtLS0uLS2k56bt1KK9UZKk9S29hR2yz2BLrVTTOrjC1mF7YwluQsSMTPksJAKpRaVBLQBWBaouKD8u1SKdnk2nZ9PpGUmS5uZmklO3xoYvO6qFJDV2GQ/1ttVI7tSio0mqbevJvEQtSIUjUz4LCWpRNlALgFWBqgvKj0u1mJ1NGkbNXhvsdlCLmsamGqmpXf9+T+t6qXZ9DWpB/BaZ8llIUAsA8DdUXVB+XKpFKnVnaur25OQNSZImbo6MJC4N9sWd1KK1y+QDXQ3S+paONoNaZLo4JEnKqojmHaXrI6MW6vsGQ+hpXa+ebjiUu1Vjl04tOprUSxo6Kt9yJR6PTPksJKgFAPgbqi4oPy7VYnT40tDA+YGeU5Ik9f31eHc8dv5kl6NaDOp7HrIdEb06tWhvzI2b6mldnzvf1GuRc4COJslwh1z3SFeDxi7aGyXdDdVD2mfobWtBLUi+yJTPQoJaAIC/oeqC8uNSLbrj0eMH9x3u3HOoc/ehzt2x/R8dObA3j1qkuhpyfQKDLbVSQ4exWa8fNNXVoB4yq0Vu5oZmfFSvsQ9kqqMpYxqmQ7leC+PnEpInMuWzkKAWAOBvqLqg/KzGvhZqI76ndX1GCdTWvLbFrxmVZBye5DTXQvNSFQk16v1NhzQDojLdIEy9IC4jUz4LCWoBAP6GqgvKz2rsxq1pxGc6IvQ9Blq1sOk9WF21mM8+G3MtiKvIlM9CgloAgL+h6oLys8pqofzc1qAbBGX1syEu1cJyQJRyofGQ9TJTuX4VQuwjUz4LCWoBAP6GqgvKz2qrRWYvC7X5bp7GrVWIRu2sa7XPwV4tjHcwzu5QDymrSKl9HWpPhXYeOSF2kSmfhURctUhaUbZPB4BSQdUF5WfV1UKdwK28tOpMsFoHNvu+ZvFZ7SFt/4N2sVr96KbczZW1azV9HVm0a1gRYhOZ8llIBFWLZDIZi8Xq6+sDgUAgEAiHw9gFgE+h6oLysxpqQUiVRaZ8FhIR1ULxikCW5ubmlXRcREOaRTpCUcdzS70ht+6z8304QJVC1QXlB7UgJG9kymchEVQt1P4KrVcofReF3CkRqdO16KMRZ29YgVpEQ4YroyG9TSQioRJKi+NHA3gKqi4oP6gFIXkjUz4LiXBqoViEucuiubk5EAgUphYFm0LJ1KLU3R8FfDSA16DqgvKDWhCSNzLls5CIrhaKXSheUbBayNGQ/TAkzWAl9RSjEVidkz1Pc8A05srpcw2Xaz7OcFUiUqe+zDyY+kHqVYUM9wKoDFRdUH5QC0LyRqZ8FhLUIkd9fX2hcy2URrz5b/raVrzGJ3RqYXOOfpRVIhKJZs9Wr9RKgQn9QKloKPd4edQid5n2IpleC/A6VF1QflALQvJGpnwWErHUQvGKYDBoqRaxWKyYFaKyfQS55rex6a+2zQ2WYXmOTUNe+7ZDp4V5pFTu5HxqkTumfzjUArwNVReUH9SCkLyRKZ+FRCC1MHvFo48+qvZXFOkVKsrIoVwb3kgoKusa/nbn2GmDS7UwH8p9Zv4BUeZrjB8N4D2ouqD8oFOylcAAABbrSURBVBaE5I1M+SwkoqiF2SsMa86WYEcLtUFu2/Q3qIWNQuRVC+PCVI6XoxZQ7VB1QflBLQjJG5nyWUjEUotS7WVhQ7btbrt+k920C+tTjPc2zMjO9wmmCw1jsOzmepheohbgbai6oPygFoTkjUz5LCQiqoXqFSu9aSJSZ+gFsJ4IrW45YZrGbXGOfh62dhq3cW6G3i6yN9DfVneZcU63e7VgcSjwMFRdUH6eCz29tLg4M0cIsY1M+SwkYqlFqXsq9BMmdH/a1y4A69SCt1zZVXNf/Sgo/Xl2m3Fr39c7Qe5IKOp6QJTVRwN4B6ouKD9bNm+anLxd6acA8DqUzwIiilrIertYvU8BgDJD1QXl5+2d2wcH+X8agBOTk7f/6zfPUT6LhkBqAQBVCWoB5Wf3rvdPnTpW6acA8DSDgwOv7/gt5bNooBYA4G9QCyg/3d3nfh95u9JPAeBpPt+3Z+/eXZTPooFaAIC/QS2g/CwuLGzZvCmVnKr0gwB4lMWFhc0vPn/+3FnKZ9FALQDA36AWUBFisa7P9+2p9FMAeJRYrOuD98MDJir9XLDqoBYA4G9QC6gIiwsLO7ZtvvntjUo/CIDnSCWnXmn+tbnLgvJZBFALAPA3qAVUisnJ2zu2bZ6bm630gwB4iMWFhbd3bj98KGr2ikuXLlX66WDVQS0AwN+gFlBB+vt63nyjmT0uABTm5mbDbW9+8cU+s1cMDAyMj49X+gFh1UEtAMDfoBZQWUZHr+/YtvnY0VilHwSgwnR3n9ux/aWvuzotvYLCWRBQCwDwN6gFVJy5udlP9v5xx7bNsVgXPRggGqnk1LGjsbd3bm9t2X7yxHG8QnDEVYukFWX7dAAoFagFeITR0euf79uz+cXnf/mLhrd3bidEhPzqhaZfvdD035G3Dx7sspOKgYGBRCJR6f9AoUwIqhbJZDIWi9XX1wcCgUAgEA6HsQsAn4JagNe4dGng4MEuQkSI5TJQBq5cuVLp/yihfIioFopXBLI0NzcX13ERDUlm6iIJWU5E6jI/mUhE6myOAEBRoBbgQcbHx/O2twBEYHh4uNL/OUJZEVQt1P4KrVcofRdF3DAacrQF3WHUAqDEoBbgWa5evVqRxhyAFxgaGqr0f4JQAYRTC8UizF0Wzc3NgUAAtQDwHagFeJ/r168PDQ1VpHkHUE4GBwevX79e6f/goJKIrhaKXSheUTq1yPmDbtBUKGpWC80JoejKvhqAmKAWAAAAHgG1yFFfX19ytTAd1h2KhnJCQXcGQHGgFgAAAB5BLLVQvCIYDFqqRSwWK6taJCJ1up6KPOOqAMAS1AIAAMAjCKQWZq949NFH1f6Kor1CLlotrFaYYlAUQKGgFgAAAB5BFLUwe4VhzdmV7GixArVAJQBWCmoBAADgEcRSi5XvZWHJCgZEMQIKYKWgFgAAAB5BRLVQvaJUN8+vFrneCdM0bq11hBANgIJBLQAAADyCWGpRwp4KLXnUQtmc23rx2ewhJloAFAtqAQAA4BFEUQtZbxer9ykAUGZQCwAAAI8gkFoAQFWCWgAAAHgE1AIA/A1qAQAA4BFQCwDwN6gFAACAR0AtAMDfoBYAAAAeAbUAAH+DWgAAAHgE1AIA/A1qAQAA4BG8qBbpe0uEEOImMmoBAADgGbyoFlOpeUIIcRMZtQAAAPAMqAUhxMeRUQsAAADPgFoQQnwcGbUAAADwDKgFIcTHkVELAAAAz4BaEEJ8HBm1AAAA8AyoBSHEx5FRCwAAAM/gP7X4/HDPprYOcz4/3FPxVg4hpMyRUQsAAADP4D+12NTWYXntpraOirdyCCFljoxaAAAAeAZfqsXS0uLyciZLS4tLSwvpuWk7tWhvlCRpfUtvYYfsM9hSK9W0Dq6wPdTeWIKbEEJk1AIAAMAz+FIt0unZdHo2nZ5Jp2fm5maSU7fGhi87qoUkNXYZD/W21Uju1KKjSapt68m8RC0I8VBk1AIAAMAz+FItZmeTkp5rg90OalHT2FQjNbXr3+9pXS/Vrq9BLQjxc2TUAgAAwDP4Ui1SqTtTU7cnJ2/cvjU+cXNkJHFpsC/upBatXSYf6GqQ1rd0tBnUItPFIUlSVkU07yhdHxm1UN83GEJP63r1dMOh3K0au3Rq0dGkXtLQUfm2GiE+ioxaAAAAeAZfqsXo8KWhgfMDPaf6u0/0/fV4dzx2/mSXo1oM6nsesh0RvTq1aG/MjZvqaV2fO9/Ua5FzgI4myXCHXPdIV4PGLtobJd0N1UPaZ+hta0EtCCkkMmoBAADgGXypFt3x6PGD+w537jnUuftQ5+7Y/o+OHNibRy1SXQ25PoHBllqpocPYrNcPmupqUA+Z1SI3c0MzPqrX2Acy1dGUMQ3ToVyvhfFzCSEFREYtAAAAPIP/1KLQfS3URnxP6/qMEqiteW2LXzMqyTg8yWmuhealKhJq1PubDmkGRGW6QZh6QUgRkVELAAAAz+A/tSg0mkZ8piNC32OgVQub3oPVVYv57LMx14KQgiOjFgAAAJ5BKLVQfm5r0A2CsvrZEJdqYTkgSrnQeMh6malcvwohxF1k1AIAAMAziKUWmb0s1Oa7eRq3ViEatbOu1T4He7Uw3sE4u0M9pKwipfZ1qD0V2nnkhBA3kVELAAAAzyCYWqgTuJWXVp0JVuvAZt/XLD6rPaTtf9AuVqsf3ZS7ubJ2raavI4t2DStCiIvIqAUAAIBnqH61IIRUcWTUAgAAwDOgFoQQH0dGLQAAADwDakEI8XFk1AIAAMAzoBaEEB9HRi0AAAA8A2pBCPFxZNQCAADAM6AWhBAfR0YtAAAAPANqQQjxcWTUAgAAwDOgFoQQH0dGLQAAADwDakEI8XFk1AIAAMAzoBaEEB9HRi0AAAA8gxfVYnHpPiGEuImMWgAAAHgGL6oFAIB7UAsAAACPgFoAgL9BLQAAADwCagEA/ga1AAAA8AioBQD4G9QCAADAI4ilFkk9q/pZAFAeUAsAAACPIJBaKDoRDseDa8LhcLykdhENSZIUihZ+YSJSJ0l1kUQRn6f/uGjIeJ/sOU4fEQ0V8eFuHi5HMb+VlZKI1K3C9wKvgloAAAB4BCHUQrGIM2fOBNeEw8H4lStXwsF4cE34zJkzpRGMaEiqq6tz2YouSXPe6BaJSJ2kF4hExMUDrfRZTNcbHSsRCZX0/u5ALcQCtQAAAPAIoqiF4hLxeFwdDRWPxxXTWLlaRENSKOqqKZ85e+XNXkPjORGpM8iNu9Z1adWi9C161AJcgFoAAAB4BFHUIrgmHA4a1SIcDAfXhFesFtGQOvDI1J5VehPUoUG6sUL6i4z9EJrXmqvUM3SfpmiN7g65RrnxuXJ3C0UNTXdXhyyeSnnPPErL9ldh9hH1buohm99VVNs/43xP20eB6gK1AAAA8AgCqcXExEQ4HFcHRIXD8YmJiZWrRa63wtSgTUTqco3tRCSi/KRrs2uu0bfM1bO0b2s/QdtLkjlZc2fNVbrH0k3JiIaMTXmHQ1bPoPsujt02+oFS2o/K2IHGVzS/Q9PvSnvU+Z6ohTigFgAAAB5BILVQOiv6+/uDa8L9/f3KyxWrhbZBbWjR2ozmsVMLXQM+e5KxvW5pD1oNUX6weSpTk9u+b8NwyP4ZLP3D4pdkPcfc4F/GDzOrhXW3jcU9UQtxQC0AAAA8gnBqYflz8bfWt4RNHQRWTW1btbCRBRMa/cgORDJIgO6pbDtGdM+S55DNM7hUC/Oh3ENZzRrRdkzY/K4KuSdUOagFAACARxBFLbTTuBWdKMk0bu1Yf+OY/8LVQj3k0OI338nYQ6FM6XAx5kouQC3snUE3IMrmPNQCVhPUAgAAwCOIohbaxWfV/13x4rMW0wvyj8pxaC5njmXmhTvdJHcwFDKMIJJCIbt1m4x3K+6Q3Xex2FvD+lvqLixWLQq4J1Q5qAUAAIBHEEItFEq/ZZ7ln/ONKztZTeO2nzGQiNQZdsjQt9f1+0RkOk3MKznZSIJ++zz9tGiHQ/bPYLWsleHDQ+rALuseh3xqYf+7cn1PqHJQCwAAAI8gkFrIWbtQWeHdbAYKGdeANS2Omh1FZblircWwIt2oK4tD5snMpt30DG139YHM+1LkPaS/u/a7mL+y7oD2fcMd7NeNdfxdub0nVDmoBQAAgEcQSy3ANa53AASoNKgFAACAR0AtwAKHKdkAXgO1AAAA8AioBSjoF7tiOBH4B9QCAADAI6AWAOBvUAsAAACPgFoAgL9BLQAAADwCagEA/ga1AAAA8AioBQD4G9QCAADAI6AWAOBvUAsAAACPgFoAgL9BLQAAADwCagEA/ga1AAAA8AioBQD4G9QCAADAI6AWAOBvUAsAAACPIJZaJPWs/IbRkCSFovnOSkTq8u1vHQ1ptsJ2ccvSk4jUsQc3+BLUAgAAwCMIpBaKToTD8eCacDgcL4lduFML0zX6Jnw0pLeJRCS0kia+6f7uQC3Ar6AWAAAAHkEItVAs4syZM8E14XAwfuXKlXAwHlwTPnPmzAoFY+VqUfoWPWoBgoFaAAAAeARR1EJxiXg8ro6GisfjimmUSC0yTXN1ZJOlPujGPYWied0kEalTTzff0PxZpvsrZ0YjdbmznO9Z9K8CoFKgFgAAAB5BFLUIrgmHg0a1CAfDwTXhEqpFbmBTNKRpt+tb7dpehUSkzt4s9AOltHd0+CxDr0VCKxV574lagB9BLQAAADyCQGoxMTERDsfVAVHhcHxiYqLEapHTBK002KuFQ6eFuamfO9nhs6zUQj2W756oBfgR1AIAAMAjCKQWSmdFf39/cE24v79feVlatbAZX1SUWpgP5W7j8FkWaqHvs3B5TwDfgFoAAAB4BOHUwvLnou+8UrUwdD/Y3Np0S9QCIAdqAQAA4BFEUQvtNG5FJ1ZpGnf2iDu1ME2UyGE5eEkzE7sYtSjgngC+AbUAAADwCKKohXbxWfV/S7r4bCFqoes6iIb0SzWp+1rorUN7WT61sJ9d4fqeAL4BtQAAAPAIQqiFwipvmedaLdTVXzV+YbcZt/Z93aZ6Dmqhu7+FMLi7J4BvQC0AAAA8gkBqIWftQmVVPwsAygNqAQAA4BHEUgsAqD5QCwAAAI+AWgCAv0EtAAAAPAJqAQD+BrUAAADwCKgFAPgb1AIAAMAjoBYA4G9QCwAAAI+AWgCAv0EtAAAAPAJqAQD+BrUAAADwCKgFAPgb1AIAAMAjoBYA4G9QCwAAAI8gllqwGzdA9YFaAAAAeASB1ELRiXA4HlwTDofj2AVAdYBaAAAAeAQh1EKxiDNnzgTXhMPB+JUrV8LBeHBN+MyZMysRjGhIkkJR4zt1kYTjOXoSkTrjJS4OFfKEWpyexObyAi8p7sFW4UMSkTrdL0/3iavzpaw+Sfko48NAaUEtAAAAPIIoaqG4RDweV0dDxeNxxTSK77swNr0TkTpJbwOJSF0h7dhoqLQt0BW6ge7ykj6b7s6JSF3pW/va1rzxA6KR7Bdx+aVcf/doSC8uiUgokkAtVhvUAgAAwCOIohbBNeFw0KgW4WA4uCZcvFoYWoyJSJ1UV6d1iUKblGKqxao0vTW3dLh7SdXC/nNQi9UFtQAAAPAIAqnFxMREOBxXB0SFw/GJiYkVqYW+yaj0UNg2x5UuDeOAnNwdTCN2jH93r4sk1HMM7dTctaGo9jPt1EL7LEY3ikTVvhf1csvRRJo3dR0Q2Ttk7537sNyj2KqF428p/9c3PknC4ddg8aWsPt31d3fwOMfnX+FX1v+L2zxblYNaAAAAeASB1ELprOjv7w+uCff39ysvV6YWugFPmRaepqGnbWxmhsaY39b+PVvXSDQN6VGv0k/p0L2KhiQpj1roB+1orzYO6HLotbD5Dro7ZHpxrPoODA+mvnT4LTl9fZsnMWidRb+B/kvZfLq77+409s3p+Yv8yi7+xcXpK0EtAAAAPIJwamH5c/G3zjXl1Oan+oNtY1PTUi1ELfR/0s68MrUfjb0Whr+5m9ubua9gmpPg1AOj/Wa6r6z/Bi76EcyT361+S/Zf38WTyGpb3f6XZfvp7r670+Azi+e3/FjXX9nmS9j+Nqoc1AIAAMAjiKIW2mncik6UYBq3LOdalOb2nckstA39ItTCNHIpof187ac49VqY39L/4d04tMZSLYwrT6l/XzfcwfTXfq1amH8ZLn9Lxq/v5kn0d7efQGL16e6+ez61sH7+Ir+yzb+47W+jykEtAAAAPIIoaqFdfFb9X3Xx2ZVsoqc07LQekfnZ+Hdv3Uh9/6uFZZO1ELWwuIG735Lj17d5Epsjrv6N3H13p3WuHNSiBF9ZrxYiqIQR1AIAAMAjCKEWCg5b5iWTyebm5uLUIhGpk+pCIW0PRTQkSaGQsdVqOXR/xWphbEI7TWmwOt/Y3+JKLWzb7StTC5e/JVerPzkvC6WZw2Dzy3IcEGV9Y5uBXY7PX4Kv7G4trKoGtQAAAPAIAqmFnLULbR+F8sPIyEggEBgZGSmm7yIziN88wsXp79S2amE9N8Hhz96JSJ3tRGzbadzWH5lPLQz2pLWgkGXbtkC1cPlbMuuT85MkInWG1ah0Kz1ZfXv93Gh33918mXrQnSe4/cr5/sWtn62aQS0AAAA8glhqYUbprwhkKarvQtfUU9ANc8mdlBn87vzH6ewAeZdqobt3XSThZvCOdky+w/YS+su1z6b7UMlWTgodEFXAb8ny69s8icPMDt2Xsvl0l9/d4nernR9v9/wr/MqGf3HnZ6tWUAsAAACPgFokk8lkMBgMBALBYLDoGReewTR5HKoc/sVRCwAAAK+AWmTUIhaLVYFaOM0lhmqEf3EZtQAAAPAMqIUFZX6GlaEbACPkJF7R4F/cCGoBAADgEURXCwDwO6gFAACAR0AtAMDfoBYAAAAeAbUAAH+DWgAAAHgEb6nFc6GnlxYXK/LRAOBTUAsAAACP4C212LJ50+Tk7Yp8NAD4FNQCAADAI3hLLd7euX1wkGYBALhlcvL2f/3mOdQCAADAC3hLLT7Z+8djR2MV+WgA8CP9fT1vvfkKagEAAOAFvKUW/X094bY3K/LRAOBHPtn7x32ffoxaAAAAeAFvqcXiwsKWzZtSyamKfDoA+IvFhYXNLz5//txZ1AIAAMALeEstZFmOxbo+37enUp8OAD4iFuv64P3wgIlKPxcAAICgeE4tZFl+843mxLUrFXwAAPA+k5O3t7y0qffiRdQCAADAI3hRLSYnb7/5RjPDogDAjsWFhdd2bDl69LDZKy5dulTppwMAABAUL6qFLMuDgwNvvtF889sblX0MAPAgc3Ozb+/c/nVXp9krBgYGxsfHK/2AAAAAguJRtZBl+ea3N958o/nrrq8WFxYq/SwA4BVOnTr22y2/PHwoaukVjIYCAACoIN5VC1mW5+Zm27/8dGvzrzr3/3l09HqlHwcAKsbNb2/EYl1bm3/1XluLeUkovAIAAMALeFotFCYnb3fu//Mrzb9u2vjk1uZfvb1zOyFEnOzYtrlp45NbXtr0h9+3nTxx3E4qBgYGEolEpYsrAAAAofGBWqgkEomTJ44fPNhFCBEnlnO1zVy5wrJyAAAAFcZPaiHL8vj4uJtGBgAIxfDwcKULJwAAAPCbWihcvXq10i0ZAPAEQ0NDlS6QAAAAIIMv1ULl+vXrQ0NDlW7bAEBZGRwcvH6ddR0AAAA8h7/VAgAAAAAAPAJqAQAAAAAAJQC1AAAAAACAEoBaAAAAAABACUAtAAAAAACgBKAWAAAAAABQAlALAAAAAAAoAagFAAAAAACUANQCAAAAAABKAGoBAAAAAAAlALUAAAAAAIASgFoAAAAAAEAJQC0AAAAAAKAEoBYAAAAAAFAC7NTi/wNd7cSMJiKtVgAAAABJRU5ErkJggg==" alt="" />
可以看到,Page类提供了一个TitleText属性向用户返回页面的Title文本,还提供基本的页面操作。对于使用者来说,他们不必关心这个页 面上的元素是如何定位,也不必关心内部使用了怎样的技术实现(Selenium,还是QTP)。另一个好处就是如果开发对页面做了元素做了一定的调 整,我们只需要处理PageObject内部的代码实现,而不需要修改实际测试用例代码。该模式的好处还有很多,本文就不赘述了。我会在之后的框架实践相关的文章中进行描述。
(二)Selenium对PageObject模式的支持
下面我们一起来看一下,Selenium 对PageObject模式的支持。下面的代码是一个登录页面的简单封装:
public class SignInPage
{
public IWebDriver Driver { get; set; }
public DashboardSignInPage(IWebDriver driver)
{
this.Driver = driver;
PageFactory.InitElements(driver, this);
}
#region Page elements
[FindsBy(How = How.Id, Using = "username")]
protected IWebElement txtUserName; [FindsBy(How = How.Id, Using = "password")]
protected IWebElement txtPassword; [FindsBy(How = How.XPath, Using = ".//button[text()='Sign in']")]
protected IWebElement btnSignIn;
#endregion Page elements #region Action for test case
/// <summary>
/// Sign In for Dashboard
/// </summary>
/// <param name="userName">User name</param>
/// <param name="password">Password</param>
public void SignIn(string userName, string password)
{
this.txtUserName.Clear();
this.txtPassword.Clear(); this.txtUserName.SendKeys(userName);
this.txtPassword.SendKeys(password); this.btnSignIn.Click();
} //Other action... ...
#endregion
}
上面的代码中出现的FindsBy和PageFactory正是Selenium WebDriver提供的针对PageObject模式的支持。
@PageFactory类
FageFactory提供了PageObject实例的能力,我们可以看到它本身提供了很多的方法来构建具体的页面类的实例。它的主要作用的是将我们用FindsBy属性标记的字段和指定的DOM元素进行映射。而后我们可以直接使用具体属性操作DOM元素,不必使用FindElement方法来定位。
public sealed class PageFactory
{
public static T InitElements<T>(IElementLocator locator);
public static T InitElements<T>(IWebDriver driver);
public static void InitElements(ISearchContext driver, object page);
public static void InitElements(object page, IElementLocator locator);
public static void InitElements(ISearchContext driver, object page, IPageObjectMemberDecorator decorator);
public static void InitElements(object page, IElementLocator locator, IPageObjectMemberDecorator decorator);
}
@FindsBy属性
FindsBy属性是用来标记程序中的元素是如何定位的。我们可以使用之前《Lesson 03 - Selenium For C# 之 元素定位》中讲到的任何一种定位方式来标记如何定位元素。利用How参数指定定位方式,这是Using参数标识具体的值。如果对如何定位元素不是很清楚,可以查看之前的文章,这里就不再赘述了。
// Summary:
// Provides the lookup methods for the FindsBy attribute (for using in PageObjects)
public enum How
{
// Summary:
// Finds by OpenQA.Selenium.By.Id(System.String)
Id = ,
//
// Summary:
// Finds by OpenQA.Selenium.By.Name(System.String)
Name = ,
//
// Summary:
// Finds by OpenQA.Selenium.By.TagName(System.String)
TagName = ,
//
// Summary:
// Finds by OpenQA.Selenium.By.ClassName(System.String)
ClassName = ,
//
// Summary:
// Finds by OpenQA.Selenium.By.CssSelector(System.String)
CssSelector = ,
//
// Summary:
// Finds by OpenQA.Selenium.By.LinkText(System.String)
LinkText = ,
//
// Summary:
// Finds by OpenQA.Selenium.By.PartialLinkText(System.String)
PartialLinkText = ,
//
// Summary:
// Finds by OpenQA.Selenium.By.XPath(System.String)
XPath = ,
//
// Summary:
// Finds by a custom OpenQA.Selenium.By implementation.
Custom = ,
}
那么最后,我们来看一下消费者(上层的测试用例编写人员)将如何使用如何使用这个类,这个Code只是一个使用SignInPage的示例,我们看到这里还是在测试用例中写入了创建Driver和导航页面的代码,按照先前的架构这样也是存在问题的,这里就不再展开了,期待我后续关于自动化框架设计的文章吧~~~:
private const string cst_DisplayName = "BaseCheck.SignIn";
[Fact(DisplayName = cst_DisplayName + ".Success")]
public void SignIn_Success()
{
var driver = new FrieFoxDriver();
driver.Url = "www.xxx.com/signin"; var signInPage = new SignInPage(driver);
signInPage.SignIn("your name", "password"); //省略Code... ...
driver.Close();
}
(三)简单的测试结构
读到这里,即使你是初学者。想必也能明白一些PageObject设计模式为何物,这里我还是描述一下 PageObject的意图:PageObject模式是为了封装页面元素定位,页面等待、跳转等操作页面相关的逻辑。使得使用者在不必关心这些逻辑的情 况下,可以书写相关的测试用例。我们回顾一下我之前在《Lesson 02 - Selenium For C# 之 核心对象》中提到的一般的企业级测试框架中的结构图:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABS4AAAKeCAIAAAAk2RJ+AAAgAElEQVR4nOzd639cZbn/8d9/NfdxTerebOuuokUEj1vcWMUTuhUBEdhs0CIgCAoiIHKSChRaCgVKoWlp0wNIQUoBbQmklBTahDS0TUjSNPk9SCnJXDP3zMrKrHXPzOf9mic0mcxas+a6uL6zTv9vGgAAAAAA5Oj/Fb0AAAAAAAB0FqI4AAAAAAC5IooDAAAAAJArojgAAAAAALkiigMAAAAAkCuiOAAAAAAAuSKKAwAAAACQK6I4AAAAAAC5IooDAAAAAJArojgAAAAAALkiigMAAAAAkCuiOAAAAAAAuSKKAwAAAACQK6I4AAAAAAC5IooDAAAAAJArojgAAAAAALkiigMAAAAAkCuiOAAAAAAAuSKKAwAAAACQK6I4AAAAAAC5IooDAAAAAJArojgAAAAAALkiigMAAAAAkCuiOAAAAAAAuWrVKD4FAAAAZFD0PFtf0e8QEKOi63LBtFgUn3n3JycnJycnjwMAAADzMjNPxjnZM/ECtcRcuWm1UhSfaUkTExNFLwgAAADawcTExMxYX/SCfIKJF6grwsqdh5aJ4jNdaXx8vOgFAQAAQPsYHx+PZ6Zn4gUaFFXlzk9rRPFTXenYsWNFLwsAAADax7FjxyKZ6Zl4gcbFU7nz1jJRfGJiYmRkZHBwsOhlAQAAQPsYHBwcGRmZmJgofKBn4gUaF0/lzltrRPHJycmxsbHh4eH+/v6ilwUAAADto7+/f3h4eGxsbHJystglYeIFGhdP5c5by0Tx0dHRoaGhvr6+opcFAAAA7aOvr29oaGh0dLTwgZ6JF2hcPJU7b60UxQcHB3t7e+VPuwAAAIAGyEmyt7d3cHAwhoGeiReoRVZEPJU7b60RxY8fPz4yMjIwMLB3717506I/GAAAAGgNcpLcu3fvwMDAyMjI8ePHmz/VhjDxArXIioincuetlaL4oUOH9uzZI39a9AcDAAAArUFOknv27Dl06FAMAz0TL1CLrIh4KnfeWiCKT01N0ZgAAACQnZwkZw/0BV6KmYkXCJAVEUnlZkEUBwAAQKeQk2QkAz0TLxAgKyKSys2CKA4AAIBOISfJSAZ6Jl4gQFZEJJWbBVEcAAAAnUJOkpEM9Ey8QICsiEgqNwuiOAAAADqFnCQjGeiZeIEAWRGRVG4WRHEAAAB0CjlJRjLQM/ECAbIiIqncLIjiAAAA6BRykoxkoGfiBQJkRURSuVkQxQEAANAp5CQZyUDPxAsEyIqIpHKzIIoDAACgU8hJMpKBnokXCJAVEUnlZkEUB4CcfKpcXlwun14un1kufzVJzkmSZUnygyT5oXP/4/1Pvb/AuYu8v9j7S5y71PvLnbvC+yudu8q55d5f7dw1zl3r3G+du8G5G527ydqbnbvF2lutvc3aO6y90bk7rL3N2lutvcXam527ydobnbvBud86d61z1zh3tXPLvb/KuSudu8L7y5271PtLnLvY+4u8v8C5n3r/P97/0Pvve78sSc5Jkq8myZnl8unl8uJy+VPlctFvJADMn5wkIxnomXiBAFkRkVRuFkRxAKhpUbm8JEm+lCTnJMn3vP+Z95c5d7VzNzn3e2vvtfYBax8x5jFj1hnTbUyP1i9o/Q+tdyu1R6k+pQ4oNVgqHSmVxkqlMaWOlEqDpdIBpfqU2qPUbqVe1nqj1s9rvUPrbcZs0XqzMZuM6TbmWWPWa73OmKeMWWvM48assXa1MausfdiYh4x50NoVxtxv7X3W3mPtXdbeZO1d1t5j7X3W3m/tCmMetPYhYx42ZpW1q41ZY+3jxqw15ilj1hmzXutnjek2ZpMxm43ZovU2Y3Zo/bzWG5SquSKlklyRf2j9gtY9Wncbs86Yx4x5xJgHrL3X2t9be5NzVzt3mXM/8/48789Jki8lyZJyeRHBHkC+5CQZyUDPxAsEyIqIpHKzIIoD6BT/US5/KUm+7f2PnPulc7927gZrb7P2PmsfMeYpYzZp/XetX9P6LaUOKnWkVBovlQ4r1a/UHqVe0Xq71huMedyYB425xdo/Wft7a6937jfOXencpd5f6P1POmBnctXd+9/3/ifeX+j9pd5f6dxvnLveud9b+ydrb7b2QWMeN2aDMdu13qX1HqX6lTpcKo2XSkdKpYNKvaXUa1r/XetNWj9pzCPG3Gftn6y9wdpfO/dL58537lzvz0yS05Kk6DcAQAuTk2QkAz0TLxAgKyKSys2CKA6g5X2qXF6aJOd4f773lzl3nbW3W/ugMU8Zs03r3UrtV+poqXRMqX6lXtf6KWM2GvOEMQ9be4+1t1p7vXNXOXeJ9z/2fpn3X0+SpUmyuI3Cc8wWl8tLk+TrSbLM+x97f4n3v3LueudutfZeax+29gljNhrzpDFvaH1AqRGljpRK+5XardQ2rZ8y5kFjbrf2Omsvc+58789JkqXt9d0HgAUkJ8lIBnomXiBAVkQklZsFURxA7D5dLn8tSc73/irvr7d2hbVrrd1izC6t+7Q+XCqNKXVQqT1av2jMBmNWW3u3tTc5d5X3F3i/LEnOLpc/TTBrI4vL5bPL5WVJcoH3V3l/k3N3W7va2g3GvGjMHqUOlkpjpdJhpfq03qX1FmPWWrvC2uutvdK585Pka0nCRwLoTHKSjGSgZ+IFAmRFRFK5WRDFAURhaZIsS5JfeP9b5+62dq2127Xeo9RhpY6WSm8r9aIxTxlzmzE3W7vcuYucO8/7rybJEgIValiSJF9NkvO8v8i55c7dbO3t1q4z5kWt31bqaKl0WKk9Sm3X+nFj7rb2Omt/4f2yJFnKMfBA+5KTZCQDPRMvECArIpLKzYIoDiA/X0mSH3p/lXO3OrfS2m5jdinVr9R4qXRQqd1KPaf1Kmtvd265cz/z/pwkWUIoQtMsSZJzkuRn3l/t3O3Wrrb2Oa13K3VQqfFSqV+pXVpv0PohY/7o3FXO/dD7L/OBBFqcnCQjGeiZeIEAWRGRVG4WRHEAC29Jufxt7y9z7o/OrTbmeWP2KXVcqX1KbdD6KWPuM+Z3zl3q/XlJ8qUk4TLaiM2icvlLSXKe95d5f6Nzf7X2KWOe0fodpY4r1afUDq1XG3OLtZd5/23vOToDaBVykoxkoGfiBQJkRURSuVkQxQFkcna5/GPvr3HuXmvXa/2a1h8odbhUel3rDcb81drrnPsf77/CvkS0ka8myU+9v865+63doPXrWh8ulQZLpd1ar9f6Hmuvce7H3p/Fxx6Ij5wkIxnomXiBAFkRkVRuFkRxAI06K0l+7v011q6ydpvWbys1XirtV+rvWq+x9k/WXuH9Mu8/x+5BdKTTy+XveH+F97dZu8aYv2v9rlJjpdLbSm3T+hFjrnHuAufI50Cx5CQZyUDPxAsEyIqIpHKzIIoDqG4meN/s3OPGvKr1EaXeVWqrMX+y9rfOXeD91ziwHKjnU+Xy15LkAu+vd+5WY7YZ865SR5TapdTjxtxMOAdyJyfJSAZ6Jl4gQFZEJJWbBVEcQFdX7eC9wpirnftukiwmLQALZHGSnJckVzu3gnAO5E5OkpEM9Ey8QICsiEgqNwuiONCJzvCe4A3Eo244P4OSBBaInCQjGeiZeIEAWRGRVG4WRHGgI3wxSX7h/V+s7dH6YKn0MsEbiFtFOH9F64NKbdH6Tmsv9v6L1CwwX3KSjGSgZ+IFAmRFRFK5WRDFgfZ0RpJc7P2d1m7R+qBS7yn1nNZ/tvZC75dygjfQgpYmyUXe3+ncZmPeU+p9pbYYc6dzF7HPHEhDTpKRDPRMvECArIhIKjcLojjQJpYmyUXOzYzp7yv1vlKbZ8Z075cypgNt54yZkrd2izHvK/WeUpuN+bO1F/F1GxAkJ8lIBnomXiBAVkQklZsFURxoVaeVyz/1/k/WPqf1e0odnNlFZu3F3rOLDOg0X0ySi73/y8yBMKXSAaWe0/pWa//H+38nmQOzyEkykoGeiRcIkBURSeVmQRQHWsmScvli71dY+6rWI6XSDq1vt/YXnDgKYK4zy+VfeH+7tc8bM1oq7VLqfmsvcu4/ieXoeHKSjGSgZ+IFAmRFRFK5WRDFgdgtTZLLnXvY2n8qdbhU2mzMzdZ+l+wNoGHnJckt1m4xZrhUekOpldZe7hzHsaMzyUkykoGeiRcIkBURSeVmQRQHYnR2kvzauTXGvK3UQaWeNeYGa/+b+A0gs3OT5HfOPWvMwVLpLaXWWPsr584mlqNjyEkykoGeiRcIkBURSeVmQRQHYnG299c695Qx/Urt1/oJY65x7mvEbwBN8/Ukuca5J43Zr9S7Sj1lzLXOne190csFNJGcJCMZ6Jl4gQBZEZFUbhZEcaBgP/H+b9b2KvWGUquNucr7LxG/AeTurCS5yrlHjdmjda/WK4z5MZkc7UhOkpEM9Ey8QICsiEgqNwuiOFCAL5TLVzu3QesRpV7Q+g/OfYP4DSAa3/D+Zuf+rvUxpTYYs9y5z9Oj0C7kJBnJQM/ECwTIioikcrMgigP5+W6S3Gnta1ofUupxYy7z/jSmWwAR+49y+TLn1lo7oNRure90bhm7ytHi5CQZyUDPxAsEyIqIpHKzIIoDzfUfSXK5c2uNGVTqVQZZAC3rO97PfJk4oNRaay9z7jS6GVqQnCQjGeiZeIEAWRGRVG4WRHGgWa5wbovW7yr1rDHLvT+dHeAA2sLnk2S5cxuMeadU2mLM/xLI0VLkJBnJQM/ECwTIioikcrMgigML7Cfer7V2TKn1xlzEhAqgrV3k3DPGfFQqPWbM+XQ8tAI5SUYy0DPxAgGyIiKp3CyI4sDCOMf7v1r7nlIvaL3cuU9xk14AHePfyuXfOPeiMQeUus/ab3IQECImJ8lIBnomXiBAVkQklZsFURzI5Avl8s3OvaH1Hq3/6NwXGUABdLAzy+Vbrd2r1Ota/95aTsxBhOQkGclAz8QLBMiKiKRysyCKA/N0qbXbtT6k1ApjzuWwTACY5dveP2DtoFLbtL7U2qIXB/iEnCQjGeiZeIEAWRGRVG4WRHEgtZuce0+p+4z5GQkcAIIu8P5+Yw4o9Tvnil4WoKsr4oGeiRcIkBURSeVmQRQHGrU4Se6ydqRUetAYDkQHgMadmSQrrR1R6k5rP82lNFAoOUlGMtAz8QIBsiIiqdwsiOJAfWeXy48Yc0SpO6w9jSESAObltCS507mjpdLD1n6JLzRREDlJRjLQM/ECAbIiIqncLIjiQMiyJFmv9X6lrufQSgBYIDdY26/U01xoA0WQk2QkAz0TLxAgKyKSys2CKA5U9/UkecKY17S+gkkRAJrg/5x7Q+vHjPkqe8iRIzlJRjLQM/ECAbIiIqncLIjiQBX3WfuWUj9iTzgANNn5zvUpdTdXWUde5CQZyUDPxAsEyIqIpHKzIIoDc/zc+4Ol0q0MhQCQo9ude08pbkuBHMhJMpKBnokXCJAVEUnlZkEUB05aXC4/a8xWY5ZyYTYAyN0Xk2S71uuNOY3j1dFMcpKMZKBn4gUCZEVEUrlZEMWBrq6urhusPVIqXc4R6QBQqCucG1Hqt3RjNI2cJCMZ6Jl4gQBZEZFUbhZEcaBrozEPc0Q6AERjlbXPKlX0UqA9yUkykoGeiRcIkBURSeVmQRRHR/vPcvmYUt/k7EQAiMx/e/+hUp/mjCEsNDlJRjLQM/ECAbIiIqncLIji6FxfS5LhUuk/mPMAIEqfKZePlkpf4dRxLCg5SUYy0DPxAgGyIiKp3CyI4uhQP/T+bY5+BIDo7VPq+xy7hIUjJ8lIBnomXiBAVkQklZsFURyd6HLnXtK66KUAADTkH1pfShrHApGTZCQDPRMvECArIpLKzYIojo5zbpI8a0zRSwEASKHbmHNI41gIcpKMZKBn4gUCZEVEUrlZEMXRWX7o/Wsclw4ALeifWn+PNI7M5CQZyUDPxAsEyIqIpHKzIIqjs7yr1FlcAQhoWct7ZnX/nuVFLw5y9ZUk2cd3qchMTpKRDPRMvECArIhIKjcLojg6yN3W3s79wzvbnCDXmH0rlhW91DUtWrZiX3Dhe5YvKnoZF9KiihUmineeO62907milwKtTbbKSAZ6Jl4gQFZEJJWbBVEcneLrSfIWu1M63jyieMx5r14SPynmbxNSIYqjq6trn1Lc3gxZyCYZyUDPxAsEyIqIpHKzIIqjU+xS6jymt44XYRRftKjimOsU+7EbjOLTuafxLCsV/LNEcXT9IEle5hYYyEB2yEgGeiZeIEBWRCSVmwVRHB3h/6y9m6umI8oD1CtSa6qXazyKT+d7sHqWlQr+WaI4urq6uu415nIOU8d8yfYYyUDPxAsEyIqIpHKzIIqjIzxizPXMbahmbmYs4OTqhYvi+1Ys+2ThF8lvHXIMrkRxNNWNzj3Et6uYLzlJRjLQM/ECAbIiIqncLIji6Aivav1djk5HNe0axbuqpPGe5YtyWjuiOJrqe96/wjHqmC85SUYy0DPxAgGyIiKp3CyI4ugI46XSonK56KVAjBqP4pU5cHp6ul7IrLJrelZgrvbTOep+L1AnilcucPUoXvUo91ovPWuRT/61Wf+yb8WyRWlXqtavV10AojhmfKpcHuMynJgv2XAiGeiZeIEAWRGRVG4WRHG0v297/zr7T1BDg1E8HDDls8KRdOb3657pXXdncsYoXncBKtZr7h/sWV5tt3vjK9XAefuVC0wUxylvaH2u90UvBVqS7DWRDPRMvECArIhIKjcLojja37XOPcpZhaihkSjeyMXeZj+x6v7z2WbiaPOjeMWCz0m2DV7BrvZ67dsnFr/xKF73LZq1TrXfWKJ4B3vUmGu5AgjmRXaaSAZ6Jl4gQFZEJJWbBVEc7Y8ojoC6UbzRq5TPCo11D9I+GUebfYB6xd+ftYRpLr3+SYCvm597ljd6gHqjUbziWnREcXyMKI55k40mkoGeiRcIkBURSeVmQRRH++MAdQSEo7hIlnOSodzpPPPvc/Li3Lg486O5u5qbctk2mXRP/WUZl2e/qMzIs57Y6NnyjazUyd8QcbriNeYsG1EcH+MAdcxbZReLZqBn4gUCZEVEUrlZEMXREbhsG2qpE8UrE2Xo1OVTobHyX4PXLc/pvuK1d9rLV6xM3B8/V0bxWkubZaVqvatVFoAo3qm4bBuykA0ykoGeiRcIkBURSeVmQRRHR9il1HnczAzVhKN43VBddQd4qnt65xLFAzvMq19WXbwr1aJ4c1aKKI66uJkZspAtMpKBnokXCJAVEUnlZkEUR0d42JgbOKsQ1YSjeIPXNjv15JN/s/aJ0HWvtd6EKF4ZtsWe/rp3OGtiFG/wEnfVf5ko3qludO4hrgCC+ZJ9JpKBnokXCJAVEUnlZkEUR0f4P+futrbopUCMmhHFu8IJs/Kq4E2L4jVidiRRvP4V3sRzieKYca8xl9PSMV+yz0Qy0DPxAgGyIiKp3CyI4ugUr2j9Pa7xA2EBo3iVk65rpc05ob0pl20LiCGKN5jDp4niEH7o/UscnY4MZJ+JZKBn4gUCZEVEUrlZEMXRKb6aJH1c5gdCxnPF5/cqs2NzwVG8kXPFa122LUMUr9ifH7grO1EcFfYrdTaX4UQGcpKMZKBn4gUCZEVEUrlZEMXRQf5i7Z85phFzZbmCeroXEjuaT/577lE8cLewqota8xz4DFF89o8rfkoUR8Bd1t5BG0c2cpKMZKBn4gUCZEVEUrlZEMXRWd5R6stcSh2z1Ini4mzsKtddO3WD7I93L888qTJhNhbFU+17n18UD9w5PLzK847icqVq7Zmvc89zonhn+1qSvM3BTchsWohkoGfiBQJkRURSuVkQxdFZvu/960xymCUcxbtSnC7+SZ5s4Cmzw2fNi6/V3UM+vyieZqXm3pA8RRSvs1KNLwBRHKe8odR3+S4Vmck+E8lAz8QLBMiKiKRysyCKo+N8K0k2chccfKxuFG/4AmMponhFxq4VW5sXxeexUl0pk3B4perdwqz6m0AU72TPaf1NcjgWguwzkQz0TLxAgKyISCo3C6I4OtEvnXuFC/Ciq6urgSje1WBwnbX3uE7MFAGy1t9vXhRvaKXEUeWpknDdlQq8S/t6evaJ30+7AGgnr2r9C26BgQUie04kAz0TLxAgKyKSys2CKI4O9T3v3+FIdaS5MFvtg66rXIS8eg4Nngde7SLrdaJ11VuOpVI9MNd+6Tm/3UASDq9Ulbd034pli+b8c8X3EWkXAG3gXY5Lx4KSPS+SgZ6JFwiQFRFJ5WZBFEfn+nKSHC2VPsNNcQAgSp9NktFS6SxyOBaUnCQjGeiZeIEAWRGRVG4WRHF0tE+Xyx8q9d8c9wgAkfm2c0NK/TvflmKhyUkykoGeiRcIkBURSeVmQRQHujZovZob1QJANB415hmu6IHmkJNkJAM9Ey8QICsiksrNgigOdHV1dV1n7Uip9H/OFb0gANDRrnJuTKlr6cZoGjlJRjLQM/ECAbIiIqncLIjiwEmnlctPG7ND6zM5HhIAcndWkryg9VPGfIomjGaSk2QkAz0TLxAgKyKSys2CKA7M8VPvDyh1O8erA0CO7nTuXaV+wpU70HxykoxkoGfiBQJkRURSuVkQxYEq7rZ2n1LnE8gBoMl+4tx+pe6k3yIvcpKMZKBn4gUCZEVEUrlZEMWB6r6SJI8b80+lrmIvDQA0wa+c26P1Gq3P5oh05EhOkpEM9Ey8QICsiEgqNwuiOBDy30nylDEHlLqRawgBwAK5ydr3lXrSmHP4rhO5k5NkJAM9Ey8QICsiksrNgigO1HdmufyQMSNK/cXaxey9AYB5WZwkd1s7Wio9aO0ZSVL04qBDyUkykoGeiRcIkBURSeVmQRQHGnVakvzZ2iOl0sPGnMUQCQANOztJVll7RKnbrf13vtBEoeQkGclAz8QLBMiKiKRysyCKA6nd4Ny7St1vzIUcWgkAQRd5v0Lr/Vr/ltN8EAc5SUYy0DPxAgGyIiKp3CyI4sA8XeJcj9YfKPWgMcvI5AAwy3e8X2ntYaW2aH0JIRwxkZNkJAM9Ey8QICsiksrNgigOZPK5cvkm517Tulfr26zlwHUAnezscvl2a99SarfWv3NuCS0R8ZGTZCQDPRMvECArIpLKzYIoDiyMb3h/j7XvKrVT62ucO40BFEDH+I9y+VrnXtZ6v1J3W/t1GiAiJifJSAZ6Jl4gQFZEJJWbBVEcWGA/8n6NtSNKbTDmEg5cB9DWLnGu25hjSq025gd0PLQCOUlGMtAz8QIBsiIiqdwsiOJAs1zm3Cat+0uljcZc49xSdhMBaAtnJMk1zm0y5t1SaZMxl5LA0VLkJBnJQM/ECwTIioikcrMgigPN9W9J8kvn1hhzUKnXtL7b2vMYWwG0oO95f7e1b2j9vlJrrL3EuU/xDSNakJwkIxnomXiBAFkRkVRuFkRxID/LkuR2a3dp/YFSTxpzhfeLGWQBROwz5fIVzj1lzJBSr2h9u3Pn8mUiWpycJCMZ6Jl4gQBZEZFUbhZEcaAAnyuXf+Xceq2PKLVT6z86dw6ZHEA0zvH+Vude0vpDpdYbc5Vzn6VHoV3ISTKSgZ6JFwiQFRFJ5WZBFAcK9iPv/2rtHqX2aP2YMcu9/zIjL4DcfSVJljv3uDFvKrVH6/uM+SE7wNGO5CQZyUDPxAsEyIqIpHKzIIoDsTjL+984t9aYd5Q6oNQ6Y65z7r+I5QCa5ptJcp21TxtzQKl9Sq219mrnziSBo63JSTKSgZ6JFwiQFRFJ5WZBFAdidGaSXOncamPe1HpQqY3G3GTtMmI5gMyWJcnvrd1ozGCptFep1db+n3NnlstFLxeQEzlJRjLQM/ECAbIiIqncLIjiQOxOT5JfOvegta9pfaRU2mrMrdZ+n91WABr2gyT5k7XbjDlaKu1W6gFrf+nc6cRvdCQ5SUYy0DPxAgGyIiKp3CyI4kArWVwu/9z7+6z9h9ZjpdLftf6z1pd6fxY7zAHMcna5fKn3d1r7ojHjpdLLWt9r7QXOfZr4jY4nJ8lIBnomXiBAVkQklZsFURxoVZ8ql3/s/S3WdhvzrlKDSm0z5m5rf+ncl0jmQIc5K0l+6dw91m7TerBU2q9UtzE3W3u+94uI38AscpKMZKBn4gUCZEVEUrlZEMWBNnF6klzg3O3ObTSmX6kBpbYac7e1l3h/JskcaDtfSpJLnLvb2m3GDCj1rlIbjbnN2gu858hzIEBOkpEM9Ey8QICsiEgqNwuiONCePp8kP/f+dms3aX1AqUNK9Wh9l7W/8J7rMwGt6MwkucT7u63daswhpfqV2mTM7c5d4Nzn+boNaJicJCMZ6Jl4gQBZEZFUbhZEcaAjfKFcvtD7O6x9TusDSr2i9Q6tHzTmWue+7/0S5nggMkuS5AdJcq1zDxrzvDGvKnVAqU1a327tz73/Al+oAfMlJ8lIBnomXiBAVkQklZsFURzoRJ9Pkp96f5NzjxrzD60PK/WeUoRzoCgVwfs9pQ4r9bLWjxpzk3P/4/0XKElggchJMpKBnokXCJAVEUnlZkEUB9DV1dX1RcI5kJe6wfuLlBvQNHKSjGSgZ+IFAmRFRFK5WRDFAVRXK5zfZszvnLvI+/9Kkn/nKFkg6LRy+b+S5CLvb3TuNmsJ3kDh5CQZyUDPxAsEyIqIpHKzIIoDaNRMOL/a2pXWbtH6Ta1HS6UDSr2k9Vpr77D2Ku/P4yxWdKql5fL3vL/K+z9bu9aYl7R+T6mRUulNrbdo/ZAxy60leAOFk5NkJAM9Ey8QICsiksrNgigOIJMzy+Ufer/cubusfcqYXVofUupIqfQvrTcZ8zdrb3DuAue+niSfIqKjLXyqXP5Gkvzc+xuce8DaTVr/S+sjpdLBUukVrZ8y5i/WLvf+h6RuIEpykoxkoGfiBQJkRURSuVkQxQEsvMXl8reS5BLn/uDcw8ZsM+YtpcZmbn2s1HpjVhjze2v/1/sfJMmXOdAd8fn3cvnLSfID76/w/g/OrTBmvTHdWvcrNaZUr1JbjXnYmN9be4n330qSxSY9T7YAACAASURBVHyGgRYhJ8lIBnomXiBAVkQklZsFURxAfs5Kku87d4VzNzv3gLXPGPOy1u8oNVoqDSr1hlI9Wj9qzJ3OXePchd6fmySns18RTXN6kpybJBd6f61zd1q7xtoerd9QalCp0VLpHaVe1nq91n+z9mbnrnDue95/iQ8k0OLkJBnJQM/ECwTIioikcrMgigOIQoOh6A5rb7X2Gucuce4H3n/D+9PZG4kaTk+Sb3j/A+8vce4a52619g5j+AII6HBykoxkoGfiBQJkRURSuVkQxQHEbvahwtdZe5+1a6zdZMzLWvdqPVgqHVdqUKlerV/WepMxa6y9z9qbnVvu/UXen5ckX02S/ySxt5El5fJXk+S8JLnI++Xe3+zcnE+FUrU+FddyWgTQ8eQkGclAz8QLBMiKiKRysyCKA2gHcv/nCmPWGrNF611K9Sk1XCp9VCq9r9S/tH5a683GrDNmtbV/tfZ2a290brlzl3n/U+/P8/6bSXJmkiwpl7tIa81WLi8pl89Mkm8myXne/9T7y7y/2rkbnbvd2vutXW3tOmM2G7NO6z1aH1RqTKnDpVKfUruU2qL1WmNWGDPnWIkk4VgJALXISTKSgZ6JFwiQFRFJ5WZBFAfQKf6tXD4jSb6VJD9w7mLvr3TuOmv/6Nzd1j5kzFprN2i9Q+tdWu9V6oBSh0uliVLpiFLvK9Wr1G6tX9B6kzFPGvOwMbcac4e1t1h7o3PXOvdr5/7X+194/zPvf+T9eUlybpJ8I0nOLpeXlstLyuXT2igcnlYuLymXl5bLZ5fL30iSc5PkvCT5kfc/8/4X3v+v97927lrnbnTuFmtnzil42JgnjdlkzAtav6Z1r1LvK3WkVJoolQ6XSgeU2qvULq13aL1B68eNeciYu629xdrrrL3SuYu9/4Fz53i/lEvxA8hGTpKRDPRMvECArIhIKjcLojgAhCxOkjOS5BtJ8h3vf+L9Jc79yrkbnPudtXdZe7+1Dxmz2pgnjHnGmOe03q71Tq13KfWGUr1K7VfqYKl0uFQaKZWOKzVSKh0ulQ6WSvuV6lXqDaV2KbVJ6xe1fkHrHVpv07pH683GbNK625hnjVmv9TpjnjRmrTGPGfOoMauNecSYldY+aMzfrL3f2vuMucfau6y9ybm7rL3H2vuMud/av1n7oDErrX3EmNXGPGrMY8asNeZJY9YZs17rZ43pNmaT1puN6dF6m9Y7tH5B6xe13qT1q1o3vhY7td6u9XNaP2PME8asNuYhY+639i5rf2ftDc79yrlLnPuJ98u8/0aSnMFVxwEUQU6SkQz0TLxAgKyISCo3C6I4AOSn6v7k7zl3fpL8xPufen+B9xd6f7H3l3h/qfeXO3eF91c69yvnlnv/G+eude4656537nfO3eTcH5y7xdpbnbvN2jusvdHaO6y9zdpbnbvF2j84d5Nzv3Pueueuc+5a537j3HLvf+Xclc5d4f3lzl3q/SXeX+z9hd5f4P1Pvf+J9+cnyfec+25b79sH0JnkJBnJQM/ECwTIioikcrMgigMAAKBTyEkykoGeiRcIkBURSeVmQRQHAABAp5CTZCQDPRMvECArIpLKzYIoDgAAgE4hJ8lIBnomXiBAVkQklZsFURwAAACdQk6SkQz0TLxAgKyISCo3C6I4AAAAOoWcJCMZ6Jl4gQBZEZFUbhZEcQAAAHQKOUlGMtAz8QIBsiIiqdwsiOIAAADoFHKSjGSgZ+IFAmRFRFK5WRDFAQAA0CnkJBnJQM/ECwTIioikcrMgigMAAKBTyEkykoGeiRcIkBURSeVmQRQHAABAp5CTZCQDPRMvECArIpLKzYIoDgAAgE4hJ8lIBnomXiBAVkQklZsFURwAAACdQk6SkQz0TLxAgKyISCo3C6I4AAAAOoWcJCMZ6Jl4gQBZEZFUbhZEcQAAAHQKOUlGMtAz8QIBsiIiqdwsiOIAAADoFHKSjGSgZ+IFAmRFRFK5WRDFAQAA0CnkJBnJQM/ECwTIioikcrMgigMAAKBTyEkykoGeiRcIkBURSeVmQRQHAABAp5CTZCQDPRMvECArIpLKzaIdojgAAAAwP5EM9ERxIEBWRCSVmwVRHAAAAJ0rkoGeKA4EyIqIpHKzIIoDAACgc0Uy0BPFgQBZEZFUbhYtEMWnp6eJ4gAAAGiG2QN9gYtBFAcCZEUQxXMy05gGBgb27t1b9LIAAACgfezdu3dgYIAoDsRMVgRRPCeTk5Ojo6ODg4O9vb07duwoenEAAADQDnbs2NHb2zs4ODg6Ojo5OVngkhDFgQBZEUTxnMxE8aGhob6+vp07d3Z3d69du3bVqlUrV658EAAAAGjYypUrV61atXbt2u7u7p07d/b19Q0NDRHFgZjJiiCK52RycnJsbGx4eLi/v3/37t3bt2/v7u5et27dE088sRYAAABo2BNPPLFu3bru7u7t27fv3r27v79/eHh4bGyMKA5ES1YEUTwnU1NTExMTIyMjg4ODfX19u3fv3rlz544dO7Zu3doDAAAANGzr1q07duzYuXPn7t27+/r6BgcHR0ZGJiYmip3mieJAgKwIonhOpqamJicnx8fHjx07Njg42N/f39fX19vbu3fv3j0AAABAw/bu3dvb29vX19ff3z84OHjs2LHx8fHJyUmiOBAtWRF7iOK5OZXGR0ZGhoeHh4aGBgcHBwYGDgEAAAANGxgYGBwcHBoaGh4eHhkZiSGHTxPFgSBZEUTxXM2k8YmJibGxsdHR0dHR0REAAAAgpZlJcmxsbGJiIoYcPk0UB4JkRRDF8zY1NTUTyCcnJ48DAAAA8zIzT87MlkVPuNPTRHEgSFYEUbwwUwAAAEAGRc+zc0wRxYHaZEUQxQEAAABkRRQHAmRFEMUBAAAAZEUUBwJkRRDFAQAAAGRFFAcCZEUQxQEAAABkRRQHAmRFEMUBAAAAZEUUBwJkRRDFAQAAAGRFFAcCZEUQxQEAAABkRRQHAmRFEMUBAAAAZEUUBwJkRRDFAQAAAGRFFAcCZEUQxQEAAABkRRQHAmRFEMUBAMjbFADMS9HdK2SKKA7UJiuCKN5Kim7+AIBK82jjk5OTk5OTxwEgpZnuMY/mk48pojhQm6wIongLYHQDgDhNTk6eOHGiwbF4ppNPTEzk8D8OAG1sYmJiJpAXvSCViOJAgKwIonjsGN0AIHLHjx+fCeSB35lp5uPj47ktFYA2Nj4+HmEaJ4oDAbIiiOJRY3QDgPiNjo6Gd1KdaubHjh3LedkAtKVjx45FmMaJ4kCArAiieLwY3QCgVYyMjExMTJw4caLqT6empiYmJkZGRgYHB3NeMABtaXBwcKbtRDW+E8WBAFkRRPF4MboBQKs4fPjw6Ohorf+VTk5Ojo2NDQ8P9/f3579sANpPf3//8PDw2NjY5ORk0cvyCaI4ECArgigeL0Y3AGgVBw8ePHr06Pj4eNUd45OTk6Ojo0NDQ319ffkvG4D209fXNzQ0NDo6ShQHWoWsCKJ4vBjdAKBV7N+///Dhw7X2UM3088HBwd7eXvnTomcDALGTfaO3t3dwcJAoDrQQWRFE8XgxugFAnGRPfvvttz/44INaY/HMbDowMLB37176OYC0ZN/Yu3fvwMDAzASffsZsFqI4ECArgigeL0Y3AIiT7MlvvvlmYCxmNgWQhewbsyf49DNmsxDFgQBZEUTxeNHLACBOsicH9lAxmwLISPaNOCd42h0QICsizkJOpT2jOL0MAKIle3JgDxX9HEBG4Z4TzwRPuwMCZEXEWcipEMUBALmSPTnwf1P6OYCMUvWcAtHugABZEXEWcipEcQBArmRPJooDaJ5UPadAtDsgQFZEnIWcClEcAJAr2ZOJ4gCaJ1XPKRDtDgiQFRFnIadCFAcA5Er2ZKI4gOZJ1XMKRLsDAmRFxFnIqRDFAQC5kj2ZKA6geVL1nALR7oAAWRFxFnIqRHEAQK5kTyaKA2ieVD2nQLQ7IEBWRJyFnApRHACQK9mTieIAmidVzykQ7Q4IkBURZyGnQhQHAORK9mSiOIDmSdVzCkS7AwJkRcRZyKkQxQEAuZI9mSgOoHlS9ZwC0e6AAFkRcRZyKkRxAECuZE8migNonlQ9p0C0OyBAVkSchZwKURwAkCvZk4niAJonVc8pEO2u2Zat2Hfqzdy3YlnRixOjRct7Zn3iepYvWpT9b1b8yXn/HVkRcRZyKkRxAECuZE8migNonlQ9p0BNaneLZgfQ6vatWLYAiStyi+amzIXKmQ2/3Mk3uoEnVtlguX1xsOBRvHJ1iOJzEcUBALmSPZkoDqB5UvWcAjWp3dVP4qdkiEnxyzmK13rb64bqKgm++Ut7ClE8Z0RxAECuZE8migNonlQ9p0DFR/Hp6dwiX/4iieLT+1Ysq/26Vfel57ldiOI5I4oDAHIlezJRHEDzpOo5BYojik+3cRrP81zx2m976HSAmkmcKN46hZwKURwAkCvZk4niAJonVc8pUC5RvDIHVj+TvK2PVM/HnPd1376KbVDrWbODcE/Pwl9BrS6ieM6I4gCAXMmeTBQH0Dypek6BConi1X5nenp6umd5e+4Yz83cKL5i+dz/rHqM+tzQ2rO8CRczr4sonjOiOAAgV7InE8UBNE+qnlOgAqO4+LVQZKqxH736n52V7E7mOrEffk7eE9cPDx3OHTivuv7vz13BKstZebB4uuvMV0TxZZX/Xe8LkZ7ljafiVFuk1rNm9tU3+KKNX+adKB5GFAcA5Er2ZKI4gOZJ1XMKVGwUb+SqZnVPO6+If3NjWM/y2vdVm0lxNX8s8lvNU6prL38gEza+nI0nSRG96yTSRZX7xBc1korTbpGTrxV4oxt40fCbH/wMEMUrEcUBALmSPZkoDqB5UvWcAhUbxbsqI1blbzaQfqen5yaxqvtOa5h7OvWC/Nm5x4E3HMXraPDQfRHFxctXfFMgknjdKD6PLdIVukh71afO50VDG4soPhdRHACQK9mTieIAmidVzylQ4VG8IqPNDlRpLsP+SX5LFXHrmJWrG/6zc1Z2oaJ4+G5k1d+xfSuWLaqSxWf/vjx4PhzF57dFKl8ozRNTvGhgYxHF5yKKAwByJXsyURxA86TqOQWKNorL/aizzwqWMfbUT8NnFFfPdR+nuPAp5ScXSOS6quc/V1+YulH8418IL0lDb/tMFA8twOx3+OQ2CkTxDFuk8omfbOUq70H4Red8luTpDXXf9rQqly7WQk6FKA4AyJXsyURxAM2TqucUKN4oLo5cr3xilUutzVz5rEqK/eRZMvzNzWmNL3mtvznvKF6xjvNYEhnFxd+ZdfhAZRKvF8XnvUWCTxTvQ+BFxV3xarzzRPEwojgAIFeyJxPFATRPqp5ToGijePgk5xniqdWieJ2d2OL06WD2q74KCxLF5TXV0i9J1She6xj1iiRe7UXnvDnz3iJ1n9joi1Y7Sr/ibPcG39vGTQtxFnIqRHEAQK5kTyaKA2ieVD2nQJFF8U9+U/xz3Ut55xTF657jvWBRPHiad1XVo/giuTXktwdVD0aofb53mi1S94mNvmhdRPHGEMUBALmSPZkoDqB5UvWcAhUexWtdQT3CKN7gZcBji+JilcVdzmZf8IwoPpd8kTgLORWiOAAgV7InE8UBNE+qnlOguO4rPiunxRbFG78dV4RRfFHlWi2veUR9K0dxzhVvEFEcAJAr2ZOJ4gCaJ1XPKVCxUTxw7fGqZx1XqJrxmhTF5bXFPnlKk84VX7goLt7Pine91mXSAqk4xRZp6rniVRHFw4jiAIBcyZ5MFAfQPKl6ToEKjOLV7n5V86bi9a/X3fDByfOL4lUvclb1FeOM4jV36s993YYv25Zii4SfKA43SHEF9VqI4mFEcQBArmRPJooDaJ5UPadAhUTx6hc+q8iEte9TXfWnjd9TOnsUn3NLsPDdtuOJ4jWyeMWfDd3MbN5bJM2P6r6ofB8+XubZG4UoHkIUBwDkSvZkojiA5knVcwqUSxRvRJXjllOcJzznvOgconidZfnkr0UTxWusQnj1K3+6MFukjnm/KFG8UURxAECuZE8migNonlQ9p0BxRPHqJx43fKW0uftRm3TZtoZXKdooXuXtrHMzc/HmzGuLNPDu7dv3yY8X4EWJ4mFEcQBArmRPJooDaJ5UPadAhUdxecrxbPVjmAycTbuZWWCl9vX07Jv1nEYWpoAoLt7M2gd7V39zqv4R8V5Uv7ha7ef1LJ/zR+f1otPpjoxonHydOAs5FaI4ACBXsicTxQE0T6qeU6Amtbv6+5Abvhp2V60kVvsvVMTJip/Wyavix3OXpOrF5ub8c8WXC4GFCS9neEmqqnu98Sz3FZv7PqTbIh8/q/LdO/VdQDiK13p64Cnh97Zx8sXiLORUiOIAgFzJnkwUB9A8qXpOgWh3QICsiDgLORWiOAAgV7InE8UBNE+qnlMg2h0QICsizkJOhSgOAMiV7MlEcQDNk6rnFIh2BwTIioizkFMhigMAciV7MlEcQPOk6jkFot0BAbIi4izkVIjiAIBcyZ5MFAfQPKl6ToFod0CArIg4CzkVojgAIFeyJxPFEbZQF+BtxVdHdql6ToFod0CArIg4CzkVojjQnuY9O865P0WaG5wADZI9mSjePBV3nKl13+DK2+HUrv26d+hZcAt4W9quRm7s9PGKNePVUYhUPadAtDsgQFZEnIWcClEcraruOHXqBoktrdZa1pqnZ2SZHeU8nnklgDnk55ko3jyVrbJGNxA3pq1Z+/nvIl7YMNxQEieKt5dUPadAtDsgQFZEnIWcClEcraqxcapOZI1W5fAXWL1qu6TmPTvK122PbzQQFflBJoo3jyjqnuXVmobsOFVrv2LneT4NliiOjFL1nALR7oAAWRFxFnIqRHG0qgaj+HQLpvEGY/jHqgzWrbtXvGLQ54uAtiQ/xETxpqpb1NW/+6vWNxaJw9NzWP4iovgnfZUo3gZS9ZwC0e6AAFkRcRZyKkRxtKpUcbWFEl3KHH5q/easYJbZcc5Tcx86C9nnhpzJTzBRvKkqDj6X/bDyRPFT5Se/5qv8rqzVo3j9bxOI4m0gVc8pEO0OCJAVEWchp0IUR6sKjFNVpsoWGZ4a2TdVfWiu/J1WnR2J4p1Afn6J4k1V2TREQ6jaVKrG1EKuJU4UR0apek6BaHdAgKyIOAs5FaI4WlV4nBKTZU57bzJq/MpJIrLPWcHWnR2J4p1A9mSieFNVNgSxu7vWsTgV+88XicPTq75c1b9W69CkWQV/sonN+peTDTDc0ETPqNPqmxTFG1/rugsc/r5jbpPkypoNkZsmzgmedgcEyIqIs5BTIYqjVdWJ4vWuVFR9J1C9Q9mr75Geo+6SnPylan88xSXTwr9cdXZs8O83cgBq4ytV592bNWXWfWtb6CwDhMmNSxRvttBhRIGzYipCb70TxeueXhPM9j3Lq32HWmUJZ/eNKl0t7yieeq2Dt5er+z+vtF89oKt1JnjaHRAgKyLOQk6FKI5WNe8oXjdM1xrmGnjiySc3+BQxlTZ6X9+Tv1/x12ePp2J2rLkkdfaPVXkrUq1Ujc1R5Sl1x1n2kLcNuXGJ4s0WOF18TufZt2J57duGi92xDX2/WaH2l4b79okeEI7i4tu9hnLpwkbxea116HwB0SwrlzD/+7q3AblF4pzgaXdAgKyIOAs5FaI4WlW9KC5y6qJqI10t850yp2eNXI08Zc58VjtaV1W5KrOWudHVrPZC4SiedqUaWph9K5Y1sMRE8bYhNy5RvNkCp37M+UnP8sCu7zk/CfWNsNoXJ6/2q1V+7eOXll2+kbdiAaP4/NZaLPnc04tEk52zsRo7RwAV5PaIc4Kn3QEBsiLiLORUiOJoVenOFf84pjacUecewCniadV/n/3ERke0WflZJuvwO1Dr64Y0q1llZQNRfB4r1dizepYvqn/sPweotw25cYnizRY4XbziGPFaNxSs+Auh3bwV6VG0gFM/bfBUl6phWB741OBb0VAfCx5klHGtu4IHmVdphHMWhts9zofcwnFO8LQ7IEBWRJyFnApRHK0qEMXlpDV7Bjo5yNQ736/W2FQxJlZMsSd/P3jYZK09OWkny8BB+OEBNzxB1ori81sp+VrVJvuar8I+n7ZU+dEkiueiVmnLy6RVvWxY4Gph8tyaipeudQiP7FQNXUejctd9ukbRUBQPHGR06g2Z71qLN7POdxNzOmQRN5NrA/I9jXOCp90BAbIi4izkVIjiaFUpdvs2djZd4MC/qnn75LOqpfTwZXVqvVAzo7hYhtozYs0oPq+VqjutLluxr5EJFe1kWiCK56BqCVecKD5TiVXPRg6cKF73AhNdNQ7JbvDi5OLXesL3ZgtbqCg+77Wu8jdPvck1Fq76N7atc2uMwsm3NM4JnnYHBMiKiLOQUyGKo1U1HMUbvcBsg1E8sFe8eqiu9kVA1XGqiVG8yu1waj631ny5ECtVfx8OUbwTTAtE8RxULa6KS5if/M1qp4sHQqDI+FXKvGormGcUnyvtQdoLdYD6vNc68KNZ/zjnYpsnN1btcwQQJrdwnBM87Q4IkBURZyGnQhRHq2ositfMfnXPpg6c9ffJIdY1dhQ3fo23mT9XdY1SnyvewG6c2WrtrmngKNYUK9XItBpYKaJ4W5KfF6J4PuSR51W/TKx6QnLFxd1q/tkconjFXvGUx2kv1GXbMkbxqv9b+eRv7luxrGLbLJJfFxPFGzUtxDnB0+6AAFkRcRZyKkRxtKr6SbpmCG8oVFaEwPrPmTVEzi+11j2Wu3JFxI7tWetYf8BtaO83URxNID8vRPF8yOqWJ4rPEKckVyTxYqO4uAF5mkO1Y4niMlgvmpPEK+70Nvfn3MYsnWkhzgmedgcEyIqIs5BTIYqjVaUdp2Y0mMOngweiV//tmjeqafSFAudvN/AOhG54k/9e8VMLQxSHJD8wRPF8iPRXM2BX/qJIhbP/bODWXNV/p9Zl2xqO4uJF530F9QWK4mnWuvqSzH2TZ1an4jIlFUm8wfVFV+tM8LQ7IEBWRJyFnApRHK1qflE8cD524FzxOXuO9sk71ATPmm5430XgYuMN/PLcCxqnPVe8gcu2zW+lGplWA+vFuNmWpgWieD4qjzxfUeVE8ZO/WVHwK2reRaKrgZNrah3CkyWKi3OMGj1MfaGi+LzX+pNfmNvtenpmJ3FxFbc5W4uj09OZFuKc4Gl3QICsiDgLORWiOFrV/KJ4YK9CIIrPelZD0174YuMNLl7g5aqc6D43G6e+gvqsGXF+V1Cvpe616BYt7+FmZp1mWiCK56bW4S2iH9Y8DqZKFVdrSIGf1rpXeaoo3iUPVmrsMPWFiuLzXutZf7nGm/zJUQN1fgENkm9hnBM87Q4IkBURZyGnQhRHq8oexYM3za55o9dGDoNsaAg7dX/z2hfyqfrcGrcMD91arHKNgotXM4rPa6XCz/r4Ta+9IZg425H4jBPF81PjXJsqLbRGCmzkrl1BKS8wGfg12ega6c8LFcXnvdZ137caXwTXf6NQi3wL45zgaXdAgKyIOAs5FaI4WtVCRPGQ+sNQxW+HTp4MqJxrG75JW/VFnVH3+vCBZQhcZ2geK9XYkjT0++whbxty4xLFc1OjwqoE7Fq/WP3PNnoZjtCly9JG8WqrU//ApQWM4vNb6zl/vNofmHPmVL1fQCPkexjnBE+7AwJkRcRZyKkQxdGq5nnZtoYj6tyroDU2b83Z2zP/EW1+F0ibs5pzL71beXq7WILab2zF3Dyvabv+ex74LqDOmqIVyY1LFM9N9Squts+2auUGyrB+fxCvkj2Kd6W/DeQCRvH5rfWcp1d5k+v2z3Q3b0NX60zwtDsgQFZEnIWcClEcrWp+UVw8cY7Zl80JXZA8IO0OkxpTWsM3XGvkruk9y9Psag5E8XmvVPj9qzwCv8ZLEMXbhty4RPE8yXKsupe1Wt9LfeXFWj3hFHmr87S/FrgIZQOr31CsrbuQade65h+vu3bBdwm1yI0T5wRPuwMCZEXEWcipEMXRquYxTp1S67Jns/853QHqtZekdoyf71A73dCEJy81V+0C7eluhJtxpeTaBNJ1lXP32RHULuTnhigOoHlS9ZwC0e6AAFkRcRZyKkRxoA55HbGKX5DXGStkORdKlu84gEbInkwUB9A8qXpOgWh3QICsiDgLORWiOFBH3ftpV9ypt6Wzq9jd3dqrgzjJnkwUB9A8qXpOgWh3QICsiDgLORWiOFBH+M7YgRt0txZumYPcyA8aURxA86TqOQWi3QEBsiLiLORUiOJAHWnuC9bCR6dXjeLcMgfNID9pRHEAzZOq5xSIdgcEyIqIs5BTIYoD9TV2PfPWPpa7yiqySxzNIYuHKA6geVL1nALR7oAAWRFxFnIqRHGgUTV3j7fFxb3Dx+EDC0jWEFEcQPOk6jkFot0BAbIi4izkVIjiAIBcyZ5MFAfQPKl6ToFod0CArIg4CzkVojgAIFeyJxPFATRPqp5TINodECArIs5CToUoDgDIlezJRHEAzZOq5xSIdgcEyIqIs5BTIYoDAHIlezJRHEDzpOo5BaLdAQGyIuIs5FSI4gCAXMmeTBQH0Dypek6BaHdAgKyIOAs5FaI4ACBXsicTxQE0T6qeUyDaHRAgKyLOQk6FKA4AyJXsyURxAM2TqucUiHYHBMiKiLOQUyGKAwByJXsyURxA86TqOQWi3QEBsiLiLORUiOIAgFzJnkwUB9A8qXpOgWh3QICsiDgLORWiOAAgV7InE8UBNE+qnlMg2h0QICsizkJOhSgOAMiV7MlEcQDNk6rnFIh2BwTIioizkFMhigMAciV7MlEcQPOk6jkFot0BAbIi4izkVIjiAIBcyZ5MFAfQPKl6ToFod0CArIg4CzkVojgAIFeyJxPFATRPqp5TINodECArIs5CToUoDgDIlezJRHEAzZOq5xSIdgcEyIqIs5BTIYoDAHIlezJRHEDzpOo5BaLdE5GLoQAAIABJREFUAQGyIuIs5FSI4gCAXMmeTBQH0Dypek6BaHdAgKyIOAs5FaI4ACBXsicTxQE0T6qeUyDaHRAgKyLOQk6FKA4AyJXsyURxAM2TqucUiHYHBMiKiLOQUyGKAwByJXsyURxA86TqOQWi3QEBsiLiLORUiOIAgFzJnkwUB9A8qXpOgWh3QICsiDgLORWiOAAgV7InE8UBNE+qnlMg2h0QICsizkJOhSgOAMiV7MlEcQDNk6rnFIh2BwTIioizkFMhigMAciV7MlEcQPOk6jkFot0BAbIi4izkVIjiAIBcyZ5MFAfQPKl6ToFod0CArIg4CzkVojgAIFeyJxPFATRPqp5TINodECArIs5CToUoDgDIlezJRHEAzZOq5xSIdgcEyIqIs5BTIYoDAHIlezJRHEDzpOo5BaLdAQGyIuIs5FSI4gCAXMmeTBQH0Dypek6BaHdAgKyIOAs5FaI4ACBXsicTxQE0T6qeUyDaHRAgKyLOQk6FKA4AyJXsyURxAM2TqucUiHYHBMiKiLOQUyGKAwByJXsyURxA86TqOQWi3QEBsiLiLORUiOIAgFzJnkwUB9A8qXpOgWh3QICsiDgLORWiOAAgV7InE8UBNE+qnlMg2h0QICsizkJOhSgOAMiV7MlEcQDNk6rnFIh2BwTIioizkFMhigMAciV7MlEcQPOk6jkFot0BAbIi4izkVIjiAIBcyZ5MFAfQPKl6ToFod0CArIg4CzkVojgAIFeyJxPFATRPqp5TINodECArIs5CToUoDgDIlezJWaI4AKQV5wTP+AoEyIqIs5BT6dAoDgCIB1EcQJ7inOCJ4kCArIg4CzkVojgAoGCz/29a8SP6OYAFF+cETxQHAmRFxFnIqRDFAQAF27t378DAQNUoPj09TT8HsLACX/8ViCgOBMiKIIrHi9ENAFrCtm3b3nzzzbpRfGBgYO/evfkvHoD2E/76ryhEcSBAVgRRPF6MbgDQEl544YW33nrrgw8+GB0dnZyclL8wOTk5Ojo6ODjY29u7Y8eO/JcQQDvZsWNHb2/v4OBgrZ5TFKI4ECArgigeL0Y3AIhfd3f3yy+//M477xw+fHhsbCwQxYeGhvr6+nbu3Nnd3b127dpVq1atXLnyQQBowMqVK1etWrV27dru7u6dO3f29fUNDQ0RxYEWIiuCKB4vRjcAiNNDDz30yCOPrFmzZv369du3b3/jjTfee++9o0ePjo+Pnzhxomo/HxsbGx4e7u/v37179/bt27u7u9etW/fEE0+sBYAGPPHEE+vWrevu7t6+ffvu3bv7+/uHh4drff1XFKI4ECArgigeL0Y3AIjTzEz87LPPbt269ZVXXunr65s5Or3W/0qnpqYmJiZGRkYGBwf7+vp27969c+fOHTt2bN26tQcAGrB169YdO3bs3Llz9+7dfX19g4ODIyMjExMTUY3vRHEgQFYEUTxejG4AEKetW7du3779xRdffPXVV996661Dhw4FdonP9PPJycnx8fFjx44NDg729/f39fX19vbu3bt3DwA0YO/evb29vX19ff39/YODg8eOHRsfH5+cnIxqfCeKAwGyIvYQxaPF6AYAcTo1E7/77rsDAwNHjx6dOUw08P/RUy19ZGRkeHh4aGhocHBwYGDgEAA0YGBgYHBwcGhoaHh4eGRkJMIcPk0UB4JkRewhiseM0Q0AIjQzE3/wwQepZuKZlj4xMTE2NjY6Ojo6OjoCAA2b6RtjY2MTExMR5vBpojgQJCuCKB47RjcAiND8ZuKpqamZrj45OXkcAFKa6R4znaTZI+g8EMWBAFkRRPEWwOgGABHKMhNPAcC8NGPUXChTRHGgNlkRRPFWUnTzBwDMUfT/FgAgIlNEcaA2WRFEcQAAAABZEcWBAFkRRHEAAAAAWRHFgQBZEURxAAAAAFkRxYEAWRFEcQAAAABZEcWBAFkRRHEAAAAAWRHFgQBZEURxAAAAAFkRxYEAWRFEcQAAAABZEcWBAFkRRHGgDeV/d+WAot+MzlL01p6j6DcDAJCrKaI4UJusCKI40CZmws+JEycm43PixAmyWfOw6QEAMSCKAwGyIojiQDuYmpqanJz84NVdPV//yrZz/3v7d86N6rHlq2e/t/m5ycnJFu0yMWPTAwAiQRQHAmRFEMVbUl6Hlzak6DcDJ8PYxMRE78qHupcs/se539p93neienQvWfz6LTePj48TyRYWmx4AEI8pojhQm6wIonjLmMm9HIMK6cSJExMTE6Ojo//624ruJYuP3/WX6b/eF9Vj89LTX/39TSMjIxMTEzOflqLfszbBpgcAxIMoDgTIiiCKt4YpjkFFDTOfjY8++mh4ePjVe+7uXrL4+N13Td//16gem5ee/tL1vx0aGhodHW3dXhMbNj0AICpEcSBAVgRRvAVwDCoCpqamJiYmjh07dujQoZf+fEf3ksXH771n+m8ronpsXnr6C9f85uDBg0ePHp3ZO1r029YO2PQAgKgQxYEAWRFE8RbAMagIOHHixPj4+JEjR957770Xb7+te8ni4/feO/3A36J6bF56+vblv+7v7//www/Hx8fJYwuCTQ8AiApRHAiQFUEUjx3HoCJsJo99+OGH/f39z9/6x+4li4/fd+/0gw9E9di89PRtv/7V/v37h4eHx8bGyGMLgk0PAIgKURwIkBVBFI8dx6AibCaPDQ8Pv/vuuzv+eEv3ksXH7//r9MqHonpsXnr61l9d9c477xw+fJg8tlDY9ACAqBDFgQBZEUTx2HEMKsJO5bH9+/efzGMr7p9+eGVUj81LT++56sp9+/aRxxYQmx4AEBWiOBAgK4IoHjuOQUXYiRMnxsbG5uSxB/42veqRqB4VeWxycrLot60dsOkBAFEhigMBsiKI4rHjGFSEVcljDz4wvXpVVA/yWDOw6QEAUSGKAwGyIojiseMYVIRVyWMPPTj96OqoHuSxZmDTAwCiQhQHAmRFEMVjxzGoCKvyCXl45fRja6J68AlpBjY9ACAqRHEgQFYEUTx2HIOKsCqfkEcenn78sagem8/gE7Lw2PQAgKgQxYEAWRFE8dhxDCrCqnxCVj0yvfbxqB6bz/g8n5AFx6YHAESFKA4EyIogiseOY1ARVuUT8ujq6SefiOpBHmsGNj0AICpEcSBAVgRRPHYcg4qwKp+QNY9OP/VkVA/yWDOw6QEAUSGKAwGyIojiseMYVIRV+YQ8tmb66XVRPfiENAObHgAQFaI4ECArgigeO45BRViVT8jjj02vfzqqB5+QZmDTAwCiQhQHAmRFEMVjxzGoCKvyCVn7+PQz66N68AlpBjY9ACAqRHEgQFYEUTx2HIOKsCqfkCefmN7wbFQPPiHNwKYHAESFKA4EyIogiseOY1ARVuUT8tST090bonrwCWkGNj0AICpEcSBAVgRRPHYcg4qwKp+QdU9Nb+yO6sEnpBnY9ACAqBDFgQBZEUTx2HEMKsKqfEKeXje9aWNUDz4hzcCmBwBEhSgOBMiKIIrHjmNQEVblE7L+6ennNkX14BPSDGx6AEBUiOJAgKwIonjsOAYVYVU+Ic+sn978XFQPPiHNwKYHAESFKA4EyIogiseOY1ARVuUT8uwz01s2R/XgE9IMbHoAQFSI4kCArAiieOw4BrUTTGUwOTn50UcfHT58+J133tl+y83dSxYf3/DsdM+WqB6bv/j5nquu7OvrGxoaGh0dnWk381b05lpIbPqO3fQA0H6miOJAbbIiiOKx4xjU9jYTqEYHBkYOHZrH49jBg0fff//wu+++39vbu2vX1t8s716y+Hj3humtPVE9Np6+ZPOFF+z9xz/ee/PNof37j77//rGDB+e3yqMDA5Pj420QzNj0HbvpAaBdEcWBAFkRRPHYcQxqG5sJY/+67U/dSxYv4GPyuU3T27ZF9VjYFfzHFZdPTk62dCRj03fspgeANkYUBwJkRRDF85DlgEyOQW1XMxt3YmLig717TiWN1y76+bu3/CHLY/Dee6a3b4/tcfjBBzOu178uu/TUu/T+zhfHx8dnIlnRm3E+2PQdu+kBoL0RxYEAWRFE8eaa4hhUjkGt4cSJE8ePH//oo48+/PDDQwcP/nP1qs1f/XL3ksW7f/6zj9Y9Nb1jB4+Zx/iGZ/956SXdn/3Mc2cufW3F/e8fODA8PDzzjc+JEyeK3ozzwabv2E0PAO2NKA4EyIogijfRFMegcgxqDTOfjfHx8aNHjw4MDOzbt+9f//rXrpde2nb9bzd94XObTl/Se/WvJ3u2TL/wfCc/Tmzbuu931z+39PSNn/vPbb/+1T+ef/6f//xnX1/foUOHjh492qJ7R9n0HbvpAaDtEcWBAFkRRPFm4RhUjkENmJqaOnHixPj4+LFjxwYGBvr6+l5//fWdO3du27Zt49rHN/78Z91LFvecdeaB2/409fzz0y+80HGP558/dPdd2772le4lized/8ONq1dt3br1xRdffO21195+++2WzmNs+o7d9ADQ9ojiQICsCKJ4s3AMKseghs3872p0dPTw4cMHDhx48803d+3a9fzzz2/atGn9+vVP3vWXDd/+VveSxS+ce87hhx+afvHvnfM48vial75/XveSxRv/6xtP3vanp59+etOmTdu3b3/llVf27t3b399/6pIELfoJYdN37KYHgPZGFAcCZEUQxZuCY1A5BrWuUx+SkZGRoaGhAwcO9Pb2vvrqqzOR7Omnn35szZrHr//thi+f1b1k8asX/HT0mfXTO19s78f4po1vXPrL7s9+ZuOZZ6xd/us1jz66bt26jRs37tixY9euXW+++WZ/f/8HH3xw7Nixlv54sOk7dtMDQHsjigMBsiKI4k3BMagcg9qI2ZHs8OHD77//fl9f3xtvvLFz586enp5nnnlm7dq1q1eufPyySzd8/nMbT1/y5m9+fXzb1umXdrbf48QLz/f97vpNS0/f+NnPPHnxhaseeODxxx9/5plntmzZ8uKLL77++utvv/32+++/PzQ01B5hjE3fsZseANoYURwIkBVBFG8WjkHlGNRGnLqmwOjo6JEjRz744IP+/v7e3t7du3e/8MILzz333NNPP71mzZpV9933xI/P3/DZzzx35tL+2/40tfPF6ZdfapPHSzsP3nvP1q99pXvJ4nXfP2/VXX9Zs2bNunXrNm3a9Pzzz7/66qsze0QHBwc//PDD0dHRU2GsRRvWKWz6jt30ANCuiOJAgKwIonizcAwqx6A2aOYYiuPHj4+Pj4+Ojn744Yf/v717/Y7jPAw7/GflQ05i8lNpU74kUWufNEndpGyT07Ru0osjp3Gak5pWGznuaRw5dmo1lWLakijeL6JEgheBd/MqSrwAEAleJJIAQfCCJQCC2H5YEFzsOzM7uzPYnRk+z+EHW9wdzO6+4Lu/d2Znx8bGrl27NjQ0dPbs2SNHjuzdu3fnzp2bNm3a+KMf7fq9rw+sXnX4X/7OxDvr66dPlf3PvW1bTvzBvxlYvWr37/zzjX/zNxs3btyxY8fAwEBjaebSpUvXrl27ffv25OTk1NTUzMxMY4GmMgPDS//cvvQAlSTFIUH4GyHFl5FzUJ2Dmt5ilU1PT09NTU1OTt66devq1asXL148derUoUOH9uzZs3379o0bNmx65a92f+3FgdWrzvzHP5ras7t+5nQZ/0wf2P/xf/3WwOpVe178tc3f+e8bNmzYtm3b7t27BwcHT548eeHChdHR0Zs3b969e/fhw4fT09MVLjEv/XP70gNUjBSHBOFvhBRfXs5BdQ5qRxoDplFlDx48mJiYCFdwtm7d+s5bb2359p/t+cqXBr74haHvfufx0SP1s2fK8mfuxC8u//X39n7li3u+tHrbS9/c8ObPt27d+t577x04cGDxegGfffbZxMTEgwcPHj16NDs7+zwMCS/9c/vSA1SGFIcE4W+EFF92zkF1DmpHGuHRWMF59OhRYwWn8QGHc+fOHT9+vLGCs2XLlnfeeGP7H31jYPWqA//0N67/6O/mz5yuf3i2yH/mz565+cb/G/zNrw6sXrXz3/7BO//3/7asy4yMjDTWZe7fv/8crst46Z/blx6gGqQ4JAh/I6R4jzgH1TmoHWkMmMYHHBZXcK5fv964/t+SFZwf/3jn7/3uwOpVh/7Fb93ZsL5+7sNi/pncse34768ZWL3qvd/57Q0/+JtNmzZZl4nkpX9uX3qAspPikCD8jZDiPeUcVOegdiRcwbl9+3ZjBef06dNLVnC+98qur/6zgdWrTv3xN6b27q1/9FFx/jw6OPjRn740sHrVnhd/ffN31y6uyxw8ePDUqVONdZlbt25Zl2nmpQegdKQ4JAh/I6R4rzkH1TmonWpewXn48GHkCs62bds2rF+/5b/9+Z5f+9LAC5+/8J2/nP3F8frHH/f3z9zpU598/3t7v/LFgS9+Yeu3/mTDm2821mWaL9dnXSaBlx6AEpHikCD8jZDi/eEcVIe/OtKygvPgwYPGCs4nn3zy0UcfHT9+/MCBA40VnA0//em2P/4PA6tX7f31L1/78Y/mz52rnz/f+z/zH3/82RuvH/jqiwOrV+34d//2nX/4h8a6zP79+48dO3bu3LmWdRklFsdLD0BZSHFIEP5GSPF+cg4qHUlewTl69OjevXvffffdzZs3b/j7v9/xe787sHrVB7/zW+Mb3qmfP1+/cKFnfyZ37jj6r//VwOpV7339tzf87d+2rMsMDQ1du3ZtbGzs3r171mVS8tIDUHxSHBKEvxFSvP+cg0pHmq/J37yCc+nSpcYKzsDAwI4dOzZu3Ljxr/9619e+OrB61fFv/OHD/fvqFy8u959Hhw+d+9afDKxetfuf/sbm//HyhnfeiVuXmZqasi7TKS89AEUmxSFB+BshxQvBOah0qmUF5+7du4srOCdPnhwcHNy9e/e2bds2rl+/+S/+fM+vf3nghc+f+8u/mD15sn7p0nL8mfvww5G//t7Al1bv+fILW7710oa33tq6dev7778fuS7TKLHGkOj3E1k+XnoAikmKQ4LwN0KKF4hzUOlI8grOL37xiwMHDrz33ntbt27dsG7dtv/4x3u++IW9v/7lyz/64ZMLF+pDQ3n9mb948dM3Xv/gqy8OrF61/d//4Tuv/7/Nmzfv2rWrZV3mzp071mXy4qUHoICkOCQIfyOkeOE4B5WOhCs44+PjN27cGB4e/vDDD48ePbpv376FFZz/8392/ps1A6tXHfit37z5zvr60FB9eDjjn7vv7jy65ncHVq/a+fXf3vjDH27atGnnzp179+49cuTI2bNnm9dlFq+Zb0jkxUsPQKG0TXGgmRQvKOeg0pHIFZxr165dunTpzJkzhw8fbqzgbNq0aeP/+v57v/m1gdWrDv27P3jwwYH6yEh3f2pHj575k/8ysHrV7q+9uOl//o8N77yzffv2PXv2HDp06NSpUxcvXrx69eqtW7ca18y3LrN8vPQAFIQUh45I8eJyDiqdar4mf/MKzoULF06ePHnw4MHGCs6G9es3/+VfvP9rXxr4wj85/ed/NnPmdP2TT9L/efzRR8Pf/97AF7+w54urt/zXP21elzlx4sT58+evXLly8+ZN6zK95KUHoO+kOHSkOcX7vS9dqmyKNzgHlY7EreBcvny5dQXnZz/b9p//0+4vfmHPV7544W//5snQUP3y5eQ/8yMjN954/cBXX9zzwue3f+MPN7zxxpYtW1rWZT799NPGuoxr5veYlx6AvpPikN7Q0NDY2JgULzrnoNKRlhWc+/fvN6/gHDt2bP/+/bt27dq8efPG136y8/f/9cDqVft+86vX33qzfvly/cqVyD8Tu9499HtfH1i9aue//PrGH/0oXJe5fv26dZm+89ID0EeNFB8bGxseHu73vkChHT58eHh4eGxsrFarzc3N9Xt3uvRcpHiDc1DpSNsVnL179+7cuXPTpk2b/vf/fu+ff21g9aoDv/+v7h7YXx8dbf4zdezYmf/ynwZWr3r/ay9ueuWvNm7YEK7L3L5927pMcXjpAeiLubm5Wq02Pj4+MjJy9OjRXbt29XuPoIjef//948ePX758+c6dO1K8NJyDSqfCFZxbt26Njo5euHDh1KlThw4d2rNnz/bt2zdu2LDlO/999298Zc8Lnz/6p996dPZM/drVxxcvXPreXw288PndX35hy7f/7J233tq2bdv7778/ODjYsi7z8OFD6zJF46UHoMfm5uYePXo0MTExOjp66tSpffv2Nb735+23334Tnm9vvfXW+vXrG2cXfvDBB2fPnr1+/frk5OT09LQULxPnoNKRcAVnYmLis88+u3z58scff3zixIkPPvjg/fff37Zt24af/3zbN//zwAuf3/PlFwZWr9r/4q8NfOGfbP+jb7zTtC5z/Pjxc+fOffLJJ411mQcPHliXKSwvPQC99OTJk5mZmXv37n366afnz58/fvz4/v3733vvvR07dmyD59v27dt37tzZONf45MmTw8PDt2/ffvjw4ezsbHnfRD2PKd7gHFQ6slhlLSs4IyMj586dW1zB2bJly8Z/+IddX/8XC0Pi7/9+8+bNjXWZo0ePnj17dnh42LpMuXjpAeiNxkXUa7XaxMTE4pvSY8eOHT58+ODBg4PwHDt48ODhw4ePHz/eeE/12Wef3bt3r3FIvLxvpZ7fFG9wDiodaVnBuXfv3tjY2LVr14aGhs6ePXvkyJG9e/fu2rVr69atW37+861btuzcuXNgYODQoUOnT5+2LlNqXnoAlltjrpmdnZ2ammpc1ejatWuXL18eHh4eGhq6BM+xoaGh4eHhy5cvX79+/fbt2/fu3Xv06FF5v1G84XlP8bpzUOlc8wpO45SKW7duXb169eLFi6dPnz5y5MiBAwf27t27f//+Q4cOnTx50rpMZXjpAVhWi29Ka7XagwcP7t69e+fOnbGxsbGxsdvwHGv8Fty5c2dycnLxPVXZD2xI8QXOQaUjzSs409PTiys4V65cuXjx4ocffnjmzJmzZ89euHDh8uXL1mWqxEsPwLJqPg9renq6VqtNAVNTtVqtVqtNT09X5j2VFF/COah0pLnKGis4ExMTt27dunHjxrVr165fv37z5s07d+5Yl6keLz0Ay6cxyzQuMzw3N/cYePz48ePHjd+ICkR4gxSP4BxUOtK8gtM4nezevXuTk5P37t178OBBo8QeW5epIi89AMttHmjS79/IPEnxaI1X2jmopDf/dPV6dna2cUZZ4/wZJVZ5XnoAADolxZM0B7lzUEmjMWYaYfbkyRPj4fnhpQcAID0p3t68c1ABAADIjxRPyzmoAAAA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np6enJy8cePGuXPnDh8+PDAw8O67727fvn0bJNqyZcvGjRvffPPNN95448c//vGrr776wx/+8Cc/+clPf/rT9evXb9q0aevWrf3eR4prcfy8/vrrjdWc7373u9/5zne++93vvvLKK6+++urrr7/+5ptvbty4ccuWLf3eWUpg+/bt77777sDAwOHDh8+dO3fjxo3Jycnp6WkpDgBlFM7IVUvx+fn52dnZqamp8fHxK1eunDt37sSJE0eOHDl48OAgJPrggw/27du3e/funTt3bt68ef369e+8886WLVt27dq1Z8+e/fv3f/DBB/3eR4prcfxs3759/fr1jSPkP/nJTxpHwtevX799+/bdu3fv27fPQCKNgwcPHjly5MSJE+fOnbty5cr4+PjU1NTs7GzbqVqKA0ABhTNyBVN8bm5uZmbm4cOH4+PjN27cuHLlysjIyNDQ0CVIdPHixfPnz3/00UcffvjhiRMnjh07duzYsZMnT549e/bjjz++cOFCv3eQQlscP2fOnDl27Njg4OC+pwYHB48dO3bmzJmPPvro/PnzFy9e7PfOUgJDQ0MjIyNXrly5cePG+Pj4w4cPZ2Zm5ubmpDgAlFE4I1+qWIrXm2p8ampqcnJyYmJifHx8bGzsNrRz69atzz777MaNG9euXbty5cro6Oj169c//fTTzz777NatW/3eO4quMX6uX78+Ojo6PDzcWAEcGhoaHh5ujCUDifTGxsbGx8cnJiYmJyenpqZSdnhdigNAIYUzcgVTvP60xmdnZ6enp2u1Wq1Wm4J0Hj58eP/+/Xv37k1OTk5OTt6/f//BgwcPHz7s935RDo3xs7gIeOfOncWaun//voFERxrz1/T09OzsbMoOr0txACikcEauZorX6/X5+flGkM/NzT2GTszOzs7Ozs7MzMw+1e89okwaY2Z6enp6evrRo0eN/2Eg0Z3GLNaY0VJOilIcAAoonJErm+KL5gH64clT/d4Ryq3TSXFeigNA8YQzcvVTHACeH1IcAAoonJGlOABUhxQHgAIKZ2QpDgDVIcUBoIDCGVmKA0B1SHEAKKBwRpbiAFAdUhwACiickaU4AFSHFAeAAgpnZCkOANUhxQGggMIZWYoDQHVIcQAooHBGluIAUB1SHAAKKJyRpTgAVIcUB4ACCmdkKQ4A1SHFAaCAwhlZigNAdUhxACigcEaW4gBQ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" alt="" />
上图中的红线圈出来的部分就是PageObject的消费者(编写测试用例的Tester)。可以看到,下一层的开发人员可以把页面的封装成 PageObject,上层的使用者不必关心具体的实现技术是哪一种(Selenium , Appium... ...)。PageObject的消费者可以专注于Test Case的逻辑实现。
(四)自动化测试Team成员分工
之前有很多公司或是朋友跟我探讨过如何组建自动化测试团队。无一例外都谈到了(纠结于)这些问题:需要QA Team有很强的编码能力,他们要学习各种驱动(Selenium , QTP , Appium... ...)的使用 , 了解一些JavaScript、HTML、CSS相关的知识,具有OOP思维... ...等等等。最终的结论就是构建自动化测试对QA的人员提出了很高的要求。在我看来,如果一个QA可以具有了上述能力我想他已经是一个开发人员了(这个要求不切实际)。那可不可以让开发团队来完成这件事情呢?这个当然不行了,理由有N多。这里我只提两条。第一,开发团队的视角往往不是站在用户角度的,因此会极大的提升项目风险。第二,一个自动化测试构建的成功与否?合理的测试计划往往是决定性因素,但是测试计划的制定却不是开发人员所擅长的。(这里没有歧视开发的意思。嘻嘻~~本人也是开发~~~不喜勿喷)。那么,如何构建呢?这个其实也是我们要构建测试框架,分层,使用PageObject模式的原因了,针对上一节我画出的简单结构而言,团队中可以有如下几个角色:
@功能测试人员:
主要是由手工测试人员和懂一些简单编程语法的测试人员组成,他们是PageObject和测试框架的直接使用者(消费者)。使用已经完成的PageObject和测试框架进行测试用例的编写,以及测试计划的制定。以我个人的经验,一般的QA简单的培训一下即可以胜任这样的工作,而他们所完成的却是很大的一部份工作。功能测试人员专注与逻辑的测试,而不易关心技术细节。
@PageObject编写人员:
这部分人员可以由测试团队中技术(编程技术)较高或是开发人员来担当,要求如下:
- 熟悉相关的驱动的使用(Selenium、QTP... ....),不熟悉也没关系,看看我的《Selenium For C#》系列哈~~~
- 熟悉Web编程,JavaScript、HTML、CSS相关的知识。(基于B/S的测试构建,要是桌面或是手机端还要其他的知识)
- 熟悉OOP思想,能针对页面做出合理的封装。
因此,这部分同学专注与提供好用的页面类,而不必须关系纷繁复杂的业务逻辑。这部分人也是测试人员的一个职业发展方向(技术型测试)。
@测试架构师:
这个就需要资深一些的同学来做了,架构师的要求嘛就比较多了。他在团队中主要的任务就是构建测试的基础设施。比如页面导航的管理,提供ORM机制供测试人员使用,日志的输出,测试报告的生成,环境切换,浏览器切换,提供一些炫酷而简单的使用功能,还有就是最一些文档的输出。这样一来,测试架构师也可以关心他所需要完成的技术难题,而不关心业务和具体的页面类的实现。
总结一下,有了这三种分工其实工作在不同的层面上。各自完成所擅长的那一部分。于此同时也提供生了整个测试的可维护性。比如:页面做了修改,只需要PageObject人员去修改自己的封装。而业务逻辑出现了变更(页面不变的话),也只是需要用例编写人员修改一下自己的测试用了而已。
(五)写在最后的... ...
本来是想做一个Demo给大家的。但是... ...过年了... ... 老妈催着回家过年,收拾行李去呀,有机会再补上吧 ... ... 今天就任性一把 哈哈 , 各位小伙伴,新年快乐!
前面讲了分工,现在的你是哪个级别呢?能一篇篇把我的系列文章看到这一篇的,估计多数还是没有构建测试框架能力的小伙伴。所以,后面如果时间允许的话我会写一个关于自动化测试框架构建的系列,记得关注哦~~~
《Selenium For C#》的相关文章:Click here.
- [小北De编程手记] : Lesson 01 - Selenium For C# 之 环境搭建
- [小北De编程手记] : Lesson 02 - Selenium For C# 之 核心对象
- [小北De编程手记] : Lesson 03 - Selenium For C# 之 元素定位
- [小北De编程手记] : Lesson 04 - Selenium For C# 之 API 上
- [小北De编程手记] : Lesson 05 - Selenium For C# 之 API 下
- [小北De编程手记] : Lesson 06 - Selenium For C# 之 流程控制
- [小北De编程手记] : Lesson 07 - Selenium For C# 之 窗口处理
- [小北De编程手记] : Lesson 08 - Selenium For C# 之 PageFactory & 团队构建
说明:Demo地址:https://github.com/DemoCnblogs/Selenium
[小北De编程手记] : Lesson 08 - Selenium For C# 之 PageFactory & 团队构建的更多相关文章
- [小北De编程手记] : Lesson 07 - Selenium For C# 之 窗口处理
在实际的自动化测试过程中,我们会遇见许多需要对窗口进行处理的情况.比如,点击删除某条信息的时候系统会显示一个Alert框.或者点击某个超链接时会在浏览器中打开一个新的页面.这一篇,来和大家分享一下Se ...
- [小北De编程手记] : Lesson 06 - Selenium For C# 之 流程控制
无论你是用哪一种自动化测试的驱动框架,当我们构建一个复杂应用程序的自动化测试的时候.都希望构建一个测试流程稳定,维护成本较低的自动化测试.但是,现实往往没有理想丰满.而这一篇,我会为大家讲解我们在使用 ...
- [小北De编程手记] : Lesson 01 - Selenium For C# 之 环境搭建
在我看来一个自动化测试平台的构建,是一种很好的了解开发语言,单元测试框架,自动化测试驱动,设计模式等等等的途径.因此,在下选择了自动化测试的这个话题来和大家分享一下本人关于软件开发和自动化测试的认识. ...
- [小北De编程手记] : Lesson 02 - Selenium For C# 之 核心对象
从这一篇开始,开始正式的介绍Selenium 以及相关的组件,本文的将讨论如下问题: Selenium基本的概念以及在企业化测试框架中的位置 Selenium核心对象(浏览器驱动) Web Drive ...
- [小北De编程手记] : Lesson 03 - Selenium For C# 之 元素定位
无论哪一种自动化测试的驱动框架(基于B/S,桌面应用,还是手机App).都应当具有一套优秀的元素定位技术.通常的自动化测试流程也可以简单的归结为是一个从被测试程序中识别或是定位元素以及执行操作和验证元 ...
- [小北De编程手记] : Lesson 04 - Selenium For C# 之 API 上
这一部分,我准备向大家介绍Selenium WebDriver的常用API,学习这部分内容需要大家最好有一些简单的HTML相关知识,本文主要涉及到以下内容: Selenium API:元素检查 Sel ...
- [小北De编程手记] : Lesson 05 - Selenium For C# 之 API 下
上一篇,我们介绍了一些Selenium WebDriver相关的API,下面我们就接着上一篇继续介绍Selenium常用的API,这一篇的内容主要涉及到以下话题: Selenium API:复杂事件处 ...
- [小北De编程手记] : Lesson 01 玩转 xUnit.Net 之 概述
谈到单元测试,任何一个开发或是测试人员都不会觉得陌生.我想大多数的同学也都是接触过各种单元测试框架.关于单元测试的重要性,应该不会有太多的质疑.这个系列,我向大家介绍一下xUnit.Net的使用.就让 ...
- [小北De编程手记] Lesson 01 - AutoFramework构建 之 从一个简单的Demo聊起
写在最前面 这个系列的主旨是要跟大家分享一下关于自动化测试框架的构建的一些心得.这几年,做了一些自动化测试框架以及团队的构建的工作.过程中遇到了很多这样的同学,他们在学习了某一门语言和一些自动化测试的 ...
随机推荐
- 删除Visual Studio Online 中团队项目
最新文章:Virson's Blog 方法1:使用TFSDeleteProject删除: 1).在本地Visual Studio中登录云端TFS服务器: 2). 连接成功之后,打开VS命令工具,下图红 ...
- ios 关于文件操作 获取 文件大小
分类: Apple IPhone2012-06-28 11:31 4664人阅读 评论(0) 收藏 举报 ios语言manager测试c c语言 实现 #include "sys/stat ...
- python高效解析日志入库
python脚本解析日志文件入库一般有三个重要的步骤:读文件.解析文件.入库.在这三个方面下功夫,可确保我们获得最优的性能(这里不讨论并发) 1 读文件:一次读一行,磁盘IO太多,效率低下:一次性读如 ...
- Privacy Policy
MINE Privacy Policy This unit values your privacy. You are using our service, we may collect and use ...
- Go加密解密之RSA[转]
安全总是很重要的,各个语言对于通用的加密算法都会有实现.前段时间,用Go实现了RSA和DES的加密解密,在这分享一下.(对于RSA和DES加密算法本身,请查阅相关资料) 在PHP中,很多功能经常是一个 ...
- Django数据模型及操作
转自:http://blog.sina.com.cn/s/blog_a73687bc0101cygy.html (一) 初始化测试运行环境 import os; import sys; sys.pat ...
- HIVE: Transform应用实例
数据文件内容 steven:100;steven:90;steven:99^567^22 ray:90;ray:98^456^30 Tom:81^222^33 期望最终放到数据库的数据格式如下: st ...
- K3 WISE开发手册
1.VB插件工程的命名.命名空间和生成的DLL命名要一致,否则导致注册不成功!
- 3D全景!这么牛!!
如果你用过网页版的百度地图,你大概3D全景图浏览是一种怎样的酷炫体验:在一个点可以360度环顾周围的建筑.景色,当然也可以四周移动,就像身临其境. 全景图共分为三种: ①球面全景图 利用一张全景图围成 ...
- ArcGIS如何将表连接到空间数据上
当我们有一些空间数据和一些业务数据(表),希望把业务数据和空间数据连接起来时,可以采用ArcGIS Desktop进行操作.本文将介绍如何在ArcGIS Destop中将表和空间数据关联起来. Arc ...