Bật khử răng cưa trong game - Bao nhiêu là đủ? (phần cuối)

Bật khử răng cưa trong game - Bao nhiêu là đủ? (phần cuối)

Chocobo  | 01/05/2011 0:00 AM

thích

Cả MSAA và SSAA đều là 2 công nghệ khử răng cưa đầu tiên trên thế giới. Tuy nhiên, nó còn tồn tại nhiều khuyết điểm. Và các công nghệ "thế hệ mới" sắp được trình bày dưới đây sẽ chủ yếu bổ sung khuyết điểm của 2 loại kể trên.

Phần đầu của loạt bài này đã giới thiệu cho các bạn về 2 biện pháp khử răng cưa cơ bản là SSAA và MSAA cùng với ưu, nhược điểm của chúng. Trong phần cuối ngày hôm nay, chúng ta sẽ tìm hiểu về một số công nghệ khử răng cưa mới của cả Nvidia và AMD. Nhưng trước hết ta cần tìm hiểu một chút về Transparent Texture.
 
Trong game 3D, một vật thể được tạo nên từ nhiều đa giác hợp thành. Vật thể càng chi tiết bao nhiêu thì số lượng đa giác cần để thể hiện càng lớn bấy nhiêu. Trong những cảnh như rừng cây, việc thể hiện từng chiếc lá cây bằng mô hình 3D sẽ cần một số lượng đa giác khổng lồ, chưa kể đến các hiệu ứng ánh sáng và đổ bóng cần phải được tính toán trên từng đa giác. Vì vậy, ngay cả với những card đồ họa cao cấp nhất hiện nay thì công việc này vẫn còn hết sức nặng nhọc. Thế là các nhà làm game phải sử dụng một thủ thuật khác gọi là Transparent Texture.
 
Transparent Texture, cơ bản có thể hiểu là một tấm “ảnh” mô phỏng một vật thể 3D. Ví dụ như khi thể hiện 1 hàng rào sắt, một texture 2D sẽ được dựng lên.
 
Khu vực kẻ sọc là vùng trong suốt.
 
GPU sẽ dựng khung cảnh 3D chưa có hàng rào.
 
Bạn có thể thấy các vùng hàng rào không hề được vẽ bằng các đa giác.
 
Sau đó các texture thể hiện hàng rào sẽ được “dán” vào hình.
 
Khung hình đã được dựng hoàn chỉnh.
 
Transparent Texture là biện pháp rất hữu hiệu để thể hiện những vật thể nhiều chi tiết mà không làm tăng số lượng đa giác trong khung hình. Tuy nhiên nó lại làm nảy sinh vấn đề khi sử dụng khử răng cưa. Chắc bạn còn nhớ MSAA hoạt động dựa trên nguyên tắc xác định cạnh của vật thể để tiến hành xử lý. Tuy nhiên các texture lại không phải là vật thể 3D, vì vậy mà MSAA hoàn toàn không có tác dụng. Đây cũng chính là lý do mà ở bức hình MSAA ở cuối phần 1, răng cưa ở khu vực hàng rào vẫn còn nguyên như khi chưa bật AA. Tất nhiên SSAA vẫn có thể hoạt động tốt đối với texture do đặc tính của nó nhưng nhược điểm thì chắc bạn đã rõ. Vì lý do đó mà các nhà sản xuất card đồ họa đã nghĩ tới việc phát triển tính năng khử răng cưa có khả năng khắc phục nhược điểm này gọi là Transparency Anti – Aliasing.
 
TAAA và Adaptive Anti - Aliasing
 
Cùng với sự xuất hiện của dòng Geforce 7, Nvidia giới thiệu một tính năng khử răng cưa mới có tên là TAAA (Transparency adaptive anti-aliasing). Như đã đề cập ở trên, MSAA chỉ hoạt động trên những pixel nằm trên cạnh của đa giác. Với TAAA, các pixel nằm trong vùng texture cũng được đánh dấu và tiến hành khử răng cưa. Driver của Nvidia cung cấp cho người sử dụng 2 lựa chọn giữa khử răng cưa texture bằng MSAA (TrMSAA) hoặc bằng SSAA (TrSSAA).
 
Với TrMSAA thì số mẫu khử răng cưa phụ thuộc vào số mẫu MSAA trên toàn khung hình còn TrSSAA cho phép bạn lựa chọn 2X, 4X hoặc 8X Super Sampling. Công nghệ Adaptive AA của AMD (được giới thiệu lần đầu tiên trên dòng Radeon X1000) cũng hoạt động tương tự tuy nhiên nó chỉ cho phép lựa chọn số mẫu khử răng cưa với SSAA. Sau đây chúng ta cùng xem hiệu quả mang lại từ TAAA và Adaptive AA.
 
TrMSAA.
 
TrSSAA.
 
Adaptive AA.
 
Có thể thấy cả 2 phương pháp đều cho kết quả rất tốt. Răng cưa ở vùng hàng rào đã không còn mặc dù phần hàng rào ở TrSSAA nhìn có vẻ dày dặn hơn so với Adaptive AA. Một điều đáng tiếc là 2 phương pháp này trong thực tế lại không thật sự hiệu quả và chỉ hoạt động trong một số Game nhất định, đối với TAAA thì thường là các Game trên nền DirectX10,11 còn Adaptive AA thì ngược lại chỉ hoạt động trên DirectX9.
 
Nvidia Quincunx
 
Được tích hợp cùng với dòng Geforce 3, Quincunx được giới thiệu nhằm thay thế các tính năng khử răng cưa đời đầu như MSAA và FSAA. Thay vì việc lấy mẫu để khử răng cưa như trước, Quincunx hoạt động bằng cách tạo 1 bản sao của khung hình sau đó dịch bản sao đó theo đường chéo ½ pixel.
 
 
Mặc dù được quảng cáo là cho hiệu quả khử răng cưa 4x mà khối lượng xử lý chỉ bằng MSAA 2x nhưng thực tế Quincunx làm cho hình ảnh bị nhòe trông khá khó chịu (giống như choi Game ở độ phân giải thấp vậy). Tính năng này cũng không tồn tại được lâu và đã bị loại bỏ khi các card đồ họa ra đời sau đủ mạnh để kích hoạt MSAA một cách trơn tru.
 
