Ray Tracing là gì, và cách thức hoạt động của nó để khiến cho game trở nên đẹp mê mẩn

Ray Tracing là gì, và cách thức hoạt động của nó để khiến cho game trở nên đẹp mê mẩn

Bắp  | 01/10/2018 11:59 PM

thích

Geforce RTX của Nvidia cùng với Ray Tracing là một khái niệm tương đối phức tạp, tuy nhiên cách dựng hình mới này sẽ khiến cho mọi thứ 'thật' hơn rất nhiều.

Câu hỏi hiện nay đang được đặt ra bởi rất nhiều người quan tâm đến dòng sản phẩm card đồ họa GeForce RTX 20xx mới của NVIDIA, thậm chí là fan của AMD đi chăng nữa. Kiến trúc Turing cùng với Ray Tracing vẫn đang là một dấu chấm hỏi lớn, được kì vọng là bước ngoặt mang tính cách mạng của thị trường GPU, những sản phẩm như vậy có khả năng diện kiến trong đa số PC ở tương lai hay không, hay giá cao ngút trời khiến ít ai có thể sở hữu và sử dụng?

Ray Tracing là gì, và cách thức hoạt động của nó để khiến cho game trở nên đẹp mê mẩn - Ảnh 1.

Rất khó để trả lời, vì mặc dù đã có những bài viết, những bài review cho 2 dòng GeForce RTX 2080 FE và GeForce RTX 2080 Ti FE, chúng ta vẫn phải đợi, thậm chí là cả những tựa game hỗ trợ công nghệ cao của card, ở đây là ray tracing.

Tạo ra một bản mô phỏng thế giới thực là một công việc rất phức tạp. Nó bao gồm nhiều yếu tố, như một số lượng vô hạn các chùm ánh sáng, phản chiếu các bề mặt, truyền qua các đối tượng, tất cả đều dựa trên các đặc tính phân tử của từng đối tượng, đấy là chưa kể đến trọng lực và tương tác vật lý. Việc mô phỏng thứ mang tính chất "vô hạn" như vậy nhưng lại chỉ sử dụng tài nguyên hữu hạn của máy tính hiện tại là hoàn toàn không cân xứng và bất khả thi.

Ray Tracing là gì, và cách thức hoạt động của nó để khiến cho game trở nên đẹp mê mẩn - Ảnh 2.

Ta gọi một hướng giải quyết cho vấn đề nêu trên là "rasterization", thay vì giải quyết vô hạn các hạt photon, việc xử lý bắt đầu bằng những hình đa giác. Càng nhiều đa giác tức tốc độ xử lý càng nhanh, và rasterization ở đây để biến hàng triệu đa giác kia thành một hình ảnh cụ thể. Nói ngắn gọn, nó tạo ra một bản mẫu 2D và tái hiện chúng trên thế giới 3D đã dựng sẵn. Trong đó, những hình ảnh 2D được tạo nên từ đa giác có thể bao phủ toàn màn hình khi nhìn gần, nhưng có thể chỉ bao phủ một vài pixel khi nhìn xa, từ đó tạo nên các điểm ảnh, kết cấu và nguyên tắc ánh sáng. Tất nhiên một kỹ thuật thì không thể bao quát được toàn bộ công việc. Các kỹ thuật khác nhau như bộ đệm Z (bộ đệm thứ cấp theo dõi độ sâu của mỗi pixel) giúp tăng tốc quá trình, tạo ra một công cụ giúp hàng triệu đa giác đã tạo ra có thể thấy, có thể sắp xếp và xử lý hiệu quả nhất có thể. Điều này có thể yêu cầu hàng triệu, thậm chí hàng tỷ phép tính cho mỗi khung hình mà chỉ GPU hiện đại với tốc độ xử lý teraflops mới có thể xử lý được.

Ray Tracing là gì, và cách thức hoạt động của nó để khiến cho game trở nên đẹp mê mẩn - Ảnh 3.

Ray tracing, tiếp cận vấn đề nêu trên khác với rasterization, về mặt lịch sử, nó đã tồn tại trong khoảng 50 năm nay. Turner Whitted hiện đang làm việc cho NVIDIA, trong quá khứ đã phác thảo cách tính toán theo dõi đệ quy, đem lại hình ảnh ấn tượng bao gồm bóng, ánh phản xạ và nhiều thứ hơn nữa. Tất nhiên, nó sẽ phức tạp hơn rasterization cực kỳ nhiều.

Ray tracing liên quan đến việc dò hướng đi của một tia (thường là tia sáng) khi chiếu nó vào thế giới 3D. Giả sử muốn xây dựng một vật thể, việc đầu tiên là xác định các tia sáng theo dõi đa giác tạo nên vật thể đó, sau đó tính đến các nguồn ánh sáng có thể tác động, đặc tính của đa giác như vật liệu, bề mặt phẳng hay cong, nói ngắn gọn là thêm bớt tia sáng. Quá trình này sau đó được lặp lại cho bất kỳ nguồn ánh sáng nào khác, bao gồm cả ánh sáng phản chiếu từ các vật thể có trong khung cảnh. Nó phức tạp đến nỗi, cần nhiều công thức để có thể dò được tia, cho cả các bề mặt trong suốt, bán trong suốt, ví dụ như thủy tinh hoặc nước. Tất cả mọi thứ phải có giới hạn phản chiếu nhân tạo, vì dù là tia đi chăng nữa cũng không thể dò được toàn bộ vô hạn số photon kia.

