[{"data":1,"prerenderedAt":58},["ShallowReactive",2],{"rendered-post-ec855d6e":3},{"abbrlink":4,"title":5,"date":6,"categories":7,"tags":9,"excerpt":11,"htmlChunkEnds":12,"toc":18,"htmlGzip":57},"ec855d6e","CUDA编程: PyCUDA编程简介","2023-12-26",[8],"CUDA 编程",[10],"CUDA","摘要 PyCUDA GPU 编程。主要内容是掌握几种PyCUDA 的基本内核函数，在 Python 中生成和调用并行化的 CUDA C 内核函数，以及了解 PyCUDA 的并行前缀算法。",[13,14,15,16,17],12071,25418,37423,52081,62510,[19,23,26,29,33,36,39,42,45,48,51,54],{"id":20,"text":21,"html":21,"level":22},"post-heading-摘要","摘要",2,{"id":24,"text":25,"html":25,"level":22},"post-heading-获取-gpu-信息","获取 GPU 信息",{"id":27,"text":28,"html":28,"level":22},"post-heading-使用-gpuarray-类","使用 gpuarray 类",{"id":30,"text":31,"html":31,"level":32},"post-heading-传输数据","传输数据",3,{"id":34,"text":35,"html":35,"level":22},"post-heading-pycuda-生成并行化-kernel-函数","PyCUDA 生成并行化 Kernel 函数",{"id":37,"text":38,"html":38,"level":32},"post-heading-elementwisekernel-逐元素运算","ElementwiseKernel 逐元素运算",{"id":40,"text":41,"html":41,"level":32},"post-heading-inclusivescankernel-扫描内核函数","InclusiveScanKernel 扫描内核函数",{"id":43,"text":44,"html":44,"level":32},"post-heading-reductionkernel-规约内核函数","ReductionKernel 规约内核函数",{"id":46,"text":47,"html":47,"level":22},"post-heading-pycuda-sourcemodule-并行函数","PyCUDA SourceModule 并行函数",{"id":49,"text":50,"html":50,"level":22},"post-heading-并行前缀算法","并行前缀算法",{"id":52,"text":53,"html":53,"level":32},"post-heading-朴素并行前缀算法","朴素并行前缀算法",{"id":55,"text":56,"html":56,"level":32},"post-heading-高效并行前缀算法","高效并行前缀算法","H4sIAAAAAAAAA+19eXcTV5b436NP8UZ96EggaynJsmQs9cEO08lJk+RA0r+ZH83RKUtlu9qlKqVUMlJyco4Br3gFDCbGZkkMuANe6BAi798lrSrJf+UrzLz3apdULoHZOspMG1XVfffdd99619fRRwA6FXNmuKzQ0keRKZrtbZGu3a48uuSM4387fH1E3NGRiX9e6Pryw1Pgz59\u002FCco7t8orE\u002F8avFwqblceXRJHhsW1Ten2ujQ9Kc08EEfvlx9PyeDlhSHx3pa0+FQcGZbuF8XRXenmxm87k+LiCvi8IPRxLCgVV8tz96SxWfH6ZGXjSnluRdx8UXkwKU7eKi8MAYSmC5jKl7YfijNXS1sjlcc\u002FAF1duOT4VHlnsLw2L\u002F1081+Dlzt8mbijo1ZTK9O\u002FiDO3WnozuZbS\u002FgPp0rozjl+hZuJXKgMOHt0Sh8d+25k8WByErR5bEh9PiJO3EIWQpN398twK6EhyKSqeKSRzKdKb4ukBivfSLC243B0+9Ekau3UwuFDZH8WQdDrD8QKQC5A5gYPQMizGiQFNn8TVWWnlgbg0rxLy286kNP2wVJyQlh7qCxpp+ZAaoJOUi1bJWXpYWds\u002FmF8rFafE2UnIctj4ytqeuDz6285kZf+7g9HJ8tO5yuBweWGoPPdzZehaqbglTt2EgJi5KXoAJBkym405IdKWboZL9jtBihTIFu1FvApO4Dimm+Sd8Y5shmQNnxiS7c2RvZQznkHjpMMHQeId3TlB4FggFDJUzIkfnIaCSS5TUKvOFFD9gORpsoUhuykm5hSXp8SxF6XtH8r3LzmBQAsMZXoZ78gO9IIBmrrYyeVjTj\u002FwAyIEiJATXKRTQl\u002FMGQg7QR9F9\u002FYJ+DdC30enUhQbcwp8jnKCHi6Zy5LdEHcPyWThG5phYk6WYyknyAo810\u002FFnMkcz1Os0MUxHK+8bVEq8UbUVwzNUkkyE3PyXI5NGV7\u002FnaNZ5X28g6eSAsjHnBEnKKC\u002FCrKgjuKgE\u002FD5mJNw+uIdGVLoA6mY80wgDCJ\u002FbSUJQADYYH8L0UJ8ZHgGxEBUewYEIPqCEIUvO9Ab7\u002FDhzoh3+FL0QHVXQ27Cke6s\u002FgRb0cLm0t0Un63FSzw64gFlCKC\u002FhOEpaHgKGZ5aDU9hw1Ob4SlieIoangJ+46ORmoCRnICRnoCRoICRooBKEuZchqcU9vQxf886gUB202yKgiPRaRjJeLjCSfpiWBzdEtd2xa1H0vwLcWZdWvlRnL0mbS+IV1eccbwQGCYZRN3STxUucnzKKa9CMh3yYuRwNFhAXmKARTEyqxRJ8QOOFD8gr401qkpy6TTFCs74H4A0dksuZg1Xby21UbSyf6fyYLIy+qN4dUVdUZWSjt5MLpFCCyeIQcqVVbQaJR7GzrgyWty1uNidoxkhQbPOeIanWYXAGtiyAk+zvc74H\u002F+QJ9pOwnUZVww+JdPUN9+2g2++xZ9kFF6runo4Pk1aVGYm3QO0ZntZMk253O5aHfWSrTl3BnRxOVZ4lUboCDzz5V+++Pjzs591nT537rOzia7Pvvz0iyMlt4\u002FkqRQ4Q6U5vgDO0V9TIEPx4Is+niJToBPub7Al4JPOo2jMqf9OnPvo1NnTHybOnD7z2dn\u002FSXx++myi8y+fdX0CfDXml9J1AT8R8qpD7whbj5uZrdnkI2rvFx+dPX3qw3NaS18X\u002FefOvCaqjUPwKMn\u002FfySfeaPEW46yIKEbYfgU2eHL8JSygaG\u002F8Mhc2Z+Fx\u002FFru6Xt5TdwUOwms33NY2LzmPhmTlNYLAE028P1ZnLeTOGQubB3AyJ9dLlUnPhtZ\u002FLcGSDd3DgYnSkVt0DQD2W39ZlS8cfy1n55ZUJcmofS7PCz0tYTKF6v3oZgocgnndWA0uI4gOs+UF+qMADWAj+3BsMWn0MR7aO0dK85U5sz9X0U6F7zfDedvv3t4NO\u002Ffvzhx6fAn6n\u002F4vgkBc5+8d8g6A\u002F7wV\u002FIjMBloHbEoR1yg36HrSNkKOL1g086HfVPXHCyO8wHGjjFHcZjAsRktSbV0ohhvRHUiJE8TxZays+2nbIWCigvQfnZtlktKG7dKBVXf9uZVIFKxS3p5oY0tQYXstXb4uWV8rNt8S5afVZ\u002FEB9dBp\u002Fm0pmCXBKqnazLyVq8YA2ad+5X9m7gQs64\u002FqnD1xdEVEJ1o6xIxGRKY9dK20+xJs+guIOS4xkqncwUPuKywhcc7nFF53Z90gyFv3\u002FBQWgZqrw6jvWUULWGxMpScVta3CoVp7FWrbwwhOnDtKoqxcov9yrFH03AePkv\u002F2PrYP45ZpS4vFAq\u002FihNjh5cH0MKOqinxRVhYHFs5GB4CqokdxZKu\u002Ft4nIszt8W9eXF5Slq6\u002FNvOpKYz1fq1cmVXXL4ny8Brk1Ala8Qnbr6Q7m\u002FCvpm7J17bFa+tSIsy\u002FMHoVWluD+mE90p7E3ifayoHm3vJ+7mXvIPKQfxopClgJCpgpIrwv6GtsVE9oaKZs1Iw9vBc2ljMSq9orEZZ0ewrMFm0F9lSXLIZhyOf6OOyAogBNuNFNbnOWyhlVH1afRjCBowybC54QAqtcGzG28NwpBAk3I5CIxSFbNTWagMmbEXR141Q1GajtogNmKgVRY68psRVhohX4BK9mZwL9yjkY12QggzydX2Qr2UQ+5ofl0rTCVDQfip1uL29lOBqRJWkITx+XMX4Kmh81cQcokpHkm6puKWoz63mBuFV5pUFUKsdoIgCdMFxHlgBqsjwf1Z6LiOoxfAlol6\u002F3+8PayRY6Ne9gRARaW1TV3oLxH4v0WqXXL83iP8LqVRYaiRKxasHS99Dm+7KhLg1ozcZm8e1YiwWN0bkY3pl9ylUSSiAmv1bkxIWhmRklGb8Fp\u002FdlQYfQzTaqRNjUtAcfLcsrS6XNifE5Vt6eaKyf1sc\u002FkVaHMdHS4yoecBsHjCbB0zdAfO16zzR+U1dHr6meC7ryvaRGcq84YZDHnDcA0iG4ZKkwPGx6oWLoQWKJxln\u002FFOOpdTNneNTVC1oo0Wky2ACcf+H5Y4k7gxW9u71ZnJ6YRrKs2N3xO0t4Ep7WDdcr\u002Fzle\u002F84uP2zsm+ZW0ulM0LB0Nr3r4nlf2xZNxJ1aYKh+ykXJ\u002FRRfILkC0rfHm37PjnC9mWhMk2cnQQkj3YeIHclhLhzX1pdJvmCtDgoPty17Nz3vt2Hdi\u002FJk2wv5coKJC94QFbgMvAvlWm0qVmBp8i0TfDD2ojacvBgS9yagf8\u002FNl+PeoHsp1ykB9Bsik5S2aMlo7I\u002FJ965i5weSL5wnjyPlszz\u002FgsXPMDr9XqA8oa9cOFCPQrTZJ5O59KQyG4P4HLCW+Go3AYgrm+KW3OkeH2yG+sOK3tXxOXH4vCV8vP7dZtAs+96EzZmrJtgJeakybwi5JCvh2RpfBCeUxGFUNe7OHgozy0Jptk3T\u002FCrcDibS+sIfnvrSq3mSc8uQy1+nValOEEe9u8A1c8uly9vlh+vK8QeJsxV9jew3QHPE3xikynD1WOH3yFoc5YmR8W1BWwUkX6+pJpESjsL4uKKODsti4ZP7leuXq6sPypvj1TW\u002Fll5\u002FIPqUJ2JS3eei8sLWBLD0p90a1P66WZl\u002FRfp3sPy4kQHCfp4qifm7BOETLbd50txyVyaYr0CnaRJ1puifLgHfJj9fUKa+UOSY7MCn0sK0LajGqJoNiuQbJJCh1m+lxJizkQ3Q7L9TsBTSLDhMhRL8YDleKqH4nkoEYtrtyFFt0alBz90+Mh4fU9wTEaL7Iiu+J+39FM8SzEtmK1OxdhlggKfICiAocyWMWlmtrR3p7Q1Ii4\u002FPhidUS1DMpKR4cqlufp+7vg7fsRe44rV8dO\u002FdnVBT\u002FzK+jXxuxXYZ8u3Dq6s4DflnRvi6u3\u002FE5\u002FLc89U93gk5YuLK9grR5p\u002Fgb3toehenDhY+h46dS8\u002FFtdelIp74uj9EjJFQfvY3oS4OgtHyJ3neCRAehXDn47e0vZEeXuqsv7Ly3Z9mkvlGEruDC\u002FFUHBOXKSh+PrKnV7DcKirQO7og8FZvExU9mfLa\u002FPO+GkNRO5lE4hqYsTTrQpe0XsgBpXnVkpb0+L6pqb9gG+3h9SxpGFfe1Bem4cjAJUUf9iQbk\u002FrrWpKjWgVAdUs81aR4iL5XtgFQtYDuAzFkwLNsR4APTtjH2AGfOAB\u002FRSVif0X1BlAKAiSjZ2\u002F4AEZuI5AhcIHH7i1lSju6MgxcUcHQ8vkqHXIMO0ArzfizGXYjLH5yoMVPK5xzIjcsJnbB6MzyOI7X376qFT8JxqVW6DL13XiBKisr0o\u002F3YQjcPGJuLEnzd8Xx0bEmV86fAytr1xtlVo5qhnirvw8IQ7uwJrXNzHP4UZ3Y6q0u4iNr5oJmJZLyz7B5effizuw8vKz7dLOAjZ3Am32Q78AcXYIzoL9K6Xiaqk4bUaEdp+f4NlF6dXG2wa7SeMpWr31c0+cnSo\u002FRivGtV34G8kJRrN3NbdQ72pI7w6J21twXVBs4nADUFaYg8HxgwebmHRcnqE1k7dsojdWAIeSvifw2y\u002F4nGpPH\u002FuutL9UvvmdWgvWHZfvrIm7N2WD8\u002FgNcWqjVByEa9bkaHl5Sxx+IY0PiosrGKy0\u002FRDPq8rGlco6LIXrQWNYV1FxCtdlplIZ2DWZK90dOhi8D7WR41Pi5LA4+6S8MKQqTcSZ9dK2HGsjrl2Rlh5iGHH4RWn7lnRrtLT9Qrw+Ka4tlDbHaw9RldHK7oGI86FJBXf1idLehKqixYhKWyOl4mCp+KM4OwXHkaqyTeSJRL9+1YFoTfvJ2t3y9AaMm9q7IQ4\u002FxDNBHq0qScVV7B+mHgjFzZ+kW7DvxY2R8vYN6e6iviCXE7SSTY1sUyP7+9bIviu29sZM2u+jCV+PX6DTlH3sELoxyvVHK\u002Fv1VJ3BHNA+nICLETaMy7ZpF5vx8iSb4tLyPxbhOcpA+yMjnIT\u002Fs3Aq0EWCGLYHEKumzOWobV1UdZdf5TjhJKIXHKdZD5B\u002FcjkBf1KF4ZpodAKu7oiIBVs7FXM54Tx9AcQAzcJ\u002Fj+N\u002Fq2q2rFi399qv2MA4Q31A\u002F59lxfjshus8JGQCi2Lqji+tz1X2rpS2RswSA5Y+SsVpa7mj\u002FGwbQ5YXhg4G74lbj+D5qLlHN\u002Ffo3\u002FUenc28E255+NHEIyNVhJEqwkgVYaSKMFJFGKkijFQRRqqCRqqCRqqCpq4zUhU0UhU0UhU0UhU0UhU0UhU0UhUyUhUyUhUyUhUyjSgjVSEjVSEjVSGVqub5rXl+q39+e7MHOGUyQJ+7N3eCO7ID2SsesBw1PQ3VrkpRPUo\u002FVUOhIwLoybFJeOBLOOPZDEWlklw6Q\u002FJ0Vj2auNztiEghAGJoVLnc6Fnt5USeADHdMziu\u002FcYlCWNJK8OY3ZhfxASBE0gGzwuBA5DynEABjgVdn3+JYoD1rGogBlggQAsQAm5MLvbsVAa02e9PbWq9tumP9dgNhgJpHN\u002FUw\u002FHQeJzJqQkYTPUliLy+Sp0Dhg7IXbN7DGNGD+4xVeCu2UdwedDlczCUwD6ub6gr\u002F3yUXXlk5H6cBUIfhca5TCySmtDLLJmmAIkBoOZb9\u002F1P4FXaAr3EGSbJcFnKpesfj2Equms7H2urt7oiJBJQ6EokQCxmtQIhT5xEIk3SbCJh8MvB64Jp1ZAHhrX\u002FM9S60xk1uRU2t1U5RX\u002FMAhsxAxfaAZ9jzWTAYGPr5aE+Zr83GI6EwoFAkPCHoq1hf6tyLqqP8s+HofS3BUPRoN8fjIRaiUAoElJbedhQsnW+qTPYLMzt2MiAaTiE1cTrZXUgEGrzRyOtoYB6On8VRgcjkbawvzUcbgsEQkRr5D1idPC1MrrN7\u002Fe3tkUjwWA0op78UyTNJwaIfILnOOGV2B71RwKtbcFQJBwkIgFV7non+G6pUMI2qvLihDi2IS6uHDy6JT19gNcknMzPaCMSZ6dRTCnUGUnzL2DQ6c4CdAvYHBZHZ8SNazglnLT6AzTe3rkPDVBGV4TSzoL8++GuCTl2S6j8\u002FIu09BAn8TsYnRKXp+TQA9muDa1nxVXo0aD3LSiuYuuX6tminV5V69MW6IL21MrKIDTu\u002FrxWvrwp3p1QI2Wl8UForkNBsdWhDtr5QzEaDo\u002FBpRzZd5EXptkFc2NE1q1hk9jcnjj8EBOPLNxThmooweAKIE38Unm+JN65i8N96zsp0GySyWXpASqbJFnZTUEafyLNzOjZ44x\u002FrMCdS5Ks7KtQDWdyV6hRyEAldjnBBlFsMZQtvQgG+UiZQ6Px1mqwC0Nt5tq8tLheebBS2dsTd2Zk0CTJJqh8hpeh1RhmlVxsfsXcVA33Og8MBK9Y4nFnNOoyAYnw1uCDS3bwVon0AJbKCTzJIGcq7DeRyPBUD52PfQChPqjrMKGcSrOoqJX7hJ6liiVab6qtbWg3M7IdlLa3paGZ8tNH4uxYefuGODsmIjtyaWtSHL6COaX2BmTZ\u002FvDBg23p9ro2g3ZuiSNVxnKZBTqr\u002FiqM5xm+AnFcvS\u002F9dFPcmoMTEWY0KW3e1l4EkIvDU3FjpnL1MvYvg94UOs8ycfqeeOd+Lb8Hmc1qrbIfDR4oyPEBLnEP1kr7SwfDU+XdNdX0Ls0\u002FFPfn5bj5mfXK+og49gQFDln5QgDNh8PkHQDE2SelzXFxdrJUvFptrNer7qHj6uy1g9EZdbyWdhcxj3D2UvW9dO+hNL4nu4kO7jTV8031fFM9\u002F3rU803l7ttQ7uq2WvuV1NiTHY4s9VVAH1JupV\u002FA\u002Fmn1VB4aHIqIqQ+o5VZUlbEeNdSNZlFkeZb6img0G4BVTWoKzpbDxSkrmIBfQ1UfKmSLJL8tXOHWw2GIUKsaolyLlQGoe6yhjYSfMK\u002FrA0AMubT8vdaxTqmpVhYBoxqMBCdAt0Gd5XakyfzR4P5jr3CyG\u002FwJkKC9qhLbijy5pS6FZ42H+cvtcSlMfekQfyvxWZnRVkH5NmCCNmCUdd8yR6oNGBuh+ard1gomcjhM0AbNqu0S5TawTgOgsdIazO9\u002FBwDtrjhHD3h4coTS3oQ0Plhe3lJdiuX5pukb8OsaywV6D2Ui5A8su8abReVuBdH2D9Cz2SidwcfisuqFq\u002Fif7+ivTVgYkqUUhkx3p0hAerpBO0CEaCRgCHmia3J5aWenRtk0mXeRnm6jiFpLLcFTqRwyrckqicrjofLWI6NK4qwCI6sjqmFM6ghTAYMqQlzfrB1hgOV\u002Fafwx1Ggpjc0AnTgMeTf0QpyFkRfi8AtZXaMvgFpDmcvcKYq7N0pb0\u002FZ0JeLstDT9sLw0aCcSpFEthcpur4lHWE2R4HKCqp\u002FwANwcWWuRJjPol6y2UNmnU2PEPpBLNBIFog98t6XWSGiqOlW1gUJu5Xx\u002FNVUbb17hoGOepnBobCioOspqXObalN6pV9UhAUVKReawAq0aqJDc\u002FU4c\u002Fulgbk1cnbejucBRKijMAC1ASIsBv8rhiE31RFM90VRP\u002FFvd+PG71Eeom6r9mky7b2MKiYYVDZ7qHHZmTcMbqO8VxfEUJyQyPJcCMTP3XFpFmnHlMMnZb\u002FL5122xh5YlT3SbSquHo8OK5rGTW6HKx007T9n0vMurjneFl5X72QzKVAA7wIOY3EBZpTtUpYEHvKrwbyX\u002FtqrXkdgGayxjtRy5n+VyfJKSA8hlk6Axav8cgjiDIIAeQo3Yx2umHs54wN8YEafvwdB9ZNWuXJpTg2vRqoyt3jCoH4eFbk8rspo4uy5eXamOxiwVp3HeBjlDhWzplu9hk26vq+JbfaIWZQMzZoAWiFm+8xyKI8iKp9Ap3Xxe2r1hDNlXQlkbkUagmwLNULxXT5YLU+AB7EAyGfsA\u002FtVZRLGwoRcrWC5B5QWKZxNJ5RXJJ\u002FtkSFip8pNM9lGJFK1IMMginkJvoFBiJXcYmNIOarZczlsos6iO2XMgmdRO6GrSBfliExOs1i61yMH27crashasq49N1rQLhh7cWah8\u002F0ScHK78MAy9EDBK8OvgYtevg0vgG\u002FDr4CPwLRSHoBfF7X9Kq98DGE6OzaEHo1PSzef6YG1T1HVxyn4F5gbCXjLJcaWd+weD18vb36HOB5gxpeJVubktuiIAB5LDyQBNnUbU8E+DqHVFrFEro8iEH9uS1T7FLipQ2FFi0NW+w3g+\u002Fx84UhJdp7o+Op348OOzSlaV8UGow1EKqeCmKPQySjSgpucQH12W7i6Wp9fF76\u002FgPAWGSj78+Nypzr+cxpUpThLfP1FzGcipFYZXxGeDJsy1Gw1dVr5\u002FUnk0Ur5zy8wg\u002FbTSZsyGHGsujd3CeeflNCNQgSR3TI3Ri7VV4t0JOOTxLgiwOaYRsVSfnl\u002F1okkoPt1Kk\u002FbmoWfTL\u002F+s63S0MCTu3MSJTqTxKbg444B981qMQu2NAjDOpYbVCk25tyn3NuXeZtScsTeaUXP6RyNVISNVrUaqWo1UtRqpajVS1Woa6EaqWo1UtRqpUp2k3xlty0tcl4ouZG20ArjpZF+LtuaNaI8QWi9DsyTTaw87Y8mjt6BiUiQl+xXpRSr7rEIBkcCRRmoWg1R2mFZC\u002F9eRSPQyXDfJJBJggKNTIE0KPJ0\u002Fk2MEOsMUXLLeApxSVRigU\u002FvZheP9TP\u002FRrABOJVDS5ITfo38KoKdO5ckNvsHBWQhd8q8kk4PRWf6TDgXNWe4iiAF0wPo4lfcWwHH88CGd9hbACSCgO7HQJ61QF8foC+X1hfKGQnm5UA9wuWBVMDZTI90N\u002FkimMyfRH+CCWNF3jXyFftQGjgcuWHs\u002FagHoNyILnAT9J07oC8D\u002F5CafiIFT589yF4+r0OAE6IfKp87z\u002Fcc7dS+7OObCSRXFt+qvLlTcDAlicg24yLeObx3VI0DVRQGHse9BDKS5lFd\u002FAD90aBkxmCpgQa3ArBqOS45TWN+pC6+lWcHO\u002FcU2VJ62XZ7cXp5C\u002FLRUpNrxkArokZJZeLx36TWunb+v5jrQXb+Jcx\u002F\u002F\u002F9OWI0I9Szkcp+rom0+5HZ11PnW6HV3mT7qAU4TRbmghC44BHdH\u002FaUW10nQcTdjL06mYiwU+nw7BCQveqXrqlyhzOEgtrbHaXgrpLQ4jvooyW9UeycXIOHicp1MoCfqrhJ5CJG63A+VElwOFvXK0sGkDPIUV5p34ny78j+L15zrlRVPG6uoXucoLbk8DpQI1SnU2UgrveDGXrpsa6zEP7n3EqJNH2H08lc0xQvvfWJNZBnG2YWfGw2pDkX9JLiu0g2PZrDGX0zGXrttBC0CDoXFTiG48WqycQVvXfdkB0uaUzEoHOG81JqJBv73LlIi2kC24tkhYhfN6vVaw0UDQbwdntNUfsEcjEdXufLKMpo5GQ7aaHY0QQRtwhD\u002FQGrHd7EirPZzBaJs9GkMRe80m\u002FOFWW5yMRlujtkiMBvw2m03422xd20UE\u002FEGb7AmHdM32er2HtD0QDdtqe1ubHbZDfHa7nPATUTt8J\u002FxtQXs0RgNhu11OBO10JRzpdiYj4Sca6PJAm71mhyP2ZiMRCtmd4K1ReyhDIVvrWrQ1ZH9di4Tt3GJH+EO24OD6p03wCw7drmVxsPD6\u002FcFwW9DfFg4T0XAwEm5Tto9soxZ12TY+PlXeGYRxuz\u002FddMar36lWc3F86mDpe2lmVhzT\u002FBEPdZa9rlicN57BQHLZhxeGK2P0pc2JUnEQp4A2fcJx4EYjtZIZWec\u002F\u002FfQR6KC+Mirl+kmByjtrvGtJk0JfmnHGO+APkE8zbBbnrm\u002F3+S5evOi9GPRyfK8vEI1GfGdIoQ\u002F9OfMXiItKk6xAJ7PxjjTPXYx3pLn4r1dvdvjSXLzDh1+RLMvJiQEoNslBNsecZCbD0En01pdvQYT9jcswuWyHT4OHNgetAh+kLq7XbhpbAbPo17crKLDdZNb8Ct64IEBjSwGacbD5pN3vDYfDbVT65ADFC3SSZFpIhu5l21v8Xn8kGKTSJ501aUkjAQLxAH+s\u002FQ\u002F1VRyI1ydl++Li+NvqLjrOdvjSdMOdxb47\u002FRQK+sOW3QE1eX0slHoYRPhh\u002FaLP\u002Fo0jz9\u002FaZEKXqwjJvoJiXoyfx3Mrnc11o+7L4+5Ls1C+SsMmyJ84kKUyJI9c1GUGe+qWDbxCWcJ2WS7+68S6\u002FFug8kL818HxDh\u002F+2VClprELEY9dl2F1jUFgOrrMvLzwUuvU+XzC7wH5RAD+ITzgb8kUB6+VyCe+YVsC3154V2ZGoObiRbRazJUMxaIRVm9Zs55a+ZoFs7lMNtdtKjsAHSJaBCD\u002FS9T8bHYYQG+r53\u002FQHwjgNiFg+bPAZdpbCG8rbG6a5HtptoWheoR2v\u002FbMywj8rbricl2ZmiwlvG11uZelv4aeHjyVpYQWKAWHkSwcBGkBlq3JPPmL33JNqmZM1hn\u002FdXDiUDCb\u002FAvoml9vWTyMrnQG6sXRhK01BDJkklIrNnE\u002FgLdZq920Oexey7ALNIddc9i9+WFHNIddvWFHsywUaNEp6Wgxv0LR5hx7\u002F+aYFVtVILYmd7tpVoVAp+raXWdzF3lDs5rwR4JHMK9RBlYkF1gVhLKgrHrBMbz4KUsl8ZGf+qrm6T5FZzMMWaglNB6pIAnkimJO7J\u002F7BgXLGmhdttFqiiNbAqq5IrdGw9snzxK4WmB+mba8rCz9Vpigp9YKyREJ9u76bX05md+BhX5XPuEHWE8JFQDuqjfaT8KtaQbqAOHP2gekPnDD3BxNBUJzu28qEI7mlImGpKs5JJtDstEhaTnqCIIg6o+6buifozMCvQLeGhhe4wLenBFNdduh8pG7uYL\u002FDsZrcwV\u002F+yu439sWRM4G1ct4oLmMN5fx3+m0aB5s3qUZ8W9g0HkrB5vfl7WneYprnuJ+p9tV8xT3zk2L5inuXZgWL+li\u002FSob5\u002FvAmObx9l1aKqzY2vSlOPRIfYgzhfwP8pnwqS4UmTi8JgzfF1bcK+1NwDw06Co4LY\u002Fgeb8HBDyA8ICgB4Q8oNUDwh7Q5gERD4he0JKxYR8NNSndeeAHIABAEIAwCPhBoBUQAUBEQDAMQq26cnJ+urmVUvGflQcwKSVOjSbd2sT3xuEUbfhlM37jJY3MryF+Q3r6QHp2Wbw+CZPeoWs8xeUpaemyuPUIjoK31VGfKT4N9R0wdI4PdZ0aGuzoz1ys+13p65fa1\u002FS9X2fv9RNtEYTjs5cRPWsPr5pr2aFjD464sWul7aeVR5fEjV14AeJ3U6XdadMwrH+1iLT4vPz8fq0oxHpf1GtE9AD6kMGaIYYwMeTYkvh4ojw+Ji0+VekWL41W1vbwUitf3FjcAvDGlR9Rnsg59HsLEPDuXOnpA3HzMlwqZ+FEg5lUEWR5a7+8MlEqXsX14hWy5mR8e8umjdmI3YuUAgzXqzklXXpgmIzVTl2vZSb\u002FjeF6E98Q34LmlLaa0pmqM1vGGWc4wwHUXF0gGEXV9VpKXK\u002F7sEz42+qelUOtrdH343RsSy38pg6zoVDgdcvah7q5H\u002FEOUypOiHf2SsUteSlf3pKGZsQ7e7\u002FtjHWQoI+nevC6mJUXxl6K6s\u002F2cDz6F62RfTTD0DBDDEUxVAu8mrIFeosyDMW04OuG8UuS6eV4WuhL+2CiSL6XEmLORDdDsv1OwFMozS2ciRQPWI6neiieh3I5ulpo7+DGnjT9sMNHxn\u002FbGVfzqdPpXpDlkzGnj06TvZQPpno+drrtWGfXsWgY\u002FjgVORbpbMFp66s\u002FoB+nj0X8x06HjnV2Hot0+gLei1R3xglIRog5napntulaH504sSWLE0qe44Ob+\u002FJmFPATIaAG\u002FTZzHjdzHjdzHjdzHht74\u002F3KefyOJf1tPLvuS2QLTvEDbyF7779Vfl19ZSgFj+0aUC5eB0vSA+hCxSNNyIuxwoOJK8XluhkKHB+gkh6gPHA5QU0rm4AJYHkqlUgon+H9pd25nvNwk79wEgE51CS9Ag1zB1elw1ULCXQK5pAdoJLop\u002FwV\u002F\u002FX5QDfVS7NAOUIBfISChYF6gnKYaqQFxJ2AjEpNmkvH\u002FCcBjVPmBuBPU67cRCJbYJOY0qzLraXARbl7YTvg7coxjN+cZdfcHsPjCf0jaEEYdCl2dTl2MfLjMUDIn\u002FGnmqRxOaFWbSdrl7BMyysPK5zJVB1ijaXl1caQGblAZYUBKlmVgLYWTi2\u002Fq7rTVOV3DYfcCs46eVnlr27ECgeXqwWqy9OqQ+bWWOEC+ko8QEOjZr60Rb+NTJgNJMu0qvNoK4Q9xwkkk4CzrVY2Wi1fZjanLGoq09xaYZnzGv\u002FOW90tLyO6gPN0HmFW0A85Kgu4HA\u002FwdbTgIsf3gyTHw9MvU\u002FgTeJVcr\u002FDiPIZBoqbL2G4PUJ\u002FdMOuo1e3Q8Paa4iq+R6a0NYJPAqaZbL7vt7S\u002FVFm\u002FBC+VQapBcWkeX+GM7\u002F6SXy6uVPbvIBMPTH8mPX1Q2V8tbf8gjk9BFePuDXF8Cr85GJ2U1mdw7ixcVkV1cGVFHBs5uLJb+f5JaX9JXL0tLkIq8T1B4siwuHobXetUTwF78OS2dHOslgK23hdVAQuvzS4Owot0FobkbG0zP1au7GJJs56YWdm\u002Fo9eRlopz8tU\u002FxWlcpLw6Ll9Bi5oq3dw4GIXmJ2kackpaeihrbtfulqc3pLl1afISLlh5MVzZH1WrK21vS0MzuFKVQohndRn\u002FVupF997qLggSr0+CjHyZm3qB89iIePU+ph1e46Zol1FOswn18V+Dl\u002FVfD26\u002FkNZ+xhdwl7am5V5GN2NLN6ZKu4sQ89RPb0kp3FD462uMaG1QL6wLLq0ZUfquqIqbXlDvnPK26Rz49p19ml5Q9RkTjERr25dUF5XmivHWzT1NZ6gG\u002FlEtOKYzEbxfd31Tf1aC\u002FkbIc0kc3DGdEfF7aXGwvD1W3r4h3UXnpuFfSrs3sAJPnx+4acBoGjCaBgzdY9OAoX98xw0Y+PF3e2kjfjRSFTZSFTZSFTZSFTZSFTZSFTbNPyNVYSNVYSNVYSNVbUaq2oxUtRmpajNS1Wakqs1IVZtpWTBS1Wakqs1IVcRIVcRIVcRIVcRIVcRIVcRIVcRIVcS0WhmpihipihqpihqpihqpihqpihqpihqpihqpiqpUvT1DoN6WlEj05IQcTyUS9i1KKXqAztIc+wau8mwaG99HY2M1uO6SKqGPzgI6C0ikSG+henroJMUKZltdi8FWp1xAYo36Ik8LAsWC7gLo5GmSBV\u002FkuDTJUiwy5mEd\u002FUckm8qCz1jw58+\u002FBJ\u002FzXC9PptNQ9rpIC33gc6xUJdkUgO5OBrX+Ie2SrQOwplymJXuRojIg00eq19Y5cpkjt79ilKrtNa9ZXvMJjkl5AL70UzU6aoZV3RWkx60vINVZSBMEvEA0gEyhyBzaf9LwMWD86uo\u002FEXBXIfk7utMudRwVMHzNn\u002F87OIHxtIAAtE+iVihvQUsAQJuo4SUGPcxMmcvItiTMsMYMlLiMGaXlWKDTGYaCD1hZzPXUGRIW8ypFqTc8VkMhMQwoLUg447lMAqGXi9RoE5xe6aymZ3HjaxQtm8FQwh\u002F\u002FkCfaTmaRBJkkswIQONBNgSzZQ6lzEvUdttLKdlZXHptQ83XsrAZIoMByTEqGR+W8UCB1ueuQqS1WHK8wqt9yoWLr81Mzz\u002FEk26t0j8sSUmdBZDNehuslXHkvVNq4Afy\u002FdqAa59lcOiHb4Q6xhxpxJimacQGMFPis7nKSCx0\u002F7uq3cRcntCcqtEHbcAJV0DBl+mZZUadKMLpq1R9WHaZOAI1I6Elh4\u002F7BdoOPBVrf6jey+kpXG8RV3UdaszIdiwxA6gNemFx57B2gTgHdLZ79bgBUvwEN+RE7B6gcPjIfAKWFapvOt19QZvb59gvGkZBPcDlBnffYgH9IB\u002FCUkOOVKe1CCA5blXU7dIq7yNZakOH7I9+lFaTqPl3Q9ukC3qfxRv1O7tNV23RB25AB3JFjoFBrRzbCqlt6DVhwwvjW1paOmIp3C4W\u002FjW3rSqlX3NjrjaQj29oRnTY394Jxcy8YN+UCnlQFW240lkulX79SFups8kp1un298Pb2dWqA4rNUqj4P65wBGjwCFPARwO12tx\u002FR\u002Fl\u002F4d9z\u002Ff3\u002FbvrJeuQp4gy\u002FU3Ovf552+YNzpC\u002FqdviBv8IWX3eALdjb4nhzD1FiiNT0DXUPRADQnxKNbtNXaEriShuSy\u002F7DNFW1vcCkSoCvvdr+k76w6E45b9PvR+Nc26FvrwFyUPUphiziGQQtRLp3NpVW89u4m15BZ3OHrb2wj1CGVG2UeAlrjrdbZl\u002FNMNY9wPLDh2z8dkXOqsXkeoD1be6f+L4DM38\u002FUBQEA",1793389733736]