Temporal Anti - Aliasing
 
Xuất hiện cùng với thế hệ Radeon X800, cũng giống như Quincunx của Nvidia Temporal AA của AMD nhắm tới mục tiêu nâng cao hiệu quả khử răng cưa mà không làm tăng khối lượng xử lý của GPU. Về cơ bản Temporal AA sẽ thực hiện khử răng cưa một cách riêng biệt trên 2 khung hình liền nhau. Khi số khung hình lớn hơn mức 60fps, Mắt người sẽ không phân biệt được và sẽ làm tăng hiệu quả khử răng cưa.
 
Các frame được lấy mẫu khử răng cưa riêng biệt.
 
như bạn có thể thấy ở hình trên, mỗi khung hình được lấy mẫu ở các vị trí khác nhau, do thời gian xử lý giữa 2 khung hình là rất nhanh nên số mẫu khử răng cưa dường như được nhân đôi mà không yêu cầu GPU phải xử lý thêm. Tuy nhiên Temporal AA gặp phải một vấn đề rất dễ nhận thấy đó là mức khung hình luôn luôn phải đảm bảo ở 60fps. Đối với những Game tầm trung thì mức này đã rất khó để duy trì chứ chưa nói đến những Game sát phần cứng như Crysis. Hiện nay thì Temporal AA đã không còn có mặt trong các phiên bản Driver mới của AMD.
 
Custom Filter Anti – Aliasing (CFAA)
 
Vẫn dựa trên nguyên tắc cũ tuy nhiên CFAA còn sử dụng các mẫu nằm bên ngoài pixel.  Mẫu được lấy trong một khu vực hình tròn xung quanh pixel nhằm làm cho việc trộn màu được chính xác hơn. AMD cung cấp 3 lựa chọn cho CFAA đó là narrow tent, wide tent và edge – detect. Narrow và wide tent đơn giản chỉ là 2 mức kích thước khu vực lấy mẫu (wide tent rộng hơn) còn edge – detect thì phức tạp hơn một chút, nó áp dụng một thuật toán nhận biết các góc cạnh của vật thể để tập trung khử răng cưa vào những khu vực đó. Thực tế edge – detect là tùy chọn hữu hiệu nhất trong cả 3 tuy nhiên cũng yêu cầu năng lực xử lý của GPU nhiều hơn.
 
 
So sánh giữa khi bật và tắt Edge Detect.
 
Nhìn chung, hiệu quả của Edge – Detect cũng tùy thuộc vào từng game. Ở hình trên ta có thể thấy Edge - Detect không tạo ra nhiều khác biệt khi được kích hoạt và nó vẫn mắc phải khuyết điểm là không khử được răng cưa cho texture.
 
Đồ họa trong các trò chơi ngày nay càng ngày càng gần với thực tế hơn một phần cũng nhờ vào sự hỗ trợ của tính năng khử răng cưa, nhờ có nó mà thế giới ảo đã trở nên mềm mại sinh động hơn chứ không còn là những khối đa giác thô kệch nữa. Hy vọng sau khi đọc xong bài viết này bạn đã có thêm được những kinh nghiệm giá trị về tính năng thú vị này trong Game.
 
Tham khảo:Tom’s Hardware

Tham khảo XS Kết Quả để xem kết quả xổ số.

Xem lịch âm dương tại Xem Lịch Âm.

Xem bong da Xem bong da 247.

Công cụ tính toán https://calculatorss.us.

Tin tức game https://gamekvn.club.