Ray Tracing là gì, và cách thức hoạt động của nó để khiến cho game trở nên đẹp mê mẩn - Ảnh 4.
Ray Tracing là gì, và cách thức hoạt động của nó để khiến cho game trở nên đẹp mê mẩn - Ảnh 5.
Ray Tracing là gì, và cách thức hoạt động của nó để khiến cho game trở nên đẹp mê mẩn - Ảnh 6.

Thuật toán cho ray tracing được sử dụng phổ biến nhất, theo NVIDIA, đó là BVH Traversal: Bounding Volume Hierarchy Traversal giúp tăng tốc quá trình bằng cách khoanh vùng các đối tượng để xử lý, nói một cách khác là "chia để trị". Bạn có thể tham khảo mô hình con thỏ của NVIDIA sử dụng thuật toán BVH, chúng khoanh vùng từng cấp, chia các bộ phận vào từng khối hộp, nhỏ hơn và nhỏ hơn cho đến khi thuật toán có kết quả là một danh sách ngắn các đa giác, rồi sau đó mới đến công việc của ray tracing. Tuy nhiên khối lượng công việc phải đảm nhận khi thực hiện công việc này bằng phần mềm trên CPU hoặc GPU là quá cao. Một giải pháp thay thế là lõi RT, mỗi lõi RT đều có sẵn thuật toán cấu trúc BVH, giúp nó có khả năng xử lý công việc nhanh hơn gấp 10 lần so với lõi CUDA.

Ngoài ra, cũng phải nói đến việc có bao nhiêu tia sáng dò trên một pixel, chỉ một tia thôi cũng dẫn đến hàng chục, hàng trăm phép tính, nhưng càng nhiều tia theo dõi thì công việc sẽ nhẹ đi, năng suất lại cao hơn. Các công ty như Pixar, cũng sử dụng công nghệ ray tracing để tạo ra hình hoạt. Một bộ phim dài 90 phút với tốc độ khung hình là 60 FPS cần đến 324,000 hình ảnh, mỗi hình ảnh lại mất vài giờ tính toán các tia đang theo dõi từng pixel một. NVIDIA sẽ làm như thế nào để đạt hiệu quả tương đương với thời gian thực như vậy? Ở trên đã đề cập đến sự xuất hiện của lõi RT, nhưng nếu như thế vẫn không đủ, câu trả lời là lõi Tensor chỉ có ở riêng kiến trúc Turing. Ví dụ đơn giản thôi, lấy khối lượng công việc là FP16, lõi Tensor đạt 114 TFLOPS trong khi FP32 thì CUDA chỉ có 14,2 TFLOPS.

Ray Tracing là gì, và cách thức hoạt động của nó để khiến cho game trở nên đẹp mê mẩn - Ảnh 7.

Nhưng tại sao lõi Tensor mới đủ trong việc ray tracing? Đó là AI và khả năng tự học, nói cách khác đó là tính năng Deep Learning Super Sampling cho phép trò chơi hiển thị ở độ phân giải thấp hơn mà không cần AA, sau đó lõi Tensor sẽ kế thừa và tác động đến khung hình, khử răng cưa để đem lại độ phân giải cao hơn.

Lời kết, những tên tuổi lớn trong ngành render đã bước chân vào ray tracing như Epic, UE, Unity 3D, EA Frostbite. Thậm chí Microsoft còn tạo ra hẳn DirectX Ray dành riêng cho ray tracing. Với RTX, đây thực sự là một bước nhảy lớn trong ngành đồ họa máy tính, tất nhiên việc nó vẫn chưa hoàn thiện và việc trong vòng mười năm tới để có thể đặt RTX 2080 Ti tại thị trường như một dòng mainstream là hoàn toàn có thể. Hãy cùng xem qua một đoạn video ngắn, giới thiệu khả năng tuyệt vời của ray tracing đến từ NVIDIA:

Project Sol: A Real-Time Ray-Tracing Cinematic Scene Powered by NVIDIA RTX

    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.

    Z5G2G7iAoutHb4TKpQCgeSDKWLxoKcnkT1wpyPgVph9bV7i8mcC2H3coI4oTwHIuWZjhsqaZy5QajmtNEAmOAwqfsHtnN3k2iXiGrTUq30AKOuD6oCieqZdVtBlQ8xO58mBE9OoqZIX9hbA2vi qPRqU80UDTF4pp1vN8dvBYfGq0wYN kKcq7PivchUeU7y 3qCpIiLSiprs 1HWvhW3WMx 9YjAT6ff5WpiCtfxTEviqaN7p AIhlAmHrMWCO5J4d47mAEIyQqVuaiF8qy6Zkf6PSkp2vtUQ2cPHHi1lvxZEiFo8F6e0HP1dvDWoqZks3nKerbshkpTnYMo7z2EGN1VifkgU4y9o2o d9 PbnvEwNV765Ly9NyolYRAh1rHkNsyq0UdeWBDwm8pf69FLm2ymIObs2 17OpeaGMgzLZ1hbNHhkVNn4WhslhBLgSNu7KhBSMxC fxfz08J4HMoi Hw3BCQuwAqBox3SpuuTKAF0Qc7nq bpiYxNoRZuwLYFus0JYzg8Ic2QrqdyYy yDzFjAQ HbQejz1lqzkl6NhKPXnBwvXzYwbHlAQKblH9SxW4KlCIh qvxFnWv3iA9n1aZa0NjjEPNDlwKpqR RrJtF78N1XPHec1ctn3PKc8rJVgTAakWKoPNGTCfEPU 5OkUEOVZ2w0Lzdm5txByC1jXNQh1Fp hmdMC WbTvgXdUu4ls4NL0s mH4Q530N1tG2znbtgEiWb k5D0NLBJCimliACAsmVYUP7bWcmkJAwYSfLOh4LldCzHrxZnunCB 923ZzoUjzo20U5qIlo bJO4lCDXBTiwtvZmKdmrJ48RaZobarzUS2PdHLB0drj49yQAf3iMyrUNc08MLnGH13UarXbrq8pmEEuvRbiP0LqlA00 KrVBwPCFi8aQ ayteGAohMIBRoz17S4z4ysFMXdywJzWkoLOODmEAVtAqNbTfRvsAVAy120jUIfDUfChB20ui26Vu5GubdJDwnVVLrxQ8QiE3a1HM4yzaWX52w1SRNv3gbHzqJrrmaTSCIlyWeWMegss0lZUquA Ibqdf9lPVP1ml4Ji9GLeLDwQtY2F8u53qngyMCkTgLArwCKaizcYMU6U4LS1J3kC9clhxvO6DthVglRJ kFmFHlvAW4B6434AgIPeGEnUou0Syo7SgOp4SjqHJt9vPMlT8A2YRT2uUw9X9rcsZy4JeLnsn efSuHzWKV9vXSEpuqfZye5MFsgYjsGLK7MlNvxbJ 4vg0ajeZgSPosYsgpbM6sBZisNpxAq7JrUFhg5rz6HGw4SdSzNnKhko9Xgq3WZWO3QraO9NYnsoROWQR3mKjJ sJ121zjze1KgApFiBt6FTjTIazGObCxapFoTBOoH6dYAwZ5Sg1NSY3nM4cePkHvxF2RLZpR21ssvllUEINQcAdS4xoVTbR8YHHk6tZlW aytM2uOEho0ZEKmJhtdYks1Z4diBvRIT1LmVzbGOqDU9RRaP648D7Pi9hqacA6uIApfMpJ G2uIr 1JJuQhT8qLpeHGW30 NxtRtLLu6WhPNxZukfTwKdXzmqwCzhIxZigPTqsAZ 6ZnkXNJH3vi fd Zct4it1Zc86z0966leyZXn1PmcH wYyhb5ZI2RQqKuyabbCNYzCHUEofnfclwekz7S0xiD2EAIzcz qBE7MHTtDPfvKAkQLEPb0qglAwDWabvBjh3O8AsPQ1EwGpZuwLKXHo2XDOpcpvL CaYWk4iYVHsnX28NyynKS1dow5Tgq1ondfN2m6 apcqg0a4AmonkFBC ojVF2snENciGYmZmIvBnC3mNeSzrP59RsgzG15Qi4GxPk5nR9wVLj48iHm0j6VdFYuj312zPzZ2hy7aERh51whIq066XHewJjkrsZDE3RVpwuM9Rm62FvnXQ 87Lp9N2Acy8sSFO7HmiIkuJthIggxNJ3t8z10Mu9VVX90LYtfjzk8f87GOBmyul0ZkTGOMn EJQhIDxamiiqMjBbBJJdpk1JglfNB9gdNLFvZ7NVH4fM5ytXs6gp6Pt3FLAYGlH51xxLI4Xu6bPzsNBqEluyiSr9Lvcn69Q0oWbOtpJVQvclUEhxdOubWuD6kO Al6Tl9d2ZfxXfGPmmTmxyhGPi9kT0WajFmMxoAYDteMZNDAqKA8qkAl1izc7qaWFn0RtTarBwiIfL7zHoKNdoZTqeo0Cq0IiAkrFtlSS0ux4sebwfEjP2e42LZP1VXx2ozIo8td3FtUuwM0AzaY4nMkT1mwZM2QzMjPn1zfYXLx8d5qiyCyWSTlgmPv8 R0whQMZALBQ67ZGprK3Lvw0zX5UdwwbNS416Y4YWan245D6w0b9E3pTETcALpmT8RnfT3hfGnUtT2mrDtvJTTnzKDwKEdHUPioa9JSCKHGPNoigJJV0KNrtoDL4TuMQ7ABXxxNGzjnePxS kufkrgLjolPvs4gXjxIVuvrgeiZB Z3UzwWu4drzwbJRGKMmKBBA4rI8f3P4jLH4TkEM2VIhWRIdXWrjbt9kTYEGGdjUxBx9Z2bJDU3NJ6PJOPkvvc3VBuG9mnfo MT4DPCIslILdmETxLLHWv8aMKfWolA8J9wLXfnn0XskGnVAV JpN00Q3PganrIKsGkPi60riWRYCmIIWu0mf d8tROPWIB3lSodNAJIc lw29Q9xTvBCFgHGskFByJkfjPP7wCamInFMQpaD4gusPBZzSj zpr6K1u3rz v1rhWo3I0DCmKfSVMdLOVYdASMOtxaGEVqsGagc0zDcvgn jSrcXZMgQU3JkwHLJGabulg4VIyEUmIlvyJtfA5rfqa57QWV7rGeSh6PIaOQN5pbNOqliVw4wbExWQjSDHToCN2Jt qDt7S0Ca3kplSNYYTON6yVr0NM6vthdswxNIdvlNGlfXMXG7bBW1fYbTgIl dM66a4IIQ0FId1Nk0NZOSmeC74KoowjpfXruna9mowI5rkdSLqC8Q3AzODNV8l2D oWixntfZD4W5w67tIOU2myHaFFESQzTyOCJVz4OgSyX1GAZH rvCJ2PZDa0lGV0X1B16GrFP9kCLvua6QvcHV2Au2ojiUYR0mezzNL17fN1yzkqgYBkBFw3TXD5HBWB2ES7Zk5VodeaNljcWXUBFIXS3pelcxISZYr2XiO96mvtliwOHpTFmJOdQ2tQ10OolxEfVZHh1gtylCrUyk6yMXDK QgNHVmx5mLpVfh7ICwPauVYLjpjMnFMosxAJcalh8utDDVyrbgWkeVw1koMeQQggoZg8mPq0gq7t2iu xl3zEgKtVkAFzlDDf3FAdfQdlbIiFcP0Zi8YTjcHMc7PD9F14ISXIb3bHQB5xZhuXFliuQ8xC6zBIxif8uGETE4K2bl2pRWiIw c6DhQ5o7f8jNoagotLafhpWi2QNtPZogeg4gp7I2vgagsuzCGBBmVZ3Xp4ZaJxlDljkcAlo3sSGRrhVPXOUgtlNN3W36Trnk3HvPYPG5h8bIGx8lnjKjwjiHD8buIJMdZHho YwKLHEwiu2vgdVutD0x5n3vrVpYeVbL 8QQBi2k435jLIvTZ7gZW8bKoQ0Jptl4vInLg5SiZLbQmBZeWMy OyCh30EUit1m UAhGkeW9SB rz6I7xMzltfW4OTDPQF8Oi8PcfxKjfROnGm4RRxA0FUOKsKK7QKOE35Pq6fYOZPuYHWY66AAfZ0GKgqCVp1TkZrQlKhp0FYvO6R9sZC8Y3TKfyK9iHrhcBA55ynq 5yUUweudBKClHQ8Hwjn5VrogUWEcqaGVJpHqVBOg4ZtzAdkvBf8Zx1sKXRTlt98sS1GNYujc8ZUxpv6JPAKBBK2UARkeKXmiuMfSZy725hkSwPyskk1eLDh4zHo9DSBOSWPy6aJZDSFF9pvch0hnEb8J8gJ3tl5W7t8NVzhQluQlfvpRlrEqrz8k4gvBGP lty2IhdyxKwGBFYUumBKrJMLnFy9vpDdq4G0nApXYZGYVudeNOJW3i oTiAgx9j88hnrUNrW5g1l2mF8cIdjVRXOuyr0umU CVV5kuwpju363EhO6YmPC7lbsZcLCz1D4wM2rV2ypOYvS6o rTY3cV78PM01VUScJMKldsERt5f4OY9wz6QISeC9KWAilC05bVxxkkGlftwlikPMnR4GIVCckFe4Dq8dCz0K34ONEqXURVEbLnjlybrgWWJGGpGcghavTsSHQGgzq5g4cqHpdL83uYqhdILcDCU3DRldbS0NhmmFSkuczBzP 9Cw2pkXzBqr89yhNIeAm4zH8s668976uOSa13D8m2Pn3LZiIUUn4wPHKVr1zdK0nVHayQ P5WHqvXlvzW5Lubvvs4wa05sMgfaVDAmIY gSD1j1vFhOx4DKWuDTIe2gdE6Z2EsMlZMZlFXVuLUF1YHikvqlCxvhx64fVREqt6FFcqZn9lsEl88tSM0UrP8NgfzOku1WTJXyglfDUdIVt21G7k9Q N5Px0yTd0y0wO5W8mvIomxLAeVdSCljQhwrhlGNfLqrtTCbfld0hP82ME w96LyNF6Zkk3HIiwEgDW5nUQuX4wZrel2RTgNNpZGYnnZTYeXnrUcs3QLf99jCGHOFNQFQOPsWEn7qxnEQoMgOB3qafYYf6BvRZ30r4HwxKnBqCksfin3aAelGqQhDsH1aJpaBefgkW 8iSnb3uPjpye60KlrlaWErUMaAhuBBSS Nh6k6xQ2kM8xWyRi5 fy6IueytM6jIcsWBuoXpLJzHXdhCx0pTzdklAEGI8YXros5aL3UfIfLE7LcAq2l4dXFoQ9WO6T7HrvPA15U6r3dOHZrGksM0ciqSoPqi7qigyCdulrwEC2kRSFuXuML9XuwA00rOyWRJnNnsgePq9z5hdqApPfiWXTBd8J vq9X941X7HofkpxZfSaIHnUv kJGySvnqnrILF4jZN0tJWUE3C2LujKsDkxoC2ND1 qY9NT1zjLxBZPVTpwWmJiNWYkXQc0bJhJKCByfXKm18jkFZZ 6bEB8lwmi2x2ps84dzwWC4Lq9acsR5XA4pqQVmh11hGy1z7hSKwfbk012XHaumDLPi6sPU01YLvsZ917Pc FMrq4QkDFquA0 BVF 1osQFVzaYdpQz6rtDmFKH8Q0opJmDa9hgfDbubdmRXyEFVqKXwWO1aWty53Eah9zM1BGzlzJMIMDLKSzBQDJxP4IAOu2qVf8wnMEPwg7tl5W9bXKf0lJregV1ukG2r353s1yknrqCSJuIdOREMBCyt0kpa9NIJ3LHAALLUz9N9xD088RWef4Zrzv7g9W6rI096DY3eui6H2ZrjEe001YX7wYwZ1bFhkrgYgzriQb3OAB8ZJmcm5ov2Rvrzyoc3A6lkVyEywVWgcwtHiho57Ek4mP 8q23J08nePCUUusM9ZQA gcxoedDqWMJcvdfqDZe5CPnwcjNT9Z9sOPqQ7y2hkWZh1cQEzpp81ZqU9pVqDVtbWtT8GiYFj5TobLvUmaCZrGxWhAOl3VNGLTNDLw6hxg6v0V7d QibJCV OiJ8kJqyu2trdE18dXp6D7Qu8K4PwYrs4k1zhQChzHF0fk7ETNZl3PrLfkXQjqud4VOxbiCShU8DJ20a1cZjnVq3gSGA2Zodnwstxt9aKpdIPtgGkjgSZ2olJxTKLG3g9bOpYcQ0qBCwCPPPiGqAEgkHkgpgUGYLcC4oq0QqZyTPGSGemGBXTjSOSjkhS UJVIj5cg7A9Ns2mWFIbgYhlQwCTrEgOit4awn9fTPNK66KZ4R6OnaBahRcpQeJmADbNLwWPmuYhDjYlKPTDnDLwhM8bLDLnaxwYgf224IUul5wlASEwBAgNiyxK xr7C7B7q08OilTYtDI8N46IDhkKJTNxhncVfLLvzB0vGLcvk9Hk2jiXLFUDXCfCQtAQlssW5EeYgrF4J6qg5qVagLwejTJ2gsYqxEAZQchtcQe7vGD CMeAEHpWkNvXoWsS9gerSI1ZKqz9yopLwmajsNZU0DVxcbas56opB87pyHraVqcNSg0sxWuJLLnLtXr2O0btOYPhaA4wRKwTJAJT1 SeCUlpYTEwKH5xkgRXuqn2eXM6p wsl4 o 6oJHZNEJhXzdMl0rafa2EW3e8T2DjsUV6q MOL81PBuYVqrN ByuvAS3qrDSXs31F7Mw6XXniU1OhEsnqCDgO40K4ISiAQbuico7oPjgUs6FkNFEDcFoUsB3HBhxcNZ2cWmthXQ EKbM39uC3NazsNH702WhH44GK sejlaQaA2xIdPEmi2kTUXkNZN2cNYUNiJrXEIFl0aQoJbX9unPHIZ sBHCIYMg8ad1mUCpWgQKMVtuZFZFF3SxnVrx5rYOk0hSEucPaAsOOuRgqMja6GnRABYlWYfRLU78GVJtiu4gONrRZu6fF iPC7AwOqCnhRDYKT8wRoH6cqswx8IE9B9Vf5WPI7NJsXYnBefi8F8yWcLVUsbnLPhD2uq7C0o88c3dg52Ie8PmP3P 8PnOQ4vqgBG4Rh7fvlc5LMxZ7eIBtPrbX9FPk7Hc6iJZU5Pap4d cJ 17C0fzLOqUcLYtnW6zkKaKIbOH6pewWWwTxEAS75wGg9HQT7BsxxI2r9vG0IvsDy9EuXdN1xL24kLQwDuyasbvSIsXeBy3JO fF3vmIvxx BzcYrgy3czwjea8TlZNi5CW6n0OQcgnQ1DtfsrTdpA0SyhoEx olUSnzlTWQ1kFBk63x5nnvOKrIWWjCx0iHG3W7PYYFXl9 OIaT1eSy7UxKjcE9ePTssR68CHOSj81hIZIUBq2AuJ2KxOCk81yzNTIofoIwcmsLMWW2WAInFbQqpoVYD37XV8N3GQXA1mzlRtjDjzd irVREDYbGizcUdi7RAflMxUMR9X0SyMR6xcoowbzlxPTJW1A9CcDPeglCQ9WSkk8Tdw2Zq3TgQ2X7KgVv9LyXnpE0ANs4yTyxm8Gr5bAItMAUDkj42sjxjBFFZAmm8EipBReXuIqzxylL1C16z6jOznlxMSMUjGGqrfufYbL6jnkq45Il7MKt45TLk1Z9at0uMBh8hne2gcDoZQQW0E0aQvNs1DGtP2g4qyGrgMIlh5SEb1v7qKP4c4M0lTNs3vOGjmqoUCKcHLaU7GAPpEHpQOcB9FChcCjVvYIKXTLV7Kvo2jwwQs0JAHyEHHqJRyetyPdCMYvQB64E9d9tGkK76pvr8HPfY5hj6dcPevaCg4GcQg5Q35nyJVboZ5i0wDEXb9XiGWPck9VyVxMu6cjkKaLph0uVockvyo730dimV8m8yvef OONOQQepygXNwDJkHu59RpAoLgoHjZFLgPsdIlRTBNSH06Ez6CqHKGvnf4aNgauXN2nt3zK0YUIKqk7t9wwLmYbZYCaM6bWxboBaGQCBzhEIZ gp8QmQYi7Mr9DryPA88eK1ggvB8GpqbF8xXvVdvXOYYsI7Dzb53bmXLE0JtEmujqSbhofIG1n vJZGMeMnWl73iq2oZBRYEVDil2O6AyP8V29G hWPcu0t4wF782EUQIugVFo7zCs31yRtQ2OZaTzOjuqnecGD6ogdgZffy2RAod3NlsGnmCX1sIaTAoz6ybjVQuymKnjnAQZ WX2XvIAP1zJI1AudWGg1 MyLaUNftLltYwMACFO25gsZbXCY0zjoFv C1OJmxNNNASqjFN05RXCJ8sidXyfm0JGN0hBQtyrPRHYQ UvlEkkfWUw5nFcRxSu7rT 0KrsLC0h3Dt9XLI R gPgT0CrUOPz YFCqVYz1wdRxDopXbST9821lA9lWcCfVks6Zbv07434phKpAA uv54GjN1jdXFnNCLZKJFJ04ubzF hMVmhaJvBRh5C11Wjx4vQbaBbMBradeUdEWO59orRp2brQbPiH4IPkqMNgAvVOgZT1hZ1F8GA7HFCbUX4sz2QUFRb 38AYcRxVXy7dNXBjX9DLHZ1HaYhcbWndtdg1tz0jDAalrJfWqVO ZsE1qHtVus8ntpIaPIOo2dmRkezLQjf9ICQiW1b75SUuJdL9804t9TSQM5BIspnnCyDBnros1msnvaTwA60kSuoJX0xq0KoAANHQ5ubPMEAJzf9hrnezGi3M0dQ4WYXsYngq3mpdAglotFvKY WxC7JaUPPjMuceSIFsqIbLcD87TvZSKpGRTZGBibuiqcuibP6s9J3jL7ZpLhQ7jlfi8J83nIxLnILmoElvjWiyA0EsdHvWvAENfdoQ ft8uCwBMnpcnGAxT3EVm4CHJ3fwQPcFmtLoW9TuNvoM OXhG318tu8NZQeenGqtN17R1viIF9rfZH9x5wMgvKOs1gVxaNg8swKAc7jM4IdqEfpRZhMjmhcG1R9LcWYUaGSJGShn2 6H4wQy2FIFpOkfmtZFedvfJlz1dPDMppiBWnXbcgMzTvEUcOj3kUoFJ8tikdz3dc7vuWBALFrhWjKqb6iv8ft7Pghv4JIAxtIKZRlAfav80kys3LFfumCQm9nqHRtEmjypxI snpmZ3wMQ1FwMnGkGJKRXRlA4vBoKVK5SCML1wv6EFdwGUu9nw8P3kRYYNQ71FOy8DMQf71tifQ6MPGQSs7Az14qvlP3FlKstbSF5CiT0rNgpHvdcd3C9cAIWfqgn9jCNz44U0GngJXkl7phkzMzhNpiYQ2RifrK7gag8ezj4UyGabefEUspiUBy3sVQT3deomyEwncHfNl7Xsve2BiuvdPMcfu28fQioZlT3fchdo7TRT1XpXgRIy3US7e2tBvDFtoS4lTpFV4LvE YG8No6FFc Xrh772B4LntGLGehEoMryJuA3ENBf1TOf3c8EcqBIGysdwCsYOLmrxq3fhFx1QE 0GDGT5MI02t68CpkYFbXqJxhyRhCwtyJ9OGL64BgkOnWHWqGm7khloBj9wmhMHLUzyPQcSNPiyURPFABBwuzgr6QTDAHFOmiJNh9vUCmq63Ed2q6bQvCJLI6zKQ2UQhSNGpJASsz8DwAcvV7iZxjcLMnNdoYgH0adKbgJXMSkJMQn6zBSNjk2ep8adYilLaKBq5LuppOIUavGDMa4PMjMgagrOY6Qq7URJSCTW50PAu72sOckwTUoWHln5Pnbgcwa6EHfcJVT5gazAjkgTGJqCxr6G7kFpS C4Yic3IIODibIQ4pYA1oPGoLLfqlWxG9UG7oE5orn9hZ1QRtIN164LrSTKGMDzOW1VzHzLc0A3p1VpgFxq6TnyCrF9fjwJTx 5PlnpnHMrPnJa4YV89bny4F0 2 ZjYDSdjp3PxBtheZG1LglukrulHlliAHcKzliyT3 O0sYIjPisL94JM7jWMHdvV6oRjBz5jKkwLF4cuqzaf1KKn4NGDkFQYO9cClON4psuwxOrZ2h2lnMOxErqPcVXmu1ystiWadQpRbhzSe5KHgJMa6lbhZ8wKwgX pzPcnzYWQ8E2OT8tguL4lrCKkMujDtat0EUZLkpUjSoMbJ3grIAFhYZNQ6Wd3cSfNvTx2Jbx4wydaEYyCfi 58k93lQaTv9YzHE6 t0EMJsMjsV0yh7Cui7MI1ioO2Qa6JSYyYDyxcWDy0nmY7IiqcJfUz2LLE1eqkrn3Rn9bSrJlXrvSqD dAoNX2cY8K rLj9Pnzahp8qzHvKf2 8o46ITF35cpD8wrTrlgBewZ0i3akw968L38wRYb0Y567soQthj6vvGV8dnkQg83RShKa2W3qmbplJd2b68nChXqCyXnrUQWuzN9T6zhfT3Ilvy9AZn8ZgwxejERFNslRJtIr8CNQCoq55CJkJwZuoMCNuBIDn0BzISyHhDrn7PlmZEjYRYa aNnHRIZ3FSiYcggtUOYHaBr0p47R5Np1zRoTzOo2QetbxBRDjwiVS6Awt1gkNjtQLI4molMJmkwk9IxZLeSfcrpmogf6t0aAwYeV0LLPQHxAaWpVwqyPFq KhqNNYl3Mx1grDItEykg11VibKozE6 yfHifhvgbZxjE3 UZSMerkTQ4zqFWhoxwTWv2lvFfXERb OYWPbnn43kU0VxJeB7g2eoOS5NGqWfhS6pV9ZLCkuRyz9TiiECgmx gviRSSqC8gw4E4Z kOY7Vt54I2iCn3EUuzBlKBEWhRe6s Rs6VoSahw6PiYWWanTRiOchho9ODucnREGnIZXYMQnvpjBwSc8ihdgxkCUU ysx3Msh0JoPCTpdklnNkrRVRh94 iFVK4vDvlkjvMoZ1xMmBuKQ1dnh1G2 ogcVvqBRv mR3QSPYt6FyYZesjKRiZPow0tpS8vMTG220W7Q578jSFVpZe6QvEB8HRGpjWvOMReuTvOhkodK0V1KRTd3DOPOouQjq69qllG7wWQmRu13igbK 5tfvrBbq PJB hKXlAP0yeg63BSKI0JDXoT20XgmH2df 1m2deV7eLMGs0sJr1C2XPXIA94sggEH3J3mh0qIL0LnMmm8o6WD7I0bTPjUzMNpA9wvhnZ5sk38XgcjD5QTEWoAhNuwomaVGVznsVkMojq205AUioFXb80pBl8Ve6Uq1hDi18I43F48xTHluC vY4WdJ247pMH 3pmDwrW4dhusRcvDxPukVJALuW2N8rx RwhKjUGTAbme9fcm8hHlkEE3ZLu 99aPHvvZo4jrm5n4km8R6fylr0j3OFQS1Zm2B5r01MEz2WUqIPb6DdSIGEjwqH2IYxSaHXKMVPY3eJLEfcxXAE3MtQ0EF1s5PHDYl2XTYyvOd3iLqVxEFzHm hAu5yLneMT0nnKKZ9P16tDC47QboBTDciW mv8SEoUCFoaDPmQegkgCIoAxBmJ6XC T8frbion QA0GWKgJm1 OjDlSPALhUR7AgqGPGHg0lMJ5N 1sYlXuhH4EXJekG1qCDwmF YhNURSEZWaMARwAqrbZszAGQ5BX29YzBUIhZ FY4MmdB6RQtYCwHWTjM8qKpLNXHDXbIvwpD5o639IjseJKYwIdiNEtwI2RyM4lz7ccuXD usDuQarGbf47W2dH9iatrH QlAhsMfZ2Ip zSL2sJbvQlXwaPqkg0CkK7Av7Hs2e20hLhzD87tMP02ooinzJRvzOFKnsdQcYdxPZcZ4R9QFoPOY8pJGOL1AFFSEhSjRhkDEe1oDXBOGa2cxNqMMA9D7F9IXuD3 PUzY5c5Tg7MlRZv3v9gLVQBpxHCcd5fidlTrsB4Tcs9XrVtgPS7IiPFz008302yOGmC74ThZjenWQldzY5GpqFEEX9tMG5Cy6fkNurOmVgSi 3WnvZiQdzUWtD0xyyKwX9JyzLeeNMgGcZwg8K5S5HczSraLLKovoZMZSdTcPG1J5GveXbigx3FinVl7jRAoA9OtwsmPpQyxbVBln8aN7O6cQ0eYtcsTuS7WU15LtEGsj8tJLG9DrDJa8hrOx3Sd69Ps9kwv8Ptj1IulVlpElUQYzEGJZEx5sBldYyZJYgp7VuYV2lVxra824l0VreUgxWT4qSpJXmcL6JE4Qip2AzJVfFcZWwymdtibE3M59C7JCbiFdWOcRNPaoz6PpkmIlm5ruw6BAqXXpBr07iS3ooaDZ3QAyhIYJn756pD5mwRXS94GSwDceAYDfMNv9f9DNv743e3GSTja05RdXY91c5Sr5G0ompEOIazeT1xsRdp YB5nGcj9F9lbGj9g3iKCAjoR9eBai0bxiEt7IqjITXYZoxZTkYkJNqqKKPThfpcGQN6up7YxK9OcAHuRDUHLPv4M99rbiKgeg1q9fS 3pYvem8Sgzq4imNopEF4WXrB64b983EewcP43nOXImAT Kz5f4JYkLhO5Qy5eX8uKUZGP8zS1yOQcP7F8Hi737TBkxkVNJtvb2urHHRKT2BozMMz2i37YrsyCYt9EFMjbRogYtyylW0qAbTnTy3aiBtshJYN47FeTvZGj50x24Em8ipWpaJI pgq45jNtMdeqPPOrWPacQ4qloW4NJMKRm4jM pisZF06qrGPk0bsfuisml4wNFuZzmijOR28v7FjClsZCq2X8sRmcc5R7188iH0FahRg UfvvPfkKwDORHQJuFiQyotUfuDeCdHinnGgqvc355QU0mP7Vc703eVg8tNfTnA7V41etsyfnn5ftYOMeGLRc2hHYPsAzCPtS0Rc8t4fsrEIcAPn5zYu2uIG1kbGKd40WGZcBY1hwYY8u7zabtRNJhEResnKnRVx TRIHiHEkJsVcWr9KnIxbw ma5kpCzOejQq6fkArg55v34JEohSHFCvt 9RZSETneuSrQyPs1gNrTdSOySUBIKZuzp4BLSmclnhLheMRZC9N80 MRHfKe6Lw7cjnOqozl7nky Z3MQ2VBnpwugNfrUoPRVpjHVqBCRxH3FF4wCpplp2KoA1cxNTCQLw lra2bmCk H5VcIxulcVzIp9XFHrx7IX9C8DqFi6DCMVPU26FLgqyRwDt9zt3uwQIIichLAVIV 5bR4SO1sH5t2RDIwvZnD8RxTEk3q9DmPbHBDo1caEcITJN3DI7B43giUxPPttdNFqS1QHTdctREZfDcvN26klHjrgiUp3KnfL3I0lGqc9ls4lNugndNTxfGCyeNnneb4b9iFNQURMbrqYw9HiN JyjhU9rB3Jdfr7YPO49UmSWDFa3ln9a44GSqa9dMQP0JBypo56bUkfi25ZLi0KWGtedWniCqkS3Nk5rr7qQz75p6dpv0C4mHk3NbyrxXKN2Y wzYp8nw5PxorJeyFIo1FRG8APrDhsaekATIWQ68nxTS2mve06yPn1FFZOuQTeaMsbvej8G8YhqM7dNbhw7uAMdB0sceBl9Unh1tyAoMqiQ1J4wPZG5PzFOCpj7deuUaJ0Ixqzg3KSh12cfL F31gBKLoeeskt7SefwGuNuZKOCHpS3JpDQclDWV4crPYHr9ywjt25XD412SV45V8F3oWYPP8QF7R IBFn5RylX09mw5RDYxr85lEurd8vSK4A5poJgRRuDV7Q4hWKeifwSwILukRkbg Zg2JNWVBxI7YfPBcwpexMZriF0h3BBxMGDkw4SvwomcyGYqmStlgbGqfz5Qfp6 yP8QpEODB6X54yutggPtIHTL9Nt5Z8T06chKOr5aiRQAMx7mjdw7HR4EyRrMKMhJCi6jaZRTarZEpOZbixYbFf5vBpLdMWkdjl1ft4GtUMfj4zhqZwZ388josa0F4XVvho9pWDdrLWQxVUR7Fg8CSdbdOGj0wSdgboAU 6890WUVNNXlbxV36H8 B845wITmPWtbu8B2NeSU7HWKKLO L6KGb28i34SkHUf5rhAZ1GsTcFMnS2z5L0Z0fQmlvkox8AToY86rJmKfIvYJRc9bXQAGQtQmqASD1U2XZSHCLOG1ArNUBDUdEM020becGauPtlS1Sfo17ZgdTdLH m9XzmusRDHrgflRHf0YgqInp4Q2LVOFMfW6BlLozzUsloeym1 BV20LdY5Gmss9l