{"id":1578,"date":"2026-09-22T15:04:58","date_gmt":"2026-09-22T18:04:58","guid":{"rendered":"https:\/\/acsiv.com.br\/blog\/?p=1578"},"modified":"2026-09-22T15:37:14","modified_gmt":"2026-09-22T18:37:14","slug":"implementando-suporte-a-tabelas-no-trix-editor","status":"publish","type":"post","link":"https:\/\/acsiv.com.br\/blog\/2026\/09\/22\/implementando-suporte-a-tabelas-no-trix-editor\/","title":{"rendered":"Implementando suporte a tabelas no Trix Editor"},"content":{"rendered":"\n<p>No artigo anterior, explorei algumas formas de personalizar o <a href=\"https:\/\/github.com\/basecamp\/trix\" target=\"_blank\" rel=\"noreferrer noopener\">Trix Editor<\/a>, desde pequenas altera\u00e7\u00f5es na barra de ferramentas at\u00e9 a cria\u00e7\u00e3o de novos comportamentos. Agora, quero focar em um desafio espec\u00edfico \u2014 e bastante comum: adicionar suporte a tabelas.<\/p>\n\n\n\n<p>Os criadores do Trix, a 37signals, sempre deixaram clara sua filosofia. O editor existe para atender \u00e0s necessidades do Basecamp, e n\u00e3o h\u00e1 inten\u00e7\u00e3o de transform\u00e1-lo em um editor gen\u00e9rico e cheio de funcionalidades extras. Ainda assim, o projeto foi pensado de forma extens\u00edvel, permitindo que desenvolvedores adaptem o editor \u00e0s suas pr\u00f3prias necessidades.<\/p>\n\n\n\n<p>O suporte a tabelas \u00e9 justamente um desses recursos que n\u00e3o fazem parte dos planos oficiais do projeto. Em um coment\u00e1rio no reposit\u00f3rio do Trix, um dos mantenedores deixa claro:<br> <img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAABIEAAAEVCAYAAAB3+fUzAAAgAElEQVR4XuzdCZwcVYE\/8F\/f3XPPZCbJzCThSIAETAIRg6JRQVgEuVkRdRWzIuLJyoKuqH\/EC12QlcULcY14oruCQAAjAVREIAgkRJIQEhJyJ3OffVf\/P6+quqaOV92vJzOTGfh998Oarq7j1auqTr1fXr0KFAqFAmhK2b77gF7ew9unT6lyExEREREREdGhE2AINPUwBCIiIiIiIiKiSjEEmoIYAhERERERERFRpRgCTUEMgYiIiIiIiIioUgyBpiCGQERERERERERUKYZAUxBDICIiIiIiIiKqFEOgKYghEBERERERERFVakJCIPEW+nw+r\/9XfCN9IBBAKBTS\/xN\/JnUMgYiIiIiIiIioUuMSAmUyWaRSSaRSaWQyGWSzWes7mUgkgmg0ing8hng8gWg0Yn1HXgyBiIiIiIiIiKhSYxYCiV4+AwODGBoa0oOfWDyq\/5cpBJFHEPu7e7Bp61bEq2vR1taOfCaPQjqL+upqzJjWiIg2hGQqpQdIIhCqrq5GbW2N3lNoMuruG0Tf4DCGU2loeQ1jUolERERERERERC6hYBCapiEYCqIqHkN9TRWa6mus71UddAiUy+XQ19eH\/v4BxGJRxBNRRBNx5AHsO9CBF7fsxI5de3D\/gw+ipa0VkVgcLdNnoG1mO3ZuewXRcATnvPNMzJtVh3g0gmw2A5GoDA0nkc1kUVdXi\/r6eoTDYWubh1IyncHu\/d2IRMJ6hUfDYWgHV4VERERERERERGUFAwFkcjm9Y0o2m0P7jCYkYlHr+3IOKgTq6elFb28vamqqUFVVhd6BQRRCYfQNDuGpp\/+O59auw+5d+zGcSqEQDCCr5dHU3IJYPI7BgUFoubweAp195lk44x1vQjwSRiCXQyGbQSQURAEBfdlkMoWGhgY0NjZY2z4URAD08q79aJ8+TU\/e8pp2KIpBRERERERERK9homeQeDJp94EuHDlrhnIQNKoQKJVKoaurG2I452lNDUAojP2dPfjT408gncujf3BYD4D2H+hA5959qK2rx1ByGNV1NQiEQoiI8X8SCWQzGTQ1NuKYY47GP73zNLTU16OpKoHqYADBTAaalkeuUEAuFMTA4JCeeE2b1oR4PG6VZSJt2bEPzY11iMei1gDXREREREREREQTTbxkK5XOoLOnH\/PmzFTafMUhUH9\/vx4AtUxrQHUiihzCSOUKeOHFrXjo0cew\/h8vIJfX0N3Tg+GhIWQH+hEMBhGNx5FMJRFLJBCvSughUC6fRywWw9yj5uGEN5+M2dOnoyYAnDh\/PkLpJAJaDvlAHulAAekgkM8VMNg7qAdBdXV1VpkmguhqNTCcQmtzI3sAEREREREREdEhJ3oE7e3sQW1VXGmMoIpCoO7ubvT19aO9tQWRSBDpnIZCIIK9Hd1Y\/ae\/4s9\/+St2vLILkVAIhVwOA309yPb3IJfNIRKNoRAAauvr0NDYCIRCyKOAweFh1NTV4+ilb8Kpy5ahMDSAty05AQ3RCALIiVGHkEEe2UAB+SCgZUL6Y2j19XVoamqyyjbetu0+oPcCCk\/SgaqJiIiIiIiI6LVHdLARvYGOaJ9edueVQ6Curi4MDg5hVluL3rNHxDP5QBCDw2msefo5bN68FY8+8ii2vbgZ1bEI4qEgwsijNhrSx\/4Jh6N6V6Xq2jo0NjejqWU6sgUNu\/buw8s7dwFNrThq3lwcv+BonPHWN2POjBZEQwWgkIMm\/q9Q0EOjbE4DAiF0dvfpbw+bNm2aVcbx9MLWnZg3u5WDQBMRERERERHRpCGGztmycy+Omzu7bJmUQiDRA0i8\/n1W+wwEggEUEEQaBRzo7MLu3fsxODiM+35\/L3Zv34Z0Xw9qQkBtJIgjZs1EfXUcgUIAkXAUoVAEVVW1mN7ajqr6BlTXNyKtaXjsqTVY9cwGzGidiaPmHY53nXEq5syagbqqGMIoQGRB0AqApiFT0KAFoL923giCaiekR9D6za9g3mFtVp0QEREREREREU0GL72yB4uOPqxsUcqGQMUxgGbNatPfR49AAIVAEH3pFDZsfBGDA8NY9eAqbH\/pJQTSwzi8uQFHt7Wgtb4KEWRRW53QQ6CCFkAQEUQiCdQ2NCNaU4tCOKaHQUmtgF+uehx\/efJxzJw1AycvW4q29hac+rZlSCCAqHiOLFcAcnloIRECFZAXHxHCgc6eCRkj6PnNr+AohkBERERERERENMmMSQgk3gK2d+8+tLXNRCgS0QMg\/T\/x6nYU8MKGF3H\/yvvx\/HPPYe\/27XjL8Qtx9luWokZLA8O9iAc1iIe4ggHxSJh4n30UwXAC4Wg1EE0AkRjitXWIVNXixa4UVtz5K+Qiebz3Q+\/DyctOQhSaHgJFRNcffXggMQZReiQE0v8Loqu7D62tM8f1rWEMgYiIiIiIiIhoMhqTEGj37j2oq6tFTY1zhGmxQK4QwFA2h5tu\/i88\/Mc\/YEZ1FJddcCYOq40jnssgkM4jmxLj+aRRCAagBcLQENbfJqYFwwhF40Aogmgsjlrxpq\/qBjzw5JP428aNWHTSUnzisuWoyeQALQsENKTCAaRCIdSmswhqeRTEY2EFETJpGMoAQ8ks2tvH73EthkBERERERERENBkddAgk3sCVTCYxc+YMfUBnO7FANhDAhs1b8f3vfR+vvLQJpyx5HU5dfDRaQnkEkknkUhlkM3lohZz++FghIAKgIPIIIS8CoaAY7SeovzWspr4Btc3T8cpQEvf97UkUEgl88orLMasqhqDoQhTQkA4HkQyKECiDoAh\/CnkUNCMEymoFdPdnUVVdjcbGBqucY4khEBERERERER1qyVQG6UwG2VxefyuUvEVPdiLSEG\/6joRDiEWjSMSj1nevFgcVAuVyOezcuUvvWRMOh6UhUDJQwPp\/bMCtN9+CUGoYF53yZhzVFEdVbghackg\/KfNaAIE89BBI0wOggP74FsIxFIIRFIIhBEJhhKNx1NQ3I9fQiIefX4+dfb344Afeh2NmNiOSF8+BFfQ3kaWDQcRzWQTMnkAQQVDBCIFED6OOrn7Mnj1LL\/NYYwhEREREREREh8rgcBKDwylEw2HEY1FEImGEQ0FPe528ROyRy2vIZnNIpTPI5HKoqYqjpiphzTPVHVQIJF4HLyY3NTXpn90nlRineQgaXtiwAd\/+6g1oq6rCJe9YhrZoDqFULwr5FFK5DPLBMJAJIoAQNPFKeQ3Iit4\/sWoEIlEUQlFogZA+PR6rRba+Ac\/s3IUN+\/bgPe99N447oh0JEQKJN4OZvYiC4vGwgkiWjJ5AgIZcvqA\/njaQyiEcjozLa+MZAhEREREREdFEy+Zy6OsfQigUQk11Qu\/NQgdH9KIaHEoin8+jvq4akXHoSDLRRh0CiUrYsWMnZs1q108ywS8EeubZZ3Dnj3+Ktlgc5yw9Hq2RLJDs1scBGs6lkQmGES9UAwiJ6E3PcrKiA494NCwQNkIg8V8hiFg4Dq2+Cc\/s3Ilnt2\/FZR+\/HPNmT0e8kENIjAKtBYFCCIVAzgiBRABk9gQSfxQhkHhbWEdXL+bMmW2VfawwBCIiIiIiIqKJlM5k0d03gPqaalQlYhO56deE4WQafYNDaKqvRSwamdL7POoQqLe3T38r2IwZ061pbkYIlMfTTz+NR+55APGhYZyxZCFmRrMIpHuRL6SQgoZMMIRQJoZ4JIZsNqM\/RqYVAkiLDCcUQTIXQE1jCwoIIRGJIRmKYltfP\/703LNY\/vHLcMxRhyGKDMIiBMqHxEJAMKePB1QMgaAPEB3QHz0TbwvrHUqhqqoaDQ31VnnHAkMgIiIiIiIimiiiB1BnTz8a62r0x79ofIjHw3r6B9HcWDelewSNOgQSbwSbNq0JsZh\/yigWSAay6O3qw223fA\/JAwfwrjediOmRLGLaEMQIPZlCAcP5AiKIY3hwUHQxQiqVRF4rIBCOonsgjf5UDsM5IFZVh6OOmI1prXOwZfcBPPrUU\/j41Z\/GkUfPQjCYQ0grIJgPAloYhYDo\/ZNHwAqBCvpAWCIIyuUDyBSAgeHkmL8pbLxCoIFNa7BrxlIsaLQmERERERER0WtcZ3cfqhJx9gCaAKJH0HAyheamse1MMpFGFQJlMlns3r0bhx02x\/MImFu+kMNwKosVP16B3Vu3YumCeTiyKYGaUA7dHfuxv7MLg8kM+noHkEoOozoeQ1vrDEQiUWx8aSs2bt2BXCiBQiSBttmHoyYRwuuOOwHbd+zHc+tfwLnvPh9nv\/ssIKrpI3mLx8ECoieQGF1IyyMgBoYW\/6uPFxTQQ6BsHsgjiP09PWhvb0d0DLtzjUsI9Ow3cPwH7kQ6dCFue\/7LeKv1Bdntvfcb+OKqbuuzbuH78T9XnGB9HHd\/\/x98+O9LRrfNPX\/AF7++GnutCQvwie99GEuszyb3fOX2sVSZXOtqPeMafO3cGeYnIiIiIiKazMQg0NlsHo31NZO5mK8qPX2DiERCU3aw6FGFQP39\/RgeTpZ8FKxIS6ehBSP47e9+jycefwyvmzcHMxNB7Nu6Cft27EAwEEa+EERWyyIUFKMCafpzdg0NDXhm3T\/QOZBCzbRWZAIxJGrrcficaTjuqIXo3NuLlfc+iPqWBvzoVz8CEgVooYD+yFghH0SoUNDfDiZCIPG\/xUGjC3pPICCnAT3JJGpqq1FXV2eV92CNSwi040689\/xvYO1x1+Khn1+CWdYXZHgOP\/rEL\/GUJzTZj5VfvhF3dzThgi9ci7MrOCx6oPTsEnzty+9EqzW1tGd\/eDW+t14hlJHRw5hn8UarnMWyu\/bJDG3mLL8Jl58oJpj77rPNkmUy1wUr+Cm9LiIiIiIimlz2dfZgWoN4PKnMWLf9G7HqVyuxavN+9KXFhDCqpi3Av1x1KU5qKM40cbLP3oHP\/WwLFn3wWnxoScL8B31U3G47FMRg0V29\/ZjZPDUf0xlVCHTgQAcSiThqakqnjXofoRywR7zJ66Wt6O3vwcN\/uBexQhJvXLgAEQ3Y8fJObNqwGcF4ADNapiGYz2Lblpdw7HHH4eVXdiFViOg9gdIIYdrMVlRXazhq1lE4etYxWLVyFY48Zi4u\/+zHUagC8hHj9fKFXABRUVpNBECa2RtIAwJBFMSYQJrxBrKUlkcmr2H69JZikQ\/auIRAVIIZluA038DGCELcAVFplYRAnh5IowlR9jyHZ3EClthPHU\/gY+4LXOsXPX1W7Hf8YKqUSV\/XPle9SdZFRERERESTTzKVQTKVRlNDbcnCDa\/\/Ja7\/0XPo1MJonnMUFjSLN1zlsOflfrz+E5\/BGWN23\/8KHrnlt7h7cCGu\/ULpdlTfn27F5\/73AJZ8+FpcPpYhUO96\/Pa2u\/BI47n44eUVtskq0N07gEQ8hkR86o3BNKoQaNeu3WhpnqZ3gRKPg\/k+EiaWGMxizV2\/Q+eeV7B58z\/QPq8Nm\/Ztw4knn4SXX3wZPbs6oQ2koeVSaKhOYEZjE4b6h7Do+Dfi+Zd2oD+TQ09\/H6LRIGbMaETT7DY0xGtQH63FE0+uwcmnn4YTzzkDuWhQf728GBw6mBcbF6+IF+GPUQ4NBfNjAJqm6WMO5QMB9A0O6284GysMgSaYUmhh9HDZUcGjTpWEQPZgRhrSjJq73MZn2EIhg3s+lTKZ4dlM13RPjyQiIiIiIpqMevsHEY1ESo8FNPg4bvn83Xg+Ng8f+twVWDZ2\/R8kzCcLWvz\/gd7PmIVAxeEuJP8IPpbE2ECZbBYNdaU7xkxGFYdA4n+2b38Fc2a1IRA0AiDxf0a3HxexRDKLvn\/8A3964F6EkUEglkc6BiQa65FJZlEdTCDZ2Y\/+ng7EQwFUhyNond6GmrrpSAYS2LJ7LwaHB1HIpxCNATUzpmNGQwvCWhCbt27DojefjGPe9mZkI+JRMCCsDw5dAAoiBBL\/a4Q\/4k1l4okw0SFIKxSQN3sGHejpw+GHH+YfZFVoXEKgHXfg7DO\/ja3z\/x0P\/e5S43GwnnX41Xduxa8eXoetPaI\/Xwy1iy\/A1\/\/rWpw+A+j8v8uw7Lo1wNIv47EVF6K5uC5swi3\/dDF+uLsdV\/zuQVxRtRo\/\/PYd+L+n1qFzAECoFrNOuRw3fu1SHG8Gyn\/5\/CJ89F7g7O89jSv2fR5XfGc1dg0AsSNOw5duvRkXHWHM50sPajZaHwHv41lWUHHu\/orGqJH2ZpGQzicr1+VL8OSP7OPyCN7y+pEHLqPlCnd8Ay+fQMfkVyb\/OkFFvaaIiIiIiGjidXT36SFEqUfBdvzv9bj+T0ksu+Kb+NBCa7JXdj+e+tnP8Iv1+zGcBSKJGVh41sW4\/NTDYIygawY8Cy\/AtW3r8aNHtqAzH0brSZfi2n9ZgKpi+GKuTjDacjCf3FiKi+e9gruf2o\/m06\/B19pW6m2xk8x\/4LZCoCsvQN+dd+CR\/eLNUDOw7N0fxofe1KSvTxYUOabtcbfvYK0\/u38Nfvnj+\/DkniSy4lG4tqNw8fsuxbIjRK+okbbhktPOQW7Ng3i+\/6iSbSLxSJgI4VoqHCA6nU7jmefWo66uBsfOPxrBYND6Tsjlcli7foP+5+MXHotw2CyfSXRo2bBpM\/r7B\/H6ExaWfFGXn4pDIFGonTt34bA5Ru+ZsiFQJgcMDeHRX\/0CmZ4OBAJptM+dDUTCSCZTyA1nMdw7CC0zjGl1NejZdwCHzToc0UQDIvXT8Zc1z6CmrhahYB7hUB6JpiY01jWiv3cQw9k8Fi97C5rmz0MuEtB7+4TyGkJ60mO8EUzvBaT\/T8EIgfTXxGt65YkQqKO3H7Nnz\/JU7mhNVAi06ycX4\/TvDuCN7zgJ7VVAesdfsHJNJ9B8CX79yLU4Pr0an37jVXgovxRf+\/OPcVExBXrhViy7+HZ0LrkWj\/38EmwQAc+j8\/HWM46FCIU71t2Pv7yUdoRHxRBo7nHzsbWzDmcva8auxx7A2v0Y2Z7P744eNKx3hijGhdptXZAj8wGwp8bmhWifz6l0+GFnbHOGdSHLyrD33v\/BMyd+WC+n\/r1iTyA7v8BlVNyhT4mAptR2fb\/zGROokh5TRERERER0aOzt6NbHpfHv0DCAR751PX65\/wRcffP7scCa7rYfq75yI37bkcCCt74Ty2YBex7\/A1ZuS2LuBdfi2tNECGOGQLEE5sx\/G965MGHNs+h9X8WVS7rx\/NrHsfIXa7C1bgEuPnchWmcvxKJZ\/eZYp0Drmz+May5ZgHqRe7jaekb7rB9VNXVYeOppWBzbjccefBwbB2tx9tXX4YIjivOUCIFiW\/DUmj\/jNys3om\/WUlz+9sPRfPRSzE3\/AdffsBo7qg7D2WeehDbsxmMrH8fGdDve\/+XP4NRpI+VBbB7e\/7nLcOqM0vmAiEfEeEytLUZApeq7t63Ac8+\/oP\/5vf98Hk47ZZn5jeHX\/3cPVj\/6mP7n009Zhkv++TzzG8NDjz6GO\/\/vHv3PJyx+HT55+YfMb9RVHAKJ5GrPnr3qIZAIW1IpbHr0EWx++kkcMbMZiaoIMrksItEoggiiu6sbgUIO6f4+ZAaHMO+IeQhF61DdMhu7Orqxdv061NbEUFMVQbS2DpmshqbmmejP5vDWiy4EqmPIiUGhAxqCmgiBxEDQovuPcXD0EEj8L0QAZPQE0kMgAJ19g2hrax1VgiYzUSFQ5wvrkJq3GLOsYr+MH55\/Pm55qRbv+\/nj+NKSNFZe9QZcswp4641P47azjBk3fudMXHj7brzx+kew4p+bsWvdOtS\/bjFqiyFOfjWuWXQVVmIkPCqGQJj\/Kaz87UcwV8ybX4Ovvvky\/GqguD1zebsSjxa5e6EYIZB73J5yIU+570c4QiDJWDtuhzwE8gQ0CiGQu1ePyTcEElyJfbmeV0RERERENDnsOdCNtumlQojy46fq1v8Sn\/rhc2g9+1pce6a5Pu0V\/PZLt2KV9mZcd8MFmFMMgRrejOu+Lj6PtCX6ln4Yt14qIibZ42BmGboW4BO3fBhLih1fpCFQNxZd8lVcuSxhzLPtbnzupseRXfYp3HzJYeVDIDGt2L6xPQ62ccV\/4Ka\/z8DFX\/kMzhCBj7D1bnzu5pF1F8tTSXuofP17XfnZ\/4fBoWH9zyeesAgfu+yD5jeGr3zrO3hlxy79z4fPmY0vfe5K8xvD92\/\/GZ5Z+7z+55qaatzyrevNb9RVHAKlUins3btPLQQS506ggGA6g9SuXfjbffdgVm0NZjbUYGigHz293RhKDmNgaBCpdAqBTAaHt7Whqb4ZgXA18rF6hBI12Lz1JezcuRU1iTAi8WpUN05DU9ssxJunY+6b3gSIAaGDIugRbwMz\/gtqBT34EaXWewCZPYHE28GKPYHEd939Q2htnYl4PG6V+WBMVAgEpLFrzd343f1rsXbdOmzZt9t4nAvisa3ncePbAaz5Bo5ffifSp30Ta285C7Hio2D7TsONT96Ms6tEmDOAjavvwn1\/W4cnn9iIXZ27MaCPFj8fn33wt1g+ZyQEsodJwkPXLMKnH7Btz6VkkKJfZCO9XPyCilLhRsUhkFkW2AMhaw6nkmUvwW8\/KlH8AfQM5lwuBPLZrt93xnac9aDP6wnjiIiIiIhosinfE8hsL6WLQY6cJ0gxOdsGxcfB7O0K97QSIZA7iJKGQO4yONcvm8czzRMC+WzfXXZXecoZi55AopeP6O1jZ+8JJHoJid5Cdo6eQIuOwyc\/utz8Rt24h0BZEQJlswjlc9j2+F\/Ru+UlHNZQj4iWQ99AN9K5NPZ2duivia9LxNGQqEJ6OI2a+hnY159Bz3AaVbXV6DywG5FwHvFwAsGaWoSnteDIJa9H24JjUQgEoQVEqJNFADkzBDIeD7NCICsQMgaGntoh0AD+8vnz8NF7O4HGxXjrO47HG1\/fjg3f\/QZW7raFMlZvndNw49M34+xtxqNgA5f8GGu\/tBTIv4wV7z0f\/\/mCGN9nKU5\/\/WKccHIG9111B9ZKQiB32OM3vUj\/0fALcMYkBCr\/fZF9\/SrL6D8mhyAE0su2fuTZVQdXnY0oHYZJ69a3N5TxY8hHwoiIiIiIJjeVMYE23vEfuGlNwnqkSsYTpJiMtskhDIG0Nfjep36LZydhCDTaMYHy+Tx27dmnv1lMvGzLHeCJnGLP3v369NaZ0z1jBonwqaOzC6lUGu1tMxEK+R97PxWHQJ7HwcxeQPr\/ugWArBijJwgEcxloPV1Y84cHMCseQ2GgD0P93QiEC+gZHkCoqgGhfB6p\/n507OtCVW2zHgJ1DSZx2JGHo3XmNOzfvR0N8SpoNbUItkzHsvPOh5aoRiAQBnJZFDTRhSWLQFC8Gj5oPQpmPQ5m9gSyBoYW4yv3DU29x8GK4\/q0X4pfP\/jv5ng8u7HiojPxn5ucoUzx8a\/Tb34aH9t4Pi68vR\/vW\/E4RAaUfuAqHH\/NamDZl7HmhxfCGAf6MVxz3CewcgxCoJJByhiFQO71yBnBRvGtWiXLZVKZR8ZvP8ozg5yOEoNQjzK4kZapRL1J5yciIiIioklF6e1g5mNPnTPejGuvugBzZS+zMnvBzJU9Dobi41+unjM69zTz86h7AvU7B7A2H1OrN9s5xjxZnHHVdbh4rpghicdu+hJ+us3WhvL0BCqGWe3Sx8Hw9k\/hW+8eeRxM+o\/xEq+pt4MVB4aeM7vNGQDJMiARGxVCQKiAXD6FsJbB9rXPIHhgP3q3b0NuuA9V1VH0DPcjHalDbjiF7r37sHvnHqSyIXQlC6huakHzjBa0TKvFvp3bMLO6Bs1HH4X4YYfhDWeehXQwingwinA2B+RTQCCDQlBDIR8wxoU2ewHpb4rXewGJMEiMCVQQz7Kht29o6g0M\/af\/wIJPPAAc9Sms\/P1HoJ\/\/2+7Ahed9GxvzrlBm0604\/aLbsevcj2D5M7djRegjWPngp\/Rl9MGlv70JOOtmbLzxNH32gT\/9B97xiQcwMAYhUNmgwRbu+AUP7vm8fH5UbDzrKFGuogkPgRTK5Nvjp8yy0rodZaBERERERESTQzKVQTKVRlOD+VpnH3vvvRFfXLUfCIbROm8B5ulBUA57Xu7H6z\/xGZwxczdWfu2\/cLdnYGjxhMK1uPxEMUaPO\/AR3NPM9krXDJx60clorZuHU5cU3w6mEgJ1AzXuwZvn4UM3XIFlosybfotP3boGww0LcfHZC4ANq7HqhX70petG2kLac\/jRlWIA63m44KLD0dL4TpxU8wdc\/y3JwNBYgE98+cNYItZdYQjU3Tug9+ZJxKPWtKmi4p5A4n\/EK+JntbciKF4R7xMACYFCAAEtDIQLyAazKCCDaD6F\/hdewMtrnoQ21ItoFNjyyst4qSOJWDCMZK\/oITSMHOLIiXGBwnFERLKppZAe6sFJRx+N9kUL0V9TgxNOPwOxummI5kNI5PMIFzIoIA0tkIOWD5o9f8yeQGJMIH2s6JExgYLBkB4CTblXxHfeheWnfhlP5oHmpWfhbXMyWLtqLQ6gEwMD7lBmE24582L8sKcWsYEBLPjSI\/j1JearwtZ9G0vfdwcGEMPc096F46O78OdnXkZ6f+fYhEBW6ip7O5izu6E0qJAFOFLmj4+4iB1j2RR717in+5Vr5O1g5YIVP\/L9MMrx5BL\/YEW+nITnx6l8aOO3bqMOnHUjqxciIiIiIpqcxLg00xrqSj4SJvS9sBq\/+P2fsV5\/RTqAWAKtM5bi\/Z8+BwtExjO4Bat+cTfufmE\/shoQaWjHGRddhguWFAMmd+Ajnza8\/rf4xoo12JsOY+4Fn8G1p1USAgFn\/8ubseNe8Yr2HCIN83DBZZfhjOJr3JHE1v\/9Mb7z+CsYFq+nP\/5CXNy0Gresdo0TtPqH+M5K4xX2yy77Jj60GBjevBor7lyNZ8Wr54NhNM86Ce\/\/2AVYVGcs4y5PKeJRsK7efn08pqmo4hBI2LVrN5qnNRonmhgYWjIQlegFpAdEIgRCHpmoBk2EQMggt3sX\/vHowwgO9SKopbDmmaewdnsPTli0GIlQBMmhDPKhBPb1JBQJWmMAACAASURBVBGurtVDppe3bMSM5locN3sWmubNxaa+Afxl42a8\/fR34cKzzkV9OIyqYB4BpJDXMtACEWNgaP1tYMVXxItHwYC8VkC+IB5TCyM5nMasWcajbWNhogaGHljzbVx61Z3Y2JMG5pyGz37zUuArH\/A8DiZ03vkBLPvqOgCL8aVHfo732bKCrf93Fa64aTV2DQCx4y7BjbcuxR9PFW8HG5sQSLBSXYtPKOMXVJQNgQze7ZR+25Vnflm3xQ7xZ\/VQRLofeq8b+VvSiozwxfro4qov8weqqNQ+CtIymUrXARERERERTWaDw0lks3k01sue86Lx0NM3iEgkhJoq8y1mU8yoQqADBzqQiEVQnYhCCwRQCIrXs4sgKIBgISCe\/jICIPEomBYA9FBSTBSZYx7IpPDkg\/chNtCJ2EAHXl73NAZTUfQn81hwwlLMPOIY7OzoQ74QRl9vjz5\/PAjkcyl01uRQ29CGhx97Dn98Yj1ydU047i1vwmeuugLHzWnBtEIKieww0oEIEAjqgU8uLwKoALRAUP9zXnwuAOFgUA+rpk9vKe7aQRuXEOjZb+D4D9yJ9Px\/x0O\/uxSzrC9oShChzcp2hitERERERDTmOrv7UJWIlx4biMaEGAtoOJlCc4UDQk8mowqB+vv7MTw0hOlNNXr4I3oCGV8G9SfDjP9v\/ifCmFwKCOZF6qL3HMqms+jcsQ2b\/vYo6jL9GNq7A7G6BuSSBQTSQQQyIUQCCeQLIXQM9qF6RiPy8TAyIQ17hntQ3zATv7zzfryw\/QA6ciHkG2uw6PULcfPXr8MRDdWo1XLQgnlz8GfxljDjjWAFiBAob0wrFJDLZFFfV4u6umIfsIM3HiFQcXDn2Pt\/jrXXLram09QgeuL8\/cTy3QqJiIiIiIgqlc3l0NnTj8a6GsRjU2+Mmqkilc6gp38QzY3i8bviI2pTz6hCoEwmi927d2NOayNC+mR76CNSINEzyPwoBmwW9RMo6L2GssEoCoEoMoP9eObhP6DQtRuBvg40xeOoiST08X1S3YPo3t+N3v5hZCJhxJun6f91p5PozA7i8COOwepHn8KGbfuwL1XApo4DQCKG9\/zzRbjigx9ES3U1auI5aFreeCRMjAuk5fXBoHPZrF6ucCiE1NAA2tvbEY1Girt20MYjBFpw3CIgNB+fXWk8nkVERERERERUlM5k0d03gPqaavYIGgeiB1Df4BCa6msRG8P84FAYVQgk7N69B011cSSCImHRkx8zBwqgEA4gF4T+mFg0L3rjaMiJhDIURTaUwFCugKf\/+lc8uepevOmYOejeugFHx2vQ0tQELZ9FV2cH9u3fj86eAdTUNyMUq8XMWUegbyiFXGMM9U0tePmV\/Vi\/ZQe0mml4eusr2LqvA43NrZgz+wgcMWs23rj4MP019u1tbUgk4mIH9FGiRb+gfC6HqOiZlEuivX1sA5vxCIGOP\/sqXPn167F8celR34mIiIiIiOi1SfQI6usfQigUQk11ouxg0VSeGAR6cCiJfD6P+rrqKd0DqGjUIVBvbx9SySHMrIlB7\/ZTECFQUM+CcuEgsnoQFEQ4H0cml0MgEkF\/WsO2fR14cs0z+N+f\/wQzIll8\/OKz8PIzf8X8plZUJaKIV4WRL2SwY9dO9A4k0dDUikisAQhWo6d3GE2tDUhms+hLZbHjQA9C9TOwZzCHux96HJG66WhomY2Orm7E8l1oqK9BS3Mzjj5qLhYedyyOO3YBmurrEAoGUJM7gPraBBoaxvZZvvEIgYiIiIiIiIhUiMGiB4dTiIbD+uNhkUgY4VBQ+kInchKxhxhHOJvN6Y9\/iSyjpio+ZQeBlhl1CCSSsB07dmJWSxMiOdHbR7wpLIxcOISkeBdXLIaUGDl7ANizZwDPPv88\/r72eWza+jKSQwPo3\/kiZgb7cePVH4bWuxM7tQISgRDqNA2JdAZIppHKFJCMxjEQq0JvKIoUQpidSSGTy6M\/p2EIUYTrpqM3E8FvVv4Jg\/k4qqfNxv6ePuRTBxCLhPTX2IsTPhGNoK62GkfNPRLvOecUnDSvFnPmzNZT0rHEEIiIiIiIiIgOtWQqg3Qmo\/dmEWPjOlv0JCNyMjF0jOhFFYtGkYi\/+sZYGnUIJHR1demPViVi1foA0IVQDIEY0DcMbNyyDU89+zyeWLcX3d39SKZT6BscRC6fQwQ59L28Fu3BLnzlin\/G3OYItmlBfbyeZHcvkr19QFZDvhBEf1ZDb66AhlmHIRiJYVpvL7RIGHuTGSRmzEagqhmdvXncff+fsK83i5qWdnQNDCE13KUfsEhYPK8nhoTWkM1kUVdbgx9\/bTnesHAepk2bZu3LWGEIREREREREREST0UGFQLlcDjt37kJ1k+iNE8SeA7147vlNWL\/+RezYuQcHOnqRDdYgmUqjEAhhYDiJquoqxIM57N\/4BA6P9uDf3v02vPGo6dAi1egZHsaWnTuxZddu9CXTyInXzSOC1pZWzJg2AyEtgMDwAA5kMsg1TEPd4ccA8WZsfnEv7r1nNbKFKEJVdUjmcxjs60A4LBK8CMLhMALBACKRCM59x+vxuY+chdmzZ+nTxxpDICIiIiIiIiKajA4qBBJ6enrRPzSMH9z\/GP78xFp0dgwiM1yAlgYKuQKyuQH9Ve35QAhZhFDbOA3BfApdW5\/GEbE+fOj0xXj7ce1or6pFsKoGXdk8tnX1YG\/fIHbs3o9COosjpreiJhBCuAAMpFLYVwDqjnkdgjPmoC8dxeoHH8e6p\/6Bqqpa5INBaCFASw4gnU7pbwQL6SFQCLFYFPf97HrMPWIWGhsbrH0YSwyBiIiIiIiIiGgyOugQSBBvCnvgiefwme\/8CrlMGDFUIZgNIooAItiPlAhjQjHE66dBC0dRyKUwtPdFNGT24NylR+KdJ87DMS3VCAeiKBRiyOVCSGeCONDVg4HhQWS0rP6a+VQ2jXQmgtojj0Zozlykaqfjha378dPbfoVwJohcOquPTY2whoiWQmpYjOJdAIJBiPeCfePLn8R5Zy0b8zeC2TEEIiIiIiIiIqLJaExCoFQqhb179+HmFX\/Ez+76M0LQEAqIV8dnkM9qCITCiFZVIxxPIJlNIx4B+jt3QRvuQntTAh+48CwsrenHzJo4EoU8CsODyA0n9dfb9WY1ZBI16Epr6C+EEG4\/BrOPPhZatBpdAxn8+nf34Yknn0E0mkAkGIKWz0PTNDFyNbLZjP7nYCiISy95F67++PvQ2joT8XjcKvtYYwhERERERERERJPRmIRAQn9\/P7q6unHV13+BR\/\/6LIKBHAr5LAr5IALhiB4CBSJRpDNp1FXH0duxG8gOIJ\/qw1mnnIyPnrkIVVoa0UwKub5u5EQPoKyGWGMz9iWz2Nk7hIbZR6Bh7vGobZqBvR29WPuPzfjpz3+DVFZDJBxDMGCGQCIAyiRR0PJAAPint78R\/\/XVKzFtWhPq6uqsMo8HhkBERERERERENBmNWQgkdHd3o6OzG\/92\/e148u\/Po5DPoFAIIxiOIFZVrQ\/0nM3l9Fe1D\/V0IJfqh5YawKwZDfj08rOwcO4cDOzfg8EDe5EZ6EM8UYVwTT3yiVrk4jWomd6KfHw6+ocz2LzlFfz8l79FZ9cAEIoiFIwAmhiHKA\/x7rtUug8BFPDWk5fg1huuRkvLNDQ1NVllHS8MgYiIiIiIiIhoMhrTEEgQr43v7OrBF775Yzz8lyegFcIImSFQMp3TB4muq61Feqgf6cE+RAJ5aLkkzjr7TVj+vnfrj4J17tiGrj07UV1Ti7bDjkCgug5DhSDC1XUYzETR0zuEH972Y2zbvgtaPoRQKIIgwiiI8X\/yGoKBAFLpLpx+ykm46SufQXNz07i8Dl6GIRARERERERERTUZjHgIJokdQX18\/br7t1\/jpnQ8gHIkilqjG4HAKIqdpqKtHJjWEfDqF9NAAopEg6mfW4F\/e+26c\/PrFSEBDMJdBPp8HQhGkCkASQWQKQfT053HPPffhySfXIJPOIVgIISoeBUPICIEK0McGevcFJ+GaKy9FfX3dhPQAKmIIREREREREREST0biEQEJxjKAHHnkC3\/zvXyCdzaNvYAihUBiNDQ0Y7B9ALptBIZ9DOBRAIBHGiUsW412nn4KZTQ2oS8T1x7m0QBDpApDWgIwG\/OGRx\/DA\/Q8gm8nqj36FEEQ0EtNfRy8eB6uprsYXrv4gzjxt6YSMAeTGEIiIiIiIiIiIJqNxC4EE8dYwEQTt2deJ\/\/nV\/fjZ\/z6AYFA8vhXA4MAgYtEoIuEw8vkc8tBQV5PAKcvegre95WRUx2OorqlGJJbAYDKNYCSGJ57+O+574EFs374NiWgU+WwGiYh4EX1A7wF0wbtOxRX\/ehHaWlv0AGg83wLmR4RAREREREREREST0biFQEU9Pb3o7e3Fhhe345d3PYTfP\/AI8loe0UgEgUBA\/0\/TsvqAzjOnt+DUU96ORYsXoaa2FgWEkMkV8Len1mDHzl3YuOEfGOzrQTgIDA\/0o5DL4j0XvQvvfffZWHD0kWhoaEBjY4O17YkmQiCVCiUiIiIiIiIimkiqmcVBhUBCLpdDX18f+vsHsHPPAax69Ak8+Mjf8PyGzYhEI9AyKYTDISAQwGGHH45zzz8Pre2zxTjP2LxlO1Y9tBqLFi3G3x7+I1JDAzjmyFk47a1vwJmnvw1zZrehrq4W9fX1CIfD1jYPBdUKJSIiIiIiIiKaSKqZxUGHQEVisOeBgUEMDQ0hk8lg5579eO6FzdiwcTM2bt6CA909ONDTixPesBQnnnSyPt7P8+ueR3NTA2IBDce0NeGEhfMxu30GotEoqqurUVtbg1AoZG3jUFKtUCIiIiIiIiKiiaSaWYxZCGSXyWSRSiWRSqX1QCibzVrfyUQiET34icdjiMcTiEYj1neThWqFEhERERERERFNJNXMYlxCIDexCdFTSPxX3JwYL0j08hH\/iT9PdqoVSkREREREREQ0kVQziwkJgV4NVCuUiIiIiIiIiGgiqWYWDIEUqVYoEREREREREdFEUs0sGAIpUq1QIiIiIiIiIqKJpJpZMARSpFqhREREREREREQTSTWzYAikSLVCiYiIiIiIiIgmkmpmwRBIkWqFEhERERERERFNJNXMgiGQItUKJSIiIiIiIiKaSKqZBUMgRaoVSkREREREREQ0kVQzC4ZAilQrlIiIiIiIiIhoIqlmFgyBFKlWKBERERERERHRRFLNLBgCKVKtUCIiIiIiIiKiiaSaWTAEUqRaoUREREREREREE0k1s2AIpEi1QomIiIiIiIiIJpJqZsEQSJFqhRIRERERERERTSTVzIIhkCLVCiUiIiIiIiIimkiqmQVDIEWqFUpERERERERENJFUMwuGQIpUK5SIiIiIiIiIaCKpZhYMgRSpVigRERERERER0URSzSwYAilSrVAiIiIiIiIioomkmlkwBFKkWqFERERERERERBNJNbNgCKRItUKJiIiIiIiIiCaSambBEEiRaoXSofQXXDnvo3jhcw9h9UdmHcqCTEo7b78Qy741Fyu23IhTSpXwkWtw+OVb8YWH78JHxuGU18tx7zl47L7lmG1NlXhlBU57x3\/iuB9txC2nWlOpAsrHnJQon7uVMs\/1LQDmjcvvl8Jv4549WPK1JC794lxc2WZNpTHRieUf78G6M2bi2fNqramTwfZ7tuLYVRHc\/f05OGMyFGiK0+vz2QQ2XN+Gw6f4voyVVT94CRegEcMfa7amjaVDfQ6rH\/PJ+zvwaqKfb+vFHsX4u+aL5+KrmWpmwRBIkWqFjobRUNtofdadfxu23\/RW6yOpUGjovIYpBwIMgV41lI+5Kv3cWOkbVIz59sbF6H8nxiUEkoSdY1+PCvs8pUOgEje0+n4NYfG\/HoUVJ1pTJ1iJ8jmozjd2DnUD+lXBdo5dt1s1EHjtGOsQSF\/fvmqrjg\/1OcwQaPJwnxuTzeQpn\/vvGvdnmspUMwuGQIpUK7Qyu3D7Oafj6\/iss1EhGgW3zsVqhkAVUmjoTCS9cXcf3jNOPWoqpdywVAqBjLrGKHrpKDekJY1j8iM\/HsrHvAKPXr0Ay190\/Wbp5GWYfEb\/O1HZuat27cuOkWzawVHY5wpCIHmjzriJxKEIW\/6+A1U\/gfRffdUbaONJcoMtrW\/JfOPsUDegXw3s5xgmxfk2uch\/L0bP3ZCWncOj2eZolhHUf2Mm\/vqeukbz98khqF\/p77g\/97l76Ljryv3Z7+8omgpUMwuGQIpUK7QiSo1tUqfQ0JlIFTQEJ4Jyw1LpvBx9g7+yhjRDIDXy46F8zCvhc1yUj+sUpryPFVz743KMPBR+Gyu44ZM3lkZz0z425OURBnDLdftwx5KJC1XkJu8NtqwBTZVwnmPqgcBrh\/\/1OTZk5\/BotjmaZQT1Yy75HSAfo\/n75BDUbwV\/b04uCnU1ZfeNVDMLhkCKVCu0EhNz8\/9aotDQmUgVNAQngvL5xhBoCprAEEjaG0i+\/VcbhkAGeWNpNDftY6DUjWqJHkITS3LDXarcE0jWgKYKuM4x9UDgtUP+ezF2ZOfwaLY5mmUE9WMu+R0gH6P5++QQ1O8k+R2vnEJdTdl9I9XMgiGQItUKrYj5L+pQCi2MRtY91mfvAKJWA+W7wHJ9kNEFRm8OFMOI\/wY+eTq+vhGYd9Gp2PK7vdLeHt4GXgm2oGPerQuw\/PfFL86Whg1GEGEf\/0g+n4PvNoDzHI1OWQjkrTf3eEv6\/uI2bP\/UVmtwVsFdv8XxUEb4ld18zM81zJNzfd5yebYn5V3OvT8689wq7gsWfBYrzr0Pyz0hkHt9Z2PFj4DlJXoC6fVlOwY6qwySfV\/gPJdGGtJzcZN72\/aymfsg7XFiO4c89aZ8nOzc9VBcL4z9OcZbx+7rxDqPzrrP3L6xXfhMN8rj3q6zrL51ZTvmpY6HUVfmMS8R7rn3pSzXsRkpp+s4l7rW\/crjc9wdrN+Ekd80nWO\/ixPN30FrG0ade8JihWum\/PGQnP+yc1TnPvaCUUfz7MdNTLb21\/0bKD+33efEeT+6Dbhcss92thu++fcUB9YUbINr6g3edPELUwxfXJjG16z5TQuNxtRIAymK6z\/eg99YM3gH7TQac5r1GS3FbvPGDetvzHXalWqAeRp11j5OB27bh893APNtN8H6\/Lb9eI+7ASLZf8880vU0Aj8p3nBD7zkitm1nlCPtuTG39uENw7ZtB3GDHh6Z9WJOLda5k2seV73LGtCe42Btz\/zoe65I6sNTZ+7jXrp8cu5lnMex2DvHUcfuupGcCzr7eWvVgWv\/bdznmO\/57t6+rkw59brLurZtLgPXIyVlA09zuZmucpjHx3ncvD3o3OeEs75Ls+rovIw+dtKm4hfW9S34lK+4vO0RGvdnxznsOd+EMudUmWXc++4+H3yPuWe78oa3e\/2V1K3sWigeS0e9WN96z6tKyy+CGX3sq7Jl9pbNPZ+17Y8CF+rnRhAfOkrDT1+yZjFIr58R7joUHNvyHGPvNe39rXXvv53k2rVt029dsJ27+qOjqzTptee5vn2561heZr08vn8niTqyn5ul\/o4qHjv3dt3fy4+tu85pfKhmFgyBFKlWaKVGGivym3md2ah1NCSKDRZbY9BooADzcA5W2BtzZgMCC4D3fLfYGCrdECrZALOzNZxGAhnZWEfFxpFzP43GiruR5mKVfyOO+8xIuYp1N7Jd7z6JeW6ae9fIvpjltQdvVoPJHlaYdW6tW9JgffTqa4CbfI6ZYJbb0xNI8XjKqOyPp+x+51mJZb0NZzejrj09Px65BqdtvdJ2TpkNXdl5unEuvmCdC5Lzwyyf\/Vw0jpV3HmsfRn2cXHX\/ygpc+cfTcUulIdCLCzDvmH9zjOflN91Tdsn+KR83n+NhLF8ME7zXh05Szyr0sopw6ya4ti05lta+2c4rybHSqZSneMzs52nxulqwAFuO+TfreLnrVPY7oXrNyKZJj4c+TXLtSziPkc80a38Vf2cd08xr0DeMMumNYqOBNnJTKr8htW5wHTflIw0Eewhg3AgC8zsiuMG6OS3eQLsbWvYGywBu+cEAzvuY2K55w+lpCMi3qZP9K6Y5DS3ApR8t07D2NI7FPD2Yf\/3IDbZRZthubCXrsd0sO26SZeVz3Igb81k379a+F7cRxPwOjCxvHj94tuGcZqyvVL13Yvl1GVznPt62ZUbqUcPic0bqvtgQs+rM1dgUVv1gB\/Ax+3pKl8\/DXGaT\/VzYswfLn67FCrEO2ffFY2APHYrz2Rsm5jGf3xLEppn11vK+ZTLrwX4Mi3XgaIxJ9lOtnN7zYeR8cjao5Nekk\/dY28rrqk\/7fnn2X7Y\/JejL7wtiPhK4y31dWPtqntcHGwLZlylTH27yZcpfD\/r2FX7jivvsvb5HW7fe9YlzeDnm6NefrF500hCogvK3BIEl0x3b1K8bVzk80yTnvLVtx7khGNuS\/rb7ktSHVceS4M4VwBjnVRDzZ9bjWdXzxnWtFPmty5he2bnsS3KueM4n5b+TJHXns28Hf2xpvKlmFgyBFKlW6KjYbvC9YZBxU\/+bcyU3765GlNFwgG+jytlolDQ0fKaV5LNud9mMz5Cs12y0SBrZFr9tWA3sYoNH0riTGGm8+jUSBWe59HpRGQvETtoQVD+eqpz7479+936666HI9zxykIcOMu6681+\/6\/iZx90KA9yfTfZzVu9BUdFxKnf++X\/vPPe89VtUcrqn942zDvzqyrus\/HjY60Zs2\/1ZNo8y8\/w+7nzgnhdtda56rfud7z7H2UH6m2Cu3xU+edfn\/p1Qv2aUj4dZN2MdAnl+A9116Ff3fsvbSW4oddKGvE9jSXLTbtzU2oOSIudNp3ydZehlk\/d+MG5AXT2EKthHwX2D7uXaZ7\/yyLYrvcH23oh7b+p9bsIl5XV\/Nji3odTocJdVtj8m+zbLDZKsUj4n\/6CgSF+n7Dwyy2y9JU66D7KGr2RZk+wc8zvf3fuqWk73cvqxvw94D9KAFcDJrz0Pz34Y+7t2Zgy\/2Re2tuHYL88yBqXzxqTvg\/scFhzr9j+27jpwf5aVxbd+S1BeRi\/3yPXgd8y957Lr88HWrascbr7rcf3eVVp+bxjv3pZxLKVjsVW47bLntIO7vKXryH0e+Z6npfis329d7m06y2z0BFXdZ++6BFcdKP+dpFp3Y3FsabypZhYMgRSpVuhBMW\/UHf+6XbIxIWswShpznkaQyTPdvzHky698rnXrjSRJ4CD4lrvIbxueZd2Nu6Ji49Ca4Oj141c2R8NOb1ytlD965UdWbtk0i1\/53UrsT4n1y+rKHRro3A1LqRLLW41n66O3N4U0qHGFBK5zyHc5e3m3VnicXNvwcpXJxt3wd38ukk\/3qz\/n9vz22XvNyNfnmc+zv6O45m2Kx9neg0afJrmeBEd5\/M4zTxklfM5zaV171ue6zjzfj3DXn\/Lx8CmfjGdZ2TS\/9bnK7l\/3Cr8t0hu+kZtFe0NF3liS37TrN4LSIMDZ6DNuGDVPsFGKvByCz42qZF8Ev\/U4GzYmcx3WIy2yRwA85VG9wfbOJ11nqf2wGgXy4yGvd7+GovMRGetfzaVlNzjWV1yHpNHod764y+fgs98j\/NYpuNbrsw\/OOjRJtys\/x\/zOd2c9V1BOVyNOlO\/zbTNxw559I+eFY1+Mddsf0xh57MpVZn25HG74Yhift9WF\/Zzz2x9ng6\/UNn3OYZ2xnHG+m4+gSI67+5i4P8vOYdk2jfmcjwx5eoJIy1n6evCtI\/exdF3fvssp123xO2\/YIMjqRedYf+Xll5639nVCfm0ZJHUgK6N0W2Z5HI8p2ffduW7Bf9+89eA+rwyl6t\/\/t1C+Lp\/pejmA9yxM4zeO86\/U\/srqR3AeM\/9z2l1X7s8++yabZnGuQ35sS+0TjRXVzIIhkCLVCj14ZiOw2J3fr6Gkc97Y+zVQfBsQ7gau73wl+C3jaJz4N6QFT4PHzW8bnmW9DZ1iI9X+GIS7oejXcHLPV9wneY8tCVm5KzieMmX3p8T6HXXlOD7WLIYS6xhRKnTY6Ahh3MfX9zyVno+uBq577BuLOzhVPE5l99X\/3HWfHyXPI\/d0RxklzPrzqyt3nZY+Hvb5ZHUsv7ZUlF2\/i2N+v7ovdW4W+ZTbfUx0nvW5rjO\/crjLW+Lcdc\/nVz4Zz7KyaX7rc+xbqbov\/9vie3OnTx\/\/EEhnb2jZb7Rl\/MormDfVnhtL6TKym1I750238zEc+02vfyPWfXOsk5bFO5\/0Jl5yTARHA8Ocxx5WOZjBjOdG3VrOdmPu3p607Ab\/9QnedZYrn4Or0ebhLqeDq0Hrsw\/SRppsvT7nmF+j01EvsvVZXOU0zwmjsSf+3IfjRZn3jGz\/GJ9tytjLp\/fU2iMee4vp2zTCIWdvBL0+3ON9WdTG+JCewzq168d9TNyfPedcyW36ky5jnafec7d4\/PyOud+xLF7fY1G37t8ve6glqxed6zqqtPze4MG1Tv3c9LtOnXXgv+0S2\/LlXLfgPlccXPUgPf7llPodkazLrzzGuVBBGGKdlz7030\/jupZdU966cn\/22beSv8Gqx5bGm2pmwRBIkWqFjgl7o8Qa1FnWmHDe2Ps1UHwbEIK+LePxgcofpSmxblfDS9oQNnkaPG5+2\/A0ytQad+6Gol\/Z3PONMBtbG8uMmyMrt2yapUxDTWV\/SqzfWc\/y0EDnsx0nyfKuY17kPr6+56lZr1avFNf6\/Jfzo3CcStRXker5UXI+z3RJ\/Un47bO7Tv3W551vDK55G9n65ftrcMzvV\/c+55GDz7LuY6LzrE\/td0Jw75\/y8fApn4xnWdk0v\/W59s2\/7sv8tgiyGz7B1eAR5De48pt2\/xtBo4Hh7klhMNbl9y\/cgv96\/crnv4++89vIb96dN73+61G8wZbMJ12n5JgIzjLKj4ebs6HobvSZ3NuTlt3gf1yKjdVi41atfA4ltmsotU7XvvmsS3qcNSDEAAAAIABJREFU3fvvd1xK7L+znisop\/2zGGT2vuJjW2IdIhAyBraWX0cSViPOWG6t+UiZXj4RCOkD2Y6EW377Uwm\/unIfL7\/53MfE\/dlZt7ZlJOsqxbuM+1iYXOeDfx0Zy48cG2N\/x6uRbNSDrTelT1Dpbsj7l0Neful5a9+Wz7VlUK2DEtvy5Vy34L9+bz14j78Cn331W5f73NWZ5ZjfomGT+1zzpVY\/fuXw1pX7s8++yaZZVI8tjTfVzIIhkCLVCh0TtkaarHeLxdV48Wug+DYgdMXGo\/H2GHcjsiy\/dbsaJ55GjaXUv16bzHV5x7NwL6vSuDPmuafSx8GsqUXFeitRX9K6UT+eHtLv3fvjt\/5iIFLsGeOuuxH6fpcbrFu2\/65jbnBvt3gueMdV8Szv\/izd\/3Ik5XTwq68R8vPAXe9lziPPdP\/6t\/O7pr3Xk3w\/vfMJxXlHec3byNYvm2Zw7bP7+JqM5e0DvktIry2fY+XZjvuYuz8X+Zy7KsfDp3wynmVl0\/zW59o3z3JF+rXjGozeze\/mztXgEeQ3lvKbUqNhIhkXQLJeB7\/y6OTb0pVazuc7o4ySfzG38b95Hxmbx3c9rvl00rJ4b8Slde1Td84y+jRgXZxlli9jzGMbRNXcvndMIPnyI+zHrdy8Mt76cSqxTnedSevfXYcmxWUFv4aPSj3r3NuyrfOGmUO4o62478Y67lhSjcWrkkbvIPf5LmUegzOqsW5VbmQgYLMRf8MZWXxe7x1klsvVUB4NvU5lvRxkjXB33ZvltQ\/q7Z5Pdt1Jr5syvMvIj5P7ejA+q\/zGuc7fMahbN8c++KzfOB4jPY0qLb9sTCDnMSlxnbrKVDy33deL87fCmliGZLs+dSC4zyPv8Vfg81vgty73Nh1lfsOA59r3Jz833WTXhk6vF\/vfSZK6k+6bZL4i5WNL4001s2AIpEi1QishbtiX47+dN+XmTb0j8JDdwEvm82ug+DYgTEbDaYHrbU2C0QgqOV6I37pdjRNZg0owAocyj+yY63KMlWQta5\/masxJ6shYpvIxgXD7NfjDP904so9KgYRP41LxeHpI5pHtj9EQdDaii9Mcj0fJymFOK\/92MFmIYeyv501gfm9YspXZWtY+TfEcEvMZb\/ISveFGcZxk9WBbp+x7Wb2XPI8k02XrFexvM\/O7po06tDf2ZcdDNp\/BOLdl17z3GJYiX7\/8OBl1Zp8mmc+61p3jDHno83l\/d4z9sp9XsvPIe10Wz8ly14z68fBuw493Wck0n\/312zfHdVScpvR2MPcNn6wh4HdjKb8pNebVXI93GTeSzoad7a1Rnm2Y8xcbH\/rNpuRfuIvL+d14+u2jpDw6z5t27A0lcxnJG1ac65HNNzLdeTPtnSZtTEiOieBpYHhu9A32unYfS30d9ga7uS3HW+Osac5HVoxl7Y3LHbjnDXNG6trdICtbPvOckry1zR2oKb0dzD7N51zw1KHgqu9S55jfd+56Vi6nYJbV\/VY7Y1uVv31H7OPn9znfgGZsuw\/rXG98s65ryWDZVp2XYZwXrkf8ZPsvObbWshWGQLJp5ciWMbZf+nowliv\/G+e9vg+ybj3zudcvKYNZx\/bHzSotv\/gt8z525nrVueRYFuvOHh7ry0quF7+\/T0pz77\/BOIbO3yqjzM7gS5\/P\/VtbVoltStblPnfdn2XnoC9ZHevrtP9dWvo4jiwr2w\/ZNJ\/tVnRsabypZhYMgRSpVmglRhoZTtLGj61xVOSez6+B4tuAKCqu293wK7ec4DePp3FisBrPRY7Gig9rG\/+Gf7zDaMwYXGGArOFlhRoGUWfnP+BsKPo10u0NSniOVbmQxGA\/xu6QodzxlFLYH8F9boltr8CnPY1N9\/r0sWjOuq98cCLYly2eO679km3XOk8\/swHL3Nv2nH8K55C7kT6K4+Qut3s593pl9V7yPJJM13m26zxP\/K5pozwljqVZl9L5hOJ23XU+JiGQwXOcpNf6SEChE\/N8F1guOe4Oevm9vzv2a9bajuc8kvxOSI5xyXNX4XjY11cqfPFf1jbNZ3+9+ya46lS\/Ps7B7yX77GA2NN2N4uLNnTNwGLmJdIzzYjUwXGPOiBvBc3I41j6wqquha9yoWx+lA34WG8d+N9jFhoPvozF++6grNsisCZ5xiZxlFOWrwp2em2R73Qh+89kaX9bNuDEei30+6b5Kj4m3QaEz57WPHWG\/efc2Olz1IOrgo8CF9u1Z9ViPtV9z7+tI48W+fwZnQ0xXsnxmWRyvN5Yt416v+xi4Azj\/c6FUHRr7X\/oc82v4eOtZUCinrkw9uEOjcszr1NFot85vd10anOe+4AouSiiewxva+hzng2xf3eeMKOMlT4+m4ezzG1WSbJny14N1zMv8xhXX7\/4dGHXdeq4DSZ265xFl0h\/5k\/TYUCw\/\/nUmjr\/P\/lspP2c823aFR4Lf9aKT\/H1Smrx+Bfd5Javj4nlafjtO9nUX699vXfZz90X9uLvrzjwHXX\/3+JLUsecccJzXgth3999J8rqT7ZtOst2Kji2NK9XMgiGQItUKnZL8GhiiUflfx3oaPBPOr3xENDq8ppT4hT6kbsxvBPWbT2\/jXac3GuQ9hGgMlToGr3Y8x+hVRv03uhgCORv7RDS5qGYWDIEUqVboVCT913PzX9V\/f1aJf42fKGywEo0pv2ue7OSP2FFl1BsYaty9AEaY\/2Jf0eMDNCqv2RCI5xi9+qj\/RjMEIpoKVDMLhkCKVCt0ypE+TjDJMAQiGjtT4ZqfYI9efSG2fEryaFm58cqoLPUGBk0Zr9kQiOjVR\/03miEQ0VSgmlkwBFKkWqFThtkQLDsA62TAEIjo4E2la36C2cfvsUjHMKJKqTcwaMpgCET0qqH+G80QiGgqUM0sGAIpUq1QIiKiqeS87+7GQxuGp1KRiYiI6FVi+PtHvUr25NBTzSwYAilSrVAiIiIiIiIioomkmlkwBFKkWqFERERERERERBNJNbNgCKRItUKJiIiIiIiIiCaSambBEEiRaoUSEREREREREU0k1cyCIZAi1QolIiIiIiIiIppIqpkFQyBFqhVKRERERERERDSRVDMLhkCKVCuUiIiIiIiIiGgiqWYWDIEUqVboxBjALdftw+dnNmL4Y82Vb\/LvO1D1k7T+x\/f861FYcaI5nSr26NULsBy3YftNb7WmjZa+rhc\/i8fuW47Z1tQKPHINDr98pf7H8360Ebecak4v46C3S0RERERERIeUambBEEiRaoVODIUQyAx65p8xE8+eV2tNNqZnccMX5+LKNmuqjVj3AeCjft8XdWL5x3vwm5ZqbLi+DYdb0xXs2YMlXxvCpuLnhe79MPevw5oAlN1OcZkY7v7+HJxhTS8yy2t9DjrqYNUPXsIF640\/G\/zW4zRpQiA9ANqKLzx8Fz5S4WnKEIiIiIiIiGhqU80sGAIpUq3QiVEuBBoJUdwhkB527PMJVKxwxhmQyGy\/ZyuOXaUphDMu5jYWWz2QzHDGHgTt2YPlT9dihVVuhcDJ6t0kCW\/MbcIdiFk6sfwHwAqrLssFSiMmSwh0MEHOwSxLREREREREh55qZsEQSJFqhU6MMiGQ7XEvtRCodC8ZL9v8pYIZCX37cJW7bO+kcvPYew65gxujrOt8AyAfnrBKjiEQERERERERHWqqmQVDIEWqFToxSoVAxndrz2kEfuINP6QhkB54JHGpCFhg+7MnbDHovYD21ONu9HjXVZIRyMATrCgENfYyusslAqL7wrh7SRIXrIo4QyA9PELZHj1efmV1YghEREREREREh5pqZsEQSJFqhY6KreeOwdkTx3r0yjT\/jEZc+myPNATS5302gQ3XR3G9PVixHvWykfXiKRW2CLbv598jCZR07p5FZo+k9h6f3jylQi2Tb5gzEtZct1vUkzMEkvY8UlGuHkxWCPSprTjtHf+JLeb0eZ97CKs\/Msv8ZNh5+4VY9q2N1mf3PO7HsvT57z0Hj903FzfN+yjuseY8Gyu23IhTxB9fWeHYrm6BWIexzAuecuzC7eecjq8fMzKYtXu7RERERERENLWoZhYMgRSpVmiligGP\/S1d2+\/ZgXveMEcPH4wBi+2PONkefXIPqOwILuS9a6Q9gexKhh\/Gtu9YYqxTuq5i2CQb40cPgWRBTpmwxlyn7NEs+3JGXdpDoJHy3oUDjiCt9FvR5HUnowcovy8GL2aIYr6ly\/6GLmM+b3gDW0jjDmOMEAiYt3EuvlBcrhjibLStS7Is8BdcyRCIiIiIiIjoNUE1s2AIpEi1QitSItzQ+QYyZk8bRwjkDGj8ggxpcGPnu017LyNjWe+6yvTo8e3NI1mXo3eUe5wfk2t93hBopEeSfWwkWfBmhVf6h3JjIo3whDs6V28bM\/A5zvXadqNn0FxrWXeQY3wPyRu\/vAGPe1nZPAb2BCIiIiIiInq1Uc0sGAIpUq3QSnhDCyd36DLCG7Z4QpSxDoH0wMX5KJdnXeVCrXIhkF9PICvMsYVBkm1569NczvPYm1l\/cE8vMr\/vKB8G6eGLeBzMfLSqyB7KwHqsy\/W4leu17u4gZ+RxMNdySkEOQyAiIiIiIqLXCtXMgiGQItUKrYQnRHHx\/94VAkkCmrENgRTXJS2Hje\/33lDLy14GSOf3C4Hc5Ra887qplEktBNoi\/iweGZNawBCIiIiIiIiIDopqZsEQSJFqhVbCv6ePwf97e0ARM3utWF9KjPRo8QQ3bpIQyAhMRsbTkdEft3rDgGdZB0nvHYN\/WDPCts9vGHYNpC2hPypn1o0kyPGv2xFl60oxBPLtCeTi7s1TrifQb84t9TiYdx6DSi8iIiIiIiIimkpUMwuGQIpUK7Qivj1jTH7fm2GKY\/BlD3mwUjbYkIRAfrzrkm9zhE\/vGr\/9dCi3bnnvHtk033I4qMyjFgLNdj325ccdxviOCSQZY8i9rCzs0RXfJnY+QyAiIiIiIqJXC9XMgiGQItUKrZQepKx3vxK++HYwM4joUHw7mIM8NPEGNy4HFQIVA520YyBmsU797WDis\/n9yKDM3nKu+sFWbDrPvn1zn33H8DGoBj7GfLDqXHy+vn2uo3eScVx8BqS2UQqBioGM641eIpC58o+n4xaf3jxGCLTR+eYxc6yfexzTvMsKxeVH3lJWLAcA3xDInAfOdREREREREdHkpZpZMARSpFqho2GEErbHrRwDGdtCH50IjKYDt5XrpeINVwRpcGN3sCGQUOypZE1wDbBsBkFFjsBIcH2vKxl4GeQhkOCuQ1e44ymv+xj4UwuBbNMcYwOVfs279TjYZzZg2eUrzbmcAU6Re9ki5zbF+EP\/DXyy1ONgDIGIiIiIiIimGtXMgiGQItUKJRor\/mMCEREREREREY1QzSwYAilSrVCiscIQiIiIiIiIiFSoZhYMgRSpVijRWGEIRERERERERCpUMwuGQIpUK5RorDAEIiIiIiIiIhWqmQVDIEWqFarq6\/d34ev3d1ufafKaVhPCzv88cvIWkIiIiIiIiF7TVDMLhkCKVCuUiIiIiIiIiGgiqWYWDIEUqVYoEREREREREdFEUs0sGAIpUq1QIiIiIiIiIqKJpJpZMARSpFqhREREREREREQTSTWzYAikSLVCiYiIiIiIiIgmkmpmwRBIkWqFEv3\/9u4EOq6q8OP4b7ZM9jRLk7RJF9qytEXZ96WyigiKFWRTFLCACCJYBEFQQUXZBAXZBPxXRVAoIItCWQQUK0sLAm2BtnRJmn1Pk0xm+583y2syW94kbZJpv59zSjt33ntz782bnPN+3AUAAAAAgNFkNbMgBLLIaocCAAAAAACMJquZBSGQRVY7FAAAAAAAYDRZzSwIgSyy2qEAAAAAAACjyWpmQQhkkdUOBQAAAAAAGE1WMwtCIIusdigAAAAAAMBosppZEAJZZLVDAQAAAAAARpPVzIIQyCKrHQoAAAAAADCarGYWhEAWWe1QAAAAAACA0WQ1syAEsshqhwIAAAAAAIwmq5kFIZBFVjsUAAAAAABgNFnNLAiBLLLaoQAAAAAAAKPJamZBCGSR1Q7dlro296q7t0+9vf3yeL3y+QMKBoOy2WxyOuxyu1zKyclSfk62CvJyzPNGi1m\/vn55+n3y+f2h+m0L4TY75M5yKid7x2hzMuOlLwAAAAAAY8NqZkEIZJHVDt3avD6\/mts71daxWS6XQ7nZbmVnZcnlcoaCHyMAMIIWIxDyen3q6+9XT59HXq9fxUV5KptQKJfTYV5vaxtYPyOQyc\/NUW52ltxZrtDnGvXbFow2G5\/t6feqp69f3T29oeBpe25zMmPZFwAAAACAsWc1syAEsshqh25NDS3tamjpUHFhvgrzc5XlcprvDaXf61Nnd4\/aOrtVUVqkitIJ5ntbS7R+E4sLVVKUHwp+xpIRCLV2dKuprXOHaXMyo9EXAAAAAIDxwWpmQQhkkdUO3Rp6Pf2qqW8JjaQpGeFIHmO0TGt7Z+jv6spS5bizzPeGK1S\/hpZQ6FNZOiGtcGo0GAFYfUt7KAiprtgx2pzMtugLAAAAAMD4YjWzIASyyGqHjpQxemd9XbMmlhSpKD\/XLB+pju4eNbV2aNqkstCoouGK1q+qvCQ0+mc8M0YF1Ta27lBtTmZr9QUAAAAAYPyxmlkQAllktUNHIhqwTJ5Yotwct1m+tfT0erSpafhBQLR+0ydPHJOFp4fDWKx63aamHarNyYy0LwAAAAAA45PVzIIQyCKrHTpcxhSr1Rvqt1kAFBUNgmZNrUxralC0fpkUAEVFw48dqc3JDLcvAAAAAADjl9XMghDIIqsdOlwfr69TQX5uyilggUBA776\/UuvWb9SGjbVat6EmVD59WrWmVldpxvSp+vTus4fckcuYGtbV3aOdp00yy4by8YY6lRYVjPspYMkY06FaOrq089Qdp83JDKcvAAAAAADjl9XMghDIIqsdOhzGLlu9ff2qKCs2y2I1Nbfongf+qE\/WbzTLEpk1Y7rOO\/tMlZYkv5ahoblNOdlZlnYNM+rn8fo0tbLMLMtEG+qb5XY5d6g2J5NOXwAAAAAAxjermQUhkEVWOzRdxq5dK9fWaHpVRdJdwP752n\/0yGN\/U7\/Xq113nqkD9t1TkyorNLmyIvT+pvoG1dU3aOmby\/TR6k\/kzsrS6aecpMMO3j9yhXjG566rbdDsGdVJP9cQrd9uO1WNu13A0mXslLXqk9odqs3JWO0LAAAAAMD4ZzWzIASyyGqHpquuuU0+X0BlxYVm2UAvv\/q6\/vjIYmVlufSVL52ozxx2UNLpXsFgMHT8Xx5\/Sl6vT2ed\/mXNO\/Qg8\/1YzW2dcjrtmpRiBJJRPwWlSROTH2NV\/+qHFVxzt1RYLvdBfzHLR1NdU5tk0zZrs7dtrbrevl4TspZJ7ikKZs2WLX9S+E9OpVSwj+RI\/LMebVb6AgAAAAAw\/lnNLAiBLLLaoelasWajqirKEo6yaWxu0Y9+enPoQf3HP7hMFeUTzfdSqWto1HW\/+FXo39f\/8HKVlZZE3hnMGA1S29CsOTOnmGWxVqyp0cwpFXJnucyyYQl4Ffz7nrJNrpamTlHfhhJl73Wj+fZo8fR7tWZjg+bMrE76kSNpc83TF6rC+apc5flS2U7qf3+dHNkB2QudsuXmS1n5UsExUsUF5jljxUpfAAAAAADGP6uZBSGQRVY7NB3GTk31ze2qTrDWjjGq5\/obb9f6DTX6+hmn6PBDDjDfs8KYQvaHhx8LrRF05WXfTjp6qKa+WZVlExJu+W7Ur7G1QzOnVJplw9W25Jsqti2TisukCUXqa5ig7IPvM98flvqHdeqRN2j5bt\/TS4vPktUoY83GepWXFG2TNjc\/+TVl930gZ3ZAjmybvF0uuYsdckywS9kFUk6hlJUnlVwk5e5jnpdarR6Yf7x+scosCDnxznd1yxHmS3UuW6TvLbxFhdcMLk8lVV8AAAAAADKD1cyCEMgiqx2aDmOr9mBQKikqMMuiPl7ziX5x653affauuvSiBWZ5Om7+9d1a+eFqXb3wYs3YKXHdWzu6ZORDxtb0sYxpUXabXRWlRWbZcLU+frRKirukwvBCxIHqH8pefljk3eHw6JUrj9KCv3VJaYZADS0dCgQDCadBjaTNfetfkf+t78ieZWQ9QalqlnyNmxTscshZ5JctryAcBGXlSrYqaeovzXNTW6VfHXOq7qo4S3d8bU+ztHqPozSnUvIsu08LrrpPSzd4QuWx4VAqqfoCAAAAAJAZrGYWhEAWWe3QdBijMCYU5Cs3x22WRT334iv6y+Kn9N0Lv6lPzd0tVGYs+lxTu0kH7b+PcnKyI0eG9fb26T9vvK3qqsnaZdZOobJ331uhX9\/9gE47+Ys65ojEgUtPr0ftXd0JR76srWnQxOLCEY8S6V5+i\/LrH5Tyc6ScIvk398kx71\/m+8Oy7AYd8vUXpNxmNVWlFwIZo32a2jo1ozq8sPZAI2lz36rFcr57g+xZDsnplOz96gtulkslchR4ZS9wS+48yZUt2fKlnReZ56b2mr435yI9dcod+ugn8T\/Hmv9boItWHqYrP7VSZ\/3s2bRCoFR9AQAAAADIDFYzC0Igi6x2aDqMXbeM9YAS7c501+8W6a3l\/9NNP\/2hSorDo2cuu+o6dXR06qzTT9a8Qw+MHBn2yr+WatGfH1VRUaFu\/fm1obLmllZdce3Ptd\/ee+iCc78WOXIwY\/cvY10gY5eoWCvX1obWxkm0XpFVfbWvyPf2Fcov7paUK09PllyOPtlKCmWbMEkq\/ZpUdJx5vCX+d\/WTI87S8q\/eqs\/+4zL9SumFQMZaSMZaOLNnVJllUSNpszESKPDu1XJmdysrzyUVlcrn8ci3wSdXgV+O3KCUkyO5XJK9QJrzqHluauEQaM3CZ\/XEOfF1Nr38A+3y7fRCoFR9AQAAAADIDFYzC0Igi6x2aDre+3hDaAROovV6Fl59vXp6+\/TbW39mlt19\/x+08sOPdfEF54TW+hlo9dp1+s3dD2j2rjubgY+xrtCFl16l\/Py8UJiUiHGMMSLpUztPNcuijPrtPmtKwvpZ0fjPK5Tb86LyCvpk89nl78tSR6tTxZM9sk2slErLJFueVHm3ec7QuvTKlSdpwTtf0hPPfElLTzlev0gzBDLa\/P7qjVu9zS1LfqDcjufkyLbLleuQ8ouk7Fz1fLRJ2QVZcuT5JLskV5aUO0Oa+3vz3JQ2LNJJx92iFZGX7uI9dPJPbtWPjo5ZS2oYIVCqvgAAAAAAZAarmQUhkEVWOzQdxjV3njbZfD3QZT\/4iXr7jBDo58MKJAzREMiYOnbrDT8yy2N9vH5TwraNpM0Nr\/1Uue1PKK\/AI7vNpkBflrprXWrt6tLESo\/cRQ7JnS17wW6y7\/uwed5QOp+5TPteWasrn3xE58yILJicZghkSNa2ZOVWbF7xtHpeulUBn002e1B2Z1A5lR6pL6jsEocceX7JHgwfPP3bUlXi0VlxetZq6WufqNNYCan2Nf31j49raX2BTrzzRd1yxICphMMIgQwjaTMAAAAAYOxZfa4jBLLIaoemI9VIoNt++zu998Eq\/ezaK1RZsWVreJ\/fr83dm0PTvgYyponl5efJ6dgytWxTXYOu+elN+vTc2brkwnPN8oG21UiguidPVkn2R3IbU6C8Tnmac9VW368JUz1yl7hlKymTSkql3DzJ8RWp4Cjz3KTWLtJJX7xFuvRxPXHOjC27ZqUZAqUa\/TKSNgf62tX0l\/nKdzUo2+2WbfJEBRw++dcH5Mzzh9YFMvQFPqXsw++NnDUMXY9rwQE\/1itH36D3fn28zBhoGCFQqr4AAAAAAGQGq5kFIZBFVjs0HSvW1qg6yZpAj\/3tWT373Es67+wzdcC+e5nl9z74J\/3v\/ZW6cMHXNWe3nUNlK1Z9pN\/et0h7fnquvvn10yNHSkvfXKb7fv+QTvzcMTrphM+a5QMZawLVNDRrzlZeE6jpsXmaUNQeWv4m6HVp80a3amvbVbFTqfLzekLhjy3XLZvLIdu082WrPMk8N5lXrtxDC\/5mvoxjNfxItQ7OSNpsaH7kNBUE6+Qyzs9xyaN2Ofpz5ciT7Fk+9QT2Vt6h10uu+B3hrEsSfg0jBErVFwAAAACAzGA1syAEsshqh6Zj9YY6FRcWJNwd7M1l74bWANp55k664tILzZEpzz7\/kh578tnQv0tLihUIBNTW3hF6fer8E3XsUfNC\/zZGeNxwyx1a88l6fXvB17X3np8Klccydgdr6+zSrKmTzLKokeyU1fLXz6gwv0tOh02Bfpc8TVlqbuySN6tPkyY7Zc82\/mTJPmEXOQ+wtktW0\/svanmt+dIo0XM336CndLx+tPBo7RXZMn0oqXbEGkmbDT1r31R\/3Uq57F3q\/ehPsvl9Kpo8QfZsyVtwpNz7XGkeO2z1D+vUI2\/Q8i\/coY9+MWC3sGGEQKn6AgAAAACQGaxmFoRAFlnt0HTU1LfIZreppCh+VEh\/v1c\/vuEWNTQ268yvfElHzjskVG6EO8vffV8vvfpvrd9YKwUVCoqOnHewdp8T3kresOTl1\/Two0+qonyifnzVZcoyhuQk0NrRpWAgqOrKUrMsqq65TXabXRWlRWaZVfUPf1ETspvlcErBfof8XW71dParJ7tb1dN9Ukm5bBNKw4skl14u5SUOqVJLMiJmCA0tHQoEA5pUVmyWRY2kzbFqH\/y8ysv65ZjgUiCYI+fhj5nvpeXlG\/S556p04RFVcre9o\/t\/u0jL23aLrItkHjWsEChVXwAAAAAAMoPVzIIQyCKrHZqO9s5uNbV1qboyZpeniI21m\/TTG2+X3W7Xj3\/wPVWUJz4uVl1Do6674VcKBIP60ZWXavKk5KM8auqbNbG4QBMK882yKGOUSGNrR2jdonRtevQ85fauU5bbKwXsCmzOkrdXamrv1cRqv3JyvbJlZ8lRMVfOA+4yz0vP8EIgYw2k8pKihKN9RtLmgbpf\/bF61\/9XJZOiE1N3AAAgAElEQVQlR5FLgfzjZd\/tAvP9tKy6T6eee5+Wt3mMvcFUuMdRuvTKq3TmHjHh4TBCoFR9AQAAAADIDFYzC0Igi6x2aDr8fr9WrdsUWhco2Ro00RE97qwsnTL\/BH3m0IOSLlpsjBJ6+dXX9egTz8jT3z9oBFEixnowxnpAu02fLMeABaUHWrGmJrRGjjsr8UiiZPybm1X\/yCXK8nXKafcr6HUq0B9QfWOPKqZLE3culCbYpYknSlVnm+dta55+b2gNnDkzk0dGw23zQC2Lz1FOsEY5lVmS0ybbAU+Z740XVvoCAAAAADD+Wc0sCIEsstqh6dpY1yzZbCorHrzb10Cvvv5f\/fmvT4SmiO2680zNO+RA7bbrLBUVhkeCdHR2aeWHH+uVfy3VR6vXyu1267STv6DDDz4gcoXEmts6jeRIUyYlH2FkTI8yppxNmji86UKbHrpIgY52BTb7ZQ8E5OvvUtA9SVNnNMiWZ1dgzrVyTt3XPH5bq2tqk2xKOf1ppG02BJpXq\/1vV8pVEFB2+SS55t1pvjdeWOkLAAAAAMD4ZzWzIASyyGqHpqunp0+raxo0vaoi4S5hUa2t7br\/Dw9r1UerzTJjepjP51dLa5tZNnvXnXXOV09VSckEsywRY1ewdbUNmlVdodzcbLM8lnHcyrU12m2nqqSjlTKFMfJp1Se1mj2jOmVfb09tTsZqXwAAAAAAxj+rmQUhkEVWOzRdxu5emxpb5fUHVGlhREZ9Q1NotI\/x58PVa2STTbvMmqFddp6hXWfNCC0EbUV9c5tcDrsml5eE1hxKpaGlXR6vT1OTrF2UKTbUN8vtcqqiNHVAZthe2pxMOn0BAAAAABjfrGYWhEAWWe3Q4TCmea3b1KTCgjwV5eea5dtKR3ePOrs2a\/rkicqyuO7NxxvqVFpUoJKi+AWkM0FrR7daOrq089RJlqub6W1OZjh9AQAAAAAYv6xmFoRAFlnt0OEwFnTu7OrWhoY2TZ5Yotwct\/ne1tbT69GmplZNrShWYUF+0kWmY\/V6+rV6Q30oOMq0naSMHb+MkG3W1ErluLPMNg0lk9uczHD7AgAAAAAwflnNLAiBLLLaocNl7BTW1tGtupaObRYERQOgSaVFKi7KT7ojWDKd3T1aX9ecUUFQNPSYNqlMhcMYZZWJbU5mpH0BAAAAABifrGYWhEAWWe3QkfD5fGrv3BwKgiaWFG3VqWHGFLCm1o5QADShME9O5\/AWeY6GIlXlJeN+apgx7am2sXXEoUcmtTmZrdUXAAAAAIDxx2pmQQhkkdUOHSkjCOre3KvGti65XE6VTigc0e5Nxk5XLe2d8np9Ki8uUH5ezrADoChjmlRNQ4vcWS5Vlk4Yd7uGGTtf1RuLWfd7VV1RulWmPY33NiezLfoCAAAAADC+WM0sCIEsstqhW4Ox7bvX61VLR7daOzeruDA\/NHojnS3ajYd\/YwRLW2e3SgrzVFqUL5fLJecIAqVYxg5aDcaopeLC0KggIxQaS0bQYYx4aWrrVEVp0TbZ+Wq8tTmZ0egLAAAAAMD4YDWzIASyyGqHbi2BQFA+nzf0MN\/e1avOnl5lOZ2htYKys7JCo4ScDntoYWdjYWmfPxAa7dPX3x9a+6ff51Nhbo4mFOSEwhmn0yW73doi0OkwRho1t3eqrWOz3FlO5efmKDc7K\/SZxggmqwtPp8tos\/HZRv\/09PWru6dXnn6fiovyVDbC0VNDGas2JzOWfQEAAAAAGHtWMwtCIIusdujWZiwYbYwMCgQCobDD+OPxetXv88vvD4QCACNocTjsynI65Ha5QiGM8cdut4dG\/qS7APRwGQsPd\/f2qdeoY79PPr8\/VL9twWiz0+EIBU852VnKz8kek13LRrPNyYyXvgAAAAAAjA2rmQUhkEVWO3RbMUIgI\/Qx\/jb+JGMEP8YfIxQy\/gYAAAAAANs3q5kFIZBFVjt0tBgjbAaOsjFGg2yrqVcAAAAAAGD8sppZEAJZZLVDAQAAAAAARpPVzIIQyCKrHQoAAAAAADCarGYWhEAWWe1QAAAAAACA0WQ1syAEsshqhwIAAAAAAIwmq5kFIZBFVjsUAAAAAABgNFnNLAiBLLLaoQAAAAAAAKPJamZBCGSR1Q4FAAAAAAAYTVYzC0Igi6x2KAAAAAAAwGiymlkQAllktUMBAAAAAABGk9XMghDIIqsdCgAAAAAAMJqsZhaEQBZZ7VAAAAAAAIDRZDWzIASyyGqHAgAAAAAAjCarmQUhkEUfrNmoXadPltPhMMsAAAAAAADGks\/v14frNmnuzClDVoMQyKJPahtVUpSvovxcswwAAAAAAGAsdXT3qLWjWztVlQ9ZDUIgi4wONTrWSqcCAAAAAACMBmPQijFgxRi4MhRCoDSs3lCv4qJ8lVroWAAAAAAAgG2ppaNbbR3dmjW10ixLhRAoDb2efq2taVBlWTFBEAAAAAAAGDNGAFTf3KYZ1RXKcWdZqgchUJqMIKi2oVUOhz001Covx81i0QAAAAAAYJszFoHe3OsJLVnj9wdUVVFiOQAyEAINU3SNoJ4+T6jjAQAAAAAAtiVjQEputtvyGkCxCIEy0LraxlCtp7NINQAAAAAAsIgQKAMRAgEAAAAAgHQRAmUgQiAAAAAAAJAuQqAMRAgEAAAAAADSRQiUgQiBAAAAAABAugiBMhAhEAAAAAAASBchUAYiBAIAAAAAAOkiBMpAhEAAAAAAACBdhEAZiBAIAAAAAACkixAoAxECAQAAAACAdBECZSBCIAAAAAAAkC5CoAxECAQAAAAAANJFCJSBCIEAAAAAAEC6CIEyECEQAAAAAABIFyFQBiIEAgAAAAAA6SIEykCEQAAAAAAAIF2EQBmIEAgAAAAAAKSLECgDEQIBAAAAAIB0EQJlIEIgAAAAAACQLkKgDEQIBAAAAAAA0kUIlIEIgQAAAAAAQLoIgTIQIRAAAAAAAEgXIVAGIgQCAAAAAADpIgTKQIRAAAAAAAAgXYRAGYgQCAAAAAAApIsQKAMRAgEAAAAAgHQRAmUgQiAAAAAAAJAuQqAMRAgEAAAAAADSRQiUgQiBAAAAAABAugiBMhAhEAAAAAAASBchEAAAAAAAwA6AEAgAAAAAAGAHQAg0zjXXerV2ea9qPvSoaaNXnc0+eXoCoVq7c+0qLHNq4lSXqnd1a8aeOSqrco3zFgEAAAAAgLFACDROvftSt5a\/0KWNKz1p1XDKbLf2OrpAexyZb5YBAAAAAAAQAo0zq5b26JWH29W4vn9ENSuflqV5p03QbgfmmmUAAAAAAGDHRQg0jjxzV4uWPd+1VWu097EF+vy3Ss3XAAAAAABgx0QINA50tfr12M2NaU\/9ssqYIvblheUqKHGYZduK1+uV3+8P\/dvhcMjlYo0iAAAAAADGA0KgMWYEQA9d1zDi6V9DMaaHnXFtxTYJgjZv7lF3d7d6e3sVDAbNcoPNZlNOTo7y8\/OVl8fUNAAAAAAAxgoh0Bj7\/VV122wEUCxjRNA3fj7JfD1SfX19am1tk8fjUWFBgdp7+vXBx59o2Tvvq2JKpSqmlOvwXebI7vOqo6dLbrdbJSXFys7ONq8BAAAAAABGByHQGNoWawANZWutEdTZ2aWWlhaVFBepy2\/X44sf17K3l2ndug2y222aUFgid1WxLvzGN7TnlGkKyieP16+u7m6VlpaqsLDAvBYAAAAAANj2CIHGiLEL2F9\/2Wjp0212aZd9czV5Z7cqd8rSpJlZofJNa\/pVv9ajTR\/36+O3ehQzEyupU64oH9GuYdEAqKqiXP5AQE+\/vUJ\/uON2Obrb5Qx6lZWTo5nVu6k+0K+yGVVacMZp2im\/QL5AQD1BqaWtgyAIAAAAAIBRRgg0Ru757iZL6wAVVzg1f+FETZ7lNssSqVnl0eJbm9TR5DPLkjHWBzr\/tsnm63QYU8Dq6upVVVkuh8Ol1RvW694\/PqL8jmbNnVig4rxs2bLdKi2ZquySSbr3H8\/o4KMP1\/xDD5PN5pPPG5AnaFdzW7smTapMPjWsbaVer6\/WwbO3txFDb+vOby7SuuOv0k3zK8zmjq0GPXHVz\/WXSWfpoYv3SbMq4fbovNv17f3NQmwjLy+crbM\/\/L5ee+psTTFLx8KrumTW+frgiiV6YUH1WFQAAAAAwDAQAo2Bd1\/q1t9+0zzkJ+\/z2QIde06JnFk2rf+gT++\/tlnNNV41b\/SG3i+b4lJZtUufOjxPU+dky9sX1HP3t2j5C92RKyT3hYvLtMeR+eZrqzZtqlNBfr4K8vLlCfq1YvXHuvMXP9W5Rx2mUk+X\/P296rM7FXAWqCBnkj4O2FWfbdOZJ50oe7BPdp\/k9wXU3e+Vp79fkycnWqPoHV279+la1Cmdev9K\/XKe+cZ2YEcNgcZjuzMPIVAKb9yjM+5dYb4MKT9WN\/3886oyC7ax2md0+Z3Sd4f1meHvyL\/N16X6yk+u1UlxF4o5bqg2pqqT8d6Pnldt5GXVuAqnAQAAsC0QAo0BK4tB7\/u5An3uvFJ5PUG98H+teusfXVKy6V42ab\/PFerobxTL6bLpmbtbtOy51GsNDWeRaGMXsMbGRu00daoUtKs\/KP1n+TIt\/ccjOmV6ubz+XrXZs1TQa1PQWaS+bKc2Z0\/UiqY2nXnBqcr3SzZ\/v4J+n7z+oDY1d6q8vDzBrmE1WnTaCbr2vdm67tk\/66xp5hvbgfEYhlgcCRR6YHxbhwx6MLU6Emg8tjvzDDcECp2ne7Tu5sPNspEZTyOBIvdvY3xo8uZvLtGv3pUOGfL+jJHwXk+tdvF1uvzZlqFDmYTiv0fhuse2KfZ7FGm7En9myjpFAiCZ14qES3sM8XsAAAAAGY0QaJQ113p110XR\/++aWHGlUxfcXhVa4+e+yzapZVN45M9Qyqpc+uYt4Wled19Sq\/aG1FPDvnVHVegcqxoaGpWTk63CvPxQCOQNBrVqzcf65+N\/1VGT8xXwblanV3J19eiTPrt8rqAmTttdH25s1nmXniun3RYKgeT3yRcIqssTkNcXUEVFufkZ27\/Yh7jxYDRCIGwNhEDxwmHJHF36u\/O1n1m6RTgIUVxAlFI6IVDsCKREgcuQ3tabb+yj\/QYFVfG\/K0JteWufwdePhDnTBwZdFuoU6re6mPLQeQ3p9RUAAAAyCiHQKHvjmU4997vWpJ9qs0nn3jQ5tPjzM79t0bIlqUf0xDKmkB1\/Qak2rvKERhwlHT0k6bPnlmj\/EwrN10NZt269qqsmy2F3yLhwMBhUU2Oj\/nT\/fZqa51HdJ2vU2dKlqsJ8vVHTKXe2NPdTB6mxw6tLfvAd5Uwoki0QDYEkT8Cu5tZ2TZ++XQ31GUL8g93YIwTKFIRAMRIFIHEs3t8DpRECDQxmlCikGbbYeodf\/3vf2N8dscdZqVP8OSFptBsAAACZiRBolBmLN3\/w2uaknzplN7e+ccMkrVneq4euazDLk7JJh58yIfTPV\/\/SHvr7zB9XaMYeOXrgijrVfpR82tncQ\/M0\/3sTzdepeL1e1dTUaqcp0xSwG8lSQEFvvz56\/wP95+nFqp6Sp4YNtfK2eLTz1Ela22KTz9euGTvvrtqOfp1+wVmy5WRLxkiggE8+f1Aev03NbZ2qrq6SyzVwRFKN7jvxGP1s5Wxd\/eJiLTAyIn+Xlj38S938p+f1+keRYKx4T536s9\/ol8eWSW9dr11Pe0iewjO0eNk12jt8hCSPnrxwT13yvHTcb97R3Qeu1KKbb9ei55drdZvRN24V7vll3XjHNTquMnLKS5dr+nlPSyfdow\/Pq9ElF9+mf6zpkgpn6rgrbtfdp86MHJhC7P+JN9f3SBYCRaZimK8Trc8ReXAbsKlc7DHm9I+I2PcN8cecpUPeWhT\/QGiK\/1xD+No1oXob01hOqhl43aGmsWwpG9jm1NN2EtQjboRDutc0RO83syD0sx84dWrjffN12C8HHnCCHlx9k44wX4enR+nelTrp2dk6+4lI8ezI1K3oPRXxxXtX6vYjo6+2nLtwzeDPmRWz8HLiECh8\/pPm6wF1i\/ncsIF1T3HuAKHPjbYpVP97pPMsLgyd9LtgFoRHpegsPTS\/Pq01asL3ckXSUUBRiY+Lv1eqjj9Ph7x1b5J7PXk9ogaGLyPPUGKCmhSBV8JRPRHJ6pTwnNDPSkP2JwAAADIXIdAoG2pXsAO\/WKhjvlESCoCMIGgoxqgfY\/RP00av7v5O+NFpl\/1ydepV5Xr+gVb996nOyJHx0tklLLor2E5TpitgDygonxzBoAJd3froDw9IRX51t\/aqv9GjisoS9eVUa936\/6mwcrIqd99Hsw7eQwE5wiGQsSZQICiPT2rt6E6wS1iCEGj9gzr6qNvVcegxOrLKLfXU6qVnl6rJX6azHn5N1+27UjcfNV93rC\/QWQ+\/oev2jVyq52md\/enL9XLhGXrozWs05YH5Ouy2Lh187AGakiv1rX9FTy5tliaeocX\/ukZ7G4Ocog\/Os2dr7tomuY+dpylNkeMU\/bzI9ROIhiwDw4faxffozQPOTxwCRR6SBz1oRh74as31ORL8n\/vaZ3Tnf\/fVtyPnxE2LiVxjy5ofCY4ZGKwMtRZIwlECWx6kB9Y\/\/nNi2x37OtwPd+r8uAdc0xv36PKak7YcH\/1ss97DuGY0BImGNdGyhdLtoRAoei8ODkfCociA+3NAmGIGPKF79sbQfbRaJ5rXDwdKijv3g9mzpS\/8ekuoErkPBwZBcSFQ9DNij3kiQX1j1wSydG6k\/Yrpn0hbY0OqWOH7YHDok+j7ET4uJtSLfC9ShXgJg4xEYqc5xX2\/Yr5PCe\/1oSULXIYlNvRJUadUn5v0vbjfDwm+PwAAANjuEAKNspu+ukF9mwNJP\/Xk75dr9kG5+vV5NUNu9378+aXa57gCtTf69H9X1auzJXy8sa38RXdXa8Xrm\/XYTU2Ro+Nl59l1+R+nmq9TMUOg6kkK2u0KOByyB4KyBfzqePe\/6vrgDbW0b1BXf0D2FofWeLJV5uyQrXyy9j\/5bJWUF6jP6ZLd1y+b3ye\/P6h+f1AtnT3WQqCmlVrWM0N7T3ObR62++wQdffMauc\/6sz68dk+tvu0YHX1HjSZesFhvLpwdOsbz1He066VLzGOa3ntHfbvsqSnmZdbojuNP0M0fDQiPzNETs7XwucW6KDLw5\/Uf7a8z\/tRlXiuh2Ae3OLEPWuEQJn6Kh2IeXMPnJV2AOcnnhh+4IyMgkj5ExoYpSSQ8P8m5cfWJaXfCa6Vv0APuMK4ZF6rECt0LSjA6JnKP7hoNViLBSMwIoviwyBAJfcwAJfG5hnBgNNP8\/Nj6xr4Oi71+4hDI0rnJ2p8gQIqT4ucRG97Eh4aGBMFnjNjrJDXouzT0dVPVPZWkgUvaEnyvUtRp0PfcLA1LWafI99TqyCsAAABkPkKgUfbT+etCCz4nc8nvqkPhzC9P32CWGVu593UH9OEbPWaZsXOYsYOYEfwYAZARBJls0g8enqaeTr9uX1BjFscy1h\/64eLp5utUotPBplRPUdBhC00HM\/7rCEg9th5tfPhhdaz6n96vrVGbP1v9HqcCniZN3f8gVR58pObuv4+qfK2hNYo8Qac2B93qDbrV395kbTqYEeisX6pHHn9ab7\/zjl5f3aim+si0sOjDc\/1Dmn\/o9VpWfYGe+eclmmtOBavWRU8tUTgX8mjj0sf0yFPLtWz5O\/q4vkZNkcFS5giOaAh07E368LcnyMyLnr9c0y8MTxOLfViPSvUwFpZOGDLwWEVG7MRPpTEkfdAb8PC733+THGPhYTskYV3DdYwPp2LameT1vxX74D80c9SIKXqNdK8ZH5bEShSeRA0OaMLXMqZ0bZnmFXtMVOznJj43JHQvrjG\/B4ODm2TnxQZUidph7dz486Ji2xAv6T1piBmZE\/qZGtPBYu6\/oUKeod43hT4vMs0pEnzEBqaDJLzXh5ayzVaF6roifqpjijql+txk7yX6XZU4jAMAAMD2hBBolA0VAl36wBS5c40QaL153GW\/n6K8IoeevrNZy1\/oNgOgze1+PXhlndpidgEzwp0r\/jxNnp6AfnXORrM8VjohkCG0MHR5qZwOn2QLSjanFHTJa3OpbeV\/tOKlp9Tf1C6Xq1gd3TY5CrNV4\/Ho9y\/9S3sc9wX95Fvnye0Myi5jOlggND2st7srwcLQ8SFQ50uX69Dznlanu0Bz5x2rg\/c6UFNW3K5rn6oZEMo0a9Fph+nat6p10eNLtHBmZCrYvtfozYfP0ER16eWFx+vsJ5pD6wkdcexeOni\/ar1\/2\/V6siZBCBQb9iQrH2Doh9KYMCTmYXiw2OBkcAASP\/0qXB4vHBxVLU5Wt7EIgQZ8bmT9lVTTfgzhh9aWQdPW4h9k07hmZDTL3LggJCo+TBlozEOgSP1XmzWKMeA+jQtzLJ07I0X7hw6BUn4XtlIIFP\/zT2xQEJLyOxeRInBJJVngYlX0Hk84IidFeJWqnxLWKem14n\/nAAAAYPtCCDTKhpoOdvo1FZq1d45+e1GtWmrDW8NP\/1S2zri2Qg6nTZ\/8r087fTo7NMrnwSvr1VoXv338xCkuXfDrKq1e1qs\/X598cel0poMZjC3ic102Fbh9kt2hvoBLfYFc9Xdl6YX\/\/lndH7+u\/XImqK+uU5+09yln0nR5XU4tW7dJT79fpxl7fUaH7jtHB+y+k4pypZJCt9xOW4It4mNDoJW6+TPzdUdNtRY8ukRXR2ZimYv1DnjYjU7\/mnLRYr0w867Qv\/f+yWtafGaZ9N7t2u9Ld6up+mwtfvH74fV\/zM\/aOiFQwgeuQWIeslI+bKZ4IIuOFogEIkN\/bqq6jVUItEXKh19DkofW8HmJQ4Ahr5l0NMwWceHJAKMXAm2ZjmVtJFC8+HZYOzf+vKihQ6Dk91v0\/h15CJTsvhgsfH+bUy5TfucirByTQMo2DyHU1ndTBZfJfh+k\/v4mrFOKICzZzwIAAADbB0KgUTbUwtBHfq1Yh8wv0uO\/atL7r27ZRWza7tk60wiCXLZQAGRMAWuOhESxPv2ZfH3xkjL969EOvfynNrM8VjoLQxs2b+5RY2OjykoL1ekJ6L8ra\/TPNz\/S2x82aN27T+nSw+do75Jcretuk2dzl2wlM+T3eiVXoR5d1qiP6z3q29yu\/AK39thjtm77\/ldUXl6uvLxc8zPCYkOg8APnk5qphc89HV6jx79G9518gn72XsxOTj1LdMFe39E\/drlAF025W3e8eIxuX\/5rfdH4iGiIs8sleuHZCzTLOH7Ng\/r88TfqA\/\/WCYFSPVyFxT7Ixb4eYIhrDXq4G+LYkGTHRB6kBy2Sm0jCB+Nw\/dOfDhYv5cNnwof96Kif5NNXUl5ziJE+hsTTuQyx5yYOVRKfHxugRO7vBPfV4NAn9nVsHZKLD3OsnZu4\/lu+CykXhk52vyUId5L9nGKPSyR0TIopTPFB4dD3YuJ7fWgJAxcrEt7f8RL2xxDnJqxT0nMs9A0AAAAyGiHQKFt8S5M++FfyLeLnHJKnLy+cqI2rPPr9VXWhNXSijBFBh548Qc\/d36KmDYkDIGOhnnN+MUlVu7j16I2NWvmfLesIxZp7WJ7mX2Zti\/ioTZvqVNfWo4t+\/idt2FCnYH+3AspTYHOtFhxQoK8dNFVrazv1XkODpuZOUntuufqmfVr33P+U2rp71dvTLpvNq5uv+ZY+f\/RBmjx5knntLWJDoGY9cu5huuIVSZUH6ovzqtS5\/Hm93SZ1NnXFhDIePXnxnrrk7wVyF3ZJJz6oD39yYPitpsd0xqE\/1Ot+aeKBJ+jIaR69\/fflalSzOju3UghkPpTG7og0vN3BBu3c8xvp2+ZDcuz\/\/U8SiAzaQSzRMdEyC7uDJXxADJelHQLF7GwW936c8PsDF8oNP9wbW9JH2pP2NQdMixr0M7W6O1j8VusjCoFito6PjnQbWBYbCiULY15eeLl085bPTFgPS+dG6ha7e1qkvrHnxkr8XTB+bhpUNpIQaMs9HL9eVqLPD0nyndty\/1i4dxJIGLikaF9UsvPixP1eiP09EC\/ZtcN9M\/j3RdL+AgAAwHaDEGiUvfF0p567vzXppzpdNp1322SVTnbpH79r1ZvPJN\/iPZEDvlCoY88uCU0Tu+eSTfJ5ky9A9Nlvlmj\/zxear62I7hJ2+6Ln9PtHXpQj0Cd3fpF6ejq0b6VfV58+T77uDjV7etTjsStv9r76+\/J1euaxV+QLONXX16lvnnm8vnfBaQl2BYuKDYEkdS7Vz875ju57p0tyV+u4796k83Sd5sdMBwtZer12\/epD8qhAZ\/3xDV0XyYAMnUtv1OkXP6QP2jzStGN09S3nSNecvtWmg0VtCSgizEVekzxcRh7uorv0GAZPC4mEINGXhgShTfghznw5YNHkqAGhT4jxwHe+dGfqB8moge0KP0DXhOo1nBAotr3Jp21FxJxjHP9d3bNllMdwrhmyJdSIGhi8GMKhj\/lSGhSKGEYeAuneJdr9V+GpiWGDF0Y3xIVAhgTr+8SHMwPbOCC8Svtcg3H+iXpiiOlgUXHfhbh7MnlIEiofMgSKiAQ7gyT4jpji7pdEYdXAe32o+yhZ4BK+9+O\/I1vE99FAMaFMbL1TtTFpncLiPjd2MWoAAABsdwiBRpkxheuuiwY+psarmJ6lc2+apIBfuvfSTQnX\/UmkrMqlBbdODi34fN\/3NqlpY+rzvnVHVeicdHV2dqmlpUW\/\/t2T+uNfnlMwyyF\/UHJ4u3TpVz+nvabkyW4vUE9Rsf69ukb3P7hYwW67gnafvnbKUVp44ZkqLS1VYWGBec3B3tG1e5+uRZ3xD8HA9idxgITtRCi0qdFXYoIvAAAAYCwQAo0BY5rXxpWelJ98wImFOvacEnn7glryf616+7muQVPDBrFJ+32uUEd9rViubJv+cV+r3nw29QiiKbPd+sbPE03FsiYaBC15ZZluvv+vati4Xr6AXRUVZbri\/C+rvHgnfeLp0Z13PTyrmJoAAANGSURBVKjWdXWaNLlMF593so478sAhAiCFFnA+7Et3a2PhGVq87Brtbb4BbI8IgbZnxmib23S+pZFEAAAAwLZGCDQG3n2pW3\/7TfOQn7zXMQU69uxiZeXYtf6DPr319y5t+KBP3e3+0Pv5ExyaOjdb+32uIPS3sSX8kt+3afmSrsgVkvvCxWXa48h88\/VwGFPDWlvb5PF4tOTFf+nlfy\/Tfz6s1fQppTriM\/P05or\/qcDTr8P3mqPjjjtCbrdbJSXFSaaASS9fN1+L2or0\/vNL1eSR5l69RM+cnXqqCZD5CIEAAAAAjA5CoDEy1C5hUUUTnaHAxlgUOsqYHmZsF2+8F2VsHf\/UHc3qaPKZZcmkuyvYUIxdw7q7u9Xb26tgcPBwJZvNppycHOXn5yfYBWyw16\/bX2cs6pIKZ+q4b\/1UNy7YU+mtWARkIkIgAAAAAKODEGiMrFrao7\/+0lydd0gTp7o0bW62ps7JDv3t9wVDO4gZI4M2rOgbcv2fgU65oly7HZg6kBkur9crvz88UsnhcMjlSn\/NIWA0fHrv\/UPTGsfSutXmKtCm6bNmm\/\/OBAu+ebauvvL7g6r6zHMv6U9\/HbjUNjLNVd+7ULvP3jXTqg0AAIAhEAKNoWfuatGy50f3IXTvYwv0+W+VjmGrAQAAAADAWCAEGmNWFoneWka6GDQAAAAAAMhchEBjrKvVr4eua7C0PtBIGOsAnXFthQpKHGYZAAAAAADYcRACjQNGEPTYzY3bbESQMQLoywvLCYAAAAAAANiBEQKNI9tijSDWAAIAAAAAAAZCoHHG2DXslYfbRzw9zJj+Ne+0CdtsFzAAAAAAAJBZCIHGqXdf6tbyF7rSniJmTP3a6+gC7XFkvlkGAAAAAABACDTONdd6tfadXtV86FHTBq86m33y9ARCtXbn2lVY5tTEKS5V7+rWjL1yVFblGuctAgAAAAAAY4EQCAAAAAAAYAdACAQAAAAAALADIATKQOtqG0O1nl5VnoG1BwAAAAAAY4EQKAMRAgEAAAAAgHQRAmUgQiAAAAAAAJAuQqAMRAgEAAAAAADSRQiUgQiBAAAAAABAugiBMhAhEAAAAAAASBchUAYiBAIAAAAAAOn6fzYU40S+dDelAAAAAElFTkSuQmCC\" alt=\"\"><\/p>\n\n\n\n<p>A rea\u00e7\u00e3o da comunidade \u2014 vis\u00edvel pelos in\u00fameros thumbs down \u2014 mostra que essa decis\u00e3o n\u00e3o agrada a todos.<br> <\/p>\n\n\n\n<p>Apesar de tabelas n\u00e3o serem essenciais em todos os contextos, para muitos projetos elas s\u00e3o um requisito b\u00e1sico. Na pr\u00e1tica, essa limita\u00e7\u00e3o faz com que diversos desenvolvedores descartem o Trix logo de in\u00edcio. Esse quase foi o nosso caso. Chegamos a avaliar outros editores, mas a excelente integra\u00e7\u00e3o do Trix com o ecossistema Rails nos fez insistir um pouco mais. E foi a\u00ed que descobrimos algo interessante: outros desenvolvedores j\u00e1 haviam enfrentado esse problema e encontrado solu\u00e7\u00f5es pr\u00f3prias.<br><\/p>\n\n\n\n<p>A partir desses exemplos, come\u00e7amos a explorar o problema por conta pr\u00f3pria, estudando abordagens existentes, testando ideias e entendendo melhor os limites e as possibilidades do Trix. Esse processo inicial foi fundamental para ganhar familiaridade com a arquitetura do editor e identificar onde seria poss\u00edvel estender seu comportamento.<br><\/p>\n\n\n\n<p>Em alguns pontos, por\u00e9m, essa explora\u00e7\u00e3o esbarrou em detalhes mais sutis do<br>funcionamento interno do Trix. Foi nesse momento que uma ajuda externa se mostrou essencial. Esse trabalho s\u00f3 foi poss\u00edvel gra\u00e7as \u00e0 ajuda de <a href=\"https:\/\/benoit.cx\/\" target=\"_blank\" rel=\"noreferrer noopener\">Benoit Tremblay<\/a>, um desenvolvedor que eu n\u00e3o conhe\u00e7o pessoalmente, mas que gentilmente respondeu alguns emails e compartilhou insights decisivos para avan\u00e7armos.<br><\/p>\n\n\n\n<p>Neste artigo, compartilho passo a passo como foi o processo de adicionar suporte a tabelas ao Trix Editor.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Criando o seletor de tabela<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"767\" height=\"451\" src=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image.png\" alt=\"\" class=\"wp-image-1579\" srcset=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image.png 767w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-300x176.png 300w\" sizes=\"(max-width: 767px) 100vw, 767px\" \/><\/figure>\n\n\n\n<p>Meu primeiro objetivo era reproduzir aquele seletor visual de linhas e colunas comum em editores de texto \u2014 uma interface simples, interativa e intuitiva para inserir tabelas. Em vez de criar tudo do zero, decidi aproveitar uma estrutura que o pr\u00f3prio Trix j\u00e1 fornece: a caixa de di\u00e1logo utilizada para inser\u00e7\u00e3o de links.<\/p>\n\n\n\n<p>Na barra de ferramentas original do editor, ela funciona assim:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"713\" src=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-2-1024x713.png\" alt=\"\" class=\"wp-image-1581\" srcset=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-2-1024x713.png 1024w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-2-300x209.png 300w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-2-768x534.png 768w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-2.png 1503w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>A ideia \u00e9 relativamente simples: um bot\u00e3o com o atributo data-trix-action dispara uma a\u00e7\u00e3o interna do editor. No caso acima, a a\u00e7\u00e3o link abre automaticamente o di\u00e1logo associado ao atributo href .<\/p>\n\n\n\n<p>Para criar algo semelhante, precisamos seguir a conven\u00e7\u00e3o descrita no reposit\u00f3rio do Trix: a\u00e7\u00f5es customizadas devem utilizar o prefixo x- . Quando um bot\u00e3o com data-trixaction=&#8221; x-alguma-coisa&#8221; \u00e9 clicado, o editor dispara o evento trix-action-invoke , permitindo que adicionemos nosso pr\u00f3prio comportamento. <\/p>\n\n\n\n<p>Com isso, conseguimos abrir e fechar di\u00e1logos personalizados utilizando apenas um pouco de JavaScript e algumas classes CSS. <\/p>\n\n\n\n<p>O HTML da nova a\u00e7\u00e3o ficou assim: <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"705\" height=\"257\" src=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-3.png\" alt=\"\" class=\"wp-image-1582\" srcset=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-3.png 705w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-3-300x109.png 300w\" sizes=\"(max-width: 705px) 100vw, 705px\" \/><\/figure>\n\n\n\n<p>E a implementa\u00e7\u00e3o em JavaScript, adicionada ao mesmo controller Stimulus utilizado no artigo anterior:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"743\" height=\"937\" src=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-6.png\" alt=\"\" class=\"wp-image-1585\" srcset=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-6.png 743w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-6-238x300.png 238w\" sizes=\"(max-width: 743px) 100vw, 743px\" \/><\/figure>\n\n\n\n<p>Nesse ponto, ainda n\u00e3o existe nenhum seletor de tabelas de verdade \u2014 apenas um di\u00e1logo simples contendo um &#8220;hello world!&#8221; . Mas isso j\u00e1 \u00e9 suficiente para validar a integra\u00e7\u00e3o com o sistema interno de a\u00e7\u00f5es do Trix e confirmar que conseguimos estender sua interface sem modificar diretamente o c\u00f3digo-fonte do editor.<\/p>\n\n\n\n<p>Agora, com Stimulus, criamos um controller para gerenciar o seletor de tabelas.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"703\" height=\"457\" src=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-7.png\" alt=\"\" class=\"wp-image-1586\" srcset=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-7.png 703w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-7-300x195.png 300w\" sizes=\"(max-width: 703px) 100vw, 703px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"719\" height=\"856\" src=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-9.png\" alt=\"\" class=\"wp-image-1588\" srcset=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-9.png 719w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-9-252x300.png 252w\" sizes=\"(max-width: 719px) 100vw, 719px\" \/><\/figure>\n\n\n\n<p>E o di\u00e1logo para representa esse controller.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"688\" height=\"414\" src=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-10.png\" alt=\"\" class=\"wp-image-1589\" srcset=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-10.png 688w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-10-300x181.png 300w\" sizes=\"(max-width: 688px) 100vw, 688px\" \/><\/figure>\n\n\n\n<p>Com isso, ao clicar no bot\u00e3o da tabela na barra de ferramentas, um di\u00e1logo \u00e9 aberto e permite escolher visualmente a dimens\u00e3o da tabela, isto \u00e9, o n\u00famero de linhas e colunas.<\/p>\n\n\n\n<p>Ao clicar em um dos quadrados, uma a\u00e7\u00e3o identificada como trix#openTableEditor ser\u00e1 executada. \u00c9 aqui que come\u00e7amos a construir a tabela propriamente dita.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Criando o editor de tabela<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"641\" src=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-11-1024x641.png\" alt=\"\" class=\"wp-image-1590\" srcset=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-11-1024x641.png 1024w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-11-300x188.png 300w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-11-768x481.png 768w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-11-800x500.png 800w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-11.png 1080w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Uma das coisas que torna o Stimulus muito interessante \u00e9 sua capacidade de inicializar controllers automaticamente quando novos elementos s\u00e3o inseridos no DOM. \u00c9 justamente esse comportamento que iremos aproveitar para adicionar nosso editor de tabelas.<\/p>\n\n\n\n<p>De volta ao trix-controller , iremos implementar openTableEditor .<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"670\" height=\"444\" src=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-12.png\" alt=\"\" class=\"wp-image-1591\" srcset=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-12.png 670w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-12-300x199.png 300w\" sizes=\"(max-width: 670px) 100vw, 670px\" \/><\/figure>\n\n\n\n<p>Quando o usu\u00e1rio seleciona a dimens\u00e3o desejada, essa fun\u00e7\u00e3o \u00e9 executada e adiciona ao DOM um controller Stimulus respons\u00e1vel por criar o editor de tabelas.<br>Como voc\u00ea sabe, o Trix n\u00e3o possui suporte nativo a tabelas. Ent\u00e3o, a solu\u00e7\u00e3o que<br>encontramos para simular uma tabela \u00e9 criar uma grade HTML e posicionar uma inst\u00e2ncia do editor em cada c\u00e9lula.<\/p>\n\n\n\n<p>Isso nos permite reutilizar os recursos de edi\u00e7\u00e3o do pr\u00f3prio Trix em cada c\u00e9lula, mas cria um novo problema: n\u00e3o podemos deixar o usu\u00e1rio perceber que, por tr\u00e1s da interface, existem v\u00e1rios editores diferentes.<\/p>\n\n\n\n<p>Tamb\u00e9m precisamos lidar com as diferentes barras de ferramentas.<\/p>\n\n\n\n<p>Como utilizamos Bootstrap, aproveitamos o modal fornecido pela biblioteca, envolvido por um wrapper que permite customiz\u00e1-lo facilmente. Como cada projeto pode utilizar ferramentas visuais diferentes, vou me ater aqui aos trechos estritamente necess\u00e1rios para o funcionamento da tabela.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"529\" height=\"301\" src=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-15.png\" alt=\"\" class=\"wp-image-1594\" srcset=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-15.png 529w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-15-300x171.png 300w\" sizes=\"(max-width: 529px) 100vw, 529px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"553\" height=\"885\" src=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-14.png\" alt=\"\" class=\"wp-image-1593\" srcset=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-14.png 553w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-14-187x300.png 187w\" sizes=\"(max-width: 553px) 100vw, 553px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-16.png\" alt=\"\" class=\"wp-image-1595\" width=\"549\" height=\"726\" srcset=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-16.png 529w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-16-227x300.png 227w\" sizes=\"(max-width: 549px) 100vw, 549px\" \/><\/figure>\n\n\n\n<p>O c\u00f3digo acima come\u00e7a posicionando um container para as barras de ferramentas no topo do modal. Em seguida, a tabela \u00e9 criada de acordo com as dimens\u00f5es selecionadas, com um<em> trix-editor <\/em>para cada c\u00e9lula.<\/p>\n\n\n\n<p>Os editores s\u00e3o identificados pelo <em>target editor<\/em> , e quando o controller detecta que um novo editor foi adicionado (atrav\u00e9s de editorTargetConnected ), a barra de ferramentas original \u00e9 trocada por uma outra (customizada, conforme demonstrado no artigo anterior) e essa nova barra de ferramentas \u00e9 posicionada no container mencionado anteriormente.<\/p>\n\n\n\n<p>Ent\u00e3o, um <em>EventListener <\/em>\u00e9 ligado ao eventos de foco na tabela, de forma que quando o usu\u00e1rio interagir com uma c\u00e9lula (tabela) espec\u00edfica, sua barra de ferramentas \u00e9 mostrada enquanto as outras s\u00e3o ocultadas, tudo via CSS.<br>Por fim, adicionamos um bot\u00e3o respons\u00e1vel por salvar o conte\u00fado da tabela no editor principal.<\/p>\n\n\n\n<p>\u00c9 aqui que a ajuda de Benoit foi imprescind\u00edvel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Salvando o conte\u00fado no editor principal<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"462\" src=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-17-1024x462.png\" alt=\"\" class=\"wp-image-1597\" srcset=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-17-1024x462.png 1024w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-17-300x135.png 300w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-17-768x346.png 768w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-17.png 1526w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Minhas primeiras tentativas de salvar o conte\u00fado da tabela no editor principal falhavam porque a tabela precisava ser inclu\u00edda como um <strong>anexo HTML.<\/strong><\/p>\n\n\n\n<p>O que eu n\u00e3o sabia era que seria necess\u00e1rio criar um<em> content-type<\/em> pr\u00f3prio para esse anexo. Foi essa informa\u00e7\u00e3o crucial que Benoit compartilhou, junto de algumas fun\u00e7\u00f5es para lidar com a tabela na forma de um anexo.<\/p>\n\n\n\n<p>Vamos adicionar os seguintes m\u00e9todos ao <em>trix_controller.js<\/em>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"740\" height=\"795\" src=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-18.png\" alt=\"\" class=\"wp-image-1598\" srcset=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-18.png 740w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-18-279x300.png 279w\" sizes=\"(max-width: 740px) 100vw, 740px\" \/><\/figure>\n\n\n\n<p>Em <em>attachTable<\/em>, utilizamos um parser de tabela para transformar o conte\u00fado de cada editor em c\u00e9lulas de uma tabela HTML real. Em seguida, criamos um <em>Trix.Attachment<\/em> utilizando nosso <em>content-type<\/em> personalizado:<\/p>\n\n\n\n<p>application\/vnd.acsiv.table.html<\/p>\n\n\n\n<p>\u00c9 atrav\u00e9s desse tipo que conseguimos inserir um anexo personalizado no Trix e,<br>posteriormente, identificar se o anexo selecionado pelo usu\u00e1rio \u00e9 uma tabela.<\/p>\n\n\n\n<p>Essa identifica\u00e7\u00e3o ser\u00e1 importante para permitir que o usu\u00e1rio edite uma tabela que j\u00e1 tenha sido inserida no documento.<\/p>\n\n\n\n<p>Por fim, precisamos adicionar um novo <em>EventListener<\/em> \u00e0 inicializa\u00e7\u00e3o do nosso controller Stimulus e incluir o <em>TrixTableParser<\/em>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"749\" height=\"378\" src=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-19.png\" alt=\"\" class=\"wp-image-1599\" srcset=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-19.png 749w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-19-300x151.png 300w\" sizes=\"(max-width: 749px) 100vw, 749px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"755\" height=\"472\" src=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-20.png\" alt=\"\" class=\"wp-image-1600\" srcset=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-20.png 755w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-20-300x188.png 300w\" sizes=\"(max-width: 755px) 100vw, 755px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"747\" height=\"734\" src=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-21.png\" alt=\"\" class=\"wp-image-1601\" srcset=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-21.png 747w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-21-300x295.png 300w\" sizes=\"(max-width: 747px) 100vw, 747px\" \/><\/figure>\n\n\n\n<p>O m\u00e9todo<em> openTablePickerDialog <\/em>foi ent\u00e3o estendido para identificar se o anexo<br>selecionado \u00e9 uma tabela e, caso seja, permitir que o usu\u00e1rio a edite.<\/p>\n\n\n\n<p>Para isso, o conte\u00fado do anexo \u00e9 carregado pelo parser, que reconstr\u00f3i a estrutura da tabela e transforma suas c\u00e9lulas novamente em editores Trix.<\/p>\n\n\n\n<p>Em seguida, criamos um novo <em>trix-table-editor<\/em>, desta vez carregando o conte\u00fado<br>original da tabela.<\/p>\n\n\n\n<p>J\u00e1<em> detectTableAttachment<\/em> \u00e9 respons\u00e1vel pelo feedback visual: quando o cursor est\u00e1<br>sobre uma tabela, o bot\u00e3o correspondente na barra de ferramentas \u00e9 marcado como ativo.<br><\/p>\n\n\n\n<p>Agora, confira o c\u00f3digo do <em>TrixTableParser<\/em> :<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"751\" height=\"792\" src=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-23.png\" alt=\"\" class=\"wp-image-1605\" srcset=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-23.png 751w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-23-284x300.png 284w\" sizes=\"(max-width: 751px) 100vw, 751px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"748\" height=\"780\" src=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-24.png\" alt=\"\" class=\"wp-image-1606\" srcset=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-24.png 748w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-24-288x300.png 288w\" sizes=\"(max-width: 748px) 100vw, 748px\" \/><\/figure>\n\n\n\n<p>A classe exp\u00f5e dois m\u00e9todos principais. <\/p>\n\n\n\n<p>import() recebe uma tabela HTML literal e a transforma novamente em uma estrutura que pode ser manipulada pelo controller Stimulus trix-table-editor . Cada c\u00e9lula \u00e9 reconstru\u00edda como uma inst\u00e2ncia do Trix. <\/p>\n\n\n\n<p>J\u00e1 export() faz o caminho inverso: recebe a estrutura utilizada pelo editor e a transforma em uma tabela HTML literal, pronta para ser armazenada como conte\u00fado do anexo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"498\" src=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-25-1024x498.png\" alt=\"\" class=\"wp-image-1607\" srcset=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-25-1024x498.png 1024w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-25-300x146.png 300w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-25-768x374.png 768w, https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/image-25.png 1258w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Com isso, conseguimos implementar<strong> tabelas HTML funcionais dentro do Trix<\/strong>, utilizando essencialmente o Stimulus e os mecanismos de extens\u00e3o oferecidos pelo pr\u00f3prio editor.<\/p>\n\n\n\n<p>Foi um trabalho relativamente extenso, mas bastante gratificante \u2014 especialmente porque, apesar de o Trix n\u00e3o possuir suporte nativo a tabelas, conseguimos construir uma solu\u00e7\u00e3o sem precisar modificar diretamente seu c\u00f3digo-fonte. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">E agora?<\/h2>\n\n\n\n<p><br>Por\u00e9m, h\u00e1 uma pequena ironia nessa hist\u00f3ria.<\/p>\n\n\n\n<p>A <strong>37signals<\/strong>, criadora do Trix, anunciou recentemente que pretende substituir o Trix pelo <a href=\"https:\/\/github.com\/basecamp\/lexxy\/\" target=\"_blank\" rel=\"noreferrer noopener\">Lexxy,<\/a> um editor de texto moderno baseado no<strong> Lexical<\/strong>, do Facebook.<\/p>\n\n\n\n<p>E, para a nossa felicidade, o novo editor possui integra\u00e7\u00e3o com o ecossistema <strong>Rails <\/strong>e suporte nativo a tabelas. Ou seja: depois de todo esse trabalho para colocar tabelas no Trix, talvez n\u00e3o precisemos mais fazer nada disso no futuro.<\/p>\n\n\n\n<p>Mas, no fim das contas, o objetivo deste artigo n\u00e3o \u00e9 apenas mostrar uma implementa\u00e7\u00e3o espec\u00edfica. O mais interessante foi descobrir at\u00e9 onde podemos levar o Trix utilizando os pr\u00f3prios mecanismos de extens\u00e3o do editor.<\/p>\n\n\n\n<p>E, para quem ainda precisa trabalhar com Trix, espero que esta implementa\u00e7\u00e3o possa servir como ponto de partida.<\/p>\n\n\n\n<p class=\"has-text-align-right\">Escrito por: Fillipe Palhares<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Descubra como estender o Trix Editor para oferecer suporte a tabelas HTML utilizando Stimulus, Rails e um parser personalizado. O artigo apresenta a cria\u00e7\u00e3o do seletor de dimens\u00f5es, o editor de c\u00e9lulas e a integra\u00e7\u00e3o com o sistema de attachments do Trix.<\/p>\n","protected":false},"author":2,"featured_media":1610,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[23,8],"tags":[1011,841,1300,833,1301,835,1015,834,1299,839],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\r\n<title>&quot;Implementando suporte a tabelas no Trix Editor&quot;<\/title>\r\n<meta name=\"description\" content=\"Aprenda a implementar tabelas no Trix Editor usando Stimulus, Rails e anexos HTML, sem alterar o c\u00f3digo-fonte do editor.\" \/>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/acsiv.com.br\/blog\/2026\/09\/22\/implementando-suporte-a-tabelas-no-trix-editor\/\" \/>\r\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"&quot;Implementando suporte a tabelas no Trix Editor&quot;\" \/>\r\n<meta property=\"og:description\" content=\"Aprenda a implementar tabelas no Trix Editor usando Stimulus, Rails e anexos HTML, sem alterar o c\u00f3digo-fonte do editor.\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/acsiv.com.br\/blog\/2026\/09\/22\/implementando-suporte-a-tabelas-no-trix-editor\/\" \/>\r\n<meta property=\"og:site_name\" content=\"Blog da Acsiv\" \/>\r\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/acsiv\" \/>\r\n<meta property=\"article:published_time\" content=\"2026-09-22T18:04:58+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2026-09-22T18:37:14+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/Blog-3.jpg\" \/>\r\n\t<meta property=\"og:image:width\" content=\"1672\" \/>\r\n\t<meta property=\"og:image:height\" content=\"941\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\r\n<meta name=\"author\" content=\"Eduardo Rodrigues\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:creator\" content=\"@acsiv\" \/>\r\n<meta name=\"twitter:site\" content=\"@acsiv\" \/>\r\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Eduardo Rodrigues\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/acsiv.com.br\/blog\/#organization\",\"name\":\"Acsiv Sistema\",\"url\":\"https:\/\/acsiv.com.br\/blog\/\",\"sameAs\":[\"https:\/\/instagram.com\/acsivsistemas\",\"https:\/\/pt.linkedin.com\/company\/acsiv\",\"https:\/\/www.facebook.com\/acsiv\",\"https:\/\/twitter.com\/acsiv\"],\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/acsiv.com.br\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2020\/10\/Acsiv_logotipo.png\",\"contentUrl\":\"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2020\/10\/Acsiv_logotipo.png\",\"width\":1564,\"height\":668,\"caption\":\"Acsiv Sistema\"},\"image\":{\"@id\":\"https:\/\/acsiv.com.br\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/acsiv.com.br\/blog\/#website\",\"url\":\"https:\/\/acsiv.com.br\/blog\/\",\"name\":\"Blog da Acsiv\",\"description\":\"Conte\u00fado digital para cart\u00f3rios\",\"publisher\":{\"@id\":\"https:\/\/acsiv.com.br\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/acsiv.com.br\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/acsiv.com.br\/blog\/2026\/09\/22\/implementando-suporte-a-tabelas-no-trix-editor\/\",\"url\":\"https:\/\/acsiv.com.br\/blog\/2026\/09\/22\/implementando-suporte-a-tabelas-no-trix-editor\/\",\"name\":\"\\\"Implementando suporte a tabelas no Trix Editor\\\"\",\"isPartOf\":{\"@id\":\"https:\/\/acsiv.com.br\/blog\/#website\"},\"datePublished\":\"2026-09-22T18:04:58+00:00\",\"dateModified\":\"2026-09-22T18:37:14+00:00\",\"description\":\"Aprenda a implementar tabelas no Trix Editor usando Stimulus, Rails e anexos HTML, sem alterar o c\u00f3digo-fonte do editor.\",\"breadcrumb\":{\"@id\":\"https:\/\/acsiv.com.br\/blog\/2026\/09\/22\/implementando-suporte-a-tabelas-no-trix-editor\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/acsiv.com.br\/blog\/2026\/09\/22\/implementando-suporte-a-tabelas-no-trix-editor\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/acsiv.com.br\/blog\/2026\/09\/22\/implementando-suporte-a-tabelas-no-trix-editor\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/acsiv.com.br\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Implementando suporte a tabelas no Trix Editor\"}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/acsiv.com.br\/blog\/2026\/09\/22\/implementando-suporte-a-tabelas-no-trix-editor\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/acsiv.com.br\/blog\/2026\/09\/22\/implementando-suporte-a-tabelas-no-trix-editor\/\"},\"author\":{\"name\":\"Eduardo Rodrigues\",\"@id\":\"https:\/\/acsiv.com.br\/blog\/#\/schema\/person\/54fd566d0efeb6dc731df7e4e38ce156\"},\"headline\":\"Implementando suporte a tabelas no Trix Editor\",\"datePublished\":\"2026-09-22T18:04:58+00:00\",\"dateModified\":\"2026-09-22T18:37:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/acsiv.com.br\/blog\/2026\/09\/22\/implementando-suporte-a-tabelas-no-trix-editor\/\"},\"wordCount\":1653,\"publisher\":{\"@id\":\"https:\/\/acsiv.com.br\/blog\/#organization\"},\"keywords\":[\"#DesenvolvimentoWeb\",\"#FrontEnd\",\"#HTML\",\"#JavaScript\",\"#OpenSource\",\"#Rails\",\"#RubyOnRails\",\"#StimulusJS\",\"#TrixEditor\",\"#WebDevelopment\"],\"articleSection\":[\"Dicas\",\"Tecnologia\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/acsiv.com.br\/blog\/#\/schema\/person\/54fd566d0efeb6dc731df7e4e38ce156\",\"name\":\"Eduardo Rodrigues\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/acsiv.com.br\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/fee13940cf1da650036b52bc338d5881?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/fee13940cf1da650036b52bc338d5881?s=96&d=mm&r=g\",\"caption\":\"Eduardo Rodrigues\"}}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\"Implementando suporte a tabelas no Trix Editor\"","description":"Aprenda a implementar tabelas no Trix Editor usando Stimulus, Rails e anexos HTML, sem alterar o c\u00f3digo-fonte do editor.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/acsiv.com.br\/blog\/2026\/09\/22\/implementando-suporte-a-tabelas-no-trix-editor\/","og_locale":"pt_BR","og_type":"article","og_title":"\"Implementando suporte a tabelas no Trix Editor\"","og_description":"Aprenda a implementar tabelas no Trix Editor usando Stimulus, Rails e anexos HTML, sem alterar o c\u00f3digo-fonte do editor.","og_url":"https:\/\/acsiv.com.br\/blog\/2026\/09\/22\/implementando-suporte-a-tabelas-no-trix-editor\/","og_site_name":"Blog da Acsiv","article_publisher":"https:\/\/www.facebook.com\/acsiv","article_published_time":"2026-09-22T18:04:58+00:00","article_modified_time":"2026-09-22T18:37:14+00:00","og_image":[{"width":1672,"height":941,"url":"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2026\/09\/Blog-3.jpg","type":"image\/jpeg"}],"author":"Eduardo Rodrigues","twitter_card":"summary_large_image","twitter_creator":"@acsiv","twitter_site":"@acsiv","twitter_misc":{"Escrito por":"Eduardo Rodrigues","Est. tempo de leitura":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Organization","@id":"https:\/\/acsiv.com.br\/blog\/#organization","name":"Acsiv Sistema","url":"https:\/\/acsiv.com.br\/blog\/","sameAs":["https:\/\/instagram.com\/acsivsistemas","https:\/\/pt.linkedin.com\/company\/acsiv","https:\/\/www.facebook.com\/acsiv","https:\/\/twitter.com\/acsiv"],"logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/acsiv.com.br\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2020\/10\/Acsiv_logotipo.png","contentUrl":"https:\/\/acsiv.com.br\/blog\/wp-content\/uploads\/2020\/10\/Acsiv_logotipo.png","width":1564,"height":668,"caption":"Acsiv Sistema"},"image":{"@id":"https:\/\/acsiv.com.br\/blog\/#\/schema\/logo\/image\/"}},{"@type":"WebSite","@id":"https:\/\/acsiv.com.br\/blog\/#website","url":"https:\/\/acsiv.com.br\/blog\/","name":"Blog da Acsiv","description":"Conte\u00fado digital para cart\u00f3rios","publisher":{"@id":"https:\/\/acsiv.com.br\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/acsiv.com.br\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/acsiv.com.br\/blog\/2026\/09\/22\/implementando-suporte-a-tabelas-no-trix-editor\/","url":"https:\/\/acsiv.com.br\/blog\/2026\/09\/22\/implementando-suporte-a-tabelas-no-trix-editor\/","name":"\"Implementando suporte a tabelas no Trix Editor\"","isPartOf":{"@id":"https:\/\/acsiv.com.br\/blog\/#website"},"datePublished":"2026-09-22T18:04:58+00:00","dateModified":"2026-09-22T18:37:14+00:00","description":"Aprenda a implementar tabelas no Trix Editor usando Stimulus, Rails e anexos HTML, sem alterar o c\u00f3digo-fonte do editor.","breadcrumb":{"@id":"https:\/\/acsiv.com.br\/blog\/2026\/09\/22\/implementando-suporte-a-tabelas-no-trix-editor\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/acsiv.com.br\/blog\/2026\/09\/22\/implementando-suporte-a-tabelas-no-trix-editor\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/acsiv.com.br\/blog\/2026\/09\/22\/implementando-suporte-a-tabelas-no-trix-editor\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/acsiv.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Implementando suporte a tabelas no Trix Editor"}]},{"@type":"Article","@id":"https:\/\/acsiv.com.br\/blog\/2026\/09\/22\/implementando-suporte-a-tabelas-no-trix-editor\/#article","isPartOf":{"@id":"https:\/\/acsiv.com.br\/blog\/2026\/09\/22\/implementando-suporte-a-tabelas-no-trix-editor\/"},"author":{"name":"Eduardo Rodrigues","@id":"https:\/\/acsiv.com.br\/blog\/#\/schema\/person\/54fd566d0efeb6dc731df7e4e38ce156"},"headline":"Implementando suporte a tabelas no Trix Editor","datePublished":"2026-09-22T18:04:58+00:00","dateModified":"2026-09-22T18:37:14+00:00","mainEntityOfPage":{"@id":"https:\/\/acsiv.com.br\/blog\/2026\/09\/22\/implementando-suporte-a-tabelas-no-trix-editor\/"},"wordCount":1653,"publisher":{"@id":"https:\/\/acsiv.com.br\/blog\/#organization"},"keywords":["#DesenvolvimentoWeb","#FrontEnd","#HTML","#JavaScript","#OpenSource","#Rails","#RubyOnRails","#StimulusJS","#TrixEditor","#WebDevelopment"],"articleSection":["Dicas","Tecnologia"],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/acsiv.com.br\/blog\/#\/schema\/person\/54fd566d0efeb6dc731df7e4e38ce156","name":"Eduardo Rodrigues","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/acsiv.com.br\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/fee13940cf1da650036b52bc338d5881?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fee13940cf1da650036b52bc338d5881?s=96&d=mm&r=g","caption":"Eduardo Rodrigues"}}]}},"_links":{"self":[{"href":"https:\/\/acsiv.com.br\/blog\/wp-json\/wp\/v2\/posts\/1578"}],"collection":[{"href":"https:\/\/acsiv.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/acsiv.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/acsiv.com.br\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/acsiv.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1578"}],"version-history":[{"count":10,"href":"https:\/\/acsiv.com.br\/blog\/wp-json\/wp\/v2\/posts\/1578\/revisions"}],"predecessor-version":[{"id":1621,"href":"https:\/\/acsiv.com.br\/blog\/wp-json\/wp\/v2\/posts\/1578\/revisions\/1621"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/acsiv.com.br\/blog\/wp-json\/wp\/v2\/media\/1610"}],"wp:attachment":[{"href":"https:\/\/acsiv.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1578"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/acsiv.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1578"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/acsiv.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1578"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}