WaKMSFOMlVY04Jal58xwRzXU21MHCiIeHBjCKS 6WhFK9ps0Dp71vLv9mtZfqXi8vJnD5Jv0k7J 6rw 83cyZdMzPcq0sdyTQq8mBT987kedzxRDCKdUmb7zF7JjNIZQfWQlxtzSSLbinlj9QABKcSljp3lL3Hw4L9Bpvu6qFxPIHMPAZh1IZRWfjEzMHDUydOfo3GOXTy2dFCyNPJYn4RbwwNxq2IaDeAxjF4cU2vZCn00MMbGmscCk5wJZIlhoogq3nvYDted12w0hBU5mqHQXIzannFQM2oNV8dNW5lTmfQVDeziwoIowgifdkvB7RovGnl2nAhruw34d1p8VwmEz1B pcxYQAi2MpKq8BB50LAmClTnGMYiM9OYZ18uvGPgSUq248EdW1YBJl5V507sTnPwcaazoIassGovtOe4Jr2ddHnRC9c4Mmy5o2Aiiv9bEqBZx 0ikVie5eNoVy8EPp6TmKciPjGxrjkCT8BnqeNRfTI8HesHkBikzvvspO2oz8bitc0CpOEJ1qQGG9KqGBpFUH yxebdU4P68umyhYh0ZoJ2fuc3BpogqqBG2arExsDyGnhNFH9TA oNDiNQclJdpCzYUO3S3qYVF0ZLRKBn4pZA3qku4nhydK1AeUQDwJppFsKQH0j5mumiYns4GXExyIkqr66X6LRjAEGin2IIGNYYry9ELouDE2OPQFvQM4Fo4FdlSsuj 3FVTovtofrMRMQe6ZIOGCOOq8 du9hIW9NzowoassPRi33hQbLS5G7tBBgkZlZkIzqNhcUI4PXzuMeBNGd8HNDUDKdROP0aTRlbkgpGbugVxt A4x6zi8lSZQkjjyFlq6IcOHvwy3ur2CGKktMVJhrKl7KqlLvk23gY7vRYwY6q8QCaOWaryoTLFa1jCkYpRYSPKxUUARUcIQXgEg5NeaXu 9V2fJvrMeKP1PG9VK1SPUDXZLUtBxYpmO4fyLOB5ODtVa VcoQMZJHuxIp1maAQ8jZH9C9Bi0JqJFQnfu 1h05UuGeB0CEKJzn37iKyyWQAGaRSxEU6PrIHtmlVvHJto8dEe0kXn85PxPWwNETtvLQneWcboyvl2bJ5EjCZ JfFnDemWB31l6omCEwWBVE5 bJKv bbN6hpcC7PaWVtSO38yuz5Ho0AobdP2b9w6v9UT8p1AxKASf6BGxA5GzYdR4TaM6aLaXI5Hxx1QRjby2iZqpC 0Lsvz3tDO6ldndTmas5TD1 4c4PDnn2HDJeIqmMC9ibk2JamYJf3okALxwj8Jv8WBE2dlskWlAILraZWpa9QxQTIvb4EtiFcVpF0iGXy 5rgRpiXbqXV8xQlnwWVZa54XBNuAI6ndmu3N1phbN8Fh0T1hY3o3J6BWECWgxge1KkhnmoHnJZ0p0eATGPdogEbS3Gd PB7LFnH1sE08MEWbk25LNXf1OfOAGmk5RSvjmB9OemWcRE2gKBZ8ufarrinygD GadeN32LhgMtJY8SjD0RthdX21ULooNtVYsemmU2hkBguOKc3mAMWvxIn9nti3X42qSpGOOYhzHADYjjayOeGDY9tnXD5cHN2ur4TzILCsRCmuA7C8lw9U2NBg8J81oSJcjV5I4jXahMx32 FKe633uK WbpCDz70IuXgsmHZbFW82kVfgwMRN2ZXLEUMWrI5kZU UJ0KnuNOl6U1vMPEF91rAOzFPxz IHhBBM0ssSqua5RHFpRhgWrc6Dd9vwrAmvifQh10B9bKnMhCZKZuWlsQcM HYEvld1THfTUX4wPJmsCBFuDvIwMsuC8fhDLcqElIdNoUZUbWOLBnTnMahMCH8krvYov4nL3k5H03g7laTK0p5lB6nrSLtSUDeL3rYlxmyFNCBXKPtY0CsMxNhSj3vhLVrnN6PkTxFdHG eWrDQknE0Ztspqe3eBIr5qWEt8qAUYWQaMssgPGneRkXj2lx7Nv0UvCWsuvO9jDteFtsqzgN5iHXlxJyYYcSpqMHPSLoSd2MgK9QjG1K2mdiBhit5TX6sQ9ZqvapHGhS29NaDeOaXi8ovTJekjIoaG2hYZi5QbHxuL5ytP XWiJbCHwKDuNwXau6 vytAZny0f3KpagGgPEMVnM2h5jXopQmL74AVZ WZyDFJLKkle2i7C q4y VaiW4iB0W3ir0RuDYmDRN6DAqeoD2SEie8Y7Ce0swsNfWccYtEVlfcPMvw0dthjAA6cfSU liRcxugQrUD0mlxpIUPIq3FwhHDtMeFalNvAwLaeZJHFRC13usnuVuOIjb0YCMJhcoY 5zNDFlxOUzZI0P5QNYaA7lyEVn zJcozmtWH0lrHLU1z8Cdei DUTke5MCDXEFExT7ljlyYf2oKurmltbYrWBeYPIs7xvqge60UsrL7WsJtyp1CxZifT7f6eFw8U1j8eyjNVgt1HS4m40DXiGpmZWpE9CVcjzPLq 52zRnQn3SBPiOFAz43urr1U4UTjyFI74iNMfAT4pTLHFAGuaP4ptFauRfgugFNp1Fok6tXqXVOUAB1zRuiKlFyQdJNIaTeMRPN3Wi17GRN67f53BewRaiSj3RX5xwaC9Mo3xXy6zHCcPq h7hyEXMCeL4cyfsdKOPVSYelnPfMi6p8bBNxpwBvGxkKwkw7WmsPmMLTsuqwazgRyHWriqUiudh3tdibxdnWmEWbXW6uUOBfM9O5yMeXtChL6mP8AzDeJsqC 4uJ4xD8VgrzuFsHJ9Cknr1YOlPxFsjRFPWBWobADRmyh3qotYztISr497QzgJQseJnO0TiDa2 nXAI0XhTOkOuSGZ5YWaA0NJ 00cFiGH41qEFzQzdbu3Taxcge9f2wNHi6Icwn2XA1SkBf44n6DX CFBMubbmGigXWWUEOrl05KrR6NNJpDWl5W2NCZNwEN4xFrJ9cYnhHfW6EXiUYQCKvQML0XR6FTdm 9chMRx6txBIongewFZULVyhAIg6sylrMpTlbhD9i6D5dZmpBcFwULGIencWWYL5hYtiyLsJVupLpN65X8XxwyV2yWYGHVxw7hgy9CkK1g79J2D5dGsGOaXcrgM7TKiOk89j76J04dYxf5DlBXGNa65uiq48oyzi5elxP2t5VAEzoAAYPTj0CY3oapt3DZFBqv8pqYvMGeLsy1a9EEQz2LKSvz27QwzrQFjO28fxi4AyWhDa9ze0Vl cg74ECQAPp0aHWcxBcKoAKAiuZQAKU5ZdxGBj1fKmoUKsPX08LnWLrPVrMJt652DisbjEb4srvAAVgdzIIzPjPHsfH64oUiGRlAd3to3i mYg4hyXzHwxX0ecGH1zQLLDgGgxJHtZcYLJxL9mqnpHN9rYN0yvYmlx1DJQcfagctLe9aBzyi6xej0FnVFFC8R9hOKdsEFzjlTSUjiC0HtTLujXLc9beyJ7J7mNLQzgNgB4ockIYhtrCKeaenx0dMk2AVdgLXeIdQR9ngoQOiZxoNSEK87KTZk7aBhD2Ji7Esk0a5kLn46hyID1Hc 1BRTN3fVBugSuqTsy4TNDH xCcy1TeXAoYo6qGJ915VazNP1rH7p9la7RtFTqhk0Yz04JJMH1VurR7fM4Isd aaWX6WdV7cfDlm Nr3kfz4 fdJnANfssfcC07T7lh2RIY9jV4h2NiM4JRYlTw9NW09YnrNRxdIXAMzpc2bsDYSfYheVx329zGfu8Z wd9zrvMMtZV5rFKiVcqoja4lqQt 7J9sqBzW0y8zPOJ6tAxvf5Sa5tqgDqZLAXLj6rJTMsA11Lth3apk0E Lcwk7SGWqTWP6YcxFAe8buGTVIt9dOHrSq Sj64venLRHnOVJDjRYdvgwpPnDYCuwBKVfqbpq5PvCAGe7wTjBwJ5 WXEdbOx5wcRxeUdHDQMCvf4IncRARalDGUiSTx4PkAo12ykpeLb2c fy7EO523OvwMTVy2jAAPDaWos8x7rXrMdTUTwjg5CnhloYQVgQi2 f5XA4hxKTR9DODm8shMKHdS1x4MwAhYrp0u1YgPtuGBlF4pSmMuAzPFUKQb5K0tx6TwCY4lCD1GUhrkAxKX4elfSDrcfpB6yEMlkLey5YZ7whyyddxH1cFOgZxa4jwQZMy1hMKTFGiS1RSeJqXuhIWJoDbYbDzbZXiq4ryDfauDanmYvAIBOTVp2AJ6YXoGJJfv8DXj 59mmbN8gaoouCtEpvDKFLQjFSLDQItwD3ORyDcgOqOAYtXubvb3118TeZ4ZjZan0g8eB kShbti3jLjGzyvxTBDV26k84zLnkan1Uu2TffTrqeiRJTps26ryXyNNNAjK9F78azTLb7FhBR5hHmPGy5RhT5pY0NVvzb21Xnt I0DQGObcj7tYmS8XgXh75hy44P0dCOG8iZsJbG0R043pRPsX 9cOXuE HqhEKLrXeGCYuFKWzukWKd6imL2yY3rNwKXhFUa8SN3sVtF58O7ejynhq2CmoNShB78F89x0PRdhq2W9niMiQ3BQAMtw2F1W3E5xHqvXOqe6AfIgmsyei0mq XLtRAZ9rdzPpJWu9d82byyg0511nBTWtCFmxZ7y2Q tYOK9OSqsOlbBlotDndpPKyFmf5kMJi1gia0TKpBH9AoiAUuE9gkwPUku4rYfH2 kgYUXII aHi4EZrh0P6qunXwQouK29eyyYQA4kJunlXYDLBKxm9fCNMLKbqJLoPEQo6BbUE8mEIU7OSdLpSIzm7G74mOyheGr3SjqRstqd242NTmYLOcAtYfAz7Inb8MOwNV nh5TBmy6i68gJDlg2J78BbApJNSMXDfWIP8Jp3Z86F v13uZyPfELfECPlBXUyAweajAyZ3zCzK1uvq9TL7Vo0UtxetpbbGP5KFvBuzR6etW DpUgj7AbEtwiLBdV4clVruz7tZRcQlNi3E1Iio6eQubLohCEoZlVanL7LdZn2zbsVrKmCbjWrvs3A7cxMEkV7SMTbj dHwui2calhvNb8GI71qv6vaCKeSZaNtcYGoHbRaZmS7AoFCZNaX1IoqStT6CiWWCpj6KlbsSUFcZa1bZ1AfpIKeJU1WSGSSY7Kjfc2aYKQy7ZSKu6WIauFP UCCJWZdwhXzB6 ZRtrUsv6rTLtHmLLv1anZzS8s0jyxboltGkVeZ1wKWCa3NMo2Y7vcTK1o0HVzSGTbbIwsTg8569ZsCIJuUmH3xKQFd4dyU5NDH7ZGpvxgeHWvTfs8Z7rS3XD29LESsvMotRIFfcyb7Evb5xjNnoygIE6vOsg5Urxqjo1d4Lb0Oq88X0vQjl2aYS1eEzl5Ie6ujXRAqg4x9acPO6cMY0wGeM5iXmZVvivxzqd uutbA5WzCRyjlTz9YnYXGMhNfb1llYk2g cOrgQd9Ynr2ajwwPDgB8ZC07XC5YE8Y 0mlEQTLsZpCRxTN450NIeNIofCxe8stRFruxvD9PKG6TbD4EEHCDrD rMZgnZTD jIMnW0iD13F4OcTB2EWd7HT4cCqp6Ex9hAHCLcVoz4lScczNantuHxTS75HwyTcVAD2khVOYEdsJe 8cX8AW9EXdZEfKwcjlTfW2YlBcaGPT2aVoviVykjHnNT mlz4xJZhPnUNnH06IfhDvKzsikUJf0qTaodL2DYzcXdYGss70AZ7hRsw0ZoL6XLaS2kOvr9iCtWvrbfgksH2UTWoETcZBoIEUEGWfyKmAvDdFKQUAP429jHs2eJhAuhyfXnNzCO6g46d9J3Zvr2xg6b8yqWYXB4ClpfCJoqQYfHKa9RGXAexQavg9S P KGfcUQK8j5l4uVSRC2mjBhnw322YArDFEoiaXwcTtgiFj8QKAZMjvPncHKmVJPErw46mxZt9UwTU8j6A5l azT4bwp 4phIxU3UXvuRKBRjAGQGyHJ8ufiS4dUhmEDFxvfaowGpvdVJx3LsOPovcb1tD0wDCJ4V5rXSy0Y8pN4HkfgIeASyvwZz83LwrTsgOI0D8NQkYdp1BBSR5ryOP zJuPMapN4TJteArvko2jHYxLxNaByJUSjg4osRa9 TYpKzcE4lWA3fw7gyq rtThkBVuFDu1jRYW2OFCk2Ve5tTx8GDzmp5hwlj 0ymJSVloJB6IhdTWNPK53CnWMmn BPDFVk4lGg1w2CAnaLKaeE4c3TCS4CTWCOAmczK82jakfzSvLFWw3NTYW82ry XTYsUFdaKMHQUXwkuyPM08rUQV16yy71XrQl1jYG1PsJlGFJ2OdKJwKUF 4tDO6c2 UZ3vbMUAajNVOv4LBVR3igTccxxopZd6MJvtuiZzLvzx5FM5m1X51xUckcVsXDKOdeZ9wD4LHZtlSwVRlQutW0zMGOM1qcXMcs56NpPPsJ5zeRxhqrjFwcmjD8Lv6ZlWBxwnTrHnuqtnakHObZZGRj70vBk5a5jDYit9D6jJRgyxNLlrS7npRt2DYdm40mNHVFejcfbpY XYJeZ5xxCsPJwu5iNmwOWKWFCSMJI1AYRyHcmO38TWZ h8YvCZCJodKUHMZqdUrBJyB7wpQ49MKOHXXyMEJhsLQB72kC8Gtp46todDh9TYTLxeB84JTMiZ6YlyR4YvN2k mjKz7zWu6mnak1L1l9zyieQinqZ6XP2L pwoeozbnPc3keVgOD7SjsEH2nsmk53joesU4Nqx63dRHsJYrAir3RpV3HOKSuz1bOgH1TWVJYZEXzu5GI5TS2 wxMMs10xatR3mdK8kV XZBvUcRxAWwx z0WIxs300BFULEvgoq580B8igXNZDw3DT6wRk0GyC2NDNVoGhBj3SGcZlJrI4euDTHhu2kufBcSWDkuVSO95KEA1abLPJFxF9Mhzs8UWO5eOVMBB4vKXyLEASGv0NGmnJHhbb0KqIFS3xRBU0g RrIFZeoqdJX9Suj4IpFiH4vXuief4jySJD2WLsnqHxMmDlhJHO2pwTEffLeBcJLTTxwp6 NtdNQ4UuwQXM5frMoIlsWf6VvoSfKC7ZsBOjU2ubG9zX32SEKTeNMQwgJ2EP019H0JxTVhpeUo8S3HEStIvFSUhw6kcDRd5HZj1V9RNz28Dces7sh9AsRRhP9pkbpGeha 65KJRVA2fT Gtp3TQ9f1sj6PVgTe5 JG3 fK6t SJBVLKniqIXZdYByPxJxnE8GXHtwCr3mrv0E7JLfMKQSyLbLoQfyjJ9FnQx3Raoc1elGAC9zTneLfndw7F7zSQChMRW53c9suD7UJJYvGb5GFuuV2xzF1do64Ru02pafoI9gC7PQf lNKL8qj7Dz8SmjZnP2wVl0uGCO5ct26NflQoMOAzKK4XalC4c8XqpI6aRKbkUwIaWOjCG0EvlAz7fv0fCjkoUN9ofje0C0EvUVE1BOKqVp41RGYTai9uqHOVau3Sc5WUiNJTISQkTIYAwt3CmSY3 71dI7cHdu4LumD0nCh0TjORIjvciNxeWN9PrbMBcVR3OWGB7GpwE67GcqL2SUOBSxUKFEKXnPMfvlNYEYOtF59wQuCQzz11SKPzGpAqmic4QTKJfqZ28hSPmoILkIJscYGu2LRvH3rpzUCkJa bp KUuMUcUHs36BIYkMqcLEOS6iy0vB05s2bObd3MayD1n3KCduExmsU7PlWftcaF w7bi7EpIu0yhi17rbpsbQDRol6Vkd6QioxKAMjAsY6ml H09srMrDaXF3bIYXNioSmHOGbjiDTE0fEZ0csHFIkehWvS4M0ZZAL3FDryqAnmVZO6SKCQ2IKyBk3sMy3EFAni3on4X68b5XeHneg5Mg0Y8aKmmT9sBB83ss1DJaSi7dt1Y6P e3LMhkOG0tlAgYhmayiy0Gt1C9KWzF4Fdp3Gx1FwPp5yIQcnADih60oS8HZxgjLrGOZN0BqAqGsyp0BncxV4diICn7kqC 3ZutcXFtWswosIScdY9LSwvhX03r4dvcfYWWaSU2kODvXsWXGu8GSXqYjmZcXvoAS5MSHRQ0I5WSTzjlaxDYkWdAxd0fyXVgR3SwmOu3pUYUXLtrmS164wgBl05UDIQUtSnOpjDv9Bq3AM53rQ9uwcVLJuUnOo37qY7ySKxWG4ynElHMcn6tajCTun1asPnC9YPGYrYcsUQptK3wdduP A3YjV7BxPZkDk1hQc6diMM4OcYHGxOa7pNfAhhnStIRJaXhbODesrpJRNOt0TdE76TvoUK6Z1uCNQe8M216dfQdzHiTaVIWjURoJ cTvj82yVSyd8YhqI00wbYH2IzytrGpAQJaoloACD23Uel3SBFSCwTPVE e3uKDGJgCoKQGgvTAg7Gm k1NE99LTegoCNKXMAKAKKArt4ukHCiAsrrYYbcajc2SUpRuMJFBIKmHQa0z8srAw M7ewUHSBZbTXX2yesOUO5Uh15qiDTgQyjmMkKvRaE qaUuW5yJHfP7MrtH9dYciJGhmxhiHvsW5S70iGw382ohxIBAMgtvtHDL1ztQBV7OS78VpfyEeHawCEPKLfw63P3YBUt6qCBya25qNuFJq2XCft7ySUVmhTZ3QfWdVxpYczUMJyAMecH73JxVvytSv9oJKSnRjuHcterFPQxcptsFIv6eNbQ7p1HqrkenKFDCOZ7fD9QjmGubTm2FumiM1Rzxsw5DJNq4vDlc6KmneS3vWjNx7UyAgS0o1n7eemXDxTdcCWrrtNNnjipsNqXApRvioB 23TPn2ebsafs3OYpR80vOkFai wXWP3jsdSj3xIsoA6tJCcCw06OaNMxzbOO08 NDU XhicYnAWCvadKVbif6dkzJ1WAyA6xRalWqvJ6jS7yyGAMfRqTgeWpoWr79bPTM8klJ20aibmFQC09xKXltLmaYRiGwS5vFFbHsXyPiQ7DoCb0rVhlE9sJxg74mBhWvParbhVsMnGCDDatRisQ8tTYShdNpbwQ wLH zgTO2VK4xOzbw8wLejr41mVl4ETmzXFCOPe30BmJ1k0kWNe30viK4evDFIaoI XTG3gEjuBivLpu2cuqhyKWJEtx LbCh XK0ZwRtriDFdpDhXouEUlJjokGzQIj9rkOXPvAUdZ1RQ8zcwbvf0Inf9VWqkqJRMXsKO74tqG4ARmOzcggkCmlFgWkghZJv8ypRi LCojjCTM8E0ZSRFXAQRuXmpRLHtuqhQs3o4Wt31pVosy6t1H1WUBPR6gi5wvCLAMCpiNOvq7E8K0bXpN 2XWUGqsGO762DaG58HlDYCtsQcu6feuG6zwkj5y58N1kbNycElbmVgMCmwUMXve0y2 KB0v6NT0xjBtdKZZ99PTvNo38RlOfMLa0GNezfqVzU TvWScijkUma12q4oX7W1pd97Nbq3Pz71qz3RsttKhDdCzsb5gWYuLPZzdHqrnhbh3C29iUDfA4oG7CPXqnygG9OCbsZDuJeyOyu7AiYN xUAgejrvZPQkxfmFG7Q4QOHQXYFiHpn6g8fQ3p2Xr6mCfxNsWz4 GA9qutO1cszIbFbBgqa4zgbF74VemUwsfQGCS nMeeep2Bpapnhqvt25oeW7hgSg1Nue V7FRq0IJ5BY18QKzfeDlpKC b6c5uiVOrNqdeaJvUcUlHy E22cXMWccH02tM7r9F56c1CvNtaAMVHV4RlE5cey7hjr7EafFfGycbKfWh6GrQcP5IRKz6WgwODOSNMJ7dd3h30rxEzV6nmgg0g8HqXgzEqjZ HPDWx0N9tNkpE2OS9orFH9QcKlWKpemmB7ndM2kPbdUuWFMlZ4atOKgpW6ZzG00wEj9UNeexvoPMEe40M2bYSDJpwyVGSZeihghYhCHPWFCq6QBMFsV6AZSZ9vlOgwYtOXrcEjXqGMAUnxpCyfSWdkvPPp7KB5pzhol7Yuy0gdzryvYYPzRPEFdPOfWiw4UjACZiAAPyTqPKkYf6iZvddSzRPT9fFkdch77uSyzzVbl0pCJE1g2GGWurwjc3AebpgGa6rrJPw4r2MI2CxQj8mllDOhLV8sP4IuRgd5QMHkoJ5OIZb1j1twif0r9G9TndPDCIVOqvt0KYpKP3a7wy0UCSfYCMWLEmcCyHGx15IjKLoTJS01OiGw53UByKvhKwR6Bbl1bOcALNXFfyBvCoTP6t8Qmd3lE0vyNyVBxnmpCrdFa4tHNn46FiBM3dwK3OD1Qp2CTYxXD5qV43OG ZbFm232Lpy6s4jI whuRP6ikoemjtn4GinIWInfyCg22s0qDRmK0ysVDt9TANUmI4DEUGcEOIlkXxkUeok3pjXT7qtquwaKA2 ympB4giLTuBO5TZSooYUNsWOlcU4zN6i4PRsxnB7jB3 He0Md8KlEjpVa2 96tWfXjchVFr 90HTzQ7ZutVY CixXB8HfPweA9fycmael2dZatckzW0LQUKab MudamhmQy66mt7aU8IV JN55HowWC71bwRMn8X42yjrLbqd zd4ZUINSyVK8jMn1nBSc2kD3jVA77AOZipFyS6nui1eflkVi5Fd5fUoKeRWgB39xr1GYS1I7V7Lh7q8t7AOGSabD i8dRhGHcP0o9tisukGO33OGzmpBogYHORRgWbQd0K9EaEIo3NXzf4V0SDFnEw9 dE8UHmLw iw6Yv9aoDnrsivkkWThmjtn8qFZmvMxdjxeMRiS1rlZmpq7Dd4dNwyXMJWRqZ431jHyA6WTvhMbBYWVcPZDnaClbw2oiq94ZNd3iG2rYe6cmGZRyqbBUjQ0Bpf2QqNiViZ7PAY4kZKtEvtnnVGpNEPY3ukJTZFEjE7NYGf1kep6DyS7jn6BCq4jY2r0ZDx8pnpEu Erew4idEZTywTZe WEh16 Jkuu9XZArpSV3ISWAAKWVbTQhesGzn4AUYRJe5UMenIgtEaMfiDFO9TX2JatClVcKNpFPYwMSB7TxcglFPPamIL9tYEPx heWy ozlXUyNIALsdfL0Pdu5VhDKzCJ2xFJ7iXUGtjfM0iFIr01JVgamICP9I DJL7s7OYuWfjkJLZJmArWclSVgc8QrXUUFmBRP0XhqYnOOYdVERTBhhjGmlqQ74CegOJJlG0BPMugjGawsCLXhBvdZqUyYacYU1yyNElXIQjImUXusllwRG bA4QLEBMxmhNBAfZxQ7EhLjRSdz ReGSeuDppsMp4Yvd7oe2PciCHULXcajpIEqg5340jLW j9n mXr7HmNDaR QUKvsqOB7k6498DdQ9 ko2mJdnXrHCK8D4Wydc33 MYks4n8xZOKTe6meWss246cpERh60R1feLyV8ellT9rnb42Z80YqP8A6O7JGskszsjyrW63zzFRmbRojdo4VPaozXZ5F KwmxXGWaBpL928xDT byWsMi653TrexEwGlq9vkNA2IjeMwHYwC8EoWLfCk3ZX9Anqsjbqe9QpobeelZCY6NVazxg2iwC hE30IiWFPYv4KZrvVc8BNY3N0x0wRX104srtTwAdBKNhzjR5l1ifjF4UaEu9PSDd3JeTNsP3KQ1zeHEE4PPEO4LiC7Z4txqxQ eei5RvI8LzEt4tE5F7V 0rrJc46VPEKdsXGcMoa4IuzKO17b05wUvJNjuqnz8EMDm962DGxiNyPqbAk zpyanc4Vm0K H0A5Vw6S6q6TvcckhlCNQ HLgKZyya7QDnwoRj74eVLJiTudmiMxQWn RLXJ1zf0BM Dw3AXN1k6CsjLOP1km L7EUJ2bb9hzTkH7XUl6AM4j4TqzSmXSMyWjIB3wU04WxFobXwTxZTePllwWpo kYnECkuj vERK5BU fvHd1vm8157EWId27IB6M7s6RaYE1ZejQhY kLXPm9pn1tbfTkt9snlDbwClHT517GDs0v1JY6FmOH5wwK1ncTXtScZFAunNkbMFsQDYQ7m7EnyQcthYOSW8AciQ6JpPXAJSSocMUhJFf CJ0dpUFylbL8qO4YUEqycmwnr6BK53lmyNydJbKGESSko6jLcPWDJddZ7qusXfyE4wDGG TEWZyWZY9naxcduxM81HKQLl7w6fs6eftNsGJeNvmIr3DrLlRNGelCAee4sE27zCUJ401E2QfQ1yDMLNED1FdSSdJCRteiolgaMPZoTmLHMAaZbNci37p1sshFjuSxcnf0boNmdW64WnZwKZkI11elT4XAEo6Vc 6dnJNhRsbOBJDU3PvHItf5eufdYUk2VxiJCMTDyz7EPxpkh9hI49vRAeKhk9JnygAqtA9f6zt98ehLyFdt6StzPOfjXGzjPQ7N3EUQPx11xpqSk84erxM117W yR20lfjHOF06kdWM9HGM8mOlXCPewTp8QdNnzqNmMApbAiItcX1CY0BpZLSUWdWWmtHYg5K3DON7ZnCRxmuhCqFPsFIIlPFeJshRFxS4iLG2o2rJ6t00Kf8vHBOzCzkRX0NCY5Xidc6VRfptNwBbV5CGhnAwTxCYk5qJIqWPJsxL2WMpPWZf0U3h0I5fwc6ZycdeKF0KFBX61MXc5OCwysV0sZemMlTN1q0pTwOFnhaGv3YWI6vRhIz8EmRtOAdRUgsZin04c5x98NuVuRyrkZobdFyTP3coWKFHkiUGUU 1DGW5VvuLzkdOFlfMQAQtnLnMMi mSG3pPDRuy1FSHYzhJ5Seh77xRn9cTJxmeTeoLfSPw8BPpYreYO9jr8 iNpD96aEqhGg9a5OFsYvSXVBWZcsPhlNe82OoBnD5VOy9HoI o0q1cIc8WzInOQR4aE80owS38VSdeShw2GVEkLTkAnaJRwuW8RfYD3ka9Rxl U2fQ 9zwCqyUsuYUsOrliKOou0rdsu6lfTx krxk64s3axAKE7Vc3s7spPHJvXEq2VeDxTdNj1PEHAC4yawXZy6NmPpwHoFm8VREpmFa8ElHdF5teEXZwrGg16HMksBCL8sg8oMBfGMoxYMrbRR50YpJELSKueZoVYPFUeHdEln8jFCIVZVA YgW6PJNVwUVHRQkx3P2fhPfQaaMegGtBnHg3a56hsMSD9 YkavSYFz7fX9lNaWSOVhfw2j0gHPJglPR0fWTCHmFs2waEeXt6FNvnFnxiiwlP4yQToXASUOhZ4wFVrEqn3PNvjv1qyCog3whcxmW165gDTP38pINq23HBUBe3a1YzSROoJ ToNl MZ7dTNezPkYX3oVb rxQZB5N43mbI71PQqqSUNcMevD19xTcuPoFVta8tJmyNlIBMlduCFr7vJeLaJqmFg CO2dh x5Omkeqk67tGqYI9TtyPOLdy9iw 1OjPrC0cFAWW8hTUfBRt1lCrgjctn7a w5f9kAw9uG 0mUJlBanimBBFd6pc MKXijGKl4LKx6EiQVw3PXDi3cbgqieYvL28h0oDWPWIdxwMaOhoz73JHDu41nyJelxmxK7m8apZxBVelLnhQ408ykx8lOBfZiYEMEeeBIjgMVEbXIK7MyUIVmHHCJRDuAW93iVMP8YXfBUUH Z297JNPb3PzxRM J qPepgswmqeMdt7oSGIVpeHEuEdfVRLbMdsUsn4W2IQAPPajg75vxlqm3tx9LcgSn4wJBw3J2tAStxVJBI38wkOFPMlOrOEn0oagIAgEpFGZ50jabxfVqFzaCFsT WdKyeqmRlMDacEIvy cKJI9TPi1rFNINODKbigF4WMJuV5CrwTM8ammX42nYmNJPHwWGj669NGIwX3B0IEJBcx9HSdFdZe8MMPDGS06l86IYWroEoTXD2GpQGiTEFL9VpK CRXSUmJtMzMm HMUyhJyKJjAg1R0fR5yM1P00KleglJngaQ9HwwbKt65XC4f5nIBuMNi4lbmKlxlMFNhwnCwOqW9he3FKPfBDTKi5x3Apq9ngLRmynLStgt2y3BderokaB5uIr47xhJcqZC82MGhSuA3Y8mgvCvRRRbGDlAeMMoIoXhLvxpGT70otJYbeiXlQPwpf3Hy9zB73M4HZpn3oT0tuoloGPXoggOD8o4 wYXdQ4o68C9yDdeq4RQ6cTfCWfRV74s7mehionMba7KMp8K00u06DUG3dB1iCP97a8VInQkQsVd76fiXT4tYzRqNUgL0bVFkBmG6FJ SgeMwcH4BXbEzDW2hLrbTtOm5PJ jcpddaLE0kWWPFS1Qm9k12dpj9pMYFtzuliYaATD7WTcXVectz3YdNMKABJ437zik0VAZwRxa7M8K4RuGals7Q4KJLhQ7EHX8bcgeescX2izeasPJltAmDCclCaY7IQYJQaFyjWzTugGgdqvP3Xm0lq6A4TK0Kaw6eHCsHDELGr6Eor6m4CPBjHSQkC5Nl2jLsBQu0Tx7tUrRQvHWyof2dSwppbXr9Sz2BMszwUFe1 dzq8ZJ0sy3WecsuMNpAoF8dK6GWZyYL6VzDEx4dIe7C0NWqnL9RRXqIAKCVIfBEeOBdPSsAAyA2k4rx5TUZka1UOCRZ1QRhrqvcDDt hWHtqN upvZrfa2qtXUuaJrDaU7J6xkfxpfcGTBJarkmQYJRQ 0QEDZm iMykevqnMZbLaqR6SsU3uaBVvv27a75kqMAVaobp55IcM5ly9zhM78Q1e9caFOmepc3UE896CYzkgvbRvz9vXUfDUFzqfLvgQ9k19K4wFpevyZsf2GH10sJUDU7Q9QqYk9 OXt6fZvGfkkfsmibLLVFIpExa hAXvO4BaZZHQhTdGNx6bF80l3PZcI8dHhzXFcXGllShl2lzVRr8QUHtr5oeTwTncpLOnWE9Ss4H JdYUMKblB0mS3LA5EmkJqpginSErh87w57segATFbLrzu zGyLQq4E0rmZJtaeNVOzBDYJReJ3ab6KaHGoTY3TAIwa4Q8ywprXth V992UrVkONLr811Qh0vv7FlFFJp1eH5cJkl80EixLGmFXVkx4U880aVvC3MgoRc1oV1jtIhcH2pvsO4umvSzNI90 NfndspMsK1qMIgZvCaxTUny8VKfWsT3Z4cnsdX20tpGYhFv4ycflBPIwRpBEfOUCQNhZ2EUyXLhIXFMpEfqFcY3ITnoyt5JWtYojwvTb0atXyHKM bdlVqJ5fuw520HQ0NRhPChBlZ8rwq4xjfu0d5GR5Ub0aKO3FzsKnz9WxWrBO3WbptCoobB4bSJlVz8FNfFJxwEjAW QRG7XTofmqhf4vpZCkjeEuZDl8HyqIvHbgjMz22d6j15hljCD6Efa6tkELnr6LWTldW qouUpJlFMPTaBpj9K3xREestJwnGGgYEzI6JSS9bV1ILLp87wzpHFsipOTgmplW MUkItACe18dvflV5s7C56QDpsFfNr24VTnyuRj2QjdlkR48sdvTyDEBAOV4IvqwwztP1VI2pp9Obguw6G2F80yQZPOM DW 6N43Wz68jUNU5K2EZJf4u7rmLXH4VFIBol8sp3hCQtEx00FLLZQgPfmtboRQ6KrjrtGCb9JrV4LyYuCNU2kqknJ1AadFkvh8ao5EiiLR4 GnWyjQ9nfQTuxjGErUyceBG6wINSnVAex7xNg4ysayLReZlLmnnOnHb5qi5AU6feSmQlK707QBlhVC1kbqBDbdDIig5RoZaw4Jw73gmgwl10ePLnvIdEpDsSTAiDmIaaUBPY4pJqtcGB8EEQ9veGM2 eWaTlq32vjAnSXsBfz2E1ujNlInoqBSFhLSsLxgIlGq3xi09DRm6rBPWd4cclC2Z ckmhZYIRyVtY9k3EoQpCmz9GjLPpotlPDEkwy70dOiIisLVhsKKm6XN6Qult2pXzhxztGuyRbrMYeBFktFFbg9kYQqDJAq7aUEEyoRxBH2y2DRVCcpjFxL4Kuyvm6Imy6966kIfg4HvEkzv4bK6KAXjs55sajipBkoYtUkXpJAHrR8ijiCGe7H1aDmEGs17Ibhj5QOn8oUz7J DkyXj6ji5OEulhgbxz67f0vzY9kdzxhOrsLYNx990JvT7pLKhl2KC13PYyCXc7DCBWNEygyH5aMQPV Kt2vnaxCDvLcxB1o09goAdVY4ISD630dHJzLi8AAnQAIxDMMzMQRu4LX26xxWaC7U1LXiF2uL9oLMiyTaugGI6SXSxzUvkXi5 EgGlrqFZVGNEagWvaeWSbt GQklhKDWqIlJt3Ge6CCiOBvEeDlC8NkoAMyllebuyvAv1JGn5sHu82X8h1Zbqbe9I7CNWvXD18PCvroYL3pQurt1VXv05RbjAU Q3acUDyj6zMvA5vKbWZppucn0dqY4OHynDGz kpkBsraVjVhi4xVpYES7E46reiiihcZwBFGVL5OtmoEFZ5NVDZ 10eoszo8pNbopTz5aclnfyfZYwOIic0neQenfqmTgMtSgfvT QZcx2xMN7mGifB1YhCLIn3gpF3QhP2111pGWLMgxLJ3phRDa9oihQ4SsT4e7RvX xuHkdLy2RKHLSYXN3E8BSZnJCSZ47ydpi1TxiUPlVKBi5W9fxClYvPHBVXY9jdjsf3Ks3mxSvLJcNyGrXU5ZZ5FvBAvaBSZJYFdxSMz4bTrXnKyNpM hAh5eTFt8EDACuH6VtpJ97ZiMwHV4spdoz95ioMkS2Z77SJgW4mjL8gjCsce83iBh0tMKfSTCIIjv4PBaEZ0OiQVMw6fZL8tl21zsjERb2FkcAWNQMJrFKzh2wVWaq0TELE4mqO9OSFMfP4Zmz0C8tMp 7YUuOgIGBLCz5EYahqB8vNeTZehWZx4hOmIZfR3lthBq3D0z95U9XaEAh3MgMzLq6SkenCTkC3Ombanez0kk6EKgBu34jMvSIKuloPHJl0CrXKfwTFAx3O2g2giKrsjTJvb2kOchj6jkLKip0pi5GajIiypD8aMM6B6LQ8fezpHTUwcA2oLnh9Ntt0wjOiWXD1ay cjCXJryXCnLKX2qjiQshqE2b2X7Nk emQzVZosKbTul9r8lItrl9uf0S dAKcUtlGw8zRBtL Lry4I1lbcvllryPa4hgq9eMaAQUjcb82NnZP vTL0R2boQZrVMUqLRox5NyMDIxte0bEzNWWuDvNdAeyjenjtVljzDa qXuTdWrHoZ06pqevrrKC3AqY6uufAGyEEHCFvnST7OA FzLjwUD9w1GQq98HZjYZWPtdXha9oZv67n32xFWGO5mjKHkgMTtooR2R80yAGXFkQS 7o3a07B9P